chrome-devtools-mcp 0.17.1 → 0.17.2

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 (261) hide show
  1. package/README.md +4 -1
  2. package/package.json +3 -3
  3. package/build/src/DevToolsConnectionAdapter.js +0 -69
  4. package/build/src/DevtoolsUtils.js +0 -340
  5. package/build/src/McpContext.js +0 -603
  6. package/build/src/McpResponse.js +0 -490
  7. package/build/src/Mutex.js +0 -37
  8. package/build/src/PageCollector.js +0 -309
  9. package/build/src/WaitForHelper.js +0 -139
  10. package/build/src/browser.js +0 -182
  11. package/build/src/cli.js +0 -295
  12. package/build/src/formatters/ConsoleFormatter.js +0 -240
  13. package/build/src/formatters/IssueFormatter.js +0 -190
  14. package/build/src/formatters/NetworkFormatter.js +0 -226
  15. package/build/src/formatters/SnapshotFormatter.js +0 -134
  16. package/build/src/index.js +0 -21
  17. package/build/src/issue-descriptions.js +0 -39
  18. package/build/src/logger.js +0 -36
  19. package/build/src/main.js +0 -196
  20. package/build/src/polyfill.js +0 -7
  21. package/build/src/telemetry/ClearcutLogger.js +0 -102
  22. package/build/src/telemetry/WatchdogClient.js +0 -60
  23. package/build/src/telemetry/flagUtils.js +0 -45
  24. package/build/src/telemetry/metricUtils.js +0 -14
  25. package/build/src/telemetry/persistence.js +0 -53
  26. package/build/src/telemetry/types.js +0 -33
  27. package/build/src/telemetry/watchdog/ClearcutSender.js +0 -201
  28. package/build/src/telemetry/watchdog/main.js +0 -127
  29. package/build/src/third_party/THIRD_PARTY_NOTICES +0 -2011
  30. package/build/src/third_party/bundled-packages.json +0 -8
  31. package/build/src/third_party/devtools-formatter-worker.js +0 -15449
  32. package/build/src/third_party/index.js +0 -172791
  33. package/build/src/third_party/issue-descriptions/CoepCoopSandboxedIframeCannotNavigateToCoopPage.md +0 -4
  34. package/build/src/third_party/issue-descriptions/CoepCorpNotSameOrigin.md +0 -8
  35. package/build/src/third_party/issue-descriptions/CoepCorpNotSameOriginAfterDefaultedToSameOriginByCoep.md +0 -18
  36. package/build/src/third_party/issue-descriptions/CoepCorpNotSameSite.md +0 -7
  37. package/build/src/third_party/issue-descriptions/CoepFrameResourceNeedsCoepHeader.md +0 -10
  38. package/build/src/third_party/issue-descriptions/CompatibilityModeQuirks.md +0 -5
  39. package/build/src/third_party/issue-descriptions/CookieAttributeValueExceedsMaxSize.md +0 -5
  40. package/build/src/third_party/issue-descriptions/LowTextContrast.md +0 -5
  41. package/build/src/third_party/issue-descriptions/SameSiteExcludeContextDowngradeRead.md +0 -8
  42. package/build/src/third_party/issue-descriptions/SameSiteExcludeContextDowngradeSet.md +0 -8
  43. package/build/src/third_party/issue-descriptions/SameSiteExcludeNavigationContextDowngrade.md +0 -8
  44. package/build/src/third_party/issue-descriptions/SameSiteNoneInsecureErrorRead.md +0 -8
  45. package/build/src/third_party/issue-descriptions/SameSiteNoneInsecureErrorSet.md +0 -8
  46. package/build/src/third_party/issue-descriptions/SameSiteNoneInsecureWarnRead.md +0 -8
  47. package/build/src/third_party/issue-descriptions/SameSiteNoneInsecureWarnSet.md +0 -8
  48. package/build/src/third_party/issue-descriptions/SameSiteUnspecifiedLaxAllowUnsafeRead.md +0 -9
  49. package/build/src/third_party/issue-descriptions/SameSiteUnspecifiedLaxAllowUnsafeSet.md +0 -9
  50. package/build/src/third_party/issue-descriptions/SameSiteWarnCrossDowngradeRead.md +0 -8
  51. package/build/src/third_party/issue-descriptions/SameSiteWarnCrossDowngradeSet.md +0 -8
  52. package/build/src/third_party/issue-descriptions/SameSiteWarnStrictLaxDowngradeStrict.md +0 -8
  53. package/build/src/third_party/issue-descriptions/arInsecureContext.md +0 -7
  54. package/build/src/third_party/issue-descriptions/arInvalidInfoHeader.md +0 -5
  55. package/build/src/third_party/issue-descriptions/arInvalidRegisterOsSourceHeader.md +0 -5
  56. package/build/src/third_party/issue-descriptions/arInvalidRegisterOsTriggerHeader.md +0 -5
  57. package/build/src/third_party/issue-descriptions/arInvalidRegisterSourceHeader.md +0 -5
  58. package/build/src/third_party/issue-descriptions/arInvalidRegisterTriggerHeader.md +0 -5
  59. package/build/src/third_party/issue-descriptions/arNavigationRegistrationUniqueScopeAlreadySet.md +0 -5
  60. package/build/src/third_party/issue-descriptions/arNavigationRegistrationWithoutTransientUserActivation.md +0 -6
  61. package/build/src/third_party/issue-descriptions/arNoRegisterOsSourceHeader.md +0 -5
  62. package/build/src/third_party/issue-descriptions/arNoRegisterOsTriggerHeader.md +0 -5
  63. package/build/src/third_party/issue-descriptions/arNoRegisterSourceHeader.md +0 -5
  64. package/build/src/third_party/issue-descriptions/arNoRegisterTriggerHeader.md +0 -5
  65. package/build/src/third_party/issue-descriptions/arNoWebOrOsSupport.md +0 -4
  66. package/build/src/third_party/issue-descriptions/arOsSourceIgnored.md +0 -18
  67. package/build/src/third_party/issue-descriptions/arOsTriggerIgnored.md +0 -19
  68. package/build/src/third_party/issue-descriptions/arPermissionPolicyDisabled.md +0 -8
  69. package/build/src/third_party/issue-descriptions/arSourceAndTriggerHeaders.md +0 -9
  70. package/build/src/third_party/issue-descriptions/arSourceIgnored.md +0 -13
  71. package/build/src/third_party/issue-descriptions/arTriggerIgnored.md +0 -12
  72. package/build/src/third_party/issue-descriptions/arUntrustworthyReportingOrigin.md +0 -10
  73. package/build/src/third_party/issue-descriptions/arWebAndOsHeaders.md +0 -11
  74. package/build/src/third_party/issue-descriptions/bounceTrackingMitigations.md +0 -3
  75. package/build/src/third_party/issue-descriptions/clientHintMetaTagAllowListInvalidOrigin.md +0 -4
  76. package/build/src/third_party/issue-descriptions/clientHintMetaTagModifiedHTML.md +0 -4
  77. package/build/src/third_party/issue-descriptions/connectionAllowlistInvalidAllowlistItemType.md +0 -12
  78. package/build/src/third_party/issue-descriptions/connectionAllowlistInvalidHeader.md +0 -12
  79. package/build/src/third_party/issue-descriptions/connectionAllowlistInvalidUrlPattern.md +0 -8
  80. package/build/src/third_party/issue-descriptions/connectionAllowlistItemNotInnerList.md +0 -12
  81. package/build/src/third_party/issue-descriptions/connectionAllowlistMoreThanOneList.md +0 -7
  82. package/build/src/third_party/issue-descriptions/connectionAllowlistReportingEndpointNotToken.md +0 -10
  83. package/build/src/third_party/issue-descriptions/cookieCrossSiteRedirectDowngrade.md +0 -12
  84. package/build/src/third_party/issue-descriptions/cookieExcludeBlockedWithinRelatedWebsiteSet.md +0 -4
  85. package/build/src/third_party/issue-descriptions/cookieExcludeDomainNonAscii.md +0 -11
  86. package/build/src/third_party/issue-descriptions/cookieExcludePortMismatch.md +0 -8
  87. package/build/src/third_party/issue-descriptions/cookieExcludeSchemeMismatch.md +0 -7
  88. package/build/src/third_party/issue-descriptions/cookieExcludeThirdPartyPhaseoutRead.md +0 -6
  89. package/build/src/third_party/issue-descriptions/cookieExcludeThirdPartyPhaseoutSet.md +0 -6
  90. package/build/src/third_party/issue-descriptions/cookieWarnDomainNonAscii.md +0 -11
  91. package/build/src/third_party/issue-descriptions/cookieWarnMetadataGrantRead.md +0 -4
  92. package/build/src/third_party/issue-descriptions/cookieWarnMetadataGrantSet.md +0 -4
  93. package/build/src/third_party/issue-descriptions/cookieWarnThirdPartyPhaseoutRead.md +0 -6
  94. package/build/src/third_party/issue-descriptions/cookieWarnThirdPartyPhaseoutSet.md +0 -6
  95. package/build/src/third_party/issue-descriptions/corsAllowCredentialsRequired.md +0 -6
  96. package/build/src/third_party/issue-descriptions/corsDisabledScheme.md +0 -7
  97. package/build/src/third_party/issue-descriptions/corsDisallowedByMode.md +0 -7
  98. package/build/src/third_party/issue-descriptions/corsHeaderDisallowedByPreflightResponse.md +0 -5
  99. package/build/src/third_party/issue-descriptions/corsInsecurePrivateNetwork.md +0 -10
  100. package/build/src/third_party/issue-descriptions/corsInvalidHeaderValues.md +0 -7
  101. package/build/src/third_party/issue-descriptions/corsLocalNetworkAccessPermissionDenied.md +0 -19
  102. package/build/src/third_party/issue-descriptions/corsMethodDisallowedByPreflightResponse.md +0 -5
  103. package/build/src/third_party/issue-descriptions/corsNoCorsRedirectModeNotFollow.md +0 -5
  104. package/build/src/third_party/issue-descriptions/corsOriginMismatch.md +0 -6
  105. package/build/src/third_party/issue-descriptions/corsPreflightAllowPrivateNetworkError.md +0 -10
  106. package/build/src/third_party/issue-descriptions/corsPreflightResponseInvalid.md +0 -5
  107. package/build/src/third_party/issue-descriptions/corsPrivateNetworkPermissionDenied.md +0 -10
  108. package/build/src/third_party/issue-descriptions/corsRedirectContainsCredentials.md +0 -5
  109. package/build/src/third_party/issue-descriptions/corsWildcardOriginNotAllowed.md +0 -8
  110. package/build/src/third_party/issue-descriptions/cspEvalViolation.md +0 -9
  111. package/build/src/third_party/issue-descriptions/cspInlineViolation.md +0 -10
  112. package/build/src/third_party/issue-descriptions/cspTrustedTypesPolicyViolation.md +0 -5
  113. package/build/src/third_party/issue-descriptions/cspTrustedTypesSinkViolation.md +0 -8
  114. package/build/src/third_party/issue-descriptions/cspURLViolation.md +0 -10
  115. package/build/src/third_party/issue-descriptions/deprecation.md +0 -3
  116. package/build/src/third_party/issue-descriptions/federatedAuthRequestAccountsHttpNotFound.md +0 -1
  117. package/build/src/third_party/issue-descriptions/federatedAuthRequestAccountsInvalidResponse.md +0 -1
  118. package/build/src/third_party/issue-descriptions/federatedAuthRequestAccountsNoResponse.md +0 -1
  119. package/build/src/third_party/issue-descriptions/federatedAuthRequestApprovalDeclined.md +0 -1
  120. package/build/src/third_party/issue-descriptions/federatedAuthRequestCanceled.md +0 -1
  121. package/build/src/third_party/issue-descriptions/federatedAuthRequestErrorFetchingSignin.md +0 -1
  122. package/build/src/third_party/issue-descriptions/federatedAuthRequestErrorIdToken.md +0 -1
  123. package/build/src/third_party/issue-descriptions/federatedAuthRequestIdTokenHttpNotFound.md +0 -1
  124. package/build/src/third_party/issue-descriptions/federatedAuthRequestIdTokenInvalidRequest.md +0 -1
  125. package/build/src/third_party/issue-descriptions/federatedAuthRequestIdTokenInvalidResponse.md +0 -1
  126. package/build/src/third_party/issue-descriptions/federatedAuthRequestIdTokenNoResponse.md +0 -1
  127. package/build/src/third_party/issue-descriptions/federatedAuthRequestInvalidSigninResponse.md +0 -1
  128. package/build/src/third_party/issue-descriptions/federatedAuthRequestManifestHttpNotFound.md +0 -1
  129. package/build/src/third_party/issue-descriptions/federatedAuthRequestManifestInvalidResponse.md +0 -1
  130. package/build/src/third_party/issue-descriptions/federatedAuthRequestManifestNoResponse.md +0 -1
  131. package/build/src/third_party/issue-descriptions/federatedAuthRequestTooManyRequests.md +0 -1
  132. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestInvalidAccountsResponse.md +0 -1
  133. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestInvalidConfigOrWellKnown.md +0 -1
  134. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNoAccountSharingPermission.md +0 -1
  135. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNoApiPermission.md +0 -1
  136. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNoReturningUserFromFetchedAccounts.md +0 -1
  137. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNotIframe.md +0 -1
  138. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNotPotentiallyTrustworthy.md +0 -1
  139. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNotSameOrigin.md +0 -1
  140. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNotSignedInWithIdp.md +0 -1
  141. package/build/src/third_party/issue-descriptions/fetchingPartitionedBlobURL.md +0 -7
  142. package/build/src/third_party/issue-descriptions/genericFormAriaLabelledByToNonExistingIdError.md +0 -8
  143. package/build/src/third_party/issue-descriptions/genericFormAutocompleteAttributeEmptyError.md +0 -5
  144. package/build/src/third_party/issue-descriptions/genericFormDuplicateIdForInputError.md +0 -5
  145. package/build/src/third_party/issue-descriptions/genericFormEmptyIdAndNameAttributesForInputError.md +0 -5
  146. package/build/src/third_party/issue-descriptions/genericFormInputAssignedAutocompleteValueToIdOrNameAttributeError.md +0 -5
  147. package/build/src/third_party/issue-descriptions/genericFormInputHasWrongButWellIntendedAutocompleteValueError.md +0 -5
  148. package/build/src/third_party/issue-descriptions/genericFormInputWithNoLabelError.md +0 -5
  149. package/build/src/third_party/issue-descriptions/genericFormLabelForMatchesNonExistingIdError.md +0 -5
  150. package/build/src/third_party/issue-descriptions/genericFormLabelForNameError.md +0 -5
  151. package/build/src/third_party/issue-descriptions/genericFormLabelHasNeitherForNorNestedInputError.md +0 -5
  152. package/build/src/third_party/issue-descriptions/genericNavigationEntryMarkedSkippable.md +0 -7
  153. package/build/src/third_party/issue-descriptions/genericResponseWasBlockedByORB.md +0 -4
  154. package/build/src/third_party/issue-descriptions/heavyAd.md +0 -10
  155. package/build/src/third_party/issue-descriptions/mixedContent.md +0 -5
  156. package/build/src/third_party/issue-descriptions/navigatingPartitionedBlobURL.md +0 -5
  157. package/build/src/third_party/issue-descriptions/permissionElementActivationDisabled.md +0 -7
  158. package/build/src/third_party/issue-descriptions/permissionElementActivationDisabledWithOccluder.md +0 -9
  159. package/build/src/third_party/issue-descriptions/permissionElementActivationDisabledWithOccluderParent.md +0 -9
  160. package/build/src/third_party/issue-descriptions/permissionElementCspFrameAncestorsMissing.md +0 -5
  161. package/build/src/third_party/issue-descriptions/permissionElementFencedFrameDisallowed.md +0 -5
  162. package/build/src/third_party/issue-descriptions/permissionElementFontSizeTooLarge.md +0 -5
  163. package/build/src/third_party/issue-descriptions/permissionElementFontSizeTooSmall.md +0 -5
  164. package/build/src/third_party/issue-descriptions/permissionElementGeolocationDeprecated.md +0 -5
  165. package/build/src/third_party/issue-descriptions/permissionElementInsetBoxShadowUnsupported.md +0 -5
  166. package/build/src/third_party/issue-descriptions/permissionElementInvalidDisplayStyle.md +0 -5
  167. package/build/src/third_party/issue-descriptions/permissionElementInvalidSizeValue.md +0 -5
  168. package/build/src/third_party/issue-descriptions/permissionElementInvalidType.md +0 -5
  169. package/build/src/third_party/issue-descriptions/permissionElementInvalidTypeActivation.md +0 -5
  170. package/build/src/third_party/issue-descriptions/permissionElementLowContrast.md +0 -5
  171. package/build/src/third_party/issue-descriptions/permissionElementNonOpaqueColor.md +0 -5
  172. package/build/src/third_party/issue-descriptions/permissionElementPaddingBottomUnsupported.md +0 -6
  173. package/build/src/third_party/issue-descriptions/permissionElementPaddingRightUnsupported.md +0 -6
  174. package/build/src/third_party/issue-descriptions/permissionElementPermissionsPolicyBlocked.md +0 -5
  175. package/build/src/third_party/issue-descriptions/permissionElementRegistrationFailed.md +0 -5
  176. package/build/src/third_party/issue-descriptions/permissionElementRequestInProgress.md +0 -5
  177. package/build/src/third_party/issue-descriptions/permissionElementSecurityChecksFailed.md +0 -5
  178. package/build/src/third_party/issue-descriptions/permissionElementTypeNotSupported.md +0 -5
  179. package/build/src/third_party/issue-descriptions/permissionElementUntrustedEvent.md +0 -7
  180. package/build/src/third_party/issue-descriptions/placeholderDescriptionForInvisibleIssues.md +0 -3
  181. package/build/src/third_party/issue-descriptions/propertyRuleInvalidNameIssue.md +0 -3
  182. package/build/src/third_party/issue-descriptions/propertyRuleIssue.md +0 -7
  183. package/build/src/third_party/issue-descriptions/selectElementAccessibilityDisallowedOptGroupChild.md +0 -7
  184. package/build/src/third_party/issue-descriptions/selectElementAccessibilityDisallowedSelectChild.md +0 -7
  185. package/build/src/third_party/issue-descriptions/selectElementAccessibilityInteractiveContentAttributesSelectDescendant.md +0 -3
  186. package/build/src/third_party/issue-descriptions/selectElementAccessibilityInteractiveContentLegendChild.md +0 -3
  187. package/build/src/third_party/issue-descriptions/selectElementAccessibilityInteractiveContentOptionChild.md +0 -3
  188. package/build/src/third_party/issue-descriptions/selectElementAccessibilityNonPhrasingContentOptionChild.md +0 -3
  189. package/build/src/third_party/issue-descriptions/sharedArrayBuffer.md +0 -7
  190. package/build/src/third_party/issue-descriptions/sharedDictionaryUseErrorCrossOriginNoCorsRequest.md +0 -1
  191. package/build/src/third_party/issue-descriptions/sharedDictionaryUseErrorDictionaryLoadFailure.md +0 -3
  192. package/build/src/third_party/issue-descriptions/sharedDictionaryUseErrorMatchingDictionaryNotUsed.md +0 -3
  193. package/build/src/third_party/issue-descriptions/sharedDictionaryUseErrorUnexpectedContentDictionaryHeader.md +0 -1
  194. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorCossOriginNoCorsRequest.md +0 -1
  195. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorDisallowedBySettings.md +0 -1
  196. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorExpiredResponse.md +0 -3
  197. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorFeatureDisabled.md +0 -3
  198. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorInsufficientResources.md +0 -1
  199. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorInvalidMatchField.md +0 -1
  200. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorInvalidStructuredHeader.md +0 -1
  201. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorInvalidTTLField.md +0 -1
  202. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorNavigationRequest.md +0 -3
  203. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorNoMatchField.md +0 -1
  204. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorNonIntegerTTLField.md +0 -1
  205. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorNonListMatchDestField.md +0 -1
  206. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorNonSecureContext.md +0 -3
  207. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorNonStringIdField.md +0 -1
  208. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorNonStringInMatchDestList.md +0 -1
  209. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorNonStringMatchField.md +0 -1
  210. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorNonTokenTypeField.md +0 -1
  211. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorRequestAborted.md +0 -1
  212. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorShuttingDown.md +0 -1
  213. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorTooLongIdField.md +0 -3
  214. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorUnsupportedType.md +0 -3
  215. package/build/src/third_party/issue-descriptions/sriInvalidSignatureHeader.md +0 -14
  216. package/build/src/third_party/issue-descriptions/sriInvalidSignatureInputHeader.md +0 -15
  217. package/build/src/third_party/issue-descriptions/sriMissingSignatureHeader.md +0 -8
  218. package/build/src/third_party/issue-descriptions/sriMissingSignatureInputHeader.md +0 -7
  219. package/build/src/third_party/issue-descriptions/sriSignatureHeaderValueIsIncorrectLength.md +0 -11
  220. package/build/src/third_party/issue-descriptions/sriSignatureHeaderValueIsNotByteSequence.md +0 -14
  221. package/build/src/third_party/issue-descriptions/sriSignatureHeaderValueIsParameterized.md +0 -15
  222. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderInvalidComponentName.md +0 -8
  223. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderInvalidComponentType.md +0 -13
  224. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderInvalidDerivedComponentParameter.md +0 -4
  225. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderInvalidHeaderComponentParameter.md +0 -5
  226. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderInvalidParameter.md +0 -11
  227. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderKeyIdLength.md +0 -12
  228. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderMissingLabel.md +0 -6
  229. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderMissingRequiredParameters.md +0 -8
  230. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderValueMissingComponents.md +0 -11
  231. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderValueNotInnerList.md +0 -11
  232. package/build/src/third_party/issue-descriptions/sriValidationFailedIntegrityMismatch.md +0 -10
  233. package/build/src/third_party/issue-descriptions/sriValidationFailedInvalidLength.md +0 -5
  234. package/build/src/third_party/issue-descriptions/sriValidationFailedSignatureExpired.md +0 -6
  235. package/build/src/third_party/issue-descriptions/sriValidationFailedSignatureMismatch.md +0 -11
  236. package/build/src/third_party/issue-descriptions/stylesheetLateImport.md +0 -4
  237. package/build/src/third_party/issue-descriptions/stylesheetRequestFailed.md +0 -3
  238. package/build/src/third_party/issue-descriptions/summaryElementAccessibilityInteractiveContentSummaryDescendant.md +0 -3
  239. package/build/src/third_party/issue-descriptions/unencodedDigestIncorrectDigestLength.md +0 -12
  240. package/build/src/third_party/issue-descriptions/unencodedDigestIncorrectDigestType.md +0 -17
  241. package/build/src/third_party/issue-descriptions/unencodedDigestMalformedDictionary.md +0 -14
  242. package/build/src/third_party/issue-descriptions/unencodedDigestUnknownAlgorithm.md +0 -15
  243. package/build/src/tools/ToolDefinition.js +0 -20
  244. package/build/src/tools/categories.js +0 -24
  245. package/build/src/tools/console.js +0 -85
  246. package/build/src/tools/emulation.js +0 -169
  247. package/build/src/tools/extensions.js +0 -79
  248. package/build/src/tools/input.js +0 -343
  249. package/build/src/tools/network.js +0 -120
  250. package/build/src/tools/pages.js +0 -323
  251. package/build/src/tools/performance.js +0 -188
  252. package/build/src/tools/screenshot.js +0 -84
  253. package/build/src/tools/script.js +0 -71
  254. package/build/src/tools/snapshot.js +0 -52
  255. package/build/src/tools/tools.js +0 -31
  256. package/build/src/trace-processing/parse.js +0 -84
  257. package/build/src/utils/ExtensionRegistry.js +0 -35
  258. package/build/src/utils/keyboard.js +0 -296
  259. package/build/src/utils/pagination.js +0 -49
  260. package/build/src/utils/string.js +0 -36
  261. package/build/src/utils/types.js +0 -6
