claude-chrome-parallel 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 (395) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +501 -0
  3. package/assets/demo.svg +278 -0
  4. package/dist/cdp/client.d.ts +218 -0
  5. package/dist/cdp/client.d.ts.map +1 -0
  6. package/dist/cdp/client.js +797 -0
  7. package/dist/cdp/client.js.map +1 -0
  8. package/dist/cdp/connection-pool.d.ts +125 -0
  9. package/dist/cdp/connection-pool.d.ts.map +1 -0
  10. package/dist/cdp/connection-pool.js +443 -0
  11. package/dist/cdp/connection-pool.js.map +1 -0
  12. package/dist/cdp/screenshot-scheduler.d.ts +54 -0
  13. package/dist/cdp/screenshot-scheduler.d.ts.map +1 -0
  14. package/dist/cdp/screenshot-scheduler.js +87 -0
  15. package/dist/cdp/screenshot-scheduler.js.map +1 -0
  16. package/dist/chrome/launcher.d.ts +55 -0
  17. package/dist/chrome/launcher.d.ts.map +1 -0
  18. package/dist/chrome/launcher.js +383 -0
  19. package/dist/chrome/launcher.js.map +1 -0
  20. package/dist/chrome/pool.d.ts +54 -0
  21. package/dist/chrome/pool.d.ts.map +1 -0
  22. package/dist/chrome/pool.js +301 -0
  23. package/dist/chrome/pool.js.map +1 -0
  24. package/dist/chrome/profile-detector.d.ts +52 -0
  25. package/dist/chrome/profile-detector.d.ts.map +1 -0
  26. package/dist/chrome/profile-detector.js +246 -0
  27. package/dist/chrome/profile-detector.js.map +1 -0
  28. package/dist/cli/claude-session.d.ts +11 -0
  29. package/dist/cli/claude-session.js +349 -0
  30. package/dist/cli/claude-session.js.map +1 -0
  31. package/dist/cli/index.d.ts +14 -0
  32. package/dist/cli/index.js +858 -0
  33. package/dist/cli/index.js.map +1 -0
  34. package/dist/cli/install.d.ts +16 -0
  35. package/dist/cli/install.js +185 -0
  36. package/dist/cli/install.js.map +1 -0
  37. package/dist/cli/uninstall.d.ts +7 -0
  38. package/dist/cli/uninstall.js +126 -0
  39. package/dist/cli/uninstall.js.map +1 -0
  40. package/dist/cli/update-check.d.ts +9 -0
  41. package/dist/cli/update-check.js +141 -0
  42. package/dist/cli/update-check.js.map +1 -0
  43. package/dist/config/config-recovery.d.ts +69 -0
  44. package/dist/config/config-recovery.d.ts.map +1 -0
  45. package/dist/config/config-recovery.js +302 -0
  46. package/dist/config/config-recovery.js.map +1 -0
  47. package/dist/config/global.d.ts +49 -0
  48. package/dist/config/global.d.ts.map +1 -0
  49. package/dist/config/global.js +24 -0
  50. package/dist/config/global.js.map +1 -0
  51. package/dist/config/index.d.ts +7 -0
  52. package/dist/config/index.d.ts.map +1 -0
  53. package/dist/config/index.js +23 -0
  54. package/dist/config/index.js.map +1 -0
  55. package/dist/config/session-isolator.d.ts +76 -0
  56. package/dist/config/session-isolator.d.ts.map +1 -0
  57. package/dist/config/session-isolator.js +268 -0
  58. package/dist/config/session-isolator.js.map +1 -0
  59. package/dist/dashboard/activity-tracker.d.ts +76 -0
  60. package/dist/dashboard/activity-tracker.d.ts.map +1 -0
  61. package/dist/dashboard/activity-tracker.js +219 -0
  62. package/dist/dashboard/activity-tracker.js.map +1 -0
  63. package/dist/dashboard/ansi.d.ts +117 -0
  64. package/dist/dashboard/ansi.d.ts.map +1 -0
  65. package/dist/dashboard/ansi.js +199 -0
  66. package/dist/dashboard/ansi.js.map +1 -0
  67. package/dist/dashboard/index.d.ts +110 -0
  68. package/dist/dashboard/index.d.ts.map +1 -0
  69. package/dist/dashboard/index.js +412 -0
  70. package/dist/dashboard/index.js.map +1 -0
  71. package/dist/dashboard/keyboard-handler.d.ts +43 -0
  72. package/dist/dashboard/keyboard-handler.d.ts.map +1 -0
  73. package/dist/dashboard/keyboard-handler.js +215 -0
  74. package/dist/dashboard/keyboard-handler.js.map +1 -0
  75. package/dist/dashboard/operation-controller.d.ts +76 -0
  76. package/dist/dashboard/operation-controller.d.ts.map +1 -0
  77. package/dist/dashboard/operation-controller.js +167 -0
  78. package/dist/dashboard/operation-controller.js.map +1 -0
  79. package/dist/dashboard/renderer.d.ts +76 -0
  80. package/dist/dashboard/renderer.d.ts.map +1 -0
  81. package/dist/dashboard/renderer.js +193 -0
  82. package/dist/dashboard/renderer.js.map +1 -0
  83. package/dist/dashboard/types.d.ts +56 -0
  84. package/dist/dashboard/types.d.ts.map +1 -0
  85. package/dist/dashboard/types.js +12 -0
  86. package/dist/dashboard/types.js.map +1 -0
  87. package/dist/dashboard/views/main-view.d.ts +23 -0
  88. package/dist/dashboard/views/main-view.d.ts.map +1 -0
  89. package/dist/dashboard/views/main-view.js +143 -0
  90. package/dist/dashboard/views/main-view.js.map +1 -0
  91. package/dist/dashboard/views/sessions-view.d.ts +22 -0
  92. package/dist/dashboard/views/sessions-view.d.ts.map +1 -0
  93. package/dist/dashboard/views/sessions-view.js +104 -0
  94. package/dist/dashboard/views/sessions-view.js.map +1 -0
  95. package/dist/dashboard/views/tabs-view.d.ts +21 -0
  96. package/dist/dashboard/views/tabs-view.d.ts.map +1 -0
  97. package/dist/dashboard/views/tabs-view.js +92 -0
  98. package/dist/dashboard/views/tabs-view.js.map +1 -0
  99. package/dist/hints/hint-engine.d.ts +77 -0
  100. package/dist/hints/hint-engine.d.ts.map +1 -0
  101. package/dist/hints/hint-engine.js +191 -0
  102. package/dist/hints/hint-engine.js.map +1 -0
  103. package/dist/hints/index.d.ts +8 -0
  104. package/dist/hints/index.d.ts.map +1 -0
  105. package/dist/hints/index.js +11 -0
  106. package/dist/hints/index.js.map +1 -0
  107. package/dist/hints/pattern-learner.d.ts +76 -0
  108. package/dist/hints/pattern-learner.d.ts.map +1 -0
  109. package/dist/hints/pattern-learner.js +254 -0
  110. package/dist/hints/pattern-learner.js.map +1 -0
  111. package/dist/hints/rules/composite-suggestions.d.ts +6 -0
  112. package/dist/hints/rules/composite-suggestions.d.ts.map +1 -0
  113. package/dist/hints/rules/composite-suggestions.js +66 -0
  114. package/dist/hints/rules/composite-suggestions.js.map +1 -0
  115. package/dist/hints/rules/error-recovery.d.ts +7 -0
  116. package/dist/hints/rules/error-recovery.d.ts.map +1 -0
  117. package/dist/hints/rules/error-recovery.js +55 -0
  118. package/dist/hints/rules/error-recovery.js.map +1 -0
  119. package/dist/hints/rules/learned-rules.d.ts +13 -0
  120. package/dist/hints/rules/learned-rules.d.ts.map +1 -0
  121. package/dist/hints/rules/learned-rules.js +27 -0
  122. package/dist/hints/rules/learned-rules.js.map +1 -0
  123. package/dist/hints/rules/repetition-detection.d.ts +7 -0
  124. package/dist/hints/rules/repetition-detection.d.ts.map +1 -0
  125. package/dist/hints/rules/repetition-detection.js +82 -0
  126. package/dist/hints/rules/repetition-detection.js.map +1 -0
  127. package/dist/hints/rules/sequence-detection.d.ts +6 -0
  128. package/dist/hints/rules/sequence-detection.d.ts.map +1 -0
  129. package/dist/hints/rules/sequence-detection.js +89 -0
  130. package/dist/hints/rules/sequence-detection.js.map +1 -0
  131. package/dist/hints/rules/success-hints.d.ts +6 -0
  132. package/dist/hints/rules/success-hints.d.ts.map +1 -0
  133. package/dist/hints/rules/success-hints.js +62 -0
  134. package/dist/hints/rules/success-hints.js.map +1 -0
  135. package/dist/index.d.ts +10 -0
  136. package/dist/index.d.ts.map +1 -0
  137. package/dist/index.js +272 -0
  138. package/dist/index.js.map +1 -0
  139. package/dist/lightpanda/launcher.d.ts +58 -0
  140. package/dist/lightpanda/launcher.d.ts.map +1 -0
  141. package/dist/lightpanda/launcher.js +199 -0
  142. package/dist/lightpanda/launcher.js.map +1 -0
  143. package/dist/mcp-server.d.ts +129 -0
  144. package/dist/mcp-server.d.ts.map +1 -0
  145. package/dist/mcp-server.js +641 -0
  146. package/dist/mcp-server.js.map +1 -0
  147. package/dist/memory/domain-memory.d.ts +68 -0
  148. package/dist/memory/domain-memory.d.ts.map +1 -0
  149. package/dist/memory/domain-memory.js +227 -0
  150. package/dist/memory/domain-memory.js.map +1 -0
  151. package/dist/orchestration/plan-executor.d.ts +19 -0
  152. package/dist/orchestration/plan-executor.d.ts.map +1 -0
  153. package/dist/orchestration/plan-executor.js +284 -0
  154. package/dist/orchestration/plan-executor.js.map +1 -0
  155. package/dist/orchestration/plan-registry.d.ts +55 -0
  156. package/dist/orchestration/plan-registry.d.ts.map +1 -0
  157. package/dist/orchestration/plan-registry.js +255 -0
  158. package/dist/orchestration/plan-registry.js.map +1 -0
  159. package/dist/orchestration/state-manager.d.ts +127 -0
  160. package/dist/orchestration/state-manager.d.ts.map +1 -0
  161. package/dist/orchestration/state-manager.js +438 -0
  162. package/dist/orchestration/state-manager.js.map +1 -0
  163. package/dist/orchestration/workflow-engine.d.ts +162 -0
  164. package/dist/orchestration/workflow-engine.d.ts.map +1 -0
  165. package/dist/orchestration/workflow-engine.js +731 -0
  166. package/dist/orchestration/workflow-engine.js.map +1 -0
  167. package/dist/resources/usage-guide.d.ts +13 -0
  168. package/dist/resources/usage-guide.d.ts.map +1 -0
  169. package/dist/resources/usage-guide.js +101 -0
  170. package/dist/resources/usage-guide.js.map +1 -0
  171. package/dist/router/browser-router.d.ts +51 -0
  172. package/dist/router/browser-router.d.ts.map +1 -0
  173. package/dist/router/browser-router.js +178 -0
  174. package/dist/router/browser-router.js.map +1 -0
  175. package/dist/router/cookie-sync.d.ts +48 -0
  176. package/dist/router/cookie-sync.d.ts.map +1 -0
  177. package/dist/router/cookie-sync.js +106 -0
  178. package/dist/router/cookie-sync.js.map +1 -0
  179. package/dist/router/index.d.ts +5 -0
  180. package/dist/router/index.d.ts.map +1 -0
  181. package/dist/router/index.js +10 -0
  182. package/dist/router/index.js.map +1 -0
  183. package/dist/router/tool-routing-registry.d.ts +21 -0
  184. package/dist/router/tool-routing-registry.d.ts.map +1 -0
  185. package/dist/router/tool-routing-registry.js +90 -0
  186. package/dist/router/tool-routing-registry.js.map +1 -0
  187. package/dist/session-manager.d.ts +251 -0
  188. package/dist/session-manager.d.ts.map +1 -0
  189. package/dist/session-manager.js +912 -0
  190. package/dist/session-manager.js.map +1 -0
  191. package/dist/tools/batch-execute.d.ts +11 -0
  192. package/dist/tools/batch-execute.d.ts.map +1 -0
  193. package/dist/tools/batch-execute.js +226 -0
  194. package/dist/tools/batch-execute.js.map +1 -0
  195. package/dist/tools/click-element.d.ts +8 -0
  196. package/dist/tools/click-element.d.ts.map +1 -0
  197. package/dist/tools/click-element.js +455 -0
  198. package/dist/tools/click-element.js.map +1 -0
  199. package/dist/tools/computer.d.ts +6 -0
  200. package/dist/tools/computer.d.ts.map +1 -0
  201. package/dist/tools/computer.js +638 -0
  202. package/dist/tools/computer.js.map +1 -0
  203. package/dist/tools/console-capture.d.ts +6 -0
  204. package/dist/tools/console-capture.d.ts.map +1 -0
  205. package/dist/tools/console-capture.js +320 -0
  206. package/dist/tools/console-capture.js.map +1 -0
  207. package/dist/tools/cookies.d.ts +6 -0
  208. package/dist/tools/cookies.d.ts.map +1 -0
  209. package/dist/tools/cookies.js +263 -0
  210. package/dist/tools/cookies.js.map +1 -0
  211. package/dist/tools/drag-drop.d.ts +6 -0
  212. package/dist/tools/drag-drop.d.ts.map +1 -0
  213. package/dist/tools/drag-drop.js +252 -0
  214. package/dist/tools/drag-drop.js.map +1 -0
  215. package/dist/tools/emulate-device.d.ts +6 -0
  216. package/dist/tools/emulate-device.d.ts.map +1 -0
  217. package/dist/tools/emulate-device.js +221 -0
  218. package/dist/tools/emulate-device.js.map +1 -0
  219. package/dist/tools/file-upload.d.ts +6 -0
  220. package/dist/tools/file-upload.d.ts.map +1 -0
  221. package/dist/tools/file-upload.js +208 -0
  222. package/dist/tools/file-upload.js.map +1 -0
  223. package/dist/tools/fill-form.d.ts +8 -0
  224. package/dist/tools/fill-form.d.ts.map +1 -0
  225. package/dist/tools/fill-form.js +342 -0
  226. package/dist/tools/fill-form.js.map +1 -0
  227. package/dist/tools/find.d.ts +6 -0
  228. package/dist/tools/find.d.ts.map +1 -0
  229. package/dist/tools/find.js +330 -0
  230. package/dist/tools/find.js.map +1 -0
  231. package/dist/tools/form-input.d.ts +6 -0
  232. package/dist/tools/form-input.d.ts.map +1 -0
  233. package/dist/tools/form-input.js +181 -0
  234. package/dist/tools/form-input.js.map +1 -0
  235. package/dist/tools/geolocation.d.ts +6 -0
  236. package/dist/tools/geolocation.d.ts.map +1 -0
  237. package/dist/tools/geolocation.js +172 -0
  238. package/dist/tools/geolocation.js.map +1 -0
  239. package/dist/tools/http-auth.d.ts +6 -0
  240. package/dist/tools/http-auth.d.ts.map +1 -0
  241. package/dist/tools/http-auth.js +136 -0
  242. package/dist/tools/http-auth.js.map +1 -0
  243. package/dist/tools/index.d.ts +6 -0
  244. package/dist/tools/index.d.ts.map +1 -0
  245. package/dist/tools/index.js +104 -0
  246. package/dist/tools/index.js.map +1 -0
  247. package/dist/tools/javascript.d.ts +6 -0
  248. package/dist/tools/javascript.d.ts.map +1 -0
  249. package/dist/tools/javascript.js +138 -0
  250. package/dist/tools/javascript.js.map +1 -0
  251. package/dist/tools/lightweight-scroll.d.ts +11 -0
  252. package/dist/tools/lightweight-scroll.d.ts.map +1 -0
  253. package/dist/tools/lightweight-scroll.js +266 -0
  254. package/dist/tools/lightweight-scroll.js.map +1 -0
  255. package/dist/tools/memory.d.ts +10 -0
  256. package/dist/tools/memory.d.ts.map +1 -0
  257. package/dist/tools/memory.js +141 -0
  258. package/dist/tools/memory.js.map +1 -0
  259. package/dist/tools/navigate.d.ts +6 -0
  260. package/dist/tools/navigate.d.ts.map +1 -0
  261. package/dist/tools/navigate.js +241 -0
  262. package/dist/tools/navigate.js.map +1 -0
  263. package/dist/tools/network.d.ts +6 -0
  264. package/dist/tools/network.d.ts.map +1 -0
  265. package/dist/tools/network.js +215 -0
  266. package/dist/tools/network.js.map +1 -0
  267. package/dist/tools/orchestration.d.ts +6 -0
  268. package/dist/tools/orchestration.d.ts.map +1 -0
  269. package/dist/tools/orchestration.js +746 -0
  270. package/dist/tools/orchestration.js.map +1 -0
  271. package/dist/tools/page-content.d.ts +6 -0
  272. package/dist/tools/page-content.d.ts.map +1 -0
  273. package/dist/tools/page-content.js +120 -0
  274. package/dist/tools/page-content.js.map +1 -0
  275. package/dist/tools/page-pdf.d.ts +6 -0
  276. package/dist/tools/page-pdf.d.ts.map +1 -0
  277. package/dist/tools/page-pdf.js +245 -0
  278. package/dist/tools/page-pdf.js.map +1 -0
  279. package/dist/tools/page-reload.d.ts +6 -0
  280. package/dist/tools/page-reload.d.ts.map +1 -0
  281. package/dist/tools/page-reload.js +89 -0
  282. package/dist/tools/page-reload.js.map +1 -0
  283. package/dist/tools/performance-metrics.d.ts +6 -0
  284. package/dist/tools/performance-metrics.d.ts.map +1 -0
  285. package/dist/tools/performance-metrics.js +158 -0
  286. package/dist/tools/performance-metrics.js.map +1 -0
  287. package/dist/tools/read-page.d.ts +6 -0
  288. package/dist/tools/read-page.d.ts.map +1 -0
  289. package/dist/tools/read-page.js +287 -0
  290. package/dist/tools/read-page.js.map +1 -0
  291. package/dist/tools/request-intercept.d.ts +6 -0
  292. package/dist/tools/request-intercept.d.ts.map +1 -0
  293. package/dist/tools/request-intercept.js +439 -0
  294. package/dist/tools/request-intercept.js.map +1 -0
  295. package/dist/tools/selector-query.d.ts +6 -0
  296. package/dist/tools/selector-query.d.ts.map +1 -0
  297. package/dist/tools/selector-query.js +206 -0
  298. package/dist/tools/selector-query.js.map +1 -0
  299. package/dist/tools/shutdown.d.ts +12 -0
  300. package/dist/tools/shutdown.d.ts.map +1 -0
  301. package/dist/tools/shutdown.js +120 -0
  302. package/dist/tools/shutdown.js.map +1 -0
  303. package/dist/tools/storage.d.ts +6 -0
  304. package/dist/tools/storage.d.ts.map +1 -0
  305. package/dist/tools/storage.js +264 -0
  306. package/dist/tools/storage.js.map +1 -0
  307. package/dist/tools/tabs-close.d.ts +6 -0
  308. package/dist/tools/tabs-close.d.ts.map +1 -0
  309. package/dist/tools/tabs-close.js +124 -0
  310. package/dist/tools/tabs-close.js.map +1 -0
  311. package/dist/tools/tabs-context.d.ts +6 -0
  312. package/dist/tools/tabs-context.d.ts.map +1 -0
  313. package/dist/tools/tabs-context.js +92 -0
  314. package/dist/tools/tabs-context.js.map +1 -0
  315. package/dist/tools/tabs-create.d.ts +6 -0
  316. package/dist/tools/tabs-create.d.ts.map +1 -0
  317. package/dist/tools/tabs-create.js +73 -0
  318. package/dist/tools/tabs-create.js.map +1 -0
  319. package/dist/tools/user-agent.d.ts +6 -0
  320. package/dist/tools/user-agent.d.ts.map +1 -0
  321. package/dist/tools/user-agent.js +128 -0
  322. package/dist/tools/user-agent.js.map +1 -0
  323. package/dist/tools/wait-and-click.d.ts +8 -0
  324. package/dist/tools/wait-and-click.d.ts.map +1 -0
  325. package/dist/tools/wait-and-click.js +290 -0
  326. package/dist/tools/wait-and-click.js.map +1 -0
  327. package/dist/tools/wait-for.d.ts +6 -0
  328. package/dist/tools/wait-for.d.ts.map +1 -0
  329. package/dist/tools/wait-for.js +248 -0
  330. package/dist/tools/wait-for.js.map +1 -0
  331. package/dist/tools/worker-create.d.ts +7 -0
  332. package/dist/tools/worker-create.d.ts.map +1 -0
  333. package/dist/tools/worker-create.js +62 -0
  334. package/dist/tools/worker-create.js.map +1 -0
  335. package/dist/tools/worker-delete.d.ts +6 -0
  336. package/dist/tools/worker-delete.d.ts.map +1 -0
  337. package/dist/tools/worker-delete.js +80 -0
  338. package/dist/tools/worker-delete.js.map +1 -0
  339. package/dist/tools/worker-list.d.ts +6 -0
  340. package/dist/tools/worker-list.d.ts.map +1 -0
  341. package/dist/tools/worker-list.js +67 -0
  342. package/dist/tools/worker-list.js.map +1 -0
  343. package/dist/tools/xpath-query.d.ts +6 -0
  344. package/dist/tools/xpath-query.d.ts.map +1 -0
  345. package/dist/tools/xpath-query.js +230 -0
  346. package/dist/tools/xpath-query.js.map +1 -0
  347. package/dist/types/browser-backend.d.ts +30 -0
  348. package/dist/types/browser-backend.d.ts.map +1 -0
  349. package/dist/types/browser-backend.js +9 -0
  350. package/dist/types/browser-backend.js.map +1 -0
  351. package/dist/types/index.d.ts +3 -0
  352. package/dist/types/index.d.ts.map +1 -0
  353. package/dist/types/index.js +19 -0
  354. package/dist/types/index.js.map +1 -0
  355. package/dist/types/mcp.d.ts +54 -0
  356. package/dist/types/mcp.d.ts.map +1 -0
  357. package/dist/types/mcp.js +14 -0
  358. package/dist/types/mcp.js.map +1 -0
  359. package/dist/types/plan-cache.d.ts +121 -0
  360. package/dist/types/plan-cache.d.ts.map +1 -0
  361. package/dist/types/plan-cache.js +9 -0
  362. package/dist/types/plan-cache.js.map +1 -0
  363. package/dist/types/profile.d.ts +76 -0
  364. package/dist/types/profile.d.ts.map +1 -0
  365. package/dist/types/profile.js +35 -0
  366. package/dist/types/profile.js.map +1 -0
  367. package/dist/types/session.d.ts +65 -0
  368. package/dist/types/session.d.ts.map +1 -0
  369. package/dist/types/session.js +6 -0
  370. package/dist/types/session.js.map +1 -0
  371. package/dist/types/tool-manifest.d.ts +52 -0
  372. package/dist/types/tool-manifest.d.ts.map +1 -0
  373. package/dist/types/tool-manifest.js +37 -0
  374. package/dist/types/tool-manifest.js.map +1 -0
  375. package/dist/utils/atomic-file.d.ts +50 -0
  376. package/dist/utils/atomic-file.d.ts.map +1 -0
  377. package/dist/utils/atomic-file.js +217 -0
  378. package/dist/utils/atomic-file.js.map +1 -0
  379. package/dist/utils/index.d.ts +6 -0
  380. package/dist/utils/index.d.ts.map +1 -0
  381. package/dist/utils/index.js +22 -0
  382. package/dist/utils/index.js.map +1 -0
  383. package/dist/utils/json-validator.d.ts +40 -0
  384. package/dist/utils/json-validator.d.ts.map +1 -0
  385. package/dist/utils/json-validator.js +295 -0
  386. package/dist/utils/json-validator.js.map +1 -0
  387. package/dist/utils/ref-id-manager.d.ts +26 -0
  388. package/dist/utils/ref-id-manager.d.ts.map +1 -0
  389. package/dist/utils/ref-id-manager.js +81 -0
  390. package/dist/utils/ref-id-manager.js.map +1 -0
  391. package/dist/utils/request-queue.d.ts +37 -0
  392. package/dist/utils/request-queue.d.ts.map +1 -0
  393. package/dist/utils/request-queue.js +110 -0
  394. package/dist/utils/request-queue.js.map +1 -0
  395. package/package.json +78 -0
