browser-debugger-cli 0.5.1 → 0.6.1

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 (822) hide show
  1. package/README.md +60 -10
  2. package/dist/__tests__/smoke/error-handling.smoke.test.js +14 -59
  3. package/dist/__tests__/smoke/error-handling.smoke.test.js.map +1 -1
  4. package/dist/__tests__/smoke/session-lifecycle.smoke.test.js +1 -1
  5. package/dist/__tests__/smoke/session-lifecycle.smoke.test.js.map +1 -1
  6. package/dist/__testutils__/testCleanup.js +1 -1
  7. package/dist/__testutils__/testCleanup.js.map +1 -1
  8. package/dist/cdp/protocol.d.ts +73 -0
  9. package/dist/cdp/protocol.d.ts.map +1 -0
  10. package/dist/cdp/protocol.js +121 -0
  11. package/dist/cdp/protocol.js.map +1 -0
  12. package/dist/cdp/schema.d.ts +159 -0
  13. package/dist/cdp/schema.d.ts.map +1 -0
  14. package/dist/cdp/schema.js +256 -0
  15. package/dist/cdp/schema.js.map +1 -0
  16. package/dist/cdp/types.d.ts +139 -0
  17. package/dist/cdp/types.d.ts.map +1 -0
  18. package/dist/cdp/types.js +7 -0
  19. package/dist/cdp/types.js.map +1 -0
  20. package/dist/commands/__tests__/cdp.contract.test.js +2 -2
  21. package/dist/commands/__tests__/cdp.contract.test.js.map +1 -1
  22. package/dist/commands/__tests__/domEval.contract.test.js +8 -4
  23. package/dist/commands/__tests__/domEval.contract.test.js.map +1 -1
  24. package/dist/commands/cdp.d.ts +10 -1
  25. package/dist/commands/cdp.d.ts.map +1 -1
  26. package/dist/commands/cdp.js +331 -27
  27. package/dist/commands/cdp.js.map +1 -1
  28. package/dist/commands/cleanup.d.ts.map +1 -1
  29. package/dist/commands/cleanup.js +7 -20
  30. package/dist/commands/cleanup.js.map +1 -1
  31. package/dist/commands/console.d.ts.map +1 -1
  32. package/dist/commands/console.js +3 -8
  33. package/dist/commands/console.js.map +1 -1
  34. package/dist/commands/details.d.ts.map +1 -1
  35. package/dist/commands/details.js +1 -1
  36. package/dist/commands/details.js.map +1 -1
  37. package/dist/commands/{domEvalHelpers.d.ts → dom/evalHelpers.d.ts} +9 -19
  38. package/dist/commands/dom/evalHelpers.d.ts.map +1 -0
  39. package/dist/commands/{domEvalHelpers.js → dom/evalHelpers.js} +15 -14
  40. package/dist/commands/dom/evalHelpers.js.map +1 -0
  41. package/dist/commands/dom/formFillHelpers.d.ts +47 -0
  42. package/dist/commands/dom/formFillHelpers.d.ts.map +1 -0
  43. package/dist/commands/dom/formFillHelpers.js +185 -0
  44. package/dist/commands/dom/formFillHelpers.js.map +1 -0
  45. package/dist/commands/dom/formInteraction.d.ts +17 -0
  46. package/dist/commands/dom/formInteraction.d.ts.map +1 -0
  47. package/dist/commands/dom/formInteraction.js +239 -0
  48. package/dist/commands/dom/formInteraction.js.map +1 -0
  49. package/dist/commands/dom/formSubmitHelpers.d.ts +58 -0
  50. package/dist/commands/dom/formSubmitHelpers.d.ts.map +1 -0
  51. package/dist/commands/dom/formSubmitHelpers.js +176 -0
  52. package/dist/commands/dom/formSubmitHelpers.js.map +1 -0
  53. package/dist/commands/dom/helpers.d.ts +34 -0
  54. package/dist/commands/dom/helpers.d.ts.map +1 -0
  55. package/dist/commands/dom/helpers.js +244 -0
  56. package/dist/commands/dom/helpers.js.map +1 -0
  57. package/dist/commands/{dom.d.ts → dom/index.d.ts} +1 -1
  58. package/dist/commands/dom/index.d.ts.map +1 -0
  59. package/dist/commands/dom/index.js +154 -0
  60. package/dist/commands/dom/index.js.map +1 -0
  61. package/dist/commands/dom/reactEventHelpers.d.ts +80 -0
  62. package/dist/commands/dom/reactEventHelpers.d.ts.map +1 -0
  63. package/dist/commands/dom/reactEventHelpers.js +274 -0
  64. package/dist/commands/dom/reactEventHelpers.js.map +1 -0
  65. package/dist/commands/network.js +1 -1
  66. package/dist/commands/network.js.map +1 -1
  67. package/dist/commands/peek.d.ts.map +1 -1
  68. package/dist/commands/peek.js +52 -51
  69. package/dist/commands/peek.js.map +1 -1
  70. package/dist/commands/shared/CommandRunner.d.ts +2 -0
  71. package/dist/commands/shared/CommandRunner.d.ts.map +1 -1
  72. package/dist/commands/shared/CommandRunner.js +16 -3
  73. package/dist/commands/shared/CommandRunner.js.map +1 -1
  74. package/dist/commands/shared/commonOptions.d.ts.map +1 -1
  75. package/dist/commands/shared/commonOptions.js +5 -3
  76. package/dist/commands/shared/commonOptions.js.map +1 -1
  77. package/dist/commands/shared/daemonErrorHandler.d.ts +30 -0
  78. package/dist/commands/shared/daemonErrorHandler.d.ts.map +1 -0
  79. package/dist/commands/shared/daemonErrorHandler.js +32 -0
  80. package/dist/commands/shared/daemonErrorHandler.js.map +1 -0
  81. package/dist/commands/shared/{daemonSessionController.d.ts → startHelpers.d.ts} +7 -1
  82. package/dist/commands/shared/startHelpers.d.ts.map +1 -0
  83. package/dist/commands/shared/{daemonSessionController.js → startHelpers.js} +13 -5
  84. package/dist/commands/shared/startHelpers.js.map +1 -0
  85. package/dist/commands/shared/validation.d.ts +44 -0
  86. package/dist/commands/shared/validation.d.ts.map +1 -0
  87. package/dist/commands/shared/validation.js +68 -0
  88. package/dist/commands/shared/validation.js.map +1 -0
  89. package/dist/commands/start.d.ts.map +1 -1
  90. package/dist/commands/start.js +23 -30
  91. package/dist/commands/start.js.map +1 -1
  92. package/dist/commands/status.d.ts.map +1 -1
  93. package/dist/commands/status.js +8 -6
  94. package/dist/commands/status.js.map +1 -1
  95. package/dist/commands/stop.d.ts.map +1 -1
  96. package/dist/commands/stop.js +7 -18
  97. package/dist/commands/stop.js.map +1 -1
  98. package/dist/commands/tail.d.ts.map +1 -1
  99. package/dist/commands/tail.js +53 -45
  100. package/dist/commands/tail.js.map +1 -1
  101. package/dist/commands/types.d.ts +43 -0
  102. package/dist/commands/types.d.ts.map +1 -0
  103. package/dist/commands/types.js +8 -0
  104. package/dist/commands/types.js.map +1 -0
  105. package/dist/commands.d.ts.map +1 -1
  106. package/dist/commands.js +3 -1
  107. package/dist/commands.js.map +1 -1
  108. package/dist/connection/__tests__/cdp.contract.test.js +7 -7
  109. package/dist/connection/__tests__/cdp.contract.test.js.map +1 -1
  110. package/dist/connection/__tests__/handlers.unit.test.d.ts +11 -0
  111. package/dist/connection/__tests__/handlers.unit.test.d.ts.map +1 -0
  112. package/dist/connection/__tests__/handlers.unit.test.js +220 -0
  113. package/dist/connection/__tests__/handlers.unit.test.js.map +1 -0
  114. package/dist/connection/__tests__/pageReadiness.contract.test.d.ts +14 -0
  115. package/dist/connection/__tests__/pageReadiness.contract.test.d.ts.map +1 -0
  116. package/dist/connection/__tests__/pageReadiness.contract.test.js +382 -0
  117. package/dist/connection/__tests__/pageReadiness.contract.test.js.map +1 -0
  118. package/dist/connection/__tests__/portReservation.contract.test.d.ts +14 -0
  119. package/dist/connection/__tests__/portReservation.contract.test.d.ts.map +1 -0
  120. package/dist/connection/__tests__/portReservation.contract.test.js +250 -0
  121. package/dist/connection/__tests__/portReservation.contract.test.js.map +1 -0
  122. package/dist/connection/cdp.d.ts +34 -11
  123. package/dist/connection/cdp.d.ts.map +1 -1
  124. package/dist/connection/cdp.js +75 -46
  125. package/dist/connection/cdp.js.map +1 -1
  126. package/dist/connection/config.d.ts +63 -0
  127. package/dist/connection/config.d.ts.map +1 -0
  128. package/dist/connection/config.js +46 -0
  129. package/dist/connection/config.js.map +1 -0
  130. package/dist/connection/errors.d.ts +6 -21
  131. package/dist/connection/errors.d.ts.map +1 -1
  132. package/dist/connection/errors.js +7 -26
  133. package/dist/connection/errors.js.map +1 -1
  134. package/dist/connection/events.d.ts +30 -0
  135. package/dist/connection/events.d.ts.map +1 -0
  136. package/dist/connection/events.js +8 -0
  137. package/dist/connection/events.js.map +1 -0
  138. package/dist/connection/handlers.d.ts +35 -5
  139. package/dist/connection/handlers.d.ts.map +1 -1
  140. package/dist/connection/handlers.js +34 -10
  141. package/dist/connection/handlers.js.map +1 -1
  142. package/dist/connection/launcher/binaryResolver.d.ts +40 -0
  143. package/dist/connection/launcher/binaryResolver.d.ts.map +1 -0
  144. package/dist/connection/launcher/binaryResolver.js +78 -0
  145. package/dist/connection/launcher/binaryResolver.js.map +1 -0
  146. package/dist/connection/launcher/flagsBuilder.d.ts +64 -0
  147. package/dist/connection/launcher/flagsBuilder.d.ts.map +1 -0
  148. package/dist/connection/launcher/flagsBuilder.js +84 -0
  149. package/dist/connection/launcher/flagsBuilder.js.map +1 -0
  150. package/dist/connection/launcher/preferencesLoader.d.ts +74 -0
  151. package/dist/connection/launcher/preferencesLoader.d.ts.map +1 -0
  152. package/dist/connection/launcher/preferencesLoader.js +89 -0
  153. package/dist/connection/launcher/preferencesLoader.js.map +1 -0
  154. package/dist/connection/launcher.d.ts +24 -1
  155. package/dist/connection/launcher.d.ts.map +1 -1
  156. package/dist/connection/launcher.js +38 -201
  157. package/dist/connection/launcher.js.map +1 -1
  158. package/dist/connection/pageReadiness.d.ts +8 -8
  159. package/dist/connection/pageReadiness.d.ts.map +1 -1
  160. package/dist/connection/pageReadiness.js +42 -58
  161. package/dist/connection/pageReadiness.js.map +1 -1
  162. package/dist/connection/portReservation.d.ts +40 -0
  163. package/dist/connection/portReservation.d.ts.map +1 -0
  164. package/dist/connection/portReservation.js +55 -0
  165. package/dist/connection/portReservation.js.map +1 -0
  166. package/dist/connection/typed-cdp.d.ts +145 -0
  167. package/dist/connection/typed-cdp.d.ts.map +1 -0
  168. package/dist/connection/typed-cdp.js +120 -0
  169. package/dist/connection/typed-cdp.js.map +1 -0
  170. package/dist/connection/types.d.ts +103 -0
  171. package/dist/connection/types.d.ts.map +1 -0
  172. package/dist/connection/types.js +8 -0
  173. package/dist/connection/types.js.map +1 -0
  174. package/dist/constants.d.ts +0 -83
  175. package/dist/constants.d.ts.map +1 -1
  176. package/dist/constants.js +0 -83
  177. package/dist/constants.js.map +1 -1
  178. package/dist/daemon/__tests__/JsonlParser.unit.test.d.ts +8 -0
  179. package/dist/daemon/__tests__/JsonlParser.unit.test.d.ts.map +1 -0
  180. package/dist/daemon/__tests__/JsonlParser.unit.test.js +140 -0
  181. package/dist/daemon/__tests__/JsonlParser.unit.test.js.map +1 -0
  182. package/dist/daemon/__tests__/PendingRequestManager.unit.test.d.ts +8 -0
  183. package/dist/daemon/__tests__/PendingRequestManager.unit.test.d.ts.map +1 -0
  184. package/dist/daemon/__tests__/PendingRequestManager.unit.test.js +276 -0
  185. package/dist/daemon/__tests__/PendingRequestManager.unit.test.js.map +1 -0
  186. package/dist/daemon/__tests__/TelemetryStore.unit.test.d.ts +8 -0
  187. package/dist/daemon/__tests__/TelemetryStore.unit.test.d.ts.map +1 -0
  188. package/dist/daemon/__tests__/TelemetryStore.unit.test.js +290 -0
  189. package/dist/daemon/__tests__/TelemetryStore.unit.test.js.map +1 -0
  190. package/dist/daemon/__tests__/commandRegistry.contract.test.d.ts +8 -0
  191. package/dist/daemon/__tests__/commandRegistry.contract.test.d.ts.map +1 -0
  192. package/dist/daemon/__tests__/commandRegistry.contract.test.js +384 -0
  193. package/dist/daemon/__tests__/commandRegistry.contract.test.js.map +1 -0
  194. package/dist/daemon/__tests__/ipcServer.contract.test.js +2 -1
  195. package/dist/daemon/__tests__/ipcServer.contract.test.js.map +1 -1
  196. package/dist/daemon/errors.d.ts +65 -0
  197. package/dist/daemon/errors.d.ts.map +1 -0
  198. package/dist/daemon/errors.js +82 -0
  199. package/dist/daemon/errors.js.map +1 -0
  200. package/dist/daemon/handlers/CommandHandlers.d.ts +32 -0
  201. package/dist/daemon/handlers/CommandHandlers.d.ts.map +1 -0
  202. package/dist/daemon/handlers/CommandHandlers.js +93 -0
  203. package/dist/daemon/handlers/CommandHandlers.js.map +1 -0
  204. package/dist/daemon/handlers/QueryHandlers.d.ts +35 -0
  205. package/dist/daemon/handlers/QueryHandlers.d.ts.map +1 -0
  206. package/dist/daemon/handlers/QueryHandlers.js +176 -0
  207. package/dist/daemon/handlers/QueryHandlers.js.map +1 -0
  208. package/dist/daemon/handlers/SessionHandlers.d.ts +32 -0
  209. package/dist/daemon/handlers/SessionHandlers.d.ts.map +1 -0
  210. package/dist/daemon/handlers/SessionHandlers.js +227 -0
  211. package/dist/daemon/handlers/SessionHandlers.js.map +1 -0
  212. package/dist/daemon/handlers/pendingRequests.d.ts +50 -0
  213. package/dist/daemon/handlers/pendingRequests.d.ts.map +1 -0
  214. package/dist/daemon/handlers/pendingRequests.js +57 -0
  215. package/dist/daemon/handlers/pendingRequests.js.map +1 -0
  216. package/dist/daemon/handlers/requestHandlers.d.ts +51 -0
  217. package/dist/daemon/handlers/requestHandlers.d.ts.map +1 -0
  218. package/dist/daemon/handlers/requestHandlers.js +61 -0
  219. package/dist/daemon/handlers/requestHandlers.js.map +1 -0
  220. package/dist/daemon/handlers/responseHandler.d.ts +42 -0
  221. package/dist/daemon/handlers/responseHandler.d.ts.map +1 -0
  222. package/dist/daemon/handlers/responseHandler.js +195 -0
  223. package/dist/daemon/handlers/responseHandler.js.map +1 -0
  224. package/dist/daemon/ipcServer.d.ts +19 -41
  225. package/dist/daemon/ipcServer.d.ts.map +1 -1
  226. package/dist/daemon/ipcServer.js +83 -655
  227. package/dist/daemon/ipcServer.js.map +1 -1
  228. package/dist/daemon/launcher.d.ts.map +1 -1
  229. package/dist/daemon/launcher.js +6 -3
  230. package/dist/daemon/launcher.js.map +1 -1
  231. package/dist/daemon/lifecycle/cdpSetup.d.ts +24 -0
  232. package/dist/daemon/lifecycle/cdpSetup.d.ts.map +1 -0
  233. package/dist/daemon/lifecycle/cdpSetup.js +59 -0
  234. package/dist/daemon/lifecycle/cdpSetup.js.map +1 -0
  235. package/dist/daemon/lifecycle/chromeConnection.d.ts +17 -0
  236. package/dist/daemon/lifecycle/chromeConnection.d.ts.map +1 -0
  237. package/dist/daemon/lifecycle/chromeConnection.js +80 -0
  238. package/dist/daemon/lifecycle/chromeConnection.js.map +1 -0
  239. package/dist/daemon/lifecycle/signalHandlers.d.ts +14 -0
  240. package/dist/daemon/lifecycle/signalHandlers.d.ts.map +1 -0
  241. package/dist/daemon/lifecycle/signalHandlers.js +35 -0
  242. package/dist/daemon/lifecycle/signalHandlers.js.map +1 -0
  243. package/dist/daemon/lifecycle/workerCleanup.d.ts +27 -0
  244. package/dist/daemon/lifecycle/workerCleanup.d.ts.map +1 -0
  245. package/dist/daemon/lifecycle/workerCleanup.js +144 -0
  246. package/dist/daemon/lifecycle/workerCleanup.js.map +1 -0
  247. package/dist/daemon/lifecycle/workerConfig.d.ts +14 -0
  248. package/dist/daemon/lifecycle/workerConfig.d.ts.map +1 -0
  249. package/dist/daemon/lifecycle/workerConfig.js +66 -0
  250. package/dist/daemon/lifecycle/workerConfig.js.map +1 -0
  251. package/dist/daemon/lifecycle/workerIpc.d.ts +14 -0
  252. package/dist/daemon/lifecycle/workerIpc.d.ts.map +1 -0
  253. package/dist/daemon/lifecycle/workerIpc.js +87 -0
  254. package/dist/daemon/lifecycle/workerIpc.js.map +1 -0
  255. package/dist/daemon/server/JsonlParser.d.ts +31 -0
  256. package/dist/daemon/server/JsonlParser.d.ts.map +1 -0
  257. package/dist/daemon/server/JsonlParser.js +57 -0
  258. package/dist/daemon/server/JsonlParser.js.map +1 -0
  259. package/dist/daemon/server/SocketServer.d.ts.map +1 -1
  260. package/dist/daemon/server/SocketServer.js +2 -2
  261. package/dist/daemon/server/SocketServer.js.map +1 -1
  262. package/dist/daemon/server/WorkerManager.d.ts +3 -3
  263. package/dist/daemon/server/WorkerManager.d.ts.map +1 -1
  264. package/dist/daemon/server/WorkerManager.js +10 -19
  265. package/dist/daemon/server/WorkerManager.js.map +1 -1
  266. package/dist/daemon/services/SessionService.d.ts +87 -0
  267. package/dist/daemon/services/SessionService.d.ts.map +1 -0
  268. package/dist/daemon/services/SessionService.js +45 -0
  269. package/dist/daemon/services/SessionService.js.map +1 -0
  270. package/dist/daemon/startSession.d.ts.map +1 -1
  271. package/dist/daemon/startSession.js +54 -31
  272. package/dist/daemon/startSession.js.map +1 -1
  273. package/dist/daemon/worker/commandRegistry.d.ts +1 -1
  274. package/dist/daemon/worker/commandRegistry.d.ts.map +1 -1
  275. package/dist/daemon/worker/commandRegistry.js +20 -215
  276. package/dist/daemon/worker/commandRegistry.js.map +1 -1
  277. package/dist/daemon/worker.d.ts +3 -12
  278. package/dist/daemon/worker.d.ts.map +1 -1
  279. package/dist/daemon/worker.js +47 -367
  280. package/dist/daemon/worker.js.map +1 -1
  281. package/dist/index.js +1 -1
  282. package/dist/index.js.map +1 -1
  283. package/dist/ipc/__tests__/client.contract.test.d.ts +0 -15
  284. package/dist/ipc/__tests__/client.contract.test.d.ts.map +1 -1
  285. package/dist/ipc/__tests__/client.contract.test.js +8 -23
  286. package/dist/ipc/__tests__/client.contract.test.js.map +1 -1
  287. package/dist/ipc/__tests__/errors.unit.test.d.ts +7 -0
  288. package/dist/ipc/__tests__/errors.unit.test.d.ts.map +1 -0
  289. package/dist/ipc/__tests__/errors.unit.test.js +77 -0
  290. package/dist/ipc/__tests__/errors.unit.test.js.map +1 -0
  291. package/dist/ipc/__tests__/guards.unit.test.d.ts +7 -0
  292. package/dist/ipc/__tests__/guards.unit.test.d.ts.map +1 -0
  293. package/dist/ipc/__tests__/guards.unit.test.js +73 -0
  294. package/dist/ipc/__tests__/guards.unit.test.js.map +1 -0
  295. package/dist/ipc/__tests__/jsonl.unit.test.d.ts +7 -0
  296. package/dist/ipc/__tests__/jsonl.unit.test.d.ts.map +1 -0
  297. package/dist/ipc/__tests__/jsonl.unit.test.js +85 -0
  298. package/dist/ipc/__tests__/jsonl.unit.test.js.map +1 -0
  299. package/dist/ipc/__tests__/validation.unit.test.d.ts +7 -0
  300. package/dist/ipc/__tests__/validation.unit.test.d.ts.map +1 -0
  301. package/dist/ipc/__tests__/validation.unit.test.js +60 -0
  302. package/dist/ipc/__tests__/validation.unit.test.js.map +1 -0
  303. package/dist/ipc/client.d.ts +93 -84
  304. package/dist/ipc/client.d.ts.map +1 -1
  305. package/dist/ipc/client.js +121 -192
  306. package/dist/ipc/client.js.map +1 -1
  307. package/dist/ipc/index.d.ts +17 -0
  308. package/dist/ipc/index.d.ts.map +1 -0
  309. package/dist/ipc/index.js +23 -0
  310. package/dist/ipc/index.js.map +1 -0
  311. package/dist/ipc/protocol/commands.d.ts +144 -0
  312. package/dist/ipc/protocol/commands.d.ts.map +1 -0
  313. package/dist/ipc/protocol/commands.js +23 -0
  314. package/dist/ipc/protocol/commands.js.map +1 -0
  315. package/dist/ipc/protocol/guards.d.ts +47 -0
  316. package/dist/ipc/protocol/guards.d.ts.map +1 -0
  317. package/dist/ipc/protocol/guards.js +62 -0
  318. package/dist/ipc/protocol/guards.js.map +1 -0
  319. package/dist/ipc/protocol/index.d.ts +9 -0
  320. package/dist/ipc/protocol/index.d.ts.map +1 -0
  321. package/dist/ipc/protocol/index.js +8 -0
  322. package/dist/ipc/protocol/index.js.map +1 -0
  323. package/dist/ipc/protocol/messages.d.ts +64 -0
  324. package/dist/ipc/protocol/messages.d.ts.map +1 -0
  325. package/dist/ipc/protocol/messages.js +8 -0
  326. package/dist/ipc/protocol/messages.js.map +1 -0
  327. package/dist/ipc/session/errors.d.ts +25 -0
  328. package/dist/ipc/session/errors.d.ts.map +1 -0
  329. package/dist/ipc/{types.js → session/errors.js} +11 -6
  330. package/dist/ipc/session/errors.js.map +1 -0
  331. package/dist/ipc/session/index.d.ts +16 -0
  332. package/dist/ipc/session/index.d.ts.map +1 -0
  333. package/dist/ipc/session/index.js +7 -0
  334. package/dist/ipc/session/index.js.map +1 -0
  335. package/dist/ipc/session/lifecycle.d.ts +125 -0
  336. package/dist/ipc/session/lifecycle.d.ts.map +1 -0
  337. package/dist/ipc/session/lifecycle.js +7 -0
  338. package/dist/ipc/session/lifecycle.js.map +1 -0
  339. package/dist/ipc/session/queries.d.ts +94 -0
  340. package/dist/ipc/session/queries.d.ts.map +1 -0
  341. package/dist/ipc/session/queries.js +7 -0
  342. package/dist/ipc/session/queries.js.map +1 -0
  343. package/dist/ipc/session/types.d.ts +28 -0
  344. package/dist/ipc/session/types.d.ts.map +1 -0
  345. package/dist/ipc/session/types.js +7 -0
  346. package/dist/ipc/session/types.js.map +1 -0
  347. package/dist/ipc/transport/IPCError.d.ts +82 -0
  348. package/dist/ipc/transport/IPCError.d.ts.map +1 -0
  349. package/dist/ipc/transport/IPCError.js +109 -0
  350. package/dist/ipc/transport/IPCError.js.map +1 -0
  351. package/dist/ipc/transport/errors.d.ts +11 -0
  352. package/dist/ipc/transport/errors.d.ts.map +1 -0
  353. package/dist/ipc/transport/errors.js +28 -0
  354. package/dist/ipc/transport/errors.js.map +1 -0
  355. package/dist/ipc/transport/index.d.ts +16 -0
  356. package/dist/ipc/transport/index.d.ts.map +1 -0
  357. package/dist/ipc/transport/index.js +77 -0
  358. package/dist/ipc/transport/index.js.map +1 -0
  359. package/dist/ipc/transport/jsonl.d.ts +23 -0
  360. package/dist/ipc/transport/jsonl.d.ts.map +1 -0
  361. package/dist/ipc/transport/jsonl.js +36 -0
  362. package/dist/ipc/transport/jsonl.js.map +1 -0
  363. package/dist/ipc/transport/socket.d.ts +27 -0
  364. package/dist/ipc/transport/socket.d.ts.map +1 -0
  365. package/dist/ipc/transport/socket.js +49 -0
  366. package/dist/ipc/transport/socket.js.map +1 -0
  367. package/dist/ipc/transport/validation.d.ts +21 -0
  368. package/dist/ipc/transport/validation.d.ts.map +1 -0
  369. package/dist/ipc/transport/validation.js +23 -0
  370. package/dist/ipc/transport/validation.js.map +1 -0
  371. package/dist/ipc/utils/errors.d.ts +25 -0
  372. package/dist/ipc/utils/errors.d.ts.map +1 -0
  373. package/dist/ipc/utils/errors.js +29 -0
  374. package/dist/ipc/utils/errors.js.map +1 -0
  375. package/dist/ipc/utils/index.d.ts +12 -0
  376. package/dist/ipc/utils/index.d.ts.map +1 -0
  377. package/dist/ipc/utils/index.js +11 -0
  378. package/dist/ipc/utils/index.js.map +1 -0
  379. package/dist/ipc/utils/requestId.d.ts +23 -0
  380. package/dist/ipc/utils/requestId.d.ts.map +1 -0
  381. package/dist/ipc/utils/requestId.js +27 -0
  382. package/dist/ipc/utils/requestId.js.map +1 -0
  383. package/dist/ipc/utils/responseValidator.d.ts.map +1 -0
  384. package/dist/ipc/{responseValidator.js → utils/responseValidator.js} +2 -1
  385. package/dist/ipc/utils/responseValidator.js.map +1 -0
  386. package/dist/ipc/utils/session.d.ts +36 -0
  387. package/dist/ipc/utils/session.d.ts.map +1 -0
  388. package/dist/ipc/utils/session.js +37 -0
  389. package/dist/ipc/utils/session.js.map +1 -0
  390. package/dist/ipc/utils/types.d.ts +17 -0
  391. package/dist/ipc/utils/types.d.ts.map +1 -0
  392. package/dist/ipc/utils/types.js +7 -0
  393. package/dist/ipc/utils/types.js.map +1 -0
  394. package/dist/session/__tests__/chrome-cache.contract.test.d.ts +7 -0
  395. package/dist/session/__tests__/chrome-cache.contract.test.d.ts.map +1 -0
  396. package/dist/session/__tests__/chrome-cache.contract.test.js +77 -0
  397. package/dist/session/__tests__/chrome-cache.contract.test.js.map +1 -0
  398. package/dist/session/__tests__/cleanup.contract.test.d.ts +7 -0
  399. package/dist/session/__tests__/cleanup.contract.test.d.ts.map +1 -0
  400. package/dist/session/__tests__/cleanup.contract.test.js +84 -0
  401. package/dist/session/__tests__/cleanup.contract.test.js.map +1 -0
  402. package/dist/session/__tests__/lock.contract.test.d.ts +7 -0
  403. package/dist/session/__tests__/lock.contract.test.d.ts.map +1 -0
  404. package/dist/session/__tests__/lock.contract.test.js +77 -0
  405. package/dist/session/__tests__/lock.contract.test.js.map +1 -0
  406. package/dist/session/__tests__/metadata.contract.test.d.ts +7 -0
  407. package/dist/session/__tests__/metadata.contract.test.d.ts.map +1 -0
  408. package/dist/session/__tests__/metadata.contract.test.js +87 -0
  409. package/dist/session/__tests__/metadata.contract.test.js.map +1 -0
  410. package/dist/session/chrome.d.ts +20 -0
  411. package/dist/session/chrome.d.ts.map +1 -1
  412. package/dist/session/chrome.js +80 -16
  413. package/dist/session/chrome.js.map +1 -1
  414. package/dist/session/cleanup.d.ts +15 -2
  415. package/dist/session/cleanup.d.ts.map +1 -1
  416. package/dist/session/cleanup.js +100 -72
  417. package/dist/session/cleanup.js.map +1 -1
  418. package/dist/session/lock.d.ts.map +1 -1
  419. package/dist/session/lock.js +101 -90
  420. package/dist/session/lock.js.map +1 -1
  421. package/dist/session/metadata.d.ts +10 -3
  422. package/dist/session/metadata.d.ts.map +1 -1
  423. package/dist/session/metadata.js +24 -6
  424. package/dist/session/metadata.js.map +1 -1
  425. package/dist/session/paths.d.ts +0 -9
  426. package/dist/session/paths.d.ts.map +1 -1
  427. package/dist/session/paths.js +0 -11
  428. package/dist/session/paths.js.map +1 -1
  429. package/dist/session/pid.d.ts +15 -0
  430. package/dist/session/pid.d.ts.map +1 -1
  431. package/dist/session/pid.js +39 -21
  432. package/dist/session/pid.js.map +1 -1
  433. package/dist/session/process.d.ts +4 -41
  434. package/dist/session/process.d.ts.map +1 -1
  435. package/dist/session/process.js +4 -85
  436. package/dist/session/process.js.map +1 -1
  437. package/dist/session/statusData.d.ts +50 -0
  438. package/dist/session/statusData.d.ts.map +1 -0
  439. package/dist/session/statusData.js +51 -0
  440. package/dist/session/statusData.js.map +1 -0
  441. package/dist/telemetry/__tests__/navigation.contract.test.d.ts +8 -0
  442. package/dist/telemetry/__tests__/navigation.contract.test.d.ts.map +1 -0
  443. package/dist/telemetry/__tests__/navigation.contract.test.js +211 -0
  444. package/dist/telemetry/__tests__/navigation.contract.test.js.map +1 -0
  445. package/dist/telemetry/__tests__/network.contract.test.d.ts +0 -20
  446. package/dist/telemetry/__tests__/network.contract.test.d.ts.map +1 -1
  447. package/dist/telemetry/__tests__/network.contract.test.js +126 -157
  448. package/dist/telemetry/__tests__/network.contract.test.js.map +1 -1
  449. package/dist/telemetry/__tests__/utils.unit.test.d.ts +7 -0
  450. package/dist/telemetry/__tests__/utils.unit.test.d.ts.map +1 -0
  451. package/dist/telemetry/__tests__/utils.unit.test.js +91 -0
  452. package/dist/telemetry/__tests__/utils.unit.test.js.map +1 -0
  453. package/dist/telemetry/console.d.ts.map +1 -1
  454. package/dist/telemetry/console.js +19 -27
  455. package/dist/telemetry/console.js.map +1 -1
  456. package/dist/telemetry/dialogs.d.ts.map +1 -1
  457. package/dist/telemetry/dialogs.js +4 -8
  458. package/dist/telemetry/dialogs.js.map +1 -1
  459. package/dist/telemetry/dom.d.ts.map +1 -1
  460. package/dist/telemetry/dom.js +51 -57
  461. package/dist/telemetry/dom.js.map +1 -1
  462. package/dist/telemetry/filters.d.ts +5 -18
  463. package/dist/telemetry/filters.d.ts.map +1 -1
  464. package/dist/telemetry/filters.js +36 -56
  465. package/dist/telemetry/filters.js.map +1 -1
  466. package/dist/telemetry/navigation.d.ts.map +1 -1
  467. package/dist/telemetry/navigation.js +5 -8
  468. package/dist/telemetry/navigation.js.map +1 -1
  469. package/dist/telemetry/network.d.ts.map +1 -1
  470. package/dist/telemetry/network.js +105 -104
  471. package/dist/telemetry/network.js.map +1 -1
  472. package/dist/telemetry/utils.d.ts +85 -0
  473. package/dist/telemetry/utils.d.ts.map +1 -0
  474. package/dist/telemetry/utils.js +138 -0
  475. package/dist/telemetry/utils.js.map +1 -0
  476. package/dist/types/dom.d.ts +66 -0
  477. package/dist/types/dom.d.ts.map +1 -0
  478. package/dist/types/dom.js +8 -0
  479. package/dist/types/dom.js.map +1 -0
  480. package/dist/types.d.ts +15 -224
  481. package/dist/types.d.ts.map +1 -1
  482. package/dist/{commands/shared → ui}/OutputBuilder.d.ts +10 -2
  483. package/dist/ui/OutputBuilder.d.ts.map +1 -0
  484. package/dist/{commands/shared → ui}/OutputBuilder.js +8 -2
  485. package/dist/ui/OutputBuilder.js.map +1 -0
  486. package/dist/ui/errors/CommandError.d.ts +16 -2
  487. package/dist/ui/errors/CommandError.d.ts.map +1 -1
  488. package/dist/ui/errors/CommandError.js +2 -1
  489. package/dist/ui/errors/CommandError.js.map +1 -1
  490. package/dist/ui/errors/index.d.ts +2 -3
  491. package/dist/ui/errors/index.d.ts.map +1 -1
  492. package/dist/ui/errors/index.js +1 -3
  493. package/dist/ui/errors/index.js.map +1 -1
  494. package/dist/ui/errors/utils.d.ts +6 -0
  495. package/dist/ui/errors/utils.d.ts.map +1 -1
  496. package/dist/ui/errors/utils.js +8 -3
  497. package/dist/ui/errors/utils.js.map +1 -1
  498. package/dist/ui/formatters/dom.d.ts +3 -18
  499. package/dist/ui/formatters/dom.d.ts.map +1 -1
  500. package/dist/ui/formatters/dom.js +4 -27
  501. package/dist/ui/formatters/dom.js.map +1 -1
  502. package/dist/ui/formatters/preview.d.ts +8 -8
  503. package/dist/ui/formatters/preview.d.ts.map +1 -1
  504. package/dist/ui/formatters/preview.js +18 -13
  505. package/dist/ui/formatters/preview.js.map +1 -1
  506. package/dist/ui/formatters/status.d.ts +1 -1
  507. package/dist/ui/formatters/status.d.ts.map +1 -1
  508. package/dist/ui/formatters/status.js +8 -30
  509. package/dist/ui/formatters/status.js.map +1 -1
  510. package/dist/ui/formatting.d.ts +2 -270
  511. package/dist/ui/formatting.d.ts.map +1 -1
  512. package/dist/ui/formatting.js +8 -331
  513. package/dist/ui/formatting.js.map +1 -1
  514. package/dist/ui/logging/index.d.ts +1 -1
  515. package/dist/ui/logging/index.d.ts.map +1 -1
  516. package/dist/ui/logging/index.js +1 -1
  517. package/dist/ui/logging/index.js.map +1 -1
  518. package/dist/ui/logging/logger.d.ts +3 -23
  519. package/dist/ui/logging/logger.d.ts.map +1 -1
  520. package/dist/ui/logging/logger.js +2 -27
  521. package/dist/ui/logging/logger.js.map +1 -1
  522. package/dist/ui/messages/chrome.d.ts +15 -7
  523. package/dist/ui/messages/chrome.d.ts.map +1 -1
  524. package/dist/ui/messages/chrome.js +23 -32
  525. package/dist/ui/messages/chrome.js.map +1 -1
  526. package/dist/ui/messages/commands.d.ts +2 -18
  527. package/dist/ui/messages/commands.d.ts.map +1 -1
  528. package/dist/ui/messages/commands.js +5 -50
  529. package/dist/ui/messages/commands.js.map +1 -1
  530. package/dist/ui/messages/consoleMessages.d.ts +1 -1
  531. package/dist/ui/messages/consoleMessages.d.ts.map +1 -1
  532. package/dist/ui/messages/consoleMessages.js +3 -6
  533. package/dist/ui/messages/consoleMessages.js.map +1 -1
  534. package/dist/ui/messages/debug.d.ts +0 -14
  535. package/dist/ui/messages/debug.d.ts.map +1 -1
  536. package/dist/ui/messages/debug.js +0 -18
  537. package/dist/ui/messages/debug.js.map +1 -1
  538. package/dist/ui/messages/errors.d.ts +27 -34
  539. package/dist/ui/messages/errors.d.ts.map +1 -1
  540. package/dist/ui/messages/errors.js +17 -67
  541. package/dist/ui/messages/errors.js.map +1 -1
  542. package/dist/ui/messages/internal.d.ts +0 -7
  543. package/dist/ui/messages/internal.d.ts.map +1 -1
  544. package/dist/ui/messages/internal.js +0 -12
  545. package/dist/ui/messages/internal.js.map +1 -1
  546. package/dist/ui/messages/preview.d.ts +14 -1
  547. package/dist/ui/messages/preview.d.ts.map +1 -1
  548. package/dist/ui/messages/preview.js +24 -7
  549. package/dist/ui/messages/preview.js.map +1 -1
  550. package/dist/ui/messages/session.d.ts.map +1 -1
  551. package/dist/ui/messages/session.js +11 -26
  552. package/dist/ui/messages/session.js.map +1 -1
  553. package/dist/ui/messages/validation.d.ts +22 -4
  554. package/dist/ui/messages/validation.d.ts.map +1 -1
  555. package/dist/ui/messages/validation.js +25 -5
  556. package/dist/ui/messages/validation.js.map +1 -1
  557. package/dist/utils/__tests__/atomicFile.test.d.ts +2 -0
  558. package/dist/utils/__tests__/atomicFile.test.d.ts.map +1 -0
  559. package/dist/utils/__tests__/atomicFile.test.js +43 -0
  560. package/dist/utils/__tests__/atomicFile.test.js.map +1 -0
  561. package/dist/utils/__tests__/objects.test.d.ts +2 -0
  562. package/dist/utils/__tests__/objects.test.d.ts.map +1 -0
  563. package/dist/utils/__tests__/objects.test.js +50 -0
  564. package/dist/utils/__tests__/objects.test.js.map +1 -0
  565. package/dist/utils/__tests__/session.contract.test.js +13 -3
  566. package/dist/utils/__tests__/session.contract.test.js.map +1 -1
  567. package/dist/utils/__tests__/url.test.d.ts +2 -0
  568. package/dist/utils/__tests__/url.test.d.ts.map +1 -0
  569. package/dist/utils/__tests__/url.test.js +42 -0
  570. package/dist/utils/__tests__/url.test.js.map +1 -0
  571. package/dist/utils/atomicFile.d.ts +31 -5
  572. package/dist/utils/atomicFile.d.ts.map +1 -1
  573. package/dist/utils/atomicFile.js +52 -13
  574. package/dist/utils/atomicFile.js.map +1 -1
  575. package/dist/utils/concurrency.d.ts +54 -0
  576. package/dist/utils/concurrency.d.ts.map +1 -0
  577. package/dist/utils/concurrency.js +78 -0
  578. package/dist/utils/concurrency.js.map +1 -0
  579. package/dist/utils/daemonErrors.d.ts +60 -0
  580. package/dist/utils/daemonErrors.d.ts.map +1 -0
  581. package/dist/utils/daemonErrors.js +58 -0
  582. package/dist/utils/daemonErrors.js.map +1 -0
  583. package/dist/utils/errors.d.ts +3 -57
  584. package/dist/utils/errors.d.ts.map +1 -1
  585. package/dist/utils/errors.js +3 -58
  586. package/dist/utils/errors.js.map +1 -1
  587. package/dist/utils/exitCodes.d.ts +41 -5
  588. package/dist/utils/exitCodes.d.ts.map +1 -1
  589. package/dist/utils/exitCodes.js +43 -9
  590. package/dist/utils/exitCodes.js.map +1 -1
  591. package/dist/utils/http.d.ts +9 -4
  592. package/dist/utils/http.d.ts.map +1 -1
  593. package/dist/utils/http.js +44 -10
  594. package/dist/utils/http.js.map +1 -1
  595. package/dist/utils/levenshtein.d.ts +45 -0
  596. package/dist/utils/levenshtein.d.ts.map +1 -0
  597. package/dist/utils/levenshtein.js +85 -0
  598. package/dist/utils/levenshtein.js.map +1 -0
  599. package/dist/utils/objects.d.ts +16 -1
  600. package/dist/utils/objects.d.ts.map +1 -1
  601. package/dist/utils/objects.js +16 -1
  602. package/dist/utils/objects.js.map +1 -1
  603. package/dist/utils/process.d.ts +45 -0
  604. package/dist/utils/process.d.ts.map +1 -0
  605. package/dist/utils/process.js +91 -0
  606. package/dist/utils/process.js.map +1 -0
  607. package/dist/utils/url.d.ts +10 -3
  608. package/dist/utils/url.d.ts.map +1 -1
  609. package/dist/utils/url.js +42 -29
  610. package/dist/utils/url.js.map +1 -1
  611. package/dist/utils/validation.d.ts +96 -7
  612. package/dist/utils/validation.d.ts.map +1 -1
  613. package/dist/utils/validation.js +122 -11
  614. package/dist/utils/validation.js.map +1 -1
  615. package/package.json +2 -1
  616. package/dist/cli/commands/__tests__/start.unit.test.d.ts +0 -2
  617. package/dist/cli/commands/__tests__/start.unit.test.d.ts.map +0 -1
  618. package/dist/cli/commands/__tests__/start.unit.test.js +0 -131
  619. package/dist/cli/commands/__tests__/start.unit.test.js.map +0 -1
  620. package/dist/cli/commands/cleanup.d.ts +0 -9
  621. package/dist/cli/commands/cleanup.d.ts.map +0 -1
  622. package/dist/cli/commands/cleanup.js +0 -148
  623. package/dist/cli/commands/cleanup.js.map +0 -1
  624. package/dist/cli/commands/details.d.ts +0 -9
  625. package/dist/cli/commands/details.d.ts.map +0 -1
  626. package/dist/cli/commands/details.js +0 -120
  627. package/dist/cli/commands/details.js.map +0 -1
  628. package/dist/cli/commands/peek.d.ts +0 -9
  629. package/dist/cli/commands/peek.d.ts.map +0 -1
  630. package/dist/cli/commands/peek.js +0 -64
  631. package/dist/cli/commands/peek.js.map +0 -1
  632. package/dist/cli/commands/query.d.ts +0 -9
  633. package/dist/cli/commands/query.d.ts.map +0 -1
  634. package/dist/cli/commands/query.js +0 -125
  635. package/dist/cli/commands/query.js.map +0 -1
  636. package/dist/cli/commands/start.d.ts +0 -83
  637. package/dist/cli/commands/start.d.ts.map +0 -1
  638. package/dist/cli/commands/start.js +0 -204
  639. package/dist/cli/commands/start.js.map +0 -1
  640. package/dist/cli/commands/status.d.ts +0 -9
  641. package/dist/cli/commands/status.d.ts.map +0 -1
  642. package/dist/cli/commands/status.js +0 -75
  643. package/dist/cli/commands/status.js.map +0 -1
  644. package/dist/cli/commands/stop.d.ts +0 -9
  645. package/dist/cli/commands/stop.d.ts.map +0 -1
  646. package/dist/cli/commands/stop.js +0 -133
  647. package/dist/cli/commands/stop.js.map +0 -1
  648. package/dist/cli/formatters/detailsFormatter.d.ts +0 -10
  649. package/dist/cli/formatters/detailsFormatter.d.ts.map +0 -1
  650. package/dist/cli/formatters/detailsFormatter.js +0 -63
  651. package/dist/cli/formatters/detailsFormatter.js.map +0 -1
  652. package/dist/cli/formatters/previewFormatter.d.ts +0 -27
  653. package/dist/cli/formatters/previewFormatter.d.ts.map +0 -1
  654. package/dist/cli/formatters/previewFormatter.js +0 -155
  655. package/dist/cli/formatters/previewFormatter.js.map +0 -1
  656. package/dist/cli/formatters/statusFormatter.d.ts +0 -42
  657. package/dist/cli/formatters/statusFormatter.d.ts.map +0 -1
  658. package/dist/cli/formatters/statusFormatter.js +0 -126
  659. package/dist/cli/formatters/statusFormatter.js.map +0 -1
  660. package/dist/cli/handlers/ChromeBootstrap.d.ts +0 -24
  661. package/dist/cli/handlers/ChromeBootstrap.d.ts.map +0 -1
  662. package/dist/cli/handlers/ChromeBootstrap.js +0 -50
  663. package/dist/cli/handlers/ChromeBootstrap.js.map +0 -1
  664. package/dist/cli/handlers/OutputBuilder.d.ts +0 -59
  665. package/dist/cli/handlers/OutputBuilder.d.ts.map +0 -1
  666. package/dist/cli/handlers/OutputBuilder.js +0 -136
  667. package/dist/cli/handlers/OutputBuilder.js.map +0 -1
  668. package/dist/cli/handlers/OutputWriter.d.ts +0 -15
  669. package/dist/cli/handlers/OutputWriter.d.ts.map +0 -1
  670. package/dist/cli/handlers/OutputWriter.js +0 -34
  671. package/dist/cli/handlers/OutputWriter.js.map +0 -1
  672. package/dist/cli/handlers/PreviewWriter.d.ts +0 -52
  673. package/dist/cli/handlers/PreviewWriter.d.ts.map +0 -1
  674. package/dist/cli/handlers/PreviewWriter.js +0 -118
  675. package/dist/cli/handlers/PreviewWriter.js.map +0 -1
  676. package/dist/cli/handlers/SessionLock.d.ts +0 -16
  677. package/dist/cli/handlers/SessionLock.d.ts.map +0 -1
  678. package/dist/cli/handlers/SessionLock.js +0 -35
  679. package/dist/cli/handlers/SessionLock.js.map +0 -1
  680. package/dist/cli/handlers/SessionLoop.d.ts +0 -19
  681. package/dist/cli/handlers/SessionLoop.d.ts.map +0 -1
  682. package/dist/cli/handlers/SessionLoop.js +0 -47
  683. package/dist/cli/handlers/SessionLoop.js.map +0 -1
  684. package/dist/cli/handlers/ShutdownController.d.ts +0 -41
  685. package/dist/cli/handlers/ShutdownController.d.ts.map +0 -1
  686. package/dist/cli/handlers/ShutdownController.js +0 -94
  687. package/dist/cli/handlers/ShutdownController.js.map +0 -1
  688. package/dist/cli/handlers/SignalHandler.d.ts +0 -35
  689. package/dist/cli/handlers/SignalHandler.d.ts.map +0 -1
  690. package/dist/cli/handlers/SignalHandler.js +0 -81
  691. package/dist/cli/handlers/SignalHandler.js.map +0 -1
  692. package/dist/cli/handlers/TargetSetup.d.ts +0 -42
  693. package/dist/cli/handlers/TargetSetup.d.ts.map +0 -1
  694. package/dist/cli/handlers/TargetSetup.js +0 -87
  695. package/dist/cli/handlers/TargetSetup.js.map +0 -1
  696. package/dist/cli/handlers/sessionController.d.ts +0 -62
  697. package/dist/cli/handlers/sessionController.d.ts.map +0 -1
  698. package/dist/cli/handlers/sessionController.js +0 -316
  699. package/dist/cli/handlers/sessionController.js.map +0 -1
  700. package/dist/cli/registry.d.ts +0 -11
  701. package/dist/cli/registry.d.ts.map +0 -1
  702. package/dist/cli/registry.js +0 -21
  703. package/dist/cli/registry.js.map +0 -1
  704. package/dist/collectors/console.d.ts +0 -19
  705. package/dist/collectors/console.d.ts.map +0 -1
  706. package/dist/collectors/console.js +0 -87
  707. package/dist/collectors/console.js.map +0 -1
  708. package/dist/collectors/dom.d.ts +0 -21
  709. package/dist/collectors/dom.d.ts.map +0 -1
  710. package/dist/collectors/dom.js +0 -99
  711. package/dist/collectors/dom.js.map +0 -1
  712. package/dist/collectors/network.d.ts +0 -32
  713. package/dist/collectors/network.d.ts.map +0 -1
  714. package/dist/collectors/network.js +0 -191
  715. package/dist/collectors/network.js.map +0 -1
  716. package/dist/commands/dom.d.ts.map +0 -1
  717. package/dist/commands/dom.js +0 -243
  718. package/dist/commands/dom.js.map +0 -1
  719. package/dist/commands/domEvalHelpers.d.ts.map +0 -1
  720. package/dist/commands/domEvalHelpers.js.map +0 -1
  721. package/dist/commands/domOptionsBuilder.d.ts +0 -67
  722. package/dist/commands/domOptionsBuilder.d.ts.map +0 -1
  723. package/dist/commands/domOptionsBuilder.js +0 -86
  724. package/dist/commands/domOptionsBuilder.js.map +0 -1
  725. package/dist/commands/domSelectorParser.d.ts +0 -20
  726. package/dist/commands/domSelectorParser.d.ts.map +0 -1
  727. package/dist/commands/domSelectorParser.js +0 -20
  728. package/dist/commands/domSelectorParser.js.map +0 -1
  729. package/dist/commands/shared/OutputBuilder.d.ts.map +0 -1
  730. package/dist/commands/shared/OutputBuilder.js.map +0 -1
  731. package/dist/commands/shared/daemonSessionController.d.ts.map +0 -1
  732. package/dist/commands/shared/daemonSessionController.js.map +0 -1
  733. package/dist/commands/shared/sessionController.d.ts +0 -21
  734. package/dist/commands/shared/sessionController.d.ts.map +0 -1
  735. package/dist/commands/shared/sessionController.js +0 -54
  736. package/dist/commands/shared/sessionController.js.map +0 -1
  737. package/dist/connection/__tests__/finder.contract.test.d.ts +0 -2
  738. package/dist/connection/__tests__/finder.contract.test.d.ts.map +0 -1
  739. package/dist/connection/__tests__/finder.contract.test.js +0 -239
  740. package/dist/connection/__tests__/finder.contract.test.js.map +0 -1
  741. package/dist/connection/domOperations.d.ts +0 -48
  742. package/dist/connection/domOperations.d.ts.map +0 -1
  743. package/dist/connection/domOperations.js +0 -104
  744. package/dist/connection/domOperations.js.map +0 -1
  745. package/dist/connection/finder.d.ts +0 -12
  746. package/dist/connection/finder.d.ts.map +0 -1
  747. package/dist/connection/finder.js +0 -17
  748. package/dist/connection/finder.js.map +0 -1
  749. package/dist/connection/tabs.d.ts +0 -52
  750. package/dist/connection/tabs.d.ts.map +0 -1
  751. package/dist/connection/tabs.js +0 -227
  752. package/dist/connection/tabs.js.map +0 -1
  753. package/dist/help/machineReadableHelp.d.ts +0 -100
  754. package/dist/help/machineReadableHelp.d.ts.map +0 -1
  755. package/dist/help/machineReadableHelp.js +0 -139
  756. package/dist/help/machineReadableHelp.js.map +0 -1
  757. package/dist/ipc/commands.d.ts +0 -260
  758. package/dist/ipc/commands.d.ts.map +0 -1
  759. package/dist/ipc/commands.js +0 -77
  760. package/dist/ipc/commands.js.map +0 -1
  761. package/dist/ipc/responseValidator.d.ts.map +0 -1
  762. package/dist/ipc/responseValidator.js.map +0 -1
  763. package/dist/ipc/types.d.ts +0 -226
  764. package/dist/ipc/types.d.ts.map +0 -1
  765. package/dist/ipc/types.js.map +0 -1
  766. package/dist/session/BdgSession.d.ts +0 -91
  767. package/dist/session/BdgSession.d.ts.map +0 -1
  768. package/dist/session/BdgSession.js +0 -230
  769. package/dist/session/BdgSession.js.map +0 -1
  770. package/dist/session/fileOps.d.ts +0 -25
  771. package/dist/session/fileOps.d.ts.map +0 -1
  772. package/dist/session/fileOps.js +0 -39
  773. package/dist/session/fileOps.js.map +0 -1
  774. package/dist/session/queryCache.d.ts +0 -36
  775. package/dist/session/queryCache.d.ts.map +0 -1
  776. package/dist/session/queryCache.js +0 -66
  777. package/dist/session/queryCache.js.map +0 -1
  778. package/dist/ui/errors/SystemErrors.d.ts +0 -22
  779. package/dist/ui/errors/SystemErrors.d.ts.map +0 -1
  780. package/dist/ui/errors/SystemErrors.js +0 -23
  781. package/dist/ui/errors/SystemErrors.js.map +0 -1
  782. package/dist/ui/errors.d.ts +0 -39
  783. package/dist/ui/errors.d.ts.map +0 -1
  784. package/dist/ui/errors.js +0 -48
  785. package/dist/ui/errors.js.map +0 -1
  786. package/dist/ui/messages/deprecation.d.ts +0 -30
  787. package/dist/ui/messages/deprecation.d.ts.map +0 -1
  788. package/dist/ui/messages/deprecation.js +0 -49
  789. package/dist/ui/messages/deprecation.js.map +0 -1
  790. package/dist/ui/messages/index.d.ts +0 -12
  791. package/dist/ui/messages/index.d.ts.map +0 -1
  792. package/dist/ui/messages/index.js +0 -12
  793. package/dist/ui/messages/index.js.map +0 -1
  794. package/dist/utils/__tests__/filters.unit.test.d.ts +0 -2
  795. package/dist/utils/__tests__/filters.unit.test.d.ts.map +0 -1
  796. package/dist/utils/__tests__/filters.unit.test.js +0 -239
  797. package/dist/utils/__tests__/filters.unit.test.js.map +0 -1
  798. package/dist/utils/cdpHandlers.d.ts +0 -31
  799. package/dist/utils/cdpHandlers.d.ts.map +0 -1
  800. package/dist/utils/cdpHandlers.js +0 -38
  801. package/dist/utils/cdpHandlers.js.map +0 -1
  802. package/dist/utils/chromeDiagnostics.d.ts +0 -16
  803. package/dist/utils/chromeDiagnostics.d.ts.map +0 -1
  804. package/dist/utils/chromeDiagnostics.js +0 -37
  805. package/dist/utils/chromeDiagnostics.js.map +0 -1
  806. package/dist/utils/filters.d.ts +0 -148
  807. package/dist/utils/filters.d.ts.map +0 -1
  808. package/dist/utils/filters.js +0 -358
  809. package/dist/utils/filters.js.map +0 -1
  810. package/dist/utils/logger.d.ts +0 -98
  811. package/dist/utils/logger.d.ts.map +0 -1
  812. package/dist/utils/logger.js +0 -93
  813. package/dist/utils/logger.js.map +0 -1
  814. package/dist/utils/pageReadiness.d.ts +0 -46
  815. package/dist/utils/pageReadiness.d.ts.map +0 -1
  816. package/dist/utils/pageReadiness.js +0 -270
  817. package/dist/utils/pageReadiness.js.map +0 -1
  818. package/dist/utils/session.d.ts +0 -200
  819. package/dist/utils/session.d.ts.map +0 -1
  820. package/dist/utils/session.js +0 -498
  821. package/dist/utils/session.js.map +0 -1
  822. /package/dist/ipc/{responseValidator.d.ts → utils/responseValidator.d.ts} +0 -0
