chrome-ai-bridge 1.0.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 (443) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +252 -0
  3. package/build/node_modules/chrome-devtools-frontend/LICENSE +27 -0
  4. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/App.js +4 -0
  5. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/AppProvider.js +17 -0
  6. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Base64.js +43 -0
  7. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/CharacterIdMap.js +27 -0
  8. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Color.js +2033 -0
  9. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ColorConverter.js +332 -0
  10. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ColorUtils.js +221 -0
  11. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Console.js +79 -0
  12. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Debouncer.js +14 -0
  13. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/EventTarget.js +14 -0
  14. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Gzip.js +66 -0
  15. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/JavaScriptMetaData.js +4 -0
  16. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Lazy.js +29 -0
  17. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/MapWithDefault.js +22 -0
  18. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Mutex.js +49 -0
  19. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Object.js +86 -0
  20. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ParsedURL.js +449 -0
  21. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Progress.js +144 -0
  22. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ResolverBase.js +69 -0
  23. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ResourceType.js +495 -0
  24. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ReturnToPanel.js +15 -0
  25. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Revealer.js +164 -0
  26. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Runnable.js +24 -0
  27. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SegmentedRange.js +78 -0
  28. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SettingRegistration.js +164 -0
  29. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Settings.js +1263 -0
  30. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SimpleHistoryManager.js +97 -0
  31. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/StringOutputStream.js +14 -0
  32. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/TextDictionary.js +40 -0
  33. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Throttler.js +71 -0
  34. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Trie.js +127 -0
  35. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/common.js +41 -0
  36. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/AidaClient.js +434 -0
  37. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/DispatchHttpRequestClient.js +66 -0
  38. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/GdpClient.js +202 -0
  39. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHost.js +92 -0
  40. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostAPI.js +69 -0
  41. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostStub.js +430 -0
  42. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/Platform.js +61 -0
  43. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/ResourceLoader.js +220 -0
  44. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/UserMetrics.js +968 -0
  45. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/host.js +13 -0
  46. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/i18n.js +60 -0
  47. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/ArrayUtilities.js +199 -0
  48. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Brand.js +4 -0
  49. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Constructor.js +4 -0
  50. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/DateUtilities.js +13 -0
  51. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/DevToolsPath.js +27 -0
  52. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/HostRuntime.js +19 -0
  53. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/KeyboardUtilities.js +21 -0
  54. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/MapUtilities.js +79 -0
  55. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/MimeType.js +143 -0
  56. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/NumberUtilities.js +72 -0
  57. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/StringUtilities.js +538 -0
  58. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Timing.js +9 -0
  59. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/TypedArrayUtilities.js +157 -0
  60. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/TypescriptUtilities.js +24 -0
  61. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/UIString.js +4 -0
  62. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/UserVisibleError.js +22 -0
  63. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/api/HostRuntime.js +4 -0
  64. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/api/api.js +5 -0
  65. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/browser/HostRuntime.js +63 -0
  66. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/browser/browser.js +5 -0
  67. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/node/HostRuntime.js +72 -0
  68. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/node/node.js +5 -0
  69. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/platform.js +26 -0
  70. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/CDPConnection.js +17 -0
  71. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/ConnectionTransport.js +12 -0
  72. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/DevToolsCDPConnection.js +138 -0
  73. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/InspectorBackend.js +539 -0
  74. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/protocol_client.js +8 -0
  75. package/build/node_modules/chrome-devtools-frontend/front_end/core/root/DevToolsContext.js +54 -0
  76. package/build/node_modules/chrome-devtools-frontend/front_end/core/root/Runtime.js +4 -0
  77. package/build/node_modules/chrome-devtools-frontend/front_end/core/root/root.js +6 -0
  78. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AccessibilityModel.js +281 -0
  79. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AnimationModel.js +845 -0
  80. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AutofillModel.js +155 -0
  81. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CPUProfilerModel.js +99 -0
  82. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CPUThrottlingManager.js +217 -0
  83. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSContainerQuery.js +98 -0
  84. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSFontFace.js +31 -0
  85. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSLayer.js +22 -0
  86. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMatchedStyles.js +1318 -0
  87. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMedia.js +100 -0
  88. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMetadata.js +1532 -0
  89. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSModel.js +908 -0
  90. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSProperty.js +312 -0
  91. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParser.js +574 -0
  92. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParserMatchers.js +1346 -0
  93. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSQuery.js +53 -0
  94. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSRule.js +403 -0
  95. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSScope.js +22 -0
  96. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStartingStyle.js +21 -0
  97. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStyleDeclaration.js +275 -0
  98. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStyleSheetHeader.js +166 -0
  99. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSSupports.js +24 -0
  100. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CategorizedBreakpoint.js +29 -0
  101. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ChildTargetManager.js +236 -0
  102. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CompilerSourceMappingContentProvider.js +47 -0
  103. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Connections.js +205 -0
  104. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ConsoleModel.js +629 -0
  105. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ConsoleModelTypes.js +14 -0
  106. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Cookie.js +241 -0
  107. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CookieModel.js +198 -0
  108. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CookieParser.js +163 -0
  109. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DOMDebuggerModel.js +597 -0
  110. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DOMModel.js +1635 -0
  111. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DebuggerModel.js +1216 -0
  112. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EmulationModel.js +527 -0
  113. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EnhancedTracesParser.js +364 -0
  114. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EventBreakpointsModel.js +127 -0
  115. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/FrameAssociated.js +4 -0
  116. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/FrameManager.js +199 -0
  117. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/HeapProfilerModel.js +130 -0
  118. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/HttpReasonPhraseStrings.js +75 -0
  119. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IOModel.js +80 -0
  120. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IsolateManager.js +208 -0
  121. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IssuesModel.js +41 -0
  122. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/LayerTreeBase.js +95 -0
  123. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/LogModel.js +34 -0
  124. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkManager.js +2223 -0
  125. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkRequest.js +1654 -0
  126. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayColorGenerator.js +48 -0
  127. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayModel.js +765 -0
  128. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayPersistentHighlighter.js +384 -0
  129. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PageLoad.js +25 -0
  130. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PageResourceLoader.js +310 -0
  131. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PaintProfiler.js +67 -0
  132. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PerformanceMetricsModel.js +62 -0
  133. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PreloadingModel.js +608 -0
  134. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RehydratingConnection.js +413 -0
  135. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RehydratingObject.js +4 -0
  136. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RemoteObject.js +908 -0
  137. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Resource.js +163 -0
  138. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ResourceTreeModel.js +923 -0
  139. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RuntimeModel.js +535 -0
  140. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SDKModel.js +45 -0
  141. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ScopeTreeCache.js +36 -0
  142. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ScreenCaptureModel.js +176 -0
  143. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Script.js +420 -0
  144. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SecurityOriginManager.js +54 -0
  145. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerSentEvents.js +67 -0
  146. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerSentEventsProtocol.js +113 -0
  147. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerTiming.js +216 -0
  148. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServiceWorkerCacheModel.js +271 -0
  149. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServiceWorkerManager.js +511 -0
  150. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMap.js +691 -0
  151. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapCache.js +57 -0
  152. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapFunctionRanges.js +132 -0
  153. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapManager.js +201 -0
  154. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopeChainEntry.js +156 -0
  155. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopesInfo.js +508 -0
  156. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/StorageBucketsModel.js +143 -0
  157. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/StorageKeyManager.js +53 -0
  158. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Target.js +257 -0
  159. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TargetManager.js +395 -0
  160. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TraceObject.js +55 -0
  161. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/WebAuthnModel.js +66 -0
  162. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk-meta.js +1166 -0
  163. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk.js +91 -0
  164. package/build/node_modules/chrome-devtools-frontend/front_end/generated/ARIAProperties.js +2640 -0
  165. package/build/node_modules/chrome-devtools-frontend/front_end/generated/Deprecation.js +384 -0
  166. package/build/node_modules/chrome-devtools-frontend/front_end/generated/InspectorBackendCommands.js +1532 -0
  167. package/build/node_modules/chrome-devtools-frontend/front_end/generated/SupportedCSSProperties.js +7602 -0
  168. package/build/node_modules/chrome-devtools-frontend/front_end/generated/protocol.js +4 -0
  169. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.js +289 -0
  170. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.js +995 -0
  171. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.js +664 -0
  172. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/UnitFormatters.js +139 -0
  173. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AICallTree.js +377 -0
  174. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AIContext.js +131 -0
  175. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AIQueries.js +149 -0
  176. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/CSSWorkspaceBinding.js +245 -0
  177. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/CompilerScriptMapping.js +486 -0
  178. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ContentProviderBasedProject.js +130 -0
  179. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DebuggerLanguagePlugins.js +992 -0
  180. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DebuggerWorkspaceBinding.js +592 -0
  181. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DefaultScriptMapping.js +112 -0
  182. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/FileUtils.js +186 -0
  183. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/LiveLocation.js +60 -0
  184. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/NetworkProject.js +107 -0
  185. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/PresentationConsoleMessageHelper.js +244 -0
  186. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceMapping.js +564 -0
  187. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceScriptMapping.js +437 -0
  188. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceUtils.js +87 -0
  189. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/SASSSourceMapping.js +182 -0
  190. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/StylesSourceMapping.js +268 -0
  191. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/TempFile.js +55 -0
  192. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/bindings.js +20 -0
  193. package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/CPUProfileDataModel.js +516 -0
  194. package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/ProfileTreeModel.js +89 -0
  195. package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/cpu_profile.js +6 -0
  196. package/build/node_modules/chrome-devtools-frontend/front_end/models/crux-manager/CrUXManager.js +285 -0
  197. package/build/node_modules/chrome-devtools-frontend/front_end/models/crux-manager/crux-manager.js +4 -0
  198. package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/DeviceModeModel.js +775 -0
  199. package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/EmulatedDevices.js +1706 -0
  200. package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/emulation.js +6 -0
  201. package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/FormatterWorkerPool.js +145 -0
  202. package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/ScriptFormatter.js +77 -0
  203. package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/formatter.js +6 -0
  204. package/build/node_modules/chrome-devtools-frontend/front_end/models/geometry/GeometryImpl.js +347 -0
  205. package/build/node_modules/chrome-devtools-frontend/front_end/models/geometry/geometry.js +4 -0
  206. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/LogManager.js +67 -0
  207. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/NetworkLog.js +494 -0
  208. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/RequestResolver.js +49 -0
  209. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/logs-meta.js +73 -0
  210. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/logs.js +7 -0
  211. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/Calculator.js +4 -0
  212. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/NetworkTimeCalculator.js +256 -0
  213. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/RequestTimeRanges.js +122 -0
  214. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/network_time_calculator.js +6 -0
  215. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/FunctionCodeResolver.js +192 -0
  216. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/NamesResolver.js +622 -0
  217. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/ScopeChainModel.js +59 -0
  218. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/source_map_scopes.js +7 -0
  219. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTrace.js +4 -0
  220. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTraceImpl.js +67 -0
  221. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTraceModel.js +97 -0
  222. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/Trie.js +121 -0
  223. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/stack_trace.js +5 -0
  224. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/stack_trace_impl.js +7 -0
  225. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/CodeMirrorUtils.js +32 -0
  226. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/ContentData.js +173 -0
  227. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/ContentProvider.js +30 -0
  228. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/StaticContentProvider.js +32 -0
  229. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/StreamingContentData.js +79 -0
  230. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/Text.js +69 -0
  231. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextCursor.js +35 -0
  232. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextRange.js +231 -0
  233. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextUtils.js +355 -0
  234. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/WasmDisassembly.js +68 -0
  235. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/text_utils.js +14 -0
  236. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/EntityMapper.js +122 -0
  237. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/EventsSerializer.js +81 -0
  238. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/LanternComputationData.js +371 -0
  239. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/ModelImpl.js +169 -0
  240. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Name.js +114 -0
  241. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Processor.js +555 -0
  242. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Styles.js +815 -0
  243. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/FilmStrip.js +44 -0
  244. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/MainThreadActivity.js +76 -0
  245. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/ScriptDuplication.js +162 -0
  246. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/StackTraceForEvent.js +191 -0
  247. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/ThirdParties.js +118 -0
  248. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/TraceFilter.js +50 -0
  249. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/TraceTree.js +599 -0
  250. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/extras.js +10 -0
  251. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AnimationFramesHandler.js +109 -0
  252. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AnimationHandler.js +26 -0
  253. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AsyncJSCallsHandler.js +187 -0
  254. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AuctionWorkletsHandler.js +162 -0
  255. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/DOMStatsHandler.js +21 -0
  256. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ExtensionTraceDataHandler.js +263 -0
  257. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/FlowsHandler.js +148 -0
  258. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/FramesHandler.js +485 -0
  259. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/GPUHandler.js +35 -0
  260. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ImagePaintingHandler.js +147 -0
  261. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/InitiatorsHandler.js +180 -0
  262. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/InvalidationsHandler.js +126 -0
  263. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LargestImagePaintHandler.js +85 -0
  264. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LargestTextPaintHandler.js +27 -0
  265. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LayerTreeHandler.js +103 -0
  266. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LayoutShiftsHandler.js +449 -0
  267. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/MemoryHandler.js +21 -0
  268. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/MetaHandler.js +404 -0
  269. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ModelHandlers.js +33 -0
  270. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/NetworkRequestsHandler.js +566 -0
  271. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/PageFramesHandler.js +42 -0
  272. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/PageLoadMetricsHandler.js +349 -0
  273. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/RendererHandler.js +346 -0
  274. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/SamplesHandler.js +260 -0
  275. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ScreenshotsHandler.js +97 -0
  276. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ScriptsHandler.js +276 -0
  277. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/SelectorStatsHandler.js +71 -0
  278. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/Threads.js +101 -0
  279. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/UserInteractionsHandler.js +317 -0
  280. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/UserTimingsHandler.js +183 -0
  281. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/WarningsHandler.js +134 -0
  282. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/WorkersHandler.js +33 -0
  283. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/handlers.js +7 -0
  284. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/helpers.js +163 -0
  285. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/types.js +1 -0
  286. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Extensions.js +41 -0
  287. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Network.js +102 -0
  288. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/SamplesIntegrator.js +495 -0
  289. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/SyntheticEvents.js +74 -0
  290. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Timing.js +186 -0
  291. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Trace.js +820 -0
  292. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/TreeHelpers.js +254 -0
  293. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/helpers.js +10 -0
  294. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/CLSCulprits.js +489 -0
  295. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Cache.js +209 -0
  296. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Common.js +340 -0
  297. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DOMSize.js +181 -0
  298. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DocumentLatency.js +258 -0
  299. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DuplicatedJavaScript.js +90 -0
  300. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/FontDisplay.js +82 -0
  301. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ForcedReflow.js +161 -0
  302. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/INPBreakdown.js +129 -0
  303. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ImageDelivery.js +263 -0
  304. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPBreakdown.js +199 -0
  305. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPDiscovery.js +183 -0
  306. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LegacyJavaScript.js +90 -0
  307. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Models.js +21 -0
  308. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ModernHTTP.js +200 -0
  309. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/NetworkDependencyTree.js +545 -0
  310. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/RenderBlocking.js +192 -0
  311. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/SlowCSSSelector.js +136 -0
  312. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Statistics.js +92 -0
  313. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ThirdParties.js +98 -0
  314. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Viewport.js +102 -0
  315. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/insights.js +9 -0
  316. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/types.js +18 -0
  317. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/LanternError.js +6 -0
  318. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/NetworkAnalyzer.js +488 -0
  319. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/core.js +5 -0
  320. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/BaseNode.js +276 -0
  321. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/CPUNode.js +63 -0
  322. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/NetworkNode.js +82 -0
  323. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/PageDependencyGraph.js +551 -0
  324. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/graph.js +7 -0
  325. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/lantern.js +9 -0
  326. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/FirstContentfulPaint.js +136 -0
  327. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/Interactive.js +67 -0
  328. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/LargestContentfulPaint.js +68 -0
  329. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/MaxPotentialFID.js +48 -0
  330. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/Metric.js +68 -0
  331. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/SpeedIndex.js +101 -0
  332. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/TBTUtils.js +64 -0
  333. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/TotalBlockingTime.js +78 -0
  334. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/metrics.js +11 -0
  335. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/ConnectionPool.js +115 -0
  336. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/Constants.js +42 -0
  337. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/DNSCache.js +47 -0
  338. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/SimulationTimingMap.js +134 -0
  339. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/Simulator.js +450 -0
  340. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/TCPConnection.js +154 -0
  341. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/simulation.js +9 -0
  342. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/types/Lantern.js +24 -0
  343. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/types/types.js +4 -0
  344. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/trace.js +17 -0
  345. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Configuration.js +18 -0
  346. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Extensions.js +37 -0
  347. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/File.js +57 -0
  348. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Overlays.js +4 -0
  349. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Timing.js +15 -0
  350. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/TraceEvents.js +580 -0
  351. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/types.js +9 -0
  352. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace_source_maps_resolver/SourceMapsResolver.js +224 -0
  353. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace_source_maps_resolver/trace_source_maps_resolver.js +4 -0
  354. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/FileManager.js +64 -0
  355. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/IgnoreListManager.js +504 -0
  356. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/SearchConfig.js +113 -0
  357. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/UISourceCode.js +601 -0
  358. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/WorkspaceImpl.js +201 -0
  359. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/workspace-meta.js +34 -0
  360. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/workspace.js +9 -0
  361. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/codemirror.next/codemirror.next.js +1 -0
  362. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/LICENSE +202 -0
  363. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/legacy-javascript.js +2 -0
  364. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/lib/legacy-javascript.js +940 -0
  365. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/LICENSE +26 -0
  366. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.js +196 -0
  367. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.js +226 -0
  368. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/codec.js +4 -0
  369. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js +394 -0
  370. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.js +24 -0
  371. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js +283 -0
  372. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/mod.js +7 -0
  373. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/util.js +9 -0
  374. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/vlq.js +84 -0
  375. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/source-map-scopes-codec.js +4 -0
  376. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/LICENSE +20 -0
  377. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/lib/nostats-subset.js +146 -0
  378. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/httparchive-nostats-subset.js +2 -0
  379. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/httparchive-subset.js +2 -0
  380. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.js +118 -0
  381. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.test.js +40 -0
  382. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/entities.test.js +26 -0
  383. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/index.js +4 -0
  384. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/index.test.js +215 -0
  385. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/httparchive-nostats.js +4 -0
  386. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/httparchive.js +4 -0
  387. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/nostats.js +4 -0
  388. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/nostats-subset.js +2 -0
  389. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/third-party-web.js +2 -0
  390. package/build/src/McpContext.js +400 -0
  391. package/build/src/McpResponse.js +237 -0
  392. package/build/src/Mutex.js +40 -0
  393. package/build/src/PageCollector.js +68 -0
  394. package/build/src/WaitForHelper.js +134 -0
  395. package/build/src/browser-connection-manager.js +373 -0
  396. package/build/src/browser.js +719 -0
  397. package/build/src/cli.js +120 -0
  398. package/build/src/client-detector.js +93 -0
  399. package/build/src/config.js +38 -0
  400. package/build/src/formatters/consoleFormatter.js +73 -0
  401. package/build/src/formatters/extensionsPageFormatter.js +184 -0
  402. package/build/src/formatters/networkFormatter.js +34 -0
  403. package/build/src/formatters/snapshotFormatter.js +80 -0
  404. package/build/src/graceful.js +125 -0
  405. package/build/src/index.js +13 -0
  406. package/build/src/logger.js +27 -0
  407. package/build/src/login-helper.js +431 -0
  408. package/build/src/main.js +268 -0
  409. package/build/src/plugin-api.js +189 -0
  410. package/build/src/profile-migration.js +82 -0
  411. package/build/src/profile-resolver.js +555 -0
  412. package/build/src/project-detector.js +71 -0
  413. package/build/src/project-root-state.js +18 -0
  414. package/build/src/roots-manager.js +253 -0
  415. package/build/src/selectors/chatgpt.json +61 -0
  416. package/build/src/selectors/gemini.json +24 -0
  417. package/build/src/selectors/loader.js +128 -0
  418. package/build/src/stable-identity.js +193 -0
  419. package/build/src/startup-check.js +147 -0
  420. package/build/src/system-profile.js +181 -0
  421. package/build/src/tools/ToolDefinition.js +9 -0
  422. package/build/src/tools/bookmarks.js +170 -0
  423. package/build/src/tools/categories.js +15 -0
  424. package/build/src/tools/chatgpt-web.js +507 -0
  425. package/build/src/tools/console.js +19 -0
  426. package/build/src/tools/core-tools.js +65 -0
  427. package/build/src/tools/diagnose-ui.js +328 -0
  428. package/build/src/tools/emulation.js +67 -0
  429. package/build/src/tools/extensions.js +185 -0
  430. package/build/src/tools/gemini-web.js +491 -0
  431. package/build/src/tools/iframe-popup-tools.js +204 -0
  432. package/build/src/tools/input.js +185 -0
  433. package/build/src/tools/network.js +68 -0
  434. package/build/src/tools/optional-tools.js +69 -0
  435. package/build/src/tools/pages.js +172 -0
  436. package/build/src/tools/performance.js +127 -0
  437. package/build/src/tools/screenshot.js +48 -0
  438. package/build/src/tools/script.js +39 -0
  439. package/build/src/tools/snapshot.js +45 -0
  440. package/build/src/trace-processing/parse.js +93 -0
  441. package/build/src/utils/pagination.js +49 -0
  442. package/package.json +90 -0
  443. package/scripts/cli.mjs +49 -0
