batter-pixso-mcp 0.2.1 → 0.3.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.js +8 -6
- package/dist/plugin/code.js +46 -50
- package/package.json +1 -4
- package/standalone/index.js +3 -3
- package/standalone/plugin/code.js +46 -50
package/dist/index.js
CHANGED
|
@@ -25,7 +25,7 @@ var init_config = __esm({
|
|
|
25
25
|
/** 产物图片保留时长,默认 7 天 */
|
|
26
26
|
assetTtlMs: Number(process.env.ASSET_TTL_DAYS ?? 7) * 24 * 60 * 60 * 1e3
|
|
27
27
|
};
|
|
28
|
-
VERSION = "0.
|
|
28
|
+
VERSION = "0.3.0";
|
|
29
29
|
}
|
|
30
30
|
});
|
|
31
31
|
|
|
@@ -912,9 +912,11 @@ AI \u5BA2\u6237\u7AEF \u2500\u2500MCP(stdio/HTTP)\u2500\u2500\u25B6 batter-pixso
|
|
|
912
912
|
- **\u622A\u56FE\u7B49\u89C6\u89C9\u53C2\u7167**\uFF1A\u7528 Read \u5DE5\u5177\u76F4\u63A5\u8BFB\u8BE5\u8DEF\u5F84\u67E5\u770B\uFF0C\u65E0\u9700\u590D\u5236\u3002
|
|
913
913
|
- **\u8981\u5199\u8FDB\u4EA4\u4ED8\u4EE3\u7801\u7684\u56FE\u6807/\u56FE\u7247**\uFF1A**\u5FC5\u987B**\u5148\u590D\u5236\u5230\u9879\u76EE\u8D44\u6E90\u76EE\u5F55
|
|
914
914
|
\uFF08PowerShell \`Copy-Item\` / \u7C7B Unix \`cp\`\uFF09\uFF0C\u518D\u4EE5\u672C\u5730\u76F8\u5BF9\u8DEF\u5F84\u5F15\u7528
|
|
915
|
-
\uFF08\`<img src>\`\u3001CSS \`background-image\` \u7B49\uFF09\u3002\
|
|
916
|
-
\
|
|
917
|
-
\
|
|
915
|
+
\uFF08\`<img src>\`\u3001CSS \`background-image\` \u7B49\uFF09\u3002\u4EA7\u7269\u6587\u4EF6\u540D\u662F\u5185\u5BB9 hash\uFF0C\u6CA1\u6709\u8BED\u4E49\u2014\u2014
|
|
916
|
+
**\u590D\u5236\u65F6\u6309\u8282\u70B9\u7528\u9014\u81EA\u884C\u547D\u540D\u8BED\u4E49\u5316\u6587\u4EF6\u540D**\uFF08\u5982 \`icon-arrow.svg\`\u3001\`hero-banner.png\`\uFF1B
|
|
917
|
+
\`export_image\` \u8FD4\u56DE\u7684 \`suffix\` \u5982 \`@2x\` \u5EFA\u8BAE\u4FDD\u7559\uFF09\uFF0C\u4E25\u7981\u628A hash \u6587\u4EF6\u540D\u5E26\u8FDB\u4EA4\u4ED8\u4EE3\u7801\u3002
|
|
918
|
+
\u4E25\u7981\u76F4\u63A5\u5F15\u7528\u4EA7\u7269\u76EE\u5F55\u7684\u7EDD\u5BF9\u8DEF\u5F84\uFF08\u4EA7\u7269\u9ED8\u8BA4 7 \u5929\u540E\u81EA\u52A8\u6E05\u626B\uFF0C\u5F15\u7528\u4F1A\u5931\u6548\uFF09\uFF1B
|
|
919
|
+
\u4E25\u7981\u79FB\u52A8\u6216\u5220\u9664\u4EA7\u7269\u76EE\u5F55\u4E0B\u7684\u6587\u4EF6\uFF08\u591A\u4F1A\u8BDD\u5171\u4EAB\uFF0C\u6E05\u626B\u7531\u670D\u52A1\u7EDF\u4E00\u8D1F\u8D23\uFF09\u3002
|
|
918
920
|
2. **Pixso \u94FE\u63A5\u5FC5\u987B\u63D0\u53D6 \`item-id\` \u5F53 guid**\uFF1A\u4EFB\u610F\u57DF\u540D\u90FD\u6709\u6548\u2014\u2014\u5B98\u65B9 \`pixso.cn\` \u6216\u79C1\u6709\u5316\u90E8\u7F72\u5982
|
|
919
921
|
\`https://pixso.ky-tech.com.cn/app/design/<\u6587\u4EF6>?item-id=1%3A2\`\uFF08\u4E5F\u53EF\u80FD\u662F \`/app/editor/\` \u8DEF\u5F84\uFF09\u3002
|
|
920
922
|
\u4ECE \`item-id\` \u67E5\u8BE2\u53C2\u6570\u63D0\u53D6 guid \u5E76 URL \u89E3\u7801\uFF08\`1%3A2\` \u2192 \`"1:2"\`\uFF09\u540E\u4F5C\u4E3A \`guid\` \u4F20\u5165\u3002
|
|
@@ -1020,7 +1022,7 @@ var ASSET_HARD_RULE, DESIGN_TO_CODE2, PROMPTS;
|
|
|
1020
1022
|
var init_prompts = __esm({
|
|
1021
1023
|
"src/prompts.ts"() {
|
|
1022
1024
|
"use strict";
|
|
1023
|
-
ASSET_HARD_RULE = `**\u4E25\u7981\u628A\u4EA7\u7269\u76EE\u5F55\u8DEF\u5F84\u5199\u8FDB\u4EA4\u4ED8\u4EE3\u7801**\uFF1ADSL \u8FD4\u56DE\u7684 \`img\` \u662F\u4EA7\u7269\u6587\u4EF6\u540D\uFF08\u5B8C\u6574\u8DEF\u5F84 = \u4EA7\u7269\u76EE\u5F55 + \u6587\u4EF6\u540D\uFF0C\u76EE\u5F55\u89C1\u5DE5\u5177 description\uFF09\u3002\u622A\u56FE\u7B49\u89C6\u89C9\u53C2\u7167\u7528 Read \u5DE5\u5177\u76F4\u8BFB\u5B8C\u6574\u8DEF\u5F84\u5373\u53EF\uFF1B\u8981\u5199\u8FDB\u4EA4\u4ED8\u4EE3\u7801\u7684\u56FE\u6807/\u56FE\u7247\u5FC5\u987B\u5148\u590D\u5236\u5230\u9879\u76EE\u8D44\u6E90\u76EE\u5F55\uFF08PowerShell \`Copy-Item\` / \u7C7B Unix \`cp\`\uFF09\uFF0C\u518D\u7528\u672C\u5730\u76F8\u5BF9\u8DEF\u5F84\u5F15\u7528\uFF08\`<img src>\`\u3001\`background-image\` \u7B49\uFF09\u3002\u4EA7\u7269\u9ED8\u8BA4 7 \u5929\u540E\u81EA\u52A8\u6E05\u626B\uFF1B\u4E25\u7981\u79FB\u52A8\u6216\u5220\u9664\u4EA7\u7269\u76EE\u5F55\u4E0B\u7684\u6587\u4EF6\u3002`;
|
|
1025
|
+
ASSET_HARD_RULE = `**\u4E25\u7981\u628A\u4EA7\u7269\u76EE\u5F55\u8DEF\u5F84\u5199\u8FDB\u4EA4\u4ED8\u4EE3\u7801**\uFF1ADSL \u8FD4\u56DE\u7684 \`img\` \u662F\u4EA7\u7269\u6587\u4EF6\u540D\uFF08\u5B8C\u6574\u8DEF\u5F84 = \u4EA7\u7269\u76EE\u5F55 + \u6587\u4EF6\u540D\uFF0C\u76EE\u5F55\u89C1\u5DE5\u5177 description\uFF09\u3002\u622A\u56FE\u7B49\u89C6\u89C9\u53C2\u7167\u7528 Read \u5DE5\u5177\u76F4\u8BFB\u5B8C\u6574\u8DEF\u5F84\u5373\u53EF\uFF1B\u8981\u5199\u8FDB\u4EA4\u4ED8\u4EE3\u7801\u7684\u56FE\u6807/\u56FE\u7247\u5FC5\u987B\u5148\u590D\u5236\u5230\u9879\u76EE\u8D44\u6E90\u76EE\u5F55\uFF08PowerShell \`Copy-Item\` / \u7C7B Unix \`cp\`\uFF09\uFF0C\u590D\u5236\u65F6\u6309\u8282\u70B9\u7528\u9014\u81EA\u884C\u547D\u540D\u8BED\u4E49\u5316\u6587\u4EF6\u540D\uFF08\u5982 \`icon-arrow.svg\`\uFF0C\u4E0D\u7528 hash \u540D\uFF09\uFF0C\u518D\u7528\u672C\u5730\u76F8\u5BF9\u8DEF\u5F84\u5F15\u7528\uFF08\`<img src>\`\u3001\`background-image\` \u7B49\uFF09\u3002\u4EA7\u7269\u9ED8\u8BA4 7 \u5929\u540E\u81EA\u52A8\u6E05\u626B\uFF1B\u4E25\u7981\u79FB\u52A8\u6216\u5220\u9664\u4EA7\u7269\u76EE\u5F55\u4E0B\u7684\u6587\u4EF6\u3002`;
|
|
1024
1026
|
DESIGN_TO_CODE2 = {
|
|
1025
1027
|
name: "design-to-code",
|
|
1026
1028
|
description: "\u8BBE\u8BA1\u7A3F\u8F6C\u524D\u7AEF\u4EE3\u7801\uFF08\u6837\u5F0F\u8FD8\u539F/\u8BBE\u8BA1\u8FD8\u539F/UI \u8FD8\u539F\uFF09\uFF1A\u4ECE Pixso \u94FE\u63A5\u6216\u5F53\u524D\u9009\u533A\u53D6 DSL + \u622A\u56FE \u2192 \u751F\u6210 \u2192 \u622A\u56FE\u6821\u9A8C\u3002",
|
|
@@ -1247,7 +1249,7 @@ var init_plugin = __esm({
|
|
|
1247
1249
|
URL_RULE = '\u2460 \u94FE\u63A5\u8F93\u5165\uFF1A\u5FC5\u987B\u4ECE item-id \u67E5\u8BE2\u53C2\u6570\u63D0\u53D6\u8282\u70B9 guid \u5E76 URL \u89E3\u7801\uFF081%3A2 \u2192 "1:2"\uFF09\uFF0C\u628A\u89E3\u7801\u503C\u4F5C\u4E3A guid \u4F20\u5165\uFF1B\u4E25\u7981\u628A\u6574\u4E2A URL \u5F53 guid \u4F20\u3002\u4EFB\u610F\u57DF\u540D\u90FD\u6709\u6548\uFF1A\u5B98\u65B9 pixso.cn \u6216\u79C1\u6709\u5316\u90E8\u7F72\uFF08\u5982 pixso.ky-tech.com.cn\uFF09\uFF0C\u683C\u5F0F\u5F62\u5982 https://<\u57DF\u540D>/app/design/<\u6587\u4EF6>?item-id=1%3A2\uFF08\u4E5F\u53EF\u80FD\u662F /app/editor/ \u8DEF\u5F84\uFF09\u3002';
|
|
1248
1250
|
URL_RULE_PTR = "\u2460 \u94FE\u63A5\u8F93\u5165\uFF1A\u5FC5\u987B\u4ECE item-id \u63D0\u53D6 guid \u5E76 URL \u89E3\u7801\u540E\u4F20\u5165\uFF0C\u4E25\u7981\u4F20\u6574\u4E2A URL\uFF08\u89C4\u5219\u5168\u6587\u89C1 get_node_dsl\uFF09\u3002";
|
|
1249
1251
|
SELECT_RULE_PTR = '\u2461 \u9009\u4E2D\u56DE\u9000\uFF1A\u672A\u4F20 guid \u65F6\u56DE\u9000\u5F53\u524D\u9009\u4E2D\u56FE\u5C42\uFF0C\u4F46\u4E25\u7981\u9690\u5F0F\u4F7F\u7528\u2014\u2014\u9664\u975E\u7528\u6237\u660E\u786E\u8BF4\u4E86"\u6211\u9009\u4E2D\u7684/\u5F53\u524D\u9009\u4E2D\u7684"\uFF0C\u5FC5\u987B\u5148\u8C03 get_selected \u628A\u9009\u4E2D\u56FE\u5C42\u540D\u79F0\u62A5\u7ED9\u7528\u6237\u786E\u8BA4\uFF08\u89C4\u5219\u5168\u6587\u89C1 get_selected\uFF09\u3002';
|
|
1250
|
-
ASSET_RULE = `\u2462 \u8D44\u6E90\uFF1Aimg \u662F\u4EA7\u7269\u6587\u4EF6\u540D\uFF0C\u5B8C\u6574\u672C\u5730\u8DEF\u5F84 = ${assetDir()}\\<\u6587\u4EF6\u540D>\uFF08\u672C\u673A\u6587\u4EF6\uFF0C\u76F4\u63A5\u8BFB\u6587\u4EF6\u7CFB\u7EDF\uFF09\u3002\u622A\u56FE\u7B49\u89C6\u89C9\u53C2\u7167\u7528 Read \u5DE5\u5177\u76F4\u8BFB\u8BE5\u8DEF\u5F84\uFF0C\u65E0\u9700\u590D\u5236\uFF1B\u8981\u5199\u8FDB\u4EA4\u4ED8\u4EE3\u7801\u7684\u56FE\u6807/\u56FE\u7247\u5FC5\u987B\u5148\u590D\u5236\u5230\u9879\u76EE\u8D44\u6E90\u76EE\u5F55\uFF08PowerShell: Copy-Item "<\u5B8C\u6574\u8DEF\u5F84>" "<\u9879\u76EE\u76EE\u5F55>"\uFF1B\u7C7B Unix: cp "<\u5B8C\u6574\u8DEF\u5F84>" "<\u9879\u76EE\u76EE\u5F55>"\uFF09\uFF0C\u518D\u4EE5\u672C\u5730\u76F8\u5BF9\u8DEF\u5F84\u5F15\u7528\
|
|
1252
|
+
ASSET_RULE = `\u2462 \u8D44\u6E90\uFF1Aimg \u662F\u4EA7\u7269\u6587\u4EF6\u540D\uFF08\u5185\u5BB9 hash \u547D\u540D\uFF0C\u5982 "6a4d1730d46bae01.svg"\uFF09\uFF0C\u5B8C\u6574\u672C\u5730\u8DEF\u5F84 = ${assetDir()}\\<\u6587\u4EF6\u540D>\uFF08\u672C\u673A\u6587\u4EF6\uFF0C\u76F4\u63A5\u8BFB\u6587\u4EF6\u7CFB\u7EDF\uFF09\u3002\u622A\u56FE\u7B49\u89C6\u89C9\u53C2\u7167\u7528 Read \u5DE5\u5177\u76F4\u8BFB\u8BE5\u8DEF\u5F84\uFF0C\u65E0\u9700\u590D\u5236\uFF1B\u8981\u5199\u8FDB\u4EA4\u4ED8\u4EE3\u7801\u7684\u56FE\u6807/\u56FE\u7247\u5FC5\u987B\u5148\u590D\u5236\u5230\u9879\u76EE\u8D44\u6E90\u76EE\u5F55\uFF08PowerShell: Copy-Item "<\u5B8C\u6574\u8DEF\u5F84>" "<\u9879\u76EE\u76EE\u5F55>"\uFF1B\u7C7B Unix: cp "<\u5B8C\u6574\u8DEF\u5F84>" "<\u9879\u76EE\u76EE\u5F55>"\uFF09\uFF0C\u518D\u4EE5\u672C\u5730\u76F8\u5BF9\u8DEF\u5F84\u5F15\u7528\u3002\u590D\u5236\u65F6\u5FC5\u987B\u6309\u8282\u70B9\u7528\u9014\u81EA\u884C\u547D\u540D\u8BED\u4E49\u5316\u76EE\u6807\u6587\u4EF6\u540D\uFF08\u5982 icon-arrow.svg\u3001hero-banner.png\uFF1Bexport_image \u8FD4\u56DE\u7684 suffix \u5EFA\u8BAE\u4FDD\u7559\uFF09\uFF0C\u4E25\u7981\u628A hash \u6587\u4EF6\u540D\u5E26\u8FDB\u4EA4\u4ED8\u4EE3\u7801\u3002\u4E25\u7981\u76F4\u63A5\u5F15\u7528\u4EA7\u7269\u76EE\u5F55\u7684\u7EDD\u5BF9\u8DEF\u5F84\uFF08\u4EA7\u7269\u9ED8\u8BA4 7 \u5929\u540E\u81EA\u52A8\u6E05\u626B\uFF0C\u5F15\u7528\u4F1A\u5931\u6548\uFF09\uFF0C\u4E25\u7981\u79FB\u52A8\u6216\u5220\u9664\u4EA7\u7269\u76EE\u5F55\u4E0B\u7684\u6587\u4EF6\uFF08\u591A\u4F1A\u8BDD\u5171\u4EAB\uFF0C\u6E05\u626B\u7531\u670D\u52A1\u7EDF\u4E00\u8D1F\u8D23\uFF09\u3002`;
|
|
1251
1253
|
DSL_LEGEND = '\u5B57\u6BB5\u56FE\u4F8B\uFF1Aid=\u8282\u70B9 guid\uFF08\u53EF\u56DE\u4F20\u4E3A guid \u53C2\u6570\u5BF9\u5B50\u8282\u70B9\u4E0B\u94BB\u8C03\u7528\uFF09\uFF1Bname=\u56FE\u5C42\u540D\uFF08\u81EA\u52A8\u547D\u540D\u5982 "Frame 3123" \u5DF2\u7701\u7565\uFF09\uFF1Btype=\u8282\u70B9\u7C7B\u578B\uFF0CICON/IMAGE \u4E3A\u584C\u7F29\u53F6\u5B50\uFF1Brect=[x,y,w,h] \u7EDD\u5BF9\u5B9A\u4F4D\uFF08\u6839\u8282\u70B9\u4E0E\u7EDD\u5BF9\u5B9A\u4F4D\u5BB9\u5668\u7684\u5B50\u8282\u70B9\uFF09\uFF1Bsize=[w,h]\uFF08auto-layout \u5B50\u8282\u70B9\uFF0Cx/y \u7531\u7236\u7EA7 layout \u63A8\u5BFC\u6545\u7701\u7565\uFF09\uFF1Blayout={dir:row|column, gap, pad:[\u4E0A,\u53F3,\u4E0B,\u5DE6], align:[\u4E3B\u8F74,\u4EA4\u53C9\u8F74](start|center|end|space-between|baseline), sizing:[\u4E3B\u8F74,\u4EA4\u53C9\u8F74](hug|fixed|fill)}\uFF1Bconstraints={h,v} \u7EDD\u5BF9\u5B9A\u4F4D\u5B50\u8282\u70B9\u7EA6\u675F\uFF08\u9ED8\u8BA4 left/top \u7701\u7565\uFF09\uFF1Btext={content, size=\u5B57\u53F7, font=\u5B57\u65CF, weight=\u5B57\u91CD, lh=\u884C\u9AD8, align=\u6C34\u5E73\u5BF9\u9F50, color, deco=underline|line-through, ls=\u5B57\u8DDD px, link, segs=\u6DF7\u6392\u5206\u6BB5}\uFF08segs \u6BCF\u6BB5\u53EA\u5E26\u4E0E base \u4E0D\u540C\u7684\u5B57\u6BB5\uFF0C\u6570\u7EC4\u987A\u5E8F\u5373\u5B57\u7B26\u504F\u79FB\uFF09\uFF1Bimg=\u8D44\u6E90\u6587\u4EF6\u540D\uFF1Bkids=\u5B50\u8282\u70B9\u6570\u7EC4\uFF1Bpalette=\u8C03\u8272\u677F\uFF08\u4EC5\u6839\u8282\u70B9\uFF09\u3002depth=\u6574\u68F5\u6811\u5B9E\u9645\u6700\u5927\u6DF1\u5EA6\uFF08\u4EC5\u6839\u8282\u70B9\uFF0C\u603B\u662F\u8F93\u51FA\uFF0C\u4E0E\u622A\u65AD\u65E0\u5173\uFF09\uFF1Bmore=\u8BE5\u8282\u70B9\u4E0B\u672A\u5C55\u5F00\u7684\u5269\u4F59\u5C42\u7EA7\u6570\uFF08\u4EC5\u56E0 maxDepth \u622A\u65AD\u65F6\u51FA\u73B0\uFF0C\u62FF id \u56DE\u4F20 guid \u53EF\u7EE7\u7EED\u4E0B\u94BB\uFF09\u3002\u7701\u7565\u89C4\u5219\uFF1A\u9ED8\u8BA4\u503C\u4E0D\u8F93\u51FA\uFF08text.align=left\u3001lh=normal\u3001weight=Regular\u3001gap=0\u3001pad \u5168 0\uFF09\u3002\u8C03\u8272\u677F\uFF1A\u51FA\u73B0\u22652 \u6B21\u7684\u5355\u8272\u63D0\u53D6\u5230\u6839\u8282\u70B9 palette \u6570\u7EC4\uFF0Cfills/text.color/stroke \u4E2D\u7684 "p0""p1" \u4E3A palette \u4E0B\u6807\u5F15\u7528\uFF1Bshadow/gradient \u7B49\u590D\u5408 CSS \u4E32\u5185\u7684\u989C\u8272\u4FDD\u6301\u5B57\u9762\u503C\uFF0C\u4E0D\u67E5\u8868\u3002';
|
|
1252
1254
|
TARGET_PROP = {
|
|
1253
1255
|
type: "string",
|
package/dist/plugin/code.js
CHANGED
|
@@ -49,6 +49,24 @@
|
|
|
49
49
|
const settings = format === "SVG" ? { format: "SVG" } : { format, constraint: { type: "SCALE", value: scale } };
|
|
50
50
|
return node.exportAsync(settings);
|
|
51
51
|
}
|
|
52
|
+
async function exportWithMarks(node, fallback, assets) {
|
|
53
|
+
const marks = "exportSettings" in node ? node.exportSettings : [];
|
|
54
|
+
if (marks.length === 0) {
|
|
55
|
+
const key = `asset://${assets.length}`;
|
|
56
|
+
assets.push({ key, format: fallback.format, bytes: await exportNode(node, fallback.format, fallback.scale) });
|
|
57
|
+
return [{ img: key, format: fallback.format, scale: fallback.scale }];
|
|
58
|
+
}
|
|
59
|
+
const items = [];
|
|
60
|
+
for (const mark of marks) {
|
|
61
|
+
const key = `asset://${assets.length}`;
|
|
62
|
+
assets.push({ key, format: mark.format, bytes: await node.exportAsync(mark) });
|
|
63
|
+
const item = { img: key, format: mark.format };
|
|
64
|
+
if ("constraint" in mark && mark.constraint?.type === "SCALE") item.scale = mark.constraint.value;
|
|
65
|
+
if ("suffix" in mark && mark.suffix) item.suffix = mark.suffix;
|
|
66
|
+
items.push(item);
|
|
67
|
+
}
|
|
68
|
+
return items;
|
|
69
|
+
}
|
|
52
70
|
|
|
53
71
|
// src/dsl/detect.ts
|
|
54
72
|
var VECTOR_TYPES = /* @__PURE__ */ new Set([
|
|
@@ -355,11 +373,6 @@
|
|
|
355
373
|
if (h === "left" && v === "top") return;
|
|
356
374
|
base.constraints = { h, v };
|
|
357
375
|
}
|
|
358
|
-
function parentIsAbsolute(node) {
|
|
359
|
-
const parent = node.parent;
|
|
360
|
-
if (!parent) return true;
|
|
361
|
-
return !("layoutMode" in parent) || parent.layoutMode === "NONE";
|
|
362
|
-
}
|
|
363
376
|
function applyAutoLayout(node, base) {
|
|
364
377
|
if (!("layoutMode" in node)) return;
|
|
365
378
|
if (node.layoutMode !== "HORIZONTAL" && node.layoutMode !== "VERTICAL") return;
|
|
@@ -385,16 +398,12 @@
|
|
|
385
398
|
if (pad.some((p) => p !== 0)) layout.pad = pad;
|
|
386
399
|
base.layout = layout;
|
|
387
400
|
}
|
|
388
|
-
async function build(node, assets, palette,
|
|
401
|
+
async function build(node, assets, palette, depth, maxDepth) {
|
|
389
402
|
if (!node.visible) return null;
|
|
390
403
|
const base = { id: node.id, type: node.type };
|
|
391
404
|
if (!AUTO_NAME_RE.test(node.name)) base.name = node.name;
|
|
392
405
|
const [x, y, w, h] = rectOf(node);
|
|
393
|
-
|
|
394
|
-
base.rect = [x, y, w, h];
|
|
395
|
-
} else {
|
|
396
|
-
base.size = [w, h];
|
|
397
|
-
}
|
|
406
|
+
base.rect = [x, y, w, h];
|
|
398
407
|
if ("opacity" in node && node.opacity !== 1) base.opacity = round2(node.opacity);
|
|
399
408
|
applyConstraints(node, base);
|
|
400
409
|
const assetFormat = detectAssetFormat(node);
|
|
@@ -415,7 +424,7 @@
|
|
|
415
424
|
} else {
|
|
416
425
|
const kids = [];
|
|
417
426
|
for (const child of node.children) {
|
|
418
|
-
const built = await build(child, assets, palette,
|
|
427
|
+
const built = await build(child, assets, palette, depth + 1, maxDepth);
|
|
419
428
|
if (built) kids.push(built);
|
|
420
429
|
}
|
|
421
430
|
if (kids.length > 0) base.kids = kids;
|
|
@@ -425,7 +434,7 @@
|
|
|
425
434
|
}
|
|
426
435
|
async function buildDevNode(node, assets, maxDepth) {
|
|
427
436
|
const palette = new Palette();
|
|
428
|
-
const root = await build(node, assets, palette,
|
|
437
|
+
const root = await build(node, assets, palette, 0, maxDepth);
|
|
429
438
|
if (!root) return null;
|
|
430
439
|
palette.apply(root);
|
|
431
440
|
root.depth = levelsBelow(node);
|
|
@@ -450,62 +459,47 @@
|
|
|
450
459
|
const f = typeof input === "string" ? input.toUpperCase() : "PNG";
|
|
451
460
|
return f === "SVG" ? "SVG" : f === "JPG" ? "JPG" : "PNG";
|
|
452
461
|
}
|
|
453
|
-
function
|
|
462
|
+
function normParams(type, args) {
|
|
454
463
|
switch (type) {
|
|
455
464
|
case "get_node_dsl":
|
|
456
|
-
return { maxDepth: normMaxDepth(args.maxDepth) };
|
|
457
|
-
case "get_screenshot":
|
|
458
|
-
|
|
459
|
-
|
|
465
|
+
return { type, maxDepth: normMaxDepth(args.maxDepth) };
|
|
466
|
+
case "get_screenshot": {
|
|
467
|
+
const f = (args.format ?? "PNG").toUpperCase();
|
|
468
|
+
return { type, format: f === "SVG" ? "SVG" : "PNG", scale: args.scale ?? 2 };
|
|
469
|
+
}
|
|
470
|
+
case "export_image":
|
|
460
471
|
return {
|
|
472
|
+
type,
|
|
461
473
|
format: normImageFormat(args.format),
|
|
462
474
|
scale: typeof args.scale === "number" ? args.scale : 2
|
|
463
475
|
};
|
|
476
|
+
default:
|
|
477
|
+
throw new Error(`\u4E0D\u53EF\u7F13\u5B58\u7684\u547D\u4EE4\u7C7B\u578B: ${type}`);
|
|
464
478
|
}
|
|
465
479
|
}
|
|
466
|
-
async function produce(
|
|
467
|
-
switch (
|
|
480
|
+
async function produce(params, node) {
|
|
481
|
+
switch (params.type) {
|
|
468
482
|
case "get_node_dsl": {
|
|
469
483
|
const assets = [];
|
|
470
|
-
const dsl = await buildDevNode(node, assets,
|
|
484
|
+
const dsl = await buildDevNode(node, assets, params.maxDepth);
|
|
471
485
|
return { result: dsl, assets };
|
|
472
486
|
}
|
|
473
487
|
case "get_screenshot": {
|
|
474
|
-
const
|
|
475
|
-
const scale = args.scale ?? 2;
|
|
476
|
-
const bytes = await exportNode(node, format === "SVG" ? "SVG" : "PNG", scale);
|
|
488
|
+
const bytes = await exportNode(node, params.format, params.scale);
|
|
477
489
|
const [, , width, height] = rectOf(node);
|
|
478
490
|
return {
|
|
479
|
-
result: { img: "asset://0", width, height, format },
|
|
480
|
-
assets: [{ key: "asset://0", format, bytes }]
|
|
491
|
+
result: { img: "asset://0", width, height, format: params.format },
|
|
492
|
+
assets: [{ key: "asset://0", format: params.format, bytes }]
|
|
481
493
|
};
|
|
482
494
|
}
|
|
483
|
-
|
|
495
|
+
case "export_image": {
|
|
484
496
|
const [, , width, height] = rectOf(node);
|
|
485
497
|
const assets = [];
|
|
486
|
-
const exports =
|
|
487
|
-
const marks = "exportSettings" in node ? node.exportSettings : [];
|
|
488
|
-
if (marks.length > 0) {
|
|
489
|
-
for (const mark of marks) {
|
|
490
|
-
const bytes = await node.exportAsync(mark);
|
|
491
|
-
const key = `asset://${assets.length}`;
|
|
492
|
-
assets.push({ key, format: mark.format, bytes });
|
|
493
|
-
const entry = { img: key, format: mark.format };
|
|
494
|
-
if ("constraint" in mark && mark.constraint?.type === "SCALE") {
|
|
495
|
-
entry.scale = mark.constraint.value;
|
|
496
|
-
}
|
|
497
|
-
if ("suffix" in mark && mark.suffix) entry.suffix = mark.suffix;
|
|
498
|
-
exports.push(entry);
|
|
499
|
-
}
|
|
500
|
-
} else {
|
|
501
|
-
const format = normImageFormat(args.format);
|
|
502
|
-
const scale = typeof args.scale === "number" ? args.scale : 2;
|
|
503
|
-
const bytes = await exportNode(node, format, scale);
|
|
504
|
-
assets.push({ key: "asset://0", format, bytes });
|
|
505
|
-
exports.push({ img: "asset://0", format, scale });
|
|
506
|
-
}
|
|
498
|
+
const exports = await exportWithMarks(node, params, assets);
|
|
507
499
|
return { result: { width, height, exports }, assets };
|
|
508
500
|
}
|
|
501
|
+
default:
|
|
502
|
+
throw new Error(`\u672A\u77E5\u547D\u4EE4: ${params.type}`);
|
|
509
503
|
}
|
|
510
504
|
}
|
|
511
505
|
async function executeCommand(command) {
|
|
@@ -514,12 +508,14 @@
|
|
|
514
508
|
return { result: collectContext(), assets: [] };
|
|
515
509
|
}
|
|
516
510
|
const node = await findNode(args.guid);
|
|
517
|
-
const
|
|
511
|
+
const params = normParams(command.type, args);
|
|
512
|
+
const { type, ...keyParams } = params;
|
|
513
|
+
const key = `${type}:${node.id}:${JSON.stringify(keyParams)}`;
|
|
518
514
|
if (args.cache !== "refresh") {
|
|
519
515
|
const hit = readCache(key);
|
|
520
516
|
if (hit) return hit;
|
|
521
517
|
}
|
|
522
|
-
const fresh = await produce(
|
|
518
|
+
const fresh = await produce(params, node);
|
|
523
519
|
writeCache(key, fresh);
|
|
524
520
|
return fresh;
|
|
525
521
|
}
|
package/package.json
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "batter-pixso-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "MCP bridge: Pixso plugin -> local MCP server -> Pixso remote MCP",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"engines": {
|
|
7
|
-
"node": ">=18"
|
|
8
|
-
},
|
|
9
6
|
"exports": {
|
|
10
7
|
"./protocol": "./src/protocol.ts"
|
|
11
8
|
},
|
package/standalone/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var wk=Object.create;var Yc=Object.defineProperty;var bk=Object.getOwnPropertyDescriptor;var xk=Object.getOwnPropertyNames;var $k=Object.getPrototypeOf,Sk=Object.prototype.hasOwnProperty;var y=(t,e)=>()=>(t&&(e=t(t=0)),e);var R=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),$i=(t,e)=>{for(var r in e)Yc(t,r,{get:e[r],enumerable:!0})},kk=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of xk(e))!Sk.call(t,o)&&o!==r&&Yc(t,o,{get:()=>e[o],enumerable:!(n=bk(e,o))||n.enumerable});return t};var Qc=(t,e,r)=>(r=t!=null?wk($k(t)):{},kk(e||!t||!t.__esModule?Yc(r,"default",{value:t,enumerable:!0}):r,t));function ie(...t){console.error("[batter-pixso-mcp]",...t)}var Pe,Ht,We=y(()=>{"use strict";Pe={httpPort:Number(process.env.HTTP_PORT??3210),hubIdleMs:Number(process.env.HUB_IDLE_MS??18e5),assetTtlMs:Number(process.env.ASSET_TTL_DAYS??7)*24*60*60*1e3},Ht="0.
|
|
2
|
+
var wk=Object.create;var Yc=Object.defineProperty;var bk=Object.getOwnPropertyDescriptor;var xk=Object.getOwnPropertyNames;var $k=Object.getPrototypeOf,Sk=Object.prototype.hasOwnProperty;var y=(t,e)=>()=>(t&&(e=t(t=0)),e);var R=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),$i=(t,e)=>{for(var r in e)Yc(t,r,{get:e[r],enumerable:!0})},kk=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of xk(e))!Sk.call(t,o)&&o!==r&&Yc(t,o,{get:()=>e[o],enumerable:!(n=bk(e,o))||n.enumerable});return t};var Qc=(t,e,r)=>(r=t!=null?wk($k(t)):{},kk(e||!t||!t.__esModule?Yc(r,"default",{value:t,enumerable:!0}):r,t));function ie(...t){console.error("[batter-pixso-mcp]",...t)}var Pe,Ht,We=y(()=>{"use strict";Pe={httpPort:Number(process.env.HTTP_PORT??3210),hubIdleMs:Number(process.env.HUB_IDLE_MS??18e5),assetTtlMs:Number(process.env.ASSET_TTL_DAYS??7)*24*60*60*1e3},Ht="0.3.0"});import{createHash as zk}from"node:crypto";import{mkdir as Pk,readdir as Ek,stat as Tk,unlink as Ik,writeFile as Rk}from"node:fs/promises";import{tmpdir as Ck}from"node:os";import{join as eu}from"node:path";function $g(){return Eo}async function Sg(t,e){await Pk(Eo,{recursive:!0});let r=Ok[e.toUpperCase()]??".bin",n=`${zk("sha1").update(t).digest("hex").slice(0,16)}${r}`,o=eu(Eo,n);return await Rk(o,t),ie(`asset saved: ${o} (${t.length} bytes)`),{name:n,path:o}}async function kg(t){let e=0,r=Date.now()-t,n;try{n=await Ek(Eo)}catch{return 0}for(let o of n)try{let s=eu(Eo,o),i=await Tk(s);i.isFile()&&i.mtimeMs<r&&(await Ik(s),e++)}catch{}return e>0&&ie(`assets cleanup: removed ${e} expired file(s)`),e}var Eo,Ok,Si=y(()=>{"use strict";We();Eo=eu(Ck(),"batter-pixso-assets");Ok={PNG:".png",SVG:".svg",JPG:".jpg",JPEG:".jpg",WEBP:".webp",PDF:".pdf"}});import{randomUUID as Ak}from"node:crypto";var Nk,tu,ct,To=y(()=>{"use strict";We();Nk=45e3,tu=class{sessions=new Map;lastActiveId=null;isOnline(e){return e.connected||Date.now()-e.lastSeen<Nk}register(e={}){let r={id:Ak(),meta:e,lastSeen:Date.now(),connected:!1};return this.sessions.set(r.id,r),this.lastActiveId=r.id,ie(`session registered: ${r.id} (${e.fileName??"unknown file"})`),this.toInfo(r)}touch(e){let r=this.sessions.get(e);return r?(r.lastSeen=Date.now(),this.lastActiveId=e,r):null}setConnected(e,r){let n=this.touch(e);return n?(n.connected=r,!0):!1}updateContext(e,r){let n=this.touch(e);return n?(n.meta={...n.meta,...r},ie(`context updated [${e.slice(0,8)}]: ${n.meta.fileName??"?"} / ${n.meta.pageName??"?"} / ${n.meta.selection?.length??0} selected`),!0):!1}list(){return[...this.sessions.values()].map(e=>this.toInfo(e))}anyOnline(){return[...this.sessions.values()].some(e=>this.isOnline(e))}resolve(e){if(e){let n=this.sessions.get(e);if(n)return this.assertOnline(n);let o=[...this.sessions.values()].find(s=>s.meta.fileKey===e);if(o)return this.assertOnline(o);throw new Error(`\u627E\u4E0D\u5230\u76EE\u6807\u63D2\u4EF6\u4F1A\u8BDD\uFF1A${e}\u3002\u53EF\u7528 list_sessions \u67E5\u770B\u5F53\u524D\u8FDE\u63A5\u7684\u4F1A\u8BDD`)}if(this.lastActiveId){let n=this.sessions.get(this.lastActiveId);if(n&&this.isOnline(n))return n}let r=[...this.sessions.values()].find(n=>this.isOnline(n));if(r)return r;throw new Error("Pixso \u63D2\u4EF6\u672A\u8FDE\u63A5\uFF1A\u8BF7\u5728 Pixso \u5BA2\u6237\u7AEF\u4E2D\u8FD0\u884C Batter Pixso Bridge \u63D2\u4EF6")}assertOnline(e){if(!this.isOnline(e))throw new Error(`\u76EE\u6807\u63D2\u4EF6\u5DF2\u79BB\u7EBF\uFF1A${e.meta.fileName??e.id}`);return e}toInfo(e){return{sessionId:e.id,fileKey:e.meta.fileKey,fileName:e.meta.fileName,pageName:e.meta.pageName,selectionCount:e.meta.selection?.length,online:this.isOnline(e),lastSeen:e.lastSeen}}},ct=new tu});function se(t,e,r){t.writeHead(e,{"Content-Type":"application/json; charset=utf-8"}),t.end(JSON.stringify(r))}async function Kr(t){let e=[];for await(let r of t)e.push(r);return Buffer.concat(e)}var Io=y(()=>{"use strict"});import{existsSync as Mk}from"node:fs";import{readFile as zg}from"node:fs/promises";import{join as nu}from"node:path";import{fileURLToPath as ru}from"node:url";function jk(){return[ru(new URL("./plugin/",import.meta.url)),ru(new URL("../../plugin/dist/",import.meta.url)),ru(new URL("../../../plugin/dist/",import.meta.url))].find(e=>Mk(nu(e,"manifest.json")))??null}async function ou(){if(!Gr)return null;let t=JSON.parse(await zg(nu(Gr,"manifest.json"),"utf8"));return t.networkAccess={allowedDomains:[`http://localhost:${Pe.httpPort}`,`http://127.0.0.1:${Pe.httpPort}`]},Buffer.from(JSON.stringify(t,null,2))}async function ki(t){if(!Gr)return null;try{return await zg(nu(Gr,t))}catch{return null}}var Gr,Pg=y(()=>{"use strict";We();Gr=jk()});var Tg,Eg=y(()=>{Tg=`// Batter Bridge \u4E66\u7B7E\u6CE8\u5165\u811A\u672C
|
|
3
3
|
// \u5728 Pixso / MasterGo \u7F51\u9875\u7248\u8BBE\u8BA1\u6587\u4EF6\u9875\u9762\u70B9\u51FB\u540E\u6267\u884C\uFF1A
|
|
4
4
|
// \u4ECE\u672C\u670D\u52A1\u62C9\u53D6 manifest + code\uFF0C\u901A\u8FC7\u5BBF\u4E3B\u6CE8\u5165 API \u8FD0\u884C\u63D2\u4EF6\u3002
|
|
5
5
|
// \u670D\u52A1\u4E0D\u53EF\u8FBE\u65F6\u56DE\u9000 localStorage \u7F13\u5B58\uFF08\u4E0A\u6B21\u6210\u529F\u62C9\u53D6\u7684\u63D2\u4EF6\u5305\uFF09\u3002
|
|
@@ -553,8 +553,8 @@ data:
|
|
|
553
553
|
|| ${i} === "boolean" || ${o} === null`).assign(a,(0,H._)`[${o}]`)}}}function wC({gen:t,parentData:e,parentDataProperty:r},n){t.if((0,H._)`${e} !== undefined`,()=>t.assign((0,H._)`${e}[${r}]`,n))}function xm(t,e,r,n=po.Correct){let o=n===po.Correct?H.operators.EQ:H.operators.NEQ,s;switch(t){case"null":return(0,H._)`${e} ${o} null`;case"array":s=(0,H._)`Array.isArray(${e})`;break;case"object":s=(0,H._)`${e} && typeof ${e} == "object" && !Array.isArray(${e})`;break;case"integer":s=i((0,H._)`!(${e} % 1) && !isNaN(${e})`);break;case"number":s=i();break;default:return(0,H._)`typeof ${e} ${o} ${t}`}return n===po.Correct?s:(0,H.not)(s);function i(a=H.nil){return(0,H.and)((0,H._)`typeof ${e} == "number"`,a,r?(0,H._)`isFinite(${e})`:H.nil)}}qe.checkDataType=xm;function $m(t,e,r,n){if(t.length===1)return xm(t[0],e,r,n);let o,s=(0,f0.toHash)(t);if(s.array&&s.object){let i=(0,H._)`typeof ${e} != "object"`;o=s.null?i:(0,H._)`!${e} || ${i}`,delete s.null,delete s.array,delete s.object}else o=H.nil;s.number&&delete s.integer;for(let i in s)o=(0,H.and)(o,xm(i,e,r,n));return o}qe.checkDataTypes=$m;var bC={message:({schema:t})=>`must be ${t}`,params:({schema:t,schemaValue:e})=>typeof t=="string"?(0,H._)`{type: ${t}}`:(0,H._)`{type: ${e}}`};function Sm(t){let e=xC(t);(0,hC.reportError)(e,bC)}qe.reportTypeError=Sm;function xC(t){let{gen:e,data:r,schema:n}=t,o=(0,f0.schemaRefOrVal)(t,n,"type");return{gen:e,keyword:"type",data:r,schema:n.type,schemaCode:o,schemaValue:o,parentSchema:n,params:{},it:t}}});var _0=R(cc=>{"use strict";Object.defineProperty(cc,"__esModule",{value:!0});cc.assignDefaults=void 0;var fo=B(),$C=Q();function SC(t,e){let{properties:r,items:n}=t.schema;if(e==="object"&&r)for(let o in r)g0(t,o,r[o].default);else e==="array"&&Array.isArray(n)&&n.forEach((o,s)=>g0(t,s,o.default))}cc.assignDefaults=SC;function g0(t,e,r){let{gen:n,compositeRule:o,data:s,opts:i}=t;if(r===void 0)return;let a=(0,fo._)`${s}${(0,fo.getProperty)(e)}`;if(o){(0,$C.checkStrictMode)(t,`default is ignored for: ${a}`);return}let c=(0,fo._)`${a} === undefined`;i.useDefaults==="empty"&&(c=(0,fo._)`${c} || ${a} === null || ${a} === ""`),n.if(c,(0,fo._)`${a} = ${(0,fo.stringify)(r)}`)}});var yt=R(ae=>{"use strict";Object.defineProperty(ae,"__esModule",{value:!0});ae.validateUnion=ae.validateArray=ae.usePattern=ae.callValidateCode=ae.schemaProperties=ae.allSchemaProperties=ae.noPropertyInData=ae.propertyInData=ae.isOwnProperty=ae.hasPropFunc=ae.reportMissingProp=ae.checkMissingProp=ae.checkReportMissingProp=void 0;var ge=B(),km=Q(),Lr=ur(),kC=Q();function zC(t,e){let{gen:r,data:n,it:o}=t;r.if(Pm(r,n,e,o.opts.ownProperties),()=>{t.setParams({missingProperty:(0,ge._)`${e}`},!0),t.error()})}ae.checkReportMissingProp=zC;function PC({gen:t,data:e,it:{opts:r}},n,o){return(0,ge.or)(...n.map(s=>(0,ge.and)(Pm(t,e,s,r.ownProperties),(0,ge._)`${o} = ${s}`)))}ae.checkMissingProp=PC;function EC(t,e){t.setParams({missingProperty:e},!0),t.error()}ae.reportMissingProp=EC;function y0(t){return t.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:(0,ge._)`Object.prototype.hasOwnProperty`})}ae.hasPropFunc=y0;function zm(t,e,r){return(0,ge._)`${y0(t)}.call(${e}, ${r})`}ae.isOwnProperty=zm;function TC(t,e,r,n){let o=(0,ge._)`${e}${(0,ge.getProperty)(r)} !== undefined`;return n?(0,ge._)`${o} && ${zm(t,e,r)}`:o}ae.propertyInData=TC;function Pm(t,e,r,n){let o=(0,ge._)`${e}${(0,ge.getProperty)(r)} === undefined`;return n?(0,ge.or)(o,(0,ge.not)(zm(t,e,r))):o}ae.noPropertyInData=Pm;function v0(t){return t?Object.keys(t).filter(e=>e!=="__proto__"):[]}ae.allSchemaProperties=v0;function IC(t,e){return v0(e).filter(r=>!(0,km.alwaysValidSchema)(t,e[r]))}ae.schemaProperties=IC;function RC({schemaCode:t,data:e,it:{gen:r,topSchemaRef:n,schemaPath:o,errorPath:s},it:i},a,c,u){let l=u?(0,ge._)`${t}, ${e}, ${n}${o}`:e,d=[[Lr.default.instancePath,(0,ge.strConcat)(Lr.default.instancePath,s)],[Lr.default.parentData,i.parentData],[Lr.default.parentDataProperty,i.parentDataProperty],[Lr.default.rootData,Lr.default.rootData]];i.opts.dynamicRef&&d.push([Lr.default.dynamicAnchors,Lr.default.dynamicAnchors]);let p=(0,ge._)`${l}, ${r.object(...d)}`;return c!==ge.nil?(0,ge._)`${a}.call(${c}, ${p})`:(0,ge._)`${a}(${p})`}ae.callValidateCode=RC;var CC=(0,ge._)`new RegExp`;function OC({gen:t,it:{opts:e}},r){let n=e.unicodeRegExp?"u":"",{regExp:o}=e.code,s=o(r,n);return t.scopeValue("pattern",{key:s.toString(),ref:s,code:(0,ge._)`${o.code==="new RegExp"?CC:(0,kC.useFunc)(t,o)}(${r}, ${n})`})}ae.usePattern=OC;function AC(t){let{gen:e,data:r,keyword:n,it:o}=t,s=e.name("valid");if(o.allErrors){let a=e.let("valid",!0);return i(()=>e.assign(a,!1)),a}return e.var(s,!0),i(()=>e.break()),s;function i(a){let c=e.const("len",(0,ge._)`${r}.length`);e.forRange("i",0,c,u=>{t.subschema({keyword:n,dataProp:u,dataPropType:km.Type.Num},s),e.if((0,ge.not)(s),a)})}}ae.validateArray=AC;function NC(t){let{gen:e,schema:r,keyword:n,it:o}=t;if(!Array.isArray(r))throw new Error("ajv implementation error");if(r.some(c=>(0,km.alwaysValidSchema)(o,c))&&!o.opts.unevaluated)return;let i=e.let("valid",!1),a=e.name("_valid");e.block(()=>r.forEach((c,u)=>{let l=t.subschema({keyword:n,schemaProp:u,compositeRule:!0},a);e.assign(i,(0,ge._)`${i} || ${a}`),t.mergeValidEvaluated(l,a)||e.if((0,ge.not)(i))})),t.result(i,()=>t.reset(),()=>t.error(!0))}ae.validateUnion=NC});var x0=R(Lt=>{"use strict";Object.defineProperty(Lt,"__esModule",{value:!0});Lt.validateKeywordUsage=Lt.validSchemaType=Lt.funcKeywordCode=Lt.macroKeywordCode=void 0;var Ge=B(),pn=ur(),MC=yt(),jC=Ds();function ZC(t,e){let{gen:r,keyword:n,schema:o,parentSchema:s,it:i}=t,a=e.macro.call(i.self,o,s,i),c=b0(r,n,a);i.opts.validateSchema!==!1&&i.self.validateSchema(a,!0);let u=r.name("valid");t.subschema({schema:a,schemaPath:Ge.nil,errSchemaPath:`${i.errSchemaPath}/${n}`,topSchemaRef:c,compositeRule:!0},u),t.pass(u,()=>t.error(!0))}Lt.macroKeywordCode=ZC;function DC(t,e){var r;let{gen:n,keyword:o,schema:s,parentSchema:i,$data:a,it:c}=t;qC(c,e);let u=!a&&e.compile?e.compile.call(c.self,s,i,c):e.validate,l=b0(n,o,u),d=n.let("valid");t.block$data(d,p),t.ok((r=e.valid)!==null&&r!==void 0?r:d);function p(){if(e.errors===!1)h(),e.modifying&&w0(t),_(()=>t.error());else{let x=e.async?f():m();e.modifying&&w0(t),_(()=>LC(t,x))}}function f(){let x=n.let("ruleErrs",null);return n.try(()=>h((0,Ge._)`await `),b=>n.assign(d,!1).if((0,Ge._)`${b} instanceof ${c.ValidationError}`,()=>n.assign(x,(0,Ge._)`${b}.errors`),()=>n.throw(b))),x}function m(){let x=(0,Ge._)`${l}.errors`;return n.assign(x,null),h(Ge.nil),x}function h(x=e.async?(0,Ge._)`await `:Ge.nil){let b=c.opts.passContext?pn.default.this:pn.default.self,z=!("compile"in e&&!a||e.schema===!1);n.assign(d,(0,Ge._)`${x}${(0,MC.callValidateCode)(t,l,b,z)}`,e.modifying)}function _(x){var b;n.if((0,Ge.not)((b=e.valid)!==null&&b!==void 0?b:d),x)}}Lt.funcKeywordCode=DC;function w0(t){let{gen:e,data:r,it:n}=t;e.if(n.parentData,()=>e.assign(r,(0,Ge._)`${n.parentData}[${n.parentDataProperty}]`))}function LC(t,e){let{gen:r}=t;r.if((0,Ge._)`Array.isArray(${e})`,()=>{r.assign(pn.default.vErrors,(0,Ge._)`${pn.default.vErrors} === null ? ${e} : ${pn.default.vErrors}.concat(${e})`).assign(pn.default.errors,(0,Ge._)`${pn.default.vErrors}.length`),(0,jC.extendErrors)(t)},()=>t.error())}function qC({schemaEnv:t},e){if(e.async&&!t.$async)throw new Error("async keyword in sync schema")}function b0(t,e,r){if(r===void 0)throw new Error(`keyword "${e}" failed to compile`);return t.scopeValue("keyword",typeof r=="function"?{ref:r}:{ref:r,code:(0,Ge.stringify)(r)})}function UC(t,e,r=!1){return!e.length||e.some(n=>n==="array"?Array.isArray(t):n==="object"?t&&typeof t=="object"&&!Array.isArray(t):typeof t==n||r&&typeof t>"u")}Lt.validSchemaType=UC;function VC({schema:t,opts:e,self:r,errSchemaPath:n},o,s){if(Array.isArray(o.keyword)?!o.keyword.includes(s):o.keyword!==s)throw new Error("ajv implementation error");let i=o.dependencies;if(i?.some(a=>!Object.prototype.hasOwnProperty.call(t,a)))throw new Error(`parent schema must have dependencies of ${s}: ${i.join(",")}`);if(o.validateSchema&&!o.validateSchema(t[s])){let c=`keyword "${s}" value is invalid at path "${n}": `+r.errorsText(o.validateSchema.errors);if(e.validateSchema==="log")r.logger.error(c);else throw new Error(c)}}Lt.validateKeywordUsage=VC});var S0=R(qr=>{"use strict";Object.defineProperty(qr,"__esModule",{value:!0});qr.extendSubschemaMode=qr.extendSubschemaData=qr.getSubschema=void 0;var qt=B(),$0=Q();function FC(t,{keyword:e,schemaProp:r,schema:n,schemaPath:o,errSchemaPath:s,topSchemaRef:i}){if(e!==void 0&&n!==void 0)throw new Error('both "keyword" and "schema" passed, only one allowed');if(e!==void 0){let a=t.schema[e];return r===void 0?{schema:a,schemaPath:(0,qt._)`${t.schemaPath}${(0,qt.getProperty)(e)}`,errSchemaPath:`${t.errSchemaPath}/${e}`}:{schema:a[r],schemaPath:(0,qt._)`${t.schemaPath}${(0,qt.getProperty)(e)}${(0,qt.getProperty)(r)}`,errSchemaPath:`${t.errSchemaPath}/${e}/${(0,$0.escapeFragment)(r)}`}}if(n!==void 0){if(o===void 0||s===void 0||i===void 0)throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:n,schemaPath:o,topSchemaRef:i,errSchemaPath:s}}throw new Error('either "keyword" or "schema" must be passed')}qr.getSubschema=FC;function HC(t,e,{dataProp:r,dataPropType:n,data:o,dataTypes:s,propertyName:i}){if(o!==void 0&&r!==void 0)throw new Error('both "data" and "dataProp" passed, only one allowed');let{gen:a}=e;if(r!==void 0){let{errorPath:u,dataPathArr:l,opts:d}=e,p=a.let("data",(0,qt._)`${e.data}${(0,qt.getProperty)(r)}`,!0);c(p),t.errorPath=(0,qt.str)`${u}${(0,$0.getErrorPath)(r,n,d.jsPropertySyntax)}`,t.parentDataProperty=(0,qt._)`${r}`,t.dataPathArr=[...l,t.parentDataProperty]}if(o!==void 0){let u=o instanceof qt.Name?o:a.let("data",o,!0);c(u),i!==void 0&&(t.propertyName=i)}s&&(t.dataTypes=s);function c(u){t.data=u,t.dataLevel=e.dataLevel+1,t.dataTypes=[],e.definedProperties=new Set,t.parentData=e.data,t.dataNames=[...e.dataNames,u]}}qr.extendSubschemaData=HC;function BC(t,{jtdDiscriminator:e,jtdMetadata:r,compositeRule:n,createErrors:o,allErrors:s}){n!==void 0&&(t.compositeRule=n),o!==void 0&&(t.createErrors=o),s!==void 0&&(t.allErrors=s),t.jtdDiscriminator=e,t.jtdMetadata=r}qr.extendSubschemaMode=BC});var Em=R((u9,k0)=>{"use strict";k0.exports=function t(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var n,o,s;if(Array.isArray(e)){if(n=e.length,n!=r.length)return!1;for(o=n;o--!==0;)if(!t(e[o],r[o]))return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(s=Object.keys(e),n=s.length,n!==Object.keys(r).length)return!1;for(o=n;o--!==0;)if(!Object.prototype.hasOwnProperty.call(r,s[o]))return!1;for(o=n;o--!==0;){var i=s[o];if(!t(e[i],r[i]))return!1}return!0}return e!==e&&r!==r}});var P0=R((l9,z0)=>{"use strict";var Ur=z0.exports=function(t,e,r){typeof e=="function"&&(r=e,e={}),r=e.cb||r;var n=typeof r=="function"?r:r.pre||function(){},o=r.post||function(){};uc(e,n,o,t,"",t)};Ur.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0};Ur.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};Ur.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};Ur.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function uc(t,e,r,n,o,s,i,a,c,u){if(n&&typeof n=="object"&&!Array.isArray(n)){e(n,o,s,i,a,c,u);for(var l in n){var d=n[l];if(Array.isArray(d)){if(l in Ur.arrayKeywords)for(var p=0;p<d.length;p++)uc(t,e,r,d[p],o+"/"+l+"/"+p,s,o,l,n,p)}else if(l in Ur.propsKeywords){if(d&&typeof d=="object")for(var f in d)uc(t,e,r,d[f],o+"/"+l+"/"+JC(f),s,o,l,n,f)}else(l in Ur.keywords||t.allKeys&&!(l in Ur.skipKeywords))&&uc(t,e,r,d,o+"/"+l,s,o,l,n)}r(n,o,s,i,a,c,u)}}function JC(t){return t.replace(/~/g,"~0").replace(/\//g,"~1")}});var qs=R(st=>{"use strict";Object.defineProperty(st,"__esModule",{value:!0});st.getSchemaRefs=st.resolveUrl=st.normalizeId=st._getFullPath=st.getFullPath=st.inlineRef=void 0;var KC=Q(),GC=Em(),WC=P0(),XC=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function YC(t,e=!0){return typeof t=="boolean"?!0:e===!0?!Tm(t):e?E0(t)<=e:!1}st.inlineRef=YC;var QC=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function Tm(t){for(let e in t){if(QC.has(e))return!0;let r=t[e];if(Array.isArray(r)&&r.some(Tm)||typeof r=="object"&&Tm(r))return!0}return!1}function E0(t){let e=0;for(let r in t){if(r==="$ref")return 1/0;if(e++,!XC.has(r)&&(typeof t[r]=="object"&&(0,KC.eachItem)(t[r],n=>e+=E0(n)),e===1/0))return 1/0}return e}function T0(t,e="",r){r!==!1&&(e=mo(e));let n=t.parse(e);return I0(t,n)}st.getFullPath=T0;function I0(t,e){return t.serialize(e).split("#")[0]+"#"}st._getFullPath=I0;var eO=/#\/?$/;function mo(t){return t?t.replace(eO,""):""}st.normalizeId=mo;function tO(t,e,r){return r=mo(r),t.resolve(e,r)}st.resolveUrl=tO;var rO=/^[a-z_][-a-z0-9._]*$/i;function nO(t,e){if(typeof t=="boolean")return{};let{schemaId:r,uriResolver:n}=this.opts,o=mo(t[r]||e),s={"":o},i=T0(n,o,!1),a={},c=new Set;return WC(t,{allKeys:!0},(d,p,f,m)=>{if(m===void 0)return;let h=i+p,_=s[m];typeof d[r]=="string"&&(_=x.call(this,d[r])),b.call(this,d.$anchor),b.call(this,d.$dynamicAnchor),s[p]=_;function x(z){let q=this.opts.uriResolver.resolve;if(z=mo(_?q(_,z):z),c.has(z))throw l(z);c.add(z);let w=this.refs[z];return typeof w=="string"&&(w=this.refs[w]),typeof w=="object"?u(d,w.schema,z):z!==mo(h)&&(z[0]==="#"?(u(d,a[z],z),a[z]=d):this.refs[z]=h),z}function b(z){if(typeof z=="string"){if(!rO.test(z))throw new Error(`invalid anchor "${z}"`);x.call(this,`#${z}`)}}}),a;function u(d,p,f){if(p!==void 0&&!GC(d,p))throw l(f)}function l(d){return new Error(`reference "${d}" resolves to more than one schema`)}}st.getSchemaRefs=nO});var Fs=R(Vr=>{"use strict";Object.defineProperty(Vr,"__esModule",{value:!0});Vr.getData=Vr.KeywordCxt=Vr.validateFunctionCode=void 0;var N0=l0(),R0=Ls(),Rm=bm(),lc=Ls(),oO=_0(),Vs=x0(),Im=S0(),j=B(),U=ur(),sO=qs(),lr=Q(),Us=Ds();function iO(t){if(Z0(t)&&(D0(t),j0(t))){uO(t);return}M0(t,()=>(0,N0.topBoolOrEmptySchema)(t))}Vr.validateFunctionCode=iO;function M0({gen:t,validateName:e,schema:r,schemaEnv:n,opts:o},s){o.code.es5?t.func(e,(0,j._)`${U.default.data}, ${U.default.valCxt}`,n.$async,()=>{t.code((0,j._)`"use strict"; ${C0(r,o)}`),cO(t,o),t.code(s)}):t.func(e,(0,j._)`${U.default.data}, ${aO(o)}`,n.$async,()=>t.code(C0(r,o)).code(s))}function aO(t){return(0,j._)`{${U.default.instancePath}="", ${U.default.parentData}, ${U.default.parentDataProperty}, ${U.default.rootData}=${U.default.data}${t.dynamicRef?(0,j._)`, ${U.default.dynamicAnchors}={}`:j.nil}}={}`}function cO(t,e){t.if(U.default.valCxt,()=>{t.var(U.default.instancePath,(0,j._)`${U.default.valCxt}.${U.default.instancePath}`),t.var(U.default.parentData,(0,j._)`${U.default.valCxt}.${U.default.parentData}`),t.var(U.default.parentDataProperty,(0,j._)`${U.default.valCxt}.${U.default.parentDataProperty}`),t.var(U.default.rootData,(0,j._)`${U.default.valCxt}.${U.default.rootData}`),e.dynamicRef&&t.var(U.default.dynamicAnchors,(0,j._)`${U.default.valCxt}.${U.default.dynamicAnchors}`)},()=>{t.var(U.default.instancePath,(0,j._)`""`),t.var(U.default.parentData,(0,j._)`undefined`),t.var(U.default.parentDataProperty,(0,j._)`undefined`),t.var(U.default.rootData,U.default.data),e.dynamicRef&&t.var(U.default.dynamicAnchors,(0,j._)`{}`)})}function uO(t){let{schema:e,opts:r,gen:n}=t;M0(t,()=>{r.$comment&&e.$comment&&q0(t),mO(t),n.let(U.default.vErrors,null),n.let(U.default.errors,0),r.unevaluated&&lO(t),L0(t),_O(t)})}function lO(t){let{gen:e,validateName:r}=t;t.evaluated=e.const("evaluated",(0,j._)`${r}.evaluated`),e.if((0,j._)`${t.evaluated}.dynamicProps`,()=>e.assign((0,j._)`${t.evaluated}.props`,(0,j._)`undefined`)),e.if((0,j._)`${t.evaluated}.dynamicItems`,()=>e.assign((0,j._)`${t.evaluated}.items`,(0,j._)`undefined`))}function C0(t,e){let r=typeof t=="object"&&t[e.schemaId];return r&&(e.code.source||e.code.process)?(0,j._)`/*# sourceURL=${r} */`:j.nil}function dO(t,e){if(Z0(t)&&(D0(t),j0(t))){pO(t,e);return}(0,N0.boolOrEmptySchema)(t,e)}function j0({schema:t,self:e}){if(typeof t=="boolean")return!t;for(let r in t)if(e.RULES.all[r])return!0;return!1}function Z0(t){return typeof t.schema!="boolean"}function pO(t,e){let{schema:r,gen:n,opts:o}=t;o.$comment&&r.$comment&&q0(t),hO(t),gO(t);let s=n.const("_errs",U.default.errors);L0(t,s),n.var(e,(0,j._)`${s} === ${U.default.errors}`)}function D0(t){(0,lr.checkUnknownRules)(t),fO(t)}function L0(t,e){if(t.opts.jtd)return O0(t,[],!1,e);let r=(0,R0.getSchemaTypes)(t.schema),n=(0,R0.coerceAndCheckDataType)(t,r);O0(t,r,!n,e)}function fO(t){let{schema:e,errSchemaPath:r,opts:n,self:o}=t;e.$ref&&n.ignoreKeywordsWithRef&&(0,lr.schemaHasRulesButRef)(e,o.RULES)&&o.logger.warn(`$ref: keywords ignored in schema at path "${r}"`)}function mO(t){let{schema:e,opts:r}=t;e.default!==void 0&&r.useDefaults&&r.strictSchema&&(0,lr.checkStrictMode)(t,"default is ignored in the schema root")}function hO(t){let e=t.schema[t.opts.schemaId];e&&(t.baseId=(0,sO.resolveUrl)(t.opts.uriResolver,t.baseId,e))}function gO(t){if(t.schema.$async&&!t.schemaEnv.$async)throw new Error("async schema in sync schema")}function q0({gen:t,schemaEnv:e,schema:r,errSchemaPath:n,opts:o}){let s=r.$comment;if(o.$comment===!0)t.code((0,j._)`${U.default.self}.logger.log(${s})`);else if(typeof o.$comment=="function"){let i=(0,j.str)`${n}/$comment`,a=t.scopeValue("root",{ref:e.root});t.code((0,j._)`${U.default.self}.opts.$comment(${s}, ${i}, ${a}.schema)`)}}function _O(t){let{gen:e,schemaEnv:r,validateName:n,ValidationError:o,opts:s}=t;r.$async?e.if((0,j._)`${U.default.errors} === 0`,()=>e.return(U.default.data),()=>e.throw((0,j._)`new ${o}(${U.default.vErrors})`)):(e.assign((0,j._)`${n}.errors`,U.default.vErrors),s.unevaluated&&yO(t),e.return((0,j._)`${U.default.errors} === 0`))}function yO({gen:t,evaluated:e,props:r,items:n}){r instanceof j.Name&&t.assign((0,j._)`${e}.props`,r),n instanceof j.Name&&t.assign((0,j._)`${e}.items`,n)}function O0(t,e,r,n){let{gen:o,schema:s,data:i,allErrors:a,opts:c,self:u}=t,{RULES:l}=u;if(s.$ref&&(c.ignoreKeywordsWithRef||!(0,lr.schemaHasRulesButRef)(s,l))){o.block(()=>V0(t,"$ref",l.all.$ref.definition));return}c.jtd||vO(t,e),o.block(()=>{for(let p of l.rules)d(p);d(l.post)});function d(p){(0,Rm.shouldUseGroup)(s,p)&&(p.type?(o.if((0,lc.checkDataType)(p.type,i,c.strictNumbers)),A0(t,p),e.length===1&&e[0]===p.type&&r&&(o.else(),(0,lc.reportTypeError)(t)),o.endIf()):A0(t,p),a||o.if((0,j._)`${U.default.errors} === ${n||0}`))}}function A0(t,e){let{gen:r,schema:n,opts:{useDefaults:o}}=t;o&&(0,oO.assignDefaults)(t,e.type),r.block(()=>{for(let s of e.rules)(0,Rm.shouldUseRule)(n,s)&&V0(t,s.keyword,s.definition,e.type)})}function vO(t,e){t.schemaEnv.meta||!t.opts.strictTypes||(wO(t,e),t.opts.allowUnionTypes||bO(t,e),xO(t,t.dataTypes))}function wO(t,e){if(e.length){if(!t.dataTypes.length){t.dataTypes=e;return}e.forEach(r=>{U0(t.dataTypes,r)||Cm(t,`type "${r}" not allowed by context "${t.dataTypes.join(",")}"`)}),SO(t,e)}}function bO(t,e){e.length>1&&!(e.length===2&&e.includes("null"))&&Cm(t,"use allowUnionTypes to allow union type keyword")}function xO(t,e){let r=t.self.RULES.all;for(let n in r){let o=r[n];if(typeof o=="object"&&(0,Rm.shouldUseRule)(t.schema,o)){let{type:s}=o.definition;s.length&&!s.some(i=>$O(e,i))&&Cm(t,`missing type "${s.join(",")}" for keyword "${n}"`)}}}function $O(t,e){return t.includes(e)||e==="number"&&t.includes("integer")}function U0(t,e){return t.includes(e)||e==="integer"&&t.includes("number")}function SO(t,e){let r=[];for(let n of t.dataTypes)U0(e,n)?r.push(n):e.includes("integer")&&n==="number"&&r.push("integer");t.dataTypes=r}function Cm(t,e){let r=t.schemaEnv.baseId+t.errSchemaPath;e+=` at "${r}" (strictTypes)`,(0,lr.checkStrictMode)(t,e,t.opts.strictTypes)}var dc=class{constructor(e,r,n){if((0,Vs.validateKeywordUsage)(e,r,n),this.gen=e.gen,this.allErrors=e.allErrors,this.keyword=n,this.data=e.data,this.schema=e.schema[n],this.$data=r.$data&&e.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,lr.schemaRefOrVal)(e,this.schema,n,this.$data),this.schemaType=r.schemaType,this.parentSchema=e.schema,this.params={},this.it=e,this.def=r,this.$data)this.schemaCode=e.gen.const("vSchema",F0(this.$data,e));else if(this.schemaCode=this.schemaValue,!(0,Vs.validSchemaType)(this.schema,r.schemaType,r.allowUndefined))throw new Error(`${n} value must be ${JSON.stringify(r.schemaType)}`);("code"in r?r.trackErrors:r.errors!==!1)&&(this.errsCount=e.gen.const("_errs",U.default.errors))}result(e,r,n){this.failResult((0,j.not)(e),r,n)}failResult(e,r,n){this.gen.if(e),n?n():this.error(),r?(this.gen.else(),r(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass(e,r){this.failResult((0,j.not)(e),void 0,r)}fail(e){if(e===void 0){this.error(),this.allErrors||this.gen.if(!1);return}this.gen.if(e),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data(e){if(!this.$data)return this.fail(e);let{schemaCode:r}=this;this.fail((0,j._)`${r} !== undefined && (${(0,j.or)(this.invalid$data(),e)})`)}error(e,r,n){if(r){this.setParams(r),this._error(e,n),this.setParams({});return}this._error(e,n)}_error(e,r){(e?Us.reportExtraError:Us.reportError)(this,this.def.error,r)}$dataError(){(0,Us.reportError)(this,this.def.$dataError||Us.keyword$DataError)}reset(){if(this.errsCount===void 0)throw new Error('add "trackErrors" to keyword definition');(0,Us.resetErrorsCount)(this.gen,this.errsCount)}ok(e){this.allErrors||this.gen.if(e)}setParams(e,r){r?Object.assign(this.params,e):this.params=e}block$data(e,r,n=j.nil){this.gen.block(()=>{this.check$data(e,n),r()})}check$data(e=j.nil,r=j.nil){if(!this.$data)return;let{gen:n,schemaCode:o,schemaType:s,def:i}=this;n.if((0,j.or)((0,j._)`${o} === undefined`,r)),e!==j.nil&&n.assign(e,!0),(s.length||i.validateSchema)&&(n.elseIf(this.invalid$data()),this.$dataError(),e!==j.nil&&n.assign(e,!1)),n.else()}invalid$data(){let{gen:e,schemaCode:r,schemaType:n,def:o,it:s}=this;return(0,j.or)(i(),a());function i(){if(n.length){if(!(r instanceof j.Name))throw new Error("ajv implementation error");let c=Array.isArray(n)?n:[n];return(0,j._)`${(0,lc.checkDataTypes)(c,r,s.opts.strictNumbers,lc.DataType.Wrong)}`}return j.nil}function a(){if(o.validateSchema){let c=e.scopeValue("validate$data",{ref:o.validateSchema});return(0,j._)`!${c}(${r})`}return j.nil}}subschema(e,r){let n=(0,Im.getSubschema)(this.it,e);(0,Im.extendSubschemaData)(n,this.it,e),(0,Im.extendSubschemaMode)(n,e);let o={...this.it,...n,items:void 0,props:void 0};return dO(o,r),o}mergeEvaluated(e,r){let{it:n,gen:o}=this;n.opts.unevaluated&&(n.props!==!0&&e.props!==void 0&&(n.props=lr.mergeEvaluated.props(o,e.props,n.props,r)),n.items!==!0&&e.items!==void 0&&(n.items=lr.mergeEvaluated.items(o,e.items,n.items,r)))}mergeValidEvaluated(e,r){let{it:n,gen:o}=this;if(n.opts.unevaluated&&(n.props!==!0||n.items!==!0))return o.if(r,()=>this.mergeEvaluated(e,j.Name)),!0}};Vr.KeywordCxt=dc;function V0(t,e,r,n){let o=new dc(t,r,e);"code"in r?r.code(o,n):o.$data&&r.validate?(0,Vs.funcKeywordCode)(o,r):"macro"in r?(0,Vs.macroKeywordCode)(o,r):(r.compile||r.validate)&&(0,Vs.funcKeywordCode)(o,r)}var kO=/^\/(?:[^~]|~0|~1)*$/,zO=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function F0(t,{dataLevel:e,dataNames:r,dataPathArr:n}){let o,s;if(t==="")return U.default.rootData;if(t[0]==="/"){if(!kO.test(t))throw new Error(`Invalid JSON-pointer: ${t}`);o=t,s=U.default.rootData}else{let u=zO.exec(t);if(!u)throw new Error(`Invalid JSON-pointer: ${t}`);let l=+u[1];if(o=u[2],o==="#"){if(l>=e)throw new Error(c("property/index",l));return n[e-l]}if(l>e)throw new Error(c("data",l));if(s=r[e-l],!o)return s}let i=s,a=o.split("/");for(let u of a)u&&(s=(0,j._)`${s}${(0,j.getProperty)((0,lr.unescapeJsonPointer)(u))}`,i=(0,j._)`${i} && ${s}`);return i;function c(u,l){return`Cannot access ${u} ${l} levels up, current level is ${e}`}}Vr.getData=F0});var pc=R(Am=>{"use strict";Object.defineProperty(Am,"__esModule",{value:!0});var Om=class extends Error{constructor(e){super("validation failed"),this.errors=e,this.ajv=this.validation=!0}};Am.default=Om});var Hs=R(jm=>{"use strict";Object.defineProperty(jm,"__esModule",{value:!0});var Nm=qs(),Mm=class extends Error{constructor(e,r,n,o){super(o||`can't resolve reference ${n} from id ${r}`),this.missingRef=(0,Nm.resolveUrl)(e,r,n),this.missingSchema=(0,Nm.normalizeId)((0,Nm.getFullPath)(e,this.missingRef))}};jm.default=Mm});var mc=R(vt=>{"use strict";Object.defineProperty(vt,"__esModule",{value:!0});vt.resolveSchema=vt.getCompilingSchema=vt.resolveRef=vt.compileSchema=vt.SchemaEnv=void 0;var Tt=B(),PO=pc(),fn=ur(),It=qs(),H0=Q(),EO=Fs(),ho=class{constructor(e){var r;this.refs={},this.dynamicAnchors={};let n;typeof e.schema=="object"&&(n=e.schema),this.schema=e.schema,this.schemaId=e.schemaId,this.root=e.root||this,this.baseId=(r=e.baseId)!==null&&r!==void 0?r:(0,It.normalizeId)(n?.[e.schemaId||"$id"]),this.schemaPath=e.schemaPath,this.localRefs=e.localRefs,this.meta=e.meta,this.$async=n?.$async,this.refs={}}};vt.SchemaEnv=ho;function Dm(t){let e=B0.call(this,t);if(e)return e;let r=(0,It.getFullPath)(this.opts.uriResolver,t.root.baseId),{es5:n,lines:o}=this.opts.code,{ownProperties:s}=this.opts,i=new Tt.CodeGen(this.scope,{es5:n,lines:o,ownProperties:s}),a;t.$async&&(a=i.scopeValue("Error",{ref:PO.default,code:(0,Tt._)`require("ajv/dist/runtime/validation_error").default`}));let c=i.scopeName("validate");t.validateName=c;let u={gen:i,allErrors:this.opts.allErrors,data:fn.default.data,parentData:fn.default.parentData,parentDataProperty:fn.default.parentDataProperty,dataNames:[fn.default.data],dataPathArr:[Tt.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:i.scopeValue("schema",this.opts.code.source===!0?{ref:t.schema,code:(0,Tt.stringify)(t.schema)}:{ref:t.schema}),validateName:c,ValidationError:a,schema:t.schema,schemaEnv:t,rootId:r,baseId:t.baseId||r,schemaPath:Tt.nil,errSchemaPath:t.schemaPath||(this.opts.jtd?"":"#"),errorPath:(0,Tt._)`""`,opts:this.opts,self:this},l;try{this._compilations.add(t),(0,EO.validateFunctionCode)(u),i.optimize(this.opts.code.optimize);let d=i.toString();l=`${i.scopeRefs(fn.default.scope)}return ${d}`,this.opts.code.process&&(l=this.opts.code.process(l,t));let f=new Function(`${fn.default.self}`,`${fn.default.scope}`,l)(this,this.scope.get());if(this.scope.value(c,{ref:f}),f.errors=null,f.schema=t.schema,f.schemaEnv=t,t.$async&&(f.$async=!0),this.opts.code.source===!0&&(f.source={validateName:c,validateCode:d,scopeValues:i._values}),this.opts.unevaluated){let{props:m,items:h}=u;f.evaluated={props:m instanceof Tt.Name?void 0:m,items:h instanceof Tt.Name?void 0:h,dynamicProps:m instanceof Tt.Name,dynamicItems:h instanceof Tt.Name},f.source&&(f.source.evaluated=(0,Tt.stringify)(f.evaluated))}return t.validate=f,t}catch(d){throw delete t.validate,delete t.validateName,l&&this.logger.error("Error compiling schema, function code:",l),d}finally{this._compilations.delete(t)}}vt.compileSchema=Dm;function TO(t,e,r){var n;r=(0,It.resolveUrl)(this.opts.uriResolver,e,r);let o=t.refs[r];if(o)return o;let s=CO.call(this,t,r);if(s===void 0){let i=(n=t.localRefs)===null||n===void 0?void 0:n[r],{schemaId:a}=this.opts;i&&(s=new ho({schema:i,schemaId:a,root:t,baseId:e}))}if(s!==void 0)return t.refs[r]=IO.call(this,s)}vt.resolveRef=TO;function IO(t){return(0,It.inlineRef)(t.schema,this.opts.inlineRefs)?t.schema:t.validate?t:Dm.call(this,t)}function B0(t){for(let e of this._compilations)if(RO(e,t))return e}vt.getCompilingSchema=B0;function RO(t,e){return t.schema===e.schema&&t.root===e.root&&t.baseId===e.baseId}function CO(t,e){let r;for(;typeof(r=this.refs[e])=="string";)e=r;return r||this.schemas[e]||fc.call(this,t,e)}function fc(t,e){let r=this.opts.uriResolver.parse(e),n=(0,It._getFullPath)(this.opts.uriResolver,r),o=(0,It.getFullPath)(this.opts.uriResolver,t.baseId,void 0);if(Object.keys(t.schema).length>0&&n===o)return Zm.call(this,r,t);let s=(0,It.normalizeId)(n),i=this.refs[s]||this.schemas[s];if(typeof i=="string"){let a=fc.call(this,t,i);return typeof a?.schema!="object"?void 0:Zm.call(this,r,a)}if(typeof i?.schema=="object"){if(i.validate||Dm.call(this,i),s===(0,It.normalizeId)(e)){let{schema:a}=i,{schemaId:c}=this.opts,u=a[c];return u&&(o=(0,It.resolveUrl)(this.opts.uriResolver,o,u)),new ho({schema:a,schemaId:c,root:t,baseId:o})}return Zm.call(this,r,i)}}vt.resolveSchema=fc;var OO=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function Zm(t,{baseId:e,schema:r,root:n}){var o;if(((o=t.fragment)===null||o===void 0?void 0:o[0])!=="/")return;for(let a of t.fragment.slice(1).split("/")){if(typeof r=="boolean")return;let c=r[(0,H0.unescapeFragment)(a)];if(c===void 0)return;r=c;let u=typeof r=="object"&&r[this.opts.schemaId];!OO.has(a)&&u&&(e=(0,It.resolveUrl)(this.opts.uriResolver,e,u))}let s;if(typeof r!="boolean"&&r.$ref&&!(0,H0.schemaHasRulesButRef)(r,this.RULES)){let a=(0,It.resolveUrl)(this.opts.uriResolver,e,r.$ref);s=fc.call(this,n,a)}let{schemaId:i}=this.opts;if(s=s||new ho({schema:r,schemaId:i,root:n,baseId:e}),s.schema!==s.root.schema)return s}});var J0=R((g9,AO)=>{AO.exports={$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON AnySchema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var Hm=R((_9,ex)=>{"use strict";var NO=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),qm=RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u),mn=RegExp.prototype.test.bind(/^[\da-f]{2}$/iu),Um=RegExp.prototype.test.bind(/^[\da-z\-._~]$/iu),G0=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:@/]$/u),Vm=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:@/?]$/u),MO=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:]$/u),it=new Array(256);{let t="0123456789ABCDEF";for(let e=0;e<256;e++)it[e]="%"+t[e>>4]+t[e&15]}function Ue(t){return t<2048?it[192|t>>6]+it[128|t&63]:t<65536?it[224|t>>12]+it[128|t>>6&63]+it[128|t&63]:it[240|t>>18]+it[128|t>>12&63]+it[128|t>>6&63]+it[128|t&63]}function jO(t){let e="",r=0,n=0;for(n=0;n<t.length;n++)if(r=t[n].charCodeAt(0),r!==48){if(!(r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102))return"";e+=t[n];break}for(n+=1;n<t.length;n++){if(r=t[n].charCodeAt(0),!(r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102))return"";e+=t[n]}return e}var ZO=RegExp.prototype.test.bind(/^[\dA-Fa-f]{1,4}$/),DO=RegExp.prototype.test.bind(/^[vV][\dA-Fa-f]+\.[A-Za-z\d\-._~!$&'()*+,;=:]+$/),LO=RegExp.prototype.test.bind(/^[A-Za-z\d\-._~]$/),qO=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function UO(t){if(t.length===0)return!1;for(let e=0;e<t.length;e++)if(!LO(t[e])){if(t[e]==="%"&&e+2<t.length&&mn(t.slice(e+1,e+3))){e+=2;continue}return!1}return!0}function K0(t){let e=-1,r=0,n=-1,o=0;for(let a=0;a<t.length;a++)t[a]==="0"?(n===-1&&(n=a),o++,o>r&&(r=o,e=n)):(n=-1,o=0);if(r<2)return t.join(":");let s=t.slice(0,e).join(":"),i=t.slice(e+r).join(":");return s+"::"+i}function VO(t){let e=t.indexOf("::");if(e!==-1&&t.indexOf("::",e+1)!==-1)return;let r=e===-1?t.split(":"):t.slice(0,e).split(":"),n=e===-1?[]:t.slice(e+2).split(":");e!==-1&&(r.length===1&&r[0]===""&&(r.length=0),n.length===1&&n[0]===""&&(n.length=0));let o=r.concat(n),s=0;for(let a=0;a<o.length;a++){let c=o[a];if(c==="")return;if(c.indexOf(".")!==-1){if(a!==o.length-1||e!==-1&&n.length===0||!qm(c))return;s+=2;continue}if(!ZO(c))return;o[a]=parseInt(c,16).toString(16),s++}if(e===-1)return s!==8?void 0:K0(o);if(s>=8)return;let i=o.slice(0,r.length);for(let a=s;a<8;a++)i.push("0");for(let a=r.length;a<o.length;a++)i.push(o[a]);return K0(i)}function Lm(t){let e=t[0]==="["&&t[t.length-1]==="]";if((t[0]==="["||t[t.length-1]==="]")&&!e)return{host:t,isIPV6:!1,error:!0};let n=e?t.slice(1,-1):t;if(e&&DO(n))return n=n.toLowerCase(),{host:`[${n}]`,escapedHost:n,isIPV6:!1,isIPVFuture:!0};if(FO(n,":")<2)return{host:t,isIPV6:!1,error:e};let o="",s=n.indexOf("%");if(s!==-1){let a=n.slice(s,s+3).toLowerCase()==="%25"?3:1;if(o=n.slice(s+a),!UO(o))return{host:t,isIPV6:!1,error:!0};n=n.slice(0,s)}let i=VO(n);return i===void 0?{host:t,isIPV6:!1,error:!0}:{host:i+(o?"%"+o:""),escapedHost:i+(o?"%25"+o:""),isIPV6:!0}}function FO(t,e){let r=0;for(let n=0;n<t.length;n++)t[n]===e&&r++;return r}function HO(t){let e=t,r=[],n=-1,o=0;for(;o=e.length;){if(o===1){if(e===".")break;if(e==="/"){r.push("/");break}else{r.push(e);break}}else if(o===2){if(e[0]==="."){if(e[1]===".")break;if(e[1]==="/"){e=e.slice(2);continue}}else if(e[0]==="/"&&(e[1]==="."||e[1]==="/")){r.push("/");break}}else if(o===3&&e==="/.."){r.length!==0&&r.pop(),r.push("/");break}if(e[0]==="."){if(e[1]==="."){if(e[2]==="/"){e=e.slice(3);continue}}else if(e[1]==="/"){e=e.slice(2);continue}}else if(e[0]==="/"&&e[1]==="."){if(e[2]==="/"){e=e.slice(2);continue}else if(e[2]==="."&&e[3]==="/"){e=e.slice(3),r.length!==0&&r.pop();continue}}if((n=e.indexOf("/",1))===-1){r.push(e);break}else r.push(e.slice(0,n)),e=e.slice(n)}return r.join("")}var BO={"@":"%40","/":"%2F","?":"%3F","#":"%23",":":"%3A"},JO=/[@/?#:]/g,KO=/[@/?#]/g;function W0(t,e){let r=e?KO:JO;return r.lastIndex=0,t.replace(r,n=>BO[n])}function X0(t,e=!1){if(t.indexOf("%")===-1)return t;let r="";for(let n=0;n<t.length;n++){if(t[n]==="%"&&n+2<t.length){let o=t.slice(n+1,n+3);if(mn(o)){let s=o.toUpperCase(),i=String.fromCharCode(parseInt(s,16));e&&Um(i)?r+=i:r+="%"+s,n+=2;continue}}r+=t[n]}return r}function GO(t){let e="";for(let r=0;r<t.length;r++){let n=t[r];if(n==="%"&&r+2<t.length){let o=t.slice(r+1,r+3);if(mn(o)){let s=o.toUpperCase(),i=String.fromCharCode(parseInt(s,16));i!=="."&&Um(i)?e+=i:e+="%"+s,r+=2;continue}}if(G0(n))e+=n;else{let o=t.charCodeAt(r);if(o<128)e+=Q0(o)?n:it[o];else if(o<55296||o>57343)e+=Ue(o);else if(o<=56319&&r+1<t.length){let s=t.charCodeAt(r+1);s>=56320&&s<=57343?(e+=Ue(65536+(o-55296<<10)+(s-56320)),r++):e+=Ue(65533)}else e+=Ue(65533)}}return e}function WO(t,e=!1){let r="",n=e&&t[0]!=="/";for(let o=0;o<t.length;o++){let s=t[o];if(s==="%"&&o+2<t.length){let i=t.slice(o+1,o+3);if(mn(i)){r+="%"+i.toUpperCase(),o+=2;continue}}if(s==="/"&&(n=!1),G0(s)&&(s!==":"||!n))r+=s;else{let i=t.charCodeAt(o);if(i<128)r+=it[i];else if(i<55296||i>57343)r+=Ue(i);else if(i<=56319&&o+1<t.length){let a=t.charCodeAt(o+1);a>=56320&&a<=57343?(r+=Ue(65536+(i-55296<<10)+(a-56320)),o++):r+=Ue(65533)}else r+=Ue(65533)}}return r}function Fm(t,e){let r="";for(let n=0;n<t.length;n++){let o=t[n];if(o==="%"&&n+2<t.length){let s=t.slice(n+1,n+3);if(mn(s)){r+="%"+s.toUpperCase(),n+=2;continue}}if(e(o))r+=o;else{let s=t.charCodeAt(n);if(s<128)r+=it[s];else if(s<55296||s>57343)r+=Ue(s);else if(s<=56319&&n+1<t.length){let i=t.charCodeAt(n+1);i>=56320&&i<=57343?(r+=Ue(65536+(s-55296<<10)+(i-56320)),n++):r+=Ue(65533)}else r+=Ue(65533)}}return r}function Y0(t){return Fm(t,MO)}function XO(t){return Fm(t,Vm)}function YO(t){return Fm(t,Vm)}function Q0(t){return t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||t===42||t===43||t===45||t===46||t===47||t===64||t===95}function QO(t){let e="";for(let r=0;r<t.length;r++){let n=t[r];if(n==="%"&&r+2<t.length){let o=t.slice(r+1,r+3);if(mn(o)){let s=o.toUpperCase(),i=String.fromCharCode(parseInt(s,16));Um(i)?e+=i:e+="%"+s,r+=2;continue}}if(Vm(n))e+=n;else{let o=t.charCodeAt(r);if(o<128)e+=Q0(o)?n:it[o];else if(o<55296||o>57343)e+=Ue(o);else if(o<=56319&&r+1<t.length){let s=t.charCodeAt(r+1);s>=56320&&s<=57343?(e+=Ue(65536+(o-55296<<10)+(s-56320)),r++):e+=Ue(65533)}else e+=Ue(65533)}}return e}function e1(t){let e="";for(let r=0;r<t.length;r++){if(t[r]==="%"&&r+2<t.length){let n=t.slice(r+1,r+3);if(mn(n)){e+="%"+n.toUpperCase(),r+=2;continue}}e+=escape(t[r])}return e}function t1(t){let e=[];if(t.userinfo!==void 0&&(e.push(Y0(t.userinfo)),e.push("@")),t.host!==void 0){let r=t.host;if(!qm(r)){let n=Lm(r);n.isIPV6!==!0&&n.isIPVFuture!==!0&&(r=X0(r,!0),n=Lm(r)),n.isIPV6===!0||n.isIPVFuture===!0?r=`[${n.escapedHost}]`:r=W0(r,!1)}e.push(r)}return(typeof t.port=="number"||typeof t.port=="string")&&(e.push(":"),e.push(String(t.port))),e.length?e.join(""):void 0}ex.exports={nonSimpleDomain:qO,recomposeAuthority:t1,reescapeHostDelimiters:W0,normalizePercentEncoding:X0,normalizePathEncoding:GO,serializePathEncoding:WO,normalizeQueryFragmentEncoding:QO,encodeUserinfo:Y0,encodeQuery:XO,encodeFragment:YO,escapePreservingEscapes:e1,removeDotSegments:HO,isIPv4:qm,isUUID:NO,normalizeIPv6:Lm,stringArrayToHexStripped:jO}});var sx=R((y9,ox)=>{"use strict";var{isUUID:r1}=Hm(),n1=/^([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-./:;=@]|%[\da-f]{2})+)$/iu,o1=["http","https","ws","wss","urn","urn:uuid"];function s1(t){return o1.indexOf(t)!==-1}function Bm(t){return t.secure===!0?!0:t.secure===!1?!1:t.scheme?t.scheme.length===3&&(t.scheme[0]==="w"||t.scheme[0]==="W")&&(t.scheme[1]==="s"||t.scheme[1]==="S")&&(t.scheme[2]==="s"||t.scheme[2]==="S"):!1}function tx(t){return t.host||(t.error=t.error||"HTTP URIs must have a host."),t}function rx(t){let e=String(t.scheme).toLowerCase()==="https";return(t.port===(e?443:80)||t.port==="")&&(t.port=void 0),t.path||(t.path="/"),t}function i1(t){return t.secure=Bm(t),t.resourceName=(t.path||"/")+(t.query?"?"+t.query:""),t.path=void 0,t.query=void 0,t}function a1(t){if((t.port===(Bm(t)?443:80)||t.port==="")&&(t.port=void 0),typeof t.secure=="boolean"&&(t.scheme=t.secure?"wss":"ws",t.secure=void 0),t.resourceName){let e=t.resourceName.indexOf("?"),r=e===-1?t.resourceName:t.resourceName.slice(0,e);t.path=r&&r!=="/"?r:void 0,t.query=e===-1?void 0:t.resourceName.slice(e+1),t.resourceName=void 0}return t.fragment=void 0,t}function c1(t,e){if(!t.path)return t.error="URN can not be parsed",t;let r=t.path.match(n1);if(r&&r[0]===t.path){let n=e.scheme||t.scheme||"urn";t.nid=r[1].toLowerCase(),t.nss=r[2];let o=`${n}:${e.nid||t.nid}`,s=Jm(o);t.path=void 0,s&&(t=s.parse(t,e))}else t.error=t.error||"URN can not be parsed.";return t}function u1(t,e){if(t.nid===void 0)throw new Error("URN without nid cannot be serialized");let r=e.scheme||t.scheme||"urn",n=t.nid.toLowerCase(),o=`${r}:${e.nid||n}`,s=Jm(o);s&&(t=s.serialize(t,e));let i=t,a=t.nss;return i.path=`${n||e.nid}:${a}`,e.skipEscape=!0,i}function l1(t,e){let r=t;return r.uuid=r.nss,r.nss=void 0,!e.tolerant&&(!r.uuid||!r1(r.uuid))&&(r.error=r.error||"UUID is not valid."),r}function d1(t){let e=t;return e.nss=(t.uuid||"").toLowerCase(),e}var nx={scheme:"http",domainHost:!0,parse:tx,serialize:rx},p1={scheme:"https",domainHost:nx.domainHost,parse:tx,serialize:rx},hc={scheme:"ws",domainHost:!0,parse:i1,serialize:a1},f1={scheme:"wss",domainHost:hc.domainHost,parse:hc.parse,serialize:hc.serialize},m1={scheme:"urn",parse:c1,serialize:u1,skipNormalize:!0},h1={scheme:"urn:uuid",parse:l1,serialize:d1,skipNormalize:!0},gc={http:nx,https:p1,ws:hc,wss:f1,urn:m1,"urn:uuid":h1};Object.setPrototypeOf(gc,null);function Jm(t){return t&&(gc[t]||gc[t.toLowerCase()])||void 0}ox.exports={wsIsSecure:Bm,SCHEMES:gc,isValidSchemeName:s1,getSchemeHandler:Jm}});var vx=R((v9,vc)=>{"use strict";var{normalizeIPv6:lx,removeDotSegments:Js,recomposeAuthority:g1,normalizePercentEncoding:dx,normalizePathEncoding:_1,serializePathEncoding:ix,normalizeQueryFragmentEncoding:ax,encodeQuery:y1,encodeFragment:v1,reescapeHostDelimiters:w1,isIPv4:px,nonSimpleDomain:b1}=Hm(),{SCHEMES:fx,getSchemeHandler:Km}=sx(),mx=/^[A-Za-z][A-Za-z0-9+.-]*$/u,hx="URI scheme is malformed.";function cx(t){let e=unescape(String(t));if(!mx.test(e))throw new TypeError(hx);return e}function x1(t,e){return typeof t=="string"?t=I1(t,e):typeof t=="object"&&(t=yc(hn(t,e),e)),t}function $1(t,e,r){let n=r?Object.assign({scheme:"null"},r):{scheme:"null"},{parsed:o,malformedAuthorityOrPort:s,malformedPercentEncoding:i,malformedSchemeSpecific:a,malformedHost:c,malformedScheme:u}=_c(t,n),{parsed:l,malformedAuthorityOrPort:d,malformedPercentEncoding:p,malformedSchemeSpecific:f,malformedHost:m,malformedScheme:h}=_c(e,n);if(s||d||i||p||a||f||c||m||u||h)throw new Error(o.error||l.error||"URI is malformed.");let _=gx(o,l,n,!0),x=Km(r&&r.scheme||_.scheme),b=_.host,z=b!==void 0&&b!==""&&(px(b)||lx(b).isIPV6);_x(_,r||{},x,z);let q=b&&b.indexOf("%")!==-1&&!new RegExp("\\P{ASCII}","u").test(b);if(_.error&&!q)throw new Error(_.error);return n.skipEscape=!0,hn(_,n)}function gx(t,e,r,n){let o={};return n||(t=yc(hn(t,r),r),e=yc(hn(e,r),r)),r=r||{},!r.tolerant&&e.scheme?(o.scheme=e.scheme,o.userinfo=e.userinfo,o.host=e.host,o.port=e.port,o.path=Js(e.path||""),o.query=e.query):(e.userinfo!==void 0||e.host!==void 0||e.port!==void 0?(o.userinfo=e.userinfo,o.host=e.host,o.port=e.port,o.path=Js(e.path||""),o.query=e.query):(e.path?(e.path[0]==="/"?o.path=Js(e.path):((t.userinfo!==void 0||t.host!==void 0||t.port!==void 0)&&!t.path?o.path="/"+e.path:t.path?o.path=t.path.slice(0,t.path.lastIndexOf("/")+1)+e.path:o.path=e.path,o.path=Js(o.path)),o.query=e.query):(o.path=t.path,e.query!==void 0?o.query=e.query:o.query=t.query),o.userinfo=t.userinfo,o.host=t.host,o.port=t.port),o.scheme=t.scheme),o.fragment=e.fragment,o}function S1(t,e,r){let n=ux(t,r),o=ux(e,r);return n!==void 0&&o!==void 0&&n===o}function hn(t,e){let r={host:t.host,scheme:t.scheme,userinfo:t.userinfo,port:t.port,path:t.path,query:t.query,nid:t.nid,nss:t.nss,uuid:t.uuid,fragment:t.fragment,reference:t.reference,resourceName:t.resourceName,secure:t.secure,error:""},n=Object.assign({},e),o=[];r.scheme&&(r.scheme=cx(r.scheme));let s=Km(n.scheme||r.scheme);s&&s.serialize&&s.serialize(r,n);let i=r.userinfo!==void 0||r.host!==void 0||r.port!==void 0,a=!n.skipEscape&&r.scheme===void 0&&!i;r.path!==void 0&&(n.skipEscape?r.path=dx(r.path):r.path=ix(r.path,a)),n.reference!=="suffix"&&r.scheme&&(r.scheme=cx(r.scheme),o.push(r.scheme,":"));let c=g1(r);if(c!==void 0&&(n.reference!=="suffix"&&o.push("//"),o.push(c),r.path&&r.path[0]!=="/"&&o.push("/")),r.path!==void 0){let u=r.path;!n.absolutePath&&(!s||!s.absolutePath)&&(u=Js(u)),a&&(u=ix(u,!0)),c===void 0&&u[0]==="/"&&u[1]==="/"&&(u="/%2F"+u.slice(2)),o.push(u)}return r.query!==void 0&&o.push("?",y1(r.query)),r.fragment!==void 0&&o.push("#",v1(r.fragment)),o.join("")}var k1=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u,z1=/^(?:[^#/:?]+:)?\/\/([^/?#]*)/,P1=/^(?:[^#/:?]+:)?([/\\\t\n\r]*)/;function E1(t,e){if(e[2]!==void 0&&t.path&&t.path[0]!=="/")return'URI path must start with "/" when authority is present.';if(typeof t.port=="number"&&(t.port<0||t.port>65535))return"URI port is malformed."}function Bs(t){if(t===void 0)return!1;let e=t.indexOf("%");for(;e!==-1;){if(e+2>=t.length||!/^[\da-f]{2}$/iu.test(t.slice(e+1,e+3)))return!0;e=t.indexOf("%",e+3)}return!1}function T1(t){let e=t[4];return Bs(t[3])||e!==void 0&&!(e[0]==="["&&e[e.length-1]==="]")&&Bs(e)||Bs(t[6])||Bs(t[7])||Bs(t[8])}function _x(t,e,r,n){if(!e.unicodeSupport&&(!r||!r.unicodeSupport)&&t.host&&t.host[0]!=="["&&(e.domainHost||r&&r.domainHost)&&n===!1&&b1(t.host))try{t.host=new URL("http://"+t.host).hostname}catch(o){return t.error=t.error||"Host's domain name can not be converted to ASCII: "+o,!0}return!1}function _c(t,e){let r=Object.assign({},e),n={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},o=!1,s=!1,i=!1,a=!1,c=!1,u=!1,l=!1;r.reference==="suffix"&&(r.scheme?t=r.scheme+":"+t:t="//"+t);let d=t.match(z1);d!==null&&d[1].indexOf("\\")!==-1&&(n.error="URI authority must not contain a literal backslash.",o=!0);let p=t.match(P1);if(p!==null){let m=p[1],h=m.replace(/[\t\n\r]/g,"");h.length>=2&&(h.slice(0,2)!=="//"?(n.error=n.error||"URI authority must not contain a literal backslash.",o=!0):m.length!==h.length&&(n.error=n.error||"URI authority introducer must not contain whitespace.",o=!0))}let f=t.match(k1);if(f){if(n.scheme=f[1],n.userinfo=f[3],n.host=f[4],n.port=parseInt(f[5],10),n.path=f[6]||"",n.query=f[7],n.fragment=f[8],n.scheme!==void 0){let _=unescape(n.scheme);mx.test(_)?n.scheme=_.toLowerCase():(n.error=n.error||hx,u=!0)}s=T1(f),s&&(n.error=n.error||"URI contains malformed percent-encoding."),isNaN(n.port)&&(n.port=f[5]);let m=E1(n,f);if(m!==void 0&&(n.error=n.error||m,o=!0),n.host)if(px(n.host)===!1){let x=n.host[0]==="["&&n.host[n.host.length-1]==="]",b=lx(n.host);l=b.isIPV6||b.isIPVFuture===!0,c=x&&b.error===!0,n.host=l?b.host:b.host.toLowerCase(),c&&(n.error=n.error||"URI host is malformed.",o=!0)}else l=!0;n.scheme===void 0&&n.userinfo===void 0&&n.host===void 0&&n.port===void 0&&n.query===void 0&&!n.path?n.reference="same-document":n.scheme===void 0?n.reference="relative":n.fragment===void 0?n.reference="absolute":n.reference="uri",r.reference&&r.reference!=="suffix"&&r.reference!==n.reference&&(n.error=n.error||"URI is not a "+r.reference+" reference.");let h=Km(r.scheme||n.scheme);if(a=_x(n,r,h,l),!h||h&&!h.skipNormalize){if(t.indexOf("%")!==-1&&n.host!==void 0&&!c){let _=l?n.host:dx(n.host,!0);n.host=w1(_,l)}n.path&&(n.path=_1(n.path)),n.query&&(n.query=ax(n.query)),n.fragment&&(n.fragment=ax(n.fragment))}h&&h.parse&&(h.parse(n,r),h===fx.urn&&n.nid===void 0&&(i=!0))}else n.error=n.error||"URI can not be parsed.";return{parsed:n,malformedAuthorityOrPort:o,malformedPercentEncoding:s,malformedSchemeSpecific:i,malformedHost:a,malformedScheme:u}}function yc(t,e){return _c(t,e).parsed}function I1(t,e){return yx(t,e).normalized}function yx(t,e){let{parsed:r,malformedAuthorityOrPort:n,malformedPercentEncoding:o,malformedSchemeSpecific:s,malformedHost:i,malformedScheme:a}=_c(t,e);return{normalized:n||o||s||i||a?t:hn(r,e),malformedAuthorityOrPort:n,malformedPercentEncoding:o,malformedSchemeSpecific:s,malformedHost:i,malformedScheme:a}}function ux(t,e){if(typeof t!="string"&&typeof t!="object")return;let r;try{r=typeof t=="string"?t:hn(t,e)}catch{return}let{normalized:n,malformedAuthorityOrPort:o,malformedPercentEncoding:s,malformedSchemeSpecific:i,malformedHost:a,malformedScheme:c}=yx(r,e);return o||s||i||a||c?void 0:n}var Gm={SCHEMES:fx,normalize:x1,resolve:$1,resolveComponent:gx,equal:S1,serialize:hn,parse:yc};vc.exports=Gm;vc.exports.default=Gm;vc.exports.fastUri=Gm});var bx=R(Wm=>{"use strict";Object.defineProperty(Wm,"__esModule",{value:!0});var wx=vx();wx.code='require("ajv/dist/runtime/uri").default';Wm.default=wx});var Tx=R(Ne=>{"use strict";Object.defineProperty(Ne,"__esModule",{value:!0});Ne.CodeGen=Ne.Name=Ne.nil=Ne.stringify=Ne.str=Ne._=Ne.KeywordCxt=void 0;var R1=Fs();Object.defineProperty(Ne,"KeywordCxt",{enumerable:!0,get:function(){return R1.KeywordCxt}});var go=B();Object.defineProperty(Ne,"_",{enumerable:!0,get:function(){return go._}});Object.defineProperty(Ne,"str",{enumerable:!0,get:function(){return go.str}});Object.defineProperty(Ne,"stringify",{enumerable:!0,get:function(){return go.stringify}});Object.defineProperty(Ne,"nil",{enumerable:!0,get:function(){return go.nil}});Object.defineProperty(Ne,"Name",{enumerable:!0,get:function(){return go.Name}});Object.defineProperty(Ne,"CodeGen",{enumerable:!0,get:function(){return go.CodeGen}});var C1=pc(),zx=Hs(),O1=wm(),Ks=mc(),A1=B(),Gs=qs(),wc=Ls(),Ym=Q(),xx=J0(),N1=bx(),Px=(t,e)=>new RegExp(t,e);Px.code="new RegExp";var M1=["removeAdditional","useDefaults","coerceTypes"],j1=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),Z1={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},D1={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},$x=200;function L1(t){var e,r,n,o,s,i,a,c,u,l,d,p,f,m,h,_,x,b,z,q,w,$,Z,me,ye;let Oe=t.strict,fr=(e=t.code)===null||e===void 0?void 0:e.optimize,Sn=fr===!0||fr===void 0?1:fr||0,kn=(n=(r=t.code)===null||r===void 0?void 0:r.regExp)!==null&&n!==void 0?n:Px,mr=(o=t.uriResolver)!==null&&o!==void 0?o:N1.default;return{strictSchema:(i=(s=t.strictSchema)!==null&&s!==void 0?s:Oe)!==null&&i!==void 0?i:!0,strictNumbers:(c=(a=t.strictNumbers)!==null&&a!==void 0?a:Oe)!==null&&c!==void 0?c:!0,strictTypes:(l=(u=t.strictTypes)!==null&&u!==void 0?u:Oe)!==null&&l!==void 0?l:"log",strictTuples:(p=(d=t.strictTuples)!==null&&d!==void 0?d:Oe)!==null&&p!==void 0?p:"log",strictRequired:(m=(f=t.strictRequired)!==null&&f!==void 0?f:Oe)!==null&&m!==void 0?m:!1,code:t.code?{...t.code,optimize:Sn,regExp:kn}:{optimize:Sn,regExp:kn},loopRequired:(h=t.loopRequired)!==null&&h!==void 0?h:$x,loopEnum:(_=t.loopEnum)!==null&&_!==void 0?_:$x,meta:(x=t.meta)!==null&&x!==void 0?x:!0,messages:(b=t.messages)!==null&&b!==void 0?b:!0,inlineRefs:(z=t.inlineRefs)!==null&&z!==void 0?z:!0,schemaId:(q=t.schemaId)!==null&&q!==void 0?q:"$id",addUsedSchema:(w=t.addUsedSchema)!==null&&w!==void 0?w:!0,validateSchema:($=t.validateSchema)!==null&&$!==void 0?$:!0,validateFormats:(Z=t.validateFormats)!==null&&Z!==void 0?Z:!0,unicodeRegExp:(me=t.unicodeRegExp)!==null&&me!==void 0?me:!0,int32range:(ye=t.int32range)!==null&&ye!==void 0?ye:!0,uriResolver:mr}}var Ws=class{constructor(e={}){this.schemas={},this.refs={},this.formats=Object.create(null),this._compilations=new Set,this._loading={},this._cache=new Map,e=this.opts={...e,...L1(e)};let{es5:r,lines:n}=this.opts.code;this.scope=new A1.ValueScope({scope:{},prefixes:j1,es5:r,lines:n}),this.logger=B1(e.logger);let o=e.validateFormats;e.validateFormats=!1,this.RULES=(0,O1.getRules)(),Sx.call(this,Z1,e,"NOT SUPPORTED"),Sx.call(this,D1,e,"DEPRECATED","warn"),this._metaOpts=F1.call(this),e.formats&&U1.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),e.keywords&&V1.call(this,e.keywords),typeof e.meta=="object"&&this.addMetaSchema(e.meta),q1.call(this),e.validateFormats=o}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:e,meta:r,schemaId:n}=this.opts,o=xx;n==="id"&&(o={...xx},o.id=o.$id,delete o.$id),r&&e&&this.addMetaSchema(o,o[n],!1)}defaultMeta(){let{meta:e,schemaId:r}=this.opts;return this.opts.defaultMeta=typeof e=="object"?e[r]||e:void 0}validate(e,r){let n;if(typeof e=="string"){if(n=this.getSchema(e),!n)throw new Error(`no schema with key or ref "${e}"`)}else n=this.compile(e);let o=n(r);return"$async"in n||(this.errors=n.errors),o}compile(e,r){let n=this._addSchema(e,r);return n.validate||this._compileSchemaEnv(n)}compileAsync(e,r){if(typeof this.opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");let{loadSchema:n}=this.opts;return o.call(this,e,r);async function o(l,d){await s.call(this,l.$schema);let p=this._addSchema(l,d);return p.validate||i.call(this,p)}async function s(l){l&&!this.getSchema(l)&&await o.call(this,{$ref:l},!0)}async function i(l){try{return this._compileSchemaEnv(l)}catch(d){if(!(d instanceof zx.default))throw d;return a.call(this,d),await c.call(this,d.missingSchema),i.call(this,l)}}function a({missingSchema:l,missingRef:d}){if(this.refs[l])throw new Error(`AnySchema ${l} is loaded but ${d} cannot be resolved`)}async function c(l){let d=await u.call(this,l);this.refs[l]||await s.call(this,d.$schema),this.refs[l]||this.addSchema(d,l,r)}async function u(l){let d=this._loading[l];if(d)return d;try{return await(this._loading[l]=n(l))}finally{delete this._loading[l]}}}addSchema(e,r,n,o=this.opts.validateSchema){if(Array.isArray(e)){for(let i of e)this.addSchema(i,void 0,n,o);return this}let s;if(typeof e=="object"){let{schemaId:i}=this.opts;if(s=e[i],s!==void 0&&typeof s!="string")throw new Error(`schema ${i} must be string`)}return r=(0,Gs.normalizeId)(r||s),this._checkUnique(r),this.schemas[r]=this._addSchema(e,n,r,o,!0),this}addMetaSchema(e,r,n=this.opts.validateSchema){return this.addSchema(e,r,!0,n),this}validateSchema(e,r){if(typeof e=="boolean")return!0;let n;if(n=e.$schema,n!==void 0&&typeof n!="string")throw new Error("$schema must be a string");if(n=n||this.opts.defaultMeta||this.defaultMeta(),!n)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let o=this.validate(n,e);if(!o&&r){let s="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(s);else throw new Error(s)}return o}getSchema(e){let r;for(;typeof(r=kx.call(this,e))=="string";)e=r;if(r===void 0){let{schemaId:n}=this.opts,o=new Ks.SchemaEnv({schema:{},schemaId:n});if(r=Ks.resolveSchema.call(this,o,e),!r)return;this.refs[e]=r}return r.validate||this._compileSchemaEnv(r)}removeSchema(e){if(e instanceof RegExp)return this._removeAllSchemas(this.schemas,e),this._removeAllSchemas(this.refs,e),this;switch(typeof e){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let r=kx.call(this,e);return typeof r=="object"&&this._cache.delete(r.schema),delete this.schemas[e],delete this.refs[e],this}case"object":{let r=e;this._cache.delete(r);let n=e[this.opts.schemaId];return n&&(n=(0,Gs.normalizeId)(n),delete this.schemas[n],delete this.refs[n]),this}default:throw new Error("ajv.removeSchema: invalid parameter")}}addVocabulary(e){for(let r of e)this.addKeyword(r);return this}addKeyword(e,r){let n;if(typeof e=="string")n=e,typeof r=="object"&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),r.keyword=n);else if(typeof e=="object"&&r===void 0){if(r=e,n=r.keyword,Array.isArray(n)&&!n.length)throw new Error("addKeywords: keyword must be string or non-empty array")}else throw new Error("invalid addKeywords parameters");if(K1.call(this,n,r),!r)return(0,Ym.eachItem)(n,s=>Xm.call(this,s)),this;W1.call(this,r);let o={...r,type:(0,wc.getJSONTypes)(r.type),schemaType:(0,wc.getJSONTypes)(r.schemaType)};return(0,Ym.eachItem)(n,o.type.length===0?s=>Xm.call(this,s,o):s=>o.type.forEach(i=>Xm.call(this,s,o,i))),this}getKeyword(e){let r=this.RULES.all[e];return typeof r=="object"?r.definition:!!r}removeKeyword(e){let{RULES:r}=this;delete r.keywords[e],delete r.all[e];for(let n of r.rules){let o=n.rules.findIndex(s=>s.keyword===e);o>=0&&n.rules.splice(o,1)}return this}addFormat(e,r){return typeof r=="string"&&(r=new RegExp(r)),this.formats[e]=r,this}errorsText(e=this.errors,{separator:r=", ",dataVar:n="data"}={}){return!e||e.length===0?"No errors":e.map(o=>`${n}${o.instancePath} ${o.message}`).reduce((o,s)=>o+r+s)}$dataMetaSchema(e,r){let n=this.RULES.all;e=JSON.parse(JSON.stringify(e));for(let o of r){let s=o.split("/").slice(1),i=e;for(let a of s)i=i[a];for(let a in n){let c=n[a];if(typeof c!="object")continue;let{$data:u}=c.definition,l=i[a];u&&l&&(i[a]=Ex(l))}}return e}_removeAllSchemas(e,r){for(let n in e){let o=e[n];(!r||r.test(n))&&(typeof o=="string"?delete e[n]:o&&!o.meta&&(this._cache.delete(o.schema),delete e[n]))}}_addSchema(e,r,n,o=this.opts.validateSchema,s=this.opts.addUsedSchema){let i,{schemaId:a}=this.opts;if(typeof e=="object")i=e[a];else{if(this.opts.jtd)throw new Error("schema must be object");if(typeof e!="boolean")throw new Error("schema must be object or boolean")}let c=this._cache.get(e);if(c!==void 0)return c;n=(0,Gs.normalizeId)(i||n);let u=Gs.getSchemaRefs.call(this,e,n);return c=new Ks.SchemaEnv({schema:e,schemaId:a,meta:r,baseId:n,localRefs:u}),this._cache.set(c.schema,c),s&&!n.startsWith("#")&&(n&&this._checkUnique(n),this.refs[n]=c),o&&this.validateSchema(e,!0),c}_checkUnique(e){if(this.schemas[e]||this.refs[e])throw new Error(`schema with key or id "${e}" already exists`)}_compileSchemaEnv(e){if(e.meta?this._compileMetaSchema(e):Ks.compileSchema.call(this,e),!e.validate)throw new Error("ajv implementation error");return e.validate}_compileMetaSchema(e){let r=this.opts;this.opts=this._metaOpts;try{Ks.compileSchema.call(this,e)}finally{this.opts=r}}};Ws.ValidationError=C1.default;Ws.MissingRefError=zx.default;Ne.default=Ws;function Sx(t,e,r,n="error"){for(let o in t){let s=o;s in e&&this.logger[n](`${r}: option ${o}. ${t[s]}`)}}function kx(t){return t=(0,Gs.normalizeId)(t),this.schemas[t]||this.refs[t]}function q1(){let t=this.opts.schemas;if(t)if(Array.isArray(t))this.addSchema(t);else for(let e in t)this.addSchema(t[e],e)}function U1(){for(let t in this.opts.formats){let e=this.opts.formats[t];e&&this.addFormat(t,e)}}function V1(t){if(Array.isArray(t)){this.addVocabulary(t);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let e in t){let r=t[e];r.keyword||(r.keyword=e),this.addKeyword(r)}}function F1(){let t={...this.opts};for(let e of M1)delete t[e];return t}var H1={log(){},warn(){},error(){}};function B1(t){if(t===!1)return H1;if(t===void 0)return console;if(t.log&&t.warn&&t.error)return t;throw new Error("logger must implement log, warn and error methods")}var J1=/^[a-z_$][a-z0-9_$:-]*$/i;function K1(t,e){let{RULES:r}=this;if((0,Ym.eachItem)(t,n=>{if(r.keywords[n])throw new Error(`Keyword ${n} is already defined`);if(!J1.test(n))throw new Error(`Keyword ${n} has invalid name`)}),!!e&&e.$data&&!("code"in e||"validate"in e))throw new Error('$data keyword must have "code" or "validate" function')}function Xm(t,e,r){var n;let o=e?.post;if(r&&o)throw new Error('keyword with "post" flag cannot have "type"');let{RULES:s}=this,i=o?s.post:s.rules.find(({type:c})=>c===r);if(i||(i={type:r,rules:[]},s.rules.push(i)),s.keywords[t]=!0,!e)return;let a={keyword:t,definition:{...e,type:(0,wc.getJSONTypes)(e.type),schemaType:(0,wc.getJSONTypes)(e.schemaType)}};e.before?G1.call(this,i,a,e.before):i.rules.push(a),s.all[t]=a,(n=e.implements)===null||n===void 0||n.forEach(c=>this.addKeyword(c))}function G1(t,e,r){let n=t.rules.findIndex(o=>o.keyword===r);n>=0?t.rules.splice(n,0,e):(t.rules.push(e),this.logger.warn(`rule ${r} is not defined`))}function W1(t){let{metaSchema:e}=t;e!==void 0&&(t.$data&&this.opts.$data&&(e=Ex(e)),t.validateSchema=this.compile(e,!0))}var X1={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function Ex(t){return{anyOf:[t,X1]}}});var Ix=R(Qm=>{"use strict";Object.defineProperty(Qm,"__esModule",{value:!0});var Y1={keyword:"id",code(){throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};Qm.default=Y1});var Ax=R(gn=>{"use strict";Object.defineProperty(gn,"__esModule",{value:!0});gn.callRef=gn.getValidate=void 0;var Q1=Hs(),Rx=yt(),at=B(),_o=ur(),Cx=mc(),bc=Q(),eA={keyword:"$ref",schemaType:"string",code(t){let{gen:e,schema:r,it:n}=t,{baseId:o,schemaEnv:s,validateName:i,opts:a,self:c}=n,{root:u}=s;if((r==="#"||r==="#/")&&o===u.baseId)return d();let l=Cx.resolveRef.call(c,u,o,r);if(l===void 0)throw new Q1.default(n.opts.uriResolver,o,r);if(l instanceof Cx.SchemaEnv)return p(l);return f(l);function d(){if(s===u)return xc(t,i,s,s.$async);let m=e.scopeValue("root",{ref:u});return xc(t,(0,at._)`${m}.validate`,u,u.$async)}function p(m){let h=Ox(t,m);xc(t,h,m,m.$async)}function f(m){let h=e.scopeValue("schema",a.code.source===!0?{ref:m,code:(0,at.stringify)(m)}:{ref:m}),_=e.name("valid"),x=t.subschema({schema:m,dataTypes:[],schemaPath:at.nil,topSchemaRef:h,errSchemaPath:r},_);t.mergeEvaluated(x),t.ok(_)}}};function Ox(t,e){let{gen:r}=t;return e.validate?r.scopeValue("validate",{ref:e.validate}):(0,at._)`${r.scopeValue("wrapper",{ref:e})}.validate`}gn.getValidate=Ox;function xc(t,e,r,n){let{gen:o,it:s}=t,{allErrors:i,schemaEnv:a,opts:c}=s,u=c.passContext?_o.default.this:at.nil;n?l():d();function l(){if(!a.$async)throw new Error("async schema referenced by sync schema");let m=o.let("valid");o.try(()=>{o.code((0,at._)`await ${(0,Rx.callValidateCode)(t,e,u)}`),f(e),i||o.assign(m,!0)},h=>{o.if((0,at._)`!(${h} instanceof ${s.ValidationError})`,()=>o.throw(h)),p(h),i||o.assign(m,!1)}),t.ok(m)}function d(){t.result((0,Rx.callValidateCode)(t,e,u),()=>f(e),()=>p(e))}function p(m){let h=(0,at._)`${m}.errors`;o.assign(_o.default.vErrors,(0,at._)`${_o.default.vErrors} === null ? ${h} : ${_o.default.vErrors}.concat(${h})`),o.assign(_o.default.errors,(0,at._)`${_o.default.vErrors}.length`)}function f(m){var h;if(!s.opts.unevaluated)return;let _=(h=r?.validate)===null||h===void 0?void 0:h.evaluated;if(s.props!==!0)if(_&&!_.dynamicProps)_.props!==void 0&&(s.props=bc.mergeEvaluated.props(o,_.props,s.props));else{let x=o.var("props",(0,at._)`${m}.evaluated.props`);s.props=bc.mergeEvaluated.props(o,x,s.props,at.Name)}if(s.items!==!0)if(_&&!_.dynamicItems)_.items!==void 0&&(s.items=bc.mergeEvaluated.items(o,_.items,s.items));else{let x=o.var("items",(0,at._)`${m}.evaluated.items`);s.items=bc.mergeEvaluated.items(o,x,s.items,at.Name)}}}gn.callRef=xc;gn.default=eA});var Nx=R(eh=>{"use strict";Object.defineProperty(eh,"__esModule",{value:!0});var tA=Ix(),rA=Ax(),nA=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",tA.default,rA.default];eh.default=nA});var Mx=R(th=>{"use strict";Object.defineProperty(th,"__esModule",{value:!0});var $c=B(),Fr=$c.operators,Sc={maximum:{okStr:"<=",ok:Fr.LTE,fail:Fr.GT},minimum:{okStr:">=",ok:Fr.GTE,fail:Fr.LT},exclusiveMaximum:{okStr:"<",ok:Fr.LT,fail:Fr.GTE},exclusiveMinimum:{okStr:">",ok:Fr.GT,fail:Fr.LTE}},oA={message:({keyword:t,schemaCode:e})=>(0,$c.str)`must be ${Sc[t].okStr} ${e}`,params:({keyword:t,schemaCode:e})=>(0,$c._)`{comparison: ${Sc[t].okStr}, limit: ${e}}`},sA={keyword:Object.keys(Sc),type:"number",schemaType:"number",$data:!0,error:oA,code(t){let{keyword:e,data:r,schemaCode:n}=t;t.fail$data((0,$c._)`${r} ${Sc[e].fail} ${n} || isNaN(${r})`)}};th.default=sA});var jx=R(rh=>{"use strict";Object.defineProperty(rh,"__esModule",{value:!0});var Xs=B(),iA={message:({schemaCode:t})=>(0,Xs.str)`must be multiple of ${t}`,params:({schemaCode:t})=>(0,Xs._)`{multipleOf: ${t}}`},aA={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:iA,code(t){let{gen:e,data:r,schemaCode:n,it:o}=t,s=o.opts.multipleOfPrecision,i=e.let("res"),a=s?(0,Xs._)`Math.abs(Math.round(${i}) - ${i}) > 1e-${s}`:(0,Xs._)`${i} !== parseInt(${i})`;t.fail$data((0,Xs._)`(${n} === 0 || (${i} = ${r}/${n}, ${a}))`)}};rh.default=aA});var Dx=R(nh=>{"use strict";Object.defineProperty(nh,"__esModule",{value:!0});function Zx(t){let e=t.length,r=0,n=0,o;for(;n<e;)r++,o=t.charCodeAt(n++),o>=55296&&o<=56319&&n<e&&(o=t.charCodeAt(n),(o&64512)===56320&&n++);return r}nh.default=Zx;Zx.code='require("ajv/dist/runtime/ucs2length").default'});var Lx=R(oh=>{"use strict";Object.defineProperty(oh,"__esModule",{value:!0});var _n=B(),cA=Q(),uA=Dx(),lA={message({keyword:t,schemaCode:e}){let r=t==="maxLength"?"more":"fewer";return(0,_n.str)`must NOT have ${r} than ${e} characters`},params:({schemaCode:t})=>(0,_n._)`{limit: ${t}}`},dA={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:lA,code(t){let{keyword:e,data:r,schemaCode:n,it:o}=t,s=e==="maxLength"?_n.operators.GT:_n.operators.LT,i=o.opts.unicode===!1?(0,_n._)`${r}.length`:(0,_n._)`${(0,cA.useFunc)(t.gen,uA.default)}(${r})`;t.fail$data((0,_n._)`${i} ${s} ${n}`)}};oh.default=dA});var qx=R(sh=>{"use strict";Object.defineProperty(sh,"__esModule",{value:!0});var pA=yt(),fA=Q(),yo=B(),mA={message:({schemaCode:t})=>(0,yo.str)`must match pattern "${t}"`,params:({schemaCode:t})=>(0,yo._)`{pattern: ${t}}`},hA={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:mA,code(t){let{gen:e,data:r,$data:n,schema:o,schemaCode:s,it:i}=t,a=i.opts.unicodeRegExp?"u":"";if(n){let{regExp:c}=i.opts.code,u=c.code==="new RegExp"?(0,yo._)`new RegExp`:(0,fA.useFunc)(e,c),l=e.let("valid");e.try(()=>e.assign(l,(0,yo._)`${u}(${s}, ${a}).test(${r})`),()=>e.assign(l,!1)),t.fail$data((0,yo._)`!${l}`)}else{let c=(0,pA.usePattern)(t,o);t.fail$data((0,yo._)`!${c}.test(${r})`)}}};sh.default=hA});var Ux=R(ih=>{"use strict";Object.defineProperty(ih,"__esModule",{value:!0});var Ys=B(),gA={message({keyword:t,schemaCode:e}){let r=t==="maxProperties"?"more":"fewer";return(0,Ys.str)`must NOT have ${r} than ${e} properties`},params:({schemaCode:t})=>(0,Ys._)`{limit: ${t}}`},_A={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:gA,code(t){let{keyword:e,data:r,schemaCode:n}=t,o=e==="maxProperties"?Ys.operators.GT:Ys.operators.LT;t.fail$data((0,Ys._)`Object.keys(${r}).length ${o} ${n}`)}};ih.default=_A});var Vx=R(ah=>{"use strict";Object.defineProperty(ah,"__esModule",{value:!0});var Qs=yt(),ei=B(),yA=Q(),vA={message:({params:{missingProperty:t}})=>(0,ei.str)`must have required property '${t}'`,params:({params:{missingProperty:t}})=>(0,ei._)`{missingProperty: ${t}}`},wA={keyword:"required",type:"object",schemaType:"array",$data:!0,error:vA,code(t){let{gen:e,schema:r,schemaCode:n,data:o,$data:s,it:i}=t,{opts:a}=i;if(!s&&r.length===0)return;let c=r.length>=a.loopRequired;if(i.allErrors?u():l(),a.strictRequired){let f=t.parentSchema.properties,{definedProperties:m}=t.it;for(let h of r)if(f?.[h]===void 0&&!m.has(h)){let _=i.schemaEnv.baseId+i.errSchemaPath,x=`required property "${h}" is not defined at "${_}" (strictRequired)`;(0,yA.checkStrictMode)(i,x,i.opts.strictRequired)}}function u(){if(c||s)t.block$data(ei.nil,d);else for(let f of r)(0,Qs.checkReportMissingProp)(t,f)}function l(){let f=e.let("missing");if(c||s){let m=e.let("valid",!0);t.block$data(m,()=>p(f,m)),t.ok(m)}else e.if((0,Qs.checkMissingProp)(t,r,f)),(0,Qs.reportMissingProp)(t,f),e.else()}function d(){e.forOf("prop",n,f=>{t.setParams({missingProperty:f}),e.if((0,Qs.noPropertyInData)(e,o,f,a.ownProperties),()=>t.error())})}function p(f,m){t.setParams({missingProperty:f}),e.forOf(f,n,()=>{e.assign(m,(0,Qs.propertyInData)(e,o,f,a.ownProperties)),e.if((0,ei.not)(m),()=>{t.error(),e.break()})},ei.nil)}}};ah.default=wA});var Fx=R(ch=>{"use strict";Object.defineProperty(ch,"__esModule",{value:!0});var ti=B(),bA={message({keyword:t,schemaCode:e}){let r=t==="maxItems"?"more":"fewer";return(0,ti.str)`must NOT have ${r} than ${e} items`},params:({schemaCode:t})=>(0,ti._)`{limit: ${t}}`},xA={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:bA,code(t){let{keyword:e,data:r,schemaCode:n}=t,o=e==="maxItems"?ti.operators.GT:ti.operators.LT;t.fail$data((0,ti._)`${r}.length ${o} ${n}`)}};ch.default=xA});var kc=R(uh=>{"use strict";Object.defineProperty(uh,"__esModule",{value:!0});var Hx=Em();Hx.code='require("ajv/dist/runtime/equal").default';uh.default=Hx});var Bx=R(dh=>{"use strict";Object.defineProperty(dh,"__esModule",{value:!0});var lh=Ls(),Me=B(),$A=Q(),SA=kc(),kA={message:({params:{i:t,j:e}})=>(0,Me.str)`must NOT have duplicate items (items ## ${e} and ${t} are identical)`,params:({params:{i:t,j:e}})=>(0,Me._)`{i: ${t}, j: ${e}}`},zA={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:kA,code(t){let{gen:e,data:r,$data:n,schema:o,parentSchema:s,schemaCode:i,it:a}=t;if(!n&&!o)return;let c=e.let("valid"),u=s.items?(0,lh.getSchemaTypes)(s.items):[];t.block$data(c,l,(0,Me._)`${i} === false`),t.ok(c);function l(){let m=e.let("i",(0,Me._)`${r}.length`),h=e.let("j");t.setParams({i:m,j:h}),e.assign(c,!0),e.if((0,Me._)`${m} > 1`,()=>(d()?p:f)(m,h))}function d(){return u.length>0&&!u.some(m=>m==="object"||m==="array")}function p(m,h){let _=e.name("item"),x=(0,lh.checkDataTypes)(u,_,a.opts.strictNumbers,lh.DataType.Wrong),b=e.const("indices",(0,Me._)`{}`);e.for((0,Me._)`;${m}--;`,()=>{e.let(_,(0,Me._)`${r}[${m}]`),e.if(x,(0,Me._)`continue`),u.length>1&&e.if((0,Me._)`typeof ${_} == "string"`,(0,Me._)`${_} += "_"`),e.if((0,Me._)`typeof ${b}[${_}] == "number"`,()=>{e.assign(h,(0,Me._)`${b}[${_}]`),t.error(),e.assign(c,!1).break()}).code((0,Me._)`${b}[${_}] = ${m}`)})}function f(m,h){let _=(0,$A.useFunc)(e,SA.default),x=e.name("outer");e.label(x).for((0,Me._)`;${m}--;`,()=>e.for((0,Me._)`${h} = ${m}; ${h}--;`,()=>e.if((0,Me._)`${_}(${r}[${m}], ${r}[${h}])`,()=>{t.error(),e.assign(c,!1).break(x)})))}}};dh.default=zA});var Jx=R(fh=>{"use strict";Object.defineProperty(fh,"__esModule",{value:!0});var ph=B(),PA=Q(),EA=kc(),TA={message:"must be equal to constant",params:({schemaCode:t})=>(0,ph._)`{allowedValue: ${t}}`},IA={keyword:"const",$data:!0,error:TA,code(t){let{gen:e,data:r,$data:n,schemaCode:o,schema:s}=t;n||s&&typeof s=="object"?t.fail$data((0,ph._)`!${(0,PA.useFunc)(e,EA.default)}(${r}, ${o})`):t.fail((0,ph._)`${s} !== ${r}`)}};fh.default=IA});var Kx=R(mh=>{"use strict";Object.defineProperty(mh,"__esModule",{value:!0});var ri=B(),RA=Q(),CA=kc(),OA={message:"must be equal to one of the allowed values",params:({schemaCode:t})=>(0,ri._)`{allowedValues: ${t}}`},AA={keyword:"enum",schemaType:"array",$data:!0,error:OA,code(t){let{gen:e,data:r,$data:n,schema:o,schemaCode:s,it:i}=t;if(!n&&o.length===0)throw new Error("enum must have non-empty array");let a=o.length>=i.opts.loopEnum,c,u=()=>c??(c=(0,RA.useFunc)(e,CA.default)),l;if(a||n)l=e.let("valid"),t.block$data(l,d);else{if(!Array.isArray(o))throw new Error("ajv implementation error");let f=e.const("vSchema",s);l=(0,ri.or)(...o.map((m,h)=>p(f,h)))}t.pass(l);function d(){e.assign(l,!1),e.forOf("v",s,f=>e.if((0,ri._)`${u()}(${r}, ${f})`,()=>e.assign(l,!0).break()))}function p(f,m){let h=o[m];return typeof h=="object"&&h!==null?(0,ri._)`${u()}(${r}, ${f}[${m}])`:(0,ri._)`${r} === ${h}`}}};mh.default=AA});var Gx=R(hh=>{"use strict";Object.defineProperty(hh,"__esModule",{value:!0});var NA=Mx(),MA=jx(),jA=Lx(),ZA=qx(),DA=Ux(),LA=Vx(),qA=Fx(),UA=Bx(),VA=Jx(),FA=Kx(),HA=[NA.default,MA.default,jA.default,ZA.default,DA.default,LA.default,qA.default,UA.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},VA.default,FA.default];hh.default=HA});var _h=R(ni=>{"use strict";Object.defineProperty(ni,"__esModule",{value:!0});ni.validateAdditionalItems=void 0;var yn=B(),gh=Q(),BA={message:({params:{len:t}})=>(0,yn.str)`must NOT have more than ${t} items`,params:({params:{len:t}})=>(0,yn._)`{limit: ${t}}`},JA={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:BA,code(t){let{parentSchema:e,it:r}=t,{items:n}=e;if(!Array.isArray(n)){(0,gh.checkStrictMode)(r,'"additionalItems" is ignored when "items" is not an array of schemas');return}Wx(t,n)}};function Wx(t,e){let{gen:r,schema:n,data:o,keyword:s,it:i}=t;i.items=!0;let a=r.const("len",(0,yn._)`${o}.length`);if(n===!1)t.setParams({len:e.length}),t.pass((0,yn._)`${a} <= ${e.length}`);else if(typeof n=="object"&&!(0,gh.alwaysValidSchema)(i,n)){let u=r.var("valid",(0,yn._)`${a} <= ${e.length}`);r.if((0,yn.not)(u),()=>c(u)),t.ok(u)}function c(u){r.forRange("i",e.length,a,l=>{t.subschema({keyword:s,dataProp:l,dataPropType:gh.Type.Num},u),i.allErrors||r.if((0,yn.not)(u),()=>r.break())})}}ni.validateAdditionalItems=Wx;ni.default=JA});var yh=R(oi=>{"use strict";Object.defineProperty(oi,"__esModule",{value:!0});oi.validateTuple=void 0;var Xx=B(),zc=Q(),KA=yt(),GA={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(t){let{schema:e,it:r}=t;if(Array.isArray(e))return Yx(t,"additionalItems",e);r.items=!0,!(0,zc.alwaysValidSchema)(r,e)&&t.ok((0,KA.validateArray)(t))}};function Yx(t,e,r=t.schema){let{gen:n,parentSchema:o,data:s,keyword:i,it:a}=t;l(o),a.opts.unevaluated&&r.length&&a.items!==!0&&(a.items=zc.mergeEvaluated.items(n,r.length,a.items));let c=n.name("valid"),u=n.const("len",(0,Xx._)`${s}.length`);r.forEach((d,p)=>{(0,zc.alwaysValidSchema)(a,d)||(n.if((0,Xx._)`${u} > ${p}`,()=>t.subschema({keyword:i,schemaProp:p,dataProp:p},c)),t.ok(c))});function l(d){let{opts:p,errSchemaPath:f}=a,m=r.length,h=m===d.minItems&&(m===d.maxItems||d[e]===!1);if(p.strictTuples&&!h){let _=`"${i}" is ${m}-tuple, but minItems or maxItems/${e} are not specified or different at path "${f}"`;(0,zc.checkStrictMode)(a,_,p.strictTuples)}}}oi.validateTuple=Yx;oi.default=GA});var Qx=R(vh=>{"use strict";Object.defineProperty(vh,"__esModule",{value:!0});var WA=yh(),XA={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:t=>(0,WA.validateTuple)(t,"items")};vh.default=XA});var t$=R(wh=>{"use strict";Object.defineProperty(wh,"__esModule",{value:!0});var e$=B(),YA=Q(),QA=yt(),eN=_h(),tN={message:({params:{len:t}})=>(0,e$.str)`must NOT have more than ${t} items`,params:({params:{len:t}})=>(0,e$._)`{limit: ${t}}`},rN={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:tN,code(t){let{schema:e,parentSchema:r,it:n}=t,{prefixItems:o}=r;n.items=!0,!(0,YA.alwaysValidSchema)(n,e)&&(o?(0,eN.validateAdditionalItems)(t,o):t.ok((0,QA.validateArray)(t)))}};wh.default=rN});var r$=R(bh=>{"use strict";Object.defineProperty(bh,"__esModule",{value:!0});var wt=B(),Pc=Q(),nN={message:({params:{min:t,max:e}})=>e===void 0?(0,wt.str)`must contain at least ${t} valid item(s)`:(0,wt.str)`must contain at least ${t} and no more than ${e} valid item(s)`,params:({params:{min:t,max:e}})=>e===void 0?(0,wt._)`{minContains: ${t}}`:(0,wt._)`{minContains: ${t}, maxContains: ${e}}`},oN={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:nN,code(t){let{gen:e,schema:r,parentSchema:n,data:o,it:s}=t,i,a,{minContains:c,maxContains:u}=n;s.opts.next?(i=c===void 0?1:c,a=u):i=1;let l=e.const("len",(0,wt._)`${o}.length`);if(t.setParams({min:i,max:a}),a===void 0&&i===0){(0,Pc.checkStrictMode)(s,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(a!==void 0&&i>a){(0,Pc.checkStrictMode)(s,'"minContains" > "maxContains" is always invalid'),t.fail();return}if((0,Pc.alwaysValidSchema)(s,r)){let h=(0,wt._)`${l} >= ${i}`;a!==void 0&&(h=(0,wt._)`${h} && ${l} <= ${a}`),t.pass(h);return}s.items=!0;let d=e.name("valid");a===void 0&&i===1?f(d,()=>e.if(d,()=>e.break())):i===0?(e.let(d,!0),a!==void 0&&e.if((0,wt._)`${o}.length > 0`,p)):(e.let(d,!1),p()),t.result(d,()=>t.reset());function p(){let h=e.name("_valid"),_=e.let("count",0);f(h,()=>e.if(h,()=>m(_)))}function f(h,_){e.forRange("i",0,l,x=>{t.subschema({keyword:"contains",dataProp:x,dataPropType:Pc.Type.Num,compositeRule:!0},h),_()})}function m(h){e.code((0,wt._)`${h}++`),a===void 0?e.if((0,wt._)`${h} >= ${i}`,()=>e.assign(d,!0).break()):(e.if((0,wt._)`${h} > ${a}`,()=>e.assign(d,!1).break()),i===1?e.assign(d,!0):e.if((0,wt._)`${h} >= ${i}`,()=>e.assign(d,!0)))}}};bh.default=oN});var s$=R(Ut=>{"use strict";Object.defineProperty(Ut,"__esModule",{value:!0});Ut.validateSchemaDeps=Ut.validatePropertyDeps=Ut.error=void 0;var xh=B(),sN=Q(),si=yt();Ut.error={message:({params:{property:t,depsCount:e,deps:r}})=>{let n=e===1?"property":"properties";return(0,xh.str)`must have ${n} ${r} when property ${t} is present`},params:({params:{property:t,depsCount:e,deps:r,missingProperty:n}})=>(0,xh._)`{property: ${t},
|
|
554
554
|
missingProperty: ${n},
|
|
555
555
|
depsCount: ${e},
|
|
556
|
-
deps: ${r}}`};var iN={keyword:"dependencies",type:"object",schemaType:"object",error:Ut.error,code(t){let[e,r]=aN(t);n$(t,e),o$(t,r)}};function aN({schema:t}){let e={},r={};for(let n in t){if(n==="__proto__")continue;let o=Array.isArray(t[n])?e:r;o[n]=t[n]}return[e,r]}function n$(t,e=t.schema){let{gen:r,data:n,it:o}=t;if(Object.keys(e).length===0)return;let s=r.let("missing");for(let i in e){let a=e[i];if(a.length===0)continue;let c=(0,si.propertyInData)(r,n,i,o.opts.ownProperties);t.setParams({property:i,depsCount:a.length,deps:a.join(", ")}),o.allErrors?r.if(c,()=>{for(let u of a)(0,si.checkReportMissingProp)(t,u)}):(r.if((0,xh._)`${c} && (${(0,si.checkMissingProp)(t,a,s)})`),(0,si.reportMissingProp)(t,s),r.else())}}Ut.validatePropertyDeps=n$;function o$(t,e=t.schema){let{gen:r,data:n,keyword:o,it:s}=t,i=r.name("valid");for(let a in e)(0,sN.alwaysValidSchema)(s,e[a])||(r.if((0,si.propertyInData)(r,n,a,s.opts.ownProperties),()=>{let c=t.subschema({keyword:o,schemaProp:a},i);t.mergeValidEvaluated(c,i)},()=>r.var(i,!0)),t.ok(i))}Ut.validateSchemaDeps=o$;Ut.default=iN});var a$=R($h=>{"use strict";Object.defineProperty($h,"__esModule",{value:!0});var i$=B(),cN=Q(),uN={message:"property name must be valid",params:({params:t})=>(0,i$._)`{propertyName: ${t.propertyName}}`},lN={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:uN,code(t){let{gen:e,schema:r,data:n,it:o}=t;if((0,cN.alwaysValidSchema)(o,r))return;let s=e.name("valid");e.forIn("key",n,i=>{t.setParams({propertyName:i}),t.subschema({keyword:"propertyNames",data:i,dataTypes:["string"],propertyName:i,compositeRule:!0},s),e.if((0,i$.not)(s),()=>{t.error(!0),o.allErrors||e.break()})}),t.ok(s)}};$h.default=lN});var kh=R(Sh=>{"use strict";Object.defineProperty(Sh,"__esModule",{value:!0});var Ec=yt(),Rt=B(),dN=ur(),Tc=Q(),pN={message:"must NOT have additional properties",params:({params:t})=>(0,Rt._)`{additionalProperty: ${t.additionalProperty}}`},fN={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:pN,code(t){let{gen:e,schema:r,parentSchema:n,data:o,errsCount:s,it:i}=t;if(!s)throw new Error("ajv implementation error");let{allErrors:a,opts:c}=i;if(i.props=!0,c.removeAdditional!=="all"&&(0,Tc.alwaysValidSchema)(i,r))return;let u=(0,Ec.allSchemaProperties)(n.properties),l=(0,Ec.allSchemaProperties)(n.patternProperties);d(),t.ok((0,Rt._)`${s} === ${dN.default.errors}`);function d(){e.forIn("key",o,_=>{!u.length&&!l.length?m(_):e.if(p(_),()=>m(_))})}function p(_){let x;if(u.length>8){let b=(0,Tc.schemaRefOrVal)(i,n.properties,"properties");x=(0,Ec.isOwnProperty)(e,b,_)}else u.length?x=(0,Rt.or)(...u.map(b=>(0,Rt._)`${_} === ${b}`)):x=Rt.nil;return l.length&&(x=(0,Rt.or)(x,...l.map(b=>(0,Rt._)`${(0,Ec.usePattern)(t,b)}.test(${_})`))),(0,Rt.not)(x)}function f(_){e.code((0,Rt._)`delete ${o}[${_}]`)}function m(_){if(c.removeAdditional==="all"||c.removeAdditional&&r===!1){f(_);return}if(r===!1){t.setParams({additionalProperty:_}),t.error(),a||e.break();return}if(typeof r=="object"&&!(0,Tc.alwaysValidSchema)(i,r)){let x=e.name("valid");c.removeAdditional==="failing"?(h(_,x,!1),e.if((0,Rt.not)(x),()=>{t.reset(),f(_)})):(h(_,x),a||e.if((0,Rt.not)(x),()=>e.break()))}}function h(_,x,b){let z={keyword:"additionalProperties",dataProp:_,dataPropType:Tc.Type.Str};b===!1&&Object.assign(z,{compositeRule:!0,createErrors:!1,allErrors:!1}),t.subschema(z,x)}}};Sh.default=fN});var l$=R(Ph=>{"use strict";Object.defineProperty(Ph,"__esModule",{value:!0});var mN=Fs(),c$=yt(),zh=Q(),u$=kh(),hN={keyword:"properties",type:"object",schemaType:"object",code(t){let{gen:e,schema:r,parentSchema:n,data:o,it:s}=t;s.opts.removeAdditional==="all"&&n.additionalProperties===void 0&&u$.default.code(new mN.KeywordCxt(s,u$.default,"additionalProperties"));let i=(0,c$.allSchemaProperties)(r);for(let d of i)s.definedProperties.add(d);s.opts.unevaluated&&i.length&&s.props!==!0&&(s.props=zh.mergeEvaluated.props(e,(0,zh.toHash)(i),s.props));let a=i.filter(d=>!(0,zh.alwaysValidSchema)(s,r[d]));if(a.length===0)return;let c=e.name("valid");for(let d of a)u(d)?l(d):(e.if((0,c$.propertyInData)(e,o,d,s.opts.ownProperties)),l(d),s.allErrors||e.else().var(c,!0),e.endIf()),t.it.definedProperties.add(d),t.ok(c);function u(d){return s.opts.useDefaults&&!s.compositeRule&&r[d].default!==void 0}function l(d){t.subschema({keyword:"properties",schemaProp:d,dataProp:d},c)}}};Ph.default=hN});var m$=R(Eh=>{"use strict";Object.defineProperty(Eh,"__esModule",{value:!0});var d$=yt(),Ic=B(),p$=Q(),f$=Q(),gN={keyword:"patternProperties",type:"object",schemaType:"object",code(t){let{gen:e,schema:r,data:n,parentSchema:o,it:s}=t,{opts:i}=s,a=(0,d$.allSchemaProperties)(r),c=a.filter(h=>(0,p$.alwaysValidSchema)(s,r[h]));if(a.length===0||c.length===a.length&&(!s.opts.unevaluated||s.props===!0))return;let u=i.strictSchema&&!i.allowMatchingProperties&&o.properties,l=e.name("valid");s.props!==!0&&!(s.props instanceof Ic.Name)&&(s.props=(0,f$.evaluatedPropsToName)(e,s.props));let{props:d}=s;p();function p(){for(let h of a)u&&f(h),s.allErrors?m(h):(e.var(l,!0),m(h),e.if(l))}function f(h){for(let _ in u)new RegExp(h).test(_)&&(0,p$.checkStrictMode)(s,`property ${_} matches pattern ${h} (use allowMatchingProperties)`)}function m(h){e.forIn("key",n,_=>{e.if((0,Ic._)`${(0,d$.usePattern)(t,h)}.test(${_})`,()=>{let x=c.includes(h);x||t.subschema({keyword:"patternProperties",schemaProp:h,dataProp:_,dataPropType:f$.Type.Str},l),s.opts.unevaluated&&d!==!0?e.assign((0,Ic._)`${d}[${_}]`,!0):!x&&!s.allErrors&&e.if((0,Ic.not)(l),()=>e.break())})})}}};Eh.default=gN});var h$=R(Th=>{"use strict";Object.defineProperty(Th,"__esModule",{value:!0});var _N=Q(),yN={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(t){let{gen:e,schema:r,it:n}=t;if((0,_N.alwaysValidSchema)(n,r)){t.fail();return}let o=e.name("valid");t.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},o),t.failResult(o,()=>t.reset(),()=>t.error())},error:{message:"must NOT be valid"}};Th.default=yN});var g$=R(Ih=>{"use strict";Object.defineProperty(Ih,"__esModule",{value:!0});var vN=yt(),wN={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:vN.validateUnion,error:{message:"must match a schema in anyOf"}};Ih.default=wN});var _$=R(Rh=>{"use strict";Object.defineProperty(Rh,"__esModule",{value:!0});var Rc=B(),bN=Q(),xN={message:"must match exactly one schema in oneOf",params:({params:t})=>(0,Rc._)`{passingSchemas: ${t.passing}}`},$N={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:xN,code(t){let{gen:e,schema:r,parentSchema:n,it:o}=t;if(!Array.isArray(r))throw new Error("ajv implementation error");if(o.opts.discriminator&&n.discriminator)return;let s=r,i=e.let("valid",!1),a=e.let("passing",null),c=e.name("_valid");t.setParams({passing:a}),e.block(u),t.result(i,()=>t.reset(),()=>t.error(!0));function u(){s.forEach((l,d)=>{let p;(0,bN.alwaysValidSchema)(o,l)?e.var(c,!0):p=t.subschema({keyword:"oneOf",schemaProp:d,compositeRule:!0},c),d>0&&e.if((0,Rc._)`${c} && ${i}`).assign(i,!1).assign(a,(0,Rc._)`[${a}, ${d}]`).else(),e.if(c,()=>{e.assign(i,!0),e.assign(a,d),p&&t.mergeEvaluated(p,Rc.Name)})})}}};Rh.default=$N});var y$=R(Ch=>{"use strict";Object.defineProperty(Ch,"__esModule",{value:!0});var SN=Q(),kN={keyword:"allOf",schemaType:"array",code(t){let{gen:e,schema:r,it:n}=t;if(!Array.isArray(r))throw new Error("ajv implementation error");let o=e.name("valid");r.forEach((s,i)=>{if((0,SN.alwaysValidSchema)(n,s))return;let a=t.subschema({keyword:"allOf",schemaProp:i},o);t.ok(o),t.mergeEvaluated(a)})}};Ch.default=kN});var b$=R(Oh=>{"use strict";Object.defineProperty(Oh,"__esModule",{value:!0});var Cc=B(),w$=Q(),zN={message:({params:t})=>(0,Cc.str)`must match "${t.ifClause}" schema`,params:({params:t})=>(0,Cc._)`{failingKeyword: ${t.ifClause}}`},PN={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:zN,code(t){let{gen:e,parentSchema:r,it:n}=t;r.then===void 0&&r.else===void 0&&(0,w$.checkStrictMode)(n,'"if" without "then" and "else" is ignored');let o=v$(n,"then"),s=v$(n,"else");if(!o&&!s)return;let i=e.let("valid",!0),a=e.name("_valid");if(c(),t.reset(),o&&s){let l=e.let("ifClause");t.setParams({ifClause:l}),e.if(a,u("then",l),u("else",l))}else o?e.if(a,u("then")):e.if((0,Cc.not)(a),u("else"));t.pass(i,()=>t.error(!0));function c(){let l=t.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},a);t.mergeEvaluated(l)}function u(l,d){return()=>{let p=t.subschema({keyword:l},a);e.assign(i,a),t.mergeValidEvaluated(p,i),d?e.assign(d,(0,Cc._)`${l}`):t.setParams({ifClause:l})}}}};function v$(t,e){let r=t.schema[e];return r!==void 0&&!(0,w$.alwaysValidSchema)(t,r)}Oh.default=PN});var x$=R(Ah=>{"use strict";Object.defineProperty(Ah,"__esModule",{value:!0});var EN=Q(),TN={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:t,parentSchema:e,it:r}){e.if===void 0&&(0,EN.checkStrictMode)(r,`"${t}" without "if" is ignored`)}};Ah.default=TN});var $$=R(Nh=>{"use strict";Object.defineProperty(Nh,"__esModule",{value:!0});var IN=_h(),RN=Qx(),CN=yh(),ON=t$(),AN=r$(),NN=s$(),MN=a$(),jN=kh(),ZN=l$(),DN=m$(),LN=h$(),qN=g$(),UN=_$(),VN=y$(),FN=b$(),HN=x$();function BN(t=!1){let e=[LN.default,qN.default,UN.default,VN.default,FN.default,HN.default,MN.default,jN.default,NN.default,ZN.default,DN.default];return t?e.push(RN.default,ON.default):e.push(IN.default,CN.default),e.push(AN.default),e}Nh.default=BN});var S$=R(Mh=>{"use strict";Object.defineProperty(Mh,"__esModule",{value:!0});var $e=B(),JN={message:({schemaCode:t})=>(0,$e.str)`must match format "${t}"`,params:({schemaCode:t})=>(0,$e._)`{format: ${t}}`},KN={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:JN,code(t,e){let{gen:r,data:n,$data:o,schema:s,schemaCode:i,it:a}=t,{opts:c,errSchemaPath:u,schemaEnv:l,self:d}=a;if(!c.validateFormats)return;o?p():f();function p(){let m=r.scopeValue("formats",{ref:d.formats,code:c.code.formats}),h=r.const("fDef",(0,$e._)`${m}[${i}]`),_=r.let("fType"),x=r.let("format");r.if((0,$e._)`typeof ${h} == "object" && !(${h} instanceof RegExp)`,()=>r.assign(_,(0,$e._)`${h}.type || "string"`).assign(x,(0,$e._)`${h}.validate`),()=>r.assign(_,(0,$e._)`"string"`).assign(x,h)),t.fail$data((0,$e.or)(b(),z()));function b(){return c.strictSchema===!1?$e.nil:(0,$e._)`${i} && !${x}`}function z(){let q=l.$async?(0,$e._)`(${h}.async ? await ${x}(${n}) : ${x}(${n}))`:(0,$e._)`${x}(${n})`,w=(0,$e._)`(typeof ${x} == "function" ? ${q} : ${x}.test(${n}))`;return(0,$e._)`${x} && ${x} !== true && ${_} === ${e} && !${w}`}}function f(){let m=d.formats[s];if(!m){b();return}if(m===!0)return;let[h,_,x]=z(m);h===e&&t.pass(q());function b(){if(c.strictSchema===!1){d.logger.warn(w());return}throw new Error(w());function w(){return`unknown format "${s}" ignored in schema at path "${u}"`}}function z(w){let $=w instanceof RegExp?(0,$e.regexpCode)(w):c.code.formats?(0,$e._)`${c.code.formats}${(0,$e.getProperty)(s)}`:void 0,Z=r.scopeValue("formats",{key:s,ref:w,code:$});return typeof w=="object"&&!(w instanceof RegExp)?[w.type||"string",w.validate,(0,$e._)`${Z}.validate`]:["string",w,Z]}function q(){if(typeof m=="object"&&!(m instanceof RegExp)&&m.async){if(!l.$async)throw new Error("async format in sync schema");return(0,$e._)`await ${x}(${n})`}return typeof _=="function"?(0,$e._)`${x}(${n})`:(0,$e._)`${x}.test(${n})`}}}};Mh.default=KN});var k$=R(jh=>{"use strict";Object.defineProperty(jh,"__esModule",{value:!0});var GN=S$(),WN=[GN.default];jh.default=WN});var z$=R(vo=>{"use strict";Object.defineProperty(vo,"__esModule",{value:!0});vo.contentVocabulary=vo.metadataVocabulary=void 0;vo.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];vo.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var E$=R(Zh=>{"use strict";Object.defineProperty(Zh,"__esModule",{value:!0});var XN=Nx(),YN=Gx(),QN=$$(),eM=k$(),P$=z$(),tM=[XN.default,YN.default,(0,QN.default)(),eM.default,P$.metadataVocabulary,P$.contentVocabulary];Zh.default=tM});var I$=R(Oc=>{"use strict";Object.defineProperty(Oc,"__esModule",{value:!0});Oc.DiscrError=void 0;var T$;(function(t){t.Tag="tag",t.Mapping="mapping"})(T$||(Oc.DiscrError=T$={}))});var C$=R(Lh=>{"use strict";Object.defineProperty(Lh,"__esModule",{value:!0});var wo=B(),Dh=I$(),R$=mc(),rM=Hs(),nM=Q(),oM={message:({params:{discrError:t,tagName:e}})=>t===Dh.DiscrError.Tag?`tag "${e}" must be string`:`value of tag "${e}" must be in oneOf`,params:({params:{discrError:t,tag:e,tagName:r}})=>(0,wo._)`{error: ${t}, tag: ${r}, tagValue: ${e}}`},sM={keyword:"discriminator",type:"object",schemaType:"object",error:oM,code(t){let{gen:e,data:r,schema:n,parentSchema:o,it:s}=t,{oneOf:i}=o;if(!s.opts.discriminator)throw new Error("discriminator: requires discriminator option");let a=n.propertyName;if(typeof a!="string")throw new Error("discriminator: requires propertyName");if(n.mapping)throw new Error("discriminator: mapping is not supported");if(!i)throw new Error("discriminator: requires oneOf keyword");let c=e.let("valid",!1),u=e.const("tag",(0,wo._)`${r}${(0,wo.getProperty)(a)}`);e.if((0,wo._)`typeof ${u} == "string"`,()=>l(),()=>t.error(!1,{discrError:Dh.DiscrError.Tag,tag:u,tagName:a})),t.ok(c);function l(){let f=p();e.if(!1);for(let m in f)e.elseIf((0,wo._)`${u} === ${m}`),e.assign(c,d(f[m]));e.else(),t.error(!1,{discrError:Dh.DiscrError.Mapping,tag:u,tagName:a}),e.endIf()}function d(f){let m=e.name("valid"),h=t.subschema({keyword:"oneOf",schemaProp:f},m);return t.mergeEvaluated(h,wo.Name),m}function p(){var f;let m={},h=x(o),_=!0;for(let q=0;q<i.length;q++){let w=i[q];if(w?.$ref&&!(0,nM.schemaHasRulesButRef)(w,s.self.RULES)){let Z=w.$ref;if(w=R$.resolveRef.call(s.self,s.schemaEnv.root,s.baseId,Z),w instanceof R$.SchemaEnv&&(w=w.schema),w===void 0)throw new rM.default(s.opts.uriResolver,s.baseId,Z)}let $=(f=w?.properties)===null||f===void 0?void 0:f[a];if(typeof $!="object")throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${a}"`);_=_&&(h||x(w)),b($,q)}if(!_)throw new Error(`discriminator: "${a}" must be required`);return m;function x({required:q}){return Array.isArray(q)&&q.includes(a)}function b(q,w){if(q.const)z(q.const,w);else if(q.enum)for(let $ of q.enum)z($,w);else throw new Error(`discriminator: "properties/${a}" must have "const" or "enum"`)}function z(q,w){if(typeof q!="string"||q in m)throw new Error(`discriminator: "${a}" values must be unique strings`);m[q]=w}}}};Lh.default=sM});var O$=R((aV,iM)=>{iM.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var Uh=R((_e,qh)=>{"use strict";Object.defineProperty(_e,"__esModule",{value:!0});_e.MissingRefError=_e.ValidationError=_e.CodeGen=_e.Name=_e.nil=_e.stringify=_e.str=_e._=_e.KeywordCxt=_e.Ajv=void 0;var aM=Tx(),cM=E$(),uM=C$(),A$=O$(),lM=["/properties"],Ac="http://json-schema.org/draft-07/schema",bo=class extends aM.default{_addVocabularies(){super._addVocabularies(),cM.default.forEach(e=>this.addVocabulary(e)),this.opts.discriminator&&this.addKeyword(uM.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let e=this.opts.$data?this.$dataMetaSchema(A$,lM):A$;this.addMetaSchema(e,Ac,!1),this.refs["http://json-schema.org/schema"]=Ac}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(Ac)?Ac:void 0)}};_e.Ajv=bo;qh.exports=_e=bo;qh.exports.Ajv=bo;Object.defineProperty(_e,"__esModule",{value:!0});_e.default=bo;var dM=Fs();Object.defineProperty(_e,"KeywordCxt",{enumerable:!0,get:function(){return dM.KeywordCxt}});var xo=B();Object.defineProperty(_e,"_",{enumerable:!0,get:function(){return xo._}});Object.defineProperty(_e,"str",{enumerable:!0,get:function(){return xo.str}});Object.defineProperty(_e,"stringify",{enumerable:!0,get:function(){return xo.stringify}});Object.defineProperty(_e,"nil",{enumerable:!0,get:function(){return xo.nil}});Object.defineProperty(_e,"Name",{enumerable:!0,get:function(){return xo.Name}});Object.defineProperty(_e,"CodeGen",{enumerable:!0,get:function(){return xo.CodeGen}});var pM=pc();Object.defineProperty(_e,"ValidationError",{enumerable:!0,get:function(){return pM.default}});var fM=Hs();Object.defineProperty(_e,"MissingRefError",{enumerable:!0,get:function(){return fM.default}})});var U$=R(Ft=>{"use strict";Object.defineProperty(Ft,"__esModule",{value:!0});Ft.formatNames=Ft.fastFormats=Ft.fullFormats=void 0;function Vt(t,e){return{validate:t,compare:e}}Ft.fullFormats={date:Vt(Z$,Bh),time:Vt(Fh(!0),Jh),"date-time":Vt(N$(!0),L$),"iso-time":Vt(Fh(),D$),"iso-date-time":Vt(N$(),q$),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:vM,"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,url:/^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/,ipv6:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,regex:zM,uuid:/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,"json-pointer":/^(?:\/(?:[^~/]|~0|~1)*)*$/,"json-pointer-uri-fragment":/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,"relative-json-pointer":/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,byte:wM,int32:{type:"number",validate:$M},int64:{type:"number",validate:SM},float:{type:"number",validate:j$},double:{type:"number",validate:j$},password:!0,binary:!0};Ft.fastFormats={...Ft.fullFormats,date:Vt(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,Bh),time:Vt(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,Jh),"date-time":Vt(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,L$),"iso-time":Vt(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,D$),"iso-date-time":Vt(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,q$),uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i};Ft.formatNames=Object.keys(Ft.fullFormats);function mM(t){return t%4===0&&(t%100!==0||t%400===0)}var hM=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,gM=[0,31,28,31,30,31,30,31,31,30,31,30,31];function Z$(t){let e=hM.exec(t);if(!e)return!1;let r=+e[1],n=+e[2],o=+e[3];return n>=1&&n<=12&&o>=1&&o<=(n===2&&mM(r)?29:gM[n])}function Bh(t,e){if(t&&e)return t>e?1:t<e?-1:0}var Vh=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function Fh(t){return function(r){let n=Vh.exec(r);if(!n)return!1;let o=+n[1],s=+n[2],i=+n[3],a=n[4],c=n[5]==="-"?-1:1,u=+(n[6]||0),l=+(n[7]||0);if(u>23||l>59||t&&!a)return!1;if(o<=23&&s<=59&&i<60)return!0;let d=s-l*c,p=o-u*c-(d<0?1:0);return(p===23||p===-1)&&(d===59||d===-1)&&i<61}}function Jh(t,e){if(!(t&&e))return;let r=new Date("2020-01-01T"+t).valueOf(),n=new Date("2020-01-01T"+e).valueOf();if(r&&n)return r-n}function D$(t,e){if(!(t&&e))return;let r=Vh.exec(t),n=Vh.exec(e);if(r&&n)return t=r[1]+r[2]+r[3],e=n[1]+n[2]+n[3],t>e?1:t<e?-1:0}var Hh=/t|\s/i;function N$(t){let e=Fh(t);return function(n){let o=n.split(Hh);return o.length===2&&Z$(o[0])&&e(o[1])}}function L$(t,e){if(!(t&&e))return;let r=new Date(t).valueOf(),n=new Date(e).valueOf();if(r&&n)return r-n}function q$(t,e){if(!(t&&e))return;let[r,n]=t.split(Hh),[o,s]=e.split(Hh),i=Bh(r,o);if(i!==void 0)return i||Jh(n,s)}var _M=/\/|:/,yM=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;function vM(t){return _M.test(t)&&yM.test(t)}var M$=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function wM(t){return M$.lastIndex=0,M$.test(t)}var bM=-(2**31),xM=2**31-1;function $M(t){return Number.isInteger(t)&&t<=xM&&t>=bM}function SM(t){return Number.isInteger(t)}function j$(){return!0}var kM=/[^\\]\\Z/;function zM(t){if(kM.test(t))return!1;try{return new RegExp(t),!0}catch{return!1}}});var V$=R($o=>{"use strict";Object.defineProperty($o,"__esModule",{value:!0});$o.formatLimitDefinition=void 0;var PM=Uh(),Ct=B(),Hr=Ct.operators,Nc={formatMaximum:{okStr:"<=",ok:Hr.LTE,fail:Hr.GT},formatMinimum:{okStr:">=",ok:Hr.GTE,fail:Hr.LT},formatExclusiveMaximum:{okStr:"<",ok:Hr.LT,fail:Hr.GTE},formatExclusiveMinimum:{okStr:">",ok:Hr.GT,fail:Hr.LTE}},EM={message:({keyword:t,schemaCode:e})=>(0,Ct.str)`should be ${Nc[t].okStr} ${e}`,params:({keyword:t,schemaCode:e})=>(0,Ct._)`{comparison: ${Nc[t].okStr}, limit: ${e}}`};$o.formatLimitDefinition={keyword:Object.keys(Nc),type:"string",schemaType:"string",$data:!0,error:EM,code(t){let{gen:e,data:r,schemaCode:n,keyword:o,it:s}=t,{opts:i,self:a}=s;if(!i.validateFormats)return;let c=new PM.KeywordCxt(s,a.RULES.all.format.definition,"format");c.$data?u():l();function u(){let p=e.scopeValue("formats",{ref:a.formats,code:i.code.formats}),f=e.const("fmt",(0,Ct._)`${p}[${c.schemaCode}]`);t.fail$data((0,Ct.or)((0,Ct._)`typeof ${f} != "object"`,(0,Ct._)`${f} instanceof RegExp`,(0,Ct._)`typeof ${f}.compare != "function"`,d(f)))}function l(){let p=c.schema,f=a.formats[p];if(!f||f===!0)return;if(typeof f!="object"||f instanceof RegExp||typeof f.compare!="function")throw new Error(`"${o}": format "${p}" does not define "compare" function`);let m=e.scopeValue("formats",{key:p,ref:f,code:i.code.formats?(0,Ct._)`${i.code.formats}${(0,Ct.getProperty)(p)}`:void 0});t.fail$data(d(m))}function d(p){return(0,Ct._)`${p}.compare(${r}, ${n}) ${Nc[o].fail} 0`}},dependencies:["format"]};var TM=t=>(t.addKeyword($o.formatLimitDefinition),t);$o.default=TM});var J$=R((ii,B$)=>{"use strict";Object.defineProperty(ii,"__esModule",{value:!0});var So=U$(),IM=V$(),Kh=B(),F$=new Kh.Name("fullFormats"),RM=new Kh.Name("fastFormats"),Gh=(t,e={keywords:!0})=>{if(Array.isArray(e))return H$(t,e,So.fullFormats,F$),t;let[r,n]=e.mode==="fast"?[So.fastFormats,RM]:[So.fullFormats,F$],o=e.formats||So.formatNames;return H$(t,o,r,n),e.keywords&&(0,IM.default)(t),t};Gh.get=(t,e="full")=>{let n=(e==="fast"?So.fastFormats:So.fullFormats)[t];if(!n)throw new Error(`Unknown format "${t}"`);return n};function H$(t,e,r,n){var o,s;(o=(s=t.opts.code).formats)!==null&&o!==void 0||(s.formats=(0,Kh._)`require("ajv-formats/dist/formats").${n}`);for(let i of e)t.addFormat(i,r[i])}B$.exports=ii=Gh;Object.defineProperty(ii,"__esModule",{value:!0});ii.default=Gh});function CM(){let t=new K$.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return(0,G$.default)(t),t}var K$,G$,ko,Wh=y(()=>{K$=Qc(Uh(),1),G$=Qc(J$(),1);ko=class{constructor(e){this._ajv=e??CM()}getValidator(e){let r="$id"in e&&typeof e.$id=="string"?this._ajv.getSchema(e.$id)??this._ajv.compile(e):this._ajv.compile(e);return n=>r(n)?{valid:!0,data:n,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(r.errors)}}}});var Mc,W$=y(()=>{rt();Mc=class{constructor(e){this._server=e}requestStream(e,r,n){return this._server.requestStream(e,r,n)}createMessageStream(e,r){let n=this._server.getClientCapabilities();if((e.tools||e.toolChoice)&&!n?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(e.messages.length>0){let o=e.messages[e.messages.length-1],s=Array.isArray(o.content)?o.content:[o.content],i=s.some(l=>l.type==="tool_result"),a=e.messages.length>1?e.messages[e.messages.length-2]:void 0,c=a?Array.isArray(a.content)?a.content:[a.content]:[],u=c.some(l=>l.type==="tool_use");if(i){if(s.some(l=>l.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!u)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(u){let l=new Set(c.filter(p=>p.type==="tool_use").map(p=>p.id)),d=new Set(s.filter(p=>p.type==="tool_result").map(p=>p.toolUseId));if(l.size!==d.size||![...l].every(p=>d.has(p)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return this.requestStream({method:"sampling/createMessage",params:e},rn,r)}elicitInputStream(e,r){let n=this._server.getClientCapabilities(),o=e.mode??"form";switch(o){case"url":{if(!n?.elicitation?.url)throw new Error("Client does not support url elicitation.");break}case"form":{if(!n?.elicitation?.form)throw new Error("Client does not support form elicitation.");break}}let s=o==="form"&&e.mode===void 0?{...e,mode:"form"}:e;return this.requestStream({method:"elicitation/create",params:s},Rr,r)}async getTask(e,r){return this._server.getTask({taskId:e},r)}async getTaskResult(e,r,n){return this._server.getTaskResult({taskId:e},r,n)}async listTasks(e,r){return this._server.listTasks(e?{cursor:e}:void 0,r)}async cancelTask(e,r){return this._server.cancelTask({taskId:e},r)}}});function jc(t,e,r){if(!t)throw new Error(`${r} does not support task creation (required for ${e})`);switch(e){case"tools/call":if(!t.tools?.call)throw new Error(`${r} does not support task creation for tools/call (required for ${e})`);break;default:break}}function Zc(t,e,r){if(!t)throw new Error(`${r} does not support task creation (required for ${e})`);switch(e){case"sampling/createMessage":if(!t.sampling?.createMessage)throw new Error(`${r} does not support task creation for sampling/createMessage (required for ${e})`);break;case"elicitation/create":if(!t.elicitation?.create)throw new Error(`${r} does not support task creation for elicitation/create (required for ${e})`);break;default:break}}var Xh=y(()=>{});var zo,Yh=y(()=>{Yf();rt();Wh();so();W$();Xh();zo=class extends io{constructor(e,r){super(r),this._serverInfo=e,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(ms.options.map((n,o)=>[n,o])),this.isMessageIgnored=(n,o)=>{let s=this._loggingLevels.get(o);return s?this.LOG_LEVEL_SEVERITY.get(n)<this.LOG_LEVEL_SEVERITY.get(s):!1},this._capabilities=r?.capabilities??{},this._instructions=r?.instructions,this._jsonSchemaValidator=r?.jsonSchemaValidator??new ko,this.setRequestHandler(ba,n=>this._oninitialize(n)),this.setNotificationHandler(xa,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(Xp,async(n,o)=>{let s=o.sessionId||o.requestInfo?.headers["mcp-session-id"]||void 0,{level:i}=n.params,a=ms.safeParse(i);return a.success&&this._loggingLevels.set(s,a.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new Mc(this)}),this._experimental}registerCapabilities(e){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=Qa(this._capabilities,e)}setRequestHandler(e,r){let o=Dt(e)?.method;if(!o)throw new Error("Schema is missing a method literal");let s=Nr(o);if(typeof s!="string")throw new Error("Schema method literal must be a string");if(s==="tools/call"){let a=async(c,u)=>{let l=Be(Ir,c);if(!l.success){let m=l.error instanceof Error?l.error.message:String(l.error);throw new E(C.InvalidParams,`Invalid tools/call request: ${m}`)}let{params:d}=l.data,p=await Promise.resolve(r(c,u));if(d.task){let m=Be(rr,p);if(!m.success){let h=m.error instanceof Error?m.error.message:String(m.error);throw new E(C.InvalidParams,`Invalid task creation result: ${h}`)}return m.data}let f=Be(Tr,p);if(!f.success){let m=f.error instanceof Error?f.error.message:String(f.error);throw new E(C.InvalidParams,`Invalid tools/call result: ${m}`)}return f.data};return super.setRequestHandler(e,a)}return super.setRequestHandler(e,r)}assertCapabilityForMethod(e){switch(e){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw new Error(`Client does not support sampling (required for ${e})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw new Error(`Client does not support elicitation (required for ${e})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw new Error(`Client does not support listing roots (required for ${e})`);break;case"ping":break}}assertNotificationCapability(e){switch(e){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new Error(`Server does not support notifying about resources (required for ${e})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${e})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${e})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw new Error(`Client does not support URL elicitation (required for ${e})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(e){if(this._capabilities)switch(e){case"completion/complete":if(!this._capabilities.completions)throw new Error(`Server does not support completions (required for ${e})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${e})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new Error(`Server does not support resources (required for ${e})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${e})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw new Error(`Server does not support tasks capability (required for ${e})`);break;case"ping":case"initialize":break}}assertTaskCapability(e){Zc(this._clientCapabilities?.tasks?.requests,e,"Client")}assertTaskHandlerCapability(e){this._capabilities&&jc(this._capabilities.tasks?.requests,e,"Server")}async _oninitialize(e){let r=e.params.protocolVersion;return this._clientCapabilities=e.params.capabilities,this._clientVersion=e.params.clientInfo,{protocolVersion:Pr.includes(r)?r:zr,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},tr)}async createMessage(e,r){if((e.tools||e.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(e.messages.length>0){let n=e.messages[e.messages.length-1],o=Array.isArray(n.content)?n.content:[n.content],s=o.some(u=>u.type==="tool_result"),i=e.messages.length>1?e.messages[e.messages.length-2]:void 0,a=i?Array.isArray(i.content)?i.content:[i.content]:[],c=a.some(u=>u.type==="tool_use");if(s){if(o.some(u=>u.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!c)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(c){let u=new Set(a.filter(d=>d.type==="tool_use").map(d=>d.id)),l=new Set(o.filter(d=>d.type==="tool_result").map(d=>d.toolUseId));if(u.size!==l.size||![...u].every(d=>l.has(d)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return e.tools?this.request({method:"sampling/createMessage",params:e},hs,r):this.request({method:"sampling/createMessage",params:e},rn,r)}async elicitInput(e,r){switch(e.mode??"form"){case"url":{if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support url elicitation.");let o=e;return this.request({method:"elicitation/create",params:o},Rr,r)}case"form":{if(!this._clientCapabilities?.elicitation?.form)throw new Error("Client does not support form elicitation.");let o=e.mode==="form"?e:{...e,mode:"form"},s=await this.request({method:"elicitation/create",params:o},Rr,r);if(s.action==="accept"&&s.content&&o.requestedSchema)try{let a=this._jsonSchemaValidator.getValidator(o.requestedSchema)(s.content);if(!a.valid)throw new E(C.InvalidParams,`Elicitation response content does not match requested schema: ${a.errorMessage}`)}catch(i){throw i instanceof E?i:new E(C.InternalError,`Error validating elicitation response: ${i instanceof Error?i.message:String(i)}`)}return s}}}createElicitationCompletionNotifier(e,r){if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:e}},r)}async listRoots(e,r){return this.request({method:"roots/list",params:e},tf,r)}async sendLoggingMessage(e,r){if(this._capabilities.logging&&!this.isMessageIgnored(e.level,r))return this.notification({method:"notifications/message",params:e})}async sendResourceUpdated(e){return this.notification({method:"notifications/resources/updated",params:e})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}}});function Qh(t){return!!t&&typeof t=="object"&&Y$ in t}function Q$(t){return t[Y$]?.complete}var Y$,X$,eS=y(()=>{Y$=Symbol.for("mcp.completable");(function(t){t.Completable="McpCompletable"})(X$||(X$={}))});var tS=y(()=>{});function AM(t){let e=[];if(t.length===0)return{isValid:!1,warnings:["Tool name cannot be empty"]};if(t.length>128)return{isValid:!1,warnings:[`Tool name exceeds maximum length of 128 characters (current: ${t.length})`]};if(t.includes(" ")&&e.push("Tool name contains spaces, which may cause parsing issues"),t.includes(",")&&e.push("Tool name contains commas, which may cause parsing issues"),(t.startsWith("-")||t.endsWith("-"))&&e.push("Tool name starts or ends with a dash, which may cause parsing issues in some contexts"),(t.startsWith(".")||t.endsWith("."))&&e.push("Tool name starts or ends with a dot, which may cause parsing issues in some contexts"),!OM.test(t)){let r=t.split("").filter(n=>!/[A-Za-z0-9._-]/.test(n)).filter((n,o,s)=>s.indexOf(n)===o);return e.push(`Tool name contains invalid characters: ${r.map(n=>`"${n}"`).join(", ")}`,"Allowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)"),{isValid:!1,warnings:e}}return{isValid:!0,warnings:e}}function NM(t,e){if(e.length>0){console.warn(`Tool name validation warning for "${t}":`);for(let r of e)console.warn(` - ${r}`);console.warn("Tool registration will proceed, but this may cause compatibility issues."),console.warn("Consider updating the tool name to conform to the MCP tool naming standard."),console.warn("See SEP: Specify Format for Tool Names (https://github.com/modelcontextprotocol/modelcontextprotocol/issues/986) for more details.")}}function eg(t){let e=AM(t);return NM(t,e.warnings),e.isValid}var OM,rS=y(()=>{OM=/^[A-Za-z0-9._-]{1,128}$/});var Dc,nS=y(()=>{Dc=class{constructor(e){this._mcpServer=e}registerToolTask(e,r,n){let o={taskSupport:"required",...r.execution};if(o.taskSupport==="forbidden")throw new Error(`Cannot register task-based tool '${e}' with taskSupport 'forbidden'. Use registerTool() instead.`);return this._mcpServer._createRegisteredTool(e,r.title,r.description,r.inputSchema,r.outputSchema,r.annotations,o,r._meta,n)}}});var oS=y(()=>{Tp()});function aS(t){return t!==null&&typeof t=="object"&&"parse"in t&&typeof t.parse=="function"&&"safeParse"in t&&typeof t.safeParse=="function"}function cS(t){return"_def"in t||"_zod"in t||aS(t)}function tg(t){return typeof t!="object"||t===null||cS(t)?!1:Object.keys(t).length===0?!0:Object.values(t).some(aS)}function sS(t){if(t){if(tg(t))return sn(t);if(!cS(t))throw new Error("inputSchema must be a Zod schema or raw shape, received an unrecognized object");return t}}function jM(t){let e=Dt(t);return e?Object.entries(e).map(([r,n])=>{let o=db(n),s=pb(n);return{name:r,description:o,required:!s}}):[]}function Br(t){let r=Dt(t)?.method;if(!r)throw new Error("Schema is missing a method literal");let n=Nr(r);if(typeof n=="string")return n;throw new Error("Schema method literal must be a string")}function iS(t){return{completion:{values:t.slice(0,100),total:t.length,hasMore:t.length>100}}}var Lc,MM,ai,uS=y(()=>{Yh();so();Xf();rt();eS();tS();rS();nS();oS();Lc=class{constructor(e,r){this._registeredResources={},this._registeredResourceTemplates={},this._registeredTools={},this._registeredPrompts={},this._toolHandlersInitialized=!1,this._completionHandlerInitialized=!1,this._resourceHandlersInitialized=!1,this._promptHandlersInitialized=!1,this.server=new zo(e,r)}get experimental(){return this._experimental||(this._experimental={tasks:new Dc(this)}),this._experimental}async connect(e){return await this.server.connect(e)}async close(){await this.server.close()}setToolRequestHandlers(){this._toolHandlersInitialized||(this.server.assertCanSetRequestHandler(Br(Vn)),this.server.assertCanSetRequestHandler(Br(Ir)),this.server.registerCapabilities({tools:{listChanged:!0}}),this.server.setRequestHandler(Vn,()=>({tools:Object.entries(this._registeredTools).filter(([,e])=>e.enabled).map(([e,r])=>{let n={name:e,title:r.title,description:r.description,inputSchema:(()=>{let o=oo(r.inputSchema);return o?Kf(o,{strictUnions:!0,pipeStrategy:"input"}):MM})(),annotations:r.annotations,execution:r.execution,_meta:r._meta};if(r.outputSchema){let o=oo(r.outputSchema);o&&(n.outputSchema=Kf(o,{strictUnions:!0,pipeStrategy:"output"}))}return n})})),this.server.setRequestHandler(Ir,async(e,r)=>{try{let n=this._registeredTools[e.params.name];if(!n)throw new E(C.InvalidParams,`Tool ${e.params.name} not found`);if(!n.enabled)throw new E(C.InvalidParams,`Tool ${e.params.name} disabled`);let o=!!e.params.task,s=n.execution?.taskSupport,i="createTask"in n.handler;if((s==="required"||s==="optional")&&!i)throw new E(C.InternalError,`Tool ${e.params.name} has taskSupport '${s}' but was not registered with registerToolTask`);if(s==="required"&&!o)throw new E(C.MethodNotFound,`Tool ${e.params.name} requires task augmentation (taskSupport: 'required')`);if(s==="optional"&&!o&&i)return await this.handleAutomaticTaskPolling(n,e,r);let a=await this.validateToolInput(n,e.params.arguments,e.params.name),c=await this.executeToolHandler(n,a,r);return o||await this.validateToolOutput(n,c,e.params.name),c}catch(n){if(n instanceof E&&n.code===C.UrlElicitationRequired)throw n;return this.createToolError(n instanceof Error?n.message:String(n))}}),this._toolHandlersInitialized=!0)}createToolError(e){return{content:[{type:"text",text:e}],isError:!0}}async validateToolInput(e,r,n){if(!e.inputSchema)return;let s=oo(e.inputSchema)??e.inputSchema,i=await qa(s,r);if(!i.success){let a="error"in i?i.error:"Unknown error",c=Ua(a);throw new E(C.InvalidParams,`Input validation error: Invalid arguments for tool ${n}: ${c}`)}return i.data}async validateToolOutput(e,r,n){if(!e.outputSchema||!("content"in r)||r.isError)return;if(!r.structuredContent)throw new E(C.InvalidParams,`Output validation error: Tool ${n} has an output schema but no structured content was provided`);let o=oo(e.outputSchema),s=await qa(o,r.structuredContent);if(!s.success){let i="error"in s?s.error:"Unknown error",a=Ua(i);throw new E(C.InvalidParams,`Output validation error: Invalid structured content for tool ${n}: ${a}`)}}async executeToolHandler(e,r,n){let o=e.handler;if("createTask"in o){if(!n.taskStore)throw new Error("No task store provided.");let i={...n,taskStore:n.taskStore};if(e.inputSchema){let a=o;return await Promise.resolve(a.createTask(r,i))}else{let a=o;return await Promise.resolve(a.createTask(i))}}if(e.inputSchema){let i=o;return await Promise.resolve(i(r,n))}else{let i=o;return await Promise.resolve(i(n))}}async handleAutomaticTaskPolling(e,r,n){if(!n.taskStore)throw new Error("No task store provided for task-capable tool.");let o=await this.validateToolInput(e,r.params.arguments,r.params.name),s=e.handler,i={...n,taskStore:n.taskStore},a=o?await Promise.resolve(s.createTask(o,i)):await Promise.resolve(s.createTask(i)),c=a.task.taskId,u=a.task,l=u.pollInterval??5e3;for(;u.status!=="completed"&&u.status!=="failed"&&u.status!=="cancelled";){await new Promise(p=>setTimeout(p,l));let d=await n.taskStore.getTask(c);if(!d)throw new E(C.InternalError,`Task ${c} not found during polling`);u=d}return await n.taskStore.getTaskResult(c)}setCompletionRequestHandler(){this._completionHandlerInitialized||(this.server.assertCanSetRequestHandler(Br(Oa)),this.server.registerCapabilities({completions:{}}),this.server.setRequestHandler(Oa,async e=>{switch(e.params.ref.type){case"ref/prompt":return Hw(e),this.handlePromptCompletion(e,e.params.ref);case"ref/resource":return Bw(e),this.handleResourceCompletion(e,e.params.ref);default:throw new E(C.InvalidParams,`Invalid completion reference: ${e.params.ref}`)}}),this._completionHandlerInitialized=!0)}async handlePromptCompletion(e,r){let n=this._registeredPrompts[r.name];if(!n)throw new E(C.InvalidParams,`Prompt ${r.name} not found`);if(!n.enabled)throw new E(C.InvalidParams,`Prompt ${r.name} disabled`);if(!n.argsSchema)return ai;let s=Dt(n.argsSchema)?.[e.params.argument.name];if(!Qh(s))return ai;let i=Q$(s);if(!i)return ai;let a=await i(e.params.argument.value,e.params.context);return iS(a)}async handleResourceCompletion(e,r){let n=Object.values(this._registeredResourceTemplates).find(i=>i.resourceTemplate.uriTemplate.toString()===r.uri);if(!n){if(this._registeredResources[r.uri])return ai;throw new E(C.InvalidParams,`Resource template ${e.params.ref.uri} not found`)}let o=n.resourceTemplate.completeCallback(e.params.argument.name);if(!o)return ai;let s=await o(e.params.argument.value,e.params.context);return iS(s)}setResourceRequestHandlers(){this._resourceHandlersInitialized||(this.server.assertCanSetRequestHandler(Br(Ra)),this.server.assertCanSetRequestHandler(Br(Ln)),this.server.assertCanSetRequestHandler(Br(Ca)),this.server.registerCapabilities({resources:{listChanged:!0}}),this.server.setRequestHandler(Ra,async(e,r)=>{let n=Object.entries(this._registeredResources).filter(([s,i])=>i.enabled).map(([s,i])=>({uri:s,name:i.name,...i.metadata})),o=[];for(let s of Object.values(this._registeredResourceTemplates)){if(!s.resourceTemplate.listCallback)continue;let i=await s.resourceTemplate.listCallback(r);for(let a of i.resources)o.push({...s.metadata,...a})}return{resources:[...n,...o]}}),this.server.setRequestHandler(Ln,async()=>({resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([r,n])=>({name:r,uriTemplate:n.resourceTemplate.uriTemplate.toString(),...n.metadata}))})),this.server.setRequestHandler(Ca,async(e,r)=>{let n=new URL(e.params.uri),o=this._registeredResources[n.toString()];if(o){if(!o.enabled)throw new E(C.InvalidParams,`Resource ${n} disabled`);return o.readCallback(n,r)}for(let s of Object.values(this._registeredResourceTemplates)){let i=s.resourceTemplate.uriTemplate.match(n.toString());if(i)return s.readCallback(n,i,r)}throw new E(C.InvalidParams,`Resource ${n} not found`)}),this._resourceHandlersInitialized=!0)}setPromptRequestHandlers(){this._promptHandlersInitialized||(this.server.assertCanSetRequestHandler(Br(qn)),this.server.assertCanSetRequestHandler(Br(Un)),this.server.registerCapabilities({prompts:{listChanged:!0}}),this.server.setRequestHandler(qn,()=>({prompts:Object.entries(this._registeredPrompts).filter(([,e])=>e.enabled).map(([e,r])=>({name:e,title:r.title,description:r.description,arguments:r.argsSchema?jM(r.argsSchema):void 0}))})),this.server.setRequestHandler(Un,async(e,r)=>{let n=this._registeredPrompts[e.params.name];if(!n)throw new E(C.InvalidParams,`Prompt ${e.params.name} not found`);if(!n.enabled)throw new E(C.InvalidParams,`Prompt ${e.params.name} disabled`);if(n.argsSchema){let o=oo(n.argsSchema),s=await qa(o,e.params.arguments);if(!s.success){let c="error"in s?s.error:"Unknown error",u=Ua(c);throw new E(C.InvalidParams,`Invalid arguments for prompt ${e.params.name}: ${u}`)}let i=s.data,a=n.callback;return await Promise.resolve(a(i,r))}else{let o=n.callback;return await Promise.resolve(o(r))}}),this._promptHandlersInitialized=!0)}resource(e,r,...n){let o;typeof n[0]=="object"&&(o=n.shift());let s=n[0];if(typeof r=="string"){if(this._registeredResources[r])throw new Error(`Resource ${r} is already registered`);let i=this._createRegisteredResource(e,void 0,r,o,s);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),i}else{if(this._registeredResourceTemplates[e])throw new Error(`Resource template ${e} is already registered`);let i=this._createRegisteredResourceTemplate(e,void 0,r,o,s);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),i}}registerResource(e,r,n,o){if(typeof r=="string"){if(this._registeredResources[r])throw new Error(`Resource ${r} is already registered`);let s=this._createRegisteredResource(e,n.title,r,n,o);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),s}else{if(this._registeredResourceTemplates[e])throw new Error(`Resource template ${e} is already registered`);let s=this._createRegisteredResourceTemplate(e,n.title,r,n,o);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),s}}_createRegisteredResource(e,r,n,o,s){let i={name:e,title:r,metadata:o,readCallback:s,enabled:!0,disable:()=>i.update({enabled:!1}),enable:()=>i.update({enabled:!0}),remove:()=>i.update({uri:null}),update:a=>{typeof a.uri<"u"&&a.uri!==n&&(delete this._registeredResources[n],a.uri&&(this._registeredResources[a.uri]=i)),typeof a.name<"u"&&(i.name=a.name),typeof a.title<"u"&&(i.title=a.title),typeof a.metadata<"u"&&(i.metadata=a.metadata),typeof a.callback<"u"&&(i.readCallback=a.callback),typeof a.enabled<"u"&&(i.enabled=a.enabled),this.sendResourceListChanged()}};return this._registeredResources[n]=i,i}_createRegisteredResourceTemplate(e,r,n,o,s){let i={resourceTemplate:n,title:r,metadata:o,readCallback:s,enabled:!0,disable:()=>i.update({enabled:!1}),enable:()=>i.update({enabled:!0}),remove:()=>i.update({name:null}),update:u=>{typeof u.name<"u"&&u.name!==e&&(delete this._registeredResourceTemplates[e],u.name&&(this._registeredResourceTemplates[u.name]=i)),typeof u.title<"u"&&(i.title=u.title),typeof u.template<"u"&&(i.resourceTemplate=u.template),typeof u.metadata<"u"&&(i.metadata=u.metadata),typeof u.callback<"u"&&(i.readCallback=u.callback),typeof u.enabled<"u"&&(i.enabled=u.enabled),this.sendResourceListChanged()}};this._registeredResourceTemplates[e]=i;let a=n.uriTemplate.variableNames;return Array.isArray(a)&&a.some(u=>!!n.completeCallback(u))&&this.setCompletionRequestHandler(),i}_createRegisteredPrompt(e,r,n,o,s){let i={title:r,description:n,argsSchema:o===void 0?void 0:sn(o),callback:s,enabled:!0,disable:()=>i.update({enabled:!1}),enable:()=>i.update({enabled:!0}),remove:()=>i.update({name:null}),update:a=>{typeof a.name<"u"&&a.name!==e&&(delete this._registeredPrompts[e],a.name&&(this._registeredPrompts[a.name]=i)),typeof a.title<"u"&&(i.title=a.title),typeof a.description<"u"&&(i.description=a.description),typeof a.argsSchema<"u"&&(i.argsSchema=sn(a.argsSchema)),typeof a.callback<"u"&&(i.callback=a.callback),typeof a.enabled<"u"&&(i.enabled=a.enabled),this.sendPromptListChanged()}};return this._registeredPrompts[e]=i,o&&Object.values(o).some(c=>{let u=c instanceof ma?c._def?.innerType:c;return Qh(u)})&&this.setCompletionRequestHandler(),i}_createRegisteredTool(e,r,n,o,s,i,a,c,u){eg(e);let l={title:r,description:n,inputSchema:sS(o),outputSchema:sS(s),annotations:i,execution:a,_meta:c,handler:u,enabled:!0,disable:()=>l.update({enabled:!1}),enable:()=>l.update({enabled:!0}),remove:()=>l.update({name:null}),update:d=>{typeof d.name<"u"&&d.name!==e&&(typeof d.name=="string"&&eg(d.name),delete this._registeredTools[e],d.name&&(this._registeredTools[d.name]=l)),typeof d.title<"u"&&(l.title=d.title),typeof d.description<"u"&&(l.description=d.description),typeof d.paramsSchema<"u"&&(l.inputSchema=sn(d.paramsSchema)),typeof d.outputSchema<"u"&&(l.outputSchema=sn(d.outputSchema)),typeof d.callback<"u"&&(l.handler=d.callback),typeof d.annotations<"u"&&(l.annotations=d.annotations),typeof d._meta<"u"&&(l._meta=d._meta),typeof d.enabled<"u"&&(l.enabled=d.enabled),this.sendToolListChanged()}};return this._registeredTools[e]=l,this.setToolRequestHandlers(),this.sendToolListChanged(),l}tool(e,...r){if(this._registeredTools[e])throw new Error(`Tool ${e} is already registered`);let n,o,s,i;if(typeof r[0]=="string"&&(n=r.shift()),r.length>1){let c=r[0];if(tg(c))o=r.shift(),r.length>1&&typeof r[0]=="object"&&r[0]!==null&&!tg(r[0])&&(i=r.shift());else if(typeof c=="object"&&c!==null){if(Object.values(c).some(u=>typeof u=="object"&&u!==null))throw new Error(`Tool ${e} expected a Zod schema or ToolAnnotations, but received an unrecognized object`);i=r.shift()}}let a=r[0];return this._createRegisteredTool(e,void 0,n,o,s,i,{taskSupport:"forbidden"},void 0,a)}registerTool(e,r,n){if(this._registeredTools[e])throw new Error(`Tool ${e} is already registered`);let{title:o,description:s,inputSchema:i,outputSchema:a,annotations:c,_meta:u}=r;return this._createRegisteredTool(e,o,s,i,a,c,{taskSupport:"forbidden"},u,n)}prompt(e,...r){if(this._registeredPrompts[e])throw new Error(`Prompt ${e} is already registered`);let n;typeof r[0]=="string"&&(n=r.shift());let o;r.length>1&&(o=r.shift());let s=r[0],i=this._createRegisteredPrompt(e,void 0,n,o,s);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),i}registerPrompt(e,r,n){if(this._registeredPrompts[e])throw new Error(`Prompt ${e} is already registered`);let{title:o,description:s,argsSchema:i}=r,a=this._createRegisteredPrompt(e,o,s,i,n);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),a}isConnected(){return this.server.transport!==void 0}async sendLoggingMessage(e,r){return this.server.sendLoggingMessage(e,r)}sendResourceListChanged(){this.isConnected()&&this.server.sendResourceListChanged()}sendToolListChanged(){this.isConnected()&&this.server.sendToolListChanged()}sendPromptListChanged(){this.isConnected()&&this.server.sendPromptListChanged()}},MM={type:"object",properties:{}};ai={completion:{values:[],hasMore:!1}}});var ZM,DM,lS,dS=y(()=>{"use strict";ZM="# batter-pixso-mcp \u4F7F\u7528\u6307\u5357\n\n\u672C\u670D\u52A1\u628A Pixso \u8BBE\u8BA1\u7A3F\u80FD\u529B\u4EE5 MCP \u5DE5\u5177\u66B4\u9732\u7ED9 AI\u3002\u6570\u636E\u94FE\u8DEF\uFF1A\n\n```\nAI \u5BA2\u6237\u7AEF \u2500\u2500MCP(stdio/HTTP)\u2500\u2500\u25B6 batter-pixso-mcp \u2500\u2500HTTP \u957F\u8F6E\u8BE2\u2500\u2500\u25B6 Pixso \u63D2\u4EF6(\u8BBE\u8BA1\u6587\u4EF6\u5185)\n```\n\n## \u524D\u63D0\n\n1. batter-pixso-mcp \u670D\u52A1\u5DF2\u542F\u52A8\uFF08agent \u7684 MCP \u914D\u7F6E\u4F1A\u81EA\u52A8\u62C9\u8D77\uFF09\u3002\n2. Pixso \u5BA2\u6237\u7AEF\u4E2D\u5DF2\u5BFC\u5165\u5E76\u8FD0\u884C **Batter Pixso Bridge** \u63D2\u4EF6\uFF0C\u63D2\u4EF6 UI \u663E\u793A\u300C\u5DF2\u8FDE\u63A5\u672C\u5730\u670D\u52A1\u300D\u3002\n3. \u76EE\u6807\u8BBE\u8BA1\u6587\u4EF6\u5904\u4E8E\u6253\u5F00\u72B6\u6001\u3002\n\n## \u5DE5\u5177\u603B\u89C8\n\n| \u5DE5\u5177 | \u7528\u9014 |\n| --- | --- |\n| `get_selected` | \u8BFB\u753B\u5E03\u5F53\u524D\u9009\u4E2D\u56FE\u5C42\uFF08guid\u3001\u540D\u79F0\u3001\u7C7B\u578B\u3001\u5C3A\u5BF8\uFF09 |\n| `get_node_dsl` | \u751F\u6210\u8282\u70B9\u7684\u5F00\u53D1\u5411\u7CBE\u7B80 DSL\uFF08\u7ED3\u6784 + \u6837\u5F0F + \u8D44\u6E90\u6587\u4EF6\u540D\uFF09\uFF0C\u8BBE\u8BA1\u8F6C\u4EE3\u7801\u7684\u6838\u5FC3\u5165\u53E3 |\n| `get_screenshot` | \u5BFC\u51FA\u8282\u70B9\u622A\u56FE\uFF0C\u8FD4\u56DE\u56FE\u7247\u6587\u4EF6\u540D\uFF08\u672C\u673A\u8DEF\u5F84\u76F4\u8BFB\uFF09\uFF0C\u7528\u4E8E\u89C6\u89C9\u53C2\u7167/\u6821\u9A8C |\n| `export_image` | \u6309 guid \u5BFC\u51FA\u56FE\u7247\u7D20\u6750\uFF08\u5207\u56FE\uFF09\uFF1A\u8282\u70B9\u5E26\u5BFC\u51FA\u6807\u8BB0\u65F6\u6309\u8BBE\u8BA1\u5E08\u8BBE\u7F6E\u9010\u4EFD\u5BFC\u51FA\uFF0C\u65E0\u6807\u8BB0\u6309\u53C2\u6570\u515C\u5E95 |\n| `list_sessions` | \u5217\u51FA\u5168\u90E8\u63D2\u4EF6\u4F1A\u8BDD\uFF08\u591A\u6587\u4EF6\u573A\u666F\u8DEF\u7531\u7528\uFF09 |\n\n## \u94FE\u63A5\u5373\u8F93\u5165\uFF08\u9AD8\u9891\u573A\u666F\uFF09\n\n\u7528\u6237\u63D0\u4F9B Pixso \u94FE\u63A5\u65F6\uFF08\u5B98\u65B9 `pixso.cn` \u6216\u79C1\u6709\u5316\u90E8\u7F72\u5982 `pixso.ky-tech.com.cn`\uFF0C\u4EFB\u610F\u57DF\u540D\uFF09\uFF0C\n\u94FE\u63A5\u672C\u8EAB\u5C31\u662F\u4EFB\u52A1\u8F93\u5165\uFF1A**\u5FC5\u987B**\u63D0\u53D6 `item-id` \u67E5\u8BE2\u53C2\u6570 \u2192 URL \u89E3\u7801 \u2192 \u5F97\u5230\u8282\u70B9 guid\uFF0C\n\u76F4\u63A5\u8C03 `get_node_dsl(guid)` / `get_screenshot(guid)`\uFF0C\u65E0\u9700\u5148\u95EE\u7528\u6237\u9009\u4E2D\u4EC0\u4E48\u3002\n\u4E25\u7981\u628A\u6574\u4E2A URL \u5F53 guid \u4F20\u3002\n\n## \u591A\u6587\u4EF6\u573A\u666F\n\n\u6BCF\u4E2A\u8FD0\u884C\u63D2\u4EF6\u7684\u8BBE\u8BA1\u6587\u4EF6\u662F\u4E00\u4E2A\u4F1A\u8BDD\u3002\u591A\u4E2A\u6587\u4EF6\u540C\u65F6\u6253\u5F00\u65F6\uFF1A\n\u5148\u7528 `list_sessions` \u786E\u8BA4\u76EE\u6807\u6587\u4EF6\uFF0C\u518D\u628A\u8FD4\u56DE\u7684 `sessionId` \u6216 `fileKey`\n\u4F5C\u4E3A\u5176\u4ED6\u5DE5\u5177\u7684 `target` \u53C2\u6570\u4F20\u5165\uFF1B\u4E0D\u4F20 `target` \u65F6\u8DEF\u7531\u5230\u6700\u8FD1\u6D3B\u8DC3\u7684\u6587\u4EF6\u3002\n\n\u8BE6\u7EC6\u5DE5\u4F5C\u6D41\u89C1\u8D44\u6E90 `batter://guides/design-to-code`\u3002\n",DM='# \u8BBE\u8BA1\u8F6C\u4EE3\u7801\u5DE5\u4F5C\u6D41\n\n## \u3010\u786C\u6027\u89C4\u5219 \xB7 \u8FDD\u53CD\u5373\u8FD4\u5DE5\u3011\n\n1. **\u8D44\u6E90\u662F\u672C\u673A\u6587\u4EF6\uFF0C\u6309\u9700\u53D6\u7528**\uFF1ADSL \u4E0E\u622A\u56FE\u7ED3\u679C\u4E2D\u7684 `img` \u5B57\u6BB5\u662F\u4EA7\u7269**\u6587\u4EF6\u540D**\n \uFF08\u5982 `"ab12cd34.svg"`\uFF09\uFF0C\u5B8C\u6574\u8DEF\u5F84 = \u4EA7\u7269\u76EE\u5F55 + \u6587\u4EF6\u540D\uFF08\u76EE\u5F55\u89C1\u5DE5\u5177 description\n \u4E2D\u7684\u5B9E\u9645\u8DEF\u5F84\uFF0C\u901A\u5E38\u4E3A `%TEMP%\\batter-pixso-assets`\uFF09\u3002\u4EA7\u7269\u4E0E\u670D\u52A1\u540C\u673A\uFF0C\u76F4\u63A5\u8BFB\u6587\u4EF6\u7CFB\u7EDF\uFF1A\n - **\u622A\u56FE\u7B49\u89C6\u89C9\u53C2\u7167**\uFF1A\u7528 Read \u5DE5\u5177\u76F4\u63A5\u8BFB\u8BE5\u8DEF\u5F84\u67E5\u770B\uFF0C\u65E0\u9700\u590D\u5236\u3002\n - **\u8981\u5199\u8FDB\u4EA4\u4ED8\u4EE3\u7801\u7684\u56FE\u6807/\u56FE\u7247**\uFF1A**\u5FC5\u987B**\u5148\u590D\u5236\u5230\u9879\u76EE\u8D44\u6E90\u76EE\u5F55\n \uFF08PowerShell `Copy-Item` / \u7C7B Unix `cp`\uFF09\uFF0C\u518D\u4EE5\u672C\u5730\u76F8\u5BF9\u8DEF\u5F84\u5F15\u7528\n \uFF08`<img src>`\u3001CSS `background-image` \u7B49\uFF09\u3002\u4E25\u7981\u76F4\u63A5\u5F15\u7528\u4EA7\u7269\u76EE\u5F55\u7684\u7EDD\u5BF9\u8DEF\u5F84\n \uFF08\u4EA7\u7269\u9ED8\u8BA4 7 \u5929\u540E\u81EA\u52A8\u6E05\u626B\uFF0C\u5F15\u7528\u4F1A\u5931\u6548\uFF09\uFF1B\u4E25\u7981\u79FB\u52A8\u6216\u5220\u9664\u4EA7\u7269\u76EE\u5F55\u4E0B\u7684\u6587\u4EF6\n \uFF08\u591A\u4F1A\u8BDD\u5171\u4EAB\uFF0C\u6E05\u626B\u7531\u670D\u52A1\u7EDF\u4E00\u8D1F\u8D23\uFF09\u3002\n2. **Pixso \u94FE\u63A5\u5FC5\u987B\u63D0\u53D6 `item-id` \u5F53 guid**\uFF1A\u4EFB\u610F\u57DF\u540D\u90FD\u6709\u6548\u2014\u2014\u5B98\u65B9 `pixso.cn` \u6216\u79C1\u6709\u5316\u90E8\u7F72\u5982\n `https://pixso.ky-tech.com.cn/app/design/<\u6587\u4EF6>?item-id=1%3A2`\uFF08\u4E5F\u53EF\u80FD\u662F `/app/editor/` \u8DEF\u5F84\uFF09\u3002\n \u4ECE `item-id` \u67E5\u8BE2\u53C2\u6570\u63D0\u53D6 guid \u5E76 URL \u89E3\u7801\uFF08`1%3A2` \u2192 `"1:2"`\uFF09\u540E\u4F5C\u4E3A `guid` \u4F20\u5165\u3002\n \u4E25\u7981\u628A\u6574\u4E2A URL \u5F53 guid \u4F20\uFF1B\u65E0\u8BBA\u57DF\u540D\u662F\u5426\u8BA4\u8BC6\uFF0C\u90FD\u6309\u6B64\u89C4\u5219\u5904\u7406\u3002\n\n## \u63A8\u8350\u6B65\u9AA4\n\n1. **\u786E\u8BA4\u76EE\u6807\u8282\u70B9**\n - \u7528\u6237\u7ED9\u4E86 Pixso \u94FE\u63A5\uFF1A\u6309\u4E0A\u65B9\u786C\u6027\u89C4\u5219\u7B2C 2 \u6761\u63D0\u53D6 guid\uFF0C\u76F4\u63A5\u7EE7\u7EED\u3002\n - \u7528\u6237\u660E\u786E\u8BF4\u4E86"\u8FD9\u4E2A/\u6211\u9009\u4E2D\u7684"\uFF1A\u8C03 `get_selected` \u62FF guid\uFF0C\u76F4\u63A5\u7EE7\u7EED\u3002\n - \u5176\u4F59\u4F9D\u8D56\u5F53\u524D\u9009\u533A\u7684\u573A\u666F\uFF1A**\u4E25\u7981\u9690\u5F0F\u4F7F\u7528\u9009\u533A guid**\u2014\u2014\u8C03 `get_selected` \u540E\n \u5FC5\u987B\u5148\u628A\u9009\u4E2D\u56FE\u5C42\u540D\u79F0\u62A5\u7ED9\u7528\u6237\u786E\u8BA4\uFF08"\u5F53\u524D\u9009\u4E2D\u7684\u662F\u300CXX\u300D\uFF0C\u786E\u8BA4\u5904\u7406\u5B83\u5417\uFF1F"\uFF09\uFF0C\u786E\u8BA4\u540E\u518D\u7EE7\u7EED\u3002\n `get_node_dsl` / `get_screenshot` \u7684 guid \u7F3A\u7701\u56DE\u9000\u540C\u6837\u9002\u7528\u672C\u89C4\u5219\u3002\n2. **\u53D6\u7ED3\u6784**\uFF1A`get_node_dsl(guid)` \u62FF\u7CBE\u7B80 DSL\u3002\n3. **\u53D6\u89C6\u89C9\u53C2\u7167**\uFF1A`get_screenshot(guid)` \u62FF\u622A\u56FE\u6587\u4EF6\u540D\uFF0C\u6309\u786C\u6027\u89C4\u5219\u7B2C 1 \u6761\u62FC\u8DEF\u5F84\u540E\u7528 Read \u76F4\u8BFB\uFF0C\u4E0E DSL \u5BF9\u7167\u7406\u89E3\u89C6\u89C9\u5C42\u7EA7\u3002\n4. **\u751F\u6210\u4EE3\u7801**\uFF1A\u6309\u4E0B\u6587 DSL \u8BED\u4E49\u6620\u5C04\u5230\u76EE\u6807\u6846\u67B6\u3002\n5. **\u6821\u9A8C**\uFF1A\u751F\u6210\u540E\u518D\u53D6\u4E00\u6B21\u622A\u56FE\u5BF9\u6BD4\uFF0C\u6709\u504F\u5DEE\u5C31\u4FEE\u6B63\u540E\u518D\u6BD4\u4E00\u8F6E\u3002\n\n## DSL \u5B57\u6BB5\u8BED\u4E49\uFF08\u7D27\u51D1\u683C\u5F0F\uFF09\n\nDSL \u662F\u5355\u884C\u7D27\u51D1 JSON\uFF1A\u77ED key\u3001\u4F4D\u7F6E\u6570\u7EC4\u3001\u9ED8\u8BA4\u503C\u7701\u7565\u3002\u56FE\u4F8B\uFF1A\n\n```jsonc\n{\n "id": "297:133032", // \u8282\u70B9 guid\uFF0C\u53EF\u56DE\u4F20\u4E3A guid \u53C2\u6570\u5BF9\u8BE5\u8282\u70B9\u4E0B\u94BB\u8C03\u7528\n "name": "\u65B0\u5BA2", // \u56FE\u5C42\u540D\uFF1B\u81EA\u52A8\u547D\u540D\uFF08"Frame 3123" \u7C7B\uFF09\u5DF2\u7701\u7565\n "type": "FRAME", // \u8282\u70B9\u7C7B\u578B\uFF1BICON/IMAGE \u4E3A\u584C\u7F29\u53F6\u5B50\n "rect": [0, 0, 375, 200], // [x,y,w,h] \u7EDD\u5BF9\u5B9A\u4F4D\uFF1A\u6839\u8282\u70B9\u3001\u7EDD\u5BF9\u5B9A\u4F4D\u5BB9\u5668\u7684\u5B50\u8282\u70B9\n "size": [120, 40], // [w,h]\uFF1Aauto-layout \u5B50\u8282\u70B9\uFF08x/y \u7531\u7236\u7EA7 layout \u63A8\u5BFC\uFF0C\u7701\u7565\uFF09\n "layout": { // auto-layout \u2192 flex \u76F4\u8BD1\uFF08\u4EC5\u5BB9\u5668\u6709\uFF09\n "dir": "row", // row | column\n "gap": 12, // \u4E3A 0 \u65F6\u7701\u7565\n "pad": [16, 16, 16, 16], // [\u4E0A,\u53F3,\u4E0B,\u5DE6]\uFF0C\u5168 0 \u65F6\u7701\u7565\n "align": ["start", "center"], // [\u4E3B\u8F74,\u4EA4\u53C9\u8F74]\uFF1Astart|center|end|space-between|baseline\n "sizing": ["hug", "fixed"] // [\u4E3B\u8F74,\u4EA4\u53C9\u8F74]\uFF1Ahug|fixed|fill\n },\n "text": { // \u4EC5\u6587\u672C\u8282\u70B9\uFF1B\u9ED8\u8BA4\u503C\u7701\u7565\uFF1Aalign=left\u3001lh=normal\u3001weight=Regular\n "content": "...", "size": 14, "font": "PingFang SC",\n "weight": "Medium", "lh": "22px", "align": "center",\n "deco": "underline", "ls": "0.5px", "link": "https://...", // \u6309\u9700\n "segs": [ // \u4EC5\u6DF7\u6392\u6587\u672C\uFF1Abase \u4E3A\u6700\u957F\u6BB5\u6837\u5F0F\uFF0C\u6BCF\u6BB5\u53EA\u5E26\u5DEE\u5F02\u5B57\u6BB5\uFF1B\n { "text": "\u7406\u8D54\u4E2D\u5FC3", "weight": "Bold", "color": "p1" } // \u6570\u7EC4\u987A\u5E8F\u5373\u5B57\u7B26\u504F\u79FB\uFF08start/end \u7701\u7565\uFF09\n ]\n },\n "fills": ["p0", "linear-gradient(90deg, #fff 0%, #000 100%)"], // CSS \u989C\u8272/\u6E10\u53D8\n "stroke": "1px solid #e5e5e5", // \u989C\u8272\u90E8\u5206\u4E5F\u53EF\u80FD\u662F "p0" \u8C03\u8272\u677F\u5F15\u7528\n "radius": 8, // \u6216 [\u4E0A\u5DE6, \u4E0A\u53F3, \u4E0B\u53F3, \u4E0B\u5DE6]\n "shadow": "0px 2px 8px rgba(0,0,0,0.1), inset 0px 1px 0px #fff", // CSS box-shadow\uFF0C\u591A\u9634\u5F71\u9017\u53F7\u62FC\u63A5\n "blur": "4px", // \u56FE\u5C42\u6A21\u7CCA \u2192 CSS filter: blur()\n "bgBlur": "8px", // \u80CC\u666F\u6A21\u7CCA \u2192 CSS backdrop-filter\n "constraints": { "h": "right", "v": "bottom" }, // \u7EDD\u5BF9\u5B9A\u4F4D\u5BB9\u5668\u5185\u7684\u7EA6\u675F\uFF08h: left|center|right|stretch|scale\uFF09\uFF0C\u9ED8\u8BA4 left/top \u4E0D\u8F93\u51FA\n "opacity": 0.9, // \u4E3A 1 \u65F6\u7701\u7565\n "img": "ab12cd34.svg", // \u53F6\u5B50\u8D44\u6E90\u6587\u4EF6\u540D\uFF08\u53D6\u7528\u89C4\u5219\u89C1\u786C\u6027\u89C4\u5219\u7B2C 1 \u6761\uFF09\n "palette": ["#1a73e8", "#f5222d"], // \u8C03\u8272\u677F\uFF08\u4EC5\u6839\u8282\u70B9\uFF09\uFF0C"p0"/"p1" \u4E3A\u4E0B\u6807\u5F15\u7528\n "depth": 6, // \u6574\u68F5\u6811\u5B9E\u9645\u6700\u5927\u6DF1\u5EA6\uFF08\u4EC5\u6839\u8282\u70B9\uFF0C\u603B\u662F\u8F93\u51FA\uFF0C\u4E0E\u622A\u65AD\u65E0\u5173\uFF09\n "more": 3, // \u4EC5\u56E0 maxDepth \u622A\u65AD\u65F6\u51FA\u73B0\uFF1A\u8BE5\u8282\u70B9\u4E0B\u8FD8\u6709 3 \u7EA7\u672A\u5C55\u5F00\uFF0C\u62FF id \u56DE\u4F20 guid \u7EE7\u7EED\u4E0B\u94BB\n "kids": [] // \u5B50\u8282\u70B9\u9012\u5F52\n}\n```\n\n**\u6DF1\u5EA6\u63A7\u5236**\uFF1A`get_node_dsl` \u7684 `maxDepth` \u53C2\u6570\u9650\u5236\u4E0B\u63A2\u5C42\u7EA7\uFF08\u6839\u4E3A\u7B2C 0 \u5C42\uFF0C\u7F3A\u7701\u4E0D\u9650\uFF09\u3002\n\u5927\u6811\u5206\u6BB5\u7B56\u7565\uFF1A\u5148 `maxDepth: 0` \u62FF\u6839\u8282\u70B9\uFF08\u542B `depth` \u603B\u6DF1\u5EA6\uFF09\u9884\u5224\u89C4\u6A21\uFF0C\u518D\u6309\u9700\u5BF9\u5E26 `more` \u6807\u8BB0\u7684\u5B50\u6811\u7528\u5176 `id` \u5355\u72EC\u4E0B\u94BB\u3002\n\n**\u8C03\u8272\u677F\u89C4\u5219**\uFF1A\u540C\u4E00\u989C\u8272\uFF08\u5355\u8272\uFF0C\u542B rgba\uFF09\u51FA\u73B0 \u22652 \u6B21\u65F6\u63D0\u53D6\u5230\u6839\u8282\u70B9 `palette` \u6570\u7EC4\uFF0C\n`fills`\u3001`text.color`\u3001`segs[].color`\u3001`stroke` \u4E2D\u4EE5 `"p0"`\u3001`"p1"` \u5F15\u7528\uFF08\u4E0B\u6807\u5373 palette \u4E0B\u6807\uFF09\u3002\n`shadow`\u3001`gradient` \u7B49\u590D\u5408 CSS \u5B57\u7B26\u4E32\u5185\u90E8\u7684\u989C\u8272\u4FDD\u6301\u5B57\u9762\u503C\uFF0C\u4E0D\u67E5\u8868\u3002\n\n## \u53F6\u5B50\u8282\u70B9\u4E0E\u56FE\u7247\u8D44\u6E90\n\n- `type: "ICON"`\uFF1A\u7EAF\u77E2\u91CF\u5C0F\u8282\u70B9\uFF08icon\uFF09\uFF0C`img` \u4E3A **SVG** \u6587\u4EF6\u540D\u3002\n- `type: "IMAGE"`\uFF1A\u56FE\u7247\u586B\u5145\u8282\u70B9\uFF0C`img` \u4E3A **PNG** \u6587\u4EF6\u540D\u3002\n- \u6587\u4EF6\u540D\u62FC\u8DEF\u5F84\u4E0E\u53D6\u7528\u8981\u6C42\u89C1\u5F00\u5934\u786C\u6027\u89C4\u5219\u7B2C 1 \u6761\u3002\n- \u5BB9\u5668\u81EA\u8EAB\u6709\u5BFC\u51FA\u8BBE\u7F6E\u6807\u8BB0\u65F6\u4E5F\u4F1A\u584C\u7F29\u4E3A\u53F6\u5B50\uFF08\u5C0A\u91CD\u8BBE\u8BA1\u5E08\u7684\u5BFC\u51FA\u610F\u56FE\uFF09\u3002\n- **\u5DF2\u5E26 `img` \u7684\u8282\u70B9\u5728\u53D6 DSL \u65F6\u5DF2\u5B8C\u6210\u5BFC\u51FA**\uFF1A\u76F4\u63A5\u4F7F\u7528\u5176\u6587\u4EF6\u540D\uFF0C\u4E25\u7981\u5BF9\u5B83\u4EEC\u518D\u8C03 `export_image`\uFF08\u91CD\u590D\u5BFC\u51FA\u540C\u4E00\u4EFD\u5185\u5BB9\uFF09\u3002\n `export_image` \u4EC5\u7528\u4E8E DSL \u4E2D\u672A\u584C\u7F29\u7684\u8282\u70B9\uFF08\u4E3B\u52A8\u5207\u56FE\uFF09\u3002\n\n## \u6CE8\u610F\n\n- DSL \u662F**\u6709\u635F\u7CBE\u7B80**\uFF1A\u7701\u7565\u4E86\u5E03\u5C14\u8FD0\u7B97\u8DEF\u5F84\u3001\u8499\u7248\u7B49\u7EAF\u8BBE\u8BA1\u7EC6\u8282\uFF0C\u89C6\u89C9\u590D\u6742\u8282\u70B9\u4EE5\u622A\u56FE\u4E3A\u51C6\u3002\n- \u5BFC\u51FA\u7C7B\u5DE5\u5177\uFF08`get_node_dsl`/`get_screenshot`/`export_image`\uFF09\u5E26 15 \u5206\u949F\u7ED3\u679C\u7F13\u5B58\uFF08\u63D2\u4EF6\u4FA7 TTL\uFF09\uFF1B\n \u8BBE\u8BA1\u7A3F\u521A\u6539\u8FC7\u4F46\u7ED3\u679C\u5BF9\u4E0D\u4E0A\u65F6\uFF0C\u52A0 `cache: "refresh"` \u5F3A\u5236\u5237\u65B0\u3002\n- \u591A\u6587\u4EF6\u573A\u666F\u6240\u6709\u5DE5\u5177\u90FD\u652F\u6301 `target` \u53C2\u6570\uFF08sessionId/fileKey\uFF09\uFF0C\u89C1 `batter://guides/intro`\u3002\n',lS=[{name:"intro",uri:"batter://guides/intro",description:"batter-pixso-mcp \u6982\u89C8\uFF1A\u67B6\u6784\u524D\u63D0\u3001\u5DE5\u5177\u6E05\u5355\u3001\u591A\u6587\u4EF6\u4F1A\u8BDD\u8DEF\u7531\u3002\u4F7F\u7528\u524D\u5FC5\u8BFB\u3002",text:ZM},{name:"design-to-code",uri:"batter://guides/design-to-code",description:"\u8BBE\u8BA1\u8F6C\u4EE3\u7801\uFF08\u6837\u5F0F\u8FD8\u539F/\u8BBE\u8BA1\u8FD8\u539F\uFF09\u5DE5\u4F5C\u6D41\uFF1A\u786C\u6027\u89C4\u5219\uFF08\u8D44\u6E90\u6309\u672C\u673A\u8DEF\u5F84\u53D6\u7528\u3001\u94FE\u63A5\u63D0\u53D6 item-id\uFF09\u3001DSL \u5B57\u6BB5\u8BED\u4E49\u3001\u89C6\u89C9\u6821\u9A8C\u3002",text:DM}]});var LM,qM,rg,pS=y(()=>{"use strict";LM="**\u4E25\u7981\u628A\u4EA7\u7269\u76EE\u5F55\u8DEF\u5F84\u5199\u8FDB\u4EA4\u4ED8\u4EE3\u7801**\uFF1ADSL \u8FD4\u56DE\u7684 `img` \u662F\u4EA7\u7269\u6587\u4EF6\u540D\uFF08\u5B8C\u6574\u8DEF\u5F84 = \u4EA7\u7269\u76EE\u5F55 + \u6587\u4EF6\u540D\uFF0C\u76EE\u5F55\u89C1\u5DE5\u5177 description\uFF09\u3002\u622A\u56FE\u7B49\u89C6\u89C9\u53C2\u7167\u7528 Read \u5DE5\u5177\u76F4\u8BFB\u5B8C\u6574\u8DEF\u5F84\u5373\u53EF\uFF1B\u8981\u5199\u8FDB\u4EA4\u4ED8\u4EE3\u7801\u7684\u56FE\u6807/\u56FE\u7247\u5FC5\u987B\u5148\u590D\u5236\u5230\u9879\u76EE\u8D44\u6E90\u76EE\u5F55\uFF08PowerShell `Copy-Item` / \u7C7B Unix `cp`\uFF09\uFF0C\u518D\u7528\u672C\u5730\u76F8\u5BF9\u8DEF\u5F84\u5F15\u7528\uFF08`<img src>`\u3001`background-image` \u7B49\uFF09\u3002\u4EA7\u7269\u9ED8\u8BA4 7 \u5929\u540E\u81EA\u52A8\u6E05\u626B\uFF1B\u4E25\u7981\u79FB\u52A8\u6216\u5220\u9664\u4EA7\u7269\u76EE\u5F55\u4E0B\u7684\u6587\u4EF6\u3002",qM={name:"design-to-code",description:"\u8BBE\u8BA1\u7A3F\u8F6C\u524D\u7AEF\u4EE3\u7801\uFF08\u6837\u5F0F\u8FD8\u539F/\u8BBE\u8BA1\u8FD8\u539F/UI \u8FD8\u539F\uFF09\uFF1A\u4ECE Pixso \u94FE\u63A5\u6216\u5F53\u524D\u9009\u533A\u53D6 DSL + \u622A\u56FE \u2192 \u751F\u6210 \u2192 \u622A\u56FE\u6821\u9A8C\u3002",arguments:[{name:"url",description:"Pixso \u94FE\u63A5\uFF08\u542B item-id \u67E5\u8BE2\u53C2\u6570\uFF0C\u4EFB\u610F\u57DF\u540D\uFF1A\u5B98\u65B9 pixso.cn \u6216\u79C1\u6709\u5316\u90E8\u7F72\uFF09\u3002\u7559\u7A7A\u5219\u4F7F\u7528\u753B\u5E03\u5F53\u524D\u9009\u4E2D\u56FE\u5C42\u3002",required:!1}],render:t=>{let e=t.url?.trim()?`\u76EE\u6807\u8282\u70B9\u6765\u81EA\u94FE\u63A5\uFF1A${t.url.trim()}\u3002\u5FC5\u987B\u4ECE\u67E5\u8BE2\u53C2\u6570 \`item-id\` \u63D0\u53D6\u8282\u70B9 guid \u5E76 URL \u89E3\u7801\uFF08\`1%3A2\` \u2192 \`"1:2"\`\uFF09\u540E\u4F5C\u4E3A guid \u4F20\u5165\uFF1B\u4E25\u7981\u628A\u6574\u4E2A URL \u5F53 guid \u4F20\u3002\u65E0\u8BBA\u57DF\u540D\u662F\u5426\u8BA4\u8BC6\uFF0C\u90FD\u6309\u6B64\u89C4\u5219\u5904\u7406\u3002`:'\u76EE\u6807\u8282\u70B9\u4E3A\u5F53\u524D\u9009\u533A\uFF1A\u8C03 `get_selected` \u62FF\u9009\u4E2D\u56FE\u5C42\u3002\u7981\u6B62\u9690\u5F0F\u4F7F\u7528\u5176 guid\u2014\u2014\u9664\u975E\u7528\u6237\u660E\u786E\u8BF4\u4E86"\u6211\u9009\u4E2D\u7684/\u5F53\u524D\u9009\u4E2D\u7684"\uFF0C\u5148\u628A\u9009\u4E2D\u56FE\u5C42\u540D\u79F0\u62A5\u7ED9\u7528\u6237\u786E\u8BA4\uFF08"\u5F53\u524D\u9009\u4E2D\u7684\u662F\u300CXX\u300D\uFF0C\u786E\u8BA4\u5904\u7406\u5B83\u5417\uFF1F"\uFF09\uFF0C\u786E\u8BA4\u540E\u518D\u7EE7\u7EED\u3002';return[{role:"user",content:{type:"text",text:["\u628A Pixso \u8BBE\u8BA1\u7A3F\u8FD8\u539F\u4E3A\u524D\u7AEF\u4EE3\u7801\u3002\u52A8\u624B\u524D\u5148\u8BB0\u4F4F\u4E0B\u9762\u7684\u786C\u6027\u89C4\u5219\uFF08\u8FDD\u53CD\u5373\u8FD4\u5DE5\uFF09\uFF1A","","## \u3010\u786C\u6027\u89C4\u5219\u3011","",`1. ${LM}`,"2. **\u5199\u4EE3\u7801\u524D\u5FC5\u987B\u5148\u8BFB**\u8D44\u6E90 `batter://guides/design-to-code`\uFF0C\u4E86\u89E3 DSL \u5B57\u6BB5\u8BED\u4E49\u3001\u8D44\u6E90\u5904\u7406\u7EC6\u8282\u4E0E\u591A\u6587\u4EF6\u8DEF\u7531\uFF08`target` \u53C2\u6570\uFF09\uFF1B\u603B\u89C8\u89C1 `batter://guides/intro`\u3002","","## \u6267\u884C\u6D41\u7A0B","",`1. \u786E\u8BA4\u76EE\u6807\u8282\u70B9\uFF1A${e}`,"2. \u53D6\u6570\u636E\uFF1A\u8C03 `get_node_dsl(guid)` \u62FF\u7ED3\u6784\u4E0E\u6837\u5F0F DSL\uFF08\u7ED3\u6784\u5F88\u5927\u65F6\u5148\u7528 `maxDepth: 0` \u770B\u6839\u8282\u70B9 `depth` \u9884\u5224\u89C4\u6A21\uFF0C\u518D\u5206\u6BB5\u4E0B\u63A2\u2014\u2014\u622A\u65AD\u5904\u8282\u70B9\u5E26 `more` \u6807\u8BB0\uFF0C\u62FF\u5176 `id` \u56DE\u4F20 `guid` \u7EE7\u7EED\u4E0B\u94BB\uFF09\uFF1B\u8C03 `get_screenshot(guid)` \u62FF\u89C6\u89C9\u53C2\u7167\u622A\u56FE\uFF08\u8FD4\u56DE\u6587\u4EF6\u540D\uFF0CRead \u76F4\u8BFB\u672C\u5730\u8DEF\u5F84\uFF09\u3002DSL \u4E2D\u5DF2\u5E26 `img` \u7684\u8282\u70B9\uFF08ICON/IMAGE \u53F6\u5B50\uFF09\u5DF2\u5B8C\u6210\u5BFC\u51FA\uFF0C\u76F4\u63A5\u7528\u5176\u6587\u4EF6\u540D\uFF0C\u4E0D\u8981\u518D\u8C03 `export_image`\u3002","3. \u751F\u6210\u4EE3\u7801\uFF1Aauto-layout \u76F4\u8BD1 flex\uFF1B\u989C\u8272/\u5706\u89D2/\u9634\u5F71\u7528 DSL \u7684 CSS \u503C\uFF1B\u56FE\u7247\u4E00\u5F8B\u7528\u5DF2\u590D\u5236\u5230\u9879\u76EE\u7684\u672C\u5730\u8DEF\u5F84\u3002",'4. \u81EA\u68C0\uFF1A\u518D\u6B21\u8C03 `get_screenshot(guid)`\uFF0C\u4E0E\u4EE3\u7801\u6E32\u67D3\u7ED3\u679C\u5BF9\u6BD4\uFF0C\u6709\u504F\u5DEE\u5C31\u4FEE\u6B63\u540E\u518D\u6BD4\u4E00\u8F6E\uFF08\u5BFC\u51FA\u7C7B\u5DE5\u5177\u5E26 15 \u5206\u949F\u7F13\u5B58\uFF1B\u7ED3\u679C\u7591\u4F3C\u8FC7\u671F\u65F6\u52A0 `cache: "refresh"` \u5F3A\u5236\u5237\u65B0\uFF09\u3002',"","**\u6700\u540E\u91CD\u7533**\uFF1A\u4EA4\u4ED8\u4EE3\u7801\u4E2D\u4E0D\u5141\u8BB8\u51FA\u73B0\u4EA7\u7269\u76EE\u5F55\u7684\u7EDD\u5BF9\u8DEF\u5F84\uFF0C\u5168\u90E8\u56FE\u7247\u5FC5\u987B\u662F\u5DF2\u590D\u5236\u5230\u9879\u76EE\u7684\u672C\u5730\u76F8\u5BF9\u8DEF\u5F84\u3002"].join(`
|
|
557
|
-
`)}}]}},rg=[qM]});var fS,mS=y(()=>{"use strict";To();fS=[{name:"list_sessions",description:"\u3010\u7528\u9014\u3011\u5217\u51FA\u5F53\u524D\u8FDE\u63A5\u5230\u672C\u670D\u52A1\u7684\u6240\u6709 Pixso \u63D2\u4EF6\u4F1A\u8BDD\uFF08sessionId\u3001\u6587\u4EF6\u3001\u9875\u9762\u3001\u5728\u7EBF\u72B6\u6001\uFF09\u3002\u6BCF\u4E2A\u8FD0\u884C\u63D2\u4EF6\u7684\u8BBE\u8BA1\u6587\u4EF6\u5BF9\u5E94\u4E00\u4E2A\u4F1A\u8BDD\u3002\u3010\u547D\u4E2D\u4FE1\u53F7\u3011\u591A\u4E2A Pixso \u6587\u4EF6\u540C\u65F6\u8FD0\u884C\u63D2\u4EF6\u65F6\uFF0C\u5148\u7528\u672C\u5DE5\u5177\u786E\u8BA4\u76EE\u6807\u6587\u4EF6\uFF1B\u53EA\u6709\u4E00\u4E2A\u4F1A\u8BDD\u65F6\u65E0\u9700\u5173\u6CE8\u672C\u5DE5\u5177\u3002\u3010\u8FD4\u56DE\u3011\u4F1A\u8BDD\u5217\u8868 JSON\u3002\u628A sessionId \u6216 fileKey \u4F5C\u4E3A get_selected / get_node_dsl / get_screenshot / export_image \u7684 target \u53C2\u6570\u4F20\u5165\u5373\u8DEF\u7531\u5230\u5BF9\u5E94\u6587\u4EF6\uFF1B\u4E0D\u4F20 target \u65F6\u8DEF\u7531\u5230\u6700\u8FD1\u6D3B\u8DC3\u7684\u6587\u4EF6\u3002\u591A\u6587\u4EF6\u8DEF\u7531\u8BE6\u89C1\u8D44\u6E90 batter://guides/intro\u3002",inputSchema:{type:"object",properties:{}},handler:async()=>{let t=ct.list();return{content:[{type:"text",text:t.length?JSON.stringify(t):"\u5F53\u524D\u6CA1\u6709\u63D2\u4EF6\u8FDE\u63A5\uFF1A\u8BF7\u5728 Pixso \u5BA2\u6237\u7AEF\u4E2D\u8FD0\u884C Batter Pixso Bridge \u63D2\u4EF6\u3002"}]}}}]});var ng,Po,og=y(()=>{"use strict";We();To();ng=class{queues=new Map;pollWaiters=new Map;sseListeners=new Map;pendingById=new Map;seq=0;execute(e,r,n={}){let o=ct.resolve(n.target),s=n.timeoutMs??6e4,{promise:i,resolve:a,reject:c}=Promise.withResolvers(),u={id:`cmd-${++this.seq}`,type:e,args:r},l={command:u,sessionId:o.id,resolve:a,reject:c,dispatched:!1,timer:setTimeout(()=>{this.drop(l),c(new Error(`\u547D\u4EE4 ${u.id} \u8D85\u65F6\uFF1A\u63D2\u4EF6 ${s/1e3}s \u5185\u672A\u8FD4\u56DE\u7ED3\u679C`))},s)};return n.signal?.addEventListener("abort",()=>{this.pendingById.has(u.id)&&(this.drop(l),c(new Error(`\u547D\u4EE4 ${u.id} \u5DF2\u88AB\u8C03\u7528\u65B9\u53D6\u6D88`)))}),this.pendingById.set(u.id,l),this.queueOf(o.id).push(l),this.dispatch(o.id),i}async take(e,r=25e3){let n=this.nextUndispatched(e);if(n)return n.dispatched=!0,ie(`dispatch command ${n.command.id}: ${n.command.type} -> session ${e.slice(0,8)} (poll)`),n.command;let{promise:o,resolve:s}=Promise.withResolvers(),i=this.waitersOf(e);return i.push(s),setTimeout(()=>{let a=i.indexOf(s);a>=0&&(i.splice(a,1),s(null))},r),o}subscribe(e,r){let n=this.sseListeners.get(e);return n||(n=new Set,this.sseListeners.set(e,n)),n.add(r),this.dispatch(e),()=>{n.delete(r),n.size===0&&this.sseListeners.delete(e)}}complete(e,r,n){let o=this.pendingById.get(e);return o?(this.drop(o),r?o.resolve(n):o.reject(n instanceof Error?n:new Error(String(n))),!0):!1}dispatch(e){let r=this.nextUndispatched(e);if(!r)return;let n=this.sseListeners.get(e);if(n&&n.size>0){r.dispatched=!0,ie(`dispatch command ${r.command.id}: ${r.command.type} -> session ${e.slice(0,8)} (sse)`);for(let s of n)s(r.command);return}let o=this.waitersOf(e).shift();o&&(r.dispatched=!0,ie(`dispatch command ${r.command.id}: ${r.command.type} -> session ${e.slice(0,8)} (poll)`),o(r.command))}nextUndispatched(e){return this.queueOf(e).find(r=>!r.dispatched)}queueOf(e){let r=this.queues.get(e);return r||(r=[],this.queues.set(e,r)),r}waitersOf(e){let r=this.pollWaiters.get(e);return r||(r=[],this.pollWaiters.set(e,r)),r}drop(e){clearTimeout(e.timer),this.pendingById.delete(e.command.id);let r=this.queues.get(e.sessionId);r&&this.queues.set(e.sessionId,r.filter(n=>n!==e))}},Po=new ng});function UM(t){return{content:[{type:"text",text:JSON.stringify(t)}]}}function VM(t){return{content:[{type:"text",text:t instanceof Error?t.message:String(t)}],isError:!0}}async function qc(t,e,r){let{target:n,...o}=e;try{return UM(await Po.execute(t,o,{target:n,signal:r}))}catch(s){return VM(s)}}var FM,hS,sg,ig,HM,Uc,ag,cg,gS,_S=y(()=>{"use strict";Si();og();FM='\u2460 \u94FE\u63A5\u8F93\u5165\uFF1A\u5FC5\u987B\u4ECE item-id \u67E5\u8BE2\u53C2\u6570\u63D0\u53D6\u8282\u70B9 guid \u5E76 URL \u89E3\u7801\uFF081%3A2 \u2192 "1:2"\uFF09\uFF0C\u628A\u89E3\u7801\u503C\u4F5C\u4E3A guid \u4F20\u5165\uFF1B\u4E25\u7981\u628A\u6574\u4E2A URL \u5F53 guid \u4F20\u3002\u4EFB\u610F\u57DF\u540D\u90FD\u6709\u6548\uFF1A\u5B98\u65B9 pixso.cn \u6216\u79C1\u6709\u5316\u90E8\u7F72\uFF08\u5982 pixso.ky-tech.com.cn\uFF09\uFF0C\u683C\u5F0F\u5F62\u5982 https://<\u57DF\u540D>/app/design/<\u6587\u4EF6>?item-id=1%3A2\uFF08\u4E5F\u53EF\u80FD\u662F /app/editor/ \u8DEF\u5F84\uFF09\u3002',hS="\u2460 \u94FE\u63A5\u8F93\u5165\uFF1A\u5FC5\u987B\u4ECE item-id \u63D0\u53D6 guid \u5E76 URL \u89E3\u7801\u540E\u4F20\u5165\uFF0C\u4E25\u7981\u4F20\u6574\u4E2A URL\uFF08\u89C4\u5219\u5168\u6587\u89C1 get_node_dsl\uFF09\u3002",sg='\u2461 \u9009\u4E2D\u56DE\u9000\uFF1A\u672A\u4F20 guid \u65F6\u56DE\u9000\u5F53\u524D\u9009\u4E2D\u56FE\u5C42\uFF0C\u4F46\u4E25\u7981\u9690\u5F0F\u4F7F\u7528\u2014\u2014\u9664\u975E\u7528\u6237\u660E\u786E\u8BF4\u4E86"\u6211\u9009\u4E2D\u7684/\u5F53\u524D\u9009\u4E2D\u7684"\uFF0C\u5FC5\u987B\u5148\u8C03 get_selected \u628A\u9009\u4E2D\u56FE\u5C42\u540D\u79F0\u62A5\u7ED9\u7528\u6237\u786E\u8BA4\uFF08\u89C4\u5219\u5168\u6587\u89C1 get_selected\uFF09\u3002',ig=`\u2462 \u8D44\u6E90\uFF1Aimg \u662F\u4EA7\u7269\u6587\u4EF6\u540D\uFF0C\u5B8C\u6574\u672C\u5730\u8DEF\u5F84 = ${$g()}\\<\u6587\u4EF6\u540D>\uFF08\u672C\u673A\u6587\u4EF6\uFF0C\u76F4\u63A5\u8BFB\u6587\u4EF6\u7CFB\u7EDF\uFF09\u3002\u622A\u56FE\u7B49\u89C6\u89C9\u53C2\u7167\u7528 Read \u5DE5\u5177\u76F4\u8BFB\u8BE5\u8DEF\u5F84\uFF0C\u65E0\u9700\u590D\u5236\uFF1B\u8981\u5199\u8FDB\u4EA4\u4ED8\u4EE3\u7801\u7684\u56FE\u6807/\u56FE\u7247\u5FC5\u987B\u5148\u590D\u5236\u5230\u9879\u76EE\u8D44\u6E90\u76EE\u5F55\uFF08PowerShell: Copy-Item "<\u5B8C\u6574\u8DEF\u5F84>" "<\u9879\u76EE\u76EE\u5F55>"\uFF1B\u7C7B Unix: cp "<\u5B8C\u6574\u8DEF\u5F84>" "<\u9879\u76EE\u76EE\u5F55>"\uFF09\uFF0C\u518D\u4EE5\u672C\u5730\u76F8\u5BF9\u8DEF\u5F84\u5F15\u7528\u2014\u2014\u4E25\u7981\u76F4\u63A5\u5F15\u7528\u4EA7\u7269\u76EE\u5F55\u7684\u7EDD\u5BF9\u8DEF\u5F84\uFF08\u4EA7\u7269\u9ED8\u8BA4 7 \u5929\u540E\u81EA\u52A8\u6E05\u626B\uFF0C\u5F15\u7528\u4F1A\u5931\u6548\uFF09\uFF0C\u4E25\u7981\u79FB\u52A8\u6216\u5220\u9664\u4EA7\u7269\u76EE\u5F55\u4E0B\u7684\u6587\u4EF6\uFF08\u591A\u4F1A\u8BDD\u5171\u4EAB\uFF0C\u6E05\u626B\u7531\u670D\u52A1\u7EDF\u4E00\u8D1F\u8D23\uFF09\u3002`,HM='\u5B57\u6BB5\u56FE\u4F8B\uFF1Aid=\u8282\u70B9 guid\uFF08\u53EF\u56DE\u4F20\u4E3A guid \u53C2\u6570\u5BF9\u5B50\u8282\u70B9\u4E0B\u94BB\u8C03\u7528\uFF09\uFF1Bname=\u56FE\u5C42\u540D\uFF08\u81EA\u52A8\u547D\u540D\u5982 "Frame 3123" \u5DF2\u7701\u7565\uFF09\uFF1Btype=\u8282\u70B9\u7C7B\u578B\uFF0CICON/IMAGE \u4E3A\u584C\u7F29\u53F6\u5B50\uFF1Brect=[x,y,w,h] \u7EDD\u5BF9\u5B9A\u4F4D\uFF08\u6839\u8282\u70B9\u4E0E\u7EDD\u5BF9\u5B9A\u4F4D\u5BB9\u5668\u7684\u5B50\u8282\u70B9\uFF09\uFF1Bsize=[w,h]\uFF08auto-layout \u5B50\u8282\u70B9\uFF0Cx/y \u7531\u7236\u7EA7 layout \u63A8\u5BFC\u6545\u7701\u7565\uFF09\uFF1Blayout={dir:row|column, gap, pad:[\u4E0A,\u53F3,\u4E0B,\u5DE6], align:[\u4E3B\u8F74,\u4EA4\u53C9\u8F74](start|center|end|space-between|baseline), sizing:[\u4E3B\u8F74,\u4EA4\u53C9\u8F74](hug|fixed|fill)}\uFF1Bconstraints={h,v} \u7EDD\u5BF9\u5B9A\u4F4D\u5B50\u8282\u70B9\u7EA6\u675F\uFF08\u9ED8\u8BA4 left/top \u7701\u7565\uFF09\uFF1Btext={content, size=\u5B57\u53F7, font=\u5B57\u65CF, weight=\u5B57\u91CD, lh=\u884C\u9AD8, align=\u6C34\u5E73\u5BF9\u9F50, color, deco=underline|line-through, ls=\u5B57\u8DDD px, link, segs=\u6DF7\u6392\u5206\u6BB5}\uFF08segs \u6BCF\u6BB5\u53EA\u5E26\u4E0E base \u4E0D\u540C\u7684\u5B57\u6BB5\uFF0C\u6570\u7EC4\u987A\u5E8F\u5373\u5B57\u7B26\u504F\u79FB\uFF09\uFF1Bimg=\u8D44\u6E90\u6587\u4EF6\u540D\uFF1Bkids=\u5B50\u8282\u70B9\u6570\u7EC4\uFF1Bpalette=\u8C03\u8272\u677F\uFF08\u4EC5\u6839\u8282\u70B9\uFF09\u3002depth=\u6574\u68F5\u6811\u5B9E\u9645\u6700\u5927\u6DF1\u5EA6\uFF08\u4EC5\u6839\u8282\u70B9\uFF0C\u603B\u662F\u8F93\u51FA\uFF0C\u4E0E\u622A\u65AD\u65E0\u5173\uFF09\uFF1Bmore=\u8BE5\u8282\u70B9\u4E0B\u672A\u5C55\u5F00\u7684\u5269\u4F59\u5C42\u7EA7\u6570\uFF08\u4EC5\u56E0 maxDepth \u622A\u65AD\u65F6\u51FA\u73B0\uFF0C\u62FF id \u56DE\u4F20 guid \u53EF\u7EE7\u7EED\u4E0B\u94BB\uFF09\u3002\u7701\u7565\u89C4\u5219\uFF1A\u9ED8\u8BA4\u503C\u4E0D\u8F93\u51FA\uFF08text.align=left\u3001lh=normal\u3001weight=Regular\u3001gap=0\u3001pad \u5168 0\uFF09\u3002\u8C03\u8272\u677F\uFF1A\u51FA\u73B0\u22652 \u6B21\u7684\u5355\u8272\u63D0\u53D6\u5230\u6839\u8282\u70B9 palette \u6570\u7EC4\uFF0Cfills/text.color/stroke \u4E2D\u7684 "p0""p1" \u4E3A palette \u4E0B\u6807\u5F15\u7528\uFF1Bshadow/gradient \u7B49\u590D\u5408 CSS \u4E32\u5185\u7684\u989C\u8272\u4FDD\u6301\u5B57\u9762\u503C\uFF0C\u4E0D\u67E5\u8868\u3002',Uc={type:"string",description:"\u76EE\u6807\u63D2\u4EF6\u4F1A\u8BDD\uFF08sessionId \u6216 fileKey\uFF09\u3002\u4EC5\u5F53\u591A\u4E2A Pixso \u6587\u4EF6\u540C\u65F6\u8FD0\u884C\u63D2\u4EF6\u65F6\u9700\u8981\u6307\u5B9A\uFF1B\u7F3A\u7701\u8DEF\u7531\u5230\u6700\u8FD1\u6D3B\u8DC3\u7684\u6587\u4EF6\u3002\u53EF\u7528 list_sessions \u67E5\u770B\u5F53\u524D\u4F1A\u8BDD\u3002"},ag={type:"string",enum:["first","refresh"],description:"\u7F13\u5B58\u7B56\u7565\uFF1Afirst=\u7F13\u5B58\u4F18\u5148\uFF08\u9ED8\u8BA4\uFF0C15 \u5206\u949F\u5185\u76F8\u540C\u8C03\u7528\u76F4\u63A5\u8FD4\u56DE\u7F13\u5B58\uFF09\uFF1Brefresh=\u4E0D\u8BFB\u7F13\u5B58\u3001\u5F3A\u5236\u91CD\u65B0\u6784\u5EFA/\u5BFC\u51FA\uFF0C\u7ED3\u679C\u4ECD\u5199\u5165\u7F13\u5B58\u3002\u8BBE\u8BA1\u7A3F\u521A\u4FEE\u6539\u8FC7\u4E14\u7ED3\u679C\u5BF9\u4E0D\u4E0A\u65F6\u7528 refresh\u3002"},cg={type:"string",description:'\u8282\u70B9 GUID\uFF08\u5982 "297:133032"\uFF09\u3002\u94FE\u63A5\u8F93\u5165\uFF1A\u4ECE item-id \u67E5\u8BE2\u53C2\u6570\u63D0\u53D6\u5E76 URL \u89E3\u7801\u540E\u4F20\u5165\uFF1B\u7F3A\u7701\u56DE\u9000\u5F53\u524D\u9009\u4E2D\u56FE\u5C42\uFF0C\u4F46\u7981\u6B62\u9690\u5F0F\u4F7F\u7528\u8BE5\u56DE\u9000\uFF08\u9009\u4E2D\u786E\u8BA4\u89C4\u5219\u89C1\u5DE5\u5177 description\uFF09\u3002'},gS=[{name:"get_selected",description:'\u3010\u7528\u9014\u3011\u83B7\u53D6 Pixso \u753B\u5E03\u5F53\u524D\u9009\u4E2D\u7684\u56FE\u5C42\u5217\u8868\uFF08guid\u3001\u540D\u79F0\u3001\u7C7B\u578B\u3001\u5C3A\u5BF8\uFF09\uFF0C\u5B9E\u65F6\u8BFB\u53D6\u3002\u3010\u547D\u4E2D\u4FE1\u53F7\u3011\u7528\u6237\u8BF4"\u8FD9\u4E2A/\u5F53\u524D\u9009\u4E2D\u7684"\u56FE\u5C42\u3001\u7EC4\u4EF6\u6216\u5143\u7D20\u3002\u7528\u6237\u5DF2\u63D0\u4F9B Pixso \u94FE\u63A5\u65F6\u4E0D\u8981\u8C03\u672C\u5DE5\u5177\u2014\u2014\u76F4\u63A5\u4ECE\u94FE\u63A5\u63D0\u53D6 guid\uFF08\u89C4\u5219\u89C1 get_node_dsl\uFF09\u3002\u591A\u6587\u4EF6\u8DEF\u7531\u7528 list_sessions\uFF0C\u4E0D\u7528\u672C\u5DE5\u5177\u3002\u3010\u8FD4\u56DE\u3011\u9009\u4E2D\u56FE\u5C42\u5217\u8868 JSON\u3002\u3010\u786C\u6027\u89C4\u5219\u3011\u4E25\u7981\u9690\u5F0F\u4F7F\u7528\u672C\u5DE5\u5177\u8FD4\u56DE\u7684 guid\uFF1A\u4EC5\u5F53\u7528\u6237\u660E\u786E\u8BF4\u4E86"\u6211\u9009\u4E2D\u7684/\u5F53\u524D\u9009\u4E2D\u7684"\uFF0C\u62FF\u5230 guid \u624D\u53EF\u76F4\u63A5\u7EE7\u7EED\uFF1B\u5176\u4F59\u573A\u666F\u5FC5\u987B\u5148\u628A\u9009\u4E2D\u56FE\u5C42\u540D\u79F0\u62A5\u7ED9\u7528\u6237\u786E\u8BA4\uFF08"\u5F53\u524D\u9009\u4E2D\u7684\u662F\u300CXX\u300D\uFF0C\u786E\u8BA4\u5904\u7406\u5B83\u5417\uFF1F"\uFF09\uFF0C\u786E\u8BA4\u540E\u624D\u80FD\u628A guid \u4F20\u7ED9\u5176\u4ED6\u5DE5\u5177\u2014\u2014\u907F\u514D\u9009\u533A\u7406\u89E3\u9519\u800C\u767D\u505A\u3002',inputSchema:{type:"object",properties:{target:Uc}},handler:(t,e)=>qc("get_selected",t,e?.signal)},{name:"get_node_dsl",description:'\u3010\u7528\u9014\u3011\u751F\u6210\u8282\u70B9\u7684\u5F00\u53D1\u5411\u7D27\u51D1 DSL\uFF08\u7ED3\u6784+\u6837\u5F0F+\u8D44\u6E90\u6587\u4EF6\u540D\uFF09\uFF0C\u8BBE\u8BA1\u8F6C\u4EE3\u7801\u7684\u6838\u5FC3\u5165\u53E3\uFF0C\u4F18\u5148\u7528\u672C\u5DE5\u5177\u7406\u89E3\u8BBE\u8BA1\u7ED3\u6784\u3002\u3010\u547D\u4E2D\u4FE1\u53F7\u3011\u7528\u6237\u8981\u6C42"\u6837\u5F0F\u8FD8\u539F/\u8BBE\u8BA1\u8FD8\u539F/UI \u8FD8\u539F/\u8BBE\u8BA1\u8F6C\u4EE3\u7801/\u6839\u636E\u8BBE\u8BA1\u7A3F\u6216\u8BBE\u8BA1\u56FE\u5199\u9875\u9762\u3001\u7EC4\u4EF6"\uFF0C\u6216\u7ED9\u51FA Pixso \u94FE\u63A5\uFF08\u4EFB\u610F\u57DF\u540D\uFF09\u65F6\uFF0C\u9ED8\u8BA4\u4ECE\u672C\u5DE5\u5177\u5F00\u59CB\u3002\u7ED3\u6784\u590D\u6742\u60F3\u5148\u770B\u6574\u4F53\u6846\u67B6\u65F6\uFF1AmaxDepth \u4F20 0 \u53EA\u62FF\u6839\u8282\u70B9\uFF08depth \u5B57\u6BB5=\u6574\u6811\u5B9E\u9645\u6DF1\u5EA6\uFF09\u9884\u5224\u89C4\u6A21\uFF0C\u518D\u5BF9\u5E26 more \u6807\u8BB0\u7684\u5B50\u6811\u5206\u6BB5\u4E0B\u94BB\u3002\u3010\u8FD4\u56DE\u3011\u5355\u884C\u7D27\u51D1 JSON\u3002'+HM+"\u53F6\u5B50\u584C\u7F29\u89C4\u5219\uFF1Aicon/\u7EAF\u77E2\u91CF\u5C0F\u8282\u70B9\uFF08\u226464px \u65E0\u6587\u672C\uFF09\u5BFC\u51FA SVG\u3001\u56FE\u7247\u586B\u5145\u8282\u70B9\u5BFC\u51FA PNG\u3001\u8BBE\u8BA1\u5E08\u6807\u8BB0\u6309\u5176\u8BBE\u7F6E\u5BFC\u51FA\u3002\u5DF2\u5E26 img \u7684\u8282\u70B9\u5373\u5B8C\u6210\u5BFC\u51FA\uFF0C\u76F4\u63A5\u4F7F\u7528\u5176\u6587\u4EF6\u540D\uFF0C\u65E0\u9700\u518D\u8C03 export_image\u3002DSL \u662F\u6709\u635F\u7CBE\u7B80\uFF08\u7701\u7565\u8499\u7248\u3001\u5E03\u5C14\u8FD0\u7B97\u8DEF\u5F84\u7B49\uFF09\uFF0C\u89C6\u89C9\u590D\u6742\u8282\u70B9\u914D\u5408 get_screenshot \u5BF9\u7167\u3002\u5B57\u6BB5\u8BED\u4E49\u8BE6\u89C1\u8D44\u6E90 batter://guides/design-to-code\u3002\u3010\u786C\u6027\u89C4\u5219\u3011"+FM+sg+ig,inputSchema:{type:"object",properties:{guid:cg,maxDepth:{type:"number",description:"\u4E0B\u63A2\u5B50\u8282\u70B9\u7684\u6700\u5927\u6DF1\u5EA6\uFF08\u6839\u8282\u70B9\u4E3A\u7B2C 0 \u5C42\uFF09\uFF0C\u7F3A\u7701\u4E0D\u9650\u3002\u7B2C N \u5C42\u8282\u70B9\u82E5\u4ECD\u6709\u5B50\u8282\u70B9\u5219\u5E26 more \u5B57\u6BB5\uFF08\u5269\u4F59\u672A\u5C55\u5F00\u5C42\u7EA7\u6570\uFF09\uFF0C\u62FF\u5176 id \u56DE\u4F20 guid \u53EF\u7EE7\u7EED\u4E0B\u94BB\u3002\u4F20 0 \u53EA\u8FD4\u56DE\u6839\u8282\u70B9\uFF1A\u914D\u5408\u6839\u8282\u70B9 depth \u5B57\u6BB5\uFF08\u6574\u6811\u5B9E\u9645\u6DF1\u5EA6\uFF09\u5EC9\u4EF7\u9884\u5224\u89C4\u6A21\uFF0C\u518D\u51B3\u5B9A\u4E0B\u94BB\u7B56\u7565\u3002"},cache:ag,target:Uc}},handler:(t,e)=>qc("get_node_dsl",t,e?.signal)},{name:"export_image",description:'\u3010\u7528\u9014\u3011\u6309 guid \u5BFC\u51FA\u56FE\u7247\u7D20\u6750\uFF08\u5207\u56FE\uFF09\uFF0C\u4EA7\u7269\u4F9B\u4EA4\u4ED8\u4EE3\u7801\u4F7F\u7528\u3002\u6BCF\u6B21\u53EA\u5904\u7406\u4E00\u4E2A\u8282\u70B9\uFF1B\u591A\u8282\u70B9\u573A\u666F\u9010\u4E2A\u8C03\u7528\u3002\u4EC5\u7528\u4E8E DSL \u4E2D\u672A\u584C\u7F29\u7684\u8282\u70B9\u2014\u2014get_node_dsl \u8FD4\u56DE\u91CC\u5DF2\u5E26 img \u5B57\u6BB5\u7684\u8282\u70B9\uFF08ICON/IMAGE \u53F6\u5B50\uFF09\u5728\u53D6 DSL \u65F6\u5DF2\u5B8C\u6210\u5BFC\u51FA\uFF0C\u76F4\u63A5\u4F7F\u7528\u5176 img \u6587\u4EF6\u540D\u5373\u53EF\uFF0C\u4E25\u7981\u5BF9\u8FD9\u7C7B\u8282\u70B9\u91CD\u590D\u8C03\u7528\u672C\u5DE5\u5177\u3002\u3010\u547D\u4E2D\u4FE1\u53F7\u3011\u7528\u6237\u8981"\u5207\u56FE/\u5BFC\u51FA\u56FE\u6807/\u5BFC\u51FA\u56FE\u7247\u7D20\u6750/\u628A\u67D0\u4E2A\u8282\u70B9\u5B58\u6210\u56FE\u7247"\uFF0C\u6216\u8BBE\u8BA1\u8FD8\u539F\u4E2D\u9700\u8981\u63D0\u53D6\u56FE\u7247\u8D44\u6E90\u3002\u8981\u89C6\u89C9\u53C2\u7167/\u8FD8\u539F\u5EA6\u6821\u9A8C\u7528 get_screenshot\u3002\u3010\u8FD4\u56DE\u3011{width, height, exports: [{img, format, scale?, suffix?}]}\uFF1A\u8282\u70B9\u5E26\u8BBE\u8BA1\u5E08\u5BFC\u51FA\u8BBE\u7F6E\uFF08exportSettings\uFF09\u65F6\u6309\u5176\u8BBE\u7F6E\u9010\u4EFD\u5BFC\u51FA\uFF08\u683C\u5F0F/\u500D\u7387/\u540E\u7F00\u5168\u90E8\u751F\u6548\uFF0Cformat/scale \u53C2\u6570\u65E0\u6548\uFF09\uFF1B\u65E0\u6807\u8BB0\u8282\u70B9\u6309\u53C2\u6570\u5BFC\u51FA\u5355\u4EFD\uFF08\u9ED8\u8BA4 PNG\u30012x\uFF09\u3002img \u4E3A\u4EA7\u7269\u6587\u4EF6\u540D\uFF1Bsuffix \u4E3A\u8BBE\u8BA1\u5E08\u8BBE\u7F6E\u7684\u6587\u4EF6\u540D\u540E\u7F00\uFF08\u5982 "@2x"\uFF09\uFF0C\u590D\u5236\u8FDB\u9879\u76EE\u65F6\u5EFA\u8BAE\u4FDD\u7559\u547D\u540D\u3002\u3010\u786C\u6027\u89C4\u5219\u3011'+hS+sg+ig,inputSchema:{type:"object",properties:{guid:cg,format:{type:"string",enum:["PNG","SVG","JPG"],description:"\u65E0\u5BFC\u51FA\u6807\u8BB0\u65F6\u7684\u515C\u5E95\u683C\u5F0F\uFF0C\u9ED8\u8BA4 PNG\u3002\u8282\u70B9\u5E26\u5BFC\u51FA\u6807\u8BB0\u65F6\u6B64\u53C2\u6570\u65E0\u6548\u3002"},scale:{type:"number",description:"\u65E0\u5BFC\u51FA\u6807\u8BB0\u65F6\u7684\u515C\u5E95\u500D\u7387\uFF0C\u9ED8\u8BA4 2\u3002\u8282\u70B9\u5E26\u5BFC\u51FA\u6807\u8BB0\u65F6\u6B64\u53C2\u6570\u65E0\u6548\u3002"},cache:ag,target:Uc}},handler:(t,e)=>qc("export_image",t,e?.signal)},{name:"get_screenshot",description:'\u3010\u7528\u9014\u3011\u5BFC\u51FA\u5355\u4E2A\u8282\u70B9\u7684\u622A\u56FE\uFF0C\u7528\u4E8E\u83B7\u53D6\u8BBE\u8BA1\u7684\u89C6\u89C9\u53C2\u7167\u3002\u6BCF\u6B21\u53EA\u5904\u7406\u4E00\u4E2A\u8282\u70B9\uFF1B\u591A\u8282\u70B9\u573A\u666F\u9010\u4E2A\u8C03\u7528\u3002\u8981\u5207\u56FE/\u5BFC\u51FA\u4EA4\u4ED8\u7D20\u6750\u7528 export_image\u3002\u3010\u547D\u4E2D\u4FE1\u53F7\u3011\u7528\u6237\u8BF4"\u770B\u770B\u8FD9\u4E2A\u8BBE\u8BA1\u7A3F/\u8BBE\u8BA1\u56FE\u957F\u4EC0\u4E48\u6837""\u7ED9\u6211\u622A\u56FE"\uFF0C\u6216\u8FD8\u539F\u7C7B\u4EFB\u52A1\u9700\u8981\u89C6\u89C9\u53C2\u7167\u3001\u8FD8\u539F\u5EA6\u6821\u9A8C\u3001\u6837\u5F0F\u5BF9\u6BD4\u3002\u751F\u6210\u4EE3\u7801\u540E\u53EF\u518D\u6B21\u8C03\u7528\u672C\u5DE5\u5177\u5BF9\u6BD4\u8FD8\u539F\u5EA6\uFF1B\u5EFA\u8BAE\u4E0E get_node_dsl \u914D\u5408\uFF1ADSL \u5B9A\u7ED3\u6784\uFF0C\u622A\u56FE\u6821\u9A8C\u89C6\u89C9\u3002\u3010\u8FD4\u56DE\u3011{img: \u4EA7\u7269\u6587\u4EF6\u540D, width, height, format}\u3002\u3010\u786C\u6027\u89C4\u5219\u3011'+hS+sg+ig,inputSchema:{type:"object",properties:{guid:cg,format:{type:"string",enum:["PNG","SVG","JPG","WEBP"],description:"\u5BFC\u51FA\u683C\u5F0F\uFF0C\u9ED8\u8BA4 PNG\u3002\u622A\u56FE\u7528\u9014\u7528 PNG\uFF1B\u7EAF\u56FE\u5F62\u60F3\u62FF\u77E2\u91CF\u518D\u9009 SVG\u3002"},scale:{type:"number",description:"\u5BFC\u51FA\u500D\u7387\uFF0C\u9ED8\u8BA4 2\u3002"},cache:ag,target:Uc}},handler:(t,e)=>qc("get_screenshot",t,e?.signal)}]});function yS(){let t=new Set,e=[];for(let r of BM)t.has(r.name)||(t.add(r.name),e.push({def:r,tool:{name:r.name,description:r.description,inputSchema:r.inputSchema}}));return e}var BM,vS=y(()=>{"use strict";mS();_S();BM=[...gS,...fS]});function wS(){let t=new Lc({name:"batter-pixso-mcp",version:Ht},{capabilities:{tools:{},resources:{},prompts:{}},instructions:JM});for(let n of lS)t.registerResource(n.name,n.uri,{description:n.description,mimeType:"text/markdown",annotations:{audience:["assistant"],priority:.9}},async o=>({contents:[{uri:o.href,mimeType:"text/markdown",text:n.text}]}));t.server.setRequestHandler(Ln,async()=>({resourceTemplates:[]}));let e=yS(),r={};for(let n of e)r[n.def.name]=n;return t.server.setRequestHandler(Vn,async()=>({tools:e.map(n=>n.tool)})),t.server.setRequestHandler(Ir,async(n,o)=>{let{name:s,arguments:i={}}=n.params,a=r[s];if(!a)throw new Error(`unknown tool: ${s}`);let c=i;a.def.beforeCall&&(c=a.def.beforeCall(c));let u=await a.def.handler(c,{signal:o.signal});return a.def.afterCall&&(u=a.def.afterCall(u)),u}),t.server.setRequestHandler(qn,async()=>({prompts:rg.map(n=>({name:n.name,description:n.description,arguments:n.arguments}))})),t.server.setRequestHandler(Un,async n=>{let o=rg.find(i=>i.name===n.params.name);if(!o)throw new Error(`unknown prompt: ${n.params.name}`);let s=n.params.arguments??{};return{description:o.description,messages:o.render(s)}}),t}var JM,bS=y(()=>{"use strict";uS();rt();We();dS();pS();vS();JM='Pixso \u8BBE\u8BA1\u7A3F\u8F6C\u4EE3\u7801\u670D\u52A1\u3002\u6309\u7528\u6237\u8F93\u5165\u8DEF\u7531\uFF1A\u2460 \u7ED9\u51FA Pixso \u94FE\u63A5\uFF08\u4EFB\u610F\u57DF\u540D\uFF0C\u542B\u79C1\u6709\u5316\u90E8\u7F72\uFF09\u2192 \u4ECE item-id \u63D0\u53D6 guid\uFF08URL \u89E3\u7801\uFF09\uFF0C\u76F4\u63A5\u8C03 get_node_dsl / get_screenshot / export_image\uFF1B\u2461 \u8BF4"\u6211\u9009\u4E2D\u7684/\u5F53\u524D\u9009\u4E2D\u7684"\u2192 get_selected \u62FF guid \u7EE7\u7EED\uFF1B\u5176\u4ED6\u4F9D\u8D56\u9009\u533A\u7684\u573A\u666F\u5148 get_selected \u518D\u5411\u7528\u6237\u62A5\u540D\u79F0\u786E\u8BA4\uFF1B\u2462 "\u6837\u5F0F\u8FD8\u539F/\u8BBE\u8BA1\u8FD8\u539F/UI \u8FD8\u539F/\u8BBE\u8BA1\u8F6C\u4EE3\u7801/\u6839\u636E\u8BBE\u8BA1\u7A3F\u5199\u9875\u9762\u6216\u7EC4\u4EF6"\u2192 get_node_dsl \u53D6\u7ED3\u6784\u6837\u5F0F + get_screenshot \u53D6\u89C6\u89C9\u53C2\u7167\uFF1B\u2463 "\u5207\u56FE/\u5BFC\u51FA\u56FE\u6807\u6216\u56FE\u7247\u7D20\u6750"\u2192 export_image\uFF08\u5C0A\u91CD\u8BBE\u8BA1\u5E08\u5BFC\u51FA\u6807\u8BB0\uFF1BDSL \u91CC\u5DF2\u5E26 img \u7684\u8282\u70B9\u76F4\u63A5\u7528\u5176\u6587\u4EF6\u540D\uFF0C\u4E0D\u8981\u91CD\u590D\u5BFC\u51FA\uFF09\uFF1B\u2464 \u7ED3\u6784\u590D\u6742/\u5148\u770B\u6574\u4F53\u6846\u67B6 \u2192 get_node_dsl \u7528 maxDepth \u5206\u6BB5\u4E0B\u63A2\uFF08\u622A\u65AD\u5904 more \u6807\u8BB0\uFF0C\u6309 id \u4E0B\u94BB\uFF09\uFF1B\u2465 \u751F\u6210\u540E\u5BF9\u6BD4\u8FD8\u539F\u5EA6 \u2192 get_screenshot \u6821\u9A8C\u5FAA\u73AF\uFF1B\u2466 \u591A\u4E2A Pixso \u6587\u4EF6\u540C\u65F6\u6253\u5F00 \u2192 list_sessions + target \u53C2\u6570\u8DEF\u7531\u3002\u8D44\u6E90\u53D6\u7528\u4E0E\u5B57\u6BB5\u8BED\u4E49\u7B49\u786C\u6027\u89C4\u5219\u89C1\u8D44\u6E90 batter://guides/intro \u4E0E batter://guides/design-to-code\uFF1B\u8BBE\u8BA1\u7A3F\u521A\u6539\u8FC7\u4F46\u7ED3\u679C\u5BF9\u4E0D\u4E0A\u65F6\uFF0C\u7ED9\u5BFC\u51FA\u7C7B\u5DE5\u5177\u52A0 cache:"refresh" \u5F3A\u5236\u5237\u65B0\u3002'});import{randomUUID as KM}from"node:crypto";async function xS(t,e,r){if(r.pathname!=="/mcp")return!1;let n=t.headers["mcp-session-id"];if(t.method==="POST"){let s=await Kr(t),i;try{i=s.length?JSON.parse(s.toString("utf8")):void 0}catch{return se(e,400,{jsonrpc:"2.0",error:{code:-32700,message:"Parse error"},id:null}),!0}let a=n?ci.get(n):void 0;if(!a)if(!n&&cs(i)){let c=new Na({sessionIdGenerator:()=>KM(),onsessioninitialized:u=>{ci.set(u,c),ie(`MCP HTTP session initialized: ${u.slice(0,8)} (total ${ci.size})`)}});c.onclose=()=>{c.sessionId&&ci.delete(c.sessionId)},await wS().connect(c),a=c}else return se(e,400,{jsonrpc:"2.0",error:{code:-32e3,message:"Bad Request: missing or unknown MCP session"},id:null}),!0;return await a.handleRequest(t,e,i),!0}let o=n?ci.get(n):void 0;return o?(await o.handleRequest(t,e),!0):(se(e,400,{error:"missing or unknown MCP session"}),!0)}var ci,$S=y(()=>{"use strict";Kw();rt();We();bS();Io();ci=new Map});async function SS(t,e,r){let n=r.pathname,o=r.searchParams.get("session");if(t.method==="POST"&&n==="/sessions/register"){try{let i=await Kr(t),a=i.length?JSON.parse(i.toString("utf8")):{};se(e,201,ct.register(a))}catch{se(e,400,{error:"invalid json"})}return!0}if(t.method==="POST"&&n==="/context"){if(!o)return se(e,400,{error:"missing session"}),!0;try{let i=await Kr(t),a=i.length?JSON.parse(i.toString("utf8")):{};if(!ct.updateContext(o,a))return se(e,404,{error:"unknown_session"}),!0;se(e,200,{ok:!0})}catch{se(e,400,{error:"invalid json"})}return!0}if(t.method==="GET"&&n==="/commands/stream"){if(!o||!ct.setConnected(o,!0))return se(e,404,{error:"unknown_session"}),!0;e.writeHead(200,{"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-store",Connection:"keep-alive"}),e.write(`: connected
|
|
556
|
+
deps: ${r}}`};var iN={keyword:"dependencies",type:"object",schemaType:"object",error:Ut.error,code(t){let[e,r]=aN(t);n$(t,e),o$(t,r)}};function aN({schema:t}){let e={},r={};for(let n in t){if(n==="__proto__")continue;let o=Array.isArray(t[n])?e:r;o[n]=t[n]}return[e,r]}function n$(t,e=t.schema){let{gen:r,data:n,it:o}=t;if(Object.keys(e).length===0)return;let s=r.let("missing");for(let i in e){let a=e[i];if(a.length===0)continue;let c=(0,si.propertyInData)(r,n,i,o.opts.ownProperties);t.setParams({property:i,depsCount:a.length,deps:a.join(", ")}),o.allErrors?r.if(c,()=>{for(let u of a)(0,si.checkReportMissingProp)(t,u)}):(r.if((0,xh._)`${c} && (${(0,si.checkMissingProp)(t,a,s)})`),(0,si.reportMissingProp)(t,s),r.else())}}Ut.validatePropertyDeps=n$;function o$(t,e=t.schema){let{gen:r,data:n,keyword:o,it:s}=t,i=r.name("valid");for(let a in e)(0,sN.alwaysValidSchema)(s,e[a])||(r.if((0,si.propertyInData)(r,n,a,s.opts.ownProperties),()=>{let c=t.subschema({keyword:o,schemaProp:a},i);t.mergeValidEvaluated(c,i)},()=>r.var(i,!0)),t.ok(i))}Ut.validateSchemaDeps=o$;Ut.default=iN});var a$=R($h=>{"use strict";Object.defineProperty($h,"__esModule",{value:!0});var i$=B(),cN=Q(),uN={message:"property name must be valid",params:({params:t})=>(0,i$._)`{propertyName: ${t.propertyName}}`},lN={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:uN,code(t){let{gen:e,schema:r,data:n,it:o}=t;if((0,cN.alwaysValidSchema)(o,r))return;let s=e.name("valid");e.forIn("key",n,i=>{t.setParams({propertyName:i}),t.subschema({keyword:"propertyNames",data:i,dataTypes:["string"],propertyName:i,compositeRule:!0},s),e.if((0,i$.not)(s),()=>{t.error(!0),o.allErrors||e.break()})}),t.ok(s)}};$h.default=lN});var kh=R(Sh=>{"use strict";Object.defineProperty(Sh,"__esModule",{value:!0});var Ec=yt(),Rt=B(),dN=ur(),Tc=Q(),pN={message:"must NOT have additional properties",params:({params:t})=>(0,Rt._)`{additionalProperty: ${t.additionalProperty}}`},fN={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:pN,code(t){let{gen:e,schema:r,parentSchema:n,data:o,errsCount:s,it:i}=t;if(!s)throw new Error("ajv implementation error");let{allErrors:a,opts:c}=i;if(i.props=!0,c.removeAdditional!=="all"&&(0,Tc.alwaysValidSchema)(i,r))return;let u=(0,Ec.allSchemaProperties)(n.properties),l=(0,Ec.allSchemaProperties)(n.patternProperties);d(),t.ok((0,Rt._)`${s} === ${dN.default.errors}`);function d(){e.forIn("key",o,_=>{!u.length&&!l.length?m(_):e.if(p(_),()=>m(_))})}function p(_){let x;if(u.length>8){let b=(0,Tc.schemaRefOrVal)(i,n.properties,"properties");x=(0,Ec.isOwnProperty)(e,b,_)}else u.length?x=(0,Rt.or)(...u.map(b=>(0,Rt._)`${_} === ${b}`)):x=Rt.nil;return l.length&&(x=(0,Rt.or)(x,...l.map(b=>(0,Rt._)`${(0,Ec.usePattern)(t,b)}.test(${_})`))),(0,Rt.not)(x)}function f(_){e.code((0,Rt._)`delete ${o}[${_}]`)}function m(_){if(c.removeAdditional==="all"||c.removeAdditional&&r===!1){f(_);return}if(r===!1){t.setParams({additionalProperty:_}),t.error(),a||e.break();return}if(typeof r=="object"&&!(0,Tc.alwaysValidSchema)(i,r)){let x=e.name("valid");c.removeAdditional==="failing"?(h(_,x,!1),e.if((0,Rt.not)(x),()=>{t.reset(),f(_)})):(h(_,x),a||e.if((0,Rt.not)(x),()=>e.break()))}}function h(_,x,b){let z={keyword:"additionalProperties",dataProp:_,dataPropType:Tc.Type.Str};b===!1&&Object.assign(z,{compositeRule:!0,createErrors:!1,allErrors:!1}),t.subschema(z,x)}}};Sh.default=fN});var l$=R(Ph=>{"use strict";Object.defineProperty(Ph,"__esModule",{value:!0});var mN=Fs(),c$=yt(),zh=Q(),u$=kh(),hN={keyword:"properties",type:"object",schemaType:"object",code(t){let{gen:e,schema:r,parentSchema:n,data:o,it:s}=t;s.opts.removeAdditional==="all"&&n.additionalProperties===void 0&&u$.default.code(new mN.KeywordCxt(s,u$.default,"additionalProperties"));let i=(0,c$.allSchemaProperties)(r);for(let d of i)s.definedProperties.add(d);s.opts.unevaluated&&i.length&&s.props!==!0&&(s.props=zh.mergeEvaluated.props(e,(0,zh.toHash)(i),s.props));let a=i.filter(d=>!(0,zh.alwaysValidSchema)(s,r[d]));if(a.length===0)return;let c=e.name("valid");for(let d of a)u(d)?l(d):(e.if((0,c$.propertyInData)(e,o,d,s.opts.ownProperties)),l(d),s.allErrors||e.else().var(c,!0),e.endIf()),t.it.definedProperties.add(d),t.ok(c);function u(d){return s.opts.useDefaults&&!s.compositeRule&&r[d].default!==void 0}function l(d){t.subschema({keyword:"properties",schemaProp:d,dataProp:d},c)}}};Ph.default=hN});var m$=R(Eh=>{"use strict";Object.defineProperty(Eh,"__esModule",{value:!0});var d$=yt(),Ic=B(),p$=Q(),f$=Q(),gN={keyword:"patternProperties",type:"object",schemaType:"object",code(t){let{gen:e,schema:r,data:n,parentSchema:o,it:s}=t,{opts:i}=s,a=(0,d$.allSchemaProperties)(r),c=a.filter(h=>(0,p$.alwaysValidSchema)(s,r[h]));if(a.length===0||c.length===a.length&&(!s.opts.unevaluated||s.props===!0))return;let u=i.strictSchema&&!i.allowMatchingProperties&&o.properties,l=e.name("valid");s.props!==!0&&!(s.props instanceof Ic.Name)&&(s.props=(0,f$.evaluatedPropsToName)(e,s.props));let{props:d}=s;p();function p(){for(let h of a)u&&f(h),s.allErrors?m(h):(e.var(l,!0),m(h),e.if(l))}function f(h){for(let _ in u)new RegExp(h).test(_)&&(0,p$.checkStrictMode)(s,`property ${_} matches pattern ${h} (use allowMatchingProperties)`)}function m(h){e.forIn("key",n,_=>{e.if((0,Ic._)`${(0,d$.usePattern)(t,h)}.test(${_})`,()=>{let x=c.includes(h);x||t.subschema({keyword:"patternProperties",schemaProp:h,dataProp:_,dataPropType:f$.Type.Str},l),s.opts.unevaluated&&d!==!0?e.assign((0,Ic._)`${d}[${_}]`,!0):!x&&!s.allErrors&&e.if((0,Ic.not)(l),()=>e.break())})})}}};Eh.default=gN});var h$=R(Th=>{"use strict";Object.defineProperty(Th,"__esModule",{value:!0});var _N=Q(),yN={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(t){let{gen:e,schema:r,it:n}=t;if((0,_N.alwaysValidSchema)(n,r)){t.fail();return}let o=e.name("valid");t.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},o),t.failResult(o,()=>t.reset(),()=>t.error())},error:{message:"must NOT be valid"}};Th.default=yN});var g$=R(Ih=>{"use strict";Object.defineProperty(Ih,"__esModule",{value:!0});var vN=yt(),wN={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:vN.validateUnion,error:{message:"must match a schema in anyOf"}};Ih.default=wN});var _$=R(Rh=>{"use strict";Object.defineProperty(Rh,"__esModule",{value:!0});var Rc=B(),bN=Q(),xN={message:"must match exactly one schema in oneOf",params:({params:t})=>(0,Rc._)`{passingSchemas: ${t.passing}}`},$N={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:xN,code(t){let{gen:e,schema:r,parentSchema:n,it:o}=t;if(!Array.isArray(r))throw new Error("ajv implementation error");if(o.opts.discriminator&&n.discriminator)return;let s=r,i=e.let("valid",!1),a=e.let("passing",null),c=e.name("_valid");t.setParams({passing:a}),e.block(u),t.result(i,()=>t.reset(),()=>t.error(!0));function u(){s.forEach((l,d)=>{let p;(0,bN.alwaysValidSchema)(o,l)?e.var(c,!0):p=t.subschema({keyword:"oneOf",schemaProp:d,compositeRule:!0},c),d>0&&e.if((0,Rc._)`${c} && ${i}`).assign(i,!1).assign(a,(0,Rc._)`[${a}, ${d}]`).else(),e.if(c,()=>{e.assign(i,!0),e.assign(a,d),p&&t.mergeEvaluated(p,Rc.Name)})})}}};Rh.default=$N});var y$=R(Ch=>{"use strict";Object.defineProperty(Ch,"__esModule",{value:!0});var SN=Q(),kN={keyword:"allOf",schemaType:"array",code(t){let{gen:e,schema:r,it:n}=t;if(!Array.isArray(r))throw new Error("ajv implementation error");let o=e.name("valid");r.forEach((s,i)=>{if((0,SN.alwaysValidSchema)(n,s))return;let a=t.subschema({keyword:"allOf",schemaProp:i},o);t.ok(o),t.mergeEvaluated(a)})}};Ch.default=kN});var b$=R(Oh=>{"use strict";Object.defineProperty(Oh,"__esModule",{value:!0});var Cc=B(),w$=Q(),zN={message:({params:t})=>(0,Cc.str)`must match "${t.ifClause}" schema`,params:({params:t})=>(0,Cc._)`{failingKeyword: ${t.ifClause}}`},PN={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:zN,code(t){let{gen:e,parentSchema:r,it:n}=t;r.then===void 0&&r.else===void 0&&(0,w$.checkStrictMode)(n,'"if" without "then" and "else" is ignored');let o=v$(n,"then"),s=v$(n,"else");if(!o&&!s)return;let i=e.let("valid",!0),a=e.name("_valid");if(c(),t.reset(),o&&s){let l=e.let("ifClause");t.setParams({ifClause:l}),e.if(a,u("then",l),u("else",l))}else o?e.if(a,u("then")):e.if((0,Cc.not)(a),u("else"));t.pass(i,()=>t.error(!0));function c(){let l=t.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},a);t.mergeEvaluated(l)}function u(l,d){return()=>{let p=t.subschema({keyword:l},a);e.assign(i,a),t.mergeValidEvaluated(p,i),d?e.assign(d,(0,Cc._)`${l}`):t.setParams({ifClause:l})}}}};function v$(t,e){let r=t.schema[e];return r!==void 0&&!(0,w$.alwaysValidSchema)(t,r)}Oh.default=PN});var x$=R(Ah=>{"use strict";Object.defineProperty(Ah,"__esModule",{value:!0});var EN=Q(),TN={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:t,parentSchema:e,it:r}){e.if===void 0&&(0,EN.checkStrictMode)(r,`"${t}" without "if" is ignored`)}};Ah.default=TN});var $$=R(Nh=>{"use strict";Object.defineProperty(Nh,"__esModule",{value:!0});var IN=_h(),RN=Qx(),CN=yh(),ON=t$(),AN=r$(),NN=s$(),MN=a$(),jN=kh(),ZN=l$(),DN=m$(),LN=h$(),qN=g$(),UN=_$(),VN=y$(),FN=b$(),HN=x$();function BN(t=!1){let e=[LN.default,qN.default,UN.default,VN.default,FN.default,HN.default,MN.default,jN.default,NN.default,ZN.default,DN.default];return t?e.push(RN.default,ON.default):e.push(IN.default,CN.default),e.push(AN.default),e}Nh.default=BN});var S$=R(Mh=>{"use strict";Object.defineProperty(Mh,"__esModule",{value:!0});var $e=B(),JN={message:({schemaCode:t})=>(0,$e.str)`must match format "${t}"`,params:({schemaCode:t})=>(0,$e._)`{format: ${t}}`},KN={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:JN,code(t,e){let{gen:r,data:n,$data:o,schema:s,schemaCode:i,it:a}=t,{opts:c,errSchemaPath:u,schemaEnv:l,self:d}=a;if(!c.validateFormats)return;o?p():f();function p(){let m=r.scopeValue("formats",{ref:d.formats,code:c.code.formats}),h=r.const("fDef",(0,$e._)`${m}[${i}]`),_=r.let("fType"),x=r.let("format");r.if((0,$e._)`typeof ${h} == "object" && !(${h} instanceof RegExp)`,()=>r.assign(_,(0,$e._)`${h}.type || "string"`).assign(x,(0,$e._)`${h}.validate`),()=>r.assign(_,(0,$e._)`"string"`).assign(x,h)),t.fail$data((0,$e.or)(b(),z()));function b(){return c.strictSchema===!1?$e.nil:(0,$e._)`${i} && !${x}`}function z(){let q=l.$async?(0,$e._)`(${h}.async ? await ${x}(${n}) : ${x}(${n}))`:(0,$e._)`${x}(${n})`,w=(0,$e._)`(typeof ${x} == "function" ? ${q} : ${x}.test(${n}))`;return(0,$e._)`${x} && ${x} !== true && ${_} === ${e} && !${w}`}}function f(){let m=d.formats[s];if(!m){b();return}if(m===!0)return;let[h,_,x]=z(m);h===e&&t.pass(q());function b(){if(c.strictSchema===!1){d.logger.warn(w());return}throw new Error(w());function w(){return`unknown format "${s}" ignored in schema at path "${u}"`}}function z(w){let $=w instanceof RegExp?(0,$e.regexpCode)(w):c.code.formats?(0,$e._)`${c.code.formats}${(0,$e.getProperty)(s)}`:void 0,Z=r.scopeValue("formats",{key:s,ref:w,code:$});return typeof w=="object"&&!(w instanceof RegExp)?[w.type||"string",w.validate,(0,$e._)`${Z}.validate`]:["string",w,Z]}function q(){if(typeof m=="object"&&!(m instanceof RegExp)&&m.async){if(!l.$async)throw new Error("async format in sync schema");return(0,$e._)`await ${x}(${n})`}return typeof _=="function"?(0,$e._)`${x}(${n})`:(0,$e._)`${x}.test(${n})`}}}};Mh.default=KN});var k$=R(jh=>{"use strict";Object.defineProperty(jh,"__esModule",{value:!0});var GN=S$(),WN=[GN.default];jh.default=WN});var z$=R(vo=>{"use strict";Object.defineProperty(vo,"__esModule",{value:!0});vo.contentVocabulary=vo.metadataVocabulary=void 0;vo.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];vo.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var E$=R(Zh=>{"use strict";Object.defineProperty(Zh,"__esModule",{value:!0});var XN=Nx(),YN=Gx(),QN=$$(),eM=k$(),P$=z$(),tM=[XN.default,YN.default,(0,QN.default)(),eM.default,P$.metadataVocabulary,P$.contentVocabulary];Zh.default=tM});var I$=R(Oc=>{"use strict";Object.defineProperty(Oc,"__esModule",{value:!0});Oc.DiscrError=void 0;var T$;(function(t){t.Tag="tag",t.Mapping="mapping"})(T$||(Oc.DiscrError=T$={}))});var C$=R(Lh=>{"use strict";Object.defineProperty(Lh,"__esModule",{value:!0});var wo=B(),Dh=I$(),R$=mc(),rM=Hs(),nM=Q(),oM={message:({params:{discrError:t,tagName:e}})=>t===Dh.DiscrError.Tag?`tag "${e}" must be string`:`value of tag "${e}" must be in oneOf`,params:({params:{discrError:t,tag:e,tagName:r}})=>(0,wo._)`{error: ${t}, tag: ${r}, tagValue: ${e}}`},sM={keyword:"discriminator",type:"object",schemaType:"object",error:oM,code(t){let{gen:e,data:r,schema:n,parentSchema:o,it:s}=t,{oneOf:i}=o;if(!s.opts.discriminator)throw new Error("discriminator: requires discriminator option");let a=n.propertyName;if(typeof a!="string")throw new Error("discriminator: requires propertyName");if(n.mapping)throw new Error("discriminator: mapping is not supported");if(!i)throw new Error("discriminator: requires oneOf keyword");let c=e.let("valid",!1),u=e.const("tag",(0,wo._)`${r}${(0,wo.getProperty)(a)}`);e.if((0,wo._)`typeof ${u} == "string"`,()=>l(),()=>t.error(!1,{discrError:Dh.DiscrError.Tag,tag:u,tagName:a})),t.ok(c);function l(){let f=p();e.if(!1);for(let m in f)e.elseIf((0,wo._)`${u} === ${m}`),e.assign(c,d(f[m]));e.else(),t.error(!1,{discrError:Dh.DiscrError.Mapping,tag:u,tagName:a}),e.endIf()}function d(f){let m=e.name("valid"),h=t.subschema({keyword:"oneOf",schemaProp:f},m);return t.mergeEvaluated(h,wo.Name),m}function p(){var f;let m={},h=x(o),_=!0;for(let q=0;q<i.length;q++){let w=i[q];if(w?.$ref&&!(0,nM.schemaHasRulesButRef)(w,s.self.RULES)){let Z=w.$ref;if(w=R$.resolveRef.call(s.self,s.schemaEnv.root,s.baseId,Z),w instanceof R$.SchemaEnv&&(w=w.schema),w===void 0)throw new rM.default(s.opts.uriResolver,s.baseId,Z)}let $=(f=w?.properties)===null||f===void 0?void 0:f[a];if(typeof $!="object")throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${a}"`);_=_&&(h||x(w)),b($,q)}if(!_)throw new Error(`discriminator: "${a}" must be required`);return m;function x({required:q}){return Array.isArray(q)&&q.includes(a)}function b(q,w){if(q.const)z(q.const,w);else if(q.enum)for(let $ of q.enum)z($,w);else throw new Error(`discriminator: "properties/${a}" must have "const" or "enum"`)}function z(q,w){if(typeof q!="string"||q in m)throw new Error(`discriminator: "${a}" values must be unique strings`);m[q]=w}}}};Lh.default=sM});var O$=R((aV,iM)=>{iM.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var Uh=R((_e,qh)=>{"use strict";Object.defineProperty(_e,"__esModule",{value:!0});_e.MissingRefError=_e.ValidationError=_e.CodeGen=_e.Name=_e.nil=_e.stringify=_e.str=_e._=_e.KeywordCxt=_e.Ajv=void 0;var aM=Tx(),cM=E$(),uM=C$(),A$=O$(),lM=["/properties"],Ac="http://json-schema.org/draft-07/schema",bo=class extends aM.default{_addVocabularies(){super._addVocabularies(),cM.default.forEach(e=>this.addVocabulary(e)),this.opts.discriminator&&this.addKeyword(uM.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let e=this.opts.$data?this.$dataMetaSchema(A$,lM):A$;this.addMetaSchema(e,Ac,!1),this.refs["http://json-schema.org/schema"]=Ac}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(Ac)?Ac:void 0)}};_e.Ajv=bo;qh.exports=_e=bo;qh.exports.Ajv=bo;Object.defineProperty(_e,"__esModule",{value:!0});_e.default=bo;var dM=Fs();Object.defineProperty(_e,"KeywordCxt",{enumerable:!0,get:function(){return dM.KeywordCxt}});var xo=B();Object.defineProperty(_e,"_",{enumerable:!0,get:function(){return xo._}});Object.defineProperty(_e,"str",{enumerable:!0,get:function(){return xo.str}});Object.defineProperty(_e,"stringify",{enumerable:!0,get:function(){return xo.stringify}});Object.defineProperty(_e,"nil",{enumerable:!0,get:function(){return xo.nil}});Object.defineProperty(_e,"Name",{enumerable:!0,get:function(){return xo.Name}});Object.defineProperty(_e,"CodeGen",{enumerable:!0,get:function(){return xo.CodeGen}});var pM=pc();Object.defineProperty(_e,"ValidationError",{enumerable:!0,get:function(){return pM.default}});var fM=Hs();Object.defineProperty(_e,"MissingRefError",{enumerable:!0,get:function(){return fM.default}})});var U$=R(Ft=>{"use strict";Object.defineProperty(Ft,"__esModule",{value:!0});Ft.formatNames=Ft.fastFormats=Ft.fullFormats=void 0;function Vt(t,e){return{validate:t,compare:e}}Ft.fullFormats={date:Vt(Z$,Bh),time:Vt(Fh(!0),Jh),"date-time":Vt(N$(!0),L$),"iso-time":Vt(Fh(),D$),"iso-date-time":Vt(N$(),q$),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:vM,"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,url:/^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/,ipv6:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,regex:zM,uuid:/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,"json-pointer":/^(?:\/(?:[^~/]|~0|~1)*)*$/,"json-pointer-uri-fragment":/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,"relative-json-pointer":/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,byte:wM,int32:{type:"number",validate:$M},int64:{type:"number",validate:SM},float:{type:"number",validate:j$},double:{type:"number",validate:j$},password:!0,binary:!0};Ft.fastFormats={...Ft.fullFormats,date:Vt(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,Bh),time:Vt(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,Jh),"date-time":Vt(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,L$),"iso-time":Vt(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,D$),"iso-date-time":Vt(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,q$),uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i};Ft.formatNames=Object.keys(Ft.fullFormats);function mM(t){return t%4===0&&(t%100!==0||t%400===0)}var hM=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,gM=[0,31,28,31,30,31,30,31,31,30,31,30,31];function Z$(t){let e=hM.exec(t);if(!e)return!1;let r=+e[1],n=+e[2],o=+e[3];return n>=1&&n<=12&&o>=1&&o<=(n===2&&mM(r)?29:gM[n])}function Bh(t,e){if(t&&e)return t>e?1:t<e?-1:0}var Vh=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function Fh(t){return function(r){let n=Vh.exec(r);if(!n)return!1;let o=+n[1],s=+n[2],i=+n[3],a=n[4],c=n[5]==="-"?-1:1,u=+(n[6]||0),l=+(n[7]||0);if(u>23||l>59||t&&!a)return!1;if(o<=23&&s<=59&&i<60)return!0;let d=s-l*c,p=o-u*c-(d<0?1:0);return(p===23||p===-1)&&(d===59||d===-1)&&i<61}}function Jh(t,e){if(!(t&&e))return;let r=new Date("2020-01-01T"+t).valueOf(),n=new Date("2020-01-01T"+e).valueOf();if(r&&n)return r-n}function D$(t,e){if(!(t&&e))return;let r=Vh.exec(t),n=Vh.exec(e);if(r&&n)return t=r[1]+r[2]+r[3],e=n[1]+n[2]+n[3],t>e?1:t<e?-1:0}var Hh=/t|\s/i;function N$(t){let e=Fh(t);return function(n){let o=n.split(Hh);return o.length===2&&Z$(o[0])&&e(o[1])}}function L$(t,e){if(!(t&&e))return;let r=new Date(t).valueOf(),n=new Date(e).valueOf();if(r&&n)return r-n}function q$(t,e){if(!(t&&e))return;let[r,n]=t.split(Hh),[o,s]=e.split(Hh),i=Bh(r,o);if(i!==void 0)return i||Jh(n,s)}var _M=/\/|:/,yM=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;function vM(t){return _M.test(t)&&yM.test(t)}var M$=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function wM(t){return M$.lastIndex=0,M$.test(t)}var bM=-(2**31),xM=2**31-1;function $M(t){return Number.isInteger(t)&&t<=xM&&t>=bM}function SM(t){return Number.isInteger(t)}function j$(){return!0}var kM=/[^\\]\\Z/;function zM(t){if(kM.test(t))return!1;try{return new RegExp(t),!0}catch{return!1}}});var V$=R($o=>{"use strict";Object.defineProperty($o,"__esModule",{value:!0});$o.formatLimitDefinition=void 0;var PM=Uh(),Ct=B(),Hr=Ct.operators,Nc={formatMaximum:{okStr:"<=",ok:Hr.LTE,fail:Hr.GT},formatMinimum:{okStr:">=",ok:Hr.GTE,fail:Hr.LT},formatExclusiveMaximum:{okStr:"<",ok:Hr.LT,fail:Hr.GTE},formatExclusiveMinimum:{okStr:">",ok:Hr.GT,fail:Hr.LTE}},EM={message:({keyword:t,schemaCode:e})=>(0,Ct.str)`should be ${Nc[t].okStr} ${e}`,params:({keyword:t,schemaCode:e})=>(0,Ct._)`{comparison: ${Nc[t].okStr}, limit: ${e}}`};$o.formatLimitDefinition={keyword:Object.keys(Nc),type:"string",schemaType:"string",$data:!0,error:EM,code(t){let{gen:e,data:r,schemaCode:n,keyword:o,it:s}=t,{opts:i,self:a}=s;if(!i.validateFormats)return;let c=new PM.KeywordCxt(s,a.RULES.all.format.definition,"format");c.$data?u():l();function u(){let p=e.scopeValue("formats",{ref:a.formats,code:i.code.formats}),f=e.const("fmt",(0,Ct._)`${p}[${c.schemaCode}]`);t.fail$data((0,Ct.or)((0,Ct._)`typeof ${f} != "object"`,(0,Ct._)`${f} instanceof RegExp`,(0,Ct._)`typeof ${f}.compare != "function"`,d(f)))}function l(){let p=c.schema,f=a.formats[p];if(!f||f===!0)return;if(typeof f!="object"||f instanceof RegExp||typeof f.compare!="function")throw new Error(`"${o}": format "${p}" does not define "compare" function`);let m=e.scopeValue("formats",{key:p,ref:f,code:i.code.formats?(0,Ct._)`${i.code.formats}${(0,Ct.getProperty)(p)}`:void 0});t.fail$data(d(m))}function d(p){return(0,Ct._)`${p}.compare(${r}, ${n}) ${Nc[o].fail} 0`}},dependencies:["format"]};var TM=t=>(t.addKeyword($o.formatLimitDefinition),t);$o.default=TM});var J$=R((ii,B$)=>{"use strict";Object.defineProperty(ii,"__esModule",{value:!0});var So=U$(),IM=V$(),Kh=B(),F$=new Kh.Name("fullFormats"),RM=new Kh.Name("fastFormats"),Gh=(t,e={keywords:!0})=>{if(Array.isArray(e))return H$(t,e,So.fullFormats,F$),t;let[r,n]=e.mode==="fast"?[So.fastFormats,RM]:[So.fullFormats,F$],o=e.formats||So.formatNames;return H$(t,o,r,n),e.keywords&&(0,IM.default)(t),t};Gh.get=(t,e="full")=>{let n=(e==="fast"?So.fastFormats:So.fullFormats)[t];if(!n)throw new Error(`Unknown format "${t}"`);return n};function H$(t,e,r,n){var o,s;(o=(s=t.opts.code).formats)!==null&&o!==void 0||(s.formats=(0,Kh._)`require("ajv-formats/dist/formats").${n}`);for(let i of e)t.addFormat(i,r[i])}B$.exports=ii=Gh;Object.defineProperty(ii,"__esModule",{value:!0});ii.default=Gh});function CM(){let t=new K$.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return(0,G$.default)(t),t}var K$,G$,ko,Wh=y(()=>{K$=Qc(Uh(),1),G$=Qc(J$(),1);ko=class{constructor(e){this._ajv=e??CM()}getValidator(e){let r="$id"in e&&typeof e.$id=="string"?this._ajv.getSchema(e.$id)??this._ajv.compile(e):this._ajv.compile(e);return n=>r(n)?{valid:!0,data:n,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(r.errors)}}}});var Mc,W$=y(()=>{rt();Mc=class{constructor(e){this._server=e}requestStream(e,r,n){return this._server.requestStream(e,r,n)}createMessageStream(e,r){let n=this._server.getClientCapabilities();if((e.tools||e.toolChoice)&&!n?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(e.messages.length>0){let o=e.messages[e.messages.length-1],s=Array.isArray(o.content)?o.content:[o.content],i=s.some(l=>l.type==="tool_result"),a=e.messages.length>1?e.messages[e.messages.length-2]:void 0,c=a?Array.isArray(a.content)?a.content:[a.content]:[],u=c.some(l=>l.type==="tool_use");if(i){if(s.some(l=>l.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!u)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(u){let l=new Set(c.filter(p=>p.type==="tool_use").map(p=>p.id)),d=new Set(s.filter(p=>p.type==="tool_result").map(p=>p.toolUseId));if(l.size!==d.size||![...l].every(p=>d.has(p)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return this.requestStream({method:"sampling/createMessage",params:e},rn,r)}elicitInputStream(e,r){let n=this._server.getClientCapabilities(),o=e.mode??"form";switch(o){case"url":{if(!n?.elicitation?.url)throw new Error("Client does not support url elicitation.");break}case"form":{if(!n?.elicitation?.form)throw new Error("Client does not support form elicitation.");break}}let s=o==="form"&&e.mode===void 0?{...e,mode:"form"}:e;return this.requestStream({method:"elicitation/create",params:s},Rr,r)}async getTask(e,r){return this._server.getTask({taskId:e},r)}async getTaskResult(e,r,n){return this._server.getTaskResult({taskId:e},r,n)}async listTasks(e,r){return this._server.listTasks(e?{cursor:e}:void 0,r)}async cancelTask(e,r){return this._server.cancelTask({taskId:e},r)}}});function jc(t,e,r){if(!t)throw new Error(`${r} does not support task creation (required for ${e})`);switch(e){case"tools/call":if(!t.tools?.call)throw new Error(`${r} does not support task creation for tools/call (required for ${e})`);break;default:break}}function Zc(t,e,r){if(!t)throw new Error(`${r} does not support task creation (required for ${e})`);switch(e){case"sampling/createMessage":if(!t.sampling?.createMessage)throw new Error(`${r} does not support task creation for sampling/createMessage (required for ${e})`);break;case"elicitation/create":if(!t.elicitation?.create)throw new Error(`${r} does not support task creation for elicitation/create (required for ${e})`);break;default:break}}var Xh=y(()=>{});var zo,Yh=y(()=>{Yf();rt();Wh();so();W$();Xh();zo=class extends io{constructor(e,r){super(r),this._serverInfo=e,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(ms.options.map((n,o)=>[n,o])),this.isMessageIgnored=(n,o)=>{let s=this._loggingLevels.get(o);return s?this.LOG_LEVEL_SEVERITY.get(n)<this.LOG_LEVEL_SEVERITY.get(s):!1},this._capabilities=r?.capabilities??{},this._instructions=r?.instructions,this._jsonSchemaValidator=r?.jsonSchemaValidator??new ko,this.setRequestHandler(ba,n=>this._oninitialize(n)),this.setNotificationHandler(xa,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(Xp,async(n,o)=>{let s=o.sessionId||o.requestInfo?.headers["mcp-session-id"]||void 0,{level:i}=n.params,a=ms.safeParse(i);return a.success&&this._loggingLevels.set(s,a.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new Mc(this)}),this._experimental}registerCapabilities(e){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=Qa(this._capabilities,e)}setRequestHandler(e,r){let o=Dt(e)?.method;if(!o)throw new Error("Schema is missing a method literal");let s=Nr(o);if(typeof s!="string")throw new Error("Schema method literal must be a string");if(s==="tools/call"){let a=async(c,u)=>{let l=Be(Ir,c);if(!l.success){let m=l.error instanceof Error?l.error.message:String(l.error);throw new E(C.InvalidParams,`Invalid tools/call request: ${m}`)}let{params:d}=l.data,p=await Promise.resolve(r(c,u));if(d.task){let m=Be(rr,p);if(!m.success){let h=m.error instanceof Error?m.error.message:String(m.error);throw new E(C.InvalidParams,`Invalid task creation result: ${h}`)}return m.data}let f=Be(Tr,p);if(!f.success){let m=f.error instanceof Error?f.error.message:String(f.error);throw new E(C.InvalidParams,`Invalid tools/call result: ${m}`)}return f.data};return super.setRequestHandler(e,a)}return super.setRequestHandler(e,r)}assertCapabilityForMethod(e){switch(e){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw new Error(`Client does not support sampling (required for ${e})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw new Error(`Client does not support elicitation (required for ${e})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw new Error(`Client does not support listing roots (required for ${e})`);break;case"ping":break}}assertNotificationCapability(e){switch(e){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new Error(`Server does not support notifying about resources (required for ${e})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${e})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${e})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw new Error(`Client does not support URL elicitation (required for ${e})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(e){if(this._capabilities)switch(e){case"completion/complete":if(!this._capabilities.completions)throw new Error(`Server does not support completions (required for ${e})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${e})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new Error(`Server does not support resources (required for ${e})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${e})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw new Error(`Server does not support tasks capability (required for ${e})`);break;case"ping":case"initialize":break}}assertTaskCapability(e){Zc(this._clientCapabilities?.tasks?.requests,e,"Client")}assertTaskHandlerCapability(e){this._capabilities&&jc(this._capabilities.tasks?.requests,e,"Server")}async _oninitialize(e){let r=e.params.protocolVersion;return this._clientCapabilities=e.params.capabilities,this._clientVersion=e.params.clientInfo,{protocolVersion:Pr.includes(r)?r:zr,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},tr)}async createMessage(e,r){if((e.tools||e.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(e.messages.length>0){let n=e.messages[e.messages.length-1],o=Array.isArray(n.content)?n.content:[n.content],s=o.some(u=>u.type==="tool_result"),i=e.messages.length>1?e.messages[e.messages.length-2]:void 0,a=i?Array.isArray(i.content)?i.content:[i.content]:[],c=a.some(u=>u.type==="tool_use");if(s){if(o.some(u=>u.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!c)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(c){let u=new Set(a.filter(d=>d.type==="tool_use").map(d=>d.id)),l=new Set(o.filter(d=>d.type==="tool_result").map(d=>d.toolUseId));if(u.size!==l.size||![...u].every(d=>l.has(d)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return e.tools?this.request({method:"sampling/createMessage",params:e},hs,r):this.request({method:"sampling/createMessage",params:e},rn,r)}async elicitInput(e,r){switch(e.mode??"form"){case"url":{if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support url elicitation.");let o=e;return this.request({method:"elicitation/create",params:o},Rr,r)}case"form":{if(!this._clientCapabilities?.elicitation?.form)throw new Error("Client does not support form elicitation.");let o=e.mode==="form"?e:{...e,mode:"form"},s=await this.request({method:"elicitation/create",params:o},Rr,r);if(s.action==="accept"&&s.content&&o.requestedSchema)try{let a=this._jsonSchemaValidator.getValidator(o.requestedSchema)(s.content);if(!a.valid)throw new E(C.InvalidParams,`Elicitation response content does not match requested schema: ${a.errorMessage}`)}catch(i){throw i instanceof E?i:new E(C.InternalError,`Error validating elicitation response: ${i instanceof Error?i.message:String(i)}`)}return s}}}createElicitationCompletionNotifier(e,r){if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:e}},r)}async listRoots(e,r){return this.request({method:"roots/list",params:e},tf,r)}async sendLoggingMessage(e,r){if(this._capabilities.logging&&!this.isMessageIgnored(e.level,r))return this.notification({method:"notifications/message",params:e})}async sendResourceUpdated(e){return this.notification({method:"notifications/resources/updated",params:e})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}}});function Qh(t){return!!t&&typeof t=="object"&&Y$ in t}function Q$(t){return t[Y$]?.complete}var Y$,X$,eS=y(()=>{Y$=Symbol.for("mcp.completable");(function(t){t.Completable="McpCompletable"})(X$||(X$={}))});var tS=y(()=>{});function AM(t){let e=[];if(t.length===0)return{isValid:!1,warnings:["Tool name cannot be empty"]};if(t.length>128)return{isValid:!1,warnings:[`Tool name exceeds maximum length of 128 characters (current: ${t.length})`]};if(t.includes(" ")&&e.push("Tool name contains spaces, which may cause parsing issues"),t.includes(",")&&e.push("Tool name contains commas, which may cause parsing issues"),(t.startsWith("-")||t.endsWith("-"))&&e.push("Tool name starts or ends with a dash, which may cause parsing issues in some contexts"),(t.startsWith(".")||t.endsWith("."))&&e.push("Tool name starts or ends with a dot, which may cause parsing issues in some contexts"),!OM.test(t)){let r=t.split("").filter(n=>!/[A-Za-z0-9._-]/.test(n)).filter((n,o,s)=>s.indexOf(n)===o);return e.push(`Tool name contains invalid characters: ${r.map(n=>`"${n}"`).join(", ")}`,"Allowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)"),{isValid:!1,warnings:e}}return{isValid:!0,warnings:e}}function NM(t,e){if(e.length>0){console.warn(`Tool name validation warning for "${t}":`);for(let r of e)console.warn(` - ${r}`);console.warn("Tool registration will proceed, but this may cause compatibility issues."),console.warn("Consider updating the tool name to conform to the MCP tool naming standard."),console.warn("See SEP: Specify Format for Tool Names (https://github.com/modelcontextprotocol/modelcontextprotocol/issues/986) for more details.")}}function eg(t){let e=AM(t);return NM(t,e.warnings),e.isValid}var OM,rS=y(()=>{OM=/^[A-Za-z0-9._-]{1,128}$/});var Dc,nS=y(()=>{Dc=class{constructor(e){this._mcpServer=e}registerToolTask(e,r,n){let o={taskSupport:"required",...r.execution};if(o.taskSupport==="forbidden")throw new Error(`Cannot register task-based tool '${e}' with taskSupport 'forbidden'. Use registerTool() instead.`);return this._mcpServer._createRegisteredTool(e,r.title,r.description,r.inputSchema,r.outputSchema,r.annotations,o,r._meta,n)}}});var oS=y(()=>{Tp()});function aS(t){return t!==null&&typeof t=="object"&&"parse"in t&&typeof t.parse=="function"&&"safeParse"in t&&typeof t.safeParse=="function"}function cS(t){return"_def"in t||"_zod"in t||aS(t)}function tg(t){return typeof t!="object"||t===null||cS(t)?!1:Object.keys(t).length===0?!0:Object.values(t).some(aS)}function sS(t){if(t){if(tg(t))return sn(t);if(!cS(t))throw new Error("inputSchema must be a Zod schema or raw shape, received an unrecognized object");return t}}function jM(t){let e=Dt(t);return e?Object.entries(e).map(([r,n])=>{let o=db(n),s=pb(n);return{name:r,description:o,required:!s}}):[]}function Br(t){let r=Dt(t)?.method;if(!r)throw new Error("Schema is missing a method literal");let n=Nr(r);if(typeof n=="string")return n;throw new Error("Schema method literal must be a string")}function iS(t){return{completion:{values:t.slice(0,100),total:t.length,hasMore:t.length>100}}}var Lc,MM,ai,uS=y(()=>{Yh();so();Xf();rt();eS();tS();rS();nS();oS();Lc=class{constructor(e,r){this._registeredResources={},this._registeredResourceTemplates={},this._registeredTools={},this._registeredPrompts={},this._toolHandlersInitialized=!1,this._completionHandlerInitialized=!1,this._resourceHandlersInitialized=!1,this._promptHandlersInitialized=!1,this.server=new zo(e,r)}get experimental(){return this._experimental||(this._experimental={tasks:new Dc(this)}),this._experimental}async connect(e){return await this.server.connect(e)}async close(){await this.server.close()}setToolRequestHandlers(){this._toolHandlersInitialized||(this.server.assertCanSetRequestHandler(Br(Vn)),this.server.assertCanSetRequestHandler(Br(Ir)),this.server.registerCapabilities({tools:{listChanged:!0}}),this.server.setRequestHandler(Vn,()=>({tools:Object.entries(this._registeredTools).filter(([,e])=>e.enabled).map(([e,r])=>{let n={name:e,title:r.title,description:r.description,inputSchema:(()=>{let o=oo(r.inputSchema);return o?Kf(o,{strictUnions:!0,pipeStrategy:"input"}):MM})(),annotations:r.annotations,execution:r.execution,_meta:r._meta};if(r.outputSchema){let o=oo(r.outputSchema);o&&(n.outputSchema=Kf(o,{strictUnions:!0,pipeStrategy:"output"}))}return n})})),this.server.setRequestHandler(Ir,async(e,r)=>{try{let n=this._registeredTools[e.params.name];if(!n)throw new E(C.InvalidParams,`Tool ${e.params.name} not found`);if(!n.enabled)throw new E(C.InvalidParams,`Tool ${e.params.name} disabled`);let o=!!e.params.task,s=n.execution?.taskSupport,i="createTask"in n.handler;if((s==="required"||s==="optional")&&!i)throw new E(C.InternalError,`Tool ${e.params.name} has taskSupport '${s}' but was not registered with registerToolTask`);if(s==="required"&&!o)throw new E(C.MethodNotFound,`Tool ${e.params.name} requires task augmentation (taskSupport: 'required')`);if(s==="optional"&&!o&&i)return await this.handleAutomaticTaskPolling(n,e,r);let a=await this.validateToolInput(n,e.params.arguments,e.params.name),c=await this.executeToolHandler(n,a,r);return o||await this.validateToolOutput(n,c,e.params.name),c}catch(n){if(n instanceof E&&n.code===C.UrlElicitationRequired)throw n;return this.createToolError(n instanceof Error?n.message:String(n))}}),this._toolHandlersInitialized=!0)}createToolError(e){return{content:[{type:"text",text:e}],isError:!0}}async validateToolInput(e,r,n){if(!e.inputSchema)return;let s=oo(e.inputSchema)??e.inputSchema,i=await qa(s,r);if(!i.success){let a="error"in i?i.error:"Unknown error",c=Ua(a);throw new E(C.InvalidParams,`Input validation error: Invalid arguments for tool ${n}: ${c}`)}return i.data}async validateToolOutput(e,r,n){if(!e.outputSchema||!("content"in r)||r.isError)return;if(!r.structuredContent)throw new E(C.InvalidParams,`Output validation error: Tool ${n} has an output schema but no structured content was provided`);let o=oo(e.outputSchema),s=await qa(o,r.structuredContent);if(!s.success){let i="error"in s?s.error:"Unknown error",a=Ua(i);throw new E(C.InvalidParams,`Output validation error: Invalid structured content for tool ${n}: ${a}`)}}async executeToolHandler(e,r,n){let o=e.handler;if("createTask"in o){if(!n.taskStore)throw new Error("No task store provided.");let i={...n,taskStore:n.taskStore};if(e.inputSchema){let a=o;return await Promise.resolve(a.createTask(r,i))}else{let a=o;return await Promise.resolve(a.createTask(i))}}if(e.inputSchema){let i=o;return await Promise.resolve(i(r,n))}else{let i=o;return await Promise.resolve(i(n))}}async handleAutomaticTaskPolling(e,r,n){if(!n.taskStore)throw new Error("No task store provided for task-capable tool.");let o=await this.validateToolInput(e,r.params.arguments,r.params.name),s=e.handler,i={...n,taskStore:n.taskStore},a=o?await Promise.resolve(s.createTask(o,i)):await Promise.resolve(s.createTask(i)),c=a.task.taskId,u=a.task,l=u.pollInterval??5e3;for(;u.status!=="completed"&&u.status!=="failed"&&u.status!=="cancelled";){await new Promise(p=>setTimeout(p,l));let d=await n.taskStore.getTask(c);if(!d)throw new E(C.InternalError,`Task ${c} not found during polling`);u=d}return await n.taskStore.getTaskResult(c)}setCompletionRequestHandler(){this._completionHandlerInitialized||(this.server.assertCanSetRequestHandler(Br(Oa)),this.server.registerCapabilities({completions:{}}),this.server.setRequestHandler(Oa,async e=>{switch(e.params.ref.type){case"ref/prompt":return Hw(e),this.handlePromptCompletion(e,e.params.ref);case"ref/resource":return Bw(e),this.handleResourceCompletion(e,e.params.ref);default:throw new E(C.InvalidParams,`Invalid completion reference: ${e.params.ref}`)}}),this._completionHandlerInitialized=!0)}async handlePromptCompletion(e,r){let n=this._registeredPrompts[r.name];if(!n)throw new E(C.InvalidParams,`Prompt ${r.name} not found`);if(!n.enabled)throw new E(C.InvalidParams,`Prompt ${r.name} disabled`);if(!n.argsSchema)return ai;let s=Dt(n.argsSchema)?.[e.params.argument.name];if(!Qh(s))return ai;let i=Q$(s);if(!i)return ai;let a=await i(e.params.argument.value,e.params.context);return iS(a)}async handleResourceCompletion(e,r){let n=Object.values(this._registeredResourceTemplates).find(i=>i.resourceTemplate.uriTemplate.toString()===r.uri);if(!n){if(this._registeredResources[r.uri])return ai;throw new E(C.InvalidParams,`Resource template ${e.params.ref.uri} not found`)}let o=n.resourceTemplate.completeCallback(e.params.argument.name);if(!o)return ai;let s=await o(e.params.argument.value,e.params.context);return iS(s)}setResourceRequestHandlers(){this._resourceHandlersInitialized||(this.server.assertCanSetRequestHandler(Br(Ra)),this.server.assertCanSetRequestHandler(Br(Ln)),this.server.assertCanSetRequestHandler(Br(Ca)),this.server.registerCapabilities({resources:{listChanged:!0}}),this.server.setRequestHandler(Ra,async(e,r)=>{let n=Object.entries(this._registeredResources).filter(([s,i])=>i.enabled).map(([s,i])=>({uri:s,name:i.name,...i.metadata})),o=[];for(let s of Object.values(this._registeredResourceTemplates)){if(!s.resourceTemplate.listCallback)continue;let i=await s.resourceTemplate.listCallback(r);for(let a of i.resources)o.push({...s.metadata,...a})}return{resources:[...n,...o]}}),this.server.setRequestHandler(Ln,async()=>({resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([r,n])=>({name:r,uriTemplate:n.resourceTemplate.uriTemplate.toString(),...n.metadata}))})),this.server.setRequestHandler(Ca,async(e,r)=>{let n=new URL(e.params.uri),o=this._registeredResources[n.toString()];if(o){if(!o.enabled)throw new E(C.InvalidParams,`Resource ${n} disabled`);return o.readCallback(n,r)}for(let s of Object.values(this._registeredResourceTemplates)){let i=s.resourceTemplate.uriTemplate.match(n.toString());if(i)return s.readCallback(n,i,r)}throw new E(C.InvalidParams,`Resource ${n} not found`)}),this._resourceHandlersInitialized=!0)}setPromptRequestHandlers(){this._promptHandlersInitialized||(this.server.assertCanSetRequestHandler(Br(qn)),this.server.assertCanSetRequestHandler(Br(Un)),this.server.registerCapabilities({prompts:{listChanged:!0}}),this.server.setRequestHandler(qn,()=>({prompts:Object.entries(this._registeredPrompts).filter(([,e])=>e.enabled).map(([e,r])=>({name:e,title:r.title,description:r.description,arguments:r.argsSchema?jM(r.argsSchema):void 0}))})),this.server.setRequestHandler(Un,async(e,r)=>{let n=this._registeredPrompts[e.params.name];if(!n)throw new E(C.InvalidParams,`Prompt ${e.params.name} not found`);if(!n.enabled)throw new E(C.InvalidParams,`Prompt ${e.params.name} disabled`);if(n.argsSchema){let o=oo(n.argsSchema),s=await qa(o,e.params.arguments);if(!s.success){let c="error"in s?s.error:"Unknown error",u=Ua(c);throw new E(C.InvalidParams,`Invalid arguments for prompt ${e.params.name}: ${u}`)}let i=s.data,a=n.callback;return await Promise.resolve(a(i,r))}else{let o=n.callback;return await Promise.resolve(o(r))}}),this._promptHandlersInitialized=!0)}resource(e,r,...n){let o;typeof n[0]=="object"&&(o=n.shift());let s=n[0];if(typeof r=="string"){if(this._registeredResources[r])throw new Error(`Resource ${r} is already registered`);let i=this._createRegisteredResource(e,void 0,r,o,s);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),i}else{if(this._registeredResourceTemplates[e])throw new Error(`Resource template ${e} is already registered`);let i=this._createRegisteredResourceTemplate(e,void 0,r,o,s);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),i}}registerResource(e,r,n,o){if(typeof r=="string"){if(this._registeredResources[r])throw new Error(`Resource ${r} is already registered`);let s=this._createRegisteredResource(e,n.title,r,n,o);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),s}else{if(this._registeredResourceTemplates[e])throw new Error(`Resource template ${e} is already registered`);let s=this._createRegisteredResourceTemplate(e,n.title,r,n,o);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),s}}_createRegisteredResource(e,r,n,o,s){let i={name:e,title:r,metadata:o,readCallback:s,enabled:!0,disable:()=>i.update({enabled:!1}),enable:()=>i.update({enabled:!0}),remove:()=>i.update({uri:null}),update:a=>{typeof a.uri<"u"&&a.uri!==n&&(delete this._registeredResources[n],a.uri&&(this._registeredResources[a.uri]=i)),typeof a.name<"u"&&(i.name=a.name),typeof a.title<"u"&&(i.title=a.title),typeof a.metadata<"u"&&(i.metadata=a.metadata),typeof a.callback<"u"&&(i.readCallback=a.callback),typeof a.enabled<"u"&&(i.enabled=a.enabled),this.sendResourceListChanged()}};return this._registeredResources[n]=i,i}_createRegisteredResourceTemplate(e,r,n,o,s){let i={resourceTemplate:n,title:r,metadata:o,readCallback:s,enabled:!0,disable:()=>i.update({enabled:!1}),enable:()=>i.update({enabled:!0}),remove:()=>i.update({name:null}),update:u=>{typeof u.name<"u"&&u.name!==e&&(delete this._registeredResourceTemplates[e],u.name&&(this._registeredResourceTemplates[u.name]=i)),typeof u.title<"u"&&(i.title=u.title),typeof u.template<"u"&&(i.resourceTemplate=u.template),typeof u.metadata<"u"&&(i.metadata=u.metadata),typeof u.callback<"u"&&(i.readCallback=u.callback),typeof u.enabled<"u"&&(i.enabled=u.enabled),this.sendResourceListChanged()}};this._registeredResourceTemplates[e]=i;let a=n.uriTemplate.variableNames;return Array.isArray(a)&&a.some(u=>!!n.completeCallback(u))&&this.setCompletionRequestHandler(),i}_createRegisteredPrompt(e,r,n,o,s){let i={title:r,description:n,argsSchema:o===void 0?void 0:sn(o),callback:s,enabled:!0,disable:()=>i.update({enabled:!1}),enable:()=>i.update({enabled:!0}),remove:()=>i.update({name:null}),update:a=>{typeof a.name<"u"&&a.name!==e&&(delete this._registeredPrompts[e],a.name&&(this._registeredPrompts[a.name]=i)),typeof a.title<"u"&&(i.title=a.title),typeof a.description<"u"&&(i.description=a.description),typeof a.argsSchema<"u"&&(i.argsSchema=sn(a.argsSchema)),typeof a.callback<"u"&&(i.callback=a.callback),typeof a.enabled<"u"&&(i.enabled=a.enabled),this.sendPromptListChanged()}};return this._registeredPrompts[e]=i,o&&Object.values(o).some(c=>{let u=c instanceof ma?c._def?.innerType:c;return Qh(u)})&&this.setCompletionRequestHandler(),i}_createRegisteredTool(e,r,n,o,s,i,a,c,u){eg(e);let l={title:r,description:n,inputSchema:sS(o),outputSchema:sS(s),annotations:i,execution:a,_meta:c,handler:u,enabled:!0,disable:()=>l.update({enabled:!1}),enable:()=>l.update({enabled:!0}),remove:()=>l.update({name:null}),update:d=>{typeof d.name<"u"&&d.name!==e&&(typeof d.name=="string"&&eg(d.name),delete this._registeredTools[e],d.name&&(this._registeredTools[d.name]=l)),typeof d.title<"u"&&(l.title=d.title),typeof d.description<"u"&&(l.description=d.description),typeof d.paramsSchema<"u"&&(l.inputSchema=sn(d.paramsSchema)),typeof d.outputSchema<"u"&&(l.outputSchema=sn(d.outputSchema)),typeof d.callback<"u"&&(l.handler=d.callback),typeof d.annotations<"u"&&(l.annotations=d.annotations),typeof d._meta<"u"&&(l._meta=d._meta),typeof d.enabled<"u"&&(l.enabled=d.enabled),this.sendToolListChanged()}};return this._registeredTools[e]=l,this.setToolRequestHandlers(),this.sendToolListChanged(),l}tool(e,...r){if(this._registeredTools[e])throw new Error(`Tool ${e} is already registered`);let n,o,s,i;if(typeof r[0]=="string"&&(n=r.shift()),r.length>1){let c=r[0];if(tg(c))o=r.shift(),r.length>1&&typeof r[0]=="object"&&r[0]!==null&&!tg(r[0])&&(i=r.shift());else if(typeof c=="object"&&c!==null){if(Object.values(c).some(u=>typeof u=="object"&&u!==null))throw new Error(`Tool ${e} expected a Zod schema or ToolAnnotations, but received an unrecognized object`);i=r.shift()}}let a=r[0];return this._createRegisteredTool(e,void 0,n,o,s,i,{taskSupport:"forbidden"},void 0,a)}registerTool(e,r,n){if(this._registeredTools[e])throw new Error(`Tool ${e} is already registered`);let{title:o,description:s,inputSchema:i,outputSchema:a,annotations:c,_meta:u}=r;return this._createRegisteredTool(e,o,s,i,a,c,{taskSupport:"forbidden"},u,n)}prompt(e,...r){if(this._registeredPrompts[e])throw new Error(`Prompt ${e} is already registered`);let n;typeof r[0]=="string"&&(n=r.shift());let o;r.length>1&&(o=r.shift());let s=r[0],i=this._createRegisteredPrompt(e,void 0,n,o,s);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),i}registerPrompt(e,r,n){if(this._registeredPrompts[e])throw new Error(`Prompt ${e} is already registered`);let{title:o,description:s,argsSchema:i}=r,a=this._createRegisteredPrompt(e,o,s,i,n);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),a}isConnected(){return this.server.transport!==void 0}async sendLoggingMessage(e,r){return this.server.sendLoggingMessage(e,r)}sendResourceListChanged(){this.isConnected()&&this.server.sendResourceListChanged()}sendToolListChanged(){this.isConnected()&&this.server.sendToolListChanged()}sendPromptListChanged(){this.isConnected()&&this.server.sendPromptListChanged()}},MM={type:"object",properties:{}};ai={completion:{values:[],hasMore:!1}}});var ZM,DM,lS,dS=y(()=>{"use strict";ZM="# batter-pixso-mcp \u4F7F\u7528\u6307\u5357\n\n\u672C\u670D\u52A1\u628A Pixso \u8BBE\u8BA1\u7A3F\u80FD\u529B\u4EE5 MCP \u5DE5\u5177\u66B4\u9732\u7ED9 AI\u3002\u6570\u636E\u94FE\u8DEF\uFF1A\n\n```\nAI \u5BA2\u6237\u7AEF \u2500\u2500MCP(stdio/HTTP)\u2500\u2500\u25B6 batter-pixso-mcp \u2500\u2500HTTP \u957F\u8F6E\u8BE2\u2500\u2500\u25B6 Pixso \u63D2\u4EF6(\u8BBE\u8BA1\u6587\u4EF6\u5185)\n```\n\n## \u524D\u63D0\n\n1. batter-pixso-mcp \u670D\u52A1\u5DF2\u542F\u52A8\uFF08agent \u7684 MCP \u914D\u7F6E\u4F1A\u81EA\u52A8\u62C9\u8D77\uFF09\u3002\n2. Pixso \u5BA2\u6237\u7AEF\u4E2D\u5DF2\u5BFC\u5165\u5E76\u8FD0\u884C **Batter Pixso Bridge** \u63D2\u4EF6\uFF0C\u63D2\u4EF6 UI \u663E\u793A\u300C\u5DF2\u8FDE\u63A5\u672C\u5730\u670D\u52A1\u300D\u3002\n3. \u76EE\u6807\u8BBE\u8BA1\u6587\u4EF6\u5904\u4E8E\u6253\u5F00\u72B6\u6001\u3002\n\n## \u5DE5\u5177\u603B\u89C8\n\n| \u5DE5\u5177 | \u7528\u9014 |\n| --- | --- |\n| `get_selected` | \u8BFB\u753B\u5E03\u5F53\u524D\u9009\u4E2D\u56FE\u5C42\uFF08guid\u3001\u540D\u79F0\u3001\u7C7B\u578B\u3001\u5C3A\u5BF8\uFF09 |\n| `get_node_dsl` | \u751F\u6210\u8282\u70B9\u7684\u5F00\u53D1\u5411\u7CBE\u7B80 DSL\uFF08\u7ED3\u6784 + \u6837\u5F0F + \u8D44\u6E90\u6587\u4EF6\u540D\uFF09\uFF0C\u8BBE\u8BA1\u8F6C\u4EE3\u7801\u7684\u6838\u5FC3\u5165\u53E3 |\n| `get_screenshot` | \u5BFC\u51FA\u8282\u70B9\u622A\u56FE\uFF0C\u8FD4\u56DE\u56FE\u7247\u6587\u4EF6\u540D\uFF08\u672C\u673A\u8DEF\u5F84\u76F4\u8BFB\uFF09\uFF0C\u7528\u4E8E\u89C6\u89C9\u53C2\u7167/\u6821\u9A8C |\n| `export_image` | \u6309 guid \u5BFC\u51FA\u56FE\u7247\u7D20\u6750\uFF08\u5207\u56FE\uFF09\uFF1A\u8282\u70B9\u5E26\u5BFC\u51FA\u6807\u8BB0\u65F6\u6309\u8BBE\u8BA1\u5E08\u8BBE\u7F6E\u9010\u4EFD\u5BFC\u51FA\uFF0C\u65E0\u6807\u8BB0\u6309\u53C2\u6570\u515C\u5E95 |\n| `list_sessions` | \u5217\u51FA\u5168\u90E8\u63D2\u4EF6\u4F1A\u8BDD\uFF08\u591A\u6587\u4EF6\u573A\u666F\u8DEF\u7531\u7528\uFF09 |\n\n## \u94FE\u63A5\u5373\u8F93\u5165\uFF08\u9AD8\u9891\u573A\u666F\uFF09\n\n\u7528\u6237\u63D0\u4F9B Pixso \u94FE\u63A5\u65F6\uFF08\u5B98\u65B9 `pixso.cn` \u6216\u79C1\u6709\u5316\u90E8\u7F72\u5982 `pixso.ky-tech.com.cn`\uFF0C\u4EFB\u610F\u57DF\u540D\uFF09\uFF0C\n\u94FE\u63A5\u672C\u8EAB\u5C31\u662F\u4EFB\u52A1\u8F93\u5165\uFF1A**\u5FC5\u987B**\u63D0\u53D6 `item-id` \u67E5\u8BE2\u53C2\u6570 \u2192 URL \u89E3\u7801 \u2192 \u5F97\u5230\u8282\u70B9 guid\uFF0C\n\u76F4\u63A5\u8C03 `get_node_dsl(guid)` / `get_screenshot(guid)`\uFF0C\u65E0\u9700\u5148\u95EE\u7528\u6237\u9009\u4E2D\u4EC0\u4E48\u3002\n\u4E25\u7981\u628A\u6574\u4E2A URL \u5F53 guid \u4F20\u3002\n\n## \u591A\u6587\u4EF6\u573A\u666F\n\n\u6BCF\u4E2A\u8FD0\u884C\u63D2\u4EF6\u7684\u8BBE\u8BA1\u6587\u4EF6\u662F\u4E00\u4E2A\u4F1A\u8BDD\u3002\u591A\u4E2A\u6587\u4EF6\u540C\u65F6\u6253\u5F00\u65F6\uFF1A\n\u5148\u7528 `list_sessions` \u786E\u8BA4\u76EE\u6807\u6587\u4EF6\uFF0C\u518D\u628A\u8FD4\u56DE\u7684 `sessionId` \u6216 `fileKey`\n\u4F5C\u4E3A\u5176\u4ED6\u5DE5\u5177\u7684 `target` \u53C2\u6570\u4F20\u5165\uFF1B\u4E0D\u4F20 `target` \u65F6\u8DEF\u7531\u5230\u6700\u8FD1\u6D3B\u8DC3\u7684\u6587\u4EF6\u3002\n\n\u8BE6\u7EC6\u5DE5\u4F5C\u6D41\u89C1\u8D44\u6E90 `batter://guides/design-to-code`\u3002\n",DM='# \u8BBE\u8BA1\u8F6C\u4EE3\u7801\u5DE5\u4F5C\u6D41\n\n## \u3010\u786C\u6027\u89C4\u5219 \xB7 \u8FDD\u53CD\u5373\u8FD4\u5DE5\u3011\n\n1. **\u8D44\u6E90\u662F\u672C\u673A\u6587\u4EF6\uFF0C\u6309\u9700\u53D6\u7528**\uFF1ADSL \u4E0E\u622A\u56FE\u7ED3\u679C\u4E2D\u7684 `img` \u5B57\u6BB5\u662F\u4EA7\u7269**\u6587\u4EF6\u540D**\n \uFF08\u5982 `"ab12cd34.svg"`\uFF09\uFF0C\u5B8C\u6574\u8DEF\u5F84 = \u4EA7\u7269\u76EE\u5F55 + \u6587\u4EF6\u540D\uFF08\u76EE\u5F55\u89C1\u5DE5\u5177 description\n \u4E2D\u7684\u5B9E\u9645\u8DEF\u5F84\uFF0C\u901A\u5E38\u4E3A `%TEMP%\\batter-pixso-assets`\uFF09\u3002\u4EA7\u7269\u4E0E\u670D\u52A1\u540C\u673A\uFF0C\u76F4\u63A5\u8BFB\u6587\u4EF6\u7CFB\u7EDF\uFF1A\n - **\u622A\u56FE\u7B49\u89C6\u89C9\u53C2\u7167**\uFF1A\u7528 Read \u5DE5\u5177\u76F4\u63A5\u8BFB\u8BE5\u8DEF\u5F84\u67E5\u770B\uFF0C\u65E0\u9700\u590D\u5236\u3002\n - **\u8981\u5199\u8FDB\u4EA4\u4ED8\u4EE3\u7801\u7684\u56FE\u6807/\u56FE\u7247**\uFF1A**\u5FC5\u987B**\u5148\u590D\u5236\u5230\u9879\u76EE\u8D44\u6E90\u76EE\u5F55\n \uFF08PowerShell `Copy-Item` / \u7C7B Unix `cp`\uFF09\uFF0C\u518D\u4EE5\u672C\u5730\u76F8\u5BF9\u8DEF\u5F84\u5F15\u7528\n \uFF08`<img src>`\u3001CSS `background-image` \u7B49\uFF09\u3002\u4EA7\u7269\u6587\u4EF6\u540D\u662F\u5185\u5BB9 hash\uFF0C\u6CA1\u6709\u8BED\u4E49\u2014\u2014\n **\u590D\u5236\u65F6\u6309\u8282\u70B9\u7528\u9014\u81EA\u884C\u547D\u540D\u8BED\u4E49\u5316\u6587\u4EF6\u540D**\uFF08\u5982 `icon-arrow.svg`\u3001`hero-banner.png`\uFF1B\n `export_image` \u8FD4\u56DE\u7684 `suffix` \u5982 `@2x` \u5EFA\u8BAE\u4FDD\u7559\uFF09\uFF0C\u4E25\u7981\u628A hash \u6587\u4EF6\u540D\u5E26\u8FDB\u4EA4\u4ED8\u4EE3\u7801\u3002\n \u4E25\u7981\u76F4\u63A5\u5F15\u7528\u4EA7\u7269\u76EE\u5F55\u7684\u7EDD\u5BF9\u8DEF\u5F84\uFF08\u4EA7\u7269\u9ED8\u8BA4 7 \u5929\u540E\u81EA\u52A8\u6E05\u626B\uFF0C\u5F15\u7528\u4F1A\u5931\u6548\uFF09\uFF1B\n \u4E25\u7981\u79FB\u52A8\u6216\u5220\u9664\u4EA7\u7269\u76EE\u5F55\u4E0B\u7684\u6587\u4EF6\uFF08\u591A\u4F1A\u8BDD\u5171\u4EAB\uFF0C\u6E05\u626B\u7531\u670D\u52A1\u7EDF\u4E00\u8D1F\u8D23\uFF09\u3002\n2. **Pixso \u94FE\u63A5\u5FC5\u987B\u63D0\u53D6 `item-id` \u5F53 guid**\uFF1A\u4EFB\u610F\u57DF\u540D\u90FD\u6709\u6548\u2014\u2014\u5B98\u65B9 `pixso.cn` \u6216\u79C1\u6709\u5316\u90E8\u7F72\u5982\n `https://pixso.ky-tech.com.cn/app/design/<\u6587\u4EF6>?item-id=1%3A2`\uFF08\u4E5F\u53EF\u80FD\u662F `/app/editor/` \u8DEF\u5F84\uFF09\u3002\n \u4ECE `item-id` \u67E5\u8BE2\u53C2\u6570\u63D0\u53D6 guid \u5E76 URL \u89E3\u7801\uFF08`1%3A2` \u2192 `"1:2"`\uFF09\u540E\u4F5C\u4E3A `guid` \u4F20\u5165\u3002\n \u4E25\u7981\u628A\u6574\u4E2A URL \u5F53 guid \u4F20\uFF1B\u65E0\u8BBA\u57DF\u540D\u662F\u5426\u8BA4\u8BC6\uFF0C\u90FD\u6309\u6B64\u89C4\u5219\u5904\u7406\u3002\n\n## \u63A8\u8350\u6B65\u9AA4\n\n1. **\u786E\u8BA4\u76EE\u6807\u8282\u70B9**\n - \u7528\u6237\u7ED9\u4E86 Pixso \u94FE\u63A5\uFF1A\u6309\u4E0A\u65B9\u786C\u6027\u89C4\u5219\u7B2C 2 \u6761\u63D0\u53D6 guid\uFF0C\u76F4\u63A5\u7EE7\u7EED\u3002\n - \u7528\u6237\u660E\u786E\u8BF4\u4E86"\u8FD9\u4E2A/\u6211\u9009\u4E2D\u7684"\uFF1A\u8C03 `get_selected` \u62FF guid\uFF0C\u76F4\u63A5\u7EE7\u7EED\u3002\n - \u5176\u4F59\u4F9D\u8D56\u5F53\u524D\u9009\u533A\u7684\u573A\u666F\uFF1A**\u4E25\u7981\u9690\u5F0F\u4F7F\u7528\u9009\u533A guid**\u2014\u2014\u8C03 `get_selected` \u540E\n \u5FC5\u987B\u5148\u628A\u9009\u4E2D\u56FE\u5C42\u540D\u79F0\u62A5\u7ED9\u7528\u6237\u786E\u8BA4\uFF08"\u5F53\u524D\u9009\u4E2D\u7684\u662F\u300CXX\u300D\uFF0C\u786E\u8BA4\u5904\u7406\u5B83\u5417\uFF1F"\uFF09\uFF0C\u786E\u8BA4\u540E\u518D\u7EE7\u7EED\u3002\n `get_node_dsl` / `get_screenshot` \u7684 guid \u7F3A\u7701\u56DE\u9000\u540C\u6837\u9002\u7528\u672C\u89C4\u5219\u3002\n2. **\u53D6\u7ED3\u6784**\uFF1A`get_node_dsl(guid)` \u62FF\u7CBE\u7B80 DSL\u3002\n3. **\u53D6\u89C6\u89C9\u53C2\u7167**\uFF1A`get_screenshot(guid)` \u62FF\u622A\u56FE\u6587\u4EF6\u540D\uFF0C\u6309\u786C\u6027\u89C4\u5219\u7B2C 1 \u6761\u62FC\u8DEF\u5F84\u540E\u7528 Read \u76F4\u8BFB\uFF0C\u4E0E DSL \u5BF9\u7167\u7406\u89E3\u89C6\u89C9\u5C42\u7EA7\u3002\n4. **\u751F\u6210\u4EE3\u7801**\uFF1A\u6309\u4E0B\u6587 DSL \u8BED\u4E49\u6620\u5C04\u5230\u76EE\u6807\u6846\u67B6\u3002\n5. **\u6821\u9A8C**\uFF1A\u751F\u6210\u540E\u518D\u53D6\u4E00\u6B21\u622A\u56FE\u5BF9\u6BD4\uFF0C\u6709\u504F\u5DEE\u5C31\u4FEE\u6B63\u540E\u518D\u6BD4\u4E00\u8F6E\u3002\n\n## DSL \u5B57\u6BB5\u8BED\u4E49\uFF08\u7D27\u51D1\u683C\u5F0F\uFF09\n\nDSL \u662F\u5355\u884C\u7D27\u51D1 JSON\uFF1A\u77ED key\u3001\u4F4D\u7F6E\u6570\u7EC4\u3001\u9ED8\u8BA4\u503C\u7701\u7565\u3002\u56FE\u4F8B\uFF1A\n\n```jsonc\n{\n "id": "297:133032", // \u8282\u70B9 guid\uFF0C\u53EF\u56DE\u4F20\u4E3A guid \u53C2\u6570\u5BF9\u8BE5\u8282\u70B9\u4E0B\u94BB\u8C03\u7528\n "name": "\u65B0\u5BA2", // \u56FE\u5C42\u540D\uFF1B\u81EA\u52A8\u547D\u540D\uFF08"Frame 3123" \u7C7B\uFF09\u5DF2\u7701\u7565\n "type": "FRAME", // \u8282\u70B9\u7C7B\u578B\uFF1BICON/IMAGE \u4E3A\u584C\u7F29\u53F6\u5B50\n "rect": [0, 0, 375, 200], // [x,y,w,h] \u7EDD\u5BF9\u5B9A\u4F4D\uFF1A\u6839\u8282\u70B9\u3001\u7EDD\u5BF9\u5B9A\u4F4D\u5BB9\u5668\u7684\u5B50\u8282\u70B9\n "size": [120, 40], // [w,h]\uFF1Aauto-layout \u5B50\u8282\u70B9\uFF08x/y \u7531\u7236\u7EA7 layout \u63A8\u5BFC\uFF0C\u7701\u7565\uFF09\n "layout": { // auto-layout \u2192 flex \u76F4\u8BD1\uFF08\u4EC5\u5BB9\u5668\u6709\uFF09\n "dir": "row", // row | column\n "gap": 12, // \u4E3A 0 \u65F6\u7701\u7565\n "pad": [16, 16, 16, 16], // [\u4E0A,\u53F3,\u4E0B,\u5DE6]\uFF0C\u5168 0 \u65F6\u7701\u7565\n "align": ["start", "center"], // [\u4E3B\u8F74,\u4EA4\u53C9\u8F74]\uFF1Astart|center|end|space-between|baseline\n "sizing": ["hug", "fixed"] // [\u4E3B\u8F74,\u4EA4\u53C9\u8F74]\uFF1Ahug|fixed|fill\n },\n "text": { // \u4EC5\u6587\u672C\u8282\u70B9\uFF1B\u9ED8\u8BA4\u503C\u7701\u7565\uFF1Aalign=left\u3001lh=normal\u3001weight=Regular\n "content": "...", "size": 14, "font": "PingFang SC",\n "weight": "Medium", "lh": "22px", "align": "center",\n "deco": "underline", "ls": "0.5px", "link": "https://...", // \u6309\u9700\n "segs": [ // \u4EC5\u6DF7\u6392\u6587\u672C\uFF1Abase \u4E3A\u6700\u957F\u6BB5\u6837\u5F0F\uFF0C\u6BCF\u6BB5\u53EA\u5E26\u5DEE\u5F02\u5B57\u6BB5\uFF1B\n { "text": "\u7406\u8D54\u4E2D\u5FC3", "weight": "Bold", "color": "p1" } // \u6570\u7EC4\u987A\u5E8F\u5373\u5B57\u7B26\u504F\u79FB\uFF08start/end \u7701\u7565\uFF09\n ]\n },\n "fills": ["p0", "linear-gradient(90deg, #fff 0%, #000 100%)"], // CSS \u989C\u8272/\u6E10\u53D8\n "stroke": "1px solid #e5e5e5", // \u989C\u8272\u90E8\u5206\u4E5F\u53EF\u80FD\u662F "p0" \u8C03\u8272\u677F\u5F15\u7528\n "radius": 8, // \u6216 [\u4E0A\u5DE6, \u4E0A\u53F3, \u4E0B\u53F3, \u4E0B\u5DE6]\n "shadow": "0px 2px 8px rgba(0,0,0,0.1), inset 0px 1px 0px #fff", // CSS box-shadow\uFF0C\u591A\u9634\u5F71\u9017\u53F7\u62FC\u63A5\n "blur": "4px", // \u56FE\u5C42\u6A21\u7CCA \u2192 CSS filter: blur()\n "bgBlur": "8px", // \u80CC\u666F\u6A21\u7CCA \u2192 CSS backdrop-filter\n "constraints": { "h": "right", "v": "bottom" }, // \u7EDD\u5BF9\u5B9A\u4F4D\u5BB9\u5668\u5185\u7684\u7EA6\u675F\uFF08h: left|center|right|stretch|scale\uFF09\uFF0C\u9ED8\u8BA4 left/top \u4E0D\u8F93\u51FA\n "opacity": 0.9, // \u4E3A 1 \u65F6\u7701\u7565\n "img": "ab12cd34.svg", // \u53F6\u5B50\u8D44\u6E90\u6587\u4EF6\u540D\uFF08\u53D6\u7528\u89C4\u5219\u89C1\u786C\u6027\u89C4\u5219\u7B2C 1 \u6761\uFF09\n "palette": ["#1a73e8", "#f5222d"], // \u8C03\u8272\u677F\uFF08\u4EC5\u6839\u8282\u70B9\uFF09\uFF0C"p0"/"p1" \u4E3A\u4E0B\u6807\u5F15\u7528\n "depth": 6, // \u6574\u68F5\u6811\u5B9E\u9645\u6700\u5927\u6DF1\u5EA6\uFF08\u4EC5\u6839\u8282\u70B9\uFF0C\u603B\u662F\u8F93\u51FA\uFF0C\u4E0E\u622A\u65AD\u65E0\u5173\uFF09\n "more": 3, // \u4EC5\u56E0 maxDepth \u622A\u65AD\u65F6\u51FA\u73B0\uFF1A\u8BE5\u8282\u70B9\u4E0B\u8FD8\u6709 3 \u7EA7\u672A\u5C55\u5F00\uFF0C\u62FF id \u56DE\u4F20 guid \u7EE7\u7EED\u4E0B\u94BB\n "kids": [] // \u5B50\u8282\u70B9\u9012\u5F52\n}\n```\n\n**\u6DF1\u5EA6\u63A7\u5236**\uFF1A`get_node_dsl` \u7684 `maxDepth` \u53C2\u6570\u9650\u5236\u4E0B\u63A2\u5C42\u7EA7\uFF08\u6839\u4E3A\u7B2C 0 \u5C42\uFF0C\u7F3A\u7701\u4E0D\u9650\uFF09\u3002\n\u5927\u6811\u5206\u6BB5\u7B56\u7565\uFF1A\u5148 `maxDepth: 0` \u62FF\u6839\u8282\u70B9\uFF08\u542B `depth` \u603B\u6DF1\u5EA6\uFF09\u9884\u5224\u89C4\u6A21\uFF0C\u518D\u6309\u9700\u5BF9\u5E26 `more` \u6807\u8BB0\u7684\u5B50\u6811\u7528\u5176 `id` \u5355\u72EC\u4E0B\u94BB\u3002\n\n**\u8C03\u8272\u677F\u89C4\u5219**\uFF1A\u540C\u4E00\u989C\u8272\uFF08\u5355\u8272\uFF0C\u542B rgba\uFF09\u51FA\u73B0 \u22652 \u6B21\u65F6\u63D0\u53D6\u5230\u6839\u8282\u70B9 `palette` \u6570\u7EC4\uFF0C\n`fills`\u3001`text.color`\u3001`segs[].color`\u3001`stroke` \u4E2D\u4EE5 `"p0"`\u3001`"p1"` \u5F15\u7528\uFF08\u4E0B\u6807\u5373 palette \u4E0B\u6807\uFF09\u3002\n`shadow`\u3001`gradient` \u7B49\u590D\u5408 CSS \u5B57\u7B26\u4E32\u5185\u90E8\u7684\u989C\u8272\u4FDD\u6301\u5B57\u9762\u503C\uFF0C\u4E0D\u67E5\u8868\u3002\n\n## \u53F6\u5B50\u8282\u70B9\u4E0E\u56FE\u7247\u8D44\u6E90\n\n- `type: "ICON"`\uFF1A\u7EAF\u77E2\u91CF\u5C0F\u8282\u70B9\uFF08icon\uFF09\uFF0C`img` \u4E3A **SVG** \u6587\u4EF6\u540D\u3002\n- `type: "IMAGE"`\uFF1A\u56FE\u7247\u586B\u5145\u8282\u70B9\uFF0C`img` \u4E3A **PNG** \u6587\u4EF6\u540D\u3002\n- \u6587\u4EF6\u540D\u62FC\u8DEF\u5F84\u4E0E\u53D6\u7528\u8981\u6C42\u89C1\u5F00\u5934\u786C\u6027\u89C4\u5219\u7B2C 1 \u6761\u3002\n- \u5BB9\u5668\u81EA\u8EAB\u6709\u5BFC\u51FA\u8BBE\u7F6E\u6807\u8BB0\u65F6\u4E5F\u4F1A\u584C\u7F29\u4E3A\u53F6\u5B50\uFF08\u5C0A\u91CD\u8BBE\u8BA1\u5E08\u7684\u5BFC\u51FA\u610F\u56FE\uFF09\u3002\n- **\u5DF2\u5E26 `img` \u7684\u8282\u70B9\u5728\u53D6 DSL \u65F6\u5DF2\u5B8C\u6210\u5BFC\u51FA**\uFF1A\u76F4\u63A5\u4F7F\u7528\u5176\u6587\u4EF6\u540D\uFF0C\u4E25\u7981\u5BF9\u5B83\u4EEC\u518D\u8C03 `export_image`\uFF08\u91CD\u590D\u5BFC\u51FA\u540C\u4E00\u4EFD\u5185\u5BB9\uFF09\u3002\n `export_image` \u4EC5\u7528\u4E8E DSL \u4E2D\u672A\u584C\u7F29\u7684\u8282\u70B9\uFF08\u4E3B\u52A8\u5207\u56FE\uFF09\u3002\n\n## \u6CE8\u610F\n\n- DSL \u662F**\u6709\u635F\u7CBE\u7B80**\uFF1A\u7701\u7565\u4E86\u5E03\u5C14\u8FD0\u7B97\u8DEF\u5F84\u3001\u8499\u7248\u7B49\u7EAF\u8BBE\u8BA1\u7EC6\u8282\uFF0C\u89C6\u89C9\u590D\u6742\u8282\u70B9\u4EE5\u622A\u56FE\u4E3A\u51C6\u3002\n- \u5BFC\u51FA\u7C7B\u5DE5\u5177\uFF08`get_node_dsl`/`get_screenshot`/`export_image`\uFF09\u5E26 15 \u5206\u949F\u7ED3\u679C\u7F13\u5B58\uFF08\u63D2\u4EF6\u4FA7 TTL\uFF09\uFF1B\n \u8BBE\u8BA1\u7A3F\u521A\u6539\u8FC7\u4F46\u7ED3\u679C\u5BF9\u4E0D\u4E0A\u65F6\uFF0C\u52A0 `cache: "refresh"` \u5F3A\u5236\u5237\u65B0\u3002\n- \u591A\u6587\u4EF6\u573A\u666F\u6240\u6709\u5DE5\u5177\u90FD\u652F\u6301 `target` \u53C2\u6570\uFF08sessionId/fileKey\uFF09\uFF0C\u89C1 `batter://guides/intro`\u3002\n',lS=[{name:"intro",uri:"batter://guides/intro",description:"batter-pixso-mcp \u6982\u89C8\uFF1A\u67B6\u6784\u524D\u63D0\u3001\u5DE5\u5177\u6E05\u5355\u3001\u591A\u6587\u4EF6\u4F1A\u8BDD\u8DEF\u7531\u3002\u4F7F\u7528\u524D\u5FC5\u8BFB\u3002",text:ZM},{name:"design-to-code",uri:"batter://guides/design-to-code",description:"\u8BBE\u8BA1\u8F6C\u4EE3\u7801\uFF08\u6837\u5F0F\u8FD8\u539F/\u8BBE\u8BA1\u8FD8\u539F\uFF09\u5DE5\u4F5C\u6D41\uFF1A\u786C\u6027\u89C4\u5219\uFF08\u8D44\u6E90\u6309\u672C\u673A\u8DEF\u5F84\u53D6\u7528\u3001\u94FE\u63A5\u63D0\u53D6 item-id\uFF09\u3001DSL \u5B57\u6BB5\u8BED\u4E49\u3001\u89C6\u89C9\u6821\u9A8C\u3002",text:DM}]});var LM,qM,rg,pS=y(()=>{"use strict";LM="**\u4E25\u7981\u628A\u4EA7\u7269\u76EE\u5F55\u8DEF\u5F84\u5199\u8FDB\u4EA4\u4ED8\u4EE3\u7801**\uFF1ADSL \u8FD4\u56DE\u7684 `img` \u662F\u4EA7\u7269\u6587\u4EF6\u540D\uFF08\u5B8C\u6574\u8DEF\u5F84 = \u4EA7\u7269\u76EE\u5F55 + \u6587\u4EF6\u540D\uFF0C\u76EE\u5F55\u89C1\u5DE5\u5177 description\uFF09\u3002\u622A\u56FE\u7B49\u89C6\u89C9\u53C2\u7167\u7528 Read \u5DE5\u5177\u76F4\u8BFB\u5B8C\u6574\u8DEF\u5F84\u5373\u53EF\uFF1B\u8981\u5199\u8FDB\u4EA4\u4ED8\u4EE3\u7801\u7684\u56FE\u6807/\u56FE\u7247\u5FC5\u987B\u5148\u590D\u5236\u5230\u9879\u76EE\u8D44\u6E90\u76EE\u5F55\uFF08PowerShell `Copy-Item` / \u7C7B Unix `cp`\uFF09\uFF0C\u590D\u5236\u65F6\u6309\u8282\u70B9\u7528\u9014\u81EA\u884C\u547D\u540D\u8BED\u4E49\u5316\u6587\u4EF6\u540D\uFF08\u5982 `icon-arrow.svg`\uFF0C\u4E0D\u7528 hash \u540D\uFF09\uFF0C\u518D\u7528\u672C\u5730\u76F8\u5BF9\u8DEF\u5F84\u5F15\u7528\uFF08`<img src>`\u3001`background-image` \u7B49\uFF09\u3002\u4EA7\u7269\u9ED8\u8BA4 7 \u5929\u540E\u81EA\u52A8\u6E05\u626B\uFF1B\u4E25\u7981\u79FB\u52A8\u6216\u5220\u9664\u4EA7\u7269\u76EE\u5F55\u4E0B\u7684\u6587\u4EF6\u3002",qM={name:"design-to-code",description:"\u8BBE\u8BA1\u7A3F\u8F6C\u524D\u7AEF\u4EE3\u7801\uFF08\u6837\u5F0F\u8FD8\u539F/\u8BBE\u8BA1\u8FD8\u539F/UI \u8FD8\u539F\uFF09\uFF1A\u4ECE Pixso \u94FE\u63A5\u6216\u5F53\u524D\u9009\u533A\u53D6 DSL + \u622A\u56FE \u2192 \u751F\u6210 \u2192 \u622A\u56FE\u6821\u9A8C\u3002",arguments:[{name:"url",description:"Pixso \u94FE\u63A5\uFF08\u542B item-id \u67E5\u8BE2\u53C2\u6570\uFF0C\u4EFB\u610F\u57DF\u540D\uFF1A\u5B98\u65B9 pixso.cn \u6216\u79C1\u6709\u5316\u90E8\u7F72\uFF09\u3002\u7559\u7A7A\u5219\u4F7F\u7528\u753B\u5E03\u5F53\u524D\u9009\u4E2D\u56FE\u5C42\u3002",required:!1}],render:t=>{let e=t.url?.trim()?`\u76EE\u6807\u8282\u70B9\u6765\u81EA\u94FE\u63A5\uFF1A${t.url.trim()}\u3002\u5FC5\u987B\u4ECE\u67E5\u8BE2\u53C2\u6570 \`item-id\` \u63D0\u53D6\u8282\u70B9 guid \u5E76 URL \u89E3\u7801\uFF08\`1%3A2\` \u2192 \`"1:2"\`\uFF09\u540E\u4F5C\u4E3A guid \u4F20\u5165\uFF1B\u4E25\u7981\u628A\u6574\u4E2A URL \u5F53 guid \u4F20\u3002\u65E0\u8BBA\u57DF\u540D\u662F\u5426\u8BA4\u8BC6\uFF0C\u90FD\u6309\u6B64\u89C4\u5219\u5904\u7406\u3002`:'\u76EE\u6807\u8282\u70B9\u4E3A\u5F53\u524D\u9009\u533A\uFF1A\u8C03 `get_selected` \u62FF\u9009\u4E2D\u56FE\u5C42\u3002\u7981\u6B62\u9690\u5F0F\u4F7F\u7528\u5176 guid\u2014\u2014\u9664\u975E\u7528\u6237\u660E\u786E\u8BF4\u4E86"\u6211\u9009\u4E2D\u7684/\u5F53\u524D\u9009\u4E2D\u7684"\uFF0C\u5148\u628A\u9009\u4E2D\u56FE\u5C42\u540D\u79F0\u62A5\u7ED9\u7528\u6237\u786E\u8BA4\uFF08"\u5F53\u524D\u9009\u4E2D\u7684\u662F\u300CXX\u300D\uFF0C\u786E\u8BA4\u5904\u7406\u5B83\u5417\uFF1F"\uFF09\uFF0C\u786E\u8BA4\u540E\u518D\u7EE7\u7EED\u3002';return[{role:"user",content:{type:"text",text:["\u628A Pixso \u8BBE\u8BA1\u7A3F\u8FD8\u539F\u4E3A\u524D\u7AEF\u4EE3\u7801\u3002\u52A8\u624B\u524D\u5148\u8BB0\u4F4F\u4E0B\u9762\u7684\u786C\u6027\u89C4\u5219\uFF08\u8FDD\u53CD\u5373\u8FD4\u5DE5\uFF09\uFF1A","","## \u3010\u786C\u6027\u89C4\u5219\u3011","",`1. ${LM}`,"2. **\u5199\u4EE3\u7801\u524D\u5FC5\u987B\u5148\u8BFB**\u8D44\u6E90 `batter://guides/design-to-code`\uFF0C\u4E86\u89E3 DSL \u5B57\u6BB5\u8BED\u4E49\u3001\u8D44\u6E90\u5904\u7406\u7EC6\u8282\u4E0E\u591A\u6587\u4EF6\u8DEF\u7531\uFF08`target` \u53C2\u6570\uFF09\uFF1B\u603B\u89C8\u89C1 `batter://guides/intro`\u3002","","## \u6267\u884C\u6D41\u7A0B","",`1. \u786E\u8BA4\u76EE\u6807\u8282\u70B9\uFF1A${e}`,"2. \u53D6\u6570\u636E\uFF1A\u8C03 `get_node_dsl(guid)` \u62FF\u7ED3\u6784\u4E0E\u6837\u5F0F DSL\uFF08\u7ED3\u6784\u5F88\u5927\u65F6\u5148\u7528 `maxDepth: 0` \u770B\u6839\u8282\u70B9 `depth` \u9884\u5224\u89C4\u6A21\uFF0C\u518D\u5206\u6BB5\u4E0B\u63A2\u2014\u2014\u622A\u65AD\u5904\u8282\u70B9\u5E26 `more` \u6807\u8BB0\uFF0C\u62FF\u5176 `id` \u56DE\u4F20 `guid` \u7EE7\u7EED\u4E0B\u94BB\uFF09\uFF1B\u8C03 `get_screenshot(guid)` \u62FF\u89C6\u89C9\u53C2\u7167\u622A\u56FE\uFF08\u8FD4\u56DE\u6587\u4EF6\u540D\uFF0CRead \u76F4\u8BFB\u672C\u5730\u8DEF\u5F84\uFF09\u3002DSL \u4E2D\u5DF2\u5E26 `img` \u7684\u8282\u70B9\uFF08ICON/IMAGE \u53F6\u5B50\uFF09\u5DF2\u5B8C\u6210\u5BFC\u51FA\uFF0C\u76F4\u63A5\u7528\u5176\u6587\u4EF6\u540D\uFF0C\u4E0D\u8981\u518D\u8C03 `export_image`\u3002","3. \u751F\u6210\u4EE3\u7801\uFF1Aauto-layout \u76F4\u8BD1 flex\uFF1B\u989C\u8272/\u5706\u89D2/\u9634\u5F71\u7528 DSL \u7684 CSS \u503C\uFF1B\u56FE\u7247\u4E00\u5F8B\u7528\u5DF2\u590D\u5236\u5230\u9879\u76EE\u7684\u672C\u5730\u8DEF\u5F84\u3002",'4. \u81EA\u68C0\uFF1A\u518D\u6B21\u8C03 `get_screenshot(guid)`\uFF0C\u4E0E\u4EE3\u7801\u6E32\u67D3\u7ED3\u679C\u5BF9\u6BD4\uFF0C\u6709\u504F\u5DEE\u5C31\u4FEE\u6B63\u540E\u518D\u6BD4\u4E00\u8F6E\uFF08\u5BFC\u51FA\u7C7B\u5DE5\u5177\u5E26 15 \u5206\u949F\u7F13\u5B58\uFF1B\u7ED3\u679C\u7591\u4F3C\u8FC7\u671F\u65F6\u52A0 `cache: "refresh"` \u5F3A\u5236\u5237\u65B0\uFF09\u3002',"","**\u6700\u540E\u91CD\u7533**\uFF1A\u4EA4\u4ED8\u4EE3\u7801\u4E2D\u4E0D\u5141\u8BB8\u51FA\u73B0\u4EA7\u7269\u76EE\u5F55\u7684\u7EDD\u5BF9\u8DEF\u5F84\uFF0C\u5168\u90E8\u56FE\u7247\u5FC5\u987B\u662F\u5DF2\u590D\u5236\u5230\u9879\u76EE\u7684\u672C\u5730\u76F8\u5BF9\u8DEF\u5F84\u3002"].join(`
|
|
557
|
+
`)}}]}},rg=[qM]});var fS,mS=y(()=>{"use strict";To();fS=[{name:"list_sessions",description:"\u3010\u7528\u9014\u3011\u5217\u51FA\u5F53\u524D\u8FDE\u63A5\u5230\u672C\u670D\u52A1\u7684\u6240\u6709 Pixso \u63D2\u4EF6\u4F1A\u8BDD\uFF08sessionId\u3001\u6587\u4EF6\u3001\u9875\u9762\u3001\u5728\u7EBF\u72B6\u6001\uFF09\u3002\u6BCF\u4E2A\u8FD0\u884C\u63D2\u4EF6\u7684\u8BBE\u8BA1\u6587\u4EF6\u5BF9\u5E94\u4E00\u4E2A\u4F1A\u8BDD\u3002\u3010\u547D\u4E2D\u4FE1\u53F7\u3011\u591A\u4E2A Pixso \u6587\u4EF6\u540C\u65F6\u8FD0\u884C\u63D2\u4EF6\u65F6\uFF0C\u5148\u7528\u672C\u5DE5\u5177\u786E\u8BA4\u76EE\u6807\u6587\u4EF6\uFF1B\u53EA\u6709\u4E00\u4E2A\u4F1A\u8BDD\u65F6\u65E0\u9700\u5173\u6CE8\u672C\u5DE5\u5177\u3002\u3010\u8FD4\u56DE\u3011\u4F1A\u8BDD\u5217\u8868 JSON\u3002\u628A sessionId \u6216 fileKey \u4F5C\u4E3A get_selected / get_node_dsl / get_screenshot / export_image \u7684 target \u53C2\u6570\u4F20\u5165\u5373\u8DEF\u7531\u5230\u5BF9\u5E94\u6587\u4EF6\uFF1B\u4E0D\u4F20 target \u65F6\u8DEF\u7531\u5230\u6700\u8FD1\u6D3B\u8DC3\u7684\u6587\u4EF6\u3002\u591A\u6587\u4EF6\u8DEF\u7531\u8BE6\u89C1\u8D44\u6E90 batter://guides/intro\u3002",inputSchema:{type:"object",properties:{}},handler:async()=>{let t=ct.list();return{content:[{type:"text",text:t.length?JSON.stringify(t):"\u5F53\u524D\u6CA1\u6709\u63D2\u4EF6\u8FDE\u63A5\uFF1A\u8BF7\u5728 Pixso \u5BA2\u6237\u7AEF\u4E2D\u8FD0\u884C Batter Pixso Bridge \u63D2\u4EF6\u3002"}]}}}]});var ng,Po,og=y(()=>{"use strict";We();To();ng=class{queues=new Map;pollWaiters=new Map;sseListeners=new Map;pendingById=new Map;seq=0;execute(e,r,n={}){let o=ct.resolve(n.target),s=n.timeoutMs??6e4,{promise:i,resolve:a,reject:c}=Promise.withResolvers(),u={id:`cmd-${++this.seq}`,type:e,args:r},l={command:u,sessionId:o.id,resolve:a,reject:c,dispatched:!1,timer:setTimeout(()=>{this.drop(l),c(new Error(`\u547D\u4EE4 ${u.id} \u8D85\u65F6\uFF1A\u63D2\u4EF6 ${s/1e3}s \u5185\u672A\u8FD4\u56DE\u7ED3\u679C`))},s)};return n.signal?.addEventListener("abort",()=>{this.pendingById.has(u.id)&&(this.drop(l),c(new Error(`\u547D\u4EE4 ${u.id} \u5DF2\u88AB\u8C03\u7528\u65B9\u53D6\u6D88`)))}),this.pendingById.set(u.id,l),this.queueOf(o.id).push(l),this.dispatch(o.id),i}async take(e,r=25e3){let n=this.nextUndispatched(e);if(n)return n.dispatched=!0,ie(`dispatch command ${n.command.id}: ${n.command.type} -> session ${e.slice(0,8)} (poll)`),n.command;let{promise:o,resolve:s}=Promise.withResolvers(),i=this.waitersOf(e);return i.push(s),setTimeout(()=>{let a=i.indexOf(s);a>=0&&(i.splice(a,1),s(null))},r),o}subscribe(e,r){let n=this.sseListeners.get(e);return n||(n=new Set,this.sseListeners.set(e,n)),n.add(r),this.dispatch(e),()=>{n.delete(r),n.size===0&&this.sseListeners.delete(e)}}complete(e,r,n){let o=this.pendingById.get(e);return o?(this.drop(o),r?o.resolve(n):o.reject(n instanceof Error?n:new Error(String(n))),!0):!1}dispatch(e){let r=this.nextUndispatched(e);if(!r)return;let n=this.sseListeners.get(e);if(n&&n.size>0){r.dispatched=!0,ie(`dispatch command ${r.command.id}: ${r.command.type} -> session ${e.slice(0,8)} (sse)`);for(let s of n)s(r.command);return}let o=this.waitersOf(e).shift();o&&(r.dispatched=!0,ie(`dispatch command ${r.command.id}: ${r.command.type} -> session ${e.slice(0,8)} (poll)`),o(r.command))}nextUndispatched(e){return this.queueOf(e).find(r=>!r.dispatched)}queueOf(e){let r=this.queues.get(e);return r||(r=[],this.queues.set(e,r)),r}waitersOf(e){let r=this.pollWaiters.get(e);return r||(r=[],this.pollWaiters.set(e,r)),r}drop(e){clearTimeout(e.timer),this.pendingById.delete(e.command.id);let r=this.queues.get(e.sessionId);r&&this.queues.set(e.sessionId,r.filter(n=>n!==e))}},Po=new ng});function UM(t){return{content:[{type:"text",text:JSON.stringify(t)}]}}function VM(t){return{content:[{type:"text",text:t instanceof Error?t.message:String(t)}],isError:!0}}async function qc(t,e,r){let{target:n,...o}=e;try{return UM(await Po.execute(t,o,{target:n,signal:r}))}catch(s){return VM(s)}}var FM,hS,sg,ig,HM,Uc,ag,cg,gS,_S=y(()=>{"use strict";Si();og();FM='\u2460 \u94FE\u63A5\u8F93\u5165\uFF1A\u5FC5\u987B\u4ECE item-id \u67E5\u8BE2\u53C2\u6570\u63D0\u53D6\u8282\u70B9 guid \u5E76 URL \u89E3\u7801\uFF081%3A2 \u2192 "1:2"\uFF09\uFF0C\u628A\u89E3\u7801\u503C\u4F5C\u4E3A guid \u4F20\u5165\uFF1B\u4E25\u7981\u628A\u6574\u4E2A URL \u5F53 guid \u4F20\u3002\u4EFB\u610F\u57DF\u540D\u90FD\u6709\u6548\uFF1A\u5B98\u65B9 pixso.cn \u6216\u79C1\u6709\u5316\u90E8\u7F72\uFF08\u5982 pixso.ky-tech.com.cn\uFF09\uFF0C\u683C\u5F0F\u5F62\u5982 https://<\u57DF\u540D>/app/design/<\u6587\u4EF6>?item-id=1%3A2\uFF08\u4E5F\u53EF\u80FD\u662F /app/editor/ \u8DEF\u5F84\uFF09\u3002',hS="\u2460 \u94FE\u63A5\u8F93\u5165\uFF1A\u5FC5\u987B\u4ECE item-id \u63D0\u53D6 guid \u5E76 URL \u89E3\u7801\u540E\u4F20\u5165\uFF0C\u4E25\u7981\u4F20\u6574\u4E2A URL\uFF08\u89C4\u5219\u5168\u6587\u89C1 get_node_dsl\uFF09\u3002",sg='\u2461 \u9009\u4E2D\u56DE\u9000\uFF1A\u672A\u4F20 guid \u65F6\u56DE\u9000\u5F53\u524D\u9009\u4E2D\u56FE\u5C42\uFF0C\u4F46\u4E25\u7981\u9690\u5F0F\u4F7F\u7528\u2014\u2014\u9664\u975E\u7528\u6237\u660E\u786E\u8BF4\u4E86"\u6211\u9009\u4E2D\u7684/\u5F53\u524D\u9009\u4E2D\u7684"\uFF0C\u5FC5\u987B\u5148\u8C03 get_selected \u628A\u9009\u4E2D\u56FE\u5C42\u540D\u79F0\u62A5\u7ED9\u7528\u6237\u786E\u8BA4\uFF08\u89C4\u5219\u5168\u6587\u89C1 get_selected\uFF09\u3002',ig=`\u2462 \u8D44\u6E90\uFF1Aimg \u662F\u4EA7\u7269\u6587\u4EF6\u540D\uFF08\u5185\u5BB9 hash \u547D\u540D\uFF0C\u5982 "6a4d1730d46bae01.svg"\uFF09\uFF0C\u5B8C\u6574\u672C\u5730\u8DEF\u5F84 = ${$g()}\\<\u6587\u4EF6\u540D>\uFF08\u672C\u673A\u6587\u4EF6\uFF0C\u76F4\u63A5\u8BFB\u6587\u4EF6\u7CFB\u7EDF\uFF09\u3002\u622A\u56FE\u7B49\u89C6\u89C9\u53C2\u7167\u7528 Read \u5DE5\u5177\u76F4\u8BFB\u8BE5\u8DEF\u5F84\uFF0C\u65E0\u9700\u590D\u5236\uFF1B\u8981\u5199\u8FDB\u4EA4\u4ED8\u4EE3\u7801\u7684\u56FE\u6807/\u56FE\u7247\u5FC5\u987B\u5148\u590D\u5236\u5230\u9879\u76EE\u8D44\u6E90\u76EE\u5F55\uFF08PowerShell: Copy-Item "<\u5B8C\u6574\u8DEF\u5F84>" "<\u9879\u76EE\u76EE\u5F55>"\uFF1B\u7C7B Unix: cp "<\u5B8C\u6574\u8DEF\u5F84>" "<\u9879\u76EE\u76EE\u5F55>"\uFF09\uFF0C\u518D\u4EE5\u672C\u5730\u76F8\u5BF9\u8DEF\u5F84\u5F15\u7528\u3002\u590D\u5236\u65F6\u5FC5\u987B\u6309\u8282\u70B9\u7528\u9014\u81EA\u884C\u547D\u540D\u8BED\u4E49\u5316\u76EE\u6807\u6587\u4EF6\u540D\uFF08\u5982 icon-arrow.svg\u3001hero-banner.png\uFF1Bexport_image \u8FD4\u56DE\u7684 suffix \u5EFA\u8BAE\u4FDD\u7559\uFF09\uFF0C\u4E25\u7981\u628A hash \u6587\u4EF6\u540D\u5E26\u8FDB\u4EA4\u4ED8\u4EE3\u7801\u3002\u4E25\u7981\u76F4\u63A5\u5F15\u7528\u4EA7\u7269\u76EE\u5F55\u7684\u7EDD\u5BF9\u8DEF\u5F84\uFF08\u4EA7\u7269\u9ED8\u8BA4 7 \u5929\u540E\u81EA\u52A8\u6E05\u626B\uFF0C\u5F15\u7528\u4F1A\u5931\u6548\uFF09\uFF0C\u4E25\u7981\u79FB\u52A8\u6216\u5220\u9664\u4EA7\u7269\u76EE\u5F55\u4E0B\u7684\u6587\u4EF6\uFF08\u591A\u4F1A\u8BDD\u5171\u4EAB\uFF0C\u6E05\u626B\u7531\u670D\u52A1\u7EDF\u4E00\u8D1F\u8D23\uFF09\u3002`,HM='\u5B57\u6BB5\u56FE\u4F8B\uFF1Aid=\u8282\u70B9 guid\uFF08\u53EF\u56DE\u4F20\u4E3A guid \u53C2\u6570\u5BF9\u5B50\u8282\u70B9\u4E0B\u94BB\u8C03\u7528\uFF09\uFF1Bname=\u56FE\u5C42\u540D\uFF08\u81EA\u52A8\u547D\u540D\u5982 "Frame 3123" \u5DF2\u7701\u7565\uFF09\uFF1Btype=\u8282\u70B9\u7C7B\u578B\uFF0CICON/IMAGE \u4E3A\u584C\u7F29\u53F6\u5B50\uFF1Brect=[x,y,w,h] \u7EDD\u5BF9\u5B9A\u4F4D\uFF08\u6839\u8282\u70B9\u4E0E\u7EDD\u5BF9\u5B9A\u4F4D\u5BB9\u5668\u7684\u5B50\u8282\u70B9\uFF09\uFF1Bsize=[w,h]\uFF08auto-layout \u5B50\u8282\u70B9\uFF0Cx/y \u7531\u7236\u7EA7 layout \u63A8\u5BFC\u6545\u7701\u7565\uFF09\uFF1Blayout={dir:row|column, gap, pad:[\u4E0A,\u53F3,\u4E0B,\u5DE6], align:[\u4E3B\u8F74,\u4EA4\u53C9\u8F74](start|center|end|space-between|baseline), sizing:[\u4E3B\u8F74,\u4EA4\u53C9\u8F74](hug|fixed|fill)}\uFF1Bconstraints={h,v} \u7EDD\u5BF9\u5B9A\u4F4D\u5B50\u8282\u70B9\u7EA6\u675F\uFF08\u9ED8\u8BA4 left/top \u7701\u7565\uFF09\uFF1Btext={content, size=\u5B57\u53F7, font=\u5B57\u65CF, weight=\u5B57\u91CD, lh=\u884C\u9AD8, align=\u6C34\u5E73\u5BF9\u9F50, color, deco=underline|line-through, ls=\u5B57\u8DDD px, link, segs=\u6DF7\u6392\u5206\u6BB5}\uFF08segs \u6BCF\u6BB5\u53EA\u5E26\u4E0E base \u4E0D\u540C\u7684\u5B57\u6BB5\uFF0C\u6570\u7EC4\u987A\u5E8F\u5373\u5B57\u7B26\u504F\u79FB\uFF09\uFF1Bimg=\u8D44\u6E90\u6587\u4EF6\u540D\uFF1Bkids=\u5B50\u8282\u70B9\u6570\u7EC4\uFF1Bpalette=\u8C03\u8272\u677F\uFF08\u4EC5\u6839\u8282\u70B9\uFF09\u3002depth=\u6574\u68F5\u6811\u5B9E\u9645\u6700\u5927\u6DF1\u5EA6\uFF08\u4EC5\u6839\u8282\u70B9\uFF0C\u603B\u662F\u8F93\u51FA\uFF0C\u4E0E\u622A\u65AD\u65E0\u5173\uFF09\uFF1Bmore=\u8BE5\u8282\u70B9\u4E0B\u672A\u5C55\u5F00\u7684\u5269\u4F59\u5C42\u7EA7\u6570\uFF08\u4EC5\u56E0 maxDepth \u622A\u65AD\u65F6\u51FA\u73B0\uFF0C\u62FF id \u56DE\u4F20 guid \u53EF\u7EE7\u7EED\u4E0B\u94BB\uFF09\u3002\u7701\u7565\u89C4\u5219\uFF1A\u9ED8\u8BA4\u503C\u4E0D\u8F93\u51FA\uFF08text.align=left\u3001lh=normal\u3001weight=Regular\u3001gap=0\u3001pad \u5168 0\uFF09\u3002\u8C03\u8272\u677F\uFF1A\u51FA\u73B0\u22652 \u6B21\u7684\u5355\u8272\u63D0\u53D6\u5230\u6839\u8282\u70B9 palette \u6570\u7EC4\uFF0Cfills/text.color/stroke \u4E2D\u7684 "p0""p1" \u4E3A palette \u4E0B\u6807\u5F15\u7528\uFF1Bshadow/gradient \u7B49\u590D\u5408 CSS \u4E32\u5185\u7684\u989C\u8272\u4FDD\u6301\u5B57\u9762\u503C\uFF0C\u4E0D\u67E5\u8868\u3002',Uc={type:"string",description:"\u76EE\u6807\u63D2\u4EF6\u4F1A\u8BDD\uFF08sessionId \u6216 fileKey\uFF09\u3002\u4EC5\u5F53\u591A\u4E2A Pixso \u6587\u4EF6\u540C\u65F6\u8FD0\u884C\u63D2\u4EF6\u65F6\u9700\u8981\u6307\u5B9A\uFF1B\u7F3A\u7701\u8DEF\u7531\u5230\u6700\u8FD1\u6D3B\u8DC3\u7684\u6587\u4EF6\u3002\u53EF\u7528 list_sessions \u67E5\u770B\u5F53\u524D\u4F1A\u8BDD\u3002"},ag={type:"string",enum:["first","refresh"],description:"\u7F13\u5B58\u7B56\u7565\uFF1Afirst=\u7F13\u5B58\u4F18\u5148\uFF08\u9ED8\u8BA4\uFF0C15 \u5206\u949F\u5185\u76F8\u540C\u8C03\u7528\u76F4\u63A5\u8FD4\u56DE\u7F13\u5B58\uFF09\uFF1Brefresh=\u4E0D\u8BFB\u7F13\u5B58\u3001\u5F3A\u5236\u91CD\u65B0\u6784\u5EFA/\u5BFC\u51FA\uFF0C\u7ED3\u679C\u4ECD\u5199\u5165\u7F13\u5B58\u3002\u8BBE\u8BA1\u7A3F\u521A\u4FEE\u6539\u8FC7\u4E14\u7ED3\u679C\u5BF9\u4E0D\u4E0A\u65F6\u7528 refresh\u3002"},cg={type:"string",description:'\u8282\u70B9 GUID\uFF08\u5982 "297:133032"\uFF09\u3002\u94FE\u63A5\u8F93\u5165\uFF1A\u4ECE item-id \u67E5\u8BE2\u53C2\u6570\u63D0\u53D6\u5E76 URL \u89E3\u7801\u540E\u4F20\u5165\uFF1B\u7F3A\u7701\u56DE\u9000\u5F53\u524D\u9009\u4E2D\u56FE\u5C42\uFF0C\u4F46\u7981\u6B62\u9690\u5F0F\u4F7F\u7528\u8BE5\u56DE\u9000\uFF08\u9009\u4E2D\u786E\u8BA4\u89C4\u5219\u89C1\u5DE5\u5177 description\uFF09\u3002'},gS=[{name:"get_selected",description:'\u3010\u7528\u9014\u3011\u83B7\u53D6 Pixso \u753B\u5E03\u5F53\u524D\u9009\u4E2D\u7684\u56FE\u5C42\u5217\u8868\uFF08guid\u3001\u540D\u79F0\u3001\u7C7B\u578B\u3001\u5C3A\u5BF8\uFF09\uFF0C\u5B9E\u65F6\u8BFB\u53D6\u3002\u3010\u547D\u4E2D\u4FE1\u53F7\u3011\u7528\u6237\u8BF4"\u8FD9\u4E2A/\u5F53\u524D\u9009\u4E2D\u7684"\u56FE\u5C42\u3001\u7EC4\u4EF6\u6216\u5143\u7D20\u3002\u7528\u6237\u5DF2\u63D0\u4F9B Pixso \u94FE\u63A5\u65F6\u4E0D\u8981\u8C03\u672C\u5DE5\u5177\u2014\u2014\u76F4\u63A5\u4ECE\u94FE\u63A5\u63D0\u53D6 guid\uFF08\u89C4\u5219\u89C1 get_node_dsl\uFF09\u3002\u591A\u6587\u4EF6\u8DEF\u7531\u7528 list_sessions\uFF0C\u4E0D\u7528\u672C\u5DE5\u5177\u3002\u3010\u8FD4\u56DE\u3011\u9009\u4E2D\u56FE\u5C42\u5217\u8868 JSON\u3002\u3010\u786C\u6027\u89C4\u5219\u3011\u4E25\u7981\u9690\u5F0F\u4F7F\u7528\u672C\u5DE5\u5177\u8FD4\u56DE\u7684 guid\uFF1A\u4EC5\u5F53\u7528\u6237\u660E\u786E\u8BF4\u4E86"\u6211\u9009\u4E2D\u7684/\u5F53\u524D\u9009\u4E2D\u7684"\uFF0C\u62FF\u5230 guid \u624D\u53EF\u76F4\u63A5\u7EE7\u7EED\uFF1B\u5176\u4F59\u573A\u666F\u5FC5\u987B\u5148\u628A\u9009\u4E2D\u56FE\u5C42\u540D\u79F0\u62A5\u7ED9\u7528\u6237\u786E\u8BA4\uFF08"\u5F53\u524D\u9009\u4E2D\u7684\u662F\u300CXX\u300D\uFF0C\u786E\u8BA4\u5904\u7406\u5B83\u5417\uFF1F"\uFF09\uFF0C\u786E\u8BA4\u540E\u624D\u80FD\u628A guid \u4F20\u7ED9\u5176\u4ED6\u5DE5\u5177\u2014\u2014\u907F\u514D\u9009\u533A\u7406\u89E3\u9519\u800C\u767D\u505A\u3002',inputSchema:{type:"object",properties:{target:Uc}},handler:(t,e)=>qc("get_selected",t,e?.signal)},{name:"get_node_dsl",description:'\u3010\u7528\u9014\u3011\u751F\u6210\u8282\u70B9\u7684\u5F00\u53D1\u5411\u7D27\u51D1 DSL\uFF08\u7ED3\u6784+\u6837\u5F0F+\u8D44\u6E90\u6587\u4EF6\u540D\uFF09\uFF0C\u8BBE\u8BA1\u8F6C\u4EE3\u7801\u7684\u6838\u5FC3\u5165\u53E3\uFF0C\u4F18\u5148\u7528\u672C\u5DE5\u5177\u7406\u89E3\u8BBE\u8BA1\u7ED3\u6784\u3002\u3010\u547D\u4E2D\u4FE1\u53F7\u3011\u7528\u6237\u8981\u6C42"\u6837\u5F0F\u8FD8\u539F/\u8BBE\u8BA1\u8FD8\u539F/UI \u8FD8\u539F/\u8BBE\u8BA1\u8F6C\u4EE3\u7801/\u6839\u636E\u8BBE\u8BA1\u7A3F\u6216\u8BBE\u8BA1\u56FE\u5199\u9875\u9762\u3001\u7EC4\u4EF6"\uFF0C\u6216\u7ED9\u51FA Pixso \u94FE\u63A5\uFF08\u4EFB\u610F\u57DF\u540D\uFF09\u65F6\uFF0C\u9ED8\u8BA4\u4ECE\u672C\u5DE5\u5177\u5F00\u59CB\u3002\u7ED3\u6784\u590D\u6742\u60F3\u5148\u770B\u6574\u4F53\u6846\u67B6\u65F6\uFF1AmaxDepth \u4F20 0 \u53EA\u62FF\u6839\u8282\u70B9\uFF08depth \u5B57\u6BB5=\u6574\u6811\u5B9E\u9645\u6DF1\u5EA6\uFF09\u9884\u5224\u89C4\u6A21\uFF0C\u518D\u5BF9\u5E26 more \u6807\u8BB0\u7684\u5B50\u6811\u5206\u6BB5\u4E0B\u94BB\u3002\u3010\u8FD4\u56DE\u3011\u5355\u884C\u7D27\u51D1 JSON\u3002'+HM+"\u53F6\u5B50\u584C\u7F29\u89C4\u5219\uFF1Aicon/\u7EAF\u77E2\u91CF\u5C0F\u8282\u70B9\uFF08\u226464px \u65E0\u6587\u672C\uFF09\u5BFC\u51FA SVG\u3001\u56FE\u7247\u586B\u5145\u8282\u70B9\u5BFC\u51FA PNG\u3001\u8BBE\u8BA1\u5E08\u6807\u8BB0\u6309\u5176\u8BBE\u7F6E\u5BFC\u51FA\u3002\u5DF2\u5E26 img \u7684\u8282\u70B9\u5373\u5B8C\u6210\u5BFC\u51FA\uFF0C\u76F4\u63A5\u4F7F\u7528\u5176\u6587\u4EF6\u540D\uFF0C\u65E0\u9700\u518D\u8C03 export_image\u3002DSL \u662F\u6709\u635F\u7CBE\u7B80\uFF08\u7701\u7565\u8499\u7248\u3001\u5E03\u5C14\u8FD0\u7B97\u8DEF\u5F84\u7B49\uFF09\uFF0C\u89C6\u89C9\u590D\u6742\u8282\u70B9\u914D\u5408 get_screenshot \u5BF9\u7167\u3002\u5B57\u6BB5\u8BED\u4E49\u8BE6\u89C1\u8D44\u6E90 batter://guides/design-to-code\u3002\u3010\u786C\u6027\u89C4\u5219\u3011"+FM+sg+ig,inputSchema:{type:"object",properties:{guid:cg,maxDepth:{type:"number",description:"\u4E0B\u63A2\u5B50\u8282\u70B9\u7684\u6700\u5927\u6DF1\u5EA6\uFF08\u6839\u8282\u70B9\u4E3A\u7B2C 0 \u5C42\uFF09\uFF0C\u7F3A\u7701\u4E0D\u9650\u3002\u7B2C N \u5C42\u8282\u70B9\u82E5\u4ECD\u6709\u5B50\u8282\u70B9\u5219\u5E26 more \u5B57\u6BB5\uFF08\u5269\u4F59\u672A\u5C55\u5F00\u5C42\u7EA7\u6570\uFF09\uFF0C\u62FF\u5176 id \u56DE\u4F20 guid \u53EF\u7EE7\u7EED\u4E0B\u94BB\u3002\u4F20 0 \u53EA\u8FD4\u56DE\u6839\u8282\u70B9\uFF1A\u914D\u5408\u6839\u8282\u70B9 depth \u5B57\u6BB5\uFF08\u6574\u6811\u5B9E\u9645\u6DF1\u5EA6\uFF09\u5EC9\u4EF7\u9884\u5224\u89C4\u6A21\uFF0C\u518D\u51B3\u5B9A\u4E0B\u94BB\u7B56\u7565\u3002"},cache:ag,target:Uc}},handler:(t,e)=>qc("get_node_dsl",t,e?.signal)},{name:"export_image",description:'\u3010\u7528\u9014\u3011\u6309 guid \u5BFC\u51FA\u56FE\u7247\u7D20\u6750\uFF08\u5207\u56FE\uFF09\uFF0C\u4EA7\u7269\u4F9B\u4EA4\u4ED8\u4EE3\u7801\u4F7F\u7528\u3002\u6BCF\u6B21\u53EA\u5904\u7406\u4E00\u4E2A\u8282\u70B9\uFF1B\u591A\u8282\u70B9\u573A\u666F\u9010\u4E2A\u8C03\u7528\u3002\u4EC5\u7528\u4E8E DSL \u4E2D\u672A\u584C\u7F29\u7684\u8282\u70B9\u2014\u2014get_node_dsl \u8FD4\u56DE\u91CC\u5DF2\u5E26 img \u5B57\u6BB5\u7684\u8282\u70B9\uFF08ICON/IMAGE \u53F6\u5B50\uFF09\u5728\u53D6 DSL \u65F6\u5DF2\u5B8C\u6210\u5BFC\u51FA\uFF0C\u76F4\u63A5\u4F7F\u7528\u5176 img \u6587\u4EF6\u540D\u5373\u53EF\uFF0C\u4E25\u7981\u5BF9\u8FD9\u7C7B\u8282\u70B9\u91CD\u590D\u8C03\u7528\u672C\u5DE5\u5177\u3002\u3010\u547D\u4E2D\u4FE1\u53F7\u3011\u7528\u6237\u8981"\u5207\u56FE/\u5BFC\u51FA\u56FE\u6807/\u5BFC\u51FA\u56FE\u7247\u7D20\u6750/\u628A\u67D0\u4E2A\u8282\u70B9\u5B58\u6210\u56FE\u7247"\uFF0C\u6216\u8BBE\u8BA1\u8FD8\u539F\u4E2D\u9700\u8981\u63D0\u53D6\u56FE\u7247\u8D44\u6E90\u3002\u8981\u89C6\u89C9\u53C2\u7167/\u8FD8\u539F\u5EA6\u6821\u9A8C\u7528 get_screenshot\u3002\u3010\u8FD4\u56DE\u3011{width, height, exports: [{img, format, scale?, suffix?}]}\uFF1A\u8282\u70B9\u5E26\u8BBE\u8BA1\u5E08\u5BFC\u51FA\u8BBE\u7F6E\uFF08exportSettings\uFF09\u65F6\u6309\u5176\u8BBE\u7F6E\u9010\u4EFD\u5BFC\u51FA\uFF08\u683C\u5F0F/\u500D\u7387/\u540E\u7F00\u5168\u90E8\u751F\u6548\uFF0Cformat/scale \u53C2\u6570\u65E0\u6548\uFF09\uFF1B\u65E0\u6807\u8BB0\u8282\u70B9\u6309\u53C2\u6570\u5BFC\u51FA\u5355\u4EFD\uFF08\u9ED8\u8BA4 PNG\u30012x\uFF09\u3002img \u4E3A\u4EA7\u7269\u6587\u4EF6\u540D\uFF1Bsuffix \u4E3A\u8BBE\u8BA1\u5E08\u8BBE\u7F6E\u7684\u6587\u4EF6\u540D\u540E\u7F00\uFF08\u5982 "@2x"\uFF09\uFF0C\u590D\u5236\u8FDB\u9879\u76EE\u65F6\u5EFA\u8BAE\u4FDD\u7559\u547D\u540D\u3002\u3010\u786C\u6027\u89C4\u5219\u3011'+hS+sg+ig,inputSchema:{type:"object",properties:{guid:cg,format:{type:"string",enum:["PNG","SVG","JPG"],description:"\u65E0\u5BFC\u51FA\u6807\u8BB0\u65F6\u7684\u515C\u5E95\u683C\u5F0F\uFF0C\u9ED8\u8BA4 PNG\u3002\u8282\u70B9\u5E26\u5BFC\u51FA\u6807\u8BB0\u65F6\u6B64\u53C2\u6570\u65E0\u6548\u3002"},scale:{type:"number",description:"\u65E0\u5BFC\u51FA\u6807\u8BB0\u65F6\u7684\u515C\u5E95\u500D\u7387\uFF0C\u9ED8\u8BA4 2\u3002\u8282\u70B9\u5E26\u5BFC\u51FA\u6807\u8BB0\u65F6\u6B64\u53C2\u6570\u65E0\u6548\u3002"},cache:ag,target:Uc}},handler:(t,e)=>qc("export_image",t,e?.signal)},{name:"get_screenshot",description:'\u3010\u7528\u9014\u3011\u5BFC\u51FA\u5355\u4E2A\u8282\u70B9\u7684\u622A\u56FE\uFF0C\u7528\u4E8E\u83B7\u53D6\u8BBE\u8BA1\u7684\u89C6\u89C9\u53C2\u7167\u3002\u6BCF\u6B21\u53EA\u5904\u7406\u4E00\u4E2A\u8282\u70B9\uFF1B\u591A\u8282\u70B9\u573A\u666F\u9010\u4E2A\u8C03\u7528\u3002\u8981\u5207\u56FE/\u5BFC\u51FA\u4EA4\u4ED8\u7D20\u6750\u7528 export_image\u3002\u3010\u547D\u4E2D\u4FE1\u53F7\u3011\u7528\u6237\u8BF4"\u770B\u770B\u8FD9\u4E2A\u8BBE\u8BA1\u7A3F/\u8BBE\u8BA1\u56FE\u957F\u4EC0\u4E48\u6837""\u7ED9\u6211\u622A\u56FE"\uFF0C\u6216\u8FD8\u539F\u7C7B\u4EFB\u52A1\u9700\u8981\u89C6\u89C9\u53C2\u7167\u3001\u8FD8\u539F\u5EA6\u6821\u9A8C\u3001\u6837\u5F0F\u5BF9\u6BD4\u3002\u751F\u6210\u4EE3\u7801\u540E\u53EF\u518D\u6B21\u8C03\u7528\u672C\u5DE5\u5177\u5BF9\u6BD4\u8FD8\u539F\u5EA6\uFF1B\u5EFA\u8BAE\u4E0E get_node_dsl \u914D\u5408\uFF1ADSL \u5B9A\u7ED3\u6784\uFF0C\u622A\u56FE\u6821\u9A8C\u89C6\u89C9\u3002\u3010\u8FD4\u56DE\u3011{img: \u4EA7\u7269\u6587\u4EF6\u540D, width, height, format}\u3002\u3010\u786C\u6027\u89C4\u5219\u3011'+hS+sg+ig,inputSchema:{type:"object",properties:{guid:cg,format:{type:"string",enum:["PNG","SVG","JPG","WEBP"],description:"\u5BFC\u51FA\u683C\u5F0F\uFF0C\u9ED8\u8BA4 PNG\u3002\u622A\u56FE\u7528\u9014\u7528 PNG\uFF1B\u7EAF\u56FE\u5F62\u60F3\u62FF\u77E2\u91CF\u518D\u9009 SVG\u3002"},scale:{type:"number",description:"\u5BFC\u51FA\u500D\u7387\uFF0C\u9ED8\u8BA4 2\u3002"},cache:ag,target:Uc}},handler:(t,e)=>qc("get_screenshot",t,e?.signal)}]});function yS(){let t=new Set,e=[];for(let r of BM)t.has(r.name)||(t.add(r.name),e.push({def:r,tool:{name:r.name,description:r.description,inputSchema:r.inputSchema}}));return e}var BM,vS=y(()=>{"use strict";mS();_S();BM=[...gS,...fS]});function wS(){let t=new Lc({name:"batter-pixso-mcp",version:Ht},{capabilities:{tools:{},resources:{},prompts:{}},instructions:JM});for(let n of lS)t.registerResource(n.name,n.uri,{description:n.description,mimeType:"text/markdown",annotations:{audience:["assistant"],priority:.9}},async o=>({contents:[{uri:o.href,mimeType:"text/markdown",text:n.text}]}));t.server.setRequestHandler(Ln,async()=>({resourceTemplates:[]}));let e=yS(),r={};for(let n of e)r[n.def.name]=n;return t.server.setRequestHandler(Vn,async()=>({tools:e.map(n=>n.tool)})),t.server.setRequestHandler(Ir,async(n,o)=>{let{name:s,arguments:i={}}=n.params,a=r[s];if(!a)throw new Error(`unknown tool: ${s}`);let c=i;a.def.beforeCall&&(c=a.def.beforeCall(c));let u=await a.def.handler(c,{signal:o.signal});return a.def.afterCall&&(u=a.def.afterCall(u)),u}),t.server.setRequestHandler(qn,async()=>({prompts:rg.map(n=>({name:n.name,description:n.description,arguments:n.arguments}))})),t.server.setRequestHandler(Un,async n=>{let o=rg.find(i=>i.name===n.params.name);if(!o)throw new Error(`unknown prompt: ${n.params.name}`);let s=n.params.arguments??{};return{description:o.description,messages:o.render(s)}}),t}var JM,bS=y(()=>{"use strict";uS();rt();We();dS();pS();vS();JM='Pixso \u8BBE\u8BA1\u7A3F\u8F6C\u4EE3\u7801\u670D\u52A1\u3002\u6309\u7528\u6237\u8F93\u5165\u8DEF\u7531\uFF1A\u2460 \u7ED9\u51FA Pixso \u94FE\u63A5\uFF08\u4EFB\u610F\u57DF\u540D\uFF0C\u542B\u79C1\u6709\u5316\u90E8\u7F72\uFF09\u2192 \u4ECE item-id \u63D0\u53D6 guid\uFF08URL \u89E3\u7801\uFF09\uFF0C\u76F4\u63A5\u8C03 get_node_dsl / get_screenshot / export_image\uFF1B\u2461 \u8BF4"\u6211\u9009\u4E2D\u7684/\u5F53\u524D\u9009\u4E2D\u7684"\u2192 get_selected \u62FF guid \u7EE7\u7EED\uFF1B\u5176\u4ED6\u4F9D\u8D56\u9009\u533A\u7684\u573A\u666F\u5148 get_selected \u518D\u5411\u7528\u6237\u62A5\u540D\u79F0\u786E\u8BA4\uFF1B\u2462 "\u6837\u5F0F\u8FD8\u539F/\u8BBE\u8BA1\u8FD8\u539F/UI \u8FD8\u539F/\u8BBE\u8BA1\u8F6C\u4EE3\u7801/\u6839\u636E\u8BBE\u8BA1\u7A3F\u5199\u9875\u9762\u6216\u7EC4\u4EF6"\u2192 get_node_dsl \u53D6\u7ED3\u6784\u6837\u5F0F + get_screenshot \u53D6\u89C6\u89C9\u53C2\u7167\uFF1B\u2463 "\u5207\u56FE/\u5BFC\u51FA\u56FE\u6807\u6216\u56FE\u7247\u7D20\u6750"\u2192 export_image\uFF08\u5C0A\u91CD\u8BBE\u8BA1\u5E08\u5BFC\u51FA\u6807\u8BB0\uFF1BDSL \u91CC\u5DF2\u5E26 img \u7684\u8282\u70B9\u76F4\u63A5\u7528\u5176\u6587\u4EF6\u540D\uFF0C\u4E0D\u8981\u91CD\u590D\u5BFC\u51FA\uFF09\uFF1B\u2464 \u7ED3\u6784\u590D\u6742/\u5148\u770B\u6574\u4F53\u6846\u67B6 \u2192 get_node_dsl \u7528 maxDepth \u5206\u6BB5\u4E0B\u63A2\uFF08\u622A\u65AD\u5904 more \u6807\u8BB0\uFF0C\u6309 id \u4E0B\u94BB\uFF09\uFF1B\u2465 \u751F\u6210\u540E\u5BF9\u6BD4\u8FD8\u539F\u5EA6 \u2192 get_screenshot \u6821\u9A8C\u5FAA\u73AF\uFF1B\u2466 \u591A\u4E2A Pixso \u6587\u4EF6\u540C\u65F6\u6253\u5F00 \u2192 list_sessions + target \u53C2\u6570\u8DEF\u7531\u3002\u8D44\u6E90\u53D6\u7528\u4E0E\u5B57\u6BB5\u8BED\u4E49\u7B49\u786C\u6027\u89C4\u5219\u89C1\u8D44\u6E90 batter://guides/intro \u4E0E batter://guides/design-to-code\uFF1B\u8BBE\u8BA1\u7A3F\u521A\u6539\u8FC7\u4F46\u7ED3\u679C\u5BF9\u4E0D\u4E0A\u65F6\uFF0C\u7ED9\u5BFC\u51FA\u7C7B\u5DE5\u5177\u52A0 cache:"refresh" \u5F3A\u5236\u5237\u65B0\u3002'});import{randomUUID as KM}from"node:crypto";async function xS(t,e,r){if(r.pathname!=="/mcp")return!1;let n=t.headers["mcp-session-id"];if(t.method==="POST"){let s=await Kr(t),i;try{i=s.length?JSON.parse(s.toString("utf8")):void 0}catch{return se(e,400,{jsonrpc:"2.0",error:{code:-32700,message:"Parse error"},id:null}),!0}let a=n?ci.get(n):void 0;if(!a)if(!n&&cs(i)){let c=new Na({sessionIdGenerator:()=>KM(),onsessioninitialized:u=>{ci.set(u,c),ie(`MCP HTTP session initialized: ${u.slice(0,8)} (total ${ci.size})`)}});c.onclose=()=>{c.sessionId&&ci.delete(c.sessionId)},await wS().connect(c),a=c}else return se(e,400,{jsonrpc:"2.0",error:{code:-32e3,message:"Bad Request: missing or unknown MCP session"},id:null}),!0;return await a.handleRequest(t,e,i),!0}let o=n?ci.get(n):void 0;return o?(await o.handleRequest(t,e),!0):(se(e,400,{error:"missing or unknown MCP session"}),!0)}var ci,$S=y(()=>{"use strict";Kw();rt();We();bS();Io();ci=new Map});async function SS(t,e,r){let n=r.pathname,o=r.searchParams.get("session");if(t.method==="POST"&&n==="/sessions/register"){try{let i=await Kr(t),a=i.length?JSON.parse(i.toString("utf8")):{};se(e,201,ct.register(a))}catch{se(e,400,{error:"invalid json"})}return!0}if(t.method==="POST"&&n==="/context"){if(!o)return se(e,400,{error:"missing session"}),!0;try{let i=await Kr(t),a=i.length?JSON.parse(i.toString("utf8")):{};if(!ct.updateContext(o,a))return se(e,404,{error:"unknown_session"}),!0;se(e,200,{ok:!0})}catch{se(e,400,{error:"invalid json"})}return!0}if(t.method==="GET"&&n==="/commands/stream"){if(!o||!ct.setConnected(o,!0))return se(e,404,{error:"unknown_session"}),!0;e.writeHead(200,{"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-store",Connection:"keep-alive"}),e.write(`: connected
|
|
558
558
|
|
|
559
559
|
`);let i=Po.subscribe(o,c=>{e.write(`data: ${JSON.stringify({command:c})}
|
|
560
560
|
|
|
@@ -49,6 +49,24 @@
|
|
|
49
49
|
const settings = format === "SVG" ? { format: "SVG" } : { format, constraint: { type: "SCALE", value: scale } };
|
|
50
50
|
return node.exportAsync(settings);
|
|
51
51
|
}
|
|
52
|
+
async function exportWithMarks(node, fallback, assets) {
|
|
53
|
+
const marks = "exportSettings" in node ? node.exportSettings : [];
|
|
54
|
+
if (marks.length === 0) {
|
|
55
|
+
const key = `asset://${assets.length}`;
|
|
56
|
+
assets.push({ key, format: fallback.format, bytes: await exportNode(node, fallback.format, fallback.scale) });
|
|
57
|
+
return [{ img: key, format: fallback.format, scale: fallback.scale }];
|
|
58
|
+
}
|
|
59
|
+
const items = [];
|
|
60
|
+
for (const mark of marks) {
|
|
61
|
+
const key = `asset://${assets.length}`;
|
|
62
|
+
assets.push({ key, format: mark.format, bytes: await node.exportAsync(mark) });
|
|
63
|
+
const item = { img: key, format: mark.format };
|
|
64
|
+
if ("constraint" in mark && mark.constraint?.type === "SCALE") item.scale = mark.constraint.value;
|
|
65
|
+
if ("suffix" in mark && mark.suffix) item.suffix = mark.suffix;
|
|
66
|
+
items.push(item);
|
|
67
|
+
}
|
|
68
|
+
return items;
|
|
69
|
+
}
|
|
52
70
|
|
|
53
71
|
// src/dsl/detect.ts
|
|
54
72
|
var VECTOR_TYPES = /* @__PURE__ */ new Set([
|
|
@@ -355,11 +373,6 @@
|
|
|
355
373
|
if (h === "left" && v === "top") return;
|
|
356
374
|
base.constraints = { h, v };
|
|
357
375
|
}
|
|
358
|
-
function parentIsAbsolute(node) {
|
|
359
|
-
const parent = node.parent;
|
|
360
|
-
if (!parent) return true;
|
|
361
|
-
return !("layoutMode" in parent) || parent.layoutMode === "NONE";
|
|
362
|
-
}
|
|
363
376
|
function applyAutoLayout(node, base) {
|
|
364
377
|
if (!("layoutMode" in node)) return;
|
|
365
378
|
if (node.layoutMode !== "HORIZONTAL" && node.layoutMode !== "VERTICAL") return;
|
|
@@ -385,16 +398,12 @@
|
|
|
385
398
|
if (pad.some((p) => p !== 0)) layout.pad = pad;
|
|
386
399
|
base.layout = layout;
|
|
387
400
|
}
|
|
388
|
-
async function build(node, assets, palette,
|
|
401
|
+
async function build(node, assets, palette, depth, maxDepth) {
|
|
389
402
|
if (!node.visible) return null;
|
|
390
403
|
const base = { id: node.id, type: node.type };
|
|
391
404
|
if (!AUTO_NAME_RE.test(node.name)) base.name = node.name;
|
|
392
405
|
const [x, y, w, h] = rectOf(node);
|
|
393
|
-
|
|
394
|
-
base.rect = [x, y, w, h];
|
|
395
|
-
} else {
|
|
396
|
-
base.size = [w, h];
|
|
397
|
-
}
|
|
406
|
+
base.rect = [x, y, w, h];
|
|
398
407
|
if ("opacity" in node && node.opacity !== 1) base.opacity = round2(node.opacity);
|
|
399
408
|
applyConstraints(node, base);
|
|
400
409
|
const assetFormat = detectAssetFormat(node);
|
|
@@ -415,7 +424,7 @@
|
|
|
415
424
|
} else {
|
|
416
425
|
const kids = [];
|
|
417
426
|
for (const child of node.children) {
|
|
418
|
-
const built = await build(child, assets, palette,
|
|
427
|
+
const built = await build(child, assets, palette, depth + 1, maxDepth);
|
|
419
428
|
if (built) kids.push(built);
|
|
420
429
|
}
|
|
421
430
|
if (kids.length > 0) base.kids = kids;
|
|
@@ -425,7 +434,7 @@
|
|
|
425
434
|
}
|
|
426
435
|
async function buildDevNode(node, assets, maxDepth) {
|
|
427
436
|
const palette = new Palette();
|
|
428
|
-
const root = await build(node, assets, palette,
|
|
437
|
+
const root = await build(node, assets, palette, 0, maxDepth);
|
|
429
438
|
if (!root) return null;
|
|
430
439
|
palette.apply(root);
|
|
431
440
|
root.depth = levelsBelow(node);
|
|
@@ -450,62 +459,47 @@
|
|
|
450
459
|
const f = typeof input === "string" ? input.toUpperCase() : "PNG";
|
|
451
460
|
return f === "SVG" ? "SVG" : f === "JPG" ? "JPG" : "PNG";
|
|
452
461
|
}
|
|
453
|
-
function
|
|
462
|
+
function normParams(type, args) {
|
|
454
463
|
switch (type) {
|
|
455
464
|
case "get_node_dsl":
|
|
456
|
-
return { maxDepth: normMaxDepth(args.maxDepth) };
|
|
457
|
-
case "get_screenshot":
|
|
458
|
-
|
|
459
|
-
|
|
465
|
+
return { type, maxDepth: normMaxDepth(args.maxDepth) };
|
|
466
|
+
case "get_screenshot": {
|
|
467
|
+
const f = (args.format ?? "PNG").toUpperCase();
|
|
468
|
+
return { type, format: f === "SVG" ? "SVG" : "PNG", scale: args.scale ?? 2 };
|
|
469
|
+
}
|
|
470
|
+
case "export_image":
|
|
460
471
|
return {
|
|
472
|
+
type,
|
|
461
473
|
format: normImageFormat(args.format),
|
|
462
474
|
scale: typeof args.scale === "number" ? args.scale : 2
|
|
463
475
|
};
|
|
476
|
+
default:
|
|
477
|
+
throw new Error(`\u4E0D\u53EF\u7F13\u5B58\u7684\u547D\u4EE4\u7C7B\u578B: ${type}`);
|
|
464
478
|
}
|
|
465
479
|
}
|
|
466
|
-
async function produce(
|
|
467
|
-
switch (
|
|
480
|
+
async function produce(params, node) {
|
|
481
|
+
switch (params.type) {
|
|
468
482
|
case "get_node_dsl": {
|
|
469
483
|
const assets = [];
|
|
470
|
-
const dsl = await buildDevNode(node, assets,
|
|
484
|
+
const dsl = await buildDevNode(node, assets, params.maxDepth);
|
|
471
485
|
return { result: dsl, assets };
|
|
472
486
|
}
|
|
473
487
|
case "get_screenshot": {
|
|
474
|
-
const
|
|
475
|
-
const scale = args.scale ?? 2;
|
|
476
|
-
const bytes = await exportNode(node, format === "SVG" ? "SVG" : "PNG", scale);
|
|
488
|
+
const bytes = await exportNode(node, params.format, params.scale);
|
|
477
489
|
const [, , width, height] = rectOf(node);
|
|
478
490
|
return {
|
|
479
|
-
result: { img: "asset://0", width, height, format },
|
|
480
|
-
assets: [{ key: "asset://0", format, bytes }]
|
|
491
|
+
result: { img: "asset://0", width, height, format: params.format },
|
|
492
|
+
assets: [{ key: "asset://0", format: params.format, bytes }]
|
|
481
493
|
};
|
|
482
494
|
}
|
|
483
|
-
|
|
495
|
+
case "export_image": {
|
|
484
496
|
const [, , width, height] = rectOf(node);
|
|
485
497
|
const assets = [];
|
|
486
|
-
const exports =
|
|
487
|
-
const marks = "exportSettings" in node ? node.exportSettings : [];
|
|
488
|
-
if (marks.length > 0) {
|
|
489
|
-
for (const mark of marks) {
|
|
490
|
-
const bytes = await node.exportAsync(mark);
|
|
491
|
-
const key = `asset://${assets.length}`;
|
|
492
|
-
assets.push({ key, format: mark.format, bytes });
|
|
493
|
-
const entry = { img: key, format: mark.format };
|
|
494
|
-
if ("constraint" in mark && mark.constraint?.type === "SCALE") {
|
|
495
|
-
entry.scale = mark.constraint.value;
|
|
496
|
-
}
|
|
497
|
-
if ("suffix" in mark && mark.suffix) entry.suffix = mark.suffix;
|
|
498
|
-
exports.push(entry);
|
|
499
|
-
}
|
|
500
|
-
} else {
|
|
501
|
-
const format = normImageFormat(args.format);
|
|
502
|
-
const scale = typeof args.scale === "number" ? args.scale : 2;
|
|
503
|
-
const bytes = await exportNode(node, format, scale);
|
|
504
|
-
assets.push({ key: "asset://0", format, bytes });
|
|
505
|
-
exports.push({ img: "asset://0", format, scale });
|
|
506
|
-
}
|
|
498
|
+
const exports = await exportWithMarks(node, params, assets);
|
|
507
499
|
return { result: { width, height, exports }, assets };
|
|
508
500
|
}
|
|
501
|
+
default:
|
|
502
|
+
throw new Error(`\u672A\u77E5\u547D\u4EE4: ${params.type}`);
|
|
509
503
|
}
|
|
510
504
|
}
|
|
511
505
|
async function executeCommand(command) {
|
|
@@ -514,12 +508,14 @@
|
|
|
514
508
|
return { result: collectContext(), assets: [] };
|
|
515
509
|
}
|
|
516
510
|
const node = await findNode(args.guid);
|
|
517
|
-
const
|
|
511
|
+
const params = normParams(command.type, args);
|
|
512
|
+
const { type, ...keyParams } = params;
|
|
513
|
+
const key = `${type}:${node.id}:${JSON.stringify(keyParams)}`;
|
|
518
514
|
if (args.cache !== "refresh") {
|
|
519
515
|
const hit = readCache(key);
|
|
520
516
|
if (hit) return hit;
|
|
521
517
|
}
|
|
522
|
-
const fresh = await produce(
|
|
518
|
+
const fresh = await produce(params, node);
|
|
523
519
|
writeCache(key, fresh);
|
|
524
520
|
return fresh;
|
|
525
521
|
}
|