@@ -1,26 +1,36 @@
1
1
  /**
2
- * Daemon IPC Server - Minimal JSONL handshake MVP
2
+ * Daemon IPC Server
3
3
  *
4
- * Starts a Unix domain socket server that:
5
- * 1. Listens for JSONL frames (newline-delimited JSON messages)
6
- * 2. Responds only to handshake requests
7
- * 3. Logs all incoming frames for debugging
4
+ * Coordinates socket server, worker manager, and request/response handlers.
5
+ * Responsibilities:
6
+ * - Socket lifecycle management
7
+ * - Message routing
8
+ * - Delegation to specialized handlers
8
9
  */
9
- import { readFileSync, writeFileSync, unlinkSync } from 'fs';
10
+ import { unlinkSync } from 'fs';
11
+ import { getErrorMessage } from '../connection/errors.js';
12
+ import { PendingRequestManager } from '../daemon/handlers/pendingRequests.js';
13
+ import { RequestHandlers } from '../daemon/handlers/requestHandlers.js';
14
+ import { ResponseHandler } from '../daemon/handlers/responseHandler.js';
10
15
  import { SocketServer } from '../daemon/server/SocketServer.js';
11
16
  import { WorkerManager } from '../daemon/server/WorkerManager.js';
12
- import { WorkerStartError } from '../daemon/startSession.js';
13
- import { getCommandName, isCommandRequest, isCommandResponse, } from '../ipc/commands.js';
14
- import { IPCErrorCode } from '../ipc/types.js';
15
- import { cleanupSession } from '../session/cleanup.js';
17
+ import { SessionService } from '../daemon/services/SessionService.js';
18
+ import { isCommandRequest } from '../ipc/index.js';
16
19
  import { releaseDaemonLock } from '../session/lock.js';