@@ -0,0 +1,125 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Graceful Shutdown Module
8
+ *
9
+ * Ensures clean shutdown of MCP server:
10
+ * - Closes Puppeteer browser gracefully
11
+ * - Kills orphaned Chrome processes
12
+ * - Handles SIGTERM, SIGINT, disconnect, uncaught exceptions
13
+ */
14
+ import fs from 'node:fs/promises';
15
+ import process from 'node:process';
16
+ /**
17
+ * Setup graceful shutdown handlers
18
+ */
19
+ export function setupGraceful(options) {
20
+ const { getBrowser, onBeforeExit, pidFile = process.env.MCP_BROWSER_PID_FILE, closeTimeoutMs = 3000, } = options;
21
+ let isShuttingDown = false;
22
+ /**
23
+ * Kill Chrome process using PID file
24
+ */
25
+ async function killFromPidFile() {
26
+ if (!pidFile)
27
+ return;
28
+ try {
29
+ const txt = await fs.readFile(pidFile, 'utf8').catch(() => '');
30
+ const pid = Number(txt.trim());
31
+ if (pid > 0) {
32
+ try {
33
+ // Check if process exists
34
+ process.kill(pid, 0);
35
+ // Process exists, kill it
36
+ process.kill(pid, 'SIGKILL');
37
+ console.error(`[graceful] Killed Chrome process: ${pid}`);
38
+ }
39
+ catch (err) {
40
+ // Process doesn't exist (already dead)
41
+ console.error(`[graceful] Chrome process ${pid} already dead`);
42
+ }
43
+ }
44
+ await fs.rm(pidFile, { force: true });
45
+ }
46
+ catch (err) {
47
+ console.error(`[graceful] Error killing Chrome from PID file:`, err);
48
+ }
49
+ }
50
+ /**
51
+ * Graceful exit handler
52
+ */
53
+ async function gracefulExit(signal) {
54
+ if (isShuttingDown) {
55
+ console.error(`[graceful] Already shutting down, ignoring ${signal}`);
56
+ return;
57
+ }
58
+ isShuttingDown = true;
59
+ console.error(`[graceful] Shutting down... (signal: ${signal || 'unknown'})`);
60
+ try {
61
+ // Step 1: onBeforeExit callback
62
+ if (onBeforeExit) {
63
+ try {
64
+ await onBeforeExit();
65
+ }
66
+ catch (err) {
67
+ console.error(`[graceful] onBeforeExit error:`, err);
68
+ }
69
+ }
70
+ // Step 2: Close browser gracefully (with timeout)
71
+ const browser = getBrowser?.();
72
+ if (browser) {
73
+ try {
74
+ console.error(`[graceful] Closing browser...`);
75
+ await Promise.race([
76
+ Promise.resolve(browser.close?.()),
77
+ new Promise((_, reject) => setTimeout(() => reject(new Error('browser.close() timeout')), closeTimeoutMs)),
78
+ ]);
79
+ console.error(`[graceful] Browser closed successfully`);
80
+ }
81
+ catch (err) {
82
+ console.error(`[graceful] Browser close error:`, err);
83
+ // Continue to PID file cleanup
84
+ }
85
+ }
86
+ // Step 3: Kill orphaned Chrome (if browser.close() failed)
87
+ await killFromPidFile();
88
+ }
89
+ catch (err) {
90
+ console.error(`[graceful] Error during shutdown:`, err);
91
+ }
92
+ console.error(`[graceful] Shutdown complete`);
93
+ process.exit(0);
94
+ }
95
+ // Register signal handlers
96
+ process.on('SIGTERM', () => gracefulExit('SIGTERM'));
97
+ process.on('SIGINT', () => gracefulExit('SIGINT'));
98
+ process.on('disconnect', () => gracefulExit('disconnect')); // Parent died
99
+ process.on('uncaughtException', async (err) => {
100
+ console.error('[graceful] Uncaught exception:', err);
101
+ await gracefulExit('uncaughtException');
102
+ });
103
+ process.on('unhandledRejection', async (err) => {
104
+ console.error('[graceful] Unhandled rejection:', err);
105
+ await gracefulExit('unhandledRejection');
106
+ });
107
+ return {
108
+ /**
109
+ * Announce Chrome PID to wrapper via PID file
110
+ */
111
+ async announceBrowserPid(pid) {
112
+ if (!pidFile || !pid) {
113
+ console.error(`[graceful] Cannot announce browser PID: pidFile=${pidFile}, pid=${pid}`);
114
+ return;
115
+ }
116
+ try {
117
+ await fs.writeFile(pidFile, String(pid), 'utf8');
118
+ console.error(`[graceful] Announced browser PID ${pid} to ${pidFile}`);
119
+ }
120
+ catch (err) {
121
+ console.error(`[graceful] Failed to write PID file:`, err);
122
+ }
123
+ },
124
+ };
125
+ }
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import { version } from 'node:process';
8
+ const [major, minor] = version.substring(1).split('.').map(Number);
9
+ if (major < 22 || (major === 22 && minor < 12)) {
10
+ console.error(`ERROR: \`chrome-ai-bridge\` does not support Node ${process.version}. Please upgrade to Node 22.12.0 or newer.`);
11
+ process.exit(1);
12
+ }
13
+ await import('./main.js');
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import fs from 'node:fs';
7
+ import debug from 'debug';
8
+ const mcpDebugNamespace = 'mcp:log';
9
+ const namespacesToEnable = [
10
+ mcpDebugNamespace,
11
+ ...(process.env['DEBUG'] ? [process.env['DEBUG']] : []),
12
+ ];
13
+ export function saveLogsToFile(fileName) {
14
+ // Enable overrides everything so we need to add them
15
+ debug.enable(namespacesToEnable.join(','));
16
+ const logFile = fs.createWriteStream(fileName, { flags: 'a' });
17
+ debug.log = function (...chunks) {
18
+ logFile.write(`${chunks.join(' ')}\n`);
19
+ };
20
+ logFile.on('error', function (error) {
21
+ console.log(`Error when opening/writing to log file: ${error.message}`);
22
+ logFile.end();
23
+ process.exit(1);
24
+ });
25
+ return logFile;
26
+ }
27
+ export const logger = debug(mcpDebugNamespace);
@@ -0,0 +1,431 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Login status enum for state machine
8
+ * Based on ChatGPT/Gemini recommendations
9
+ */
10
+ export var LoginStatus;
11
+ (function (LoginStatus) {
12
+ LoginStatus["LOGGED_IN"] = "LOGGED_IN";
13
+ LoginStatus["NEEDS_LOGIN"] = "NEEDS_LOGIN";
14
+ LoginStatus["IN_PROGRESS"] = "IN_PROGRESS";
15
+ LoginStatus["BLOCKED"] = "BLOCKED";
16
+ })(LoginStatus || (LoginStatus = {}));
17
+ /**
18
+ * Multi-language ARIA label patterns for Gemini profile button detection
19
+ * Extended based on Gemini's recommendation to add PT/RU/AR
20
+ */
21
+ const GEMINI_PROFILE_PATTERNS = [
22
+ 'Google Account', // English
23
+ 'Google アカウント', // Japanese
24
+ 'Compte Google', // French
25
+ 'Google-Konto', // German
26
+ 'Cuenta de Google', // Spanish
27
+ 'Account Google', // Italian
28
+ '구글 계정', // Korean
29
+ '谷歌帐户', // Chinese Simplified
30
+ 'Google 帳戶', // Chinese Traditional
31
+ 'Conta do Google', // Portuguese (Gemini recommendation)
32
+ 'Аккаунт Google', // Russian (Gemini recommendation)
33
+ 'حساب Google', // Arabic (Gemini recommendation)
34
+ ];
35
+ /**
36
+ * Probe ChatGPT session via API endpoint (most reliable method)
37
+ * Based on ChatGPT's recommendation to use /api/auth/session
38
+ * Improved with stricter validation and HTTP status handling
39
+ */
40
+ export async function probeChatGPTSession(page) {
41
+ try {
42
+ const result = await page.evaluate(async () => {
43
+ try {
44
+ // Use AbortController for timeout (ChatGPT recommendation)
45
+ const controller = new AbortController();
46
+ const timeoutId = setTimeout(() => controller.abort(), 1500);
47
+ const r = await fetch('/api/auth/session', {
48
+ credentials: 'include',
49
+ cache: 'no-store',
50
+ signal: controller.signal,
51
+ });
52
+ clearTimeout(timeoutId);
53
+ const contentType = r.headers.get('content-type') || '';
54
+ const isJson = contentType.includes('application/json');
55
+ // Handle non-JSON responses (WAF/interstitial pages)
56
+ if (!isJson) {
57
+ return {
58
+ ok: false,
59
+ status: r.status,
60
+ isHtml: true,
61
+ error: 'Non-JSON response',
62
+ };
63
+ }
64
+ const j = await r.json().catch(() => ({}));
65
+ return { ok: r.ok, status: r.status, json: j };
66
+ }
67
+ catch (e) {
68
+ const isAbort = e instanceof Error && e.name === 'AbortError';
69
+ return { ok: false, error: String(e), isTimeout: isAbort };
70
+ }
71
+ });
72
+ // Handle timeout
73
+ if (result?.isTimeout) {
74
+ console.error('[login-helper] Session probe timed out');
75
+ return LoginStatus.IN_PROGRESS;
76
+ }
77
+ // Handle HTML response (WAF/blocked)
78
+ if (result?.isHtml) {
79
+ console.error('[login-helper] Session probe returned HTML (possibly blocked)');
80
+ return LoginStatus.BLOCKED;
81
+ }
82
+ // Handle HTTP error statuses (ChatGPT recommendation)
83
+ if (result?.status === 429) {
84
+ console.error('[login-helper] Rate limited (429)');
85
+ return LoginStatus.BLOCKED;
86
+ }
87
+ if (result?.status === 401 || result?.status === 403) {
88
+ console.error(`[login-helper] Auth error (${result.status})`);
89
+ return LoginStatus.NEEDS_LOGIN;
90
+ }
91
+ if (!result?.ok) {
92
+ console.error('[login-helper] Session probe failed:', result);
93
+ return LoginStatus.IN_PROGRESS;
94
+ }
95
+ // Stricter validation: check for specific fields (ChatGPT recommendation)
96
+ const j = result.json ?? {};
97
+ const hasUser = j?.user?.id || j?.user?.email;
98
+ const hasToken = j?.accessToken;
99
+ const loggedIn = !!(hasUser || hasToken);
100
+ console.error(`[login-helper] ChatGPT session probe: ${loggedIn ? 'LOGGED_IN' : 'NEEDS_LOGIN'} (user: ${!!hasUser}, token: ${!!hasToken})`);
101
+ return loggedIn ? LoginStatus.LOGGED_IN : LoginStatus.NEEDS_LOGIN;
102
+ }
103
+ catch (error) {
104
+ console.error(`[login-helper] Error probing ChatGPT session: ${error}`);
105
+ return LoginStatus.IN_PROGRESS;
106
+ }
107
+ }
108
+ /**
109
+ * Get Gemini login status using ARIA labels (multi-language support)
110
+ * Based on Gemini's recommendation to use aria-label patterns
111
+ * Added fail-fast Sign In detection (Gemini recommendation)
112
+ */
113
+ export async function getGeminiStatus(page) {
114
+ const url = page.url();
115
+ // URL-based check (fastest)
116
+ if (url.includes('accounts.google.com')) {
117
+ console.error('[login-helper] Gemini: On Google login page');
118
+ return LoginStatus.NEEDS_LOGIN;
119
+ }
120
+ try {
121
+ const result = await page.evaluate((patterns) => {
122
+ // FAIL-FAST: Check for Sign In link (Gemini recommendation)
123
+ // This is language-agnostic and very reliable
124
+ const signInLink = document.querySelector('a[href*="accounts.google.com/ServiceLogin"]');
125
+ if (signInLink) {
126
+ return { signInPresent: true, profileFound: false };
127
+ }
128
+ // Check for Terms of Service / dialog blocking the UI (Gemini recommendation)
129
+ const hasBlockingDialog = document.querySelector('[role="dialog"]') !== null;
130
+ // Method 1: Check aria-label attribute
131
+ for (const pattern of patterns) {
132
+ if (document.querySelector(`button[aria-label*="${pattern}"]`)) {
133
+ return {
134
+ signInPresent: false,
135
+ profileFound: true,
136
+ hasDialog: hasBlockingDialog,
137
+ };
138
+ }
139
+ }
140
+ // Method 2: Check button text content (Gemini may not use aria-label)
141
+ const buttons = Array.from(document.querySelectorAll('button'));
142
+ for (const pattern of patterns) {
143
+ const found = buttons.some(btn => btn.textContent?.includes(pattern));
144
+ if (found) {
145
+ return {
146
+ signInPresent: false,
147
+ profileFound: true,
148
+ hasDialog: hasBlockingDialog,
149
+ };
150
+ }
151
+ }
152
+ // Fallback: check for nav with chat history (logged-in indicator)
153
+ if (document.querySelector('nav[aria-label*="Recent"]')) {
154
+ return {
155
+ signInPresent: false,
156
+ profileFound: true,
157
+ hasDialog: hasBlockingDialog,
158
+ };
159
+ }
160
+ // Fallback: check for textbox (user is on main chat page)
161
+ if (document.querySelector('[role="textbox"]')) {
162
+ return {
163
+ signInPresent: false,
164
+ profileFound: true,
165
+ hasDialog: hasBlockingDialog,
166
+ };
167
+ }
168
+ return {
169
+ signInPresent: false,
170
+ profileFound: false,
171
+ hasDialog: hasBlockingDialog,
172
+ };
173
+ }, GEMINI_PROFILE_PATTERNS);
174
+ // Fail-fast: Sign In link present means not logged in
175
+ if (result.signInPresent) {
176
+ console.error('[login-helper] Gemini: Sign In link detected (fail-fast)');
177
+ return LoginStatus.NEEDS_LOGIN;
178
+ }
179
+ // Logged in but dialog blocking
180
+ if (result.profileFound && result.hasDialog) {
181
+ console.error('[login-helper] Gemini: Logged in but dialog present (Terms of Service?)');
182
+ return LoginStatus.IN_PROGRESS;
183
+ }
184
+ console.error(`[login-helper] Gemini check: ${result.profileFound ? 'LOGGED_IN' : 'NEEDS_LOGIN'}`);
185
+ return result.profileFound
186
+ ? LoginStatus.LOGGED_IN
187
+ : LoginStatus.NEEDS_LOGIN;
188
+ }
189
+ catch (error) {
190
+ console.error(`[login-helper] Error checking Gemini status: ${error}`);
191
+ return LoginStatus.IN_PROGRESS;
192
+ }
193
+ }
194
+ /**
195
+ * Get login status for a specific provider
196
+ */
197
+ export async function getLoginStatus(page, provider) {
198
+ if (provider === 'chatgpt') {
199
+ // Try session probe first (most reliable)
200
+ const sessionStatus = await probeChatGPTSession(page);
201
+ if (sessionStatus !== LoginStatus.IN_PROGRESS) {
202
+ return sessionStatus;
203
+ }
204
+ // Fallback to DOM-based detection
205
+ const needsLogin = await isLoginRequired(page);
206
+ return needsLogin ? LoginStatus.NEEDS_LOGIN : LoginStatus.LOGGED_IN;
207
+ }
208
+ else {
209
+ return await getGeminiStatus(page);
210
+ }
211
+ }
212
+ /**
213
+ * Wait for login with auto-polling and backoff
214
+ * Returns when user logs in or timeout occurs
215
+ */
216
+ export async function waitForLoginStatus(page, provider, timeoutMs = 120000, onStatusUpdate) {
217
+ const log = onStatusUpdate || console.error;
218
+ const start = Date.now();
219
+ let delay = 500;
220
+ log(`⏳ ログイン待機中(最大${Math.floor(timeoutMs / 1000)}秒)...`);
221
+ while (Date.now() - start < timeoutMs) {
222
+ const status = await getLoginStatus(page, provider);
223
+ if (status === LoginStatus.LOGGED_IN) {
224
+ log('✅ ログイン検出!続行します...');
225
+ return status;
226
+ }
227
+ const elapsed = Math.floor((Date.now() - start) / 1000);
228
+ if (elapsed % 10 === 0 && elapsed > 0) {
229
+ log(`⏳ まだ待機中... (${elapsed}秒経過)`);
230
+ }
231
+ await new Promise(r => setTimeout(r, delay));
232
+ // Backoff with jitter (ChatGPT recommendation: ±10-20% randomization)
233
+ const jitter = 0.9 + Math.random() * 0.2; // 0.9 to 1.1
234
+ delay = Math.min(3000, Math.floor(delay * 1.5 * jitter));
235
+ }
236
+ log('❌ タイムアウト: 再度お試しください');
237
+ return LoginStatus.NEEDS_LOGIN;
238
+ }
239
+ /**
240
+ * Check if the page requires login
241
+ * More robust than just checking URL
242
+ */
243
+ export async function isLoginRequired(page) {
244
+ const currentUrl = page.url();
245
+ console.error(`[login-helper] Checking login status for URL: ${currentUrl}`);
246
+ // Method 1: Check URL patterns
247
+ if (currentUrl.includes('auth') ||
248
+ currentUrl.includes('login') ||
249
+ currentUrl.includes('signin')) {
250
+ console.error('[login-helper] ✅ Login required (URL contains auth/login/signin)');
251
+ return true;
252
+ }
253
+ // Gemini specific check
254
+ if (currentUrl.includes('gemini.google.com')) {
255
+ try {
256
+ const geminiContent = await page.evaluate(() => {
257
+ const bodyText = document.body.innerText.toLowerCase();
258
+ // Check for common login page text
259
+ const hasLoginText = bodyText.includes('sign in') ||
260
+ bodyText.includes('login') ||
261
+ bodyText.includes('google account');
262
+ // Check for Gemini composer
263
+ const hasComposer = !!(document.querySelector('div[contenteditable="true"]') ||
264
+ document.querySelector('textarea'));
265
+ return { hasLoginText, hasComposer };
266
+ });
267
+ console.error(`[login-helper] Gemini check: ${JSON.stringify(geminiContent)}`);
268
+ if (geminiContent.hasComposer) {
269
+ console.error('[login-helper] ❌ Login NOT required (Gemini composer detected)');
270
+ return false;
271
+ }
272
+ console.error('[login-helper] ✅ Login required (Gemini composer missing)');
273
+ return true;
274
+ }
275
+ catch (error) {
276
+ console.error(`[login-helper] Error checking Gemini login: ${error}`);
277
+ return true;
278
+ }
279
+ }
280
+ // Method 2: Check page content for login indicators
281
+ try {
282
+ const pageContent = await page.evaluate(() => {
283
+ // Check for common login page text
284
+ const bodyText = document.body.innerText.toLowerCase();
285
+ // ChatGPT-specific login indicators
286
+ const hasLoginText = bodyText.includes('log in') ||
287
+ bodyText.includes('sign in') ||
288
+ bodyText.includes('welcome to chatgpt');
289
+ // Check for login buttons - NATIVE DOM selectors only
290
+ const hasLoginButton = !!(document.querySelector('[data-testid*="login"]') ||
291
+ document.querySelector('[class*="login-button"]') ||
292
+ // Check for text content in buttons
293
+ Array.from(document.querySelectorAll('button')).some(btn => btn.textContent?.toLowerCase().includes('log in') ||
294
+ btn.textContent?.toLowerCase().includes('sign in')));
295
+ // Check for ChatGPT-specific composer (more strict detection)
296
+ // Look for the actual textarea/contenteditable that ChatGPT uses
297
+ let hasComposer = false;
298
+ // Method 1: Check for ChatGPT's main textarea (with validation)
299
+ const mainTextarea = document.querySelector('#prompt-textarea');
300
+ if (mainTextarea && mainTextarea instanceof HTMLTextAreaElement) {
301
+ // Additional validation: login page has a fallback textarea with class "_fallbackTextarea_"
302
+ // Real composer should NOT be disabled and should be in a proper composer container
303
+ const isFallback = mainTextarea.className.includes('fallback');
304
+ const isDisabled = mainTextarea.disabled;
305
+ if (!isFallback && !isDisabled) {
306
+ console.error('[login-helper] Found valid #prompt-textarea (not fallback)');
307
+ hasComposer = true;
308
+ }
309
+ else {
310
+ console.error('[login-helper] Found #prompt-textarea but it appears to be a fallback/disabled textarea');
311
+ }
312
+ }
313
+ // Method 2: Check Shadow DOM for ChatGPT's composer
314
+ if (!hasComposer) {
315
+ const shadowHosts = Array.from(document.querySelectorAll('*'));
316
+ for (const host of shadowHosts) {
317
+ if (host.shadowRoot) {
318
+ const shadowTextarea = host.shadowRoot.querySelector('#prompt-textarea');
319
+ const shadowComposer = host.shadowRoot.querySelector('[data-testid="composer-textarea"]');
320
+ if (shadowTextarea || shadowComposer) {
321
+ console.error('[login-helper] Found composer in Shadow DOM');
322
+ hasComposer = true;
323
+ break;
324
+ }
325
+ }
326
+ }
327
+ }
328
+ // Method 3: Check for ChatGPT-specific ProseMirror editor (only if it's in main content area)
329
+ if (!hasComposer) {
330
+ const proseMirror = document.querySelector('.ProseMirror[contenteditable="true"]');
331
+ // Verify it's actually ChatGPT's main composer, not just any ProseMirror
332
+ if (proseMirror) {
333
+ const parent = proseMirror.closest('[class*="composer"], [class*="prompt"], [class*="input-area"]');
334
+ if (parent) {
335
+ console.error('[login-helper] Found ChatGPT ProseMirror composer');
336
+ hasComposer = true;
337
+ }
338
+ }
339
+ }
340
+ return {
341
+ hasLoginText,
342
+ hasLoginButton,
343
+ hasComposer,
344
+ bodySnippet: bodyText.substring(0, 200),
345
+ };
346
+ });
347
+ console.error(`[login-helper] Page analysis: ${JSON.stringify(pageContent, null, 2)}`);
348
+ // Decision point 1: PRIORITY - Login button present = needs login (even if fallback composer exists)
349
+ if (pageContent.hasLoginButton) {
350
+ console.error('[login-helper] 🔍 Decision: Login button detected (highest priority)');
351
+ console.error('[login-helper] hasLoginButton:', pageContent.hasLoginButton);
352
+ console.error('[login-helper] hasComposer:', pageContent.hasComposer);
353
+ console.error('[login-helper] ✅ Login required (login button detected)');
354
+ return true;
355
+ }
356
+ // Decision point 2: Login text present + NO valid composer = needs login
357
+ if (pageContent.hasLoginText && !pageContent.hasComposer) {
358
+ console.error('[login-helper] 🔍 Decision: Login text detected + No valid composer');
359
+ console.error('[login-helper] hasLoginText:', pageContent.hasLoginText);
360
+ console.error('[login-helper] hasComposer:', pageContent.hasComposer);
361
+ console.error('[login-helper] ✅ Login required (login UI detected, no composer)');
362
+ return true;
363
+ }
364
+ // Decision point 3: Valid composer present = logged in
365
+ if (pageContent.hasComposer) {
366
+ console.error('[login-helper] 🔍 Decision: Valid composer found (user is logged in)');
367
+ console.error('[login-helper] hasComposer:', pageContent.hasComposer);
368
+ console.error('[login-helper] ❌ Login NOT required (composer detected)');
369
+ return false;
370
+ }
371
+ // Decision point 3: Ambiguous state - safe default is to assume login required
372
+ console.error('[login-helper] 🔍 Decision: Unclear state (no login UI, no composer)');
373
+ console.error('[login-helper] hasLoginText:', pageContent.hasLoginText);
374
+ console.error('[login-helper] hasLoginButton:', pageContent.hasLoginButton);
375
+ console.error('[login-helper] hasComposer:', pageContent.hasComposer);
376
+ console.error('[login-helper] bodySnippet:', pageContent.bodySnippet);
377
+ console.error('[login-helper] ⚠️ Unclear state - assuming login required for safety');
378
+ return true;
379
+ }
380
+ catch (error) {
381
+ console.error(`[login-helper] Error during page content check: ${error}`);
382
+ // On error, assume login required for safety
383
+ return true;
384
+ }
385
+ }
386
+ /**
387
+ * Wait for user to complete login
388
+ * Shows visual guidance and polls for login completion
389
+ */
390
+ export async function waitForLogin(page, options = {}) {
391
+ const maxWaitTime = options.maxWaitTime || 300000; // 5 minutes default
392
+ const pollInterval = options.pollInterval || 2000; // 2 seconds default
393
+ const onStatusUpdate = options.onStatusUpdate || console.error;
394
+ const startTime = Date.now();
395
+ onStatusUpdate('\n🔐 ログインが必要です');
396
+ onStatusUpdate('📱 ブラウザウィンドウでChatGPTにログインしてください');
397
+ onStatusUpdate(`⏰ 最大待機時間: ${Math.floor(maxWaitTime / 1000)}秒`);
398
+ onStatusUpdate('\n💡 ログイン方法:');
399
+ onStatusUpdate(' 1. ブラウザウィンドウでChatGPTのログインボタンをクリック');
400
+ onStatusUpdate(' 2. メールアドレスまたはGoogleアカウントでログイン');
401
+ onStatusUpdate(' 3. ログイン完了後、自動的に処理が続行されます\n');
402
+ // Poll for login completion
403
+ while (Date.now() - startTime < maxWaitTime) {
404
+ const elapsed = Math.floor((Date.now() - startTime) / 1000);
405
+ onStatusUpdate(`⏳ ログイン待機中... (${elapsed}秒経過)`);
406
+ // Check if login is completed
407
+ const stillNeedsLogin = await isLoginRequired(page);
408
+ if (!stillNeedsLogin) {
409
+ onStatusUpdate('\n✅ ログイン完了!処理を続行します...\n');
410
+ return true;
411
+ }
412
+ // Wait before next poll
413
+ await new Promise(resolve => setTimeout(resolve, pollInterval));
414
+ }
415
+ // Timeout
416
+ onStatusUpdate('\n⏱️ ログイン待機がタイムアウトしました');
417
+ onStatusUpdate('💡 再度実行してください\n');
418
+ return false;
419
+ }
420
+ /**
421
+ * Ensure user is logged in to ChatGPT
422
+ * If not, guide them through login process
423
+ */
424
+ export async function ensureLoggedIn(page, options = {}) {
425
+ const needsLogin = await isLoginRequired(page);
426
+ if (!needsLogin) {
427
+ return true; // Already logged in
428
+ }
429
+ // Wait for user to login
430
+ return await waitForLogin(page, options);
431
+ }