sbuilder-mcp 0.60.1 → 0.60.3

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/CHANGELOG.md CHANGED
@@ -6,6 +6,21 @@ All notable changes to this project are documented in this file.
6
6
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
7
7
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
8
8
 
9
+ ## [0.60.3] - 2026-09-16
10
+
11
+ ### Added
12
+ - `sb_traits_for` and `sb_set` now recognize `filterShowAll` and `filterAllLabel` on the four option-list filter elements (`filter-checkbox`, `filter-radio`, `filter-color`, `filter-tag`), the leading "everything in this category" row a navigate filter can carry and the label it shows.
13
+ - `sb_traits_for` and `sb_set` now recognize `filterMaxDepth` and `filterMaxValues` on the same four filter elements, the two limits a category filter's browse tree can carry, seeded at 0 to match what both renderers already infer from an absent key.
14
+ - `filterAllLabel` is now a translatable special on the four filter elements, since it is copy a shopper reads.
15
+
16
+ ## [0.60.2] - 2026-09-16
17
+
18
+ ### Added
19
+ - `sb_traits_for` and `sb_set` now list `navigate` as a legal `filterBehavior` value on the four option-list filter elements (`filter-checkbox`, `filter-radio`, `filter-color`, `filter-tag`), turning a filter into a link instead of a query update, scoped to those four because `select`'s own renderer only reads `event` and a `navigate` write to it would be accepted and silently do nothing.
20
+ - `sb_traits_for` and `sb_set` now list `auto` as a legal `filterValueMode` value on every filter element, a category filter that follows the page it is on.
21
+ - `sb_api_find` and `sb_api_call` now reach the editor assistant's conversation history: listing a site's stored conversations, reading one by id, and listing the models a provider will run for the site's key.
22
+ - The call sheet for the assistant's message endpoint now documents four more body fields: `conversationId` to continue an existing thread, `images` for picture URLs the model should look at, `clientTools` for browser-side functions the model may call, and `verifies` for whether the client answers the verify round trip.
23
+
9
24
  ## [0.60.1] - 2026-09-16
10
25
 
11
26
  ### Fixed
