fastbrowser_cli 1.0.35 → 1.0.39

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 (102) hide show
  1. package/README.md +26 -5
  2. package/dist/contribs/_shared/fastbrowser_helper.d.ts +13 -0
  3. package/dist/contribs/_shared/fastbrowser_helper.d.ts.map +1 -0
  4. package/dist/contribs/_shared/fastbrowser_helper.js +39 -0
  5. package/dist/contribs/_shared/fastbrowser_helper.js.map +1 -0
  6. package/dist/contribs/linkedin_cli/src/cli.d.ts +3 -0
  7. package/dist/contribs/linkedin_cli/src/cli.d.ts.map +1 -0
  8. package/dist/contribs/linkedin_cli/src/cli.js +299 -0
  9. package/dist/contribs/linkedin_cli/src/cli.js.map +1 -0
  10. package/dist/contribs/linkedin_cli/src/libs/linkedin_profile_helper.d.ts +73 -0
  11. package/dist/contribs/linkedin_cli/src/libs/linkedin_profile_helper.d.ts.map +1 -0
  12. package/dist/contribs/linkedin_cli/src/libs/linkedin_profile_helper.js +866 -0
  13. package/dist/contribs/linkedin_cli/src/libs/linkedin_profile_helper.js.map +1 -0
  14. package/dist/contribs/linkedin_cli/src/libs/linkedin_recent_posts_helper.d.ts +61 -0
  15. package/dist/contribs/linkedin_cli/src/libs/linkedin_recent_posts_helper.d.ts.map +1 -0
  16. package/dist/contribs/linkedin_cli/src/libs/linkedin_recent_posts_helper.js +885 -0
  17. package/dist/contribs/linkedin_cli/src/libs/linkedin_recent_posts_helper.js.map +1 -0
  18. package/dist/contribs/linkedin_cli/src/libs/linkedin_thread_helper.d.ts +11 -0
  19. package/dist/contribs/linkedin_cli/src/libs/linkedin_thread_helper.d.ts.map +1 -0
  20. package/dist/contribs/linkedin_cli/src/libs/linkedin_thread_helper.js +145 -0
  21. package/dist/contribs/linkedin_cli/src/libs/linkedin_thread_helper.js.map +1 -0
  22. package/dist/contribs/twitter_cli/src/cli.d.ts +3 -0
  23. package/dist/contribs/twitter_cli/src/cli.d.ts.map +1 -0
  24. package/dist/contribs/twitter_cli/src/cli.js +273 -0
  25. package/dist/contribs/twitter_cli/src/cli.js.map +1 -0
  26. package/dist/contribs/twitter_cli/src/libs/twitter_profile_helper.d.ts +28 -0
  27. package/dist/contribs/twitter_cli/src/libs/twitter_profile_helper.d.ts.map +1 -0
  28. package/dist/contribs/twitter_cli/src/libs/twitter_profile_helper.js +274 -0
  29. package/dist/contribs/twitter_cli/src/libs/twitter_profile_helper.js.map +1 -0
  30. package/dist/contribs/twitter_cli/src/libs/twitter_recent_posts_helper.d.ts +43 -0
  31. package/dist/contribs/twitter_cli/src/libs/twitter_recent_posts_helper.d.ts.map +1 -0
  32. package/dist/contribs/twitter_cli/src/libs/twitter_recent_posts_helper.js +519 -0
  33. package/dist/contribs/twitter_cli/src/libs/twitter_recent_posts_helper.js.map +1 -0
  34. package/dist/contribs/twitter_cli/src/libs/twitter_thread_helper.d.ts +11 -0
  35. package/dist/contribs/twitter_cli/src/libs/twitter_thread_helper.d.ts.map +1 -0
  36. package/dist/contribs/twitter_cli/src/libs/twitter_thread_helper.js +213 -0
  37. package/dist/contribs/twitter_cli/src/libs/twitter_thread_helper.js.map +1 -0
  38. package/dist/fastbrowser_cli/fastbrowser_cli.js +43 -0
  39. package/dist/fastbrowser_cli/fastbrowser_cli.js.map +1 -1
  40. package/dist/fastbrowser_httpd/libs/tool-schemas.d.ts +4 -0
  41. package/dist/fastbrowser_httpd/libs/tool-schemas.d.ts.map +1 -1
  42. package/dist/fastbrowser_httpd/libs/tool-schemas.js +4 -0
  43. package/dist/fastbrowser_httpd/libs/tool-schemas.js.map +1 -1
  44. package/dist/fastbrowser_mcp/fastbrowser_mcp.js +36 -2
  45. package/dist/fastbrowser_mcp/fastbrowser_mcp.js.map +1 -1
  46. package/dist/fastbrowser_mcp/libs/mcp_target_helper.d.ts +2 -0
  47. package/dist/fastbrowser_mcp/libs/mcp_target_helper.d.ts.map +1 -1
  48. package/dist/fastbrowser_mcp/libs/mcp_target_helper.js +12 -0
  49. package/dist/fastbrowser_mcp/libs/mcp_target_helper.js.map +1 -1
  50. package/dist/fastbrowser_mcp/libs/response_formatter.d.ts +1 -0
  51. package/dist/fastbrowser_mcp/libs/response_formatter.d.ts.map +1 -1
  52. package/dist/fastbrowser_mcp/libs/response_formatter.js +27 -0
  53. package/dist/fastbrowser_mcp/libs/response_formatter.js.map +1 -1
  54. package/dist/shared/fastbrowser_helper.d.ts +13 -0
  55. package/dist/shared/fastbrowser_helper.d.ts.map +1 -0
  56. package/dist/shared/fastbrowser_helper.js +39 -0
  57. package/dist/shared/fastbrowser_helper.js.map +1 -0
  58. package/examples/linkedin_cli_TOREMOVE/README.md +7 -0
  59. package/examples/linkedin_cli_TOREMOVE/linkedin_dm.sh +40 -0
  60. package/examples/linkedin_cli_TOREMOVE/linkedin_dm.ts +326 -0
  61. package/examples/linkedin_cli_TOREMOVE/linkedin_dm_messages.ts +279 -0
  62. package/examples/linkedin_cli_TOREMOVE/linkedin_full_cycle.sh +5 -0
  63. package/examples/{linkedin_cli/linked_post.sh → linkedin_cli_TOREMOVE/linkedin_post.sh} +3 -0
  64. package/examples/linkedin_cli_TOREMOVE/message_thread.a11y.txt +252 -0
  65. package/examples/whatsapp/whatapp.a11y.txt +1521 -0
  66. package/examples/whatsapp/whatsapp.sh +10 -0
  67. package/listitem +7 -0
  68. package/package.json +7 -3
  69. package/skills/fastbrowser/SKILL.md +116 -29
  70. package/src/contribs/_shared/fastbrowser_helper.ts +49 -0
  71. package/src/contribs/linkedin_cli/README.md +80 -0
  72. package/src/contribs/linkedin_cli/data/linkedin_posts_jeromeetienne.a11y.txt +2364 -0
  73. package/src/contribs/linkedin_cli/data/linkedin_posts_jontwigge.a11y.txt +2740 -0
  74. package/src/contribs/linkedin_cli/data/linkedin_posts_julien_guezennec.a11y.txt +2073 -0
  75. package/src/contribs/linkedin_cli/data/linkedin_profile_jeromeetienne.a11y.txt +1863 -0
  76. package/src/contribs/linkedin_cli/data/linkedin_profile_jontwigge.a11y.txt +1738 -0
  77. package/src/contribs/linkedin_cli/data/linkedin_profile_julien_guezennec.a11y.txt +2182 -0
  78. package/src/contribs/linkedin_cli/src/cli.ts +345 -0
  79. package/src/contribs/linkedin_cli/src/libs/linkedin_profile_helper.ts +964 -0
  80. package/src/contribs/linkedin_cli/src/libs/linkedin_recent_posts_helper.ts +982 -0
  81. package/src/contribs/linkedin_cli/src/libs/linkedin_thread_helper.ts +171 -0
  82. package/src/contribs/twitter_cli/README.md +79 -0
  83. package/src/contribs/twitter_cli/data/twitter_chat.a11y.txt +215 -0
  84. package/src/contribs/twitter_cli/data/twitter_home.a11y.txt +467 -0
  85. package/src/contribs/twitter_cli/data/twitter_profile.a11y.txt +418 -0
  86. package/src/contribs/twitter_cli/data/twitter_profile_jontwigge.a11y.txt +484 -0
  87. package/src/contribs/twitter_cli/data/twitter_profile_molokoloco.a11y.txt +483 -0
  88. package/src/contribs/twitter_cli/src/cli.ts +315 -0
  89. package/src/contribs/twitter_cli/src/libs/twitter_profile_helper.ts +328 -0
  90. package/src/contribs/twitter_cli/src/libs/twitter_recent_posts_helper.ts +607 -0
  91. package/src/contribs/twitter_cli/src/libs/twitter_thread_helper.ts +240 -0
  92. package/src/fastbrowser_cli/fastbrowser_cli.ts +51 -0
  93. package/src/fastbrowser_httpd/libs/tool-schemas.ts +6 -0
  94. package/src/fastbrowser_mcp/fastbrowser_mcp.ts +46 -3
  95. package/src/fastbrowser_mcp/libs/mcp_target_helper.ts +11 -0
  96. package/src/fastbrowser_mcp/libs/response_formatter.ts +29 -0
  97. package/src/shared/fastbrowser_helper.ts +49 -0
  98. package/tsconfig.json +1 -1
  99. package/examples/linkedin_cli/linked_dm.sh +0 -19
  100. package/examples/mcp_client_playwright.ts +0 -34
  101. /package/examples/{linkedin_cli → linkedin_cli_TOREMOVE}/linkedin.snapshot.txt +0 -0
  102. /package/examples/{twitter_cli → twitter_cli_TOREMOVE}/twitter_post.sh +0 -0
