@nextblock-cms/cortex 0.14.5 → 0.14.6
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/index.cjs.js +1 -1
- package/index.d.ts +3 -0
- package/index.es.js +166 -121
- package/lib/ai-global-agent-db-tools.cjs.js +1 -1
- package/lib/ai-global-agent-db-tools.d.ts +8 -8
- package/lib/ai-global-agent-db-tools.es.js +143 -127
- package/lib/ai-global-agent-tools.d.ts +4 -4
- package/lib/mcp-server.cjs.js +1 -0
- package/lib/mcp-server.d.ts +76 -0
- package/lib/mcp-server.es.js +157 -0
- package/lib/mcp-tokens.cjs.js +1 -0
- package/lib/mcp-tokens.d.ts +95 -0
- package/lib/mcp-tokens.es.js +104 -0
- package/lib/mcp-tool-registry.cjs.js +4 -0
- package/lib/mcp-tool-registry.d.ts +234 -0
- package/lib/mcp-tool-registry.es.js +300 -0
- package/package.json +4 -4
package/index.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./lib/ai-block-generation.cjs.js"),n=require("./lib/ai-client.cjs.js"),t=require("./lib/ai-config.cjs.js"),l=require("./lib/ai-cortex-widget-builder.cjs.js"),a=require("./lib/ai-global-agent-custom-block-tools.cjs.js"),i=require("./lib/ai-global-agent-db-tools.cjs.js"),e=require("./lib/ai-global-agent-tools.cjs.js"),c=require("./lib/ai-key-crypto.cjs.js"),s=require("./lib/ai-model-catalog.cjs.js"),o=require("./lib/ai-model-registry.cjs.js"),C=require("./lib/cortex-widget-registry.cjs.js"),r=require("./lib/cortex-widget-schema.cjs.js");require("./lib/zod-config.cjs.js");const m=require("zod");exports.INLINE_HTML_ASSISTANT_SYSTEM_PROMPT=u.INLINE_HTML_ASSISTANT_SYSTEM_PROMPT;exports.generateEditorBlocksRequestSchema=u.generateEditorBlocksRequestSchema;exports.generateEditorHtmlFragment=u.generateEditorHtmlFragment;exports.validateGeneratedEditorHtmlFragment=u.validateGeneratedEditorHtmlFragment;exports.createCortexAiOpenRouterClient=n.createCortexAiOpenRouterClient;exports.createCortexAiOpenRouterProvider=n.createCortexAiOpenRouterProvider;exports.generateCortexAiText=n.generateCortexAiText;exports.getStoredCortexAiModelSelection=n.getStoredCortexAiModelSelection;exports.resolveCortexAiOpenRouterCredential=n.resolveCortexAiOpenRouterCredential;exports.CORTEX_AI_AGENT_SETTINGS_BOUNDS=t.CORTEX_AI_AGENT_SETTINGS_BOUNDS;exports.CORTEX_AI_AGENT_SETTINGS_DEFAULTS=t.CORTEX_AI_AGENT_SETTINGS_DEFAULTS;exports.CORTEX_AI_AGENT_SETTINGS_KEY=t.CORTEX_AI_AGENT_SETTINGS_KEY;exports.CORTEX_AI_OPENROUTER_MODEL_SELECTION_SETTING_KEY=t.CORTEX_AI_OPENROUTER_MODEL_SELECTION_SETTING_KEY;exports.CORTEX_AI_OPENROUTER_SETTING_KEY=t.CORTEX_AI_OPENROUTER_SETTING_KEY;exports.CORTEX_AI_PACKAGE_ID=t.CORTEX_AI_PACKAGE_ID;exports.CORTEX_AI_PACKAGE_NAME=t.CORTEX_AI_PACKAGE_NAME;exports.CORTEX_AI_PEXELS_SETTING_KEY=t.CORTEX_AI_PEXELS_SETTING_KEY;exports.CORTEX_AI_UNSPLASH_APP_NAME_SETTING_KEY=t.CORTEX_AI_UNSPLASH_APP_NAME_SETTING_KEY;exports.CORTEX_AI_UNSPLASH_SETTING_KEY=t.CORTEX_AI_UNSPLASH_SETTING_KEY;exports.decryptStoredOpenRouterApiKey=t.decryptStoredOpenRouterApiKey;exports.encryptStoredOpenRouterApiKey=t.encryptStoredOpenRouterApiKey;exports.getCortexAiEnvConfig=t.getCortexAiEnvConfig;exports.getEnvOpenRouterKeyStatus=t.getEnvOpenRouterKeyStatus;exports.getOpenRouterEnvApiKey=t.getOpenRouterEnvApiKey;exports.getPexelsEnvApiKey=t.getPexelsEnvApiKey;exports.getStoredOpenRouterKeyStatus=t.getStoredOpenRouterKeyStatus;exports.getUnsplashEnvApiKey=t.getUnsplashEnvApiKey;exports.normalizeCortexAiAgentSettings=t.normalizeCortexAiAgentSettings;exports.resolveCortexAiAgentSettings=t.resolveCortexAiAgentSettings;exports.generateCortexWidgetDefinition=l.generateCortexWidgetDefinition;exports.createCortexCustomBlockTools=a.createCortexCustomBlockTools;exports.createCustomBlockInputSchema=a.createCustomBlockInputSchema;exports.deleteCustomBlockInputSchema=a.deleteCustomBlockInputSchema;exports.executeCreateCustomBlock=a.executeCreateCustomBlock;exports.executeDeleteCustomBlock=a.executeDeleteCustomBlock;exports.executeListCustomBlocks=a.executeListCustomBlocks;exports.executeUpdateCustomBlock=a.executeUpdateCustomBlock;exports.listCustomBlocksInputSchema=a.listCustomBlocksInputSchema;exports.updateCustomBlockInputSchema=a.updateCustomBlockInputSchema;exports.createCortexDatabaseAgentTools=i.createCortexDatabaseAgentTools;exports.describeDatabaseSchemaInputSchema=i.describeDatabaseSchemaInputSchema;exports.executeDatabaseActionPlan=i.executeDatabaseActionPlan;exports.executeDatabaseActionPlanInputSchema=i.executeDatabaseActionPlanInputSchema;exports.executeDatabaseMutation=i.executeDatabaseMutation;exports.executeDatabaseMutationInputSchema=i.executeDatabaseMutationInputSchema;exports.executeDescribeDatabaseSchema=i.executeDescribeDatabaseSchema;exports.executeReadDatabaseRecords=i.executeReadDatabaseRecords;exports.readDatabaseRecordsInputSchema=i.readDatabaseRecordsInputSchema;exports.availableCortexAiBlockTypes=e.availableCortexAiBlockTypes;exports.buildVisibleContactIntroActionPlan=e.buildVisibleContactIntroActionPlan;exports.cortexAiPageContextSchema=e.cortexAiPageContextSchema;exports.createCmsPageInputSchema=e.createCmsPageInputSchema;exports.createCmsPostInputSchema=e.createCmsPostInputSchema;exports.createCmsProductInputSchema=e.createCmsProductInputSchema;exports.createCortexGlobalAgentTools=e.createCortexGlobalAgentTools;exports.deleteCmsItemInputSchema=e.deleteCmsItemInputSchema;exports.executeCmsActionPlan=e.executeCmsActionPlan;exports.executeCmsActionPlanInputSchema=e.executeCmsActionPlanInputSchema;exports.executeCreateCmsPage=e.executeCreateCmsPage;exports.executeCreateCmsPost=e.executeCreateCmsPost;exports.executeCreateCmsProduct=e.executeCreateCmsProduct;exports.executeDeleteCmsItem=e.executeDeleteCmsItem;exports.executeFetchEcommerceStats=e.executeFetchEcommerceStats;exports.executeFetchUrlContent=e.executeFetchUrlContent;exports.executeInsertContentBlock=e.executeInsertContentBlock;exports.executePrepareDeleteCmsItem=e.executePrepareDeleteCmsItem;exports.executeReadCurrentCmsItem=e.executeReadCurrentCmsItem;exports.executeRewritePageDraft=e.executeRewritePageDraft;exports.executeSearchDocumentation=e.executeSearchDocumentation;exports.executeSearchDocumentationWithTimeout=e.executeSearchDocumentationWithTimeout;exports.executeSearchStockPhotos=e.executeSearchStockPhotos;exports.executeSetContentImages=e.executeSetContentImages;exports.executeTranslatePage=e.executeTranslatePage;exports.executeUpdateCmsItemField=e.executeUpdateCmsItemField;exports.executeUpdateContentBlock=e.executeUpdateContentBlock;exports.executeUpdateCurrentCmsFields=e.executeUpdateCurrentCmsFields;exports.executeUpdateFooter=e.executeUpdateFooter;exports.executeUpdateNavigationBar=e.executeUpdateNavigationBar;exports.executeUpdateSectionColumnBlock=e.executeUpdateSectionColumnBlock;exports.fetchEcommerceStatsInputSchema=e.fetchEcommerceStatsInputSchema;exports.fetchUrlContentInputSchema=e.fetchUrlContentInputSchema;exports.insertContentBlockInputSchema=e.insertContentBlockInputSchema;exports.maybeTriggerStockPhotoDownloads=e.maybeTriggerStockPhotoDownloads;exports.navigationItemInputSchema=e.navigationItemInputSchema;exports.prepareDeleteCmsItemInputSchema=e.prepareDeleteCmsItemInputSchema;exports.readCurrentCmsItemInputSchema=e.readCurrentCmsItemInputSchema;exports.resolveCortexAiStockPhotoProvider=e.resolveCortexAiStockPhotoProvider;exports.resolveCortexAiStockPhotoProviders=e.resolveCortexAiStockPhotoProviders;exports.rewritePageDraftInputSchema=e.rewritePageDraftInputSchema;exports.searchDocumentationInputSchema=e.searchDocumentationInputSchema;exports.searchStockPhotosInputSchema=e.searchStockPhotosInputSchema;exports.setContentImagesInputSchema=e.setContentImagesInputSchema;exports.translatePageInputSchema=e.translatePageInputSchema;exports.updateCmsItemFieldInputSchema=e.updateCmsItemFieldInputSchema;exports.updateContentBlockInputSchema=e.updateContentBlockInputSchema;exports.updateCurrentCmsFieldsInputSchema=e.updateCurrentCmsFieldsInputSchema;exports.updateFooterInputSchema=e.updateFooterInputSchema;exports.updateNavigationBarInputSchema=e.updateNavigationBarInputSchema;exports.updateSectionColumnBlockInputSchema=e.updateSectionColumnBlockInputSchema;exports.CORTEX_AI_KEY_ALGORITHM=c.CORTEX_AI_KEY_ALGORITHM;exports.CORTEX_AI_KEY_ENVELOPE_VERSION=c.CORTEX_AI_KEY_ENVELOPE_VERSION;exports.decryptOpenRouterApiKey=c.decryptOpenRouterApiKey;exports.encryptOpenRouterApiKey=c.encryptOpenRouterApiKey;exports.getMaskedOpenRouterKey=c.getMaskedOpenRouterKey;exports.getOpenRouterKeyEnvelopeStatus=c.getOpenRouterKeyEnvelopeStatus;exports.listCortexAiCompatibleOpenRouterModels=s.listCortexAiCompatibleOpenRouterModels;exports.CORTEX_AI_FREE_MODEL_FALLBACK_REGISTRY=o.CORTEX_AI_FREE_MODEL_FALLBACK_REGISTRY;exports.CORTEX_AI_MODEL_REGISTRY=o.CORTEX_AI_MODEL_REGISTRY;exports.CORTEX_AI_OPENROUTER_BASE_URL=o.CORTEX_AI_OPENROUTER_BASE_URL;exports.CORTEX_AI_OPENROUTER_FREE_ROUTER_MODEL=o.CORTEX_AI_OPENROUTER_FREE_ROUTER_MODEL;exports.CORTEX_AI_REQUIRED_MODEL_PARAMETERS=o.CORTEX_AI_REQUIRED_MODEL_PARAMETERS;exports.CortexAiRoutingError=o.CortexAiRoutingError;exports.buildCortexAiModelFallbackChain=o.buildCortexAiModelFallbackChain;exports.buildCortexAiRoutingPolicy=o.buildCortexAiRoutingPolicy;exports.createCortexAiStoredModelSelection=o.createCortexAiStoredModelSelection;exports.filterCortexAiCompatibleOpenRouterModels=o.filterCortexAiCompatibleOpenRouterModels;exports.getHttpStatusCode=o.getHttpStatusCode;exports.isCortexAiFreeModelId=o.isCortexAiFreeModelId;exports.isOpenRouterRateLimitError=o.isOpenRouterRateLimitError;exports.isOpenRouterRecoverableRoutingError=o.isOpenRouterRecoverableRoutingError;exports.omitUnsupportedCortexAiModelOptions=o.omitUnsupportedCortexAiModelOptions;exports.runWithCortexAiModelFallback=o.runWithCortexAiModelFallback;exports.safeParseCortexAiModelSelection=o.safeParseCortexAiModelSelection;exports.summarizeCortexAiRoutingError=o.summarizeCortexAiRoutingError;exports.CORTEX_WIDGET_DEFINITION_SELECT=C.CORTEX_WIDGET_DEFINITION_SELECT;exports.CortexWidgetRegistryInsertError=C.CortexWidgetRegistryInsertError;exports.buildCortexWidgetDefinitionInsertPayload=C.buildCortexWidgetDefinitionInsertPayload;exports.insertCortexWidgetDefinition=C.insertCortexWidgetDefinition;exports.CORTEX_WIDGET_ALLOWED_RELATION_TABLES=r.CORTEX_WIDGET_ALLOWED_RELATION_TABLES;exports.buildCortexProfileCardVerificationDefinition=r.buildCortexProfileCardVerificationDefinition;exports.buildCortexWidgetBuilderPrompt=r.buildCortexWidgetBuilderPrompt;exports.buildCortexWidgetBuilderSystemPrompt=r.buildCortexWidgetBuilderSystemPrompt;exports.cortexWidgetBuildRequestSchema=r.cortexWidgetBuildRequestSchema;exports.cortexWidgetDbRelationFieldSchema=r.cortexWidgetDbRelationFieldSchema;exports.cortexWidgetDefinitionSchema=r.cortexWidgetDefinitionSchema;exports.cortexWidgetFieldSchema=r.cortexWidgetFieldSchema;exports.cortexWidgetImageR2FieldSchema=r.cortexWidgetImageR2FieldSchema;exports.cortexWidgetLayoutNodeSchema=r.cortexWidgetLayoutNodeSchema;exports.cortexWidgetRichTextFieldSchema=r.cortexWidgetRichTextFieldSchema;exports.cortexWidgetTextFieldSchema=r.cortexWidgetTextFieldSchema;exports.validateCortexWidgetDefinitionOutput=r.validateCortexWidgetDefinitionOutput;Object.defineProperty(exports,"z",{enumerable:!0,get:()=>m.z});
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _=require("./lib/ai-block-generation.cjs.js"),u=require("./lib/ai-client.cjs.js"),t=require("./lib/ai-config.cjs.js"),S=require("./lib/ai-cortex-widget-builder.cjs.js"),n=require("./lib/ai-global-agent-custom-block-tools.cjs.js"),C=require("./lib/ai-global-agent-db-tools.cjs.js"),e=require("./lib/ai-global-agent-tools.cjs.js"),E=require("./lib/ai-key-crypto.cjs.js"),l=require("./lib/ai-model-catalog.cjs.js"),o=require("./lib/ai-model-registry.cjs.js"),s=require("./lib/cortex-widget-registry.cjs.js"),c=require("./lib/cortex-widget-schema.cjs.js"),r=require("./lib/mcp-server.cjs.js"),a=require("./lib/mcp-tokens.cjs.js"),i=require("./lib/mcp-tool-registry.cjs.js");require("./lib/zod-config.cjs.js");const R=require("zod");exports.INLINE_HTML_ASSISTANT_SYSTEM_PROMPT=_.INLINE_HTML_ASSISTANT_SYSTEM_PROMPT;exports.generateEditorBlocksRequestSchema=_.generateEditorBlocksRequestSchema;exports.generateEditorHtmlFragment=_.generateEditorHtmlFragment;exports.validateGeneratedEditorHtmlFragment=_.validateGeneratedEditorHtmlFragment;exports.createCortexAiOpenRouterClient=u.createCortexAiOpenRouterClient;exports.createCortexAiOpenRouterProvider=u.createCortexAiOpenRouterProvider;exports.generateCortexAiText=u.generateCortexAiText;exports.getStoredCortexAiModelSelection=u.getStoredCortexAiModelSelection;exports.resolveCortexAiOpenRouterCredential=u.resolveCortexAiOpenRouterCredential;exports.CORTEX_AI_AGENT_SETTINGS_BOUNDS=t.CORTEX_AI_AGENT_SETTINGS_BOUNDS;exports.CORTEX_AI_AGENT_SETTINGS_DEFAULTS=t.CORTEX_AI_AGENT_SETTINGS_DEFAULTS;exports.CORTEX_AI_AGENT_SETTINGS_KEY=t.CORTEX_AI_AGENT_SETTINGS_KEY;exports.CORTEX_AI_OPENROUTER_MODEL_SELECTION_SETTING_KEY=t.CORTEX_AI_OPENROUTER_MODEL_SELECTION_SETTING_KEY;exports.CORTEX_AI_OPENROUTER_SETTING_KEY=t.CORTEX_AI_OPENROUTER_SETTING_KEY;exports.CORTEX_AI_PACKAGE_ID=t.CORTEX_AI_PACKAGE_ID;exports.CORTEX_AI_PACKAGE_NAME=t.CORTEX_AI_PACKAGE_NAME;exports.CORTEX_AI_PEXELS_SETTING_KEY=t.CORTEX_AI_PEXELS_SETTING_KEY;exports.CORTEX_AI_UNSPLASH_APP_NAME_SETTING_KEY=t.CORTEX_AI_UNSPLASH_APP_NAME_SETTING_KEY;exports.CORTEX_AI_UNSPLASH_SETTING_KEY=t.CORTEX_AI_UNSPLASH_SETTING_KEY;exports.decryptStoredOpenRouterApiKey=t.decryptStoredOpenRouterApiKey;exports.encryptStoredOpenRouterApiKey=t.encryptStoredOpenRouterApiKey;exports.getCortexAiEnvConfig=t.getCortexAiEnvConfig;exports.getEnvOpenRouterKeyStatus=t.getEnvOpenRouterKeyStatus;exports.getOpenRouterEnvApiKey=t.getOpenRouterEnvApiKey;exports.getPexelsEnvApiKey=t.getPexelsEnvApiKey;exports.getStoredOpenRouterKeyStatus=t.getStoredOpenRouterKeyStatus;exports.getUnsplashEnvApiKey=t.getUnsplashEnvApiKey;exports.normalizeCortexAiAgentSettings=t.normalizeCortexAiAgentSettings;exports.resolveCortexAiAgentSettings=t.resolveCortexAiAgentSettings;exports.generateCortexWidgetDefinition=S.generateCortexWidgetDefinition;exports.createCortexCustomBlockTools=n.createCortexCustomBlockTools;exports.createCustomBlockInputSchema=n.createCustomBlockInputSchema;exports.deleteCustomBlockInputSchema=n.deleteCustomBlockInputSchema;exports.executeCreateCustomBlock=n.executeCreateCustomBlock;exports.executeDeleteCustomBlock=n.executeDeleteCustomBlock;exports.executeListCustomBlocks=n.executeListCustomBlocks;exports.executeUpdateCustomBlock=n.executeUpdateCustomBlock;exports.listCustomBlocksInputSchema=n.listCustomBlocksInputSchema;exports.updateCustomBlockInputSchema=n.updateCustomBlockInputSchema;exports.createCortexDatabaseAgentTools=C.createCortexDatabaseAgentTools;exports.describeDatabaseSchemaInputSchema=C.describeDatabaseSchemaInputSchema;exports.executeDatabaseActionPlan=C.executeDatabaseActionPlan;exports.executeDatabaseActionPlanInputSchema=C.executeDatabaseActionPlanInputSchema;exports.executeDatabaseMutation=C.executeDatabaseMutation;exports.executeDatabaseMutationInputSchema=C.executeDatabaseMutationInputSchema;exports.executeDescribeDatabaseSchema=C.executeDescribeDatabaseSchema;exports.executeReadDatabaseRecords=C.executeReadDatabaseRecords;exports.readDatabaseRecordsInputSchema=C.readDatabaseRecordsInputSchema;exports.availableCortexAiBlockTypes=e.availableCortexAiBlockTypes;exports.buildVisibleContactIntroActionPlan=e.buildVisibleContactIntroActionPlan;exports.cortexAiPageContextSchema=e.cortexAiPageContextSchema;exports.createCmsPageInputSchema=e.createCmsPageInputSchema;exports.createCmsPostInputSchema=e.createCmsPostInputSchema;exports.createCmsProductInputSchema=e.createCmsProductInputSchema;exports.createCortexGlobalAgentTools=e.createCortexGlobalAgentTools;exports.deleteCmsItemInputSchema=e.deleteCmsItemInputSchema;exports.executeCmsActionPlan=e.executeCmsActionPlan;exports.executeCmsActionPlanInputSchema=e.executeCmsActionPlanInputSchema;exports.executeCreateCmsPage=e.executeCreateCmsPage;exports.executeCreateCmsPost=e.executeCreateCmsPost;exports.executeCreateCmsProduct=e.executeCreateCmsProduct;exports.executeDeleteCmsItem=e.executeDeleteCmsItem;exports.executeFetchEcommerceStats=e.executeFetchEcommerceStats;exports.executeFetchUrlContent=e.executeFetchUrlContent;exports.executeInsertContentBlock=e.executeInsertContentBlock;exports.executePrepareDeleteCmsItem=e.executePrepareDeleteCmsItem;exports.executeReadCurrentCmsItem=e.executeReadCurrentCmsItem;exports.executeRewritePageDraft=e.executeRewritePageDraft;exports.executeSearchDocumentation=e.executeSearchDocumentation;exports.executeSearchDocumentationWithTimeout=e.executeSearchDocumentationWithTimeout;exports.executeSearchStockPhotos=e.executeSearchStockPhotos;exports.executeSetContentImages=e.executeSetContentImages;exports.executeTranslatePage=e.executeTranslatePage;exports.executeUpdateCmsItemField=e.executeUpdateCmsItemField;exports.executeUpdateContentBlock=e.executeUpdateContentBlock;exports.executeUpdateCurrentCmsFields=e.executeUpdateCurrentCmsFields;exports.executeUpdateFooter=e.executeUpdateFooter;exports.executeUpdateNavigationBar=e.executeUpdateNavigationBar;exports.executeUpdateSectionColumnBlock=e.executeUpdateSectionColumnBlock;exports.fetchEcommerceStatsInputSchema=e.fetchEcommerceStatsInputSchema;exports.fetchUrlContentInputSchema=e.fetchUrlContentInputSchema;exports.insertContentBlockInputSchema=e.insertContentBlockInputSchema;exports.maybeTriggerStockPhotoDownloads=e.maybeTriggerStockPhotoDownloads;exports.navigationItemInputSchema=e.navigationItemInputSchema;exports.prepareDeleteCmsItemInputSchema=e.prepareDeleteCmsItemInputSchema;exports.readCurrentCmsItemInputSchema=e.readCurrentCmsItemInputSchema;exports.resolveCortexAiStockPhotoProvider=e.resolveCortexAiStockPhotoProvider;exports.resolveCortexAiStockPhotoProviders=e.resolveCortexAiStockPhotoProviders;exports.rewritePageDraftInputSchema=e.rewritePageDraftInputSchema;exports.searchDocumentationInputSchema=e.searchDocumentationInputSchema;exports.searchStockPhotosInputSchema=e.searchStockPhotosInputSchema;exports.setContentImagesInputSchema=e.setContentImagesInputSchema;exports.translatePageInputSchema=e.translatePageInputSchema;exports.updateCmsItemFieldInputSchema=e.updateCmsItemFieldInputSchema;exports.updateContentBlockInputSchema=e.updateContentBlockInputSchema;exports.updateCurrentCmsFieldsInputSchema=e.updateCurrentCmsFieldsInputSchema;exports.updateFooterInputSchema=e.updateFooterInputSchema;exports.updateNavigationBarInputSchema=e.updateNavigationBarInputSchema;exports.updateSectionColumnBlockInputSchema=e.updateSectionColumnBlockInputSchema;exports.CORTEX_AI_KEY_ALGORITHM=E.CORTEX_AI_KEY_ALGORITHM;exports.CORTEX_AI_KEY_ENVELOPE_VERSION=E.CORTEX_AI_KEY_ENVELOPE_VERSION;exports.decryptOpenRouterApiKey=E.decryptOpenRouterApiKey;exports.encryptOpenRouterApiKey=E.encryptOpenRouterApiKey;exports.getMaskedOpenRouterKey=E.getMaskedOpenRouterKey;exports.getOpenRouterKeyEnvelopeStatus=E.getOpenRouterKeyEnvelopeStatus;exports.listCortexAiCompatibleOpenRouterModels=l.listCortexAiCompatibleOpenRouterModels;exports.CORTEX_AI_FREE_MODEL_FALLBACK_REGISTRY=o.CORTEX_AI_FREE_MODEL_FALLBACK_REGISTRY;exports.CORTEX_AI_MODEL_REGISTRY=o.CORTEX_AI_MODEL_REGISTRY;exports.CORTEX_AI_OPENROUTER_BASE_URL=o.CORTEX_AI_OPENROUTER_BASE_URL;exports.CORTEX_AI_OPENROUTER_FREE_ROUTER_MODEL=o.CORTEX_AI_OPENROUTER_FREE_ROUTER_MODEL;exports.CORTEX_AI_REQUIRED_MODEL_PARAMETERS=o.CORTEX_AI_REQUIRED_MODEL_PARAMETERS;exports.CortexAiRoutingError=o.CortexAiRoutingError;exports.buildCortexAiModelFallbackChain=o.buildCortexAiModelFallbackChain;exports.buildCortexAiRoutingPolicy=o.buildCortexAiRoutingPolicy;exports.createCortexAiStoredModelSelection=o.createCortexAiStoredModelSelection;exports.filterCortexAiCompatibleOpenRouterModels=o.filterCortexAiCompatibleOpenRouterModels;exports.getHttpStatusCode=o.getHttpStatusCode;exports.isCortexAiFreeModelId=o.isCortexAiFreeModelId;exports.isOpenRouterRateLimitError=o.isOpenRouterRateLimitError;exports.isOpenRouterRecoverableRoutingError=o.isOpenRouterRecoverableRoutingError;exports.omitUnsupportedCortexAiModelOptions=o.omitUnsupportedCortexAiModelOptions;exports.runWithCortexAiModelFallback=o.runWithCortexAiModelFallback;exports.safeParseCortexAiModelSelection=o.safeParseCortexAiModelSelection;exports.summarizeCortexAiRoutingError=o.summarizeCortexAiRoutingError;exports.CORTEX_WIDGET_DEFINITION_SELECT=s.CORTEX_WIDGET_DEFINITION_SELECT;exports.CortexWidgetRegistryInsertError=s.CortexWidgetRegistryInsertError;exports.buildCortexWidgetDefinitionInsertPayload=s.buildCortexWidgetDefinitionInsertPayload;exports.insertCortexWidgetDefinition=s.insertCortexWidgetDefinition;exports.CORTEX_WIDGET_ALLOWED_RELATION_TABLES=c.CORTEX_WIDGET_ALLOWED_RELATION_TABLES;exports.buildCortexProfileCardVerificationDefinition=c.buildCortexProfileCardVerificationDefinition;exports.buildCortexWidgetBuilderPrompt=c.buildCortexWidgetBuilderPrompt;exports.buildCortexWidgetBuilderSystemPrompt=c.buildCortexWidgetBuilderSystemPrompt;exports.cortexWidgetBuildRequestSchema=c.cortexWidgetBuildRequestSchema;exports.cortexWidgetDbRelationFieldSchema=c.cortexWidgetDbRelationFieldSchema;exports.cortexWidgetDefinitionSchema=c.cortexWidgetDefinitionSchema;exports.cortexWidgetFieldSchema=c.cortexWidgetFieldSchema;exports.cortexWidgetImageR2FieldSchema=c.cortexWidgetImageR2FieldSchema;exports.cortexWidgetLayoutNodeSchema=c.cortexWidgetLayoutNodeSchema;exports.cortexWidgetRichTextFieldSchema=c.cortexWidgetRichTextFieldSchema;exports.cortexWidgetTextFieldSchema=c.cortexWidgetTextFieldSchema;exports.validateCortexWidgetDefinitionOutput=c.validateCortexWidgetDefinitionOutput;exports.CORTEX_MCP_DEFAULT_PROTOCOL_VERSION=r.CORTEX_MCP_DEFAULT_PROTOCOL_VERSION;exports.CORTEX_MCP_LATEST_LEGACY_PROTOCOL_VERSION=r.CORTEX_MCP_LATEST_LEGACY_PROTOCOL_VERSION;exports.CORTEX_MCP_MODERN_PROTOCOL_VERSION=r.CORTEX_MCP_MODERN_PROTOCOL_VERSION;exports.CORTEX_MCP_SERVER_NAME=r.CORTEX_MCP_SERVER_NAME;exports.CORTEX_MCP_SERVER_TITLE=r.CORTEX_MCP_SERVER_TITLE;exports.CORTEX_MCP_SUPPORTED_PROTOCOL_VERSIONS=r.CORTEX_MCP_SUPPORTED_PROTOCOL_VERSIONS;exports.JSON_RPC_INTERNAL_ERROR=r.JSON_RPC_INTERNAL_ERROR;exports.JSON_RPC_INVALID_PARAMS=r.JSON_RPC_INVALID_PARAMS;exports.JSON_RPC_INVALID_REQUEST=r.JSON_RPC_INVALID_REQUEST;exports.JSON_RPC_METHOD_NOT_FOUND=r.JSON_RPC_METHOD_NOT_FOUND;exports.JSON_RPC_PARSE_ERROR=r.JSON_RPC_PARSE_ERROR;exports.handleCortexMcpMessage=r.handleCortexMcpMessage;exports.isJsonRpcNotification=r.isJsonRpcNotification;exports.isModernEraMessage=r.isModernEraMessage;exports.CORTEX_AI_MCP_SCOPES=a.CORTEX_AI_MCP_SCOPES;exports.CORTEX_AI_MCP_SETTINGS_DEFAULTS=a.CORTEX_AI_MCP_SETTINGS_DEFAULTS;exports.CORTEX_AI_MCP_SETTINGS_KEY=a.CORTEX_AI_MCP_SETTINGS_KEY;exports.CORTEX_AI_MCP_TOKENS_TABLE=a.CORTEX_AI_MCP_TOKENS_TABLE;exports.CORTEX_AI_MCP_TOKEN_PREFIX=a.CORTEX_AI_MCP_TOKEN_PREFIX;exports.hashCortexAiMcpToken=a.hashCortexAiMcpToken;exports.isLocalhostHost=a.isLocalhostHost;exports.mintCortexAiMcpToken=a.mintCortexAiMcpToken;exports.normalizeCortexAiMcpSettings=a.normalizeCortexAiMcpSettings;exports.parseBearerToken=a.parseBearerToken;exports.resolveCortexAiMcpSettings=a.resolveCortexAiMcpSettings;exports.shouldTrustLocalMcpRequest=a.shouldTrustLocalMcpRequest;exports.touchCortexAiMcpToken=a.touchCortexAiMcpToken;exports.verifyCortexAiMcpToken=a.verifyCortexAiMcpToken;exports.CORTEX_MCP_PROMPTS=i.CORTEX_MCP_PROMPTS;exports.CORTEX_MCP_RESOURCES=i.CORTEX_MCP_RESOURCES;exports.CORTEX_MCP_TOOL_ALIASES=i.CORTEX_MCP_TOOL_ALIASES;exports.CORTEX_MCP_TOOL_KINDS=i.CORTEX_MCP_TOOL_KINDS;exports.CortexMcpForbiddenToolError=i.CortexMcpForbiddenToolError;exports.CortexMcpUnknownToolError=i.CortexMcpUnknownToolError;exports.assertCortexMcpToolCoverage=i.assertCortexMcpToolCoverage;exports.buildCortexMcpToolDefinitions=i.buildCortexMcpToolDefinitions;exports.callCortexMcpTool=i.callCortexMcpTool;exports.cortexMcpScopesAllow=i.cortexMcpScopesAllow;exports.getCortexMcpPrompt=i.getCortexMcpPrompt;exports.getCortexMcpToolKind=i.getCortexMcpToolKind;exports.readCortexMcpResource=i.readCortexMcpResource;exports.resolveCortexMcpToolName=i.resolveCortexMcpToolName;Object.defineProperty(exports,"z",{enumerable:!0,get:()=>R.z});
|
package/index.d.ts
CHANGED
|
@@ -10,4 +10,7 @@ export * from './lib/ai-model-catalog';
|
|
|
10
10
|
export * from './lib/ai-model-registry';
|
|
11
11
|
export * from './lib/cortex-widget-registry';
|
|
12
12
|
export * from './lib/cortex-widget-schema';
|
|
13
|
+
export * from './lib/mcp-server';
|
|
14
|
+
export * from './lib/mcp-tokens';
|
|
15
|
+
export * from './lib/mcp-tool-registry';
|
|
13
16
|
export * from './lib/zod-config';
|
package/index.es.js
CHANGED
|
@@ -1,158 +1,203 @@
|
|
|
1
1
|
import { INLINE_HTML_ASSISTANT_SYSTEM_PROMPT as r, generateEditorBlocksRequestSchema as a, generateEditorHtmlFragment as c, validateGeneratedEditorHtmlFragment as i } from "./lib/ai-block-generation.es.js";
|
|
2
|
-
import { createCortexAiOpenRouterClient as
|
|
3
|
-
import { CORTEX_AI_AGENT_SETTINGS_BOUNDS as
|
|
4
|
-
import { generateCortexWidgetDefinition as
|
|
5
|
-
import { createCortexCustomBlockTools as
|
|
6
|
-
import { createCortexDatabaseAgentTools as
|
|
7
|
-
import { availableCortexAiBlockTypes as re, buildVisibleContactIntroActionPlan as ae, cortexAiPageContextSchema as ce, createCmsPageInputSchema as ie, createCmsPostInputSchema as ne, createCmsProductInputSchema as
|
|
2
|
+
import { createCortexAiOpenRouterClient as C, createCortexAiOpenRouterProvider as E, generateCortexAiText as _, getStoredCortexAiModelSelection as u, resolveCortexAiOpenRouterCredential as S } from "./lib/ai-client.es.js";
|
|
3
|
+
import { CORTEX_AI_AGENT_SETTINGS_BOUNDS as m, CORTEX_AI_AGENT_SETTINGS_DEFAULTS as p, CORTEX_AI_AGENT_SETTINGS_KEY as s, CORTEX_AI_OPENROUTER_MODEL_SELECTION_SETTING_KEY as T, CORTEX_AI_OPENROUTER_SETTING_KEY as l, CORTEX_AI_PACKAGE_ID as x, CORTEX_AI_PACKAGE_NAME as O, CORTEX_AI_PEXELS_SETTING_KEY as I, CORTEX_AI_UNSPLASH_APP_NAME_SETTING_KEY as A, CORTEX_AI_UNSPLASH_SETTING_KEY as d, decryptStoredOpenRouterApiKey as P, encryptStoredOpenRouterApiKey as h, getCortexAiEnvConfig as g, getEnvOpenRouterKeyStatus as M, getOpenRouterEnvApiKey as N, getPexelsEnvApiKey as D, getStoredOpenRouterKeyStatus as L, getUnsplashEnvApiKey as X, normalizeCortexAiAgentSettings as f, resolveCortexAiAgentSettings as k } from "./lib/ai-config.es.js";
|
|
4
|
+
import { generateCortexWidgetDefinition as U } from "./lib/ai-cortex-widget-builder.es.js";
|
|
5
|
+
import { createCortexCustomBlockTools as F, createCustomBlockInputSchema as K, deleteCustomBlockInputSchema as v, executeCreateCustomBlock as y, executeDeleteCustomBlock as G, executeListCustomBlocks as W, executeUpdateCustomBlock as Y, listCustomBlocksInputSchema as V, updateCustomBlockInputSchema as H } from "./lib/ai-global-agent-custom-block-tools.es.js";
|
|
6
|
+
import { createCortexDatabaseAgentTools as w, describeDatabaseSchemaInputSchema as z, executeDatabaseActionPlan as q, executeDatabaseActionPlanInputSchema as Q, executeDatabaseMutation as j, executeDatabaseMutationInputSchema as Z, executeDescribeDatabaseSchema as $, executeReadDatabaseRecords as ee, readDatabaseRecordsInputSchema as te } from "./lib/ai-global-agent-db-tools.es.js";
|
|
7
|
+
import { availableCortexAiBlockTypes as re, buildVisibleContactIntroActionPlan as ae, cortexAiPageContextSchema as ce, createCmsPageInputSchema as ie, createCmsPostInputSchema as ne, createCmsProductInputSchema as Ce, createCortexGlobalAgentTools as Ee, deleteCmsItemInputSchema as _e, executeCmsActionPlan as ue, executeCmsActionPlanInputSchema as Se, executeCreateCmsPage as Re, executeCreateCmsPost as me, executeCreateCmsProduct as pe, executeDeleteCmsItem as se, executeFetchEcommerceStats as Te, executeFetchUrlContent as le, executeInsertContentBlock as xe, executePrepareDeleteCmsItem as Oe, executeReadCurrentCmsItem as Ie, executeRewritePageDraft as Ae, executeSearchDocumentation as de, executeSearchDocumentationWithTimeout as Pe, executeSearchStockPhotos as he, executeSetContentImages as ge, executeTranslatePage as Me, executeUpdateCmsItemField as Ne, executeUpdateContentBlock as De, executeUpdateCurrentCmsFields as Le, executeUpdateFooter as Xe, executeUpdateNavigationBar as fe, executeUpdateSectionColumnBlock as ke, fetchEcommerceStatsInputSchema as be, fetchUrlContentInputSchema as Ue, insertContentBlockInputSchema as Be, maybeTriggerStockPhotoDownloads as Fe, navigationItemInputSchema as Ke, prepareDeleteCmsItemInputSchema as ve, readCurrentCmsItemInputSchema as ye, resolveCortexAiStockPhotoProvider as Ge, resolveCortexAiStockPhotoProviders as We, rewritePageDraftInputSchema as Ye, searchDocumentationInputSchema as Ve, searchStockPhotosInputSchema as He, setContentImagesInputSchema as Je, translatePageInputSchema as we, updateCmsItemFieldInputSchema as ze, updateContentBlockInputSchema as qe, updateCurrentCmsFieldsInputSchema as Qe, updateFooterInputSchema as je, updateNavigationBarInputSchema as Ze, updateSectionColumnBlockInputSchema as $e } from "./lib/ai-global-agent-tools.es.js";
|
|
8
8
|
import { CORTEX_AI_KEY_ALGORITHM as tt, CORTEX_AI_KEY_ENVELOPE_VERSION as ot, decryptOpenRouterApiKey as rt, encryptOpenRouterApiKey as at, getMaskedOpenRouterKey as ct, getOpenRouterKeyEnvelopeStatus as it } from "./lib/ai-key-crypto.es.js";
|
|
9
|
-
import { listCortexAiCompatibleOpenRouterModels as
|
|
10
|
-
import { CORTEX_AI_FREE_MODEL_FALLBACK_REGISTRY as
|
|
11
|
-
import { CORTEX_WIDGET_DEFINITION_SELECT as
|
|
12
|
-
import { CORTEX_WIDGET_ALLOWED_RELATION_TABLES as
|
|
9
|
+
import { listCortexAiCompatibleOpenRouterModels as Ct } from "./lib/ai-model-catalog.es.js";
|
|
10
|
+
import { CORTEX_AI_FREE_MODEL_FALLBACK_REGISTRY as _t, CORTEX_AI_MODEL_REGISTRY as ut, CORTEX_AI_OPENROUTER_BASE_URL as St, CORTEX_AI_OPENROUTER_FREE_ROUTER_MODEL as Rt, CORTEX_AI_REQUIRED_MODEL_PARAMETERS as mt, CortexAiRoutingError as pt, buildCortexAiModelFallbackChain as st, buildCortexAiRoutingPolicy as Tt, createCortexAiStoredModelSelection as lt, filterCortexAiCompatibleOpenRouterModels as xt, getHttpStatusCode as Ot, isCortexAiFreeModelId as It, isOpenRouterRateLimitError as At, isOpenRouterRecoverableRoutingError as dt, omitUnsupportedCortexAiModelOptions as Pt, runWithCortexAiModelFallback as ht, safeParseCortexAiModelSelection as gt, summarizeCortexAiRoutingError as Mt } from "./lib/ai-model-registry.es.js";
|
|
11
|
+
import { CORTEX_WIDGET_DEFINITION_SELECT as Dt, CortexWidgetRegistryInsertError as Lt, buildCortexWidgetDefinitionInsertPayload as Xt, insertCortexWidgetDefinition as ft } from "./lib/cortex-widget-registry.es.js";
|
|
12
|
+
import { CORTEX_WIDGET_ALLOWED_RELATION_TABLES as bt, buildCortexProfileCardVerificationDefinition as Ut, buildCortexWidgetBuilderPrompt as Bt, buildCortexWidgetBuilderSystemPrompt as Ft, cortexWidgetBuildRequestSchema as Kt, cortexWidgetDbRelationFieldSchema as vt, cortexWidgetDefinitionSchema as yt, cortexWidgetFieldSchema as Gt, cortexWidgetImageR2FieldSchema as Wt, cortexWidgetLayoutNodeSchema as Yt, cortexWidgetRichTextFieldSchema as Vt, cortexWidgetTextFieldSchema as Ht, validateCortexWidgetDefinitionOutput as Jt } from "./lib/cortex-widget-schema.es.js";
|
|
13
|
+
import { CORTEX_MCP_DEFAULT_PROTOCOL_VERSION as zt, CORTEX_MCP_LATEST_LEGACY_PROTOCOL_VERSION as qt, CORTEX_MCP_MODERN_PROTOCOL_VERSION as Qt, CORTEX_MCP_SERVER_NAME as jt, CORTEX_MCP_SERVER_TITLE as Zt, CORTEX_MCP_SUPPORTED_PROTOCOL_VERSIONS as $t, JSON_RPC_INTERNAL_ERROR as eo, JSON_RPC_INVALID_PARAMS as to, JSON_RPC_INVALID_REQUEST as oo, JSON_RPC_METHOD_NOT_FOUND as ro, JSON_RPC_PARSE_ERROR as ao, handleCortexMcpMessage as co, isJsonRpcNotification as io, isModernEraMessage as no } from "./lib/mcp-server.es.js";
|
|
14
|
+
import { CORTEX_AI_MCP_SCOPES as Eo, CORTEX_AI_MCP_SETTINGS_DEFAULTS as _o, CORTEX_AI_MCP_SETTINGS_KEY as uo, CORTEX_AI_MCP_TOKENS_TABLE as So, CORTEX_AI_MCP_TOKEN_PREFIX as Ro, hashCortexAiMcpToken as mo, isLocalhostHost as po, mintCortexAiMcpToken as so, normalizeCortexAiMcpSettings as To, parseBearerToken as lo, resolveCortexAiMcpSettings as xo, shouldTrustLocalMcpRequest as Oo, touchCortexAiMcpToken as Io, verifyCortexAiMcpToken as Ao } from "./lib/mcp-tokens.es.js";
|
|
15
|
+
import { CORTEX_MCP_PROMPTS as ho, CORTEX_MCP_RESOURCES as go, CORTEX_MCP_TOOL_ALIASES as Mo, CORTEX_MCP_TOOL_KINDS as No, CortexMcpForbiddenToolError as Do, CortexMcpUnknownToolError as Lo, assertCortexMcpToolCoverage as Xo, buildCortexMcpToolDefinitions as fo, callCortexMcpTool as ko, cortexMcpScopesAllow as bo, getCortexMcpPrompt as Uo, getCortexMcpToolKind as Bo, readCortexMcpResource as Fo, resolveCortexMcpToolName as Ko } from "./lib/mcp-tool-registry.es.js";
|
|
13
16
|
import "./lib/zod-config.es.js";
|
|
14
|
-
import { z as
|
|
17
|
+
import { z as yo } from "zod";
|
|
15
18
|
export {
|
|
16
|
-
|
|
19
|
+
m as CORTEX_AI_AGENT_SETTINGS_BOUNDS,
|
|
17
20
|
p as CORTEX_AI_AGENT_SETTINGS_DEFAULTS,
|
|
18
|
-
|
|
19
|
-
|
|
21
|
+
s as CORTEX_AI_AGENT_SETTINGS_KEY,
|
|
22
|
+
_t as CORTEX_AI_FREE_MODEL_FALLBACK_REGISTRY,
|
|
20
23
|
tt as CORTEX_AI_KEY_ALGORITHM,
|
|
21
24
|
ot as CORTEX_AI_KEY_ENVELOPE_VERSION,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
25
|
+
Eo as CORTEX_AI_MCP_SCOPES,
|
|
26
|
+
_o as CORTEX_AI_MCP_SETTINGS_DEFAULTS,
|
|
27
|
+
uo as CORTEX_AI_MCP_SETTINGS_KEY,
|
|
28
|
+
So as CORTEX_AI_MCP_TOKENS_TABLE,
|
|
29
|
+
Ro as CORTEX_AI_MCP_TOKEN_PREFIX,
|
|
30
|
+
ut as CORTEX_AI_MODEL_REGISTRY,
|
|
31
|
+
St as CORTEX_AI_OPENROUTER_BASE_URL,
|
|
32
|
+
Rt as CORTEX_AI_OPENROUTER_FREE_ROUTER_MODEL,
|
|
33
|
+
T as CORTEX_AI_OPENROUTER_MODEL_SELECTION_SETTING_KEY,
|
|
34
|
+
l as CORTEX_AI_OPENROUTER_SETTING_KEY,
|
|
35
|
+
x as CORTEX_AI_PACKAGE_ID,
|
|
36
|
+
O as CORTEX_AI_PACKAGE_NAME,
|
|
37
|
+
I as CORTEX_AI_PEXELS_SETTING_KEY,
|
|
38
|
+
mt as CORTEX_AI_REQUIRED_MODEL_PARAMETERS,
|
|
39
|
+
A as CORTEX_AI_UNSPLASH_APP_NAME_SETTING_KEY,
|
|
40
|
+
d as CORTEX_AI_UNSPLASH_SETTING_KEY,
|
|
41
|
+
zt as CORTEX_MCP_DEFAULT_PROTOCOL_VERSION,
|
|
42
|
+
qt as CORTEX_MCP_LATEST_LEGACY_PROTOCOL_VERSION,
|
|
43
|
+
Qt as CORTEX_MCP_MODERN_PROTOCOL_VERSION,
|
|
44
|
+
ho as CORTEX_MCP_PROMPTS,
|
|
45
|
+
go as CORTEX_MCP_RESOURCES,
|
|
46
|
+
jt as CORTEX_MCP_SERVER_NAME,
|
|
47
|
+
Zt as CORTEX_MCP_SERVER_TITLE,
|
|
48
|
+
$t as CORTEX_MCP_SUPPORTED_PROTOCOL_VERSIONS,
|
|
49
|
+
Mo as CORTEX_MCP_TOOL_ALIASES,
|
|
50
|
+
No as CORTEX_MCP_TOOL_KINDS,
|
|
51
|
+
bt as CORTEX_WIDGET_ALLOWED_RELATION_TABLES,
|
|
52
|
+
Dt as CORTEX_WIDGET_DEFINITION_SELECT,
|
|
35
53
|
pt as CortexAiRoutingError,
|
|
36
|
-
|
|
54
|
+
Do as CortexMcpForbiddenToolError,
|
|
55
|
+
Lo as CortexMcpUnknownToolError,
|
|
56
|
+
Lt as CortexWidgetRegistryInsertError,
|
|
37
57
|
r as INLINE_HTML_ASSISTANT_SYSTEM_PROMPT,
|
|
58
|
+
eo as JSON_RPC_INTERNAL_ERROR,
|
|
59
|
+
to as JSON_RPC_INVALID_PARAMS,
|
|
60
|
+
oo as JSON_RPC_INVALID_REQUEST,
|
|
61
|
+
ro as JSON_RPC_METHOD_NOT_FOUND,
|
|
62
|
+
ao as JSON_RPC_PARSE_ERROR,
|
|
63
|
+
Xo as assertCortexMcpToolCoverage,
|
|
38
64
|
re as availableCortexAiBlockTypes,
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
65
|
+
st as buildCortexAiModelFallbackChain,
|
|
66
|
+
Tt as buildCortexAiRoutingPolicy,
|
|
67
|
+
fo as buildCortexMcpToolDefinitions,
|
|
68
|
+
Ut as buildCortexProfileCardVerificationDefinition,
|
|
69
|
+
Bt as buildCortexWidgetBuilderPrompt,
|
|
70
|
+
Ft as buildCortexWidgetBuilderSystemPrompt,
|
|
71
|
+
Xt as buildCortexWidgetDefinitionInsertPayload,
|
|
45
72
|
ae as buildVisibleContactIntroActionPlan,
|
|
73
|
+
ko as callCortexMcpTool,
|
|
46
74
|
ce as cortexAiPageContextSchema,
|
|
47
|
-
|
|
75
|
+
bo as cortexMcpScopesAllow,
|
|
76
|
+
Kt as cortexWidgetBuildRequestSchema,
|
|
48
77
|
vt as cortexWidgetDbRelationFieldSchema,
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
78
|
+
yt as cortexWidgetDefinitionSchema,
|
|
79
|
+
Gt as cortexWidgetFieldSchema,
|
|
80
|
+
Wt as cortexWidgetImageR2FieldSchema,
|
|
52
81
|
Yt as cortexWidgetLayoutNodeSchema,
|
|
53
|
-
|
|
54
|
-
|
|
82
|
+
Vt as cortexWidgetRichTextFieldSchema,
|
|
83
|
+
Ht as cortexWidgetTextFieldSchema,
|
|
55
84
|
ie as createCmsPageInputSchema,
|
|
56
85
|
ne as createCmsPostInputSchema,
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
86
|
+
Ce as createCmsProductInputSchema,
|
|
87
|
+
C as createCortexAiOpenRouterClient,
|
|
88
|
+
E as createCortexAiOpenRouterProvider,
|
|
89
|
+
lt as createCortexAiStoredModelSelection,
|
|
90
|
+
F as createCortexCustomBlockTools,
|
|
91
|
+
w as createCortexDatabaseAgentTools,
|
|
92
|
+
Ee as createCortexGlobalAgentTools,
|
|
93
|
+
K as createCustomBlockInputSchema,
|
|
65
94
|
rt as decryptOpenRouterApiKey,
|
|
66
|
-
|
|
67
|
-
|
|
95
|
+
P as decryptStoredOpenRouterApiKey,
|
|
96
|
+
_e as deleteCmsItemInputSchema,
|
|
68
97
|
v as deleteCustomBlockInputSchema,
|
|
69
|
-
|
|
98
|
+
z as describeDatabaseSchemaInputSchema,
|
|
70
99
|
at as encryptOpenRouterApiKey,
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
100
|
+
h as encryptStoredOpenRouterApiKey,
|
|
101
|
+
ue as executeCmsActionPlan,
|
|
102
|
+
Se as executeCmsActionPlanInputSchema,
|
|
103
|
+
Re as executeCreateCmsPage,
|
|
104
|
+
me as executeCreateCmsPost,
|
|
76
105
|
pe as executeCreateCmsProduct,
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
106
|
+
y as executeCreateCustomBlock,
|
|
107
|
+
q as executeDatabaseActionPlan,
|
|
108
|
+
Q as executeDatabaseActionPlanInputSchema,
|
|
109
|
+
j as executeDatabaseMutation,
|
|
81
110
|
Z as executeDatabaseMutationInputSchema,
|
|
82
|
-
|
|
83
|
-
|
|
111
|
+
se as executeDeleteCmsItem,
|
|
112
|
+
G as executeDeleteCustomBlock,
|
|
84
113
|
$ as executeDescribeDatabaseSchema,
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
114
|
+
Te as executeFetchEcommerceStats,
|
|
115
|
+
le as executeFetchUrlContent,
|
|
116
|
+
xe as executeInsertContentBlock,
|
|
117
|
+
W as executeListCustomBlocks,
|
|
118
|
+
Oe as executePrepareDeleteCmsItem,
|
|
119
|
+
Ie as executeReadCurrentCmsItem,
|
|
91
120
|
ee as executeReadDatabaseRecords,
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
121
|
+
Ae as executeRewritePageDraft,
|
|
122
|
+
de as executeSearchDocumentation,
|
|
123
|
+
Pe as executeSearchDocumentationWithTimeout,
|
|
124
|
+
he as executeSearchStockPhotos,
|
|
125
|
+
ge as executeSetContentImages,
|
|
126
|
+
Me as executeTranslatePage,
|
|
98
127
|
Ne as executeUpdateCmsItemField,
|
|
99
|
-
|
|
100
|
-
|
|
128
|
+
De as executeUpdateContentBlock,
|
|
129
|
+
Le as executeUpdateCurrentCmsFields,
|
|
101
130
|
Y as executeUpdateCustomBlock,
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
131
|
+
Xe as executeUpdateFooter,
|
|
132
|
+
fe as executeUpdateNavigationBar,
|
|
133
|
+
ke as executeUpdateSectionColumnBlock,
|
|
134
|
+
be as fetchEcommerceStatsInputSchema,
|
|
135
|
+
Ue as fetchUrlContentInputSchema,
|
|
136
|
+
xt as filterCortexAiCompatibleOpenRouterModels,
|
|
137
|
+
_ as generateCortexAiText,
|
|
138
|
+
U as generateCortexWidgetDefinition,
|
|
110
139
|
a as generateEditorBlocksRequestSchema,
|
|
111
140
|
c as generateEditorHtmlFragment,
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
141
|
+
g as getCortexAiEnvConfig,
|
|
142
|
+
Uo as getCortexMcpPrompt,
|
|
143
|
+
Bo as getCortexMcpToolKind,
|
|
144
|
+
M as getEnvOpenRouterKeyStatus,
|
|
145
|
+
Ot as getHttpStatusCode,
|
|
115
146
|
ct as getMaskedOpenRouterKey,
|
|
116
147
|
N as getOpenRouterEnvApiKey,
|
|
117
148
|
it as getOpenRouterKeyEnvelopeStatus,
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
149
|
+
D as getPexelsEnvApiKey,
|
|
150
|
+
u as getStoredCortexAiModelSelection,
|
|
151
|
+
L as getStoredOpenRouterKeyStatus,
|
|
152
|
+
X as getUnsplashEnvApiKey,
|
|
153
|
+
co as handleCortexMcpMessage,
|
|
154
|
+
mo as hashCortexAiMcpToken,
|
|
155
|
+
Be as insertContentBlockInputSchema,
|
|
156
|
+
ft as insertCortexWidgetDefinition,
|
|
157
|
+
It as isCortexAiFreeModelId,
|
|
158
|
+
io as isJsonRpcNotification,
|
|
159
|
+
po as isLocalhostHost,
|
|
160
|
+
no as isModernEraMessage,
|
|
161
|
+
At as isOpenRouterRateLimitError,
|
|
162
|
+
dt as isOpenRouterRecoverableRoutingError,
|
|
163
|
+
Ct as listCortexAiCompatibleOpenRouterModels,
|
|
164
|
+
V as listCustomBlocksInputSchema,
|
|
165
|
+
Fe as maybeTriggerStockPhotoDownloads,
|
|
166
|
+
so as mintCortexAiMcpToken,
|
|
167
|
+
Ke as navigationItemInputSchema,
|
|
168
|
+
f as normalizeCortexAiAgentSettings,
|
|
169
|
+
To as normalizeCortexAiMcpSettings,
|
|
170
|
+
Pt as omitUnsupportedCortexAiModelOptions,
|
|
171
|
+
lo as parseBearerToken,
|
|
133
172
|
ve as prepareDeleteCmsItemInputSchema,
|
|
134
|
-
|
|
173
|
+
Fo as readCortexMcpResource,
|
|
174
|
+
ye as readCurrentCmsItemInputSchema,
|
|
135
175
|
te as readDatabaseRecordsInputSchema,
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
176
|
+
k as resolveCortexAiAgentSettings,
|
|
177
|
+
xo as resolveCortexAiMcpSettings,
|
|
178
|
+
S as resolveCortexAiOpenRouterCredential,
|
|
179
|
+
Ge as resolveCortexAiStockPhotoProvider,
|
|
180
|
+
We as resolveCortexAiStockPhotoProviders,
|
|
181
|
+
Ko as resolveCortexMcpToolName,
|
|
140
182
|
Ye as rewritePageDraftInputSchema,
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
183
|
+
ht as runWithCortexAiModelFallback,
|
|
184
|
+
gt as safeParseCortexAiModelSelection,
|
|
185
|
+
Ve as searchDocumentationInputSchema,
|
|
186
|
+
He as searchStockPhotosInputSchema,
|
|
187
|
+
Je as setContentImagesInputSchema,
|
|
188
|
+
Oo as shouldTrustLocalMcpRequest,
|
|
189
|
+
Mt as summarizeCortexAiRoutingError,
|
|
190
|
+
Io as touchCortexAiMcpToken,
|
|
191
|
+
we as translatePageInputSchema,
|
|
192
|
+
ze as updateCmsItemFieldInputSchema,
|
|
193
|
+
qe as updateContentBlockInputSchema,
|
|
194
|
+
Qe as updateCurrentCmsFieldsInputSchema,
|
|
195
|
+
H as updateCustomBlockInputSchema,
|
|
196
|
+
je as updateFooterInputSchema,
|
|
153
197
|
Ze as updateNavigationBarInputSchema,
|
|
154
198
|
$e as updateSectionColumnBlockInputSchema,
|
|
155
|
-
|
|
199
|
+
Jt as validateCortexWidgetDefinitionOutput,
|
|
156
200
|
i as validateGeneratedEditorHtmlFragment,
|
|
157
|
-
|
|
201
|
+
Ao as verifyCortexAiMcpToken,
|
|
202
|
+
yo as z
|
|
158
203
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("ai");require("./zod-config.cjs.js");const n=require("zod"),G=100,W=20,k=100,z=20,R="[REDACTED]",g="cortex_ai_openrouter_api_key",$={blocks:{columns:["id","page_id","post_id","language_id","block_type","content","order","created_at","updated_at"],description:"CMS page/post content blocks.",primaryKey:["id"]},coupon_freemius_mappings:{columns:["id","coupon_id","product_id","freemius_product_id","freemius_coupon_id","freemius_coupon_code","sync_status","sync_error","remote_payload","last_synced_at","created_at","updated_at"],description:"Freemius coupon sync mappings.",primaryKey:["id"]},coupon_products:{columns:["coupon_id","product_id","created_at"],description:"Coupon product allow-list rows.",primaryKey:["coupon_id","product_id"]},coupon_redemptions:{columns:["id","coupon_id","order_id","coupon_code","provider","discount_total","user_id","customer_email","metadata","redeemed_at"],description:"Coupon redemption records.",primaryKey:["id"]},coupons:{columns:["id","code","name","internal_note","provider_scope","discount_type","discount_amount","is_active","starts_at","ends_at","redemption_limit","redemptions_count","freemius_sync_status","freemius_sync_error","created_at","updated_at"],description:"Commerce coupons.",primaryKey:["id"]},cortex_ai_db_mutation_audit:{columns:["id","actor_user_id","tool_name","action_name","target_tables","operation_summary","payload_hash","payload","preview","status","error_message","created_at"],description:"Read-only Cortex AI database mutation audit trail.",primaryKey:["id"],readOnly:!0},currencies:{columns:["id","code","symbol","exchange_rate","is_default","is_active","rounding_mode","rounding_increment","rounding_charm_amount","auto_update_exchange_rate","exchange_rate_updated_at","exchange_rate_source","auto_sync_product_prices","created_at","updated_at"],description:"Storefront currencies and FX settings.",primaryKey:["id"]},freemius_plans:{columns:["id","product_id","name","title","created_at","updated_at"],description:"Freemius plan metadata.",primaryKey:["id"]},freemius_pricing:{columns:["id","plan_id","api_monthly_price","api_annual_price","api_lifetime_price","override_monthly_price","override_annual_price","override_lifetime_price","license_quota","is_active","created_at","updated_at"],description:"Freemius pricing metadata.",primaryKey:["id"]},inventory_items:{columns:["sku","quantity","created_at","updated_at"],description:"Source-of-truth inventory by SKU.",primaryKey:["sku"]},languages:{columns:["id","code","name","is_default","is_active","created_at","updated_at"],description:"CMS languages/locales.",primaryKey:["id"]},logos:{columns:["id","name","media_id","created_at"],description:"Brand logos.",primaryKey:["id"]},media:{columns:["id","uploader_id","file_name","object_key","file_type","size_bytes","description","width","height","blur_data_url","variants","file_path","folder","created_at","updated_at"],description:"Media metadata for uploaded assets.",primaryKey:["id"]},navigation_items:{columns:["id","language_id","menu_key","label","url","parent_id","order","page_id","translation_group_id","created_at","updated_at"],description:"CMS navigation tree items.",primaryKey:["id"]},order_items:{columns:["id","order_id","product_id","variant_id","quantity","price_at_purchase"],description:"Commerce order line items.",primaryKey:["id"]},orders:{columns:["id","user_id","status","total","stripe_session_id","payment_intent_id","customer_details","provider","freemius_product_id","freemius_plan_id","freemius_license_id","freemius_subscription_id","freemius_trial_id","freemius_user_id","freemius_trial_ends_at","freemius_last_event_type","freemius_last_synced_at","currency","subtotal","shipping_total","tax_total","tax_details","exchange_rate_at_purchase","inventory_deducted_at","invoice_number","paid_at","created_at","coupon_id","coupon_code","discount_total","discount_details"],description:"Commerce orders.",primaryKey:["id"]},package_activations:{columns:["id","license_key","instance_name","package_id","status","meta","last_validated_at","created_at"],description:"NextBlock package activations.",primaryKey:["id"]},page_revisions:{columns:["id","page_id","author_id","version","revision_type","content","created_at"],description:"Page revision history.",primaryKey:["id"],readOnly:!0},pages:{columns:["id","language_id","author_id","title","slug","status","meta_title","meta_description","feature_image_id","version","translation_group_id","created_at","updated_at"],description:"CMS pages.",primaryKey:["id"]},post_revisions:{columns:["id","post_id","author_id","version","revision_type","content","created_at"],description:"Post revision history.",primaryKey:["id"],readOnly:!0},product_revisions:{columns:["id","product_id","author_id","version","revision_type","content","created_at"],description:"Product revision history.",primaryKey:["id"],readOnly:!0},posts:{columns:["id","language_id","author_id","title","slug","label","excerpt","subtitle","status","published_at","meta_title","meta_description","feature_image_id","version","translation_group_id","created_at","updated_at"],description:"CMS posts/articles.",primaryKey:["id"]},product_attribute_terms:{columns:["id","attribute_id","value","slug","sort_order","value_translations","created_at","updated_at"],description:"Product attribute terms.",primaryKey:["id"]},product_attributes:{columns:["id","name","slug","name_translations","created_at","updated_at"],description:"Product attribute definitions.",primaryKey:["id"]},product_media:{columns:["product_id","media_id","sort_order"],description:"Product media join rows.",primaryKey:["product_id","media_id"]},product_variants:{columns:["id","product_id","sku","price_adjustment","price","prices","sale_price","sale_prices","stock_quantity","upc","main_media_id","created_at","updated_at"],description:"Sellable product variants.",primaryKey:["id"]},products:{columns:["id","language_id","translation_group_id","sku","title","slug","product_type","payment_provider","price","prices","sale_price","sale_prices","stock","status","meta_title","meta_description","short_description","description_json","metadata","freemius_plan_id","freemius_product_id","trial_period_days","trial_requires_payment_method","upc","is_taxable","created_at","updated_at"],description:"Product catalog records.",primaryKey:["id"]},profiles:{columns:["id","updated_at","full_name","avatar_url","website","phone","role"],description:"Read-only user profiles. Never mutate through Cortex AI.",primaryKey:["id"],readOnly:!0},shipping_zone_locations:{columns:["id","zone_id","country_code","state_code","postal_code","created_at"],description:"Shipping zone location match rules.",primaryKey:["id"]},shipping_zone_methods:{columns:["id","zone_id","method_type","cost_amount","cost_currency","min_order_amount","name","name_translations","currency_pricing_mode","cost_amounts","min_order_amounts","created_at","updated_at"],description:"Shipping methods/rates.",primaryKey:["id"]},shipping_zones:{columns:["id","name","priority_order","created_at","updated_at"],description:"Shipping zones.",primaryKey:["id"]},site_settings:{columns:["key","value"],description:"Global site settings. Cortex AI API-key setting row is protected.",primaryKey:["key"]},tax_rates:{columns:["id","country_code","state_code","tax_name","tax_rate","created_at","updated_at"],description:"Manual tax rates.",primaryKey:["id"]},translations:{columns:["key","translations","created_at","updated_at"],description:"Shared translation strings.",primaryKey:["key"]},user_addresses:{columns:["id","user_id","address_type","is_default","recipient_name","company_name","line1","line2","city","state","postal_code","country_code","created_at","updated_at"],description:"Read-only user addresses. Never mutate through Cortex AI.",primaryKey:["id"],readOnly:!0},variant_attribute_mapping:{columns:["variant_id","attribute_term_id"],description:"Variant to attribute-term join rows.",primaryKey:["variant_id","attribute_term_id"]}},Y=n.z.enum(["eq","neq","gt","gte","lt","lte","ilike","in","is"]),N=n.z.strictObject({column:n.z.string().trim().min(1).max(120),operator:Y.default("eq"),value:n.z.unknown()}),H=n.z.strictObject({ascending:n.z.boolean().default(!0),column:n.z.string().trim().min(1).max(120)}),j=n.z.strictObject({includeReadOnly:n.z.boolean().default(!0),table:n.z.string().trim().min(1).max(120).optional()}),T=n.z.strictObject({columns:n.z.array(n.z.string().trim().min(1).max(120)).min(1).max(40).optional(),filters:n.z.array(N).max(12).default([]),limit:n.z.number().int().min(1).max(G).default(W),offset:n.z.number().int().min(0).max(1e4).default(0),orderBy:H.optional(),table:n.z.string().trim().min(1).max(120)}),S=n.z.strictObject({filters:n.z.array(N).max(12).optional(),operation:n.z.enum(["delete","insert","update","upsert"]),rows:n.z.array(n.z.record(n.z.string(),n.z.unknown())).min(1).max(z).optional(),summary:n.z.string().trim().min(1).max(500).optional(),table:n.z.string().trim().min(1).max(120),values:n.z.record(n.z.string(),n.z.unknown()).optional()}),D=n.z.strictObject({actions:n.z.array(S).min(1).max(8),summary:n.z.string().trim().min(1).max(500).optional()});function E(e){if(!e?.supabase)throw new Error("Cortex AI database tools require a Supabase client.");return e.supabase}function f(e){return e?typeof e=="object"&&"message"in e?String(e.message||"Unknown database error."):String(e):"Unknown database error."}function K(e){return e===null||typeof e!="object"?JSON.stringify(e):Array.isArray(e)?`[${e.map(t=>K(t)).join(",")}]`:`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${K(e[t])}`).join(",")}}`}function L(e){let t=2166136261;const r=K(e);for(let a=0;a<r.length;a++)t^=r.charCodeAt(a),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}function I(e){return e.replace(/\s+/g," ").trim().toUpperCase()}function Z(e,t,r){return`${I(`CONFIRM ${e} ${t}`)} #${L(r)}`}function ee(e){return{confirmationPhrase:Z(e.action,e.subject,e.payload),mutationExecuted:!1,preview:e.preview,requiresConfirmation:!0,success:!0}}function q(e){if(e.context?.skipConfirmation)return null;const t=ee(e),r=I(e.context?.latestUserMessage||""),a=I(t.confirmationPhrase);return r&&!r.includes(a)?{...t,message:"The database target changed or the confirmation did not match. Please review and confirm again."}:r.includes(a)?null:t}function te(e){return Object.prototype.hasOwnProperty.call($,e)}function M(e){const t=e.trim();if(t.includes(".")||t.toLowerCase().startsWith("auth"))throw new Error("Cortex AI cannot access auth schema tables.");if(!te(t))throw new Error(`Table "${t}" is not available to Cortex AI database tools.`);return t}function _(e){return $[e]}function w(e){return/(?:password|token|secret|api[_-]?key|private[_-]?key|credential)/i.test(e)}function b(e,t){if(!_(e).columns.includes(t))throw new Error(`Column "${t}" is not available on table "${e}".`);if(w(t))throw new Error(`Column "${t}" is protected and cannot be used through Cortex AI.`)}function O(e,t="payload"){if(Array.isArray(e)){e.forEach((r,a)=>O(r,`${t}[${a}]`));return}if(!(!e||typeof e!="object"))for(const[r,a]of Object.entries(e)){if(w(r))throw new Error(`Protected field "${t}.${r}" cannot be written through Cortex AI.`);O(a,`${t}.${r}`)}}function h(e){if(Array.isArray(e))return e.map(r=>h(r));if(!e||typeof e!="object")return e;const t={};for(const[r,a]of Object.entries(e))t[r]=w(r)?R:h(a);return t}function re(e){return e.map(t=>t&&typeof t=="object"&&!Array.isArray(t)&&t.key===g?{key:g,value:R}:h(t))}function ae(e,t){if(e!=="site_settings")return;if(JSON.stringify(t).toLowerCase().includes(g))throw new Error("The Cortex AI OpenRouter API key site setting is protected.")}function ie(e,t){switch(t.operator){case"eq":return e.eq(t.column,t.value);case"neq":return e.neq(t.column,t.value);case"gt":return e.gt(t.column,t.value);case"gte":return e.gte(t.column,t.value);case"lt":return e.lt(t.column,t.value);case"lte":return e.lte(t.column,t.value);case"ilike":if(typeof t.value!="string")throw new Error(`Filter "${t.column}" with ilike requires a string value.`);return e.ilike(t.column,t.value);case"in":if(!Array.isArray(t.value))throw new Error(`Filter "${t.column}" with in requires an array value.`);return e.in(t.column,t.value);case"is":return e.is(t.column,t.value)}}function x(e,t,r){let a=t;for(const o of r)b(e,o.column),a=ie(a,o);return e==="site_settings"&&(a=a.neq("key",g)),a}function oe(e,t){const r=_(e),a=t?.length?t:r.columns.filter(o=>!w(o));return a.forEach(o=>b(e,o)),a.join(",")}function F(e,t){return t.map(r=>`${r}=${String(e[r]??"")}`).join("|")}async function U(e,t,r){const a=_(t);let o=e.from(t).select(a.primaryKey.join(",")).limit(k+1);o=x(t,o,r);const{data:i,error:s}=await o;if(s)throw new Error(`Failed to preview database mutation: ${f(s)}`);const d=Array.isArray(i)?i:[];if(d.length>k)throw new Error(`Refusing to mutate more than ${k} rows.`);return d}function B(e){const t=M(e.table),r=_(t),a=e.operation;if(r.readOnly)throw new Error(`Table "${t}" is read-only for Cortex AI.`);if(ae(t,e),(a==="update"||a==="delete")&&(!e.filters||e.filters.length===0))throw new Error(`${a} operations require at least one filter.`);if((a==="insert"||a==="upsert")&&(!e.rows||e.rows.length===0))throw new Error(`${a} operations require rows.`);if(a==="update"&&(!e.values||Object.keys(e.values).length===0))throw new Error("update operations require values.");if(e.rows&&e.rows.length>z)throw new Error(`Refusing to mutate more than ${z} input rows.`);const o=e.rows??(e.values?[e.values]:[]);for(const i of o){O(i);for(const s of Object.keys(i))b(t,s)}for(const i of e.filters??[])b(t,i.column);return t}function X(e){const{input:t,table:r,targetRows:a}=e,o=_(r),i=a.map(m=>F(m,o.primaryKey)).sort(),s=t.rows?.length??0,d=t.operation==="insert"||t.operation==="upsert"?s:a.length,l=t.summary||`${t.operation} ${d} ${d===1?"row":"rows"} in ${r}.`;return{affectedCount:d,operation:t.operation,sampleTargetIds:i.slice(0,10),summary:l,table:r,targetIds:i}}async function A(e){const t=e.context?.actorUserId;if(!t)return{auditError:"Missing actor user id.",auditLogged:!1};try{const{error:r}=await E(e.context).from("cortex_ai_db_mutation_audit").insert({action_name:e.toolName,actor_user_id:t,error_message:e.errorMessage??null,operation_summary:e.summary,payload:h(e.input),payload_hash:L(e.input),preview:h(e.preview),status:e.status,target_tables:e.targetTables,tool_name:e.toolName});return r?{auditError:f(r),auditLogged:!1}:{auditLogged:!0}}catch(r){return{auditError:f(r),auditLogged:!1}}}async function ne(e,t,r){const o=_(t).primaryKey.join(",");let i;e.operation==="insert"?i=r.from(t).insert(e.rows).select(o):e.operation==="upsert"?i=r.from(t).upsert(e.rows).select(o):e.operation==="update"?(i=r.from(t).update(e.values),i=x(t,i,e.filters??[]),i=i.select(o)):(i=r.from(t).delete(),i=x(t,i,e.filters??[]),i=i.select(o));const{data:s,error:d}=await i;if(d)throw new Error(f(d));return Array.isArray(s)?s:[]}async function V(e){const t=j.parse(e),a=(t.table?[M(t.table)]:Object.keys($)).filter(o=>t.includeReadOnly||!_(o).readOnly).map(o=>{const i=_(o);return{columns:i.columns.filter(s=>!w(s)),description:i.description,primaryKey:i.primaryKey,readOnly:!!i.readOnly,table:o}});return{safetyNotes:["Use read_database_records for reads and execute_database_mutation/action_plan for writes.","No auth schema access, no arbitrary SQL, no password/secret/API-key fields.","profiles, user_addresses, and cortex_ai_db_mutation_audit are read-only.",`site_settings.${g} is protected.`],success:!0,tables:a}}async function J(e,t){const r=T.parse(e),a=M(r.table),o=oe(a,r.columns);let i=E(t).from(a).select(o).range(r.offset,r.offset+r.limit-1);i=x(a,i,r.filters),r.orderBy&&(b(a,r.orderBy.column),i=i.order(r.orderBy.column,{ascending:r.orderBy.ascending}));const{data:s,error:d}=await i;if(d)throw new Error(`Failed to read database records: ${f(d)}`);const l=Array.isArray(s)?s:[];return{columns:o.split(","),limit:r.limit,offset:r.offset,rows:re(l),success:!0,table:a}}async function P(e,t){const r=S.parse(e),a=B(r),o=E(t),i=r.operation==="update"||r.operation==="delete"?await U(o,a,r.filters??[]):[],s=X({input:r,table:a,targetRows:i}),d={input:r,targetIds:s.targetIds},l=q({action:`DATABASE ${r.operation}`,context:t,payload:d,preview:s,subject:a});if(l)return l;try{const m=await ne(r,a,o),p=t?.skipAudit?{auditLogged:!1}:await A({context:t,input:d,preview:s,status:"success",summary:String(s.summary),targetTables:[a],toolName:"execute_database_mutation"});return{affectedCount:m.length||s.affectedCount,auditLogged:p.auditLogged,...p.auditError?{auditError:p.auditError}:{},mutationExecuted:!0,operation:r.operation,sampleTargetIds:m.map(c=>F(c,_(a).primaryKey)).slice(0,10),success:!0,summary:s.summary,table:a}}catch(m){const p=f(m),c=t?.skipAudit?{auditLogged:!1}:await A({context:t,errorMessage:p,input:d,preview:s,status:"failure",summary:String(s.summary),targetTables:[a],toolName:"execute_database_mutation"});return{auditLogged:c.auditLogged,...c.auditError?{auditError:c.auditError}:{},message:`Database mutation failed: ${p}`,mutationExecuted:!1,operation:r.operation,success:!1,table:a}}}async function Q(e,t){const r=D.parse(e),a=[];for(const c of r.actions){const y=B(c),u=c.operation==="update"||c.operation==="delete"?await U(E(t),y,c.filters??[]):[];a.push({input:c,preview:X({input:c,table:y,targetRows:u}),table:y})}const o=a.map(({preview:c})=>String(c.summary)),i={actionCount:a.length,actionSummaries:o,summary:r.summary||`Run ${a.length} confirmed database actions.`,tables:Array.from(new Set(a.map(c=>c.table)))},s=a.map(({input:c,preview:y,table:u})=>({input:c,table:u,targetIds:y.targetIds})),d=q({action:"DATABASE ACTION PLAN",context:t,payload:s,preview:i,subject:`${a.length} actions`});if(d)return d;const l=[];let m=!1;for(const[c,y]of a.entries()){const u=await P(y.input,{...t,skipAudit:!0,skipConfirmation:!0});if(l.push(u),u&&typeof u=="object"&&u.mutationExecuted===!0&&(m=!0),!u||typeof u!="object"||u.success===!1){const C=await A({context:t,errorMessage:u&&typeof u=="object"&&typeof u.message=="string"?u.message:`Database action ${c+1} failed.`,input:s,preview:i,status:"failure",summary:String(i.summary),targetTables:i.tables,toolName:"execute_database_action_plan"});return{actionCount:a.length,auditLogged:C.auditLogged,...C.auditError?{auditError:C.auditError}:{},failedActionIndex:c,message:u&&typeof u=="object"&&typeof u.message=="string"?u.message:`Database action ${c+1} failed.`,mutationExecuted:m,results:l,success:!1}}}const p=await A({context:t,input:s,preview:i,status:"success",summary:String(i.summary),targetTables:i.tables,toolName:"execute_database_action_plan"});return{actionCount:a.length,auditLogged:p.auditLogged,...p.auditError?{auditError:p.auditError}:{},mutationExecuted:m,results:l,success:!0,summary:r.summary??null}}function se(e){return{describe_database_schema:v.tool({description:"Describe the public database tables Cortex AI can read or mutate, including read-only tables, primary keys, and writable columns. Use before broad database tasks when unsure about schema.",execute:t=>V(t),inputSchema:j,strict:!0}),execute_database_action_plan:v.tool({description:"Execute up to 8 typed database mutations as one confirmed plan. Mutating: first returns one combined confirmation preview and Confirm button; after confirmation, runs each action in order and stops on the first failure.",execute:t=>Q(t,e),inputSchema:D,strict:!0}),execute_database_mutation:v.tool({description:"Run one typed insert, update, upsert, or delete against an allowed public database table. Mutating: always previews affected rows and requires exact user confirmation before execution. Does not support arbitrary SQL.",execute:t=>P(t,e),inputSchema:S,strict:!0}),read_database_records:v.tool({description:"Read records from an allowed public database table with validated columns, filters, ordering, limit, and offset. Read-only and redacts protected secret-like values.",execute:t=>J(t,e),inputSchema:T,strict:!0})}}exports.createCortexDatabaseAgentTools=se;exports.describeDatabaseSchemaInputSchema=j;exports.executeDatabaseActionPlan=Q;exports.executeDatabaseActionPlanInputSchema=D;exports.executeDatabaseMutation=P;exports.executeDatabaseMutationInputSchema=S;exports.executeDescribeDatabaseSchema=V;exports.executeReadDatabaseRecords=J;exports.readDatabaseRecordsInputSchema=T;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("ai");require("./zod-config.cjs.js");const n=require("zod"),W=100,Y=20,k=100,C=20,R="[REDACTED]",N="cortex_ai_openrouter_api_key",T=new Set([N,"bot_protection_secret","cortex_ai_pexels_api_key","cortex_ai_unsplash_access_key","email_secret","payment_secret"]),$={blocks:{columns:["id","page_id","post_id","language_id","block_type","content","order","created_at","updated_at"],description:"CMS page/post content blocks.",primaryKey:["id"]},coupon_freemius_mappings:{columns:["id","coupon_id","product_id","freemius_product_id","freemius_coupon_id","freemius_coupon_code","sync_status","sync_error","remote_payload","last_synced_at","created_at","updated_at"],description:"Freemius coupon sync mappings.",primaryKey:["id"]},coupon_products:{columns:["coupon_id","product_id","created_at"],description:"Coupon product allow-list rows.",primaryKey:["coupon_id","product_id"]},coupon_redemptions:{columns:["id","coupon_id","order_id","coupon_code","provider","discount_total","user_id","customer_email","metadata","redeemed_at"],description:"Coupon redemption records.",primaryKey:["id"]},coupons:{columns:["id","code","name","internal_note","provider_scope","discount_type","discount_amount","is_active","starts_at","ends_at","redemption_limit","redemptions_count","freemius_sync_status","freemius_sync_error","created_at","updated_at"],description:"Commerce coupons.",primaryKey:["id"]},cortex_ai_db_mutation_audit:{columns:["id","actor_user_id","tool_name","action_name","target_tables","operation_summary","payload_hash","payload","preview","status","error_message","created_at"],description:"Read-only Cortex AI database mutation audit trail.",primaryKey:["id"],readOnly:!0},currencies:{columns:["id","code","symbol","exchange_rate","is_default","is_active","rounding_mode","rounding_increment","rounding_charm_amount","auto_update_exchange_rate","exchange_rate_updated_at","exchange_rate_source","auto_sync_product_prices","created_at","updated_at"],description:"Storefront currencies and FX settings.",primaryKey:["id"]},freemius_plans:{columns:["id","product_id","name","title","created_at","updated_at"],description:"Freemius plan metadata.",primaryKey:["id"]},freemius_pricing:{columns:["id","plan_id","api_monthly_price","api_annual_price","api_lifetime_price","override_monthly_price","override_annual_price","override_lifetime_price","license_quota","is_active","created_at","updated_at"],description:"Freemius pricing metadata.",primaryKey:["id"]},inventory_items:{columns:["sku","quantity","created_at","updated_at"],description:"Source-of-truth inventory by SKU.",primaryKey:["sku"]},languages:{columns:["id","code","name","is_default","is_active","created_at","updated_at"],description:"CMS languages/locales.",primaryKey:["id"]},logos:{columns:["id","name","media_id","created_at"],description:"Brand logos.",primaryKey:["id"]},media:{columns:["id","uploader_id","file_name","object_key","file_type","size_bytes","description","width","height","blur_data_url","variants","file_path","folder","created_at","updated_at"],description:"Media metadata for uploaded assets.",primaryKey:["id"]},navigation_items:{columns:["id","language_id","menu_key","label","url","parent_id","order","page_id","translation_group_id","created_at","updated_at"],description:"CMS navigation tree items.",primaryKey:["id"]},order_items:{columns:["id","order_id","product_id","variant_id","quantity","price_at_purchase"],description:"Commerce order line items.",primaryKey:["id"]},orders:{columns:["id","user_id","status","total","stripe_session_id","payment_intent_id","customer_details","provider","freemius_product_id","freemius_plan_id","freemius_license_id","freemius_subscription_id","freemius_trial_id","freemius_user_id","freemius_trial_ends_at","freemius_last_event_type","freemius_last_synced_at","currency","subtotal","shipping_total","tax_total","tax_details","exchange_rate_at_purchase","inventory_deducted_at","invoice_number","paid_at","created_at","coupon_id","coupon_code","discount_total","discount_details"],description:"Commerce orders.",primaryKey:["id"]},package_activations:{columns:["id","license_key","instance_name","package_id","status","meta","last_validated_at","created_at"],description:"NextBlock package activations.",primaryKey:["id"]},page_revisions:{columns:["id","page_id","author_id","version","revision_type","content","created_at"],description:"Page revision history.",primaryKey:["id"],readOnly:!0},pages:{columns:["id","language_id","author_id","title","slug","status","meta_title","meta_description","feature_image_id","version","translation_group_id","created_at","updated_at"],description:"CMS pages.",primaryKey:["id"]},post_revisions:{columns:["id","post_id","author_id","version","revision_type","content","created_at"],description:"Post revision history.",primaryKey:["id"],readOnly:!0},product_revisions:{columns:["id","product_id","author_id","version","revision_type","content","created_at"],description:"Product revision history.",primaryKey:["id"],readOnly:!0},posts:{columns:["id","language_id","author_id","title","slug","label","excerpt","subtitle","status","published_at","meta_title","meta_description","feature_image_id","version","translation_group_id","created_at","updated_at"],description:"CMS posts/articles.",primaryKey:["id"]},product_attribute_terms:{columns:["id","attribute_id","value","slug","sort_order","value_translations","created_at","updated_at"],description:"Product attribute terms.",primaryKey:["id"]},product_attributes:{columns:["id","name","slug","name_translations","created_at","updated_at"],description:"Product attribute definitions.",primaryKey:["id"]},product_media:{columns:["product_id","media_id","sort_order"],description:"Product media join rows.",primaryKey:["product_id","media_id"]},product_variants:{columns:["id","product_id","sku","price_adjustment","price","prices","sale_price","sale_prices","stock_quantity","upc","main_media_id","created_at","updated_at"],description:"Sellable product variants.",primaryKey:["id"]},products:{columns:["id","language_id","translation_group_id","sku","title","slug","product_type","payment_provider","price","prices","sale_price","sale_prices","stock","status","meta_title","meta_description","short_description","description_json","metadata","freemius_plan_id","freemius_product_id","trial_period_days","trial_requires_payment_method","upc","is_taxable","created_at","updated_at"],description:"Product catalog records.",primaryKey:["id"]},profiles:{columns:["id","updated_at","full_name","avatar_url","website","phone","role"],description:"Read-only user profiles. Never mutate through Cortex AI.",primaryKey:["id"],readOnly:!0},shipping_zone_locations:{columns:["id","zone_id","country_code","state_code","postal_code","created_at"],description:"Shipping zone location match rules.",primaryKey:["id"]},shipping_zone_methods:{columns:["id","zone_id","method_type","cost_amount","cost_currency","min_order_amount","name","name_translations","currency_pricing_mode","cost_amounts","min_order_amounts","created_at","updated_at"],description:"Shipping methods/rates.",primaryKey:["id"]},shipping_zones:{columns:["id","name","priority_order","created_at","updated_at"],description:"Shipping zones.",primaryKey:["id"]},site_settings:{columns:["key","value"],description:"Global site settings. Cortex AI API-key setting row is protected.",primaryKey:["key"]},tax_rates:{columns:["id","country_code","state_code","tax_name","tax_rate","created_at","updated_at"],description:"Manual tax rates.",primaryKey:["id"]},translations:{columns:["key","translations","created_at","updated_at"],description:"Shared translation strings.",primaryKey:["key"]},user_addresses:{columns:["id","user_id","address_type","is_default","recipient_name","company_name","line1","line2","city","state","postal_code","country_code","created_at","updated_at"],description:"Read-only user addresses. Never mutate through Cortex AI.",primaryKey:["id"],readOnly:!0},variant_attribute_mapping:{columns:["variant_id","attribute_term_id"],description:"Variant to attribute-term join rows.",primaryKey:["variant_id","attribute_term_id"]}},H=n.z.enum(["eq","neq","gt","gte","lt","lte","ilike","in","is"]),L=n.z.strictObject({column:n.z.string().trim().min(1).max(120),operator:H.default("eq"),value:n.z.unknown()}),Z=n.z.strictObject({ascending:n.z.boolean().default(!0),column:n.z.string().trim().min(1).max(120)}),O=n.z.strictObject({includeReadOnly:n.z.boolean().default(!0),table:n.z.string().trim().min(1).max(120).optional()}),j=n.z.strictObject({columns:n.z.array(n.z.string().trim().min(1).max(120)).min(1).max(40).optional(),filters:n.z.array(L).max(12).default([]),limit:n.z.number().int().min(1).max(W).default(Y),offset:n.z.number().int().min(0).max(1e4).default(0),orderBy:Z.optional(),table:n.z.string().trim().min(1).max(120)}),S=n.z.strictObject({filters:n.z.array(L).max(12).optional(),operation:n.z.enum(["delete","insert","update","upsert"]),rows:n.z.array(n.z.record(n.z.string(),n.z.unknown())).min(1).max(C).optional(),summary:n.z.string().trim().min(1).max(500).optional(),table:n.z.string().trim().min(1).max(120),values:n.z.record(n.z.string(),n.z.unknown()).optional()}),D=n.z.strictObject({actions:n.z.array(S).min(1).max(8),summary:n.z.string().trim().min(1).max(500).optional()});function A(e){if(!e?.supabase)throw new Error("Cortex AI database tools require a Supabase client.");return e.supabase}function f(e){return e?typeof e=="object"&&"message"in e?String(e.message||"Unknown database error."):String(e):"Unknown database error."}function K(e){return e===null||typeof e!="object"?JSON.stringify(e):Array.isArray(e)?`[${e.map(t=>K(t)).join(",")}]`:`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${K(e[t])}`).join(",")}}`}function q(e){let t=2166136261;const r=K(e);for(let a=0;a<r.length;a++)t^=r.charCodeAt(a),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}function z(e){return e.replace(/\s+/g," ").trim().toUpperCase()}function ee(e,t,r){return`${z(`CONFIRM ${e} ${t}`)} #${q(r)}`}function te(e){return{confirmationPhrase:ee(e.action,e.subject,e.payload),mutationExecuted:!1,preview:e.preview,requiresConfirmation:!0,success:!0}}function F(e){if(e.context?.skipConfirmation)return null;const t=te(e),r=z(e.context?.latestUserMessage||""),a=z(t.confirmationPhrase);return r&&!r.includes(a)?{...t,message:"The database target changed or the confirmation did not match. Please review and confirm again."}:r.includes(a)?null:t}function re(e){return Object.prototype.hasOwnProperty.call($,e)}function P(e){const t=e.trim();if(t.includes(".")||t.toLowerCase().startsWith("auth"))throw new Error("Cortex AI cannot access auth schema tables.");if(!re(t))throw new Error(`Table "${t}" is not available to Cortex AI database tools.`);return t}function _(e){return $[e]}function h(e){return/(?:password|token|secret|api[_-]?key|private[_-]?key|credential)/i.test(e)}function g(e,t){if(!_(e).columns.includes(t))throw new Error(`Column "${t}" is not available on table "${e}".`);if(h(t))throw new Error(`Column "${t}" is protected and cannot be used through Cortex AI.`)}function I(e,t="payload"){if(Array.isArray(e)){e.forEach((r,a)=>I(r,`${t}[${a}]`));return}if(!(!e||typeof e!="object"))for(const[r,a]of Object.entries(e)){if(h(r))throw new Error(`Protected field "${t}.${r}" cannot be written through Cortex AI.`);I(a,`${t}.${r}`)}}function b(e){if(Array.isArray(e))return e.map(r=>b(r));if(!e||typeof e!="object")return e;const t={};for(const[r,a]of Object.entries(e))t[r]=h(r)?R:b(a);return t}function ae(e){return e.map(t=>{if(t&&typeof t=="object"&&!Array.isArray(t)){const r=t.key;if(typeof r=="string"&&T.has(r))return{key:r,value:R}}return b(t)})}function ie(e,t){if(e!=="site_settings")return;const r=JSON.stringify(t).toLowerCase();for(const a of T)if(r.includes(a))throw new Error(`The "${a}" site setting is protected.`)}function oe(e,t){switch(t.operator){case"eq":return e.eq(t.column,t.value);case"neq":return e.neq(t.column,t.value);case"gt":return e.gt(t.column,t.value);case"gte":return e.gte(t.column,t.value);case"lt":return e.lt(t.column,t.value);case"lte":return e.lte(t.column,t.value);case"ilike":if(typeof t.value!="string")throw new Error(`Filter "${t.column}" with ilike requires a string value.`);return e.ilike(t.column,t.value);case"in":if(!Array.isArray(t.value))throw new Error(`Filter "${t.column}" with in requires an array value.`);return e.in(t.column,t.value);case"is":return e.is(t.column,t.value)}}function v(e,t,r){let a=t;for(const o of r)g(e,o.column),a=oe(a,o);return e==="site_settings"&&(a=a.neq("key",N)),a}function ne(e,t){const r=_(e),a=t?.length?t:r.columns.filter(o=>!h(o));return a.forEach(o=>g(e,o)),a.join(",")}function U(e,t){return t.map(r=>`${r}=${String(e[r]??"")}`).join("|")}async function B(e,t,r){const a=_(t);let o=e.from(t).select(a.primaryKey.join(",")).limit(k+1);o=v(t,o,r);const{data:i,error:s}=await o;if(s)throw new Error(`Failed to preview database mutation: ${f(s)}`);const d=Array.isArray(i)?i:[];if(d.length>k)throw new Error(`Refusing to mutate more than ${k} rows.`);return d}function X(e){const t=P(e.table),r=_(t),a=e.operation;if(r.readOnly)throw new Error(`Table "${t}" is read-only for Cortex AI.`);if(ie(t,e),(a==="update"||a==="delete")&&(!e.filters||e.filters.length===0))throw new Error(`${a} operations require at least one filter.`);if((a==="insert"||a==="upsert")&&(!e.rows||e.rows.length===0))throw new Error(`${a} operations require rows.`);if(a==="update"&&(!e.values||Object.keys(e.values).length===0))throw new Error("update operations require values.");if(e.rows&&e.rows.length>C)throw new Error(`Refusing to mutate more than ${C} input rows.`);const o=e.rows??(e.values?[e.values]:[]);for(const i of o){I(i);for(const s of Object.keys(i))g(t,s)}for(const i of e.filters??[])g(t,i.column);return t}function V(e){const{input:t,table:r,targetRows:a}=e,o=_(r),i=a.map(p=>U(p,o.primaryKey)).sort(),s=t.rows?.length??0,d=t.operation==="insert"||t.operation==="upsert"?s:a.length,l=t.summary||`${t.operation} ${d} ${d===1?"row":"rows"} in ${r}.`;return{affectedCount:d,operation:t.operation,sampleTargetIds:i.slice(0,10),summary:l,table:r,targetIds:i}}async function x(e){const t=e.context?.actorUserId;if(!t)return{auditError:"Missing actor user id.",auditLogged:!1};try{const{error:r}=await A(e.context).from("cortex_ai_db_mutation_audit").insert({action_name:e.toolName,actor_user_id:t,error_message:e.errorMessage??null,operation_summary:e.summary,payload:b(e.input),payload_hash:q(e.input),preview:b(e.preview),status:e.status,target_tables:e.targetTables,tool_name:e.toolName});return r?{auditError:f(r),auditLogged:!1}:{auditLogged:!0}}catch(r){return{auditError:f(r),auditLogged:!1}}}async function se(e,t,r){const o=_(t).primaryKey.join(",");let i;e.operation==="insert"?i=r.from(t).insert(e.rows).select(o):e.operation==="upsert"?i=r.from(t).upsert(e.rows).select(o):e.operation==="update"?(i=r.from(t).update(e.values),i=v(t,i,e.filters??[]),i=i.select(o)):(i=r.from(t).delete(),i=v(t,i,e.filters??[]),i=i.select(o));const{data:s,error:d}=await i;if(d)throw new Error(f(d));return Array.isArray(s)?s:[]}async function G(e){const t=O.parse(e),a=(t.table?[P(t.table)]:Object.keys($)).filter(o=>t.includeReadOnly||!_(o).readOnly).map(o=>{const i=_(o);return{columns:i.columns.filter(s=>!h(s)),description:i.description,primaryKey:i.primaryKey,readOnly:!!i.readOnly,table:o}});return{safetyNotes:["Use read_database_records for reads and execute_database_mutation/action_plan for writes.","No auth schema access, no arbitrary SQL, no password/secret/API-key fields.","profiles, user_addresses, and cortex_ai_db_mutation_audit are read-only.",`Protected site_settings keys (never readable or writable): ${[...T].sort().join(", ")}.`],success:!0,tables:a}}async function J(e,t){const r=j.parse(e),a=P(r.table),o=ne(a,r.columns);let i=A(t).from(a).select(o).range(r.offset,r.offset+r.limit-1);i=v(a,i,r.filters),r.orderBy&&(g(a,r.orderBy.column),i=i.order(r.orderBy.column,{ascending:r.orderBy.ascending}));const{data:s,error:d}=await i;if(d)throw new Error(`Failed to read database records: ${f(d)}`);const l=Array.isArray(s)?s:[];return{columns:o.split(","),limit:r.limit,offset:r.offset,rows:ae(l),success:!0,table:a}}async function M(e,t){const r=S.parse(e),a=X(r),o=A(t),i=r.operation==="update"||r.operation==="delete"?await B(o,a,r.filters??[]):[],s=V({input:r,table:a,targetRows:i}),d={input:r,targetIds:s.targetIds},l=F({action:`DATABASE ${r.operation}`,context:t,payload:d,preview:s,subject:a});if(l)return l;try{const p=await se(r,a,o),m=t?.skipAudit?{auditLogged:!1}:await x({context:t,input:d,preview:s,status:"success",summary:String(s.summary),targetTables:[a],toolName:"execute_database_mutation"});return{affectedCount:p.length||s.affectedCount,auditLogged:m.auditLogged,...m.auditError?{auditError:m.auditError}:{},mutationExecuted:!0,operation:r.operation,sampleTargetIds:p.map(c=>U(c,_(a).primaryKey)).slice(0,10),success:!0,summary:s.summary,table:a}}catch(p){const m=f(p),c=t?.skipAudit?{auditLogged:!1}:await x({context:t,errorMessage:m,input:d,preview:s,status:"failure",summary:String(s.summary),targetTables:[a],toolName:"execute_database_mutation"});return{auditLogged:c.auditLogged,...c.auditError?{auditError:c.auditError}:{},message:`Database mutation failed: ${m}`,mutationExecuted:!1,operation:r.operation,success:!1,table:a}}}async function Q(e,t){const r=D.parse(e),a=[];for(const c of r.actions){const y=X(c),u=c.operation==="update"||c.operation==="delete"?await B(A(t),y,c.filters??[]):[];a.push({input:c,preview:V({input:c,table:y,targetRows:u}),table:y})}const o=a.map(({preview:c})=>String(c.summary)),i={actionCount:a.length,actionSummaries:o,summary:r.summary||`Run ${a.length} confirmed database actions.`,tables:Array.from(new Set(a.map(c=>c.table)))},s=a.map(({input:c,preview:y,table:u})=>({input:c,table:u,targetIds:y.targetIds})),d=F({action:"DATABASE ACTION PLAN",context:t,payload:s,preview:i,subject:`${a.length} actions`});if(d)return d;const l=[];let p=!1;for(const[c,y]of a.entries()){const u=await M(y.input,{...t,skipAudit:!0,skipConfirmation:!0});if(l.push(u),u&&typeof u=="object"&&u.mutationExecuted===!0&&(p=!0),!u||typeof u!="object"||u.success===!1){const E=await x({context:t,errorMessage:u&&typeof u=="object"&&typeof u.message=="string"?u.message:`Database action ${c+1} failed.`,input:s,preview:i,status:"failure",summary:String(i.summary),targetTables:i.tables,toolName:"execute_database_action_plan"});return{actionCount:a.length,auditLogged:E.auditLogged,...E.auditError?{auditError:E.auditError}:{},failedActionIndex:c,message:u&&typeof u=="object"&&typeof u.message=="string"?u.message:`Database action ${c+1} failed.`,mutationExecuted:p,results:l,success:!1}}}const m=await x({context:t,input:s,preview:i,status:"success",summary:String(i.summary),targetTables:i.tables,toolName:"execute_database_action_plan"});return{actionCount:a.length,auditLogged:m.auditLogged,...m.auditError?{auditError:m.auditError}:{},mutationExecuted:p,results:l,success:!0,summary:r.summary??null}}function ce(e){return{describe_database_schema:w.tool({description:"Describe the public database tables Cortex AI can read or mutate, including read-only tables, primary keys, and writable columns. Use before broad database tasks when unsure about schema.",execute:t=>G(t),inputSchema:O,strict:!0}),execute_database_action_plan:w.tool({description:"Execute up to 8 typed database mutations as one confirmed plan. Mutating: first returns one combined confirmation preview and Confirm button; after confirmation, runs each action in order and stops on the first failure.",execute:t=>Q(t,e),inputSchema:D,strict:!0}),execute_database_mutation:w.tool({description:"Run one typed insert, update, upsert, or delete against an allowed public database table. Mutating: always previews affected rows and requires exact user confirmation before execution. Does not support arbitrary SQL.",execute:t=>M(t,e),inputSchema:S,strict:!0}),read_database_records:w.tool({description:"Read records from an allowed public database table with validated columns, filters, ordering, limit, and offset. Read-only and redacts protected secret-like values.",execute:t=>J(t,e),inputSchema:j,strict:!0})}}exports.createCortexDatabaseAgentTools=ce;exports.describeDatabaseSchemaInputSchema=O;exports.executeDatabaseActionPlan=Q;exports.executeDatabaseActionPlanInputSchema=D;exports.executeDatabaseMutation=M;exports.executeDatabaseMutationInputSchema=S;exports.executeDescribeDatabaseSchema=G;exports.executeReadDatabaseRecords=J;exports.readDatabaseRecordsInputSchema=j;
|