package/CHANGELOG.vi.md CHANGED
@@ -6,6 +6,21 @@ Mọi thay đổi đáng chú ý của dự án được ghi lại trong file n
6
6
  Định dạng dựa trên [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
7
7
  và dự án tuân theo [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
8
8
 
9
+ ## [0.60.3] - 2026-09-16
10
+
11
+ ### Added
12
+ - `sb_traits_for` và `sb_set` giờ nhận diện `filterShowAll` và `filterAllLabel` trên bốn element bộ lọc dạng danh sách tùy chọn (`filter-checkbox`, `filter-radio`, `filter-color`, `filter-tag`) — dòng dẫn đầu "tất cả trong danh mục này" mà một bộ lọc kiểu navigate có thể mang, cùng nhãn nó hiển thị.
13
+ - `sb_traits_for` và `sb_set` giờ nhận diện `filterMaxDepth` và `filterMaxValues` trên cùng bốn element bộ lọc đó — hai giới hạn mà cây duyệt của một bộ lọc danh mục có thể mang, được gieo sẵn giá trị 0 để khớp với những gì cả hai renderer vốn đã suy ra khi thiếu key này.
14
+ - `filterAllLabel` giờ là một special có thể dịch trên bốn element bộ lọc, vì đây là nội dung mà khách mua hàng đọc được.
15
+
16
+ ## [0.60.2] - 2026-09-16
17
+
18
+ ### Added
19
+ - `sb_traits_for` và `sb_set` giờ liệt kê `navigate` là giá trị hợp lệ của `filterBehavior` trên bốn element bộ lọc dạng danh sách tùy chọn (`filter-checkbox`, `filter-radio`, `filter-color`, `filter-tag`) — biến một bộ lọc thành một liên kết thay vì cập nhật query — chỉ giới hạn ở bốn element đó vì renderer của `select` chỉ đọc `event`, nếu ghi `navigate` vào đó thì lệnh vẫn được chấp nhận nhưng không làm gì cả.
20
+ - `sb_traits_for` và `sb_set` giờ liệt kê `auto` là giá trị hợp lệ của `filterValueMode` trên mọi element bộ lọc, một bộ lọc danh mục đi theo đúng trang đang hiển thị.
21
+ - `sb_api_find` và `sb_api_call` giờ với tới được lịch sử hội thoại của trợ lý biên tập: liệt kê các hội thoại đã lưu của một site, đọc một hội thoại theo id, và liệt kê các model mà một nhà cung cấp sẽ chạy cho key của site đó.
22
+ - Bảng mô tả endpoint gửi tin nhắn của trợ lý giờ ghi thêm bốn trường body: `conversationId` để tiếp tục một luồng hội thoại đã có, `images` là các URL ảnh mà model cần xem, `clientTools` là các hàm phía trình duyệt mà model có thể gọi, và `verifies` cho biết client này có trả lời vòng xác minh (verify) hay không.
23
+
9
24
  ## [0.60.1] - 2026-09-16
10
25
 
11
26
  ### Fixed
package/README.md CHANGED
@@ -112,7 +112,7 @@ in this client: one would put the very key the platform exists to hold back into
112
112
  | `sb_store` | Run a store flow that must happen in a fixed order — the four writes that make a working checkout, or any of the platform's 17 form templates (login, register, forgot, contact, subscribe …) with its own field document |
113
113
  | `sb_undo` | Put back what a PUT replaced. The SECOND answer for a page, not the only one: the platform has versions, history and restore (`sb_api_find` "page versions"), which outlive this process — reach for those first and use this for every other shaped PUT |
114
114
 
115
- Twenty-eight tools, **527 API operations** (177 of the 236 writes carrying a body shape read
115
+ Twenty-eight tools, **530 API operations** (178 of the 237 writes carrying a body shape read
116
116
  off the handler), 113 elements, 79 binding sources. `sb_api_find`
117
117
  is an index rather than a tool per endpoint, so the tool list stays short while everything
118
118
  the platform can do stays reachable — and operations added to the platform arrive with the
package/README.vi.md CHANGED
@@ -109,7 +109,7 @@ nhét ngược lại vào mọi bản cài.
109
109
  | `sb_store` | Chạy một luồng cửa hàng bắt buộc đúng thứ tự — bốn lệnh ghi tạo nên trang thanh toán, hoặc gieo bất kỳ template nào trong 17 form của nền tảng (login, register, forgot, contact, subscribe …) kèm field document của nó |
110
110
  | `sb_undo` | Trả lại thứ mà một lệnh PUT đã ghi đè. Với TRANG thì đây là đường về thứ hai chứ không phải duy nhất: nền tảng có version, history và restore (`sb_api_find` "page versions"), và chúng sống lâu hơn tiến trình này — hãy dùng chúng trước, còn tool này cho mọi PUT có hình dạng khác |
111
111
 
112
- Hai mươi tám tool, **527 operation API** (177 trong 236 lệnh ghi có hình dạng body đọc thẳng
112
+ Hai mươi tám tool, **530 operation API** (178 trong 237 lệnh ghi có hình dạng body đọc thẳng
113
113
  từ handler), 113 element, 79 nguồn binding. `sb_api_find` là
114
114
  một chỉ mục chứ không phải mỗi endpoint một tool, nên danh sách tool vẫn ngắn trong khi mọi
115
115
  thứ nền tảng làm được vẫn với tới — và operation mới thêm bên nền tảng sẽ tự có sau lần
@@ -1,8 +1,8 @@
1
1
  export const SWAGGER_SOURCE = {
2
- "operations": 527,
2
+ "operations": 530,
3
3
  "definitions": 107,
4
- "bodyCarrying": 195,
5
- "bodyUndescribed": 76,
4
+ "bodyCarrying": 196,
5
+ "bodyUndescribed": 77,
6
6
  "generatedFrom": "server/docs/swagger.json"
7
7
  };
8
8
  export const API_OPERATIONS = [
@@ -3321,6 +3321,55 @@ export const API_OPERATIONS = [
3321
3321
  "bodyRef": null,
3322
3322
  "credential": "siteScoped"
3323
3323
  },
3324
+ {
3325
+ "id": "get:/api/sites/{siteId}/ai/conversations",
3326
+ "method": "GET",
3327
+ "path": "/api/sites/{siteId}/ai/conversations",
3328
+ "tags": [
3329
+ "sites"
3330
+ ],
3331
+ "summary": "List the editor assistant's stored conversations",
3332
+ "params": [
3333
+ {
3334
+ "name": "siteId",
3335
+ "in": "path",
3336
+ "required": true,
3337
+ "type": "string",
3338
+ "description": "Site ID"
3339
+ }
3340
+ ],
3341
+ "bodyDescribed": false,
3342
+ "bodyRef": null,
3343
+ "credential": "siteScoped"
3344
+ },
3345
+ {
3346
+ "id": "get:/api/sites/{siteId}/ai/conversations/{id}",
3347
+ "method": "GET",
3348
+ "path": "/api/sites/{siteId}/ai/conversations/{id}",
3349
+ "tags": [
3350
+ "sites"
3351
+ ],
3352
+ "summary": "Read one stored conversation",
3353
+ "params": [
3354
+ {
3355
+ "name": "siteId",
3356
+ "in": "path",
3357
+ "required": true,
3358
+ "type": "string",
3359
+ "description": "Site ID"
3360
+ },
3361
+ {
3362
+ "name": "id",
3363
+ "in": "path",
3364
+ "required": true,
3365
+ "type": "string",
3366
+ "description": "Conversation ID"
3367
+ }
3368
+ ],
3369
+ "bodyDescribed": false,
3370
+ "bodyRef": null,
3371
+ "credential": "siteScoped"
3372
+ },
3324
3373
  {
3325
3374
  "id": "post:/api/sites/{siteId}/ai/messages",
3326
3375
  "method": "POST",
@@ -3356,6 +3405,34 @@ export const API_OPERATIONS = [
3356
3405
  "bodyRef": null,
3357
3406
  "credential": "siteScoped"
3358
3407
  },
3408
+ {
3409
+ "id": "post:/api/sites/{siteId}/ai/models",
3410
+ "method": "POST",
3411
+ "path": "/api/sites/{siteId}/ai/models",
3412
+ "tags": [
3413
+ "sites"
3414
+ ],
3415
+ "summary": "List the models a provider will run for this site's key",
3416
+ "params": [
3417
+ {
3418
+ "name": "siteId",
3419
+ "in": "path",
3420
+ "required": true,
3421
+ "type": "string",
3422
+ "description": "Site ID"
3423
+ },
3424
+ {
3425
+ "name": "query",
3426
+ "in": "body",
3427
+ "required": true,
3428
+ "type": "object",
3429
+ "description": "provider (required), apiKey and baseUrl (optional — the stored key is used when apiKey is omitted)"
3430
+ }
3431
+ ],
3432
+ "bodyDescribed": false,
3433
+ "bodyRef": null,
3434
+ "credential": "siteScoped"
3435
+ },
3359
3436
  {
3360
3437
  "id": "get:/api/sites/{siteId}/ai/settings",
3361
3438
  "method": "GET",
@@ -1,7 +1,7 @@
1
1
  export const DEAD_KEY_SOURCE = {
2
- "files": 4026,
3
- "identifiers": 77258,
4
- "seededKeys": 384,
2
+ "files": 4060,
3
+ "identifiers": 77882,
4
+ "seededKeys": 388,
5
5
  "dead": 0
6
6
  };
7
7
  /**
@@ -2544,7 +2544,11 @@ export const ELEMENTS = {
2544
2544
  "filterArity": "",
2545
2545
  "filterBehavior": "filter",
2546
2546
  "filterTargets": [],
2547
- "filterRanges": []
2547
+ "filterRanges": [],
2548
+ "filterMaxDepth": 0,
2549
+ "filterMaxValues": 0,
2550
+ "filterShowAll": false,
2551
+ "filterAllLabel": ""
2548
2552
  }
2549
2553
  },
2550
2554
  "inspector": [
@@ -2752,7 +2756,11 @@ export const ELEMENTS = {
2752
2756
  "filterArity": "",
2753
2757
  "filterBehavior": "filter",
2754
2758
  "filterTargets": [],
2755
- "filterRanges": []
2759
+ "filterRanges": [],
2760
+ "filterMaxDepth": 0,
2761
+ "filterMaxValues": 0,
2762
+ "filterShowAll": false,
2763
+ "filterAllLabel": ""
2756
2764
  }
2757
2765
  },
2758
2766
  "inspector": [
@@ -2961,7 +2969,11 @@ export const ELEMENTS = {
2961
2969
  "filterArity": "",
2962
2970
  "filterBehavior": "filter",
2963
2971
  "filterTargets": [],
2964
- "filterRanges": []
2972
+ "filterRanges": [],
2973
+ "filterMaxDepth": 0,
2974
+ "filterMaxValues": 0,
2975
+ "filterShowAll": false,
2976
+ "filterAllLabel": ""
2965
2977
  }
2966
2978
  },
2967
2979
  "inspector": [
@@ -3169,7 +3181,11 @@ export const ELEMENTS = {
3169
3181
  "filterArity": "",
3170
3182
  "filterBehavior": "filter",
3171
3183
  "filterTargets": [],
3172
- "filterRanges": []
3184
+ "filterRanges": [],
3185
+ "filterMaxDepth": 0,
3186
+ "filterMaxValues": 0,
3187
+ "filterShowAll": false,
3188
+ "filterAllLabel": ""
3173
3189
  }
3174
3190
  },
3175
3191
  "inspector": [
@@ -37466,6 +37482,7 @@ export const ELEMENT_VALUES = {
37466
37482
  "writeKey": "filterValueMode",
37467
37483
  "values": [
37468
37484
  "all",
37485
+ "auto",
37469
37486
  "manual"
37470
37487
  ],
37471
37488
  "readBy": "FilterConfig.valueMode (editor/src/features/filters/types.ts)"
@@ -37494,7 +37511,8 @@ export const ELEMENT_VALUES = {
37494
37511
  "writeKey": "filterBehavior",
37495
37512
  "values": [
37496
37513
  "event",
37497
- "filter"
37514
+ "filter",
37515
+ "navigate"
37498
37516
  ],
37499
37517
  "readBy": "FilterConfig.behavior (editor/src/features/filters/types.ts)"
37500
37518
  }
@@ -37525,6 +37543,7 @@ export const ELEMENT_VALUES = {
37525
37543
  "writeKey": "filterValueMode",
37526
37544
  "values": [
37527
37545
  "all",
37546
+ "auto",
37528
37547
  "manual"
37529
37548
  ],
37530
37549
  "readBy": "FilterConfig.valueMode (editor/src/features/filters/types.ts)"
@@ -37553,7 +37572,8 @@ export const ELEMENT_VALUES = {
37553
37572
  "writeKey": "filterBehavior",
37554
37573
  "values": [
37555
37574
  "event",
37556
- "filter"
37575
+ "filter",
37576
+ "navigate"
37557
37577
  ],
37558
37578
  "readBy": "FilterConfig.behavior (editor/src/features/filters/types.ts)"
37559
37579
  }
@@ -37584,6 +37604,7 @@ export const ELEMENT_VALUES = {
37584
37604
  "writeKey": "filterValueMode",
37585
37605
  "values": [
37586
37606
  "all",
37607
+ "auto",
37587
37608
  "manual"
37588
37609
  ],
37589
37610
  "readBy": "FilterConfig.valueMode (editor/src/features/filters/types.ts)"
@@ -37612,7 +37633,8 @@ export const ELEMENT_VALUES = {
37612
37633
  "writeKey": "filterBehavior",
37613
37634
  "values": [
37614
37635
  "event",
37615
- "filter"
37636
+ "filter",
37637
+ "navigate"
37616
37638
  ],
37617
37639
  "readBy": "FilterConfig.behavior (editor/src/features/filters/types.ts)"
37618
37640
  }
@@ -37643,6 +37665,7 @@ export const ELEMENT_VALUES = {
37643
37665
  "writeKey": "filterValueMode",
37644
37666
  "values": [
37645
37667
  "all",
37668
+ "auto",
37646
37669
  "manual"
37647
37670
  ],
37648
37671
  "readBy": "FilterConfig.valueMode (editor/src/features/filters/types.ts)"
@@ -37671,7 +37694,8 @@ export const ELEMENT_VALUES = {
37671
37694
  "writeKey": "filterBehavior",
37672
37695
  "values": [
37673
37696
  "event",
37674
- "filter"
37697
+ "filter",
37698
+ "navigate"
37675
37699
  ],
37676
37700
  "readBy": "FilterConfig.behavior (editor/src/features/filters/types.ts)"
37677
37701
  }
@@ -1,10 +1,10 @@
1
1
  export const SHAPE_SOURCE = {
2
- "writeOperations": 236,
3
- "shaped": 177,
4
- "fromHandlers": 177,
2
+ "writeOperations": 237,
3
+ "shaped": 178,
4
+ "fromHandlers": 178,
5
5
  "fromSwaggerOnly": 0,
6
6
  "withReadOnly": 26,
7
- "structsRead": 1701
7
+ "structsRead": 1725
8
8
  };
9
9
  export const REQUEST_SHAPES = {
10
10
  "post:/api/sites/{siteId}/api-keys": {
@@ -3009,10 +3009,30 @@ export const REQUEST_SHAPES = {
3009
3009
  "type": "llm.Turn[]",
3010
3010
  "note": "History is sent by the CLIENT, unlike the storefront chatbot's, which removed it as a security fix."
3011
3011
  },
3012
+ {
3013
+ "name": "conversationId",
3014
+ "type": "string",
3015
+ "note": "ConversationID continues an existing thread."
3016
+ },
3012
3017
  {
3013
3018
  "name": "context",
3014
3019
  "type": "editoragent.EditContext | null",
3015
3020
  "note": "Context is the PAGE as the EDITOR described it — the outline of ROOT's children, and the selected element with its trait list, value types and current values, read off the live registries at send time. IT IS THE CAPABILITY LIST, not a hint."
3021
+ },
3022
+ {
3023
+ "name": "images",
3024
+ "type": "string[]",
3025
+ "note": "Images are urls of pictures the author attached for the model to LOOK AT."
3026
+ },
3027
+ {
3028
+ "name": "clientTools",
3029
+ "type": "editoragent.ClientTool[]",
3030
+ "note": "ClientTools are functions the browser offers the model, answered from the live document — see editoragent/clienttools."
3031
+ },
3032
+ {
3033
+ "name": "verifies",
3034
+ "type": "boolean",
3035
+ "note": "Verifies says this client answers the `verify` round trip."
3016
3036
  }
3017
3037
  ],
3018
3038
  "source": "go",
@@ -3040,6 +3060,24 @@ export const REQUEST_SHAPES = {
3040
3060
  "source": "go",
3041
3061
  "goType": "editoragent.SettingsInput"
3042
3062
  },
3063
+ "post:/api/sites/{siteId}/ai/models": {
3064
+ "fields": [
3065
+ {
3066
+ "name": "provider",
3067
+ "type": "string"
3068
+ },
3069
+ {
3070
+ "name": "apiKey",
3071
+ "type": "string"
3072
+ },
3073
+ {
3074
+ "name": "baseUrl",
3075
+ "type": "string"
3076
+ }
3077
+ ],
3078
+ "source": "go",
3079
+ "goType": "(inline)"
3080
+ },
3043
3081
  "post:/api/sites/{siteId}/fonts": {
3044
3082
  "fields": [
3045
3083
  {
@@ -2,8 +2,8 @@
2
2
  // Source: <WB_REPO>/schema/src/elements/translatableFields.ts
3
3
  export const TRANSLATION_SOURCE = {
4
4
  "elements": 58,
5
- "pairs": 142,
6
- "neverKeys": 164,
5
+ "pairs": 146,
6
+ "neverKeys": 167,
7
7
  "entityTypes": 12
8
8
  };
9
9
  /** Every entity type a translation record can name, including "node". */
@@ -37,16 +37,20 @@ export const TRANSLATABLE_SPECIALS = {
37
37
  "filterValues"
38
38
  ],
39
39
  "filter-checkbox": [
40
- "filterValues"
40
+ "filterValues",
41
+ "filterAllLabel"
41
42
  ],
42
43
  "filter-radio": [
43
- "filterValues"
44
+ "filterValues",
45
+ "filterAllLabel"
44
46
  ],
45
47
  "filter-color": [
46
- "filterValues"
48
+ "filterValues",
49
+ "filterAllLabel"
47
50
  ],
48
51
  "filter-tag": [
49
- "filterValues"
52
+ "filterValues",
53
+ "filterAllLabel"
50
54
  ],
51
55
  "account-info": [
52
56
  "promptText",
@@ -351,7 +355,10 @@ export const NEVER_TRANSLATED = [
351
355
  "filterColors",
352
356
  "filterExcluded",
353
357
  "filterMatch",
358
+ "filterMaxDepth",
359
+ "filterMaxValues",
354
360
  "filterRanges",
361
+ "filterShowAll",
355
362
  "filterSource",
356
363
  "filterTarget",
357
364
  "filterTargets",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sbuilder-mcp",
3
- "version": "0.60.1",
3
+ "version": "0.60.3",
4
4
  "description": "MCP server that designs and operates a Store Builder site — pages, data, theme and publish — through the platform's own API and live-edit protocol.",
5
5
  "mcpName": "io.github.vuluu2k/sbuilder-mcp",
6
6
  "type": "module",