opendevbrowser 0.0.28 → 0.0.29

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 (313) hide show
  1. package/README.md +2 -2
  2. package/dist/accessibility-snapshot-PA6NWNS7.js +39 -0
  3. package/dist/accessibility-snapshot-PA6NWNS7.js.map +1 -0
  4. package/dist/active-window-YNYTIPZN.js +37 -0
  5. package/dist/active-window-YNYTIPZN.js.map +1 -0
  6. package/dist/annotate-STYHXZYJ.js +205 -0
  7. package/dist/annotate-STYHXZYJ.js.map +1 -0
  8. package/dist/artifacts-KJ6RNDO2.js +120 -0
  9. package/dist/artifacts-KJ6RNDO2.js.map +1 -0
  10. package/dist/attr-GHFZZ4SA.js +84 -0
  11. package/dist/attr-GHFZZ4SA.js.map +1 -0
  12. package/dist/browser/ops-client.d.ts +1 -0
  13. package/dist/browser/ops-client.d.ts.map +1 -1
  14. package/dist/canvas-54FBOEGP.js +309 -0
  15. package/dist/canvas-54FBOEGP.js.map +1 -0
  16. package/dist/capture-desktop-SNABC24E.js +38 -0
  17. package/dist/capture-desktop-SNABC24E.js.map +1 -0
  18. package/dist/capture-window-UJSB5AMP.js +40 -0
  19. package/dist/capture-window-UJSB5AMP.js.map +1 -0
  20. package/dist/check-ST5UQ2F5.js +71 -0
  21. package/dist/check-ST5UQ2F5.js.map +1 -0
  22. package/dist/checked-IEMWI5CU.js +71 -0
  23. package/dist/checked-IEMWI5CU.js.map +1 -0
  24. package/dist/chunk-2CG4SW3E.js +64 -0
  25. package/dist/chunk-2CG4SW3E.js.map +1 -0
  26. package/dist/chunk-2SIMIPLY.js +67 -0
  27. package/dist/chunk-2SIMIPLY.js.map +1 -0
  28. package/dist/chunk-37VSRUW4.js +141 -0
  29. package/dist/chunk-37VSRUW4.js.map +1 -0
  30. package/dist/chunk-5SWZDVOW.js +144 -0
  31. package/dist/chunk-5SWZDVOW.js.map +1 -0
  32. package/dist/chunk-6PVZ2ABC.js +429 -0
  33. package/dist/chunk-6PVZ2ABC.js.map +1 -0
  34. package/dist/chunk-7GVOUZMQ.js +64 -0
  35. package/dist/chunk-7GVOUZMQ.js.map +1 -0
  36. package/dist/chunk-7THCPS52.js +84 -0
  37. package/dist/chunk-7THCPS52.js.map +1 -0
  38. package/dist/chunk-ASMHEEKY.js +10 -0
  39. package/dist/chunk-ASMHEEKY.js.map +1 -0
  40. package/dist/chunk-DBF5OKH3.js +111 -0
  41. package/dist/chunk-DBF5OKH3.js.map +1 -0
  42. package/dist/chunk-DW4TX7MU.js +54 -0
  43. package/dist/chunk-DW4TX7MU.js.map +1 -0
  44. package/dist/chunk-IPE7TF2P.js +54 -0
  45. package/dist/chunk-IPE7TF2P.js.map +1 -0
  46. package/dist/chunk-IQTJHXZJ.js +126 -0
  47. package/dist/chunk-IQTJHXZJ.js.map +1 -0
  48. package/dist/chunk-J47N77VG.js +2969 -0
  49. package/dist/chunk-J47N77VG.js.map +1 -0
  50. package/dist/chunk-JZXD6FWR.js +25 -0
  51. package/dist/chunk-JZXD6FWR.js.map +1 -0
  52. package/dist/{chunk-QVWOPIZJ.js → chunk-KDSNXS6N.js} +75 -149
  53. package/dist/chunk-KDSNXS6N.js.map +1 -0
  54. package/dist/chunk-KZ2IXVQT.js +219 -0
  55. package/dist/chunk-KZ2IXVQT.js.map +1 -0
  56. package/dist/chunk-LBPELU7L.js +3649 -0
  57. package/dist/chunk-LBPELU7L.js.map +1 -0
  58. package/dist/chunk-MX3NFLCE.js +940 -0
  59. package/dist/chunk-MX3NFLCE.js.map +1 -0
  60. package/dist/chunk-N44UXKIB.js +26 -0
  61. package/dist/chunk-N44UXKIB.js.map +1 -0
  62. package/dist/chunk-OW5HMYMI.js +19 -0
  63. package/dist/chunk-OW5HMYMI.js.map +1 -0
  64. package/dist/chunk-OYNLAZQU.js +838 -0
  65. package/dist/chunk-OYNLAZQU.js.map +1 -0
  66. package/dist/chunk-PDPJN2OP.js +17 -0
  67. package/dist/chunk-PDPJN2OP.js.map +1 -0
  68. package/dist/chunk-RCZZGGJS.js +226 -0
  69. package/dist/chunk-RCZZGGJS.js.map +1 -0
  70. package/dist/chunk-RJNI3BHT.js +1 -0
  71. package/dist/chunk-RPXWUCQQ.js +112 -0
  72. package/dist/chunk-RPXWUCQQ.js.map +1 -0
  73. package/dist/chunk-S5KZQJJI.js +107 -0
  74. package/dist/chunk-S5KZQJJI.js.map +1 -0
  75. package/dist/{chunk-T3VVHJTK.js → chunk-S6S2UP6U.js} +1074 -1459
  76. package/dist/chunk-S6S2UP6U.js.map +1 -0
  77. package/dist/{chunk-I5ZCOZZV.js → chunk-SXAGSEKZ.js} +1202 -9561
  78. package/dist/chunk-SXAGSEKZ.js.map +1 -0
  79. package/dist/chunk-T4GMCW6Z.js +46 -0
  80. package/dist/chunk-T4GMCW6Z.js.map +1 -0
  81. package/dist/chunk-WHQZBUNY.js +982 -0
  82. package/dist/chunk-WHQZBUNY.js.map +1 -0
  83. package/dist/chunk-WOXBLP7V.js +610 -0
  84. package/dist/chunk-WOXBLP7V.js.map +1 -0
  85. package/dist/cli/commands/inspiredesign.d.ts.map +1 -1
  86. package/dist/cli/commands/macro-resolve.d.ts +4 -1
  87. package/dist/cli/commands/macro-resolve.d.ts.map +1 -1
  88. package/dist/cli/commands/product-video.d.ts.map +1 -1
  89. package/dist/cli/commands/research.d.ts.map +1 -1
  90. package/dist/cli/commands/serve.d.ts.map +1 -1
  91. package/dist/cli/commands/shopping.d.ts.map +1 -1
  92. package/dist/cli/commands/workflow-output.d.ts +2 -0
  93. package/dist/cli/commands/workflow-output.d.ts.map +1 -0
  94. package/dist/cli/daemon-commands.d.ts.map +1 -1
  95. package/dist/cli/daemon.d.ts.map +1 -1
  96. package/dist/cli/index.js +204 -8123
  97. package/dist/cli/index.js.map +1 -1
  98. package/dist/cli/installers/postinstall-skill-sync.js +2 -1
  99. package/dist/cli/installers/postinstall-skill-sync.js.map +1 -1
  100. package/dist/cli/remote-relay.d.ts.map +1 -1
  101. package/dist/click-TENZA3Y6.js +81 -0
  102. package/dist/click-TENZA3Y6.js.map +1 -0
  103. package/dist/clone-component-STH5AR6M.js +82 -0
  104. package/dist/clone-component-STH5AR6M.js.map +1 -0
  105. package/dist/clone-page-BSTWAPAJ.js +69 -0
  106. package/dist/clone-page-BSTWAPAJ.js.map +1 -0
  107. package/dist/close-CEMMAAM7.js +63 -0
  108. package/dist/close-CEMMAAM7.js.map +1 -0
  109. package/dist/close-QCWUNRAI.js +63 -0
  110. package/dist/close-QCWUNRAI.js.map +1 -0
  111. package/dist/connect-J3RVSEZF.js +107 -0
  112. package/dist/connect-J3RVSEZF.js.map +1 -0
  113. package/dist/console-poll-HL7BVIVX.js +76 -0
  114. package/dist/console-poll-HL7BVIVX.js.map +1 -0
  115. package/dist/cookie-import-WMUCIIHN.js +177 -0
  116. package/dist/cookie-import-WMUCIIHN.js.map +1 -0
  117. package/dist/cookie-list-PB2N4RPH.js +117 -0
  118. package/dist/cookie-list-PB2N4RPH.js.map +1 -0
  119. package/dist/daemon-5KSVMGN4.js +194 -0
  120. package/dist/daemon-5KSVMGN4.js.map +1 -0
  121. package/dist/daemon-fingerprint.json +1 -1
  122. package/dist/debug-trace-snapshot-RK7KDXA5.js +136 -0
  123. package/dist/debug-trace-snapshot-RK7KDXA5.js.map +1 -0
  124. package/dist/dialog-P6P4U7XE.js +75 -0
  125. package/dist/dialog-P6P4U7XE.js.map +1 -0
  126. package/dist/disconnect-32F7IDIP.js +58 -0
  127. package/dist/disconnect-32F7IDIP.js.map +1 -0
  128. package/dist/enabled-A6C6ZM2O.js +71 -0
  129. package/dist/enabled-A6C6ZM2O.js.map +1 -0
  130. package/dist/extension-extractor-GKWSFHPN.js +11 -0
  131. package/dist/extension-extractor-GKWSFHPN.js.map +1 -0
  132. package/dist/global-D6WLWBXA.js +56 -0
  133. package/dist/global-D6WLWBXA.js.map +1 -0
  134. package/dist/goto-ULTSABDM.js +98 -0
  135. package/dist/goto-ULTSABDM.js.map +1 -0
  136. package/dist/help-EKKKEDL5.js +491 -0
  137. package/dist/help-EKKKEDL5.js.map +1 -0
  138. package/dist/hover-UF2ZUMTQ.js +71 -0
  139. package/dist/hover-UF2ZUMTQ.js.map +1 -0
  140. package/dist/html-B6TX7GK7.js +84 -0
  141. package/dist/html-B6TX7GK7.js.map +1 -0
  142. package/dist/index.js +68 -34
  143. package/dist/index.js.map +1 -1
  144. package/dist/inspector-6S5FKUZQ.js +62 -0
  145. package/dist/inspector-6S5FKUZQ.js.map +1 -0
  146. package/dist/inspector-audit-ARGEGOS7.js +84 -0
  147. package/dist/inspector-audit-ARGEGOS7.js.map +1 -0
  148. package/dist/inspector-plan-CSG5HZOC.js +69 -0
  149. package/dist/inspector-plan-CSG5HZOC.js.map +1 -0
  150. package/dist/inspiredesign-7VRMMZN4.js +234 -0
  151. package/dist/inspiredesign-7VRMMZN4.js.map +1 -0
  152. package/dist/install-autostart-output-5DOMKCQL.js +41 -0
  153. package/dist/install-autostart-output-5DOMKCQL.js.map +1 -0
  154. package/dist/install-autostart-reconciliation-NHKOFYTD.js +73 -0
  155. package/dist/install-autostart-reconciliation-NHKOFYTD.js.map +1 -0
  156. package/dist/launch-REYCIR3Z.js +225 -0
  157. package/dist/launch-REYCIR3Z.js.map +1 -0
  158. package/dist/list-NPRXRQY2.js +51 -0
  159. package/dist/list-NPRXRQY2.js.map +1 -0
  160. package/dist/list-STYD2ZWA.js +54 -0
  161. package/dist/list-STYD2ZWA.js.map +1 -0
  162. package/dist/local-HXJLUUNT.js +54 -0
  163. package/dist/local-HXJLUUNT.js.map +1 -0
  164. package/dist/macro-resolve-ZIJZ65QI.js +253 -0
  165. package/dist/macro-resolve-ZIJZ65QI.js.map +1 -0
  166. package/dist/macros/execute-runtime.d.ts +3 -1
  167. package/dist/macros/execute-runtime.d.ts.map +1 -1
  168. package/dist/macros/execute.d.ts +2 -0
  169. package/dist/macros/execute.d.ts.map +1 -1
  170. package/dist/native-UPLVQ2SG.js +22 -0
  171. package/dist/native-UPLVQ2SG.js.map +1 -0
  172. package/dist/network-poll-HLDOSC72.js +76 -0
  173. package/dist/network-poll-HLDOSC72.js.map +1 -0
  174. package/dist/new-HXLLN6UT.js +69 -0
  175. package/dist/new-HXLLN6UT.js.map +1 -0
  176. package/dist/onboarding-metadata-7E3KLYSZ.js +27 -0
  177. package/dist/onboarding-metadata-7E3KLYSZ.js.map +1 -0
  178. package/dist/open-KDR25LQZ.js +81 -0
  179. package/dist/open-KDR25LQZ.js.map +1 -0
  180. package/dist/opendevbrowser.js +68 -34
  181. package/dist/opendevbrowser.js.map +1 -1
  182. package/dist/perf-EM6SWFJ6.js +58 -0
  183. package/dist/perf-EM6SWFJ6.js.map +1 -0
  184. package/dist/pointer-down-ZYWRZNCH.js +55 -0
  185. package/dist/pointer-down-ZYWRZNCH.js.map +1 -0
  186. package/dist/pointer-drag-LVEAVJO4.js +54 -0
  187. package/dist/pointer-drag-LVEAVJO4.js.map +1 -0
  188. package/dist/pointer-move-7SRKUS66.js +52 -0
  189. package/dist/pointer-move-7SRKUS66.js.map +1 -0
  190. package/dist/pointer-up-KLDBSK37.js +55 -0
  191. package/dist/pointer-up-KLDBSK37.js.map +1 -0
  192. package/dist/press-UIIXFTD7.js +83 -0
  193. package/dist/press-UIIXFTD7.js.map +1 -0
  194. package/dist/product-video-PYOXJVAI.js +235 -0
  195. package/dist/product-video-PYOXJVAI.js.map +1 -0
  196. package/dist/providers/artifacts.d.ts +0 -2
  197. package/dist/providers/artifacts.d.ts.map +1 -1
  198. package/dist/providers/blocker.d.ts.map +1 -1
  199. package/dist/providers/bounded-map.d.ts +2 -0
  200. package/dist/providers/bounded-map.d.ts.map +1 -0
  201. package/dist/providers/community/index.d.ts.map +1 -1
  202. package/dist/providers/constraint.d.ts.map +1 -1
  203. package/dist/providers/index.d.ts +1 -0
  204. package/dist/providers/index.d.ts.map +1 -1
  205. package/dist/providers/renderer.d.ts.map +1 -1
  206. package/dist/providers/research-compiler.d.ts +1 -1
  207. package/dist/providers/research-compiler.d.ts.map +1 -1
  208. package/dist/providers/research-executor.d.ts.map +1 -1
  209. package/dist/providers/runtime-factory.d.ts.map +1 -1
  210. package/dist/providers/shared/traversal-url.d.ts +3 -0
  211. package/dist/providers/shared/traversal-url.d.ts.map +1 -1
  212. package/dist/providers/shopping/index.d.ts.map +1 -1
  213. package/dist/providers/social/search-quality.d.ts.map +1 -1
  214. package/dist/providers/workflow-handoff.d.ts +4 -0
  215. package/dist/providers/workflow-handoff.d.ts.map +1 -1
  216. package/dist/providers/workflows.d.ts.map +1 -1
  217. package/dist/{providers-QF2RFB4J.js → providers-4YY2BLXG.js} +19 -14
  218. package/dist/providers-4YY2BLXG.js.map +1 -0
  219. package/dist/public-surface/generated-manifest.d.ts +2 -2
  220. package/dist/public-surface/generated-manifest.d.ts.map +1 -1
  221. package/dist/public-surface/source.d.ts +2 -2
  222. package/dist/public-surface/source.d.ts.map +1 -1
  223. package/dist/relay/protocol.d.ts +3 -1
  224. package/dist/relay/protocol.d.ts.map +1 -1
  225. package/dist/relay/relay-server.d.ts +6 -0
  226. package/dist/relay/relay-server.d.ts.map +1 -1
  227. package/dist/research-CKXMJ2DK.js +295 -0
  228. package/dist/research-CKXMJ2DK.js.map +1 -0
  229. package/dist/review-7HWJPZOD.js +48 -0
  230. package/dist/review-7HWJPZOD.js.map +1 -0
  231. package/dist/review-desktop-2IBJHFB5.js +54 -0
  232. package/dist/review-desktop-2IBJHFB5.js.map +1 -0
  233. package/dist/rpc-3HGIEJUO.js +159 -0
  234. package/dist/rpc-3HGIEJUO.js.map +1 -0
  235. package/dist/run-ADRYI3MS.js +180 -0
  236. package/dist/run-ADRYI3MS.js.map +1 -0
  237. package/dist/screencast-start-DTLUHD5H.js +67 -0
  238. package/dist/screencast-start-DTLUHD5H.js.map +1 -0
  239. package/dist/screencast-stop-54C5LRSS.js +59 -0
  240. package/dist/screencast-stop-54C5LRSS.js.map +1 -0
  241. package/dist/screenshot-HOAKR7P7.js +68 -0
  242. package/dist/screenshot-HOAKR7P7.js.map +1 -0
  243. package/dist/scroll-IAOO5COY.js +84 -0
  244. package/dist/scroll-IAOO5COY.js.map +1 -0
  245. package/dist/scroll-into-view-RKWSLAPH.js +71 -0
  246. package/dist/scroll-into-view-RKWSLAPH.js.map +1 -0
  247. package/dist/select-IGD3T6X4.js +86 -0
  248. package/dist/select-IGD3T6X4.js.map +1 -0
  249. package/dist/serve-7X4INUCU.js +498 -0
  250. package/dist/serve-7X4INUCU.js.map +1 -0
  251. package/dist/shopping-FC6DRW76.js +273 -0
  252. package/dist/shopping-FC6DRW76.js.map +1 -0
  253. package/dist/skill-lifecycle-5UAZGKSN.js +89 -0
  254. package/dist/skill-lifecycle-5UAZGKSN.js.map +1 -0
  255. package/dist/skills-NSXDX6YM.js +26 -0
  256. package/dist/skills-NSXDX6YM.js.map +1 -0
  257. package/dist/snapshot-X22GG324.js +113 -0
  258. package/dist/snapshot-X22GG324.js.map +1 -0
  259. package/dist/status-SP55LMNW.js +132 -0
  260. package/dist/status-SP55LMNW.js.map +1 -0
  261. package/dist/status-VH2WXIDG.js +35 -0
  262. package/dist/status-VH2WXIDG.js.map +1 -0
  263. package/dist/status-capabilities-YBERLRRA.js +57 -0
  264. package/dist/status-capabilities-YBERLRRA.js.map +1 -0
  265. package/dist/text-6TB5WNLI.js +84 -0
  266. package/dist/text-6TB5WNLI.js.map +1 -0
  267. package/dist/tools/macro_resolve.d.ts.map +1 -1
  268. package/dist/type-3UI3TQH3.js +94 -0
  269. package/dist/type-3UI3TQH3.js.map +1 -0
  270. package/dist/uncheck-5L3D2D4U.js +71 -0
  271. package/dist/uncheck-5L3D2D4U.js.map +1 -0
  272. package/dist/uninstall-KYKGJAX7.js +91 -0
  273. package/dist/uninstall-KYKGJAX7.js.map +1 -0
  274. package/dist/update-SMXPYGXS.js +305 -0
  275. package/dist/update-SMXPYGXS.js.map +1 -0
  276. package/dist/update-skill-modes-BVX7IVMW.js +38 -0
  277. package/dist/update-skill-modes-BVX7IVMW.js.map +1 -0
  278. package/dist/upload-YG4J2EMI.js +56 -0
  279. package/dist/upload-YG4J2EMI.js.map +1 -0
  280. package/dist/use-V3LGFP3K.js +63 -0
  281. package/dist/use-V3LGFP3K.js.map +1 -0
  282. package/dist/value-3247D57X.js +71 -0
  283. package/dist/value-3247D57X.js.map +1 -0
  284. package/dist/visible-A7HEV36U.js +71 -0
  285. package/dist/visible-A7HEV36U.js.map +1 -0
  286. package/dist/wait-UZPP4Y4R.js +109 -0
  287. package/dist/wait-UZPP4Y4R.js.map +1 -0
  288. package/dist/windows-76TR3AIP.js +37 -0
  289. package/dist/windows-76TR3AIP.js.map +1 -0
  290. package/extension/dist/background.js +99 -22
  291. package/extension/dist/ops/ops-runtime.js +85 -7
  292. package/extension/dist/ops/ops-session-store.js +3 -0
  293. package/extension/dist/ops/target-session-coordinator.js +3 -0
  294. package/extension/dist/services/CDPRouter.js +9 -0
  295. package/extension/manifest.json +1 -1
  296. package/package.json +1 -1
  297. package/skills/opendevbrowser-best-practices/SKILL.md +8 -6
  298. package/skills/opendevbrowser-best-practices/artifacts/skill-runtime-surface-matrix.md +1 -1
  299. package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +3 -2
  300. package/skills/opendevbrowser-best-practices/scripts/validator-fixture-cli.sh +39 -2
  301. package/skills/opendevbrowser-research/SKILL.md +64 -12
  302. package/skills/opendevbrowser-research/artifacts/research-workflows.md +56 -19
  303. package/skills/opendevbrowser-research/assets/templates/compact.md +31 -5
  304. package/skills/opendevbrowser-research/assets/templates/context.json +52 -1
  305. package/skills/opendevbrowser-research/assets/templates/report.md +57 -4
  306. package/skills/opendevbrowser-research/examples/sample-input.json +1 -1
  307. package/skills/opendevbrowser-research/examples/sample-output.md +27 -2
  308. package/skills/opendevbrowser-research/scripts/run-research.sh +2 -6
  309. package/skills/opendevbrowser-research/scripts/validate-skill-assets.sh +115 -1
  310. package/dist/chunk-I5ZCOZZV.js.map +0 -1
  311. package/dist/chunk-QVWOPIZJ.js.map +0 -1
  312. package/dist/chunk-T3VVHJTK.js.map +0 -1
  313. /package/dist/{providers-QF2RFB4J.js.map → chunk-RJNI3BHT.js.map} +0 -0
