browser-devtools-mcp 0.1.7 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/LICENSE +93 -21
  2. package/README.md +93 -16
  3. package/dist/cli.js +53 -1721
  4. package/dist/core.js +764 -0
  5. package/dist/daemon-server.js +1 -338
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.js +210 -80
  8. package/dist/otel/otel-initializer.bundle.js +0 -1
  9. package/dist/tools/a11y/index.d.ts +2 -0
  10. package/dist/tools/content/index.d.ts +2 -0
  11. package/dist/tools/debug/index.d.ts +2 -0
  12. package/dist/tools/figma/compare/index.d.ts +56 -0
  13. package/dist/tools/figma/compare/types.d.ts +15 -0
  14. package/dist/tools/figma/index.d.ts +2 -0
  15. package/dist/tools/index.d.ts +4 -0
  16. package/dist/tools/interaction/index.d.ts +2 -0
  17. package/dist/tools/navigation/index.d.ts +2 -0
  18. package/dist/tools/o11y/index.d.ts +2 -0
  19. package/dist/tools/react/index.d.ts +2 -0
  20. package/dist/tools/run/index.d.ts +2 -0
  21. package/dist/tools/stub/index.d.ts +2 -0
  22. package/dist/tools/sync/index.d.ts +2 -0
  23. package/dist/tools/types.d.ts +21 -0
  24. package/dist/types.d.ts +78 -0
  25. package/package.json +11 -11
  26. package/dist/browser.js +0 -213
  27. package/dist/browser.js.map +0 -1
  28. package/dist/cli.js.map +0 -1
  29. package/dist/config.js +0 -96
  30. package/dist/config.js.map +0 -1
  31. package/dist/context.js +0 -298
  32. package/dist/context.js.map +0 -1
  33. package/dist/daemon-server.js.map +0 -1
  34. package/dist/index.js.map +0 -1
  35. package/dist/logger.js +0 -97
  36. package/dist/logger.js.map +0 -1
  37. package/dist/mcp-server.js +0 -401
  38. package/dist/mcp-server.js.map +0 -1
  39. package/dist/otel/otel-controller.js +0 -323
  40. package/dist/otel/otel-controller.js.map +0 -1
  41. package/dist/otel/otel-initializer.bundle.js.map +0 -7
  42. package/dist/otel/otel-proxy.js +0 -407
  43. package/dist/otel/otel-proxy.js.map +0 -1
  44. package/dist/server-info.js +0 -186
  45. package/dist/server-info.js.map +0 -1
  46. package/dist/tools/a11y/index.js +0 -7
  47. package/dist/tools/a11y/index.js.map +0 -1
  48. package/dist/tools/a11y/take-aria-snapshot.js +0 -54
  49. package/dist/tools/a11y/take-aria-snapshot.js.map +0 -1
  50. package/dist/tools/a11y/take-ax-tree-snapshot.js +0 -850
  51. package/dist/tools/a11y/take-ax-tree-snapshot.js.map +0 -1
  52. package/dist/tools/content/get-as-html.js +0 -164
  53. package/dist/tools/content/get-as-html.js.map +0 -1
  54. package/dist/tools/content/get-as-text.js +0 -76
  55. package/dist/tools/content/get-as-text.js.map +0 -1
  56. package/dist/tools/content/index.js +0 -14
  57. package/dist/tools/content/index.js.map +0 -1
  58. package/dist/tools/content/save-as-pdf.js +0 -119
  59. package/dist/tools/content/save-as-pdf.js.map +0 -1
  60. package/dist/tools/content/take-screenshot.js +0 -297
  61. package/dist/tools/content/take-screenshot.js.map +0 -1
  62. package/dist/tools/figma/compare/compare-image-embedding.js +0 -159
  63. package/dist/tools/figma/compare/compare-image-embedding.js.map +0 -1
  64. package/dist/tools/figma/compare/compare-mssim.js +0 -98
  65. package/dist/tools/figma/compare/compare-mssim.js.map +0 -1
  66. package/dist/tools/figma/compare/compare-text-embedding.js +0 -291
  67. package/dist/tools/figma/compare/compare-text-embedding.js.map +0 -1
  68. package/dist/tools/figma/compare/index.js +0 -139
  69. package/dist/tools/figma/compare/index.js.map +0 -1
  70. package/dist/tools/figma/compare/types.js +0 -3
  71. package/dist/tools/figma/compare/types.js.map +0 -1
  72. package/dist/tools/figma/compare/vector.js +0 -46
  73. package/dist/tools/figma/compare/vector.js.map +0 -1
  74. package/dist/tools/figma/compare-page-with-design.js +0 -240
  75. package/dist/tools/figma/compare-page-with-design.js.map +0 -1
  76. package/dist/tools/figma/figma-service.js +0 -134
  77. package/dist/tools/figma/figma-service.js.map +0 -1
  78. package/dist/tools/figma/index.js +0 -6
  79. package/dist/tools/figma/index.js.map +0 -1
  80. package/dist/tools/index.js +0 -41
  81. package/dist/tools/index.js.map +0 -1
  82. package/dist/tools/interaction/click.js +0 -29
  83. package/dist/tools/interaction/click.js.map +0 -1
  84. package/dist/tools/interaction/drag.js +0 -41
  85. package/dist/tools/interaction/drag.js.map +0 -1
  86. package/dist/tools/interaction/fill.js +0 -28
  87. package/dist/tools/interaction/fill.js.map +0 -1
  88. package/dist/tools/interaction/hover.js +0 -29
  89. package/dist/tools/interaction/hover.js.map +0 -1
  90. package/dist/tools/interaction/index.js +0 -24
  91. package/dist/tools/interaction/index.js.map +0 -1
  92. package/dist/tools/interaction/press-key.js +0 -99
  93. package/dist/tools/interaction/press-key.js.map +0 -1
  94. package/dist/tools/interaction/resize-viewport.js +0 -110
  95. package/dist/tools/interaction/resize-viewport.js.map +0 -1
  96. package/dist/tools/interaction/resize-window.js +0 -261
  97. package/dist/tools/interaction/resize-window.js.map +0 -1
  98. package/dist/tools/interaction/scroll.js +0 -304
  99. package/dist/tools/interaction/scroll.js.map +0 -1
  100. package/dist/tools/interaction/select.js +0 -30
  101. package/dist/tools/interaction/select.js.map +0 -1
  102. package/dist/tools/navigation/go-back.js +0 -76
  103. package/dist/tools/navigation/go-back.js.map +0 -1
  104. package/dist/tools/navigation/go-forward.js +0 -76
  105. package/dist/tools/navigation/go-forward.js.map +0 -1
  106. package/dist/tools/navigation/go-to.js +0 -80
  107. package/dist/tools/navigation/go-to.js.map +0 -1
  108. package/dist/tools/navigation/index.js +0 -14
  109. package/dist/tools/navigation/index.js.map +0 -1
  110. package/dist/tools/navigation/reload.js +0 -76
  111. package/dist/tools/navigation/reload.js.map +0 -1
  112. package/dist/tools/o11y/get-console-messages.js +0 -151
  113. package/dist/tools/o11y/get-console-messages.js.map +0 -1
  114. package/dist/tools/o11y/get-http-requests.js +0 -216
  115. package/dist/tools/o11y/get-http-requests.js.map +0 -1
  116. package/dist/tools/o11y/get-trace-id.js +0 -30
  117. package/dist/tools/o11y/get-trace-id.js.map +0 -1
  118. package/dist/tools/o11y/get-web-vitals.js +0 -595
  119. package/dist/tools/o11y/get-web-vitals.js.map +0 -1
  120. package/dist/tools/o11y/index.js +0 -18
  121. package/dist/tools/o11y/index.js.map +0 -1
  122. package/dist/tools/o11y/new-trace-id.js +0 -32
  123. package/dist/tools/o11y/new-trace-id.js.map +0 -1
  124. package/dist/tools/o11y/set-trace-id.js +0 -28
  125. package/dist/tools/o11y/set-trace-id.js.map +0 -1
  126. package/dist/tools/react/get-component-for-element.js +0 -941
  127. package/dist/tools/react/get-component-for-element.js.map +0 -1
  128. package/dist/tools/react/get-element-for-component.js +0 -1190
  129. package/dist/tools/react/get-element-for-component.js.map +0 -1
  130. package/dist/tools/react/index.js +0 -10
  131. package/dist/tools/react/index.js.map +0 -1
  132. package/dist/tools/run/index.js +0 -7
  133. package/dist/tools/run/index.js.map +0 -1
  134. package/dist/tools/run/js-in-browser.js +0 -51
  135. package/dist/tools/run/js-in-browser.js.map +0 -1
  136. package/dist/tools/run/js-in-sandbox.js +0 -175
  137. package/dist/tools/run/js-in-sandbox.js.map +0 -1
  138. package/dist/tools/stub/clear.js +0 -41
  139. package/dist/tools/stub/clear.js.map +0 -1
  140. package/dist/tools/stub/index.js +0 -14
  141. package/dist/tools/stub/index.js.map +0 -1
  142. package/dist/tools/stub/intercept-http-request.js +0 -112
  143. package/dist/tools/stub/intercept-http-request.js.map +0 -1
  144. package/dist/tools/stub/list.js +0 -75
  145. package/dist/tools/stub/list.js.map +0 -1
  146. package/dist/tools/stub/mock-http-response.js +0 -152
  147. package/dist/tools/stub/mock-http-response.js.map +0 -1
  148. package/dist/tools/stub/stub-controller.js +0 -284
  149. package/dist/tools/stub/stub-controller.js.map +0 -1
  150. package/dist/tools/sync/index.js +0 -6
  151. package/dist/tools/sync/index.js.map +0 -1
  152. package/dist/tools/sync/wait-for-network-idle.js +0 -152
  153. package/dist/tools/sync/wait-for-network-idle.js.map +0 -1
  154. package/dist/tools/tool-executor.js +0 -79
  155. package/dist/tools/tool-executor.js.map +0 -1
  156. package/dist/tools/types.js +0 -3
  157. package/dist/tools/types.js.map +0 -1
  158. package/dist/types.js +0 -55
  159. package/dist/types.js.map +0 -1
  160. package/dist/utils/cli-utils.js +0 -253
  161. package/dist/utils/cli-utils.js.map +0 -1
  162. package/dist/utils.js +0 -85
  163. package/dist/utils.js.map +0 -1
