@cmssy/ai-tools 0.89.0 → 0.91.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 (75) hide show
  1. package/dist/index.d.ts +10 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +9 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/registry.d.ts.map +1 -1
  6. package/dist/registry.js +16 -0
  7. package/dist/registry.js.map +1 -1
  8. package/dist/schemas.d.ts +11 -0
  9. package/dist/schemas.d.ts.map +1 -1
  10. package/dist/schemas.js +18 -1
  11. package/dist/schemas.js.map +1 -1
  12. package/dist/tools/create-manual-order.tool.d.ts +12 -0
  13. package/dist/tools/create-manual-order.tool.d.ts.map +1 -1
  14. package/dist/tools/create-manual-order.tool.js +7 -4
  15. package/dist/tools/create-manual-order.tool.js.map +1 -1
  16. package/dist/tools/create-price-list.tool.d.ts +1 -0
  17. package/dist/tools/create-price-list.tool.d.ts.map +1 -1
  18. package/dist/tools/create-price-list.tool.js +4 -3
  19. package/dist/tools/create-price-list.tool.js.map +1 -1
  20. package/dist/tools/create-sales-channel.tool.d.ts +19 -0
  21. package/dist/tools/create-sales-channel.tool.d.ts.map +1 -0
  22. package/dist/tools/create-sales-channel.tool.js +22 -0
  23. package/dist/tools/create-sales-channel.tool.js.map +1 -0
  24. package/dist/tools/delete-price-list.tool.js +1 -1
  25. package/dist/tools/delete-price-list.tool.js.map +1 -1
  26. package/dist/tools/delete-sales-channel.tool.d.ts +13 -0
  27. package/dist/tools/delete-sales-channel.tool.d.ts.map +1 -0
  28. package/dist/tools/delete-sales-channel.tool.js +19 -0
  29. package/dist/tools/delete-sales-channel.tool.js.map +1 -0
  30. package/dist/tools/get-order.tool.d.ts.map +1 -1
  31. package/dist/tools/get-order.tool.js +9 -1
  32. package/dist/tools/get-order.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/get-sales-channel.tool.d.ts +15 -0
  36. package/dist/tools/get-sales-channel.tool.d.ts.map +1 -0
  37. package/dist/tools/get-sales-channel.tool.js +21 -0
  38. package/dist/tools/get-sales-channel.tool.js.map +1 -0
  39. package/dist/tools/list-carts.tool.js +1 -1
  40. package/dist/tools/list-carts.tool.js.map +1 -1
  41. package/dist/tools/list-price-lists.tool.js +1 -1
  42. package/dist/tools/list-price-lists.tool.js.map +1 -1
  43. package/dist/tools/list-sales-channels.tool.d.ts +11 -0
  44. package/dist/tools/list-sales-channels.tool.d.ts.map +1 -0
  45. package/dist/tools/list-sales-channels.tool.js +13 -0
  46. package/dist/tools/list-sales-channels.tool.js.map +1 -0
  47. package/dist/tools/set-company-tax-exemption.tool.d.ts +10 -0
  48. package/dist/tools/set-company-tax-exemption.tool.d.ts.map +1 -0
  49. package/dist/tools/set-company-tax-exemption.tool.js +24 -0
  50. package/dist/tools/set-company-tax-exemption.tool.js.map +1 -0
  51. package/dist/tools/set-company-vat-id.tool.d.ts +10 -0
  52. package/dist/tools/set-company-vat-id.tool.d.ts.map +1 -0
  53. package/dist/tools/set-company-vat-id.tool.js +19 -0
  54. package/dist/tools/set-company-vat-id.tool.js.map +1 -0
  55. package/dist/tools/set-company-vat-verified.tool.d.ts +11 -0
  56. package/dist/tools/set-company-vat-verified.tool.d.ts.map +1 -0
  57. package/dist/tools/set-company-vat-verified.tool.js +29 -0
  58. package/dist/tools/set-company-vat-verified.tool.js.map +1 -0
  59. package/dist/tools/update-cart-config.tool.d.ts +2 -0
  60. package/dist/tools/update-cart-config.tool.d.ts.map +1 -1
  61. package/dist/tools/update-cart-config.tool.js +14 -1
  62. package/dist/tools/update-cart-config.tool.js.map +1 -1
  63. package/dist/tools/update-order-details.tool.js +1 -1
  64. package/dist/tools/update-order-details.tool.js.map +1 -1
  65. package/dist/tools/update-price-list.tool.d.ts +1 -0
  66. package/dist/tools/update-price-list.tool.d.ts.map +1 -1
  67. package/dist/tools/update-price-list.tool.js +14 -6
  68. package/dist/tools/update-price-list.tool.js.map +1 -1
  69. package/dist/tools/update-sales-channel.tool.d.ts +19 -0
  70. package/dist/tools/update-sales-channel.tool.d.ts.map +1 -0
  71. package/dist/tools/update-sales-channel.tool.js +33 -0
  72. package/dist/tools/update-sales-channel.tool.js.map +1 -0
  73. package/dist/types.d.ts +103 -4
  74. package/dist/types.d.ts.map +1 -1
  75. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"get-order.tool.d.ts","sourceRoot":"","sources":["../../src/tools/get-order.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvD,QAAA,MAAM,WAAW;;iBAEf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,KAAK,MAAM,GACT,CAAC;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG,WAAW,CAAC,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtE,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAwB9C,CAAC"}