@@ -0,0 +1,610 @@
1
+ // src/cli/daemon-autostart.ts
2
+ import { execFileSync } from "child_process";
3
+ import { existsSync, mkdirSync, statSync, unlinkSync, writeFileSync } from "fs";
4
+ import { homedir, tmpdir } from "os";
5
+ import { dirname, isAbsolute, join, relative, resolve } from "path";
6
+ import { fileURLToPath } from "url";
7
+ var MAC_LABEL = "com.opendevbrowser.daemon";
8
+ var WIN_TASK_NAME = "OpenDevBrowser Daemon";
9
+ var STABLE_DAEMON_INSTALL_GUIDANCE = "Run opendevbrowser daemon install from a stable install location (for example, a global npm install or a persistent local package install).";
10
+ var defaultDeps = () => ({
11
+ platform: process.platform,
12
+ argv1: process.argv[1] ?? "",
13
+ moduleUrl: import.meta.url,
14
+ uid: typeof process.getuid === "function" ? process.getuid() : 0,
15
+ homedir,
16
+ existsSync,
17
+ mkdirSync,
18
+ statSync,
19
+ writeFileSync,
20
+ unlinkSync,
21
+ execFileSync,
22
+ transientEntrypointRoots: void 0
23
+ });
24
+ var NPX_CACHE_SEGMENT_PATTERN = /[\\/]_npx(?:[\\/]|$)/;
25
+ var formatCommand = (programArguments) => {
26
+ return programArguments.map((value) => `"${value}"`).join(" ");
27
+ };
28
+ var resolveMacWorkingDirectory = (home) => {
29
+ return join(home, ".cache", "opendevbrowser");
30
+ };
31
+ var pathIsDirectory = (path, deps) => {
32
+ if (!deps.existsSync(path)) return false;
33
+ try {
34
+ return deps.statSync(path).isDirectory();
35
+ } catch {
36
+ return false;
37
+ }
38
+ };
39
+ var resolveCliPathFromModule = (moduleUrl, exists) => {
40
+ const modulePath = fileURLToPath(moduleUrl);
41
+ const candidate = resolve(dirname(modulePath), "..", "index.js");
42
+ if (!exists(candidate)) {
43
+ throw new Error(`CLI entrypoint not found at ${candidate}`);
44
+ }
45
+ return candidate;
46
+ };
47
+ var normalizeComparisonPath = (value, platform) => {
48
+ const resolvedPath = resolve(value);
49
+ return platform === "win32" ? resolvedPath.toLowerCase() : resolvedPath;
50
+ };
51
+ var isPathInsideRoot = (candidate, root, platform) => {
52
+ const normalizedCandidate = normalizeComparisonPath(candidate, platform);
53
+ const normalizedRoot = normalizeComparisonPath(root, platform);
54
+ const relation = relative(normalizedRoot, normalizedCandidate);
55
+ return relation === "" || !relation.startsWith("..") && !isAbsolute(relation);
56
+ };
57
+ var getTransientEntrypointRoots = (deps) => {
58
+ const configuredRoots = deps.transientEntrypointRoots;
59
+ if (configuredRoots && configuredRoots.length > 0) {
60
+ return [...new Set(configuredRoots.map((root) => normalizeComparisonPath(root, deps.platform)))];
61
+ }
62
+ const roots = [tmpdir()];
63
+ if (deps.platform === "darwin") {
64
+ roots.push("/tmp", "/private/tmp");
65
+ }
66
+ return [...new Set(roots.map((root) => normalizeComparisonPath(root, deps.platform)))];
67
+ };
68
+ var isTransientCliPath = (cliPath, deps) => {
69
+ const normalizedCliPath = normalizeComparisonPath(cliPath, deps.platform);
70
+ return getTransientEntrypointRoots(deps).some((root) => isPathInsideRoot(cliPath, root, deps.platform)) || NPX_CACHE_SEGMENT_PATTERN.test(normalizedCliPath);
71
+ };
72
+ var TRANSIENT_AUTOSTART_INSTALL_ERROR_PREFIX = "Cannot install daemon autostart from transient CLI path";
73
+ var isTransientAutostartInstallError = (error) => {
74
+ const message = error instanceof Error ? error.message : String(error);
75
+ return message.startsWith(TRANSIENT_AUTOSTART_INSTALL_ERROR_PREFIX);
76
+ };
77
+ var resolveCliEntrypoint = (deps = {}) => {
78
+ const resolved = { ...defaultDeps(), ...deps };
79
+ const exists = resolved.existsSync;
80
+ let cliPath = null;
81
+ let source = "module";
82
+ if (resolved.argv1) {
83
+ const candidate = resolve(resolved.argv1);
84
+ if (exists(candidate)) {
85
+ cliPath = candidate;
86
+ source = "argv1";
87
+ }
88
+ }
89
+ if (!cliPath) {
90
+ cliPath = resolveCliPathFromModule(resolved.moduleUrl, exists);
91
+ }
92
+ const nodePath = process.execPath;
93
+ const args = [cliPath, "serve"];
94
+ const command = formatCommand([nodePath, ...args]);
95
+ const isTransient = isTransientCliPath(cliPath, resolved);
96
+ return { nodePath, cliPath, args, command, source, isTransient };
97
+ };
98
+ var getLaunchAgentPath = (home = homedir()) => {
99
+ return join(home, "Library", "LaunchAgents", `${MAC_LABEL}.plist`);
100
+ };
101
+ var escapePlistString = (value) => value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;");
102
+ var buildLaunchAgentPlist = (entrypoint, options = {}) => {
103
+ const label = options.label ?? MAC_LABEL;
104
+ const stdoutPath = options.stdoutPath ?? join(homedir(), "Library", "Logs", "opendevbrowser-daemon.log");
105
+ const stderrPath = options.stderrPath ?? join(homedir(), "Library", "Logs", "opendevbrowser-daemon.err.log");
106
+ const workingDirectory = options.workingDirectory ?? resolveMacWorkingDirectory(homedir());
107
+ const programArgs = [entrypoint.nodePath, ...entrypoint.args].map((value) => ` <string>${escapePlistString(value)}</string>`).join("\n");
108
+ return [
109
+ '<?xml version="1.0" encoding="UTF-8"?>',
110
+ '<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">',
111
+ '<plist version="1.0">',
112
+ "<dict>",
113
+ ` <key>Label</key>`,
114
+ ` <string>${escapePlistString(label)}</string>`,
115
+ " <key>ProgramArguments</key>",
116
+ " <array>",
117
+ programArgs,
118
+ " </array>",
119
+ " <key>RunAtLoad</key>",
120
+ " <true/>",
121
+ " <key>KeepAlive</key>",
122
+ " <true/>",
123
+ " <key>WorkingDirectory</key>",
124
+ ` <string>${escapePlistString(workingDirectory)}</string>`,
125
+ " <key>StandardOutPath</key>",
126
+ ` <string>${escapePlistString(stdoutPath)}</string>`,
127
+ " <key>StandardErrorPath</key>",
128
+ ` <string>${escapePlistString(stderrPath)}</string>`,
129
+ "</dict>",
130
+ "</plist>",
131
+ ""
132
+ ].join("\n");
133
+ };
134
+ var buildWindowsTaskArgs = (entrypoint, taskName = WIN_TASK_NAME) => {
135
+ const command = formatCommand([entrypoint.nodePath, entrypoint.cliPath, "serve"]);
136
+ const args = [
137
+ "/Create",
138
+ "/TN",
139
+ taskName,
140
+ "/TR",
141
+ command,
142
+ "/SC",
143
+ "ONLOGON",
144
+ "/RL",
145
+ "LIMITED",
146
+ "/F"
147
+ ];
148
+ return { taskName, command, args };
149
+ };
150
+ var createAutostartStatus = (status) => status;
151
+ var createMacAutostartStatus = (entrypoint, location, overrides) => {
152
+ return createAutostartStatus({
153
+ platform: "darwin",
154
+ supported: true,
155
+ installed: false,
156
+ health: "missing",
157
+ needsRepair: false,
158
+ location,
159
+ label: MAC_LABEL,
160
+ expectedCommand: entrypoint.isTransient ? void 0 : entrypoint.command,
161
+ ...overrides
162
+ });
163
+ };
164
+ var createWindowsAutostartStatus = (entrypoint, overrides) => {
165
+ return createAutostartStatus({
166
+ platform: "win32",
167
+ supported: true,
168
+ installed: false,
169
+ health: "missing",
170
+ needsRepair: false,
171
+ taskName: WIN_TASK_NAME,
172
+ expectedCommand: entrypoint.isTransient ? void 0 : entrypoint.command,
173
+ ...overrides
174
+ });
175
+ };
176
+ var classifyPersistedProgramArguments = (programArguments, deps) => {
177
+ const actualNodePath = programArguments[0];
178
+ const actualCliPath = programArguments[1];
179
+ if (!actualNodePath || !deps.existsSync(actualNodePath)) {
180
+ return { health: "needs_repair", reason: "missing_node_path" };
181
+ }
182
+ if (!actualCliPath || !deps.existsSync(actualCliPath)) {
183
+ return { health: "needs_repair", reason: "missing_cli_path" };
184
+ }
185
+ if (isTransientCliPath(actualCliPath, deps)) {
186
+ return { health: "needs_repair", reason: "transient_cli_path" };
187
+ }
188
+ if (programArguments.length !== 3 || programArguments[2] !== "serve") {
189
+ return { health: "needs_repair", reason: "entrypoint_mismatch" };
190
+ }
191
+ return { health: "healthy" };
192
+ };
193
+ var hasMatchingProgramArgument = (programArguments, expectedValue, deps, isPath = false) => {
194
+ const normalizedExpected = isPath ? normalizeComparisonPath(expectedValue, deps.platform) : expectedValue;
195
+ return programArguments.some((value) => {
196
+ const normalizedValue = isPath ? normalizeComparisonPath(value, deps.platform) : value;
197
+ return normalizedValue === normalizedExpected;
198
+ });
199
+ };
200
+ var classifyExpectedProgramArguments = (expectedArgs, actualArgs, deps) => {
201
+ if (!hasMatchingProgramArgument([actualArgs[0] ?? ""], expectedArgs[0] ?? "", deps, true)) {
202
+ return hasMatchingProgramArgument(actualArgs, expectedArgs[0] ?? "", deps, true) ? "entrypoint_mismatch" : "missing_node_path";
203
+ }
204
+ if (!hasMatchingProgramArgument([actualArgs[1] ?? ""], expectedArgs[1] ?? "", deps, true)) {
205
+ return hasMatchingProgramArgument(actualArgs, expectedArgs[1] ?? "", deps, true) ? "entrypoint_mismatch" : "missing_cli_path";
206
+ }
207
+ if (actualArgs.length !== expectedArgs.length || !actualArgs.every((value, index) => {
208
+ const expectedValue = expectedArgs[index] ?? "";
209
+ return index < 2 ? normalizeComparisonPath(value, deps.platform) === normalizeComparisonPath(expectedValue, deps.platform) : value === expectedValue;
210
+ })) {
211
+ return "entrypoint_mismatch";
212
+ }
213
+ return void 0;
214
+ };
215
+ var readMacLaunchAgentProgramArguments = (plistPath, deps) => {
216
+ try {
217
+ const text = deps.execFileSync("plutil", ["-convert", "json", "-o", "-", plistPath], { encoding: "utf-8" });
218
+ const parsed = JSON.parse(text);
219
+ const programArguments = parsed?.ProgramArguments;
220
+ const workingDirectory = typeof parsed?.WorkingDirectory === "string" ? parsed.WorkingDirectory : void 0;
221
+ if (!Array.isArray(programArguments) || programArguments.length < 2 || programArguments.some((value) => typeof value !== "string")) {
222
+ return { ok: false, reason: "missing_program_arguments" };
223
+ }
224
+ const commandArgs = programArguments;
225
+ return {
226
+ ok: true,
227
+ command: formatCommand(commandArgs),
228
+ programArguments: commandArgs,
229
+ ...workingDirectory ? { workingDirectory } : {}
230
+ };
231
+ } catch {
232
+ return { ok: false, reason: "malformed_plist" };
233
+ }
234
+ };
235
+ var classifyMacAutostartStatus = (entrypoint, location, deps) => {
236
+ if (!deps.existsSync(location)) {
237
+ return createMacAutostartStatus(entrypoint, location, {
238
+ installed: false,
239
+ health: "missing",
240
+ needsRepair: false,
241
+ reason: "missing_plist"
242
+ });
243
+ }
244
+ const parsed = readMacLaunchAgentProgramArguments(location, deps);
245
+ const expectedWorkingDirectory = resolveMacWorkingDirectory(deps.homedir());
246
+ if (!parsed.ok) {
247
+ return createMacAutostartStatus(entrypoint, location, {
248
+ installed: true,
249
+ health: "malformed",
250
+ needsRepair: true,
251
+ expectedWorkingDirectory,
252
+ reason: parsed.reason
253
+ });
254
+ }
255
+ const expectedNodePath = entrypoint.nodePath;
256
+ const expectedCliPath = entrypoint.cliPath;
257
+ const expectedArgs = [expectedNodePath, ...entrypoint.args];
258
+ const actualArgs = parsed.programArguments;
259
+ const actualStatus = classifyPersistedProgramArguments(actualArgs, deps);
260
+ if (actualStatus.health !== "healthy") {
261
+ return createMacAutostartStatus(entrypoint, location, {
262
+ installed: true,
263
+ health: "needs_repair",
264
+ needsRepair: true,
265
+ command: parsed.command,
266
+ workingDirectory: parsed.workingDirectory,
267
+ expectedWorkingDirectory,
268
+ reason: actualStatus.reason
269
+ });
270
+ }
271
+ if (parsed.workingDirectory !== expectedWorkingDirectory) {
272
+ return createMacAutostartStatus(entrypoint, location, {
273
+ installed: true,
274
+ health: "needs_repair",
275
+ needsRepair: true,
276
+ command: parsed.command,
277
+ workingDirectory: parsed.workingDirectory,
278
+ expectedWorkingDirectory,
279
+ reason: "working_directory_mismatch"
280
+ });
281
+ }
282
+ if (!pathIsDirectory(expectedWorkingDirectory, deps)) {
283
+ return createMacAutostartStatus(entrypoint, location, {
284
+ installed: true,
285
+ health: "needs_repair",
286
+ needsRepair: true,
287
+ command: parsed.command,
288
+ workingDirectory: parsed.workingDirectory,
289
+ expectedWorkingDirectory,
290
+ reason: "working_directory_mismatch"
291
+ });
292
+ }
293
+ if (entrypoint.isTransient) {
294
+ return createMacAutostartStatus(entrypoint, location, {
295
+ installed: true,
296
+ health: "healthy",
297
+ needsRepair: false,
298
+ command: parsed.command,
299
+ workingDirectory: parsed.workingDirectory,
300
+ expectedWorkingDirectory
301
+ });
302
+ }
303
+ const mismatchReason = classifyExpectedProgramArguments(expectedArgs, actualArgs, deps);
304
+ if (mismatchReason) {
305
+ return createMacAutostartStatus(entrypoint, location, {
306
+ installed: true,
307
+ health: "needs_repair",
308
+ needsRepair: true,
309
+ command: parsed.command,
310
+ workingDirectory: parsed.workingDirectory,
311
+ expectedWorkingDirectory,
312
+ reason: mismatchReason
313
+ });
314
+ }
315
+ return createMacAutostartStatus(entrypoint, location, {
316
+ installed: true,
317
+ health: "healthy",
318
+ needsRepair: false,
319
+ command: parsed.command,
320
+ workingDirectory: parsed.workingDirectory,
321
+ expectedWorkingDirectory
322
+ });
323
+ };
324
+ var runCommand = (exec, command, args, ignoreFailure = false) => {
325
+ try {
326
+ exec(command, args, { stdio: "ignore" });
327
+ } catch (error) {
328
+ if (ignoreFailure) return;
329
+ const message = error instanceof Error ? error.message : String(error);
330
+ throw new Error(`${command} ${args.join(" ")} failed: ${message}`);
331
+ }
332
+ };
333
+ var assertPersistentEntrypoint = (entrypoint) => {
334
+ if (!entrypoint.isTransient) {
335
+ return;
336
+ }
337
+ throw new Error(
338
+ `${TRANSIENT_AUTOSTART_INSTALL_ERROR_PREFIX} "${entrypoint.cliPath}". ${STABLE_DAEMON_INSTALL_GUIDANCE} Do not use a temporary npx cache or onboarding workspace.`
339
+ );
340
+ };
341
+ var installMacAutostart = (deps = {}) => {
342
+ const resolved = { ...defaultDeps(), ...deps };
343
+ const entrypoint = resolveCliEntrypoint(resolved);
344
+ assertPersistentEntrypoint(entrypoint);
345
+ const home = resolved.homedir();
346
+ const plistPath = getLaunchAgentPath(home);
347
+ const stdoutPath = join(home, "Library", "Logs", "opendevbrowser-daemon.log");
348
+ const stderrPath = join(home, "Library", "Logs", "opendevbrowser-daemon.err.log");
349
+ const workingDirectory = resolveMacWorkingDirectory(home);
350
+ const logsDir = dirname(stdoutPath);
351
+ resolved.mkdirSync(dirname(plistPath), { recursive: true });
352
+ resolved.mkdirSync(logsDir, { recursive: true });
353
+ resolved.mkdirSync(workingDirectory, { recursive: true });
354
+ resolved.writeFileSync(
355
+ plistPath,
356
+ buildLaunchAgentPlist(entrypoint, { stdoutPath, stderrPath, workingDirectory }),
357
+ { encoding: "utf-8" }
358
+ );
359
+ const uid = resolved.uid;
360
+ runCommand(resolved.execFileSync, "launchctl", ["bootout", `gui/${uid}`, plistPath], true);
361
+ runCommand(resolved.execFileSync, "launchctl", ["bootstrap", `gui/${uid}`, plistPath]);
362
+ runCommand(resolved.execFileSync, "launchctl", ["enable", `gui/${uid}/${MAC_LABEL}`], true);
363
+ runCommand(resolved.execFileSync, "launchctl", ["kickstart", "-k", `gui/${uid}/${MAC_LABEL}`], true);
364
+ return createMacAutostartStatus(entrypoint, plistPath, {
365
+ installed: true,
366
+ health: "healthy",
367
+ needsRepair: false,
368
+ command: entrypoint.command,
369
+ workingDirectory,
370
+ expectedWorkingDirectory: workingDirectory
371
+ });
372
+ };
373
+ var uninstallMacAutostart = (deps = {}) => {
374
+ const resolved = { ...defaultDeps(), ...deps };
375
+ const entrypoint = resolveCliEntrypoint(resolved);
376
+ const plistPath = getLaunchAgentPath(resolved.homedir());
377
+ const uid = resolved.uid;
378
+ runCommand(resolved.execFileSync, "launchctl", ["bootout", `gui/${uid}`, plistPath], true);
379
+ if (resolved.existsSync(plistPath)) {
380
+ resolved.unlinkSync(plistPath);
381
+ }
382
+ return createMacAutostartStatus(entrypoint, plistPath, {
383
+ installed: false,
384
+ health: "missing",
385
+ needsRepair: false,
386
+ reason: "missing_plist"
387
+ });
388
+ };
389
+ var isWindowsTaskInstalled = (deps = {}) => {
390
+ const resolved = { ...defaultDeps(), ...deps };
391
+ try {
392
+ resolved.execFileSync("schtasks", ["/Query", "/TN", WIN_TASK_NAME], { stdio: "ignore" });
393
+ return true;
394
+ } catch {
395
+ return false;
396
+ }
397
+ };
398
+ var decodeXmlText = (value) => {
399
+ return value.replace(/&quot;/g, '"').replace(/&apos;/g, "'").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&");
400
+ };
401
+ var readXmlTag = (xml, tagName) => {
402
+ const match = xml.match(new RegExp(`<${tagName}>([\\s\\S]*?)</${tagName}>`, "i"));
403
+ return match?.[1] ? decodeXmlText(match[1]) : void 0;
404
+ };
405
+ var splitCommandLine = (value) => {
406
+ const args = [];
407
+ let current = "";
408
+ let inQuotes = false;
409
+ let backslashes = 0;
410
+ for (const char of value) {
411
+ if (char === "\\") {
412
+ backslashes += 1;
413
+ continue;
414
+ }
415
+ if (char === '"') {
416
+ if (backslashes > 0) {
417
+ current += "\\".repeat(Math.floor(backslashes / 2));
418
+ if (backslashes % 2 === 1) {
419
+ current += '"';
420
+ backslashes = 0;
421
+ continue;
422
+ }
423
+ }
424
+ backslashes = 0;
425
+ inQuotes = !inQuotes;
426
+ continue;
427
+ }
428
+ if (backslashes > 0) {
429
+ current += "\\".repeat(backslashes);
430
+ backslashes = 0;
431
+ }
432
+ if (!inQuotes && /\s/.test(char)) {
433
+ if (current.length > 0) {
434
+ args.push(current);
435
+ current = "";
436
+ }
437
+ continue;
438
+ }
439
+ current += char;
440
+ }
441
+ if (backslashes > 0) {
442
+ current += "\\".repeat(backslashes);
443
+ }
444
+ if (current.length > 0) {
445
+ args.push(current);
446
+ }
447
+ return args;
448
+ };
449
+ var readWindowsTaskAction = (taskName, deps) => {
450
+ try {
451
+ const xml = deps.execFileSync("schtasks", ["/Query", "/TN", taskName, "/XML"], { encoding: "utf-8" });
452
+ const command = readXmlTag(xml, "Command");
453
+ const argumentsValue = readXmlTag(xml, "Arguments");
454
+ if (!command) {
455
+ return { ok: false };
456
+ }
457
+ const programArguments = argumentsValue !== void 0 ? [command, ...splitCommandLine(argumentsValue)] : splitCommandLine(command);
458
+ if (programArguments.length === 0) {
459
+ return { ok: false };
460
+ }
461
+ return {
462
+ ok: true,
463
+ command: formatCommand(programArguments),
464
+ programArguments
465
+ };
466
+ } catch {
467
+ return { ok: false };
468
+ }
469
+ };
470
+ var classifyWindowsAutostartStatus = (entrypoint, deps) => {
471
+ const installed = isWindowsTaskInstalled(deps);
472
+ if (!installed) {
473
+ return createWindowsAutostartStatus(entrypoint, {
474
+ installed: false,
475
+ health: "missing",
476
+ needsRepair: false
477
+ });
478
+ }
479
+ const parsed = readWindowsTaskAction(WIN_TASK_NAME, deps);
480
+ if (!parsed.ok) {
481
+ return createWindowsAutostartStatus(entrypoint, {
482
+ installed: true,
483
+ health: "needs_repair",
484
+ needsRepair: true,
485
+ reason: "entrypoint_mismatch"
486
+ });
487
+ }
488
+ const expectedArgs = [entrypoint.nodePath, ...entrypoint.args];
489
+ const actualStatus = classifyPersistedProgramArguments(parsed.programArguments, deps);
490
+ if (actualStatus.health !== "healthy") {
491
+ return createWindowsAutostartStatus(entrypoint, {
492
+ installed: true,
493
+ health: "needs_repair",
494
+ needsRepair: true,
495
+ command: parsed.command,
496
+ reason: actualStatus.reason
497
+ });
498
+ }
499
+ if (entrypoint.isTransient) {
500
+ return createWindowsAutostartStatus(entrypoint, {
501
+ installed: true,
502
+ health: "healthy",
503
+ needsRepair: false,
504
+ command: parsed.command
505
+ });
506
+ }
507
+ const mismatchReason = classifyExpectedProgramArguments(expectedArgs, parsed.programArguments, deps);
508
+ if (mismatchReason) {
509
+ return createWindowsAutostartStatus(entrypoint, {
510
+ installed: true,
511
+ health: "needs_repair",
512
+ needsRepair: true,
513
+ command: parsed.command,
514
+ reason: mismatchReason
515
+ });
516
+ }
517
+ return createWindowsAutostartStatus(entrypoint, {
518
+ installed: true,
519
+ health: "healthy",
520
+ needsRepair: false,
521
+ command: parsed.command
522
+ });
523
+ };
524
+ var installWindowsAutostart = (deps = {}) => {
525
+ const resolved = { ...defaultDeps(), ...deps };
526
+ const entrypoint = resolveCliEntrypoint(resolved);
527
+ assertPersistentEntrypoint(entrypoint);
528
+ const { args } = buildWindowsTaskArgs(entrypoint, WIN_TASK_NAME);
529
+ runCommand(resolved.execFileSync, "schtasks", args);
530
+ return createWindowsAutostartStatus(entrypoint, {
531
+ installed: true,
532
+ health: "healthy",
533
+ needsRepair: false,
534
+ command: entrypoint.command
535
+ });
536
+ };
537
+ var uninstallWindowsAutostart = (deps = {}) => {
538
+ const resolved = { ...defaultDeps(), ...deps };
539
+ const entrypoint = resolveCliEntrypoint(resolved);
540
+ runCommand(resolved.execFileSync, "schtasks", ["/Delete", "/TN", WIN_TASK_NAME, "/F"], true);
541
+ return createWindowsAutostartStatus(entrypoint, {
542
+ installed: false,
543
+ health: "missing",
544
+ needsRepair: false
545
+ });
546
+ };
547
+ var getAutostartStatus = (deps = {}) => {
548
+ const resolved = { ...defaultDeps(), ...deps };
549
+ const platform = resolved.platform;
550
+ if (platform === "darwin") {
551
+ const entrypoint = resolveCliEntrypoint(resolved);
552
+ const location = getLaunchAgentPath(resolved.homedir());
553
+ return classifyMacAutostartStatus(entrypoint, location, resolved);
554
+ }
555
+ if (platform === "win32") {
556
+ const entrypoint = resolveCliEntrypoint(resolved);
557
+ return classifyWindowsAutostartStatus(entrypoint, resolved);
558
+ }
559
+ return createAutostartStatus({
560
+ platform,
561
+ supported: false,
562
+ installed: false,
563
+ health: "unsupported",
564
+ needsRepair: false,
565
+ reason: "unsupported_platform"
566
+ });
567
+ };
568
+ var installAutostart = (deps = {}) => {
569
+ const platform = deps.platform ?? process.platform;
570
+ if (platform === "darwin") {
571
+ return installMacAutostart(deps);
572
+ }
573
+ if (platform === "win32") {
574
+ return installWindowsAutostart(deps);
575
+ }
576
+ return createAutostartStatus({
577
+ platform,
578
+ supported: false,
579
+ installed: false,
580
+ health: "unsupported",
581
+ needsRepair: false,
582
+ reason: "unsupported_platform"
583
+ });
584
+ };
585
+ var uninstallAutostart = (deps = {}) => {
586
+ const platform = deps.platform ?? process.platform;
587
+ if (platform === "darwin") {
588
+ return uninstallMacAutostart(deps);
589
+ }
590
+ if (platform === "win32") {
591
+ return uninstallWindowsAutostart(deps);
592
+ }
593
+ return createAutostartStatus({
594
+ platform,
595
+ supported: false,
596
+ installed: false,
597
+ health: "unsupported",
598
+ needsRepair: false,
599
+ reason: "unsupported_platform"
600
+ });
601
+ };
602
+
603
+ export {
604
+ STABLE_DAEMON_INSTALL_GUIDANCE,
605
+ isTransientAutostartInstallError,
606
+ getAutostartStatus,
607
+ installAutostart,
608
+ uninstallAutostart
609
+ };
610
+ //# sourceMappingURL=chunk-WOXBLP7V.js.map