parasor 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (633) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +208 -0
  3. package/THIRD-PARTY-NOTICES.md +138 -0
  4. package/bin/parasor.mjs +3 -0
  5. package/node_modules/@parasor/shared/dist/client.d.ts +8 -0
  6. package/node_modules/@parasor/shared/dist/client.d.ts.map +1 -0
  7. package/node_modules/@parasor/shared/dist/client.js +2 -0
  8. package/node_modules/@parasor/shared/dist/client.js.map +1 -0
  9. package/node_modules/@parasor/shared/dist/drops.d.ts +24 -0
  10. package/node_modules/@parasor/shared/dist/drops.d.ts.map +1 -0
  11. package/node_modules/@parasor/shared/dist/drops.js +2 -0
  12. package/node_modules/@parasor/shared/dist/drops.js.map +1 -0
  13. package/node_modules/@parasor/shared/dist/file-uploads.d.ts +56 -0
  14. package/node_modules/@parasor/shared/dist/file-uploads.d.ts.map +1 -0
  15. package/node_modules/@parasor/shared/dist/file-uploads.js +13 -0
  16. package/node_modules/@parasor/shared/dist/file-uploads.js.map +1 -0
  17. package/node_modules/@parasor/shared/dist/ide-commands.d.ts +8 -0
  18. package/node_modules/@parasor/shared/dist/ide-commands.d.ts.map +1 -0
  19. package/node_modules/@parasor/shared/dist/ide-commands.js +59 -0
  20. package/node_modules/@parasor/shared/dist/ide-commands.js.map +1 -0
  21. package/node_modules/@parasor/shared/dist/pane-commands.d.ts +7 -0
  22. package/node_modules/@parasor/shared/dist/pane-commands.d.ts.map +1 -0
  23. package/node_modules/@parasor/shared/dist/pane-commands.js +47 -0
  24. package/node_modules/@parasor/shared/dist/pane-commands.js.map +1 -0
  25. package/node_modules/@parasor/shared/dist/pane-model.d.ts +63 -0
  26. package/node_modules/@parasor/shared/dist/pane-model.d.ts.map +1 -0
  27. package/node_modules/@parasor/shared/dist/pane-model.js +89 -0
  28. package/node_modules/@parasor/shared/dist/pane-model.js.map +1 -0
  29. package/node_modules/@parasor/shared/dist/panes.d.ts +33 -0
  30. package/node_modules/@parasor/shared/dist/panes.d.ts.map +1 -0
  31. package/node_modules/@parasor/shared/dist/panes.js +2 -0
  32. package/node_modules/@parasor/shared/dist/panes.js.map +1 -0
  33. package/node_modules/@parasor/shared/dist/runtime.d.ts +180 -0
  34. package/node_modules/@parasor/shared/dist/runtime.d.ts.map +1 -0
  35. package/node_modules/@parasor/shared/dist/runtime.js +2 -0
  36. package/node_modules/@parasor/shared/dist/runtime.js.map +1 -0
  37. package/node_modules/@parasor/shared/dist/state.d.ts +192 -0
  38. package/node_modules/@parasor/shared/dist/state.d.ts.map +1 -0
  39. package/node_modules/@parasor/shared/dist/state.js +10 -0
  40. package/node_modules/@parasor/shared/dist/state.js.map +1 -0
  41. package/node_modules/@parasor/shared/dist/terminal.d.ts +191 -0
  42. package/node_modules/@parasor/shared/dist/terminal.d.ts.map +1 -0
  43. package/node_modules/@parasor/shared/dist/terminal.js +174 -0
  44. package/node_modules/@parasor/shared/dist/terminal.js.map +1 -0
  45. package/node_modules/@parasor/shared/dist/types.d.ts +13 -0
  46. package/node_modules/@parasor/shared/dist/types.d.ts.map +1 -0
  47. package/node_modules/@parasor/shared/dist/types.js +13 -0
  48. package/node_modules/@parasor/shared/dist/types.js.map +1 -0
  49. package/node_modules/@parasor/shared/dist/worktree-local-files.d.ts +14 -0
  50. package/node_modules/@parasor/shared/dist/worktree-local-files.d.ts.map +1 -0
  51. package/node_modules/@parasor/shared/dist/worktree-local-files.js +41 -0
  52. package/node_modules/@parasor/shared/dist/worktree-local-files.js.map +1 -0
  53. package/node_modules/@parasor/shared/dist/ws-events.d.ts +152 -0
  54. package/node_modules/@parasor/shared/dist/ws-events.d.ts.map +1 -0
  55. package/node_modules/@parasor/shared/dist/ws-events.js +2 -0
  56. package/node_modules/@parasor/shared/dist/ws-events.js.map +1 -0
  57. package/node_modules/@parasor/shared/package.json +13 -0
  58. package/package.json +61 -0
  59. package/server/agent-detector/agent-state-store.d.ts +23 -0
  60. package/server/agent-detector/agent-state-store.d.ts.map +1 -0
  61. package/server/agent-detector/agent-state-store.js +110 -0
  62. package/server/agent-detector/agent-state-store.js.map +1 -0
  63. package/server/agent-detector/detector.d.ts +80 -0
  64. package/server/agent-detector/detector.d.ts.map +1 -0
  65. package/server/agent-detector/detector.js +219 -0
  66. package/server/agent-detector/detector.js.map +1 -0
  67. package/server/agent-detector/event-map.d.ts +25 -0
  68. package/server/agent-detector/event-map.d.ts.map +1 -0
  69. package/server/agent-detector/event-map.js +136 -0
  70. package/server/agent-detector/event-map.js.map +1 -0
  71. package/server/agent-detector/manual-agent-tracker.d.ts +19 -0
  72. package/server/agent-detector/manual-agent-tracker.d.ts.map +1 -0
  73. package/server/agent-detector/manual-agent-tracker.js +123 -0
  74. package/server/agent-detector/manual-agent-tracker.js.map +1 -0
  75. package/server/agent-detector/output-eligibility.d.ts +3 -0
  76. package/server/agent-detector/output-eligibility.d.ts.map +1 -0
  77. package/server/agent-detector/output-eligibility.js +39 -0
  78. package/server/agent-detector/output-eligibility.js.map +1 -0
  79. package/server/application/files/errors.d.ts +28 -0
  80. package/server/application/files/errors.d.ts.map +1 -0
  81. package/server/application/files/errors.js +55 -0
  82. package/server/application/files/errors.js.map +1 -0
  83. package/server/application/files/local-filesystem.d.ts +36 -0
  84. package/server/application/files/local-filesystem.d.ts.map +1 -0
  85. package/server/application/files/local-filesystem.js +171 -0
  86. package/server/application/files/local-filesystem.js.map +1 -0
  87. package/server/application/files/project-file-queries.d.ts +16 -0
  88. package/server/application/files/project-file-queries.d.ts.map +1 -0
  89. package/server/application/files/project-file-queries.js +126 -0
  90. package/server/application/files/project-file-queries.js.map +1 -0
  91. package/server/application/integrations/errors.d.ts +16 -0
  92. package/server/application/integrations/errors.d.ts.map +1 -0
  93. package/server/application/integrations/errors.js +31 -0
  94. package/server/application/integrations/errors.js.map +1 -0
  95. package/server/application/integrations/hook-notify.d.ts +32 -0
  96. package/server/application/integrations/hook-notify.d.ts.map +1 -0
  97. package/server/application/integrations/hook-notify.js +118 -0
  98. package/server/application/integrations/hook-notify.js.map +1 -0
  99. package/server/application/integrations/open-url.d.ts +11 -0
  100. package/server/application/integrations/open-url.d.ts.map +1 -0
  101. package/server/application/integrations/open-url.js +23 -0
  102. package/server/application/integrations/open-url.js.map +1 -0
  103. package/server/application/ports.d.ts +11 -0
  104. package/server/application/ports.d.ts.map +1 -0
  105. package/server/application/ports.js +2 -0
  106. package/server/application/ports.js.map +1 -0
  107. package/server/application/workspace/errors.d.ts +21 -0
  108. package/server/application/workspace/errors.d.ts.map +1 -0
  109. package/server/application/workspace/errors.js +21 -0
  110. package/server/application/workspace/errors.js.map +1 -0
  111. package/server/application/workspace/pane-commands.d.ts +47 -0
  112. package/server/application/workspace/pane-commands.d.ts.map +1 -0
  113. package/server/application/workspace/pane-commands.js +193 -0
  114. package/server/application/workspace/pane-commands.js.map +1 -0
  115. package/server/application/workspace/project-commands.d.ts +34 -0
  116. package/server/application/workspace/project-commands.d.ts.map +1 -0
  117. package/server/application/workspace/project-commands.js +81 -0
  118. package/server/application/workspace/project-commands.js.map +1 -0
  119. package/server/application/workspace/project-queries.d.ts +21 -0
  120. package/server/application/workspace/project-queries.d.ts.map +1 -0
  121. package/server/application/workspace/project-queries.js +216 -0
  122. package/server/application/workspace/project-queries.js.map +1 -0
  123. package/server/application/workspace/session-commands.d.ts +24 -0
  124. package/server/application/workspace/session-commands.d.ts.map +1 -0
  125. package/server/application/workspace/session-commands.js +123 -0
  126. package/server/application/workspace/session-commands.js.map +1 -0
  127. package/server/application/workspace/session-queries.d.ts +14 -0
  128. package/server/application/workspace/session-queries.d.ts.map +1 -0
  129. package/server/application/workspace/session-queries.js +47 -0
  130. package/server/application/workspace/session-queries.js.map +1 -0
  131. package/server/application/workspace/worktree-commands.d.ts +98 -0
  132. package/server/application/workspace/worktree-commands.d.ts.map +1 -0
  133. package/server/application/workspace/worktree-commands.js +323 -0
  134. package/server/application/workspace/worktree-commands.js.map +1 -0
  135. package/server/application/workspace/worktree-local-files.d.ts +11 -0
  136. package/server/application/workspace/worktree-local-files.d.ts.map +1 -0
  137. package/server/application/workspace/worktree-local-files.js +223 -0
  138. package/server/application/workspace/worktree-local-files.js.map +1 -0
  139. package/server/application/workspace/worktree-reconcile.d.ts +21 -0
  140. package/server/application/workspace/worktree-reconcile.d.ts.map +1 -0
  141. package/server/application/workspace/worktree-reconcile.js +49 -0
  142. package/server/application/workspace/worktree-reconcile.js.map +1 -0
  143. package/server/auth/origin.d.ts +17 -0
  144. package/server/auth/origin.d.ts.map +1 -0
  145. package/server/auth/origin.js +93 -0
  146. package/server/auth/origin.js.map +1 -0
  147. package/server/auth/pairing-token.d.ts +28 -0
  148. package/server/auth/pairing-token.d.ts.map +1 -0
  149. package/server/auth/pairing-token.js +46 -0
  150. package/server/auth/pairing-token.js.map +1 -0
  151. package/server/auth/token-exchange.d.ts +11 -0
  152. package/server/auth/token-exchange.d.ts.map +1 -0
  153. package/server/auth/token-exchange.js +27 -0
  154. package/server/auth/token-exchange.js.map +1 -0
  155. package/server/auth/token.d.ts +18 -0
  156. package/server/auth/token.d.ts.map +1 -0
  157. package/server/auth/token.js +115 -0
  158. package/server/auth/token.js.map +1 -0
  159. package/server/bootstrap/create-app-server.d.ts +49 -0
  160. package/server/bootstrap/create-app-server.d.ts.map +1 -0
  161. package/server/bootstrap/create-app-server.js +154 -0
  162. package/server/bootstrap/create-app-server.js.map +1 -0
  163. package/server/bootstrap/project-runtime.d.ts +29 -0
  164. package/server/bootstrap/project-runtime.d.ts.map +1 -0
  165. package/server/bootstrap/project-runtime.js +253 -0
  166. package/server/bootstrap/project-runtime.js.map +1 -0
  167. package/server/bootstrap/pty-env.d.ts +3 -0
  168. package/server/bootstrap/pty-env.d.ts.map +1 -0
  169. package/server/bootstrap/pty-env.js +15 -0
  170. package/server/bootstrap/pty-env.js.map +1 -0
  171. package/server/bootstrap/reconcile-state.d.ts +16 -0
  172. package/server/bootstrap/reconcile-state.d.ts.map +1 -0
  173. package/server/bootstrap/reconcile-state.js +73 -0
  174. package/server/bootstrap/reconcile-state.js.map +1 -0
  175. package/server/bootstrap/runtime-loops.d.ts +51 -0
  176. package/server/bootstrap/runtime-loops.d.ts.map +1 -0
  177. package/server/bootstrap/runtime-loops.js +189 -0
  178. package/server/bootstrap/runtime-loops.js.map +1 -0
  179. package/server/bootstrap/runtime-port.d.ts +4 -0
  180. package/server/bootstrap/runtime-port.d.ts.map +1 -0
  181. package/server/bootstrap/runtime-port.js +52 -0
  182. package/server/bootstrap/runtime-port.js.map +1 -0
  183. package/server/bootstrap/safety-gate.d.ts +22 -0
  184. package/server/bootstrap/safety-gate.d.ts.map +1 -0
  185. package/server/bootstrap/safety-gate.js +43 -0
  186. package/server/bootstrap/safety-gate.js.map +1 -0
  187. package/server/bootstrap/shutdown-marker.d.ts +35 -0
  188. package/server/bootstrap/shutdown-marker.d.ts.map +1 -0
  189. package/server/bootstrap/shutdown-marker.js +100 -0
  190. package/server/bootstrap/shutdown-marker.js.map +1 -0
  191. package/server/bootstrap/shutdown-runtime.d.ts +62 -0
  192. package/server/bootstrap/shutdown-runtime.d.ts.map +1 -0
  193. package/server/bootstrap/shutdown-runtime.js +66 -0
  194. package/server/bootstrap/shutdown-runtime.js.map +1 -0
  195. package/server/bootstrap/startup-banner.d.ts +34 -0
  196. package/server/bootstrap/startup-banner.d.ts.map +1 -0
  197. package/server/bootstrap/startup-banner.js +114 -0
  198. package/server/bootstrap/startup-banner.js.map +1 -0
  199. package/server/bootstrap/wire-runtime.d.ts +42 -0
  200. package/server/bootstrap/wire-runtime.d.ts.map +1 -0
  201. package/server/bootstrap/wire-runtime.js +205 -0
  202. package/server/bootstrap/wire-runtime.js.map +1 -0
  203. package/server/cli/help.d.ts +3 -0
  204. package/server/cli/help.d.ts.map +1 -0
  205. package/server/cli/help.js +39 -0
  206. package/server/cli/help.js.map +1 -0
  207. package/server/cli/hook-client.d.ts +12 -0
  208. package/server/cli/hook-client.d.ts.map +1 -0
  209. package/server/cli/hook-client.js +81 -0
  210. package/server/cli/hook-client.js.map +1 -0
  211. package/server/cli/hook.d.ts +3 -0
  212. package/server/cli/hook.d.ts.map +1 -0
  213. package/server/cli/hook.js +152 -0
  214. package/server/cli/hook.js.map +1 -0
  215. package/server/cli/main.d.ts +2 -0
  216. package/server/cli/main.d.ts.map +1 -0
  217. package/server/cli/main.js +133 -0
  218. package/server/cli/main.js.map +1 -0
  219. package/server/cli/notify.d.ts +19 -0
  220. package/server/cli/notify.d.ts.map +1 -0
  221. package/server/cli/notify.js +77 -0
  222. package/server/cli/notify.js.map +1 -0
  223. package/server/cli/open.d.ts +2 -0
  224. package/server/cli/open.d.ts.map +1 -0
  225. package/server/cli/open.js +47 -0
  226. package/server/cli/open.js.map +1 -0
  227. package/server/cli/probe-daemon-version.d.ts +46 -0
  228. package/server/cli/probe-daemon-version.d.ts.map +1 -0
  229. package/server/cli/probe-daemon-version.js +167 -0
  230. package/server/cli/probe-daemon-version.js.map +1 -0
  231. package/server/cli/pty-host.d.ts +36 -0
  232. package/server/cli/pty-host.d.ts.map +1 -0
  233. package/server/cli/pty-host.js +390 -0
  234. package/server/cli/pty-host.js.map +1 -0
  235. package/server/cli/qr.d.ts +2 -0
  236. package/server/cli/qr.d.ts.map +1 -0
  237. package/server/cli/qr.js +70 -0
  238. package/server/cli/qr.js.map +1 -0
  239. package/server/cli/restart-confirm.d.ts +33 -0
  240. package/server/cli/restart-confirm.d.ts.map +1 -0
  241. package/server/cli/restart-confirm.js +107 -0
  242. package/server/cli/restart-confirm.js.map +1 -0
  243. package/server/cli/restart.d.ts +17 -0
  244. package/server/cli/restart.d.ts.map +1 -0
  245. package/server/cli/restart.js +145 -0
  246. package/server/cli/restart.js.map +1 -0
  247. package/server/cli/service-darwin.d.ts +70 -0
  248. package/server/cli/service-darwin.d.ts.map +1 -0
  249. package/server/cli/service-darwin.js +562 -0
  250. package/server/cli/service-darwin.js.map +1 -0
  251. package/server/cli/service-linux.d.ts +81 -0
  252. package/server/cli/service-linux.d.ts.map +1 -0
  253. package/server/cli/service-linux.js +412 -0
  254. package/server/cli/service-linux.js.map +1 -0
  255. package/server/cli/service.d.ts +33 -0
  256. package/server/cli/service.d.ts.map +1 -0
  257. package/server/cli/service.js +133 -0
  258. package/server/cli/service.js.map +1 -0
  259. package/server/cli/shim-installer.d.ts +35 -0
  260. package/server/cli/shim-installer.d.ts.map +1 -0
  261. package/server/cli/shim-installer.js +662 -0
  262. package/server/cli/shim-installer.js.map +1 -0
  263. package/server/cli/shim-open.d.ts +2 -0
  264. package/server/cli/shim-open.d.ts.map +1 -0
  265. package/server/cli/shim-open.js +128 -0
  266. package/server/cli/shim-open.js.map +1 -0
  267. package/server/cli/shutdown-deps.d.ts +41 -0
  268. package/server/cli/shutdown-deps.d.ts.map +1 -0
  269. package/server/cli/shutdown-deps.js +158 -0
  270. package/server/cli/shutdown-deps.js.map +1 -0
  271. package/server/cli/stop.d.ts +11 -0
  272. package/server/cli/stop.d.ts.map +1 -0
  273. package/server/cli/stop.js +123 -0
  274. package/server/cli/stop.js.map +1 -0
  275. package/server/cli/unknown-command.d.ts +8 -0
  276. package/server/cli/unknown-command.d.ts.map +1 -0
  277. package/server/cli/unknown-command.js +14 -0
  278. package/server/cli/unknown-command.js.map +1 -0
  279. package/server/debug/agent-status-recorder.d.ts +57 -0
  280. package/server/debug/agent-status-recorder.d.ts.map +1 -0
  281. package/server/debug/agent-status-recorder.js +209 -0
  282. package/server/debug/agent-status-recorder.js.map +1 -0
  283. package/server/debug/terminal-trace-recorder.d.ts +41 -0
  284. package/server/debug/terminal-trace-recorder.d.ts.map +1 -0
  285. package/server/debug/terminal-trace-recorder.js +112 -0
  286. package/server/debug/terminal-trace-recorder.js.map +1 -0
  287. package/server/fonts/catalog.d.ts +35 -0
  288. package/server/fonts/catalog.d.ts.map +1 -0
  289. package/server/fonts/catalog.js +76 -0
  290. package/server/fonts/catalog.js.map +1 -0
  291. package/server/fonts/installer.d.ts +45 -0
  292. package/server/fonts/installer.d.ts.map +1 -0
  293. package/server/fonts/installer.js +201 -0
  294. package/server/fonts/installer.js.map +1 -0
  295. package/server/fonts/routes.d.ts +4 -0
  296. package/server/fonts/routes.d.ts.map +1 -0
  297. package/server/fonts/routes.js +91 -0
  298. package/server/fonts/routes.js.map +1 -0
  299. package/server/fs/drops.d.ts +50 -0
  300. package/server/fs/drops.d.ts.map +1 -0
  301. package/server/fs/drops.js +137 -0
  302. package/server/fs/drops.js.map +1 -0
  303. package/server/fs/file-uploads.d.ts +57 -0
  304. package/server/fs/file-uploads.d.ts.map +1 -0
  305. package/server/fs/file-uploads.js +214 -0
  306. package/server/fs/file-uploads.js.map +1 -0
  307. package/server/fs/file-watcher.d.ts +22 -0
  308. package/server/fs/file-watcher.d.ts.map +1 -0
  309. package/server/fs/file-watcher.js +105 -0
  310. package/server/fs/file-watcher.js.map +1 -0
  311. package/server/fs/git-watcher.d.ts +76 -0
  312. package/server/fs/git-watcher.d.ts.map +1 -0
  313. package/server/fs/git-watcher.js +356 -0
  314. package/server/fs/git-watcher.js.map +1 -0
  315. package/server/fs/media.d.ts +35 -0
  316. package/server/fs/media.d.ts.map +1 -0
  317. package/server/fs/media.js +271 -0
  318. package/server/fs/media.js.map +1 -0
  319. package/server/fs/service.d.ts +97 -0
  320. package/server/fs/service.d.ts.map +1 -0
  321. package/server/fs/service.js +306 -0
  322. package/server/fs/service.js.map +1 -0
  323. package/server/fs/upload-staging.d.ts +76 -0
  324. package/server/fs/upload-staging.d.ts.map +1 -0
  325. package/server/fs/upload-staging.js +283 -0
  326. package/server/fs/upload-staging.js.map +1 -0
  327. package/server/fs/watcher-lifecycle.d.ts +24 -0
  328. package/server/fs/watcher-lifecycle.d.ts.map +1 -0
  329. package/server/fs/watcher-lifecycle.js +105 -0
  330. package/server/fs/watcher-lifecycle.js.map +1 -0
  331. package/server/index.d.ts +17 -0
  332. package/server/index.d.ts.map +1 -0
  333. package/server/index.js +510 -0
  334. package/server/index.js.map +1 -0
  335. package/server/ipc/socket-server.d.ts +28 -0
  336. package/server/ipc/socket-server.d.ts.map +1 -0
  337. package/server/ipc/socket-server.js +206 -0
  338. package/server/ipc/socket-server.js.map +1 -0
  339. package/server/lib/git-exec.d.ts +38 -0
  340. package/server/lib/git-exec.d.ts.map +1 -0
  341. package/server/lib/git-exec.js +96 -0
  342. package/server/lib/git-exec.js.map +1 -0
  343. package/server/lib/open-in-ide.d.ts +22 -0
  344. package/server/lib/open-in-ide.d.ts.map +1 -0
  345. package/server/lib/open-in-ide.js +90 -0
  346. package/server/lib/open-in-ide.js.map +1 -0
  347. package/server/lib/open-in-os.d.ts +20 -0
  348. package/server/lib/open-in-os.d.ts.map +1 -0
  349. package/server/lib/open-in-os.js +51 -0
  350. package/server/lib/open-in-os.js.map +1 -0
  351. package/server/lib/path.d.ts +2 -0
  352. package/server/lib/path.d.ts.map +1 -0
  353. package/server/lib/path.js +10 -0
  354. package/server/lib/path.js.map +1 -0
  355. package/server/lib/promise-mutex.d.ts +7 -0
  356. package/server/lib/promise-mutex.d.ts.map +1 -0
  357. package/server/lib/promise-mutex.js +26 -0
  358. package/server/lib/promise-mutex.js.map +1 -0
  359. package/server/lib/sd-notify.d.ts +8 -0
  360. package/server/lib/sd-notify.d.ts.map +1 -0
  361. package/server/lib/sd-notify.js +27 -0
  362. package/server/lib/sd-notify.js.map +1 -0
  363. package/server/net/local-machine.d.ts +7 -0
  364. package/server/net/local-machine.d.ts.map +1 -0
  365. package/server/net/local-machine.js +79 -0
  366. package/server/net/local-machine.js.map +1 -0
  367. package/server/net/reachable-host.d.ts +12 -0
  368. package/server/net/reachable-host.d.ts.map +1 -0
  369. package/server/net/reachable-host.js +25 -0
  370. package/server/net/reachable-host.js.map +1 -0
  371. package/server/network/endpoints.d.ts +14 -0
  372. package/server/network/endpoints.d.ts.map +1 -0
  373. package/server/network/endpoints.js +104 -0
  374. package/server/network/endpoints.js.map +1 -0
  375. package/server/network/qr.d.ts +16 -0
  376. package/server/network/qr.d.ts.map +1 -0
  377. package/server/network/qr.js +89 -0
  378. package/server/network/qr.js.map +1 -0
  379. package/server/port-forwarder/forwarder.d.ts +47 -0
  380. package/server/port-forwarder/forwarder.d.ts.map +1 -0
  381. package/server/port-forwarder/forwarder.js +159 -0
  382. package/server/port-forwarder/forwarder.js.map +1 -0
  383. package/server/port-scanner/scanner.d.ts +24 -0
  384. package/server/port-scanner/scanner.d.ts.map +1 -0
  385. package/server/port-scanner/scanner.js +193 -0
  386. package/server/port-scanner/scanner.js.map +1 -0
  387. package/server/pty/connection-lifecycle.d.ts +50 -0
  388. package/server/pty/connection-lifecycle.d.ts.map +1 -0
  389. package/server/pty/connection-lifecycle.js +113 -0
  390. package/server/pty/connection-lifecycle.js.map +1 -0
  391. package/server/pty/daemon-connect.d.ts +52 -0
  392. package/server/pty/daemon-connect.d.ts.map +1 -0
  393. package/server/pty/daemon-connect.js +62 -0
  394. package/server/pty/daemon-connect.js.map +1 -0
  395. package/server/pty/handshake-timeout-race.d.ts +22 -0
  396. package/server/pty/handshake-timeout-race.d.ts.map +1 -0
  397. package/server/pty/handshake-timeout-race.js +23 -0
  398. package/server/pty/handshake-timeout-race.js.map +1 -0
  399. package/server/pty/headless-replay-snapshot.d.ts +28 -0
  400. package/server/pty/headless-replay-snapshot.d.ts.map +1 -0
  401. package/server/pty/headless-replay-snapshot.js +285 -0
  402. package/server/pty/headless-replay-snapshot.js.map +1 -0
  403. package/server/pty/headless-terminal-state-cache.d.ts +31 -0
  404. package/server/pty/headless-terminal-state-cache.d.ts.map +1 -0
  405. package/server/pty/headless-terminal-state-cache.js +119 -0
  406. package/server/pty/headless-terminal-state-cache.js.map +1 -0
  407. package/server/pty/hello-ack-validator.d.ts +15 -0
  408. package/server/pty/hello-ack-validator.d.ts.map +1 -0
  409. package/server/pty/hello-ack-validator.js +30 -0
  410. package/server/pty/hello-ack-validator.js.map +1 -0
  411. package/server/pty/host-daemon/bootstrap.d.ts +100 -0
  412. package/server/pty/host-daemon/bootstrap.d.ts.map +1 -0
  413. package/server/pty/host-daemon/bootstrap.js +611 -0
  414. package/server/pty/host-daemon/bootstrap.js.map +1 -0
  415. package/server/pty/host-daemon/daemon.d.ts +111 -0
  416. package/server/pty/host-daemon/daemon.d.ts.map +1 -0
  417. package/server/pty/host-daemon/daemon.js +648 -0
  418. package/server/pty/host-daemon/daemon.js.map +1 -0
  419. package/server/pty/host-daemon/entry.d.ts +3 -0
  420. package/server/pty/host-daemon/entry.d.ts.map +1 -0
  421. package/server/pty/host-daemon/entry.js +72 -0
  422. package/server/pty/host-daemon/entry.js.map +1 -0
  423. package/server/pty/host-daemon/lockfile.d.ts +12 -0
  424. package/server/pty/host-daemon/lockfile.d.ts.map +1 -0
  425. package/server/pty/host-daemon/lockfile.js +120 -0
  426. package/server/pty/host-daemon/lockfile.js.map +1 -0
  427. package/server/pty/host-daemon/mode-marker.d.ts +77 -0
  428. package/server/pty/host-daemon/mode-marker.d.ts.map +1 -0
  429. package/server/pty/host-daemon/mode-marker.js +228 -0
  430. package/server/pty/host-daemon/mode-marker.js.map +1 -0
  431. package/server/pty/host-daemon/orphan-cleanup.d.ts +42 -0
  432. package/server/pty/host-daemon/orphan-cleanup.d.ts.map +1 -0
  433. package/server/pty/host-daemon/orphan-cleanup.js +84 -0
  434. package/server/pty/host-daemon/orphan-cleanup.js.map +1 -0
  435. package/server/pty/host-daemon/paths.d.ts +10 -0
  436. package/server/pty/host-daemon/paths.d.ts.map +1 -0
  437. package/server/pty/host-daemon/paths.js +56 -0
  438. package/server/pty/host-daemon/paths.js.map +1 -0
  439. package/server/pty/host-daemon/server-connection.d.ts +44 -0
  440. package/server/pty/host-daemon/server-connection.d.ts.map +1 -0
  441. package/server/pty/host-daemon/server-connection.js +100 -0
  442. package/server/pty/host-daemon/server-connection.js.map +1 -0
  443. package/server/pty/host-daemon/service-detection.d.ts +24 -0
  444. package/server/pty/host-daemon/service-detection.d.ts.map +1 -0
  445. package/server/pty/host-daemon/service-detection.js +16 -0
  446. package/server/pty/host-daemon/service-detection.js.map +1 -0
  447. package/server/pty/host-daemon/socket-ready.d.ts +22 -0
  448. package/server/pty/host-daemon/socket-ready.d.ts.map +1 -0
  449. package/server/pty/host-daemon/socket-ready.js +33 -0
  450. package/server/pty/host-daemon/socket-ready.js.map +1 -0
  451. package/server/pty/host-daemon/spawn-daemon.d.ts +45 -0
  452. package/server/pty/host-daemon/spawn-daemon.d.ts.map +1 -0
  453. package/server/pty/host-daemon/spawn-daemon.js +155 -0
  454. package/server/pty/host-daemon/spawn-daemon.js.map +1 -0
  455. package/server/pty/host-daemon/terminate-daemon.d.ts +16 -0
  456. package/server/pty/host-daemon/terminate-daemon.d.ts.map +1 -0
  457. package/server/pty/host-daemon/terminate-daemon.js +128 -0
  458. package/server/pty/host-daemon/terminate-daemon.js.map +1 -0
  459. package/server/pty/host-protocol/frames.d.ts +110 -0
  460. package/server/pty/host-protocol/frames.d.ts.map +1 -0
  461. package/server/pty/host-protocol/frames.js +255 -0
  462. package/server/pty/host-protocol/frames.js.map +1 -0
  463. package/server/pty/host-protocol/messages.d.ts +140 -0
  464. package/server/pty/host-protocol/messages.d.ts.map +1 -0
  465. package/server/pty/host-protocol/messages.js +117 -0
  466. package/server/pty/host-protocol/messages.js.map +1 -0
  467. package/server/pty/host.d.ts +273 -0
  468. package/server/pty/host.d.ts.map +1 -0
  469. package/server/pty/host.js +184 -0
  470. package/server/pty/host.js.map +1 -0
  471. package/server/pty/in-process-host.d.ts +224 -0
  472. package/server/pty/in-process-host.d.ts.map +1 -0
  473. package/server/pty/in-process-host.js +1183 -0
  474. package/server/pty/in-process-host.js.map +1 -0
  475. package/server/pty/osc7-lifecycle.d.ts +8 -0
  476. package/server/pty/osc7-lifecycle.d.ts.map +1 -0
  477. package/server/pty/osc7-lifecycle.js +22 -0
  478. package/server/pty/osc7-lifecycle.js.map +1 -0
  479. package/server/pty/osc7-parser.d.ts +23 -0
  480. package/server/pty/osc7-parser.d.ts.map +1 -0
  481. package/server/pty/osc7-parser.js +91 -0
  482. package/server/pty/osc7-parser.js.map +1 -0
  483. package/server/pty/remote-host.d.ts +188 -0
  484. package/server/pty/remote-host.d.ts.map +1 -0
  485. package/server/pty/remote-host.js +810 -0
  486. package/server/pty/remote-host.js.map +1 -0
  487. package/server/pty/request-correlator.d.ts +59 -0
  488. package/server/pty/request-correlator.d.ts.map +1 -0
  489. package/server/pty/request-correlator.js +75 -0
  490. package/server/pty/request-correlator.js.map +1 -0
  491. package/server/pty/scrollback-log.d.ts +130 -0
  492. package/server/pty/scrollback-log.d.ts.map +1 -0
  493. package/server/pty/scrollback-log.js +344 -0
  494. package/server/pty/scrollback-log.js.map +1 -0
  495. package/server/pty/scrollback-sanitize.d.ts +2 -0
  496. package/server/pty/scrollback-sanitize.d.ts.map +1 -0
  497. package/server/pty/scrollback-sanitize.js +54 -0
  498. package/server/pty/scrollback-sanitize.js.map +1 -0
  499. package/server/pty/session-mirror.d.ts +67 -0
  500. package/server/pty/session-mirror.d.ts.map +1 -0
  501. package/server/pty/session-mirror.js +112 -0
  502. package/server/pty/session-mirror.js.map +1 -0
  503. package/server/pty/session-policy.d.ts +85 -0
  504. package/server/pty/session-policy.d.ts.map +1 -0
  505. package/server/pty/session-policy.js +186 -0
  506. package/server/pty/session-policy.js.map +1 -0
  507. package/server/pty/version-mismatch-recovery.d.ts +71 -0
  508. package/server/pty/version-mismatch-recovery.d.ts.map +1 -0
  509. package/server/pty/version-mismatch-recovery.js +63 -0
  510. package/server/pty/version-mismatch-recovery.js.map +1 -0
  511. package/server/routes/debug-agent-status.d.ts +5 -0
  512. package/server/routes/debug-agent-status.d.ts.map +1 -0
  513. package/server/routes/debug-agent-status.js +22 -0
  514. package/server/routes/debug-agent-status.js.map +1 -0
  515. package/server/routes/debug-diagnostics.d.ts +8 -0
  516. package/server/routes/debug-diagnostics.d.ts.map +1 -0
  517. package/server/routes/debug-diagnostics.js +34 -0
  518. package/server/routes/debug-diagnostics.js.map +1 -0
  519. package/server/routes/debug-terminal-trace.d.ts +16 -0
  520. package/server/routes/debug-terminal-trace.d.ts.map +1 -0
  521. package/server/routes/debug-terminal-trace.js +545 -0
  522. package/server/routes/debug-terminal-trace.js.map +1 -0
  523. package/server/routes/drops.d.ts +13 -0
  524. package/server/routes/drops.d.ts.map +1 -0
  525. package/server/routes/drops.js +126 -0
  526. package/server/routes/drops.js.map +1 -0
  527. package/server/routes/file-uploads.d.ts +9 -0
  528. package/server/routes/file-uploads.d.ts.map +1 -0
  529. package/server/routes/file-uploads.js +119 -0
  530. package/server/routes/file-uploads.js.map +1 -0
  531. package/server/routes/files.d.ts +9 -0
  532. package/server/routes/files.d.ts.map +1 -0
  533. package/server/routes/files.js +441 -0
  534. package/server/routes/files.js.map +1 -0
  535. package/server/routes/filesystem.d.ts +6 -0
  536. package/server/routes/filesystem.d.ts.map +1 -0
  537. package/server/routes/filesystem.js +76 -0
  538. package/server/routes/filesystem.js.map +1 -0
  539. package/server/routes/git.d.ts +38 -0
  540. package/server/routes/git.d.ts.map +1 -0
  541. package/server/routes/git.js +585 -0
  542. package/server/routes/git.js.map +1 -0
  543. package/server/routes/healthz.d.ts +8 -0
  544. package/server/routes/healthz.d.ts.map +1 -0
  545. package/server/routes/healthz.js +24 -0
  546. package/server/routes/healthz.js.map +1 -0
  547. package/server/routes/hook.d.ts +14 -0
  548. package/server/routes/hook.d.ts.map +1 -0
  549. package/server/routes/hook.js +86 -0
  550. package/server/routes/hook.js.map +1 -0
  551. package/server/routes/ide-commands.d.ts +9 -0
  552. package/server/routes/ide-commands.d.ts.map +1 -0
  553. package/server/routes/ide-commands.js +23 -0
  554. package/server/routes/ide-commands.js.map +1 -0
  555. package/server/routes/lib/resolve-worktree.d.ts +30 -0
  556. package/server/routes/lib/resolve-worktree.d.ts.map +1 -0
  557. package/server/routes/lib/resolve-worktree.js +35 -0
  558. package/server/routes/lib/resolve-worktree.js.map +1 -0
  559. package/server/routes/open.d.ts +4 -0
  560. package/server/routes/open.d.ts.map +1 -0
  561. package/server/routes/open.js +21 -0
  562. package/server/routes/open.js.map +1 -0
  563. package/server/routes/pane-commands.d.ts +9 -0
  564. package/server/routes/pane-commands.d.ts.map +1 -0
  565. package/server/routes/pane-commands.js +23 -0
  566. package/server/routes/pane-commands.js.map +1 -0
  567. package/server/routes/projects.d.ts +15 -0
  568. package/server/routes/projects.d.ts.map +1 -0
  569. package/server/routes/projects.js +363 -0
  570. package/server/routes/projects.js.map +1 -0
  571. package/server/routes/server-notices.d.ts +4 -0
  572. package/server/routes/server-notices.d.ts.map +1 -0
  573. package/server/routes/server-notices.js +29 -0
  574. package/server/routes/server-notices.js.map +1 -0
  575. package/server/routes/service-config.d.ts +11 -0
  576. package/server/routes/service-config.d.ts.map +1 -0
  577. package/server/routes/service-config.js +64 -0
  578. package/server/routes/service-config.js.map +1 -0
  579. package/server/routes/sessions.d.ts +7 -0
  580. package/server/routes/sessions.d.ts.map +1 -0
  581. package/server/routes/sessions.js +218 -0
  582. package/server/routes/sessions.js.map +1 -0
  583. package/server/service/caffeinate.d.ts +33 -0
  584. package/server/service/caffeinate.d.ts.map +1 -0
  585. package/server/service/caffeinate.js +72 -0
  586. package/server/service/caffeinate.js.map +1 -0
  587. package/server/state/app-state.d.ts +167 -0
  588. package/server/state/app-state.d.ts.map +1 -0
  589. package/server/state/app-state.js +335 -0
  590. package/server/state/app-state.js.map +1 -0
  591. package/server/state/project-manager.d.ts +30 -0
  592. package/server/state/project-manager.d.ts.map +1 -0
  593. package/server/state/project-manager.js +128 -0
  594. package/server/state/project-manager.js.map +1 -0
  595. package/server/state/server-notices.d.ts +12 -0
  596. package/server/state/server-notices.d.ts.map +1 -0
  597. package/server/state/server-notices.js +32 -0
  598. package/server/state/server-notices.js.map +1 -0
  599. package/server/state/worktree-cache.d.ts +25 -0
  600. package/server/state/worktree-cache.d.ts.map +1 -0
  601. package/server/state/worktree-cache.js +53 -0
  602. package/server/state/worktree-cache.js.map +1 -0
  603. package/server/ws/events.d.ts +45 -0
  604. package/server/ws/events.d.ts.map +1 -0
  605. package/server/ws/events.js +134 -0
  606. package/server/ws/events.js.map +1 -0
  607. package/server/ws/keepalive.d.ts +27 -0
  608. package/server/ws/keepalive.d.ts.map +1 -0
  609. package/server/ws/keepalive.js +63 -0
  610. package/server/ws/keepalive.js.map +1 -0
  611. package/server/ws/terminal-attach.d.ts +13 -0
  612. package/server/ws/terminal-attach.d.ts.map +1 -0
  613. package/server/ws/terminal-attach.js +233 -0
  614. package/server/ws/terminal-attach.js.map +1 -0
  615. package/server/ws/terminal-flow.d.ts +17 -0
  616. package/server/ws/terminal-flow.d.ts.map +1 -0
  617. package/server/ws/terminal-flow.js +64 -0
  618. package/server/ws/terminal-flow.js.map +1 -0
  619. package/server/ws/terminal.d.ts +69 -0
  620. package/server/ws/terminal.d.ts.map +1 -0
  621. package/server/ws/terminal.js +311 -0
  622. package/server/ws/terminal.js.map +1 -0
  623. package/web/assets/EditorPane-CzzT3iYY.js +123 -0
  624. package/web/assets/SymbolsNerdFontMono-Regular-CwEZqMeU.woff2 +0 -0
  625. package/web/assets/TerminalPane-CjbYzePr.js +68 -0
  626. package/web/assets/TerminalPane-DkTCHfhq.css +1 -0
  627. package/web/assets/file-icons-JBi09j0r.js +6 -0
  628. package/web/assets/index-CTTkRpnn.css +2 -0
  629. package/web/assets/index-CmhewzMp.js +34 -0
  630. package/web/assets/session-resume-7f-tB-ZU.js +2 -0
  631. package/web/assets/terminal-trace-PuuFRybC.js +2803 -0
  632. package/web/assets/useVirtualKeyboard-DgJb9u9d.js +1 -0
  633. package/web/index.html +52 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-linux.d.ts","sourceRoot":"","sources":["../../src/cli/service-linux.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,eAAO,MAAM,WAAW,oBAAoB,CAAC;AAC7C,eAAO,MAAM,WAAW,6BAA6B,CAAC;AAEtD,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;OAMG;IACH,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;CACrC;AAoBD,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAiChD;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE;QACH,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;YAAE,SAAS,EAAE,OAAO,CAAA;SAAE,KAAK,IAAI,CAAC;QAC9D,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QACpD,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;QACpC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,KAAK,IAAI,CAAC;QACxD,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;KACpC,CAAC;IACF,KAAK,CAAC,EAAE,CACN,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,KACX;QAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,cAAc,CA6YzE"}