@@ -1,79 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.ToolExecutor = void 0;
37
- const browser_1 = require("../browser");
38
- const config_1 = require("../config");
39
- const context_1 = require("../context");
40
- const logger = __importStar(require("../logger"));
41
- class ToolExecutor {
42
- sessionIdProvider;
43
- sessionContext;
44
- constructor(sessionIdProvider) {
45
- this.sessionIdProvider = sessionIdProvider;
46
- }
47
- async _createSessionContext() {
48
- const browserContextInfo = await (0, browser_1.newBrowserContext)();
49
- const page = await (0, browser_1.newPage)(browserContextInfo.browserContext);
50
- const sessionId = this.sessionIdProvider();
51
- const context = new context_1.ToolSessionContext(sessionId, browserContextInfo.browserContext, page, {
52
- otelEnable: config_1.OTEL_ENABLE,
53
- });
54
- await context.init();
55
- return context;
56
- }
57
- async _sessionContext() {
58
- if (!this.sessionContext) {
59
- this.sessionContext = await this._createSessionContext();
60
- logger.debug(`Created session context on the first tool call for the session with id ${this.sessionContext.sessionId()}`);
61
- }
62
- return this.sessionContext;
63
- }
64
- async executeTool(tool, args) {
65
- logger.debug(`Executing tool ${tool.name()} with input: ${logger.toJson(args)}`);
66
- try {
67
- const sessionContext = await this._sessionContext();
68
- const result = await tool.handle(sessionContext, args);
69
- logger.debug(`Executed tool ${tool.name()} and got output: ${logger.toJson(result)}`);
70
- return result;
71
- }
72
- catch (err) {
73
- logger.debug(`Error occurred while executing ${tool.name()}: ${err}`);
74
- throw err;
75
- }
76
- }
77
- }
78
- exports.ToolExecutor = ToolExecutor;
79
- //# sourceMappingURL=tool-executor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-executor.js","sourceRoot":"","sources":["../../src/tools/tool-executor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wCAA4E;AAC5E,sCAAwC;AACxC,wCAAgD;AAChD,kDAAoC;AAKpC,MAAa,YAAY;IACJ,iBAAiB,CAAe;IACzC,cAAc,CAAsB;IAE5C,YAAY,iBAA+B;QACvC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC/C,CAAC;IAEO,KAAK,CAAC,qBAAqB;QAC/B,MAAM,kBAAkB,GACpB,MAAM,IAAA,2BAAiB,GAAE,CAAC;QAC9B,MAAM,IAAI,GAAS,MAAM,IAAA,iBAAO,EAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;QACpE,MAAM,SAAS,GAAW,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEnD,MAAM,OAAO,GAAuB,IAAI,4BAAkB,CACtD,SAAS,EACT,kBAAkB,CAAC,cAAc,EACjC,IAAI,EACJ;YACI,UAAU,EAAE,oBAAW;SAC1B,CACJ,CAAC;QAEF,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAErB,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,eAAe;QACzB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACzD,MAAM,CAAC,KAAK,CACR,0EAA0E,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,CAC9G,CAAC;QACN,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAU,EAAE,IAAe;QACzC,MAAM,CAAC,KAAK,CACR,kBAAkB,IAAI,CAAC,IAAI,EAAE,gBAAgB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CACrE,CAAC;QACF,IAAI,CAAC;YACD,MAAM,cAAc,GAChB,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YACjC,MAAM,MAAM,GAAe,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YACnE,MAAM,CAAC,KAAK,CACR,iBAAiB,IAAI,CAAC,IAAI,EAAE,oBAAoB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAC1E,CAAC;YACF,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CACR,kCAAkC,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAC1D,CAAC;YACF,MAAM,GAAG,CAAC;QACd,CAAC;IACL,CAAC;CACJ;AAzDD,oCAyDC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":""}
package/dist/types.js DELETED
@@ -1,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HttpResourceType = exports.HttpMethod = exports.ConsoleMessageLevel = exports.ConsoleMessageLevelCode = exports.ConsoleMessageLevelName = void 0;
4
- var ConsoleMessageLevelName;
5
- (function (ConsoleMessageLevelName) {
6
- ConsoleMessageLevelName["ALL"] = "all";
7
- ConsoleMessageLevelName["DEBUG"] = "debug";
8
- ConsoleMessageLevelName["INFO"] = "info";
9
- ConsoleMessageLevelName["WARNING"] = "warning";
10
- ConsoleMessageLevelName["ERROR"] = "error";
11
- })(ConsoleMessageLevelName || (exports.ConsoleMessageLevelName = ConsoleMessageLevelName = {}));
12
- var ConsoleMessageLevelCode;
13
- (function (ConsoleMessageLevelCode) {
14
- ConsoleMessageLevelCode[ConsoleMessageLevelCode["ALL"] = -1] = "ALL";
15
- ConsoleMessageLevelCode[ConsoleMessageLevelCode["DEBUG"] = 0] = "DEBUG";
16
- ConsoleMessageLevelCode[ConsoleMessageLevelCode["INFO"] = 1] = "INFO";
17
- ConsoleMessageLevelCode[ConsoleMessageLevelCode["WARNING"] = 2] = "WARNING";
18
- ConsoleMessageLevelCode[ConsoleMessageLevelCode["ERROR"] = 3] = "ERROR";
19
- })(ConsoleMessageLevelCode || (exports.ConsoleMessageLevelCode = ConsoleMessageLevelCode = {}));
20
- exports.ConsoleMessageLevel = {
21
- [ConsoleMessageLevelName.ALL]: { code: ConsoleMessageLevelCode.ALL },
22
- [ConsoleMessageLevelName.DEBUG]: { code: ConsoleMessageLevelCode.DEBUG },
23
- [ConsoleMessageLevelName.INFO]: { code: ConsoleMessageLevelCode.INFO },
24
- [ConsoleMessageLevelName.WARNING]: {
25
- code: ConsoleMessageLevelCode.WARNING,
26
- },
27
- [ConsoleMessageLevelName.ERROR]: { code: ConsoleMessageLevelCode.ERROR },
28
- };
29
- var HttpMethod;
30
- (function (HttpMethod) {
31
- HttpMethod["GET"] = "GET";
32
- HttpMethod["POST"] = "POST";
33
- HttpMethod["PUT"] = "PUT";
34
- HttpMethod["PATCH"] = "PATCH";
35
- HttpMethod["DELETE"] = "DELETE";
36
- HttpMethod["HEAD"] = "HEAD";
37
- HttpMethod["OPTIONS"] = "OPTIONS";
38
- })(HttpMethod || (exports.HttpMethod = HttpMethod = {}));
39
- var HttpResourceType;
40
- (function (HttpResourceType) {
41
- HttpResourceType["DOCUMENT"] = "document";
42
- HttpResourceType["STYLESHEET"] = "stylesheet";
43
- HttpResourceType["IMAGE"] = "image";
44
- HttpResourceType["MEDIA"] = "media";
45
- HttpResourceType["FONT"] = "font";
46
- HttpResourceType["SCRIPT"] = "script";
47
- HttpResourceType["TEXTTRACK"] = "texttrack";
48
- HttpResourceType["XHR"] = "xhr";
49
- HttpResourceType["FETCH"] = "fetch";
50
- HttpResourceType["EVENTSOURCE"] = "eventsource";
51
- HttpResourceType["WEBSOCKET"] = "websocket";
52
- HttpResourceType["MANIFEST"] = "manifest";
53
- HttpResourceType["OTHER"] = "other";
54
- })(HttpResourceType || (exports.HttpResourceType = HttpResourceType = {}));
55
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAA,IAAY,uBAMX;AAND,WAAY,uBAAuB;IAC/B,sCAAW,CAAA;IACX,0CAAe,CAAA;IACf,wCAAa,CAAA;IACb,8CAAmB,CAAA;IACnB,0CAAe,CAAA;AACnB,CAAC,EANW,uBAAuB,uCAAvB,uBAAuB,QAMlC;AAED,IAAY,uBAMX;AAND,WAAY,uBAAuB;IAC/B,oEAAQ,CAAA;IACR,uEAAS,CAAA;IACT,qEAAQ,CAAA;IACR,2EAAW,CAAA;IACX,uEAAS,CAAA;AACb,CAAC,EANW,uBAAuB,uCAAvB,uBAAuB,QAMlC;AAEY,QAAA,mBAAmB,GAG5B;IACA,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,uBAAuB,CAAC,GAAG,EAAE;IACpE,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,uBAAuB,CAAC,KAAK,EAAE;IACxE,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,uBAAuB,CAAC,IAAI,EAAE;IACtE,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE;QAC/B,IAAI,EAAE,uBAAuB,CAAC,OAAO;KACxC;IACD,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,uBAAuB,CAAC,KAAK,EAAE;CAClE,CAAC;AAkBX,IAAY,UAQX;AARD,WAAY,UAAU;IAClB,yBAAW,CAAA;IACX,2BAAa,CAAA;IACb,yBAAW,CAAA;IACX,6BAAe,CAAA;IACf,+BAAiB,CAAA;IACjB,2BAAa,CAAA;IACb,iCAAmB,CAAA;AACvB,CAAC,EARW,UAAU,0BAAV,UAAU,QAQrB;AAED,IAAY,gBAcX;AAdD,WAAY,gBAAgB;IACxB,yCAAqB,CAAA;IACrB,6CAAyB,CAAA;IACzB,mCAAe,CAAA;IACf,mCAAe,CAAA;IACf,iCAAa,CAAA;IACb,qCAAiB,CAAA;IACjB,2CAAuB,CAAA;IACvB,+BAAW,CAAA;IACX,mCAAe,CAAA;IACf,+CAA2B,CAAA;IAC3B,2CAAuB,CAAA;IACvB,yCAAqB,CAAA;IACrB,mCAAe,CAAA;AACnB,CAAC,EAdW,gBAAgB,gCAAhB,gBAAgB,QAc3B"}
@@ -1,253 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerToolCommands = registerToolCommands;
4
- const commander_1 = require("commander");
5
- const zod_1 = require("zod");
6
- /**
7
- * Extracts the inner type from optional/default/nullable wrappers
8
- */
9
- function _unwrapZodType(zodType) {
10
- let current = zodType;
11
- let isOptional = false;
12
- let defaultValue = undefined;
13
- while (true) {
14
- const typeName = current._def.typeName;
15
- if (typeName === zod_1.ZodFirstPartyTypeKind.ZodOptional) {
16
- isOptional = true;
17
- current = current._def.innerType;
18
- }
19
- else if (typeName === zod_1.ZodFirstPartyTypeKind.ZodDefault) {
20
- isOptional = true;
21
- defaultValue = current._def.defaultValue();
22
- current = current._def.innerType;
23
- }
24
- else if (typeName === zod_1.ZodFirstPartyTypeKind.ZodNullable) {
25
- isOptional = true;
26
- current = current._def.innerType;
27
- }
28
- else {
29
- break;
30
- }
31
- }
32
- return { innerType: current, isOptional, defaultValue };
33
- }
34
- /**
35
- * Gets description from a Zod type
36
- */
37
- function _getDescription(zodType) {
38
- return zodType._def.description;
39
- }
40
- /**
41
- * Converts kebab-case or snake_case to camelCase for option names
42
- */
43
- function _toCamelCase(str) {
44
- return str.replace(/[-_]([a-z])/g, (_, letter) => letter.toUpperCase());
45
- }
46
- /**
47
- * Converts camelCase to kebab-case for CLI flags
48
- */
49
- function _toKebabCase(str) {
50
- return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
51
- }
52
- /**
53
- * Creates a Commander Option from a Zod type
54
- */
55
- function _createOption(name, zodType) {
56
- const { innerType, isOptional, defaultValue } = _unwrapZodType(zodType);
57
- const description = _getDescription(zodType) || `The ${name} value`;
58
- const flagName = _toKebabCase(name);
59
- const typeName = innerType._def.typeName;
60
- let option;
61
- switch (typeName) {
62
- case zod_1.ZodFirstPartyTypeKind.ZodString:
63
- option = new commander_1.Option(`--${flagName} <string>`, description);
64
- break;
65
- case zod_1.ZodFirstPartyTypeKind.ZodNumber:
66
- option = new commander_1.Option(`--${flagName} <number>`, description);
67
- option.argParser((value) => {
68
- const n = Number(value);
69
- if (!Number.isFinite(n)) {
70
- throw new Error(`Invalid number: ${value}`);
71
- }
72
- return n;
73
- });
74
- break;
75
- case zod_1.ZodFirstPartyTypeKind.ZodBoolean:
76
- // Boolean flags don't take a value
77
- option = new commander_1.Option(`--${flagName}`, description);
78
- break;
79
- case zod_1.ZodFirstPartyTypeKind.ZodEnum:
80
- const enumValues = innerType._def.values;
81
- option = new commander_1.Option(`--${flagName} <choice>`, description).choices(enumValues);
82
- break;
83
- case zod_1.ZodFirstPartyTypeKind.ZodArray:
84
- // Array options can be specified multiple times
85
- option = new commander_1.Option(`--${flagName} <value...>`, description);
86
- break;
87
- case zod_1.ZodFirstPartyTypeKind.ZodObject:
88
- case zod_1.ZodFirstPartyTypeKind.ZodRecord:
89
- // Objects and records are passed as JSON strings
90
- option = new commander_1.Option(`--${flagName} <json>`, description);
91
- option.argParser((value) => {
92
- try {
93
- return JSON.parse(value);
94
- }
95
- catch {
96
- throw new Error(`Invalid JSON: ${value}`);
97
- }
98
- });
99
- break;
100
- case zod_1.ZodFirstPartyTypeKind.ZodAny:
101
- case zod_1.ZodFirstPartyTypeKind.ZodUnknown:
102
- // Any/unknown types: try JSON parse, fallback to string
103
- option = new commander_1.Option(`--${flagName} <value>`, description);
104
- option.argParser((value) => {
105
- try {
106
- return JSON.parse(value);
107
- }
108
- catch {
109
- return value;
110
- }
111
- });
112
- break;
113
- case zod_1.ZodFirstPartyTypeKind.ZodLiteral:
114
- // Literal types have a fixed value, treat as optional flag
115
- const literalValue = innerType._def.value;
116
- if (typeof literalValue === 'boolean') {
117
- option = new commander_1.Option(`--${flagName}`, description);
118
- }
119
- else {
120
- option = new commander_1.Option(`--${flagName} <value>`, description);
121
- option.default(literalValue);
122
- }
123
- break;
124
- case zod_1.ZodFirstPartyTypeKind.ZodUnion:
125
- // Union types: check if it's a union of literals (like enum)
126
- const unionOptions = innerType._def.options;
127
- const allLiterals = unionOptions.every((opt) => opt._def.typeName === zod_1.ZodFirstPartyTypeKind.ZodLiteral);
128
- if (allLiterals) {
129
- const choices = unionOptions.map((opt) => String(opt._def.value));
130
- option = new commander_1.Option(`--${flagName} <choice>`, description).choices(choices);
131
- }
132
- else {
133
- // Mixed union, treat as JSON
134
- option = new commander_1.Option(`--${flagName} <value>`, description);
135
- option.argParser((value) => {
136
- try {
137
- return JSON.parse(value);
138
- }
139
- catch {
140
- return value;
141
- }
142
- });
143
- }
144
- break;
145
- default:
146
- // For unsupported types, treat as string
147
- option = new commander_1.Option(`--${flagName} <value>`, description);
148
- break;
149
- }
150
- // Set default value if exists
151
- if (defaultValue !== undefined) {
152
- option.default(defaultValue);
153
- }
154
- // Mark as required if not optional and no default
155
- if (!isOptional && defaultValue === undefined) {
156
- option.makeOptionMandatory(true);
157
- }
158
- return option;
159
- }
160
- /**
161
- * Generates Commander Options from a Tool's input schema
162
- */
163
- function _generateOptionsFromSchema(schema) {
164
- const options = [];
165
- for (const [name, zodType] of Object.entries(schema)) {
166
- const option = _createOption(name, zodType);
167
- if (option) {
168
- options.push(option);
169
- }
170
- }
171
- return options;
172
- }
173
- /**
174
- * Parses command line options back to tool input format
175
- * Handles camelCase conversion from kebab-case flags
176
- */
177
- function _parseOptionsToToolInput(options) {
178
- const result = {};
179
- for (const [key, value] of Object.entries(options)) {
180
- // Commander already converts kebab-case to camelCase
181
- // but we need to handle any edge cases
182
- const camelKey = _toCamelCase(key);
183
- if (value !== undefined) {
184
- result[camelKey] = value;
185
- }
186
- }
187
- return result;
188
- }
189
- /**
190
- * Parses a tool name into domain and command parts
191
- * e.g., "navigation_go-to" -> { domain: "navigation", commandName: "go-to" }
192
- */
193
- function _parseToolName(toolName) {
194
- const underscoreIndex = toolName.indexOf('_');
195
- if (underscoreIndex === -1) {
196
- return { domain: 'default', commandName: toolName };
197
- }
198
- return {
199
- domain: toolName.substring(0, underscoreIndex),
200
- commandName: toolName.substring(underscoreIndex + 1),
201
- };
202
- }
203
- /**
204
- * Registers all tools as nested subcommands on the given program
205
- * Tool names like "navigation_go-to" become "navigation go-to"
206
- *
207
- * @example
208
- * ```typescript
209
- * import { Command } from 'commander';
210
- * import { tools } from './tools';
211
- * import { registerToolCommands } from './utils/cli-utils';
212
- *
213
- * const program = new Command('browser-devtools');
214
- *
215
- * registerToolCommands(program, tools, async (toolName, toolInput, globalOpts) => {
216
- * // Call daemon server with toolName and toolInput
217
- * // Use globalOpts.sessionId for session management
218
- * });
219
- *
220
- * program.parse();
221
- *
222
- * // Usage: browser-devtools navigation go-to --url "https://example.com"
223
- * ```
224
- */
225
- function registerToolCommands(program, tools, handler) {
226
- // Group tools by domain
227
- const domainCommands = new Map();
228
- for (const tool of tools) {
229
- const { domain, commandName } = _parseToolName(tool.name());
230
- // Get or create domain command
231
- let domainCommand = domainCommands.get(domain);
232
- if (!domainCommand) {
233
- domainCommand = new commander_1.Command(domain).description(`${domain.charAt(0).toUpperCase() + domain.slice(1)} commands`);
234
- domainCommands.set(domain, domainCommand);
235
- program.addCommand(domainCommand);
236
- }
237
- // Create tool command with just the command name (without domain prefix)
238
- const toolCommand = new commander_1.Command(commandName).description(tool.description().trim());
239
- // Add options from schema
240
- const options = _generateOptionsFromSchema(tool.inputSchema());
241
- for (const option of options) {
242
- toolCommand.addOption(option);
243
- }
244
- // Set action handler
245
- toolCommand.action(async (opts) => {
246
- const toolInput = _parseOptionsToToolInput(opts);
247
- const globalOptions = program.opts();
248
- await handler(tool.name(), toolInput, globalOptions);
249
- });
250
- domainCommand.addCommand(toolCommand);
251
- }
252
- }
253
- //# sourceMappingURL=cli-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-utils.js","sourceRoot":"","sources":["../../src/utils/cli-utils.ts"],"names":[],"mappings":"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"}
package/dist/utils.js DELETED
@@ -1,85 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.sleep = sleep;
7
- exports.getEnumKeyTuples = getEnumKeyTuples;
8
- exports.createEnumTransformer = createEnumTransformer;
9
- exports.formattedTimeForFilename = formattedTimeForFilename;
10
- exports.newTraceId = newTraceId;
11
- exports.newSpanId = newSpanId;
12
- exports.normalizeSpanId = normalizeSpanId;
13
- exports.normalizeTraceId = normalizeTraceId;
14
- exports.makeTraceparent = makeTraceparent;
15
- const crypto_1 = __importDefault(require("crypto"));
16
- function sleep(ms) {
17
- return new Promise((resolve) => setTimeout(resolve, ms));
18
- }
19
- function getEnumKeyTuples(enumObj) {
20
- const values = Object.keys(enumObj)
21
- .filter((key) => isNaN(Number(key))) // numeric enum reverse-mapping guard
22
- .map((key) => enumObj[key]);
23
- if (values.length === 0) {
24
- throw new Error('Enum has no values');
25
- }
26
- return values;
27
- }
28
- function createEnumTransformer(enumObj, opts) {
29
- const values = Object.keys(enumObj)
30
- .filter((k) => isNaN(Number(k)))
31
- .map((k) => enumObj[k]);
32
- const caseInsensitive = opts?.caseInsensitive ?? true;
33
- const lookup = new Map(values.map((v) => [
34
- caseInsensitive ? v.toLowerCase() : v,
35
- v,
36
- ]));
37
- return (value) => {
38
- const key = caseInsensitive ? value.toLowerCase() : value;
39
- const found = lookup.get(key);
40
- if (found === undefined) {
41
- throw new Error(`Invalid enum value: "${value}"`);
42
- }
43
- return found;
44
- };
45
- }
46
- function formattedTimeForFilename(date = new Date()) {
47
- const pad = (n) => String(n).padStart(2, '0');
48
- return (date.getFullYear() +
49
- pad(date.getMonth() + 1) +
50
- pad(date.getDate()) +
51
- '-' +
52
- pad(date.getHours()) +
53
- pad(date.getMinutes()) +
54
- pad(date.getSeconds()));
55
- }
56
- function newTraceId() {
57
- return crypto_1.default.randomBytes(16).toString('hex');
58
- }
59
- function newSpanId() {
60
- return crypto_1.default.randomBytes(8).toString('hex');
61
- }
62
- function normalizeSpanId(traceId) {
63
- const cleaned = traceId.trim().toLowerCase();
64
- const ok = /^[0-9a-f]{16}$/.test(cleaned) && cleaned !== '0'.repeat(16);
65
- if (!ok) {
66
- throw new Error('span id must be 16 lowercase hex chars (not all zeros)');
67
- }
68
- return cleaned;
69
- }
70
- function normalizeTraceId(traceId) {
71
- const cleaned = traceId.trim().toLowerCase();
72
- const ok = /^[0-9a-f]{32}$/.test(cleaned) && cleaned !== '0'.repeat(32);
73
- if (!ok) {
74
- throw new Error('trace id must be 32 lowercase hex chars (not all zeros)');
75
- }
76
- return cleaned;
77
- }
78
- function makeTraceparent(traceId, spanId, sampled = true) {
79
- const v = '00';
80
- const tid = normalizeTraceId(traceId);
81
- const sid = normalizeSpanId(spanId);
82
- const f = sampled ? '01' : '00';
83
- return `${v}-${tid}-${sid}-${f}`;
84
- }
85
- //# sourceMappingURL=utils.js.map
package/dist/utils.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;AAEA,sBAIC;AAED,4CAcC;AAED,sDA2BC;AAED,4DAaC;AAED,gCAEC;AAED,8BAEC;AAED,0CAUC;AAED,4CAUC;AAED,0CAWC;AA/GD,oDAA4B;AAE5B,SAAgB,KAAK,CAAC,EAAU;IAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAkD,EAAE,EAAE,CACtE,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAC1B,CAAC;AACN,CAAC;AAED,SAAgB,gBAAgB,CAC5B,OAAU;IAEV,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;SAC9B,MAAM,CAAC,CAAC,GAAW,EAAW,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,qCAAqC;SAC1F,GAAG,CAAC,CAAC,GAAW,EAAc,EAAE,CAAC,OAAO,CAAC,GAAc,CAAC,CAE5D,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,MAAgE,CAAC;AAC5E,CAAC;AAED,SAAgB,qBAAqB,CACjC,OAAU,EACV,IAAoC;IAEpC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;SAC9B,MAAM,CAAC,CAAC,CAAS,EAAW,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;SAChD,GAAG,CAAC,CAAC,CAAS,EAAc,EAAE,CAAC,OAAO,CAAC,CAAY,CAAC,CAExD,CAAC;IAEF,MAAM,eAAe,GAAY,IAAI,EAAE,eAAe,IAAI,IAAI,CAAC;IAE/D,MAAM,MAAM,GAAG,IAAI,GAAG,CAClB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAa,EAAwB,EAAE,CAAC;QAChD,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;KACJ,CAAC,CACL,CAAC;IAEF,OAAO,CAAC,KAAa,EAAc,EAAE;QACjC,MAAM,GAAG,GAAW,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAClE,MAAM,KAAK,GAA2B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,GAAG,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC;AACN,CAAC;AAED,SAAgB,wBAAwB,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE;IACtD,MAAM,GAAG,GAA0B,CAAC,CAAS,EAAU,EAAE,CACrD,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAE/B,OAAO,CACH,IAAI,CAAC,WAAW,EAAE;QAClB,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACxB,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,GAAG;QACH,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpB,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACtB,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CACzB,CAAC;AACN,CAAC;AAED,SAAgB,UAAU;IACtB,OAAO,gBAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAED,SAAgB,SAAS;IACrB,OAAO,gBAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjD,CAAC;AAED,SAAgB,eAAe,CAAC,OAAe;IAC3C,MAAM,OAAO,GAAW,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrD,MAAM,EAAE,GACJ,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,MAAM,IAAI,KAAK,CACX,wDAAwD,CAC3D,CAAC;IACN,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAAe;IAC5C,MAAM,OAAO,GAAW,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrD,MAAM,EAAE,GACJ,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,MAAM,IAAI,KAAK,CACX,yDAAyD,CAC5D,CAAC;IACN,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,SAAgB,eAAe,CAC3B,OAAe,EACf,MAAc,EACd,UAAmB,IAAI;IAEvB,MAAM,CAAC,GAAW,IAAI,CAAC;IACvB,MAAM,GAAG,GAAW,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAW,eAAe,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAW,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAExC,OAAO,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;AACrC,CAAC"}