openchrome-mcp 1.12.7 → 1.12.8

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 (328) hide show
  1. package/README.ko.md +8 -1
  2. package/README.md +9 -1
  3. package/dist/broker/auto-elect.d.ts +69 -0
  4. package/dist/broker/auto-elect.d.ts.map +1 -0
  5. package/dist/broker/auto-elect.js +77 -0
  6. package/dist/broker/auto-elect.js.map +1 -0
  7. package/dist/chrome/headed-fallback.d.ts +2 -0
  8. package/dist/chrome/headed-fallback.d.ts.map +1 -1
  9. package/dist/chrome/headed-fallback.js +29 -0
  10. package/dist/chrome/headed-fallback.js.map +1 -1
  11. package/dist/chrome/owner-self-release.d.ts +60 -0
  12. package/dist/chrome/owner-self-release.d.ts.map +1 -0
  13. package/dist/chrome/owner-self-release.js +113 -0
  14. package/dist/chrome/owner-self-release.js.map +1 -0
  15. package/dist/chrome/process-watchdog.d.ts.map +1 -1
  16. package/dist/chrome/process-watchdog.js +8 -0
  17. package/dist/chrome/process-watchdog.js.map +1 -1
  18. package/dist/cli/index.js +55 -3
  19. package/dist/cli/index.js.map +1 -1
  20. package/dist/cli/mcp-client-config.d.ts +1 -0
  21. package/dist/cli/mcp-client-config.js +3 -1
  22. package/dist/cli/mcp-client-config.js.map +1 -1
  23. package/dist/cli/mcp-config-diagnostics.d.ts +28 -0
  24. package/dist/cli/mcp-config-diagnostics.js +203 -0
  25. package/dist/cli/mcp-config-diagnostics.js.map +1 -0
  26. package/dist/index.js +124 -6
  27. package/dist/index.js.map +1 -1
  28. package/dist/tools/batch-paginate.d.ts.map +1 -1
  29. package/dist/tools/batch-paginate.js +4 -7
  30. package/dist/tools/batch-paginate.js.map +1 -1
  31. package/dist/tools/computer.d.ts.map +1 -1
  32. package/dist/tools/computer.js +2 -1
  33. package/dist/tools/computer.js.map +1 -1
  34. package/dist/tools/extract-data.d.ts.map +1 -1
  35. package/dist/tools/extract-data.js +1 -0
  36. package/dist/tools/extract-data.js.map +1 -1
  37. package/dist/tools/find.d.ts.map +1 -1
  38. package/dist/tools/find.js +2 -5
  39. package/dist/tools/find.js.map +1 -1
  40. package/dist/tools/image-qa.d.ts.map +1 -1
  41. package/dist/tools/image-qa.js +3 -2
  42. package/dist/tools/image-qa.js.map +1 -1
  43. package/dist/tools/interact.d.ts.map +1 -1
  44. package/dist/tools/interact.js +6 -5
  45. package/dist/tools/interact.js.map +1 -1
  46. package/dist/tools/oc-normalize-action.js +2 -2
  47. package/dist/tools/oc-normalize-action.js.map +1 -1
  48. package/dist/tools/oc-progress-status.js +2 -2
  49. package/dist/tools/oc-progress-status.js.map +1 -1
  50. package/dist/tools/page-screenshot.d.ts.map +1 -1
  51. package/dist/tools/page-screenshot.js +2 -7
  52. package/dist/tools/page-screenshot.js.map +1 -1
  53. package/dist/tools/vision-find.d.ts.map +1 -1
  54. package/dist/tools/vision-find.js +3 -2
  55. package/dist/tools/vision-find.js.map +1 -1
  56. package/dist/transports/broker-proxy.d.ts +34 -0
  57. package/dist/transports/broker-proxy.d.ts.map +1 -1
  58. package/dist/transports/broker-proxy.js +66 -1
  59. package/dist/transports/broker-proxy.js.map +1 -1
  60. package/dist/transports/duplicate-controller-error-server.d.ts +65 -0
  61. package/dist/transports/duplicate-controller-error-server.d.ts.map +1 -0
  62. package/dist/transports/duplicate-controller-error-server.js +296 -0
  63. package/dist/transports/duplicate-controller-error-server.js.map +1 -0
  64. package/dist/utils/controller-lock.d.ts +68 -0
  65. package/dist/utils/controller-lock.d.ts.map +1 -1
  66. package/dist/utils/controller-lock.js +250 -0
  67. package/dist/utils/controller-lock.js.map +1 -1
  68. package/dist/utils/image-mime.d.ts +18 -0
  69. package/dist/utils/image-mime.d.ts.map +1 -0
  70. package/dist/utils/image-mime.js +51 -0
  71. package/dist/utils/image-mime.js.map +1 -0
  72. package/dist/vision/screenshot-analyzer.d.ts.map +1 -1
  73. package/dist/vision/screenshot-analyzer.js +2 -1
  74. package/dist/vision/screenshot-analyzer.js.map +1 -1
  75. package/package.json +1 -1
  76. package/dist/cli/replay-server.d.ts +0 -34
  77. package/dist/cli/replay-server.js +0 -215
  78. package/dist/cli/replay-server.js.map +0 -1
  79. package/dist/cli/skill.d.ts +0 -14
  80. package/dist/cli/skill.js +0 -179
  81. package/dist/cli/skill.js.map +0 -1
  82. package/dist/cli/trace.d.ts +0 -16
  83. package/dist/cli/trace.js +0 -270
  84. package/dist/cli/trace.js.map +0 -1
  85. package/dist/contracts/evaluator.d.ts +0 -58
  86. package/dist/contracts/evaluator.d.ts.map +0 -1
  87. package/dist/contracts/evaluator.js +0 -151
  88. package/dist/contracts/evaluator.js.map +0 -1
  89. package/dist/contracts/evidence.d.ts +0 -122
  90. package/dist/contracts/evidence.d.ts.map +0 -1
  91. package/dist/contracts/evidence.js +0 -276
  92. package/dist/contracts/evidence.js.map +0 -1
  93. package/dist/contracts/handoff/banner.d.ts +0 -53
  94. package/dist/contracts/handoff/banner.d.ts.map +0 -1
  95. package/dist/contracts/handoff/banner.js +0 -136
  96. package/dist/contracts/handoff/banner.js.map +0 -1
  97. package/dist/contracts/handoff/index.d.ts +0 -11
  98. package/dist/contracts/handoff/index.d.ts.map +0 -1
  99. package/dist/contracts/handoff/index.js +0 -24
  100. package/dist/contracts/handoff/index.js.map +0 -1
  101. package/dist/contracts/handoff/manager.d.ts +0 -104
  102. package/dist/contracts/handoff/manager.d.ts.map +0 -1
  103. package/dist/contracts/handoff/manager.js +0 -184
  104. package/dist/contracts/handoff/manager.js.map +0 -1
  105. package/dist/contracts/handoff/persistence.d.ts +0 -76
  106. package/dist/contracts/handoff/persistence.d.ts.map +0 -1
  107. package/dist/contracts/handoff/persistence.js +0 -251
  108. package/dist/contracts/handoff/persistence.js.map +0 -1
  109. package/dist/contracts/handoff/token.d.ts +0 -22
  110. package/dist/contracts/handoff/token.d.ts.map +0 -1
  111. package/dist/contracts/handoff/token.js +0 -76
  112. package/dist/contracts/handoff/token.js.map +0 -1
  113. package/dist/contracts/idempotency.d.ts +0 -61
  114. package/dist/contracts/idempotency.d.ts.map +0 -1
  115. package/dist/contracts/idempotency.js +0 -182
  116. package/dist/contracts/idempotency.js.map +0 -1
  117. package/dist/contracts/runtime.d.ts +0 -166
  118. package/dist/contracts/runtime.d.ts.map +0 -1
  119. package/dist/contracts/runtime.js +0 -418
  120. package/dist/contracts/runtime.js.map +0 -1
  121. package/dist/contracts/screenshot-classes.d.ts +0 -78
  122. package/dist/contracts/screenshot-classes.d.ts.map +0 -1
  123. package/dist/contracts/screenshot-classes.js +0 -211
  124. package/dist/contracts/screenshot-classes.js.map +0 -1
  125. package/dist/contracts/templates/default-registry.d.ts +0 -31
  126. package/dist/contracts/templates/default-registry.d.ts.map +0 -1
  127. package/dist/contracts/templates/default-registry.js +0 -54
  128. package/dist/contracts/templates/default-registry.js.map +0 -1
  129. package/dist/contracts/templates/public-web/authenticated-fields.d.ts +0 -34
  130. package/dist/contracts/templates/public-web/authenticated-fields.d.ts.map +0 -1
  131. package/dist/contracts/templates/public-web/authenticated-fields.js +0 -82
  132. package/dist/contracts/templates/public-web/authenticated-fields.js.map +0 -1
  133. package/dist/contracts/templates/public-web/link-graph.d.ts +0 -24
  134. package/dist/contracts/templates/public-web/link-graph.d.ts.map +0 -1
  135. package/dist/contracts/templates/public-web/link-graph.js +0 -64
  136. package/dist/contracts/templates/public-web/link-graph.js.map +0 -1
  137. package/dist/contracts/templates/public-web/spa-hydrated.d.ts +0 -31
  138. package/dist/contracts/templates/public-web/spa-hydrated.d.ts.map +0 -1
  139. package/dist/contracts/templates/public-web/spa-hydrated.js +0 -81
  140. package/dist/contracts/templates/public-web/spa-hydrated.js.map +0 -1
  141. package/dist/core/codegen/formatters/mcp-replay.d.ts +0 -29
  142. package/dist/core/codegen/formatters/mcp-replay.d.ts.map +0 -1
  143. package/dist/core/codegen/formatters/mcp-replay.js +0 -37
  144. package/dist/core/codegen/formatters/mcp-replay.js.map +0 -1
  145. package/dist/core/codegen/formatters/playwright.d.ts +0 -13
  146. package/dist/core/codegen/formatters/playwright.d.ts.map +0 -1
  147. package/dist/core/codegen/formatters/playwright.js +0 -208
  148. package/dist/core/codegen/formatters/playwright.js.map +0 -1
  149. package/dist/core/codegen/formatters/puppeteer.d.ts +0 -39
  150. package/dist/core/codegen/formatters/puppeteer.d.ts.map +0 -1
  151. package/dist/core/codegen/formatters/puppeteer.js +0 -260
  152. package/dist/core/codegen/formatters/puppeteer.js.map +0 -1
  153. package/dist/core/codegen/formatters/shared.d.ts +0 -22
  154. package/dist/core/codegen/formatters/shared.d.ts.map +0 -1
  155. package/dist/core/codegen/formatters/shared.js +0 -41
  156. package/dist/core/codegen/formatters/shared.js.map +0 -1
  157. package/dist/core/codegen/secrets-hook.d.ts +0 -59
  158. package/dist/core/codegen/secrets-hook.d.ts.map +0 -1
  159. package/dist/core/codegen/secrets-hook.js +0 -73
  160. package/dist/core/codegen/secrets-hook.js.map +0 -1
  161. package/dist/harness/irreversible-action.d.ts +0 -20
  162. package/dist/harness/irreversible-action.d.ts.map +0 -1
  163. package/dist/harness/irreversible-action.js +0 -150
  164. package/dist/harness/irreversible-action.js.map +0 -1
  165. package/dist/perception/cache.d.ts +0 -48
  166. package/dist/perception/cache.d.ts.map +0 -1
  167. package/dist/perception/cache.js +0 -74
  168. package/dist/perception/cache.js.map +0 -1
  169. package/dist/perception/cross-check.d.ts +0 -55
  170. package/dist/perception/cross-check.d.ts.map +0 -1
  171. package/dist/perception/cross-check.js +0 -74
  172. package/dist/perception/cross-check.js.map +0 -1
  173. package/dist/perception/image-features.d.ts +0 -58
  174. package/dist/perception/image-features.d.ts.map +0 -1
  175. package/dist/perception/image-features.js +0 -148
  176. package/dist/perception/image-features.js.map +0 -1
  177. package/dist/perception/index.d.ts +0 -16
  178. package/dist/perception/index.d.ts.map +0 -1
  179. package/dist/perception/index.js +0 -32
  180. package/dist/perception/index.js.map +0 -1
  181. package/dist/perception/metadata.d.ts +0 -23
  182. package/dist/perception/metadata.d.ts.map +0 -1
  183. package/dist/perception/metadata.js +0 -117
  184. package/dist/perception/metadata.js.map +0 -1
  185. package/dist/perception/types.d.ts +0 -77
  186. package/dist/perception/types.d.ts.map +0 -1
  187. package/dist/perception/types.js +0 -10
  188. package/dist/perception/types.js.map +0 -1
  189. package/dist/perception/voting/args-equivalence.d.ts +0 -36
  190. package/dist/perception/voting/args-equivalence.d.ts.map +0 -1
  191. package/dist/perception/voting/args-equivalence.js +0 -163
  192. package/dist/perception/voting/args-equivalence.js.map +0 -1
  193. package/dist/perception/voting/index.d.ts +0 -9
  194. package/dist/perception/voting/index.d.ts.map +0 -1
  195. package/dist/perception/voting/index.js +0 -18
  196. package/dist/perception/voting/index.js.map +0 -1
  197. package/dist/perception/voting/orchestrator.d.ts +0 -118
  198. package/dist/perception/voting/orchestrator.d.ts.map +0 -1
  199. package/dist/perception/voting/orchestrator.js +0 -200
  200. package/dist/perception/voting/orchestrator.js.map +0 -1
  201. package/dist/perception/voting/providers/anthropic.d.ts +0 -40
  202. package/dist/perception/voting/providers/anthropic.d.ts.map +0 -1
  203. package/dist/perception/voting/providers/anthropic.js +0 -91
  204. package/dist/perception/voting/providers/anthropic.js.map +0 -1
  205. package/dist/perception/voting/providers/http-helpers.d.ts +0 -49
  206. package/dist/perception/voting/providers/http-helpers.d.ts.map +0 -1
  207. package/dist/perception/voting/providers/http-helpers.js +0 -131
  208. package/dist/perception/voting/providers/http-helpers.js.map +0 -1
  209. package/dist/perception/voting/providers/index.d.ts +0 -13
  210. package/dist/perception/voting/providers/index.d.ts.map +0 -1
  211. package/dist/perception/voting/providers/index.js +0 -24
  212. package/dist/perception/voting/providers/index.js.map +0 -1
  213. package/dist/perception/voting/providers/openai.d.ts +0 -31
  214. package/dist/perception/voting/providers/openai.d.ts.map +0 -1
  215. package/dist/perception/voting/providers/openai.js +0 -88
  216. package/dist/perception/voting/providers/openai.js.map +0 -1
  217. package/dist/pilot/handoff/definitions.d.ts +0 -5
  218. package/dist/pilot/handoff/definitions.d.ts.map +0 -1
  219. package/dist/pilot/handoff/definitions.js +0 -53
  220. package/dist/pilot/handoff/definitions.js.map +0 -1
  221. package/dist/resources/trace-resource.d.ts +0 -50
  222. package/dist/resources/trace-resource.d.ts.map +0 -1
  223. package/dist/resources/trace-resource.js +0 -214
  224. package/dist/resources/trace-resource.js.map +0 -1
  225. package/dist/security/shared-profile-policy.d.ts +0 -32
  226. package/dist/security/shared-profile-policy.d.ts.map +0 -1
  227. package/dist/security/shared-profile-policy.js +0 -48
  228. package/dist/security/shared-profile-policy.js.map +0 -1
  229. package/dist/skill/audit.d.ts +0 -55
  230. package/dist/skill/audit.d.ts.map +0 -1
  231. package/dist/skill/audit.js +0 -70
  232. package/dist/skill/audit.js.map +0 -1
  233. package/dist/skill/executor.d.ts +0 -117
  234. package/dist/skill/executor.d.ts.map +0 -1
  235. package/dist/skill/executor.js +0 -233
  236. package/dist/skill/executor.js.map +0 -1
  237. package/dist/skill/index.d.ts +0 -17
  238. package/dist/skill/index.d.ts.map +0 -1
  239. package/dist/skill/index.js +0 -27
  240. package/dist/skill/index.js.map +0 -1
  241. package/dist/skill/interactive-filter.d.ts +0 -25
  242. package/dist/skill/interactive-filter.d.ts.map +0 -1
  243. package/dist/skill/interactive-filter.js +0 -57
  244. package/dist/skill/interactive-filter.js.map +0 -1
  245. package/dist/skill/state.d.ts +0 -73
  246. package/dist/skill/state.d.ts.map +0 -1
  247. package/dist/skill/state.js +0 -153
  248. package/dist/skill/state.js.map +0 -1
  249. package/dist/skill/storage.d.ts +0 -123
  250. package/dist/skill/storage.d.ts.map +0 -1
  251. package/dist/skill/storage.js +0 -316
  252. package/dist/skill/storage.js.map +0 -1
  253. package/dist/skill/url-normalizer.d.ts +0 -31
  254. package/dist/skill/url-normalizer.d.ts.map +0 -1
  255. package/dist/skill/url-normalizer.js +0 -73
  256. package/dist/skill/url-normalizer.js.map +0 -1
  257. package/dist/skill-memory/audit-stats.d.ts +0 -51
  258. package/dist/skill-memory/audit-stats.d.ts.map +0 -1
  259. package/dist/skill-memory/audit-stats.js +0 -189
  260. package/dist/skill-memory/audit-stats.js.map +0 -1
  261. package/dist/skill-memory/curator-lock.d.ts +0 -56
  262. package/dist/skill-memory/curator-lock.d.ts.map +0 -1
  263. package/dist/skill-memory/curator-lock.js +0 -205
  264. package/dist/skill-memory/curator-lock.js.map +0 -1
  265. package/dist/skill-memory/curator-pass2.d.ts +0 -81
  266. package/dist/skill-memory/curator-pass2.d.ts.map +0 -1
  267. package/dist/skill-memory/curator-pass2.js +0 -256
  268. package/dist/skill-memory/curator-pass2.js.map +0 -1
  269. package/dist/skill-memory/curator.d.ts +0 -88
  270. package/dist/skill-memory/curator.d.ts.map +0 -1
  271. package/dist/skill-memory/curator.js +0 -253
  272. package/dist/skill-memory/curator.js.map +0 -1
  273. package/dist/skill-memory/extractor.d.ts +0 -76
  274. package/dist/skill-memory/extractor.d.ts.map +0 -1
  275. package/dist/skill-memory/extractor.js +0 -257
  276. package/dist/skill-memory/extractor.js.map +0 -1
  277. package/dist/skill-memory/index.d.ts +0 -26
  278. package/dist/skill-memory/index.d.ts.map +0 -1
  279. package/dist/skill-memory/index.js +0 -49
  280. package/dist/skill-memory/index.js.map +0 -1
  281. package/dist/skill-memory/llm-merge.d.ts +0 -68
  282. package/dist/skill-memory/llm-merge.d.ts.map +0 -1
  283. package/dist/skill-memory/llm-merge.js +0 -170
  284. package/dist/skill-memory/llm-merge.js.map +0 -1
  285. package/dist/skill-memory/recall.d.ts +0 -88
  286. package/dist/skill-memory/recall.d.ts.map +0 -1
  287. package/dist/skill-memory/recall.js +0 -182
  288. package/dist/skill-memory/recall.js.map +0 -1
  289. package/dist/skill-memory/skill-md.d.ts +0 -26
  290. package/dist/skill-memory/skill-md.d.ts.map +0 -1
  291. package/dist/skill-memory/skill-md.js +0 -227
  292. package/dist/skill-memory/skill-md.js.map +0 -1
  293. package/dist/skill-memory/stop-words.d.ts +0 -10
  294. package/dist/skill-memory/stop-words.d.ts.map +0 -1
  295. package/dist/skill-memory/stop-words.js +0 -41
  296. package/dist/skill-memory/stop-words.js.map +0 -1
  297. package/dist/skill-memory/types.d.ts +0 -71
  298. package/dist/skill-memory/types.d.ts.map +0 -1
  299. package/dist/skill-memory/types.js +0 -19
  300. package/dist/skill-memory/types.js.map +0 -1
  301. package/dist/trace/cdp-attach.d.ts +0 -51
  302. package/dist/trace/cdp-attach.d.ts.map +0 -1
  303. package/dist/trace/cdp-attach.js +0 -68
  304. package/dist/trace/cdp-attach.js.map +0 -1
  305. package/dist/trace/index.d.ts +0 -14
  306. package/dist/trace/index.d.ts.map +0 -1
  307. package/dist/trace/index.js +0 -24
  308. package/dist/trace/index.js.map +0 -1
  309. package/dist/trace/recorder.d.ts +0 -102
  310. package/dist/trace/recorder.d.ts.map +0 -1
  311. package/dist/trace/recorder.js +0 -247
  312. package/dist/trace/recorder.js.map +0 -1
  313. package/dist/trace/redactor.d.ts +0 -37
  314. package/dist/trace/redactor.d.ts.map +0 -1
  315. package/dist/trace/redactor.js +0 -195
  316. package/dist/trace/redactor.js.map +0 -1
  317. package/dist/trace/storage.d.ts +0 -70
  318. package/dist/trace/storage.d.ts.map +0 -1
  319. package/dist/trace/storage.js +0 -252
  320. package/dist/trace/storage.js.map +0 -1
  321. package/dist/trace/types.d.ts +0 -43
  322. package/dist/trace/types.d.ts.map +0 -1
  323. package/dist/trace/types.js +0 -9
  324. package/dist/trace/types.js.map +0 -1
  325. package/dist/utils/auth-token.d.ts +0 -18
  326. package/dist/utils/auth-token.d.ts.map +0 -1
  327. package/dist/utils/auth-token.js +0 -95
  328. package/dist/utils/auth-token.js.map +0 -1