17
- import { readSessionMetadata } from '../session/metadata.js';
18
20
  import { ensureSessionDir, getSessionFilePath, getDaemonSocketPath } from '../session/paths.js';
19
- import { readPid } from '../session/pid.js';
20
- import { isProcessAlive } from '../session/process.js';
21
- import { getErrorMessage } from '../ui/errors/index.js';
22
- import { fetchCDPTargets } from '../utils/http.js';
23
- import { filterDefined } from '../utils/objects.js';
21
+ import { readPidFromFile } from '../session/pid.js';
22
+ import { createLogger } from '../ui/logging/index.js';
23
+ import { AtomicFileWriter } from '../utils/atomicFile.js';
24
+ const log = createLogger('daemon');
25
+ /**
26
+ * Type guard to validate parsed JSON has expected message structure.
27
+ */
28
+ function isValidIPCMessage(obj) {
29
+ if (typeof obj !== 'object' || obj === null) {
30
+ return false;
31
+ }
32
+ return 'type' in obj && typeof obj.type === 'string' && 'sessionId' in obj;
33
+ }
24
34
  /**
25
35
  * Simple JSONL IPC server for daemon communication.
26
36
  */
@@ -28,10 +38,24 @@ export class IPCServer {
28
38
  startTime = Date.now();
29
39
  socketServer = new SocketServer();
30
40
  workerManager = new WorkerManager();
31
- pendingDomRequests = new Map(); // requestId -> pending request
41
+ pendingRequests = new PendingRequestManager();
42
+ sessionService = new SessionService();
43
+ // Delegate handlers
44
+ requestHandlers;
45
+ responseHandler;
32
46
  constructor() {
33
- this.workerManager.on('message', (message) => this.handleWorkerResponse(message));
34
- this.workerManager.on('exit', (code, signal) => this.handleWorkerExit(code, signal));
47
+ // Initialize handlers with dependencies
48
+ this.requestHandlers = new RequestHandlers(this.workerManager, this.pendingRequests, this.sessionService, (socket, response) => this.sendResponse(socket, response), this.startTime);
49
+ this.responseHandler = new ResponseHandler(this.pendingRequests, this.sessionService, (socket, response) => this.sendResponse(socket, response));
50
+ // Wire up worker events
51
+ this.workerManager.on('message', (message) => this.responseHandler.handleWorkerResponse(message));
52
+ this.workerManager.on('exit', (code, signal) => this.responseHandler.handleWorkerExit(code, signal));
53
+ }
54
+ /**
55
+ * Send a JSONL response to client socket.
56
+ */
57
+ sendResponse(socket, response) {
58
+ socket.write(JSON.stringify(response) + '\n');
35
59
  }
36
60
  /**
37
61
  * Start the IPC server on Unix domain socket.
@@ -68,662 +92,59 @@ export class IPCServer {
68
92
  });
69
93
  }
70
94
  /**
71
- * Handle incoming JSONL message.
95
+ * Handle incoming JSONL message - route to appropriate handler.
72
96
  */
73
97
  handleMessage(socket, line) {
74
98
  console.error('[daemon] Raw frame:', line);
75
99
  try {
76
100
  // Parse message - could be either IPC message or command request
77
- const message = JSON.parse(line);
101
+ const parsed = JSON.parse(line);
102
+ if (!isValidIPCMessage(parsed)) {
103
+ console.error('[daemon] Invalid message structure:', parsed);
104
+ return;
105
+ }
106
+ const message = parsed;
78
107
  // Check if this is a command request
79
108
  if (isCommandRequest(message.type)) {
80
- this.handleCommandRequest(socket, message);
109
+ this.requestHandlers.handleCommandRequest(socket, message);
81
110
  return;
82
111
  }
112
+ // Filter out response messages (should never be received from client)
113
+ if (message.type.endsWith('_response')) {
114
+ console.error(`[daemon] Unexpected response message from client: ${message.type}`);
115
+ return;
116
+ }
117
+ // Route to appropriate handler
83
118
  switch (message.type) {
84
119
  case 'handshake_request':
85
- this.handleHandshake(socket, message);
86
- break;
87
- case 'handshake_response':
88
- // Response messages are sent by daemon, not received
89
- console.error('[daemon] Unexpected handshake response from client');
120
+ this.requestHandlers.handleHandshake(socket, message);
90
121
  break;
91
122
  case 'status_request':
92
- this.handleStatusRequest(socket, message);
93
- break;
94
- case 'status_response':
95
- // Response messages are sent by daemon, not received
96
- console.error('[daemon] Unexpected status response from client');
123
+ this.requestHandlers.handleStatusRequest(socket, message);
97
124
  break;
98
125
  case 'peek_request':
99
- this.handlePeekRequest(socket, message);
100
- break;
101
- case 'peek_response':
102
- // Response messages are sent by daemon, not received
103
- console.error('[daemon] Unexpected peek response from client');
126
+ this.requestHandlers.handlePeekRequest(socket, message);
104
127
  break;
105
128
  case 'start_session_request':
106
- void this.handleStartSessionRequest(socket, message);
107
- break;
108
- case 'start_session_response':
109
- // Response messages are sent by daemon, not received
110
- console.error('[daemon] Unexpected start session response from client');
129
+ void this.requestHandlers.handleStartSessionRequest(socket, message);
111
130
  break;
112
131
  case 'stop_session_request':
113
- this.handleStopSessionRequest(socket, message);
132
+ this.requestHandlers.handleStopSessionRequest(socket, message);
114
133
  break;
134
+ case 'handshake_response':
135
+ case 'status_response':
136
+ case 'peek_response':
137
+ case 'start_session_response':
115
138
  case 'stop_session_response':
116
- // Response messages are sent by daemon, not received
117
- console.error('[daemon] Unexpected stop session response from client');
139
+ // Already filtered above, but keeping cases for exhaustiveness check
140
+ console.error('[daemon] Unexpected response message (should have been filtered)');
118
141
  break;
119
- // NOTE: DOM command responses are now handled via command system (see commands.ts)
120
142
  }
121
143
  }
122
144
  catch (error) {
123
145
  console.error('[daemon] Failed to parse message:', error);
124
146
  }
125
147
  }
126
- /**
127
- * Handle handshake request.
128
- */
129
- handleHandshake(socket, request) {
130
- console.error(`[daemon] Handshake request received (sessionId: ${request.sessionId})`);
131
- const response = {
132
- type: 'handshake_response',
133
- sessionId: request.sessionId,
134
- status: 'ok',
135
- message: 'Handshake successful',
136
- };
137
- // Send JSONL response (JSON + newline)
138
- socket.write(JSON.stringify(response) + '\n');
139
- console.error('[daemon] Handshake response sent');
140
- }
141
- /**
142
- * Handle status request.
143
- */
144
- handleStatusRequest(socket, request) {
145
- console.error(`[daemon] Status request received (sessionId: ${request.sessionId})`);
146
- try {
147
- // Gather daemon metadata
148
- const data = {
149
- daemonPid: process.pid,
150
- daemonStartTime: this.startTime,
151
- socketPath: getSessionFilePath('DAEMON_SOCKET'),
152
- };
153
- // Check for active session
154
- const sessionPid = readPid();
155
- if (sessionPid && isProcessAlive(sessionPid)) {
156
- data.sessionPid = sessionPid;
157
- // Try to read session metadata
158
- const metadata = readSessionMetadata({ warnOnCorruption: true });
159
- if (metadata) {
160
- data.sessionMetadata = filterDefined({
161
- bdgPid: metadata.bdgPid,
162
- chromePid: metadata.chromePid,
163
- startTime: metadata.startTime,
164
- port: metadata.port,
165
- targetId: metadata.targetId,
166
- webSocketDebuggerUrl: metadata.webSocketDebuggerUrl,
167
- activeTelemetry: metadata.activeTelemetry,
168
- });
169
- }
170
- // Query worker for live activity data if worker is available
171
- if (this.workerManager.hasActiveWorker()) {
172
- const requestId = `worker_status_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
173
- // Set timeout for worker response
174
- const timeout = setTimeout(() => {
175
- this.pendingDomRequests.delete(requestId);
176
- // Send response without activity data if worker times out
177
- const response = {
178
- type: 'status_response',
179
- sessionId: request.sessionId,
180
- status: 'ok',
181
- data,
182
- };
183
- socket.write(JSON.stringify(response) + '\n');
184
- console.error('[daemon] Status response sent (worker timeout)');
185
- }, 5000);
186
- // Track pending request with special handling for status
187
- this.pendingDomRequests.set(requestId, {
188
- socket,
189
- sessionId: request.sessionId,
190
- timeout,
191
- statusData: data, // Store base status data
192
- commandName: 'worker_status',
193
- });
194
- // Forward to worker
195
- const workerRequest = {
196
- type: 'worker_status_request',
197
- requestId,
198
- };
199
- try {
200
- this.workerManager.send(workerRequest);
201
- console.error(`[daemon] Forwarded worker_status_request to worker (requestId: ${requestId})`);
202
- return; // Will send response when worker responds
203
- }
204
- catch (error) {
205
- clearTimeout(timeout);
206
- this.pendingDomRequests.delete(requestId);
207
- console.error(`[daemon] Failed to forward worker_status_request: ${getErrorMessage(error)}`);
208
- }
209
- }
210
- }
211
- // Send response immediately if no worker
212
- const response = {
213
- type: 'status_response',
214
- sessionId: request.sessionId,
215
- status: 'ok',
216
- data,
217
- };
218
- socket.write(JSON.stringify(response) + '\n');
219
- console.error('[daemon] Status response sent');
220
- }
221
- catch (error) {
222
- const response = {
223
- type: 'status_response',
224
- sessionId: request.sessionId,
225
- status: 'error',
226
- error: `Failed to gather status: ${getErrorMessage(error)}`,
227
- };
228
- socket.write(JSON.stringify(response) + '\n');
229
- console.error('[daemon] Status error response sent');
230
- }
231
- }
232
- /**
233
- * Handle peek request - forward to worker via IPC.
234
- */
235
- handlePeekRequest(socket, request) {
236
- console.error(`[daemon] Peek request received (sessionId: ${request.sessionId})`);
237
- // Check for active worker process
238
- if (!this.workerManager.hasActiveWorker()) {
239
- const response = {
240
- type: 'peek_response',
241
- sessionId: request.sessionId,
242
- status: 'error',
243
- error: 'No active worker process',
244
- };
245
- socket.write(JSON.stringify(response) + '\n');
246
- console.error('[daemon] Peek error response sent (no worker)');
247
- return;
248
- }
249
- // Generate unique request ID
250
- const requestId = `worker_peek_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
251
- // Set timeout for worker response
252
- const timeout = setTimeout(() => {
253
- this.pendingDomRequests.delete(requestId);
254
- const response = {
255
- type: 'peek_response',
256
- sessionId: request.sessionId,
257
- status: 'error',
258
- error: 'Worker response timeout (5s)',
259
- };
260
- socket.write(JSON.stringify(response) + '\n');
261
- console.error('[daemon] Peek timeout response sent');
262
- }, 5000);
263
- // Track pending request
264
- this.pendingDomRequests.set(requestId, {
265
- socket,
266
- sessionId: request.sessionId,
267
- timeout,
268
- commandName: 'worker_peek',
269
- });
270
- // Forward to worker
271
- const workerRequest = {
272
- type: 'worker_peek_request',
273
- requestId,
274
- lastN: 10, // Default limit for preview items (PeekRequest doesn't include lastN)
275
- };
276
- try {
277
- this.workerManager.send(workerRequest);
278
- console.error(`[daemon] Forwarded worker_peek_request to worker (requestId: ${requestId})`);
279
- }
280
- catch (error) {
281
- clearTimeout(timeout);
282
- this.pendingDomRequests.delete(requestId);
283
- const response = {
284
- type: 'peek_response',
285
- sessionId: request.sessionId,
286
- status: 'error',
287
- error: getErrorMessage(error),
288
- };
289
- socket.write(JSON.stringify(response) + '\n');
290
- console.error(`[daemon] Failed to forward worker_peek_request: ${getErrorMessage(error)}`);
291
- }
292
- }
293
- /**
294
- * Handle start session request.
295
- */
296
- async handleStartSessionRequest(socket, request) {
297
- console.error(`[daemon] Start session request received (sessionId: ${request.sessionId}, url: ${request.url})`);
298
- try {
299
- // Check for existing session (concurrency guard)
300
- const sessionPid = readPid();
301
- if (sessionPid && isProcessAlive(sessionPid)) {
302
- // Read session metadata to provide helpful error context
303
- const metadata = readSessionMetadata({ warnOnCorruption: false });
304
- const startTime = metadata?.startTime;
305
- const duration = startTime ? Math.floor((Date.now() - startTime) / 1000) : undefined;
306
- // Try to get target URL from CDP
307
- let targetUrl;
308
- if (metadata?.port && metadata?.targetId) {
309
- try {
310
- const targets = await fetchCDPTargets(metadata.port);
311
- const target = targets.find((t) => t.id === metadata.targetId);
312
- if (target) {
313
- targetUrl = target.url;
314
- }
315
- }
316
- catch {
317
- // Ignore CDP fetch errors
318
- }
319
- }
320
- const response = {
321
- type: 'start_session_response',
322
- sessionId: request.sessionId,
323
- status: 'error',
324
- message: `Session already running (PID ${sessionPid}). Stop it first with stop_session_request.`,
325
- errorCode: IPCErrorCode.SESSION_ALREADY_RUNNING,
326
- existingSession: {
327
- pid: sessionPid,
328
- ...(targetUrl && { targetUrl }),
329
- ...(startTime && { startTime }),
330
- ...(duration !== undefined && { duration }),
331
- },
332
- };
333
- socket.write(JSON.stringify(response) + '\n');
334
- console.error('[daemon] Start session error response sent (session already running)');
335
- return;
336
- }
337
- // Launch worker
338
- console.error('[daemon] Launching worker...');
339
- try {
340
- const metadata = await this.workerManager.launch(request.url, filterDefined({
341
- port: request.port,
342
- timeout: request.timeout,
343
- telemetry: request.telemetry,
344
- includeAll: request.includeAll,
345
- userDataDir: request.userDataDir,
346
- maxBodySize: request.maxBodySize,
347
- headless: request.headless,
348
- chromeWsUrl: request.chromeWsUrl,
349
- }));
350
- console.error('[daemon] Worker launched successfully');
351
- // Build response data
352
- const data = {
353
- workerPid: metadata.workerPid,
354
- chromePid: metadata.chromePid,
355
- port: metadata.port,
356
- targetUrl: metadata.targetUrl,
357
- ...(metadata.targetTitle !== undefined && { targetTitle: metadata.targetTitle }),
358
- };
359
- const response = {
360
- type: 'start_session_response',
361
- sessionId: request.sessionId,
362
- status: 'ok',
363
- data,
364
- message: 'Session started successfully',
365
- };
366
- socket.write(JSON.stringify(response) + '\n');
367
- console.error('[daemon] Start session response sent');
368
- }
369
- catch (error) {
370
- // Map worker errors to IPC error codes
371
- let errorCode = IPCErrorCode.WORKER_START_FAILED;
372
- let errorMessage = 'Failed to start worker';
373
- if (error instanceof WorkerStartError) {
374
- // Include error details (contains worker stderr) for debugging
375
- errorMessage = error.details ? `${error.message}\n${error.details}` : error.message;
376
- switch (error.code) {
377
- case 'SPAWN_FAILED':
378
- case 'WORKER_CRASH':
379
- case 'INVALID_READY_MESSAGE':
380
- errorCode = IPCErrorCode.WORKER_START_FAILED;
381
- break;
382
- case 'READY_TIMEOUT':
383
- errorCode = IPCErrorCode.CDP_TIMEOUT;
384
- break;
385
- }
386
- }
387
- else {
388
- errorMessage = getErrorMessage(error);
389
- }
390
- const response = {
391
- type: 'start_session_response',
392
- sessionId: request.sessionId,
393
- status: 'error',
394
- message: errorMessage,
395
- errorCode,
396
- };
397
- socket.write(JSON.stringify(response) + '\n');
398
- console.error(`[daemon] Start session error response sent (${errorCode})`);
399
- }
400
- }
401
- catch (error) {
402
- const response = {
403
- type: 'start_session_response',
404
- sessionId: request.sessionId,
405
- status: 'error',
406
- message: `Daemon error: ${getErrorMessage(error)}`,
407
- errorCode: IPCErrorCode.DAEMON_ERROR,
408
- };
409
- socket.write(JSON.stringify(response) + '\n');
410
- console.error('[daemon] Start session error response sent (daemon error)');
411
- }
412
- }
413
- /**
414
- * Handle stop session request.
415
- */
416
- handleStopSessionRequest(socket, request) {
417
- console.error(`[daemon] Stop session request received (sessionId: ${request.sessionId})`);
418
- try {
419
- // Check for active session
420
- const sessionPid = readPid();
421
- if (!sessionPid || !isProcessAlive(sessionPid)) {
422
- const response = {
423
- type: 'stop_session_response',
424
- sessionId: request.sessionId,
425
- status: 'error',
426
- message: 'No active session found',
427
- errorCode: IPCErrorCode.NO_SESSION,
428
- };
429
- socket.write(JSON.stringify(response) + '\n');
430
- console.error('[daemon] Stop session error response sent (no session)');
431
- return;
432
- }
433
- // Capture Chrome PID BEFORE cleanup (so CLI can kill Chrome if needed)
434
- const metadata = readSessionMetadata({ warnOnCorruption: true });
435
- const chromePid = metadata?.chromePid;
436
- if (chromePid) {
437
- console.error(`[daemon] Captured Chrome PID ${chromePid} before cleanup`);
438
- }
439
- // Kill the session process (use SIGTERM for graceful shutdown)
440
- try {
441
- process.kill(sessionPid, 'SIGTERM');
442
- console.error(`[daemon] Sent SIGTERM to session process (PID ${sessionPid})`);
443
- }
444
- catch (killError) {
445
- const errorMessage = killError instanceof Error ? killError.message : String(killError);
446
- const response = {
447
- type: 'stop_session_response',
448
- sessionId: request.sessionId,
449
- status: 'error',
450
- message: `Failed to kill session process: ${errorMessage}`,
451
- errorCode: IPCErrorCode.SESSION_KILL_FAILED,
452
- };
453
- socket.write(JSON.stringify(response) + '\n');
454
- console.error('[daemon] Stop session error response sent (kill failed)');
455
- return;
456
- }
457
- // Clean up session files
458
- cleanupSession();
459
- console.error('[daemon] Cleaned up session files');
460
- // Clear worker process reference
461
- this.workerManager.dispose();
462
- console.error('[daemon] Cleared worker process reference');
463
- const response = {
464
- type: 'stop_session_response',
465
- sessionId: request.sessionId,
466
- status: 'ok',
467
- message: 'Session stopped successfully',
468
- ...(chromePid !== undefined && { chromePid }),
469
- };
470
- socket.write(JSON.stringify(response) + '\n');
471
- console.error('[daemon] Stop session response sent');
472
- // Release lock immediately so new sessions can start
473
- releaseDaemonLock();
474
- console.error('[daemon] Daemon lock released');
475
- // Shutdown daemon after successful stop
476
- // Give socket time to flush response, then exit gracefully
477
- setTimeout(() => {
478
- console.error('[daemon] Shutting down daemon after successful stop');
479
- process.exit(0);
480
- }, 100);
481
- }
482
- catch (error) {
483
- const response = {
484
- type: 'stop_session_response',
485
- sessionId: request.sessionId,
486
- status: 'error',
487
- message: `Failed to stop session: ${getErrorMessage(error)}`,
488
- errorCode: IPCErrorCode.DAEMON_ERROR,
489
- };
490
- socket.write(JSON.stringify(response) + '\n');
491
- console.error('[daemon] Stop session error response sent');
492
- }
493
- }
494
- /**
495
- * Handle response from worker (lifecycle signals or command responses).
496
- */
497
- handleWorkerResponse(message) {
498
- console.error(`[daemon] Received worker response: ${message.type} (requestId: ${message.requestId})`);
499
- // Check for ready signal (not a command response)
500
- if (message.type === 'worker_ready') {
501
- console.error('[daemon] Worker ready signal (already processed during launch)');
502
- return;
503
- }
504
- // Check if this is a command response
505
- if (isCommandResponse(message.type)) {
506
- // Look up pending request
507
- const pending = this.pendingDomRequests.get(message.requestId);
508
- if (!pending) {
509
- console.error(`[daemon] No pending request found for requestId: ${message.requestId}`);
510
- return;
511
- }
512
- // Clear timeout and remove from pending
513
- clearTimeout(pending.timeout);
514
- this.pendingDomRequests.delete(message.requestId);
515
- // Forward response to client (pass pending data for special handling)
516
- this.forwardCommandResponse(pending.socket, pending.sessionId, message, pending);
517
- }
518
- }
519
- handleWorkerExit(code, signal) {
520
- console.error(`[daemon] Worker exit detected (code: ${code ?? 'null'}, signal: ${signal ?? 'null'})`);
521
- if (this.pendingDomRequests.size === 0) {
522
- return;
523
- }
524
- const errorMessage = 'Worker process exited before responding';
525
- for (const [requestId, pending] of this.pendingDomRequests.entries()) {
526
- clearTimeout(pending.timeout);
527
- this.pendingDomRequests.delete(requestId);
528
- if (pending.commandName === 'worker_status') {
529
- const statusResponse = {
530
- type: 'status_response',
531
- sessionId: pending.sessionId,
532
- status: 'error',
533
- ...(pending.statusData && { data: pending.statusData }),
534
- error: errorMessage,
535
- };
536
- pending.socket.write(JSON.stringify(statusResponse) + '\n');
537
- continue;
538
- }
539
- if (pending.commandName === 'worker_peek') {
540
- const peekResponse = {
541
- type: 'peek_response',
542
- sessionId: pending.sessionId,
543
- status: 'error',
544
- error: errorMessage,
545
- };
546
- pending.socket.write(JSON.stringify(peekResponse) + '\n');
547
- continue;
548
- }
549
- if (pending.commandName) {
550
- const response = {
551
- type: `${pending.commandName}_response`,
552
- sessionId: pending.sessionId,
553
- status: 'error',
554
- error: errorMessage,
555
- };
556
- pending.socket.write(JSON.stringify(response) + '\n');
557
- continue;
558
- }
559
- const fallback = {
560
- type: 'status_response',
561
- sessionId: pending.sessionId,
562
- status: 'error',
563
- error: errorMessage,
564
- };
565
- pending.socket.write(JSON.stringify(fallback) + '\n');
566
- }
567
- }
568
- /**
569
- * Generic forwarder for all command responses.
570
- */
571
- forwardCommandResponse(socket, sessionId, workerResponse, pendingRequest) {
572
- const commandName = getCommandName(workerResponse.type);
573
- if (!commandName) {
574
- console.error(`[daemon] Invalid worker response type: ${workerResponse.type}`);
575
- return;
576
- }
577
- // Special handling for worker_status - merge with base status data
578
- if (commandName === 'worker_status') {
579
- this.forwardWorkerStatusResponse(socket, sessionId, workerResponse, pendingRequest);
580
- return;
581
- }
582
- // Special handling for worker_peek - transform to PeekResponse format
583
- if (commandName === 'worker_peek') {
584
- const { requestId: _requestId, success, data, error, } = workerResponse;
585
- const peekResponse = {
586
- type: 'peek_response',
587
- sessionId,
588
- status: success ? 'ok' : 'error',
589
- ...(success &&
590
- data && {
591
- data: {
592
- sessionPid: readPid() ?? 0,
593
- preview: {
594
- version: data.version,
595
- success: true,
596
- timestamp: new Date(data.startTime).toISOString(),
597
- duration: data.duration,
598
- target: data.target,
599
- data: {
600
- network: data.network,
601
- console: data.console,
602
- },
603
- partial: true,
604
- },
605
- },
606
- }),
607
- ...(error && { error }),
608
- };
609
- socket.write(JSON.stringify(peekResponse) + '\n');
610
- console.error('[daemon] Forwarded worker_peek_response to client (transformed to PeekResponse)');
611
- return;
612
- }
613
- // Default handling for other commands
614
- const { requestId: _requestId, success, ...rest } = workerResponse;
615
- const response = {
616
- ...rest,
617
- type: `${commandName}_response`,
618
- sessionId,
619
- status: success ? 'ok' : 'error',
620
- };
621
- socket.write(JSON.stringify(response) + '\n');
622
- console.error(`[daemon] Forwarded ${commandName}_response to client`);
623
- }
624
- forwardWorkerStatusResponse(socket, sessionId, workerResponse, pendingRequest) {
625
- const { success, data, error } = workerResponse;
626
- const baseStatusData = pendingRequest?.statusData;
627
- if (success && data && baseStatusData) {
628
- const enrichedData = {
629
- ...baseStatusData,
630
- activity: data.activity,
631
- pageState: data.target,
632
- };
633
- const statusResponse = {
634
- type: 'status_response',
635
- sessionId,
636
- status: 'ok',
637
- data: enrichedData,
638
- };
639
- socket.write(JSON.stringify(statusResponse) + '\n');
640
- console.error('[daemon] Forwarded worker_status_response to client (enriched with activity data)');
641
- return;
642
- }
643
- if (baseStatusData) {
644
- const statusResponse = {
645
- type: 'status_response',
646
- sessionId,
647
- status: error ? 'error' : 'ok',
648
- data: baseStatusData,
649
- ...(error && { error }),
650
- };
651
- socket.write(JSON.stringify(statusResponse) + '\n');
652
- console.error('[daemon] Forwarded status_response to client (worker query failed, using base data only)');
653
- return;
654
- }
655
- const fallback = {
656
- type: 'status_response',
657
- sessionId,
658
- status: 'error',
659
- error: error ?? 'Failed to retrieve status data',
660
- };
661
- socket.write(JSON.stringify(fallback) + '\n');
662
- console.error('[daemon] Forwarded status_response error (no base data available)');
663
- }
664
- /**
665
- * Generic handler for all command requests.
666
- */
667
- handleCommandRequest(socket, request) {
668
- const commandName = getCommandName(request.type);
669
- if (!commandName) {
670
- console.error(`[daemon] Invalid command type: ${request.type}`);
671
- return;
672
- }
673
- console.error(`[daemon] ${commandName} request received (sessionId: ${request.sessionId})`);
674
- if (!this.workerManager.hasActiveWorker()) {
675
- const response = {
676
- type: `${commandName}_response`,
677
- sessionId: request.sessionId,
678
- status: 'error',
679
- error: 'No active worker process',
680
- };
681
- socket.write(JSON.stringify(response) + '\n');
682
- console.error(`[daemon] ${commandName} error response sent (no worker)`);
683
- return;
684
- }
685
- const requestId = `${commandName}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
686
- const timeout = setTimeout(() => {
687
- this.pendingDomRequests.delete(requestId);
688
- const response = {
689
- type: `${commandName}_response`,
690
- sessionId: request.sessionId,
691
- status: 'error',
692
- error: 'Worker response timeout (10s)',
693
- };
694
- socket.write(JSON.stringify(response) + '\n');
695
- console.error(`[daemon] ${commandName} timeout response sent`);
696
- }, 10000);
697
- this.pendingDomRequests.set(requestId, {
698
- socket,
699
- sessionId: request.sessionId,
700
- timeout,
701
- commandName,
702
- });
703
- // Extract only sessionId, keep all other fields including 'type' param if it exists
704
- const { sessionId: _sessionId, type: _ipcType, ...params } = request;
705
- const workerRequest = {
706
- type: `${commandName}_request`,
707
- requestId,
708
- ...params,
709
- };
710
- try {
711
- this.workerManager.send(workerRequest);
712
- console.error(`[daemon] Forwarded ${commandName}_request to worker (requestId: ${requestId})`);
713
- }
714
- catch (error) {
715
- clearTimeout(timeout);
716
- this.pendingDomRequests.delete(requestId);
717
- const response = {
718
- type: `${commandName}_response`,
719
- sessionId: request.sessionId,
720
- status: 'error',
721
- error: getErrorMessage(error),
722
- };
723
- socket.write(JSON.stringify(response) + '\n');
724
- console.error(`[daemon] Failed to forward ${commandName}_request to worker: ${getErrorMessage(error)}`);
725
- }
726
- }
727
148
  /**
728
149
  * Stop the IPC server and cleanup.
729
150
  */
@@ -735,24 +156,28 @@ export class IPCServer {
735
156
  try {
736
157
  unlinkSync(socketPath);
737
158
  }
738
- catch {
739
- // Ignore if already deleted
159
+ catch (error) {
160
+ log.debug(`Failed to remove socket file: ${getErrorMessage(error)}`);
740
161
  }
741
162
  const pidPath = getSessionFilePath('DAEMON_PID');
742
163
  try {
743
164
  unlinkSync(pidPath);
744
165
  }
745
- catch {
746
- // Ignore if already deleted
166
+ catch (error) {
167
+ log.debug(`Failed to remove PID file: ${getErrorMessage(error)}`);
747
168
  }
748
169
  }
749
170
  /**
750
171
  * Write daemon PID to file for tracking.
172
+ *
173
+ * Uses AtomicFileWriter to prevent corruption from crashes during write,
174
+ * ensuring daemon.pid is never left in a truncated/corrupt state that
175
+ * would cause parseInt errors during cleanup.
751
176
  */
752
177
  writePidFile() {
753
178
  const pidPath = getSessionFilePath('DAEMON_PID');
754
179
  try {
755
- writeFileSync(pidPath, process.pid.toString(), 'utf-8');
180
+ AtomicFileWriter.writeSync(pidPath, process.pid.toString(), { encoding: 'utf-8' });
756
181
  releaseDaemonLock(); // Release lock after PID is written (P0 Fix #1)
757
182
  console.error(`[daemon] PID file written: ${pidPath}`);
758
183
  }
@@ -765,13 +190,16 @@ export class IPCServer {
765
190
  */
766
191
  static isRunning() {
767
192
  const pidPath = getSessionFilePath('DAEMON_PID');
193
+ const pid = readPidFromFile(pidPath);
194
+ if (pid === null) {
195
+ return false;
196
+ }
768
197
  try {
769
- const pid = parseInt(readFileSync(pidPath, 'utf-8').trim(), 10);
770
- // Check if process is alive
771
198
  process.kill(pid, 0);
772
199
  return true;
773
200
  }
774
- catch {
201
+ catch (error) {
202
+ log.debug(`Process ${pid} not alive: ${getErrorMessage(error)}`);
775
203
  return false;
776
204
  }
777
205
  }