sdkwork-browser-agent 1.0.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/README.md +228 -0
- package/README.zh.md +228 -0
- package/dist/agent-Bpxmkz8W.d.ts +197 -0
- package/dist/agent-kexkkI13.d.cts +197 -0
- package/dist/browser/agent-Bpxmkz8W.d.ts +197 -0
- package/dist/browser/chunk-7W2JJCSS.js +276 -0
- package/dist/browser/chunk-7W2JJCSS.js.map +1 -0
- package/dist/browser/chunk-BHRFRGR7.js +144 -0
- package/dist/browser/chunk-BHRFRGR7.js.map +1 -0
- package/dist/browser/chunk-CLP6UNSV.js +285 -0
- package/dist/browser/chunk-CLP6UNSV.js.map +1 -0
- package/dist/browser/chunk-HXLRBB7S.js +1569 -0
- package/dist/browser/chunk-HXLRBB7S.js.map +1 -0
- package/dist/browser/chunk-VJEFLRZT.js +1720 -0
- package/dist/browser/chunk-VJEFLRZT.js.map +1 -0
- package/dist/browser/index.d.ts +842 -0
- package/dist/browser/index.js +3293 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/llm/index.d.ts +235 -0
- package/dist/browser/llm/index.js +29 -0
- package/dist/browser/llm/index.js.map +1 -0
- package/dist/browser/mcp/index.d.ts +63 -0
- package/dist/browser/mcp/index.js +9 -0
- package/dist/browser/mcp/index.js.map +1 -0
- package/dist/browser/provider-Dna36xA-.d.ts +105 -0
- package/dist/browser/skills/index.d.ts +401 -0
- package/dist/browser/skills/index.js +31 -0
- package/dist/browser/skills/index.js.map +1 -0
- package/dist/browser/storage/index.d.ts +64 -0
- package/dist/browser/storage/index.js +15 -0
- package/dist/browser/storage/index.js.map +1 -0
- package/dist/browser/tools/index.d.ts +45 -0
- package/dist/browser/tools/index.js +15 -0
- package/dist/browser/tools/index.js.map +1 -0
- package/dist/browser/types-CG5I-byI.d.ts +30 -0
- package/dist/chunk-56J3IBXZ.js +144 -0
- package/dist/chunk-56J3IBXZ.js.map +1 -0
- package/dist/chunk-5XTVS5MB.js +1720 -0
- package/dist/chunk-5XTVS5MB.js.map +1 -0
- package/dist/chunk-6AYIRBGI.js +166 -0
- package/dist/chunk-6AYIRBGI.js.map +1 -0
- package/dist/chunk-C2EYJHXW.cjs +276 -0
- package/dist/chunk-C2EYJHXW.cjs.map +1 -0
- package/dist/chunk-HOZQ445W.cjs +166 -0
- package/dist/chunk-HOZQ445W.cjs.map +1 -0
- package/dist/chunk-KZNZ6CGD.cjs +144 -0
- package/dist/chunk-KZNZ6CGD.cjs.map +1 -0
- package/dist/chunk-XFMT5ZA4.js +276 -0
- package/dist/chunk-XFMT5ZA4.js.map +1 -0
- package/dist/chunk-XPGICLEJ.cjs +1720 -0
- package/dist/chunk-XPGICLEJ.cjs.map +1 -0
- package/dist/index.cjs +1311 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +395 -0
- package/dist/index.d.ts +395 -0
- package/dist/index.js +1311 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/index.cjs +29 -0
- package/dist/llm/index.cjs.map +1 -0
- package/dist/llm/index.d.cts +235 -0
- package/dist/llm/index.d.ts +235 -0
- package/dist/llm/index.js +29 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/mcp/index.cjs +9 -0
- package/dist/mcp/index.cjs.map +1 -0
- package/dist/mcp/index.d.cts +63 -0
- package/dist/mcp/index.d.ts +63 -0
- package/dist/mcp/index.js +9 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/node/agent-Bpxmkz8W.d.ts +197 -0
- package/dist/node/agent-kexkkI13.d.cts +197 -0
- package/dist/node/chunk-7W2JJCSS.js +276 -0
- package/dist/node/chunk-7W2JJCSS.js.map +1 -0
- package/dist/node/chunk-BHRFRGR7.js +144 -0
- package/dist/node/chunk-BHRFRGR7.js.map +1 -0
- package/dist/node/chunk-CLP6UNSV.js +285 -0
- package/dist/node/chunk-CLP6UNSV.js.map +1 -0
- package/dist/node/chunk-HXLRBB7S.js +1569 -0
- package/dist/node/chunk-HXLRBB7S.js.map +1 -0
- package/dist/node/chunk-IYG37UN3.cjs +144 -0
- package/dist/node/chunk-IYG37UN3.cjs.map +1 -0
- package/dist/node/chunk-JF33ZOMB.cjs +285 -0
- package/dist/node/chunk-JF33ZOMB.cjs.map +1 -0
- package/dist/node/chunk-KXXS33G3.cjs +276 -0
- package/dist/node/chunk-KXXS33G3.cjs.map +1 -0
- package/dist/node/chunk-MTFOABGC.cjs +1720 -0
- package/dist/node/chunk-MTFOABGC.cjs.map +1 -0
- package/dist/node/chunk-VJEFLRZT.js +1720 -0
- package/dist/node/chunk-VJEFLRZT.js.map +1 -0
- package/dist/node/chunk-YDHQCPSN.cjs +1569 -0
- package/dist/node/chunk-YDHQCPSN.cjs.map +1 -0
- package/dist/node/index.cjs +3293 -0
- package/dist/node/index.cjs.map +1 -0
- package/dist/node/index.d.cts +842 -0
- package/dist/node/index.d.ts +842 -0
- package/dist/node/index.js +3293 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/llm/index.cjs +29 -0
- package/dist/node/llm/index.cjs.map +1 -0
- package/dist/node/llm/index.d.cts +235 -0
- package/dist/node/llm/index.d.ts +235 -0
- package/dist/node/llm/index.js +29 -0
- package/dist/node/llm/index.js.map +1 -0
- package/dist/node/mcp/index.cjs +9 -0
- package/dist/node/mcp/index.cjs.map +1 -0
- package/dist/node/mcp/index.d.cts +63 -0
- package/dist/node/mcp/index.d.ts +63 -0
- package/dist/node/mcp/index.js +9 -0
- package/dist/node/mcp/index.js.map +1 -0
- package/dist/node/provider-Dna36xA-.d.cts +105 -0
- package/dist/node/provider-Dna36xA-.d.ts +105 -0
- package/dist/node/skills/index.cjs +31 -0
- package/dist/node/skills/index.cjs.map +1 -0
- package/dist/node/skills/index.d.cts +401 -0
- package/dist/node/skills/index.d.ts +401 -0
- package/dist/node/skills/index.js +31 -0
- package/dist/node/skills/index.js.map +1 -0
- package/dist/node/storage/index.cjs +15 -0
- package/dist/node/storage/index.cjs.map +1 -0
- package/dist/node/storage/index.d.cts +64 -0
- package/dist/node/storage/index.d.ts +64 -0
- package/dist/node/storage/index.js +15 -0
- package/dist/node/storage/index.js.map +1 -0
- package/dist/node/tools/index.cjs +15 -0
- package/dist/node/tools/index.cjs.map +1 -0
- package/dist/node/tools/index.d.cts +45 -0
- package/dist/node/tools/index.d.ts +45 -0
- package/dist/node/tools/index.js +15 -0
- package/dist/node/tools/index.js.map +1 -0
- package/dist/node/types-CG5I-byI.d.cts +30 -0
- package/dist/node/types-CG5I-byI.d.ts +30 -0
- package/dist/provider-Dna36xA-.d.cts +105 -0
- package/dist/provider-Dna36xA-.d.ts +105 -0
- package/dist/skills/index.cjs +15 -0
- package/dist/skills/index.cjs.map +1 -0
- package/dist/skills/index.d.cts +43 -0
- package/dist/skills/index.d.ts +43 -0
- package/dist/skills/index.js +15 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/tools/index.cjs +15 -0
- package/dist/tools/index.cjs.map +1 -0
- package/dist/tools/index.d.cts +45 -0
- package/dist/tools/index.d.ts +45 -0
- package/dist/tools/index.js +15 -0
- package/dist/tools/index.js.map +1 -0
- package/package.json +150 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
// src/mcp/protocol.ts
|
|
2
|
+
var MCPClient = class {
|
|
3
|
+
constructor(config) {
|
|
4
|
+
this.config = config;
|
|
5
|
+
}
|
|
6
|
+
resources = /* @__PURE__ */ new Map();
|
|
7
|
+
tools = /* @__PURE__ */ new Map();
|
|
8
|
+
async connect() {
|
|
9
|
+
const headers = {
|
|
10
|
+
"Content-Type": "application/json"
|
|
11
|
+
};
|
|
12
|
+
if (this.config.auth?.type === "bearer") {
|
|
13
|
+
headers["Authorization"] = `Bearer ${this.config.auth.token}`;
|
|
14
|
+
} else if (this.config.auth?.type === "apiKey") {
|
|
15
|
+
headers["X-API-Key"] = this.config.auth.token;
|
|
16
|
+
}
|
|
17
|
+
const response = await fetch(`${this.config.url}/capabilities`, { headers });
|
|
18
|
+
if (!response.ok) {
|
|
19
|
+
throw new Error(`Failed to connect to MCP server: ${response.status}`);
|
|
20
|
+
}
|
|
21
|
+
const capabilities = await response.json();
|
|
22
|
+
for (const resource of capabilities.resources || []) {
|
|
23
|
+
this.resources.set(resource.uri, this.createRemoteResource(resource, headers));
|
|
24
|
+
}
|
|
25
|
+
for (const tool of capabilities.tools || []) {
|
|
26
|
+
this.tools.set(tool.name, this.createRemoteTool(tool, headers));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
createRemoteResource(resource, headers) {
|
|
30
|
+
return {
|
|
31
|
+
uri: resource.uri,
|
|
32
|
+
name: resource.name,
|
|
33
|
+
description: resource.description,
|
|
34
|
+
mimeType: resource.mimeType,
|
|
35
|
+
read: async () => {
|
|
36
|
+
const response = await fetch(
|
|
37
|
+
`${this.config.url}/resources/${encodeURIComponent(resource.uri)}`,
|
|
38
|
+
{
|
|
39
|
+
headers
|
|
40
|
+
}
|
|
41
|
+
);
|
|
42
|
+
if (!response.ok) {
|
|
43
|
+
throw new Error(`Failed to read resource: ${response.status}`);
|
|
44
|
+
}
|
|
45
|
+
const content = await response.json();
|
|
46
|
+
return content;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
createRemoteTool(tool, headers) {
|
|
51
|
+
return {
|
|
52
|
+
name: tool.name,
|
|
53
|
+
description: tool.description,
|
|
54
|
+
inputSchema: tool.inputSchema,
|
|
55
|
+
execute: async (args) => {
|
|
56
|
+
const response = await fetch(
|
|
57
|
+
`${this.config.url}/tools/${encodeURIComponent(tool.name)}`,
|
|
58
|
+
{
|
|
59
|
+
method: "POST",
|
|
60
|
+
headers,
|
|
61
|
+
body: JSON.stringify(args)
|
|
62
|
+
}
|
|
63
|
+
);
|
|
64
|
+
if (!response.ok) {
|
|
65
|
+
throw new Error(`Failed to execute tool: ${response.status}`);
|
|
66
|
+
}
|
|
67
|
+
const result = await response.json();
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
getResources() {
|
|
73
|
+
return Array.from(this.resources.values());
|
|
74
|
+
}
|
|
75
|
+
getTools() {
|
|
76
|
+
return Array.from(this.tools.values());
|
|
77
|
+
}
|
|
78
|
+
getResource(uri) {
|
|
79
|
+
return this.resources.get(uri);
|
|
80
|
+
}
|
|
81
|
+
getTool(name) {
|
|
82
|
+
return this.tools.get(name);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
var MCPServer = class {
|
|
86
|
+
constructor(config) {
|
|
87
|
+
this.config = config;
|
|
88
|
+
config.resources?.forEach((resource) => this.registerResource(resource));
|
|
89
|
+
config.tools?.forEach((tool) => this.registerTool(tool));
|
|
90
|
+
}
|
|
91
|
+
resources = /* @__PURE__ */ new Map();
|
|
92
|
+
tools = /* @__PURE__ */ new Map();
|
|
93
|
+
registerResource(resource) {
|
|
94
|
+
this.resources.set(resource.uri, resource);
|
|
95
|
+
}
|
|
96
|
+
registerTool(tool) {
|
|
97
|
+
this.tools.set(tool.name, tool);
|
|
98
|
+
}
|
|
99
|
+
unregisterResource(uri) {
|
|
100
|
+
return this.resources.delete(uri);
|
|
101
|
+
}
|
|
102
|
+
unregisterTool(name) {
|
|
103
|
+
return this.tools.delete(name);
|
|
104
|
+
}
|
|
105
|
+
getCapabilities() {
|
|
106
|
+
return {
|
|
107
|
+
name: this.config.name,
|
|
108
|
+
version: this.config.version,
|
|
109
|
+
resources: Array.from(this.resources.values()).map((r) => ({
|
|
110
|
+
uri: r.uri,
|
|
111
|
+
name: r.name,
|
|
112
|
+
description: r.description,
|
|
113
|
+
mimeType: r.mimeType
|
|
114
|
+
})),
|
|
115
|
+
tools: Array.from(this.tools.values()).map((t) => ({
|
|
116
|
+
name: t.name,
|
|
117
|
+
description: t.description,
|
|
118
|
+
inputSchema: t.inputSchema
|
|
119
|
+
}))
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
async readResource(uri) {
|
|
123
|
+
const resource = this.resources.get(uri);
|
|
124
|
+
if (!resource) return null;
|
|
125
|
+
return resource.read();
|
|
126
|
+
}
|
|
127
|
+
async executeTool(name, args) {
|
|
128
|
+
const tool = this.tools.get(name);
|
|
129
|
+
if (!tool) return null;
|
|
130
|
+
const context = {
|
|
131
|
+
agent: {},
|
|
132
|
+
// Placeholder, should be provided by caller
|
|
133
|
+
skillName: name,
|
|
134
|
+
timestamp: /* @__PURE__ */ new Date()
|
|
135
|
+
};
|
|
136
|
+
return tool.execute(args, context);
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
export {
|
|
141
|
+
MCPClient,
|
|
142
|
+
MCPServer
|
|
143
|
+
};
|
|
144
|
+
//# sourceMappingURL=chunk-56J3IBXZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/mcp/protocol.ts"],"sourcesContent":["/**\n * MCP (Model Context Protocol) Implementation\n * https://modelcontextprotocol.io\n */\n\nimport {\n MCPResource,\n MCPResourceContent,\n MCPTool,\n MCPToolResult,\n ExecutionContext,\n} from '../core/agent';\n\n// MCP Server Configuration\nexport interface MCPServerConfig {\n name: string;\n version: string;\n resources?: MCPResource[];\n tools?: MCPTool[];\n}\n\n// MCP Client for connecting to external MCP servers\nexport interface MCPClientConfig {\n url: string;\n auth?: {\n type: 'bearer' | 'apiKey';\n token: string;\n };\n}\n\nexport class MCPClient {\n private resources = new Map<string, MCPResource>();\n private tools = new Map<string, MCPTool>();\n\n constructor(private config: MCPClientConfig) {}\n\n async connect(): Promise<void> {\n // Fetch server capabilities\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n };\n\n if (this.config.auth?.type === 'bearer') {\n headers['Authorization'] = `Bearer ${this.config.auth.token}`;\n } else if (this.config.auth?.type === 'apiKey') {\n headers['X-API-Key'] = this.config.auth.token;\n }\n\n const response = await fetch(`${this.config.url}/capabilities`, { headers });\n\n if (!response.ok) {\n throw new Error(`Failed to connect to MCP server: ${response.status}`);\n }\n\n const capabilities = await response.json();\n\n // Register remote resources\n for (const resource of capabilities.resources || []) {\n this.resources.set(resource.uri, this.createRemoteResource(resource, headers));\n }\n\n // Register remote tools\n for (const tool of capabilities.tools || []) {\n this.tools.set(tool.name, this.createRemoteTool(tool, headers));\n }\n }\n\n private createRemoteResource(\n resource: Record<string, unknown>,\n headers: Record<string, string>\n ): MCPResource {\n return {\n uri: resource.uri as string,\n name: resource.name as string,\n description: resource.description as string,\n mimeType: resource.mimeType as string,\n read: async () => {\n const response = await fetch(\n `${this.config.url}/resources/${encodeURIComponent(resource.uri as string)}`,\n {\n headers,\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to read resource: ${response.status}`);\n }\n\n const content = await response.json();\n return content as MCPResourceContent;\n },\n };\n }\n\n private createRemoteTool(\n tool: Record<string, unknown>,\n headers: Record<string, string>\n ): MCPTool {\n return {\n name: tool.name as string,\n description: tool.description as string,\n inputSchema: tool.inputSchema,\n execute: async args => {\n const response = await fetch(\n `${this.config.url}/tools/${encodeURIComponent(tool.name as string)}`,\n {\n method: 'POST',\n headers,\n body: JSON.stringify(args),\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to execute tool: ${response.status}`);\n }\n\n const result = await response.json();\n return result as MCPToolResult;\n },\n };\n }\n\n getResources(): MCPResource[] {\n return Array.from(this.resources.values());\n }\n\n getTools(): MCPTool[] {\n return Array.from(this.tools.values());\n }\n\n getResource(uri: string): MCPResource | undefined {\n return this.resources.get(uri);\n }\n\n getTool(name: string): MCPTool | undefined {\n return this.tools.get(name);\n }\n}\n\n// MCP Server for exposing local resources and tools\nexport class MCPServer {\n private resources = new Map<string, MCPResource>();\n private tools = new Map<string, MCPTool>();\n\n constructor(private config: MCPServerConfig) {\n // Register initial resources and tools\n config.resources?.forEach(resource => this.registerResource(resource));\n config.tools?.forEach(tool => this.registerTool(tool));\n }\n\n registerResource(resource: MCPResource): void {\n this.resources.set(resource.uri, resource);\n }\n\n registerTool(tool: MCPTool): void {\n this.tools.set(tool.name, tool);\n }\n\n unregisterResource(uri: string): boolean {\n return this.resources.delete(uri);\n }\n\n unregisterTool(name: string): boolean {\n return this.tools.delete(name);\n }\n\n getCapabilities(): {\n name: string;\n version: string;\n resources: Array<{ uri: string; name: string; description?: string; mimeType?: string }>;\n tools: Array<{ name: string; description: string; inputSchema: unknown }>;\n } {\n return {\n name: this.config.name,\n version: this.config.version,\n resources: Array.from(this.resources.values()).map(r => ({\n uri: r.uri,\n name: r.name,\n description: r.description,\n mimeType: r.mimeType,\n })),\n tools: Array.from(this.tools.values()).map(t => ({\n name: t.name,\n description: t.description,\n inputSchema: t.inputSchema,\n })),\n };\n }\n\n async readResource(uri: string): Promise<MCPResourceContent | null> {\n const resource = this.resources.get(uri);\n if (!resource) return null;\n return resource.read();\n }\n\n async executeTool(name: string, args: unknown): Promise<MCPToolResult | null> {\n const tool = this.tools.get(name);\n if (!tool) return null;\n\n const context: ExecutionContext = {\n agent: {} as any, // Placeholder, should be provided by caller\n skillName: name,\n timestamp: new Date(),\n };\n\n return tool.execute(args, context);\n }\n}\n"],"mappings":";AA8BO,IAAM,YAAN,MAAgB;AAAA,EAIrB,YAAoB,QAAyB;AAAzB;AAAA,EAA0B;AAAA,EAHtC,YAAY,oBAAI,IAAyB;AAAA,EACzC,QAAQ,oBAAI,IAAqB;AAAA,EAIzC,MAAM,UAAyB;AAE7B,UAAM,UAAkC;AAAA,MACtC,gBAAgB;AAAA,IAClB;AAEA,QAAI,KAAK,OAAO,MAAM,SAAS,UAAU;AACvC,cAAQ,eAAe,IAAI,UAAU,KAAK,OAAO,KAAK,KAAK;AAAA,IAC7D,WAAW,KAAK,OAAO,MAAM,SAAS,UAAU;AAC9C,cAAQ,WAAW,IAAI,KAAK,OAAO,KAAK;AAAA,IAC1C;AAEA,UAAM,WAAW,MAAM,MAAM,GAAG,KAAK,OAAO,GAAG,iBAAiB,EAAE,QAAQ,CAAC;AAE3E,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI,MAAM,oCAAoC,SAAS,MAAM,EAAE;AAAA,IACvE;AAEA,UAAM,eAAe,MAAM,SAAS,KAAK;AAGzC,eAAW,YAAY,aAAa,aAAa,CAAC,GAAG;AACnD,WAAK,UAAU,IAAI,SAAS,KAAK,KAAK,qBAAqB,UAAU,OAAO,CAAC;AAAA,IAC/E;AAGA,eAAW,QAAQ,aAAa,SAAS,CAAC,GAAG;AAC3C,WAAK,MAAM,IAAI,KAAK,MAAM,KAAK,iBAAiB,MAAM,OAAO,CAAC;AAAA,IAChE;AAAA,EACF;AAAA,EAEQ,qBACN,UACA,SACa;AACb,WAAO;AAAA,MACL,KAAK,SAAS;AAAA,MACd,MAAM,SAAS;AAAA,MACf,aAAa,SAAS;AAAA,MACtB,UAAU,SAAS;AAAA,MACnB,MAAM,YAAY;AAChB,cAAM,WAAW,MAAM;AAAA,UACrB,GAAG,KAAK,OAAO,GAAG,cAAc,mBAAmB,SAAS,GAAa,CAAC;AAAA,UAC1E;AAAA,YACE;AAAA,UACF;AAAA,QACF;AAEA,YAAI,CAAC,SAAS,IAAI;AAChB,gBAAM,IAAI,MAAM,4BAA4B,SAAS,MAAM,EAAE;AAAA,QAC/D;AAEA,cAAM,UAAU,MAAM,SAAS,KAAK;AACpC,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,iBACN,MACA,SACS;AACT,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,aAAa,KAAK;AAAA,MAClB,aAAa,KAAK;AAAA,MAClB,SAAS,OAAM,SAAQ;AACrB,cAAM,WAAW,MAAM;AAAA,UACrB,GAAG,KAAK,OAAO,GAAG,UAAU,mBAAmB,KAAK,IAAc,CAAC;AAAA,UACnE;AAAA,YACE,QAAQ;AAAA,YACR;AAAA,YACA,MAAM,KAAK,UAAU,IAAI;AAAA,UAC3B;AAAA,QACF;AAEA,YAAI,CAAC,SAAS,IAAI;AAChB,gBAAM,IAAI,MAAM,2BAA2B,SAAS,MAAM,EAAE;AAAA,QAC9D;AAEA,cAAM,SAAS,MAAM,SAAS,KAAK;AACnC,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEA,eAA8B;AAC5B,WAAO,MAAM,KAAK,KAAK,UAAU,OAAO,CAAC;AAAA,EAC3C;AAAA,EAEA,WAAsB;AACpB,WAAO,MAAM,KAAK,KAAK,MAAM,OAAO,CAAC;AAAA,EACvC;AAAA,EAEA,YAAY,KAAsC;AAChD,WAAO,KAAK,UAAU,IAAI,GAAG;AAAA,EAC/B;AAAA,EAEA,QAAQ,MAAmC;AACzC,WAAO,KAAK,MAAM,IAAI,IAAI;AAAA,EAC5B;AACF;AAGO,IAAM,YAAN,MAAgB;AAAA,EAIrB,YAAoB,QAAyB;AAAzB;AAElB,WAAO,WAAW,QAAQ,cAAY,KAAK,iBAAiB,QAAQ,CAAC;AACrE,WAAO,OAAO,QAAQ,UAAQ,KAAK,aAAa,IAAI,CAAC;AAAA,EACvD;AAAA,EAPQ,YAAY,oBAAI,IAAyB;AAAA,EACzC,QAAQ,oBAAI,IAAqB;AAAA,EAQzC,iBAAiB,UAA6B;AAC5C,SAAK,UAAU,IAAI,SAAS,KAAK,QAAQ;AAAA,EAC3C;AAAA,EAEA,aAAa,MAAqB;AAChC,SAAK,MAAM,IAAI,KAAK,MAAM,IAAI;AAAA,EAChC;AAAA,EAEA,mBAAmB,KAAsB;AACvC,WAAO,KAAK,UAAU,OAAO,GAAG;AAAA,EAClC;AAAA,EAEA,eAAe,MAAuB;AACpC,WAAO,KAAK,MAAM,OAAO,IAAI;AAAA,EAC/B;AAAA,EAEA,kBAKE;AACA,WAAO;AAAA,MACL,MAAM,KAAK,OAAO;AAAA,MAClB,SAAS,KAAK,OAAO;AAAA,MACrB,WAAW,MAAM,KAAK,KAAK,UAAU,OAAO,CAAC,EAAE,IAAI,QAAM;AAAA,QACvD,KAAK,EAAE;AAAA,QACP,MAAM,EAAE;AAAA,QACR,aAAa,EAAE;AAAA,QACf,UAAU,EAAE;AAAA,MACd,EAAE;AAAA,MACF,OAAO,MAAM,KAAK,KAAK,MAAM,OAAO,CAAC,EAAE,IAAI,QAAM;AAAA,QAC/C,MAAM,EAAE;AAAA,QACR,aAAa,EAAE;AAAA,QACf,aAAa,EAAE;AAAA,MACjB,EAAE;AAAA,IACJ;AAAA,EACF;AAAA,EAEA,MAAM,aAAa,KAAiD;AAClE,UAAM,WAAW,KAAK,UAAU,IAAI,GAAG;AACvC,QAAI,CAAC,SAAU,QAAO;AACtB,WAAO,SAAS,KAAK;AAAA,EACvB;AAAA,EAEA,MAAM,YAAY,MAAc,MAA8C;AAC5E,UAAM,OAAO,KAAK,MAAM,IAAI,IAAI;AAChC,QAAI,CAAC,KAAM,QAAO;AAElB,UAAM,UAA4B;AAAA,MAChC,OAAO,CAAC;AAAA;AAAA,MACR,WAAW;AAAA,MACX,WAAW,oBAAI,KAAK;AAAA,IACtB;AAEA,WAAO,KAAK,QAAQ,MAAM,OAAO;AAAA,EACnC;AACF;","names":[]}
|