/**
 * Minimal inline node registry for bundled deployments
 * Contains the most commonly used nodes
 */

import { NodeTemplate } from './nodes.js';

export const MINIMAL_NODE_REGISTRY: Record<string, NodeTemplate> = {
  "n8n-nodes-base.webhook": {
    type: "n8n-nodes-base.webhook",
    displayName: "Webhook",
    typeVersion: 1,
    description: "Webhook Trigger node for workflow automation",
    category: "trigger",
    categories: ["Core Nodes"],
    alias: [],
    subcategories: {},
    defaultParameters: { httpMethod: "GET", path: "" },
    requiresCredentials: false,
    inputs: [],
    outputs: ["main"],
    isTrigger: true,
    documentation: null
  },
  "n8n-nodes-base.manualTrigger": {
    type: "n8n-nodes-base.manualTrigger",
    displayName: "Manual Trigger",
    typeVersion: 1,
    description: "Manual Trigger node for workflow automation",
    category: "trigger",
    categories: ["Core Nodes"],
    alias: [],
    subcategories: {},
    defaultParameters: {},
    requiresCredentials: false,
    inputs: [],
    outputs: ["main"],
    isTrigger: true,
    documentation: null
  },
  "n8n-nodes-base.scheduleTrigger": {
    type: "n8n-nodes-base.scheduleTrigger",
    displayName: "Schedule Trigger",
    typeVersion: 1,
    description: "Schedule Trigger node for workflow automation",
    category: "trigger",
    categories: ["Core Nodes"],
    alias: [],
    subcategories: {},
    defaultParameters: { rule: { interval: [{ field: "hours" }] } },
    requiresCredentials: false,
    inputs: [],
    outputs: ["main"],
    isTrigger: true,
    documentation: null
  },
  "n8n-nodes-base.set": {
    type: "n8n-nodes-base.set",
    displayName: "Set",
    typeVersion: 1,
    description: "Set node for workflow automation",
    category: "data",
    categories: ["Data & Storage"],
    alias: [],
    subcategories: {},
    defaultParameters: { values: {} },
    requiresCredentials: false,
    inputs: ["main"],
    outputs: ["main"],
    isTrigger: false,
    documentation: null
  },
  "n8n-nodes-base.httpRequest": {
    type: "n8n-nodes-base.httpRequest",
    displayName: "HTTP Request",
    typeVersion: 1,
    description: "HTTP Request node for workflow automation",
    category: "communication",
    categories: ["Communication"],
    alias: [],
    subcategories: {},
    defaultParameters: { method: "GET", url: "" },
    requiresCredentials: false,
    inputs: ["main"],
    outputs: ["main"],
    isTrigger: false,
    documentation: null
  },
  "n8n-nodes-base.if": {
    type: "n8n-nodes-base.if",
    displayName: "IF",
    typeVersion: 1,
    description: "IF node for workflow automation",
    category: "logic",
    categories: ["Core Nodes"],
    alias: [],
    subcategories: {},
    defaultParameters: { conditions: { boolean: [], number: [] } },
    requiresCredentials: false,
    inputs: ["main"],
    outputs: ["main", "main"],
    isTrigger: false,
    documentation: null
  },
  "n8n-nodes-base.slack": {
    type: "n8n-nodes-base.slack",
    displayName: "Slack",
    typeVersion: 1,
    description: "Slack node for workflow automation",
    category: "communication",
    categories: ["Communication"],
    alias: [],
    subcategories: {},
    defaultParameters: { resource: "message", operation: "post" },
    requiresCredentials: true,
    credentialType: "slack",
    inputs: ["main"],
    outputs: ["main"],
    isTrigger: false,
    documentation: null
  },
  "n8n-nodes-base.gmail": {
    type: "n8n-nodes-base.gmail",
    displayName: "Gmail",
    typeVersion: 1,
    description: "Gmail node for workflow automation",
    category: "communication",
    categories: ["Communication"],
    alias: [],
    subcategories: {},
    defaultParameters: { resource: "message", operation: "send" },
    requiresCredentials: true,
    credentialType: "gmail",
    inputs: ["main"],
    outputs: ["main"],
    isTrigger: false,
    documentation: null
  },
  "n8n-nodes-base.googleSheets": {
    type: "n8n-nodes-base.googleSheets",
    displayName: "Google Sheets",
    typeVersion: 1,
    description: "Google Sheets node for workflow automation",
    category: "data",
    categories: ["Data & Storage"],
    alias: [],
    subcategories: {},
    defaultParameters: { resource: "sheet", operation: "append" },
    requiresCredentials: true,
    credentialType: "googlesheets",
    inputs: ["main"],
    outputs: ["main"],
    isTrigger: false,
    documentation: null
  },
  "n8n-nodes-base.postgres": {
    type: "n8n-nodes-base.postgres",
    displayName: "Postgres",
    typeVersion: 1,
    description: "Postgres node for workflow automation",
    category: "data",
    categories: ["Data & Storage"],
    alias: [],
    subcategories: {},
    defaultParameters: { operation: "executeQuery" },
    requiresCredentials: true,
    credentialType: "postgres",
    inputs: ["main"],
    outputs: ["main"],
    isTrigger: false,
    documentation: null
  },
  "n8n-nodes-base.respondToWebhook": {
    type: "n8n-nodes-base.respondToWebhook",
    displayName: "Respond to Webhook",
    typeVersion: 1,
    description: "Respond to Webhook node for workflow automation",
    category: "communication",
    categories: ["Core Nodes"],
    alias: [],
    subcategories: {},
    defaultParameters: { respondWith: "text", responseBody: "" },
    requiresCredentials: false,
    inputs: ["main"],
    outputs: [],
    isTrigger: false,
    documentation: null
  },
  "n8n-nodes-base.emailReadImap": {
    type: "n8n-nodes-base.emailReadImap",
    displayName: "Email Read (IMAP)",
    typeVersion: 1,
    description: "Email Read (IMAP) Trigger node for workflow automation",
    category: "communication",
    categories: ["Communication"],
    alias: [],
    subcategories: {},
    defaultParameters: {},
    requiresCredentials: true,
    credentialType: "imap",
    inputs: [],
    outputs: ["main"],
    isTrigger: true,
    documentation: null
  },
  "@n8n/n8n-nodes-langchain.agent": {
    type: "@n8n/n8n-nodes-langchain.agent",
    displayName: "AI Agent",
    typeVersion: 1,
    description: "AI Agent LangChain node",
    category: "ai",
    categories: ["AI", "LangChain"],
    alias: [],
    subcategories: {},
    defaultParameters: {},
    requiresCredentials: false,
    inputs: ["main", "ai_languageModel", "ai_memory", "ai_tool"],
    outputs: ["main"],
    isTrigger: false,
    documentation: null
  },
  "@n8n/n8n-nodes-langchain.lmChatOpenAi": {
    type: "@n8n/n8n-nodes-langchain.lmChatOpenAi",
    displayName: "OpenAI Chat Model",
    typeVersion: 1,
    description: "OpenAI Chat Model LangChain node",
    category: "ai",
    categories: ["AI", "LangChain"],
    alias: [],
    subcategories: {},
    defaultParameters: {},
    requiresCredentials: true,
    credentialType: "openai",
    inputs: [],
    outputs: ["ai_languageModel"],
    isTrigger: false,
    documentation: null
  },
  "@n8n/n8n-nodes-langchain.memoryBufferWindow": {
    type: "@n8n/n8n-nodes-langchain.memoryBufferWindow",
    displayName: "Window Buffer Memory",
    typeVersion: 1,
    description: "Window Buffer Memory LangChain node",
    category: "ai",
    categories: ["AI", "LangChain"],
    alias: [],
    subcategories: {},
    defaultParameters: {},
    requiresCredentials: false,
    inputs: [],
    outputs: ["ai_memory"],
    isTrigger: false,
    documentation: null
  },
  "@n8n/n8n-nodes-langchain.toolHttpRequest": {
    type: "@n8n/n8n-nodes-langchain.toolHttpRequest",
    displayName: "HTTP Request Tool",
    typeVersion: 1,
    description: "HTTP Request Tool LangChain node",
    category: "ai",
    categories: ["AI", "LangChain"],
    alias: [],
    subcategories: {},
    defaultParameters: {},
    requiresCredentials: false,
    inputs: [],
    outputs: ["ai_tool"],
    isTrigger: false,
    documentation: null
  },
  "@n8n/n8n-nodes-langchain.toolCode": {
    type: "@n8n/n8n-nodes-langchain.toolCode",
    displayName: "Code Tool",
    typeVersion: 1,
    description: "Code Tool LangChain node",
    category: "ai",
    categories: ["AI", "LangChain"],
    alias: [],
    subcategories: {},
    defaultParameters: {},
    requiresCredentials: false,
    inputs: [],
    outputs: ["ai_tool"],
    isTrigger: false,
    documentation: null
  },
  "n8n-nodes-base.telegram": {
    type: "n8n-nodes-base.telegram",
    displayName: "Telegram",
    typeVersion: 1,
    description: "Telegram node for workflow automation",
    category: "communication",
    categories: ["Communication"],
    alias: [],
    subcategories: {},
    defaultParameters: { resource: "message", operation: "sendMessage" },
    requiresCredentials: true,
    credentialType: "telegram",
    inputs: ["main"],
    outputs: ["main"],
    isTrigger: false,
    documentation: null
  },
  "n8n-nodes-base.discord": {
    type: "n8n-nodes-base.discord",
    displayName: "Discord",
    typeVersion: 1,
    description: "Discord node for workflow automation",
    category: "communication",
    categories: ["Communication"],
    alias: [],
    subcategories: {},
    defaultParameters: { resource: "message", operation: "send" },
    requiresCredentials: true,
    credentialType: "discord",
    inputs: ["main"],
    outputs: ["main"],
    isTrigger: false,
    documentation: null
  },
  "n8n-nodes-base.airtable": {
    type: "n8n-nodes-base.airtable",
    displayName: "Airtable",
    typeVersion: 1,
    description: "Airtable node for workflow automation",
    category: "data",
    categories: ["Data & Storage"],
    alias: [],
    subcategories: {},
    defaultParameters: { operation: "append" },
    requiresCredentials: true,
    credentialType: "airtable",
    inputs: ["main"],
    outputs: ["main"],
    isTrigger: false,
    documentation: null
  },
  "n8n-nodes-base.mongodb": {
    type: "n8n-nodes-base.mongodb",
    displayName: "MongoDB",
    typeVersion: 1,
    description: "MongoDB node for workflow automation",
    category: "data",
    categories: ["Data & Storage"],
    alias: [],
    subcategories: {},
    defaultParameters: { operation: "insert" },
    requiresCredentials: true,
    credentialType: "mongodb",
    inputs: ["main"],
    outputs: ["main"],
    isTrigger: false,
    documentation: null
  },
  "n8n-nodes-base.code": {
    type: "n8n-nodes-base.code",
    displayName: "Code",
    typeVersion: 1,
    description: "Code node for workflow automation",
    category: "data",
    categories: ["Core Nodes"],
    alias: [],
    subcategories: {},
    defaultParameters: { mode: "runOnceForAllItems", jsCode: "" },
    requiresCredentials: false,
    inputs: ["main"],
    outputs: ["main"],
    isTrigger: false,
    documentation: null
  },
  "n8n-nodes-base.switch": {
    type: "n8n-nodes-base.switch",
    displayName: "Switch",
    typeVersion: 1,
    description: "Switch node for workflow automation",
    category: "logic",
    categories: ["Core Nodes"],
    alias: [],
    subcategories: {},
    defaultParameters: { mode: "rules", rules: { values: [] } },
    requiresCredentials: false,
    inputs: ["main"],
    outputs: ["main", "main", "main", "main"],
    isTrigger: false,
    documentation: null
  },
  "@n8n/n8n-nodes-langchain.lmChatAnthropic": {
    type: "@n8n/n8n-nodes-langchain.lmChatAnthropic",
    displayName: "Anthropic Chat Model",
    typeVersion: 1,
    description: "Anthropic Chat Model LangChain node",
    category: "ai",
    categories: ["AI", "LangChain"],
    alias: [],
    subcategories: {},
    defaultParameters: {},
    requiresCredentials: true,
    credentialType: "anthropic",
    inputs: [],
    outputs: ["ai_languageModel"],
    isTrigger: false,
    documentation: null
  },
  "@n8n/n8n-nodes-langchain.lmChatGoogleGemini": {
    type: "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
    displayName: "Google Gemini Chat Model",
    typeVersion: 1,
    description: "Google Gemini Chat Model LangChain node",
    category: "ai",
    categories: ["AI", "LangChain"],
    alias: [],
    subcategories: {},
    defaultParameters: {},
    requiresCredentials: true,
    credentialType: "googlegemini",
    inputs: [],
    outputs: ["ai_languageModel"],
    isTrigger: false,
    documentation: null
  }
};

export const MINIMAL_CATEGORIES = [
  "Core Nodes",
  "Communication",
  "Data & Storage",
  "AI",
  "LangChain"
];