@@ -197,6 +197,17 @@ export class McpTargetHelper {
197
197
  throw new Error(`Unsupported MCP target: ${mcpTarget}`);
198
198
  }
199
199
  }
200
+ static async targetToolEvaluateScript(mcpTarget, functionText) {
201
+ if (mcpTarget === 'chrome_devtools') {
202
+ return { toolName: 'evaluate_script', toolArgs: { function: functionText } };
203
+ }
204
+ else if (mcpTarget === 'playwright') {
205
+ return { toolName: 'browser_evaluate', toolArgs: { function: functionText } };
206
+ }
207
+ else {
208
+ throw new Error(`Unsupported MCP target: ${mcpTarget}`);
209
+ }
210
+ }
200
211
  }
201
212
  McpTargetHelper.EXTERNAL_TOOL_NAME = {
202
213
  listPages: "list_pages",
@@ -209,6 +220,7 @@ McpTargetHelper.EXTERNAL_TOOL_NAME = {
209
220
  pressKeys: "pressKeys",
210
221
  click: "click",
211
222
  fillForm: "fill_form",
223
+ evaluateScript: "evaluate_script",
212
224
  getCurrentDateTime: "get_current_datetime",
213
225
  };
214
226
  //# sourceMappingURL=mcp_target_helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp_target_helper.js","sourceRoot":"","sources":["../../../src/fastbrowser_mcp/libs/mcp_target_helper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp_target_helper.js","sourceRoot":"","sources":["../../../src/fastbrowser_mcp/libs/mcp_target_helper.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,eAAe;IAgB3B,+EAA+E;IAC/E,+EAA+E;IAC/E,oBAAoB;IACpB,+EAA+E;IAC/E,+EAA+E;IAE/E,MAAM,CAAC,OAAO,CAAC,SAA+B;QAC7C,IAAI,UAAkB,CAAC;QACvB,IAAI,OAAiB,CAAC;QACtB,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;YACrC,UAAU,GAAG,KAAK,CAAC;YACnB,OAAO,GAAG,CAAC,4BAA4B,EAAE,eAAe,EAAE,uBAAuB,EAAE,uBAAuB,CAAC,CAAC;QAC7G,CAAC;aAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YACvC,mDAAmD;YACnD,kEAAkE;YAClE,yCAAyC;YACzC,GAAG;YACH,2FAA2F;YAC3F,uEAAuE;YACvE,UAAU,GAAG,KAAK,CAAC;YACnB,OAAO,GAAG,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,yBAAyB,SAAS,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,SAA+B;QACxD,MAAM,aAAa,GAAa,EAAE,CAAA;QAClC,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;YACrC,aAAa,CAAC,IAAI,CAAC,GAAG;YACrB,gBAAgB;YAChB,cAAc;YACd,gBAAgB;YAChB,mBAAmB;YACnB,mBAAmB;aACnB,CAAC,CAAA;QACH,CAAC;aAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YACvC,aAAa,CAAC,IAAI,CAAC,GAAG;YACrB,kBAAkB;YAClB,sBAAsB;YACtB,sBAAsB;aACtB,CAAC,CAAA;QACH,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,yBAAyB,SAAS,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,aAAa,CAAC;IACtB,CAAC;IAED,+EAA+E;IAC/E,+EAA+E;IAC/E,uBAAuB;IACvB,+EAA+E;IAC/E,+EAA+E;IAG/E,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAA+B;QAC/D,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;YACrC,OAAO;gBACN,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE;gBACjC,+DAA+D;iBAC/D;aACD,CAAC;QACH,CAAC;aAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YACvC,OAAO;gBACN,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE;oBACnC,MAAM,EAAE,MAAM;iBACd;aACD,CAAC;QACH,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAA+B,EAAE,GAAW;QAC1E,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;YACrC,OAAO;gBACN,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE;oBAC/B,GAAG;iBACH;aACD,CAAC;QACH,CAAC;aAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YACvC,OAAO;gBACN,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE;oBACnC,MAAM,EAAE,KAAK;oBACb,GAAG;iBACH;aACD,CAAC;QACH,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAA+B,EAAE,MAAc;QAC/E,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;YACrC,OAAO;gBACN,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE;oBACjC,MAAM;iBACN;aACD,CAAC;QACH,CAAC;aAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YACvC,OAAO;gBACN,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE;oBACnC,MAAM,EAAE,OAAO;oBACf,KAAK,EAAE,MAAM;iBACb;aACD,CAAC;QACH,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,SAA+B,EAAE,GAAW;QAC/E,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;YACrC,OAAO;gBACN,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE;oBACpC,GAAG;iBACH;aACD,CAAC;QACH,CAAC;aAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YACvC,OAAO;gBACN,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE;oBACvC,GAAG;iBACH;aACD,CAAC;QACH,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,SAA+B;QAClE,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;YACrC,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACpD,CAAC;aAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YACvC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACvD,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,SAA+B,EAAE,GAAW;QAC3E,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;YACrC,OAAO;gBACN,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;oBAChC,GAAG,EAAE,GAAG;iBACR;aACD,CAAC;QACH,CAAC;aAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YACvC,OAAO;gBACN,QAAQ,EAAE,mBAAmB,EAAE,QAAQ,EAAE;oBACxC,GAAG,EAAE,GAAG;iBACR;aACD,CAAC;QACH,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,SAA+B,EAAE,GAAW;QACxE,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;YACrC,MAAM,UAAU,GAAqB;gBACpC,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE;oBACT,GAAG;iBACH;aACD,CAAC;YACF,OAAO,UAAU,CAAC;QACnB,CAAC;aAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YACvC,MAAM,UAAU,GAAqB;gBACpC,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE;oBACT,MAAM,EAAE,GAAG;iBACX;aACD,CAAC;YACF,OAAO,UAAU,CAAC;QACnB,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,SAA+B,EAAE,QAA0C;QAC1G,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;YACrC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC1D,CAAC;aAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YACvC,6EAA6E;YAC7E,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAClF,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,SAA+B,EAAE,YAAoB;QAC1F,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;YACrC,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC;QAC9E,CAAC;aAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YACvC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC;QAC/E,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;;AAvNM,kCAAkB,GAAG;IAC3B,SAAS,EAAE,YAAY;IACvB,OAAO,EAAE,UAAU;IACnB,SAAS,EAAE,YAAY;IACvB,YAAY,EAAE,eAAe;IAC7B,YAAY,EAAE,eAAe;IAC7B,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,gBAAgB;IAChC,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,WAAW;IACrB,cAAc,EAAE,iBAAiB;IACjC,kBAAkB,EAAE,sBAAsB;CAC1C,CAAA"}
@@ -8,5 +8,6 @@ export declare class ResponseFormatter {
8
8
  static formatTakeSnapshot(mcpTarget: FastBrowserMcpTarget, callToolResult: CallToolResult): Promise<string>;
9
9
  static formatPressKeys(mcpTarget: FastBrowserMcpTarget, keysToSend: string[]): Promise<string>;
10
10
  static formatClick(mcpTarget: FastBrowserMcpTarget, callToolResult: CallToolResult): Promise<string>;
11
+ static formatEvaluateScript(mcpTarget: FastBrowserMcpTarget, callToolResult: CallToolResult): Promise<string>;
11
12
  }
12
13
  //# sourceMappingURL=response_formatter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"response_formatter.d.ts","sourceRoot":"","sources":["../../../src/fastbrowser_mcp/libs/response_formatter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAGjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAG/D,qBAAa,iBAAiB;WAChB,eAAe,CAAC,SAAS,EAAE,oBAAoB,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;WA+CjG,kBAAkB,CAAC,SAAS,EAAE,oBAAoB,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;WA6CpG,aAAa,CAAC,SAAS,EAAE,oBAAoB,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;WA2C5G,eAAe,CAAC,SAAS,EAAE,oBAAoB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;WASjH,kBAAkB,CAAC,SAAS,EAAE,oBAAoB,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;WAqBpG,eAAe,CAAC,SAAS,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;WAKvF,WAAW,CAAC,SAAS,EAAE,oBAAoB,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;CAgC1G"}
1
+ {"version":3,"file":"response_formatter.d.ts","sourceRoot":"","sources":["../../../src/fastbrowser_mcp/libs/response_formatter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAGjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAG/D,qBAAa,iBAAiB;WAChB,eAAe,CAAC,SAAS,EAAE,oBAAoB,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;WA+CjG,kBAAkB,CAAC,SAAS,EAAE,oBAAoB,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;WA6CpG,aAAa,CAAC,SAAS,EAAE,oBAAoB,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;WA2C5G,eAAe,CAAC,SAAS,EAAE,oBAAoB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;WASjH,kBAAkB,CAAC,SAAS,EAAE,oBAAoB,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;WAqBpG,eAAe,CAAC,SAAS,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;WAKvF,WAAW,CAAC,SAAS,EAAE,oBAAoB,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;WAiC7F,oBAAoB,CAAC,SAAS,EAAE,oBAAoB,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;CA4BnH"}
@@ -200,5 +200,32 @@ export class ResponseFormatter {
200
200
  throw new Error(`Unsupported MCP target: ${mcpTarget}`);
201
201
  }
202
202
  }
203
+ static async formatEvaluateScript(mcpTarget, callToolResult) {
204
+ const resultContent = callToolResult.content[0];
205
+ if (resultContent.type !== "text")
206
+ throw new Error("Unexpected content type");
207
+ const resultText = resultContent.text;
208
+ // ### Result
209
+ // undefined
210
+ // ### Ran Playwright code
211
+ // ```js
212
+ // await page.evaluate('() => {\n const workspace = document.querySelector(\'main#workspace\');\n if (workspace === null) {\n throw new Error(\'Workspace element not found\');\n }\n const tryCount = 6;\n const delayMs = 500;\n (async () => {\n for (let i = 0; i < tryCount; i++) {\n workspace.scrollBy({\n top: 600000,\n behavior: \'smooth\'\n });\n await new Promise(resolve => setTimeout(resolve, delayMs));\n }\n })();\n}');
213
+ // ```
214
+ // ### Events
215
+ // - New console entries: .playwright-mcp/console-2026-05-04T05-43-55-775Z.log#L3959-L4058
216
+ // Target format example:
217
+ // Successfully clicked on the element
218
+ if (mcpTarget === 'chrome_devtools') {
219
+ // EXAMPLE:
220
+ // Successfully clicked on the element
221
+ return resultText;
222
+ }
223
+ else if (mcpTarget === 'playwright') {
224
+ return resultText;
225
+ }
226
+ else {
227
+ throw new Error(`Unsupported MCP target: ${mcpTarget}`);
228
+ }
229
+ }
203
230
  }
