{
    "type": "tabs",
    "i18n": true,
    "iconPosition": "top",
    "items": {
        "_main": {
            "type": "panel",
            "label": "Main settings",
            "icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4KICAgIDxwYXRoIGZpbGw9ImN1cnJlbnRDb2xvciIgZD0iTTQ5NS45IDE2Ni42YzMuMiA4LjcgLjUgMTguNC02LjQgMjQuNmwtNDMuMyAzOS40YzEuMSA4LjMgMS43IDE2LjggMS43IDI1LjRzLS42IDE3LjEtMS43IDI1LjRsNDMuMyAzOS40YzYuOSA2LjIgOS42IDE1LjkgNi40IDI0LjZjLTQuNCAxMS45LTkuNyAyMy4zLTE1LjggMzQuM2wtNC43IDguMWMtNi42IDExLTE0IDIxLjQtMjIuMSAzMS4yYy01LjkgNy4yLTE1LjcgOS42LTI0LjUgNi44bC01NS43LTE3LjdjLTEzLjQgMTAuMy0yOC4yIDE4LjktNDQgMjUuNGwtMTIuNSA1Ny4xYy0yIDkuMS05IDE2LjMtMTguMiAxNy44Yy0xMy44IDIuMy0yOCAzLjUtNDIuNSAzLjVzLTI4LjctMS4yLTQyLjUtMy41Yy05LjItMS41LTE2LjItOC43LTE4LjItMTcuOGwtMTIuNS01Ny4xYy0xNS44LTYuNS0zMC42LTE1LjEtNDQtMjUuNEw4My4xIDQyNS45Yy04LjggMi44LTE4LjYgLjMtMjQuNS02LjhjLTguMS05LjgtMTUuNS0yMC4yLTIyLjEtMzEuMmwtNC43LTguMWMtNi4xLTExLTExLjQtMjIuNC0xNS44LTM0LjNjLTMuMi04LjctLjUtMTguNCA2LjQtMjQuNmw0My4zLTM5LjRDNjQuNiAyNzMuMSA2NCAyNjQuNiA2NCAyNTZzLjYtMTcuMSAxLjctMjUuNEwyMi40IDE5MS4yYy02LjktNi4yLTkuNi0xNS45LTYuNC0yNC42YzQuNC0xMS45IDkuNy0yMy4zIDE1LjgtMzQuM2w0LjctOC4xYzYuNi0xMSAxNC0yMS40IDIyLjEtMzEuMmM1LjktNy4yIDE1LjctOS42IDI0LjUtNi44bDU1LjcgMTcuN2MxMy40LTEwLjMgMjguMi0xOC45IDQ0LTI1LjRsMTIuNS01Ny4xYzItOS4xIDktMTYuMyAxOC4yLTE3LjhDMjI3LjMgMS4yIDI0MS41IDAgMjU2IDBzMjguNyAxLjIgNDIuNSAzLjVjOS4yIDEuNSAxNi4yIDguNyAxOC4yIDE3LjhsMTIuNSA1Ny4xYzE1LjggNi41IDMwLjYgMTUuMSA0NCAyNS40bDU1LjctMTcuN2M4LjgtMi44IDE4LjYtLjMgMjQuNSA2LjhjOC4xIDkuOCAxNS41IDIwLjIgMjIuMSAzMS4ybDQuNyA4LjFjNi4xIDExIDExLjQgMjIuNCAxNS44IDM0LjN6TTI1NiAzMzZhODAgODAgMCAxIDAgMC0xNjAgODAgODAgMCAxIDAgMCAxNjB6Ii8+Cjwvc3ZnPgo=",
            "items": {
                "libraries": {
                    "type": "chips",
                    "label": "Additional npm modules",
                    "delimiter": " ",
                    "xs": 12,
                    "sm": 12
                },
                "libraryTypings": {
                    "newLine": true,
                    "type": "chips",
                    "label": "Activate syntax help for these npm modules",
                    "delimiter": " ",
                    "xs": 12,
                    "sm": 12
                },
                "mirrorPath": {
                    "newLine": true,
                    "type": "text",
                    "label": "Mirror scripts to file path",
                    "xs": 12,
                    "sm": 8
                },
                "mirrorInstance": {
                    "hidden": "!data.mirrorPath",
                    "type": "instance",
                    "adapter": "javascript",
                    "label": "Instance, that do mirroring",
                    "xs": 12,
                    "sm": 4
                },
                "enableSetObject": {
                    "newLine": true,
                    "type": "checkbox",
                    "label": "Enable command \"setObject\"",
                    "xs": 12,
                    "sm": 12,
                    "md": 6
                },
                "enableSendToHost": {
                    "type": "checkbox",
                    "label": "Enable command \"sendToHost\"",
                    "xs": 12,
                    "sm": 12,
                    "md": 6
                },
                "enableExec": {
                    "newLine": true,
                    "type": "checkbox",
                    "label": "Enable command \"exec\"",
                    "xs": 12,
                    "sm": 12,
                    "md": 6
                },
                "subscribe": {
                    "type": "checkbox",
                    "label": "Do not subscribe all states on start",
                    "xs": 12,
                    "sm": 12,
                    "md": 6
                },
                "maxSetStatePerMinute": {
                    "newLine": true,
                    "type": "number",
                    "label": "Maximum setState requests per Minute per Script",
                    "help": "default 1000",
                    "min": 20,
                    "max": 100000,
                    "xs": 12,
                    "sm": 12,
                    "md": 6
                },
                "maxTriggersPerScript": {
                    "type": "number",
                    "label": "Maximum triggers per Script (until warning)",
                    "help": "default 100",
                    "min": 20,
                    "max": 100000,
                    "xs": 12,
                    "sm": 12,
                    "md": 6
                },
                "allowSelfSignedCerts": {
                    "newLine": true,
                    "type": "checkbox",
                    "label": "Allow self-signed certificates for URL requests",
                    "xs": 12,
                    "sm": 12
                }
            }
        },
        "_astro": {
            "type": "panel",
            "label": "Astro settings",
            "icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj4KICAgIDxwYXRoIGZpbGw9ImN1cnJlbnRDb2xvciIgZD0iTTQ5NC4yIDIyMS45bC01OS44LTQwLjUgMTMuNy03MWMyLjYtMTMuMi0xLjYtMjYuOC0xMS4xLTM2LjQtOS42LTkuNS0yMy4yLTEzLjctMzYuMi0xMS4xbC03MC45IDEzLjctNDAuNC01OS45Yy0xNS4xLTIyLjMtNTEuOS0yMi4zLTY3IDBsLTQwLjQgNTkuOS03MC44LTEzLjdDOTggNjAuNCA4NC41IDY0LjUgNzUgNzQuMWMtOS41IDkuNi0xMy43IDIzLjEtMTEuMSAzNi4zbDEzLjcgNzEtNTkuOCA0MC41QzYuNiAyMjkuNSAwIDI0MiAwIDI1NS41czYuNyAyNiAxNy44IDMzLjVsNTkuOCA0MC41LTEzLjcgNzFjLTIuNiAxMy4yIDEuNiAyNi44IDExLjEgMzYuMyA5LjUgOS41IDIyLjkgMTMuNyAzNi4zIDExLjFsNzAuOC0xMy43IDQwLjQgNTkuOUMyMzAgNTA1LjMgMjQyLjYgNTEyIDI1NiA1MTJzMjYtNi43IDMzLjUtMTcuOGw0MC40LTU5LjkgNzAuOSAxMy43YzEzLjQgMi43IDI2LjgtMS42IDM2LjMtMTEuMSA5LjUtOS41IDEzLjYtMjMuMSAxMS4xLTM2LjNsLTEzLjctNzEgNTkuOC00MC41YzExLjEtNy41IDE3LjgtMjAuMSAxNy44LTMzLjUtLjEtMTMuNi02LjctMjYuMS0xNy45LTMzLjd6bS0xMTIuOSA4NS42bDE3LjYgOTEuMi05MS0xNy42TDI1NiA0NThsLTUxLjktNzctOTAuOSAxNy42IDE3LjYtOTEuMi03Ni44LTUyIDc2LjgtNTItMTcuNi05MS4yIDkxIDE3LjZMMjU2IDUzbDUxLjkgNzYuOSA5MS0xNy42LTE3LjYgOTEuMSA3Ni44IDUyLTc2LjggNTIuMXpNMjU2IDE1MmMtNTcuMyAwLTEwNCA0Ni43LTEwNCAxMDRzNDYuNyAxMDQgMTA0IDEwNCAxMDQtNDYuNyAxMDQtMTA0LTQ2LjctMTA0LTEwNC0xMDR6bTAgMTYwYy0zMC45IDAtNTYtMjUuMS01Ni01NnMyNS4xLTU2IDU2LTU2IDU2IDI1LjEgNTYgNTYtMjUuMSA1Ni01NiA1NnoiLz4KPC9zdmc+Cg==",
            "items": {
                "_astroConfig": {
                    "type": "custom",
                    "i18n": true,
                    "xs": 12,
                    "sm": 12,
                    "md": 12,
                    "lg": 12,
                    "url": "custom/customComponents.js",
                    "name": "ConfigCustomJavascriptSet/Components/Astro",
                    "bundlerType": "module"
                },
                "createAstroStates": {
                    "newLine": true,
                    "type": "checkbox",
                    "label": "Create states for all astro times",
                    "xs": 12,
                    "sm": 12
                }
            }
        },
        "_ai": {
            "type": "panel",
            "label": "AI settings",
            "icon": "data:image/svg+xml;base64,",
            "items": {
                "_aiDescription": {
                    "type": "staticText",
                    "label": "AI settings description",
                    "xs": 12,
                    "sm": 12,
                    "style": {
                        "marginBottom": 16
                    }
                },
                "gptKey": {
                    "newLine": true,
                    "type": "text",
                    "label": "ChatGPT API key",
                    "xs": 12,
                    "sm": 12,
                    "help": "platform.openai.com",
                    "helpLink": "https://platform.openai.com/api-keys"
                },
                "claudeKey": {
                    "newLine": true,
                    "type": "text",
                    "label": "Anthropic API key",
                    "xs": 12,
                    "sm": 12,
                    "help": "console.anthropic.com",
                    "helpLink": "https://console.anthropic.com/settings/keys"
                },
                "geminiKey": {
                    "newLine": true,
                    "type": "text",
                    "label": "Gemini API key",
                    "xs": 12,
                    "sm": 12,
                    "help": "aistudio.google.com",
                    "helpLink": "https://aistudio.google.com/apikey"
                },
                "deepseekKey": {
                    "newLine": true,
                    "type": "text",
                    "label": "DeepSeek API key",
                    "xs": 12,
                    "sm": 12,
                    "help": "platform.deepseek.com",
                    "helpLink": "https://platform.deepseek.com/api_keys"
                },
                "gptBaseUrl": {
                    "newLine": true,
                    "type": "text",
                    "label": "Custom API Base URL",
                    "xs": 12,
                    "sm": 12,
                    "help": "Custom API Base URL help",
                    "placeholder": "https://api.openai.com/v1"
                },
                "_testApiConnection": {
                    "newLine": true,
                    "type": "sendTo",
                    "label": "Test API connection",
                    "command": "testApiConnection",
                    "jsonData": "{\"apiKey\": \"${data.gptKey}\", \"baseUrl\": \"${data.gptBaseUrl}\"}",
                    "variant": "outlined",
                    "xs": 12,
                    "sm": 6,
                    "alsoDependsOn": ["gptKey", "gptBaseUrl"],
                    "showProcess": true,
                    "resultStringToError": "error"
                }
            }
        }
    }
}
