fastbrowser_cli 1.0.14 → 1.0.16
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/.playwright-mcp/.gitignore +3 -0
- package/README.md +29 -3
- package/dist/fastbrowser_cli/fastbrowser_cli.js +52 -35
- package/dist/fastbrowser_cli/fastbrowser_cli.js.map +1 -1
- package/dist/fastbrowser_cli/libs/http-client.js +3 -7
- package/dist/fastbrowser_cli/libs/http-client.js.map +1 -1
- package/dist/fastbrowser_cli/libs/server-manager.d.ts.map +1 -1
- package/dist/fastbrowser_cli/libs/server-manager.js +30 -28
- package/dist/fastbrowser_cli/libs/server-manager.js.map +1 -1
- package/dist/fastbrowser_httpd/fastbrowser_httpd.js +22 -18
- package/dist/fastbrowser_httpd/fastbrowser_httpd.js.map +1 -1
- package/dist/fastbrowser_httpd/libs/routes.d.ts +2 -2
- package/dist/fastbrowser_httpd/libs/routes.d.ts.map +1 -1
- package/dist/fastbrowser_httpd/libs/routes.js +4 -8
- package/dist/fastbrowser_httpd/libs/routes.js.map +1 -1
- package/dist/fastbrowser_httpd/libs/tool-schemas.js +39 -42
- package/dist/fastbrowser_httpd/libs/tool-schemas.js.map +1 -1
- package/dist/fastbrowser_mcp/fastbrowser_mcp.d.ts.map +1 -1
- package/dist/fastbrowser_mcp/fastbrowser_mcp.js +270 -187
- package/dist/fastbrowser_mcp/fastbrowser_mcp.js.map +1 -1
- package/dist/fastbrowser_mcp/fastbrowser_types.d.ts +5 -0
- package/dist/fastbrowser_mcp/fastbrowser_types.d.ts.map +1 -0
- package/dist/fastbrowser_mcp/fastbrowser_types.js +2 -0
- package/dist/fastbrowser_mcp/fastbrowser_types.js.map +1 -0
- package/dist/{fastweb_mcp/libs/mcp_client.d.ts → fastbrowser_mcp/libs/mcp_client_TOREMOVE.d.ts} +6 -2
- package/dist/fastbrowser_mcp/libs/mcp_client_TOREMOVE.d.ts.map +1 -0
- package/dist/{src/libs/mcp_client.js → fastbrowser_mcp/libs/mcp_client_TOREMOVE.js} +15 -12
- package/dist/fastbrowser_mcp/libs/mcp_client_TOREMOVE.js.map +1 -0
- package/dist/{src/libs/mcp_client.d.ts → fastbrowser_mcp/libs/mcp_my_client.d.ts} +6 -2
- package/dist/fastbrowser_mcp/libs/mcp_my_client.d.ts.map +1 -0
- package/dist/{fastweb_mcp/libs/mcp_client.js → fastbrowser_mcp/libs/mcp_my_client.js} +15 -12
- package/dist/fastbrowser_mcp/libs/mcp_my_client.js.map +1 -0
- package/dist/fastbrowser_mcp/libs/mcp_proxy.d.ts +2 -2
- package/dist/fastbrowser_mcp/libs/mcp_proxy.d.ts.map +1 -1
- package/dist/fastbrowser_mcp/libs/mcp_proxy.js +9 -16
- package/dist/fastbrowser_mcp/libs/mcp_proxy.js.map +1 -1
- package/dist/fastbrowser_mcp/libs/mcp_target_helper.d.ts +35 -0
- package/dist/fastbrowser_mcp/libs/mcp_target_helper.d.ts.map +1 -0
- package/dist/fastbrowser_mcp/libs/mcp_target_helper.js +161 -0
- package/dist/fastbrowser_mcp/libs/mcp_target_helper.js.map +1 -0
- package/dist/fastbrowser_mcp/libs/playwright_a11y_helper.d.ts +28 -0
- package/dist/fastbrowser_mcp/libs/playwright_a11y_helper.d.ts.map +1 -0
- package/dist/fastbrowser_mcp/libs/playwright_a11y_helper.js +210 -0
- package/dist/fastbrowser_mcp/libs/playwright_a11y_helper.js.map +1 -0
- package/dist/fastbrowser_mcp/libs/response_formatter.d.ts +10 -0
- package/dist/fastbrowser_mcp/libs/response_formatter.d.ts.map +1 -0
- package/dist/fastbrowser_mcp/libs/response_formatter.js +155 -0
- package/dist/fastbrowser_mcp/libs/response_formatter.js.map +1 -0
- package/dist/fastbrowser_mcp/libs/schemas.js +14 -17
- package/dist/fastbrowser_mcp/libs/schemas.js.map +1 -1
- package/examples/mcp_client_playwright.ts +34 -0
- package/examples/welcometothejungle/wttj-job.ts +180 -0
- package/examples/welcometothejungle/wttj-search.ts +105 -0
- package/outputs/.gitignore +3 -0
- package/package.json +12 -8
- package/src/fastbrowser_cli/fastbrowser_cli.ts +34 -11
- package/src/fastbrowser_cli/libs/server-manager.ts +12 -3
- package/src/fastbrowser_httpd/fastbrowser_httpd.ts +16 -5
- package/src/fastbrowser_httpd/libs/routes.ts +2 -2
- package/src/fastbrowser_mcp/fastbrowser_mcp.ts +324 -150
- package/src/fastbrowser_mcp/fastbrowser_types.ts +4 -0
- package/src/fastbrowser_mcp/libs/{mcp_client.ts → mcp_client_TOREMOVE.ts} +13 -1
- package/src/fastbrowser_mcp/libs/mcp_my_client.ts +128 -0
- package/src/fastbrowser_mcp/libs/mcp_proxy.ts +2 -2
- package/src/fastbrowser_mcp/libs/mcp_target_helper.ts +164 -0
- package/src/fastbrowser_mcp/libs/playwright_a11y_helper.ts +249 -0
- package/src/fastbrowser_mcp/libs/response_formatter.ts +162 -0
- package/src/fastbrowser_mcp/libs/schemas.ts +2 -2
- package/tsconfig.build.json +13 -0
- package/tsconfig.json +10 -22
- package/dist/contrib/fastweb-cli/fastweb-cli.d.ts +0 -3
- package/dist/contrib/fastweb-cli/fastweb-cli.d.ts.map +0 -1
- package/dist/contrib/fastweb-cli/fastweb-cli.js +0 -151
- package/dist/contrib/fastweb-cli/fastweb-cli.js.map +0 -1
- package/dist/contrib/fastweb-cli/http-client.d.ts +0 -7
- package/dist/contrib/fastweb-cli/http-client.d.ts.map +0 -1
- package/dist/contrib/fastweb-cli/http-client.js +0 -51
- package/dist/contrib/fastweb-cli/http-client.js.map +0 -1
- package/dist/contrib/fastweb-http-server/fastweb-http-server.d.ts +0 -3
- package/dist/contrib/fastweb-http-server/fastweb-http-server.d.ts.map +0 -1
- package/dist/contrib/fastweb-http-server/fastweb-http-server.js +0 -82
- package/dist/contrib/fastweb-http-server/fastweb-http-server.js.map +0 -1
- package/dist/contrib/fastweb-http-server/routes.d.ts +0 -6
- package/dist/contrib/fastweb-http-server/routes.d.ts.map +0 -1
- package/dist/contrib/fastweb-http-server/routes.js +0 -41
- package/dist/contrib/fastweb-http-server/routes.js.map +0 -1
- package/dist/contrib/fastweb-http-server/tool-schemas.d.ts +0 -63
- package/dist/contrib/fastweb-http-server/tool-schemas.d.ts.map +0 -1
- package/dist/contrib/fastweb-http-server/tool-schemas.js +0 -61
- package/dist/contrib/fastweb-http-server/tool-schemas.js.map +0 -1
- package/dist/fastbrowser_mcp/libs/mcp_client.d.ts +0 -120
- package/dist/fastbrowser_mcp/libs/mcp_client.d.ts.map +0 -1
- package/dist/fastbrowser_mcp/libs/mcp_client.js +0 -83
- package/dist/fastbrowser_mcp/libs/mcp_client.js.map +0 -1
- package/dist/fastweb_cli/fastweb_cli.d.ts +0 -3
- package/dist/fastweb_cli/fastweb_cli.d.ts.map +0 -1
- package/dist/fastweb_cli/fastweb_cli.js +0 -254
- package/dist/fastweb_cli/fastweb_cli.js.map +0 -1
- package/dist/fastweb_cli/http-client.d.ts +0 -7
- package/dist/fastweb_cli/http-client.d.ts.map +0 -1
- package/dist/fastweb_cli/http-client.js +0 -51
- package/dist/fastweb_cli/http-client.js.map +0 -1
- package/dist/fastweb_cli/libs/http-client.d.ts +0 -7
- package/dist/fastweb_cli/libs/http-client.d.ts.map +0 -1
- package/dist/fastweb_cli/libs/http-client.js +0 -51
- package/dist/fastweb_cli/libs/http-client.js.map +0 -1
- package/dist/fastweb_cli/libs/server-manager.d.ts +0 -12
- package/dist/fastweb_cli/libs/server-manager.d.ts.map +0 -1
- package/dist/fastweb_cli/libs/server-manager.js +0 -194
- package/dist/fastweb_cli/libs/server-manager.js.map +0 -1
- package/dist/fastweb_http_server/fastweb_http_server.d.ts +0 -3
- package/dist/fastweb_http_server/fastweb_http_server.d.ts.map +0 -1
- package/dist/fastweb_http_server/fastweb_http_server.js +0 -82
- package/dist/fastweb_http_server/fastweb_http_server.js.map +0 -1
- package/dist/fastweb_http_server/libs/routes.d.ts +0 -6
- package/dist/fastweb_http_server/libs/routes.d.ts.map +0 -1
- package/dist/fastweb_http_server/libs/routes.js +0 -41
- package/dist/fastweb_http_server/libs/routes.js.map +0 -1
- package/dist/fastweb_http_server/libs/tool-schemas.d.ts +0 -72
- package/dist/fastweb_http_server/libs/tool-schemas.d.ts.map +0 -1
- package/dist/fastweb_http_server/libs/tool-schemas.js +0 -65
- package/dist/fastweb_http_server/libs/tool-schemas.js.map +0 -1
- package/dist/fastweb_http_server/routes.d.ts +0 -6
- package/dist/fastweb_http_server/routes.d.ts.map +0 -1
- package/dist/fastweb_http_server/routes.js +0 -41
- package/dist/fastweb_http_server/routes.js.map +0 -1
- package/dist/fastweb_http_server/tool-schemas.d.ts +0 -63
- package/dist/fastweb_http_server/tool-schemas.d.ts.map +0 -1
- package/dist/fastweb_http_server/tool-schemas.js +0 -61
- package/dist/fastweb_http_server/tool-schemas.js.map +0 -1
- package/dist/fastweb_mcp/fastweb_mcp.d.ts +0 -4
- package/dist/fastweb_mcp/fastweb_mcp.d.ts.map +0 -1
- package/dist/fastweb_mcp/fastweb_mcp.js +0 -417
- package/dist/fastweb_mcp/fastweb_mcp.js.map +0 -1
- package/dist/fastweb_mcp/libs/mcp_client.d.ts.map +0 -1
- package/dist/fastweb_mcp/libs/mcp_client.js.map +0 -1
- package/dist/fastweb_mcp/libs/mcp_proxy.d.ts +0 -10
- package/dist/fastweb_mcp/libs/mcp_proxy.d.ts.map +0 -1
- package/dist/fastweb_mcp/libs/mcp_proxy.js +0 -45
- package/dist/fastweb_mcp/libs/mcp_proxy.js.map +0 -1
- package/dist/fastweb_mcp/libs/schemas.d.ts +0 -28
- package/dist/fastweb_mcp/libs/schemas.d.ts.map +0 -1
- package/dist/fastweb_mcp/libs/schemas.js +0 -38
- package/dist/fastweb_mcp/libs/schemas.js.map +0 -1
- package/dist/src/fastweb_mcp.d.ts +0 -17
- package/dist/src/fastweb_mcp.d.ts.map +0 -1
- package/dist/src/fastweb_mcp.js +0 -342
- package/dist/src/fastweb_mcp.js.map +0 -1
- package/dist/src/libs/mcp_client.d.ts.map +0 -1
- package/dist/src/libs/mcp_client.js.map +0 -1
- package/dist/src/libs/mcp_proxy.d.ts +0 -10
- package/dist/src/libs/mcp_proxy.d.ts.map +0 -1
- package/dist/src/libs/mcp_proxy.js +0 -45
- package/dist/src/libs/mcp_proxy.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/fastweb_mcp/libs/schemas.ts"],"names":[],"mappings":";;;AAAA,cAAc;AACd,6BAAwB;AAExB,+EAA+E;AAC/E,+EAA+E;AAC/E,uEAAuE;AACvE,uEAAuE;AACvE,uEAAuE;AACvE,+EAA+E;AAC/E,+EAA+E;AAElE,QAAA,wBAAwB,GAAG,OAAC,CAAC,MAAM,CAAC;IAChD,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;SAClB,QAAQ,CAAC,mDAAmD,CAAC;IAC/D,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE;SACf,QAAQ,CAAC,iFAAiF,CAAC;SAC3F,OAAO,CAAC,CAAC,CAAC;IACZ,aAAa,EAAE,OAAC,CAAC,OAAO,EAAE;SACxB,QAAQ,CAAC,iDAAiD,CAAC;SAC3D,OAAO,CAAC,IAAI,CAAC;CACf,CAAC,CAAC;AAEU,QAAA,yBAAyB,GAAG,OAAC,CAAC,MAAM,CAAC;IACjD,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,gCAAwB,CAAC;SAC1C,QAAQ,CAAC,mDAAmD,CAAC;CAC/D,CAAC,CAAC;AAEU,QAAA,6BAA6B,GAAG,OAAC,CAAC,MAAM,CAAC;IACrD,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;SAClB,QAAQ,CAAC,mDAAmD,CAAC;IAC/D,aAAa,EAAE,OAAC,CAAC,OAAO,EAAE;SACxB,QAAQ,CAAC,iDAAiD,CAAC;SAC3D,OAAO,CAAC,IAAI,CAAC;CACf,CAAC,CAAC;AAEU,QAAA,8BAA8B,GAAG,OAAC,CAAC,MAAM,CAAC;IACtD,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,qCAA6B,CAAC;SAC/C,QAAQ,CAAC,kEAAkE,CAAC;CAC9E,CAAC,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
export declare const QuerySelectorInputSchema: z.ZodObject<{
|
|
4
|
-
selector: z.ZodString;
|
|
5
|
-
limit: z.ZodDefault<z.ZodNumber>;
|
|
6
|
-
withAncestors: z.ZodDefault<z.ZodBoolean>;
|
|
7
|
-
}, z.core.$strip>;
|
|
8
|
-
export declare const QuerySelectorsInputSchema: z.ZodObject<{
|
|
9
|
-
selectors: z.ZodArray<z.ZodObject<{
|
|
10
|
-
selector: z.ZodString;
|
|
11
|
-
limit: z.ZodDefault<z.ZodNumber>;
|
|
12
|
-
withAncestors: z.ZodDefault<z.ZodBoolean>;
|
|
13
|
-
}, z.core.$strip>>;
|
|
14
|
-
}, z.core.$strip>;
|
|
15
|
-
export type QuerySelectorInput = z.infer<typeof QuerySelectorInputSchema>;
|
|
16
|
-
export type QuerySelectorsInput = z.infer<typeof QuerySelectorsInputSchema>;
|
|
17
|
-
//# sourceMappingURL=fastweb_mcp.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fastweb_mcp.d.ts","sourceRoot":"","sources":["../../src/fastweb_mcp.ts"],"names":[],"mappings":";AAQA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,eAAO,MAAM,wBAAwB;;;;iBASnC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;iBAGpC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
|
package/dist/src/fastweb_mcp.js
DELETED
|
@@ -1,342 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
-
if (k2 === undefined) k2 = k;
|
|
5
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
-
}
|
|
9
|
-
Object.defineProperty(o, k2, desc);
|
|
10
|
-
}) : (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
o[k2] = m[k];
|
|
13
|
-
}));
|
|
14
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
-
}) : function(o, v) {
|
|
17
|
-
o["default"] = v;
|
|
18
|
-
});
|
|
19
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
-
var ownKeys = function(o) {
|
|
21
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
-
var ar = [];
|
|
23
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
-
return ar;
|
|
25
|
-
};
|
|
26
|
-
return ownKeys(o);
|
|
27
|
-
};
|
|
28
|
-
return function (mod) {
|
|
29
|
-
if (mod && mod.__esModule) return mod;
|
|
30
|
-
var result = {};
|
|
31
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
-
__setModuleDefault(result, mod);
|
|
33
|
-
return result;
|
|
34
|
-
};
|
|
35
|
-
})();
|
|
36
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
-
exports.QuerySelectorsInputSchema = exports.QuerySelectorInputSchema = void 0;
|
|
38
|
-
// npm imports
|
|
39
|
-
const commander_1 = require("commander");
|
|
40
|
-
const zod_1 = require("zod");
|
|
41
|
-
const A11yParse = __importStar(require("../../a11y_parse/dist/src/index.js"));
|
|
42
|
-
// local imports
|
|
43
|
-
const mcp_client_js_1 = require("./libs/mcp_client.js");
|
|
44
|
-
const mcp_proxy_js_1 = require("./libs/mcp_proxy.js");
|
|
45
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
46
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
47
|
-
//
|
|
48
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
49
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
50
|
-
exports.QuerySelectorInputSchema = zod_1.z.object({
|
|
51
|
-
selector: zod_1.z.string()
|
|
52
|
-
.describe("CSS-like selector to query the accessibility tree"),
|
|
53
|
-
limit: zod_1.z.number()
|
|
54
|
-
.describe("Maximum number of nodes to return (excluding ancestors). Set to 0 for no limit.")
|
|
55
|
-
.default(0),
|
|
56
|
-
withAncestors: zod_1.z.boolean()
|
|
57
|
-
.describe("Whether to include ancestor nodes in the result")
|
|
58
|
-
.default(true),
|
|
59
|
-
});
|
|
60
|
-
exports.QuerySelectorsInputSchema = zod_1.z.object({
|
|
61
|
-
selectors: zod_1.z.array(exports.QuerySelectorInputSchema)
|
|
62
|
-
.describe("List of selectors to query the accessibility tree"),
|
|
63
|
-
});
|
|
64
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
65
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
66
|
-
//
|
|
67
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
68
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
69
|
-
class MainHelper {
|
|
70
|
-
/**
|
|
71
|
-
* Takes a snapshot of the current page to get the latest accessibility tree, and parses it into an AxNode tree structure.
|
|
72
|
-
* @param mcpClient The MCP client to use for taking a snapshot.
|
|
73
|
-
* @returns The parsed accessibility tree as an AxNode.
|
|
74
|
-
*/
|
|
75
|
-
static async _getSnapshotTree(mcpClient) {
|
|
76
|
-
// take a snapshot to get the latest accessibility tree
|
|
77
|
-
const response = await mcpClient.callTool('take_snapshot', {});
|
|
78
|
-
const responseText = response.content[0];
|
|
79
|
-
if (responseText.type !== "text")
|
|
80
|
-
throw new Error("Unexpected content type");
|
|
81
|
-
// get the snapshot text and remove the first line (snapshot metadata)
|
|
82
|
-
let snapshotText = responseText.text;
|
|
83
|
-
snapshotText = snapshotText.split('\n').slice(1).join('\n');
|
|
84
|
-
// log to console for debugging
|
|
85
|
-
// console.log("Snapshot text content:");
|
|
86
|
-
// console.log(snapshotText);
|
|
87
|
-
// parse the accessibility tree
|
|
88
|
-
const a11yTree = A11yParse.A11yTree.parse(snapshotText);
|
|
89
|
-
return a11yTree;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Queries the accessibility tree with the provided CSS-like selectors, and returns a text representation of the results.
|
|
93
|
-
*
|
|
94
|
-
* @param mcpClient The MCP client to use for taking a snapshot.
|
|
95
|
-
* @param querySelectors The selectors to query the accessibility tree with.
|
|
96
|
-
* @returns A text representation of the query results.
|
|
97
|
-
*/
|
|
98
|
-
static async querySelectorsAll(mcpClient, querySelectors) {
|
|
99
|
-
const a11yTree = await this._getSnapshotTree(mcpClient);
|
|
100
|
-
const responseTexts = [];
|
|
101
|
-
for (const querySelector of querySelectors.selectors) {
|
|
102
|
-
// query the tree with the provided selector
|
|
103
|
-
const selectedNodes = A11yParse.A11yQuery.querySelectorAll(a11yTree, querySelector.selector);
|
|
104
|
-
// console.log("Found buttons:", axButtons.length);
|
|
105
|
-
// honor querySelector.limit by slicing the selected nodes array (but keep ancestors if withAncestors is true)
|
|
106
|
-
if (querySelector.limit > 0) {
|
|
107
|
-
selectedNodes.splice(querySelector.limit);
|
|
108
|
-
}
|
|
109
|
-
let responseText = `## Node found for selector '${querySelector.selector}' (${selectedNodes.length} node${selectedNodes.length > 1 ? 's' : ''}${querySelector.withAncestors ? ', with ancestors' : ''}):\n`;
|
|
110
|
-
if (querySelector.withAncestors) {
|
|
111
|
-
if (selectedNodes.length === 0) {
|
|
112
|
-
responseText += "No node found";
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
const ancestorTree = A11yParse.A11yTree.buildAncestorTree(selectedNodes);
|
|
116
|
-
responseText += A11yParse.A11yTree.stringify(ancestorTree);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
for (const selectedNode of selectedNodes) {
|
|
121
|
-
responseText += A11yParse.A11yTree.stringify(selectedNode) + '\n';
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
responseText += '\n';
|
|
125
|
-
// add the response text for this selector to the overall response
|
|
126
|
-
responseTexts.push(responseText);
|
|
127
|
-
}
|
|
128
|
-
// join the response texts for all selectors and return
|
|
129
|
-
const responseText = responseTexts.join('\n');
|
|
130
|
-
return responseText;
|
|
131
|
-
}
|
|
132
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
133
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
134
|
-
//
|
|
135
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
136
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
137
|
-
static async commandMcpServer({ verbose = false, }) {
|
|
138
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
139
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
140
|
-
// mcp client
|
|
141
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
142
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
143
|
-
// Create the mcp client toward the official chrome-devtools-mcp tool, which provides access to a Chrome tab's accessibility
|
|
144
|
-
// tree and allows us to take snapshots and query the tree with selectors.
|
|
145
|
-
const mcpClient = new mcp_client_js_1.McpClient({
|
|
146
|
-
name: "my-app",
|
|
147
|
-
version: "0.1.0",
|
|
148
|
-
transport: {
|
|
149
|
-
type: "stdio",
|
|
150
|
-
command: "npx",
|
|
151
|
-
args: [
|
|
152
|
-
"chrome-devtools-mcp@latest", "--autoconnect", "--no-performance-crux", "--no-usage-statistics",
|
|
153
|
-
],
|
|
154
|
-
},
|
|
155
|
-
});
|
|
156
|
-
// Connect the mcp client to the chrome-devtools-mcp tool, which will allow us to take snapshots and query the accessibility tree.
|
|
157
|
-
await mcpClient.connect();
|
|
158
|
-
if (verbose) {
|
|
159
|
-
// list all the tools available in mcpClient for debugging
|
|
160
|
-
const mcpClientTools = await mcpClient.listTools();
|
|
161
|
-
console.error("Tools available in mcpClient:");
|
|
162
|
-
for (const tool of mcpClientTools) {
|
|
163
|
-
console.error(`- ${tool.name}: ${tool.description}`);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
167
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
168
|
-
//
|
|
169
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
170
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
171
|
-
if (false) {
|
|
172
|
-
await mcpClient.callTool('navigate_page', {
|
|
173
|
-
// url: "https://www.example.com/",
|
|
174
|
-
url: "https://welcometothejungle.com/"
|
|
175
|
-
});
|
|
176
|
-
const responseText = await MainHelper.querySelectorsAll(mcpClient, {
|
|
177
|
-
selectors: [
|
|
178
|
-
{
|
|
179
|
-
selector: "link, button",
|
|
180
|
-
withAncestors: true,
|
|
181
|
-
limit: 0,
|
|
182
|
-
},
|
|
183
|
-
{
|
|
184
|
-
selector: 'heading[level="1"]',
|
|
185
|
-
withAncestors: false,
|
|
186
|
-
limit: 0,
|
|
187
|
-
},
|
|
188
|
-
],
|
|
189
|
-
});
|
|
190
|
-
console.log(responseText);
|
|
191
|
-
await mcpClient.close();
|
|
192
|
-
process.exit(0);
|
|
193
|
-
}
|
|
194
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
195
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
196
|
-
//
|
|
197
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
198
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
199
|
-
// Create the MCP proxy server, which will expose tools to the MCP client and proxy calls to those tools to
|
|
200
|
-
// the mcpClient connected to the chrome-devtools-mcp.
|
|
201
|
-
const mcpProxy = new mcp_proxy_js_1.McpProxy();
|
|
202
|
-
// Proxy the 'most interesting' tools from the mcpClient to the mcpProxy, so that they can be called from the
|
|
203
|
-
// MCP server (and thus from an LLM agent connected to the MCP server).
|
|
204
|
-
// TODO new_page/navigate_page are very similar - maybe we can unify them in the chrome-devtools-mcp tool and
|
|
205
|
-
// - have a single 'open_page' tool instead?
|
|
206
|
-
const toolsToProxys = [
|
|
207
|
-
'list_pages',
|
|
208
|
-
'new_page',
|
|
209
|
-
'close_page',
|
|
210
|
-
'navigate_page',
|
|
211
|
-
'click',
|
|
212
|
-
'fill_form',
|
|
213
|
-
];
|
|
214
|
-
for (const toolName of toolsToProxys) {
|
|
215
|
-
await mcpProxy.proxyToolCall(mcpClient, toolName);
|
|
216
|
-
}
|
|
217
|
-
// Connect the MCP proxy server to start accepting connections from MCP clients (e.g. LLM agents).
|
|
218
|
-
await mcpProxy.connect();
|
|
219
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
220
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
221
|
-
// .querySelectorsAll tool implementation
|
|
222
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
223
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
224
|
-
const cssSelectorLanguageDescription = [
|
|
225
|
-
`The selector syntax is similar to CSS selectors, but with some differences and limitations:`,
|
|
226
|
-
``,
|
|
227
|
-
`- You can select by role: e.g. "button", "link", "heading"`,
|
|
228
|
-
`- You can select by uid: e.g. "#1_3"`,
|
|
229
|
-
`- You can select by attribute equals: e.g. 'link[name="Learn more"]'`,
|
|
230
|
-
`- You can select by attribute starts-with: e.g. 'link[url^="https://iana.org"]'`,
|
|
231
|
-
`- You can select by attribute exists: e.g. 'heading[level]'`,
|
|
232
|
-
`- You can select descendants: e.g. "RootWebArea link"`,
|
|
233
|
-
`- You can select direct children: e.g. "RootWebArea > heading"`,
|
|
234
|
-
`- You can use union: e.g. "heading, link"`,
|
|
235
|
-
`- You can combine selectors: e.g. 'RootWebArea > link[url*="iana"]'`,
|
|
236
|
-
].join('\n');
|
|
237
|
-
const mcpServer = await mcpProxy.getMcpServer();
|
|
238
|
-
mcpServer.registerTool("querySelectorsAll", {
|
|
239
|
-
description: [
|
|
240
|
-
`Query the accessibility tree with CSS-like selectors`,
|
|
241
|
-
`Selector syntax: ${cssSelectorLanguageDescription} `,
|
|
242
|
-
].join('\n'),
|
|
243
|
-
inputSchema: exports.QuerySelectorsInputSchema,
|
|
244
|
-
}, async (querySelectorsInput) => {
|
|
245
|
-
// query the accessibility tree with the provided selector
|
|
246
|
-
const outputText = await MainHelper.querySelectorsAll(mcpClient, querySelectorsInput);
|
|
247
|
-
return {
|
|
248
|
-
content: [{ type: "text", text: outputText }],
|
|
249
|
-
};
|
|
250
|
-
});
|
|
251
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
252
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
253
|
-
// pressKeys tool implementation
|
|
254
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
255
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
256
|
-
mcpServer.registerTool("pressKeys", {
|
|
257
|
-
description: "Press a sequence of keys on the page. E.g. 'Tab', 'Enter', 'ArrowDown'",
|
|
258
|
-
inputSchema: zod_1.z.object({
|
|
259
|
-
keys: zod_1.z.string().describe("The keys to press, in order, comma-separated. E.g. 'Hello, Tab, Enter, ArrowDown'"),
|
|
260
|
-
}),
|
|
261
|
-
}, async ({ keys }) => {
|
|
262
|
-
// Build the list of keys to send, splitting regular characters into individual key presses, but keeping special keys as-is
|
|
263
|
-
const keysToSend = [];
|
|
264
|
-
const keysSplit = keys.split(',').map((key) => key.trim());
|
|
265
|
-
for (const key of keysSplit) {
|
|
266
|
-
const specialKeys = ['Tab', 'Enter', 'ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'Escape', 'Backspace', 'Delete'];
|
|
267
|
-
if (specialKeys.includes(key)) {
|
|
268
|
-
keysToSend.push(key);
|
|
269
|
-
}
|
|
270
|
-
else {
|
|
271
|
-
// for regular characters, we need to split them into individual key presses
|
|
272
|
-
for (const char of key) {
|
|
273
|
-
keysToSend.push(char);
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
console.error("Keys to send:", keysToSend);
|
|
278
|
-
// send the keys to the page using the mcpClient's 'press_key' tool
|
|
279
|
-
await mcpClient.callTool('press_key', { keys: keysToSend });
|
|
280
|
-
// return a response indicating which keys were pressed
|
|
281
|
-
return {
|
|
282
|
-
content: [{ type: "text", text: `Pressed keys: ${keysToSend.join(', ')}` }],
|
|
283
|
-
};
|
|
284
|
-
});
|
|
285
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
286
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
287
|
-
// .get_current_datetime tool implementation
|
|
288
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
289
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
290
|
-
// const mcpServer = await mcpProxy.getMcpServer();
|
|
291
|
-
// const timezoneSchema = {
|
|
292
|
-
// timezone: z.string().optional().describe("IANA timezone name (e.g. 'America/New_York'). Defaults to local system timezone."),
|
|
293
|
-
// };
|
|
294
|
-
// mcpServer.registerTool(
|
|
295
|
-
// "get_current_datetime",
|
|
296
|
-
// {
|
|
297
|
-
// description: "Get the current date and time",
|
|
298
|
-
// inputSchema: timezoneSchema,
|
|
299
|
-
// },
|
|
300
|
-
// async ({ timezone }) => {
|
|
301
|
-
// const date = new Date();
|
|
302
|
-
// const options: Intl.DateTimeFormatOptions = {
|
|
303
|
-
// timeZone: timezone,
|
|
304
|
-
// year: "numeric",
|
|
305
|
-
// month: "2-digit",
|
|
306
|
-
// day: "2-digit",
|
|
307
|
-
// hour: "2-digit",
|
|
308
|
-
// minute: "2-digit",
|
|
309
|
-
// second: "2-digit",
|
|
310
|
-
// timeZoneName: "short",
|
|
311
|
-
// };
|
|
312
|
-
// const formatted = new Intl.DateTimeFormat("en-US", options).format(date);
|
|
313
|
-
// return {
|
|
314
|
-
// content: [{ type: "text", text: formatted }],
|
|
315
|
-
// };
|
|
316
|
-
// }
|
|
317
|
-
// );
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
321
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
322
|
-
//
|
|
323
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
324
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
325
|
-
async function main() {
|
|
326
|
-
const program = new commander_1.Command();
|
|
327
|
-
program
|
|
328
|
-
.command('mcp_server')
|
|
329
|
-
.description('Start the MCP proxy server')
|
|
330
|
-
.option('-v, --verbose', 'Enable verbose logging')
|
|
331
|
-
.action(async ({ verbose }) => {
|
|
332
|
-
await MainHelper.commandMcpServer({ verbose });
|
|
333
|
-
});
|
|
334
|
-
program.parse(process.argv);
|
|
335
|
-
}
|
|
336
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
337
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
338
|
-
//
|
|
339
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
340
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
341
|
-
void main();
|
|
342
|
-
//# sourceMappingURL=fastweb_mcp.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fastweb_mcp.js","sourceRoot":"","sources":["../../src/fastweb_mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp_client.d.ts","sourceRoot":"","sources":["../../../src/libs/mcp_client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAEjG,MAAM,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,UAAU,CAAC;AAE1D,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,kBAAkB,CAAC;CAC9B;AAQD,qBAAa,SAAS;IAKT,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,SAAS,CAAS;gBAEG,OAAO,EAAE,gBAAgB;IAOhD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAM5B,QAAQ,CACb,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAChC,OAAO,CAAC,cAAc,CAAC;IAKpB,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAMpC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK3C,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAMhC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;;;;;;;2BAyBqgL,CAAC;4BAAgC,CAAC;4BAAoE,CAAC;gCAAsD,CAAC;;qBAA0E,CAAC;;;;;2BAAmL,CAAC;4BAAgC,CAAC;4BAAoE,CAAC;gCAAsD,CAAC;;qBAA0E,CAAC;;;;;2BAAmL,CAAC;4BAAgC,CAAC;4BAAoE,CAAC;gCAAsD,CAAC;;qBAA0E,CAAC;;;;;;4BAAsN,CAAC;yBAA+C,CAAC;;;;4BAA4J,CAAC;yBAA+C,CAAC;;2BAAqF,CAAC;4BAAgC,CAAC;4BAAoE,CAAC;gCAAsD,CAAC;;qBAA0E,CAAC;;;;;2BAAsL,CAAC;wBAA8C,CAAC;oBAA0C,CAAC;2BAAiD,CAAC;4BAAgC,CAAC;4BAAoE,CAAC;gCAAsD,CAAC;;qBAA0E,CAAC;;;qBAAkG,CAAC;;4BAAiE,CAAC;yBAA+C,CAAC;yBAAiD,CAAC;;qBAAsF,CAAC;;;;;yBAA+H,CAAC;kDAAiF,CAAC;;;;;;IApBl9Q,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,eAAe;CAKvB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp_client.js","sourceRoot":"","sources":["../../../src/libs/mcp_client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
-
import { McpClient } from "./mcp_client.js";
|
|
3
|
-
export declare class McpProxy {
|
|
4
|
-
private _mcpServer;
|
|
5
|
-
constructor();
|
|
6
|
-
connect(): Promise<void>;
|
|
7
|
-
getMcpServer(): Promise<McpServer>;
|
|
8
|
-
proxyToolCall(mcpClient: McpClient, toolName: string): Promise<void>;
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=mcp_proxy.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp_proxy.d.ts","sourceRoot":"","sources":["../../../src/libs/mcp_proxy.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,qBAAa,QAAQ;IACpB,OAAO,CAAC,UAAU,CAAY;;IASxB,OAAO;IAKP,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IAOlC,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM;CAc1D"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.McpProxy = void 0;
|
|
7
|
-
// node imports
|
|
8
|
-
const node_assert_1 = __importDefault(require("node:assert"));
|
|
9
|
-
// npm imports
|
|
10
|
-
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
11
|
-
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
12
|
-
const zod_from_json_schema_1 = require("zod-from-json-schema");
|
|
13
|
-
class McpProxy {
|
|
14
|
-
constructor() {
|
|
15
|
-
this._mcpServer = new mcp_js_1.McpServer({
|
|
16
|
-
name: "fastweb_mcp",
|
|
17
|
-
version: "1.0.0",
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
async connect() {
|
|
21
|
-
const transport = new stdio_js_1.StdioServerTransport();
|
|
22
|
-
await this._mcpServer.connect(transport);
|
|
23
|
-
}
|
|
24
|
-
async getMcpServer() {
|
|
25
|
-
if (this._mcpServer === null) {
|
|
26
|
-
throw new Error("MCP server is not initialized");
|
|
27
|
-
}
|
|
28
|
-
return this._mcpServer;
|
|
29
|
-
}
|
|
30
|
-
async proxyToolCall(mcpClient, toolName) {
|
|
31
|
-
const mcpClientTools = await mcpClient.listTools();
|
|
32
|
-
const mcpClientTool = mcpClientTools.find((tool) => tool.name === toolName);
|
|
33
|
-
node_assert_1.default.ok(mcpClientTool !== undefined, `Tool ${toolName} not found in mcp client tools`);
|
|
34
|
-
const inputSchema = (0, zod_from_json_schema_1.convertJsonSchemaToZod)(mcpClientTool.inputSchema);
|
|
35
|
-
this._mcpServer.registerTool(toolName, {
|
|
36
|
-
description: mcpClientTool.description,
|
|
37
|
-
inputSchema: inputSchema,
|
|
38
|
-
}, async (...args) => {
|
|
39
|
-
const callResult = await mcpClient.callTool(toolName, args[0]);
|
|
40
|
-
return callResult;
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
exports.McpProxy = McpProxy;
|
|
45
|
-
//# sourceMappingURL=mcp_proxy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp_proxy.js","sourceRoot":"","sources":["../../../src/libs/mcp_proxy.ts"],"names":[],"mappings":";;;;;;AAAA,eAAe;AACf,8DAAiC;AAEjC,cAAc;AACd,oEAAoE;AACpE,wEAAiF;AACjF,+DAA8D;AAK9D,MAAa,QAAQ;IAGpB;QACC,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAS,CAAC;YAC/B,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,OAAO;SAChB,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO;QACZ,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,YAAY;QACjB,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAoB,EAAE,QAAgB;QACzD,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,CAAA;QAClD,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAC5E,qBAAM,CAAC,EAAE,CAAC,aAAa,KAAK,SAAS,EAAE,QAAQ,QAAQ,gCAAgC,CAAC,CAAA;QAExF,MAAM,WAAW,GAAG,IAAA,6CAAsB,EAAC,aAAa,CAAC,WAAkB,CAAC,CAAC;QAC7E,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE;YACtC,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,WAAW,EAAE,WAAW;SACxB,EAAE,KAAK,EAAE,GAAG,IAAW,EAAE,EAAE;YAC3B,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YAC9D,OAAO,UAAU,CAAA;QAClB,CAAC,CAAC,CAAC;IACJ,CAAC;CACD;AApCD,4BAoCC"}
|