204
231
  //# sourceMappingURL=response_formatter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"response_formatter.js","sourceRoot":"","sources":["../../../src/fastbrowser_mcp/libs/response_formatter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"response_formatter.js","sourceRoot":"","sources":["../../../src/fastbrowser_mcp/libs/response_formatter.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAOjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,MAAM,OAAO,iBAAiB;IAC7B,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,SAA+B,EAAE,cAA8B;QAC3F,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC/C,IAAI,aAAa,CAAC,IAAI,KAAK,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC9E,MAAM,UAAU,GAAW,aAAa,CAAC,IAAI,CAAA;QAE7C,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;YACrC,WAAW;YACX,WAAW;YACX,iBAAiB;YACjB,qCAAqC;YACrC,OAAO,UAAU,CAAA;QAClB,CAAC;aAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YACvC,WAAW;YACX,aAAa;YACb,8NAA8N;YAC9N,aAAa;YACb,qFAAqF;YAErF,4FAA4F;YAC5F,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrC,0DAA0D;YAC1D,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;YAC3E,MAAM,kBAAkB,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACpF,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAClF,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC3C,qDAAqD;gBACrD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBACjD,IAAI,KAAK,EAAE,CAAC;oBACX,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACvB,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC7B,8DAA8D;oBAC9D,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;oBACpD,MAAM,gBAAgB,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;oBACrE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;oBAC/D,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxC,OAAO,GAAG,KAAK,KAAK,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC5D,CAAC;qBAAM,CAAC;oBACP,OAAO,IAAI,CAAC,CAAC,qEAAqE;gBACnF,CAAC;YACF,CAAC,CAAC,CAAC;YACH,MAAM,SAAS,GAAG,aAAa,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3D,OAAO,SAAS,CAAA;QACjB,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,SAA+B,EAAE,cAA8B;QAC9F,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC/C,IAAI,aAAa,CAAC,IAAI,KAAK,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC9E,MAAM,UAAU,GAAW,aAAa,CAAC,IAAI,CAAA;QAE7C,yBAAyB;QACzB,gDAAgD;QAEhD,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;YACrC,WAAW;YACX,gDAAgD;YAChD,WAAW;YACX,qCAAqC;YAErC,0FAA0F;YAC1F,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrC,+DAA+D;YAC/D,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,wDAAwD,CAAC,CAAC;YACtF,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YACpC,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,wEAAwE;YAC3I,OAAO,SAAS,CAAC;QAClB,CAAC;aAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YACvC,WAAW;YACX,0BAA0B;YAC1B,QAAQ;YACR,yCAAyC;YACzC,MAAM;YACN,WAAW;YACX,mCAAmC;YACnC,+BAA+B;YAC/B,eAAe;YACf,kEAAkE;YAElE,oFAAoF;YACpF,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;YAC9E,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,uEAAuE,CAAC,CAAC;YAC5F,MAAM,SAAS,GAAG,6BAA6B,OAAO,EAAE,CAAA;YACxD,OAAO,SAAS,CAAC;QAClB,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,SAA+B,EAAE,cAA8B,EAAE,GAAW;QACtG,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,aAAa,CAAC,IAAI,KAAK,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC9E,MAAM,UAAU,GAAW,aAAa,CAAC,IAAI,CAAC;QAE9C,yBAAyB;QACzB,sDAAsD;QAEtD,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;YACrC,WAAW;YACX,sBAAsB;YACtB,qDAAqD;YACrD,WAAW;YACX,iBAAiB;YACjB,qCAAqC;YAErC,0FAA0F;YAC1F,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC9F,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACrD,MAAM,YAAY,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC3D,OAAO,mCAAmC,YAAY,EAAE,CAAC;QAC1D,CAAC;aAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YACvC,WAAW;YACX,0BAA0B;YAC1B,QAAQ;YACR,2BAA2B;YAC3B,MAAM;YACN,WAAW;YACX,mCAAmC;YACnC,+BAA+B;YAC/B,eAAe;YACf,4CAA4C;YAE5C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;YAC9E,MAAM,OAAO,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAChG,OAAO,mCAAmC,OAAO,EAAE,CAAC;QACrD,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,SAA+B,EAAE,cAA8B,EAAE,MAAc;QAC3G,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,aAAa,CAAC,IAAI,KAAK,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAE9E,yBAAyB;QACzB,6BAA6B;QAC7B,OAAO,4BAA4B,MAAM,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,SAA+B,EAAE,cAA8B;QAC9F,+HAA+H;QAC/H,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;YACrC,uDAAuD;YACvD,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YAC9C,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAE7E,uEAAuE;YACvE,IAAI,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC;YACrC,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5D,OAAO,YAAY,CAAC;QACrB,CAAC;aAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YACvC,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YAC9C,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7E,MAAM,YAAY,GAAG,uBAAuB,CAAC,uBAAuB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACxF,OAAO,YAAY,CAAC;QACrB,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,SAA+B,EAAE,UAAoB;QACjF,MAAM,SAAS,GAAG,iBAAiB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QAC1D,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,SAA+B,EAAE,cAA8B;QACvF,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC/C,IAAI,aAAa,CAAC,IAAI,KAAK,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC9E,MAAM,UAAU,GAAW,aAAa,CAAC,IAAI,CAAA;QAE7C,yBAAyB;QACzB,sCAAsC;QAEtC,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;YACrC,WAAW;YACX,sCAAsC;YAEtC,OAAO,UAAU,CAAA;QAClB,CAAC;aAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YACvC,WAAW;YACX,2BAA2B;YAC3B,QAAQ;YACR,gEAAgE;YAChE,MAAM;YACN,WAAW;YACX,wDAAwD;YACxD,gCAAgC;YAChC,eAAe;YACf,mEAAmE;YAEnE,oFAAoF;YACpF,MAAM,SAAS,GAAG,qCAAqC,CAAA;YACvD,OAAO,SAAS,CAAC;QAClB,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,SAA+B,EAAE,cAA8B;QAChG,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC/C,IAAI,aAAa,CAAC,IAAI,KAAK,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC9E,MAAM,UAAU,GAAW,aAAa,CAAC,IAAI,CAAA;QAE7C,aAAa;QACb,YAAY;QACZ,0BAA0B;QAC1B,QAAQ;QACR,ohBAAohB;QACphB,MAAM;QACN,aAAa;QACb,0FAA0F;QAE1F,yBAAyB;QACzB,sCAAsC;QAEtC,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;YACrC,WAAW;YACX,sCAAsC;YAEtC,OAAO,UAAU,CAAA;QAClB,CAAC;aAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YACvC,OAAO,UAAU,CAAA;QAClB,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;CACD"}