1
+ {"version":3,"file":"get-order.tool.d.ts","sourceRoot":"","sources":["../../src/tools/get-order.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvD,QAAA,MAAM,WAAW;;iBAEf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,KAAK,MAAM,GACT,CAAC;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG,WAAW,CAAC,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtE,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAgC9C,CAAC"}
@@ -8,8 +8,16 @@ export const getOrderTool = {
8
8
  "(subtotal, discount, shipping, tax, total - all minor units), " +
9
9
  "displayMode (net or gross, how the buyer read prices), " +
10
10
  "taxRoundingMethod (per_line or per_rate), " +
11
+ "taxTreatment (kind standard, reverse_charge or exempt, frozen at checkout with the facts it rests on: legalNote, the text to print on the invoice, null for standard; buyerVatId, buyerVatCountry and buyerVatVerifiedAt of the VAT id that decided it; sellerCountry; shipToCountry; orders placed before it was recorded read standard), " +
12
+ "removedTax (VAT taken out of gross-stored prices for a reverse_charge or exempt buyer, minor units, 0 otherwise; total = subtotal - discount + shippingTotal - removedTax), " +
11
13
  "amounts (net, tax and gross of subtotal, discount, shipping and total), the frozen " +
12
- "discount code, priceListName (the price list the order was priced from, name frozen at checkout; null when none), PO number, shipping address, payment/fulfillment status " +
14
+ "discount code, channel (the sales channel the order was placed through: id, key, name; null for none), " +
15
+ "priceList / priceListName (the primary price list the order was priced from, name frozen at checkout; null when none) " +
16
+ "and priceListSource (MEMBER, COMPANY or CHANNEL - whose list it was), " +
17
+ "pricingChain (the lists tried in order: buyer, channelDated, channelBase; each null when none) - " +
18
+ "every list reference carries deleted, true once that list was deleted after the order, " +
19
+ "and each item's priceListId / priceListSource name the list that priced that line, " +
20
+ "PO number, shipping address, payment/fulfillment status " +
13
21
  "and the parcels (shipments: id, carrier, tracking number and link, " +
14
22
  "status, history) - a parcel's id is what update_shipment takes - the " +
15
23
  "returns (id, number, status, lines with reason and received/restocked " +
@@ -1 +1 @@
1
- {"version":3,"file":"get-order.tool.js","sourceRoot":"","sources":["../../src/tools/get-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,CAAC,QAAQ,CAAC,mCAAmC,CAAC;CACzE,CAAC,CAAC;AAOH,MAAM,CAAC,MAAM,YAAY,GAA0B;IACjD,IAAI,EAAE,WAAW;IACjB,WAAW,EACT,uEAAuE;QACvE,gEAAgE;QAChE,yDAAyD;QACzD,4CAA4C;QAC5C,qFAAqF;QACrF,4KAA4K;QAC5K,qEAAqE;QACrE,uEAAuE;QACvE,wEAAwE;QACxE,2EAA2E;QAC3E,yEAAyE;QACzE,sBAAsB;IACxB,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE;QAClC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;IACnC,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"get-order.tool.js","sourceRoot":"","sources":["../../src/tools/get-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,CAAC,QAAQ,CAAC,mCAAmC,CAAC;CACzE,CAAC,CAAC;AAOH,MAAM,CAAC,MAAM,YAAY,GAA0B;IACjD,IAAI,EAAE,WAAW;IACjB,WAAW,EACT,uEAAuE;QACvE,gEAAgE;QAChE,yDAAyD;QACzD,4CAA4C;QAC5C,6UAA6U;QAC7U,8KAA8K;QAC9K,qFAAqF;QACrF,yGAAyG;QACzG,wHAAwH;QACxH,wEAAwE;QACxE,mGAAmG;QACnG,yFAAyF;QACzF,qFAAqF;QACrF,0DAA0D;QAC1D,qEAAqE;QACrE,uEAAuE;QACvE,wEAAwE;QACxE,2EAA2E;QAC3E,yEAAyE;QACzE,sBAAsB;IACxB,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE;QAClC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;IACnC,CAAC;CACF,CAAC"}
@@ -4,7 +4,7 @@ const inputSchema = z.object({
4
4
  });
5
5
  export const getRecordTool = {
6
6
  name: "get_record",
7
- description: "Get one record (entry) of a data model by its id, including all its field values and status.",
7
+ description: "Get one record (entry) of a data model by its id, including all its field values and status. A company record (a model with the Company capability) also carries vatId, vatCountry, vatVerifiedAt, vatVerifiedBy and taxExemptReason, null when unset (set_company_vat_id, set_company_vat_verified, set_company_tax_exemption).",
8
8
  inputSchema,
9
9
  requiredPermissions: ["models:view"],
10
10
  execute: async ({ recordId }, ops) => {
@@ -1 +1 @@
1
- {"version":3,"file":"get-record.tool.js","sourceRoot":"","sources":["../../src/tools/get-record.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;CAC5E,CAAC,CAAC;AAOH,MAAM,CAAC,MAAM,aAAa,GAA0B;IAClD,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,8FAA8F;IAChG,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IACpC,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"get-record.tool.js","sourceRoot":"","sources":["../../src/tools/get-record.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;CAC5E,CAAC,CAAC;AAOH,MAAM,CAAC,MAAM,aAAa,GAA0B;IAClD,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,kUAAkU;IACpU,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IACpC,CAAC;CACF,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { z } from "zod";
2
+ import type { AiTool, SalesChannelSummary } from "../types.js";
3
+ declare const inputSchema: z.ZodObject<{
4
+ id: z.ZodString;
5
+ }, z.core.$strip>;
6
+ type Input = z.infer<typeof inputSchema>;
7
+ type Output = ({
8
+ found: true;
9
+ } & SalesChannelSummary) | {
10
+ found: false;
11
+ id: string;
12
+ };
13
+ export declare const getSalesChannelTool: AiTool<Input, Output>;
14
+ export {};
15
+ //# sourceMappingURL=get-sales-channel.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-sales-channel.tool.d.ts","sourceRoot":"","sources":["../../src/tools/get-sales-channel.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE/D,QAAA,MAAM,WAAW;;iBAKf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,KAAK,MAAM,GACT,CAAC;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG,mBAAmB,CAAC,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAarD,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { z } from "zod";
2
+ const inputSchema = z.object({
3
+ id: z
4
+ .string()
5
+ .min(1)
6
+ .describe("The sales channel's id (from list_sales_channels)"),
7
+ });
8
+ export const getSalesChannelTool = {
9
+ name: "get_sales_channel",
10
+ description: "Get one sales channel by id: key, name, displayMode, priceAccess, activePriceList (the dated list whose window holds now, else the base list), priceLists published to it with their windows, nextChangeAt and activeCartCount (open carts a delete would abandon). Read-only.",
11
+ inputSchema,
12
+ requiredPermissions: ["models:view"],
13
+ execute: async ({ id }, ops) => {
14
+ const channel = await ops.salesChannels.get(id);
15
+ if (!channel) {
16
+ return { found: false, id };
17
+ }
18
+ return { found: true, ...channel };
19
+ },
20
+ };
21
+ //# sourceMappingURL=get-sales-channel.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-sales-channel.tool.js","sourceRoot":"","sources":["../../src/tools/get-sales-channel.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,EAAE,EAAE,CAAC;SACF,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,mDAAmD,CAAC;CACjE,CAAC,CAAC;AAOH,MAAM,CAAC,MAAM,mBAAmB,GAA0B;IACxD,IAAI,EAAE,mBAAmB;IACzB,WAAW,EACT,gRAAgR;IAClR,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;IACrC,CAAC;CACF,CAAC"}
@@ -7,7 +7,7 @@ const inputSchema = z.object({
7
7
  });
8
8
  export const listCartsTool = {
9
9
  name: "list_carts",
10
- description: "List shopping carts (admin view) with optional status filter and pagination. totalValue is in minor units.",
10
+ description: "List shopping carts (admin view) with optional status filter and pagination. totalValue is in minor units. channel is the key of the sales channel the cart was started on (null for none): a buyer has one active cart per channel.",
11
11
  inputSchema,
12
12
  requiredPermissions: ["carts:view"],
13
13
  execute: async ({ status, skip, limit }, ops) => {
@@ -1 +1 @@
1
- {"version":3,"file":"list-carts.tool.js","sourceRoot":"","sources":["../../src/tools/list-carts.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAC/C,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,4GAA4G;IAC9G,WAAW;IACX,mBAAmB,EAAE,CAAC,YAAY,CAAC;IACnC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;QAC9C,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"list-carts.tool.js","sourceRoot":"","sources":["../../src/tools/list-carts.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAC/C,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,sOAAsO;IACxO,WAAW;IACX,mBAAmB,EAAE,CAAC,YAAY,CAAC;IACnC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;QAC9C,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC"}
@@ -2,7 +2,7 @@ import { z } from "zod";
2
2
  const inputSchema = z.object({});
3
3
  export const listPriceListsTool = {
4
4
  name: "list_price_lists",
5
- description: "List the workspace's price lists (Gold, Silver, dealer tiers ...), by name: each with percentOff (percent off the catalogue, 2 decimals; negative = a markup), startsAt / endsAt and active (false outside that window: the list prices nobody and its buyers pay catalogue prices), overrideCount (fixed prices it holds) and assignedCount (companies and customers it prices). A list prices a buyer from a fixed price per product or variant where it has one, else the catalogue price minus percentOff. Read-only; entries are in get_price_list.",
5
+ description: "List the workspace's price lists (Gold, Silver, dealer tiers ...), by name: each with percentOff (percent off the catalogue, 2 decimals; negative = a markup), startsAt / endsAt and active (false outside that window: the list prices nobody and its buyers pay catalogue prices), overrideCount (fixed prices it holds), assignedCount (companies and customers it prices) and channels (the sales channels it is published to, with key and priceAccess). A list prices a buyer from a fixed price per product or variant where it has one, else the catalogue price minus percentOff. Read-only; entries are in get_price_list.",
6
6
  inputSchema,
7
7
  requiredPermissions: ["models:view"],
8
8
  execute: async (_input, ops) => {
@@ -1 +1 @@
1
- {"version":3,"file":"list-price-lists.tool.js","sourceRoot":"","sources":["../../src/tools/list-price-lists.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AASjC,MAAM,CAAC,MAAM,kBAAkB,GAA0B;IACvD,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACT,0hBAA0hB;IAC5hB,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"list-price-lists.tool.js","sourceRoot":"","sources":["../../src/tools/list-price-lists.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AASjC,MAAM,CAAC,MAAM,kBAAkB,GAA0B;IACvD,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACT,smBAAsmB;IACxmB,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;CACF,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { z } from "zod";
2
+ import type { AiTool, SalesChannelSummary } from "../types.js";
3
+ declare const inputSchema: z.ZodObject<{}, z.core.$strip>;
4
+ type Input = z.infer<typeof inputSchema>;
5
+ interface Output {
6
+ count: number;
7
+ items: SalesChannelSummary[];
8
+ }
9
+ export declare const listSalesChannelsTool: AiTool<Input, Output>;
10
+ export {};
11
+ //# sourceMappingURL=list-sales-channels.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-sales-channels.tool.d.ts","sourceRoot":"","sources":["../../src/tools/list-sales-channels.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE/D,QAAA,MAAM,WAAW,gCAAe,CAAC;AAEjC,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,UAAU,MAAM;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,mBAAmB,EAAE,CAAC;CAC9B;AAED,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAUvD,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { z } from "zod";
2
+ const inputSchema = z.object({});
3
+ export const listSalesChannelsTool = {
4
+ name: "list_sales_channels",
5
+ description: "List the workspace's sales channels (retail, horeca, b2b ...), by key. A storefront sends a channel's key to be priced from the price lists published to it: per product the buyer's own or company list wins, then the channel's dated list whose window holds now, then its base (undated) list, then the catalogue. Each channel has key (what the storefront sends, fixed once created), name, displayMode (net or gross prices for visitors and customers without a company), priceAccess (PUBLIC - anyone; MEMBERS - signed-in customers, registration is open; COMPANY_MEMBERS - buyers of an approved company), activePriceList (the list pricing it now), priceLists (every list published to it), nextChangeAt (when its prices next change) and activeCartCount (open carts on it). Read-only.",
6
+ inputSchema,
7
+ requiredPermissions: ["models:view"],
8
+ execute: async (_input, ops) => {
9
+ const items = await ops.salesChannels.list();
10
+ return { count: items.length, items };
11
+ },
12
+ };
13
+ //# sourceMappingURL=list-sales-channels.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-sales-channels.tool.js","sourceRoot":"","sources":["../../src/tools/list-sales-channels.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AASjC,MAAM,CAAC,MAAM,qBAAqB,GAA0B;IAC1D,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EACT,2wBAA2wB;IAC7wB,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC7C,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;CACF,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { z } from "zod";
2
+ import type { AiTool, CompanyVatProfile } from "../types.js";
3
+ declare const inputSchema: z.ZodObject<{
4
+ recordId: z.ZodString;
5
+ reason: z.ZodNullable<z.ZodString>;
6
+ }, z.core.$strip>;
7
+ type Input = z.infer<typeof inputSchema>;
8
+ export declare const setCompanyTaxExemptionTool: AiTool<Input, CompanyVatProfile>;
9
+ export {};
10
+ //# sourceMappingURL=set-company-tax-exemption.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-company-tax-exemption.tool.d.ts","sourceRoot":"","sources":["../../src/tools/set-company-tax-exemption.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE7D,QAAA,MAAM,WAAW;;;iBAgBf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,KAAK,EAAE,iBAAiB,CASvE,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { z } from "zod";
2
+ import { TAX_EXEMPT_REASON_MAX_LEN, TAX_EXEMPT_REASON_MIN_LEN, } from "@cmssy/types";
3
+ const inputSchema = z.object({
4
+ recordId: z
5
+ .string()
6
+ .min(1)
7
+ .describe("The company record's id (a record of a model with the Company capability; a customer's company.id)"),
8
+ reason: z
9
+ .string()
10
+ .trim()
11
+ .min(TAX_EXEMPT_REASON_MIN_LEN)
12
+ .max(TAX_EXEMPT_REASON_MAX_LEN)
13
+ .nullable()
14
+ .describe(`The legal basis of the exemption, printed on each of the company's orders (${TAX_EXEMPT_REASON_MIN_LEN}-${TAX_EXEMPT_REASON_MAX_LEN} characters); null clears the exemption`),
15
+ });
16
+ export const setCompanyTaxExemptionTool = {
17
+ name: "set_company_tax_exemption",
18
+ description: "Exempt a company record's orders from VAT, or clear the exemption with null. An exempt company's carts and orders carry 0% and 0 tax with reason as the legal note, whatever its VAT id; in a workspace that stores gross prices the VAT inside them is removed, not charged. Carts already holding the old status are refused at checkout (BUYER_CHANGED) and orders keep the treatment they were placed with. Needs customers:manage and site:config:edit, the same pair as set_company_vat_verified and as linking a customer to a company whose VAT id is verified or that is tax exempt. Refused for a record that is not a company (a model with the Company capability). Returns the record id with vatId, vatCountry, vatVerifiedAt, vatVerifiedBy and taxExemptReason.",
19
+ inputSchema,
20
+ requiredPermissions: ["customers:manage", "site:config:edit"],
21
+ confirmGated: true,
22
+ execute: async ({ recordId, reason }, ops) => ops.priceLists.setRecordTaxExemption(recordId, reason),
23
+ };
24
+ //# sourceMappingURL=set-company-tax-exemption.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-company-tax-exemption.tool.js","sourceRoot":"","sources":["../../src/tools/set-company-tax-exemption.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,oGAAoG,CACrG;IACH,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,IAAI,EAAE;SACN,GAAG,CAAC,yBAAyB,CAAC;SAC9B,GAAG,CAAC,yBAAyB,CAAC;SAC9B,QAAQ,EAAE;SACV,QAAQ,CACP,8EAA8E,yBAAyB,IAAI,yBAAyB,yCAAyC,CAC9K;CACJ,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,0BAA0B,GAAqC;IAC1E,IAAI,EAAE,2BAA2B;IACjC,WAAW,EACT,ivBAAivB;IACnvB,WAAW;IACX,mBAAmB,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAC7D,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,CAC3C,GAAG,CAAC,UAAU,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC;CACzD,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { z } from "zod";
2
+ import type { AiTool, CompanyVatProfile } from "../types.js";
3
+ declare const inputSchema: z.ZodObject<{
4
+ recordId: z.ZodString;
5
+ vatId: z.ZodNullable<z.ZodString>;
6
+ }, z.core.$strip>;
7
+ type Input = z.infer<typeof inputSchema>;
8
+ export declare const setCompanyVatIdTool: AiTool<Input, CompanyVatProfile>;
9
+ export {};
10
+ //# sourceMappingURL=set-company-vat-id.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-company-vat-id.tool.d.ts","sourceRoot":"","sources":["../../src/tools/set-company-vat-id.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE7D,QAAA,MAAM,WAAW;;;iBAaf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,KAAK,EAAE,iBAAiB,CAQhE,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { z } from "zod";
2
+ const inputSchema = z.object({
3
+ recordId: z
4
+ .string()
5
+ .min(1)
6
+ .describe("The company record's id (a record of a model with the Company capability; a customer's company.id)"),
7
+ vatId: z
8
+ .string()
9
+ .nullable()
10
+ .describe("The EU VAT id with its country prefix, e.g. DE123456789; null or empty clears it"),
11
+ });
12
+ export const setCompanyVatIdTool = {
13
+ name: "set_company_vat_id",
14
+ description: "Set the EU VAT id of a company record. cmssy normalizes it (spaces, dots and dashes dropped, GR read as EL) and checks it against the member state's format; a malformed id is refused (BAD_USER_INPUT). null or empty clears it. A changed id is no longer verified, so its orders are taxed as standard until set_company_vat_verified attests the new value. Needs customers:manage. Verifying the id or exempting the company (set_company_vat_verified, set_company_tax_exemption) needs customers:manage and site:config:edit, and so does linking a customer to a company whose VAT id is verified or that is tax exempt. Refused for a record that is not a company (a model with the Company capability). Returns the record id with vatId, vatCountry, vatVerifiedAt, vatVerifiedBy and taxExemptReason.",
15
+ inputSchema,
16
+ requiredPermissions: ["customers:manage"],
17
+ execute: async ({ recordId, vatId }, ops) => ops.priceLists.setRecordVatId(recordId, vatId),
18
+ };
19
+ //# sourceMappingURL=set-company-vat-id.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-company-vat-id.tool.js","sourceRoot":"","sources":["../../src/tools/set-company-vat-id.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,oGAAoG,CACrG;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,kFAAkF,CACnF;CACJ,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAqC;IACnE,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACT,oxBAAoxB;IACtxB,WAAW;IACX,mBAAmB,EAAE,CAAC,kBAAkB,CAAC;IACzC,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAC1C,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC;CACjD,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { z } from "zod";
2
+ import type { AiTool, CompanyVatProfile } from "../types.js";
3
+ declare const inputSchema: z.ZodObject<{
4
+ recordId: z.ZodString;
5
+ verified: z.ZodBoolean;
6
+ expectedVatId: z.ZodOptional<z.ZodString>;
7
+ }, z.core.$strip>;
8
+ type Input = z.infer<typeof inputSchema>;
9
+ export declare const setCompanyVatVerifiedTool: AiTool<Input, CompanyVatProfile>;
10
+ export {};
11
+ //# sourceMappingURL=set-company-vat-verified.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-company-vat-verified.tool.d.ts","sourceRoot":"","sources":["../../src/tools/set-company-vat-verified.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE7D,QAAA,MAAM,WAAW;;;;iBAsBb,CAAC;AAEL,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,KAAK,EAAE,iBAAiB,CAatE,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { z } from "zod";
2
+ const inputSchema = z
3
+ .object({
4
+ recordId: z
5
+ .string()
6
+ .min(1)
7
+ .describe("The company record's id (a record of a model with the Company capability; a customer's company.id)"),
8
+ verified: z
9
+ .boolean()
10
+ .describe("true attests the VAT id was checked, false withdraws it"),
11
+ expectedVatId: z
12
+ .string()
13
+ .min(1)
14
+ .optional()
15
+ .describe("The VAT id you checked, as get_record's vatId shows it; required to verify. A different stored id is refused with CONFLICT"),
16
+ })
17
+ .refine((input) => !input.verified || input.expectedVatId !== undefined, {
18
+ message: "Pass expectedVatId - the VAT id you checked - to verify it",
19
+ path: ["expectedVatId"],
20
+ });
21
+ export const setCompanyVatVerifiedTool = {
22
+ name: "set_company_vat_verified",
23
+ description: "Attest that a company record's VAT id was checked (for example in VIES), or withdraw that attestation. A verified EU VAT id of another member state than the workspace's sellerCountry (update_cart_config) zero-rates the company's orders as reverse charge, unless an order ships to the seller's country or outside the EU; withdrawing it taxes them as standard again. Carts already holding the old status are refused at checkout (BUYER_CHANGED) and orders keep the treatment they were placed with. Refused when the company has no VAT id (set it with set_company_vat_id) and with CONFLICT when the stored id differs from expectedVatId. Needs customers:manage and site:config:edit, the same pair as set_company_tax_exemption and as linking a customer to a company whose VAT id is verified or that is tax exempt. Refused for a record that is not a company (a model with the Company capability). Returns the record id with vatId, vatCountry, vatVerifiedAt, vatVerifiedBy and taxExemptReason.",
24
+ inputSchema,
25
+ requiredPermissions: ["customers:manage", "site:config:edit"],
26
+ confirmGated: true,
27
+ execute: async ({ recordId, verified, expectedVatId }, ops) => ops.priceLists.setRecordVatVerified(recordId, verified, expectedVatId ?? null),
28
+ };
29
+ //# sourceMappingURL=set-company-vat-verified.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-company-vat-verified.tool.js","sourceRoot":"","sources":["../../src/tools/set-company-vat-verified.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC;KAClB,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,oGAAoG,CACrG;IACH,QAAQ,EAAE,CAAC;SACR,OAAO,EAAE;SACT,QAAQ,CAAC,yDAAyD,CAAC;IACtE,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CACP,4HAA4H,CAC7H;CACJ,CAAC;KACD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE;IACvE,OAAO,EAAE,4DAA4D;IACrE,IAAI,EAAE,CAAC,eAAe,CAAC;CACxB,CAAC,CAAC;AAIL,MAAM,CAAC,MAAM,yBAAyB,GAAqC;IACzE,IAAI,EAAE,0BAA0B;IAChC,WAAW,EACT,09BAA09B;IAC59B,WAAW;IACX,mBAAmB,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAC7D,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,GAAG,EAAE,EAAE,CAC5D,GAAG,CAAC,UAAU,CAAC,oBAAoB,CACjC,QAAQ,EACR,QAAQ,EACR,aAAa,IAAI,IAAI,CACtB;CACJ,CAAC"}
@@ -60,6 +60,8 @@ declare const inputSchema: z.ZodObject<{
60
60
  per_line: "per_line";
61
61
  per_rate: "per_rate";
62
62
  }>>;
63
+ sellerCountry: z.ZodOptional<z.ZodNullable<z.ZodString>>;
64
+ reverseChargeNote: z.ZodOptional<z.ZodNullable<z.ZodString>>;
63
65
  returnWindowDays: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
64
66
  }, z.core.$strict>;
65
67
  type Input = z.infer<typeof inputSchema>;
@@ -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;AACxB,OAAO,KAAK,EAAE,MAAM,EAAmB,MAAM,aAAa,CAAC;AAO3D,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAsFN,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;AAExB,OAAO,KAAK,EAAE,MAAM,EAAmB,MAAM,aAAa,CAAC;AAO3D,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAyGN,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,4 +1,5 @@
1
1
  import { z } from "zod";
2
+ import { REVERSE_CHARGE_NOTE_MAX_LEN } from "@cmssy/types";
2
3
  import { orderFieldSchema, shippingMethodSchema, taxRateSchema, } from "../schemas.js";
3
4
  const inputSchema = z
4
5
  .object({
@@ -64,6 +65,18 @@ const inputSchema = z
64
65
  .enum(["per_line", "per_rate"])
65
66
  .optional()
66
67
  .describe("How VAT is rounded for company buyers who read net prices: per_line (default) rounds each line, per_rate rounds once per rate. A company can override it with set_company_tax_rounding; consumers are always per_line"),
68
+ sellerCountry: z
69
+ .string()
70
+ .regex(/^[A-Z]{2}$/, "Must be a 2-letter uppercase ISO 3166-1 alpha-2 code, e.g. PL")
71
+ .nullable()
72
+ .optional()
73
+ .describe("ISO 3166-1 alpha-2 country the workspace sells from, e.g. PL (Greece is GR, not its VAT prefix EL); null clears it. Reverse charge needs it: a company with a verified EU VAT id of another member state is zero-rated (set_company_vat_verified)"),
74
+ reverseChargeNote: z
75
+ .string()
76
+ .max(REVERSE_CHARGE_NOTE_MAX_LEN)
77
+ .nullable()
78
+ .optional()
79
+ .describe(`Legal note frozen on reverse-charge orders, up to ${REVERSE_CHARGE_NOTE_MAX_LEN} characters; null or empty restores the default Article 196 wording`),
67
80
  returnWindowDays: z
68
81
  .number()
69
82
  .int()
@@ -76,7 +89,7 @@ const inputSchema = z
76
89
  .strict();
77
90
  export const updateCartConfigTool = {
78
91
  name: "update_cart_config",
79
- 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. Which models the store sells is not set here: a model is sellable when its product capability is enabled (update_model, product.enabled).",
92
+ 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. Which models the store sells is not set here: a model is sellable when its product capability is enabled (update_model, product.enabled).",
80
93
  inputSchema,
81
94
  requiredPermissions: ["site:config:edit"],
82
95
  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":"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"}
1
+ {"version":3,"file":"update-cart-config.tool.js","sourceRoot":"","sources":["../../src/tools/update-cart-config.tool.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ const inputSchema = z.object({
18
18
  });
19
19
  export const updateOrderDetailsTool = {
20
20
  name: "update_order_details",
21
- description: "Update order metadata: customer email, internal notes, PO number, delivery address and custom order fields. Only provided fields change.",
21
+ description: "Update order metadata: customer email, internal notes, PO number, delivery address and custom order fields. Only provided fields change. A delivery address whose country would change the order's frozen tax treatment (taxTreatment in get_order, e.g. reverse_charge to standard) is refused (BAD_USER_INPUT, TAX_TREATMENT_CHANGED); cancel the order and place it again instead.",
22
22
  inputSchema,
23
23
  requiredPermissions: ["orders:manage"],
24
24
  execute: async ({ orderId, ...details }, ops) => {
@@ -1 +1 @@
1
- {"version":3,"file":"update-order-details.tool.js","sourceRoot":"","sources":["../../src/tools/update-order-details.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,yCAAyC,CAAC;IACtD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IAC5E,eAAe,EAAE,kBAAkB;SAChC,QAAQ,EAAE;SACV,QAAQ,CAAC,2DAA2D,CAAC;IACxE,YAAY,EAAE,CAAC;SACZ,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,EAAE;SACV,QAAQ,CACP,iJAAiJ,CAClJ;CACJ,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,sBAAsB,GAAoC;IACrE,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EACT,0IAA0I;IAC5I,WAAW;IACX,mBAAmB,EAAE,CAAC,eAAe,CAAC;IACtC,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE;QAC9C,OAAO,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,OAA4B,CAAC,CAAC;IACzE,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"update-order-details.tool.js","sourceRoot":"","sources":["../../src/tools/update-order-details.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,yCAAyC,CAAC;IACtD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IAC5E,eAAe,EAAE,kBAAkB;SAChC,QAAQ,EAAE;SACV,QAAQ,CAAC,2DAA2D,CAAC;IACxE,YAAY,EAAE,CAAC;SACZ,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,EAAE;SACV,QAAQ,CACP,iJAAiJ,CAClJ;CACJ,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,sBAAsB,GAAoC;IACrE,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EACT,uXAAuX;IACzX,WAAW;IACX,mBAAmB,EAAE,CAAC,eAAe,CAAC;IACtC,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE;QAC9C,OAAO,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,OAA4B,CAAC,CAAC;IACzE,CAAC;CACF,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import type { AiTool, PriceListSummary } from "../types.js";
3
3
  declare const inputSchema: z.ZodObject<{
4
+ channels: z.ZodOptional<z.ZodArray<z.ZodString>>;
4
5
  startsAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5
6
  endsAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
6
7
  id: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"update-price-list.tool.d.ts","sourceRoot":"","sources":["../../src/tools/update-price-list.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAO5D,QAAA,MAAM,WAAW;;;;;;iBAab,CAAC;AAEL,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAiB/D,CAAC"}
1
+ {"version":3,"file":"update-price-list.tool.d.ts","sourceRoot":"","sources":["../../src/tools/update-price-list.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAQ5D,QAAA,MAAM,WAAW;;;;;;;iBAcb,CAAC;AAEL,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,KAAK,EAAE,gBAAgB,CA6B/D,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { percentOffSchema, priceListWindowOrdered, priceListWindowSchema, } from "../schemas.js";
2
+ import { percentOffSchema, priceListChannelsSchema, priceListWindowOrdered, priceListWindowSchema, } from "../schemas.js";
3
3
  const inputSchema = z
4
4
  .object({
5
5
  id: z
@@ -9,6 +9,7 @@ const inputSchema = z
9
9
  name: z.string().trim().min(1).optional().describe("New unique name"),
10
10
  percentOff: percentOffSchema.optional(),
11
11
  ...priceListWindowSchema,
12
+ channels: priceListChannelsSchema.optional(),
12
13
  })
13
14
  .refine(priceListWindowOrdered, {
14
15
  message: "endsAt must be later than startsAt",
@@ -16,17 +17,24 @@ const inputSchema = z
16
17
  });
17
18
  export const updatePriceListTool = {
18
19
  name: "update_price_list",
19
- description: "Rename a price list, change its percentOff (-1000 to 99.99, 2 decimals, negative = a markup; it prices every product the list holds no fixed price for) or its startsAt / endsAt window (null clears a bound). Fixed prices are changed with set_price_list_entry / set_price_list_entries. Carts already priced from the list keep their prices until the buyer adds again; orders keep theirs.",
20
+ description: "Rename a price list, change its percentOff (-1000 to 99.99, 2 decimals, negative = a markup; it prices every product the list holds no fixed price for) its startsAt / endsAt window (null clears a bound), or the sales channels it is published to (channels replaces the whole set, [] unpublishes it from every channel, leave it out to keep). Fixed prices are changed with set_price_list_entry / set_price_list_entries. Carts already priced from the list keep their prices until the buyer adds again; orders keep theirs.",
20
21
  inputSchema,
21
22
  requiredPermissions: ["models:edit"],
22
- execute: async ({ id, name, percentOff, startsAt, endsAt }, ops) => {
23
+ execute: async ({ id, name, percentOff, startsAt, endsAt, channels }, ops) => {
23
24
  if (name === undefined &&
24
25
  percentOff === undefined &&
25
26
  startsAt === undefined &&
26
- endsAt === undefined) {
27
- throw new Error("Provide name, percentOff, startsAt or endsAt to update");
27
+ endsAt === undefined &&
28
+ channels === undefined) {
29
+ throw new Error("Provide name, percentOff, startsAt, endsAt or channels to update");
28
30
  }
29
- return ops.priceLists.update(id, { name, percentOff, startsAt, endsAt });
31
+ return ops.priceLists.update(id, {
32
+ name,
33
+ percentOff,
34
+ startsAt,
35
+ endsAt,
36
+ channels,
37
+ });
30
38
  },
31
39
  };
32
40
  //# sourceMappingURL=update-price-list.tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-price-list.tool.js","sourceRoot":"","sources":["../../src/tools/update-price-list.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,GAAG,CAAC;KAClB,MAAM,CAAC;IACN,EAAE,EAAE,CAAC;SACF,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,6CAA6C,CAAC;IAC1D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACrE,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IACvC,GAAG,qBAAqB;CACzB,CAAC;KACD,MAAM,CAAC,sBAAsB,EAAE;IAC9B,OAAO,EAAE,oCAAoC;IAC7C,IAAI,EAAE,CAAC,QAAQ,CAAC;CACjB,CAAC,CAAC;AAIL,MAAM,CAAC,MAAM,mBAAmB,GAAoC;IAClE,IAAI,EAAE,mBAAmB;IACzB,WAAW,EACT,kYAAkY;IACpY,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE;QACjE,IACE,IAAI,KAAK,SAAS;YAClB,UAAU,KAAK,SAAS;YACxB,QAAQ,KAAK,SAAS;YACtB,MAAM,KAAK,SAAS,EACpB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3E,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"update-price-list.tool.js","sourceRoot":"","sources":["../../src/tools/update-price-list.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,GAAG,CAAC;KAClB,MAAM,CAAC;IACN,EAAE,EAAE,CAAC;SACF,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,6CAA6C,CAAC;IAC1D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACrE,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IACvC,GAAG,qBAAqB;IACxB,QAAQ,EAAE,uBAAuB,CAAC,QAAQ,EAAE;CAC7C,CAAC;KACD,MAAM,CAAC,sBAAsB,EAAE;IAC9B,OAAO,EAAE,oCAAoC;IAC7C,IAAI,EAAE,CAAC,QAAQ,CAAC;CACjB,CAAC,CAAC;AAIL,MAAM,CAAC,MAAM,mBAAmB,GAAoC;IAClE,IAAI,EAAE,mBAAmB;IACzB,WAAW,EACT,ugBAAugB;IACzgB,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EACZ,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,EACpD,GAAG,EACH,EAAE;QACF,IACE,IAAI,KAAK,SAAS;YAClB,UAAU,KAAK,SAAS;YACxB,QAAQ,KAAK,SAAS;YACtB,MAAM,KAAK,SAAS;YACpB,QAAQ,KAAK,SAAS,EACtB,CAAC;YACD,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE;YAC/B,IAAI;YACJ,UAAU;YACV,QAAQ;YACR,MAAM;YACN,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { z } from "zod";
2
+ import type { AiTool, SalesChannelSummary } from "../types.js";
3
+ declare const inputSchema: z.ZodObject<{
4
+ id: z.ZodString;
5
+ name: z.ZodOptional<z.ZodString>;
6
+ displayMode: z.ZodOptional<z.ZodEnum<{
7
+ net: "net";
8
+ gross: "gross";
9
+ }>>;
10
+ priceAccess: z.ZodOptional<z.ZodEnum<{
11
+ PUBLIC: "PUBLIC";
12
+ MEMBERS: "MEMBERS";
13
+ COMPANY_MEMBERS: "COMPANY_MEMBERS";
14
+ }>>;
15
+ }, z.core.$strip>;
16
+ type Input = z.infer<typeof inputSchema>;
17
+ export declare const updateSalesChannelTool: AiTool<Input, SalesChannelSummary>;
18
+ export {};
19
+ //# sourceMappingURL=update-sales-channel.tool.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,33 @@
1
+ import { z } from "zod";
2
+ import { SALES_CHANNEL_NAME_MAX_LEN } from "@cmssy/types";
3
+ import { channelPriceAccessSchema, priceDisplayModeSchema, } from "../schemas.js";
4
+ const inputSchema = z.object({
5
+ id: z
6
+ .string()
7
+ .min(1)
8
+ .describe("The sales channel's id (from list_sales_channels)"),
9
+ name: z
10
+ .string()
11
+ .trim()
12
+ .min(1)
13
+ .max(SALES_CHANNEL_NAME_MAX_LEN)
14
+ .optional()
15
+ .describe("New display name"),
16
+ displayMode: priceDisplayModeSchema.optional(),
17
+ priceAccess: channelPriceAccessSchema.optional(),
18
+ });
19
+ export const updateSalesChannelTool = {
20
+ 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).",
22
+ inputSchema,
23
+ requiredPermissions: ["models:edit"],
24
+ execute: async ({ id, name, displayMode, priceAccess }, ops) => {
25
+ if (name === undefined &&
26
+ displayMode === undefined &&
27
+ priceAccess === undefined) {
28
+ throw new Error("Provide name, displayMode or priceAccess to update");
29
+ }
30
+ return ops.salesChannels.update(id, { name, displayMode, priceAccess });
31
+ },
32
+ };
33
+ //# sourceMappingURL=update-sales-channel.tool.js.map
@@ -0,0 +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"}