@cmssy/ai-tools 0.92.0 → 0.94.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.
Files changed (85) hide show
  1. package/dist/index.d.ts +3 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/registry.d.ts.map +1 -1
  6. package/dist/registry.js +2 -0
  7. package/dist/registry.js.map +1 -1
  8. package/dist/schemas.d.ts +67 -1
  9. package/dist/schemas.d.ts.map +1 -1
  10. package/dist/schemas.js +110 -8
  11. package/dist/schemas.js.map +1 -1
  12. package/dist/tools/bulk-update-products.tool.js +3 -3
  13. package/dist/tools/bulk-update-products.tool.js.map +1 -1
  14. package/dist/tools/create-discount.tool.d.ts +4 -0
  15. package/dist/tools/create-discount.tool.d.ts.map +1 -1
  16. package/dist/tools/create-discount.tool.js +12 -7
  17. package/dist/tools/create-discount.tool.js.map +1 -1
  18. package/dist/tools/create-manual-order.tool.d.ts +1 -0
  19. package/dist/tools/create-manual-order.tool.d.ts.map +1 -1
  20. package/dist/tools/create-manual-order.tool.js +7 -4
  21. package/dist/tools/create-manual-order.tool.js.map +1 -1
  22. package/dist/tools/create-model.tool.d.ts +1 -1
  23. package/dist/tools/create-sales-channel.tool.d.ts +1 -0
  24. package/dist/tools/create-sales-channel.tool.d.ts.map +1 -1
  25. package/dist/tools/create-sales-channel.tool.js +10 -3
  26. package/dist/tools/create-sales-channel.tool.js.map +1 -1
  27. package/dist/tools/get-discount.tool.js +1 -1
  28. package/dist/tools/get-discount.tool.js.map +1 -1
  29. package/dist/tools/get-price-list.tool.d.ts +1 -0
  30. package/dist/tools/get-price-list.tool.d.ts.map +1 -1
  31. package/dist/tools/get-price-list.tool.js +12 -3
  32. package/dist/tools/get-price-list.tool.js.map +1 -1
  33. package/dist/tools/get-record.tool.js +1 -1
  34. package/dist/tools/get-record.tool.js.map +1 -1
  35. package/dist/tools/list-orders.tool.d.ts +1 -0
  36. package/dist/tools/list-orders.tool.d.ts.map +1 -1
  37. package/dist/tools/list-orders.tool.js +20 -4
  38. package/dist/tools/list-orders.tool.js.map +1 -1
  39. package/dist/tools/mark-order-paid.tool.d.ts.map +1 -1
  40. package/dist/tools/mark-order-paid.tool.js +5 -2
  41. package/dist/tools/mark-order-paid.tool.js.map +1 -1
  42. package/dist/tools/record-order-payment.tool.d.ts.map +1 -1
  43. package/dist/tools/record-order-payment.tool.js +5 -2
  44. package/dist/tools/record-order-payment.tool.js.map +1 -1
  45. package/dist/tools/refund-order.tool.d.ts.map +1 -1
  46. package/dist/tools/refund-order.tool.js +2 -2
  47. package/dist/tools/refund-order.tool.js.map +1 -1
  48. package/dist/tools/remove-price-list-entries.tool.d.ts +1 -0
  49. package/dist/tools/remove-price-list-entries.tool.d.ts.map +1 -1
  50. package/dist/tools/remove-price-list-entries.tool.js +1 -1
  51. package/dist/tools/remove-price-list-entries.tool.js.map +1 -1
  52. package/dist/tools/set-price-list-entries.tool.d.ts +1 -0
  53. package/dist/tools/set-price-list-entries.tool.d.ts.map +1 -1
  54. package/dist/tools/set-price-list-entries.tool.js +1 -1
  55. package/dist/tools/set-price-list-entries.tool.js.map +1 -1
  56. package/dist/tools/set-price-list-entry.tool.d.ts +1 -0
  57. package/dist/tools/set-price-list-entry.tool.d.ts.map +1 -1
  58. package/dist/tools/set-price-list-entry.tool.js +1 -1
  59. package/dist/tools/set-price-list-entry.tool.js.map +1 -1
  60. package/dist/tools/set-product-currency-prices.tool.d.ts +28 -0
  61. package/dist/tools/set-product-currency-prices.tool.d.ts.map +1 -0
  62. package/dist/tools/set-product-currency-prices.tool.js +38 -0
  63. package/dist/tools/set-product-currency-prices.tool.js.map +1 -0
  64. package/dist/tools/set-product-tiers.tool.js +1 -1
  65. package/dist/tools/set-product-tiers.tool.js.map +1 -1
  66. package/dist/tools/set-product-variants.tool.d.ts +8 -0
  67. package/dist/tools/set-product-variants.tool.d.ts.map +1 -1
  68. package/dist/tools/set-product-variants.tool.js +9 -7
  69. package/dist/tools/set-product-variants.tool.js.map +1 -1
  70. package/dist/tools/update-cart-config.tool.d.ts +8 -0
  71. package/dist/tools/update-cart-config.tool.d.ts.map +1 -1
  72. package/dist/tools/update-cart-config.tool.js +10 -7
  73. package/dist/tools/update-cart-config.tool.js.map +1 -1
  74. package/dist/tools/update-discount.tool.d.ts +5 -1
  75. package/dist/tools/update-discount.tool.d.ts.map +1 -1
  76. package/dist/tools/update-discount.tool.js +11 -4
  77. package/dist/tools/update-discount.tool.js.map +1 -1
  78. package/dist/tools/update-model.tool.d.ts +1 -1
  79. package/dist/tools/update-sales-channel.tool.d.ts +1 -0
  80. package/dist/tools/update-sales-channel.tool.d.ts.map +1 -1
  81. package/dist/tools/update-sales-channel.tool.js +15 -6
  82. package/dist/tools/update-sales-channel.tool.js.map +1 -1
  83. package/dist/types.d.ts +59 -3
  84. package/dist/types.d.ts.map +1 -1
  85. package/package.json +2 -2
@@ -6,11 +6,11 @@ const inputSchema = z.object({
6
6
  .number()
7
7
  .int()
8
8
  .optional()
9
- .describe("Partial refund amount in minor units; omit for full refund"),
9
+ .describe("Partial refund amount in minor units of the order's currency; omit for full refund"),
10
10
  });
