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,253 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Roots Manager
8
+ *
9
+ * Manages MCP roots (project directories) and generates stable profile keys.
10
+ * Implements the MCP Roots protocol for project-scoped Chrome profiles.
11
+ */
12
+ import { createHash } from 'node:crypto';
13
+ import fs from 'node:fs';
14
+ import { fileURLToPath } from 'node:url';
15
+ import { detectProjectName } from './project-detector.js';
16
+ import { resolveStableIdentity } from './stable-identity.js';
17
+ /**
18
+ * Fetch roots from MCP client using roots/list protocol
19
+ */
20
+ export async function fetchRootsFromClient(server) {
21
+ const clientCaps = server.getClientCapabilities();
22
+ if (!clientCaps?.roots) {
23
+ console.error('[roots] Client does not support roots capability');
24
+ return null;
25
+ }
26
+ try {
27
+ console.error('[roots] Requesting roots/list from client...');
28
+ const result = await server.listRoots({}, { timeout: 5000 });
29
+ console.error(`[roots] Received ${result.roots.length} roots from client`);
30
+ return result;
31
+ }
32
+ catch (error) {
33
+ console.error(`[roots] Failed to fetch roots from client: ${error instanceof Error ? error.message : String(error)}`);
34
+ return null;
35
+ }
36
+ }
37
+ /**
38
+ * Generate stable profile key from roots and client info
39
+ * Format: projectName_hash (e.g., "my-app_2ca5dbf5")
40
+ *
41
+ * @param rootsUris - Array of root URIs (used for fallback hash if stableIdentityHash not provided)
42
+ * @param clientName - Client name (e.g., "claude-code")
43
+ * @param clientVersion - Client version (not used in hash for stability)
44
+ * @param projectName - Human-readable project name
45
+ * @param stableIdentityHash - Optional stable identity hash (from git remote, etc.)
46
+ */
47
+ export function generateProfileKey(rootsUris, clientName, clientVersion, projectName, stableIdentityHash) {
48
+ let hash;
49
+ if (stableIdentityHash) {
50
+ // Use stable identity hash (preferred - survives directory moves)
51
+ hash = stableIdentityHash;
52
+ }
53
+ else {
54
+ // Fallback: URI-based hash
55
+ const sortedUris = [...rootsUris].sort();
56
+ const keyMaterial = JSON.stringify({
57
+ roots: sortedUris,
58
+ client: clientName,
59
+ });
60
+ hash = createHash('sha256').update(keyMaterial).digest('hex').slice(0, 8);
61
+ }
62
+ // Include project name for clarity (if available)
63
+ if (projectName) {
64
+ const sanitized = projectName.replace(/[^a-z0-9_-]/gi, '-').toLowerCase();
65
+ return `${sanitized}_${hash}`;
66
+ }
67
+ return hash;
68
+ }
69
+ /**
70
+ * Extract project name from roots URIs
71
+ * Uses detectProjectName() to read package.json name (preferred)
72
+ * Falls back to directory name if package.json not found
73
+ */
74
+ export function extractProjectName(roots) {
75
+ if (roots.length === 0) {
76
+ return 'unknown';
77
+ }
78
+ // Prefer explicit name if provided by MCP client
79
+ const firstRoot = roots[0];
80
+ if (firstRoot.name) {
81
+ return sanitizeProjectName(firstRoot.name);
82
+ }
83
+ // Extract from file:// URI using detectProjectName (reads package.json)
84
+ try {
85
+ const url = new URL(firstRoot.uri);
86
+ if (url.protocol === 'file:') {
87
+ // Convert URI to file path
88
+ const rootPath = fileURLToPath(url);
89
+ // Resolve realpath for symlink handling
90
+ let realPath;
91
+ try {
92
+ realPath = fs.realpathSync(rootPath);
93
+ }
94
+ catch {
95
+ realPath = rootPath; // Use original if realpath fails
96
+ }
97
+ // Use detectProjectName to read package.json name
98
+ const name = detectProjectName(realPath);
99
+ return sanitizeProjectName(name);
100
+ }
101
+ }
102
+ catch {
103
+ // Fall through to default
104
+ }
105
+ return 'unknown';
106
+ }
107
+ /**
108
+ * Sanitize project name for use in file paths
109
+ */
110
+ function sanitizeProjectName(name) {
111
+ return name.toLowerCase().replace(/[^a-z0-9-_]/g, '-');
112
+ }
113
+ /**
114
+ * Get stable identity hash from a root path
115
+ * Returns undefined if stable identity cannot be resolved
116
+ */
117
+ function getStableIdentityHash(rootPath) {
118
+ try {
119
+ const identity = resolveStableIdentity(rootPath);
120
+ // Only use stable identity for high-confidence sources (git-based)
121
+ if (identity.confidence === 'high' ||
122
+ identity.source === 'MCP_PROFILE_ID') {
123
+ return identity.id;
124
+ }
125
+ }
126
+ catch {
127
+ // Fall through to URI-based hash
128
+ }
129
+ return undefined;
130
+ }
131
+ /**
132
+ * Get root path from URI
133
+ */
134
+ function getRootPathFromUri(uri) {
135
+ try {
136
+ const url = new URL(uri);
137
+ if (url.protocol === 'file:') {
138
+ const rootPath = fileURLToPath(url);
139
+ try {
140
+ return fs.realpathSync(rootPath);
141
+ }
142
+ catch {
143
+ return rootPath;
144
+ }
145
+ }
146
+ }
147
+ catch {
148
+ // Ignore
149
+ }
150
+ return undefined;
151
+ }
152
+ /**
153
+ * Resolve roots information from MCP client or fallbacks
154
+ */
155
+ export async function resolveRoots(server, fallbackOptions) {
156
+ const clientInfo = server.getClientVersion();
157
+ const clientName = clientInfo?.name || 'unknown-client';
158
+ const clientVersion = clientInfo?.version || '0.0.0';
159
+ // 1) Try roots/list from client (preferred)
160
+ const rootsResult = await fetchRootsFromClient(server);
161
+ if (rootsResult && rootsResult.roots.length > 0) {
162
+ const rootsUris = rootsResult.roots.map(r => r.uri);
163
+ const projectName = extractProjectName(rootsResult.roots);
164
+ // Get stable identity hash from first root
165
+ const rootPath = getRootPathFromUri(rootsUris[0]);
166
+ const stableHash = rootPath ? getStableIdentityHash(rootPath) : undefined;
167
+ const profileKey = generateProfileKey(rootsUris, clientName, clientVersion, projectName, stableHash);
168
+ console.error(`[roots] Resolved via roots/list: key=${profileKey}, project=${projectName}, client=${clientName}, stableId=${stableHash || 'none'}`);
169
+ return {
170
+ profileKey,
171
+ projectName,
172
+ rootsUris,
173
+ clientName,
174
+ clientVersion,
175
+ source: 'roots/list',
176
+ };
177
+ }
178
+ // 2) Fallback: CLI argument --project-root
179
+ if (fallbackOptions.cliProjectRoot) {
180
+ const uri = pathToFileUri(fallbackOptions.cliProjectRoot);
181
+ const projectName = extractProjectName([{ uri }]);
182
+ // Get stable identity hash
183
+ const stableHash = getStableIdentityHash(fallbackOptions.cliProjectRoot);
184
+ const profileKey = generateProfileKey([uri], clientName, clientVersion, projectName, stableHash);
185
+ console.error(`[roots] Resolved via --project-root: key=${profileKey}, project=${projectName}, stableId=${stableHash || 'none'}`);
186
+ return {
187
+ profileKey,
188
+ projectName,
189
+ rootsUris: [uri],
190
+ clientName,
191
+ clientVersion,
192
+ source: '--project-root',
193
+ };
194
+ }
195
+ // 3) Fallback: Environment variable MCP_PROJECT_ROOT
196
+ if (fallbackOptions.envProjectRoot) {
197
+ const uri = pathToFileUri(fallbackOptions.envProjectRoot);
198
+ const projectName = extractProjectName([{ uri }]);
199
+ // Get stable identity hash
200
+ const stableHash = getStableIdentityHash(fallbackOptions.envProjectRoot);
201
+ const profileKey = generateProfileKey([uri], clientName, clientVersion, projectName, stableHash);
202
+ console.error(`[roots] Resolved via MCP_PROJECT_ROOT: key=${profileKey}, project=${projectName}, stableId=${stableHash || 'none'}`);
203
+ return {
204
+ profileKey,
205
+ projectName,
206
+ rootsUris: [uri],
207
+ clientName,
208
+ clientVersion,
209
+ source: 'MCP_PROJECT_ROOT',
210
+ };
211
+ }
212
+ // 4) Fallback: AUTO (cwd-based, last resort)
213
+ if (fallbackOptions.autoCwd) {
214
+ const uri = pathToFileUri(fallbackOptions.autoCwd);
215
+ const projectName = extractProjectName([{ uri }]);
216
+ // Get stable identity hash
217
+ const stableHash = getStableIdentityHash(fallbackOptions.autoCwd);
218
+ const profileKey = generateProfileKey([uri], clientName, clientVersion, projectName, stableHash);
219
+ console.error(`[roots] Resolved via AUTO (cwd): key=${profileKey}, project=${projectName}, stableId=${stableHash || 'none'}`);
220
+ return {
221
+ profileKey,
222
+ projectName,
223
+ rootsUris: [uri],
224
+ clientName,
225
+ clientVersion,
226
+ source: 'AUTO',
227
+ };
228
+ }
229
+ // Absolute fallback
230
+ const fallbackUri = 'file:///unknown';
231
+ const fallbackProjectName = 'unknown';
232
+ const profileKey = generateProfileKey([fallbackUri], clientName, clientVersion, fallbackProjectName);
233
+ console.error('[roots] WARNING: No roots available, using fallback');
234
+ return {
235
+ profileKey,
236
+ projectName: fallbackProjectName,
237
+ rootsUris: [fallbackUri],
238
+ clientName,
239
+ clientVersion,
240
+ source: 'AUTO',
241
+ };
242
+ }
243
+ /**
244
+ * Convert absolute file path to file:// URI
245
+ */
246
+ function pathToFileUri(absPath) {
247
+ // Normalize path and convert to file:// URI
248
+ const normalized = absPath.replace(/\\/g, '/');
249
+ const withoutLeadingSlash = normalized.startsWith('/')
250
+ ? normalized
251
+ : '/' + normalized;
252
+ return `file://${withoutLeadingSlash}`;
253
+ }
@@ -0,0 +1,61 @@
1
+ {
2
+ "version": "2025-10",
3
+ "lastUpdated": "2025-10-03",
4
+ "description": "ChatGPT Web UI selectors for browser automation",
5
+ "elements": {
6
+ "newChatLink": {
7
+ "css": "a[href='/']",
8
+ "description": "新しいチャット作成リンク"
9
+ },
10
+ "tempChatToggle": {
11
+ "ax": {
12
+ "role": "button",
13
+ "nameContains": "一時チャットをオフにする"
14
+ },
15
+ "description": "一時チャットON/OFFトグルボタン"
16
+ },
17
+ "addFileButton": {
18
+ "ax": {
19
+ "role": "button",
20
+ "ariaLabel": "ファイルの追加"
21
+ },
22
+ "description": "ファイル追加(ツールメニューを開く)ボタン"
23
+ },
24
+ "composerTextarea": {
25
+ "css": "textarea[placeholder]",
26
+ "description": "メッセージ入力テキストエリア"
27
+ },
28
+ "prosemirrorEditor": {
29
+ "css": ".ProseMirror[contenteditable='true']",
30
+ "description": "ProseMirrorエディタ"
31
+ },
32
+ "sendButton": {
33
+ "css": "button[data-testid='send-button']",
34
+ "description": "送信ボタン"
35
+ },
36
+ "userMessage": {
37
+ "css": "[data-message-author-role='user']",
38
+ "description": "ユーザーメッセージ"
39
+ },
40
+ "assistantMessage": {
41
+ "css": "[data-message-author-role='assistant']",
42
+ "description": "アシスタントメッセージ"
43
+ },
44
+ "stopButton": {
45
+ "text": ["停止", "ストリーミングの停止"],
46
+ "ax": {
47
+ "ariaLabel": ["停止", "ストリーミングの停止"]
48
+ },
49
+ "description": "ストリーミング停止ボタン"
50
+ },
51
+ "thinkingTimeButton": {
52
+ "ax": {
53
+ "ariaLabelContains": "思考時間"
54
+ },
55
+ "description": "思考時間表示ボタン"
56
+ }
57
+ },
58
+ "placeholders": {
59
+ "normalMode": "Message ChatGPT"
60
+ }
61
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "version": "1.0.0",
3
+ "lastUpdated": "2025-11-27",
4
+ "description": "Selectors for Gemini web interface",
5
+ "elements": {
6
+ "editor": {
7
+ "css": "div[contenteditable='true']",
8
+ "description": "Main input editor"
9
+ },
10
+ "sendButton": {
11
+ "ax": {
12
+ "ariaLabel": "送信"
13
+ },
14
+ "description": "Send message button"
15
+ },
16
+ "response": {
17
+ "css": "model-response",
18
+ "description": "Response container"
19
+ }
20
+ },
21
+ "placeholders": {
22
+ "normalMode": "プロンプトを入力"
23
+ }
24
+ }
@@ -0,0 +1,128 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import * as fs from 'node:fs';
7
+ import * as path from 'node:path';
8
+ import { fileURLToPath } from 'node:url';
9
+ let cachedSelectors = null;
10
+ /**
11
+ * Load ChatGPT selectors from JSON file
12
+ */
13
+ export function loadSelectors() {
14
+ if (cachedSelectors) {
15
+ return cachedSelectors;
16
+ }
17
+ const __filename = fileURLToPath(import.meta.url);
18
+ const __dirname = path.dirname(__filename);
19
+ const selectorsPath = path.join(__dirname, 'chatgpt.json');
20
+ try {
21
+ const data = fs.readFileSync(selectorsPath, 'utf-8');
22
+ cachedSelectors = JSON.parse(data);
23
+ return cachedSelectors;
24
+ }
25
+ catch (error) {
26
+ throw new Error(`Failed to load selectors from ${selectorsPath}: ${error}`);
27
+ }
28
+ }
29
+ /**
30
+ * Get a specific selector definition
31
+ */
32
+ export function getSelector(elementName) {
33
+ const selectors = loadSelectors();
34
+ const selector = selectors.elements[elementName];
35
+ if (!selector) {
36
+ throw new Error(`Selector not found: ${elementName}`);
37
+ }
38
+ return selector;
39
+ }
40
+ /**
41
+ * Generate page.evaluate() compatible selector function for text matching
42
+ */
43
+ export function generateTextMatcher(selector, tagName = 'button') {
44
+ const textPatterns = Array.isArray(selector.text)
45
+ ? selector.text
46
+ : [selector.text];
47
+ return `
48
+ Array.from(document.querySelectorAll('${tagName}')).find(el => {
49
+ const text = el.textContent || '';
50
+ return ${textPatterns.map(t => `text.includes('${t}')`).join(' || ')};
51
+ })
52
+ `;
53
+ }
54
+ /**
55
+ * Generate page.evaluate() compatible selector function for accessibility matching
56
+ */
57
+ export function generateAxMatcher(selector, tagName = 'button') {
58
+ if (!selector.ax) {
59
+ throw new Error('Accessibility selector not defined');
60
+ }
61
+ const conditions = [];
62
+ if (selector.ax.ariaLabel) {
63
+ const labels = Array.isArray(selector.ax.ariaLabel)
64
+ ? selector.ax.ariaLabel
65
+ : [selector.ax.ariaLabel];
66
+ conditions.push(labels.map(label => `aria.includes('${label}')`).join(' || '));
67
+ }
68
+ if (selector.ax.ariaLabelContains) {
69
+ conditions.push(`aria.includes('${selector.ax.ariaLabelContains}')`);
70
+ }
71
+ if (selector.ax.nameContains) {
72
+ conditions.push(`aria.includes('${selector.ax.nameContains}')`);
73
+ }
74
+ return `
75
+ Array.from(document.querySelectorAll('${tagName}')).find(el => {
76
+ const aria = el.getAttribute('aria-label') || '';
77
+ return ${conditions.join(' || ')};
78
+ })
79
+ `;
80
+ }
81
+ /**
82
+ * Check if placeholder matches expected patterns
83
+ */
84
+ export function checkPlaceholder(placeholder) {
85
+ const selectors = loadSelectors();
86
+ if (selectors.placeholders?.normalMode) {
87
+ return placeholder.includes(selectors.placeholders.normalMode);
88
+ }
89
+ return false;
90
+ }
91
+ /**
92
+ * Clear cached selectors (useful for testing or hot-reload)
93
+ */
94
+ export function clearCache() {
95
+ cachedSelectors = null;
96
+ cachedGeminiSelectors = null;
97
+ }
98
+ let cachedGeminiSelectors = null;
99
+ /**
100
+ * Load Gemini selectors from JSON file
101
+ */
102
+ export function loadGeminiSelectors() {
103
+ if (cachedGeminiSelectors) {
104
+ return cachedGeminiSelectors;
105
+ }
106
+ const __filename = fileURLToPath(import.meta.url);
107
+ const __dirname = path.dirname(__filename);
108
+ const selectorsPath = path.join(__dirname, 'gemini.json');
109
+ try {
110
+ const data = fs.readFileSync(selectorsPath, 'utf-8');
111
+ cachedGeminiSelectors = JSON.parse(data);
112
+ return cachedGeminiSelectors;
113
+ }
114
+ catch (error) {
115
+ throw new Error(`Failed to load selectors from ${selectorsPath}: ${error}`);
116
+ }
117
+ }
118
+ /**
119
+ * Get a specific Gemini selector definition
120
+ */
121
+ export function getGeminiSelector(elementName) {
122
+ const selectors = loadGeminiSelectors();
123
+ const selector = selectors.elements[elementName];
124
+ if (!selector) {
125
+ throw new Error(`Selector not found: ${elementName}`);
126
+ }
127
+ return selector;
128
+ }
@@ -0,0 +1,193 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ // src/stable-identity.ts
7
+ // Stable project identity detection for profile persistence across directory moves
8
+ // Priority: MCP_PROFILE_ID > git remote origin > git first commit > package.json name > directory fallback
9
+ import { spawnSync } from 'node:child_process';
10
+ import crypto from 'node:crypto';
11
+ import fs from 'node:fs';
12
+ import path from 'node:path';
13
+ /**
14
+ * Resolve stable project identity in priority order.
15
+ * This identity remains stable even when the project directory is moved.
16
+ */
17
+ export function resolveStableIdentity(projectRoot, env = process.env) {
18
+ // 1. Check explicit env var (highest priority)
19
+ const explicitId = env.MCP_PROFILE_ID?.trim();
20
+ if (explicitId) {
21
+ return {
22
+ id: sanitizeIdentity(explicitId),
23
+ source: 'MCP_PROFILE_ID',
24
+ raw: explicitId,
25
+ confidence: 'high',
26
+ };
27
+ }
28
+ // 2. Try git remote origin URL (stable across moves)
29
+ const remoteName = env.MCP_GIT_REMOTE || 'origin';
30
+ const remoteUrl = getGitRemoteOrigin(projectRoot, remoteName);
31
+ if (remoteUrl) {
32
+ const normalized = normalizeGitUrl(remoteUrl);
33
+ return {
34
+ id: shortHash(normalized),
35
+ source: 'git-remote-origin',
36
+ raw: remoteUrl,
37
+ confidence: 'high',
38
+ };
39
+ }
40
+ // 3. Try git first commit hash (stable, works offline)
41
+ const firstCommit = getGitFirstCommit(projectRoot);
42
+ if (firstCommit) {
43
+ return {
44
+ id: firstCommit.slice(0, 8), // Use first 8 chars of commit hash directly
45
+ source: 'git-first-commit',
46
+ raw: firstCommit,
47
+ confidence: 'high',
48
+ };
49
+ }
50
+ // 4. Try package.json name (semi-stable, may conflict)
51
+ const packageName = getPackageName(projectRoot);
52
+ if (packageName) {
53
+ return {
54
+ id: shortHash(packageName),
55
+ source: 'package-name',
56
+ raw: packageName,
57
+ confidence: 'medium', // May conflict if same name in different projects
58
+ };
59
+ }
60
+ // 5. Fallback to directory-based (legacy behavior)
61
+ const realPath = realpathSafe(projectRoot);
62
+ return {
63
+ id: shortHash(realPath),
64
+ source: 'directory-fallback',
65
+ raw: realPath,
66
+ confidence: 'low',
67
+ };
68
+ }
69
+ /**
70
+ * Get legacy identity hash (realpath-based) for migration detection.
71
+ */
72
+ export function getLegacyIdentityHash(projectRoot) {
73
+ const realPath = realpathSafe(projectRoot);
74
+ return shortHash(realPath);
75
+ }
76
+ // --- Git Utilities ---
77
+ /**
78
+ * Get git remote origin URL.
79
+ * Returns null if not a git repo or no remote configured.
80
+ */
81
+ function getGitRemoteOrigin(cwd, remoteName = 'origin') {
82
+ try {
83
+ const result = spawnSync('git', ['remote', 'get-url', remoteName], {
84
+ cwd,
85
+ timeout: 500,
86
+ encoding: 'utf8',
87
+ stdio: ['ignore', 'pipe', 'ignore'],
88
+ windowsHide: true,
89
+ });
90
+ if (result.status === 0 && result.stdout) {
91
+ const url = result.stdout.trim();
92
+ return url || null;
93
+ }
94
+ }
95
+ catch {
96
+ /* ignore */
97
+ }
98
+ return null;
99
+ }
100
+ /**
101
+ * Get hash of the first commit in git history.
102
+ * This is stable even when project is moved.
103
+ */
104
+ function getGitFirstCommit(cwd) {
105
+ try {
106
+ const result = spawnSync('git', ['rev-list', '--max-parents=0', 'HEAD'], {
107
+ cwd,
108
+ timeout: 500,
109
+ encoding: 'utf8',
110
+ stdio: ['ignore', 'pipe', 'ignore'],
111
+ windowsHide: true,
112
+ });
113
+ if (result.status === 0 && result.stdout) {
114
+ // May have multiple roots for merged repos, use first
115
+ const commits = result.stdout.trim().split('\n');
116
+ return commits[0] || null;
117
+ }
118
+ }
119
+ catch {
120
+ /* ignore */
121
+ }
122
+ return null;
123
+ }
124
+ /**
125
+ * Normalize git URL for consistent hashing.
126
+ * Handles: SSH, HTTPS, with/without .git suffix
127
+ *
128
+ * Examples:
129
+ * git@github.com:user/repo.git -> github.com/user/repo
130
+ * https://github.com/user/repo.git -> github.com/user/repo
131
+ * ssh://git@github.com/user/repo -> github.com/user/repo
132
+ */
133
+ export function normalizeGitUrl(url) {
134
+ let normalized = url.trim();
135
+ // Remove ssh:// prefix
136
+ normalized = normalized.replace(/^ssh:\/\//, '');
137
+ // Remove git@ prefix
138
+ normalized = normalized.replace(/^git@/, '');
139
+ // Remove https:// or http:// prefix
140
+ normalized = normalized.replace(/^https?:\/\//, '');
141
+ // Replace : with / (SSH style urls like github.com:user/repo)
142
+ normalized = normalized.replace(/:(?!\/)/, '/');
143
+ // Remove .git suffix
144
+ normalized = normalized.replace(/\.git$/, '');
145
+ // Lowercase for consistency
146
+ normalized = normalized.toLowerCase();
147
+ return normalized;
148
+ }
149
+ // --- Package.json Utilities ---
150
+ /**
151
+ * Get package name from package.json.
152
+ */
153
+ function getPackageName(projectRoot) {
154
+ const pjPath = path.join(projectRoot, 'package.json');
155
+ try {
156
+ if (fs.existsSync(pjPath)) {
157
+ const pkg = JSON.parse(fs.readFileSync(pjPath, 'utf8'));
158
+ if (pkg && typeof pkg.name === 'string' && pkg.name.trim()) {
159
+ return pkg.name.trim();
160
+ }
161
+ }
162
+ }
163
+ catch {
164
+ /* ignore parse errors */
165
+ }
166
+ return null;
167
+ }
168
+ // --- Hash Utilities ---
169
+ function shortHash(s) {
170
+ try {
171
+ return crypto.createHash('sha256').update(s).digest('hex').slice(0, 8);
172
+ }
173
+ catch {
174
+ return '00000000';
175
+ }
176
+ }
177
+ function sanitizeIdentity(s) {
178
+ // Allow alphanumeric, dash, underscore only
179
+ const sanitized = s.toLowerCase().replace(/[^a-z0-9-_]/g, '-');
180
+ // Truncate to reasonable length (32 chars max)
181
+ return sanitized.slice(0, 32) || 'profile';
182
+ }
183
+ function realpathSafe(p) {
184
+ try {
185
+ const rp = fs.realpathSync.native
186
+ ? fs.realpathSync.native(p)
187
+ : fs.realpathSync(p);
188
+ return rp;
189
+ }
190
+ catch {
191
+ return path.normalize(p);
192
+ }
193
+ }