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,648 @@
1
+ import { Buffer } from "node:buffer";
2
+ import { decodeGenerationStreamPayload, encodeGenerationStreamPayload, encodeStreamPayload, FrameType, } from "../host-protocol/frames.js";
3
+ import { decodeJsonPayload, encodeJsonPayload, isCompatibleVersion, PROTOCOL_VERSION, } from "../host-protocol/messages.js";
4
+ import { ServerConnection } from "./server-connection.js";
5
+ export class PtyHostDaemon {
6
+ host;
7
+ store;
8
+ daemonPid;
9
+ daemonStartedAt;
10
+ currentServer = null;
11
+ nextConnectionId = 1;
12
+ nextGeneration = 1n;
13
+ disposed = false;
14
+ /*
15
+ * -- in-flight host operations (CREATE_REQ /
16
+ * RESTART_REQ / DISPOSE_REQ / DISPOSE_ALL_REQ / INIT_CLIENT_REQ) hold
17
+ * Promises whose `.then`/`.catch` handlers run on the microtask queue
18
+ * after `dispose()` has already flagged shutdown. If we tear the host
19
+ * down (`shutdownAll`) before those handlers settle, a CREATE that
20
+ * raced just before SIGTERM will spawn its PTY and persist its
21
+ * SessionRecord *after* shutdownAll has stamped every other session
22
+ * "ended", leaving an orphan. We track every host-call chain and
23
+ * `drain()` waits for them all to settle so bootstrap can sequence
24
+ * shutdownAll -> flush -> marker -> destroy without that race.
25
+ */
26
+ inFlight = new Set();
27
+ constructor(deps) {
28
+ this.host = deps.host;
29
+ this.store = deps.store ?? null;
30
+ this.daemonPid = deps.daemonPid ?? process.pid;
31
+ this.daemonStartedAt = deps.daemonStartedAt ?? new Date().toISOString();
32
+ /*
33
+ * Single global subscription on the engine. The daemon broadcasts to
34
+ * the *current* server only -- there is at most one. Per-client fan-
35
+ * out (INIT_CLIENT_REQ tagging different clientIds) is a server-side
36
+ * concern; daemon-side every server attach is one logical client of
37
+ * the engine, distinguished only by its server-supplied clientId.
38
+ */
39
+ this.host.onSessionData((sessionId, data, generation) => {
40
+ // PTY generation gate: tag DATA frames with the producing PTY's generation so
41
+ // the remote-side WS layer can echo it back on INPUT and the
42
+ // daemon-side `handleWrite` gate can drop stale input.
43
+ this.broadcastDataStream(sessionId, data, generation);
44
+ });
45
+ this.host.onSessionInput((sessionId, data) => {
46
+ this.broadcastStream(FrameType.SESSION_INPUT, sessionId, data);
47
+ });
48
+ this.host.onSessionExit = (sessionId, sessionGeneration, endReason) => {
49
+ this.broadcastJson(FrameType.SESSION_EXIT, 0, {
50
+ sessionId,
51
+ sessionGeneration,
52
+ endReason,
53
+ });
54
+ };
55
+ }
56
+ /**
57
+ * Hand the daemon a freshly-accepted IPC socket. The peer is expected
58
+ * to send HELLO as its first frame; until then the connection sits in
59
+ * `awaiting-hello` and is not yet considered current.
60
+ *
61
+ * Eviction is deferred to HELLO time so that a probe connect (e.g. the
62
+ * server's startup health check) doesn't kick off the previous current.
63
+ */
64
+ acceptConnection(socket) {
65
+ if (this.disposed) {
66
+ socket.end();
67
+ throw new Error("PtyHostDaemon.acceptConnection: daemon disposed");
68
+ }
69
+ const conn = new ServerConnection({
70
+ socket,
71
+ connectionId: this.nextConnectionId++,
72
+ generation: this.nextGeneration++,
73
+ onFrame: (c, frame) => this.handleFrame(c, frame),
74
+ onClose: (c) => this.handleConnectionClosed(c),
75
+ });
76
+ return conn;
77
+ }
78
+ /**
79
+ * Stop accepting frames and evict the current peer with a shutdown
80
+ * NACK so it knows not to try to reconnect. Does NOT terminate the
81
+ * underlying PtyHost -- that's the caller's call (see by design
82
+ * the in-process vs daemon-mode shutdown semantics divergence).
83
+ */
84
+ dispose() {
85
+ if (this.disposed)
86
+ return;
87
+ this.disposed = true;
88
+ if (this.currentServer) {
89
+ this.currentServer.evict("daemon-shutting-down", "daemon is shutting down");
90
+ this.currentServer = null;
91
+ }
92
+ }
93
+ /**
94
+ * Wait for every host-call chain currently in flight to settle. Caller
95
+ * (bootstrap.shutdown) runs this between `dispose()` and `host.shutdownAll()`
96
+ * so a CREATE that won the race against SIGTERM finishes its persist
97
+ * step before shutdownAll iterates `this.sessions`. New frames are
98
+ * already blocked at this point: `dispose()` evicts the current peer
99
+ * and the listening sockets are closed in bootstrap before drain runs,
100
+ * so `inFlight` is monotonically shrinking.
101
+ *
102
+ * Bounded by `timeoutMs` (default 3s) so a hung host call (network
103
+ * filesystem stall, disk timeout) cannot block the entire shutdown
104
+ * path -- `shutdownAll`, marker write, and lock release all need to
105
+ * run for the user to recover (). On timeout
106
+ * the pending chains keep running but are no longer awaited; they
107
+ * will settle against a destroyed store and best-effort log the loss.
108
+ * Returns `true` when fully drained, `false` on timeout.
109
+ */
110
+ async drain(timeoutMs = 3000) {
111
+ if (this.inFlight.size === 0)
112
+ return true;
113
+ const all = Promise.allSettled([...this.inFlight]).then(() => true);
114
+ let timer;
115
+ const timeout = new Promise((resolve) => {
116
+ timer = setTimeout(() => resolve(false), timeoutMs);
117
+ });
118
+ try {
119
+ return await Promise.race([all, timeout]);
120
+ }
121
+ finally {
122
+ if (timer !== undefined)
123
+ clearTimeout(timer);
124
+ }
125
+ }
126
+ /**
127
+ * Track a host-call chain (the full Promise including its `.then`/`.catch`
128
+ * handlers, not just the host's underlying Promise). Removes itself on
129
+ * settle so the `Set` does not leak.
130
+ */
131
+ track(promise) {
132
+ this.inFlight.add(promise);
133
+ const cleanup = () => {
134
+ this.inFlight.delete(promise);
135
+ };
136
+ promise.then(cleanup, cleanup);
137
+ }
138
+ // --- frame dispatcher ---
139
+ handleFrame(conn, frame) {
140
+ if (frame.type === FrameType.HELLO) {
141
+ this.handleHello(conn, frame);
142
+ return;
143
+ }
144
+ if (conn.getState() !== "ready") {
145
+ conn.evict("handshake-required", "frame received before HELLO");
146
+ return;
147
+ }
148
+ if (frame.connectionId !== conn.connectionId ||
149
+ frame.generation !== conn.generation) {
150
+ // Peer is sending stale/forged headers. Drop the connection -- we
151
+ // can't trust anything more from it.
152
+ conn.evict("frame-invalid", "header epoch mismatch");
153
+ return;
154
+ }
155
+ /*
156
+ * Stage-1 fence (by design): is the *connection itself* still the
157
+ * current one? If a newer peer has already taken over, drop the
158
+ * frame silently. The previous peer was already NACKed `evicted`
159
+ * when it lost its slot.
160
+ */
161
+ if (this.currentServer !== conn)
162
+ return;
163
+ try {
164
+ this.dispatchReady(conn, frame);
165
+ }
166
+ catch (err) {
167
+ const message = err instanceof Error ? err.message : String(err);
168
+ this.replyNack(conn, frame.requestId, "internal-error", message);
169
+ }
170
+ }
171
+ handleHello(conn, frame) {
172
+ let payload;
173
+ try {
174
+ payload = decodeJsonPayload(frame.payload);
175
+ }
176
+ catch (err) {
177
+ const message = err instanceof Error ? err.message : "invalid HELLO json";
178
+ conn.evict("frame-invalid", message);
179
+ return;
180
+ }
181
+ if (!isCompatibleVersion(payload.protocolVersion, PROTOCOL_VERSION)) {
182
+ conn.evict("version-mismatch", `server ${payload.protocolVersion} not compatible with daemon ${PROTOCOL_VERSION}`);
183
+ return;
184
+ }
185
+ // Evict the previous current -- but only now, after we've decided we
186
+ // accept this one. A malformed HELLO would have failed above, leaving
187
+ // any prior current intact.
188
+ if (this.currentServer && this.currentServer !== conn) {
189
+ this.currentServer.evict("evicted", "superseded by newer server");
190
+ }
191
+ this.currentServer = conn;
192
+ conn.markReady();
193
+ const ack = {
194
+ protocolVersion: PROTOCOL_VERSION,
195
+ connectionId: conn.connectionId,
196
+ generation: conn.generation.toString(),
197
+ daemonPid: this.daemonPid,
198
+ daemonStartedAt: this.daemonStartedAt,
199
+ };
200
+ conn.send({
201
+ type: FrameType.HELLO_ACK,
202
+ requestId: frame.requestId,
203
+ payload: encodeJsonPayload(ack),
204
+ });
205
+ // reconnect 後 SESSION_LIST で snapshot 再構築. Emit a
206
+ // full snapshot of currently-known sessions immediately so the
207
+ // freshly-attached server's mirror reflects daemon-side reality
208
+ // before any per-session SESSION_UPDATE/SESSION_EXIT broadcast lands.
209
+ // Without this, a server that reconnects to a daemon with live PTYs
210
+ // would see an empty list() until the next state change broadcast,
211
+ // turning live agents into "phantom orphans" from the routes' view.
212
+ const snapshot = { sessions: this.host.list() };
213
+ conn.send({
214
+ type: FrameType.SESSION_LIST,
215
+ requestId: 0,
216
+ payload: encodeJsonPayload(snapshot),
217
+ });
218
+ }
219
+ dispatchReady(conn, frame) {
220
+ switch (frame.type) {
221
+ case FrameType.CREATE_REQ:
222
+ this.handleCreate(conn, frame);
223
+ return;
224
+ case FrameType.RESTART_REQ:
225
+ this.handleRestart(conn, frame);
226
+ return;
227
+ case FrameType.DISPOSE_REQ:
228
+ this.handleDispose(conn, frame);
229
+ return;
230
+ case FrameType.DISPOSE_ALL_REQ:
231
+ this.handleDisposeAll(conn, frame);
232
+ return;
233
+ case FrameType.SHUTDOWN_ALL_REQ:
234
+ this.handleShutdownAll(conn, frame);
235
+ return;
236
+ case FrameType.INIT_CLIENT_REQ:
237
+ this.handleInitClient(conn, frame);
238
+ return;
239
+ case FrameType.WRITE:
240
+ this.handleWrite(frame);
241
+ return;
242
+ case FrameType.RESIZE:
243
+ this.handleResize(frame);
244
+ return;
245
+ case FrameType.REFRESH:
246
+ this.handleRefresh(frame);
247
+ return;
248
+ case FrameType.PAUSE_OUTPUT:
249
+ this.handlePauseOutput(frame);
250
+ return;
251
+ case FrameType.RESUME_OUTPUT:
252
+ this.handleResumeOutput(frame);
253
+ return;
254
+ case FrameType.DETACH_CLIENT:
255
+ this.handleDetachClient(frame);
256
+ return;
257
+ case FrameType.SET_TITLE:
258
+ this.handleSetTitle(conn, frame);
259
+ return;
260
+ case FrameType.SET_PINNED:
261
+ this.handleSetPinned(conn, frame);
262
+ return;
263
+ case FrameType.SET_PTY_ENV:
264
+ this.handleSetPtyEnv(frame);
265
+ return;
266
+ case FrameType.PERSIST_PROJECT_DOMAINS_REQ:
267
+ this.handlePersistProjectDomains(conn, frame);
268
+ return;
269
+ default:
270
+ this.replyNack(conn, frame.requestId, "unknown-frame-type", `unknown frame type 0x${frame.type.toString(16)}`);
271
+ return;
272
+ }
273
+ }
274
+ // --- request -> ack handlers (Promise<X>-returning host methods) ---
275
+ handleCreate(conn, frame) {
276
+ const req = decodeJsonPayload(frame.payload);
277
+ const chain = this.host
278
+ .create({
279
+ projectId: req.projectId,
280
+ command: req.command,
281
+ cwd: req.cwd,
282
+ title: req.title,
283
+ bootstrapInput: req.bootstrapInput,
284
+ })
285
+ .then((session) => {
286
+ // commit step splits into ACK gate and
287
+ // broadcast pivot. ACK only goes back if the requester is still
288
+ // current; the SESSION_UPDATE always fans to whoever is current
289
+ // (= new peer if the requester was evicted mid-await). That way
290
+ // the post-eviction successor sees the side-effect via its own
291
+ // mirror reconciliation and reconnect-resync holds.
292
+ if (this.fenceCommit(conn)) {
293
+ const ack = { session };
294
+ conn.send({
295
+ type: FrameType.CREATE_ACK,
296
+ requestId: frame.requestId,
297
+ payload: encodeJsonPayload(ack),
298
+ });
299
+ }
300
+ this.broadcastSessionUpdate(session);
301
+ })
302
+ .catch((err) => {
303
+ if (!this.fenceCommit(conn))
304
+ return;
305
+ this.replyNack(conn, frame.requestId, "create-failed", err instanceof Error ? err.message : String(err));
306
+ });
307
+ this.track(chain);
308
+ }
309
+ handleRestart(conn, frame) {
310
+ const req = decodeJsonPayload(frame.payload);
311
+ const chain = this.host
312
+ .restart(req.sessionId)
313
+ .then((session) => {
314
+ // broadcast pivot is unconditional so the
315
+ // restart's mutated state propagates to whoever is current,
316
+ // even if the original requester was evicted mid-await.
317
+ if (this.fenceCommit(conn)) {
318
+ conn.send({
319
+ type: FrameType.RESTART_ACK,
320
+ requestId: frame.requestId,
321
+ payload: encodeJsonPayload({ session }),
322
+ });
323
+ }
324
+ this.broadcastSessionUpdate(session);
325
+ })
326
+ .catch((err) => {
327
+ if (!this.fenceCommit(conn))
328
+ return;
329
+ this.replyNack(conn, frame.requestId, "restart-failed", err instanceof Error ? err.message : String(err));
330
+ });
331
+ this.track(chain);
332
+ }
333
+ handleDispose(conn, frame) {
334
+ const req = decodeJsonPayload(frame.payload);
335
+ const chain = this.host
336
+ .dispose(req.sessionId)
337
+ .then(() => {
338
+ // InProcessPtyHost.dispose() removes the
339
+ // session silently (no onSessionExit emit). To keep the current
340
+ // peer's mirror in sync, fan a fresh SESSION_LIST snapshot. This
341
+ // also covers the post-eviction case where the requester is gone
342
+ // and the new peer has the now-stale session in its initial
343
+ // snapshot.
344
+ if (this.fenceCommit(conn)) {
345
+ const ack = {};
346
+ conn.send({
347
+ type: FrameType.DISPOSE_ACK,
348
+ requestId: frame.requestId,
349
+ payload: encodeJsonPayload(ack),
350
+ });
351
+ }
352
+ this.broadcastSessionListSnapshot();
353
+ })
354
+ .catch((err) => {
355
+ if (!this.fenceCommit(conn))
356
+ return;
357
+ this.replyNack(conn, frame.requestId, "internal-error", err instanceof Error ? err.message : String(err));
358
+ });
359
+ this.track(chain);
360
+ }
361
+ handleDisposeAll(conn, frame) {
362
+ const chain = this.host
363
+ .disposeAll()
364
+ .then(() => {
365
+ // same broadcast pivot as handleDispose, but
366
+ // for every session.
367
+ if (this.fenceCommit(conn)) {
368
+ conn.send({
369
+ type: FrameType.DISPOSE_ALL_ACK,
370
+ requestId: frame.requestId,
371
+ payload: encodeJsonPayload({}),
372
+ });
373
+ }
374
+ this.broadcastSessionListSnapshot();
375
+ })
376
+ .catch((err) => {
377
+ if (!this.fenceCommit(conn))
378
+ return;
379
+ this.replyNack(conn, frame.requestId, "internal-error", err instanceof Error ? err.message : String(err));
380
+ });
381
+ this.track(chain);
382
+ }
383
+ handleShutdownAll(conn, frame) {
384
+ /*
385
+ * By protocol, `shutdownAll` is detach-
386
+ * only: do NOT terminate the PTYs, just close the IPC link so the
387
+ * server stops getting events. We keep the engine alive so a future
388
+ * server reconnect can resume. The dedicated `terminateAll` CLI
389
+ * command is the way to actually stop sessions remotely.
390
+ */
391
+ if (!this.fenceCommit(conn))
392
+ return;
393
+ conn.send({
394
+ type: FrameType.SHUTDOWN_ALL_ACK,
395
+ requestId: frame.requestId,
396
+ payload: encodeJsonPayload({}),
397
+ });
398
+ conn.evict("evicted", "server requested shutdownAll detach");
399
+ }
400
+ handleInitClient(conn, frame) {
401
+ const req = decodeJsonPayload(frame.payload);
402
+ /*
403
+ * Single-server invariant means there is exactly one server fanning
404
+ * the engine's per-session output to its WebSocket clients. The
405
+ * daemon's job is to spawn the PTY on first attach and pipe the
406
+ * engine's broadcasts back; per-client demuxing happens in the
407
+ * server. We register a no-op listener here because the global
408
+ * `onSessionData` subscription already delivers DATA frames.
409
+ */
410
+ const chain = this.host
411
+ .initClient(req.sessionId, req.clientId, req.cols, req.rows, () => {
412
+ // Output is broadcast via the global onSessionData subscription --
413
+ // this listener is just a presence flag for InProcessPtyHost so
414
+ // it knows a client is attached and can run its scrollback dump.
415
+ }, req.attachToken)
416
+ .then((result) => {
417
+ if (!this.fenceCommit(conn))
418
+ return;
419
+ const ack = { accepted: result.ok };
420
+ conn.send({
421
+ type: FrameType.INIT_CLIENT_ACK,
422
+ requestId: frame.requestId,
423
+ payload: encodeJsonPayload(ack),
424
+ });
425
+ if (result.ok)
426
+ this.maybeBroadcastSessionUpdate(conn, req.sessionId);
427
+ })
428
+ .catch((err) => {
429
+ if (!this.fenceCommit(conn))
430
+ return;
431
+ this.replyNack(conn, frame.requestId, "internal-error", err instanceof Error ? err.message : String(err));
432
+ });
433
+ this.track(chain);
434
+ }
435
+ // --- fire-and-forget mutators (no ack, optimistic mirror reconciles via SESSION_UPDATE) ---
436
+ handleWrite(frame) {
437
+ /*
438
+ * PTY generation gate: payload is the generation-tagged stream variant
439
+ * (`[idLen:u8][sessionId][gen:u32 BE][raw bytes]`). `gen=0` is the
440
+ * sentinel meaning "no gating" -- pass undefined to the host so the
441
+ * gate stays open (initial pre-init-ack queued INPUT, legacy
442
+ * non-WS callers). Any other value flows into the host's drop
443
+ * gate; a mismatch with the live currentGeneration drops the
444
+ * write.
445
+ */
446
+ let decoded;
447
+ try {
448
+ decoded = decodeGenerationStreamPayload(frame.payload);
449
+ }
450
+ catch {
451
+ return;
452
+ }
453
+ const data = decoded.data.toString("utf8");
454
+ this.host.write(decoded.sessionId, data, decoded.generation === 0 ? undefined : decoded.generation);
455
+ }
456
+ handleResize(frame) {
457
+ const req = decodeJsonPayload(frame.payload);
458
+ this.host.resize(req.sessionId, req.cols, req.rows);
459
+ }
460
+ handleRefresh(frame) {
461
+ const req = decodeJsonPayload(frame.payload);
462
+ this.host.refresh(req.sessionId);
463
+ }
464
+ handlePauseOutput(frame) {
465
+ const req = decodeJsonPayload(frame.payload);
466
+ this.host.pauseOutput(req.sessionId, req.clientId);
467
+ }
468
+ handleResumeOutput(frame) {
469
+ const req = decodeJsonPayload(frame.payload);
470
+ this.host.resumeOutput(req.sessionId, req.clientId);
471
+ }
472
+ handleDetachClient(frame) {
473
+ const req = decodeJsonPayload(frame.payload);
474
+ this.host.detachClient(req.sessionId, req.clientId, req.attachToken);
475
+ }
476
+ handleSetTitle(conn, frame) {
477
+ const req = decodeJsonPayload(frame.payload);
478
+ const ok = this.host.setTitle(req.sessionId, req.title, req.titleManual === true);
479
+ if (ok)
480
+ this.maybeBroadcastSessionUpdate(conn, req.sessionId);
481
+ }
482
+ handleSetPinned(conn, frame) {
483
+ const req = decodeJsonPayload(frame.payload);
484
+ const ok = this.host.setPinned(req.sessionId, req.pinned);
485
+ if (ok)
486
+ this.maybeBroadcastSessionUpdate(conn, req.sessionId);
487
+ }
488
+ handleSetPtyEnv(frame) {
489
+ const req = decodeJsonPayload(frame.payload);
490
+ this.host.setPtyEnv(req.env);
491
+ }
492
+ /*
493
+ * daemon state ownership -- adopt the server's project-domain snapshot and persist it.
494
+ * The daemon is the sole writer of state.json; the server forwards
495
+ * its in-memory `projects` / `projectStates` / `serviceConfig` /
496
+ * `paneCommands` / `ideCommands` here
497
+ * whenever the in-store debounce timer fires. We use `internalMutate`
498
+ * because (a) in remote-mode the daemon's session-domain guard is
499
+ * never actually flipped on (only server-side copies set it) but the
500
+ * intent is identical to the orphan reconciler at boot -- adopt then
501
+ * flush; (b) it routes through the existing scheduleFlush so the
502
+ * daemon's own session writes coalesce with this snapshot. ACK gates
503
+ * on the flush completing so the server's request promise reflects
504
+ * IO success.
505
+ */
506
+ handlePersistProjectDomains(conn, frame) {
507
+ if (!this.store) {
508
+ this.replyNack(conn, frame.requestId, "persist-failed", "daemon has no AppStateStore configured for persistence");
509
+ return;
510
+ }
511
+ /*
512
+ * -- three-step fence-and-drain protocol so
513
+ * an evicted-mid-drain request cannot clobber the new server's
514
+ * snapshot:
515
+ *
516
+ * 1. fence-on-arrival: cheap reject for already-evicted senders.
517
+ * 2. drain-first: await any in-flight write (previous PERSIST
518
+ * or daemon session-domain debounce) so the
519
+ * next mutate+write is atomic from the
520
+ * store's POV.
521
+ * 3. fence-after-drain: if the conn was evicted while we awaited
522
+ * the drain, the in-flight snapshot is no
523
+ * longer authoritative -- drop it silently.
524
+ * The new server already has its own state
525
+ * and will send a fresh PERSIST.
526
+ *
527
+ * Mutate+write happens between (3) and the post-handler fence; both
528
+ * are sync (internalMutate is sync; daemon-store write() is
529
+ * writeFileSync, no delegate), so eviction cannot slip between
530
+ * them. Project-domain snapshots are SERVER-owned, so adopting an
531
+ * evicted snapshot would roll back project / projectStates /
532
+ * serviceConfig / paneCommands / ideCommands writes the new server already
533
+ * made.
534
+ */
535
+ if (!this.fenceCommit(conn))
536
+ return;
537
+ const req = decodeJsonPayload(frame.payload);
538
+ const store = this.store;
539
+ const chain = (async () => {
540
+ await store.flush();
541
+ if (!this.fenceCommit(conn))
542
+ return "evicted-during-drain";
543
+ store.internalMutate((state) => {
544
+ state.projects = req.projects;
545
+ state.projectStates = req.projectStates;
546
+ state.serviceConfig = req.serviceConfig;
547
+ if (Array.isArray(req.paneCommands)) {
548
+ state.paneCommands = req.paneCommands;
549
+ }
550
+ if (Array.isArray(req.ideCommands)) {
551
+ state.ideCommands = req.ideCommands;
552
+ }
553
+ });
554
+ await store.flush();
555
+ return "committed";
556
+ })()
557
+ .then((result) => {
558
+ if (result === "evicted-during-drain")
559
+ return;
560
+ if (!this.fenceCommit(conn))
561
+ return;
562
+ conn.send({
563
+ type: FrameType.PERSIST_PROJECT_DOMAINS_ACK,
564
+ requestId: frame.requestId,
565
+ payload: encodeJsonPayload({}),
566
+ });
567
+ })
568
+ .catch((err) => {
569
+ if (!this.fenceCommit(conn))
570
+ return;
571
+ this.replyNack(conn, frame.requestId, "persist-failed", err instanceof Error ? err.message : String(err));
572
+ });
573
+ this.track(chain);
574
+ }
575
+ // --- broadcast helpers ---
576
+ broadcastJson(type, requestId, payload) {
577
+ const conn = this.currentServer;
578
+ if (!conn || conn.getState() !== "ready")
579
+ return;
580
+ conn.send({ type, requestId, payload: encodeJsonPayload(payload) });
581
+ }
582
+ broadcastStream(type, sessionId, data) {
583
+ const conn = this.currentServer;
584
+ if (!conn || conn.getState() !== "ready")
585
+ return;
586
+ conn.send({
587
+ type,
588
+ requestId: 0,
589
+ payload: encodeStreamPayload(sessionId, Buffer.from(data, "utf8")),
590
+ });
591
+ }
592
+ broadcastDataStream(sessionId, data, generation) {
593
+ const conn = this.currentServer;
594
+ if (!conn || conn.getState() !== "ready")
595
+ return;
596
+ conn.send({
597
+ type: FrameType.DATA,
598
+ requestId: 0,
599
+ payload: encodeGenerationStreamPayload(sessionId, Buffer.from(data, "utf8"), generation),
600
+ });
601
+ }
602
+ broadcastSessionUpdate(session) {
603
+ this.broadcastJson(FrameType.SESSION_UPDATE, 0, {
604
+ session,
605
+ });
606
+ }
607
+ /**
608
+ * Send a fresh SESSION_LIST snapshot to the current peer. Used by
609
+ * dispose paths because InProcessPtyHost.dispose() removes the session
610
+ * silently, so neither SESSION_UPDATE nor SESSION_EXIT carries the
611
+ * removal -- we instead resync via a full snapshot. Cheap: list() is
612
+ * just a Map values() copy.
613
+ */
614
+ broadcastSessionListSnapshot() {
615
+ this.broadcastJson(FrameType.SESSION_LIST, 0, {
616
+ sessions: this.host.list(),
617
+ });
618
+ }
619
+ maybeBroadcastSessionUpdate(conn, sessionId) {
620
+ if (this.currentServer !== conn)
621
+ return;
622
+ const session = this.host.get(sessionId);
623
+ if (session)
624
+ this.broadcastSessionUpdate(session);
625
+ }
626
+ // --- fence + nack helpers ---
627
+ /**
628
+ * Stage-3 fence (by design): called from async ack callbacks. If the
629
+ * connection that issued the request is no longer current, drop the
630
+ * ack -- its server has been evicted and any reply would arrive with
631
+ * a stale (connectionId, generation) pair the new peer would reject.
632
+ */
633
+ fenceCommit(conn) {
634
+ return this.currentServer === conn && conn.getState() === "ready";
635
+ }
636
+ replyNack(conn, requestId, code, message) {
637
+ conn.send({
638
+ type: FrameType.NACK,
639
+ requestId,
640
+ payload: encodeJsonPayload({ code, message }),
641
+ });
642
+ }
643
+ handleConnectionClosed(conn) {
644
+ if (this.currentServer === conn)
645
+ this.currentServer = null;
646
+ }
647
+ }
648
+ //# sourceMappingURL=daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../../src/pty/host-daemon/daemon.ts"],"names":[],"mappings":"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"}