11
11
  export const refundOrderTool = {
12
12
  name: "refund_order",
13
- description: "Refund an order. Omit amount for a full refund; pass amount (minor units) for a partial refund.",
13
+ description: "Refund an order. Omit amount for a full refund; pass amount (minor units of the order's currency) for a partial refund.",
14
14
  inputSchema,
15
15
  requiredPermissions: ["orders:manage"],
16
16
  confirmGated: true,
@@ -1 +1 @@
1
- {"version":3,"file":"refund-order.tool.js","sourceRoot":"","sources":["../../src/tools/refund-order.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IAC/D,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,CAAC,4DAA4D,CAAC;CAC1E,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,eAAe,GAAoC;IAC9D,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,iGAAiG;IACnG,WAAW;IACX,mBAAmB,EAAE,CAAC,eAAe,CAAC;IACtC,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE;QACrD,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"refund-order.tool.js","sourceRoot":"","sources":["../../src/tools/refund-order.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IAC/D,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,CACP,oFAAoF,CACrF;CACJ,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,eAAe,GAAoC;IAC9D,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,yHAAyH;IAC3H,WAAW;IACX,mBAAmB,EAAE,CAAC,eAAe,CAAC;IACtC,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE;QACrD,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;CACF,CAAC"}
@@ -5,6 +5,7 @@ declare const inputSchema: z.ZodObject<{
5
5
  keys: z.ZodArray<z.ZodObject<{
6
6
  recordId: z.ZodString;
7
7
  variantKey: z.ZodOptional<z.ZodString>;
8
+ currency: z.ZodOptional<z.ZodString>;
8
9
  }, z.core.$strip>>;
9
10
  }, z.core.$strip>;
10
11
  type Input = z.infer<typeof inputSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"remove-price-list-entries.tool.d.ts","sourceRoot":"","sources":["../../src/tools/remove-price-list-entries.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,QAAA,MAAM,WAAW;;;;;;iBAUf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,UAAU,MAAM;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAW5D,CAAC"}
1
+ {"version":3,"file":"remove-price-list-entries.tool.d.ts","sourceRoot":"","sources":["../../src/tools/remove-price-list-entries.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,QAAA,MAAM,WAAW;;;;;;;iBAUf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,UAAU,MAAM;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAW5D,CAAC"}
@@ -13,7 +13,7 @@ const inputSchema = z.object({
13
13
  });
14
14
  export const removePriceListEntriesTool = {
15
15
  name: "remove_price_list_entries",
16
- description: "Remove up to 1000 fixed prices from a price list by key: recordId alone for a product without variants, recordId + variantKey for one variant of a product with variants. Those products then fall back to the catalogue price minus the list's percentOff. Returns how many were removed; a key with no entry removes nothing.",
16
+ description: "Remove up to 1000 fixed prices from a price list by key: recordId alone for a product without variants, recordId + variantKey for one variant of a product with variants; currency limits a key to that currency's row, without it every currency's row goes. Those products then fall back to the catalogue price minus the list's percentOff. Returns how many were removed; a key with no entry removes nothing.",
17
17
  inputSchema,
18
18
  requiredPermissions: ["models:edit"],
19
19
  confirmGated: true,
@@ -1 +1 @@
1
- {"version":3,"file":"remove-price-list-entries.tool.js","sourceRoot":"","sources":["../../src/tools/remove-price-list-entries.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,6CAA6C,CAAC;IAC1D,IAAI,EAAE,CAAC;SACJ,KAAK,CAAC,uBAAuB,CAAC;SAC9B,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,CAAC,+DAA+D,CAAC;CAC7E,CAAC,CAAC;AASH,MAAM,CAAC,MAAM,0BAA0B,GAA0B;IAC/D,IAAI,EAAE,2BAA2B;IACjC,WAAW,EACT,iUAAiU;IACnU,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;QAC5C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACtE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAClC,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"remove-price-list-entries.tool.js","sourceRoot":"","sources":["../../src/tools/remove-price-list-entries.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,6CAA6C,CAAC;IAC1D,IAAI,EAAE,CAAC;SACJ,KAAK,CAAC,uBAAuB,CAAC;SAC9B,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,CAAC,+DAA+D,CAAC;CAC7E,CAAC,CAAC;AASH,MAAM,CAAC,MAAM,0BAA0B,GAA0B;IAC/D,IAAI,EAAE,2BAA2B;IACjC,WAAW,EACT,qZAAqZ;IACvZ,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;QAC5C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACtE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAClC,CAAC;CACF,CAAC"}
@@ -5,6 +5,7 @@ declare const inputSchema: z.ZodObject<{
5
5
  entries: z.ZodArray<z.ZodObject<{
6
6
  recordId: z.ZodString;
7
7
  variantKey: z.ZodOptional<z.ZodString>;
8
+ currency: z.ZodOptional<z.ZodString>;
8
9
  price: z.ZodNumber;
9
10
  tiers: z.ZodOptional<z.ZodArray<z.ZodObject<{
10
11
  minQty: z.ZodNumber;
@@ -1 +1 @@
1
- {"version":3,"file":"set-price-list-entries.tool.d.ts","sourceRoot":"","sources":["../../src/tools/set-price-list-entries.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,QAAA,MAAM,WAAW;;;;;;;;;;;;;iBAUf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,UAAU,MAAM;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAWzD,CAAC"}
1
+ {"version":3,"file":"set-price-list-entries.tool.d.ts","sourceRoot":"","sources":["../../src/tools/set-price-list-entries.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,QAAA,MAAM,WAAW;;;;;;;;;;;;;;iBAUf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,UAAU,MAAM;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAWzD,CAAC"}
@@ -13,7 +13,7 @@ const inputSchema = z.object({
13
13
  });
14
14
  export const setPriceListEntriesTool = {
15
15
  name: "set_price_list_entries",
16
- description: "Upsert up to 1000 fixed prices on a price list in one call (an ERP or spreadsheet import). Each row is one product (no variantKey) or one variant of a product with variants (variantKey required there), price in minor units with optional volume breaks and optional minQuantity / maxQuantity order bounds; a row replaces the whole entry already set for the same product/variant, so bounds it had are cleared unless the row re-sends them (read them with get_price_list); every other entry stays. All or nothing: one invalid row refuses the whole call and the error names every bad row by index. Fixed prices override the list's percentOff. Never removes entries - use remove_price_list_entries for that.",
16
+ description: "Upsert up to 1000 fixed prices on a price list in one call (an ERP or spreadsheet import). Each row is one product (no variantKey) or one variant of a product with variants (variantKey required there), price in minor units of the row's currency (currency omitted = the default currency; an additional currency writes that currency's own row) with optional volume breaks and optional minQuantity / maxQuantity order bounds; a row replaces the whole entry already set for the same product/variant and currency, so bounds it had are cleared unless the row re-sends them (read them with get_price_list); every other entry stays. All or nothing: one invalid row refuses the whole call and the error names every bad row by index. Fixed prices override the list's percentOff. Never removes entries - use remove_price_list_entries for that.",
17
17
  inputSchema,
18
18
  requiredPermissions: ["models:edit"],
19
19
  confirmGated: true,
@@ -1 +1 @@
1
- {"version":3,"file":"set-price-list-entries.tool.js","sourceRoot":"","sources":["../../src/tools/set-price-list-entries.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,6CAA6C,CAAC;IAC1D,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,oBAAoB,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,CAAC,yBAAyB,CAAC;CACvC,CAAC,CAAC;AASH,MAAM,CAAC,MAAM,uBAAuB,GAA0B;IAC5D,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EACT,8rBAA8rB;IAChsB,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE;QAC/C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACtE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAClC,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"set-price-list-entries.tool.js","sourceRoot":"","sources":["../../src/tools/set-price-list-entries.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,6CAA6C,CAAC;IAC1D,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,oBAAoB,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,CAAC,yBAAyB,CAAC;CACvC,CAAC,CAAC;AASH,MAAM,CAAC,MAAM,uBAAuB,GAA0B;IAC5D,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EACT,k0BAAk0B;IACp0B,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE;QAC/C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACtE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAClC,CAAC;CACF,CAAC"}
@@ -3,6 +3,7 @@ import type { AiTool, PriceListEntry } from "../types.js";
3
3
  declare const inputSchema: z.ZodObject<{
4
4
  recordId: z.ZodString;
5
5
  variantKey: z.ZodOptional<z.ZodString>;
6
+ currency: z.ZodOptional<z.ZodString>;
6
7
  price: z.ZodNumber;
7
8
  tiers: z.ZodOptional<z.ZodArray<z.ZodObject<{
8
9
  minQty: z.ZodNumber;
@@ -1 +1 @@
1
- {"version":3,"file":"set-price-list-entry.tool.d.ts","sourceRoot":"","sources":["../../src/tools/set-price-list-entry.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG1D,QAAA,MAAM,WAAW;;;;;;;;;;;iBAOmB,CAAC;AAErC,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,KAAK,EAAE,cAAc,CAQ/D,CAAC"}
1
+ {"version":3,"file":"set-price-list-entry.tool.d.ts","sourceRoot":"","sources":["../../src/tools/set-price-list-entry.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG1D,QAAA,MAAM,WAAW;;;;;;;;;;;;iBAOmB,CAAC;AAErC,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,KAAK,EAAE,cAAc,CAQ/D,CAAC"}
@@ -10,7 +10,7 @@ const inputSchema = priceListEntryShape
10
10
  .superRefine(refinePriceListEntry);
11
11
  export const setPriceListEntryTool = {
12
12
  name: "set_price_list_entry",
13
- description: "Set a price list's fixed price for one product, or one variant of a product with variants (variantKey required there - a list prices each variant on its own, never the product as a whole; omit it for a product without variants). The fixed price (minor units, with optional volume breaks) overrides the list's percentOff for that product or variant; replaces the entry already set for it as a whole, so an existing minQuantity / maxQuantity left out of the call is cleared - read it with get_price_list and re-send it to keep it. For many rows use set_price_list_entries.",
13
+ description: "Set a price list's fixed price for one product, or one variant of a product with variants (variantKey required there - a list prices each variant on its own, never the product as a whole; omit it for a product without variants). currency picks the row: omitted is the default-currency row, an additional currency writes that currency's own row, which prices only carts in it. The fixed price (minor units of the row's currency, with optional volume breaks) overrides the list's percentOff for that product or variant; replaces the entry already set for it as a whole, so an existing minQuantity / maxQuantity left out of the call is cleared - read it with get_price_list and re-send it to keep it. For many rows use set_price_list_entries.",
14
14
  inputSchema,
15
15
  requiredPermissions: ["models:edit"],
16
16
  execute: async ({ priceListId, ...entry }, ops) => ops.priceLists.setEntry(priceListId, entry),
@@ -1 +1 @@
1
- {"version":3,"file":"set-price-list-entry.tool.js","sourceRoot":"","sources":["../../src/tools/set-price-list-entry.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1E,MAAM,WAAW,GAAG,mBAAmB;KACpC,MAAM,CAAC;IACN,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,6CAA6C,CAAC;CAC3D,CAAC;KACD,WAAW,CAAC,oBAAoB,CAAC,CAAC;AAIrC,MAAM,CAAC,MAAM,qBAAqB,GAAkC;IAClE,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EACT,4jBAA4jB;IAC9jB,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAChD,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC;CAC9C,CAAC"}
1
+ {"version":3,"file":"set-price-list-entry.tool.js","sourceRoot":"","sources":["../../src/tools/set-price-list-entry.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1E,MAAM,WAAW,GAAG,mBAAmB;KACpC,MAAM,CAAC;IACN,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,6CAA6C,CAAC;CAC3D,CAAC;KACD,WAAW,CAAC,oBAAoB,CAAC,CAAC;AAIrC,MAAM,CAAC,MAAM,qBAAqB,GAAkC;IAClE,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EACT,quBAAquB;IACvuB,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAChD,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC;CAC9C,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { z } from "zod";
2
+ import type { AiTool } from "../types.js";
3
+ declare const inputSchema: z.ZodObject<{
4
+ recordId: z.ZodString;
5
+ prices: z.ZodArray<z.ZodObject<{
6
+ currency: z.ZodString;
7
+ price: z.ZodNullable<z.ZodNumber>;
8
+ tiers: z.ZodOptional<z.ZodArray<z.ZodObject<{
9
+ minQty: z.ZodNumber;
10
+ price: z.ZodNumber;
11
+ }, z.core.$strip>>>;
12
+ }, z.core.$strip>>;
13
+ variants: z.ZodOptional<z.ZodArray<z.ZodObject<{
14
+ variantKey: z.ZodString;
15
+ prices: z.ZodArray<z.ZodObject<{
16
+ currency: z.ZodString;
17
+ price: z.ZodNumber;
18
+ tiers: z.ZodOptional<z.ZodArray<z.ZodObject<{
19
+ minQty: z.ZodNumber;
20
+ price: z.ZodNumber;
21
+ }, z.core.$strip>>>;
22
+ }, z.core.$strip>>;
23
+ }, z.core.$strip>>>;
24
+ }, z.core.$strip>;
25
+ type Input = z.infer<typeof inputSchema>;
26
+ export declare const setProductCurrencyPricesTool: AiTool<Input, unknown>;
27
+ export {};
28
+ //# sourceMappingURL=set-product-currency-prices.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-product-currency-prices.tool.d.ts","sourceRoot":"","sources":["../../src/tools/set-product-currency-prices.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EACV,MAAM,EAGP,MAAM,aAAa,CAAC;AAQrB,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;iBA6Bf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAa/D,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { z } from "zod";
2
+ import { ADDITIONAL_CURRENCIES_MAX } from "@cmssy/types";
3
+ import { PRODUCT_VARIANTS_MAX, productCurrencyPriceSchema, refineUniqueCurrencies, variantCurrencyPricesSchema, } from "../schemas.js";
4
+ const inputSchema = z.object({
5
+ recordId: z.string().min(1).describe("Product record id"),
6
+ prices: z
7
+ .array(productCurrencyPriceSchema)
8
+ .max(ADDITIONAL_CURRENCIES_MAX)
9
+ .superRefine((items, ctx) => refineUniqueCurrencies(items, ctx))
10
+ .describe("The product's whole list of prices in additional currencies; it replaces what is stored, [] clears it. Each currency must be one of the workspace's additional currencies"),
11
+ variants: z
12
+ .array(variantCurrencyPricesSchema)
13
+ .max(PRODUCT_VARIANTS_MAX)
14
+ .superRefine((items, ctx) => {
15
+ const seen = new Set();
16
+ items.forEach((item, index) => {
17
+ if (seen.has(item.variantKey)) {
18
+ ctx.addIssue({
19
+ code: "custom",
20
+ path: [index, "variantKey"],
21
+ message: `Variant ${item.variantKey} is listed twice`,
22
+ });
23
+ }
24
+ seen.add(item.variantKey);
25
+ });
26
+ })
27
+ .optional()
28
+ .describe("Per-variant prices in additional currencies, written in the same update as prices. Omit to leave every variant's prices untouched; a variant left out keeps its prices; a variant's prices: [] clears them. Never touches a variant's default-currency price, SKU or stock"),
29
+ });
30
+ export const setProductCurrencyPricesTool = {
31
+ name: "set_product_currency_prices",
32
+ description: "Set a product's prices in the workspace's additional currencies (update_cart_config additionalCurrencies), e.g. [{currency: 'EUR', price: 4500, tiers: [{minQty: 10, price: 4000}]}]. Prices and breaks are minor units of each currency; nothing is converted from the default-currency price. price is read only while the product has no variants - a product with variants takes each variant's price from variants (here) and these tiers price every variant without breaks of its own in that currency (price null keeps just the tiers). variants sets each variant's prices per currency by its key (list_products variants[].key), e.g. [{variantKey, prices: [{currency: 'EUR', price: 4500}]}], and never touches stock, SKU or the default-currency price - this is the safe way to price variants per currency; prefer it over set_product_variants currencyPrices, which rewrites every variant's stock and SKU. A product with no price in a sales channel's currency is not sold on that channel (NO_PRICE_IN_CURRENCY). prices replaces the record's whole list: send every currency the product keeps. A variant removed while the call ran fails it with CONFLICT - re-read list_products and retry.",
33
+ inputSchema,
34
+ requiredPermissions: ["models:edit"],
35
+ confirmGated: true,
36
+ execute: async ({ recordId, prices, variants }, ops) => ops.products.setCurrencyPrices(recordId, prices, variants),
37
+ };
38
+ //# sourceMappingURL=set-product-currency-prices.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-product-currency-prices.tool.js","sourceRoot":"","sources":["../../src/tools/set-product-currency-prices.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAMzD,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACzD,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,0BAA0B,CAAC;SACjC,GAAG,CAAC,yBAAyB,CAAC;SAC9B,WAAW,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,sBAAsB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;SAC/D,QAAQ,CACP,2KAA2K,CAC5K;IACH,QAAQ,EAAE,CAAC;SACR,KAAK,CAAC,2BAA2B,CAAC;SAClC,GAAG,CAAC,oBAAoB,CAAC;SACzB,WAAW,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9B,GAAG,CAAC,QAAQ,CAAC;oBACX,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC;oBAC3B,OAAO,EAAE,WAAW,IAAI,CAAC,UAAU,kBAAkB;iBACtD,CAAC,CAAC;YACL,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;SACD,QAAQ,EAAE;SACV,QAAQ,CACP,4QAA4Q,CAC7Q;CACJ,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,4BAA4B,GAA2B;IAClE,IAAI,EAAE,6BAA6B;IACnC,WAAW,EACT,0pCAA0pC;IAC5pC,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,CACrD,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAC5B,QAAQ,EACR,MAAqC,EACrC,QAAoD,CACrD;CACJ,CAAC"}
@@ -9,7 +9,7 @@ const inputSchema = z.object({
9
9
  });
10
10
  export const setProductTiersTool = {
11
11
  name: "set_product_tiers",
12
- description: "Set the record-level volume price breaks on a product (B2B quantity discounts). They price the product and every variant that defines no breaks of its own; a variant's own breaks are part of its definition, so set those with set_product_variants. A line's unit price steps down to the highest break its quantity reaches, and the cart and the order both charge that price. Prices are minor units. Passing an empty array removes the breaks. increment sets the order step on the same record.",
12
+ description: "Set the record-level volume price breaks on a product (B2B quantity discounts). They price the product and every variant that defines no breaks of its own; a variant's own breaks are part of its definition, so set those with set_product_variants. A line's unit price steps down to the highest break its quantity reaches, and the cart and the order both charge that price. Prices are minor units of the default currency; breaks in an additional currency are set with set_product_currency_prices. Passing an empty array removes the breaks. increment sets the order step on the same record.",
13
13
  inputSchema,
14
14
  requiredPermissions: ["models:edit"],
15
15
  execute: async ({ recordId, tiers, increment }, ops) => {
@@ -1 +1 @@
1
- {"version":3,"file":"set-product-tiers.tool.js","sourceRoot":"","sources":["../../src/tools/set-product-tiers.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExE,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACzD,KAAK,EAAE,mBAAmB;IAC1B,SAAS,EAAE,kBAAkB;SAC1B,QAAQ,EAAE;SACV,QAAQ,CACP,mJAAmJ,CACpJ;CACJ,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IACzD,IAAI,EAAE,mBAAmB;IACzB,WAAW,EACT,0eAA0e;IAC5e,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE;QACrD,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAoB,EAAE,SAAS,CAAC,CAAC;IAC1E,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"set-product-tiers.tool.js","sourceRoot":"","sources":["../../src/tools/set-product-tiers.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExE,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACzD,KAAK,EAAE,mBAAmB;IAC1B,SAAS,EAAE,kBAAkB;SAC1B,QAAQ,EAAE;SACV,QAAQ,CACP,mJAAmJ,CACpJ;CACJ,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IACzD,IAAI,EAAE,mBAAmB;IACzB,WAAW,EACT,6kBAA6kB;IAC/kB,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE;QACrD,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAoB,EAAE,SAAS,CAAC,CAAC;IAC1E,CAAC;CACF,CAAC"}
@@ -11,6 +11,14 @@ declare const inputSchema: z.ZodObject<{
11
11
  minQty: z.ZodNumber;
12
12
  price: z.ZodNumber;
13
13
  }, z.core.$strip>>>;
14
+ currencyPrices: z.ZodOptional<z.ZodArray<z.ZodObject<{
15
+ currency: z.ZodString;
16
+ price: z.ZodNumber;
17
+ tiers: z.ZodOptional<z.ZodArray<z.ZodObject<{
18
+ minQty: z.ZodNumber;
19
+ price: z.ZodNumber;
20
+ }, z.core.$strip>>>;
21
+ }, z.core.$strip>>>;
14
22
  }, z.core.$strip>>;
15
23
  }, z.core.$strip>;
16
24
  type Input = z.infer<typeof inputSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"set-product-variants.tool.d.ts","sourceRoot":"","sources":["../../src/tools/set-product-variants.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AA8C1C,QAAA,MAAM,WAAW;;;;;;;;;;;;iBAQf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAUzD,CAAC"}
1
+ {"version":3,"file":"set-product-variants.tool.d.ts","sourceRoot":"","sources":["../../src/tools/set-product-variants.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAsD1C,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;iBAQf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAUzD,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import { z } from "zod";
2
- import { priceTierListSchema } from "../schemas.js";
3
- const VARIANT_MAX_VARIANTS = 500;
2
+ import { PRODUCT_VARIANTS_MAX, priceTierListSchema, variantCurrencyPriceListSchema, } from "../schemas.js";
4
3
  const VARIANT_MAX_OPTIONS = 20;
5
4
  const variantSchema = z.object({
6
5
  selections: z
@@ -17,7 +16,7 @@ const variantSchema = z.object({
17
16
  .number()
18
17
  .int()
19
18
  .min(0)
20
- .describe("Minor units - 4900 = $49.00. Unlike the product's price field, which is major units."),
19
+ .describe("Minor units of the default currency - 4900 = $49.00. Unlike the product's price field, which is major units."),
21
20
  inventory: z
22
21
  .number()
23
22
  .int()
@@ -26,18 +25,21 @@ const variantSchema = z.object({
26
25
  .describe("Units on hand - list_products reports it as onHand. null when the variant's stock is not tracked."),
27
26
  tiers: priceTierListSchema
28
27
  .optional()
29
- .describe("This variant's own volume breaks, minor units. Omit to keep the breaks it has. [] drops them, and the variant is then priced by the record's breaks (set_product_tiers), not by none."),
28
+ .describe("This variant's own volume breaks, minor units of the default currency. Omit to keep the breaks it has. [] drops them, and the variant is then priced by the record's breaks (set_product_tiers), not by none."),
29
+ currencyPrices: variantCurrencyPriceListSchema
30
+ .optional()
31
+ .describe("The variant's prices in additional currencies, e.g. [{currency: 'EUR', price: 4500}]. Omit to keep the ones it has; [] clears them. A variant with no price in a channel's currency is not sold on that channel"),
30
32
  });
31
33
  const inputSchema = z.object({
32
34
  recordId: z.string().min(1).describe("Product record id"),
33
35
  variants: z
34
36
  .array(variantSchema)
35
- .max(VARIANT_MAX_VARIANTS)
36
- .describe(`The product's whole variant set, at most ${VARIANT_MAX_VARIANTS}. It replaces what is stored; [] removes every variant.`),
37
+ .max(PRODUCT_VARIANTS_MAX)
38
+ .describe(`The product's whole variant set, at most ${PRODUCT_VARIANTS_MAX}. It replaces what is stored; [] removes every variant.`),
37
39
  });
38
40
  export const setProductVariantsTool = {
39
41
  name: "set_product_variants",
40
- description: "Define a product's variants. Each variant is one combination of values for the model's variantAxes (set those with update_model) and carries its own price, stock, SKU and volume breaks. The call replaces the whole set, so send every variant the product keeps - a variant left out is deleted. Every field but tiers is written as sent, so copy sku and stock (onHand) from list_products for each variant you keep; both are required, null for none. Stock already reserved by carts stays with the variant that keeps its selection. Prices are minor units.",
42
+ description: "Define a product's variants. Each variant is one combination of values for the model's variantAxes (set those with update_model) and carries its own price, stock, SKU and volume breaks. The call replaces the whole set, so send every variant the product keeps - a variant left out is deleted. Every field but tiers and currencyPrices is written as sent (those two are kept when omitted), so copy sku and stock (onHand) from list_products for each variant you keep; both are required, null for none. Stock already reserved by carts stays with the variant that keeps its selection. Prices are minor units: price and tiers in the default currency, currencyPrices in each additional currency (omitted = kept, like tiers). To change only prices per currency use set_product_currency_prices variants instead - it never touches stock or SKU.",
41
43
  inputSchema,
42
44
  requiredPermissions: ["models:edit"],
43
45
  confirmGated: true,
@@ -1 +1 @@
1
- {"version":3,"file":"set-product-variants.tool.js","sourceRoot":"","sources":["../../src/tools/set-product-variants.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,UAAU,EAAE,CAAC;SACV,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;SAC9B,MAAM,CACL,CAAC,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,IAAI,mBAAmB,EACrE;QACE,OAAO,EAAE,yBAAyB,mBAAmB,UAAU;KAChE,CACF;SACA,QAAQ,CACP,+LAA+L,CAChM;IACH,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,oGAAoG,CACrG;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,sFAAsF,CACvF;IACH,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CACP,mGAAmG,CACpG;IACH,KAAK,EAAE,mBAAmB;SACvB,QAAQ,EAAE;SACV,QAAQ,CACP,uLAAuL,CACxL;CACJ,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACzD,QAAQ,EAAE,CAAC;SACR,KAAK,CAAC,aAAa,CAAC;SACpB,GAAG,CAAC,oBAAoB,CAAC;SACzB,QAAQ,CACP,4CAA4C,oBAAoB,yDAAyD,CAC1H;CACJ,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,sBAAsB,GAA2B;IAC5D,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EACT,uiBAAuiB;IACziB,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE;QAC7C,OAAO,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"set-product-variants.tool.js","sourceRoot":"","sources":["../../src/tools/set-product-variants.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,8BAA8B,GAC/B,MAAM,eAAe,CAAC;AAEvB,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,UAAU,EAAE,CAAC;SACV,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;SAC9B,MAAM,CACL,CAAC,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,IAAI,mBAAmB,EACrE;QACE,OAAO,EAAE,yBAAyB,mBAAmB,UAAU;KAChE,CACF;SACA,QAAQ,CACP,+LAA+L,CAChM;IACH,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,oGAAoG,CACrG;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,8GAA8G,CAC/G;IACH,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CACP,mGAAmG,CACpG;IACH,KAAK,EAAE,mBAAmB;SACvB,QAAQ,EAAE;SACV,QAAQ,CACP,+MAA+M,CAChN;IACH,cAAc,EAAE,8BAA8B;SAC3C,QAAQ,EAAE;SACV,QAAQ,CACP,iNAAiN,CAClN;CACJ,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACzD,QAAQ,EAAE,CAAC;SACR,KAAK,CAAC,aAAa,CAAC;SACpB,GAAG,CAAC,oBAAoB,CAAC;SACzB,QAAQ,CACP,4CAA4C,oBAAoB,yDAAyD,CAC1H;CACJ,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,sBAAsB,GAA2B;IAC5D,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EACT,m0BAAm0B;IACr0B,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE;QAC7C,OAAO,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;CACF,CAAC"}
@@ -2,6 +2,7 @@ import { z } from "zod";
2
2
  import type { AiTool } from "../types.js";
3
3
  declare const inputSchema: z.ZodObject<{
4
4
  defaultCurrency: z.ZodOptional<z.ZodString>;
5
+ additionalCurrencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
5
6
  pricesIncludeTax: z.ZodOptional<z.ZodBoolean>;
6
7
  taxRates: z.ZodOptional<z.ZodArray<z.ZodObject<{
7
8
  id: z.ZodString;
@@ -20,6 +21,13 @@ declare const inputSchema: z.ZodObject<{
20
21
  minSubtotal: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
21
22
  maxSubtotal: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
22
23
  freeAbove: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
24
+ currencyPrices: z.ZodOptional<z.ZodArray<z.ZodObject<{
25
+ currency: z.ZodString;
26
+ price: z.ZodNumber;
27
+ minSubtotal: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
28
+ maxSubtotal: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
29
+ freeAbove: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
30
+ }, z.core.$strip>>>;
23
31
  }, z.core.$strip>>>;
24
32
  orderFields: z.ZodOptional<z.ZodArray<z.ZodObject<{
25
33
  key: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"update-cart-config.tool.d.ts","sourceRoot":"","sources":["../../src/tools/update-cart-config.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,MAAM,EAAmB,MAAM,aAAa,CAAC;AAO3D,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiHN,CAAC;AAEZ,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CASvD,CAAC"}
1
+ {"version":3,"file":"update-cart-config.tool.d.ts","sourceRoot":"","sources":["../../src/tools/update-cart-config.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,OAAO,KAAK,EAAE,MAAM,EAAmB,MAAM,aAAa,CAAC;AAQ3D,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAqHN,CAAC;AAEZ,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CASvD,CAAC"}
@@ -1,13 +1,16 @@
1
1
  import { z } from "zod";
2
- import { EXPORT_NOTE_MAX_LEN, REVERSE_CHARGE_NOTE_MAX_LEN } from "@cmssy/types";
3
- import { orderFieldSchema, shippingMethodSchema, taxRateSchema, } from "../schemas.js";
2
+ import { ADDITIONAL_CURRENCIES_MAX, EXPORT_NOTE_MAX_LEN, REVERSE_CHARGE_NOTE_MAX_LEN, } from "@cmssy/types";
3
+ import { currencyCodeSchema, orderFieldSchema, shippingMethodSchema, taxRateSchema, } from "../schemas.js";
4
4
  const inputSchema = z
5
5
  .object({
6
- defaultCurrency: z
7
- .string()
8
- .regex(/^[A-Z]{3}$/, "Must be a 3-letter uppercase ISO 4217 code, e.g. EUR")
6
+ defaultCurrency: currencyCodeSchema
7
+ .optional()
8
+ .describe("ISO 4217 code, e.g. EUR - the catalogue's base currency. Locked while any additional currency exists"),
9
+ additionalCurrencies: z
10
+ .array(currencyCodeSchema)
11
+ .max(ADDITIONAL_CURRENCIES_MAX)
9
12
  .optional()
10
- .describe("ISO 4217 code, e.g. EUR"),
13
+ .describe(`Other currencies the workspace sells in through sales channels, at most ${ADDITIONAL_CURRENCIES_MAX}; replaces the list, [] removes them all. Removing one a sales channel sells in is refused (CURRENCY_IN_USE), and so is adding one product records still carry as their currency value (CURRENCY_USED_BY_RECORDS). Prices in a removed currency are kept but price nothing`),
11
14
  pricesIncludeTax: z
12
15
  .boolean()
13
16
  .optional()
@@ -95,7 +98,7 @@ const inputSchema = z
95
98
  .strict();
96
99
  export const updateCartConfigTool = {
97
100
  name: "update_cart_config",
98
- description: "Configure the workspace's commerce settings: currency, whether prices include tax, tax rates, shipping methods, custom order fields, stock thresholds, cart limits, session lifetimes and the B2B toggles. Only provided fields change; arrays replace the whole list. companyTaxRounding is the workspace's VAT rounding for company buyers who read net prices (a company can override it with set_company_tax_rounding); consumers are always rounded per_line. sellerCountry and reverseChargeNote drive reverse charge: a company with a verified EU VAT id of another member state (set_company_vat_verified) pays 0% VAT and its orders carry the note. A sellerCountry outside the EU zero-rates every order shipped to another country as an export, for any buyer, with exportNote on the order. Which models the store sells is not set here: a model is sellable when its product capability is enabled (update_model, product.enabled).",
101
+ description: "Configure the workspace's commerce settings: default and additional currencies, whether prices include tax, tax rates, shipping methods, custom order fields, stock thresholds, cart limits, session lifetimes and the B2B toggles. Only provided fields change; arrays replace the whole list. companyTaxRounding is the workspace's VAT rounding for company buyers who read net prices (a company can override it with set_company_tax_rounding); consumers are always rounded per_line. sellerCountry and reverseChargeNote drive reverse charge: a company with a verified EU VAT id of another member state (set_company_vat_verified) pays 0% VAT and its orders carry the note. A sellerCountry outside the EU zero-rates every order shipped to another country as an export, for any buyer, with exportNote on the order. Nothing is converted between currencies: a sales channel sells in one of them (create_sales_channel currency), and every price in an additional currency is set explicitly (set_product_currency_prices, set_product_variants, set_price_list_entries currency, shippingMethods currencyPrices). Which models the store sells is not set here: a model is sellable when its product capability is enabled (update_model, product.enabled).",
99
102
  inputSchema,
100
103
  requiredPermissions: ["site:config:edit"],
101
104
  execute: async (input, ops) => {
@@ -1 +1 @@
1
- {"version":3,"file":"update-cart-config.tool.js","sourceRoot":"","sources":["../../src/tools/update-cart-config.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAEhF,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,GAAG,CAAC;KAClB,MAAM,CAAC;IACN,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,KAAK,CACJ,YAAY,EACZ,sDAAsD,CACvD;SACA,QAAQ,EAAE;SACV,QAAQ,CAAC,yBAAyB,CAAC;IACtC,gBAAgB,EAAE,CAAC;SAChB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,mDAAmD,CAAC;IAChE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE;IAC3C,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE;IACzD,WAAW,EAAE,CAAC;SACX,KAAK,CAAC,gBAAgB,CAAC;SACvB,QAAQ,EAAE;SACV,QAAQ,CACP,oHAAoH,CACrH;IACH,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrD,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACzD,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,EAAE;SACV,QAAQ,CAAC,uCAAuC,CAAC;IACpD,kBAAkB,EAAE,CAAC;SAClB,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2CAA2C,CAAC;IACxD,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,qDAAqD,CAAC;IAClE,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,kEAAkE,CACnE;IACH,gBAAgB,EAAE,CAAC;SAChB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,uCAAuC,CAAC;IACpD,mBAAmB,EAAE,CAAC;SACnB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,mDAAmD,CAAC;IAChE,eAAe,EAAE,CAAC;SACf,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,iGAAiG,CAClG;IACH,kBAAkB,EAAE,CAAC;SAClB,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;SAC9B,QAAQ,EAAE;SACV,QAAQ,CACP,uNAAuN,CACxN;IACH,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,KAAK,CACJ,YAAY,EACZ,+DAA+D,CAChE;SACA,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CACP,2UAA2U,CAC5U;IACH,iBAAiB,EAAE,CAAC;SACjB,MAAM,EAAE;SACR,GAAG,CAAC,2BAA2B,CAAC;SAChC,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CACP,qDAAqD,2BAA2B,qEAAqE,CACtJ;IACH,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,GAAG,CAAC,mBAAmB,CAAC;SACxB,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CACP,mGAAmG,mBAAmB,0FAA0F,CACjN;IACH,gBAAgB,EAAE,CAAC;SAChB,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CACP,4HAA4H,CAC7H;CACJ,CAAC;KACD,MAAM,EAAE,CAAC;AAIZ,MAAM,CAAC,MAAM,oBAAoB,GAA2B;IAC1D,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACT,s5BAAs5B;IACx5B,WAAW;IACX,mBAAmB,EAAE,CAAC,kBAAkB,CAAC;IACzC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC5B,OAAO,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAwB,CAAC,CAAC;IAClE,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"update-cart-config.tool.js","sourceRoot":"","sources":["../../src/tools/update-cart-config.tool.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,11 @@ declare const inputSchema: z.ZodObject<{
10
10
  }>>;
11
11
  value: z.ZodOptional<z.ZodNumber>;
12
12
  currency: z.ZodOptional<z.ZodString>;
13
- minSubtotal: z.ZodOptional<z.ZodNumber>;
13
+ minSubtotal: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
14
+ minSubtotalByCurrency: z.ZodOptional<z.ZodArray<z.ZodObject<{
15
+ currency: z.ZodString;
16
+ amount: z.ZodNumber;
17
+ }, z.core.$strip>>>;
14
18
  maxUses: z.ZodOptional<z.ZodNumber>;
15
19
  startsAt: z.ZodOptional<z.ZodString>;
16
20
  endsAt: z.ZodOptional<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"update-discount.tool.d.ts","sourceRoot":"","sources":["../../src/tools/update-discount.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EACV,MAAM,EAEN,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAGrB,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;iBAWf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAmBjE,CAAC"}
1
+ {"version":3,"file":"update-discount.tool.d.ts","sourceRoot":"","sources":["../../src/tools/update-discount.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EACV,MAAM,EAEN,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAOrB,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;iBAsBf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAmBjE,CAAC"}
@@ -1,12 +1,19 @@
1
1
  import { z } from "zod";
2
- import { isoDateTimeSchema } from "../schemas.js";
2
+ import { currencyAmountListSchema, currencyCodeSchema, isoDateTimeSchema, } from "../schemas.js";
3
3
  const inputSchema = z.object({
4
4
  idOrSlug: z.string().min(1).describe("The discount's id or code to update"),
5
5
  code: z.string().optional(),
6
6
  type: z.enum(["percentage", "fixed", "free_shipping"]).optional(),
7
7
  value: z.number().optional(),
8
- currency: z.string().optional(),
9
- minSubtotal: z.number().optional(),
8
+ currency: currencyCodeSchema.optional(),
9
+ minSubtotal: z
10
+ .number()
11
+ .nullable()
12
+ .optional()
13
+ .describe("Minimum subtotal in minor units: the code's own currency for 'fixed', the default currency otherwise. null clears it - with minSubtotalByCurrency set, the code then no longer applies to default-currency carts"),
14
+ minSubtotalByCurrency: currencyAmountListSchema
15
+ .optional()
16
+ .describe("'percentage' and 'free_shipping' only: replaces the per-currency minimums for carts in additional currencies; [] clears them. Omit to keep them. Changing such a code to 'fixed' needs [] here"),
10
17
  maxUses: z.number().int().optional(),
11
18
  startsAt: isoDateTimeSchema.optional().describe("ISO date-time"),
12
19
  endsAt: isoDateTimeSchema.optional().describe("ISO date-time"),
@@ -14,7 +21,7 @@ const inputSchema = z.object({
14
21
  });
15
22
  export const updateDiscountTool = {
16
23
  name: "update_discount",
17
- description: "Update a discount (partial). code/type/currency become immutable once the discount has been used.",
24
+ description: "Update a discount (partial). code/type/currency become immutable once the discount has been used. A code with any minimum (minSubtotal for the default currency, minSubtotalByCurrency for additional currencies) applies only in the currencies those minimums name.",
18
25
  inputSchema,
19
26
  requiredPermissions: ["discounts:manage"],
20
27
  execute: async ({ idOrSlug, ...patch }, ops) => {
@@ -1 +1 @@
1
- {"version":3,"file":"update-discount.tool.js","sourceRoot":"","sources":["../../src/tools/update-discount.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC3E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACpC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IAChE,MAAM,EAAE,iBAAiB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC9D,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,kBAAkB,GAAuC;IACpE,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACT,mGAAmG;IACrG,WAAW;IACX,mBAAmB,EAAE,CAAC,kBAAkB,CAAC;IACzC,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;QAC7C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,CACvC,QAAQ,EACR,KAA4B,CAC7B,CAAC;QACF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,aAAa,QAAQ,aAAa,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"update-discount.tool.js","sourceRoot":"","sources":["../../src/tools/update-discount.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC3E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,EAAE;IACvC,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CACP,kNAAkN,CACnN;IACH,qBAAqB,EAAE,wBAAwB;SAC5C,QAAQ,EAAE;SACV,QAAQ,CACP,gMAAgM,CACjM;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACpC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IAChE,MAAM,EAAE,iBAAiB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC9D,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,kBAAkB,GAAuC;IACpE,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACT,uQAAuQ;IACzQ,WAAW;IACX,mBAAmB,EAAE,CAAC,kBAAkB,CAAC;IACzC,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;QAC7C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,CACvC,QAAQ,EACR,KAA4B,CAC7B,CAAC;QACF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,aAAa,QAAQ,aAAa,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC"}
@@ -33,7 +33,7 @@ declare const inputSchema: z.ZodObject<{
33
33
  priceField: z.ZodOptional<z.ZodString>;
34
34
  inventoryField: z.ZodOptional<z.ZodString>;
35
35
  nameField: z.ZodOptional<z.ZodNullable<z.ZodString>>;
36
- currencyField: z.ZodOptional<z.ZodNullable<z.ZodString>>;
36
+ currencyField: z.ZodOptional<z.ZodNull>;
37
37
  imageField: z.ZodOptional<z.ZodNullable<z.ZodString>>;
38
38
  taxRateField: z.ZodOptional<z.ZodNullable<z.ZodString>>;
39
39
  }, z.core.$strip>>;
@@ -12,6 +12,7 @@ declare const inputSchema: z.ZodObject<{
12
12
  MEMBERS: "MEMBERS";
13
13
  COMPANY_MEMBERS: "COMPANY_MEMBERS";
14
14
  }>>;
15
+ currency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
15
16
  }, z.core.$strip>;
16
17
  type Input = z.infer<typeof inputSchema>;
17
18
  export declare const updateSalesChannelTool: AiTool<Input, SalesChannelSummary>;
@@ -1 +1 @@
1
- {"version":3,"file":"update-sales-channel.tool.d.ts","sourceRoot":"","sources":["../../src/tools/update-sales-channel.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAM/D,QAAA,MAAM,WAAW;;;;;;;;;;;;iBAcf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAgBrE,CAAC"}
1
+ {"version":3,"file":"update-sales-channel.tool.d.ts","sourceRoot":"","sources":["../../src/tools/update-sales-channel.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAO/D,QAAA,MAAM,WAAW;;;;;;;;;;;;;iBAmBf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAwBrE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { SALES_CHANNEL_NAME_MAX_LEN } from "@cmssy/types";
3
- import { channelPriceAccessSchema, priceDisplayModeSchema, } from "../schemas.js";
3
+ import { channelCurrencySchema, channelPriceAccessSchema, priceDisplayModeSchema, } from "../schemas.js";
4
4
  const inputSchema = z.object({
5
5
  id: z
6
6
  .string()
@@ -15,19 +15,28 @@ const inputSchema = z.object({
15
15
  .describe("New display name"),
16
16
  displayMode: priceDisplayModeSchema.optional(),
17
17
  priceAccess: channelPriceAccessSchema.optional(),
18
+ currency: channelCurrencySchema
19
+ .optional()
20
+ .describe("Omit to keep it; null or the default currency sells in the default currency, else one of the workspace's additional currencies. A change abandons the channel's open carts (activeCartCount)"),
18
21
  });
19
22
  export const updateSalesChannelTool = {
20
23
  name: "update_sales_channel",
21
- description: "Rename a sales channel or change its displayMode or priceAccess. The key cannot change. Narrowing priceAccess refuses carts and checkout to buyers who no longer qualify; their carts are kept and come back if access returns. Which lists price the channel is changed on the price list (update_price_list channels).",
24
+ description: "Rename a sales channel or change its displayMode, priceAccess or currency. The key cannot change. Changing the currency abandons the carts open on the channel - check activeCartCount first. Narrowing priceAccess refuses carts and checkout to buyers who no longer qualify; their carts are kept and come back if access returns. Which lists price the channel is changed on the price list (update_price_list channels).",
22
25
  inputSchema,
23
26
  requiredPermissions: ["models:edit"],
24
- execute: async ({ id, name, displayMode, priceAccess }, ops) => {
27
+ execute: async ({ id, name, displayMode, priceAccess, currency }, ops) => {
25
28
  if (name === undefined &&
26
29
  displayMode === undefined &&
27
- priceAccess === undefined) {
28
- throw new Error("Provide name, displayMode or priceAccess to update");
30
+ priceAccess === undefined &&
31
+ currency === undefined) {
32
+ throw new Error("Provide name, displayMode, priceAccess or currency to update");
29
33
  }
30
- return ops.salesChannels.update(id, { name, displayMode, priceAccess });
34
+ return ops.salesChannels.update(id, {
35
+ name,
36
+ displayMode,
37
+ priceAccess,
38
+ ...(currency !== undefined && { currency }),
39
+ });
31
40
  },
32
41
  };
33
42
  //# sourceMappingURL=update-sales-channel.tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-sales-channel.tool.js","sourceRoot":"","sources":["../../src/tools/update-sales-channel.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EACL,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,EAAE,EAAE,CAAC;SACF,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,mDAAmD,CAAC;IAChE,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,0BAA0B,CAAC;SAC/B,QAAQ,EAAE;SACV,QAAQ,CAAC,kBAAkB,CAAC;IAC/B,WAAW,EAAE,sBAAsB,CAAC,QAAQ,EAAE;IAC9C,WAAW,EAAE,wBAAwB,CAAC,QAAQ,EAAE;CACjD,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,sBAAsB,GAAuC;IACxE,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EACT,0TAA0T;IAC5T,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,EAAE;QAC7D,IACE,IAAI,KAAK,SAAS;YAClB,WAAW,KAAK,SAAS;YACzB,WAAW,KAAK,SAAS,EACzB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;IAC1E,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"update-sales-channel.tool.js","sourceRoot":"","sources":["../../src/tools/update-sales-channel.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,EAAE,EAAE,CAAC;SACF,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,mDAAmD,CAAC;IAChE,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,0BAA0B,CAAC;SAC/B,QAAQ,EAAE;SACV,QAAQ,CAAC,kBAAkB,CAAC;IAC/B,WAAW,EAAE,sBAAsB,CAAC,QAAQ,EAAE;IAC9C,WAAW,EAAE,wBAAwB,CAAC,QAAQ,EAAE;IAChD,QAAQ,EAAE,qBAAqB;SAC5B,QAAQ,EAAE;SACV,QAAQ,CACP,8LAA8L,CAC/L;CACJ,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,sBAAsB,GAAuC;IACxE,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EACT,gaAAga;IACla,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE;QACvE,IACE,IAAI,KAAK,SAAS;YAClB,WAAW,KAAK,SAAS;YACzB,WAAW,KAAK,SAAS;YACzB,QAAQ,KAAK,SAAS,EACtB,CAAC;YACD,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE;YAClC,IAAI;YACJ,WAAW;YACX,WAAW;YACX,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,CAAC;SAC5C,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}