@@ -0,0 +1,13 @@
1
+ export declare class FastBrowserHelper {
2
+ static run(command: string): Promise<string>;
3
+ static navigatePage(url: string): Promise<void>;
4
+ static fillForm(selector: string, value: string): Promise<void>;
5
+ static pressKeys(keys: string): Promise<void>;
6
+ static click(selector: string): Promise<void>;
7
+ static querySelectorsAll(selector: string, limit: number): Promise<string>;
8
+ static querySelectorsAllWithChildren(selector: string, limit: number): Promise<string>;
9
+ static takeSnapshot(): Promise<string>;
10
+ static querySelectors(selector: string, withAncestors?: boolean): Promise<string>;
11
+ static evaluateScript(functionText: string): Promise<string>;
12
+ }
13
+ //# sourceMappingURL=fastbrowser_helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fastbrowser_helper.d.ts","sourceRoot":"","sources":["../../src/shared/fastbrowser_helper.ts"],"names":[],"mappings":"AAIA,qBAAa,iBAAiB;WAChB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;WAOrC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WAIxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WAIxD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WAItC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WAItC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;WAInE,6BAA6B,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;WAI/E,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;WAI/B,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,UAAO,GAAG,OAAO,CAAC,MAAM,CAAC;WAKvE,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAGlE"}
@@ -0,0 +1,39 @@
1
+ import { execSync } from 'node:child_process';
2
+ const __dirname = new URL('.', import.meta.url).pathname;
3
+ export class FastBrowserHelper {
4
+ static async run(command) {
5
+ // const fullCommand = `npx fastbrowser_cli ${command}`;
6
+ const fullCommand = `npx tsx ${__dirname}../../src/fastbrowser_cli/fastbrowser_cli.ts ${command}`;
7
+ console.error(`Running command: ${fullCommand}`);
8
+ return execSync(fullCommand, { encoding: 'utf8' });
9
+ }
10
+ static async navigatePage(url) {
11
+ await FastBrowserHelper.run(`navigate_page --url '${url}'`);
12
+ }
13
+ static async fillForm(selector, value) {
14
+ await FastBrowserHelper.run(`fill_form --selector '${selector}' --value '${value}'`);
15
+ }
16
+ static async pressKeys(keys) {
17
+ await FastBrowserHelper.run(`press_keys --keys '${keys}'`);
18
+ }
19
+ static async click(selector) {
20
+ await FastBrowserHelper.run(`click -s '${selector}'`);
21
+ }
22
+ static async querySelectorsAll(selector, limit) {
23
+ return await FastBrowserHelper.run(`query_selectors --all --selector '${selector}' --limit ${limit}`);
24
+ }
25
+ static async querySelectorsAllWithChildren(selector, limit) {
26
+ return await FastBrowserHelper.run(`query_selectors --all --selector '${selector}' --limit ${limit} --with-ancestors --with-children`);
27
+ }
28
+ static async takeSnapshot() {
29
+ return await FastBrowserHelper.run('take_snapshot');
30
+ }
31
+ static async querySelectors(selector, withAncestors = true) {
32
+ const flag = withAncestors === false ? ' --no-with-ancestors' : '';
33
+ return await FastBrowserHelper.run(`query_selectors --selector '${selector}'${flag}`);
34
+ }
35
+ static async evaluateScript(functionText) {
36
+ return await FastBrowserHelper.run(`evaluate_script --script "${functionText}"`);
37
+ }
38
+ }
39
+ //# sourceMappingURL=fastbrowser_helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fastbrowser_helper.js","sourceRoot":"","sources":["../../src/shared/fastbrowser_helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;AAEzD,MAAM,OAAO,iBAAiB;IAC7B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAe;QAC/B,wDAAwD;QACxD,MAAM,WAAW,GAAG,WAAW,SAAS,iDAAiD,OAAO,EAAE,CAAC;QACnG,OAAO,CAAC,KAAK,CAAC,oBAAoB,WAAW,EAAE,CAAC,CAAC;QACjD,OAAO,QAAQ,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,GAAW;QACpC,MAAM,iBAAiB,CAAC,GAAG,CAAC,wBAAwB,GAAG,GAAG,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,KAAa;QACpD,MAAM,iBAAiB,CAAC,GAAG,CAAC,yBAAyB,QAAQ,cAAc,KAAK,GAAG,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAY;QAClC,MAAM,iBAAiB,CAAC,GAAG,CAAC,sBAAsB,IAAI,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAgB;QAClC,MAAM,iBAAiB,CAAC,GAAG,CAAC,aAAa,QAAQ,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAgB,EAAE,KAAa;QAC7D,OAAO,MAAM,iBAAiB,CAAC,GAAG,CAAC,qCAAqC,QAAQ,aAAa,KAAK,EAAE,CAAC,CAAC;IACvG,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,QAAgB,EAAE,KAAa;QACzE,OAAO,MAAM,iBAAiB,CAAC,GAAG,CAAC,qCAAqC,QAAQ,aAAa,KAAK,mCAAmC,CAAC,CAAC;IACxI,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY;QACxB,OAAO,MAAM,iBAAiB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,aAAa,GAAG,IAAI;QACjE,MAAM,IAAI,GAAG,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,OAAO,MAAM,iBAAiB,CAAC,GAAG,CAAC,+BAA+B,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,YAAoB;QAC/C,OAAO,MAAM,iBAAiB,CAAC,GAAG,CAAC,6BAA6B,YAAY,GAAG,CAAC,CAAC;IAClF,CAAC;CACD"}
@@ -0,0 +1,7 @@
1
+ - https://www.lemlist.com/fr/pricing - parisjs / france
2
+
3
+ # Linkedin DM CLI
4
+ - linkedin_dm.ts
5
+ - list_convos
6
+ - send <target_user> <message>
7
+ - messages <target_user> "
@@ -0,0 +1,40 @@
1
+ #!/bin/bash
2
+
3
+ # export NODE_OPTIONS=''
4
+ # export NPM_CONFIG_LOGLEVEL=silent
5
+ FASTBROWSER_CLI="npm run dev:cli --"
6
+ # FASTBROWSER_CLI="npx fastbrowser_cli"
7
+
8
+ # Function to sleep for a random duration between delayBase - delayRange/2 and delayBase + delayRange/2
9
+ # Usage: random_sleep <delayBase> <delayRange>
10
+ random_sleep() {
11
+ local delayBase="$1"
12
+ local delayRange="$2"
13
+ local delay
14
+ delay=$(awk -v b="$delayBase" -v r="$delayRange" 'BEGIN { srand(); printf "%.3f", b - r/2 + rand()*r }')
15
+ sleep "$delay"
16
+ }
17
+
18
+ #######################################################################################
19
+
20
+ # Check if the CLI is working properly
21
+ eval "$FASTBROWSER_CLI" check
22
+
23
+ # Goto linkedin messaging page using the CLI commands below:
24
+ eval "$FASTBROWSER_CLI" navigate_page --url https://www.linkedin.com/messaging/
25
+
26
+ # list all the threads conversations in the left sidebar
27
+ eval "$FASTBROWSER_CLI" query_selectors -s 'list[name="Conversation List"] > listitem heading' -a
28
+
29
+ #######################################################################################
30
+
31
+ # Select the conversation with Eric Defiez
32
+ eval "$FASTBROWSER_CLI" click -s 'list[name="Conversation List"] > listitem heading[name^="Eric Defiez"]'
33
+
34
+ #######################################################################################
35
+
36
+ # Fill the message content
37
+ eval "$FASTBROWSER_CLI" fill_form -s 'textbox[name^="Write"]' -v "Hello"
38
+
39
+ # Click the "Send" button to send the message
40
+ eval "$FASTBROWSER_CLI" click -s 'button[name^="Send"]'
@@ -0,0 +1,326 @@
1
+ #!/usr/bin/env npx tsx
2
+
3
+ import { Command } from 'commander';
4
+
5
+ import { A11yQuery, A11yTree, AxNode } from 'a11y_parse';
6
+ import { FastBrowserHelper } from '../wttj_cli/fastbrowser_helper.js';
7
+
8
+ ///////////////////////////////////////////////////////////////////////////////
9
+ ///////////////////////////////////////////////////////////////////////////////
10
+ //
11
+ ///////////////////////////////////////////////////////////////////////////////
12
+ ///////////////////////////////////////////////////////////////////////////////
13
+
14
+ class MessagesThreadHelper {
15
+
16
+ static async parseMessagesThread(
17
+ axNodeThread: AxNode,
18
+ overrideYear?: number,
19
+ ): Promise<string> {
20
+ const lines: string[] = [];
21
+ let currentDate: Date | null = null;
22
+ let currentSender: string | null = null;
23
+ let currentTime: { hours: number; minutes: number } | null = null;
24
+ const year = overrideYear !== undefined ? overrideYear : new Date().getFullYear();
25
+
26
+ for (const item of axNodeThread.children) {
27
+ if (item.children.length === 0) {
28
+ continue;
29
+ }
30
+
31
+ const dateChild = item.children.find(
32
+ (c) => c.role === 'time'
33
+ && c.attributes['value'] !== undefined
34
+ && c.attributes['value'].startsWith('•') === false,
35
+ );
36
+ if (dateChild !== undefined && dateChild.attributes['value'] !== undefined) {
37
+ currentDate = MessagesThreadHelper.parseDateMarker(dateChild.attributes['value'], year);
38
+ }
39
+
40
+ const headerChild = item.children.find(
41
+ (c) => c.role === 'generic'
42
+ && c.attributes['value'] !== undefined
43
+ && / sent the following messages at /.test(c.attributes['value']),
44
+ );
45
+ if (headerChild !== undefined && headerChild.attributes['value'] !== undefined) {
46
+ const parsed = MessagesThreadHelper.extractSenderFromHeader(headerChild.attributes['value']);
47
+ if (parsed !== null) {
48
+ currentSender = parsed.sender;
49
+ currentTime = MessagesThreadHelper.parseTimeOfDay(parsed.time);
50
+ }
51
+ }
52
+
53
+ const innerTimes = A11yQuery.querySelectorAll(item, 'time');
54
+ const bulletTime = innerTimes.find(
55
+ (t) => t.attributes['value'] !== undefined && t.attributes['value'].startsWith('•'),
56
+ );
57
+ if (bulletTime !== undefined && bulletTime.attributes['value'] !== undefined) {
58
+ currentTime = MessagesThreadHelper.parseTimeOfDay(bulletTime.attributes['value']);
59
+ }
60
+
61
+ if (headerChild === undefined) {
62
+ const linkNodes = A11yQuery.querySelectorAll(item, 'link[url*="linkedin.com/in/"]');
63
+ const senderLink = linkNodes.find(
64
+ (l) => l.name !== undefined
65
+ && l.name.length > 0
66
+ && l.name.startsWith('View ') === false,
67
+ );
68
+ if (senderLink !== undefined && senderLink.name !== undefined) {
69
+ currentSender = senderLink.name;
70
+ }
71
+ }
72
+
73
+ const paragraphs = A11yQuery.querySelectorAll(item, 'paragraph')
74
+ .filter((p) => MessagesThreadHelper.hasButtonAncestor(p, item) === false);
75
+ const texts = paragraphs
76
+ .map((p) => MessagesThreadHelper.extractParagraphText(p))
77
+ .filter((t) => t.length > 0);
78
+ if (texts.length === 0) {
79
+ continue;
80
+ }
81
+ if (currentDate === null || currentSender === null || currentTime === null) {
82
+ continue;
83
+ }
84
+
85
+ const iso = MessagesThreadHelper.combineDateTime(currentDate, currentTime);
86
+ lines.push(`${iso}:${currentSender}: ${texts.join(' ')}`);
87
+ }
88
+
89
+ return lines.join('\n');
90
+ }
91
+
92
+ private static parseDateMarker(value: string, fallbackYear: number): Date {
93
+ const months: Record<string, number> = {
94
+ Jan: 0, Feb: 1, Mar: 2, Apr: 3, May: 4, Jun: 5,
95
+ Jul: 6, Aug: 7, Sep: 8, Oct: 9, Nov: 10, Dec: 11,
96
+ };
97
+ const match = value.match(/^([A-Za-z]+)\s+(\d{1,2})(?:,\s*(\d{4}))?$/);
98
+ if (match === null) {
99
+ throw new Error(`Cannot parse date marker: "${value}"`);
100
+ }
101
+ const monthIndex = months[match[1]];
102
+ if (monthIndex === undefined) {
103
+ throw new Error(`Unknown month name: "${match[1]}"`);
104
+ }
105
+ const year = match[3] !== undefined ? parseInt(match[3], 10) : fallbackYear;
106
+ return new Date(year, monthIndex, parseInt(match[2], 10));
107
+ }
108
+
109
+ private static parseTimeOfDay(value: string): { hours: number; minutes: number } {
110
+ const cleaned = value.replace(/^•\s*/, '').trim();
111
+ const match = cleaned.match(/^(\d{1,2}):(\d{2})\s*(AM|PM)$/i);
112
+ if (match === null) {
113
+ throw new Error(`Cannot parse time of day: "${value}"`);
114
+ }
115
+ let hours = parseInt(match[1], 10);
116
+ const minutes = parseInt(match[2], 10);
117
+ const meridiem = match[3].toUpperCase();
118
+ if (meridiem === 'AM' && hours === 12) {
119
+ hours = 0;
120
+ } else if (meridiem === 'PM' && hours !== 12) {
121
+ hours += 12;
122
+ }
123
+ return { hours, minutes };
124
+ }
125
+
126
+ private static combineDateTime(date: Date, time: { hours: number; minutes: number }): string {
127
+ const yyyy = date.getFullYear().toString().padStart(4, '0');
128
+ const mm = (date.getMonth() + 1).toString().padStart(2, '0');
129
+ const dd = date.getDate().toString().padStart(2, '0');
130
+ const hh = time.hours.toString().padStart(2, '0');
131
+ const mi = time.minutes.toString().padStart(2, '0');
132
+ return `${yyyy}-${mm}-${dd}T${hh}:${mi}:00`;
133
+ }
134
+
135
+ private static extractParagraphText(paragraph: AxNode): string {
136
+ if (paragraph.attributes['value'] !== undefined) {
137
+ return paragraph.attributes['value'].trim();
138
+ }
139
+ const parts: string[] = [];
140
+ for (const child of paragraph.children) {
141
+ if (child.name !== undefined && child.name.length > 0) {
142
+ parts.push(child.name);
143
+ continue;
144
+ }
145
+ if (child.attributes['value'] !== undefined) {
146
+ parts.push(child.attributes['value']);
147
+ }
148
+ }
149
+ return parts.join(' ').trim();
150
+ }
151
+
152
+ private static extractSenderFromHeader(value: string): { sender: string; time: string } | null {
153
+ const match = value.match(/^(.+?) sent the following messages at (.+)$/);
154
+ if (match === null) {
155
+ return null;
156
+ }
157
+ return { sender: match[1], time: match[2] };
158
+ }
159
+
160
+ private static hasButtonAncestor(node: AxNode, stopAt: AxNode): boolean {
161
+ let current: AxNode | undefined = node.parent;
162
+ while (current !== undefined && current.uid !== stopAt.uid) {
163
+ if (current.role === 'button') {
164
+ return true;
165
+ }
166
+ current = current.parent;
167
+ }
168
+ return false;
169
+ }
170
+ }
171
+
172
+ ///////////////////////////////////////////////////////////////////////////////
173
+ ///////////////////////////////////////////////////////////////////////////////
174
+ //
175
+ ///////////////////////////////////////////////////////////////////////////////
176
+ ///////////////////////////////////////////////////////////////////////////////
177
+
178
+ class LinkedinDmHelper {
179
+
180
+ ///////////////////////////////////////////////////////////////////////////////
181
+ ///////////////////////////////////////////////////////////////////////////////
182
+ //
183
+ ///////////////////////////////////////////////////////////////////////////////
184
+ ///////////////////////////////////////////////////////////////////////////////
185
+
186
+ static async gotoMessaging(): Promise<void> {
187
+ await FastBrowserHelper.run('check');
188
+ await FastBrowserHelper.navigatePage('https://www.linkedin.com/messaging/');
189
+ }
190
+
191
+ ///////////////////////////////////////////////////////////////////////////////
192
+ ///////////////////////////////////////////////////////////////////////////////
193
+ //
194
+ ///////////////////////////////////////////////////////////////////////////////
195
+ ///////////////////////////////////////////////////////////////////////////////
196
+
197
+ static async listConvoNames(): Promise<string[]> {
198
+ const output = await FastBrowserHelper.querySelectorsAll(
199
+ 'list[name="Conversation List"] > listitem heading',
200
+ 0,
201
+ );
202
+ const names: string[] = [];
203
+ for (const line of output.split('\n')) {
204
+ if (/^uid=\S+\s+heading\s+"/.test(line) === false) {
205
+ continue;
206
+ }
207
+ const axNode = A11yTree.parse(line);
208
+ if (axNode.name === undefined) {
209
+ continue;
210
+ }
211
+ names.push(axNode.name);
212
+ }
213
+ return names;
214
+ }
215
+
216
+ ///////////////////////////////////////////////////////////////////////////////
217
+ ///////////////////////////////////////////////////////////////////////////////
218
+ //
219
+ ///////////////////////////////////////////////////////////////////////////////
220
+ ///////////////////////////////////////////////////////////////////////////////
221
+
222
+ static async clickConversation(targetUser: string): Promise<void> {
223
+ const escaped = targetUser.replace(/"/g, '\\"');
224
+ await FastBrowserHelper.click(
225
+ `list[name="Conversation List"] > listitem heading[name^="${escaped}"]`,
226
+ );
227
+ }
228
+
229
+ ///////////////////////////////////////////////////////////////////////////////
230
+ ///////////////////////////////////////////////////////////////////////////////
231
+ //
232
+ ///////////////////////////////////////////////////////////////////////////////
233
+ ///////////////////////////////////////////////////////////////////////////////
234
+
235
+ static async fillAndSendMessage(message: string): Promise<void> {
236
+ await FastBrowserHelper.fillForm('textbox[name^="Write"]', message);
237
+ await FastBrowserHelper.click('button[name^="Send"]');
238
+ }
239
+
240
+ ///////////////////////////////////////////////////////////////////////////////
241
+ ///////////////////////////////////////////////////////////////////////////////
242
+ //
243
+ ///////////////////////////////////////////////////////////////////////////////
244
+ ///////////////////////////////////////////////////////////////////////////////
245
+
246
+ static async getMessagesTranscript(): Promise<string> {
247
+ const output = await FastBrowserHelper.takeSnapshot();
248
+ const axTree = A11yTree.parse(output);
249
+ const threadNode = LinkedinDmHelper.findThreadNode(axTree);
250
+ return await MessagesThreadHelper.parseMessagesThread(threadNode);
251
+ }
252
+
253
+ ///////////////////////////////////////////////////////////////////////////////
254
+ ///////////////////////////////////////////////////////////////////////////////
255
+ //
256
+ ///////////////////////////////////////////////////////////////////////////////
257
+ ///////////////////////////////////////////////////////////////////////////////
258
+
259
+ private static findThreadNode(axTree: AxNode): AxNode {
260
+ const convList = A11yQuery.querySelector(axTree, 'list[name="Conversation List"]');
261
+ if (convList === undefined) {
262
+ throw new Error('Could not find conversation list node');
263
+ }
264
+ const convListParent = convList.parent;
265
+ if (convListParent === undefined) {
266
+ throw new Error('Conversation list node has no parent');
267
+ }
268
+ const convDetails = A11yTree.nextSibling(convListParent);
269
+ if (convDetails === undefined) {
270
+ throw new Error('Could not find conversation details node');
271
+ }
272
+ const threadNode = A11yQuery.querySelector(convDetails, 'list');
273
+ if (threadNode === undefined) {
274
+ throw new Error('Could not find thread node');
275
+ }
276
+ return threadNode;
277
+ }
278
+ }
279
+
280
+ ///////////////////////////////////////////////////////////////////////////////
281
+ ///////////////////////////////////////////////////////////////////////////////
282
+ // Entry point
283
+ ///////////////////////////////////////////////////////////////////////////////
284
+ ///////////////////////////////////////////////////////////////////////////////
285
+
286
+ async function main(): Promise<void> {
287
+ const program = new Command();
288
+
289
+ program
290
+ .name('linkedin_dm')
291
+ .description('LinkedIn DM CLI');
292
+
293
+ program
294
+ .command('list_convos')
295
+ .description('List the names of people you have conversations with')
296
+ .action(async () => {
297
+ await LinkedinDmHelper.gotoMessaging();
298
+ const names = await LinkedinDmHelper.listConvoNames();
299
+ for (const name of names) {
300
+ console.log(name);
301
+ }
302
+ });
303
+
304
+ program
305
+ .command('send <target_user> <message>')
306
+ .description('Send a message in an existing conversation')
307
+ .action(async (targetUser: string, message: string) => {
308
+ await LinkedinDmHelper.gotoMessaging();
309
+ await LinkedinDmHelper.clickConversation(targetUser);
310
+ await LinkedinDmHelper.fillAndSendMessage(message);
311
+ });
312
+
313
+ program
314
+ .command('messages <target_user>')
315
+ .description('Print the message thread of a conversation')
316
+ .action(async (targetUser: string) => {
317
+ await LinkedinDmHelper.gotoMessaging();
318
+ await LinkedinDmHelper.clickConversation(targetUser);
319
+ const transcript = await LinkedinDmHelper.getMessagesTranscript();
320
+ console.log(transcript);
321
+ });
322
+
323
+ await program.parseAsync();
324
+ }
325
+
326
+ void main();