@yoryoboy/bi-mcp 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +126 -9
- package/dist/.tsbuildinfo +1 -1
- package/dist/index.js +30 -0
- package/dist/index.js.map +2 -2
- package/dist/mcp-use.json +2 -2
- package/dist/scripts/_helpers.js +44 -0
- package/dist/scripts/_helpers.js.map +7 -0
- package/dist/scripts/admin-profile-delete.js +72 -0
- package/dist/scripts/admin-profile-delete.js.map +7 -0
- package/dist/scripts/admin-profile-list.js +24 -0
- package/dist/scripts/admin-profile-list.js.map +7 -0
- package/dist/scripts/admin-profile-upsert.js +25 -0
- package/dist/scripts/admin-profile-upsert.js.map +7 -0
- package/dist/scripts/admin-vtex-list.js +28 -0
- package/dist/scripts/admin-vtex-list.js.map +7 -0
- package/dist/scripts/admin-vtex-upsert.js +73 -0
- package/dist/scripts/admin-vtex-upsert.js.map +7 -0
- package/dist/scripts/admin-vtex-validate.js +55 -0
- package/dist/scripts/admin-vtex-validate.js.map +7 -0
- package/dist/scripts/run-migrations.js +50 -0
- package/dist/scripts/run-migrations.js.map +7 -0
- package/dist/scripts/test-db-connection.js +19 -0
- package/dist/scripts/test-db-connection.js.map +7 -0
- package/dist/src/config/profile-store.js +86 -0
- package/dist/src/config/profile-store.js.map +7 -0
- package/dist/src/config/vtex-crypto.js +43 -0
- package/dist/src/config/vtex-crypto.js.map +7 -0
- package/dist/src/config/vtex-profile-store.js +132 -0
- package/dist/src/config/vtex-profile-store.js.map +7 -0
- package/dist/src/config/vtex.js +27 -21
- package/dist/src/config/vtex.js.map +2 -2
- package/dist/src/db/client.js +58 -0
- package/dist/src/db/client.js.map +7 -0
- package/dist/src/services/vtex/vtex-api.js +24 -8
- package/dist/src/services/vtex/vtex-api.js.map +2 -2
- package/dist/src/services/vtex/vtex-catalog.js +5 -3
- package/dist/src/services/vtex/vtex-catalog.js.map +2 -2
- package/dist/src/services/vtex/vtex-logistics.js +18 -9
- package/dist/src/services/vtex/vtex-logistics.js.map +2 -2
- package/dist/src/services/vtex/vtex-orders.js +13 -7
- package/dist/src/services/vtex/vtex-orders.js.map +2 -2
- package/dist/src/services/vtex/vtex-pricing.js +5 -3
- package/dist/src/services/vtex/vtex-pricing.js.map +2 -2
- package/dist/src/tools/config/check-database-connection.js +59 -0
- package/dist/src/tools/config/check-database-connection.js.map +7 -0
- package/dist/src/tools/config/index.js +3 -0
- package/dist/src/tools/config/index.js.map +7 -0
- package/dist/src/tools/config/list-profiles.js +26 -0
- package/dist/src/tools/config/list-profiles.js.map +7 -0
- package/dist/src/tools/index.js +1 -0
- package/dist/src/tools/index.js.map +2 -2
- package/dist/src/tools/vtex/computed-price.js +12 -1
- package/dist/src/tools/vtex/computed-price.js.map +2 -2
- package/dist/src/tools/vtex/index.js +1 -0
- package/dist/src/tools/vtex/index.js.map +2 -2
- package/dist/src/tools/vtex/inventory-check.js +15 -2
- package/dist/src/tools/vtex/inventory-check.js.map +2 -2
- package/dist/src/tools/vtex/order-details.js +16 -2
- package/dist/src/tools/vtex/order-details.js.map +2 -2
- package/dist/src/tools/vtex/orders-summary.js +11 -1
- package/dist/src/tools/vtex/orders-summary.js.map +2 -2
- package/dist/src/tools/vtex/product-offers.js +15 -2
- package/dist/src/tools/vtex/product-offers.js.map +2 -2
- package/dist/src/tools/vtex/profile-resolution.js +57 -0
- package/dist/src/tools/vtex/profile-resolution.js.map +7 -0
- package/dist/src/tools/vtex/sku-offers.js +16 -2
- package/dist/src/tools/vtex/sku-offers.js.map +2 -2
- package/dist/src/tools/vtex/sku-price.js +12 -2
- package/dist/src/tools/vtex/sku-price.js.map +2 -2
- package/dist/src/tools/vtex/update-inventory.js +12 -1
- package/dist/src/tools/vtex/update-inventory.js.map +2 -2
- package/dist/src/tools/vtex/update-lead-time.js +12 -1
- package/dist/src/tools/vtex/update-lead-time.js.map +2 -2
- package/dist/src/tools/vtex/warehouse-inventory.js +12 -1
- package/dist/src/tools/vtex/warehouse-inventory.js.map +2 -2
- package/package.json +12 -2
package/dist/index.js
CHANGED
|
@@ -7,6 +7,10 @@ import {
|
|
|
7
7
|
} from "./src/prompts/reporte-ventas.js";
|
|
8
8
|
import { getBenchmarksHandler, getBenchmarksSchema } from "./src/config/benchmarks.js";
|
|
9
9
|
import {
|
|
10
|
+
checkDatabaseConnectionHandler,
|
|
11
|
+
checkDatabaseConnectionSchema,
|
|
12
|
+
listProfilesHandler,
|
|
13
|
+
listProfilesSchema,
|
|
10
14
|
googleAdsAccountRisksHandler,
|
|
11
15
|
googleAdsAccountRisksSchema,
|
|
12
16
|
googleAdsAccountOverviewHandler,
|
|
@@ -365,6 +369,32 @@ server.tool(
|
|
|
365
369
|
},
|
|
366
370
|
skuOffersHandler
|
|
367
371
|
);
|
|
372
|
+
server.tool(
|
|
373
|
+
{
|
|
374
|
+
name: "config_check_database_connection",
|
|
375
|
+
description: "Check whether the MCP can reach its configured database and whether critical tables are present.",
|
|
376
|
+
schema: checkDatabaseConnectionSchema,
|
|
377
|
+
annotations: {
|
|
378
|
+
readOnlyHint: true,
|
|
379
|
+
destructiveHint: false,
|
|
380
|
+
openWorldHint: false
|
|
381
|
+
}
|
|
382
|
+
},
|
|
383
|
+
checkDatabaseConnectionHandler
|
|
384
|
+
);
|
|
385
|
+
server.tool(
|
|
386
|
+
{
|
|
387
|
+
name: "config_list_profiles",
|
|
388
|
+
description: "List client profiles currently available in the MCP database.",
|
|
389
|
+
schema: listProfilesSchema,
|
|
390
|
+
annotations: {
|
|
391
|
+
readOnlyHint: true,
|
|
392
|
+
destructiveHint: false,
|
|
393
|
+
openWorldHint: false
|
|
394
|
+
}
|
|
395
|
+
},
|
|
396
|
+
listProfilesHandler
|
|
397
|
+
);
|
|
368
398
|
server.tool(
|
|
369
399
|
{
|
|
370
400
|
name: "config_get_benchmarks",
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../index.ts"],
|
|
4
|
-
"sourcesContent": ["import { createRequire } from \"node:module\";\nimport { pathToFileURL } from \"node:url\";\nimport { MCPServer } from \"mcp-use/server\";\n\nimport {\n reporteVentasPromptHandler,\n reporteVentasPromptSchema,\n} from \"./src/prompts/reporte-ventas.js\";\nimport { getBenchmarksHandler, getBenchmarksSchema } from \"./src/config/benchmarks.js\";\nimport {\n googleAdsAccountRisksHandler,\n googleAdsAccountRisksSchema,\n googleAdsAccountOverviewHandler,\n googleAdsAccountOverviewSchema,\n googleAdsBreakEvenAnalysisHandler,\n googleAdsBreakEvenAnalysisSchema,\n googleAdsCampaignPerformanceHandler,\n googleAdsCampaignPerformanceSchema,\n googleAdsChannelMixHandler,\n googleAdsChannelMixSchema,\n googleAdsCompareAccountsHandler,\n googleAdsCompareAccountsSchema,\n googleAdsCustomerClientsHandler,\n googleAdsCustomerClientsSchema,\n googleAdsCustomerInfoHandler,\n googleAdsCustomerInfoSchema,\n googleAdsSearchTermsSummaryHandler,\n googleAdsSearchTermsSummarySchema,\n googleAdsScalingHealthHandler,\n googleAdsScalingHealthSchema,\n googleAdsTimeSeriesHandler,\n googleAdsTimeSeriesSchema,\n listAccessibleSitesHandler,\n listAccessibleSitesSchema,\n attributionGapsHandler,\n attributionGapsSchema,\n channelMixHandler,\n channelMixSchema,\n computedPriceHandler,\n computedPriceSchema,\n ecommerceTrackingHealthHandler,\n ecommerceTrackingHealthSchema,\n engagementOverviewHandler,\n engagementOverviewSchema,\n inventoryCheckHandler,\n inventoryCheckSchema,\n listAccessiblePropertiesHandler,\n listAccessiblePropertiesSchema,\n metaAccountOverviewHandler,\n metaAccountOverviewSchema,\n metaAdAccountInfoHandler,\n metaAdAccountInfoSchema,\n metaAdsPerformanceHandler,\n metaAdsPerformanceSchema,\n metaCampaignPerformanceHandler,\n metaCampaignPerformanceSchema,\n metaListAccessibleAdAccountsHandler,\n metaListAccessibleAdAccountsSchema,\n metaListAccessibleBusinessesHandler,\n metaListAccessibleBusinessesSchema,\n metaPlacementMixHandler,\n metaPlacementMixSchema,\n metaTimeSeriesHandler,\n metaTimeSeriesSchema,\n searchConsoleCountryBreakdownHandler,\n searchConsoleCountryBreakdownSchema,\n searchConsoleDeviceBreakdownHandler,\n searchConsoleDeviceBreakdownSchema,\n searchConsoleHighImpressionLowClickQueriesHandler,\n searchConsoleHighImpressionLowClickQueriesSchema,\n searchConsoleLowCtrOpportunitiesHandler,\n searchConsoleLowCtrOpportunitiesSchema,\n searchConsolePagePerformanceHandler,\n searchConsolePagePerformanceSchema,\n searchConsoleProductDemandLowCaptureQueriesHandler,\n searchConsoleProductDemandLowCaptureQueriesSchema,\n searchConsoleQueryPageMatrixHandler,\n searchConsoleQueryPageMatrixSchema,\n searchConsoleQueryPerformanceHandler,\n searchConsoleQueryPerformanceSchema,\n searchConsoleQuickWinOpportunitiesHandler,\n searchConsoleQuickWinOpportunitiesSchema,\n searchConsoleRisingNonBrandQueriesHandler,\n searchConsoleRisingNonBrandQueriesSchema,\n searchConsoleSearchPerformanceHandler,\n searchConsoleSearchPerformanceSchema,\n searchConsoleSiteContextHandler,\n searchConsoleSiteContextSchema,\n searchConsoleVisibilityDeclinesHandler,\n searchConsoleVisibilityDeclinesSchema,\n orderDetailsHandler,\n orderDetailsSchema,\n ordersSummaryHandler,\n ordersSummarySchema,\n propertyInfoHandler,\n propertyInfoSchema,\n productOffersHandler,\n productOffersSchema,\n revenueByChannelHandler,\n revenueByChannelSchema,\n revenueOverviewHandler,\n revenueOverviewSchema,\n revenueTrendHandler,\n revenueTrendSchema,\n skuOffersHandler,\n skuOffersSchema,\n skuPriceHandler,\n skuPriceSchema,\n sourceMediumBreakdownHandler,\n sourceMediumBreakdownSchema,\n topLandingPagesHandler,\n topLandingPagesSchema,\n updateInventoryHandler,\n updateInventorySchema,\n updateLeadTimeHandler,\n updateLeadTimeSchema,\n warehouseInventoryHandler,\n warehouseInventorySchema,\n} from \"./src/tools/index.js\";\n\nconst server = new MCPServer({\n name: \"bi-mcp\",\n title: \"BI MCP\",\n version: \"1.0.0\",\n description:\n \"Business Intelligence MCP server with VTEX, Google, and Meta Ads tools for ecommerce analysis.\",\n baseUrl: process.env.MCP_URL || \"http://localhost:3000\",\n favicon: \"favicon.ico\",\n icons: [\n {\n src: \"icon.svg\",\n mimeType: \"image/svg+xml\",\n sizes: [\"512x512\"],\n },\n ],\n});\n\nserver.tool(\n {\n name: \"meta_list_accessible_businesses\",\n description:\n \"List Meta businesses accessible with the configured token, useful for onboarding and permission validation.\",\n schema: metaListAccessibleBusinessesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n metaListAccessibleBusinessesHandler\n);\n\nserver.tool(\n {\n name: \"meta_list_accessible_ad_accounts\",\n description:\n \"List Meta ad accounts accessible with the configured token, including IDs, currencies, business context, and status.\",\n schema: metaListAccessibleAdAccountsSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n metaListAccessibleAdAccountsHandler\n);\n\nserver.tool(\n {\n name: \"meta_get_ad_account_info\",\n description:\n \"Get summary information for one Meta ad account, including name, currency, timezone, business, and account status.\",\n schema: metaAdAccountInfoSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n metaAdAccountInfoHandler\n);\n\nserver.tool(\n {\n name: \"meta_get_account_overview\",\n description:\n \"Get a Meta Ads overview for one or more ad accounts over a date range, including spend, clicks, impressions, purchases, purchase value, CPC, CPM, and ROAS.\",\n schema: metaAccountOverviewSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n metaAccountOverviewHandler\n);\n\nserver.tool(\n {\n name: \"meta_get_campaign_performance\",\n description:\n \"Get Meta Ads campaign-level performance for one or more ad accounts over a date range with spend, clicks, impressions, purchases, purchase value, CPC, CPM, and ROAS.\",\n schema: metaCampaignPerformanceSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n metaCampaignPerformanceHandler\n);\n\nserver.tool(\n {\n name: \"meta_get_ads_performance\",\n description:\n \"Get Meta Ads ad-level performance for one or more ad accounts over a date range, useful for creative review and performance diagnostics.\",\n schema: metaAdsPerformanceSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n metaAdsPerformanceHandler\n);\n\nserver.tool(\n {\n name: \"meta_get_time_series\",\n description:\n \"Get a Meta Ads time series for one or more ad accounts over a date range, with daily, weekly, or monthly granularity.\",\n schema: metaTimeSeriesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n metaTimeSeriesHandler\n);\n\nserver.tool(\n {\n name: \"meta_get_placement_mix\",\n description:\n \"Get Meta Ads placement mix for one or more ad accounts over a date range, including publisher platform and platform position performance.\",\n schema: metaPlacementMixSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n metaPlacementMixHandler\n);\n\nserver.tool(\n {\n name: \"vtex_get_orders_summary\",\n description: \"Get aggregated orders summary by date range with currency-aware BI metrics.\",\n schema: ordersSummarySchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n ordersSummaryHandler\n);\n\nserver.tool(\n {\n name: \"vtex_get_order_details\",\n description: \"Get BI-focused detailed information for one or more orders.\",\n schema: orderDetailsSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n orderDetailsHandler\n);\n\nserver.tool(\n {\n name: \"vtex_check_inventory\",\n description: \"Check global SKU inventory and infer stock health status.\",\n schema: inventoryCheckSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n inventoryCheckHandler\n);\n\nserver.tool(\n {\n name: \"vtex_get_warehouse_inventory\",\n description: \"Get SKU inventory details for a specific warehouse.\",\n schema: warehouseInventorySchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n warehouseInventoryHandler\n);\n\nserver.tool(\n {\n name: \"vtex_update_inventory\",\n description: \"Update SKU inventory quantity or unlimited mode for a warehouse.\",\n schema: updateInventorySchema,\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n openWorldHint: true,\n },\n },\n updateInventoryHandler\n);\n\nserver.tool(\n {\n name: \"vtex_update_lead_time\",\n description: \"Update SKU lead time for a warehouse.\",\n schema: updateLeadTimeSchema,\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n openWorldHint: true,\n },\n },\n updateLeadTimeHandler\n);\n\nserver.tool(\n {\n name: \"vtex_get_sku_price\",\n description: \"Get base pricing information for one SKU.\",\n schema: skuPriceSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n skuPriceHandler\n);\n\nserver.tool(\n {\n name: \"vtex_get_computed_price\",\n description: \"Get computed SKU price by price table context.\",\n schema: computedPriceSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n computedPriceHandler\n);\n\nserver.tool(\n {\n name: \"vtex_get_product_offers\",\n description: \"Get offers for all SKUs under a product.\",\n schema: productOffersSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n productOffersHandler\n);\n\nserver.tool(\n {\n name: \"vtex_get_sku_offers\",\n description: \"Get offers for a specific SKU under a product.\",\n schema: skuOffersSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n skuOffersHandler\n);\n\nserver.tool(\n {\n name: \"config_get_benchmarks\",\n description:\n \"Devuelve benchmarks de Argentina para c\u00E1lculos financieros: IIBB por provincia, costos de cuotas sin inter\u00E9s (Ahora 12, Plan Z), fees de pasarelas de pago (Mercado Pago, Mobbex, Payway, dLocal), costos log\u00EDsticos por zona y calendario comercial con impacto de revenue.\",\n schema: getBenchmarksSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: false,\n },\n },\n getBenchmarksHandler\n);\n\nserver.tool(\n {\n name: \"gads_get_channel_mix\",\n description:\n \"Get Google Ads mix by advertising channel type for a date range, including spend, clicks, impressions, conversions, conversion value, and channel share.\",\n schema: googleAdsChannelMixSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n googleAdsChannelMixHandler\n);\n\nserver.tool(\n {\n name: \"gads_get_customer_info\",\n description:\n \"Get summary information for one Google Ads customer account, including name, currency, timezone, and whether the account is a manager (MCC).\",\n schema: googleAdsCustomerInfoSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n googleAdsCustomerInfoHandler\n);\n\nserver.tool(\n {\n name: \"gads_list_customer_clients\",\n description:\n \"List visible child accounts for a Google Ads customer account, usually used to inspect manager (MCC) account structure.\",\n schema: googleAdsCustomerClientsSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n googleAdsCustomerClientsHandler\n);\n\nserver.tool(\n {\n name: \"gads_get_account_overview\",\n description:\n \"Get a Google Ads account overview for a date range, including spend, clicks, impressions, conversions, conversion value, CTR, CPC, CPA, and ROAS.\",\n schema: googleAdsAccountOverviewSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n googleAdsAccountOverviewHandler\n);\n\nserver.tool(\n {\n name: \"gads_get_campaign_performance\",\n description:\n \"Get Google Ads campaign-level performance for a date range with spend, clicks, impressions, conversions, conversion value, CTR, CPC, CPA, and ROAS.\",\n schema: googleAdsCampaignPerformanceSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n googleAdsCampaignPerformanceHandler\n);\n\nserver.tool(\n {\n name: \"gads_get_time_series\",\n description:\n \"Get Google Ads daily or weekly time series for a date range with spend, clicks, impressions, conversions, conversion value, CPA, and ROAS.\",\n schema: googleAdsTimeSeriesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n googleAdsTimeSeriesHandler\n);\n\nserver.tool(\n {\n name: \"gads_get_search_terms_summary\",\n description:\n \"Get a ranked summary of Google Ads search terms for a date range, including spend, clicks, impressions, conversions, conversion value, CPA, and ROAS.\",\n schema: googleAdsSearchTermsSummarySchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n googleAdsSearchTermsSummaryHandler\n);\n\nserver.tool(\n {\n name: \"gads_get_account_risks\",\n description:\n \"Evaluate Google Ads account risks for a date range, including concentration, low efficiency, weak conversion volume, and recent deterioration signals.\",\n schema: googleAdsAccountRisksSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n googleAdsAccountRisksHandler\n);\n\nserver.tool(\n {\n name: \"gads_get_break_even_analysis\",\n description:\n \"Compare current Google Ads performance against a user-provided break-even ROAS and optional CPA target.\",\n schema: googleAdsBreakEvenAnalysisSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n googleAdsBreakEvenAnalysisHandler\n);\n\nserver.tool(\n {\n name: \"gads_get_scaling_health\",\n description:\n \"Assess whether a Google Ads account is ready to scale using break-even ROAS, optional CPA target, concentration, stability, and conversion volume.\",\n schema: googleAdsScalingHealthSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n googleAdsScalingHealthHandler\n);\n\nserver.tool(\n {\n name: \"gads_compare_accounts\",\n description:\n \"Compare multiple Google Ads accounts across the same date range and rank them by basic risk and efficiency signals.\",\n schema: googleAdsCompareAccountsSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n googleAdsCompareAccountsHandler\n);\n\nserver.tool(\n {\n name: \"gsc_list_accessible_sites\",\n description: \"List all Search Console sites accessible with the configured Google credentials.\",\n schema: listAccessibleSitesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n listAccessibleSitesHandler\n);\n\nserver.tool(\n {\n name: \"gsc_get_site_context\",\n description: \"Validate one Search Console site and return the resolved site context used by the module.\",\n schema: searchConsoleSiteContextSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleSiteContextHandler\n);\n\nserver.tool(\n {\n name: \"gsc_get_search_performance\",\n description: \"Run a flexible Search Console performance query with custom dimensions and filters.\",\n schema: searchConsoleSearchPerformanceSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleSearchPerformanceHandler\n);\n\nserver.tool(\n {\n name: \"gsc_get_query_performance\",\n description: \"Get Search Console performance grouped by search query for a date range.\",\n schema: searchConsoleQueryPerformanceSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleQueryPerformanceHandler\n);\n\nserver.tool(\n {\n name: \"gsc_get_page_performance\",\n description: \"Get Search Console performance grouped by landing page for a date range.\",\n schema: searchConsolePagePerformanceSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsolePagePerformanceHandler\n);\n\nserver.tool(\n {\n name: \"gsc_get_query_page_matrix\",\n description: \"Get a Search Console matrix crossing queries and landing pages for a date range.\",\n schema: searchConsoleQueryPageMatrixSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleQueryPageMatrixHandler\n);\n\nserver.tool(\n {\n name: \"gsc_get_device_breakdown\",\n description: \"Break down Search Console performance by device for a date range.\",\n schema: searchConsoleDeviceBreakdownSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleDeviceBreakdownHandler\n);\n\nserver.tool(\n {\n name: \"gsc_get_country_breakdown\",\n description: \"Break down Search Console performance by country for a date range.\",\n schema: searchConsoleCountryBreakdownSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleCountryBreakdownHandler\n);\n\nserver.tool(\n {\n name: \"gsc_find_high_impression_low_click_queries\",\n description: \"Find queries with high Search Console impression volume but weak click capture.\",\n schema: searchConsoleHighImpressionLowClickQueriesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleHighImpressionLowClickQueriesHandler\n);\n\nserver.tool(\n {\n name: \"gsc_find_low_ctr_opportunities\",\n description: \"Find Search Console queries that rank reasonably well but underperform on CTR.\",\n schema: searchConsoleLowCtrOpportunitiesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleLowCtrOpportunitiesHandler\n);\n\nserver.tool(\n {\n name: \"gsc_detect_visibility_declines\",\n description: \"Detect Search Console pages that are losing visibility between two periods.\",\n schema: searchConsoleVisibilityDeclinesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleVisibilityDeclinesHandler\n);\n\nserver.tool(\n {\n name: \"gsc_find_product_demand_low_capture_queries\",\n description: \"Find product-intent queries with demand in Search Console but weak click capture.\",\n schema: searchConsoleProductDemandLowCaptureQueriesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleProductDemandLowCaptureQueriesHandler\n);\n\nserver.tool(\n {\n name: \"gsc_find_rising_non_brand_queries\",\n description: \"Find non-branded Search Console queries growing between two periods.\",\n schema: searchConsoleRisingNonBrandQueriesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleRisingNonBrandQueriesHandler\n);\n\nserver.tool(\n {\n name: \"gsc_find_quick_win_opportunities\",\n description: \"Prioritize Search Console quick wins across CTR improvements and ranking gains.\",\n schema: searchConsoleQuickWinOpportunitiesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleQuickWinOpportunitiesHandler\n);\n\nserver.tool(\n {\n name: \"ga4_list_accessible_properties\",\n description: \"List all Google Analytics 4 accounts and properties accessible with the configured OAuth credentials.\",\n schema: listAccessiblePropertiesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n listAccessiblePropertiesHandler\n);\n\nserver.tool(\n {\n name: \"ga4_get_property_info\",\n description: \"Get summary information and capabilities for one GA4 property, including ecommerce and attribution support.\",\n schema: propertyInfoSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n propertyInfoHandler\n);\n\nserver.tool(\n {\n name: \"ga4_get_channel_mix\",\n description: \"Get traffic mix by default channel group with shares of sessions and users for a date range.\",\n schema: channelMixSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n channelMixHandler\n);\n\nserver.tool(\n {\n name: \"ga4_get_source_medium_breakdown\",\n description: \"Get traffic breakdown by session source / medium with session and user share for a date range.\",\n schema: sourceMediumBreakdownSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n sourceMediumBreakdownHandler\n);\n\nserver.tool(\n {\n name: \"ga4_get_revenue_overview\",\n description: \"Get GA4 ecommerce overview for a date range including transactions, revenue, purchasers, and rates.\",\n schema: revenueOverviewSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n revenueOverviewHandler\n);\n\nserver.tool(\n {\n name: \"ga4_get_revenue_trend\",\n description: \"Get daily GA4 revenue and transactions trend for a date range.\",\n schema: revenueTrendSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n revenueTrendHandler\n);\n\nserver.tool(\n {\n name: \"ga4_get_revenue_by_channel\",\n description: \"Get GA4 revenue and transactions by default channel group for a date range.\",\n schema: revenueByChannelSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n revenueByChannelHandler\n);\n\nserver.tool(\n {\n name: \"ga4_get_top_landing_pages\",\n description: \"Get top landing pages by sessions and users for a date range.\",\n schema: topLandingPagesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n topLandingPagesHandler\n);\n\nserver.tool(\n {\n name: \"ga4_get_engagement_overview\",\n description: \"Get GA4 engagement metrics for a date range, including engagement rate, bounce rate, and session duration.\",\n schema: engagementOverviewSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n engagementOverviewHandler\n);\n\nserver.tool(\n {\n name: \"ga4_detect_attribution_gaps\",\n description: \"Detect unattributed traffic, unassigned channels, and not-set source / medium values in GA4.\",\n schema: attributionGapsSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n attributionGapsHandler\n);\n\nserver.tool(\n {\n name: \"ga4_check_ecommerce_tracking_health\",\n description: \"Evaluate whether GA4 ecommerce tracking appears complete by checking item views, carts, checkouts, purchases, and refunds.\",\n schema: ecommerceTrackingHealthSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n ecommerceTrackingHealthHandler\n);\n\nserver.prompt(\n {\n name: \"vtex-reporte-ventas\",\n description:\n \"Genera un prompt de reporte de ventas VTEX usando una sola entrada temporal en lenguaje natural.\",\n schema: reporteVentasPromptSchema,\n },\n reporteVentasPromptHandler\n);\n\nasync function createStdioTransportFromMcpUseDependency() {\n const requireFromHere = createRequire(import.meta.url);\n const mcpUseServerEntry = requireFromHere.resolve(\"mcp-use/server\");\n const requireFromMcpUse = createRequire(mcpUseServerEntry);\n const stdioModulePath = requireFromMcpUse.resolve(\"@modelcontextprotocol/sdk/server/stdio.js\");\n const stdioModule = (await import(pathToFileURL(stdioModulePath).href)) as {\n StdioServerTransport: new () => unknown;\n };\n\n return new stdioModule.StdioServerTransport();\n}\n\nasync function startServer() {\n const transport = (process.env.MCP_TRANSPORT ?? \"http\").trim().toLowerCase();\n\n if (transport === \"stdio\") {\n const stdioTransport = await createStdioTransportFromMcpUseDependency();\n await server.nativeServer.connect(stdioTransport as any);\n console.error(\"MCP server running on stdio transport\");\n return;\n }\n\n if (transport === \"http\") {\n const port = process.env.PORT ? Number.parseInt(process.env.PORT, 10) : 3000;\n if (Number.isNaN(port)) {\n throw new Error(`Invalid PORT value: ${process.env.PORT}`);\n }\n\n console.error(`MCP server running on http transport (port ${port})`);\n await server.listen(port);\n return;\n }\n\n throw new Error(`Invalid MCP_TRANSPORT \"${process.env.MCP_TRANSPORT}\". Use \"http\" or \"stdio\".`);\n}\n\nstartServer().catch((error) => {\n console.error(\"Failed to start MCP server\", error);\n process.exit(1);\n});\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,iBAAiB;AAE1B;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,sBAAsB,2BAA2B;AAC1D;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;A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",
|
|
4
|
+
"sourcesContent": ["import { createRequire } from \"node:module\";\nimport { pathToFileURL } from \"node:url\";\nimport { MCPServer } from \"mcp-use/server\";\n\nimport {\n reporteVentasPromptHandler,\n reporteVentasPromptSchema,\n} from \"./src/prompts/reporte-ventas.js\";\nimport { getBenchmarksHandler, getBenchmarksSchema } from \"./src/config/benchmarks.js\";\nimport {\n checkDatabaseConnectionHandler,\n checkDatabaseConnectionSchema,\n listProfilesHandler,\n listProfilesSchema,\n googleAdsAccountRisksHandler,\n googleAdsAccountRisksSchema,\n googleAdsAccountOverviewHandler,\n googleAdsAccountOverviewSchema,\n googleAdsBreakEvenAnalysisHandler,\n googleAdsBreakEvenAnalysisSchema,\n googleAdsCampaignPerformanceHandler,\n googleAdsCampaignPerformanceSchema,\n googleAdsChannelMixHandler,\n googleAdsChannelMixSchema,\n googleAdsCompareAccountsHandler,\n googleAdsCompareAccountsSchema,\n googleAdsCustomerClientsHandler,\n googleAdsCustomerClientsSchema,\n googleAdsCustomerInfoHandler,\n googleAdsCustomerInfoSchema,\n googleAdsSearchTermsSummaryHandler,\n googleAdsSearchTermsSummarySchema,\n googleAdsScalingHealthHandler,\n googleAdsScalingHealthSchema,\n googleAdsTimeSeriesHandler,\n googleAdsTimeSeriesSchema,\n listAccessibleSitesHandler,\n listAccessibleSitesSchema,\n attributionGapsHandler,\n attributionGapsSchema,\n channelMixHandler,\n channelMixSchema,\n computedPriceHandler,\n computedPriceSchema,\n ecommerceTrackingHealthHandler,\n ecommerceTrackingHealthSchema,\n engagementOverviewHandler,\n engagementOverviewSchema,\n inventoryCheckHandler,\n inventoryCheckSchema,\n listAccessiblePropertiesHandler,\n listAccessiblePropertiesSchema,\n metaAccountOverviewHandler,\n metaAccountOverviewSchema,\n metaAdAccountInfoHandler,\n metaAdAccountInfoSchema,\n metaAdsPerformanceHandler,\n metaAdsPerformanceSchema,\n metaCampaignPerformanceHandler,\n metaCampaignPerformanceSchema,\n metaListAccessibleAdAccountsHandler,\n metaListAccessibleAdAccountsSchema,\n metaListAccessibleBusinessesHandler,\n metaListAccessibleBusinessesSchema,\n metaPlacementMixHandler,\n metaPlacementMixSchema,\n metaTimeSeriesHandler,\n metaTimeSeriesSchema,\n searchConsoleCountryBreakdownHandler,\n searchConsoleCountryBreakdownSchema,\n searchConsoleDeviceBreakdownHandler,\n searchConsoleDeviceBreakdownSchema,\n searchConsoleHighImpressionLowClickQueriesHandler,\n searchConsoleHighImpressionLowClickQueriesSchema,\n searchConsoleLowCtrOpportunitiesHandler,\n searchConsoleLowCtrOpportunitiesSchema,\n searchConsolePagePerformanceHandler,\n searchConsolePagePerformanceSchema,\n searchConsoleProductDemandLowCaptureQueriesHandler,\n searchConsoleProductDemandLowCaptureQueriesSchema,\n searchConsoleQueryPageMatrixHandler,\n searchConsoleQueryPageMatrixSchema,\n searchConsoleQueryPerformanceHandler,\n searchConsoleQueryPerformanceSchema,\n searchConsoleQuickWinOpportunitiesHandler,\n searchConsoleQuickWinOpportunitiesSchema,\n searchConsoleRisingNonBrandQueriesHandler,\n searchConsoleRisingNonBrandQueriesSchema,\n searchConsoleSearchPerformanceHandler,\n searchConsoleSearchPerformanceSchema,\n searchConsoleSiteContextHandler,\n searchConsoleSiteContextSchema,\n searchConsoleVisibilityDeclinesHandler,\n searchConsoleVisibilityDeclinesSchema,\n orderDetailsHandler,\n orderDetailsSchema,\n ordersSummaryHandler,\n ordersSummarySchema,\n propertyInfoHandler,\n propertyInfoSchema,\n productOffersHandler,\n productOffersSchema,\n revenueByChannelHandler,\n revenueByChannelSchema,\n revenueOverviewHandler,\n revenueOverviewSchema,\n revenueTrendHandler,\n revenueTrendSchema,\n skuOffersHandler,\n skuOffersSchema,\n skuPriceHandler,\n skuPriceSchema,\n sourceMediumBreakdownHandler,\n sourceMediumBreakdownSchema,\n topLandingPagesHandler,\n topLandingPagesSchema,\n updateInventoryHandler,\n updateInventorySchema,\n updateLeadTimeHandler,\n updateLeadTimeSchema,\n warehouseInventoryHandler,\n warehouseInventorySchema,\n} from \"./src/tools/index.js\";\n\nconst server = new MCPServer({\n name: \"bi-mcp\",\n title: \"BI MCP\",\n version: \"1.0.0\",\n description:\n \"Business Intelligence MCP server with VTEX, Google, and Meta Ads tools for ecommerce analysis.\",\n baseUrl: process.env.MCP_URL || \"http://localhost:3000\",\n favicon: \"favicon.ico\",\n icons: [\n {\n src: \"icon.svg\",\n mimeType: \"image/svg+xml\",\n sizes: [\"512x512\"],\n },\n ],\n});\n\nserver.tool(\n {\n name: \"meta_list_accessible_businesses\",\n description:\n \"List Meta businesses accessible with the configured token, useful for onboarding and permission validation.\",\n schema: metaListAccessibleBusinessesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n metaListAccessibleBusinessesHandler\n);\n\nserver.tool(\n {\n name: \"meta_list_accessible_ad_accounts\",\n description:\n \"List Meta ad accounts accessible with the configured token, including IDs, currencies, business context, and status.\",\n schema: metaListAccessibleAdAccountsSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n metaListAccessibleAdAccountsHandler\n);\n\nserver.tool(\n {\n name: \"meta_get_ad_account_info\",\n description:\n \"Get summary information for one Meta ad account, including name, currency, timezone, business, and account status.\",\n schema: metaAdAccountInfoSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n metaAdAccountInfoHandler\n);\n\nserver.tool(\n {\n name: \"meta_get_account_overview\",\n description:\n \"Get a Meta Ads overview for one or more ad accounts over a date range, including spend, clicks, impressions, purchases, purchase value, CPC, CPM, and ROAS.\",\n schema: metaAccountOverviewSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n metaAccountOverviewHandler\n);\n\nserver.tool(\n {\n name: \"meta_get_campaign_performance\",\n description:\n \"Get Meta Ads campaign-level performance for one or more ad accounts over a date range with spend, clicks, impressions, purchases, purchase value, CPC, CPM, and ROAS.\",\n schema: metaCampaignPerformanceSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n metaCampaignPerformanceHandler\n);\n\nserver.tool(\n {\n name: \"meta_get_ads_performance\",\n description:\n \"Get Meta Ads ad-level performance for one or more ad accounts over a date range, useful for creative review and performance diagnostics.\",\n schema: metaAdsPerformanceSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n metaAdsPerformanceHandler\n);\n\nserver.tool(\n {\n name: \"meta_get_time_series\",\n description:\n \"Get a Meta Ads time series for one or more ad accounts over a date range, with daily, weekly, or monthly granularity.\",\n schema: metaTimeSeriesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n metaTimeSeriesHandler\n);\n\nserver.tool(\n {\n name: \"meta_get_placement_mix\",\n description:\n \"Get Meta Ads placement mix for one or more ad accounts over a date range, including publisher platform and platform position performance.\",\n schema: metaPlacementMixSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n metaPlacementMixHandler\n);\n\nserver.tool(\n {\n name: \"vtex_get_orders_summary\",\n description: \"Get aggregated orders summary by date range with currency-aware BI metrics.\",\n schema: ordersSummarySchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n ordersSummaryHandler\n);\n\nserver.tool(\n {\n name: \"vtex_get_order_details\",\n description: \"Get BI-focused detailed information for one or more orders.\",\n schema: orderDetailsSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n orderDetailsHandler\n);\n\nserver.tool(\n {\n name: \"vtex_check_inventory\",\n description: \"Check global SKU inventory and infer stock health status.\",\n schema: inventoryCheckSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n inventoryCheckHandler\n);\n\nserver.tool(\n {\n name: \"vtex_get_warehouse_inventory\",\n description: \"Get SKU inventory details for a specific warehouse.\",\n schema: warehouseInventorySchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n warehouseInventoryHandler\n);\n\nserver.tool(\n {\n name: \"vtex_update_inventory\",\n description: \"Update SKU inventory quantity or unlimited mode for a warehouse.\",\n schema: updateInventorySchema,\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n openWorldHint: true,\n },\n },\n updateInventoryHandler\n);\n\nserver.tool(\n {\n name: \"vtex_update_lead_time\",\n description: \"Update SKU lead time for a warehouse.\",\n schema: updateLeadTimeSchema,\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n openWorldHint: true,\n },\n },\n updateLeadTimeHandler\n);\n\nserver.tool(\n {\n name: \"vtex_get_sku_price\",\n description: \"Get base pricing information for one SKU.\",\n schema: skuPriceSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n skuPriceHandler\n);\n\nserver.tool(\n {\n name: \"vtex_get_computed_price\",\n description: \"Get computed SKU price by price table context.\",\n schema: computedPriceSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n computedPriceHandler\n);\n\nserver.tool(\n {\n name: \"vtex_get_product_offers\",\n description: \"Get offers for all SKUs under a product.\",\n schema: productOffersSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n productOffersHandler\n);\n\nserver.tool(\n {\n name: \"vtex_get_sku_offers\",\n description: \"Get offers for a specific SKU under a product.\",\n schema: skuOffersSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n skuOffersHandler\n);\n\nserver.tool(\n {\n name: \"config_check_database_connection\",\n description:\n \"Check whether the MCP can reach its configured database and whether critical tables are present.\",\n schema: checkDatabaseConnectionSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: false,\n },\n },\n checkDatabaseConnectionHandler\n);\n\nserver.tool(\n {\n name: \"config_list_profiles\",\n description: \"List client profiles currently available in the MCP database.\",\n schema: listProfilesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: false,\n },\n },\n listProfilesHandler\n);\n\nserver.tool(\n {\n name: \"config_get_benchmarks\",\n description:\n \"Devuelve benchmarks de Argentina para c\u00E1lculos financieros: IIBB por provincia, costos de cuotas sin inter\u00E9s (Ahora 12, Plan Z), fees de pasarelas de pago (Mercado Pago, Mobbex, Payway, dLocal), costos log\u00EDsticos por zona y calendario comercial con impacto de revenue.\",\n schema: getBenchmarksSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: false,\n },\n },\n getBenchmarksHandler\n);\n\nserver.tool(\n {\n name: \"gads_get_channel_mix\",\n description:\n \"Get Google Ads mix by advertising channel type for a date range, including spend, clicks, impressions, conversions, conversion value, and channel share.\",\n schema: googleAdsChannelMixSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n googleAdsChannelMixHandler\n);\n\nserver.tool(\n {\n name: \"gads_get_customer_info\",\n description:\n \"Get summary information for one Google Ads customer account, including name, currency, timezone, and whether the account is a manager (MCC).\",\n schema: googleAdsCustomerInfoSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n googleAdsCustomerInfoHandler\n);\n\nserver.tool(\n {\n name: \"gads_list_customer_clients\",\n description:\n \"List visible child accounts for a Google Ads customer account, usually used to inspect manager (MCC) account structure.\",\n schema: googleAdsCustomerClientsSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n googleAdsCustomerClientsHandler\n);\n\nserver.tool(\n {\n name: \"gads_get_account_overview\",\n description:\n \"Get a Google Ads account overview for a date range, including spend, clicks, impressions, conversions, conversion value, CTR, CPC, CPA, and ROAS.\",\n schema: googleAdsAccountOverviewSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n googleAdsAccountOverviewHandler\n);\n\nserver.tool(\n {\n name: \"gads_get_campaign_performance\",\n description:\n \"Get Google Ads campaign-level performance for a date range with spend, clicks, impressions, conversions, conversion value, CTR, CPC, CPA, and ROAS.\",\n schema: googleAdsCampaignPerformanceSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n googleAdsCampaignPerformanceHandler\n);\n\nserver.tool(\n {\n name: \"gads_get_time_series\",\n description:\n \"Get Google Ads daily or weekly time series for a date range with spend, clicks, impressions, conversions, conversion value, CPA, and ROAS.\",\n schema: googleAdsTimeSeriesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n googleAdsTimeSeriesHandler\n);\n\nserver.tool(\n {\n name: \"gads_get_search_terms_summary\",\n description:\n \"Get a ranked summary of Google Ads search terms for a date range, including spend, clicks, impressions, conversions, conversion value, CPA, and ROAS.\",\n schema: googleAdsSearchTermsSummarySchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n googleAdsSearchTermsSummaryHandler\n);\n\nserver.tool(\n {\n name: \"gads_get_account_risks\",\n description:\n \"Evaluate Google Ads account risks for a date range, including concentration, low efficiency, weak conversion volume, and recent deterioration signals.\",\n schema: googleAdsAccountRisksSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n googleAdsAccountRisksHandler\n);\n\nserver.tool(\n {\n name: \"gads_get_break_even_analysis\",\n description:\n \"Compare current Google Ads performance against a user-provided break-even ROAS and optional CPA target.\",\n schema: googleAdsBreakEvenAnalysisSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n googleAdsBreakEvenAnalysisHandler\n);\n\nserver.tool(\n {\n name: \"gads_get_scaling_health\",\n description:\n \"Assess whether a Google Ads account is ready to scale using break-even ROAS, optional CPA target, concentration, stability, and conversion volume.\",\n schema: googleAdsScalingHealthSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n googleAdsScalingHealthHandler\n);\n\nserver.tool(\n {\n name: \"gads_compare_accounts\",\n description:\n \"Compare multiple Google Ads accounts across the same date range and rank them by basic risk and efficiency signals.\",\n schema: googleAdsCompareAccountsSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n googleAdsCompareAccountsHandler\n);\n\nserver.tool(\n {\n name: \"gsc_list_accessible_sites\",\n description: \"List all Search Console sites accessible with the configured Google credentials.\",\n schema: listAccessibleSitesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n listAccessibleSitesHandler\n);\n\nserver.tool(\n {\n name: \"gsc_get_site_context\",\n description: \"Validate one Search Console site and return the resolved site context used by the module.\",\n schema: searchConsoleSiteContextSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleSiteContextHandler\n);\n\nserver.tool(\n {\n name: \"gsc_get_search_performance\",\n description: \"Run a flexible Search Console performance query with custom dimensions and filters.\",\n schema: searchConsoleSearchPerformanceSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleSearchPerformanceHandler\n);\n\nserver.tool(\n {\n name: \"gsc_get_query_performance\",\n description: \"Get Search Console performance grouped by search query for a date range.\",\n schema: searchConsoleQueryPerformanceSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleQueryPerformanceHandler\n);\n\nserver.tool(\n {\n name: \"gsc_get_page_performance\",\n description: \"Get Search Console performance grouped by landing page for a date range.\",\n schema: searchConsolePagePerformanceSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsolePagePerformanceHandler\n);\n\nserver.tool(\n {\n name: \"gsc_get_query_page_matrix\",\n description: \"Get a Search Console matrix crossing queries and landing pages for a date range.\",\n schema: searchConsoleQueryPageMatrixSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleQueryPageMatrixHandler\n);\n\nserver.tool(\n {\n name: \"gsc_get_device_breakdown\",\n description: \"Break down Search Console performance by device for a date range.\",\n schema: searchConsoleDeviceBreakdownSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleDeviceBreakdownHandler\n);\n\nserver.tool(\n {\n name: \"gsc_get_country_breakdown\",\n description: \"Break down Search Console performance by country for a date range.\",\n schema: searchConsoleCountryBreakdownSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleCountryBreakdownHandler\n);\n\nserver.tool(\n {\n name: \"gsc_find_high_impression_low_click_queries\",\n description: \"Find queries with high Search Console impression volume but weak click capture.\",\n schema: searchConsoleHighImpressionLowClickQueriesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleHighImpressionLowClickQueriesHandler\n);\n\nserver.tool(\n {\n name: \"gsc_find_low_ctr_opportunities\",\n description: \"Find Search Console queries that rank reasonably well but underperform on CTR.\",\n schema: searchConsoleLowCtrOpportunitiesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleLowCtrOpportunitiesHandler\n);\n\nserver.tool(\n {\n name: \"gsc_detect_visibility_declines\",\n description: \"Detect Search Console pages that are losing visibility between two periods.\",\n schema: searchConsoleVisibilityDeclinesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleVisibilityDeclinesHandler\n);\n\nserver.tool(\n {\n name: \"gsc_find_product_demand_low_capture_queries\",\n description: \"Find product-intent queries with demand in Search Console but weak click capture.\",\n schema: searchConsoleProductDemandLowCaptureQueriesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleProductDemandLowCaptureQueriesHandler\n);\n\nserver.tool(\n {\n name: \"gsc_find_rising_non_brand_queries\",\n description: \"Find non-branded Search Console queries growing between two periods.\",\n schema: searchConsoleRisingNonBrandQueriesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleRisingNonBrandQueriesHandler\n);\n\nserver.tool(\n {\n name: \"gsc_find_quick_win_opportunities\",\n description: \"Prioritize Search Console quick wins across CTR improvements and ranking gains.\",\n schema: searchConsoleQuickWinOpportunitiesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n searchConsoleQuickWinOpportunitiesHandler\n);\n\nserver.tool(\n {\n name: \"ga4_list_accessible_properties\",\n description: \"List all Google Analytics 4 accounts and properties accessible with the configured OAuth credentials.\",\n schema: listAccessiblePropertiesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n listAccessiblePropertiesHandler\n);\n\nserver.tool(\n {\n name: \"ga4_get_property_info\",\n description: \"Get summary information and capabilities for one GA4 property, including ecommerce and attribution support.\",\n schema: propertyInfoSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n propertyInfoHandler\n);\n\nserver.tool(\n {\n name: \"ga4_get_channel_mix\",\n description: \"Get traffic mix by default channel group with shares of sessions and users for a date range.\",\n schema: channelMixSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n channelMixHandler\n);\n\nserver.tool(\n {\n name: \"ga4_get_source_medium_breakdown\",\n description: \"Get traffic breakdown by session source / medium with session and user share for a date range.\",\n schema: sourceMediumBreakdownSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n sourceMediumBreakdownHandler\n);\n\nserver.tool(\n {\n name: \"ga4_get_revenue_overview\",\n description: \"Get GA4 ecommerce overview for a date range including transactions, revenue, purchasers, and rates.\",\n schema: revenueOverviewSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n revenueOverviewHandler\n);\n\nserver.tool(\n {\n name: \"ga4_get_revenue_trend\",\n description: \"Get daily GA4 revenue and transactions trend for a date range.\",\n schema: revenueTrendSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n revenueTrendHandler\n);\n\nserver.tool(\n {\n name: \"ga4_get_revenue_by_channel\",\n description: \"Get GA4 revenue and transactions by default channel group for a date range.\",\n schema: revenueByChannelSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n revenueByChannelHandler\n);\n\nserver.tool(\n {\n name: \"ga4_get_top_landing_pages\",\n description: \"Get top landing pages by sessions and users for a date range.\",\n schema: topLandingPagesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n topLandingPagesHandler\n);\n\nserver.tool(\n {\n name: \"ga4_get_engagement_overview\",\n description: \"Get GA4 engagement metrics for a date range, including engagement rate, bounce rate, and session duration.\",\n schema: engagementOverviewSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n engagementOverviewHandler\n);\n\nserver.tool(\n {\n name: \"ga4_detect_attribution_gaps\",\n description: \"Detect unattributed traffic, unassigned channels, and not-set source / medium values in GA4.\",\n schema: attributionGapsSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n attributionGapsHandler\n);\n\nserver.tool(\n {\n name: \"ga4_check_ecommerce_tracking_health\",\n description: \"Evaluate whether GA4 ecommerce tracking appears complete by checking item views, carts, checkouts, purchases, and refunds.\",\n schema: ecommerceTrackingHealthSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n openWorldHint: true,\n },\n },\n ecommerceTrackingHealthHandler\n);\n\nserver.prompt(\n {\n name: \"vtex-reporte-ventas\",\n description:\n \"Genera un prompt de reporte de ventas VTEX usando una sola entrada temporal en lenguaje natural.\",\n schema: reporteVentasPromptSchema,\n },\n reporteVentasPromptHandler\n);\n\nasync function createStdioTransportFromMcpUseDependency() {\n const requireFromHere = createRequire(import.meta.url);\n const mcpUseServerEntry = requireFromHere.resolve(\"mcp-use/server\");\n const requireFromMcpUse = createRequire(mcpUseServerEntry);\n const stdioModulePath = requireFromMcpUse.resolve(\"@modelcontextprotocol/sdk/server/stdio.js\");\n const stdioModule = (await import(pathToFileURL(stdioModulePath).href)) as {\n StdioServerTransport: new () => unknown;\n };\n\n return new stdioModule.StdioServerTransport();\n}\n\nasync function startServer() {\n const transport = (process.env.MCP_TRANSPORT ?? \"http\").trim().toLowerCase();\n\n if (transport === \"stdio\") {\n const stdioTransport = await createStdioTransportFromMcpUseDependency();\n await server.nativeServer.connect(stdioTransport as any);\n console.error(\"MCP server running on stdio transport\");\n return;\n }\n\n if (transport === \"http\") {\n const port = process.env.PORT ? Number.parseInt(process.env.PORT, 10) : 3000;\n if (Number.isNaN(port)) {\n throw new Error(`Invalid PORT value: ${process.env.PORT}`);\n }\n\n console.error(`MCP server running on http transport (port ${port})`);\n await server.listen(port);\n return;\n }\n\n throw new Error(`Invalid MCP_TRANSPORT \"${process.env.MCP_TRANSPORT}\". Use \"http\" or \"stdio\".`);\n}\n\nstartServer().catch((error) => {\n console.error(\"Failed to start MCP server\", error);\n process.exit(1);\n});\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,iBAAiB;AAE1B;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,sBAAsB,2BAA2B;AAC1D;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;A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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/mcp-use.json
CHANGED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
function loadLocalEnv() {
|
|
3
|
+
process.loadEnvFile?.(".env");
|
|
4
|
+
}
|
|
5
|
+
function parseCliArgs(argv) {
|
|
6
|
+
const values = {};
|
|
7
|
+
const flags = /* @__PURE__ */ new Set();
|
|
8
|
+
for (let index = 0; index < argv.length; index += 1) {
|
|
9
|
+
const token = argv[index];
|
|
10
|
+
if (!token.startsWith("--")) {
|
|
11
|
+
continue;
|
|
12
|
+
}
|
|
13
|
+
const key = token.slice(2);
|
|
14
|
+
const next = argv[index + 1];
|
|
15
|
+
if (!next || next.startsWith("--")) {
|
|
16
|
+
flags.add(key);
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
values[key] = next;
|
|
20
|
+
index += 1;
|
|
21
|
+
}
|
|
22
|
+
return { values, flags };
|
|
23
|
+
}
|
|
24
|
+
function requireArg(args, name) {
|
|
25
|
+
const value = args.values[name]?.trim();
|
|
26
|
+
if (!value) {
|
|
27
|
+
throw new Error(`Missing required argument: --${name}`);
|
|
28
|
+
}
|
|
29
|
+
return value;
|
|
30
|
+
}
|
|
31
|
+
function hasFlag(args, name) {
|
|
32
|
+
return args.flags.has(name);
|
|
33
|
+
}
|
|
34
|
+
function logJson(value) {
|
|
35
|
+
console.log(JSON.stringify(value, null, 2));
|
|
36
|
+
}
|
|
37
|
+
export {
|
|
38
|
+
hasFlag,
|
|
39
|
+
loadLocalEnv,
|
|
40
|
+
logJson,
|
|
41
|
+
parseCliArgs,
|
|
42
|
+
requireArg
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=_helpers.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../scripts/_helpers.ts"],
|
|
4
|
+
"sourcesContent": ["import process from \"node:process\";\n\nexport interface ParsedArgs {\n values: Record<string, string>;\n flags: Set<string>;\n}\n\nexport function loadLocalEnv() {\n process.loadEnvFile?.(\".env\");\n}\n\nexport function parseCliArgs(argv: string[]): ParsedArgs {\n const values: Record<string, string> = {};\n const flags = new Set<string>();\n\n for (let index = 0; index < argv.length; index += 1) {\n const token = argv[index];\n if (!token.startsWith(\"--\")) {\n continue;\n }\n\n const key = token.slice(2);\n const next = argv[index + 1];\n\n if (!next || next.startsWith(\"--\")) {\n flags.add(key);\n continue;\n }\n\n values[key] = next;\n index += 1;\n }\n\n return { values, flags };\n}\n\nexport function requireArg(args: ParsedArgs, name: string): string {\n const value = args.values[name]?.trim();\n if (!value) {\n throw new Error(`Missing required argument: --${name}`);\n }\n\n return value;\n}\n\nexport function hasFlag(args: ParsedArgs, name: string): boolean {\n return args.flags.has(name);\n}\n\nexport function logJson(value: unknown) {\n console.log(JSON.stringify(value, null, 2));\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAO,aAAa;AAOb,SAAS,eAAe;AAC7B,UAAQ,cAAc,MAAM;AAC9B;AAEO,SAAS,aAAa,MAA4B;AACvD,QAAM,SAAiC,CAAC;AACxC,QAAM,QAAQ,oBAAI,IAAY;AAE9B,WAAS,QAAQ,GAAG,QAAQ,KAAK,QAAQ,SAAS,GAAG;AACnD,UAAM,QAAQ,KAAK,KAAK;AACxB,QAAI,CAAC,MAAM,WAAW,IAAI,GAAG;AAC3B;AAAA,IACF;AAEA,UAAM,MAAM,MAAM,MAAM,CAAC;AACzB,UAAM,OAAO,KAAK,QAAQ,CAAC;AAE3B,QAAI,CAAC,QAAQ,KAAK,WAAW,IAAI,GAAG;AAClC,YAAM,IAAI,GAAG;AACb;AAAA,IACF;AAEA,WAAO,GAAG,IAAI;AACd,aAAS;AAAA,EACX;AAEA,SAAO,EAAE,QAAQ,MAAM;AACzB;AAEO,SAAS,WAAW,MAAkB,MAAsB;AACjE,QAAM,QAAQ,KAAK,OAAO,IAAI,GAAG,KAAK;AACtC,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,gCAAgC,IAAI,EAAE;AAAA,EACxD;AAEA,SAAO;AACT;AAEO,SAAS,QAAQ,MAAkB,MAAuB;AAC/D,SAAO,KAAK,MAAM,IAAI,IAAI;AAC5B;AAEO,SAAS,QAAQ,OAAgB;AACtC,UAAQ,IAAI,KAAK,UAAU,OAAO,MAAM,CAAC,CAAC;AAC5C;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import { loadLocalEnv, parseCliArgs, requireArg } from "./_helpers.js";
|
|
3
|
+
async function main() {
|
|
4
|
+
loadLocalEnv();
|
|
5
|
+
const args = parseCliArgs(process.argv.slice(2));
|
|
6
|
+
const profileId = requireArg(args, "profile-id");
|
|
7
|
+
const confirmDelete = requireArg(args, "confirm-delete");
|
|
8
|
+
if (confirmDelete !== profileId) {
|
|
9
|
+
throw new Error(
|
|
10
|
+
`Confirmation mismatch: --confirm-delete must exactly match --profile-id ("${profileId}")`
|
|
11
|
+
);
|
|
12
|
+
}
|
|
13
|
+
const { deleteProfile, getProfile } = await import("../src/config/profile-store.js");
|
|
14
|
+
const { getVtexConnectionRow } = await import("../src/config/vtex-profile-store.js");
|
|
15
|
+
const [profile, vtexConnection] = await Promise.all([
|
|
16
|
+
getProfile(profileId),
|
|
17
|
+
getVtexConnectionRow(profileId)
|
|
18
|
+
]);
|
|
19
|
+
if (!profile) {
|
|
20
|
+
throw new Error(`Profile not found: "${profileId}"`);
|
|
21
|
+
}
|
|
22
|
+
console.log("About to hard delete profile");
|
|
23
|
+
console.log(
|
|
24
|
+
JSON.stringify(
|
|
25
|
+
{
|
|
26
|
+
profile: {
|
|
27
|
+
profile_id: profile.id,
|
|
28
|
+
name: profile.name,
|
|
29
|
+
is_active: profile.isActive,
|
|
30
|
+
created_at: profile.createdAt.toISOString(),
|
|
31
|
+
updated_at: profile.updatedAt.toISOString()
|
|
32
|
+
},
|
|
33
|
+
vtex_connection: vtexConnection ? {
|
|
34
|
+
profile_id: vtexConnection.profileId,
|
|
35
|
+
account_name: vtexConnection.accountName,
|
|
36
|
+
is_active: vtexConnection.isActive,
|
|
37
|
+
status: vtexConnection.status,
|
|
38
|
+
last_validated_at: vtexConnection.lastValidatedAt?.toISOString() ?? null,
|
|
39
|
+
updated_at: vtexConnection.updatedAt.toISOString()
|
|
40
|
+
} : null
|
|
41
|
+
},
|
|
42
|
+
null,
|
|
43
|
+
2
|
|
44
|
+
)
|
|
45
|
+
);
|
|
46
|
+
const deletedProfile = await deleteProfile(profileId);
|
|
47
|
+
if (!deletedProfile) {
|
|
48
|
+
throw new Error(`Profile disappeared before deletion completed: "${profileId}"`);
|
|
49
|
+
}
|
|
50
|
+
console.log("Profile hard delete OK");
|
|
51
|
+
console.log(
|
|
52
|
+
JSON.stringify(
|
|
53
|
+
{
|
|
54
|
+
deleted_profile: {
|
|
55
|
+
profile_id: deletedProfile.id,
|
|
56
|
+
name: deletedProfile.name,
|
|
57
|
+
is_active: deletedProfile.isActive,
|
|
58
|
+
deleted_at: deletedProfile.deletedAt.toISOString()
|
|
59
|
+
},
|
|
60
|
+
cascade_expected: ["profile_vtex_connections"]
|
|
61
|
+
},
|
|
62
|
+
null,
|
|
63
|
+
2
|
|
64
|
+
)
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
main().catch((error) => {
|
|
68
|
+
console.error("Profile hard delete failed");
|
|
69
|
+
console.error(error);
|
|
70
|
+
process.exitCode = 1;
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=admin-profile-delete.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../scripts/admin-profile-delete.ts"],
|
|
4
|
+
"sourcesContent": ["import process from \"node:process\";\n\nimport { loadLocalEnv, parseCliArgs, requireArg } from \"./_helpers.js\";\n\nasync function main() {\n loadLocalEnv();\n\n const args = parseCliArgs(process.argv.slice(2));\n const profileId = requireArg(args, \"profile-id\");\n const confirmDelete = requireArg(args, \"confirm-delete\");\n\n if (confirmDelete !== profileId) {\n throw new Error(\n `Confirmation mismatch: --confirm-delete must exactly match --profile-id (\"${profileId}\")`\n );\n }\n\n const { deleteProfile, getProfile } = await import(\"../src/config/profile-store.js\");\n const { getVtexConnectionRow } = await import(\"../src/config/vtex-profile-store.js\");\n\n const [profile, vtexConnection] = await Promise.all([\n getProfile(profileId),\n getVtexConnectionRow(profileId),\n ]);\n\n if (!profile) {\n throw new Error(`Profile not found: \"${profileId}\"`);\n }\n\n console.log(\"About to hard delete profile\");\n console.log(\n JSON.stringify(\n {\n profile: {\n profile_id: profile.id,\n name: profile.name,\n is_active: profile.isActive,\n created_at: profile.createdAt.toISOString(),\n updated_at: profile.updatedAt.toISOString(),\n },\n vtex_connection: vtexConnection\n ? {\n profile_id: vtexConnection.profileId,\n account_name: vtexConnection.accountName,\n is_active: vtexConnection.isActive,\n status: vtexConnection.status,\n last_validated_at: vtexConnection.lastValidatedAt?.toISOString() ?? null,\n updated_at: vtexConnection.updatedAt.toISOString(),\n }\n : null,\n },\n null,\n 2\n )\n );\n\n const deletedProfile = await deleteProfile(profileId);\n\n if (!deletedProfile) {\n throw new Error(`Profile disappeared before deletion completed: \"${profileId}\"`);\n }\n\n console.log(\"Profile hard delete OK\");\n console.log(\n JSON.stringify(\n {\n deleted_profile: {\n profile_id: deletedProfile.id,\n name: deletedProfile.name,\n is_active: deletedProfile.isActive,\n deleted_at: deletedProfile.deletedAt.toISOString(),\n },\n cascade_expected: [\"profile_vtex_connections\"],\n },\n null,\n 2\n )\n );\n}\n\nmain().catch((error: unknown) => {\n console.error(\"Profile hard delete failed\");\n console.error(error);\n process.exitCode = 1;\n});\n"],
|
|
5
|
+
"mappings": "AAAA,OAAO,aAAa;AAEpB,SAAS,cAAc,cAAc,kBAAkB;AAEvD,eAAe,OAAO;AACpB,eAAa;AAEb,QAAM,OAAO,aAAa,QAAQ,KAAK,MAAM,CAAC,CAAC;AAC/C,QAAM,YAAY,WAAW,MAAM,YAAY;AAC/C,QAAM,gBAAgB,WAAW,MAAM,gBAAgB;AAEvD,MAAI,kBAAkB,WAAW;AAC/B,UAAM,IAAI;AAAA,MACR,6EAA6E,SAAS;AAAA,IACxF;AAAA,EACF;AAEA,QAAM,EAAE,eAAe,WAAW,IAAI,MAAM,OAAO,gCAAgC;AACnF,QAAM,EAAE,qBAAqB,IAAI,MAAM,OAAO,qCAAqC;AAEnF,QAAM,CAAC,SAAS,cAAc,IAAI,MAAM,QAAQ,IAAI;AAAA,IAClD,WAAW,SAAS;AAAA,IACpB,qBAAqB,SAAS;AAAA,EAChC,CAAC;AAED,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,uBAAuB,SAAS,GAAG;AAAA,EACrD;AAEA,UAAQ,IAAI,8BAA8B;AAC1C,UAAQ;AAAA,IACN,KAAK;AAAA,MACH;AAAA,QACE,SAAS;AAAA,UACP,YAAY,QAAQ;AAAA,UACpB,MAAM,QAAQ;AAAA,UACd,WAAW,QAAQ;AAAA,UACnB,YAAY,QAAQ,UAAU,YAAY;AAAA,UAC1C,YAAY,QAAQ,UAAU,YAAY;AAAA,QAC5C;AAAA,QACA,iBAAiB,iBACb;AAAA,UACE,YAAY,eAAe;AAAA,UAC3B,cAAc,eAAe;AAAA,UAC7B,WAAW,eAAe;AAAA,UAC1B,QAAQ,eAAe;AAAA,UACvB,mBAAmB,eAAe,iBAAiB,YAAY,KAAK;AAAA,UACpE,YAAY,eAAe,UAAU,YAAY;AAAA,QACnD,IACA;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,iBAAiB,MAAM,cAAc,SAAS;AAEpD,MAAI,CAAC,gBAAgB;AACnB,UAAM,IAAI,MAAM,mDAAmD,SAAS,GAAG;AAAA,EACjF;AAEA,UAAQ,IAAI,wBAAwB;AACpC,UAAQ;AAAA,IACN,KAAK;AAAA,MACH;AAAA,QACE,iBAAiB;AAAA,UACf,YAAY,eAAe;AAAA,UAC3B,MAAM,eAAe;AAAA,UACrB,WAAW,eAAe;AAAA,UAC1B,YAAY,eAAe,UAAU,YAAY;AAAA,QACnD;AAAA,QACA,kBAAkB,CAAC,0BAA0B;AAAA,MAC/C;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;AAEA,KAAK,EAAE,MAAM,CAAC,UAAmB;AAC/B,UAAQ,MAAM,4BAA4B;AAC1C,UAAQ,MAAM,KAAK;AACnB,UAAQ,WAAW;AACrB,CAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import { loadLocalEnv } from "./_helpers.js";
|
|
3
|
+
async function main() {
|
|
4
|
+
loadLocalEnv();
|
|
5
|
+
const { listProfiles } = await import("../src/config/profile-store.js");
|
|
6
|
+
const profiles = await listProfiles();
|
|
7
|
+
console.log(JSON.stringify(
|
|
8
|
+
profiles.map((profile) => ({
|
|
9
|
+
profile_id: profile.id,
|
|
10
|
+
name: profile.name,
|
|
11
|
+
is_active: profile.isActive,
|
|
12
|
+
created_at: profile.createdAt.toISOString(),
|
|
13
|
+
updated_at: profile.updatedAt.toISOString()
|
|
14
|
+
})),
|
|
15
|
+
null,
|
|
16
|
+
2
|
|
17
|
+
));
|
|
18
|
+
}
|
|
19
|
+
main().catch((error) => {
|
|
20
|
+
console.error("Profile list failed");
|
|
21
|
+
console.error(error);
|
|
22
|
+
process.exitCode = 1;
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=admin-profile-list.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../scripts/admin-profile-list.ts"],
|
|
4
|
+
"sourcesContent": ["import process from \"node:process\";\n\nimport { loadLocalEnv } from \"./_helpers.js\";\n\nasync function main() {\n loadLocalEnv();\n\n const { listProfiles } = await import(\"../src/config/profile-store.js\");\n const profiles = await listProfiles();\n\n console.log(JSON.stringify(\n profiles.map((profile) => ({\n profile_id: profile.id,\n name: profile.name,\n is_active: profile.isActive,\n created_at: profile.createdAt.toISOString(),\n updated_at: profile.updatedAt.toISOString(),\n })),\n null,\n 2\n ));\n}\n\nmain().catch((error: unknown) => {\n console.error(\"Profile list failed\");\n console.error(error);\n process.exitCode = 1;\n});\n"],
|
|
5
|
+
"mappings": "AAAA,OAAO,aAAa;AAEpB,SAAS,oBAAoB;AAE7B,eAAe,OAAO;AACpB,eAAa;AAEb,QAAM,EAAE,aAAa,IAAI,MAAM,OAAO,gCAAgC;AACtE,QAAM,WAAW,MAAM,aAAa;AAEpC,UAAQ,IAAI,KAAK;AAAA,IACf,SAAS,IAAI,CAAC,aAAa;AAAA,MACzB,YAAY,QAAQ;AAAA,MACpB,MAAM,QAAQ;AAAA,MACd,WAAW,QAAQ;AAAA,MACnB,YAAY,QAAQ,UAAU,YAAY;AAAA,MAC1C,YAAY,QAAQ,UAAU,YAAY;AAAA,IAC5C,EAAE;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEA,KAAK,EAAE,MAAM,CAAC,UAAmB;AAC/B,UAAQ,MAAM,qBAAqB;AACnC,UAAQ,MAAM,KAAK;AACnB,UAAQ,WAAW;AACrB,CAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import { hasFlag, loadLocalEnv, parseCliArgs, requireArg } from "./_helpers.js";
|
|
3
|
+
async function main() {
|
|
4
|
+
loadLocalEnv();
|
|
5
|
+
const args = parseCliArgs(process.argv.slice(2));
|
|
6
|
+
const id = requireArg(args, "profile-id");
|
|
7
|
+
const name = requireArg(args, "name");
|
|
8
|
+
const isActive = !hasFlag(args, "inactive");
|
|
9
|
+
const { upsertProfile } = await import("../src/config/profile-store.js");
|
|
10
|
+
const profile = await upsertProfile({ id, name, isActive });
|
|
11
|
+
console.log("Profile upsert OK");
|
|
12
|
+
console.log(JSON.stringify({
|
|
13
|
+
profile_id: profile.id,
|
|
14
|
+
name: profile.name,
|
|
15
|
+
is_active: profile.isActive,
|
|
16
|
+
created_at: profile.createdAt.toISOString(),
|
|
17
|
+
updated_at: profile.updatedAt.toISOString()
|
|
18
|
+
}, null, 2));
|
|
19
|
+
}
|
|
20
|
+
main().catch((error) => {
|
|
21
|
+
console.error("Profile upsert failed");
|
|
22
|
+
console.error(error);
|
|
23
|
+
process.exitCode = 1;
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=admin-profile-upsert.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../scripts/admin-profile-upsert.ts"],
|
|
4
|
+
"sourcesContent": ["import process from \"node:process\";\n\nimport { hasFlag, loadLocalEnv, parseCliArgs, requireArg } from \"./_helpers.js\";\n\nasync function main() {\n loadLocalEnv();\n\n const args = parseCliArgs(process.argv.slice(2));\n const id = requireArg(args, \"profile-id\");\n const name = requireArg(args, \"name\");\n const isActive = !hasFlag(args, \"inactive\");\n\n const { upsertProfile } = await import(\"../src/config/profile-store.js\");\n const profile = await upsertProfile({ id, name, isActive });\n\n console.log(\"Profile upsert OK\");\n console.log(JSON.stringify({\n profile_id: profile.id,\n name: profile.name,\n is_active: profile.isActive,\n created_at: profile.createdAt.toISOString(),\n updated_at: profile.updatedAt.toISOString(),\n }, null, 2));\n}\n\nmain().catch((error: unknown) => {\n console.error(\"Profile upsert failed\");\n console.error(error);\n process.exitCode = 1;\n});\n"],
|
|
5
|
+
"mappings": "AAAA,OAAO,aAAa;AAEpB,SAAS,SAAS,cAAc,cAAc,kBAAkB;AAEhE,eAAe,OAAO;AACpB,eAAa;AAEb,QAAM,OAAO,aAAa,QAAQ,KAAK,MAAM,CAAC,CAAC;AAC/C,QAAM,KAAK,WAAW,MAAM,YAAY;AACxC,QAAM,OAAO,WAAW,MAAM,MAAM;AACpC,QAAM,WAAW,CAAC,QAAQ,MAAM,UAAU;AAE1C,QAAM,EAAE,cAAc,IAAI,MAAM,OAAO,gCAAgC;AACvE,QAAM,UAAU,MAAM,cAAc,EAAE,IAAI,MAAM,SAAS,CAAC;AAE1D,UAAQ,IAAI,mBAAmB;AAC/B,UAAQ,IAAI,KAAK,UAAU;AAAA,IACzB,YAAY,QAAQ;AAAA,IACpB,MAAM,QAAQ;AAAA,IACd,WAAW,QAAQ;AAAA,IACnB,YAAY,QAAQ,UAAU,YAAY;AAAA,IAC1C,YAAY,QAAQ,UAAU,YAAY;AAAA,EAC5C,GAAG,MAAM,CAAC,CAAC;AACb;AAEA,KAAK,EAAE,MAAM,CAAC,UAAmB;AAC/B,UAAQ,MAAM,uBAAuB;AACrC,UAAQ,MAAM,KAAK;AACnB,UAAQ,WAAW;AACrB,CAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import { loadLocalEnv } from "./_helpers.js";
|
|
3
|
+
async function main() {
|
|
4
|
+
loadLocalEnv();
|
|
5
|
+
const { listVtexConnections } = await import("../src/config/vtex-profile-store.js");
|
|
6
|
+
const connections = await listVtexConnections();
|
|
7
|
+
console.log(
|
|
8
|
+
JSON.stringify(
|
|
9
|
+
connections.map((connection) => ({
|
|
10
|
+
profile_id: connection.profileId,
|
|
11
|
+
profile_name: connection.profileName,
|
|
12
|
+
account_name: connection.accountName,
|
|
13
|
+
is_active: connection.isActive,
|
|
14
|
+
status: connection.status,
|
|
15
|
+
last_validated_at: connection.lastValidatedAt?.toISOString() ?? null,
|
|
16
|
+
last_error: connection.lastError
|
|
17
|
+
})),
|
|
18
|
+
null,
|
|
19
|
+
2
|
|
20
|
+
)
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
main().catch((error) => {
|
|
24
|
+
console.error("VTEX connection list failed");
|
|
25
|
+
console.error(error);
|
|
26
|
+
process.exitCode = 1;
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=admin-vtex-list.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../scripts/admin-vtex-list.ts"],
|
|
4
|
+
"sourcesContent": ["import process from \"node:process\";\n\nimport { loadLocalEnv } from \"./_helpers.js\";\n\nasync function main() {\n loadLocalEnv();\n\n const { listVtexConnections } = await import(\"../src/config/vtex-profile-store.js\");\n const connections = await listVtexConnections();\n\n console.log(\n JSON.stringify(\n connections.map((connection) => ({\n profile_id: connection.profileId,\n profile_name: connection.profileName,\n account_name: connection.accountName,\n is_active: connection.isActive,\n status: connection.status,\n last_validated_at: connection.lastValidatedAt?.toISOString() ?? null,\n last_error: connection.lastError,\n })),\n null,\n 2\n )\n );\n}\n\nmain().catch((error: unknown) => {\n console.error(\"VTEX connection list failed\");\n console.error(error);\n process.exitCode = 1;\n});\n"],
|
|
5
|
+
"mappings": "AAAA,OAAO,aAAa;AAEpB,SAAS,oBAAoB;AAE7B,eAAe,OAAO;AACpB,eAAa;AAEb,QAAM,EAAE,oBAAoB,IAAI,MAAM,OAAO,qCAAqC;AAClF,QAAM,cAAc,MAAM,oBAAoB;AAE9C,UAAQ;AAAA,IACN,KAAK;AAAA,MACH,YAAY,IAAI,CAAC,gBAAgB;AAAA,QAC/B,YAAY,WAAW;AAAA,QACvB,cAAc,WAAW;AAAA,QACzB,cAAc,WAAW;AAAA,QACzB,WAAW,WAAW;AAAA,QACtB,QAAQ,WAAW;AAAA,QACnB,mBAAmB,WAAW,iBAAiB,YAAY,KAAK;AAAA,QAChE,YAAY,WAAW;AAAA,MACzB,EAAE;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;AAEA,KAAK,EAAE,MAAM,CAAC,UAAmB;AAC/B,UAAQ,MAAM,6BAA6B;AAC3C,UAAQ,MAAM,KAAK;AACnB,UAAQ,WAAW;AACrB,CAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import { hasFlag, loadLocalEnv, parseCliArgs, requireArg } from "./_helpers.js";
|
|
3
|
+
async function main() {
|
|
4
|
+
loadLocalEnv();
|
|
5
|
+
const args = parseCliArgs(process.argv.slice(2));
|
|
6
|
+
const profileId = requireArg(args, "profile-id");
|
|
7
|
+
const accountName = requireArg(args, "account-name");
|
|
8
|
+
const apiKey = requireArg(args, "api-key");
|
|
9
|
+
const apiToken = requireArg(args, "api-token");
|
|
10
|
+
const isActive = !hasFlag(args, "inactive");
|
|
11
|
+
const [{ getProfile }, { encryptSecret }, { upsertVtexConnection }, { buildVtexUrls }, { validateVtexConfig }] = await Promise.all([
|
|
12
|
+
import("../src/config/profile-store.js"),
|
|
13
|
+
import("../src/config/vtex-crypto.js"),
|
|
14
|
+
import("../src/config/vtex-profile-store.js"),
|
|
15
|
+
import("../src/config/vtex.js"),
|
|
16
|
+
import("../src/services/vtex/vtex-api.js")
|
|
17
|
+
]);
|
|
18
|
+
const profile = await getProfile(profileId);
|
|
19
|
+
if (!profile) {
|
|
20
|
+
throw new Error(`Profile not found: "${profileId}"`);
|
|
21
|
+
}
|
|
22
|
+
const encryptedApiKey = encryptSecret(apiKey);
|
|
23
|
+
const encryptedApiToken = encryptSecret(apiToken);
|
|
24
|
+
const urls = buildVtexUrls(accountName);
|
|
25
|
+
let status = "valid";
|
|
26
|
+
let lastError = null;
|
|
27
|
+
let lastValidatedAt = null;
|
|
28
|
+
try {
|
|
29
|
+
await validateVtexConfig({
|
|
30
|
+
accountName,
|
|
31
|
+
apiKey,
|
|
32
|
+
apiToken,
|
|
33
|
+
baseUrl: urls.baseUrl,
|
|
34
|
+
pricingBaseUrl: urls.pricingBaseUrl
|
|
35
|
+
});
|
|
36
|
+
lastValidatedAt = /* @__PURE__ */ new Date();
|
|
37
|
+
} catch (error) {
|
|
38
|
+
status = "invalid";
|
|
39
|
+
lastError = error instanceof Error ? error.message : "VTEX validation failed";
|
|
40
|
+
lastValidatedAt = /* @__PURE__ */ new Date();
|
|
41
|
+
}
|
|
42
|
+
const connection = await upsertVtexConnection({
|
|
43
|
+
profileId,
|
|
44
|
+
accountName,
|
|
45
|
+
apiKeyEncrypted: encryptedApiKey,
|
|
46
|
+
apiTokenEncrypted: encryptedApiToken,
|
|
47
|
+
isActive,
|
|
48
|
+
status,
|
|
49
|
+
lastValidatedAt,
|
|
50
|
+
lastError
|
|
51
|
+
});
|
|
52
|
+
console.log("VTEX connection upsert OK");
|
|
53
|
+
console.log(
|
|
54
|
+
JSON.stringify(
|
|
55
|
+
{
|
|
56
|
+
profile_id: connection.profileId,
|
|
57
|
+
account_name: connection.accountName,
|
|
58
|
+
is_active: connection.isActive,
|
|
59
|
+
status: connection.status,
|
|
60
|
+
last_validated_at: connection.lastValidatedAt?.toISOString() ?? null,
|
|
61
|
+
last_error: connection.lastError
|
|
62
|
+
},
|
|
63
|
+
null,
|
|
64
|
+
2
|
|
65
|
+
)
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
main().catch((error) => {
|
|
69
|
+
console.error("VTEX connection upsert failed");
|
|
70
|
+
console.error(error);
|
|
71
|
+
process.exitCode = 1;
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=admin-vtex-upsert.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../scripts/admin-vtex-upsert.ts"],
|
|
4
|
+
"sourcesContent": ["import process from \"node:process\";\n\nimport { hasFlag, loadLocalEnv, parseCliArgs, requireArg } from \"./_helpers.js\";\n\nasync function main() {\n loadLocalEnv();\n\n const args = parseCliArgs(process.argv.slice(2));\n const profileId = requireArg(args, \"profile-id\");\n const accountName = requireArg(args, \"account-name\");\n const apiKey = requireArg(args, \"api-key\");\n const apiToken = requireArg(args, \"api-token\");\n const isActive = !hasFlag(args, \"inactive\");\n\n const [{ getProfile }, { encryptSecret }, { upsertVtexConnection }, { buildVtexUrls }, { validateVtexConfig }] =\n await Promise.all([\n import(\"../src/config/profile-store.js\"),\n import(\"../src/config/vtex-crypto.js\"),\n import(\"../src/config/vtex-profile-store.js\"),\n import(\"../src/config/vtex.js\"),\n import(\"../src/services/vtex/vtex-api.js\"),\n ]);\n\n const profile = await getProfile(profileId);\n if (!profile) {\n throw new Error(`Profile not found: \"${profileId}\"`);\n }\n\n const encryptedApiKey = encryptSecret(apiKey);\n const encryptedApiToken = encryptSecret(apiToken);\n const urls = buildVtexUrls(accountName);\n\n let status: \"valid\" | \"invalid\" = \"valid\";\n let lastError: string | null = null;\n let lastValidatedAt: Date | null = null;\n\n try {\n await validateVtexConfig({\n accountName,\n apiKey,\n apiToken,\n baseUrl: urls.baseUrl,\n pricingBaseUrl: urls.pricingBaseUrl,\n });\n lastValidatedAt = new Date();\n } catch (error) {\n status = \"invalid\";\n lastError = error instanceof Error ? error.message : \"VTEX validation failed\";\n lastValidatedAt = new Date();\n }\n\n const connection = await upsertVtexConnection({\n profileId,\n accountName,\n apiKeyEncrypted: encryptedApiKey,\n apiTokenEncrypted: encryptedApiToken,\n isActive,\n status,\n lastValidatedAt,\n lastError,\n });\n\n console.log(\"VTEX connection upsert OK\");\n console.log(\n JSON.stringify(\n {\n profile_id: connection.profileId,\n account_name: connection.accountName,\n is_active: connection.isActive,\n status: connection.status,\n last_validated_at: connection.lastValidatedAt?.toISOString() ?? null,\n last_error: connection.lastError,\n },\n null,\n 2\n )\n );\n}\n\nmain().catch((error: unknown) => {\n console.error(\"VTEX connection upsert failed\");\n console.error(error);\n process.exitCode = 1;\n});\n"],
|
|
5
|
+
"mappings": "AAAA,OAAO,aAAa;AAEpB,SAAS,SAAS,cAAc,cAAc,kBAAkB;AAEhE,eAAe,OAAO;AACpB,eAAa;AAEb,QAAM,OAAO,aAAa,QAAQ,KAAK,MAAM,CAAC,CAAC;AAC/C,QAAM,YAAY,WAAW,MAAM,YAAY;AAC/C,QAAM,cAAc,WAAW,MAAM,cAAc;AACnD,QAAM,SAAS,WAAW,MAAM,SAAS;AACzC,QAAM,WAAW,WAAW,MAAM,WAAW;AAC7C,QAAM,WAAW,CAAC,QAAQ,MAAM,UAAU;AAE1C,QAAM,CAAC,EAAE,WAAW,GAAG,EAAE,cAAc,GAAG,EAAE,qBAAqB,GAAG,EAAE,cAAc,GAAG,EAAE,mBAAmB,CAAC,IAC3G,MAAM,QAAQ,IAAI;AAAA,IAChB,OAAO,gCAAgC;AAAA,IACvC,OAAO,8BAA8B;AAAA,IACrC,OAAO,qCAAqC;AAAA,IAC5C,OAAO,uBAAuB;AAAA,IAC9B,OAAO,kCAAkC;AAAA,EAC3C,CAAC;AAEH,QAAM,UAAU,MAAM,WAAW,SAAS;AAC1C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,uBAAuB,SAAS,GAAG;AAAA,EACrD;AAEA,QAAM,kBAAkB,cAAc,MAAM;AAC5C,QAAM,oBAAoB,cAAc,QAAQ;AAChD,QAAM,OAAO,cAAc,WAAW;AAEtC,MAAI,SAA8B;AAClC,MAAI,YAA2B;AAC/B,MAAI,kBAA+B;AAEnC,MAAI;AACF,UAAM,mBAAmB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS,KAAK;AAAA,MACd,gBAAgB,KAAK;AAAA,IACvB,CAAC;AACD,sBAAkB,oBAAI,KAAK;AAAA,EAC7B,SAAS,OAAO;AACd,aAAS;AACT,gBAAY,iBAAiB,QAAQ,MAAM,UAAU;AACrD,sBAAkB,oBAAI,KAAK;AAAA,EAC7B;AAEA,QAAM,aAAa,MAAM,qBAAqB;AAAA,IAC5C;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IACjB,mBAAmB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,UAAQ,IAAI,2BAA2B;AACvC,UAAQ;AAAA,IACN,KAAK;AAAA,MACH;AAAA,QACE,YAAY,WAAW;AAAA,QACvB,cAAc,WAAW;AAAA,QACzB,WAAW,WAAW;AAAA,QACtB,QAAQ,WAAW;AAAA,QACnB,mBAAmB,WAAW,iBAAiB,YAAY,KAAK;AAAA,QAChE,YAAY,WAAW;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;AAEA,KAAK,EAAE,MAAM,CAAC,UAAmB;AAC/B,UAAQ,MAAM,+BAA+B;AAC7C,UAAQ,MAAM,KAAK;AACnB,UAAQ,WAAW;AACrB,CAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|