@@ -0,0 +1,302 @@
1
+ "use strict";
2
+ /**
3
+ * Config Recovery System
4
+ * Automatic backup, corruption detection, and recovery for .claude.json
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.createBackup = createBackup;
41
+ exports.recoverConfig = recoverConfig;
42
+ exports.recoverFromBackup = recoverFromBackup;
43
+ exports.watchForCorruption = watchForCorruption;
44
+ exports.getRecoveryStatus = getRecoveryStatus;
45
+ exports.performMaintenance = performMaintenance;
46
+ exports.forceBackup = forceBackup;
47
+ const fs = __importStar(require("fs"));
48
+ const path = __importStar(require("path"));
49
+ const os = __importStar(require("os"));
50
+ const atomic_file_1 = require("../utils/atomic-file");
51
+ const json_validator_1 = require("../utils/json-validator");
52
+ const session_isolator_1 = require("./session-isolator");
53
+ /**
54
+ * Create an automatic backup of .claude.json
55
+ * Should be called before any risky operation
56
+ */
57
+ async function createBackup() {
58
+ const configPath = (0, session_isolator_1.getClaudeConfigPath)();
59
+ if (!fs.existsSync(configPath)) {
60
+ return null;
61
+ }
62
+ try {
63
+ return await (0, atomic_file_1.backupFile)(configPath);
64
+ }
65
+ catch (error) {
66
+ console.error('Failed to create backup:', error.message);
67
+ return null;
68
+ }
69
+ }
70
+ /**
71
+ * Recover corrupted .claude.json
72
+ * Attempts multiple recovery strategies
73
+ */
74
+ async function recoverConfig() {
75
+ const configPath = (0, session_isolator_1.getClaudeConfigPath)();
76
+ // Check if file exists
77
+ if (!fs.existsSync(configPath)) {
78
+ return {
79
+ success: true,
80
+ action: 'none',
81
+ details: 'No config file to recover',
82
+ };
83
+ }
84
+ // Read and validate current config
85
+ const content = fs.readFileSync(configPath, 'utf8');
86
+ const validation = (0, json_validator_1.detectCorruption)(content);
87
+ // If valid, nothing to do
88
+ if (validation.valid) {
89
+ return {
90
+ success: true,
91
+ action: 'none',
92
+ details: 'Config is valid, no recovery needed',
93
+ };
94
+ }
95
+ // Create backup before attempting recovery
96
+ let backupPath = null;
97
+ try {
98
+ backupPath = await (0, atomic_file_1.backupFile)(configPath);
99
+ }
100
+ catch {
101
+ // Continue without backup
102
+ }
103
+ // Strategy 1: Try to extract valid JSON from corrupted content
104
+ const extraction = (0, json_validator_1.extractValidJson)(content);
105
+ if (extraction.success && extraction.data) {
106
+ // Validate the extracted data looks like a Claude config
107
+ const configValidation = (0, json_validator_1.validateClaudeConfig)(extraction.data);
108
+ if (configValidation.valid) {
109
+ await (0, atomic_file_1.writeFileAtomicSafe)(configPath, extraction.data);
110
+ return {
111
+ success: true,
112
+ action: 'recovered',
113
+ originalError: validation.error,
114
+ recoveryMethod: extraction.method,
115
+ backupCreated: backupPath ?? undefined,
116
+ details: `Recovered using ${extraction.method}`,
117
+ };
118
+ }
119
+ }
120
+ // Strategy 2: Restore from most recent backup
121
+ const backups = (0, atomic_file_1.listBackups)('.claude.json');
122
+ if (backups.length > 0) {
123
+ const backupDir = path.join(os.homedir(), '.claude-chrome-parallel', 'backups');
124
+ for (const backup of backups) {
125
+ const backupFilePath = path.join(backupDir, backup);
126
+ const readResult = await (0, atomic_file_1.readFileSafe)(backupFilePath);
127
+ if (readResult.success && readResult.data) {
128
+ const configValidation = (0, json_validator_1.validateClaudeConfig)(readResult.data);
129
+ if (configValidation.valid) {
130
+ await (0, atomic_file_1.restoreFromBackup)(backupFilePath, configPath);
131
+ return {
132
+ success: true,
133
+ action: 'restored_backup',
134
+ originalError: validation.error,
135
+ recoveryMethod: `restored from backup: ${backup}`,
136
+ backupCreated: backupPath ?? undefined,
137
+ details: `Restored from ${backup}`,
138
+ };
139
+ }
140
+ }
141
+ }
142
+ }
143
+ // Strategy 3: Create new empty config
144
+ await (0, atomic_file_1.writeFileAtomicSafe)(configPath, {});
145
+ return {
146
+ success: true,
147
+ action: 'created_new',
148
+ originalError: validation.error,
149
+ recoveryMethod: 'created_new_empty_config',
150
+ backupCreated: backupPath ?? undefined,
151
+ details: 'Created new empty config (all previous data lost)',
152
+ };
153
+ }
154
+ /**
155
+ * Restore from a specific backup
156
+ */
157
+ async function recoverFromBackup(backupName) {
158
+ const configPath = (0, session_isolator_1.getClaudeConfigPath)();
159
+ const backupDir = path.join(os.homedir(), '.claude-chrome-parallel', 'backups');
160
+ const backups = (0, atomic_file_1.listBackups)('.claude.json');
161
+ if (backups.length === 0) {
162
+ return {
163
+ success: false,
164
+ action: 'none',
165
+ details: 'No backups available',
166
+ };
167
+ }
168
+ // Use specified backup or most recent
169
+ const targetBackup = backupName || backups[0];
170
+ const backupPath = path.join(backupDir, targetBackup);
171
+ if (!fs.existsSync(backupPath)) {
172
+ return {
173
+ success: false,
174
+ action: 'none',
175
+ details: `Backup not found: ${targetBackup}`,
176
+ };
177
+ }
178
+ // Validate backup content
179
+ const readResult = await (0, atomic_file_1.readFileSafe)(backupPath);
180
+ if (!readResult.success || !readResult.data) {
181
+ return {
182
+ success: false,
183
+ action: 'none',
184
+ details: `Backup is corrupted: ${targetBackup}`,
185
+ };
186
+ }
187
+ // Create backup of current (corrupted) file
188
+ let currentBackup = null;
189
+ if (fs.existsSync(configPath)) {
190
+ try {
191
+ currentBackup = await (0, atomic_file_1.backupFile)(configPath);
192
+ }
193
+ catch {
194
+ // Continue without backup
195
+ }
196
+ }
197
+ // Restore
198
+ await (0, atomic_file_1.restoreFromBackup)(backupPath, configPath);
199
+ return {
200
+ success: true,
201
+ action: 'restored_backup',
202
+ recoveryMethod: `manual restore from ${targetBackup}`,
203
+ backupCreated: currentBackup ?? undefined,
204
+ details: `Restored from ${targetBackup}`,
205
+ };
206
+ }
207
+ /**
208
+ * Watch for corruption and auto-recover
209
+ */
210
+ function watchForCorruption(options = {}) {
211
+ const { interval = 5000, autoRecover = true, onCorruption, onRecovery, } = options;
212
+ let lastContent = null;
213
+ let stopped = false;
214
+ const check = async () => {
215
+ if (stopped)
216
+ return;
217
+ const configPath = (0, session_isolator_1.getClaudeConfigPath)();
218
+ if (!fs.existsSync(configPath)) {
219
+ lastContent = null;
220
+ return;
221
+ }
222
+ try {
223
+ const content = fs.readFileSync(configPath, 'utf8');
224
+ // Skip if content hasn't changed
225
+ if (content === lastContent) {
226
+ return;
227
+ }
228
+ lastContent = content;
229
+ // Check for corruption
230
+ const validation = (0, json_validator_1.detectCorruption)(content);
231
+ if (!validation.valid && validation.corrupted) {
232
+ onCorruption?.(validation);
233
+ if (autoRecover) {
234
+ const report = await recoverConfig();
235
+ onRecovery?.(report);
236
+ }
237
+ }
238
+ }
239
+ catch (error) {
240
+ // File might be in use, skip this check
241
+ }
242
+ };
243
+ // Initial check
244
+ check();
245
+ // Start interval
246
+ const intervalId = setInterval(check, interval);
247
+ return {
248
+ stop: () => {
249
+ stopped = true;
250
+ clearInterval(intervalId);
251
+ },
252
+ };
253
+ }
254
+ /**
255
+ * Get recovery status
256
+ */
257
+ async function getRecoveryStatus() {
258
+ const configPath = (0, session_isolator_1.getClaudeConfigPath)();
259
+ const backups = (0, atomic_file_1.listBackups)('.claude.json');
260
+ const status = {
261
+ configExists: fs.existsSync(configPath),
262
+ configHealthy: false,
263
+ backupsAvailable: backups.length,
264
+ oldestBackup: backups[backups.length - 1],
265
+ newestBackup: backups[0],
266
+ };
267
+ if (status.configExists) {
268
+ const content = fs.readFileSync(configPath, 'utf8');
269
+ const validation = (0, json_validator_1.detectCorruption)(content);
270
+ status.configHealthy = validation.valid;
271
+ if (!validation.valid) {
272
+ status.error = validation.error;
273
+ }
274
+ }
275
+ else {
276
+ status.configHealthy = true; // No config is technically healthy
277
+ }
278
+ return status;
279
+ }
280
+ /**
281
+ * Perform maintenance: cleanup old backups
282
+ */
283
+ function performMaintenance(keepBackups = 10) {
284
+ const removed = (0, atomic_file_1.cleanupBackups)('.claude.json', keepBackups);
285
+ return { backupsRemoved: removed };
286
+ }
287
+ /**
288
+ * Force a backup now (manual trigger)
289
+ */
290
+ async function forceBackup() {
291
+ try {
292
+ const backupPath = await createBackup();
293
+ if (backupPath) {
294
+ return { success: true, path: backupPath };
295
+ }
296
+ return { success: false, error: 'No config file to backup' };
297
+ }
298
+ catch (error) {
299
+ return { success: false, error: error.message };
300
+ }
301
+ }
302
+ //# sourceMappingURL=config-recovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-recovery.js","sourceRoot":"","sources":["../../src/config/config-recovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Global Configuration - Runtime settings for the MCP server
3
+ */
4
+ export interface GlobalConfig {
5
+ /** Chrome remote debugging port */
6
+ port: number;
7
+ /** Auto-launch Chrome if not running (default: false) */
8
+ autoLaunch: boolean;
9
+ /** Custom user data directory for Chrome (default: uses real Chrome profile on macOS, temp dir elsewhere) */
10
+ userDataDir?: string;
11
+ /** Path to custom Chrome binary (e.g., chrome-headless-shell) */
12
+ chromeBinary?: string;
13
+ /** Use chrome-headless-shell if available (default: false) */
14
+ useHeadlessShell?: boolean;
15
+ /** Chrome Pool settings for managing multiple Chrome instances */
16
+ pool?: {
17
+ /** Enable the Chrome pool (default: true) */
18
+ enabled: boolean;
19
+ /** Maximum number of Chrome instances in the pool (default: 5) */
20
+ maxInstances: number;
21
+ /** Base port for Chrome instances; subsequent instances use basePort+1, +2, etc. (default: 9222) */
22
+ basePort: number;
23
+ };
24
+ /** Hybrid mode settings (Lightpanda + Chrome routing) */
25
+ hybrid?: {
26
+ /** Enable hybrid mode (default: false) */
27
+ enabled: boolean;
28
+ /** Lightpanda debugging port (default: 9223) */
29
+ lightpandaPort: number;
30
+ /** Circuit breaker settings */
31
+ circuitBreaker?: {
32
+ maxFailures?: number;
33
+ cooldownMs?: number;
34
+ };
35
+ /** Cookie sync settings */
36
+ cookieSync?: {
37
+ intervalMs?: number;
38
+ };
39
+ };
40
+ }
41
+ /**
42
+ * Get global configuration
43
+ */
44
+ export declare function getGlobalConfig(): GlobalConfig;
45
+ /**
46
+ * Set global configuration
47
+ */
48
+ export declare function setGlobalConfig(newConfig: Partial<GlobalConfig>): void;
49
+ //# sourceMappingURL=global.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global.d.ts","sourceRoot":"","sources":["../../src/config/global.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,YAAY;IAC3B,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,UAAU,EAAE,OAAO,CAAC;IACpB,6GAA6G;IAC7G,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kEAAkE;IAClE,IAAI,CAAC,EAAE;QACL,6CAA6C;QAC7C,OAAO,EAAE,OAAO,CAAC;QACjB,kEAAkE;QAClE,YAAY,EAAE,MAAM,CAAC;QACrB,oGAAoG;QACpG,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,yDAAyD;IACzD,MAAM,CAAC,EAAE;QACP,0CAA0C;QAC1C,OAAO,EAAE,OAAO,CAAC;QACjB,gDAAgD;QAChD,cAAc,EAAE,MAAM,CAAC;QACvB,+BAA+B;QAC/B,cAAc,CAAC,EAAE;YACf,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC;QACF,2BAA2B;QAC3B,UAAU,CAAC,EAAE;YACX,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC;KACH,CAAC;CACH;AAOD;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAEtE"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /**
3
+ * Global Configuration - Runtime settings for the MCP server
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getGlobalConfig = getGlobalConfig;
7
+ exports.setGlobalConfig = setGlobalConfig;
8
+ const config = {
9
+ port: 9222,
10
+ autoLaunch: false,
11
+ };
12
+ /**
13
+ * Get global configuration
14
+ */
15
+ function getGlobalConfig() {
16
+ return config;
17
+ }
18
+ /**
19
+ * Set global configuration
20
+ */
21
+ function setGlobalConfig(newConfig) {
22
+ Object.assign(config, newConfig);
23
+ }
24
+ //# sourceMappingURL=global.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global.js","sourceRoot":"","sources":["../../src/config/global.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAgDH,0CAEC;AAKD,0CAEC;AAjBD,MAAM,MAAM,GAAiB;IAC3B,IAAI,EAAE,IAAI;IACV,UAAU,EAAE,KAAK;CAClB,CAAC;AAEF;;GAEG;AACH,SAAgB,eAAe;IAC7B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,SAAgC;IAC9D,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Config module exports
3
+ */
4
+ export * from './session-isolator';
5
+ export * from './config-recovery';
6
+ export * from './global';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ /**
3
+ * Config module exports
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ __exportStar(require("./session-isolator"), exports);
21
+ __exportStar(require("./config-recovery"), exports);
22
+ __exportStar(require("./global"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,qDAAmC;AACnC,oDAAkC;AAClC,2CAAyB"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Session Isolator
3
+ * Creates isolated configuration environments for each Claude Code session
4
+ * Prevents race conditions by giving each session its own config directory
5
+ */
6
+ export interface IsolatedSession {
7
+ /** Unique session identifier */
8
+ id: string;
9
+ /** Path to isolated config directory */
10
+ configDir: string;
11
+ /** Path to the .claude.json in isolated directory */
12
+ claudeConfigPath: string;
13
+ /** Original HOME directory */
14
+ originalHome: string;
15
+ /** Creation timestamp */
16
+ createdAt: Date;
17
+ /** Session metadata */
18
+ metadata?: Record<string, unknown>;
19
+ }
20
+ export interface SessionIsolatorOptions {
21
+ /** Base directory for sessions (defaults to ~/.claude-chrome-parallel/sessions) */
22
+ baseDir?: string;
23
+ /** Whether to copy existing config (defaults to true) */
24
+ copyExistingConfig?: boolean;
25
+ /** Maximum age for stale sessions in ms (defaults to 24 hours) */
26
+ maxSessionAge?: number;
27
+ }
28
+ /**
29
+ * Get the path to the user's .claude.json
30
+ */
31
+ export declare function getClaudeConfigPath(): string;
32
+ /**
33
+ * Create an isolated session environment
34
+ * Each session gets its own directory that acts as HOME for Claude Code
35
+ */
36
+ export declare function createIsolatedSession(options?: SessionIsolatorOptions): Promise<IsolatedSession>;
37
+ /**
38
+ * Get the config path for a session
39
+ */
40
+ export declare function getSessionConfigPath(session: IsolatedSession): string;
41
+ /**
42
+ * Get environment variables for running Claude Code in isolated session
43
+ */
44
+ export declare function getSessionEnvironment(session: IsolatedSession): Record<string, string>;
45
+ /**
46
+ * Clean up an isolated session
47
+ */
48
+ export declare function cleanupIsolatedSession(session: IsolatedSession, options?: {
49
+ syncBack?: boolean;
50
+ }): Promise<void>;
51
+ /**
52
+ * Sync session config changes back to original .claude.json
53
+ * Uses atomic write to prevent corruption
54
+ */
55
+ export declare function syncSessionConfig(session: IsolatedSession): Promise<boolean>;
56
+ /**
57
+ * List all active sessions
58
+ */
59
+ export declare function listSessions(options?: SessionIsolatorOptions): IsolatedSession[];
60
+ /**
61
+ * Clean up stale sessions (older than maxAge)
62
+ */
63
+ export declare function cleanupStaleSessions(options?: SessionIsolatorOptions): Promise<number>;
64
+ /**
65
+ * Get a session by ID
66
+ */
67
+ export declare function getSession(sessionId: string, options?: SessionIsolatorOptions): IsolatedSession | null;
68
+ /**
69
+ * Check if original .claude.json needs recovery
70
+ */
71
+ export declare function checkOriginalConfigHealth(): Promise<{
72
+ healthy: boolean;
73
+ error?: string;
74
+ suggestion?: string;
75
+ }>;
76
+ //# sourceMappingURL=session-isolator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-isolator.d.ts","sourceRoot":"","sources":["../../src/config/session-isolator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,MAAM,WAAW,eAAe;IAC9B,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,gBAAgB,EAAE,MAAM,CAAC;IACzB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,SAAS,EAAE,IAAI,CAAC;IAChB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,sBAAsB;IACrC,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAQD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,eAAe,CAAC,CA0D1B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAErE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,eAAe,GACvB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,eAAe,EACxB,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,OAAO,CAAC,CAsBlB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,GAAE,sBAA2B,GACnC,eAAe,EAAE,CAmCnB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,MAAM,CAAC,CAejB;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,sBAA2B,GACnC,eAAe,GAAG,IAAI,CAkBxB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC;IACzD,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC,CAyBD"}