@cmssy/ai-tools 0.88.0 → 0.90.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +9 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +14 -0
- package/dist/registry.js.map +1 -1
- package/dist/schemas.d.ts +11 -0
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +18 -1
- package/dist/schemas.js.map +1 -1
- package/dist/tools/create-price-list.tool.d.ts +1 -0
- package/dist/tools/create-price-list.tool.d.ts.map +1 -1
- package/dist/tools/create-price-list.tool.js +4 -3
- package/dist/tools/create-price-list.tool.js.map +1 -1
- package/dist/tools/create-sales-channel.tool.d.ts +19 -0
- package/dist/tools/create-sales-channel.tool.d.ts.map +1 -0
- package/dist/tools/create-sales-channel.tool.js +22 -0
- package/dist/tools/create-sales-channel.tool.js.map +1 -0
- package/dist/tools/delete-price-list.tool.js +1 -1
- package/dist/tools/delete-price-list.tool.js.map +1 -1
- package/dist/tools/delete-sales-channel.tool.d.ts +13 -0
- package/dist/tools/delete-sales-channel.tool.d.ts.map +1 -0
- package/dist/tools/delete-sales-channel.tool.js +19 -0
- package/dist/tools/delete-sales-channel.tool.js.map +1 -0
- package/dist/tools/get-order.tool.d.ts.map +1 -1
- package/dist/tools/get-order.tool.js +11 -2
- package/dist/tools/get-order.tool.js.map +1 -1
- package/dist/tools/get-sales-channel.tool.d.ts +15 -0
- package/dist/tools/get-sales-channel.tool.d.ts.map +1 -0
- package/dist/tools/get-sales-channel.tool.js +21 -0
- package/dist/tools/get-sales-channel.tool.js.map +1 -0
- package/dist/tools/list-carts.tool.js +1 -1
- package/dist/tools/list-carts.tool.js.map +1 -1
- package/dist/tools/list-price-lists.tool.js +1 -1
- package/dist/tools/list-price-lists.tool.js.map +1 -1
- package/dist/tools/list-sales-channels.tool.d.ts +11 -0
- package/dist/tools/list-sales-channels.tool.d.ts.map +1 -0
- package/dist/tools/list-sales-channels.tool.js +13 -0
- package/dist/tools/list-sales-channels.tool.js.map +1 -0
- package/dist/tools/set-company-price-display-mode.tool.d.ts +13 -0
- package/dist/tools/set-company-price-display-mode.tool.d.ts.map +1 -0
- package/dist/tools/set-company-price-display-mode.tool.js +19 -0
- package/dist/tools/set-company-price-display-mode.tool.js.map +1 -0
- package/dist/tools/set-company-tax-rounding.tool.d.ts +13 -0
- package/dist/tools/set-company-tax-rounding.tool.d.ts.map +1 -0
- package/dist/tools/set-company-tax-rounding.tool.js +19 -0
- package/dist/tools/set-company-tax-rounding.tool.js.map +1 -0
- package/dist/tools/update-cart-config.tool.d.ts +4 -0
- package/dist/tools/update-cart-config.tool.d.ts.map +1 -1
- package/dist/tools/update-cart-config.tool.js +5 -1
- package/dist/tools/update-cart-config.tool.js.map +1 -1
- package/dist/tools/update-price-list.tool.d.ts +1 -0
- package/dist/tools/update-price-list.tool.d.ts.map +1 -1
- package/dist/tools/update-price-list.tool.js +14 -6
- package/dist/tools/update-price-list.tool.js.map +1 -1
- package/dist/tools/update-sales-channel.tool.d.ts +19 -0
- package/dist/tools/update-sales-channel.tool.d.ts.map +1 -0
- package/dist/tools/update-sales-channel.tool.js +33 -0
- package/dist/tools/update-sales-channel.tool.js.map +1 -0
- package/dist/types.d.ts +95 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -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,
|
|
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)
|
|
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,
|
|
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,13 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { AiTool, CompanyTaxPreferences } from "../types.js";
|
|
3
|
+
declare const inputSchema: z.ZodObject<{
|
|
4
|
+
recordId: z.ZodString;
|
|
5
|
+
displayMode: z.ZodNullable<z.ZodEnum<{
|
|
6
|
+
net: "net";
|
|
7
|
+
gross: "gross";
|
|
8
|
+
}>>;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
type Input = z.infer<typeof inputSchema>;
|
|
11
|
+
export declare const setCompanyPriceDisplayModeTool: AiTool<Input, CompanyTaxPreferences>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=set-company-price-display-mode.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-company-price-display-mode.tool.d.ts","sourceRoot":"","sources":["../../src/tools/set-company-price-display-mode.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEjE,QAAA,MAAM,WAAW;;;;;;iBAaf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,8BAA8B,EAAE,MAAM,CACjD,KAAK,EACL,qBAAqB,CAStB,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
|
+
displayMode: z
|
|
8
|
+
.enum(["net", "gross"])
|
|
9
|
+
.nullable()
|
|
10
|
+
.describe("net or gross; null falls back to the default, net for a company buyer"),
|
|
11
|
+
});
|
|
12
|
+
export const setCompanyPriceDisplayModeTool = {
|
|
13
|
+
name: "set_company_price_display_mode",
|
|
14
|
+
description: "Set how the buyers of a company record read prices: net (VAT added on top) or gross (VAT inside); null falls back to the default, net for a company buyer. Applies to carts started after the change; existing carts and orders keep the mode they were priced in. Refused for a record that is not a company (a model with the Company capability). Returns the record id with its priceDisplayMode and taxRoundingMethod.",
|
|
15
|
+
inputSchema,
|
|
16
|
+
requiredPermissions: ["customers:manage"],
|
|
17
|
+
execute: async ({ recordId, displayMode }, ops) => ops.priceLists.setRecordPriceDisplayMode(recordId, displayMode),
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=set-company-price-display-mode.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-company-price-display-mode.tool.js","sourceRoot":"","sources":["../../src/tools/set-company-price-display-mode.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,WAAW,EAAE,CAAC;SACX,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SACtB,QAAQ,EAAE;SACV,QAAQ,CACP,uEAAuE,CACxE;CACJ,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,8BAA8B,GAGvC;IACF,IAAI,EAAE,gCAAgC;IACtC,WAAW,EACT,6ZAA6Z;IAC/Z,WAAW;IACX,mBAAmB,EAAE,CAAC,kBAAkB,CAAC;IACzC,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,EAAE,CAChD,GAAG,CAAC,UAAU,CAAC,yBAAyB,CAAC,QAAQ,EAAE,WAAW,CAAC;CAClE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { AiTool, CompanyTaxPreferences } from "../types.js";
|
|
3
|
+
declare const inputSchema: z.ZodObject<{
|
|
4
|
+
recordId: z.ZodString;
|
|
5
|
+
method: z.ZodNullable<z.ZodEnum<{
|
|
6
|
+
per_line: "per_line";
|
|
7
|
+
per_rate: "per_rate";
|
|
8
|
+
}>>;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
type Input = z.infer<typeof inputSchema>;
|
|
11
|
+
export declare const setCompanyTaxRoundingTool: AiTool<Input, CompanyTaxPreferences>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=set-company-tax-rounding.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-company-tax-rounding.tool.d.ts","sourceRoot":"","sources":["../../src/tools/set-company-tax-rounding.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEjE,QAAA,MAAM,WAAW;;;;;;iBAaf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,KAAK,EAAE,qBAAqB,CAQ1E,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
|
+
method: z
|
|
8
|
+
.enum(["per_line", "per_rate"])
|
|
9
|
+
.nullable()
|
|
10
|
+
.describe("per_line rounds VAT on each line, per_rate once per rate; null falls back to the workspace's companyTaxRounding"),
|
|
11
|
+
});
|
|
12
|
+
export const setCompanyTaxRoundingTool = {
|
|
13
|
+
name: "set_company_tax_rounding",
|
|
14
|
+
description: "Set how VAT is rounded for the net-price buyers of a company record: per_line or per_rate; null falls back to the workspace's companyTaxRounding (update_cart_config). Gross-price buyers and consumers are always rounded per_line. Applies to carts started after the change; existing carts and orders keep the method they were priced with. Refused for a record that is not a company (a model with the Company capability). Returns the record id with its priceDisplayMode and taxRoundingMethod.",
|
|
15
|
+
inputSchema,
|
|
16
|
+
requiredPermissions: ["customers:manage"],
|
|
17
|
+
execute: async ({ recordId, method }, ops) => ops.priceLists.setRecordTaxRoundingMethod(recordId, method),
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=set-company-tax-rounding.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-company-tax-rounding.tool.js","sourceRoot":"","sources":["../../src/tools/set-company-tax-rounding.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,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;SAC9B,QAAQ,EAAE;SACV,QAAQ,CACP,iHAAiH,CAClH;CACJ,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,yBAAyB,GAAyC;IAC7E,IAAI,EAAE,0BAA0B;IAChC,WAAW,EACT,2eAA2e;IAC7e,WAAW;IACX,mBAAmB,EAAE,CAAC,kBAAkB,CAAC;IACzC,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,CAC3C,GAAG,CAAC,UAAU,CAAC,0BAA0B,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC9D,CAAC"}
|
|
@@ -56,6 +56,10 @@ declare const inputSchema: z.ZodObject<{
|
|
|
56
56
|
enableSavedCarts: z.ZodOptional<z.ZodBoolean>;
|
|
57
57
|
enableQuoteRequests: z.ZodOptional<z.ZodBoolean>;
|
|
58
58
|
autoCloseOrders: z.ZodOptional<z.ZodBoolean>;
|
|
59
|
+
companyTaxRounding: z.ZodOptional<z.ZodEnum<{
|
|
60
|
+
per_line: "per_line";
|
|
61
|
+
per_rate: "per_rate";
|
|
62
|
+
}>>;
|
|
59
63
|
returnWindowDays: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
60
64
|
}, z.core.$strict>;
|
|
61
65
|
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
|
|
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"}
|
|
@@ -60,6 +60,10 @@ const inputSchema = z
|
|
|
60
60
|
.boolean()
|
|
61
61
|
.optional()
|
|
62
62
|
.describe("Close an order once it is paid and fulfilled, reopen it when that stops being true (default on)"),
|
|
63
|
+
companyTaxRounding: z
|
|
64
|
+
.enum(["per_line", "per_rate"])
|
|
65
|
+
.optional()
|
|
66
|
+
.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"),
|
|
63
67
|
returnWindowDays: z
|
|
64
68
|
.number()
|
|
65
69
|
.int()
|
|
@@ -72,7 +76,7 @@ const inputSchema = z
|
|
|
72
76
|
.strict();
|
|
73
77
|
export const updateCartConfigTool = {
|
|
74
78
|
name: "update_cart_config",
|
|
75
|
-
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. Which models the store sells is not set here: a model is sellable when its product capability is enabled (update_model, product.enabled).",
|
|
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).",
|
|
76
80
|
inputSchema,
|
|
77
81
|
requiredPermissions: ["site:config:edit"],
|
|
78
82
|
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;AAExB,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,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,
|
|
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,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;
|
|
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)
|
|
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
|
-
|
|
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, {
|
|
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;
|
|
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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -683,6 +683,19 @@ export interface OrderAppliedDiscount {
|
|
|
683
683
|
value: number;
|
|
684
684
|
amount: number;
|
|
685
685
|
}
|
|
686
|
+
export type PriceDisplayMode = "net" | "gross";
|
|
687
|
+
export type TaxRoundingMethod = "per_line" | "per_rate";
|
|
688
|
+
export interface TaxedAmount {
|
|
689
|
+
net: number;
|
|
690
|
+
tax: number;
|
|
691
|
+
gross: number;
|
|
692
|
+
}
|
|
693
|
+
export interface TaxBreakdown {
|
|
694
|
+
subtotal: TaxedAmount;
|
|
695
|
+
discount: TaxedAmount;
|
|
696
|
+
shipping: TaxedAmount;
|
|
697
|
+
total: TaxedAmount;
|
|
698
|
+
}
|
|
686
699
|
export interface OrderDetail {
|
|
687
700
|
id: string;
|
|
688
701
|
orderNumber: number | null;
|
|
@@ -697,7 +710,11 @@ export interface OrderDetail {
|
|
|
697
710
|
customerId: string | null;
|
|
698
711
|
companyId: string | null;
|
|
699
712
|
companyName: string | null;
|
|
713
|
+
channel: OrderChannel | null;
|
|
714
|
+
priceList: OrderPriceListRef | null;
|
|
700
715
|
priceListName: string | null;
|
|
716
|
+
priceListSource: PriceListSource | null;
|
|
717
|
+
pricingChain: OrderPricingChain | null;
|
|
701
718
|
subtotal: number | null;
|
|
702
719
|
discount: number | null;
|
|
703
720
|
appliedDiscount: OrderAppliedDiscount | null;
|
|
@@ -705,6 +722,9 @@ export interface OrderDetail {
|
|
|
705
722
|
shippingMethod: unknown;
|
|
706
723
|
tax: number | null;
|
|
707
724
|
total: number | null;
|
|
725
|
+
displayMode: PriceDisplayMode;
|
|
726
|
+
taxRoundingMethod: TaxRoundingMethod;
|
|
727
|
+
amounts: TaxBreakdown;
|
|
708
728
|
currency: string | null;
|
|
709
729
|
poNumber: string | null;
|
|
710
730
|
customerNote: string | null;
|
|
@@ -718,6 +738,21 @@ export interface OrderDetail {
|
|
|
718
738
|
customFields: Record<string, unknown>;
|
|
719
739
|
createdAt: string | null;
|
|
720
740
|
}
|
|
741
|
+
export interface OrderChannel {
|
|
742
|
+
id: string;
|
|
743
|
+
key: string;
|
|
744
|
+
name: string;
|
|
745
|
+
}
|
|
746
|
+
export interface OrderPriceListRef {
|
|
747
|
+
id: string;
|
|
748
|
+
name: string;
|
|
749
|
+
deleted: boolean;
|
|
750
|
+
}
|
|
751
|
+
export interface OrderPricingChain {
|
|
752
|
+
buyer: OrderPriceListRef | null;
|
|
753
|
+
channelDated: OrderPriceListRef | null;
|
|
754
|
+
channelBase: OrderPriceListRef | null;
|
|
755
|
+
}
|
|
721
756
|
export interface OrderShipmentEvent {
|
|
722
757
|
status: ShipmentStatusInput;
|
|
723
758
|
at: string;
|
|
@@ -1121,6 +1156,7 @@ export interface CartConfigInput {
|
|
|
1121
1156
|
enableSavedCarts?: boolean;
|
|
1122
1157
|
enableQuoteRequests?: boolean;
|
|
1123
1158
|
autoCloseOrders?: boolean;
|
|
1159
|
+
companyTaxRounding?: TaxRoundingMethod;
|
|
1124
1160
|
returnWindowDays?: number | null;
|
|
1125
1161
|
}
|
|
1126
1162
|
export interface ProductPatch {
|
|
@@ -1187,11 +1223,12 @@ export interface CustomerPriceList {
|
|
|
1187
1223
|
id: string;
|
|
1188
1224
|
name: string;
|
|
1189
1225
|
}
|
|
1190
|
-
export type PriceListSource = "MEMBER" | "COMPANY";
|
|
1226
|
+
export type PriceListSource = "MEMBER" | "COMPANY" | "CHANNEL";
|
|
1227
|
+
export type BuyerPriceListSource = Exclude<PriceListSource, "CHANNEL">;
|
|
1191
1228
|
export interface CustomerEffectivePriceList {
|
|
1192
1229
|
id: string;
|
|
1193
1230
|
name: string;
|
|
1194
|
-
source:
|
|
1231
|
+
source: BuyerPriceListSource;
|
|
1195
1232
|
companyName: string | null;
|
|
1196
1233
|
}
|
|
1197
1234
|
export interface CustomerSummary {
|
|
@@ -1256,20 +1293,68 @@ export interface PriceListSummary {
|
|
|
1256
1293
|
active: boolean;
|
|
1257
1294
|
overrideCount: number;
|
|
1258
1295
|
assignedCount: number;
|
|
1296
|
+
channels: PriceListChannel[];
|
|
1259
1297
|
createdAt: string | null;
|
|
1260
1298
|
updatedAt: string | null;
|
|
1261
1299
|
}
|
|
1300
|
+
export interface PriceListChannel {
|
|
1301
|
+
id: string;
|
|
1302
|
+
key: string;
|
|
1303
|
+
name: string;
|
|
1304
|
+
priceAccess: ChannelPriceAccess;
|
|
1305
|
+
}
|
|
1262
1306
|
export interface PriceListInput {
|
|
1263
1307
|
name: string;
|
|
1264
1308
|
percentOff?: number;
|
|
1265
1309
|
startsAt?: string | null;
|
|
1266
1310
|
endsAt?: string | null;
|
|
1311
|
+
channels?: string[];
|
|
1267
1312
|
}
|
|
1268
1313
|
export interface PriceListUpdateInput {
|
|
1269
1314
|
name?: string;
|
|
1270
1315
|
percentOff?: number;
|
|
1271
1316
|
startsAt?: string | null;
|
|
1272
1317
|
endsAt?: string | null;
|
|
1318
|
+
channels?: string[];
|
|
1319
|
+
}
|
|
1320
|
+
export type ChannelPriceAccess = "PUBLIC" | "MEMBERS" | "COMPANY_MEMBERS";
|
|
1321
|
+
export interface SalesChannelPriceList {
|
|
1322
|
+
id: string;
|
|
1323
|
+
name: string;
|
|
1324
|
+
startsAt: string | null;
|
|
1325
|
+
endsAt: string | null;
|
|
1326
|
+
active: boolean;
|
|
1327
|
+
}
|
|
1328
|
+
export interface SalesChannelSummary {
|
|
1329
|
+
id: string;
|
|
1330
|
+
key: string;
|
|
1331
|
+
name: string;
|
|
1332
|
+
displayMode: PriceDisplayMode;
|
|
1333
|
+
priceAccess: ChannelPriceAccess;
|
|
1334
|
+
activeCartCount: number;
|
|
1335
|
+
activePriceList: SalesChannelPriceList | null;
|
|
1336
|
+
priceLists: SalesChannelPriceList[];
|
|
1337
|
+
nextChangeAt: string | null;
|
|
1338
|
+
createdAt: string | null;
|
|
1339
|
+
updatedAt: string | null;
|
|
1340
|
+
}
|
|
1341
|
+
export interface SalesChannelInput {
|
|
1342
|
+
key: string;
|
|
1343
|
+
name: string;
|
|
1344
|
+
displayMode?: PriceDisplayMode;
|
|
1345
|
+
priceAccess?: ChannelPriceAccess;
|
|
1346
|
+
}
|
|
1347
|
+
export interface SalesChannelUpdateInput {
|
|
1348
|
+
name?: string;
|
|
1349
|
+
displayMode?: PriceDisplayMode;
|
|
1350
|
+
priceAccess?: ChannelPriceAccess;
|
|
1351
|
+
}
|
|
1352
|
+
export interface SalesChannelOps {
|
|
1353
|
+
list(): Promise<SalesChannelSummary[]>;
|
|
1354
|
+
get(id: string): Promise<SalesChannelSummary | null>;
|
|
1355
|
+
create(input: SalesChannelInput): Promise<SalesChannelSummary>;
|
|
1356
|
+
update(id: string, input: SalesChannelUpdateInput): Promise<SalesChannelSummary>;
|
|
1357
|
+
delete(id: string): Promise<boolean>;
|
|
1273
1358
|
}
|
|
1274
1359
|
export interface PriceListEntry {
|
|
1275
1360
|
id: string;
|
|
@@ -1308,6 +1393,11 @@ export interface PriceListRecordAssignment {
|
|
|
1308
1393
|
id: string;
|
|
1309
1394
|
priceListId: string | null;
|
|
1310
1395
|
}
|
|
1396
|
+
export interface CompanyTaxPreferences {
|
|
1397
|
+
id: string;
|
|
1398
|
+
priceDisplayMode: PriceDisplayMode | null;
|
|
1399
|
+
taxRoundingMethod: TaxRoundingMethod | null;
|
|
1400
|
+
}
|
|
1311
1401
|
export interface PriceListOps {
|
|
1312
1402
|
list(): Promise<PriceListSummary[]>;
|
|
1313
1403
|
get(id: string): Promise<PriceListSummary | null>;
|
|
@@ -1319,6 +1409,8 @@ export interface PriceListOps {
|
|
|
1319
1409
|
setEntries(priceListId: string, entries: PriceListEntryInput[]): Promise<number>;
|
|
1320
1410
|
removeEntries(priceListId: string, keys: PriceListEntryKey[]): Promise<number>;
|
|
1321
1411
|
setRecordPriceList(recordId: string, priceListId: string | null): Promise<PriceListRecordAssignment>;
|
|
1412
|
+
setRecordPriceDisplayMode(recordId: string, displayMode: PriceDisplayMode | null): Promise<CompanyTaxPreferences>;
|
|
1413
|
+
setRecordTaxRoundingMethod(recordId: string, method: TaxRoundingMethod | null): Promise<CompanyTaxPreferences>;
|
|
1322
1414
|
}
|
|
1323
1415
|
export interface WorkspaceOps {
|
|
1324
1416
|
models: ModelOps;
|
|
@@ -1335,6 +1427,7 @@ export interface WorkspaceOps {
|
|
|
1335
1427
|
roles: RoleOps;
|
|
1336
1428
|
customers: CustomerOps;
|
|
1337
1429
|
priceLists: PriceListOps;
|
|
1430
|
+
salesChannels: SalesChannelOps;
|
|
1338
1431
|
}
|
|
1339
1432
|
export interface AiTool<I = unknown, O = unknown> {
|
|
1340
1433
|
name: string;
|