@@ -1,490 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { ConsoleFormatter } from './formatters/ConsoleFormatter.js';
7
- import { IssueFormatter } from './formatters/IssueFormatter.js';
8
- import { NetworkFormatter } from './formatters/NetworkFormatter.js';
9
- import { SnapshotFormatter } from './formatters/SnapshotFormatter.js';
10
- import { UncaughtError } from './PageCollector.js';
11
- import { DevTools } from './third_party/index.js';
12
- import { handleDialog } from './tools/pages.js';
13
- import { getInsightOutput, getTraceSummary } from './trace-processing/parse.js';
14
- import { paginate } from './utils/pagination.js';
15
- export class McpResponse {
16
- #includePages = false;
17
- #snapshotParams;
18
- #attachedNetworkRequestId;
19
- #attachedNetworkRequestOptions;
20
- #attachedConsoleMessageId;
21
- #attachedTraceSummary;
22
- #attachedTraceInsight;
23
- #textResponseLines = [];
24
- #images = [];
25
- #networkRequestsOptions;
26
- #consoleDataOptions;
27
- #listExtensions;
28
- #devToolsData;
29
- #tabId;
30
- attachDevToolsData(data) {
31
- this.#devToolsData = data;
32
- }
33
- setTabId(tabId) {
34
- this.#tabId = tabId;
35
- }
36
- setIncludePages(value) {
37
- this.#includePages = value;
38
- }
39
- includeSnapshot(params) {
40
- this.#snapshotParams = params ?? {
41
- verbose: false,
42
- };
43
- }
44
- setListExtensions() {
45
- this.#listExtensions = true;
46
- }
47
- setIncludeNetworkRequests(value, options) {
48
- if (!value) {
49
- this.#networkRequestsOptions = undefined;
50
- return;
51
- }
52
- this.#networkRequestsOptions = {
53
- include: value,
54
- pagination: options?.pageSize || options?.pageIdx
55
- ? {
56
- pageSize: options.pageSize,
57
- pageIdx: options.pageIdx,
58
- }
59
- : undefined,
60
- resourceTypes: options?.resourceTypes,
61
- includePreservedRequests: options?.includePreservedRequests,
62
- networkRequestIdInDevToolsUI: options?.networkRequestIdInDevToolsUI,
63
- };
64
- }
65
- setIncludeConsoleData(value, options) {
66
- if (!value) {
67
- this.#consoleDataOptions = undefined;
68
- return;
69
- }
70
- this.#consoleDataOptions = {
71
- include: value,
72
- pagination: options?.pageSize || options?.pageIdx
73
- ? {
74
- pageSize: options.pageSize,
75
- pageIdx: options.pageIdx,
76
- }
77
- : undefined,
78
- types: options?.types,
79
- includePreservedMessages: options?.includePreservedMessages,
80
- };
81
- }
82
- attachNetworkRequest(reqid, options) {
83
- this.#attachedNetworkRequestId = reqid;
84
- this.#attachedNetworkRequestOptions = options;
85
- }
86
- attachConsoleMessage(msgid) {
87
- this.#attachedConsoleMessageId = msgid;
88
- }
89
- attachTraceSummary(result) {
90
- this.#attachedTraceSummary = result;
91
- }
92
- attachTraceInsight(trace, insightSetId, insightName) {
93
- this.#attachedTraceInsight = {
94
- trace,
95
- insightSetId,
96
- insightName,
97
- };
98
- }
99
- get includePages() {
100
- return this.#includePages;
101
- }
102
- get attachedTraceSummary() {
103
- return this.#attachedTraceSummary;
104
- }
105
- get attachedTracedInsight() {
106
- return this.#attachedTraceInsight;
107
- }
108
- get includeNetworkRequests() {
109
- return this.#networkRequestsOptions?.include ?? false;
110
- }
111
- get includeConsoleData() {
112
- return this.#consoleDataOptions?.include ?? false;
113
- }
114
- get attachedNetworkRequestId() {
115
- return this.#attachedNetworkRequestId;
116
- }
117
- get networkRequestsPageIdx() {
118
- return this.#networkRequestsOptions?.pagination?.pageIdx;
119
- }
120
- get consoleMessagesPageIdx() {
121
- return this.#consoleDataOptions?.pagination?.pageIdx;
122
- }
123
- get consoleMessagesTypes() {
124
- return this.#consoleDataOptions?.types;
125
- }
126
- appendResponseLine(value) {
127
- this.#textResponseLines.push(value);
128
- }
129
- attachImage(value) {
130
- this.#images.push(value);
131
- }
132
- get responseLines() {
133
- return this.#textResponseLines;
134
- }
135
- get images() {
136
- return this.#images;
137
- }
138
- get snapshotParams() {
139
- return this.#snapshotParams;
140
- }
141
- async handle(toolName, context) {
142
- if (this.#includePages) {
143
- await context.createPagesSnapshot();
144
- }
145
- let snapshot;
146
- if (this.#snapshotParams) {
147
- await context.createTextSnapshot(this.#snapshotParams.verbose, this.#devToolsData);
148
- const textSnapshot = context.getTextSnapshot();
149
- if (textSnapshot) {
150
- const formatter = new SnapshotFormatter(textSnapshot);
151
- if (this.#snapshotParams.filePath) {
152
- await context.saveFile(new TextEncoder().encode(formatter.toString()), this.#snapshotParams.filePath);
153
- snapshot = this.#snapshotParams.filePath;
154
- }
155
- else {
156
- snapshot = formatter;
157
- }
158
- }
159
- }
160
- let detailedNetworkRequest;
161
- if (this.#attachedNetworkRequestId) {
162
- const request = context.getNetworkRequestById(this.#attachedNetworkRequestId);
163
- const formatter = await NetworkFormatter.from(request, {
164
- requestId: this.#attachedNetworkRequestId,
165
- requestIdResolver: req => context.getNetworkRequestStableId(req),
166
- fetchData: true,
167
- requestFilePath: this.#attachedNetworkRequestOptions?.requestFilePath,
168
- responseFilePath: this.#attachedNetworkRequestOptions?.responseFilePath,
169
- saveFile: (data, filename) => context.saveFile(data, filename),
170
- });
171
- detailedNetworkRequest = formatter;
172
- }
173
- let detailedConsoleMessage;
174
- if (this.#attachedConsoleMessageId) {
175
- const message = context.getConsoleMessageById(this.#attachedConsoleMessageId);
176
- const consoleMessageStableId = this.#attachedConsoleMessageId;
177
- if ('args' in message || message instanceof UncaughtError) {
178
- const consoleMessage = message;
179
- const devTools = context.getDevToolsUniverse();
180
- detailedConsoleMessage = await ConsoleFormatter.from(consoleMessage, {
181
- id: consoleMessageStableId,
182
- fetchDetailedData: true,
183
- devTools: devTools ?? undefined,
184
- });
185
- }
186
- else if (message instanceof DevTools.AggregatedIssue) {
187
- const formatter = new IssueFormatter(message, {
188
- id: consoleMessageStableId,
189
- requestIdResolver: context.resolveCdpRequestId.bind(context),
190
- elementIdResolver: context.resolveCdpElementId.bind(context),
191
- });
192
- if (!formatter.isValid()) {
193
- throw new Error("Can't provide detals for the msgid " + consoleMessageStableId);
194
- }
195
- detailedConsoleMessage = formatter;
196
- }
197
- }
198
- let extensions;
199
- if (this.#listExtensions) {
200
- extensions = context.listExtensions();
201
- }
202
- let consoleMessages;
203
- if (this.#consoleDataOptions?.include) {
204
- let messages = context.getConsoleData(this.#consoleDataOptions.includePreservedMessages);
205
- if (this.#consoleDataOptions.types?.length) {
206
- const normalizedTypes = new Set(this.#consoleDataOptions.types);
207
- messages = messages.filter(message => {
208
- if ('type' in message) {
209
- return normalizedTypes.has(message.type());
210
- }
211
- if (message instanceof DevTools.AggregatedIssue) {
212
- return normalizedTypes.has('issue');
213
- }
214
- return normalizedTypes.has('error');
215
- });
216
- }
217
- consoleMessages = (await Promise.all(messages.map(async (item) => {
218
- const consoleMessageStableId = context.getConsoleMessageStableId(item);
219
- if ('args' in item || item instanceof UncaughtError) {
220
- const consoleMessage = item;
221
- const devTools = context.getDevToolsUniverse();
222
- return await ConsoleFormatter.from(consoleMessage, {
223
- id: consoleMessageStableId,
224
- fetchDetailedData: false,
225
- devTools: devTools ?? undefined,
226
- });
227
- }
228
- if (item instanceof DevTools.AggregatedIssue) {
229
- const formatter = new IssueFormatter(item, {
230
- id: consoleMessageStableId,
231
- });
232
- if (!formatter.isValid()) {
233
- return null;
234
- }
235
- return formatter;
236
- }
237
- return null;
238
- }))).filter(item => item !== null);
239
- }
240
- let networkRequests;
241
- if (this.#networkRequestsOptions?.include) {
242
- let requests = context.getNetworkRequests(this.#networkRequestsOptions?.includePreservedRequests);
243
- // Apply resource type filtering if specified
244
- if (this.#networkRequestsOptions.resourceTypes?.length) {
245
- const normalizedTypes = new Set(this.#networkRequestsOptions.resourceTypes);
246
- requests = requests.filter(request => {
247
- const type = request.resourceType();
248
- return normalizedTypes.has(type);
249
- });
250
- }
251
- if (requests.length) {
252
- networkRequests = await Promise.all(requests.map(request => NetworkFormatter.from(request, {
253
- requestId: context.getNetworkRequestStableId(request),
254
- selectedInDevToolsUI: context.getNetworkRequestStableId(request) ===
255
- this.#networkRequestsOptions?.networkRequestIdInDevToolsUI,
256
- fetchData: false,
257
- saveFile: (data, filename) => context.saveFile(data, filename),
258
- })));
259
- }
260
- }
261
- return this.format(toolName, context, {
262
- detailedConsoleMessage,
263
- consoleMessages,
264
- snapshot,
265
- detailedNetworkRequest,
266
- networkRequests,
267
- traceInsight: this.#attachedTraceInsight,
268
- traceSummary: this.#attachedTraceSummary,
269
- extensions,
270
- });
271
- }
272
- format(toolName, context, data) {
273
- const structuredContent = {};
274
- const response = [`# ${toolName} response`];
275
- if (this.#textResponseLines.length) {
276
- structuredContent.message = this.#textResponseLines.join('\n');
277
- response.push(...this.#textResponseLines);
278
- }
279
- const networkConditions = context.getNetworkConditions();
280
- if (networkConditions) {
281
- response.push(`## Network emulation`);
282
- response.push(`Emulating: ${networkConditions}`);
283
- response.push(`Default navigation timeout set to ${context.getNavigationTimeout()} ms`);
284
- structuredContent.networkConditions = networkConditions;
285
- structuredContent.navigationTimeout = context.getNavigationTimeout();
286
- }
287
- const viewport = context.getViewport();
288
- if (viewport) {
289
- response.push(`## Viewport emulation`);
290
- response.push(`Emulating viewport: ${JSON.stringify(viewport)}`);
291
- structuredContent.viewport = viewport;
292
- }
293
- const userAgent = context.getUserAgent();
294
- if (userAgent) {
295
- response.push(`## UserAgent emulation`);
296
- response.push(`Emulating userAgent: ${userAgent}`);
297
- structuredContent.userAgent = userAgent;
298
- }
299
- const cpuThrottlingRate = context.getCpuThrottlingRate();
300
- if (cpuThrottlingRate > 1) {
301
- response.push(`## CPU emulation`);
302
- response.push(`Emulating: ${cpuThrottlingRate}x slowdown`);
303
- structuredContent.cpuThrottlingRate = cpuThrottlingRate;
304
- }
305
- const colorScheme = context.getColorScheme();
306
- if (colorScheme) {
307
- response.push(`## Color Scheme emulation`);
308
- response.push(`Emulating: ${colorScheme}`);
309
- structuredContent.colorScheme = colorScheme;
310
- }
311
- const dialog = context.getDialog();
312
- if (dialog) {
313
- const defaultValueIfNeeded = dialog.type() === 'prompt'
314
- ? ` (default value: "${dialog.defaultValue()}")`
315
- : '';
316
- response.push(`# Open dialog
317
- ${dialog.type()}: ${dialog.message()}${defaultValueIfNeeded}.
318
- Call ${handleDialog.name} to handle it before continuing.`);
319
- structuredContent.dialog = {
320
- type: dialog.type(),
321
- message: dialog.message(),
322
- defaultValue: dialog.defaultValue(),
323
- };
324
- }
325
- if (this.#includePages) {
326
- const parts = [`## Pages`];
327
- for (const page of context.getPages()) {
328
- parts.push(`${context.getPageId(page)}: ${page.url()}${context.isPageSelected(page) ? ' [selected]' : ''}`);
329
- }
330
- response.push(...parts);
331
- structuredContent.pages = context.getPages().map(page => {
332
- return {
333
- id: context.getPageId(page),
334
- url: page.url(),
335
- selected: context.isPageSelected(page),
336
- };
337
- });
338
- }
339
- if (this.#tabId) {
340
- structuredContent.tabId = this.#tabId;
341
- }
342
- if (data.traceSummary) {
343
- const summary = getTraceSummary(data.traceSummary);
344
- response.push(summary);
345
- structuredContent.traceSummary = summary;
346
- structuredContent.traceInsights = [];
347
- for (const insightSet of data.traceSummary.insights?.values() ?? []) {
348
- for (const [insightName, model] of Object.entries(insightSet.model)) {
349
- structuredContent.traceInsights.push({
350
- insightName,
351
- insightKey: model.insightKey,
352
- });
353
- }
354
- }
355
- }
356
- if (data.traceInsight) {
357
- const insightOutput = getInsightOutput(data.traceInsight.trace, data.traceInsight.insightSetId, data.traceInsight.insightName);
358
- if ('error' in insightOutput) {
359
- response.push(insightOutput.error);
360
- }
361
- else {
362
- response.push(insightOutput.output);
363
- }
364
- }
365
- if (data.snapshot) {
366
- if (typeof data.snapshot === 'string') {
367
- response.push(`Saved snapshot to ${data.snapshot}.`);
368
- structuredContent.snapshotFilePath = data.snapshot;
369
- }
370
- else {
371
- response.push('## Latest page snapshot');
372
- response.push(data.snapshot.toString());
373
- structuredContent.snapshot = data.snapshot.toJSON();
374
- }
375
- }
376
- if (data.detailedNetworkRequest) {
377
- response.push(data.detailedNetworkRequest.toStringDetailed());
378
- structuredContent.networkRequest =
379
- data.detailedNetworkRequest.toJSONDetailed();
380
- }
381
- if (data.detailedConsoleMessage) {
382
- response.push(data.detailedConsoleMessage.toStringDetailed());
383
- structuredContent.consoleMessage =
384
- data.detailedConsoleMessage.toJSONDetailed();
385
- }
386
- if (data.extensions) {
387
- structuredContent.extensions = data.extensions;
388
- response.push('## Extensions');
389
- if (data.extensions.length === 0) {
390
- response.push('No extensions installed.');
391
- }
392
- else {
393
- const extensionsMessage = data.extensions
394
- .map(extension => {
395
- return `id=${extension.id} "${extension.name}" v${extension.version} ${extension.isEnabled ? 'Enabled' : 'Disabled'}`;
396
- })
397
- .join('\n');
398
- response.push(extensionsMessage);
399
- }
400
- }
401
- if (this.#networkRequestsOptions?.include) {
402
- let requests = context.getNetworkRequests(this.#networkRequestsOptions?.includePreservedRequests);
403
- // Apply resource type filtering if specified
404
- if (this.#networkRequestsOptions.resourceTypes?.length) {
405
- const normalizedTypes = new Set(this.#networkRequestsOptions.resourceTypes);
406
- requests = requests.filter(request => {
407
- const type = request.resourceType();
408
- return normalizedTypes.has(type);
409
- });
410
- }
411
- response.push('## Network requests');
412
- if (requests.length) {
413
- const paginationData = this.#dataWithPagination(requests, this.#networkRequestsOptions.pagination);
414
- structuredContent.pagination = paginationData.pagination;
415
- response.push(...paginationData.info);
416
- if (data.networkRequests) {
417
- structuredContent.networkRequests = [];
418
- for (const formatter of data.networkRequests) {
419
- response.push(formatter.toString());
420
- structuredContent.networkRequests.push(formatter.toJSON());
421
- }
422
- }
423
- }
424
- else {
425
- response.push('No requests found.');
426
- }
427
- }
428
- if (this.#consoleDataOptions?.include) {
429
- const messages = data.consoleMessages ?? [];
430
- response.push('## Console messages');
431
- if (messages.length) {
432
- const paginationData = this.#dataWithPagination(messages, this.#consoleDataOptions.pagination);
433
- structuredContent.pagination = paginationData.pagination;
434
- response.push(...paginationData.info);
435
- response.push(...paginationData.items.map(message => message.toString()));
436
- structuredContent.consoleMessages = paginationData.items.map(message => message.toJSON());
437
- }
438
- else {
439
- response.push('<no console messages found>');
440
- }
441
- }
442
- const text = {
443
- type: 'text',
444
- text: response.join('\n'),
445
- };
446
- const images = this.#images.map(imageData => {
447
- return {
448
- type: 'image',
449
- ...imageData,
450
- };
451
- });
452
- return {
453
- content: [text, ...images],
454
- structuredContent,
455
- };
456
- }
457
- #dataWithPagination(data, pagination) {
458
- const response = [];
459
- const paginationResult = paginate(data, pagination);
460
- if (paginationResult.invalidPage) {
461
- response.push('Invalid page number provided. Showing first page.');
462
- }
463
- const { startIndex, endIndex, currentPage, totalPages } = paginationResult;
464
- response.push(`Showing ${startIndex + 1}-${endIndex} of ${data.length} (Page ${currentPage + 1} of ${totalPages}).`);
465
- if (pagination) {
466
- if (paginationResult.hasNextPage) {
467
- response.push(`Next page: ${currentPage + 1}`);
468
- }
469
- if (paginationResult.hasPreviousPage) {
470
- response.push(`Previous page: ${currentPage - 1}`);
471
- }
472
- }
473
- return {
474
- info: response,
475
- items: paginationResult.items,
476
- pagination: {
477
- currentPage: paginationResult.currentPage,
478
- totalPages: paginationResult.totalPages,
479
- hasNextPage: paginationResult.hasNextPage,
480
- hasPreviousPage: paginationResult.hasPreviousPage,
481
- startIndex: paginationResult.startIndex,
482
- endIndex: paginationResult.endIndex,
483
- invalidPage: paginationResult.invalidPage,
484
- },
485
- };
486
- }
487
- resetResponseLineForTesting() {
488
- this.#textResponseLines = [];
489
- }
490
- }
@@ -1,37 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google Inc.
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export class Mutex {
7
- static Guard = class Guard {
8
- #mutex;
9
- constructor(mutex) {
10
- this.#mutex = mutex;
11
- }
12
- dispose() {
13
- return this.#mutex.release();
14
- }
15
- };
16
- #locked = false;
17
- #acquirers = [];
18
- // This is FIFO.
19
- async acquire() {
20
- if (!this.#locked) {
21
- this.#locked = true;
22
- return new Mutex.Guard(this);
23
- }
24
- const { resolve, promise } = Promise.withResolvers();
25
- this.#acquirers.push(resolve);
26
- await promise;
27
- return new Mutex.Guard(this);
28
- }
29
- release() {
30
- const resolve = this.#acquirers.shift();
31
- if (!resolve) {
32
- this.#locked = false;
33
- return;
34
- }
35
- resolve();
36
- }
37
- }