@@ -0,0 +1,412 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import { existsSync as realExistsSync, mkdirSync as realMkdirSync, readFileSync as realReadFileSync, rmSync as realRmSync, writeFileSync as realWriteFileSync, } from "node:fs";
3
+ import { homedir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { resolveDaemonPaths } from "../pty/host-daemon/paths.js";
6
+ import { waitForDaemonSocket } from "../pty/host-daemon/socket-ready.js";
7
+ export const SERVER_UNIT = "parasor.service";
8
+ export const DAEMON_UNIT = "parasor-pty-host.service";
9
+ function escapeSystemdEnvValue(v) {
10
+ /*
11
+ * systemd Environment= values are double-quoted strings. Backslash and
12
+ * double-quote must be escaped; newlines are illegal inside quoted
13
+ * values and must be rejected (not silently stripped -- the unit would
14
+ * fail to load with a confusing "Failed to parse environment line"
15
+ * error). PATH/HOME never contain these in practice, but harden the
16
+ * code path so a stray characters in custom env do not produce a
17
+ * malformed unit file.
18
+ */
19
+ if (v.includes("\n") || v.includes("\r")) {
20
+ throw new Error(`service install: environment value contains a newline (rejected by systemd): ${JSON.stringify(v)}`);
21
+ }
22
+ return v.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
23
+ }
24
+ export function renderUnit(p) {
25
+ const envLines = Object.entries(p.env)
26
+ .map(([k, v]) => `Environment="${k}=${escapeSystemdEnvValue(v)}"`)
27
+ .join("\n");
28
+ const after = p.after ?? "network.target";
29
+ const notifyBlock = p.notify === false ? "Type=simple" : "Type=notify\nWatchdogSec=30";
30
+ const restart = p.restartOnAlways
31
+ ? "Restart=always\nRestartSec=2"
32
+ : "Restart=on-failure\nRestartSec=3";
33
+ const killMode = p.killModeMixed ? "KillMode=mixed\nTimeoutStopSec=10\n" : "";
34
+ const startLimitBlock = p.unlimitedStartRate
35
+ ? "\nStartLimitIntervalSec=0\nStartLimitBurst=0"
36
+ : "";
37
+ const preventBlock = p.restartPreventExitStatus && p.restartPreventExitStatus.length > 0
38
+ ? `RestartPreventExitStatus=${p.restartPreventExitStatus.join(" ")}\n`
39
+ : "";
40
+ return `[Unit]
41
+ Description=${p.description}
42
+ After=${after}${startLimitBlock}
43
+
44
+ [Service]
45
+ ${notifyBlock}
46
+ ExecStart=${p.node} ${p.bin}
47
+ ${restart}
48
+ ${preventBlock}${killMode}StandardOutput=append:${p.stdoutLog}
49
+ StandardError=append:${p.stderrLog}
50
+ ${envLines}
51
+
52
+ [Install]
53
+ WantedBy=default.target
54
+ `;
55
+ }
56
+ export function createLinuxAdapter(deps) {
57
+ const home = deps.home ?? homedir();
58
+ const configDir = deps.configDir ?? join(home, ".config", "parasor");
59
+ const execPath = deps.execPath ?? process.execPath;
60
+ const fs = deps.fs ?? {
61
+ mkdirSync: (p, o) => realMkdirSync(p, { recursive: true, ...o }),
62
+ writeFileSync: realWriteFileSync,
63
+ readFileSync: (p) => realReadFileSync(p, "utf8"),
64
+ rmSync: (p, o) => realRmSync(p, { force: true, ...o }),
65
+ existsSync: realExistsSync,
66
+ };
67
+ const spawn = deps.spawn ??
68
+ ((cmd, args) => {
69
+ const r = spawnSync(cmd, args, { encoding: "utf8" });
70
+ return {
71
+ status: r.status,
72
+ stdout: r.stdout ?? "",
73
+ stderr: r.stderr ?? "",
74
+ };
75
+ });
76
+ const log = deps.log ?? ((m) => console.log(m));
77
+ const daemonPaths = resolveDaemonPaths();
78
+ // R1/R2 -- default to the real poll when no spawn mock is
79
+ // injected (production path). Tests inject both `spawn` and `waitFn`; the
80
+ // `deps.spawn` gate ensures existing tests that supply a mock spawn but omit
81
+ // `waitFn` get a no-op instead of a live 5 s poll against a non-existent socket.
82
+ const waitFn = deps.waitFn ??
83
+ (deps.spawn
84
+ ? (_socketPath) => Promise.resolve()
85
+ : waitForDaemonSocket);
86
+ const unitDir = join(home, ".config", "systemd", "user");
87
+ const serverUnitPath = join(unitDir, SERVER_UNIT);
88
+ const daemonUnitPath = join(unitDir, DAEMON_UNIT);
89
+ const serverStdoutLog = join(configDir, "service.log");
90
+ const serverStderrLog = join(configDir, "service.err.log");
91
+ const daemonStdoutLog = join(configDir, "pty-host.out.log");
92
+ const daemonStderrLog = join(configDir, "pty-host.err.log");
93
+ function basePathEnv() {
94
+ return ["/usr/local/bin", "/usr/bin", "/bin", process.env.PATH ?? ""]
95
+ .filter(Boolean)
96
+ .join(":");
97
+ }
98
+ function buildServerUnitBody() {
99
+ /*
100
+ * Service install is the canonical
101
+ * supervisor path, so the server unit is wired for daemon mode by
102
+ * default. PARASOR_PTY_DAEMON=1 makes the server connect to the
103
+ * daemon socket instead of running PTYs in-process;
104
+ * PARASOR_PTY_AUTOSTART=0 stops it from forking a competing daemon
105
+ * because systemd already owns one (parasor-pty-host.service).
106
+ */
107
+ const env = {
108
+ HOME: home,
109
+ PATH: basePathEnv(),
110
+ PARASOR_PTY_DAEMON: "1",
111
+ PARASOR_PTY_AUTOSTART: "0",
112
+ };
113
+ return renderUnit({
114
+ description: "parasor terminal multiplexer",
115
+ node: execPath,
116
+ bin: deps.binPath,
117
+ stdoutLog: serverStdoutLog,
118
+ stderrLog: serverStderrLog,
119
+ env,
120
+ });
121
+ }
122
+ function writeServerUnit() {
123
+ fs.mkdirSync(unitDir, { recursive: true });
124
+ fs.mkdirSync(configDir, { recursive: true });
125
+ fs.writeFileSync(serverUnitPath, buildServerUnitBody());
126
+ }
127
+ function buildDaemonUnitBody() {
128
+ const env = {
129
+ HOME: home,
130
+ PATH: basePathEnv(),
131
+ };
132
+ return renderUnit({
133
+ description: "parasor PTY host daemon",
134
+ node: execPath,
135
+ bin: deps.daemonEntryPath,
136
+ stdoutLog: daemonStdoutLog,
137
+ stderrLog: daemonStderrLog,
138
+ env,
139
+ after: "default.target",
140
+ notify: false,
141
+ restartOnAlways: true,
142
+ killModeMixed: true,
143
+ unlimitedStartRate: true,
144
+ restartPreventExitStatus: [2],
145
+ });
146
+ }
147
+ function writeDaemonUnit() {
148
+ fs.mkdirSync(unitDir, { recursive: true });
149
+ fs.mkdirSync(configDir, { recursive: true });
150
+ fs.writeFileSync(daemonUnitPath, buildDaemonUnitBody());
151
+ }
152
+ function daemonReload() {
153
+ spawn("systemctl", ["--user", "daemon-reload"]);
154
+ }
155
+ function enableNow(unit) {
156
+ return spawn("systemctl", ["--user", "enable", "--now", unit]);
157
+ }
158
+ function disableNow(unit) {
159
+ return spawn("systemctl", ["--user", "disable", "--now", unit]);
160
+ }
161
+ function restartUnit(unit) {
162
+ return spawn("systemctl", ["--user", "restart", unit]);
163
+ }
164
+ function snapshotIfExists(path) {
165
+ if (!fs.existsSync(path))
166
+ return null;
167
+ try {
168
+ return fs.readFileSync(path);
169
+ }
170
+ catch {
171
+ // If we cannot snapshot, treat the prior content as unrecoverable.
172
+ // The install path will still proceed; rollback simply degrades to
173
+ // "remove the unit we wrote" instead of "restore prior contents".
174
+ return null;
175
+ }
176
+ }
177
+ function restoreSnapshot(path, content) {
178
+ if (content === null) {
179
+ fs.rmSync(path, { force: true });
180
+ return;
181
+ }
182
+ fs.writeFileSync(path, content);
183
+ }
184
+ async function install() {
185
+ /*
186
+ * Order matters: bring the daemon up first so its socket is available
187
+ * when the server starts. If the server starts first, it will try to
188
+ * connect to a non-existent daemon socket and (per host.ts) error out
189
+ * because PARASOR_PTY_AUTOSTART=0 prevents fallback spawning.
190
+ *
191
+ * Idempotent re-install: write the unit file, daemon-reload to pick up
192
+ * the new contents, enable --now (no-op if already enabled), then
193
+ * restart explicitly. systemd does not auto-restart units when their
194
+ * unit file changes -- without the explicit restart, the new env
195
+ * variables would only take effect after a manual restart or reboot.
196
+ *
197
+ * Backup-and-restore: snapshot prior unit contents before overwrite so
198
+ * that a failed reinstall can revert the file (and reload systemd) to
199
+ * the user's last working state instead of leaving a corrupted unit
200
+ * on disk and a dead daemon. Without this, a botched reinstall
201
+ * (typo'd env value, broken binary path) destroys the user's working
202
+ * supervisor with no automatic recovery.
203
+ */
204
+ /*
205
+ * Idempotent re-install: when the rendered unit is byte-identical to
206
+ * what is already on disk, skip daemon-reload + restart. systemd's
207
+ * `restart` would kill the running daemon and re-launch it -- that
208
+ * tears down every PTY child it owns. By skipping when nothing
209
+ * changed, an `npm` style update that re-runs `parasor service
210
+ * install` preserves the long-lived daemon and its sessions.
211
+ * `enable --now` is still called so a previously disabled or dead
212
+ * daemon does come up; it is a no-op when the unit is already
213
+ * enabled and active.
214
+ */
215
+ const priorDaemonUnit = snapshotIfExists(daemonUnitPath);
216
+ const daemonExisted = priorDaemonUnit !== null;
217
+ const newDaemonUnit = buildDaemonUnitBody();
218
+ const daemonUnchanged = daemonExisted && priorDaemonUnit === newDaemonUnit;
219
+ if (!daemonUnchanged) {
220
+ writeDaemonUnit();
221
+ daemonReload();
222
+ }
223
+ const der = enableNow(DAEMON_UNIT);
224
+ if (der.status !== 0) {
225
+ // Roll back to prior contents (or remove if there were none) so the
226
+ // user's previous working daemon is not destroyed by a failed
227
+ // reinstall. daemonReload picks up the restored file.
228
+ if (!daemonUnchanged) {
229
+ restoreSnapshot(daemonUnitPath, priorDaemonUnit);
230
+ daemonReload();
231
+ }
232
+ throw new Error(`systemctl enable (pty-host) failed (${der.status}): ${der.stderr || der.stdout}` +
233
+ (daemonExisted ? " (rolled back to prior daemon unit)" : ""));
234
+ }
235
+ if (daemonExisted && !daemonUnchanged) {
236
+ const rr = restartUnit(DAEMON_UNIT);
237
+ if (rr.status !== 0) {
238
+ // Restore prior unit + reload + restart to return to the user's
239
+ // last working state. Best-effort: if even the restart of the
240
+ // restored unit fails, we surface both failures.
241
+ restoreSnapshot(daemonUnitPath, priorDaemonUnit);
242
+ daemonReload();
243
+ const recover = restartUnit(DAEMON_UNIT);
244
+ const recoverNote = recover.status === 0
245
+ ? "rolled back to prior daemon unit"
246
+ : `rollback restart also failed (${recover.status}): ${recover.stderr || recover.stdout}`;
247
+ throw new Error(`systemctl restart (pty-host) failed (${rr.status}): ${rr.stderr || rr.stdout} (${recoverNote})`);
248
+ }
249
+ }
250
+ if (daemonUnchanged) {
251
+ log(`unchanged: ${daemonUnitPath} (skipped reload)`);
252
+ }
253
+ else {
254
+ log(`installed: ${daemonUnitPath}`);
255
+ }
256
+ log(`daemon logs: ${daemonStdoutLog}`);
257
+ // R1 -- wait for the daemon socket to become ready
258
+ // before enabling the server unit. The server requires the daemon socket
259
+ // immediately (PARASOR_PTY_AUTOSTART=0, so no fallback spawn).
260
+ await waitFn(daemonPaths.socketPath);
261
+ const priorServerUnit = snapshotIfExists(serverUnitPath);
262
+ const serverExisted = priorServerUnit !== null;
263
+ const newServerUnit = buildServerUnitBody();
264
+ const serverUnchanged = serverExisted && priorServerUnit === newServerUnit;
265
+ if (!serverUnchanged) {
266
+ writeServerUnit();
267
+ daemonReload();
268
+ }
269
+ const sr = enableNow(SERVER_UNIT);
270
+ if (sr.status !== 0) {
271
+ // Server bootstrap failed -- roll back the server unit to its prior
272
+ // contents (or remove). The daemon stays as it was at function
273
+ // entry: if it pre-existed and we successfully reinstalled, it
274
+ // remains installed; if it was freshly installed in this call, we
275
+ // also roll it back to "not installed" so the user is not left with
276
+ // a half-installed pair they did not have before.
277
+ restoreSnapshot(serverUnitPath, priorServerUnit);
278
+ if (!daemonExisted) {
279
+ disableNow(DAEMON_UNIT);
280
+ fs.rmSync(daemonUnitPath, { force: true });
281
+ }
282
+ else {
283
+ restoreSnapshot(daemonUnitPath, priorDaemonUnit);
284
+ }
285
+ daemonReload();
286
+ throw new Error(`systemctl enable (server) failed (${sr.status}): ${sr.stderr || sr.stdout}. ` +
287
+ (daemonExisted
288
+ ? "Rolled back server unit; daemon left in prior state."
289
+ : "Rolled back daemon unit; nothing remains installed."));
290
+ }
291
+ if (serverExisted && !serverUnchanged) {
292
+ const rr = restartUnit(SERVER_UNIT);
293
+ if (rr.status !== 0) {
294
+ restoreSnapshot(serverUnitPath, priorServerUnit);
295
+ daemonReload();
296
+ const recover = restartUnit(SERVER_UNIT);
297
+ const recoverNote = recover.status === 0
298
+ ? "rolled back to prior server unit"
299
+ : `rollback restart also failed (${recover.status}): ${recover.stderr || recover.stdout}`;
300
+ throw new Error(`systemctl restart (server) failed (${rr.status}): ${rr.stderr || rr.stdout} (${recoverNote})`);
301
+ }
302
+ }
303
+ if (serverUnchanged) {
304
+ log(`unchanged: ${serverUnitPath} (skipped reload)`);
305
+ }
306
+ else {
307
+ log(`installed: ${serverUnitPath}`);
308
+ }
309
+ log(`server logs: ${serverStdoutLog}`);
310
+ }
311
+ async function uninstall() {
312
+ let removed = false;
313
+ const warnings = [];
314
+ // Remove server first so it cannot reconnect to a daemon we are
315
+ // about to kill (which would surface as a UI "PTY host disconnected"
316
+ // banner during uninstall).
317
+ if (fs.existsSync(serverUnitPath)) {
318
+ const dr = disableNow(SERVER_UNIT);
319
+ if (dr.status !== 0) {
320
+ // Surface the failure but continue: the unit file removal below
321
+ // is the user-visible "uninstall" action. A leftover enabled
322
+ // symlink will be cleaned by daemon-reload + the missing unit.
323
+ const detail = (dr.stderr || dr.stdout).trim();
324
+ warnings.push(`systemctl disable (server) returned ${dr.status}${detail ? `: ${detail}` : ""}`);
325
+ }
326
+ fs.rmSync(serverUnitPath, { force: true });
327
+ log(`uninstalled: ${serverUnitPath}`);
328
+ removed = true;
329
+ }
330
+ if (fs.existsSync(daemonUnitPath)) {
331
+ const dr = disableNow(DAEMON_UNIT);
332
+ if (dr.status !== 0) {
333
+ const detail = (dr.stderr || dr.stdout).trim();
334
+ warnings.push(`systemctl disable (pty-host) returned ${dr.status}${detail ? `: ${detail}` : ""}`);
335
+ }
336
+ fs.rmSync(daemonUnitPath, { force: true });
337
+ log(`uninstalled: ${daemonUnitPath}`);
338
+ removed = true;
339
+ }
340
+ if (removed)
341
+ daemonReload();
342
+ else
343
+ log("not installed; nothing to do");
344
+ for (const w of warnings)
345
+ log(`warning: ${w}`);
346
+ }
347
+ function reportUnit(label, unitPath, unit) {
348
+ const installed = fs.existsSync(unitPath);
349
+ if (!installed) {
350
+ log(`${label}: not installed`);
351
+ return;
352
+ }
353
+ const active = spawn("systemctl", ["--user", "is-active", unit]);
354
+ const enabled = spawn("systemctl", ["--user", "is-enabled", unit]);
355
+ log(`${label}: installed`);
356
+ log(` active: ${active.stdout.trim()}`);
357
+ log(` enabled: ${enabled.stdout.trim()}`);
358
+ log(` unit: ${unitPath}`);
359
+ }
360
+ async function status() {
361
+ reportUnit("pty-host", daemonUnitPath, DAEMON_UNIT);
362
+ log(`daemon logs: ${daemonStdoutLog}`);
363
+ reportUnit("server", serverUnitPath, SERVER_UNIT);
364
+ log(`server logs: ${serverStdoutLog}`);
365
+ }
366
+ async function restart(opts) {
367
+ let kicked = false;
368
+ // Daemon kick is opt-in . says PTY lifetime
369
+ // is decoupled from server lifetime so live sessions survive a
370
+ // server restart. Restarting the daemon terminates every PTY, so
371
+ // it is reserved for `--all` (binary upgrade scenarios where the
372
+ // daemon code itself changed). Order: daemon first when both --
373
+ // if the server kicks before the daemon is back up and
374
+ // PARASOR_PTY_AUTOSTART=0 (it is), the server fails to connect
375
+ // and crash-loops until systemd brings the daemon back.
376
+ if (opts.all && fs.existsSync(daemonUnitPath)) {
377
+ const r = restartUnit(DAEMON_UNIT);
378
+ if (r.status !== 0) {
379
+ throw new Error(`systemctl restart (pty-host) failed (${r.status}): ${r.stderr || r.stdout}`);
380
+ }
381
+ log(`restarted: ${DAEMON_UNIT}`);
382
+ kicked = true;
383
+ // R2 -- wait for the daemon socket to become ready
384
+ // before restarting the server. Without this the server connects before
385
+ // the daemon socket is bound and crash-loops with ECONNREFUSED.
386
+ await waitFn(daemonPaths.socketPath);
387
+ }
388
+ if (fs.existsSync(serverUnitPath)) {
389
+ const r = restartUnit(SERVER_UNIT);
390
+ if (r.status !== 0) {
391
+ throw new Error(`systemctl restart (server) failed (${r.status}): ${r.stderr || r.stdout}`);
392
+ }
393
+ log(`restarted: ${SERVER_UNIT}`);
394
+ kicked = true;
395
+ }
396
+ if (!kicked)
397
+ log("nothing installed; nothing to restart");
398
+ }
399
+ async function logs(opts) {
400
+ const cmd = opts.follow
401
+ ? ["tail", "-f", serverStdoutLog]
402
+ : ["cat", serverStdoutLog];
403
+ const [command, ...args] = cmd;
404
+ const r = spawn(command, args);
405
+ if (r.stdout)
406
+ process.stdout.write(r.stdout);
407
+ if (r.stderr)
408
+ process.stderr.write(r.stderr);
409
+ }
410
+ return { install, uninstall, status, restart, logs };
411
+ }
412
+ //# sourceMappingURL=service-linux.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-linux.js","sourceRoot":"","sources":["../../src/cli/service-linux.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ export interface ServiceAdapter {
2
+ install(): Promise<void>;
3
+ uninstall(): Promise<void>;
4
+ status(): Promise<void>;
5
+ /**
6
+ * Restart installed units. Default scope is the server unit only --
7
+ * the PTY host daemon owns running sessions
8
+ * and kicking it terminates every PTY, defeating the daemon-mode
9
+ * promise. Pass `all: true` for binary-upgrade scenarios where the
10
+ * daemon code itself changed.
11
+ */
12
+ restart(opts: {
13
+ all: boolean;
14
+ }): Promise<void>;
15
+ logs(opts: {
16
+ follow: boolean;
17
+ }): Promise<void>;
18
+ }
19
+ export interface CliServiceOptions {
20
+ platform: NodeJS.Platform | string;
21
+ adapter: ServiceAdapter;
22
+ /** restart confirmation -- version-mismatch probe + confirmation. Injected for tests. */
23
+ confirmRestart?: (opts: {
24
+ autoYes: boolean;
25
+ }) => Promise<{
26
+ proceed: boolean;
27
+ reason: string;
28
+ }>;
29
+ }
30
+ export declare function cliService(args: string[], opts?: CliServiceOptions): Promise<void>;
31
+ export declare function resolveBinPath(): string;
32
+ export declare function resolveDaemonEntryPath(): string;
33
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/cli/service.ts"],"names":[],"mappings":"AA0BA,MAAM,WAAW,cAAc;IAC7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB;;;;;;OAMG;IACH,OAAO,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC;IACnC,OAAO,EAAE,cAAc,CAAC;IACxB,yFAAyF;IACzF,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE;QACtB,OAAO,EAAE,OAAO,CAAC;KAClB,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AA0BD,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,CAAC,EAAE,iBAAiB,GACvB,OAAO,CAAC,IAAI,CAAC,CAmDf;AASD,wBAAgB,cAAc,IAAI,MAAM,CAIvC;AAUD,wBAAgB,sBAAsB,IAAI,MAAM,CAW/C"}
@@ -0,0 +1,133 @@
1
+ import { existsSync, realpathSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { confirmRestartIfMismatch, extractAutoYesFlag, } from "./restart-confirm.js";
5
+ const HELP = `Usage: parasor service <subcommand>
6
+
7
+ Manage parasor as a long-running service (LaunchAgent on macOS,
8
+ systemd user unit on Linux). Install always
9
+ provisions both the server unit and the PTY host daemon unit so the OS
10
+ supervisor restarts each independently and PTY sessions survive server
11
+ crashes.
12
+
13
+ Subcommands:
14
+ install Register parasor + parasor-pty-host at login + on crash
15
+ uninstall Stop and unregister whichever units are present
16
+ status Show installed / running / pid for each unit
17
+ restart [--all] [--yes|-y]
18
+ Restart the server unit. By default the PTY host daemon
19
+ is left running so live sessions survive -- pass --all to
20
+ also kick the daemon (binary upgrade scenarios). When the
21
+ new server binary speaks a PROTOCOL_VERSION incompatible
22
+ with the running daemon, the boot-side recovery path will
23
+ SIGKILL the daemon and every active PTY; this command
24
+ prompts for acknowledgement first. Pass --yes / -y to
25
+ skip the prompt (required in non-interactive contexts).
26
+ logs [-f] Print or follow the server log file
27
+ --help Show this message`;
28
+ export async function cliService(args, opts) {
29
+ const sub = args[0];
30
+ if (!sub || sub === "--help" || sub === "-h") {
31
+ console.log(HELP);
32
+ return;
33
+ }
34
+ const flags = args.slice(1);
35
+ const resolved = opts ?? (await resolveDefaults());
36
+ if (resolved.platform !== "darwin" && resolved.platform !== "linux") {
37
+ throw new Error("parasor service: unsupported platform -- service management is " +
38
+ "available on macOS and Linux only.");
39
+ }
40
+ switch (sub) {
41
+ case "install":
42
+ await resolved.adapter.install();
43
+ return;
44
+ case "uninstall":
45
+ await resolved.adapter.uninstall();
46
+ return;
47
+ case "status":
48
+ await resolved.adapter.status();
49
+ return;
50
+ case "restart": {
51
+ const { autoYes, rest } = extractAutoYesFlag(flags);
52
+ const all = rest.includes("--all");
53
+ const confirm = resolved.confirmRestart ?? confirmRestartIfMismatch;
54
+ const confirmation = await confirm({ autoYes });
55
+ if (!confirmation.proceed) {
56
+ process.stderr.write(`parasor service: restart aborted -- ${confirmation.reason}.\n`);
57
+ return;
58
+ }
59
+ await resolved.adapter.restart({ all });
60
+ return;
61
+ }
62
+ case "logs":
63
+ await resolved.adapter.logs({ follow: flags.includes("-f") });
64
+ return;
65
+ default:
66
+ throw new Error(`parasor service: unknown subcommand '${sub}'. Run 'parasor service --help' for usage.`);
67
+ }
68
+ }
69
+ /*
70
+ * Resolve the absolute, symlink-free path to the parasor executable that
71
+ * invoked us. LaunchAgent/systemd units must reference the stable on-disk
72
+ * path rather than the Homebrew/npm-global symlink in PATH, because the
73
+ * symlink may be overwritten during an npm update while the service is
74
+ * registered.
75
+ */
76
+ export function resolveBinPath() {
77
+ const arg = process.argv[1];
78
+ if (!arg)
79
+ throw new Error("process.argv[1] is unset");
80
+ return realpathSync(arg);
81
+ }
82
+ /*
83
+ * Resolve the daemon entry script path. Mirrors pty-host.ts
84
+ * defaultEntryPath: dist/server/cli/service.js -> ../pty/host-daemon/entry.js.
85
+ * Falls back to the .ts source for dev trees without `pnpm build`.
86
+ * Throws if neither exists -- that means the install would write a unit
87
+ * pointing at a non-existent file, which fails silently at supervisor
88
+ * boot and is hard to diagnose. Fail fast at install time instead.
89
+ */
90
+ export function resolveDaemonEntryPath() {
91
+ const here = fileURLToPath(import.meta.url);
92
+ const compiled = join(here, "..", "..", "pty", "host-daemon", "entry.js");
93
+ if (existsSync(compiled))
94
+ return compiled;
95
+ const tsFallback = `${compiled.slice(0, -3)}.ts`;
96
+ if (existsSync(tsFallback))
97
+ return tsFallback;
98
+ throw new Error(`parasor service: could not locate the PTY host daemon entry script. ` +
99
+ `Looked at: ${compiled} (compiled), ${tsFallback} (dev fallback). ` +
100
+ `This is a build packaging bug -- run \`pnpm build\` or reinstall the package.`);
101
+ }
102
+ async function resolveDefaults() {
103
+ const platform = process.platform;
104
+ const binPath = resolveBinPath();
105
+ const daemonEntryPath = resolveDaemonEntryPath();
106
+ if (platform === "darwin") {
107
+ const { createDarwinAdapter } = await import("./service-darwin.js");
108
+ return {
109
+ platform,
110
+ adapter: createDarwinAdapter({ binPath, daemonEntryPath }),
111
+ };
112
+ }
113
+ if (platform === "linux") {
114
+ const { createLinuxAdapter } = await import("./service-linux.js");
115
+ return {
116
+ platform,
117
+ adapter: createLinuxAdapter({ binPath, daemonEntryPath }),
118
+ };
119
+ }
120
+ return {
121
+ platform,
122
+ // unreachable: cliService will throw before touching the adapter
123
+ adapter: noopAdapter,
124
+ };
125
+ }
126
+ const noopAdapter = {
127
+ install: async () => { },
128
+ uninstall: async () => { },
129
+ status: async () => { },
130
+ restart: async (_opts) => { },
131
+ logs: async () => { },
132
+ };
133
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/cli/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ export interface ShimPaths {
2
+ binDir: string;
3
+ bashRcPath: string;
4
+ realOpen: string | null;
5
+ realXdgOpen: string | null;
6
+ zshDotdir: string;
7
+ }
8
+ export declare function installShims(configDir: string): ShimPaths;
9
+ export declare function buildCodexEventBridge(): string;
10
+ export declare function buildCodexNotifyBridge(): string;
11
+ /**
12
+ * Build the posix-shell source of the Claude Code hook bridge. Reads a
13
+ * Claude Code hook payload on stdin, extracts the event name (plus a
14
+ * payload-driven discriminator for PreToolUse/Notification), and POSTs
15
+ * the normalized {sessionId, agent, event} triple to the loopback
16
+ * /hook/notify endpoint. Always exits 0 so a hook failure never breaks
17
+ * the agent. Returns inline so the script content can be unit-tested.
18
+ *
19
+ * Why this is a separate file and not inlined into the wrapper's hooks
20
+ * JSON: hook commands are a single argv[0], not a shell snippet, and
21
+ * embedding multi-line shell into JSON is illegible. Keeping it in its
22
+ * own file under the shim binDir also lets users inspect what they're
23
+ * running.
24
+ */
25
+ export declare function buildClaudeHookBridge(): string;
26
+ /**
27
+ * Build the bash source of the claude wrapper. Inline so it can read the
28
+ * shim binDir at install time and avoid self-reference loops.
29
+ */
30
+ export declare function buildClaudeWrapper(binDir: string, hookScriptPath: string): string;
31
+ export declare function buildCodexWrapper(binDir: string, eventScriptPath: string, notifyScriptPath: string): string;
32
+ export declare function buildParasorZshEnv(binDir: string): string;
33
+ export declare function buildParasorZshRc(binDir: string): string;
34
+ export declare function buildParasorBashRc(binDir: string): string;
35
+ //# sourceMappingURL=shim-installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shim-installer.d.ts","sourceRoot":"","sources":["../../src/cli/shim-installer.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAiFzD;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAqC9C;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAkD/C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CA0F9C;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,GACrB,MAAM,CAqIR;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CA0MR;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOzD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAgBxD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAgBzD"}