package/README.ko.md CHANGED
@@ -68,6 +68,13 @@ npx openchrome-mcp setup --client opencode # OpenCode
68
68
 
69
69
  MCP 클라이언트를 재시작하세요. 끝입니다 — 첫 도구 호출 시 Chrome이 자동 실행됩니다.
70
70
 
71
+ **업데이트는 설정 마이그레이션이 아닙니다.** `npm install -g openchrome-mcp@latest`는
72
+ OpenChrome 바이너리를 업데이트하지만, 기존 Claude Code, Codex CLI, OpenCode 또는 기타
73
+ MCP 호스트 등록을 자동으로 다시 쓰지는 않습니다. 릴리스 노트에서 새 토폴로지(예:
74
+ isolated profile, broker mode, 향후 auto-elect mode)로 이동하라고 안내하는 경우,
75
+ `openchrome setup --client <host> ...`를 다시 실행하거나 호스트 설정을 수동으로
76
+ 수정한 뒤 해당 호스트 세션을 재시작해야 새 MCP namespace가 로드됩니다.
77
+
71
78
  <details>
72
79
  <summary>수동 MCP 설정 (Cursor / VS Code / Windsurf 등)</summary>
73
80
 
@@ -194,7 +201,7 @@ query_dom → inspect → interact` 대신 **바로 실행 가능한 번호 목
194
201
 
195
202
  ## 알아두면 좋은 그 외 기능
196
203
 
197
- - **병렬 세션** — Chrome 1개, 탭/레인 N개; `workerId` + `profileDirectory`로 클라이언트별 격리. 여러 MCP 클라이언트는 단일 broker/HTTP 소유자를 통해 연결할 때(`--broker` / `--connect-broker`) 하나의 Chrome을 안전하게 공유합니다. 독립 stdio 클라이언트는 `--port` / `--user-data-dir` 프로파일을 분리하세요. [`docs/mcp/topologies.md`](docs/mcp/topologies.md) 참고.
204
+ - **병렬 세션** — Chrome 1개, 탭/레인 N개; `workerId` + `profileDirectory`로 클라이언트별 격리. 여러 MCP 클라이언트는 단일 broker/HTTP 소유자를 통해 연결할 때(`--broker` / `--connect-broker`) 하나의 Chrome을 안전하게 공유합니다. 독립 stdio 클라이언트는 `--port` / `--user-data-dir` 프로파일을 분리하세요. duplicate-controller 또는 `-32000` 시작 실패를 보고 OpenChrome을 업데이트했다면 MCP 호스트 설정도 마이그레이션하고 호스트를 재시작해야 합니다. 패키지 업데이트만으로 기존 등록은 바뀌지 않습니다. [`docs/mcp/topologies.md`](docs/mcp/topologies.md) 참고.
198
205
  - **봇 차단 / Turnstile 대응** — 3단계 자동 폴백 (headless → stealth → 실제 headed Chrome)으로 CDN/WAF 차단 우회. [Turnstile 가이드](docs/turnstile-guide.md).
199
206
  - **대화형 로그인** — 런처가 기본적으로 화면에 보이게 실행되므로 2FA/CAPTCHA를 한 번 완료한 뒤 영구 프로필을 재사용.
200
207
  - **세션 지속성** — `--persist-storage`로 쿠키 + localStorage를 원자적으로 저장해 headless에서 재사용.
package/README.md CHANGED
@@ -68,6 +68,14 @@ npx openchrome-mcp setup --client opencode # OpenCode
68
68
 
69
69
  Restart your MCP client. That's it — Chrome auto-launches on first tool call.
70
70
 
71
+ **Updating is not configuration migration.** `npm install -g openchrome-mcp@latest`
72
+ updates the OpenChrome binary, but it does not rewrite existing Claude Code,
73
+ Codex CLI, OpenCode, or other MCP host registrations. If a release note asks you
74
+ to move to a new topology (for example isolated profiles, broker mode, or a
75
+ future auto-elect mode), rerun `openchrome setup --client <host> ...` or update
76
+ the host config manually, then restart that host session so the MCP namespace is
77
+ loaded from the new config.
78
+
71
79
  For manual Codex CLI configuration, run `openchrome config --client codex`
72
80
  and add the printed `[mcp_servers.openchrome]` block to `~/.codex/config.toml`.
73
81
 
@@ -199,7 +207,7 @@ claims only when backed by live or recorded-real benchmark rows — see
199
207
 
200
208
  ## Other capabilities worth knowing
201
209
 
202
- - **Parallel sessions** — 1 Chrome, N tabs/lanes; `workerId` + `profileDirectory` give per-client isolation. Multiple MCP clients can share one Chrome safely when they connect through a single broker/HTTP owner (`--broker` / `--connect-broker`); independent stdio clients should use separate `--port` / `--user-data-dir` profiles. See [`docs/mcp/topologies.md`](docs/mcp/topologies.md).
210
+ - **Parallel sessions** — 1 Chrome, N tabs/lanes; `workerId` + `profileDirectory` give per-client isolation. Multiple MCP clients can share one Chrome safely when they connect through a single broker/HTTP owner (`--broker` / `--connect-broker`); independent stdio clients should use separate `--port` / `--user-data-dir` profiles. If you upgraded OpenChrome after seeing duplicate-controller or `-32000` startup failures, also migrate the MCP host config and restart the host; package updates alone do not change existing registrations. See [`docs/mcp/topologies.md`](docs/mcp/topologies.md).
203
211
  - **Anti-bot / Turnstile** — 3-tier auto-fallback (headless → stealth → real headed Chrome) bypasses CDN/WAF blocks. [Turnstile guide](docs/turnstile-guide.md).
204
212
  - **Interactive login** — headed by default since the launcher runs visible; complete 2FA/CAPTCHA once, reuse the persistent profile after.
205
213
  - **Session persistence** — `--persist-storage` saves cookies + localStorage atomically for headless reuse.
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Auto-elect coordinated sharing (#1480; SSOT decision D3 Q1′).
3
+ *
4
+ * Pure, side-effect-free decision helpers for the default `serve --auto-launch`
5
+ * election path:
6
+ *
7
+ * - the process that WINS the controller lock becomes the broker OWNER and
8
+ * publishes broker discovery metadata (so surplus sessions can attach);
9
+ * - a process that LOSES to a healthy owner becomes a coordinated CLIENT
10
+ * (`--connect-broker` proxy) instead of failing fast.
11
+ *
12
+ * The behavior is gated behind an explicit opt-in (`--auto-elect` /
13
+ * `OPENCHROME_AUTO_ELECT=1`). With the flag unset, the default path is byte-for-
14
+ * byte unchanged (fail-fast single owner), so this module's wiring has zero blast
15
+ * radius until an operator opts in. See docs/roadmap/ssot-decisions.md (D3 Q1′)
16
+ * for the policy and the eventual default-flip plan.
17
+ *
18
+ * Keeping the decisions here (rather than inline in src/index.ts) makes the
19
+ * election rules unit-testable without booting a server or Chrome.
20
+ */
21
+ /** Offset from the CDP port used for the elected owner's broker HTTP endpoint. */
22
+ export declare const BROKER_HTTP_PORT_OFFSET = 200;
23
+ /**
24
+ * Is auto-elect enabled for this process?
25
+ *
26
+ * True when the operator passed `--auto-elect` or set `OPENCHROME_AUTO_ELECT=1`.
27
+ */
28
+ export declare function isAutoElectEnabled(opts: {
29
+ autoElect?: boolean;
30
+ }, env?: NodeJS.ProcessEnv): boolean;
31
+ /**
32
+ * Should the lock WINNER elect itself as the broker owner (publish a broker so
33
+ * losers can attach)?
34
+ *
35
+ * Only when auto-elect is on, this process owns Chrome lifecycle (`--auto-launch`),
36
+ * and the operator did not already pick an explicit role. Explicit `--broker` /
37
+ * `--connect-broker` always win over auto-elect — auto-elect never overrides a
38
+ * deliberate operator choice.
39
+ */
40
+ export declare function shouldElectBrokerOwner(params: {
41
+ autoElect: boolean;
42
+ autoLaunch: boolean;
43
+ manualBroker: boolean;
44
+ connectBroker: boolean;
45
+ }): boolean;
46
+ /**
47
+ * Should a process that LOST the controller lock attach as a coordinated client
48
+ * rather than fail fast?
49
+ *
50
+ * Only when auto-elect is on AND a broker is actually discoverable for this
51
+ * `(port, userDataDir)` — i.e. the healthy owner is itself an auto-elect/broker
52
+ * owner. If the owner is a plain direct controller (no broker published), there
53
+ * is nothing to attach to and the caller must fall back to the normal
54
+ * duplicate-controller remediation.
55
+ */
56
+ export declare function shouldClientAutoConnect(params: {
57
+ autoElect: boolean;
58
+ brokerPresent: boolean;
59
+ }): boolean;
60
+ /**
61
+ * The default broker HTTP port for an auto-elected owner on a given CDP port.
62
+ *
63
+ * Deterministic (`cdpPort + 200`, e.g. 9222 → 9422) so it is predictable and
64
+ * clear of the headed-fallback offset (`+100`). Operators can still override via
65
+ * `--http`/`OPENCHROME_HTTP_PORT`; clients never rely on this value directly —
66
+ * they read the actual endpoint from the published broker metadata.
67
+ */
68
+ export declare function defaultBrokerHttpPort(cdpPort: number): number;
69
+ //# sourceMappingURL=auto-elect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-elect.d.ts","sourceRoot":"","sources":["../../src/broker/auto-elect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,kFAAkF;AAClF,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,EAC7B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAET;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;CACxB,GAAG,OAAO,CAOV;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;CACxB,GAAG,OAAO,CAEV;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE7D"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ /**
3
+ * Auto-elect coordinated sharing (#1480; SSOT decision D3 Q1′).
4
+ *
5
+ * Pure, side-effect-free decision helpers for the default `serve --auto-launch`
6
+ * election path:
7
+ *
8
+ * - the process that WINS the controller lock becomes the broker OWNER and
9
+ * publishes broker discovery metadata (so surplus sessions can attach);
10
+ * - a process that LOSES to a healthy owner becomes a coordinated CLIENT
11
+ * (`--connect-broker` proxy) instead of failing fast.
12
+ *
13
+ * The behavior is gated behind an explicit opt-in (`--auto-elect` /
14
+ * `OPENCHROME_AUTO_ELECT=1`). With the flag unset, the default path is byte-for-
15
+ * byte unchanged (fail-fast single owner), so this module's wiring has zero blast
16
+ * radius until an operator opts in. See docs/roadmap/ssot-decisions.md (D3 Q1′)
17
+ * for the policy and the eventual default-flip plan.
18
+ *
19
+ * Keeping the decisions here (rather than inline in src/index.ts) makes the
20
+ * election rules unit-testable without booting a server or Chrome.
21
+ */
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.BROKER_HTTP_PORT_OFFSET = void 0;
24
+ exports.isAutoElectEnabled = isAutoElectEnabled;
25
+ exports.shouldElectBrokerOwner = shouldElectBrokerOwner;
26
+ exports.shouldClientAutoConnect = shouldClientAutoConnect;
27
+ exports.defaultBrokerHttpPort = defaultBrokerHttpPort;
28
+ /** Offset from the CDP port used for the elected owner's broker HTTP endpoint. */
29
+ exports.BROKER_HTTP_PORT_OFFSET = 200;
30
+ /**
31
+ * Is auto-elect enabled for this process?
32
+ *
33
+ * True when the operator passed `--auto-elect` or set `OPENCHROME_AUTO_ELECT=1`.
34
+ */
35
+ function isAutoElectEnabled(opts, env = process.env) {
36
+ return Boolean(opts.autoElect) || env.OPENCHROME_AUTO_ELECT === '1';
37
+ }
38
+ /**
39
+ * Should the lock WINNER elect itself as the broker owner (publish a broker so
40
+ * losers can attach)?
41
+ *
42
+ * Only when auto-elect is on, this process owns Chrome lifecycle (`--auto-launch`),
43
+ * and the operator did not already pick an explicit role. Explicit `--broker` /
44
+ * `--connect-broker` always win over auto-elect — auto-elect never overrides a
45
+ * deliberate operator choice.
46
+ */
47
+ function shouldElectBrokerOwner(params) {
48
+ return (params.autoElect &&
49
+ params.autoLaunch &&
50
+ !params.manualBroker &&
51
+ !params.connectBroker);
52
+ }
53
+ /**
54
+ * Should a process that LOST the controller lock attach as a coordinated client
55
+ * rather than fail fast?
56
+ *
57
+ * Only when auto-elect is on AND a broker is actually discoverable for this
58
+ * `(port, userDataDir)` — i.e. the healthy owner is itself an auto-elect/broker
59
+ * owner. If the owner is a plain direct controller (no broker published), there
60
+ * is nothing to attach to and the caller must fall back to the normal
61
+ * duplicate-controller remediation.
62
+ */
63
+ function shouldClientAutoConnect(params) {
64
+ return params.autoElect && params.brokerPresent;
65
+ }
66
+ /**
67
+ * The default broker HTTP port for an auto-elected owner on a given CDP port.
68
+ *
69
+ * Deterministic (`cdpPort + 200`, e.g. 9222 → 9422) so it is predictable and
70
+ * clear of the headed-fallback offset (`+100`). Operators can still override via
71
+ * `--http`/`OPENCHROME_HTTP_PORT`; clients never rely on this value directly —
72
+ * they read the actual endpoint from the published broker metadata.
73
+ */
74
+ function defaultBrokerHttpPort(cdpPort) {
75
+ return cdpPort + exports.BROKER_HTTP_PORT_OFFSET;
76
+ }
77
+ //# sourceMappingURL=auto-elect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-elect.js","sourceRoot":"","sources":["../../src/broker/auto-elect.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAUH,gDAKC;AAWD,wDAYC;AAYD,0DAKC;AAUD,sDAEC;AAjED,kFAAkF;AACrE,QAAA,uBAAuB,GAAG,GAAG,CAAC;AAE3C;;;;GAIG;AACH,SAAgB,kBAAkB,CAChC,IAA6B,EAC7B,MAAyB,OAAO,CAAC,GAAG;IAEpC,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,qBAAqB,KAAK,GAAG,CAAC;AACtE,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,sBAAsB,CAAC,MAKtC;IACC,OAAO,CACL,MAAM,CAAC,SAAS;QAChB,MAAM,CAAC,UAAU;QACjB,CAAC,MAAM,CAAC,YAAY;QACpB,CAAC,MAAM,CAAC,aAAa,CACtB,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,uBAAuB,CAAC,MAGvC;IACC,OAAO,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,aAAa,CAAC;AAClD,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,qBAAqB,CAAC,OAAe;IACnD,OAAO,OAAO,GAAG,+BAAuB,CAAC;AAC3C,CAAC"}
@@ -30,6 +30,8 @@ declare class HeadedFallbackManager {
30
30
  private port;
31
31
  private alivePages;
32
32
  private profileDirectory?;
33
+ private chromePid?;
34
+ private markerUserDataDir?;
33
35
  private readonly cleanup;
34
36
  constructor(basePort?: number);
35
37
  /** Check if headed fallback is available in this environment */
@@ -1 +1 @@
1
- {"version":3,"file":"headed-fallback.d.ts","sourceRoot":"","sources":["../../src/chrome/headed-fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAkB,EAAW,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAM1D,OAAO,EAAsB,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAuB7E,2CAA2C;AAC3C,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;CACnC;AAED,wEAAwE;AACxE,MAAM,WAAW,sBAAuB,SAAQ,oBAAoB;IAClE,QAAQ,EAAE,MAAM,CAAC;CAClB;AA2BD,cAAM,qBAAqB;IACzB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,UAAU,CAAgC;IAClD,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;gBAChD,QAAQ,GAAE,MAAa;IAMnC,gEAAgE;IAChE,WAAW,IAAI,OAAO;IAItB,wDAAwD;IACxD,OAAO,IAAI,MAAM;IAIjB,8CAA8C;YAChC,aAAa;YAuBb,kBAAkB;YAsElB,gBAAgB;IAiB9B;;;OAGG;IACG,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA8B1D;;;;;;;OAOG;IACG,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA2CjG,gFAAgF;IAChF,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAItC,2CAA2C;IAC3C,QAAQ,IAAI,IAAI;CAoBjB;AAKD,wBAAgB,iBAAiB,CAAC,QAAQ,GAAE,MAAa,GAAG,qBAAqB,CAKhF;AAED,8FAA8F;AAC9F,wBAAgB,sBAAsB,IAAI,IAAI,CAK7C"}
1
+ {"version":3,"file":"headed-fallback.d.ts","sourceRoot":"","sources":["../../src/chrome/headed-fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAkB,EAAW,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAM1D,OAAO,EAAsB,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAwB7E,2CAA2C;AAC3C,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;CACnC;AAED,wEAAwE;AACxE,MAAM,WAAW,sBAAuB,SAAQ,oBAAoB;IAClE,QAAQ,EAAE,MAAM,CAAC;CAClB;AA2BD,cAAM,qBAAqB;IACzB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,UAAU,CAAgC;IAClD,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAKlC,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,iBAAiB,CAAC,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;gBAChD,QAAQ,GAAE,MAAa;IAMnC,gEAAgE;IAChE,WAAW,IAAI,OAAO;IAItB,wDAAwD;IACxD,OAAO,IAAI,MAAM;IAIjB,8CAA8C;YAChC,aAAa;YAuBb,kBAAkB;YAiFlB,gBAAgB;IAiB9B;;;OAGG;IACG,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA8B1D;;;;;;;OAOG;IACG,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA2CjG,gFAAgF;IAChF,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAItC,2CAA2C;IAC3C,QAAQ,IAAI,IAAI;CA2BjB;AAKD,wBAAgB,iBAAiB,CAAC,QAAQ,GAAE,MAAa,GAAG,qBAAqB,CAKhF;AAED,8FAA8F;AAC9F,wBAAgB,sBAAsB,IAAI,IAAI,CAK7C"}
@@ -60,6 +60,7 @@ const page_diagnostics_1 = require("../utils/page-diagnostics");
60
60
  const safe_title_1 = require("../utils/safe-title");
61
61
  const puppeteer_helpers_1 = require("../utils/puppeteer-helpers");
62
62
  const process_guardian_1 = require("../utils/process-guardian");
63
+ const ownership_marker_1 = require("./ownership-marker");
63
64
  /** Default port offset from main Chrome port for the headed fallback */
64
65
  const HEADED_PORT_OFFSET = 100;
65
66
  let activeCleanup = null;
@@ -111,6 +112,12 @@ class HeadedFallbackManager {
111
112
  port;
112
113
  alivePages = new Map();
113
114
  profileDirectory;
115
+ // #1480 G2: track the fallback Chrome's identity so the orphan reaper can
116
+ // reclaim it. The reaper's marker scan is port-independent, so a marker is the
117
+ // only thing that lets it reap a fallback Chrome living at basePort+100 — well
118
+ // outside the default basePort..basePort+4 reap window.
119
+ chromePid;
120
+ markerUserDataDir;
114
121
  cleanup = () => { this.shutdown(); };
115
122
  constructor(basePort = 9222) {
116
123
  this.port = basePort + HEADED_PORT_OFFSET;
@@ -199,6 +206,18 @@ class HeadedFallbackManager {
199
206
  (0, process_guardian_1.spawnProcessGuardian)(process.pid, this.chromeProcess.pid, {
200
207
  label: 'headed-fallback',
201
208
  });
209
+ // #1480 G2: mark the fallback Chrome as openchrome-managed so that if this
210
+ // owner dies hard (SIGKILL) before the guardian/cleanup fires, the next
211
+ // openchrome start's orphan-reap sweep classifies it 'kill' (ppid dead)
212
+ // and reclaims it instead of leaking a headed Chrome on port basePort+100.
213
+ this.chromePid = this.chromeProcess.pid;
214
+ this.markerUserDataDir = userDataDir;
215
+ try {
216
+ (0, ownership_marker_1.writeMarker)({ chromePid: this.chromeProcess.pid, userDataDir });
217
+ }
218
+ catch (err) {
219
+ console.error('[HeadedFallback] ownership marker write failed:', err);
220
+ }
202
221
  }
203
222
  // Wait for Chrome to be ready
204
223
  const wsEndpoint = await this.waitForDebugPort(15000);
@@ -333,6 +352,16 @@ class HeadedFallbackManager {
333
352
  catch { /* ignore */ }
334
353
  this.chromeProcess = null;
335
354
  }
355
+ // #1480 G2: drop the ownership marker on clean shutdown so the reaper does
356
+ // not later chase an already-terminated PID.
357
+ if (this.chromePid !== undefined) {
358
+ try {
359
+ (0, ownership_marker_1.removeMarker)({ chromePid: this.chromePid, userDataDir: this.markerUserDataDir });
360
+ }
361
+ catch { /* ignore */ }
362
+ this.chromePid = undefined;
363
+ this.markerUserDataDir = undefined;
364
+ }
336
365
  }
337
366
  }
338
367
  // Singleton instance — port is set on first use
@@ -1 +1 @@
1
- {"version":3,"file":"headed-fallback.js","sourceRoot":"","sources":["../../src/chrome/headed-fallback.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgUH,8CAKC;AAGD,wDAKC;AA3UD,oEAA0D;AAC1D,iDAAoD;AACpD,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAC7B,4DAAqD;AACrD,gEAA6E;AAC7E,oDAAgD;AAChD,kEAAyD;AACzD,gEAAiE;AAEjE,wEAAwE;AACxE,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,IAAI,aAAa,GAAwB,IAAI,CAAC;AAC9C,IAAI,wBAAwB,GAAG,KAAK,CAAC;AAErC,SAAS,gBAAgB;IACvB,aAAa,EAAE,EAAE,CAAC;AACpB,CAAC;AAED,SAAS,4BAA4B;IACnC,IAAI,wBAAwB;QAAE,OAAO;IACrC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IACvC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IACxC,wBAAwB,GAAG,IAAI,CAAC;AAClC,CAAC;AAeD;;GAEG;AACH,SAAS,gBAAgB;IACvB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACxC,IAAI,OAAO,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAEtD,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC/B,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,8DAA8D,CAAC;QACzE,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IACjC,CAAC;SAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAChC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACpD,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;YACtF,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,wBAAwB,CAAC,EAAE,CAAC;YAC5E,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,qBAAqB;IACjB,OAAO,GAAmB,IAAI,CAAC;IAC/B,aAAa,GAAwB,IAAI,CAAC;IAC1C,SAAS,GAA4B,IAAI,CAAC;IAC1C,IAAI,CAAS;IACb,UAAU,GAAsB,IAAI,GAAG,EAAE,CAAC;IAC1C,gBAAgB,CAAU;IACjB,OAAO,GAAG,GAAS,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5D,YAAY,WAAmB,IAAI;QACjC,IAAI,CAAC,IAAI,GAAG,QAAQ,GAAG,kBAAkB,CAAC;QAC1C,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,4BAA4B,EAAE,CAAC;IACjC,CAAC;IAED,gEAAgE;IAChE,WAAW;QACT,OAAO,IAAA,2BAAU,GAAE,IAAI,gBAAgB,EAAE,KAAK,IAAI,CAAC;IACrD,CAAC;IAED,wDAAwD;IACxD,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,8CAA8C;IACtC,KAAK,CAAC,aAAa;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,IAAI,CAClC,CAAC,OAAQ,IAAI,CAAC,OAA8C,CAAC,SAAS,KAAK,SAAS;YAClF,CAAC,CAAE,IAAI,CAAC,OAA8C,CAAC,SAAS;YAChE,CAAC,CAAC,SAAS,CAAC;eACX,CAAC,OAAQ,IAAI,CAAC,OAAsD,CAAC,WAAW,KAAK,UAAU;gBAChG,CAAC,CAAE,IAAI,CAAC,OAAqD,CAAC,WAAW,EAAE;gBAC3E,CAAC,CAAC,KAAK,CAAC,CACX,CAAC;QACF,IAAI,WAAW;YAAE,OAAO,IAAI,CAAC,OAAQ,CAAC;QAEtC,8BAA8B;QAC9B,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC;QAE1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAChE,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;YACpC,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,gBAAyB;QACxD,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,IAAA,2BAAU,GAAE,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,CAAC;QAED,qFAAqF;QACrF,oFAAoF;QACpF,IAAI,WAAmB,CAAC;QACxB,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;YACpE,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YAE3E,oDAAoD;YACpD,IAAI,CAAC;gBACH,MAAM,EAAE,cAAc,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;gBAC7D,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;gBAC5C,MAAM,cAAc,GAAG,cAAc,CAAC,qBAAqB,EAAE,CAAC;gBAC9D,IAAI,cAAc,IAAI,cAAc,CAAC,SAAS,CAAC,cAAc,EAAE,gBAAgB,CAAC,EAAE,CAAC;oBACjF,MAAM,MAAM,GAAG,cAAc,CAAC,eAAe,CAAC,cAAc,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;oBAC7F,OAAO,CAAC,KAAK,CAAC,wCAAwC,MAAM,CAAC,MAAM,aAAa,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBACpG,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,kDAAkD,EAAE,GAAG,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,8BAA8B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/C,MAAM,IAAI,GAAG;YACX,2BAA2B,IAAI,CAAC,IAAI,EAAE;YACtC,mBAAmB,WAAW,EAAE;YAChC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,uBAAuB,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,gBAAgB;YAChB,4BAA4B;YAC5B,mBAAmB;YACnB,yBAAyB;YACzB,+CAA+C;SAChD,CAAC;QAEF,OAAO,CAAC,KAAK,CAAC,oDAAoD,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;QAElF,IAAI,CAAC,aAAa,GAAG,IAAA,qBAAK,EAAC,UAAU,EAAE,IAAI,EAAE;YAC3C,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;YAC3B,IAAA,uCAAoB,EAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;gBACxD,KAAK,EAAE,iBAAiB;aACzB,CAAC,CAAC;QACL,CAAC;QAED,8BAA8B;QAC9B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAEtD,MAAM,OAAO,GAAG,MAAM,wBAAS,CAAC,OAAO,CAAC;YACtC,iBAAiB,EAAE,UAAU;YAC7B,eAAe,EAAE,IAAI;SACtB,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,CAAC,gDAAgD,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3E,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,SAAiB;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,CAAC,IAAI,eAAe,CAAC,CAAC;gBAC3E,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAuC,CAAC;gBACxE,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC9B,OAAO,IAAI,CAAC,oBAAoB,CAAC;gBACnC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,uBAAuB;YACzB,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gDAAgD,SAAS,IAAI,CAAC,CAAC;IACjF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ,CAAC,GAAW;QACxB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAErC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnB,SAAS,EAAE,kBAAkB;gBAC7B,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YAEH,sCAAsC;YACtC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAExD,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACxD,IAAA,sBAAS,EAAC,IAAuB,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACzE,IAAA,qCAAkB,EAAC,IAAuB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;aAC9D,CAAC,CAAC;YAEH,OAAO;gBACL,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;gBACf,KAAK;gBACL,YAAY;gBACZ,YAAY,EAAE,QAAQ;aACvB,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,kBAAkB,CAAC,GAAW,EAAE,gBAAyB;QAC7D,+EAA+E;QAC/E,sDAAsD;QACtD,IAAI,gBAAgB,KAAK,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/D,OAAO,CAAC,KAAK,CAAC,0CAA0C,IAAI,CAAC,gBAAgB,IAAI,QAAQ,SAAS,gBAAgB,IAAI,QAAQ,uBAAuB,CAAC,CAAC;YACvJ,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAErC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnB,SAAS,EAAE,kBAAkB;gBAC7B,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YAEH,sCAAsC;YACtC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAExD,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACxD,IAAA,sBAAS,EAAC,IAAuB,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACzE,IAAA,qCAAkB,EAAC,IAAuB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;aAC9D,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,IAAA,+BAAW,EAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAuB,CAAC,CAAC;YACvD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAE3D,OAAO;gBACL,QAAQ;gBACR,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;gBACf,KAAK;gBACL,YAAY;gBACZ,YAAY,EAAE,QAAQ;aACvB,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACnC,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,gFAAgF;IAChF,OAAO,CAAC,QAAgB;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;IAC/C,CAAC;IAED,2CAA2C;IAC3C,QAAQ;QACN,IAAI,aAAa,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;QAED,6BAA6B;QAC7B,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,IAAI,CAAC;gBAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAExB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC;gBAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YACzD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC/D,IAAI,CAAC;gBAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YACzD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,CAAC;IACH,CAAC;CACF;AAED,gDAAgD;AAChD,IAAI,QAAQ,GAAiC,IAAI,CAAC;AAElD,SAAgB,iBAAiB,CAAC,WAAmB,IAAI;IACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8FAA8F;AAC9F,SAAgB,sBAAsB;IACpC,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACpB,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"headed-fallback.js","sourceRoot":"","sources":["../../src/chrome/headed-fallback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Owner self-release (#1474).
3
+ *
4
+ * When the managed Chrome dies and cannot be brought back, the owner becomes a
5
+ * half-zombie: its MCP process is alive but it can no longer provide a working
6
+ * Chrome, yet it keeps holding the controller lock — deadlocking every other
7
+ * parallel session, the exact outage reported in #1474.
8
+ *
9
+ * This wiring surrenders the controller lock and exits non-zero so the MCP host
10
+ * respawns a fresh owner and the health-aware acquirer (another session, or our
11
+ * own respawn) can take over. It is the proactive complement to the reactive
12
+ * takeover in acquireControllerLockWithHealthCheck(): the dying owner releases
13
+ * instead of waiting to be evicted.
14
+ *
15
+ * Trigger correctness: we do NOT key off `watchdog-exhausted`, which the
16
+ * ChromeProcessWatchdog emits after N *successful* relaunches (Chrome is up at
17
+ * that point) — exiting there would tear down a freshly-recovered browser and
18
+ * drop active work. Instead we count consecutive `relaunch-failed` events
19
+ * (reset by any `chrome-relaunched`) and, only once the failures cross a
20
+ * threshold, confirm with a live CDP probe. The process exits only when Chrome
21
+ * is genuinely unreachable, never while it is serving requests.
22
+ */
23
+ import type { EventEmitter } from 'events';
24
+ /**
25
+ * Non-zero exit code meaning "owner gave up Chrome; respawn me". Distinct from
26
+ * the config-error exit(2) so logs/hosts can tell the two apart.
27
+ */
28
+ export declare const OWNER_SELF_RELEASE_EXIT_CODE = 70;
29
+ /** Default consecutive relaunch failures before we confirm-and-release. */
30
+ export declare const DEFAULT_RELEASE_FAILURE_THRESHOLD = 2;
31
+ export interface OwnerSelfReleaseDeps {
32
+ /** Release the controller lock held by this owner (best-effort, idempotent). */
33
+ releaseLock: () => void;
34
+ /** Terminate the process so the MCP host respawns a fresh owner. */
35
+ exit: (code: number) => void;
36
+ /**
37
+ * Confirm whether this owner's Chrome/CDP is actually reachable right now.
38
+ * The hard safety gate: a true result aborts self-release so a recovered or
39
+ * still-serving Chrome is never torn down.
40
+ */
41
+ probeChromeReachable: () => Promise<boolean>;
42
+ /** Consecutive relaunch failures before confirming. Default 2. */
43
+ failureThreshold?: number;
44
+ /** Logger. Defaults to console.error (stdout carries MCP JSON-RPC). */
45
+ log?: (message: string) => void;
46
+ }
47
+ /**
48
+ * Subscribe to the watchdog's relaunch-lifecycle events and, when Chrome is
49
+ * confirmed irrecoverable, release the controller lock and exit.
50
+ *
51
+ * - `chrome-relaunched` → recovery succeeded; reset the failure counter.
52
+ * - `relaunch-failed` → a recovery attempt threw; count it. Once the count
53
+ * reaches the threshold, probe CDP. Release + exit only if unreachable.
54
+ *
55
+ * `chrome-died` (normal, the watchdog will relaunch) and a single
56
+ * `relaunch-failed` (transient) never surrender ownership, so a momentary
57
+ * crash cannot flap the lock.
58
+ */
59
+ export declare function wireOwnerSelfRelease(watchdog: EventEmitter, deps: OwnerSelfReleaseDeps): void;
60
+ //# sourceMappingURL=owner-self-release.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owner-self-release.d.ts","sourceRoot":"","sources":["../../src/chrome/owner-self-release.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C,2EAA2E;AAC3E,eAAO,MAAM,iCAAiC,IAAI,CAAC;AAEnD,MAAM,WAAW,oBAAoB;IACnC,gFAAgF;IAChF,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,oEAAoE;IACpE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B;;;;OAIG;IACH,oBAAoB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uEAAuE;IACvE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAyE7F"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ /**
3
+ * Owner self-release (#1474).
4
+ *
5
+ * When the managed Chrome dies and cannot be brought back, the owner becomes a
6
+ * half-zombie: its MCP process is alive but it can no longer provide a working
7
+ * Chrome, yet it keeps holding the controller lock — deadlocking every other
8
+ * parallel session, the exact outage reported in #1474.
9
+ *
10
+ * This wiring surrenders the controller lock and exits non-zero so the MCP host
11
+ * respawns a fresh owner and the health-aware acquirer (another session, or our
12
+ * own respawn) can take over. It is the proactive complement to the reactive
13
+ * takeover in acquireControllerLockWithHealthCheck(): the dying owner releases
14
+ * instead of waiting to be evicted.
15
+ *
16
+ * Trigger correctness: we do NOT key off `watchdog-exhausted`, which the
17
+ * ChromeProcessWatchdog emits after N *successful* relaunches (Chrome is up at
18
+ * that point) — exiting there would tear down a freshly-recovered browser and
19
+ * drop active work. Instead we count consecutive `relaunch-failed` events
20
+ * (reset by any `chrome-relaunched`) and, only once the failures cross a
21
+ * threshold, confirm with a live CDP probe. The process exits only when Chrome
22
+ * is genuinely unreachable, never while it is serving requests.
23
+ */
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.DEFAULT_RELEASE_FAILURE_THRESHOLD = exports.OWNER_SELF_RELEASE_EXIT_CODE = void 0;
26
+ exports.wireOwnerSelfRelease = wireOwnerSelfRelease;
27
+ /**
28
+ * Non-zero exit code meaning "owner gave up Chrome; respawn me". Distinct from
29
+ * the config-error exit(2) so logs/hosts can tell the two apart.
30
+ */
31
+ exports.OWNER_SELF_RELEASE_EXIT_CODE = 70;
32
+ /** Default consecutive relaunch failures before we confirm-and-release. */
33
+ exports.DEFAULT_RELEASE_FAILURE_THRESHOLD = 2;
34
+ /**
35
+ * Subscribe to the watchdog's relaunch-lifecycle events and, when Chrome is
36
+ * confirmed irrecoverable, release the controller lock and exit.
37
+ *
38
+ * - `chrome-relaunched` → recovery succeeded; reset the failure counter.
39
+ * - `relaunch-failed` → a recovery attempt threw; count it. Once the count
40
+ * reaches the threshold, probe CDP. Release + exit only if unreachable.
41
+ *
42
+ * `chrome-died` (normal, the watchdog will relaunch) and a single
43
+ * `relaunch-failed` (transient) never surrender ownership, so a momentary
44
+ * crash cannot flap the lock.
45
+ */
46
+ function wireOwnerSelfRelease(watchdog, deps) {
47
+ const log = deps.log ?? ((m) => console.error(m));
48
+ const threshold = Math.max(1, deps.failureThreshold ?? exports.DEFAULT_RELEASE_FAILURE_THRESHOLD);
49
+ let consecutiveFailures = 0;
50
+ let releasing = false;
51
+ let recoveredDuringProbe = false;
52
+ watchdog.on('chrome-relaunched', () => {
53
+ consecutiveFailures = 0;
54
+ // A relaunch that lands while a self-release probe is in flight must abort
55
+ // that decision: the new Chrome may not have bound its debug port yet, so a
56
+ // `false` probe result would be stale and could tear down a recovered
57
+ // browser. Record it; the in-flight probe checks this flag after awaiting.
58
+ if (releasing)
59
+ recoveredDuringProbe = true;
60
+ });
61
+ watchdog.on('relaunch-failed', () => {
62
+ if (releasing)
63
+ return;
64
+ consecutiveFailures += 1;
65
+ if (consecutiveFailures < threshold)
66
+ return;
67
+ releasing = true;
68
+ recoveredDuringProbe = false;
69
+ void (async () => {
70
+ let reachable;
71
+ try {
72
+ reachable = await deps.probeChromeReachable();
73
+ }
74
+ catch (err) {
75
+ // Inconclusive probe — do not tear down on uncertainty. Step the
76
+ // counter back one so at least one more failure is required before we
77
+ // re-probe, avoiding a tight no-back-off retry when the probe keeps
78
+ // timing out.
79
+ log(`[SelfHealing] Chrome reachability probe errored during self-release; ` +
80
+ `staying up: ${err instanceof Error ? err.message : String(err)}`);
81
+ consecutiveFailures = Math.max(0, threshold - 1);
82
+ releasing = false;
83
+ return;
84
+ }
85
+ // A successful relaunch landed while we were probing — abort: a stale
86
+ // `false` here would tear down the freshly recovered browser.
87
+ if (recoveredDuringProbe) {
88
+ recoveredDuringProbe = false;
89
+ consecutiveFailures = 0;
90
+ releasing = false;
91
+ return;
92
+ }
93
+ if (reachable) {
94
+ // Chrome is actually serving despite the relaunch error — keep running.
95
+ consecutiveFailures = 0;
96
+ releasing = false;
97
+ return;
98
+ }
99
+ log(`[SelfHealing] Chrome unrecoverable after ${consecutiveFailures} consecutive ` +
100
+ `relaunch failures and a confirming CDP probe; releasing controller lock and ` +
101
+ `exiting (code ${exports.OWNER_SELF_RELEASE_EXIT_CODE}) so another session can take over (#1474).`);
102
+ try {
103
+ deps.releaseLock();
104
+ }
105
+ catch (err) {
106
+ log(`[SelfHealing] Controller lock release failed during self-release: ` +
107
+ `${err instanceof Error ? err.message : String(err)}`);
108
+ }
109
+ deps.exit(exports.OWNER_SELF_RELEASE_EXIT_CODE);
110
+ })();
111
+ });
112
+ }
113
+ //# sourceMappingURL=owner-self-release.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owner-self-release.js","sourceRoot":"","sources":["../../src/chrome/owner-self-release.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"process-watchdog.d.ts","sourceRoot":"","sources":["../../src/chrome/process-watchdog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAgC,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAO9E,MAAM,WAAW,sBAAsB;IACrC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,mBAAmB,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,iBAAiB,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,oBAAoB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5D;AAED,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAM;IACxC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,WAAW,CAAK;IACxB;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAA6B;gBAEjC,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,sBAAsB;IAOnE;;;OAGG;IACH,KAAK,IAAI,IAAI;IAuBb;;OAEG;IACH,IAAI,IAAI,IAAI;IAaZ;;;OAGG;IACH,iBAAiB,IAAI,MAAM;IAI3B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,YAAY;IAepB;;;OAGG;YACW,KAAK;IAkFnB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,eAAe,IAAI,MAAM,GAAG,IAAI;CAGjC"}
1
+ {"version":3,"file":"process-watchdog.d.ts","sourceRoot":"","sources":["../../src/chrome/process-watchdog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAgC,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAO9E,MAAM,WAAW,sBAAsB;IACrC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,mBAAmB,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,iBAAiB,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,oBAAoB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5D;AAED,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAM;IACxC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,WAAW,CAAK;IACxB;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAA6B;gBAEjC,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,sBAAsB;IAOnE;;;OAGG;IACH,KAAK,IAAI,IAAI;IAuBb;;OAEG;IACH,IAAI,IAAI,IAAI;IAaZ;;;OAGG;IACH,iBAAiB,IAAI,MAAM;IAI3B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,YAAY;IAepB;;;OAGG;YACW,KAAK;IA0FnB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,eAAe,IAAI,MAAM,GAAG,IAAI;CAGjC"}
@@ -134,6 +134,14 @@ class ChromeProcessWatchdog extends events_1.EventEmitter {
134
134
  if ((0, exit_classifier_1.shouldRateLimitRelaunch)(this.launcher.recentCrashesMs)) {
135
135
  console.error('[ProcessWatchdog] Chrome crashing repeatedly; pausing relaunches. Run oc_stop and inspect logs.');
136
136
  this.cooldownUntil = Date.now() + 60_000;
137
+ // #1474: a rate-limited crash loop is an irrecoverable state — Chrome is
138
+ // down and we are deliberately not relaunching. Emit `relaunch-failed` so
139
+ // owner self-release can observe it; otherwise this branch is silent and a
140
+ // half-zombie would hold the controller lock forever.
141
+ this.emit('relaunch-failed', {
142
+ error: new Error('relaunch-rate-limited'),
143
+ timestamp: Date.now(),
144
+ });
137
145
  return;
138
146
  }
139
147
  const instance = currentInstance;
@@ -1 +1 @@
1
- {"version":3,"file":"process-watchdog.js","sourceRoot":"","sources":["../../src/chrome/process-watchdog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process-watchdog.js","sourceRoot":"","sources":["../../src/chrome/process-watchdog.ts"],"names":[],"mappings":"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"}