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.
Files changed (56) hide show
  1. package/README.md +1 -2
  2. package/dist/fastbrowser_cli/fastbrowser_cli.js +11 -19
  3. package/dist/fastbrowser_cli/fastbrowser_cli.js.map +1 -1
  4. package/dist/fastbrowser_cli/libs/query-builder.d.ts +2 -0
  5. package/dist/fastbrowser_cli/libs/query-builder.d.ts.map +1 -1
  6. package/dist/fastbrowser_cli/libs/query-builder.js +4 -0
  7. package/dist/fastbrowser_cli/libs/query-builder.js.map +1 -1
  8. package/dist/fastbrowser_httpd/libs/tool-schemas.d.ts +2 -0
  9. package/dist/fastbrowser_httpd/libs/tool-schemas.d.ts.map +1 -1
  10. package/dist/fastbrowser_mcp/fastbrowser_mcp.d.ts.map +1 -1
  11. package/dist/fastbrowser_mcp/fastbrowser_mcp.js +147 -22
  12. package/dist/fastbrowser_mcp/fastbrowser_mcp.js.map +1 -1
  13. package/dist/fastbrowser_mcp/libs/mcp_my_client.d.ts.map +1 -1
  14. package/dist/fastbrowser_mcp/libs/mcp_my_client.js +8 -0
  15. package/dist/fastbrowser_mcp/libs/mcp_my_client.js.map +1 -1
  16. package/dist/fastbrowser_mcp/libs/mcp_target_helper.d.ts.map +1 -1
  17. package/dist/fastbrowser_mcp/libs/mcp_target_helper.js +15 -2
  18. package/dist/fastbrowser_mcp/libs/mcp_target_helper.js.map +1 -1
  19. package/dist/fastbrowser_mcp/libs/schemas.d.ts +4 -0
  20. package/dist/fastbrowser_mcp/libs/schemas.d.ts.map +1 -1
  21. package/dist/fastbrowser_mcp/libs/schemas.js +6 -0
  22. package/dist/fastbrowser_mcp/libs/schemas.js.map +1 -1
  23. package/dist/shared/logger.d.ts +86 -0
  24. package/dist/shared/logger.d.ts.map +1 -0
  25. package/dist/shared/logger.js +269 -0
  26. package/dist/shared/logger.js.map +1 -0
  27. package/docs/brainstorm_scrap_by_ai.md +1 -1
  28. package/docs/feature_support_cli.md +7 -8
  29. package/docs/target_tools/target_tools_chrome_devtools.md +963 -0
  30. package/docs/target_tools/target_tools_playwright.md +763 -0
  31. package/examples/linkedin_cli/linked_dm.sh +16 -0
  32. package/examples/linkedin_cli/linked_post.sh +13 -0
  33. package/examples/linkedin_cli/linkedin.snapshot.txt +1245 -0
  34. package/examples/todomvc/todomvc.a11y.txt +44 -0
  35. package/examples/todomvc/todomvc.sh +11 -0
  36. package/examples/wttj_cli/fastbrowser_helper.ts +39 -0
  37. package/examples/wttj_cli/wttf_job-original.a11y.txt +652 -0
  38. package/examples/wttj_cli/wttf_job.a11y.txt +317 -0
  39. package/examples/{welcometothejungle/wttj-job.ts → wttj_cli/wttj_job copy.ts } +60 -11
  40. package/examples/wttj_cli/wttj_job.ts +179 -0
  41. package/examples/wttj_cli/wttj_search.ts +162 -0
  42. package/package.json +10 -4
  43. package/skills/fastbrowser/SKILL.md +10 -11
  44. package/skills/fastbrowser-script/SKILL.md +4 -4
  45. package/src/fastbrowser_cli/fastbrowser_cli.ts +14 -25
  46. package/src/fastbrowser_cli/libs/query-builder.ts +6 -0
  47. package/src/fastbrowser_mcp/fastbrowser_mcp.ts +181 -26
  48. package/src/fastbrowser_mcp/libs/mcp_my_client.ts +17 -0
  49. package/src/fastbrowser_mcp/libs/mcp_target_helper.ts +15 -2
  50. package/src/fastbrowser_mcp/libs/schemas.ts +6 -0
  51. package/src/shared/logger.ts +317 -0
  52. package/test.a11y.txt +828 -0
  53. package/tests/query-builder.test.ts +51 -11
  54. package/examples/welcometothejungle/fastbrowser_helper.ts +0 -39
  55. package/examples/welcometothejungle/wttj-search.ts +0 -82
  56. /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, returning the first match per selector | `--selector` or `--selectors-json` |
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 and, for each, return the first matching node')
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('--with-ancestors', 'Include ancestor nodes', false)
285
- .option('--no-with-ancestors', 'Exclude ancestor nodes')
286
- .option('--selectors-json <json>', 'JSON array of {selector,withAncestors} for per-selector control')
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;IAiC1F,MAAM,CAAC,2BAA2B,CAAC,IAAI,EAAE,2BAA2B,GAAG,oBAAoB;CA2B3F"}
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":"AA2BA,MAAM,OAAO,YAAY;IACxB,MAAM,CAAC,uBAAuB,CAAC,IAAgC;QAC9D,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,KAAK,EAAE,EAAE,CAAC;YACnE,IAAI,MAAe,CAAC;YACpB,IAAI,CAAC;gBACJ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,uCAAwC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAClF,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC1D,CAAC;YACD,OAAO,EAAE,SAAS,EAAE,MAA8B,EAAE,CAAC;QACtD,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QACzC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7E,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC;QAEnD,MAAM,SAAS,GAAyB,YAAY,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACvE,QAAQ;YACR,KAAK;YACL,aAAa;SACb,CAAC,CAAC,CAAC;QACJ,OAAO,EAAE,SAAS,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,2BAA2B,CAAC,IAAiC;QACnE,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,KAAK,EAAE,EAAE,CAAC;YACnE,IAAI,MAAe,CAAC;YACpB,IAAI,CAAC;gBACJ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,uCAAwC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAClF,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC1D,CAAC;YACD,OAAO,EAAE,SAAS,EAAE,MAAmC,EAAE,CAAC;QAC3D,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QACzC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC;QAEnD,MAAM,SAAS,GAA8B,YAAY,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC5E,QAAQ;YACR,aAAa;SACb,CAAC,CAAC,CAAC;QACJ,OAAO,EAAE,SAAS,EAAE,CAAC;IACtB,CAAC;CACD"}
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;;;;;;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
+ {"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":";AAiBA,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"}
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
- let text = `## Node found for selector '${selector}' (${selectedNodes.length} node${selectedNodes.length > 1 ? 's' : ''}${withAncestors ? ', with ancestors' : ''}):\n`;
72
- if (withAncestors) {
73
- if (selectedNodes.length === 0) {
74
- text += "No node found";
75
- }
76
- else {
77
- const ancestorTree = A11yParse.A11yTree.buildAncestorTree(selectedNodes);
78
- text += A11yParse.A11yTree.stringify(ancestorTree);
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 += A11yParse.A11yTree.stringify(selectedNode) + '\n';
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
- const callToolResult = await mcpClient.callTool(toolConfig.toolName, toolConfig.toolArgs);
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
- ref: element.uid,
447
+ target: element.uid,
381
448
  value: element.value,
382
449
  }));
383
- const callToolResult = await mcpClient.callTool('browser_fill_form', { fields: fields });
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();