@smthrs/platform-node 0.0.0-stage → 1.0.0-rc.4

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 (442) hide show
  1. package/CHANGELOG.md +211 -0
  2. package/LICENSE +21 -0
  3. package/README.md +165 -2
  4. package/bin/darwin-arm64/smithers-jj-export +0 -0
  5. package/bin/darwin-x64/smithers-jj-export +0 -0
  6. package/bin/linux-arm64/smithers-jj-export +0 -0
  7. package/bin/linux-x64/smithers-jj-export +4 -0
  8. package/bin/win32-x64/smithers-jj-export.exe +0 -0
  9. package/dist/cjs/AtomicFileSystem.d.ts +147 -0
  10. package/dist/cjs/AtomicFileSystem.d.ts.map +1 -0
  11. package/dist/cjs/AtomicFileSystem.js +234 -0
  12. package/dist/cjs/AtomicFileSystem.js.map +7 -0
  13. package/dist/cjs/EgressHttpClient.d.ts +106 -0
  14. package/dist/cjs/EgressHttpClient.d.ts.map +1 -0
  15. package/dist/cjs/EgressHttpClient.js +202 -0
  16. package/dist/cjs/EgressHttpClient.js.map +7 -0
  17. package/dist/cjs/HostLiveness.d.ts +81 -0
  18. package/dist/cjs/HostLiveness.d.ts.map +1 -0
  19. package/dist/cjs/HostLiveness.js +49 -0
  20. package/dist/cjs/HostLiveness.js.map +7 -0
  21. package/dist/cjs/NodeHost.d.ts +145 -0
  22. package/dist/cjs/NodeHost.d.ts.map +1 -0
  23. package/dist/cjs/NodeHost.js +128 -0
  24. package/dist/cjs/NodeHost.js.map +7 -0
  25. package/dist/cjs/ProcessConfinement.d.ts +61 -0
  26. package/dist/cjs/ProcessConfinement.d.ts.map +1 -0
  27. package/dist/cjs/ProcessConfinement.js +292 -0
  28. package/dist/cjs/ProcessConfinement.js.map +7 -0
  29. package/dist/cjs/ProcessReaper.d.ts +457 -0
  30. package/dist/cjs/ProcessReaper.d.ts.map +1 -0
  31. package/dist/cjs/ProcessReaper.js +349 -0
  32. package/dist/cjs/ProcessReaper.js.map +7 -0
  33. package/dist/cjs/ProcessSandbox.d.ts +391 -0
  34. package/dist/cjs/ProcessSandbox.d.ts.map +1 -0
  35. package/dist/cjs/ProcessSandbox.js +774 -0
  36. package/dist/cjs/ProcessSandbox.js.map +7 -0
  37. package/dist/cjs/ScopedProcess.d.ts +66 -0
  38. package/dist/cjs/ScopedProcess.d.ts.map +1 -0
  39. package/dist/cjs/ScopedProcess.js +87 -0
  40. package/dist/cjs/ScopedProcess.js.map +7 -0
  41. package/dist/cjs/index.d.ts +38 -0
  42. package/dist/cjs/index.d.ts.map +1 -0
  43. package/dist/cjs/index.js +47 -0
  44. package/dist/cjs/index.js.map +7 -0
  45. package/dist/cjs/internal/AtomicFileSystemExecutable.d.ts +61 -0
  46. package/dist/cjs/internal/AtomicFileSystemExecutable.d.ts.map +1 -0
  47. package/dist/cjs/internal/AtomicFileSystemExecutable.js +250 -0
  48. package/dist/cjs/internal/AtomicFileSystemExecutable.js.map +7 -0
  49. package/dist/cjs/internal/AtomicFileSystemProtocol.d.ts +78 -0
  50. package/dist/cjs/internal/AtomicFileSystemProtocol.d.ts.map +1 -0
  51. package/dist/cjs/internal/AtomicFileSystemProtocol.js +382 -0
  52. package/dist/cjs/internal/AtomicFileSystemProtocol.js.map +7 -0
  53. package/dist/cjs/internal/AtomicFileSystemTransport.d.ts +44 -0
  54. package/dist/cjs/internal/AtomicFileSystemTransport.d.ts.map +1 -0
  55. package/dist/cjs/internal/AtomicFileSystemTransport.js +197 -0
  56. package/dist/cjs/internal/AtomicFileSystemTransport.js.map +7 -0
  57. package/dist/cjs/internal/AtomicHelperError.d.ts +35 -0
  58. package/dist/cjs/internal/AtomicHelperError.d.ts.map +1 -0
  59. package/dist/cjs/internal/AtomicHelperError.js +45 -0
  60. package/dist/cjs/internal/AtomicHelperError.js.map +7 -0
  61. package/dist/cjs/internal/AtomicHelperFault.d.ts +59 -0
  62. package/dist/cjs/internal/AtomicHelperFault.d.ts.map +1 -0
  63. package/dist/cjs/internal/AtomicHelperFault.js +66 -0
  64. package/dist/cjs/internal/AtomicHelperFault.js.map +7 -0
  65. package/dist/cjs/internal/PipedProcess.d.ts +35 -0
  66. package/dist/cjs/internal/PipedProcess.d.ts.map +1 -0
  67. package/dist/cjs/internal/PipedProcess.js +309 -0
  68. package/dist/cjs/internal/PipedProcess.js.map +7 -0
  69. package/dist/cjs/internal/ProcSnapshot.d.ts +85 -0
  70. package/dist/cjs/internal/ProcSnapshot.d.ts.map +1 -0
  71. package/dist/cjs/internal/ProcSnapshot.js +123 -0
  72. package/dist/cjs/internal/ProcSnapshot.js.map +7 -0
  73. package/dist/cjs/internal/ProcessCleanup.d.ts +64 -0
  74. package/dist/cjs/internal/ProcessCleanup.d.ts.map +1 -0
  75. package/dist/cjs/internal/ProcessCleanup.js +62 -0
  76. package/dist/cjs/internal/ProcessCleanup.js.map +7 -0
  77. package/dist/cjs/internal/ProcessCleanupPolicyError.d.ts +30 -0
  78. package/dist/cjs/internal/ProcessCleanupPolicyError.d.ts.map +1 -0
  79. package/dist/cjs/internal/ProcessCleanupPolicyError.js +33 -0
  80. package/dist/cjs/internal/ProcessCleanupPolicyError.js.map +7 -0
  81. package/dist/cjs/internal/ProcessFault.d.ts +63 -0
  82. package/dist/cjs/internal/ProcessFault.d.ts.map +1 -0
  83. package/dist/cjs/internal/ProcessFault.js +63 -0
  84. package/dist/cjs/internal/ProcessFault.js.map +7 -0
  85. package/dist/cjs/internal/ProcessSupervisor.d.ts +143 -0
  86. package/dist/cjs/internal/ProcessSupervisor.d.ts.map +1 -0
  87. package/dist/cjs/internal/ProcessSupervisor.js +685 -0
  88. package/dist/cjs/internal/ProcessSupervisor.js.map +7 -0
  89. package/dist/cjs/internal/SupervisorProgram.d.ts +9 -0
  90. package/dist/cjs/internal/SupervisorProgram.d.ts.map +1 -0
  91. package/dist/cjs/internal/SupervisorProgram.js +326 -0
  92. package/dist/cjs/internal/SupervisorProgram.js.map +7 -0
  93. package/dist/cjs/internal/WindowsProcessJob.d.ts +39 -0
  94. package/dist/cjs/internal/WindowsProcessJob.d.ts.map +1 -0
  95. package/dist/cjs/internal/WindowsProcessJob.js +113 -0
  96. package/dist/cjs/internal/WindowsProcessJob.js.map +7 -0
  97. package/dist/cjs/package.json +1 -0
  98. package/dist/esm/AtomicFileSystem.d.ts +147 -0
  99. package/dist/esm/AtomicFileSystem.d.ts.map +1 -0
  100. package/dist/esm/AtomicFileSystem.js +290 -0
  101. package/dist/esm/AtomicFileSystem.js.map +1 -0
  102. package/dist/esm/EgressHttpClient.d.ts +106 -0
  103. package/dist/esm/EgressHttpClient.d.ts.map +1 -0
  104. package/dist/esm/EgressHttpClient.js +259 -0
  105. package/dist/esm/EgressHttpClient.js.map +1 -0
  106. package/dist/esm/HostLiveness.d.ts +81 -0
  107. package/dist/esm/HostLiveness.d.ts.map +1 -0
  108. package/dist/esm/HostLiveness.js +68 -0
  109. package/dist/esm/HostLiveness.js.map +1 -0
  110. package/dist/esm/NodeHost.d.ts +145 -0
  111. package/dist/esm/NodeHost.d.ts.map +1 -0
  112. package/dist/esm/NodeHost.js +162 -0
  113. package/dist/esm/NodeHost.js.map +1 -0
  114. package/dist/esm/ProcessConfinement.d.ts +61 -0
  115. package/dist/esm/ProcessConfinement.d.ts.map +1 -0
  116. package/dist/esm/ProcessConfinement.js +311 -0
  117. package/dist/esm/ProcessConfinement.js.map +1 -0
  118. package/dist/esm/ProcessReaper.d.ts +457 -0
  119. package/dist/esm/ProcessReaper.d.ts.map +1 -0
  120. package/dist/esm/ProcessReaper.js +711 -0
  121. package/dist/esm/ProcessReaper.js.map +1 -0
  122. package/dist/esm/ProcessSandbox.d.ts +391 -0
  123. package/dist/esm/ProcessSandbox.d.ts.map +1 -0
  124. package/dist/esm/ProcessSandbox.js +1043 -0
  125. package/dist/esm/ProcessSandbox.js.map +1 -0
  126. package/dist/esm/ScopedProcess.d.ts +66 -0
  127. package/dist/esm/ScopedProcess.d.ts.map +1 -0
  128. package/dist/esm/ScopedProcess.js +67 -0
  129. package/dist/esm/ScopedProcess.js.map +1 -0
  130. package/dist/esm/index.d.ts +38 -0
  131. package/dist/esm/index.d.ts.map +1 -0
  132. package/dist/esm/index.js +38 -0
  133. package/dist/esm/index.js.map +1 -0
  134. package/dist/esm/internal/AtomicFileSystemExecutable.d.ts +61 -0
  135. package/dist/esm/internal/AtomicFileSystemExecutable.d.ts.map +1 -0
  136. package/dist/esm/internal/AtomicFileSystemExecutable.js +350 -0
  137. package/dist/esm/internal/AtomicFileSystemExecutable.js.map +1 -0
  138. package/dist/esm/internal/AtomicFileSystemProtocol.d.ts +78 -0
  139. package/dist/esm/internal/AtomicFileSystemProtocol.d.ts.map +1 -0
  140. package/dist/esm/internal/AtomicFileSystemProtocol.js +412 -0
  141. package/dist/esm/internal/AtomicFileSystemProtocol.js.map +1 -0
  142. package/dist/esm/internal/AtomicFileSystemTransport.d.ts +44 -0
  143. package/dist/esm/internal/AtomicFileSystemTransport.d.ts.map +1 -0
  144. package/dist/esm/internal/AtomicFileSystemTransport.js +242 -0
  145. package/dist/esm/internal/AtomicFileSystemTransport.js.map +1 -0
  146. package/dist/esm/internal/AtomicHelperError.d.ts +35 -0
  147. package/dist/esm/internal/AtomicHelperError.d.ts.map +1 -0
  148. package/dist/esm/internal/AtomicHelperError.js +39 -0
  149. package/dist/esm/internal/AtomicHelperError.js.map +1 -0
  150. package/dist/esm/internal/AtomicHelperFault.d.ts +59 -0
  151. package/dist/esm/internal/AtomicHelperFault.d.ts.map +1 -0
  152. package/dist/esm/internal/AtomicHelperFault.js +66 -0
  153. package/dist/esm/internal/AtomicHelperFault.js.map +1 -0
  154. package/dist/esm/internal/PipedProcess.d.ts +35 -0
  155. package/dist/esm/internal/PipedProcess.d.ts.map +1 -0
  156. package/dist/esm/internal/PipedProcess.js +321 -0
  157. package/dist/esm/internal/PipedProcess.js.map +1 -0
  158. package/dist/esm/internal/ProcSnapshot.d.ts +85 -0
  159. package/dist/esm/internal/ProcSnapshot.d.ts.map +1 -0
  160. package/dist/esm/internal/ProcSnapshot.js +188 -0
  161. package/dist/esm/internal/ProcSnapshot.js.map +1 -0
  162. package/dist/esm/internal/ProcessCleanup.d.ts +64 -0
  163. package/dist/esm/internal/ProcessCleanup.d.ts.map +1 -0
  164. package/dist/esm/internal/ProcessCleanup.js +45 -0
  165. package/dist/esm/internal/ProcessCleanup.js.map +1 -0
  166. package/dist/esm/internal/ProcessCleanupPolicyError.d.ts +30 -0
  167. package/dist/esm/internal/ProcessCleanupPolicyError.d.ts.map +1 -0
  168. package/dist/esm/internal/ProcessCleanupPolicyError.js +25 -0
  169. package/dist/esm/internal/ProcessCleanupPolicyError.js.map +1 -0
  170. package/dist/esm/internal/ProcessFault.d.ts +63 -0
  171. package/dist/esm/internal/ProcessFault.d.ts.map +1 -0
  172. package/dist/esm/internal/ProcessFault.js +64 -0
  173. package/dist/esm/internal/ProcessFault.js.map +1 -0
  174. package/dist/esm/internal/ProcessSupervisor.d.ts +143 -0
  175. package/dist/esm/internal/ProcessSupervisor.d.ts.map +1 -0
  176. package/dist/esm/internal/ProcessSupervisor.js +689 -0
  177. package/dist/esm/internal/ProcessSupervisor.js.map +1 -0
  178. package/dist/esm/internal/SupervisorProgram.d.ts +9 -0
  179. package/dist/esm/internal/SupervisorProgram.d.ts.map +1 -0
  180. package/dist/esm/internal/SupervisorProgram.js +310 -0
  181. package/dist/esm/internal/SupervisorProgram.js.map +1 -0
  182. package/dist/esm/internal/WindowsProcessJob.d.ts +39 -0
  183. package/dist/esm/internal/WindowsProcessJob.d.ts.map +1 -0
  184. package/dist/esm/internal/WindowsProcessJob.js +115 -0
  185. package/dist/esm/internal/WindowsProcessJob.js.map +1 -0
  186. package/dist/vendor/adapters.json +1757 -0
  187. package/dist/vendor/chunk-2Y7WC4KU.js +109 -0
  188. package/dist/vendor/chunk-3GR5VZ2M.js +118 -0
  189. package/dist/vendor/chunk-42QKY6T6.js +40 -0
  190. package/dist/vendor/chunk-54RLBMTZ.js +61 -0
  191. package/dist/vendor/chunk-5ZMHBXIK.js +55 -0
  192. package/dist/vendor/chunk-6ME2W7TF.js +28 -0
  193. package/dist/vendor/chunk-AMQKOQNT.js +34 -0
  194. package/dist/vendor/chunk-B3FZ67QU.js +59 -0
  195. package/dist/vendor/chunk-BKTBUBQY.js +437 -0
  196. package/dist/vendor/chunk-DS7GF46S.js +34 -0
  197. package/dist/vendor/chunk-DVOAHXPG.js +104 -0
  198. package/dist/vendor/chunk-DWSHTSVX.js +229 -0
  199. package/dist/vendor/chunk-EGBNVEEW.js +14 -0
  200. package/dist/vendor/chunk-EZWY45HP.js +18 -0
  201. package/dist/vendor/chunk-FNZOJHSV.js +71 -0
  202. package/dist/vendor/chunk-GXCHI7BM.js +131 -0
  203. package/dist/vendor/chunk-IIJ52ZU6.js +20 -0
  204. package/dist/vendor/chunk-J7A4CZDO.js +92 -0
  205. package/dist/vendor/chunk-JG5TTWPT.js +85 -0
  206. package/dist/vendor/chunk-JJ24ARBQ.js +394 -0
  207. package/dist/vendor/chunk-KOZMM5PZ.js +426 -0
  208. package/dist/vendor/chunk-KUUXSID7.js +18 -0
  209. package/dist/vendor/chunk-LEUPYT3Q.js +36 -0
  210. package/dist/vendor/chunk-M32LDTW7.js +18 -0
  211. package/dist/vendor/chunk-M7CLUILA.js +0 -0
  212. package/dist/vendor/chunk-MBSKBQ5D.js +21 -0
  213. package/dist/vendor/chunk-MLKGABMK.js +9 -0
  214. package/dist/vendor/chunk-NBVRTDTV.js +129 -0
  215. package/dist/vendor/chunk-OXNGN5H7.js +81 -0
  216. package/dist/vendor/chunk-QPLDT6A6.js +564 -0
  217. package/dist/vendor/chunk-QYBKAIA6.js +18 -0
  218. package/dist/vendor/chunk-RO2R4MJH.js +62 -0
  219. package/dist/vendor/chunk-SIR62W3Y.js +398 -0
  220. package/dist/vendor/chunk-TFIKFFSC.js +26 -0
  221. package/dist/vendor/chunk-TXKLEBBL.js +143 -0
  222. package/dist/vendor/chunk-UFH5UUZK.js +48 -0
  223. package/dist/vendor/chunk-VANKHF46.js +96 -0
  224. package/dist/vendor/chunk-VZBDV3TV.js +18 -0
  225. package/dist/vendor/chunk-XDKNKFBW.js +22 -0
  226. package/dist/vendor/chunk-XH4U3JSV.js +249 -0
  227. package/dist/vendor/chunk-Y35ZAO5U.js +53 -0
  228. package/dist/vendor/chunk-ZJMRMY57.js +0 -0
  229. package/dist/vendor/cjs/node/NodeChildProcessSpawner.d.ts +7 -0
  230. package/dist/vendor/cjs/node/NodeChildProcessSpawner.js +1 -0
  231. package/dist/vendor/cjs/node/NodeClusterHttp.d.ts +63 -0
  232. package/dist/vendor/cjs/node/NodeClusterHttp.js +1 -0
  233. package/dist/vendor/cjs/node/NodeClusterSocket.d.ts +79 -0
  234. package/dist/vendor/cjs/node/NodeClusterSocket.js +1 -0
  235. package/dist/vendor/cjs/node/NodeCrypto.d.ts +10 -0
  236. package/dist/vendor/cjs/node/NodeCrypto.js +1 -0
  237. package/dist/vendor/cjs/node/NodeFileSystem.d.ts +10 -0
  238. package/dist/vendor/cjs/node/NodeFileSystem.js +1 -0
  239. package/dist/vendor/cjs/node/NodeHttpClient.d.ts +179 -0
  240. package/dist/vendor/cjs/node/NodeHttpClient.js +1 -0
  241. package/dist/vendor/cjs/node/NodeHttpIncomingMessage.d.ts +62 -0
  242. package/dist/vendor/cjs/node/NodeHttpIncomingMessage.js +1 -0
  243. package/dist/vendor/cjs/node/NodeHttpPlatform.d.ts +36 -0
  244. package/dist/vendor/cjs/node/NodeHttpPlatform.js +1 -0
  245. package/dist/vendor/cjs/node/NodeHttpServer.d.ts +120 -0
  246. package/dist/vendor/cjs/node/NodeHttpServer.js +1 -0
  247. package/dist/vendor/cjs/node/NodeHttpServerRequest.d.ts +29 -0
  248. package/dist/vendor/cjs/node/NodeHttpServerRequest.js +1 -0
  249. package/dist/vendor/cjs/node/NodeMultipart.d.ts +46 -0
  250. package/dist/vendor/cjs/node/NodeMultipart.js +1 -0
  251. package/dist/vendor/cjs/node/NodeMultipartParser.d.ts +97 -0
  252. package/dist/vendor/cjs/node/NodeMultipartParser.js +1 -0
  253. package/dist/vendor/cjs/node/NodePath.d.ts +27 -0
  254. package/dist/vendor/cjs/node/NodePath.js +1 -0
  255. package/dist/vendor/cjs/node/NodeRedis.d.ts +74 -0
  256. package/dist/vendor/cjs/node/NodeRedis.js +1 -0
  257. package/dist/vendor/cjs/node/NodeRuntime.d.ts +85 -0
  258. package/dist/vendor/cjs/node/NodeRuntime.js +1 -0
  259. package/dist/vendor/cjs/node/NodeServices.d.ts +34 -0
  260. package/dist/vendor/cjs/node/NodeServices.js +1 -0
  261. package/dist/vendor/cjs/node/NodeSink.d.ts +8 -0
  262. package/dist/vendor/cjs/node/NodeSink.js +1 -0
  263. package/dist/vendor/cjs/node/NodeSocket.d.ts +38 -0
  264. package/dist/vendor/cjs/node/NodeSocket.js +1 -0
  265. package/dist/vendor/cjs/node/NodeSocketServer.d.ts +8 -0
  266. package/dist/vendor/cjs/node/NodeSocketServer.js +1 -0
  267. package/dist/vendor/cjs/node/NodeStdio.d.ts +11 -0
  268. package/dist/vendor/cjs/node/NodeStdio.js +1 -0
  269. package/dist/vendor/cjs/node/NodeStream.d.ts +8 -0
  270. package/dist/vendor/cjs/node/NodeStream.js +1 -0
  271. package/dist/vendor/cjs/node/NodeTerminal.d.ts +21 -0
  272. package/dist/vendor/cjs/node/NodeTerminal.js +1 -0
  273. package/dist/vendor/cjs/node/NodeWorker.d.ts +22 -0
  274. package/dist/vendor/cjs/node/NodeWorker.js +1 -0
  275. package/dist/vendor/cjs/node/NodeWorkerRunner.d.ts +12 -0
  276. package/dist/vendor/cjs/node/NodeWorkerRunner.js +1 -0
  277. package/dist/vendor/cjs/node/Undici.d.ts +28 -0
  278. package/dist/vendor/cjs/node/Undici.js +1 -0
  279. package/dist/vendor/cjs/node/index.d.ts +100 -0
  280. package/dist/vendor/cjs/node/index.js +1 -0
  281. package/dist/vendor/cjs/node-shared/NodeChildProcessSpawner.d.ts +57 -0
  282. package/dist/vendor/cjs/node-shared/NodeChildProcessSpawner.js +1 -0
  283. package/dist/vendor/cjs/node-shared/NodeClusterSocket.d.ts +22 -0
  284. package/dist/vendor/cjs/node-shared/NodeClusterSocket.js +1 -0
  285. package/dist/vendor/cjs/node-shared/NodeCrypto.d.ts +27 -0
  286. package/dist/vendor/cjs/node-shared/NodeCrypto.js +1 -0
  287. package/dist/vendor/cjs/node-shared/NodeFileSystem.d.ts +11 -0
  288. package/dist/vendor/cjs/node-shared/NodeFileSystem.js +1 -0
  289. package/dist/vendor/cjs/node-shared/NodeHttpCompression.d.ts +36 -0
  290. package/dist/vendor/cjs/node-shared/NodeHttpCompression.js +1 -0
  291. package/dist/vendor/cjs/node-shared/NodePath.d.ts +27 -0
  292. package/dist/vendor/cjs/node-shared/NodePath.js +1 -0
  293. package/dist/vendor/cjs/node-shared/NodeRuntime.d.ts +47 -0
  294. package/dist/vendor/cjs/node-shared/NodeRuntime.js +1 -0
  295. package/dist/vendor/cjs/node-shared/NodeSink.d.ts +69 -0
  296. package/dist/vendor/cjs/node-shared/NodeSink.js +1 -0
  297. package/dist/vendor/cjs/node-shared/NodeSocket.d.ts +134 -0
  298. package/dist/vendor/cjs/node-shared/NodeSocket.js +1 -0
  299. package/dist/vendor/cjs/node-shared/NodeSocketServer.d.ts +80 -0
  300. package/dist/vendor/cjs/node-shared/NodeSocketServer.js +1 -0
  301. package/dist/vendor/cjs/node-shared/NodeStdio.d.ts +12 -0
  302. package/dist/vendor/cjs/node-shared/NodeStdio.js +1 -0
  303. package/dist/vendor/cjs/node-shared/NodeStream.d.ts +179 -0
  304. package/dist/vendor/cjs/node-shared/NodeStream.js +1 -0
  305. package/dist/vendor/cjs/node-shared/NodeTerminal.d.ts +22 -0
  306. package/dist/vendor/cjs/node-shared/NodeTerminal.js +1 -0
  307. package/dist/vendor/cjs/node-shared/index.d.ts +56 -0
  308. package/dist/vendor/cjs/node-shared/index.js +1 -0
  309. package/dist/vendor/cjs/node-shared/internal/nodeChildProcessSpawner.d.ts +4 -0
  310. package/dist/vendor/cjs/node-shared/internal/nodeChildProcessSpawner.js +1 -0
  311. package/dist/vendor/cjs/node-shared/internal/utils.d.ts +2 -0
  312. package/dist/vendor/cjs/node-shared/internal/utils.js +1 -0
  313. package/dist/vendor/cjs/package.json +1 -0
  314. package/dist/vendor/cjs/platform-node-shared.d.ts +56 -0
  315. package/dist/vendor/cjs/platform-node-shared.js +1 -0
  316. package/dist/vendor/cjs/platform-node.d.ts +100 -0
  317. package/dist/vendor/cjs/platform-node.js +1 -0
  318. package/dist/vendor/node/LICENSE +21 -0
  319. package/dist/vendor/node/NodeChildProcessSpawner.d.ts +7 -0
  320. package/dist/vendor/node/NodeChildProcessSpawner.js +14 -0
  321. package/dist/vendor/node/NodeClusterHttp.d.ts +63 -0
  322. package/dist/vendor/node/NodeClusterHttp.js +43 -0
  323. package/dist/vendor/node/NodeClusterSocket.d.ts +79 -0
  324. package/dist/vendor/node/NodeClusterSocket.js +30 -0
  325. package/dist/vendor/node/NodeCrypto.d.ts +10 -0
  326. package/dist/vendor/node/NodeCrypto.js +8 -0
  327. package/dist/vendor/node/NodeFileSystem.d.ts +10 -0
  328. package/dist/vendor/node/NodeFileSystem.js +9 -0
  329. package/dist/vendor/node/NodeHttpClient.d.ts +179 -0
  330. package/dist/vendor/node/NodeHttpClient.js +46 -0
  331. package/dist/vendor/node/NodeHttpIncomingMessage.d.ts +62 -0
  332. package/dist/vendor/node/NodeHttpIncomingMessage.js +10 -0
  333. package/dist/vendor/node/NodeHttpPlatform.d.ts +36 -0
  334. package/dist/vendor/node/NodeHttpPlatform.js +16 -0
  335. package/dist/vendor/node/NodeHttpServer.d.ts +120 -0
  336. package/dist/vendor/node/NodeHttpServer.js +46 -0
  337. package/dist/vendor/node/NodeHttpServerRequest.d.ts +29 -0
  338. package/dist/vendor/node/NodeHttpServerRequest.js +9 -0
  339. package/dist/vendor/node/NodeMultipart.d.ts +46 -0
  340. package/dist/vendor/node/NodeMultipart.js +15 -0
  341. package/dist/vendor/node/NodeMultipartParser.d.ts +97 -0
  342. package/dist/vendor/node/NodeMultipartParser.js +11 -0
  343. package/dist/vendor/node/NodePath.d.ts +27 -0
  344. package/dist/vendor/node/NodePath.js +12 -0
  345. package/dist/vendor/node/NodeRedis.d.ts +74 -0
  346. package/dist/vendor/node/NodeRedis.js +11 -0
  347. package/dist/vendor/node/NodeRuntime.d.ts +85 -0
  348. package/dist/vendor/node/NodeRuntime.js +8 -0
  349. package/dist/vendor/node/NodeServices.d.ts +34 -0
  350. package/dist/vendor/node/NodeServices.js +23 -0
  351. package/dist/vendor/node/NodeSink.d.ts +8 -0
  352. package/dist/vendor/node/NodeSink.js +12 -0
  353. package/dist/vendor/node/NodeSocket.d.ts +38 -0
  354. package/dist/vendor/node/NodeSocket.js +31 -0
  355. package/dist/vendor/node/NodeSocketServer.d.ts +8 -0
  356. package/dist/vendor/node/NodeSocketServer.js +21 -0
  357. package/dist/vendor/node/NodeStdio.d.ts +11 -0
  358. package/dist/vendor/node/NodeStdio.js +10 -0
  359. package/dist/vendor/node/NodeStream.d.ts +8 -0
  360. package/dist/vendor/node/NodeStream.js +27 -0
  361. package/dist/vendor/node/NodeTerminal.d.ts +21 -0
  362. package/dist/vendor/node/NodeTerminal.js +10 -0
  363. package/dist/vendor/node/NodeWorker.d.ts +22 -0
  364. package/dist/vendor/node/NodeWorker.js +9 -0
  365. package/dist/vendor/node/NodeWorkerRunner.d.ts +12 -0
  366. package/dist/vendor/node/NodeWorkerRunner.js +7 -0
  367. package/dist/vendor/node/Undici.d.ts +28 -0
  368. package/dist/vendor/node/Undici.js +9 -0
  369. package/dist/vendor/node/index.d.ts +100 -0
  370. package/dist/vendor/node/index.js +115 -0
  371. package/dist/vendor/node-shared/LICENSE +21 -0
  372. package/dist/vendor/node-shared/NodeChildProcessSpawner.d.ts +57 -0
  373. package/dist/vendor/node-shared/NodeChildProcessSpawner.js +13 -0
  374. package/dist/vendor/node-shared/NodeClusterSocket.d.ts +22 -0
  375. package/dist/vendor/node-shared/NodeClusterSocket.js +11 -0
  376. package/dist/vendor/node-shared/NodeCrypto.d.ts +27 -0
  377. package/dist/vendor/node-shared/NodeCrypto.js +9 -0
  378. package/dist/vendor/node-shared/NodeFileSystem.d.ts +11 -0
  379. package/dist/vendor/node-shared/NodeFileSystem.js +8 -0
  380. package/dist/vendor/node-shared/NodeHttpCompression.d.ts +36 -0
  381. package/dist/vendor/node-shared/NodeHttpCompression.js +13 -0
  382. package/dist/vendor/node-shared/NodePath.d.ts +27 -0
  383. package/dist/vendor/node-shared/NodePath.js +11 -0
  384. package/dist/vendor/node-shared/NodeRuntime.d.ts +47 -0
  385. package/dist/vendor/node-shared/NodeRuntime.js +7 -0
  386. package/dist/vendor/node-shared/NodeSink.d.ts +69 -0
  387. package/dist/vendor/node-shared/NodeSink.js +11 -0
  388. package/dist/vendor/node-shared/NodeSocket.d.ts +134 -0
  389. package/dist/vendor/node-shared/NodeSocket.js +23 -0
  390. package/dist/vendor/node-shared/NodeSocketServer.d.ts +80 -0
  391. package/dist/vendor/node-shared/NodeSocketServer.js +20 -0
  392. package/dist/vendor/node-shared/NodeStdio.d.ts +12 -0
  393. package/dist/vendor/node-shared/NodeStdio.js +9 -0
  394. package/dist/vendor/node-shared/NodeStream.d.ts +179 -0
  395. package/dist/vendor/node-shared/NodeStream.js +26 -0
  396. package/dist/vendor/node-shared/NodeTerminal.d.ts +22 -0
  397. package/dist/vendor/node-shared/NodeTerminal.js +9 -0
  398. package/dist/vendor/node-shared/index.d.ts +56 -0
  399. package/dist/vendor/node-shared/index.js +58 -0
  400. package/dist/vendor/node-shared/internal/nodeChildProcessSpawner.d.ts +4 -0
  401. package/dist/vendor/node-shared/internal/nodeChildProcessSpawner.js +7 -0
  402. package/dist/vendor/node-shared/internal/utils.d.ts +2 -0
  403. package/dist/vendor/node-shared/internal/utils.js +7 -0
  404. package/dist/vendor/platform-node-shared.d.ts +56 -0
  405. package/dist/vendor/platform-node-shared.js +58 -0
  406. package/dist/vendor/platform-node.d.ts +100 -0
  407. package/dist/vendor/platform-node.js +115 -0
  408. package/docs/README.md +129 -0
  409. package/docs/api.md +553 -0
  410. package/docs/concepts/descriptor-relative-filesystem.md +181 -0
  411. package/docs/concepts/host-bundle.md +125 -0
  412. package/docs/concepts/process-containment.md +190 -0
  413. package/docs/guides/answer-run-ownership.md +87 -0
  414. package/docs/guides/configure-the-filesystem-helper.md +152 -0
  415. package/docs/guides/contain-child-processes.md +139 -0
  416. package/docs/guides/match-files-with-glob.md +151 -0
  417. package/docs/installation.md +204 -0
  418. package/docs/quickstart.md +147 -0
  419. package/docs/troubleshooting.md +130 -0
  420. package/package.json +202 -3
  421. package/src/AtomicFileSystem.ts +415 -0
  422. package/src/EgressHttpClient.ts +327 -0
  423. package/src/HostLiveness.ts +103 -0
  424. package/src/NodeHost.ts +253 -0
  425. package/src/ProcessConfinement.ts +363 -0
  426. package/src/ProcessReaper.ts +951 -0
  427. package/src/ProcessSandbox.ts +1307 -0
  428. package/src/ScopedProcess.ts +124 -0
  429. package/src/index.ts +44 -0
  430. package/src/internal/AtomicFileSystemExecutable.ts +379 -0
  431. package/src/internal/AtomicFileSystemProtocol.ts +502 -0
  432. package/src/internal/AtomicFileSystemTransport.ts +272 -0
  433. package/src/internal/AtomicHelperError.ts +50 -0
  434. package/src/internal/AtomicHelperFault.ts +84 -0
  435. package/src/internal/PipedProcess.ts +357 -0
  436. package/src/internal/ProcSnapshot.ts +193 -0
  437. package/src/internal/ProcessCleanup.ts +99 -0
  438. package/src/internal/ProcessCleanupPolicyError.ts +30 -0
  439. package/src/internal/ProcessFault.ts +82 -0
  440. package/src/internal/ProcessSupervisor.ts +807 -0
  441. package/src/internal/SupervisorProgram.ts +309 -0
  442. package/src/internal/WindowsProcessJob.ts +114 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcSnapshot.js","sourceRoot":"","sources":["../../../src/internal/ProcSnapshot.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Process-group observation read from Linux `/proc`, with no `ps` binary.\n * @since 1.0.0\n */\n\nimport { readdirSync, readFileSync } from \"node:fs\"\nimport type * as ProcessCleanup from \"./ProcessCleanup.ts\"\n\n/**\n * The kernel's own process table, which is the production root.\n * @private\n * @since 1.0.0\n */\nexport const defaultProcRoot = \"/proc\"\n\n/**\n * The `/proc` root a platform publishes its process table under, if any.\n * @private\n * @since 1.0.0-rc.1\n */\nexport const rootFor = (platform: string): string | undefined => platform === \"linux\" ? defaultProcRoot : undefined\n\n/**\n * `/proc` reports `starttime` in USER_HZ, which Linux fixes at 100 for this\n * interface however the running kernel is configured.\n */\nconst userHz = 100\n\n/** A pid, as both a directory name and the first field of a stat line. */\nconst pidName = /^[0-9]+$/\n\n/** `/proc/stat`'s boot instant, in seconds since the epoch. */\nconst bootLine = /^btime[ \\t]+([0-9]+)$/m\n\n/** Fields 3 through 22 inclusive: state, then pgrp third, then starttime. */\nconst statFieldsAfterComm = 20\n\n/** A read that failed because the file is no longer there. */\nconst missing = (cause: unknown): boolean => (cause as NodeJS.ErrnoException).code === \"ENOENT\"\n\n/**\n * One process's group, zombie state and start time, from a `/proc/<pid>/stat`\n * line.\n *\n * `comm` is the second field, it is wrapped in parentheses, and a process may\n * put both spaces and parentheses inside it, so the numeric fields after it are\n * taken from the LAST `)` rather than by splitting the whole line. The first\n * field after that paren is field 3, so field N is at index N - 3.\n *\n * Anything that is not a stat line in that shape answers `undefined` rather\n * than a record built out of whichever fields happened to parse.\n * @private\n * @since 1.0.0\n */\nexport const parseStat = (\n text: string,\n bootMs: number\n): { readonly pgid: number; readonly member: ProcessCleanup.Member } | undefined => {\n const open = text.indexOf(\"(\")\n const close = text.lastIndexOf(\")\")\n if (open <= 0 || close < open) return undefined\n const head = text.slice(0, open).trim()\n if (!pidName.test(head)) return undefined\n const after = text.slice(close + 1).trim().split(/[ \\t]+/)\n if (after.length < statFieldsAfterComm) return undefined\n const pid = Number(head)\n const pgid = Number(after[2])\n const startedTicks = Number(after[19])\n if (!Number.isSafeInteger(pid) || !Number.isSafeInteger(pgid) || !Number.isSafeInteger(startedTicks)) {\n return undefined\n }\n return {\n pgid,\n // A zombie holds a slot without being a process the caller has to wait for,\n // so the distinction has to survive the read.\n member: { pid, startedAtMs: bootMs + Math.round((startedTicks / userHz) * 1000), zombie: after[0] === \"Z\" }\n }\n}\n\n/**\n * Every member of `pgid`, plus this process's own group, read from `/proc`.\n *\n * Answering `undefined` means the question could not be asked here, which is\n * what a non-Linux host and a `hidepid` mount both produce; the caller keeps\n * its record rather than acting on a table it could not read. A pid that\n * disappears between listing the directory and reading its `stat` is not an\n * unreadable table: it is a process that ended, which is the same end state as\n * never having been in the group, so it is skipped.\n * @private\n * @since 1.0.0\n */\nexport const snapshot = (root: string) => (pgid: number): ProcessCleanup.Snapshot | undefined => {\n let bootMs: number\n let ownGroup: number\n let names: ReadonlyArray<string>\n try {\n const boot = bootLine.exec(readFileSync(`${root}/stat`, \"utf8\"))\n if (boot === null) return undefined\n bootMs = Number(boot[1]) * 1000\n if (!Number.isSafeInteger(bootMs)) return undefined\n const self = parseStat(readFileSync(`${root}/self/stat`, \"utf8\"), bootMs)\n if (self === undefined || self.pgid <= 0) return undefined\n ownGroup = self.pgid\n names = readdirSync(root)\n } catch {\n return undefined\n }\n const members: Array<ProcessCleanup.Member> = []\n for (const name of names) {\n if (!pidName.test(name)) continue\n let text: string\n try {\n text = readFileSync(`${root}/${name}/stat`, \"utf8\")\n } catch (cause) {\n if (missing(cause)) continue\n return undefined\n }\n const parsed = parseStat(text, bootMs)\n if (parsed === undefined) return undefined\n if (parsed.pgid !== pgid) continue\n members.push(parsed.member)\n }\n return { ownGroup, members }\n}\n\n/**\n * This machine's boot instant from `${root}/stat`, in epoch milliseconds, or\n * `undefined` when the table cannot be read here.\n * @private\n * @since 1.0.0\n */\nexport const bootMs = (root: string): number | undefined => {\n try {\n const boot = bootLine.exec(readFileSync(`${root}/stat`, \"utf8\"))\n if (boot === null) return undefined\n const ms = Number(boot[1]) * 1000\n return Number.isSafeInteger(ms) ? ms : undefined\n } catch {\n return undefined\n }\n}\n\n/**\n * This process's own process group, read from `/proc/self/stat`, or `null`\n * when the file cannot be read or parsed.\n *\n * The reaper's own-group guard needs this number before it may signal any\n * group. Reading it here instead of from `ps` keeps the guard working on a\n * Linux image that ships no `procps`.\n * @private\n * @since 1.0.0\n */\nexport const ownGroup = (root: string) => (): number | null => {\n try {\n const self = parseStat(readFileSync(`${root}/self/stat`, \"utf8\"), 0)\n return self === undefined || self.pgid <= 0 ? null : self.pgid\n } catch {\n return null\n }\n}\n\n/**\n * When `pid` started, in epoch milliseconds, read from `/proc/<pid>/stat` and\n * `/proc/stat`'s `btime`.\n *\n * `gone` is the table having no entry for the pid (`ENOENT`). Every other\n * failure is `unavailable`: the question could not be asked, so the caller\n * keeps its record instead of acting on it.\n * @private\n * @since 1.0.0\n */\nexport const startedAtMs = (root: string) =>\n(\n pid: number\n):\n | { readonly _tag: \"started\"; readonly startedAtMs: number }\n | { readonly _tag: \"gone\" }\n | { readonly _tag: \"unavailable\" } =>\n{\n if (!Number.isSafeInteger(pid) || pid <= 0) return { _tag: \"unavailable\" }\n const boot = bootMs(root)\n if (boot === undefined) return { _tag: \"unavailable\" }\n let text: string\n try {\n text = readFileSync(`${root}/${pid}/stat`, \"utf8\")\n } catch (cause) {\n return missing(cause) ? { _tag: \"gone\" } : { _tag: \"unavailable\" }\n }\n const parsed = parseStat(text, boot)\n return parsed === undefined || parsed.member.pid !== pid\n ? { _tag: \"unavailable\" }\n : { _tag: \"started\", startedAtMs: parsed.member.startedAtMs }\n}\n"]}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Prepared process ownership and bounded release for Node and Bun hosts.
