fastbrowser_cli 1.0.30 → 1.0.33
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 +1 -2
- package/dist/fastbrowser_cli/fastbrowser_cli.js +11 -19
- package/dist/fastbrowser_cli/fastbrowser_cli.js.map +1 -1
- package/dist/fastbrowser_cli/libs/query-builder.d.ts +2 -0
- package/dist/fastbrowser_cli/libs/query-builder.d.ts.map +1 -1
- package/dist/fastbrowser_cli/libs/query-builder.js +4 -0
- package/dist/fastbrowser_cli/libs/query-builder.js.map +1 -1
- package/dist/fastbrowser_httpd/libs/tool-schemas.d.ts +2 -0
- package/dist/fastbrowser_httpd/libs/tool-schemas.d.ts.map +1 -1
- package/dist/fastbrowser_mcp/fastbrowser_mcp.d.ts.map +1 -1
- package/dist/fastbrowser_mcp/fastbrowser_mcp.js +147 -22
- package/dist/fastbrowser_mcp/fastbrowser_mcp.js.map +1 -1
- package/dist/fastbrowser_mcp/libs/mcp_my_client.d.ts.map +1 -1
- package/dist/fastbrowser_mcp/libs/mcp_my_client.js +8 -0
- package/dist/fastbrowser_mcp/libs/mcp_my_client.js.map +1 -1
- package/dist/fastbrowser_mcp/libs/mcp_target_helper.d.ts.map +1 -1
- package/dist/fastbrowser_mcp/libs/mcp_target_helper.js +15 -2
- package/dist/fastbrowser_mcp/libs/mcp_target_helper.js.map +1 -1
- package/dist/fastbrowser_mcp/libs/schemas.d.ts +4 -0
- package/dist/fastbrowser_mcp/libs/schemas.d.ts.map +1 -1
- package/dist/fastbrowser_mcp/libs/schemas.js +6 -0
- package/dist/fastbrowser_mcp/libs/schemas.js.map +1 -1
- package/dist/shared/logger.d.ts +86 -0
- package/dist/shared/logger.d.ts.map +1 -0
- package/dist/shared/logger.js +269 -0
- package/dist/shared/logger.js.map +1 -0
- package/docs/brainstorm_scrap_by_ai.md +1 -1
- package/docs/feature_support_cli.md +7 -8
- package/docs/target_tools/target_tools_chrome_devtools.md +963 -0
- package/docs/target_tools/target_tools_playwright.md +763 -0
- package/examples/linkedin_cli/linked_dm.sh +16 -0
- package/examples/linkedin_cli/linked_post.sh +13 -0
- package/examples/linkedin_cli/linkedin.snapshot.txt +1245 -0
- package/examples/todomvc/todomvc.a11y.txt +44 -0
- package/examples/todomvc/todomvc.sh +11 -0
- package/examples/wttj_cli/fastbrowser_helper.ts +39 -0
- package/examples/wttj_cli/wttf_job-original.a11y.txt +652 -0
- package/examples/wttj_cli/wttf_job.a11y.txt +317 -0
- package/examples/{welcometothejungle/wttj-job.ts → wttj_cli/wttj_job copy.ts } +60 -11
- package/examples/wttj_cli/wttj_job.ts +179 -0
- package/examples/wttj_cli/wttj_search.ts +162 -0
- package/package.json +10 -4
- package/skills/fastbrowser/SKILL.md +10 -11
- package/skills/fastbrowser-script/SKILL.md +4 -4
- package/src/fastbrowser_cli/fastbrowser_cli.ts +14 -25
- package/src/fastbrowser_cli/libs/query-builder.ts +6 -0
- package/src/fastbrowser_mcp/fastbrowser_mcp.ts +181 -26
- package/src/fastbrowser_mcp/libs/mcp_my_client.ts +17 -0
- package/src/fastbrowser_mcp/libs/mcp_target_helper.ts +15 -2
- package/src/fastbrowser_mcp/libs/schemas.ts +6 -0
- package/src/shared/logger.ts +317 -0
- package/test.a11y.txt +828 -0
- package/tests/query-builder.test.ts +51 -11
- package/examples/welcometothejungle/fastbrowser_helper.ts +0 -39
- package/examples/welcometothejungle/wttj-search.ts +0 -82
- /package/examples/{post-to-x.sh → twitter_cli/twitter_post.sh} +0 -0
package/README.md
CHANGED
|
@@ -106,8 +106,7 @@ npx fastbrowser_cli click -s 'link[name="More information..."]'
|
|
|
106
106
|
| `close_page` | Close a page by id | `--page-id` |
|
|
107
107
|
| `navigate_page` | Navigate current page to a URL | `--url` |
|
|
108
108
|
| `take_snapshot` | Dump the full accessibility tree (expensive — prefer targeted queries) | — |
|
|
109
|
-
| `query_selectors` | Query the a11y tree
|
|
110
|
-
| `query_selectors_all` | Query the a11y tree, returning every match per selector | `--selector` or `--selectors-json` |
|
|
109
|
+
| `query_selectors` | Query the a11y tree (first match per selector by default; pass `-a, --all` for every match, with optional `--limit`) | `--selector` or `--selectors-json` |
|
|
111
110
|
| `click` | Click an element by accessibility selector | `-s, --selector` |
|
|
112
111
|
| `fill_form` | Fill a form field by accessibility selector | `-s, --selector`, `--value` |
|
|
113
112
|
| `press_keys` | Press a comma-separated key sequence | `--keys` |
|
|
@@ -259,32 +259,24 @@ async function main() {
|
|
|
259
259
|
elements: [{ selector: opts.selector, value: opts.value }],
|
|
260
260
|
});
|
|
261
261
|
});
|
|
262
|
-
program
|
|
263
|
-
.command('query_selectors_all')
|
|
264
|
-
.description('Query the accessibility tree with CSS-like selectors')
|
|
265
|
-
.option('-s, --selector <selector>', 'CSS-like selector (repeatable)', (value, prev = []) => {
|
|
266
|
-
prev.push(value);
|
|
267
|
-
return prev;
|
|
268
|
-
})
|
|
269
|
-
.option('--limit <number>', 'Max nodes per selector (0 = unlimited)', '0')
|
|
270
|
-
.option('--with-ancestors', 'Include ancestor nodes', false)
|
|
271
|
-
.option('--no-with-ancestors', 'Exclude ancestor nodes')
|
|
272
|
-
.option('--selectors-json <json>', 'JSON array of {selector,limit,withAncestors} for per-selector control')
|
|
273
|
-
.action(async (opts, cmd) => {
|
|
274
|
-
const body = QueryBuilder.buildQuerySelectorsBody(opts);
|
|
275
|
-
await MainHelper.runTool(cmd, 'query_selectors_all', body);
|
|
276
|
-
});
|
|
277
262
|
program
|
|
278
263
|
.command('query_selectors')
|
|
279
|
-
.description('Query the accessibility tree with CSS-like selectors
|
|
264
|
+
.description('Query the accessibility tree with CSS-like selectors. By default returns the first match per selector; use --all to return every match.')
|
|
280
265
|
.option('-s, --selector <selector>', 'CSS-like selector (repeatable)', (value, prev = []) => {
|
|
281
266
|
prev.push(value);
|
|
282
267
|
return prev;
|
|
283
268
|
})
|
|
284
|
-
.option('--
|
|
285
|
-
.option('--
|
|
286
|
-
.option('--
|
|
269
|
+
.option('-a, --all', 'Return all matches per selector (default: first match only)', false)
|
|
270
|
+
.option('--limit <number>', 'Max nodes per selector when --all is set (0 = unlimited)', '0')
|
|
271
|
+
.option('--wa, --with-ancestors', 'Include ancestor nodes', false)
|
|
272
|
+
.option('--wc, --with-children', 'Include descendant nodes (subtree) of each matched node', false)
|
|
273
|
+
.option('--selectors-json <json>', 'JSON array of {selector,limit?,withAncestors,withChildren} for per-selector control')
|
|
287
274
|
.action(async (opts, cmd) => {
|
|
275
|
+
if (opts.all === true) {
|
|
276
|
+
const body = QueryBuilder.buildQuerySelectorsBody(opts);
|
|
277
|
+
await MainHelper.runTool(cmd, 'query_selectors_all', body);
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
288
280
|
const body = QueryBuilder.buildQuerySelectorFirstBody(opts);
|
|
289
281
|
await MainHelper.runTool(cmd, 'query_selectors', body);
|
|
290
282
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fastbrowser_cli.js","sourceRoot":"","sources":["../../src/fastbrowser_cli/fastbrowser_cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fastbrowser_cli.js","sourceRoot":"","sources":["../../src/fastbrowser_cli/fastbrowser_cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,13 @@ export type BuildQuerySelectorsAllOpts = {
|
|
|
3
3
|
selector?: string[];
|
|
4
4
|
limit?: string;
|
|
5
5
|
withAncestors?: boolean;
|
|
6
|
+
withChildren?: boolean;
|
|
6
7
|
selectorsJson?: string;
|
|
7
8
|
};
|
|
8
9
|
export type BuildQuerySelectorFirstOpts = {
|
|
9
10
|
selector?: string[];
|
|
10
11
|
withAncestors?: boolean;
|
|
12
|
+
withChildren?: boolean;
|
|
11
13
|
selectorsJson?: string;
|
|
12
14
|
};
|
|
13
15
|
export declare class QueryBuilder {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../../src/fastbrowser_cli/libs/query-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGX,wBAAwB,EACxB,oBAAoB,EACpB,MAAM,8CAA8C,CAAC;AAQtD,MAAM,MAAM,0BAA0B,GAAG;IACxC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACzC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,qBAAa,YAAY;IACxB,MAAM,CAAC,uBAAuB,CAAC,IAAI,EAAE,0BAA0B,GAAG,wBAAwB;
|
|
1
|
+
{"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../../src/fastbrowser_cli/libs/query-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGX,wBAAwB,EACxB,oBAAoB,EACpB,MAAM,8CAA8C,CAAC;AAQtD,MAAM,MAAM,0BAA0B,GAAG;IACxC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACzC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,qBAAa,YAAY;IACxB,MAAM,CAAC,uBAAuB,CAAC,IAAI,EAAE,0BAA0B,GAAG,wBAAwB;IAmC1F,MAAM,CAAC,2BAA2B,CAAC,IAAI,EAAE,2BAA2B,GAAG,oBAAoB;CA6B3F"}
|
|
@@ -22,10 +22,12 @@ export class QueryBuilder {
|
|
|
22
22
|
throw new Error(`Invalid --limit: ${opts.limit}`);
|
|
23
23
|
}
|
|
24
24
|
const withAncestors = opts.withAncestors !== false;
|
|
25
|
+
const withChildren = opts.withChildren === true;
|
|
25
26
|
const selectors = selectorList.map((selector) => ({
|
|
26
27
|
selector,
|
|
27
28
|
limit,
|
|
28
29
|
withAncestors,
|
|
30
|
+
withChildren,
|
|
29
31
|
}));
|
|
30
32
|
return { selectors };
|
|
31
33
|
}
|
|
@@ -48,9 +50,11 @@ export class QueryBuilder {
|
|
|
48
50
|
throw new Error('At least one --selector or --selectors-json is required');
|
|
49
51
|
}
|
|
50
52
|
const withAncestors = opts.withAncestors !== false;
|
|
53
|
+
const withChildren = opts.withChildren === true;
|
|
51
54
|
const selectors = selectorList.map((selector) => ({
|
|
52
55
|
selector,
|
|
53
56
|
withAncestors,
|
|
57
|
+
withChildren,
|
|
54
58
|
}));
|
|
55
59
|
return { selectors };
|
|
56
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../../../src/fastbrowser_cli/libs/query-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../../../src/fastbrowser_cli/libs/query-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,7 @@ export declare const QuerySelectorsAllRequestSchema: z.ZodObject<{
|
|
|
35
35
|
selector: z.ZodString;
|
|
36
36
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
37
37
|
withAncestors: z.ZodDefault<z.ZodBoolean>;
|
|
38
|
+
withChildren: z.ZodDefault<z.ZodBoolean>;
|
|
38
39
|
}, z.core.$strip>>;
|
|
39
40
|
}, z.core.$strip>;
|
|
40
41
|
export type QuerySelectorsAllRequest = z.infer<typeof QuerySelectorsAllRequestSchema>;
|
|
@@ -42,6 +43,7 @@ export declare const QuerySelectorRequestSchema: z.ZodObject<{
|
|
|
42
43
|
selectors: z.ZodArray<z.ZodObject<{
|
|
43
44
|
selector: z.ZodString;
|
|
44
45
|
withAncestors: z.ZodDefault<z.ZodBoolean>;
|
|
46
|
+
withChildren: z.ZodDefault<z.ZodBoolean>;
|
|
45
47
|
}, z.core.$strip>>;
|
|
46
48
|
}, z.core.$strip>;
|
|
47
49
|
export type QuerySelectorRequest = z.infer<typeof QuerySelectorRequestSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-schemas.d.ts","sourceRoot":"","sources":["../../../src/fastbrowser_httpd/libs/tool-schemas.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AAUxJ,eAAO,MAAM,sBAAsB,iCAAwB,CAAC;AAC5D,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,oBAAoB;;iBAE/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,sBAAsB;;iBAEjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,yBAAyB;;iBAEpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,kBAAkB;;iBAE7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,qBAAqB;;;iBAGhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,qBAAqB;;;;;iBAEhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,8BAA8B
|
|
1
|
+
{"version":3,"file":"tool-schemas.d.ts","sourceRoot":"","sources":["../../../src/fastbrowser_httpd/libs/tool-schemas.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AAUxJ,eAAO,MAAM,sBAAsB,iCAAwB,CAAC;AAC5D,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,oBAAoB;;iBAE/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,sBAAsB;;iBAEjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,yBAAyB;;iBAEpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,kBAAkB;;iBAE7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,qBAAqB;;;iBAGhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,qBAAqB;;;;;iBAEhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,8BAA8B;;;;;;;iBAA4B,CAAC;AACxE,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAEtF,eAAO,MAAM,0BAA0B;;;;;;iBAAiC,CAAC;AACzE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,sBAAsB;;iBAEjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,yBAAyB,iCAAwB,CAAC;AAC/D,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAQ5E,eAAO,MAAM,iBAAiB;;;iBAG5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,kBAAkB;;;;;iBAE7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAW9D,MAAM,MAAM,eAAe,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,eAAe,EAWzC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fastbrowser_mcp.d.ts","sourceRoot":"","sources":["../../src/fastbrowser_mcp/fastbrowser_mcp.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"fastbrowser_mcp.d.ts","sourceRoot":"","sources":["../../src/fastbrowser_mcp/fastbrowser_mcp.ts"],"names":[],"mappings":";AAkBA,OAAO,EACN,wBAAwB,EACxB,yBAAyB,EACzB,6BAA6B,EAC7B,8BAA8B,EAC9B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EACN,wBAAwB,EACxB,yBAAyB,EACzB,6BAA6B,EAC7B,8BAA8B,EAC9B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,GAC7B,CAAC"}
|
|
@@ -8,12 +8,16 @@ import { Command, Option } from 'commander';
|
|
|
8
8
|
import { z } from "zod";
|
|
9
9
|
import * as A11yParse from "a11y_parse";
|
|
10
10
|
// local imports
|
|
11
|
+
import { Logger } from "../shared/logger.js";
|
|
11
12
|
import { McpMyClient } from "./libs/mcp_my_client.js";
|
|
12
13
|
import { McpProxy } from "./libs/mcp_proxy.js";
|
|
13
14
|
import { ResponseFormatter } from "./libs/response_formatter.js";
|
|
14
15
|
import { QuerySelectorInputSchema, QuerySelectorsInputSchema, QuerySelectorFirstInputSchema, QuerySelectorsFirstInputSchema, } from "./libs/schemas.js";
|
|
15
16
|
import { McpTargetHelper } from './libs/mcp_target_helper.js';
|
|
16
17
|
export { QuerySelectorInputSchema, QuerySelectorsInputSchema, QuerySelectorFirstInputSchema, QuerySelectorsFirstInputSchema, };
|
|
18
|
+
const logger = Logger.fromMetaUrl(import.meta.url, {
|
|
19
|
+
allToStderr: true,
|
|
20
|
+
});
|
|
17
21
|
///////////////////////////////////////////////////////////////////////////////
|
|
18
22
|
///////////////////////////////////////////////////////////////////////////////
|
|
19
23
|
//
|
|
@@ -67,20 +71,38 @@ class MainHelper {
|
|
|
67
71
|
* Formats a list of selected accessibility-tree nodes into the text block used by
|
|
68
72
|
* both querySelector and querySelectorsAll responses.
|
|
69
73
|
*/
|
|
70
|
-
static _formatSelectedNodes(selector, selectedNodes, withAncestors) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
text +=
|
|
74
|
+
static _formatSelectedNodes(selector, selectedNodes, withAncestors, withChildren) {
|
|
75
|
+
const nodeCount = selectedNodes.length;
|
|
76
|
+
const pluralS = nodeCount > 1 ? 's' : '';
|
|
77
|
+
const ancestorsText = withAncestors ? ', with ancestors' : '';
|
|
78
|
+
const childrenText = withChildren ? ', with children' : '';
|
|
79
|
+
let text = `## Node${pluralS} found for selector '${selector}' (${nodeCount} node${pluralS}${ancestorsText}${childrenText}):`;
|
|
80
|
+
if (selectedNodes.length === 0) {
|
|
81
|
+
if (text.length > 0)
|
|
82
|
+
text += '\n';
|
|
83
|
+
text += "No node found";
|
|
84
|
+
}
|
|
85
|
+
else if (withAncestors === true) {
|
|
86
|
+
const subsetTree = A11yParse.A11yTree.buildSubsetTree(selectedNodes, {
|
|
87
|
+
withAncestors: true,
|
|
88
|
+
withChildren,
|
|
89
|
+
});
|
|
90
|
+
if (text.length > 0)
|
|
91
|
+
text += '\n';
|
|
92
|
+
text += A11yParse.A11yDisplay.stringifyTree(subsetTree);
|
|
93
|
+
}
|
|
94
|
+
else if (withChildren === true) {
|
|
95
|
+
for (const selectedNode of selectedNodes) {
|
|
96
|
+
if (text.length > 0)
|
|
97
|
+
text += '\n';
|
|
98
|
+
text += A11yParse.A11yDisplay.stringifyTree(selectedNode);
|
|
79
99
|
}
|
|
80
100
|
}
|
|
81
101
|
else {
|
|
82
102
|
for (const selectedNode of selectedNodes) {
|
|
83
|
-
text
|
|
103
|
+
if (text.length > 0)
|
|
104
|
+
text += '\n';
|
|
105
|
+
text += A11yParse.A11yDisplay.stringifyNode(selectedNode);
|
|
84
106
|
}
|
|
85
107
|
}
|
|
86
108
|
text += '\n';
|
|
@@ -103,7 +125,7 @@ class MainHelper {
|
|
|
103
125
|
if (querySelector.limit > 0) {
|
|
104
126
|
selectedNodes.splice(querySelector.limit);
|
|
105
127
|
}
|
|
106
|
-
responseTexts.push(this._formatSelectedNodes(querySelector.selector, selectedNodes, querySelector.withAncestors));
|
|
128
|
+
responseTexts.push(this._formatSelectedNodes(querySelector.selector, selectedNodes, querySelector.withAncestors, querySelector.withChildren));
|
|
107
129
|
}
|
|
108
130
|
// join the response texts for all selectors and return
|
|
109
131
|
const responseText = responseTexts.join('\n');
|
|
@@ -123,7 +145,7 @@ class MainHelper {
|
|
|
123
145
|
for (const querySelector of querySelectors.selectors) {
|
|
124
146
|
const selectedNodes = A11yParse.A11yQuery.querySelectorAll(a11yTree, querySelector.selector);
|
|
125
147
|
const firstNode = selectedNodes.length > 0 ? [selectedNodes[0]] : [];
|
|
126
|
-
responseTexts.push(this._formatSelectedNodes(querySelector.selector, firstNode, querySelector.withAncestors));
|
|
148
|
+
responseTexts.push(this._formatSelectedNodes(querySelector.selector, firstNode, querySelector.withAncestors, querySelector.withChildren));
|
|
127
149
|
}
|
|
128
150
|
return responseTexts.join('\n');
|
|
129
151
|
}
|
|
@@ -143,9 +165,14 @@ class MainHelper {
|
|
|
143
165
|
description: "List the open pages/tabs in the browser",
|
|
144
166
|
inputSchema: z.object({}),
|
|
145
167
|
}, async () => {
|
|
168
|
+
// log the events
|
|
169
|
+
logger.warn(`${mcpTarget}:${McpTargetHelper.EXTERNAL_TOOL_NAME.listPages}: listing pages`);
|
|
146
170
|
const toolConfig = await McpTargetHelper.targetToolListPages(mcpTarget);
|
|
147
171
|
const callToolResult = await mcpClient.callTool(toolConfig.toolName, toolConfig.toolArgs);
|
|
148
172
|
let outputStr = await ResponseFormatter.formatListPages(mcpTarget, callToolResult);
|
|
173
|
+
// log the events
|
|
174
|
+
logger.warn(`${mcpTarget}:${McpTargetHelper.EXTERNAL_TOOL_NAME.listPages}: output:`);
|
|
175
|
+
logger.warn(`${outputStr}`);
|
|
149
176
|
return {
|
|
150
177
|
content: [{ type: "text", text: outputStr }],
|
|
151
178
|
};
|
|
@@ -168,10 +195,15 @@ class MainHelper {
|
|
|
168
195
|
// const toolConfig = await McpTargetHelper.targetToolNewPage(mcpTarget, url);
|
|
169
196
|
// const callToolResult = await mcpClient.callTool(toolConfig.toolName, toolConfig.toolArgs);
|
|
170
197
|
// let outputStr = await ResponseFormatter.formatNewPage(mcpTarget, callToolResult, url);
|
|
198
|
+
// log the events
|
|
199
|
+
logger.warn(`${mcpTarget}:${McpTargetHelper.EXTERNAL_TOOL_NAME.newPage}: url=${url}`);
|
|
171
200
|
// so working around this by calling the navigate_page tool instead of new_page when the target is playwright
|
|
172
201
|
const toolConfig = await McpTargetHelper.targetToolNavigatePage(mcpTarget, url);
|
|
173
202
|
const callToolResult = await mcpClient.callTool(toolConfig.toolName, toolConfig.toolArgs);
|
|
174
203
|
let outputStr = await ResponseFormatter.formatNavigatePage(mcpTarget, callToolResult);
|
|
204
|
+
// log the events
|
|
205
|
+
logger.warn(`${mcpTarget}:${McpTargetHelper.EXTERNAL_TOOL_NAME.newPage}: output:`);
|
|
206
|
+
logger.warn(`${outputStr}`);
|
|
175
207
|
return {
|
|
176
208
|
content: [{ type: "text", text: outputStr }],
|
|
177
209
|
};
|
|
@@ -187,9 +219,14 @@ class MainHelper {
|
|
|
187
219
|
pageId: z.number().describe("The id of the page to close"),
|
|
188
220
|
}),
|
|
189
221
|
}, async ({ pageId }) => {
|
|
222
|
+
// log the events
|
|
223
|
+
logger.warn(`${mcpTarget}:${McpTargetHelper.EXTERNAL_TOOL_NAME.closePage}: pageId=${pageId}`);
|
|
190
224
|
const toolConfig = await McpTargetHelper.targetToolClosePage(mcpTarget, pageId);
|
|
191
225
|
const callToolResult = await mcpClient.callTool(toolConfig.toolName, toolConfig.toolArgs);
|
|
192
226
|
let outputStr = await ResponseFormatter.formatClosePage(mcpTarget, callToolResult, pageId);
|
|
227
|
+
// log the events
|
|
228
|
+
logger.warn(`${mcpTarget}:${McpTargetHelper.EXTERNAL_TOOL_NAME.closePage}: output:`);
|
|
229
|
+
logger.warn(`${outputStr}`);
|
|
193
230
|
return {
|
|
194
231
|
content: [{ type: "text", text: outputStr }],
|
|
195
232
|
};
|
|
@@ -205,9 +242,14 @@ class MainHelper {
|
|
|
205
242
|
url: z.string().describe("The URL to navigate to"),
|
|
206
243
|
}),
|
|
207
244
|
}, async ({ url }) => {
|
|
245
|
+
// log the events
|
|
246
|
+
logger.warn(`${mcpTarget}:${McpTargetHelper.EXTERNAL_TOOL_NAME.navigatePage}: url=${url}`);
|
|
208
247
|
const toolConfig = await McpTargetHelper.targetToolNavigatePage(mcpTarget, url);
|
|
209
248
|
const callToolResult = await mcpClient.callTool(toolConfig.toolName, toolConfig.toolArgs);
|
|
210
249
|
let outputStr = await ResponseFormatter.formatNavigatePage(mcpTarget, callToolResult);
|
|
250
|
+
// log the events
|
|
251
|
+
logger.warn(`${mcpTarget}:${McpTargetHelper.EXTERNAL_TOOL_NAME.navigatePage}: output:`);
|
|
252
|
+
logger.warn(`${outputStr}`);
|
|
211
253
|
return {
|
|
212
254
|
content: [{ type: "text", text: outputStr }],
|
|
213
255
|
};
|
|
@@ -221,8 +263,13 @@ class MainHelper {
|
|
|
221
263
|
description: "Take a snapshot of the current page to get the latest accessibility tree",
|
|
222
264
|
inputSchema: z.object({}),
|
|
223
265
|
}, async () => {
|
|
266
|
+
// log the events
|
|
267
|
+
logger.warn(`${mcpTarget}:${McpTargetHelper.EXTERNAL_TOOL_NAME.takeSnapshot}: taking snapshot`);
|
|
224
268
|
const a11yText = await MainHelper._getA11yText(mcpClient);
|
|
225
269
|
let outputStr = a11yText;
|
|
270
|
+
// log the events
|
|
271
|
+
logger.warn(`${mcpTarget}:${McpTargetHelper.EXTERNAL_TOOL_NAME.takeSnapshot}: output:`);
|
|
272
|
+
logger.warn(`${outputStr}`);
|
|
226
273
|
return {
|
|
227
274
|
content: [{ type: "text", text: outputStr }],
|
|
228
275
|
};
|
|
@@ -252,8 +299,13 @@ class MainHelper {
|
|
|
252
299
|
].join('\n'),
|
|
253
300
|
inputSchema: QuerySelectorsInputSchema,
|
|
254
301
|
}, async (querySelectorsInput) => {
|
|
302
|
+
// log the events
|
|
303
|
+
logger.warn(`${mcpTarget}:${McpTargetHelper.EXTERNAL_TOOL_NAME.querySelectorsAll}: querying selectors: ${JSON.stringify(querySelectorsInput)}`);
|
|
255
304
|
// query the accessibility tree with the provided selector
|
|
256
305
|
const outputText = await MainHelper.querySelectorsAll(mcpClient, querySelectorsInput);
|
|
306
|
+
// log the events
|
|
307
|
+
logger.warn(`${mcpTarget}:${McpTargetHelper.EXTERNAL_TOOL_NAME.querySelectorsAll}: output:`);
|
|
308
|
+
logger.warn(`${outputText}`);
|
|
257
309
|
return {
|
|
258
310
|
content: [{ type: "text", text: outputText }],
|
|
259
311
|
};
|
|
@@ -270,7 +322,12 @@ class MainHelper {
|
|
|
270
322
|
].join('\n'),
|
|
271
323
|
inputSchema: QuerySelectorsFirstInputSchema,
|
|
272
324
|
}, async (querySelectorsInput) => {
|
|
325
|
+
// log the events
|
|
326
|
+
logger.warn(`${mcpTarget}:${McpTargetHelper.EXTERNAL_TOOL_NAME.querySelectors}: querying selectors: ${JSON.stringify(querySelectorsInput)}`);
|
|
273
327
|
const outputText = await MainHelper.querySelectors(mcpClient, querySelectorsInput);
|
|
328
|
+
// log the events
|
|
329
|
+
logger.warn(`${mcpTarget}:${McpTargetHelper.EXTERNAL_TOOL_NAME.querySelectors}: output:`);
|
|
330
|
+
logger.warn(`${outputText}`);
|
|
274
331
|
return {
|
|
275
332
|
content: [{ type: "text", text: outputText }],
|
|
276
333
|
};
|
|
@@ -286,6 +343,8 @@ class MainHelper {
|
|
|
286
343
|
keys: z.string().describe("The keys to press, in order, comma-separated. E.g. 'Hello, Tab, Enter, ArrowDown'"),
|
|
287
344
|
}),
|
|
288
345
|
}, async ({ keys }) => {
|
|
346
|
+
// log the events
|
|
347
|
+
logger.warn(`${mcpTarget}:${McpTargetHelper.EXTERNAL_TOOL_NAME.pressKeys}: pressing keys: ${keys}`);
|
|
289
348
|
// Build the list of keys to send, splitting regular characters into individual key presses, but keeping special keys as-is
|
|
290
349
|
const keysToSend = [];
|
|
291
350
|
const keysSplit = keys.split(',').map((key) => key.trim());
|
|
@@ -315,6 +374,9 @@ class MainHelper {
|
|
|
315
374
|
}
|
|
316
375
|
}
|
|
317
376
|
let outputText = await ResponseFormatter.formatPressKeys(mcpTarget, keysToSend);
|
|
377
|
+
// log the events
|
|
378
|
+
logger.warn(`${mcpTarget}:${McpTargetHelper.EXTERNAL_TOOL_NAME.pressKeys}: output:`);
|
|
379
|
+
logger.warn(`${outputText}`);
|
|
318
380
|
// return a response indicating which keys were pressed
|
|
319
381
|
return {
|
|
320
382
|
content: [{ type: "text", text: outputText }],
|
|
@@ -334,10 +396,14 @@ class MainHelper {
|
|
|
334
396
|
selector: z.string().describe('Accessibility selector (e.g. "#1_3" or \'button[name="Submit"]\')'),
|
|
335
397
|
},
|
|
336
398
|
}, async ({ selector }) => {
|
|
399
|
+
// log the events
|
|
400
|
+
logger.warn(`${mcpTarget}:${McpTargetHelper.EXTERNAL_TOOL_NAME.click}: clicking selector: ${selector}`);
|
|
337
401
|
const uid = await MainHelper._resolveSelectorToUid(mcpClient, selector);
|
|
338
402
|
const toolConfig = await McpTargetHelper.targetToolClick(mcpTarget, uid);
|
|
339
403
|
const callToolResult = await mcpClient.callTool(toolConfig.toolName, toolConfig.toolArgs);
|
|
340
404
|
let outputText = await ResponseFormatter.formatClick(mcpTarget, callToolResult);
|
|
405
|
+
// log the events
|
|
406
|
+
logger.warn(`${mcpTarget}:${McpTargetHelper.EXTERNAL_TOOL_NAME.click}: output:`);
|
|
341
407
|
return {
|
|
342
408
|
content: [{ type: "text", text: outputText }],
|
|
343
409
|
};
|
|
@@ -359,6 +425,8 @@ class MainHelper {
|
|
|
359
425
|
})).describe('Elements to fill, each with a selector and a value'),
|
|
360
426
|
},
|
|
361
427
|
}, async ({ elements }) => {
|
|
428
|
+
// log the events
|
|
429
|
+
logger.warn(`${mcpTarget}:${McpTargetHelper.EXTERNAL_TOOL_NAME.fillForm}: filling form with elements: ${JSON.stringify(elements)}`);
|
|
362
430
|
const resolved = [];
|
|
363
431
|
for (const element of elements) {
|
|
364
432
|
const uid = await MainHelper._resolveSelectorToUid(mcpClient, element.selector);
|
|
@@ -367,25 +435,27 @@ class MainHelper {
|
|
|
367
435
|
value: element.value,
|
|
368
436
|
});
|
|
369
437
|
}
|
|
438
|
+
let callToolResult;
|
|
370
439
|
if (mcpTarget === 'chrome_devtools') {
|
|
371
440
|
const toolConfig = await McpTargetHelper.targetToolFillForm(mcpTarget, resolved);
|
|
372
|
-
|
|
373
|
-
// const callToolResult = await mcpClient.callTool('fill_form', { elements: resolved });
|
|
374
|
-
return callToolResult;
|
|
441
|
+
callToolResult = await mcpClient.callTool(toolConfig.toolName, toolConfig.toolArgs);
|
|
375
442
|
}
|
|
376
443
|
else if (mcpTarget === 'playwright') {
|
|
377
444
|
const fields = resolved.map((element, index) => ({
|
|
378
445
|
name: `Field ${index + 1}`,
|
|
379
446
|
type: 'textbox', // for simplicity, we assume all fields are textboxes in this example
|
|
380
|
-
|
|
447
|
+
target: element.uid,
|
|
381
448
|
value: element.value,
|
|
382
449
|
}));
|
|
383
|
-
|
|
384
|
-
return callToolResult;
|
|
450
|
+
callToolResult = await mcpClient.callTool('browser_fill_form', { fields: fields });
|
|
385
451
|
}
|
|
386
452
|
else {
|
|
387
453
|
throw new Error(`Unsupported MCP target: ${mcpTarget}`);
|
|
388
454
|
}
|
|
455
|
+
// log the events
|
|
456
|
+
logger.warn(`${mcpTarget}:${McpTargetHelper.EXTERNAL_TOOL_NAME.fillForm}: output:`);
|
|
457
|
+
logger.warn(`${JSON.stringify(callToolResult)}`);
|
|
458
|
+
return callToolResult;
|
|
389
459
|
});
|
|
390
460
|
///////////////////////////////////////////////////////////////////////////////
|
|
391
461
|
///////////////////////////////////////////////////////////////////////////////
|
|
@@ -399,6 +469,8 @@ class MainHelper {
|
|
|
399
469
|
description: "Get the current date and time",
|
|
400
470
|
inputSchema: timezoneSchema,
|
|
401
471
|
}, async ({ timezone }) => {
|
|
472
|
+
// log the events
|
|
473
|
+
logger.warn(`${mcpTarget}:${McpTargetHelper.EXTERNAL_TOOL_NAME.getCurrentDateTime}: getting current date and time with timezone: ${timezone ?? 'local system timezone'}`);
|
|
402
474
|
const date = new Date();
|
|
403
475
|
const options = {
|
|
404
476
|
timeZone: timezone,
|
|
@@ -411,6 +483,8 @@ class MainHelper {
|
|
|
411
483
|
timeZoneName: "short",
|
|
412
484
|
};
|
|
413
485
|
const formatted = new Intl.DateTimeFormat("en-US", options).format(date);
|
|
486
|
+
// log the events
|
|
487
|
+
logger.warn(`${mcpTarget}:${McpTargetHelper.EXTERNAL_TOOL_NAME.getCurrentDateTime}: output: ${formatted}`);
|
|
414
488
|
return {
|
|
415
489
|
content: [{ type: "text", text: formatted }],
|
|
416
490
|
};
|
|
@@ -424,6 +498,10 @@ class MainHelper {
|
|
|
424
498
|
///////////////////////////////////////////////////////////////////////////////
|
|
425
499
|
///////////////////////////////////////////////////////////////////////////////
|
|
426
500
|
static async commandMcpServer({ mcpTarget, verbose = false, }) {
|
|
501
|
+
// Redirect process.stderr to a log file, so that the MCP communication is not polluted by logs.
|
|
502
|
+
const logFile = Path.resolve(import.meta.dirname, `../../outputs/fastbrowser_mcp_${new Date().toISOString()}.log`);
|
|
503
|
+
const logStream = Fs.createWriteStream(logFile, { flags: 'a' });
|
|
504
|
+
process.stderr.write = logStream.write.bind(logStream);
|
|
427
505
|
///////////////////////////////////////////////////////////////////////////////
|
|
428
506
|
///////////////////////////////////////////////////////////////////////////////
|
|
429
507
|
// mcp client
|
|
@@ -469,11 +547,13 @@ class MainHelper {
|
|
|
469
547
|
{
|
|
470
548
|
selector: "link, button",
|
|
471
549
|
withAncestors: true,
|
|
550
|
+
withChildren: false,
|
|
472
551
|
limit: 0,
|
|
473
552
|
},
|
|
474
553
|
{
|
|
475
554
|
selector: 'heading[level="1"]',
|
|
476
555
|
withAncestors: false,
|
|
556
|
+
withChildren: false,
|
|
477
557
|
limit: 0,
|
|
478
558
|
},
|
|
479
559
|
],
|
|
@@ -506,6 +586,44 @@ class MainHelper {
|
|
|
506
586
|
// Connect the MCP proxy server to start accepting connections from MCP clients (e.g. LLM agents).
|
|
507
587
|
await mcpProxy.connect();
|
|
508
588
|
}
|
|
589
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
590
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
591
|
+
// .commandTargetTools: connect to the target MCP and print each tool's name, description, and input schema.
|
|
592
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
593
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
594
|
+
static async commandTargetTools({ mcpTarget, }) {
|
|
595
|
+
const { command: mcpCommand, args: mcpArgs } = McpTargetHelper.mcpArgs(mcpTarget);
|
|
596
|
+
const mcpClient = new McpMyClient({
|
|
597
|
+
name: 'fastbrowser_target_tools_client',
|
|
598
|
+
version: '1.0.0',
|
|
599
|
+
mcpTarget,
|
|
600
|
+
transport: {
|
|
601
|
+
type: 'stdio',
|
|
602
|
+
command: mcpCommand,
|
|
603
|
+
args: mcpArgs,
|
|
604
|
+
},
|
|
605
|
+
});
|
|
606
|
+
await mcpClient.connect();
|
|
607
|
+
try {
|
|
608
|
+
const tools = await mcpClient.listTools();
|
|
609
|
+
console.log(`# Tools available on MCP target '${mcpTarget}' (${tools.length})\n`);
|
|
610
|
+
for (const tool of tools) {
|
|
611
|
+
console.log(`## ${tool.name}`);
|
|
612
|
+
console.log('');
|
|
613
|
+
console.log(`### Description`);
|
|
614
|
+
console.log(`${tool.description ?? '(no description)'}`);
|
|
615
|
+
console.log('');
|
|
616
|
+
console.log(`### Input schema`);
|
|
617
|
+
console.log("```");
|
|
618
|
+
console.log(JSON.stringify(tool.inputSchema, null, 2));
|
|
619
|
+
console.log("```");
|
|
620
|
+
console.log('');
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
finally {
|
|
624
|
+
await mcpClient.close();
|
|
625
|
+
}
|
|
626
|
+
}
|
|
509
627
|
}
|
|
510
628
|
///////////////////////////////////////////////////////////////////////////////
|
|
511
629
|
///////////////////////////////////////////////////////////////////////////////
|
|
@@ -513,10 +631,6 @@ class MainHelper {
|
|
|
513
631
|
///////////////////////////////////////////////////////////////////////////////
|
|
514
632
|
///////////////////////////////////////////////////////////////////////////////
|
|
515
633
|
async function main() {
|
|
516
|
-
// Redirect process.stderr to a log file, so that the MCP communication is not polluted by logs.
|
|
517
|
-
const logFile = Path.resolve(import.meta.dirname, `../../outputs/fastbrowser_mcp_${new Date().toISOString()}.log`);
|
|
518
|
-
const logStream = Fs.createWriteStream(logFile, { flags: 'a' });
|
|
519
|
-
process.stderr.write = logStream.write.bind(logStream);
|
|
520
634
|
// throw Error("This entry point is not meant to be run directly. Please run one of the npm scripts defined in package.json, e.g. 'npm run start:fastbrowser_mcp' or 'npm run inspect:fastbrowser_mcp:chrome_devtools'");
|
|
521
635
|
const program = new Command();
|
|
522
636
|
program
|
|
@@ -532,6 +646,17 @@ async function main() {
|
|
|
532
646
|
verbose: options.verbose,
|
|
533
647
|
});
|
|
534
648
|
});
|
|
649
|
+
program
|
|
650
|
+
.command('target_tools')
|
|
651
|
+
.description('List the tools exposed by the target MCP (name, description, input schema)')
|
|
652
|
+
.addOption(new Option('-b, --mcp_target <mcpTarget>', 'the MCP target to introspect')
|
|
653
|
+
.choices(['chrome_devtools', 'playwright'])
|
|
654
|
+
.default('playwright'))
|
|
655
|
+
.action(async (options) => {
|
|
656
|
+
await MainHelper.commandTargetTools({
|
|
657
|
+
mcpTarget: options.mcp_target,
|
|
658
|
+
});
|
|
659
|
+
});
|
|
535
660
|
// display help if no command is provided
|
|
536
661
|
if (process.argv.length < 3) {
|
|
537
662
|
program.help();
|