@yoryoboy/bi-mcp 1.10.0 → 1.13.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 +4 -5
- package/dist/.tsbuildinfo +1 -1
- package/dist/index.js +398 -8
- package/dist/index.js.map +2 -2
- package/dist/mcp-use.json +2 -2
- package/dist/src/config/__tests__/meta.test.js +35 -0
- package/dist/src/config/__tests__/meta.test.js.map +7 -0
- package/dist/src/config/mercadolibre-profile-store.js +25 -0
- package/dist/src/config/mercadolibre-profile-store.js.map +2 -2
- package/dist/src/config/meta-store.js +109 -0
- package/dist/src/config/meta-store.js.map +7 -0
- package/dist/src/config/meta.js +0 -2
- package/dist/src/config/meta.js.map +2 -2
- package/dist/src/meta/__tests__/meta-utils.test.js +155 -0
- package/dist/src/meta/__tests__/meta-utils.test.js.map +7 -0
- package/dist/src/services/mercadolibre/__tests__/mercadolibre-api.test.js +265 -0
- package/dist/src/services/mercadolibre/__tests__/mercadolibre-api.test.js.map +7 -0
- package/dist/src/services/mercadolibre/__tests__/mercadolibre-items.test.js +311 -0
- package/dist/src/services/mercadolibre/__tests__/mercadolibre-items.test.js.map +7 -0
- package/dist/src/services/mercadolibre/__tests__/mercadolibre-orders.test.js +220 -0
- package/dist/src/services/mercadolibre/__tests__/mercadolibre-orders.test.js.map +7 -0
- package/dist/src/services/meta/__tests__/meta-ads.test.js +126 -0
- package/dist/src/services/meta/__tests__/meta-ads.test.js.map +7 -0
- package/dist/src/services/meta/__tests__/meta-api.test.js +70 -0
- package/dist/src/services/meta/__tests__/meta-api.test.js.map +7 -0
- package/dist/src/services/meta/meta-ads.js +94 -40
- package/dist/src/services/meta/meta-ads.js.map +2 -2
- package/dist/src/services/meta/meta-api.js +8 -6
- package/dist/src/services/meta/meta-api.js.map +2 -2
- package/dist/src/services/vtex/__tests__/vtex-catalog-write-batch.test.js +165 -0
- package/dist/src/services/vtex/__tests__/vtex-catalog-write-batch.test.js.map +7 -0
- package/dist/src/services/vtex/__tests__/vtex-catalog-write-eans.test.js +92 -0
- package/dist/src/services/vtex/__tests__/vtex-catalog-write-eans.test.js.map +7 -0
- package/dist/src/services/vtex/__tests__/vtex-catalog-write-products.test.js +41 -0
- package/dist/src/services/vtex/__tests__/vtex-catalog-write-products.test.js.map +7 -0
- package/dist/src/services/vtex/__tests__/vtex-catalog.test.js +80 -0
- package/dist/src/services/vtex/__tests__/vtex-catalog.test.js.map +7 -0
- package/dist/src/services/vtex/__tests__/vtex-orders-write-http.test.js +85 -0
- package/dist/src/services/vtex/__tests__/vtex-orders-write-http.test.js.map +7 -0
- package/dist/src/services/vtex/__tests__/vtex-orders-write-state-validation.test.js +251 -0
- package/dist/src/services/vtex/__tests__/vtex-orders-write-state-validation.test.js.map +7 -0
- package/dist/src/services/vtex/__tests__/vtex-write.test.js +111 -0
- package/dist/src/services/vtex/__tests__/vtex-write.test.js.map +7 -0
- package/dist/src/services/vtex/vtex-catalog-write.js +194 -1
- package/dist/src/services/vtex/vtex-catalog-write.js.map +2 -2
- package/dist/src/services/vtex/vtex-catalog.js +118 -1
- package/dist/src/services/vtex/vtex-catalog.js.map +2 -2
- package/dist/src/services/vtex/vtex-pricing-write.js +5 -0
- package/dist/src/services/vtex/vtex-pricing-write.js.map +2 -2
- package/dist/src/services/vtex/vtex-write.js +67 -1
- package/dist/src/services/vtex/vtex-write.js.map +2 -2
- package/dist/src/tools/config/list-profiles.js +85 -11
- package/dist/src/tools/config/list-profiles.js.map +2 -2
- package/dist/src/tools/index.js.map +2 -2
- package/dist/src/tools/mercadolibre/__tests__/helpers.test.js +37 -0
- package/dist/src/tools/mercadolibre/__tests__/helpers.test.js.map +7 -0
- package/dist/src/tools/mercadolibre/__tests__/profile-resolution.test.js +30 -0
- package/dist/src/tools/mercadolibre/__tests__/profile-resolution.test.js.map +7 -0
- package/dist/src/tools/mercadolibre/profile-resolution.js +4 -50
- package/dist/src/tools/mercadolibre/profile-resolution.js.map +2 -2
- package/dist/src/tools/meta/__tests__/pagination.test.js +133 -0
- package/dist/src/tools/meta/__tests__/pagination.test.js.map +7 -0
- package/dist/src/tools/meta/__tests__/profile-access.test.js +262 -0
- package/dist/src/tools/meta/__tests__/profile-access.test.js.map +7 -0
- package/dist/src/tools/meta/__tests__/read-tools.test.js +722 -0
- package/dist/src/tools/meta/__tests__/read-tools.test.js.map +7 -0
- package/dist/src/tools/meta/__tests__/schemas.test.js +103 -0
- package/dist/src/tools/meta/__tests__/schemas.test.js.map +7 -0
- package/dist/src/tools/meta/account-overview.js +37 -19
- package/dist/src/tools/meta/account-overview.js.map +2 -2
- package/dist/src/tools/meta/ad-account-info.js +31 -6
- package/dist/src/tools/meta/ad-account-info.js.map +2 -2
- package/dist/src/tools/meta/ads-performance.js +35 -21
- package/dist/src/tools/meta/ads-performance.js.map +2 -2
- package/dist/src/tools/meta/campaign-performance.js +35 -18
- package/dist/src/tools/meta/campaign-performance.js.map +2 -2
- package/dist/src/tools/meta/list-accessible-ad-accounts.js +39 -10
- package/dist/src/tools/meta/list-accessible-ad-accounts.js.map +2 -2
- package/dist/src/tools/meta/list-accessible-businesses.js +37 -13
- package/dist/src/tools/meta/list-accessible-businesses.js.map +2 -2
- package/dist/src/tools/meta/placement-mix.js +37 -22
- package/dist/src/tools/meta/placement-mix.js.map +2 -2
- package/dist/src/tools/meta/profile-access.js +215 -0
- package/dist/src/tools/meta/profile-access.js.map +7 -0
- package/dist/src/tools/meta/schema-helpers.js +19 -0
- package/dist/src/tools/meta/schema-helpers.js.map +7 -0
- package/dist/src/tools/meta/time-series.js +40 -23
- package/dist/src/tools/meta/time-series.js.map +2 -2
- package/dist/src/tools/vtex/__tests__/catalog-admin-batch.test.js +233 -0
- package/dist/src/tools/vtex/__tests__/catalog-admin-batch.test.js.map +7 -0
- package/dist/src/tools/vtex/__tests__/catalog-admin-categories.test.js +649 -0
- package/dist/src/tools/vtex/__tests__/catalog-admin-categories.test.js.map +7 -0
- package/dist/src/tools/vtex/__tests__/catalog-admin-product-specifications.test.js +339 -0
- package/dist/src/tools/vtex/__tests__/catalog-admin-product-specifications.test.js.map +7 -0
- package/dist/src/tools/vtex/__tests__/catalog-admin-products-skus.test.js +235 -0
- package/dist/src/tools/vtex/__tests__/catalog-admin-products-skus.test.js.map +7 -0
- package/dist/src/tools/vtex/__tests__/catalog-navigation-reads.test.js +372 -0
- package/dist/src/tools/vtex/__tests__/catalog-navigation-reads.test.js.map +7 -0
- package/dist/src/tools/vtex/__tests__/catalog-navigation-surface.test.js +57 -0
- package/dist/src/tools/vtex/__tests__/catalog-navigation-surface.test.js.map +7 -0
- package/dist/src/tools/vtex/__tests__/write-helpers.test.js +97 -0
- package/dist/src/tools/vtex/__tests__/write-helpers.test.js.map +7 -0
- package/dist/src/tools/vtex/activate-sku.js +1 -48
- package/dist/src/tools/vtex/activate-sku.js.map +2 -2
- package/dist/src/tools/vtex/associate-specification.js +3 -54
- package/dist/src/tools/vtex/associate-specification.js.map +2 -2
- package/dist/src/tools/vtex/attach-catalog-image.js +3 -57
- package/dist/src/tools/vtex/attach-catalog-image.js.map +2 -2
- package/dist/src/tools/vtex/catalog-admin-batch.js +298 -0
- package/dist/src/tools/vtex/catalog-admin-batch.js.map +7 -0
- package/dist/src/tools/vtex/catalog-admin-categories.js +542 -0
- package/dist/src/tools/vtex/catalog-admin-categories.js.map +7 -0
- package/dist/src/tools/vtex/catalog-admin-product-specifications.js +275 -0
- package/dist/src/tools/vtex/catalog-admin-product-specifications.js.map +7 -0
- package/dist/src/tools/vtex/catalog-admin-products-skus.js +475 -0
- package/dist/src/tools/vtex/catalog-admin-products-skus.js.map +7 -0
- package/dist/src/tools/vtex/catalog-navigation-reads.js +430 -0
- package/dist/src/tools/vtex/catalog-navigation-reads.js.map +7 -0
- package/dist/src/tools/vtex/create-brand.js +1 -64
- package/dist/src/tools/vtex/create-brand.js.map +2 -2
- package/dist/src/tools/vtex/create-category.js +1 -76
- package/dist/src/tools/vtex/create-category.js.map +2 -2
- package/dist/src/tools/vtex/create-product-with-sku.js +3 -114
- package/dist/src/tools/vtex/create-product-with-sku.js.map +2 -2
- package/dist/src/tools/vtex/create-specification-value.js +3 -47
- package/dist/src/tools/vtex/create-specification-value.js.map +2 -2
- package/dist/src/tools/vtex/create-specification.js +1 -80
- package/dist/src/tools/vtex/create-specification.js.map +2 -2
- package/dist/src/tools/vtex/deactivate-sku.js +1 -48
- package/dist/src/tools/vtex/deactivate-sku.js.map +2 -2
- package/dist/src/tools/vtex/delete-all-product-specifications.js +9 -0
- package/dist/src/tools/vtex/delete-all-product-specifications.js.map +7 -0
- package/dist/src/tools/vtex/delete-all-sku-specifications.js +9 -0
- package/dist/src/tools/vtex/delete-all-sku-specifications.js.map +7 -0
- package/dist/src/tools/vtex/delete-brand.js +9 -0
- package/dist/src/tools/vtex/delete-brand.js.map +7 -0
- package/dist/src/tools/vtex/delete-catalog-image.js +9 -0
- package/dist/src/tools/vtex/delete-catalog-image.js.map +7 -0
- package/dist/src/tools/vtex/delete-product-specification.js +9 -0
- package/dist/src/tools/vtex/delete-product-specification.js.map +7 -0
- package/dist/src/tools/vtex/delete-sku-price.js +55 -0
- package/dist/src/tools/vtex/delete-sku-price.js.map +7 -0
- package/dist/src/tools/vtex/delete-sku-specification.js +9 -0
- package/dist/src/tools/vtex/delete-sku-specification.js.map +7 -0
- package/dist/src/tools/vtex/get-brand.js +6 -0
- package/dist/src/tools/vtex/get-brand.js.map +7 -0
- package/dist/src/tools/vtex/get-category-tree.js +6 -0
- package/dist/src/tools/vtex/get-category-tree.js.map +7 -0
- package/dist/src/tools/vtex/get-category.js +6 -0
- package/dist/src/tools/vtex/get-category.js.map +7 -0
- package/dist/src/tools/vtex/get-product-specifications.js +9 -0
- package/dist/src/tools/vtex/get-product-specifications.js.map +7 -0
- package/dist/src/tools/vtex/get-product.js +6 -0
- package/dist/src/tools/vtex/get-product.js.map +7 -0
- package/dist/src/tools/vtex/get-sku.js +6 -0
- package/dist/src/tools/vtex/get-sku.js.map +7 -0
- package/dist/src/tools/vtex/index.js +23 -1
- package/dist/src/tools/vtex/index.js.map +2 -2
- package/dist/src/tools/vtex/list-brands.js +6 -0
- package/dist/src/tools/vtex/list-brands.js.map +7 -0
- package/dist/src/tools/vtex/list-categories.js +6 -0
- package/dist/src/tools/vtex/list-categories.js.map +7 -0
- package/dist/src/tools/vtex/list-products-by-category.js +6 -0
- package/dist/src/tools/vtex/list-products-by-category.js.map +7 -0
- package/dist/src/tools/vtex/list-products.js +6 -0
- package/dist/src/tools/vtex/list-products.js.map +7 -0
- package/dist/src/tools/vtex/list-skus-by-product.js +6 -0
- package/dist/src/tools/vtex/list-skus-by-product.js.map +7 -0
- package/dist/src/tools/vtex/list-specification-groups.js +9 -0
- package/dist/src/tools/vtex/list-specification-groups.js.map +7 -0
- package/dist/src/tools/vtex/move-category.js +6 -0
- package/dist/src/tools/vtex/move-category.js.map +7 -0
- package/dist/src/tools/vtex/profile-resolution.js +4 -51
- package/dist/src/tools/vtex/profile-resolution.js.map +2 -2
- package/dist/src/tools/vtex/update-brand.js +6 -0
- package/dist/src/tools/vtex/update-brand.js.map +7 -0
- package/dist/src/tools/vtex/update-category.js +6 -0
- package/dist/src/tools/vtex/update-category.js.map +7 -0
- package/dist/src/tools/vtex/update-product-basic-fields.js +3 -65
- package/dist/src/tools/vtex/update-product-basic-fields.js.map +2 -2
- package/dist/src/tools/vtex/update-sku-basic-fields.js +1 -87
- package/dist/src/tools/vtex/update-sku-basic-fields.js.map +2 -2
- package/dist/src/tools/vtex/update-sku-price.js +21 -1
- package/dist/src/tools/vtex/update-sku-price.js.map +2 -2
- package/dist/src/tools/vtex/write-helpers.js +104 -14
- package/dist/src/tools/vtex/write-helpers.js.map +2 -2
- package/dist/src/utils/provider-profile-selection.js +117 -0
- package/dist/src/utils/provider-profile-selection.js.map +7 -0
- package/dist/tests/meli/mercadolibre-tool-handlers-medium-batch4.test.js +678 -0
- package/dist/tests/meli/mercadolibre-tool-handlers-medium-batch4.test.js.map +7 -0
- package/dist/tests/meli/mercadolibre-tool-handlers-monster-batch5.test.js +564 -0
- package/dist/tests/meli/mercadolibre-tool-handlers-monster-batch5.test.js.map +7 -0
- package/dist/tests/meli/mercadolibre-tool-handlers-monster-batch6.test.js +387 -0
- package/dist/tests/meli/mercadolibre-tool-handlers-monster-batch6.test.js.map +7 -0
- package/dist/tests/meli/mercadolibre-tool-handlers-monster-batch7.test.js +368 -0
- package/dist/tests/meli/mercadolibre-tool-handlers-monster-batch7.test.js.map +7 -0
- package/dist/tests/meli/mercadolibre-tool-handlers-small.test.js +626 -0
- package/dist/tests/meli/mercadolibre-tool-handlers-small.test.js.map +7 -0
- package/dist/tests/meli/mercadolibre-tool-handlers-write-batch8.test.js +480 -0
- package/dist/tests/meli/mercadolibre-tool-handlers-write-batch8.test.js.map +7 -0
- package/dist/tests/setup.js +2 -0
- package/dist/tests/setup.js.map +7 -0
- package/dist/tests/smoke/test-harness.test.js +7 -0
- package/dist/tests/smoke/test-harness.test.js.map +7 -0
- package/dist/tests/vtex/read-only-utils.test.js +161 -0
- package/dist/tests/vtex/read-only-utils.test.js.map +7 -0
- package/dist/tests/vtex/vtex-catalog-admin-docs.test.js +24 -0
- package/dist/tests/vtex/vtex-catalog-admin-docs.test.js.map +7 -0
- package/dist/tests/vtex/vtex-catalog-admin-surface.test.js +30 -0
- package/dist/tests/vtex/vtex-catalog-admin-surface.test.js.map +7 -0
- package/dist/tests/vtex/vtex-catalog-write-tools.test.js +712 -0
- package/dist/tests/vtex/vtex-catalog-write-tools.test.js.map +7 -0
- package/dist/tests/vtex/vtex-catalog.service.test.js +51 -0
- package/dist/tests/vtex/vtex-catalog.service.test.js.map +7 -0
- package/dist/tests/vtex/vtex-inventory-tools.test.js +201 -0
- package/dist/tests/vtex/vtex-inventory-tools.test.js.map +7 -0
- package/dist/tests/vtex/vtex-logistics.service.test.js +134 -0
- package/dist/tests/vtex/vtex-logistics.service.test.js.map +7 -0
- package/dist/tests/vtex/vtex-order-details.tool.test.js +141 -0
- package/dist/tests/vtex/vtex-order-details.tool.test.js.map +7 -0
- package/dist/tests/vtex/vtex-order-write-tools.test.js +483 -0
- package/dist/tests/vtex/vtex-order-write-tools.test.js.map +7 -0
- package/dist/tests/vtex/vtex-orders-summary.tool.test.js +185 -0
- package/dist/tests/vtex/vtex-orders-summary.tool.test.js.map +7 -0
- package/dist/tests/vtex/vtex-orders.service.test.js +120 -0
- package/dist/tests/vtex/vtex-orders.service.test.js.map +7 -0
- package/dist/tests/vtex/vtex-pricing-write-tools.test.js +202 -0
- package/dist/tests/vtex/vtex-pricing-write-tools.test.js.map +7 -0
- package/dist/tests/vtex/vtex-pricing-write.service.test.js +106 -0
- package/dist/tests/vtex/vtex-pricing-write.service.test.js.map +7 -0
- package/dist/tests/vtex/vtex-pricing.service.test.js +88 -0
- package/dist/tests/vtex/vtex-pricing.service.test.js.map +7 -0
- package/dist/tests/vtex/vtex-small-tools.test.js +190 -0
- package/dist/tests/vtex/vtex-small-tools.test.js.map +7 -0
- package/dist/tests/vtex/vtex-write-simple-tools.test.js +647 -0
- package/dist/tests/vtex/vtex-write-simple-tools.test.js.map +7 -0
- package/dist/vitest.config.js +15 -0
- package/dist/vitest.config.js.map +7 -0
- package/package.json +6 -2
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import {
|
|
3
|
+
deleteAllSkuSpecifications,
|
|
4
|
+
deleteAllProductSpecifications,
|
|
5
|
+
deleteBrand,
|
|
6
|
+
deleteProductSpecification,
|
|
7
|
+
deleteSkuFile,
|
|
8
|
+
deleteSkuSpecification
|
|
9
|
+
} from "../../services/vtex/vtex-catalog-write.js";
|
|
10
|
+
import {
|
|
11
|
+
buildWriteSuccessResponse,
|
|
12
|
+
confirmationNoteSchemaField,
|
|
13
|
+
confirmationSchemaField,
|
|
14
|
+
handleVtexWriteError,
|
|
15
|
+
requireExplicitConfirmation,
|
|
16
|
+
resolveVtexWriteProfile,
|
|
17
|
+
vtexProfileIdSchemaField
|
|
18
|
+
} from "./write-helpers.js";
|
|
19
|
+
const deleteProductSpecificationSchema = z.object({
|
|
20
|
+
profileId: vtexProfileIdSchemaField,
|
|
21
|
+
productId: z.string().trim().min(1).describe("VTEX product identifier."),
|
|
22
|
+
specificationId: z.string().trim().min(1).describe(
|
|
23
|
+
"Product-specification association ID (`Id` from `vtex_get_product_specifications`). This is the spec record ID used by VTEX delete/update, not the field ID."
|
|
24
|
+
)
|
|
25
|
+
});
|
|
26
|
+
async function deleteProductSpecificationHandler({
|
|
27
|
+
profileId,
|
|
28
|
+
productId,
|
|
29
|
+
specificationId
|
|
30
|
+
}) {
|
|
31
|
+
try {
|
|
32
|
+
const profileResolution = await resolveVtexWriteProfile(profileId);
|
|
33
|
+
if (!profileResolution.ok) {
|
|
34
|
+
return profileResolution.response;
|
|
35
|
+
}
|
|
36
|
+
const resolvedProfileId = profileResolution.value.profileId;
|
|
37
|
+
await deleteProductSpecification(resolvedProfileId, productId, specificationId);
|
|
38
|
+
return buildWriteSuccessResponse({
|
|
39
|
+
profileId: resolvedProfileId,
|
|
40
|
+
operation: "delete_product_specification",
|
|
41
|
+
resourceId: productId,
|
|
42
|
+
riskLevel: "medium",
|
|
43
|
+
message: "Product specification deleted successfully.",
|
|
44
|
+
before: null,
|
|
45
|
+
after: null,
|
|
46
|
+
details: {
|
|
47
|
+
product_id: productId,
|
|
48
|
+
specification_id: specificationId
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
} catch (err) {
|
|
52
|
+
return handleVtexWriteError(
|
|
53
|
+
err,
|
|
54
|
+
`Failed to delete specification ${specificationId} from product ${productId}`
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const deleteAllProductSpecificationsSchema = z.object({
|
|
59
|
+
profileId: vtexProfileIdSchemaField,
|
|
60
|
+
productId: z.string().trim().min(1).describe("VTEX product identifier."),
|
|
61
|
+
confirmed: confirmationSchemaField,
|
|
62
|
+
confirmationNote: confirmationNoteSchemaField
|
|
63
|
+
});
|
|
64
|
+
async function deleteAllProductSpecificationsHandler({
|
|
65
|
+
profileId,
|
|
66
|
+
productId,
|
|
67
|
+
confirmed,
|
|
68
|
+
confirmationNote
|
|
69
|
+
}) {
|
|
70
|
+
const confirmationResponse = requireExplicitConfirmation(
|
|
71
|
+
confirmed,
|
|
72
|
+
"delete_all_product_specifications",
|
|
73
|
+
{
|
|
74
|
+
product_id: productId
|
|
75
|
+
}
|
|
76
|
+
);
|
|
77
|
+
if (confirmationResponse) {
|
|
78
|
+
return confirmationResponse;
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
const profileResolution = await resolveVtexWriteProfile(profileId);
|
|
82
|
+
if (!profileResolution.ok) {
|
|
83
|
+
return profileResolution.response;
|
|
84
|
+
}
|
|
85
|
+
const resolvedProfileId = profileResolution.value.profileId;
|
|
86
|
+
await deleteAllProductSpecifications(resolvedProfileId, productId);
|
|
87
|
+
return buildWriteSuccessResponse({
|
|
88
|
+
profileId: resolvedProfileId,
|
|
89
|
+
operation: "delete_all_product_specifications",
|
|
90
|
+
resourceId: productId,
|
|
91
|
+
riskLevel: "high",
|
|
92
|
+
confirmed: true,
|
|
93
|
+
confirmationNote,
|
|
94
|
+
message: "All product specifications deleted successfully.",
|
|
95
|
+
before: null,
|
|
96
|
+
after: null,
|
|
97
|
+
impactSummary: {
|
|
98
|
+
entities: 1,
|
|
99
|
+
entity_types: ["product_specifications"],
|
|
100
|
+
destructive: true
|
|
101
|
+
},
|
|
102
|
+
details: {
|
|
103
|
+
product_id: productId
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
} catch (err) {
|
|
107
|
+
return handleVtexWriteError(err, `Failed to delete all specifications from product ${productId}`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
const deleteBrandSchema = z.object({
|
|
111
|
+
profileId: vtexProfileIdSchemaField,
|
|
112
|
+
brandId: z.string().trim().min(1).describe("VTEX brand ID. The caller must already know this ID; no pre-delete lookup is performed.")
|
|
113
|
+
});
|
|
114
|
+
async function deleteBrandHandler({
|
|
115
|
+
profileId,
|
|
116
|
+
brandId
|
|
117
|
+
}) {
|
|
118
|
+
try {
|
|
119
|
+
const profileResolution = await resolveVtexWriteProfile(profileId);
|
|
120
|
+
if (!profileResolution.ok) {
|
|
121
|
+
return profileResolution.response;
|
|
122
|
+
}
|
|
123
|
+
const resolvedProfileId = profileResolution.value.profileId;
|
|
124
|
+
await deleteBrand(resolvedProfileId, brandId);
|
|
125
|
+
return buildWriteSuccessResponse({
|
|
126
|
+
profileId: resolvedProfileId,
|
|
127
|
+
operation: "delete_brand",
|
|
128
|
+
resourceId: brandId,
|
|
129
|
+
riskLevel: "medium",
|
|
130
|
+
message: "Brand deleted successfully.",
|
|
131
|
+
before: null,
|
|
132
|
+
after: null,
|
|
133
|
+
details: {
|
|
134
|
+
brand_id: brandId
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
} catch (err) {
|
|
138
|
+
return handleVtexWriteError(err, `Failed to delete brand ${brandId}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
const deleteCatalogImageSchema = z.object({
|
|
142
|
+
profileId: vtexProfileIdSchemaField,
|
|
143
|
+
skuId: z.string().trim().min(1).describe("VTEX SKU identifier."),
|
|
144
|
+
imageId: z.string().trim().min(1).describe("Image identifier to delete. The caller must already know this ID; no pre-delete lookup is performed.")
|
|
145
|
+
});
|
|
146
|
+
async function deleteCatalogImageHandler({
|
|
147
|
+
profileId,
|
|
148
|
+
skuId,
|
|
149
|
+
imageId
|
|
150
|
+
}) {
|
|
151
|
+
try {
|
|
152
|
+
const profileResolution = await resolveVtexWriteProfile(profileId);
|
|
153
|
+
if (!profileResolution.ok) {
|
|
154
|
+
return profileResolution.response;
|
|
155
|
+
}
|
|
156
|
+
const resolvedProfileId = profileResolution.value.profileId;
|
|
157
|
+
await deleteSkuFile(resolvedProfileId, skuId, imageId);
|
|
158
|
+
return buildWriteSuccessResponse({
|
|
159
|
+
profileId: resolvedProfileId,
|
|
160
|
+
operation: "delete_catalog_image",
|
|
161
|
+
resourceId: skuId,
|
|
162
|
+
riskLevel: "medium",
|
|
163
|
+
message: "Catalog image deleted successfully.",
|
|
164
|
+
before: null,
|
|
165
|
+
after: null,
|
|
166
|
+
details: {
|
|
167
|
+
sku_id: skuId,
|
|
168
|
+
image_id: imageId
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
} catch (err) {
|
|
172
|
+
return handleVtexWriteError(err, `Failed to delete image ${imageId} from SKU ${skuId}`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
const deleteSkuSpecificationSchema = z.object({
|
|
176
|
+
profileId: vtexProfileIdSchemaField,
|
|
177
|
+
skuId: z.string().trim().min(1).describe("VTEX SKU identifier."),
|
|
178
|
+
specificationId: z.string().trim().min(1).describe("Specification field ID to remove from the SKU.")
|
|
179
|
+
});
|
|
180
|
+
async function deleteSkuSpecificationHandler({
|
|
181
|
+
profileId,
|
|
182
|
+
skuId,
|
|
183
|
+
specificationId
|
|
184
|
+
}) {
|
|
185
|
+
try {
|
|
186
|
+
const profileResolution = await resolveVtexWriteProfile(profileId);
|
|
187
|
+
if (!profileResolution.ok) {
|
|
188
|
+
return profileResolution.response;
|
|
189
|
+
}
|
|
190
|
+
const resolvedProfileId = profileResolution.value.profileId;
|
|
191
|
+
await deleteSkuSpecification(resolvedProfileId, skuId, specificationId);
|
|
192
|
+
return buildWriteSuccessResponse({
|
|
193
|
+
profileId: resolvedProfileId,
|
|
194
|
+
operation: "delete_sku_specification",
|
|
195
|
+
resourceId: skuId,
|
|
196
|
+
riskLevel: "medium",
|
|
197
|
+
message: "SKU specification deleted successfully.",
|
|
198
|
+
before: null,
|
|
199
|
+
after: null,
|
|
200
|
+
details: {
|
|
201
|
+
sku_id: skuId,
|
|
202
|
+
specification_id: specificationId
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
} catch (err) {
|
|
206
|
+
return handleVtexWriteError(err, `Failed to delete specification ${specificationId} from SKU ${skuId}`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
const deleteAllSkuSpecificationsSchema = z.object({
|
|
210
|
+
profileId: vtexProfileIdSchemaField,
|
|
211
|
+
skuId: z.string().trim().min(1).describe("VTEX SKU identifier."),
|
|
212
|
+
confirmed: confirmationSchemaField,
|
|
213
|
+
confirmationNote: confirmationNoteSchemaField
|
|
214
|
+
});
|
|
215
|
+
async function deleteAllSkuSpecificationsHandler({
|
|
216
|
+
profileId,
|
|
217
|
+
skuId,
|
|
218
|
+
confirmed,
|
|
219
|
+
confirmationNote
|
|
220
|
+
}) {
|
|
221
|
+
const confirmationResponse = requireExplicitConfirmation(
|
|
222
|
+
confirmed,
|
|
223
|
+
"delete_all_sku_specifications",
|
|
224
|
+
{
|
|
225
|
+
sku_id: skuId
|
|
226
|
+
}
|
|
227
|
+
);
|
|
228
|
+
if (confirmationResponse) {
|
|
229
|
+
return confirmationResponse;
|
|
230
|
+
}
|
|
231
|
+
try {
|
|
232
|
+
const profileResolution = await resolveVtexWriteProfile(profileId);
|
|
233
|
+
if (!profileResolution.ok) {
|
|
234
|
+
return profileResolution.response;
|
|
235
|
+
}
|
|
236
|
+
const resolvedProfileId = profileResolution.value.profileId;
|
|
237
|
+
await deleteAllSkuSpecifications(resolvedProfileId, skuId);
|
|
238
|
+
return buildWriteSuccessResponse({
|
|
239
|
+
profileId: resolvedProfileId,
|
|
240
|
+
operation: "delete_all_sku_specifications",
|
|
241
|
+
resourceId: skuId,
|
|
242
|
+
riskLevel: "high",
|
|
243
|
+
confirmed: true,
|
|
244
|
+
confirmationNote,
|
|
245
|
+
message: "All SKU specifications deleted successfully.",
|
|
246
|
+
before: null,
|
|
247
|
+
after: null,
|
|
248
|
+
impactSummary: {
|
|
249
|
+
entities: 1,
|
|
250
|
+
entity_types: ["sku_specifications"],
|
|
251
|
+
destructive: true
|
|
252
|
+
},
|
|
253
|
+
details: {
|
|
254
|
+
sku_id: skuId
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
} catch (err) {
|
|
258
|
+
return handleVtexWriteError(err, `Failed to delete all specifications from SKU ${skuId}`);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
export {
|
|
262
|
+
deleteAllProductSpecificationsHandler,
|
|
263
|
+
deleteAllProductSpecificationsSchema,
|
|
264
|
+
deleteAllSkuSpecificationsHandler,
|
|
265
|
+
deleteAllSkuSpecificationsSchema,
|
|
266
|
+
deleteBrandHandler,
|
|
267
|
+
deleteBrandSchema,
|
|
268
|
+
deleteCatalogImageHandler,
|
|
269
|
+
deleteCatalogImageSchema,
|
|
270
|
+
deleteProductSpecificationHandler,
|
|
271
|
+
deleteProductSpecificationSchema,
|
|
272
|
+
deleteSkuSpecificationHandler,
|
|
273
|
+
deleteSkuSpecificationSchema
|
|
274
|
+
};
|
|
275
|
+
//# sourceMappingURL=catalog-admin-product-specifications.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/tools/vtex/catalog-admin-product-specifications.ts"],
|
|
4
|
+
"sourcesContent": ["import { z } from \"zod\";\n\nimport {\n deleteAllSkuSpecifications,\n deleteAllProductSpecifications,\n deleteBrand,\n deleteProductSpecification,\n deleteSkuFile,\n deleteSkuSpecification,\n} from \"../../services/vtex/vtex-catalog-write.js\";\nimport {\n buildWriteSuccessResponse,\n confirmationNoteSchemaField,\n confirmationSchemaField,\n handleVtexWriteError,\n requireExplicitConfirmation,\n resolveVtexWriteProfile,\n vtexProfileIdSchemaField,\n} from \"./write-helpers.js\";\n\nexport const deleteProductSpecificationSchema = z.object({\n profileId: vtexProfileIdSchemaField,\n productId: z.string().trim().min(1).describe(\"VTEX product identifier.\"),\n specificationId: z\n .string()\n .trim()\n .min(1)\n .describe(\n \"Product-specification association ID (`Id` from `vtex_get_product_specifications`). This is the spec record ID used by VTEX delete/update, not the field ID.\"\n ),\n});\n\nexport async function deleteProductSpecificationHandler({\n profileId,\n productId,\n specificationId,\n}: z.infer<typeof deleteProductSpecificationSchema>) {\n try {\n const profileResolution = await resolveVtexWriteProfile(profileId);\n if (!profileResolution.ok) {\n return profileResolution.response;\n }\n\n const resolvedProfileId = profileResolution.value.profileId;\n await deleteProductSpecification(resolvedProfileId, productId, specificationId);\n\n return buildWriteSuccessResponse({\n profileId: resolvedProfileId,\n operation: \"delete_product_specification\",\n resourceId: productId,\n riskLevel: \"medium\",\n message: \"Product specification deleted successfully.\",\n before: null,\n after: null,\n details: {\n product_id: productId,\n specification_id: specificationId,\n },\n });\n } catch (err) {\n return handleVtexWriteError(\n err,\n `Failed to delete specification ${specificationId} from product ${productId}`\n );\n }\n}\n\nexport const deleteAllProductSpecificationsSchema = z.object({\n profileId: vtexProfileIdSchemaField,\n productId: z.string().trim().min(1).describe(\"VTEX product identifier.\"),\n confirmed: confirmationSchemaField,\n confirmationNote: confirmationNoteSchemaField,\n});\n\nexport async function deleteAllProductSpecificationsHandler({\n profileId,\n productId,\n confirmed,\n confirmationNote,\n}: z.infer<typeof deleteAllProductSpecificationsSchema>) {\n const confirmationResponse = requireExplicitConfirmation(\n confirmed,\n \"delete_all_product_specifications\",\n {\n product_id: productId,\n }\n );\n if (confirmationResponse) {\n return confirmationResponse;\n }\n\n try {\n const profileResolution = await resolveVtexWriteProfile(profileId);\n if (!profileResolution.ok) {\n return profileResolution.response;\n }\n\n const resolvedProfileId = profileResolution.value.profileId;\n await deleteAllProductSpecifications(resolvedProfileId, productId);\n\n return buildWriteSuccessResponse({\n profileId: resolvedProfileId,\n operation: \"delete_all_product_specifications\",\n resourceId: productId,\n riskLevel: \"high\",\n confirmed: true,\n confirmationNote,\n message: \"All product specifications deleted successfully.\",\n before: null,\n after: null,\n impactSummary: {\n entities: 1,\n entity_types: [\"product_specifications\"],\n destructive: true,\n },\n details: {\n product_id: productId,\n },\n });\n } catch (err) {\n return handleVtexWriteError(err, `Failed to delete all specifications from product ${productId}`);\n }\n}\n\nexport const deleteBrandSchema = z.object({\n profileId: vtexProfileIdSchemaField,\n brandId: z\n .string()\n .trim()\n .min(1)\n .describe(\"VTEX brand ID. The caller must already know this ID; no pre-delete lookup is performed.\"),\n});\n\nexport async function deleteBrandHandler({\n profileId,\n brandId,\n}: z.infer<typeof deleteBrandSchema>) {\n try {\n const profileResolution = await resolveVtexWriteProfile(profileId);\n if (!profileResolution.ok) {\n return profileResolution.response;\n }\n\n const resolvedProfileId = profileResolution.value.profileId;\n await deleteBrand(resolvedProfileId, brandId);\n\n return buildWriteSuccessResponse({\n profileId: resolvedProfileId,\n operation: \"delete_brand\",\n resourceId: brandId,\n riskLevel: \"medium\",\n message: \"Brand deleted successfully.\",\n before: null,\n after: null,\n details: {\n brand_id: brandId,\n },\n });\n } catch (err) {\n return handleVtexWriteError(err, `Failed to delete brand ${brandId}`);\n }\n}\n\nexport const deleteCatalogImageSchema = z.object({\n profileId: vtexProfileIdSchemaField,\n skuId: z.string().trim().min(1).describe(\"VTEX SKU identifier.\"),\n imageId: z\n .string()\n .trim()\n .min(1)\n .describe(\"Image identifier to delete. The caller must already know this ID; no pre-delete lookup is performed.\"),\n});\n\nexport async function deleteCatalogImageHandler({\n profileId,\n skuId,\n imageId,\n}: z.infer<typeof deleteCatalogImageSchema>) {\n try {\n const profileResolution = await resolveVtexWriteProfile(profileId);\n if (!profileResolution.ok) {\n return profileResolution.response;\n }\n\n const resolvedProfileId = profileResolution.value.profileId;\n await deleteSkuFile(resolvedProfileId, skuId, imageId);\n\n return buildWriteSuccessResponse({\n profileId: resolvedProfileId,\n operation: \"delete_catalog_image\",\n resourceId: skuId,\n riskLevel: \"medium\",\n message: \"Catalog image deleted successfully.\",\n before: null,\n after: null,\n details: {\n sku_id: skuId,\n image_id: imageId,\n },\n });\n } catch (err) {\n return handleVtexWriteError(err, `Failed to delete image ${imageId} from SKU ${skuId}`);\n }\n}\n\nexport const deleteSkuSpecificationSchema = z.object({\n profileId: vtexProfileIdSchemaField,\n skuId: z.string().trim().min(1).describe(\"VTEX SKU identifier.\"),\n specificationId: z\n .string()\n .trim()\n .min(1)\n .describe(\"Specification field ID to remove from the SKU.\"),\n});\n\nexport async function deleteSkuSpecificationHandler({\n profileId,\n skuId,\n specificationId,\n}: z.infer<typeof deleteSkuSpecificationSchema>) {\n try {\n const profileResolution = await resolveVtexWriteProfile(profileId);\n if (!profileResolution.ok) {\n return profileResolution.response;\n }\n\n const resolvedProfileId = profileResolution.value.profileId;\n await deleteSkuSpecification(resolvedProfileId, skuId, specificationId);\n\n return buildWriteSuccessResponse({\n profileId: resolvedProfileId,\n operation: \"delete_sku_specification\",\n resourceId: skuId,\n riskLevel: \"medium\",\n message: \"SKU specification deleted successfully.\",\n before: null,\n after: null,\n details: {\n sku_id: skuId,\n specification_id: specificationId,\n },\n });\n } catch (err) {\n return handleVtexWriteError(err, `Failed to delete specification ${specificationId} from SKU ${skuId}`);\n }\n}\n\nexport const deleteAllSkuSpecificationsSchema = z.object({\n profileId: vtexProfileIdSchemaField,\n skuId: z.string().trim().min(1).describe(\"VTEX SKU identifier.\"),\n confirmed: confirmationSchemaField,\n confirmationNote: confirmationNoteSchemaField,\n});\n\nexport async function deleteAllSkuSpecificationsHandler({\n profileId,\n skuId,\n confirmed,\n confirmationNote,\n}: z.infer<typeof deleteAllSkuSpecificationsSchema>) {\n const confirmationResponse = requireExplicitConfirmation(\n confirmed,\n \"delete_all_sku_specifications\",\n {\n sku_id: skuId,\n }\n );\n if (confirmationResponse) {\n return confirmationResponse;\n }\n\n try {\n const profileResolution = await resolveVtexWriteProfile(profileId);\n if (!profileResolution.ok) {\n return profileResolution.response;\n }\n\n const resolvedProfileId = profileResolution.value.profileId;\n await deleteAllSkuSpecifications(resolvedProfileId, skuId);\n\n return buildWriteSuccessResponse({\n profileId: resolvedProfileId,\n operation: \"delete_all_sku_specifications\",\n resourceId: skuId,\n riskLevel: \"high\",\n confirmed: true,\n confirmationNote,\n message: \"All SKU specifications deleted successfully.\",\n before: null,\n after: null,\n impactSummary: {\n entities: 1,\n entity_types: [\"sku_specifications\"],\n destructive: true,\n },\n details: {\n sku_id: skuId,\n },\n });\n } catch (err) {\n return handleVtexWriteError(err, `Failed to delete all specifications from SKU ${skuId}`);\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|