3
+ * @since 1.0.0
4
+ */
5
+ import { type Lifecycle } from "@smthrs/kernel/ContainedSpawner";
6
+ import * as Effect from "effect/Effect";
7
+ import type * as PlatformError from "effect/PlatformError";
8
+ import type * as ChildProcess from "effect/unstable/process/ChildProcess";
9
+ /**
10
+ * An operating-system identity observed in a group.
11
+ * @private
12
+ * @since 1.0.0
13
+ */
14
+ export interface Member {
15
+ readonly pid: number;
16
+ readonly startedAtMs: number;
17
+ readonly zombie: boolean;
18
+ }
19
+ /**
20
+ * One bounded observation, including the host group.
21
+ * @private
22
+ * @since 1.0.0
23
+ */
24
+ export interface Snapshot {
25
+ readonly ownGroup: number;
26
+ readonly members: ReadonlyArray<Member>;
27
+ }
28
+ /**
29
+ * Observations can shorten or verify cleanup, but never authorize signals.
30
+ * @private
31
+ * @since 1.0.0
32
+ */
33
+ export interface System {
34
+ readonly platform: string;
35
+ readonly snapshot: (pgid: number) => Snapshot | undefined;
36
+ /**
37
+ * True only when the kernel proves the group has no process at all. False
38
+ * means occupied or unknown; `snapshot` still decides those.
39
+ */
40
+ readonly vacant: (pgid: number) => boolean;
41
+ }
42
+ /**
43
+ * A finite termination deadline understood by the private owner.
44
+ * @private
45
+ * @since 1.0.0
46
+ */
47
+ export interface Policy {
48
+ readonly killSignal: ChildProcess.Signal;
49
+ readonly graceMs: number;
50
+ }
51
+ /**
52
+ * Normalize and validate the deadline before it enters a native timer.
53
+ * @private
54
+ * @since 1.0.0
55
+ */
56
+ export declare const policy: (options: ChildProcess.KillOptions, defaults?: ChildProcess.KillOptions) => Effect.Effect<Policy, PlatformError.PlatformError>;
57
+ /**
58
+ * Prepare a live owner before target activation. Windows attaches that owner
59
+ * to a native job; POSIX uses its independently bounded process supervisor.
60
+ * @private
61
+ * @since 1.0.0
62
+ */
63
+ export declare const lifecycle: (system: System) => Lifecycle;
64
+ //# sourceMappingURL=ProcessCleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessCleanup.d.ts","sourceRoot":"","sources":["../../../src/internal/ProcessCleanup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAEhF,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,aAAa,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,KAAK,YAAY,MAAM,sCAAsC,CAAA;AAKzE;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CACxC;AAED;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,QAAQ,GAAG,SAAS,CAAA;IACzD;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;CAC3C;AAED;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,MAAM,CAAA;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED;;;;GAIG;AACH,eAAO,MAAM,MAAM,GACjB,SAAS,YAAY,CAAC,WAAW,EACjC,WAAU,YAAY,CAAC,WAAgB,KACtC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,aAAa,CAsBhD,CAAA;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,KAAG,SAA+C,CAAA"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Prepared process ownership and bounded release for Node and Bun hosts.
3
+ * @since 1.0.0
4
+ */
5
+ import { defaultGraceMs } from "@smthrs/kernel/ContainedSpawner";
6
+ import * as Duration from "effect/Duration";
7
+ import * as Effect from "effect/Effect";
8
+ import { constants } from "node:os";
9
+ import { ProcessCleanupPolicyError } from "./ProcessCleanupPolicyError.js";
10
+ import * as Supervisor from "./ProcessSupervisor.js";
11
+ /**
12
+ * Normalize and validate the deadline before it enters a native timer.
13
+ * @private
14
+ * @since 1.0.0
15
+ */
16
+ export const policy = (options, defaults = {}) => Effect.try({
17
+ try: () => {
18
+ const killSignal = options.killSignal ?? defaults.killSignal ?? "SIGTERM";
19
+ if (killSignal === "SIGSTOP" || constants.signals[killSignal] === undefined) {
20
+ throw new ProcessCleanupPolicyError({
21
+ code: "kill_signal_unsupported",
22
+ message: `Unsupported process termination signal ${killSignal}`
23
+ });
24
+ }
25
+ const graceMs = Duration.toMillis(options.forceKillAfter ?? defaults.forceKillAfter ?? defaultGraceMs);
26
+ // Node/Bun clamp an overflowing timeout to 1 ms. Refuse that policy rather
27
+ // than silently replacing a caller's grace with immediate termination.
28
+ if (!Number.isFinite(graceMs) || graceMs < 0 || graceMs > 2_147_483_647) {
29
+ throw new ProcessCleanupPolicyError({
30
+ code: "grace_out_of_range",
31
+ message: "Process cleanup grace must fit a finite nonnegative native timer"
32
+ });
33
+ }
34
+ return { killSignal, graceMs };
35
+ },
36
+ catch: (cause) => Supervisor.failure("kill", "process cleanup policy", cause)
37
+ });
38
+ /**
39
+ * Prepare a live owner before target activation. Windows attaches that owner
40
+ * to a native job; POSIX uses its independently bounded process supervisor.
41
+ * @private
42
+ * @since 1.0.0
43
+ */
44
+ export const lifecycle = (system) => Supervisor.prepare(system, policy);
45
+ //# sourceMappingURL=ProcessCleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessCleanup.js","sourceRoot":"","sources":["../../../src/internal/ProcessCleanup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAkB,MAAM,iCAAiC,CAAA;AAChF,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC1E,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAA;AAgDpD;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,OAAiC,EACjC,WAAqC,EAAE,EACa,EAAE,CACtD,MAAM,CAAC,GAAG,CAAC;IACT,GAAG,EAAE,GAAG,EAAE;QACR,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,IAAI,SAAS,CAAA;QACzE,IAAI,UAAU,KAAK,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC;YAC5E,MAAM,IAAI,yBAAyB,CAAC;gBAClC,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,0CAA0C,UAAU,EAAE;aAChE,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,IAAI,QAAQ,CAAC,cAAc,IAAI,cAAc,CAAC,CAAA;QACtG,2EAA2E;QAC3E,uEAAuE;QACvE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,aAAa,EAAE,CAAC;YACxE,MAAM,IAAI,yBAAyB,CAAC;gBAClC,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,kEAAkE;aAC5E,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAA;IAChC,CAAC;IACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,wBAAwB,EAAE,KAAK,CAAC;CAC9E,CAAC,CAAA;AAEJ;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAc,EAAa,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA","sourcesContent":["/**\n * Prepared process ownership and bounded release for Node and Bun hosts.\n * @since 1.0.0\n */\n\nimport { defaultGraceMs, type Lifecycle } from \"@smthrs/kernel/ContainedSpawner\"\nimport * as Duration from \"effect/Duration\"\nimport * as Effect from \"effect/Effect\"\nimport type * as PlatformError from \"effect/PlatformError\"\nimport type * as ChildProcess from \"effect/unstable/process/ChildProcess\"\nimport { constants } from \"node:os\"\nimport { ProcessCleanupPolicyError } from \"./ProcessCleanupPolicyError.ts\"\nimport * as Supervisor from \"./ProcessSupervisor.ts\"\n\n/**\n * An operating-system identity observed in a group.\n * @private\n * @since 1.0.0\n */\nexport interface Member {\n readonly pid: number\n readonly startedAtMs: number\n readonly zombie: boolean\n}\n\n/**\n * One bounded observation, including the host group.\n * @private\n * @since 1.0.0\n */\nexport interface Snapshot {\n readonly ownGroup: number\n readonly members: ReadonlyArray<Member>\n}\n\n/**\n * Observations can shorten or verify cleanup, but never authorize signals.\n * @private\n * @since 1.0.0\n */\nexport interface System {\n readonly platform: string\n readonly snapshot: (pgid: number) => Snapshot | undefined\n /**\n * True only when the kernel proves the group has no process at all. False\n * means occupied or unknown; `snapshot` still decides those.\n */\n readonly vacant: (pgid: number) => boolean\n}\n\n/**\n * A finite termination deadline understood by the private owner.\n * @private\n * @since 1.0.0\n */\nexport interface Policy {\n readonly killSignal: ChildProcess.Signal\n readonly graceMs: number\n}\n\n/**\n * Normalize and validate the deadline before it enters a native timer.\n * @private\n * @since 1.0.0\n */\nexport const policy = (\n options: ChildProcess.KillOptions,\n defaults: ChildProcess.KillOptions = {}\n): Effect.Effect<Policy, PlatformError.PlatformError> =>\n Effect.try({\n try: () => {\n const killSignal = options.killSignal ?? defaults.killSignal ?? \"SIGTERM\"\n if (killSignal === \"SIGSTOP\" || constants.signals[killSignal] === undefined) {\n throw new ProcessCleanupPolicyError({\n code: \"kill_signal_unsupported\",\n message: `Unsupported process termination signal ${killSignal}`\n })\n }\n const graceMs = Duration.toMillis(options.forceKillAfter ?? defaults.forceKillAfter ?? defaultGraceMs)\n // Node/Bun clamp an overflowing timeout to 1 ms. Refuse that policy rather\n // than silently replacing a caller's grace with immediate termination.\n if (!Number.isFinite(graceMs) || graceMs < 0 || graceMs > 2_147_483_647) {\n throw new ProcessCleanupPolicyError({\n code: \"grace_out_of_range\",\n message: \"Process cleanup grace must fit a finite nonnegative native timer\"\n })\n }\n return { killSignal, graceMs }\n },\n catch: (cause) => Supervisor.failure(\"kill\", \"process cleanup policy\", cause)\n })\n\n/**\n * Prepare a live owner before target activation. Windows attaches that owner\n * to a native job; POSIX uses its independently bounded process supervisor.\n * @private\n * @since 1.0.0\n */\nexport const lifecycle = (system: System): Lifecycle => Supervisor.prepare(system, policy)\n"]}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * A process cleanup policy that cannot be honoured: a termination signal the
3
+ * platform does not define or cannot deliver, or a grace that overflows a
4
+ * native timer. `policy` reports one as the `cause` of a `PlatformError`.
5
+ *
6
+ * @since 1.0.0
7
+ */
8
+ import { Schema } from "effect";
9
+ /**
10
+ * Which part of the policy was refused.
11
+ *
12
+ * @category models
13
+ * @since 1.0.0
14
+ */
15
+ export declare const ProcessCleanupPolicyErrorCode: Schema.Literals<readonly ["kill_signal_unsupported", "grace_out_of_range"]>;
16
+ declare const ProcessCleanupPolicyError_base: Schema.Class<ProcessCleanupPolicyError, Schema.TaggedStruct<"@smthrs/platform-node/ProcessCleanupPolicyError", {
17
+ readonly code: Schema.Literals<readonly ["kill_signal_unsupported", "grace_out_of_range"]>;
18
+ readonly message: Schema.String;
19
+ }>, import("effect/Cause").YieldableError>;
20
+ /**
21
+ * A cleanup policy outside what a native timer and the platform allow.
22
+ *
23
+ * @category errors
24
+ * @since 1.0.0
25
+ */
26
+ export declare class ProcessCleanupPolicyError extends ProcessCleanupPolicyError_base {
27
+ readonly name = "ProcessCleanupPolicyError";
28
+ }
29
+ export {};
30
+ //# sourceMappingURL=ProcessCleanupPolicyError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessCleanupPolicyError.d.ts","sourceRoot":"","sources":["../../../src/internal/ProcessCleanupPolicyError.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,6EAAqE,CAAA;;;;;AAE/G;;;;;GAKG;AACH,qBAAa,yBAA0B,SAAQ,8BAG9C;IACC,SAAkB,IAAI,+BAA8B;CACrD"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * A process cleanup policy that cannot be honoured: a termination signal the
3
+ * platform does not define or cannot deliver, or a grace that overflows a
4
+ * native timer. `policy` reports one as the `cause` of a `PlatformError`.
5
+ *
6
+ * @since 1.0.0
7
+ */
8
+ import { Schema } from "effect";
9
+ /**
10
+ * Which part of the policy was refused.
11
+ *
12
+ * @category models
13
+ * @since 1.0.0
14
+ */
15
+ export const ProcessCleanupPolicyErrorCode = Schema.Literals(["kill_signal_unsupported", "grace_out_of_range"]);
16
+ /**
17
+ * A cleanup policy outside what a native timer and the platform allow.
18
+ *
19
+ * @category errors
20
+ * @since 1.0.0
21
+ */
22
+ export class ProcessCleanupPolicyError extends Schema.TaggedError()("@smthrs/platform-node/ProcessCleanupPolicyError", { code: ProcessCleanupPolicyErrorCode, message: Schema.String }) {
23
+ name = "ProcessCleanupPolicyError";
24
+ }
25
+ //# sourceMappingURL=ProcessCleanupPolicyError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessCleanupPolicyError.js","sourceRoot":"","sources":["../../../src/internal/ProcessCleanupPolicyError.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,yBAAyB,EAAE,oBAAoB,CAAC,CAAC,CAAA;AAE/G;;;;;GAKG;AACH,MAAM,OAAO,yBAA0B,SAAQ,MAAM,CAAC,WAAW,EAA6B,CAC5F,iDAAiD,EACjD,EAAE,IAAI,EAAE,6BAA6B,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAChE;IACmB,IAAI,GAAG,2BAA2B,CAAA;CACrD","sourcesContent":["/**\n * A process cleanup policy that cannot be honoured: a termination signal the\n * platform does not define or cannot deliver, or a grace that overflows a\n * native timer. `policy` reports one as the `cause` of a `PlatformError`.\n *\n * @since 1.0.0\n */\n\nimport { Schema } from \"effect\"\n\n/**\n * Which part of the policy was refused.\n *\n * @category models\n * @since 1.0.0\n */\nexport const ProcessCleanupPolicyErrorCode = Schema.Literals([\"kill_signal_unsupported\", \"grace_out_of_range\"])\n\n/**\n * A cleanup policy outside what a native timer and the platform allow.\n *\n * @category errors\n * @since 1.0.0\n */\nexport class ProcessCleanupPolicyError extends Schema.TaggedError<ProcessCleanupPolicyError>()(\n \"@smthrs/platform-node/ProcessCleanupPolicyError\",\n { code: ProcessCleanupPolicyErrorCode, message: Schema.String }\n) {\n override readonly name = \"ProcessCleanupPolicyError\"\n}\n"]}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * A process supervision failure that is not a native errno: a supervisor that
3
+ * broke its status protocol, a bound that was exceeded, or a cleanup that could
4
+ * not be verified. `ProcessSupervisor` and `WindowsProcessJob` report one as the
5
+ * `cause` of a `PlatformError`, so a caller classifies it by `_tag` and `code`.
6
+ * @since 1.0.0
7
+ */
8
+ import { Schema } from "effect";
9
+ /**
10
+ * Which supervision rule failed.
11
+ * @category models
12
+ * @since 1.0.0
13
+ */
14
+ export declare const ProcessFaultCode: Schema.Literals<readonly ["supervisor_timeout", "runtime_unsupported", "identity_mismatch", "control_channel_closed", "configuration_too_large", "outcome_missing", "status_too_large", "status_invalid", "status_unknown", "cleanup_unverified", "owner_identity_missing"]>;
15
+ /**
16
+ * The stable code of a {@link ProcessFault}.
17
+ * @category models
18
+ * @since 1.0.0
19
+ */
20
+ export type ProcessFaultCode = typeof ProcessFaultCode.Type;
21
+ declare const ProcessFault_base: Schema.Class<ProcessFault, Schema.TaggedStruct<"@smthrs/platform-node/ProcessFault", {
22
+ readonly code: Schema.Literals<readonly ["supervisor_timeout", "runtime_unsupported", "identity_mismatch", "control_channel_closed", "configuration_too_large", "outcome_missing", "status_too_large", "status_invalid", "status_unknown", "cleanup_unverified", "owner_identity_missing"]>;
23
+ readonly message: Schema.String;
24
+ readonly cause: Schema.optional<Schema.Unknown>;
25
+ }>, import("effect/Cause").YieldableError>;
26
+ /**
27
+ * A supervision failure with a stable code.
28
+ * @category errors
29
+ * @since 1.0.0
30
+ */
31
+ export declare class ProcessFault extends ProcessFault_base {
32
+ readonly name = "ProcessFault";
33
+ }
34
+ /**
35
+ * A process fault with a stable code.
36
+ * @category constructors
37
+ * @since 1.0.0
38
+ */
39
+ export declare const processFault: (code: ProcessFaultCode, message: string, detail?: {
40
+ readonly cause?: unknown;
41
+ }) => ProcessFault;
42
+ declare const NativeProcessError_base: Schema.Class<NativeProcessError, Schema.TaggedStruct<"@smthrs/platform-node/NativeProcessError", {
43
+ readonly message: Schema.String;
44
+ readonly code: Schema.optional<Schema.String>;
45
+ readonly errno: Schema.optional<Schema.Number>;
46
+ readonly reason: Schema.optional<Schema.String>;
47
+ readonly syscall: Schema.optional<Schema.String>;
48
+ readonly path: Schema.optional<Schema.String>;
49
+ readonly signal: Schema.optional<Schema.String>;
50
+ }>, import("effect/Cause").YieldableError>;
51
+ /**
52
+ * A native process failure as data: the errno (`code`), `syscall`, `path` or
53
+ * `signal` the platform or the isolated owner reported, kept as fields of the
54
+ * `PlatformError` cause so callers read the platform's own vocabulary.
55
+ * `reason` is the stable code the owner program gave its own fault.
56
+ * @category errors
57
+ * @since 1.0.0
58
+ */
59
+ export declare class NativeProcessError extends NativeProcessError_base {
60
+ readonly name = "NativeProcessError";
61
+ }
62
+ export {};
63
+ //# sourceMappingURL=ProcessFault.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessFault.d.ts","sourceRoot":"","sources":["../../../src/internal/ProcessFault.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,8QAY3B,CAAA;AAEF;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,IAAI,CAAA;;;;;;AAE3D;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,iBAIhC;IACA,SAAkB,IAAI,kBAAiB;CACxC;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,GACvB,MAAM,gBAAgB,EACtB,SAAS,MAAM,EACf,SAAQ;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,KACxC,YAA8D,CAAA;;;;;;;;;;AAEjE;;;;;;;GAOG;AACH,qBAAa,kBAAmB,SAAQ,uBAWvC;IACC,SAAkB,IAAI,wBAAuB;CAC9C"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * A process supervision failure that is not a native errno: a supervisor that
3
+ * broke its status protocol, a bound that was exceeded, or a cleanup that could
4
+ * not be verified. `ProcessSupervisor` and `WindowsProcessJob` report one as the
5
+ * `cause` of a `PlatformError`, so a caller classifies it by `_tag` and `code`.
6
+ * @since 1.0.0
7
+ */
8
+ import { Schema } from "effect";
9
+ /**
10
+ * Which supervision rule failed.
11
+ * @category models
12
+ * @since 1.0.0
13
+ */
14
+ export const ProcessFaultCode = Schema.Literals([
15
+ "supervisor_timeout",
16
+ "runtime_unsupported",
17
+ "identity_mismatch",
18
+ "control_channel_closed",
19
+ "configuration_too_large",
20
+ "outcome_missing",
21
+ "status_too_large",
22
+ "status_invalid",
23
+ "status_unknown",
24
+ "cleanup_unverified",
25
+ "owner_identity_missing"
26
+ ]);
27
+ /**
28
+ * A supervision failure with a stable code.
29
+ * @category errors
30
+ * @since 1.0.0
31
+ */
32
+ export class ProcessFault extends Schema.TaggedError()("@smthrs/platform-node/ProcessFault", {
33
+ code: ProcessFaultCode,
34
+ message: Schema.String,
35
+ cause: Schema.optional(Schema.Unknown)
36
+ }) {
37
+ name = "ProcessFault";
38
+ }
39
+ /**
40
+ * A process fault with a stable code.
41
+ * @category constructors
42
+ * @since 1.0.0
43
+ */
44
+ export const processFault = (code, message, detail = {}) => new ProcessFault({ ...detail, code, message });
45
+ /**
46
+ * A native process failure as data: the errno (`code`), `syscall`, `path` or
47
+ * `signal` the platform or the isolated owner reported, kept as fields of the
48
+ * `PlatformError` cause so callers read the platform's own vocabulary.
49
+ * `reason` is the stable code the owner program gave its own fault.
50
+ * @category errors
51
+ * @since 1.0.0
52
+ */
53
+ export class NativeProcessError extends Schema.TaggedError()("@smthrs/platform-node/NativeProcessError", {
54
+ message: Schema.String,
55
+ code: Schema.optional(Schema.String),
56
+ errno: Schema.optional(Schema.Number),
57
+ reason: Schema.optional(Schema.String),
58
+ syscall: Schema.optional(Schema.String),
59
+ path: Schema.optional(Schema.String),
60
+ signal: Schema.optional(Schema.String)
61
+ }) {
62
+ name = "NativeProcessError";
63
+ }
64
+ //# sourceMappingURL=ProcessFault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessFault.js","sourceRoot":"","sources":["../../../src/internal/ProcessFault.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC9C,oBAAoB;IACpB,qBAAqB;IACrB,mBAAmB;IACnB,wBAAwB;IACxB,yBAAyB;IACzB,iBAAiB;IACjB,kBAAkB;IAClB,gBAAgB;IAChB,gBAAgB;IAChB,oBAAoB;IACpB,wBAAwB;CACzB,CAAC,CAAA;AASF;;;;GAIG;AACH,MAAM,OAAO,YAAa,SAAQ,MAAM,CAAC,WAAW,EAAgB,CAAC,oCAAoC,EAAE;IACzG,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;CACvC,CAAC;IACkB,IAAI,GAAG,cAAc,CAAA;CACxC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,IAAsB,EACtB,OAAe,EACf,SAAuC,EAAE,EAC3B,EAAE,CAAC,IAAI,YAAY,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;AAEjE;;;;;;;GAOG;AACH,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,WAAW,EAAsB,CAC9E,0CAA0C,EAC1C;IACE,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;CACvC,CACF;IACmB,IAAI,GAAG,oBAAoB,CAAA;CAC9C","sourcesContent":["/**\n * A process supervision failure that is not a native errno: a supervisor that\n * broke its status protocol, a bound that was exceeded, or a cleanup that could\n * not be verified. `ProcessSupervisor` and `WindowsProcessJob` report one as the\n * `cause` of a `PlatformError`, so a caller classifies it by `_tag` and `code`.\n * @since 1.0.0\n */\n\nimport { Schema } from \"effect\"\n\n/**\n * Which supervision rule failed.\n * @category models\n * @since 1.0.0\n */\nexport const ProcessFaultCode = Schema.Literals([\n \"supervisor_timeout\",\n \"runtime_unsupported\",\n \"identity_mismatch\",\n \"control_channel_closed\",\n \"configuration_too_large\",\n \"outcome_missing\",\n \"status_too_large\",\n \"status_invalid\",\n \"status_unknown\",\n \"cleanup_unverified\",\n \"owner_identity_missing\"\n])\n\n/**\n * The stable code of a {@link ProcessFault}.\n * @category models\n * @since 1.0.0\n */\nexport type ProcessFaultCode = typeof ProcessFaultCode.Type\n\n/**\n * A supervision failure with a stable code.\n * @category errors\n * @since 1.0.0\n */\nexport class ProcessFault extends Schema.TaggedError<ProcessFault>()(\"@smthrs/platform-node/ProcessFault\", {\n code: ProcessFaultCode,\n message: Schema.String,\n cause: Schema.optional(Schema.Unknown)\n}) {\n override readonly name = \"ProcessFault\"\n}\n\n/**\n * A process fault with a stable code.\n * @category constructors\n * @since 1.0.0\n */\nexport const processFault = (\n code: ProcessFaultCode,\n message: string,\n detail: { readonly cause?: unknown } = {}\n): ProcessFault => new ProcessFault({ ...detail, code, message })\n\n/**\n * A native process failure as data: the errno (`code`), `syscall`, `path` or\n * `signal` the platform or the isolated owner reported, kept as fields of the\n * `PlatformError` cause so callers read the platform's own vocabulary.\n * `reason` is the stable code the owner program gave its own fault.\n * @category errors\n * @since 1.0.0\n */\nexport class NativeProcessError extends Schema.TaggedError<NativeProcessError>()(\n \"@smthrs/platform-node/NativeProcessError\",\n {\n message: Schema.String,\n code: Schema.optional(Schema.String),\n errno: Schema.optional(Schema.Number),\n reason: Schema.optional(Schema.String),\n syscall: Schema.optional(Schema.String),\n path: Schema.optional(Schema.String),\n signal: Schema.optional(Schema.String)\n }\n) {\n override readonly name = \"NativeProcessError\"\n}\n"]}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Private parent connection for a POSIX process owner. Effect retains ownership
3
+ * of the caller's streams; separate sockets carry requests and lifetime status.
4
+ * @since 1.0.0
5
+ */
6
+ import type { Lifecycle } from "@smthrs/kernel/ContainedSpawner";
7
+ import * as Effect from "effect/Effect";
8
+ import * as PlatformError from "effect/PlatformError";
9
+ import * as ChildProcess from "effect/unstable/process/ChildProcess";
10
+ import { type ChildProcessHandle, ExitCode } from "effect/unstable/process/ChildProcessSpawner";
11
+ import { type Socket } from "node:net";
12
+ import type { Policy, Snapshot, System } from "./ProcessCleanup.ts";
13
+ /**
14
+ * Actual service pid, distinct from the owner recorded by the host.
15
+ * @private
16
+ * @since 1.0.0
17
+ */
18
+ export declare const targetPidOf: (handle: ChildProcessHandle) => number | undefined;
19
+ /**
20
+ * Preserve the platform's errno and signal vocabulary across the private wire.
21
+ * @private
22
+ * @since 1.0.0
23
+ */
24
+ export declare const failure: (method: string, command: string, cause: unknown) => PlatformError.PlatformError;
25
+ /**
26
+ * The observation behind an unverified cleanup, in the message itself: a
27
+ * failure report usually shows only the message, and whether the receipt, the
28
+ * kernel or the snapshot was missing decides host load versus a live survivor.
29
+ * @private
30
+ * @since 1.0.0
31
+ */
32
+ export declare const unverifiedCleanup: (control: {
33
+ readonly fault: unknown;
34
+ readonly cleanupFailed: boolean;
35
+ readonly cleanupAcknowledged: boolean;
36
+ readonly targetDone: boolean;
37
+ }, cleanupRequired: boolean, vacant: boolean, observed: Snapshot | undefined) => string;
38
+ /**
39
+ * Standalone application executables do not implement the runtime's eval CLI.
40
+ * Refuse them before spawning rather than recursively launching the application.
41
+ * @private
42
+ * @since 1.0.0
43
+ */
44
+ export declare const bootstrapArguments: (runtime: {
45
+ readonly bun: boolean;
46
+ readonly main: string;
47
+ readonly sea: boolean;
48
+ }) => Effect.Effect<never, PlatformError.PlatformError, never> | Effect.Effect<string[], never, never>;
49
+ /**
50
+ * Connect an owner to its authenticated private channel.
51
+ * @private
52
+ * @since 1.0.0
53
+ */
54
+ export declare const connectOwner: (path: string, environment: Readonly<Record<string, string | undefined>>) => Socket;
55
+ /**
56
+ * Kept separate from Effect scopes so native socket callbacks only settle
57
+ * promises; none can start an unowned fiber or signal an observed process id.
58
+ * @private
59
+ * @since 1.0.0
60
+ */
61
+ export declare class Control {
62
+ readonly ready: {
63
+ promise: Promise<number>;
64
+ resolve: (value: number) => void;
65
+ reject: (cause: unknown) => void;
66
+ };
67
+ readonly started: {
68
+ promise: Promise<void>;
69
+ resolve: (value: void) => void;
70
+ reject: (cause: unknown) => void;
71
+ };
72
+ readonly exited: {
73
+ promise: Promise<ExitCode>;
74
+ resolve: (value: ExitCode) => void;
75
+ reject: (cause: unknown) => void;
76
+ };
77
+ readonly lost: {
78
+ promise: Promise<never>;
79
+ resolve: (value: never) => void;
80
+ reject: (cause: unknown) => void;
81
+ };
82
+ readonly ended: {
83
+ promise: Promise<void>;
84
+ resolve: (value: void) => void;
85
+ reject: (cause: unknown) => void;
86
+ };
87
+ readonly requestsReady: {
88
+ promise: Promise<void>;
89
+ resolve: (value: void) => void;
90
+ reject: (cause: unknown) => void;
91
+ };
92
+ readonly directory: string;
93
+ readonly path: string;
94
+ readonly requestPath: string;
95
+ readonly server: import("node:net").Server;
96
+ readonly requestServer: import("node:net").Server;
97
+ readonly listening: Promise<void>;
98
+ private readonly key;
99
+ private readonly connections;
100
+ socket: Socket | undefined;
101
+ requestSocket: Socket | undefined;
102
+ targetDone: boolean;
103
+ ownerCreation: unknown;
104
+ targetPid: number | undefined;
105
+ /** The owner's group guardian: a member that is neither target nor owner. */
106
+ guardianPid: number | undefined;
107
+ ownerDone: boolean;
108
+ spawnFailed: boolean;
109
+ cleanupFailed: boolean;
110
+ cleanupAcknowledged: boolean;
111
+ activationSent: boolean;
112
+ closeSent: boolean;
113
+ fault: unknown;
114
+ onTargetExit: () => void;
115
+ onCleanup: () => void;
116
+ private receivedReady;
117
+ private receivedStarted;
118
+ private withdrawn;
119
+ constructor(transport?: "native" | "tls");
120
+ private makeServer;
121
+ /** Only the trusted owner receives this environment; target configuration replaces it. */
122
+ environment(): Readonly<Record<string, string>>;
123
+ /** The test peer uses the same authenticated transport as the isolated owner. */
124
+ connect(requests?: boolean): Socket;
125
+ /** Validate the stored READY after the raw spawn effect has returned its pid. */
126
+ withdraw(pid: number, actual: number): void;
127
+ /** Request EOF asks for cleanup; leave its independent status reader intact. */
128
+ disconnect(): void;
129
+ dispose(): void;
130
+ rawEnded(): void;
131
+ write(message: unknown): Promise<void>;
132
+ private closed;
133
+ private acceptRequests;
134
+ private accept;
135
+ private receive;
136
+ }
137
+ /**
138
+ * Prepare a private, independently bounded process owner before target launch.
139
+ * @private
140
+ * @since 1.0.0
141
+ */
142
+ export declare const prepare: (system: System, policy: (options: ChildProcess.KillOptions, defaults?: ChildProcess.KillOptions) => Effect.Effect<Policy, PlatformError.PlatformError>, transport?: "native" | "tls") => Lifecycle;
143
+ //# sourceMappingURL=ProcessSupervisor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessSupervisor.d.ts","sourceRoot":"","sources":["../../../src/internal/ProcessSupervisor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAGhE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,aAAa,MAAM,sBAAsB,CAAA;AAGrD,OAAO,KAAK,YAAY,MAAM,sCAAsC,CAAA;AACpE,OAAO,EAAE,KAAK,kBAAkB,EAAE,QAAQ,EAAc,MAAM,6CAA6C,CAAA;AAG3G,OAAO,EAAkC,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAKtE,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAiBnE;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,kBAAkB,KAAG,MAAM,GAAG,SAA2C,CAAA;AAkB7G;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,QAAQ,MAAM,EAAE,SAAS,MAAM,EAAE,OAAO,OAAO,KAAG,aAAa,CAAC,aAoBvF,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS;IACP,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAA;IACrC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;CAC7B,EACD,iBAAiB,OAAO,EACxB,QAAQ,OAAO,EACf,UAAU,QAAQ,GAAG,SAAS,KAC7B,MAuBW,CAAA;AA6Bd;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS;IAAE,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;CAAE,qGAYnC,CAAA;AAKhF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,aAAa,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,KAAG,MAUtG,CAAA;AAED;;;;;GAKG;AACH,qBAAa,OAAO;IAClB,QAAQ,CAAC,KAAK;;oCAzEc,IAAI;wBACX,OAAO,KAAK,IAAI;MAwEH;IAClC,QAAQ,CAAC,OAAO;;kCA1EY,IAAI;wBACX,OAAO,KAAK,IAAI;MAyEH;IAClC,QAAQ,CAAC,MAAM;;sCA3Ea,IAAI;wBACX,OAAO,KAAK,IAAI;MA0EA;IACrC,QAAQ,CAAC,IAAI;;mCA5Ee,IAAI;wBACX,OAAO,KAAK,IAAI;MA2EL;IAChC,QAAQ,CAAC,KAAK;;kCA7Ec,IAAI;wBACX,OAAO,KAAK,IAAI;MA4EL;IAChC,QAAQ,CAAC,aAAa;;kCA9EM,IAAI;wBACX,OAAO,KAAK,IAAI;MA6EG;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,MAAM,4BAAA;IACf,QAAQ,CAAC,aAAa,4BAAA;IACtB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,UAAU,UAAQ;IAClB,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,6EAA6E;IAC7E,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,SAAS,UAAQ;IACjB,WAAW,UAAQ;IACnB,aAAa,UAAQ;IACrB,mBAAmB,UAAQ;IAC3B,cAAc,UAAQ;IACtB,SAAS,UAAQ;IACjB,KAAK,EAAE,OAAO,CAAA;IACd,YAAY,EAAE,MAAM,IAAI,CAAW;IACnC,SAAS,EAAE,MAAM,IAAI,CAAW;IAChC,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,SAAS,CAAQ;gBAEb,SAAS,GAAE,QAAQ,GAAG,KAAgB;IA+BlD,OAAO,CAAC,UAAU;IAelB,0FAA0F;IAC1F,WAAW,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAa/C,iFAAiF;IACjF,OAAO,CAAC,QAAQ,UAAQ,GAAG,MAAM;IAIjC,iFAAiF;IACjF,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAa3C,gFAAgF;IAChF,UAAU,IAAI,IAAI;IAIlB,OAAO,IAAI,IAAI;IASf,QAAQ,IAAI,IAAI;IAOhB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBtC,OAAO,CAAC,MAAM;IAYd,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,MAAM;IAgCd,OAAO,CAAC,OAAO;CAsEhB;AAED;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAClB,QAAQ,MAAM,EACd,QAAQ,CACN,OAAO,EAAE,YAAY,CAAC,WAAW,EACjC,QAAQ,CAAC,EAAE,YAAY,CAAC,WAAW,KAChC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC,EACvD,YAAW,QAAQ,GAAG,KAAgB,KACrC,SAqTC,CAAA"}