@smthrs/platform-node 1.0.0-rc.5 → 1.0.0-rc.6

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 (274) hide show
  1. package/README.md +2 -2
  2. package/bin/win32-x64/smithers-jj-export.exe +0 -0
  3. package/dist/cjs/EgressHttpClient.d.ts +1 -1
  4. package/dist/cjs/EgressHttpClient.d.ts.map +1 -1
  5. package/dist/cjs/EgressHttpClient.js +4 -4
  6. package/dist/cjs/EgressHttpClient.js.map +2 -2
  7. package/dist/cjs/NodeHost.d.ts +2 -2
  8. package/dist/cjs/NodeHost.d.ts.map +1 -1
  9. package/dist/cjs/NodeHost.js.map +2 -2
  10. package/dist/cjs/ProcessConfinement.js +1 -1
  11. package/dist/cjs/ProcessConfinement.js.map +2 -2
  12. package/dist/cjs/ProcessReaper.d.ts +1 -1
  13. package/dist/cjs/ProcessReaper.d.ts.map +1 -1
  14. package/dist/cjs/ProcessReaper.js +1 -1
  15. package/dist/cjs/ProcessReaper.js.map +1 -1
  16. package/dist/cjs/ScopedProcess.d.ts +2 -2
  17. package/dist/cjs/ScopedProcess.d.ts.map +1 -1
  18. package/dist/cjs/ScopedProcess.js +1 -1
  19. package/dist/cjs/ScopedProcess.js.map +2 -2
  20. package/dist/cjs/internal/PipedProcess.d.ts +2 -2
  21. package/dist/cjs/internal/PipedProcess.d.ts.map +1 -1
  22. package/dist/cjs/internal/PipedProcess.js +2 -2
  23. package/dist/cjs/internal/PipedProcess.js.map +2 -2
  24. package/dist/cjs/internal/ProcessCleanup.d.ts +1 -1
  25. package/dist/cjs/internal/ProcessCleanup.d.ts.map +1 -1
  26. package/dist/cjs/internal/ProcessCleanup.js.map +1 -1
  27. package/dist/cjs/internal/ProcessSupervisor.d.ts +2 -2
  28. package/dist/cjs/internal/ProcessSupervisor.d.ts.map +1 -1
  29. package/dist/cjs/internal/ProcessSupervisor.js +2 -2
  30. package/dist/cjs/internal/ProcessSupervisor.js.map +2 -2
  31. package/dist/esm/EgressHttpClient.d.ts +1 -1
  32. package/dist/esm/EgressHttpClient.d.ts.map +1 -1
  33. package/dist/esm/EgressHttpClient.js +4 -4
  34. package/dist/esm/EgressHttpClient.js.map +1 -1
  35. package/dist/esm/NodeHost.d.ts +2 -2
  36. package/dist/esm/NodeHost.d.ts.map +1 -1
  37. package/dist/esm/NodeHost.js.map +1 -1
  38. package/dist/esm/ProcessConfinement.js +1 -1
  39. package/dist/esm/ProcessConfinement.js.map +1 -1
  40. package/dist/esm/ProcessReaper.d.ts +1 -1
  41. package/dist/esm/ProcessReaper.d.ts.map +1 -1
  42. package/dist/esm/ProcessReaper.js +1 -1
  43. package/dist/esm/ProcessReaper.js.map +1 -1
  44. package/dist/esm/ScopedProcess.d.ts +2 -2
  45. package/dist/esm/ScopedProcess.d.ts.map +1 -1
  46. package/dist/esm/ScopedProcess.js +1 -1
  47. package/dist/esm/ScopedProcess.js.map +1 -1
  48. package/dist/esm/internal/PipedProcess.d.ts +2 -2
  49. package/dist/esm/internal/PipedProcess.d.ts.map +1 -1
  50. package/dist/esm/internal/PipedProcess.js +2 -2
  51. package/dist/esm/internal/PipedProcess.js.map +1 -1
  52. package/dist/esm/internal/ProcessCleanup.d.ts +1 -1
  53. package/dist/esm/internal/ProcessCleanup.d.ts.map +1 -1
  54. package/dist/esm/internal/ProcessCleanup.js.map +1 -1
  55. package/dist/esm/internal/ProcessSupervisor.d.ts +2 -2
  56. package/dist/esm/internal/ProcessSupervisor.d.ts.map +1 -1
  57. package/dist/esm/internal/ProcessSupervisor.js +2 -2
  58. package/dist/esm/internal/ProcessSupervisor.js.map +1 -1
  59. package/dist/vendor/adapters.json +622 -382
  60. package/dist/vendor/{chunk-42QKY6T6.js → chunk-2ZAGBWTH.js} +1 -1
  61. package/dist/vendor/{chunk-3GR5VZ2M.js → chunk-3SL3HKQA.js} +3 -3
  62. package/dist/vendor/{chunk-VANKHF46.js → chunk-423HXGL6.js} +55 -23
  63. package/dist/vendor/{chunk-6ME2W7TF.js → chunk-4WIQ2XN7.js} +2 -2
  64. package/dist/vendor/{chunk-Y35ZAO5U.js → chunk-6FSJ2PMW.js} +8 -8
  65. package/dist/vendor/{chunk-5ZMHBXIK.js → chunk-6L2NJEOV.js} +11 -4
  66. package/dist/vendor/{chunk-TFIKFFSC.js → chunk-7NMJM44J.js} +2 -2
  67. package/dist/vendor/{chunk-OXNGN5H7.js → chunk-A7UXCEJA.js} +1 -1
  68. package/dist/vendor/chunk-ADP5LRUF.js +274 -0
  69. package/dist/vendor/{chunk-DS7GF46S.js → chunk-AWNTTSHL.js} +2 -2
  70. package/dist/vendor/{chunk-IIJ52ZU6.js → chunk-BUKVIAEM.js} +2 -2
  71. package/dist/vendor/{chunk-BKTBUBQY.js → chunk-BY3SDXID.js} +71 -7
  72. package/dist/vendor/{chunk-JJ24ARBQ.js → chunk-C3PGUWW5.js} +53 -33
  73. package/dist/vendor/{chunk-J7A4CZDO.js → chunk-D2ZL4PLZ.js} +8 -7
  74. package/dist/vendor/{chunk-XDKNKFBW.js → chunk-D4HEMNGU.js} +2 -2
  75. package/dist/vendor/{chunk-DVOAHXPG.js → chunk-FFD6R5JZ.js} +3 -3
  76. package/dist/vendor/{chunk-UFH5UUZK.js → chunk-HDV6VIRM.js} +1 -1
  77. package/dist/vendor/chunk-IWSDM4CG.js +16 -0
  78. package/dist/vendor/{chunk-KUUXSID7.js → chunk-KABHKTVG.js} +2 -2
  79. package/dist/vendor/{chunk-B3FZ67QU.js → chunk-KFDBU6RR.js} +4 -3
  80. package/dist/vendor/chunk-LNWGIDIG.js +20 -0
  81. package/dist/vendor/{chunk-TXKLEBBL.js → chunk-MUEED3C3.js} +3 -2
  82. package/dist/vendor/{chunk-EZWY45HP.js → chunk-N6TK35N5.js} +2 -2
  83. package/dist/vendor/{chunk-QPLDT6A6.js → chunk-NQO6V4KI.js} +29 -13
  84. package/dist/vendor/{chunk-AMQKOQNT.js → chunk-NTEWGPPG.js} +9 -9
  85. package/dist/vendor/chunk-NUJQMLJP.js +325 -0
  86. package/dist/vendor/{chunk-54RLBMTZ.js → chunk-OF3N2FN4.js} +1 -1
  87. package/dist/vendor/{chunk-RO2R4MJH.js → chunk-PA32ARKD.js} +17 -17
  88. package/dist/vendor/{chunk-JG5TTWPT.js → chunk-PECOFLCU.js} +3 -3
  89. package/dist/vendor/{chunk-VZBDV3TV.js → chunk-PU7QVYND.js} +2 -2
  90. package/dist/vendor/{chunk-2Y7WC4KU.js → chunk-QHR2RC5M.js} +2 -2
  91. package/dist/vendor/{chunk-QYBKAIA6.js → chunk-R327POEZ.js} +2 -2
  92. package/dist/vendor/chunk-RKVXYKHJ.js +29 -0
  93. package/dist/vendor/{chunk-XH4U3JSV.js → chunk-RQH5DSBA.js} +2 -2
  94. package/dist/vendor/{chunk-DWSHTSVX.js → chunk-S6QUQLBV.js} +5 -5
  95. package/dist/vendor/{chunk-KOZMM5PZ.js → chunk-UPIQ52FQ.js} +12 -12
  96. package/dist/vendor/{chunk-EGBNVEEW.js → chunk-UUQXJRMK.js} +1 -1
  97. package/dist/vendor/{chunk-LEUPYT3Q.js → chunk-UUYTTEDH.js} +1 -1
  98. package/dist/vendor/{chunk-NBVRTDTV.js → chunk-V2EB7FHY.js} +2 -2
  99. package/dist/vendor/{chunk-M32LDTW7.js → chunk-VIWU4EBF.js} +2 -2
  100. package/dist/vendor/{chunk-SIR62W3Y.js → chunk-VWSWEUN5.js} +51 -31
  101. package/dist/vendor/{chunk-MBSKBQ5D.js → chunk-WPZDL2D7.js} +1 -1
  102. package/dist/vendor/chunk-YDY5P7GL.js +20 -0
  103. package/dist/vendor/{chunk-FNZOJHSV.js → chunk-YFD4QFIL.js} +17 -17
  104. package/dist/vendor/{chunk-GXCHI7BM.js → chunk-ZVJCBTJG.js} +5 -5
  105. package/dist/vendor/cjs/node/NodeAddressResolver.d.ts +16 -0
  106. package/dist/vendor/cjs/node/NodeAddressResolver.js +1 -0
  107. package/dist/vendor/cjs/node/NodeChildProcessSpawner.d.ts +1 -0
  108. package/dist/vendor/cjs/node/NodeClusterHttp.d.ts +13 -22
  109. package/dist/vendor/cjs/node/NodeClusterSocket.d.ts +14 -8
  110. package/dist/vendor/cjs/node/NodeCrypto.d.ts +1 -0
  111. package/dist/vendor/cjs/node/NodeDatagramSocket.d.ts +10 -0
  112. package/dist/vendor/cjs/node/NodeDatagramSocket.js +1 -0
  113. package/dist/vendor/cjs/node/NodeDns.d.ts +51 -0
  114. package/dist/vendor/cjs/node/NodeDns.js +1 -0
  115. package/dist/vendor/cjs/node/NodeFileSystem.d.ts +1 -0
  116. package/dist/vendor/cjs/node/NodeHttpClient.d.ts +21 -2
  117. package/dist/vendor/cjs/node/NodeHttpIncomingMessage.d.ts +5 -3
  118. package/dist/vendor/cjs/node/NodeHttpPlatform.d.ts +8 -6
  119. package/dist/vendor/cjs/node/NodeHttpServer.d.ts +21 -10
  120. package/dist/vendor/cjs/node/NodeHttpServerRequest.d.ts +4 -1
  121. package/dist/vendor/cjs/node/NodeMultipart.d.ts +5 -1
  122. package/dist/vendor/cjs/node/NodeMultipartParser.d.ts +9 -1
  123. package/dist/vendor/cjs/node/NodePath.d.ts +3 -0
  124. package/dist/vendor/cjs/node/NodeRedis.d.ts +5 -1
  125. package/dist/vendor/cjs/node/NodeRuntime.d.ts +3 -0
  126. package/dist/vendor/cjs/node/NodeServices.d.ts +4 -1
  127. package/dist/vendor/cjs/node/NodeSink.d.ts +1 -0
  128. package/dist/vendor/cjs/node/NodeSocket.d.ts +10 -3
  129. package/dist/vendor/cjs/node/NodeSocketServer.d.ts +1 -0
  130. package/dist/vendor/cjs/node/NodeStdio.d.ts +1 -0
  131. package/dist/vendor/cjs/node/NodeStream.d.ts +1 -0
  132. package/dist/vendor/cjs/node/NodeTerminal.d.ts +6 -3
  133. package/dist/vendor/cjs/node/NodeWorker.d.ts +3 -1
  134. package/dist/vendor/cjs/node/NodeWorkerRunner.d.ts +2 -1
  135. package/dist/vendor/cjs/node/Undici.d.ts +3 -0
  136. package/dist/vendor/cjs/node/index.d.ts +40 -0
  137. package/dist/vendor/cjs/node-shared/NodeAddressResolver.d.ts +13 -0
  138. package/dist/vendor/cjs/node-shared/NodeAddressResolver.js +1 -0
  139. package/dist/vendor/cjs/node-shared/NodeChildProcessSpawner.d.ts +12 -3
  140. package/dist/vendor/cjs/node-shared/NodeClusterSocket.d.ts +17 -4
  141. package/dist/vendor/cjs/node-shared/NodeCrypto.d.ts +3 -0
  142. package/dist/vendor/cjs/node-shared/NodeDatagramSocket.d.ts +246 -0
  143. package/dist/vendor/cjs/node-shared/NodeDatagramSocket.js +1 -0
  144. package/dist/vendor/cjs/node-shared/NodeDns.d.ts +221 -0
  145. package/dist/vendor/cjs/node-shared/NodeDns.js +1 -0
  146. package/dist/vendor/cjs/node-shared/NodeFileSystem.d.ts +1 -0
  147. package/dist/vendor/cjs/node-shared/NodeHttpCompression.d.ts +5 -1
  148. package/dist/vendor/cjs/node-shared/NodePath.d.ts +3 -0
  149. package/dist/vendor/cjs/node-shared/NodeRuntime.d.ts +4 -0
  150. package/dist/vendor/cjs/node-shared/NodeSink.d.ts +4 -0
  151. package/dist/vendor/cjs/node-shared/NodeSocket.d.ts +11 -1
  152. package/dist/vendor/cjs/node-shared/NodeSocketServer.d.ts +8 -1
  153. package/dist/vendor/cjs/node-shared/NodeStdio.d.ts +1 -0
  154. package/dist/vendor/cjs/node-shared/NodeStream.d.ts +15 -0
  155. package/dist/vendor/cjs/node-shared/NodeTerminal.d.ts +6 -4
  156. package/dist/vendor/cjs/node-shared/index.d.ts +29 -0
  157. package/dist/vendor/cjs/node-shared/internal/nodeChildProcessSpawner.d.ts +1 -1
  158. package/dist/vendor/cjs/platform-node-shared.d.ts +29 -0
  159. package/dist/vendor/cjs/platform-node.d.ts +40 -0
  160. package/dist/vendor/node/NodeAddressResolver.d.ts +16 -0
  161. package/dist/vendor/node/NodeAddressResolver.js +8 -0
  162. package/dist/vendor/node/NodeChildProcessSpawner.d.ts +1 -0
  163. package/dist/vendor/node/NodeChildProcessSpawner.js +6 -6
  164. package/dist/vendor/node/NodeClusterHttp.d.ts +13 -22
  165. package/dist/vendor/node/NodeClusterHttp.js +32 -32
  166. package/dist/vendor/node/NodeClusterSocket.d.ts +14 -8
  167. package/dist/vendor/node/NodeClusterSocket.js +15 -15
  168. package/dist/vendor/node/NodeCrypto.d.ts +1 -0
  169. package/dist/vendor/node/NodeCrypto.js +2 -2
  170. package/dist/vendor/node/NodeDatagramSocket.d.ts +10 -0
  171. package/dist/vendor/node/NodeDatagramSocket.js +12 -0
  172. package/dist/vendor/node/NodeDns.d.ts +51 -0
  173. package/dist/vendor/node/NodeDns.js +12 -0
  174. package/dist/vendor/node/NodeFileSystem.d.ts +1 -0
  175. package/dist/vendor/node/NodeFileSystem.js +3 -3
  176. package/dist/vendor/node/NodeHttpClient.d.ts +21 -2
  177. package/dist/vendor/node/NodeHttpClient.js +6 -6
  178. package/dist/vendor/node/NodeHttpIncomingMessage.d.ts +5 -3
  179. package/dist/vendor/node/NodeHttpIncomingMessage.js +4 -4
  180. package/dist/vendor/node/NodeHttpPlatform.d.ts +8 -6
  181. package/dist/vendor/node/NodeHttpPlatform.js +8 -8
  182. package/dist/vendor/node/NodeHttpServer.d.ts +21 -10
  183. package/dist/vendor/node/NodeHttpServer.js +26 -26
  184. package/dist/vendor/node/NodeHttpServerRequest.d.ts +4 -1
  185. package/dist/vendor/node/NodeHttpServerRequest.js +1 -1
  186. package/dist/vendor/node/NodeMultipart.d.ts +5 -1
  187. package/dist/vendor/node/NodeMultipart.js +5 -5
  188. package/dist/vendor/node/NodeMultipartParser.d.ts +9 -1
  189. package/dist/vendor/node/NodeMultipartParser.js +1 -1
  190. package/dist/vendor/node/NodePath.d.ts +3 -0
  191. package/dist/vendor/node/NodePath.js +2 -2
  192. package/dist/vendor/node/NodeRedis.d.ts +5 -1
  193. package/dist/vendor/node/NodeRedis.js +1 -1
  194. package/dist/vendor/node/NodeRuntime.d.ts +3 -0
  195. package/dist/vendor/node/NodeRuntime.js +2 -2
  196. package/dist/vendor/node/NodeServices.d.ts +4 -1
  197. package/dist/vendor/node/NodeServices.js +17 -17
  198. package/dist/vendor/node/NodeSink.d.ts +1 -0
  199. package/dist/vendor/node/NodeSink.js +2 -2
  200. package/dist/vendor/node/NodeSocket.d.ts +10 -3
  201. package/dist/vendor/node/NodeSocket.js +2 -2
  202. package/dist/vendor/node/NodeSocketServer.d.ts +1 -0
  203. package/dist/vendor/node/NodeSocketServer.js +3 -3
  204. package/dist/vendor/node/NodeStdio.d.ts +1 -0
  205. package/dist/vendor/node/NodeStdio.js +4 -4
  206. package/dist/vendor/node/NodeStream.d.ts +1 -0
  207. package/dist/vendor/node/NodeStream.js +3 -3
  208. package/dist/vendor/node/NodeTerminal.d.ts +6 -3
  209. package/dist/vendor/node/NodeTerminal.js +2 -2
  210. package/dist/vendor/node/NodeWorker.d.ts +3 -1
  211. package/dist/vendor/node/NodeWorker.js +1 -1
  212. package/dist/vendor/node/NodeWorkerRunner.d.ts +2 -1
  213. package/dist/vendor/node/NodeWorkerRunner.js +1 -1
  214. package/dist/vendor/node/Undici.d.ts +3 -0
  215. package/dist/vendor/node/Undici.js +1 -1
  216. package/dist/vendor/node/index.d.ts +40 -0
  217. package/dist/vendor/node/index.js +70 -55
  218. package/dist/vendor/node-shared/NodeAddressResolver.d.ts +13 -0
  219. package/dist/vendor/node-shared/NodeAddressResolver.js +7 -0
  220. package/dist/vendor/node-shared/NodeChildProcessSpawner.d.ts +12 -3
  221. package/dist/vendor/node-shared/NodeChildProcessSpawner.js +5 -5
  222. package/dist/vendor/node-shared/NodeClusterSocket.d.ts +17 -4
  223. package/dist/vendor/node-shared/NodeClusterSocket.js +3 -3
  224. package/dist/vendor/node-shared/NodeCrypto.d.ts +3 -0
  225. package/dist/vendor/node-shared/NodeCrypto.js +1 -1
  226. package/dist/vendor/node-shared/NodeDatagramSocket.d.ts +246 -0
  227. package/dist/vendor/node-shared/NodeDatagramSocket.js +11 -0
  228. package/dist/vendor/node-shared/NodeDns.d.ts +221 -0
  229. package/dist/vendor/node-shared/NodeDns.js +31 -0
  230. package/dist/vendor/node-shared/NodeFileSystem.d.ts +1 -0
  231. package/dist/vendor/node-shared/NodeFileSystem.js +2 -2
  232. package/dist/vendor/node-shared/NodeHttpCompression.d.ts +5 -1
  233. package/dist/vendor/node-shared/NodeHttpCompression.js +1 -1
  234. package/dist/vendor/node-shared/NodePath.d.ts +3 -0
  235. package/dist/vendor/node-shared/NodePath.js +1 -1
  236. package/dist/vendor/node-shared/NodeRuntime.d.ts +4 -0
  237. package/dist/vendor/node-shared/NodeRuntime.js +1 -1
  238. package/dist/vendor/node-shared/NodeSink.d.ts +4 -0
  239. package/dist/vendor/node-shared/NodeSink.js +1 -1
  240. package/dist/vendor/node-shared/NodeSocket.d.ts +11 -1
  241. package/dist/vendor/node-shared/NodeSocket.js +1 -1
  242. package/dist/vendor/node-shared/NodeSocketServer.d.ts +8 -1
  243. package/dist/vendor/node-shared/NodeSocketServer.js +2 -2
  244. package/dist/vendor/node-shared/NodeStdio.d.ts +1 -0
  245. package/dist/vendor/node-shared/NodeStdio.js +3 -3
  246. package/dist/vendor/node-shared/NodeStream.d.ts +15 -0
  247. package/dist/vendor/node-shared/NodeStream.js +2 -2
  248. package/dist/vendor/node-shared/NodeTerminal.d.ts +6 -4
  249. package/dist/vendor/node-shared/NodeTerminal.js +1 -1
  250. package/dist/vendor/node-shared/index.d.ts +29 -0
  251. package/dist/vendor/node-shared/index.js +34 -22
  252. package/dist/vendor/node-shared/internal/nodeChildProcessSpawner.d.ts +1 -1
  253. package/dist/vendor/node-shared/internal/nodeChildProcessSpawner.js +1 -1
  254. package/dist/vendor/node-shared/internal/utils.js +1 -1
  255. package/dist/vendor/platform-node-shared.d.ts +29 -0
  256. package/dist/vendor/platform-node-shared.js +34 -22
  257. package/dist/vendor/platform-node.d.ts +40 -0
  258. package/dist/vendor/platform-node.js +70 -55
  259. package/docs/README.md +2 -2
  260. package/docs/api.md +2 -2
  261. package/docs/concepts/host-bundle.md +2 -2
  262. package/docs/installation.md +8 -9
  263. package/docs/quickstart.md +2 -2
  264. package/package.json +12 -12
  265. package/src/EgressHttpClient.ts +4 -4
  266. package/src/NodeHost.ts +2 -2
  267. package/src/ProcessConfinement.ts +1 -1
  268. package/src/ProcessReaper.ts +2 -2
  269. package/src/ScopedProcess.ts +2 -2
  270. package/src/internal/PipedProcess.ts +2 -2
  271. package/src/internal/ProcessCleanup.ts +1 -1
  272. package/src/internal/ProcessSupervisor.ts +2 -2
  273. /package/dist/vendor/{chunk-M7CLUILA.js → chunk-3WUGYBFU.js} +0 -0
  274. /package/dist/vendor/{chunk-ZJMRMY57.js → chunk-ASGOJ3XA.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"PipedProcess.js","sourceRoot":"","sources":["../../../src/internal/PipedProcess.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Native I/O ownership for transient commands and prepared process owners.\n * @since 1.0.0\n */\n\nimport * as NodeSink from \"@effect/platform-node/NodeSink\"\nimport * as NodeStream from \"@effect/platform-node/NodeStream\"\nimport * as Effect from \"effect/Effect\"\nimport * as PlatformError from \"effect/PlatformError\"\nimport type * as Scope from \"effect/Scope\"\nimport * as Sink from \"effect/Sink\"\nimport * as Stream from \"effect/Stream\"\nimport * as ChildProcess from \"effect/unstable/process/ChildProcess\"\nimport { type ChildProcessHandle, ExitCode, makeHandle, ProcessId } from \"effect/unstable/process/ChildProcessSpawner\"\nimport * as Native from \"node:child_process\"\nimport { NativeProcessError } from \"./ProcessFault.ts\"\n\nconst ownerDescriptors = new WeakMap<ChildProcessHandle, ReadonlyArray<number | \"ignore\">>()\n\n/**\n * Windows owners receive caller streams above the reserved CRT standard slots.\n * @private\n * @since 1.0.0\n */\nexport const standardFdsOf = (handle: ChildProcessHandle): ReadonlyArray<number | \"ignore\"> | undefined =>\n ownerDescriptors.get(handle)\n\nconst promise = <A>() => {\n let resolve!: (value: A) => void\n let reject!: (cause: unknown) => void\n const promise = new Promise<A>((onSuccess, onFailure) => {\n resolve = onSuccess\n reject = onFailure\n })\n void promise.catch(() => {})\n return { promise, resolve, reject }\n}\n\n/**\n * Converts native errors without losing their errno or signal.\n * @private\n * @since 1.0.0\n */\nexport const failure = (method: string, cause: unknown): PlatformError.PlatformError => {\n const error = cause instanceof Error ? cause : new NativeProcessError({ message: String(cause) })\n const code = (error as NodeJS.ErrnoException).code\n return PlatformError.systemError({\n _tag: code === \"ENOENT\" ? \"NotFound\" : code === \"EACCES\" || code === \"EPERM\" ? \"PermissionDenied\" : \"Unknown\",\n module: \"ChildProcess\",\n method,\n description: error.message,\n cause: error\n })\n}\n\nconst inputConfig = (value: ChildProcess.CommandOptions[\"stdin\"]): ChildProcess.StdinConfig =>\n value === undefined || typeof value === \"string\" || Stream.isStream(value)\n ? { stream: value ?? \"pipe\" }\n : value\n\nconst outputConfig = (\n value: ChildProcess.CommandOptions[\"stdout\"]\n): ChildProcess.CommandOutput =>\n value === undefined || typeof value === \"string\" || Sink.isSink(value)\n ? value ?? \"pipe\"\n : value.stream ?? \"pipe\"\n\nconst descriptorConfig = (options: ChildProcess.CommandOptions) => {\n const stdin = inputConfig(options.stdin)\n const stdout = outputConfig(options.stdout)\n const stderr = outputConfig(options.stderr)\n const additional: Array<{ readonly fd: number; readonly config: ChildProcess.AdditionalFdConfig }> = []\n for (const [name, config] of Object.entries(options.additionalFds ?? {})) {\n const fd = ChildProcess.parseFdName(name)\n if (fd === undefined) continue\n // A sparse descriptor declaration must not allocate an unbounded stdio\n // table. The OS may impose a smaller limit when opening the actual pipes.\n if (!Number.isSafeInteger(fd) || fd > 65_535) {\n throw new RangeError(\"Additional file descriptors must be below 65536\")\n }\n additional.push({ fd, config })\n }\n additional.sort((left, right) => left.fd - right.fd)\n const stdio: Array<Native.IOType> = Array.from(\n { length: Math.max(2, ...additional.map(({ fd }) => fd)) + 1 },\n () => \"ignore\"\n )\n stdio[0] = typeof stdin.stream === \"string\" ? stdin.stream : \"pipe\"\n stdio[1] = typeof stdout === \"string\" ? stdout : \"pipe\"\n stdio[2] = typeof stderr === \"string\" ? stderr : \"pipe\"\n for (const { fd } of additional) stdio[fd] = \"pipe\"\n return { stdin, stdout, stderr, additional, stdio }\n}\n\n/**\n * Native standard-command I/O, including configured streams and custom pipes.\n * Lifetime error listeners remain on every owned pipe after any consumer is\n * interrupted, so a pending native write cannot raise an unhandled late EPIPE.\n * Consumers still receive the original error through NodeStream/NodeSink.\n * This adapter also preserves native Windows verbatim arguments.\n *\n * It never sends a negative-pid signal. POSIX tree cleanup belongs to the\n * prepared supervisor, which remains alive while it signals its own group.\n * @private\n * @since 1.0.0\n */\nexport const spawn = (\n command: ChildProcess.StandardCommand,\n windowsVerbatimArguments: boolean | undefined,\n owner = false\n): Effect.Effect<ChildProcessHandle, PlatformError.PlatformError, Scope.Scope> =>\n Effect.gen(function*() {\n const descriptors = yield* Effect.try({\n try: () => descriptorConfig(command.options),\n catch: (cause) => failure(\"spawn\", cause)\n })\n const standardFds: Array<number | \"ignore\"> = [0, 1, 2]\n const physicalFds = [0, 1, 2]\n const stdio: Array<Native.IOType | number> = [...descriptors.stdio]\n if (owner && process.platform === \"win32\") {\n const first = stdio.length\n for (const fd of [0, 1, 2]) {\n const mode = stdio[fd]!\n physicalFds[fd] = first + fd\n standardFds[fd] = mode === \"ignore\" ? \"ignore\" : first + fd\n stdio.push(mode === \"inherit\" ? fd : mode)\n stdio[fd] = \"ignore\"\n }\n }\n const state = yield* Effect.acquireRelease(\n Effect.try({\n try: () => {\n const ready = promise<void>()\n // Startup errors reject ready before any handle is exposed. Once\n // started, the native exit event or retained native status supplies\n // this result.\n let recordExit!: (result: readonly [number | null, NodeJS.Signals | null]) => void\n const exited = new Promise<readonly [number | null, NodeJS.Signals | null]>((resolve) => {\n recordExit = resolve\n })\n const options = command.options\n const child = Native.spawn(command.command, [...command.args], {\n cwd: options.cwd,\n env: options.extendEnv ? { ...process.env, ...options.env } : options.env,\n shell: options.shell,\n detached: options.detached ?? process.platform !== \"win32\",\n windowsHide: options.windowsHide ?? true,\n windowsVerbatimArguments,\n stdio\n })\n const state = {\n child,\n ready: ready.promise,\n exited,\n ended: false,\n started: false,\n referenced: true,\n pipeErrors: new WeakMap<object, Error>(),\n error: undefined as Error | undefined\n }\n child.once(\"spawn\", () => {\n state.started = true\n ready.resolve()\n })\n child.on(\"error\", (error) => {\n state.error = error\n if (!state.started) {\n state.ended = true\n ready.reject(error)\n }\n })\n const onExit = (code: number | null, signal: NodeJS.Signals | null) => {\n state.ended = true\n recordExit([code, signal])\n }\n child.once(\"exit\", onExit)\n // Bun can emit spawn before Native.spawn returns on a cold start.\n // A returned pid proves that the native child was created; failed\n // native spawns have no pid and still reject through the error event.\n if (child.pid !== undefined) {\n state.started = true\n ready.resolve()\n }\n // Likewise retain an exit already reflected by the native handle\n // before listeners could attach. Later events settle the same result.\n if (child.exitCode != null || child.signalCode != null) {\n onExit(child.exitCode ?? null, child.signalCode ?? null)\n }\n // A pipe can fail before a consumer has started reading or writing.\n // Preserve the cause for consumers that attach after its error event.\n for (const pipe of child.stdio) {\n pipe?.on(\"error\", (error: Error) => {\n state.pipeErrors.set(pipe, error)\n })\n }\n // Node resumes unread stdio after exit to deliver its close event.\n // A fast target can exit before activation returns the public handle;\n // flowing at that point discards bytes before any consumer subscribes.\n // Keep declared outputs in readable mode for their entire lifetime.\n // This listener does not drain or copy data: the native high-water\n // mark still applies backpressure until NodeStream pulls the bytes.\n for (\n const fd of [\n physicalFds[1]!,\n physicalFds[2]!,\n ...descriptors.additional.filter(({ config }) => config.type === \"output\").map(({ fd }) => fd)\n ]\n ) {\n const pipe = child.stdio[fd]\n pipe?.on(\"readable\", () => {})\n // POSIX sockets can close the unused writer independently. Bun\n // needs this to retain buffered output after child exit. Windows\n // named-pipe shutdown instead starts libuv's EOF timer, which can\n // close both directions before the child writes. Leave it open.\n if (process.platform !== \"win32\" && fd > 2 && pipe !== null && pipe !== undefined && \"end\" in pipe) {\n pipe.end()\n }\n }\n return state\n },\n catch: (cause) => failure(\"spawn\", cause)\n }),\n (state) =>\n Effect.gen(function*() {\n if (state.referenced && !state.ended) {\n yield* Effect.try({\n try: () => {\n // Native kill returns false for an exit whose event is still\n // queued. Require that event below; never infer a live failure\n // or successful cleanup from the boolean alone.\n if (!state.child.kill(\"SIGKILL\") && state.error !== undefined) throw state.error\n },\n catch: (cause) => failure(\"kill\", cause)\n })\n yield* Effect.promise(() => state.exited).pipe(\n Effect.timeout(\"2 seconds\")\n )\n }\n }).pipe(\n Effect.ensuring(Effect.sync(() => {\n for (const pipe of state.child.stdio) {\n if (pipe !== null && pipe !== undefined && \"destroy\" in pipe && typeof pipe.destroy === \"function\") {\n pipe.destroy()\n }\n }\n })),\n Effect.orDie\n )\n )\n yield* Effect.tryPromise({ try: () => state.ready, catch: (cause) => failure(\"spawn\", cause) })\n const wait = Effect.promise(() => state.exited)\n const kill: ChildProcessHandle[\"kill\"] = (options) =>\n Effect.suspend(() => {\n if (state.ended) return Effect.void\n const signal = options?.killSignal ?? command.options.killSignal ?? \"SIGTERM\"\n const send = (signal: ChildProcess.Signal) =>\n Effect.try({\n try: () => {\n if (!state.child.kill(signal) && state.error !== undefined) throw state.error\n },\n catch: (cause) => failure(\"kill\", cause)\n })\n return send(signal).pipe(\n Effect.andThen(wait.pipe(Effect.timeoutOrElse({\n duration: options?.forceKillAfter ?? command.options.forceKillAfter ?? 2000,\n orElse: () => send(\"SIGKILL\").pipe(Effect.andThen(wait), Effect.timeout(\"2 seconds\"))\n }))),\n Effect.mapError((cause) => cause instanceof PlatformError.PlatformError ? cause : failure(\"kill\", cause)),\n Effect.asVoid,\n Effect.uninterruptible\n )\n })\n const input = (fd: number, config?: ChildProcess.StdinConfig): ChildProcessHandle[\"stdin\"] => {\n const pipe = state.child.stdio[fd]\n if (pipe === null || pipe === undefined || !(\"write\" in pipe)) return Sink.drain\n const writable = pipe\n const method = fd === 0 ? \"stdin\" : `fd${fd}`\n return Sink.suspend(() => {\n const error = state.pipeErrors.get(pipe) ?? writable.errored ?? undefined\n if (error !== undefined) return Sink.fail(failure(method, error))\n if (writable.destroyed || writable.writableEnded) {\n return Sink.fail(failure(method, new NativeProcessError({ message: `${method} is closed`, code: \"EPIPE\" })))\n }\n return NodeSink.fromWritable({\n evaluate: () => writable,\n onError: (cause) => failure(method, cause),\n encoding: config?.encoding,\n endOnDone: config?.endOnDone\n })\n })\n }\n const output = (fd: number, transform?: ChildProcess.CommandOutput): ChildProcessHandle[\"stdout\"] => {\n const pipe = state.child.stdio[fd]\n const stream = pipe !== null && pipe !== undefined && \"read\" in pipe\n ? Stream.suspend(() => {\n const method = fd === 1 ? \"stdout\" : fd === 2 ? \"stderr\" : `fd${fd}`\n const error = state.pipeErrors.get(pipe) ?? pipe.errored ?? undefined\n return error !== undefined ?\n Stream.fail(failure(method, error)) :\n NodeStream.fromReadable<Uint8Array, PlatformError.PlatformError>({\n evaluate: () => pipe,\n onError: (cause) => failure(method, cause)\n })\n })\n : Stream.empty\n return Sink.isSink(transform) ? Stream.transduce(stream, transform) : stream\n }\n const stdin = input(physicalFds[0]!, descriptors.stdin)\n const stdout = output(physicalFds[1]!, descriptors.stdout)\n const stderr = output(physicalFds[2]!, descriptors.stderr)\n if (Stream.isStream(descriptors.stdin.stream)) {\n yield* Stream.run(descriptors.stdin.stream, stdin).pipe(Effect.forkScoped)\n }\n const inputs = new Map<number, ChildProcessHandle[\"stdin\"]>()\n const outputs = new Map<number, ChildProcessHandle[\"stdout\"]>()\n for (const { fd, config } of descriptors.additional) {\n if (config.type === \"input\") {\n const sink = input(fd)\n inputs.set(fd, sink)\n if (config.stream !== undefined) yield* Stream.run(config.stream, sink).pipe(Effect.forkScoped)\n } else outputs.set(fd, output(fd, config.sink))\n }\n const handle = makeHandle({\n pid: ProcessId(state.child.pid!),\n exitCode: wait.pipe(Effect.flatMap(([code, signal]) =>\n code === null\n ? Effect.fail(\n failure(\n \"exitCode\",\n new NativeProcessError({\n message: `Process interrupted due to receipt of signal: '${signal}'`,\n signal: String(signal)\n })\n )\n )\n : Effect.succeed(ExitCode(code))\n )),\n isRunning: Effect.sync(() => !state.ended),\n kill,\n stdin,\n stdout,\n stderr,\n all: Stream.merge(stdout, stderr),\n getInputFd: (fd) => inputs.get(fd) ?? Sink.drain,\n getOutputFd: (fd) => outputs.get(fd) ?? Stream.empty,\n unref: Effect.sync(() => {\n state.referenced = false\n state.child.unref()\n return Effect.sync(() => {\n state.referenced = true\n state.child.ref()\n })\n })\n })\n if (owner && process.platform === \"win32\") ownerDescriptors.set(handle, standardFds)\n return handle\n })\n"]}
1
+ {"version":3,"file":"PipedProcess.js","sourceRoot":"","sources":["../../../src/internal/PipedProcess.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Native I/O ownership for transient commands and prepared process owners.\n * @since 1.0.0\n */\n\nimport * as NodeSink from \"@effect/platform-node/NodeSink\"\nimport * as NodeStream from \"@effect/platform-node/NodeStream\"\nimport * as Effect from \"effect/Effect\"\nimport * as PlatformError from \"effect/PlatformError\"\nimport * as ChildProcess from \"effect/process/ChildProcess\"\nimport { type ChildProcessHandle, ExitCode, makeHandle, ProcessId } from \"effect/process/ChildProcessSpawner\"\nimport type * as Scope from \"effect/Scope\"\nimport * as Sink from \"effect/Sink\"\nimport * as Stream from \"effect/Stream\"\nimport * as Native from \"node:child_process\"\nimport { NativeProcessError } from \"./ProcessFault.ts\"\n\nconst ownerDescriptors = new WeakMap<ChildProcessHandle, ReadonlyArray<number | \"ignore\">>()\n\n/**\n * Windows owners receive caller streams above the reserved CRT standard slots.\n * @private\n * @since 1.0.0\n */\nexport const standardFdsOf = (handle: ChildProcessHandle): ReadonlyArray<number | \"ignore\"> | undefined =>\n ownerDescriptors.get(handle)\n\nconst promise = <A>() => {\n let resolve!: (value: A) => void\n let reject!: (cause: unknown) => void\n const promise = new Promise<A>((onSuccess, onFailure) => {\n resolve = onSuccess\n reject = onFailure\n })\n void promise.catch(() => {})\n return { promise, resolve, reject }\n}\n\n/**\n * Converts native errors without losing their errno or signal.\n * @private\n * @since 1.0.0\n */\nexport const failure = (method: string, cause: unknown): PlatformError.PlatformError => {\n const error = cause instanceof Error ? cause : new NativeProcessError({ message: String(cause) })\n const code = (error as NodeJS.ErrnoException).code\n return PlatformError.systemError({\n _tag: code === \"ENOENT\" ? \"NotFound\" : code === \"EACCES\" || code === \"EPERM\" ? \"PermissionDenied\" : \"Unknown\",\n module: \"ChildProcess\",\n method,\n description: error.message,\n cause: error\n })\n}\n\nconst inputConfig = (value: ChildProcess.CommandOptions[\"stdin\"]): ChildProcess.StdinConfig =>\n value === undefined || typeof value === \"string\" || Stream.isStream(value)\n ? { stream: value ?? \"pipe\" }\n : value\n\nconst outputConfig = (\n value: ChildProcess.CommandOptions[\"stdout\"]\n): ChildProcess.CommandOutput =>\n value === undefined || typeof value === \"string\" || Sink.isSink(value)\n ? value ?? \"pipe\"\n : value.stream ?? \"pipe\"\n\nconst descriptorConfig = (options: ChildProcess.CommandOptions) => {\n const stdin = inputConfig(options.stdin)\n const stdout = outputConfig(options.stdout)\n const stderr = outputConfig(options.stderr)\n const additional: Array<{ readonly fd: number; readonly config: ChildProcess.AdditionalFdConfig }> = []\n for (const [name, config] of Object.entries(options.additionalFds ?? {})) {\n const fd = ChildProcess.parseFdName(name)\n if (fd === undefined) continue\n // A sparse descriptor declaration must not allocate an unbounded stdio\n // table. The OS may impose a smaller limit when opening the actual pipes.\n if (!Number.isSafeInteger(fd) || fd > 65_535) {\n throw new RangeError(\"Additional file descriptors must be below 65536\")\n }\n additional.push({ fd, config })\n }\n additional.sort((left, right) => left.fd - right.fd)\n const stdio: Array<Native.IOType> = Array.from(\n { length: Math.max(2, ...additional.map(({ fd }) => fd)) + 1 },\n () => \"ignore\"\n )\n stdio[0] = typeof stdin.stream === \"string\" ? stdin.stream : \"pipe\"\n stdio[1] = typeof stdout === \"string\" ? stdout : \"pipe\"\n stdio[2] = typeof stderr === \"string\" ? stderr : \"pipe\"\n for (const { fd } of additional) stdio[fd] = \"pipe\"\n return { stdin, stdout, stderr, additional, stdio }\n}\n\n/**\n * Native standard-command I/O, including configured streams and custom pipes.\n * Lifetime error listeners remain on every owned pipe after any consumer is\n * interrupted, so a pending native write cannot raise an unhandled late EPIPE.\n * Consumers still receive the original error through NodeStream/NodeSink.\n * This adapter also preserves native Windows verbatim arguments.\n *\n * It never sends a negative-pid signal. POSIX tree cleanup belongs to the\n * prepared supervisor, which remains alive while it signals its own group.\n * @private\n * @since 1.0.0\n */\nexport const spawn = (\n command: ChildProcess.StandardCommand,\n windowsVerbatimArguments: boolean | undefined,\n owner = false\n): Effect.Effect<ChildProcessHandle, PlatformError.PlatformError, Scope.Scope> =>\n Effect.gen(function*() {\n const descriptors = yield* Effect.try({\n try: () => descriptorConfig(command.options),\n catch: (cause) => failure(\"spawn\", cause)\n })\n const standardFds: Array<number | \"ignore\"> = [0, 1, 2]\n const physicalFds = [0, 1, 2]\n const stdio: Array<Native.IOType | number> = [...descriptors.stdio]\n if (owner && process.platform === \"win32\") {\n const first = stdio.length\n for (const fd of [0, 1, 2]) {\n const mode = stdio[fd]!\n physicalFds[fd] = first + fd\n standardFds[fd] = mode === \"ignore\" ? \"ignore\" : first + fd\n stdio.push(mode === \"inherit\" ? fd : mode)\n stdio[fd] = \"ignore\"\n }\n }\n const state = yield* Effect.acquireRelease(\n Effect.try({\n try: () => {\n const ready = promise<void>()\n // Startup errors reject ready before any handle is exposed. Once\n // started, the native exit event or retained native status supplies\n // this result.\n let recordExit!: (result: readonly [number | null, NodeJS.Signals | null]) => void\n const exited = new Promise<readonly [number | null, NodeJS.Signals | null]>((resolve) => {\n recordExit = resolve\n })\n const options = command.options\n const child = Native.spawn(command.command, [...command.args], {\n cwd: options.cwd,\n env: options.extendEnv ? { ...process.env, ...options.env } : options.env,\n shell: options.shell,\n detached: options.detached ?? process.platform !== \"win32\",\n windowsHide: options.windowsHide ?? true,\n windowsVerbatimArguments,\n stdio\n })\n const state = {\n child,\n ready: ready.promise,\n exited,\n ended: false,\n started: false,\n referenced: true,\n pipeErrors: new WeakMap<object, Error>(),\n error: undefined as Error | undefined\n }\n child.once(\"spawn\", () => {\n state.started = true\n ready.resolve()\n })\n child.on(\"error\", (error) => {\n state.error = error\n if (!state.started) {\n state.ended = true\n ready.reject(error)\n }\n })\n const onExit = (code: number | null, signal: NodeJS.Signals | null) => {\n state.ended = true\n recordExit([code, signal])\n }\n child.once(\"exit\", onExit)\n // Bun can emit spawn before Native.spawn returns on a cold start.\n // A returned pid proves that the native child was created; failed\n // native spawns have no pid and still reject through the error event.\n if (child.pid !== undefined) {\n state.started = true\n ready.resolve()\n }\n // Likewise retain an exit already reflected by the native handle\n // before listeners could attach. Later events settle the same result.\n if (child.exitCode != null || child.signalCode != null) {\n onExit(child.exitCode ?? null, child.signalCode ?? null)\n }\n // A pipe can fail before a consumer has started reading or writing.\n // Preserve the cause for consumers that attach after its error event.\n for (const pipe of child.stdio) {\n pipe?.on(\"error\", (error: Error) => {\n state.pipeErrors.set(pipe, error)\n })\n }\n // Node resumes unread stdio after exit to deliver its close event.\n // A fast target can exit before activation returns the public handle;\n // flowing at that point discards bytes before any consumer subscribes.\n // Keep declared outputs in readable mode for their entire lifetime.\n // This listener does not drain or copy data: the native high-water\n // mark still applies backpressure until NodeStream pulls the bytes.\n for (\n const fd of [\n physicalFds[1]!,\n physicalFds[2]!,\n ...descriptors.additional.filter(({ config }) => config.type === \"output\").map(({ fd }) => fd)\n ]\n ) {\n const pipe = child.stdio[fd]\n pipe?.on(\"readable\", () => {})\n // POSIX sockets can close the unused writer independently. Bun\n // needs this to retain buffered output after child exit. Windows\n // named-pipe shutdown instead starts libuv's EOF timer, which can\n // close both directions before the child writes. Leave it open.\n if (process.platform !== \"win32\" && fd > 2 && pipe !== null && pipe !== undefined && \"end\" in pipe) {\n pipe.end()\n }\n }\n return state\n },\n catch: (cause) => failure(\"spawn\", cause)\n }),\n (state) =>\n Effect.gen(function*() {\n if (state.referenced && !state.ended) {\n yield* Effect.try({\n try: () => {\n // Native kill returns false for an exit whose event is still\n // queued. Require that event below; never infer a live failure\n // or successful cleanup from the boolean alone.\n if (!state.child.kill(\"SIGKILL\") && state.error !== undefined) throw state.error\n },\n catch: (cause) => failure(\"kill\", cause)\n })\n yield* Effect.promise(() => state.exited).pipe(\n Effect.timeout(\"2 seconds\")\n )\n }\n }).pipe(\n Effect.ensuring(Effect.sync(() => {\n for (const pipe of state.child.stdio) {\n if (pipe !== null && pipe !== undefined && \"destroy\" in pipe && typeof pipe.destroy === \"function\") {\n pipe.destroy()\n }\n }\n })),\n Effect.orDie\n )\n )\n yield* Effect.tryPromise({ try: () => state.ready, catch: (cause) => failure(\"spawn\", cause) })\n const wait = Effect.promise(() => state.exited)\n const kill: ChildProcessHandle[\"kill\"] = (options) =>\n Effect.suspend(() => {\n if (state.ended) return Effect.void\n const signal = options?.killSignal ?? command.options.killSignal ?? \"SIGTERM\"\n const send = (signal: ChildProcess.Signal) =>\n Effect.try({\n try: () => {\n if (!state.child.kill(signal) && state.error !== undefined) throw state.error\n },\n catch: (cause) => failure(\"kill\", cause)\n })\n return send(signal).pipe(\n Effect.andThen(wait.pipe(Effect.timeoutOrElse({\n duration: options?.forceKillAfter ?? command.options.forceKillAfter ?? 2000,\n orElse: () => send(\"SIGKILL\").pipe(Effect.andThen(wait), Effect.timeout(\"2 seconds\"))\n }))),\n Effect.mapError((cause) => cause instanceof PlatformError.PlatformError ? cause : failure(\"kill\", cause)),\n Effect.asVoid,\n Effect.uninterruptible\n )\n })\n const input = (fd: number, config?: ChildProcess.StdinConfig): ChildProcessHandle[\"stdin\"] => {\n const pipe = state.child.stdio[fd]\n if (pipe === null || pipe === undefined || !(\"write\" in pipe)) return Sink.drain\n const writable = pipe\n const method = fd === 0 ? \"stdin\" : `fd${fd}`\n return Sink.suspend(() => {\n const error = state.pipeErrors.get(pipe) ?? writable.errored ?? undefined\n if (error !== undefined) return Sink.fail(failure(method, error))\n if (writable.destroyed || writable.writableEnded) {\n return Sink.fail(failure(method, new NativeProcessError({ message: `${method} is closed`, code: \"EPIPE\" })))\n }\n return NodeSink.fromWritable({\n evaluate: () => writable,\n onError: (cause) => failure(method, cause),\n encoding: config?.encoding,\n endOnDone: config?.endOnDone\n })\n })\n }\n const output = (fd: number, transform?: ChildProcess.CommandOutput): ChildProcessHandle[\"stdout\"] => {\n const pipe = state.child.stdio[fd]\n const stream = pipe !== null && pipe !== undefined && \"read\" in pipe\n ? Stream.suspend(() => {\n const method = fd === 1 ? \"stdout\" : fd === 2 ? \"stderr\" : `fd${fd}`\n const error = state.pipeErrors.get(pipe) ?? pipe.errored ?? undefined\n return error !== undefined ?\n Stream.fail(failure(method, error)) :\n NodeStream.fromReadable<Uint8Array, PlatformError.PlatformError>({\n evaluate: () => pipe,\n onError: (cause) => failure(method, cause)\n })\n })\n : Stream.empty\n return Sink.isSink(transform) ? Stream.transduce(stream, transform) : stream\n }\n const stdin = input(physicalFds[0]!, descriptors.stdin)\n const stdout = output(physicalFds[1]!, descriptors.stdout)\n const stderr = output(physicalFds[2]!, descriptors.stderr)\n if (Stream.isStream(descriptors.stdin.stream)) {\n yield* Stream.run(descriptors.stdin.stream, stdin).pipe(Effect.forkScoped)\n }\n const inputs = new Map<number, ChildProcessHandle[\"stdin\"]>()\n const outputs = new Map<number, ChildProcessHandle[\"stdout\"]>()\n for (const { fd, config } of descriptors.additional) {\n if (config.type === \"input\") {\n const sink = input(fd)\n inputs.set(fd, sink)\n if (config.stream !== undefined) yield* Stream.run(config.stream, sink).pipe(Effect.forkScoped)\n } else outputs.set(fd, output(fd, config.sink))\n }\n const handle = makeHandle({\n pid: ProcessId(state.child.pid!),\n exitCode: wait.pipe(Effect.flatMap(([code, signal]) =>\n code === null\n ? Effect.fail(\n failure(\n \"exitCode\",\n new NativeProcessError({\n message: `Process interrupted due to receipt of signal: '${signal}'`,\n signal: String(signal)\n })\n )\n )\n : Effect.succeed(ExitCode(code))\n )),\n isRunning: Effect.sync(() => !state.ended),\n kill,\n stdin,\n stdout,\n stderr,\n all: Stream.merge(stdout, stderr),\n getInputFd: (fd) => inputs.get(fd) ?? Sink.drain,\n getOutputFd: (fd) => outputs.get(fd) ?? Stream.empty,\n unref: Effect.sync(() => {\n state.referenced = false\n state.child.unref()\n return Effect.sync(() => {\n state.referenced = true\n state.child.ref()\n })\n })\n })\n if (owner && process.platform === \"win32\") ownerDescriptors.set(handle, standardFds)\n return handle\n })\n"]}
@@ -5,7 +5,7 @@
5
5
  import { type Lifecycle } from "@smthrs/kernel/ContainedSpawner";
6
6
  import * as Effect from "effect/Effect";
7
7
  import type * as PlatformError from "effect/PlatformError";
8
- import type * as ChildProcess from "effect/unstable/process/ChildProcess";
8
+ import type * as ChildProcess from "effect/process/ChildProcess";
9
9
  /**
10
10
  * An operating-system identity observed in a group.
11
11
  * @private
@@ -1 +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"}
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,6BAA6B,CAAA;AAKhE;;;;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"}
@@ -1 +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"]}
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/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"]}
@@ -6,8 +6,8 @@
6
6
  import type { Lifecycle } from "@smthrs/kernel/ContainedSpawner";
7
7
  import * as Effect from "effect/Effect";
8
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";
9
+ import * as ChildProcess from "effect/process/ChildProcess";
10
+ import { type ChildProcessHandle, ExitCode } from "effect/process/ChildProcessSpawner";
11
11
  import { type Socket } from "node:net";
12
12
  import type { Policy, Snapshot, System } from "./ProcessCleanup.ts";
13
13
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ProcessSupervisor.d.ts","sourceRoot":"","sources":["../../../src/internal/ProcessSupervisor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProcessSupervisor.d.ts","sourceRoot":"","sources":["../../../src/internal/ProcessSupervisor.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,10 @@ import * as Channel from "effect/Channel";
7
7
  import * as Clock from "effect/Clock";
8
8
  import * as Effect from "effect/Effect";
9
9
  import * as PlatformError from "effect/PlatformError";
10
+ import * as ChildProcess from "effect/process/ChildProcess";
11
+ import { ExitCode, makeHandle } from "effect/process/ChildProcessSpawner";
10
12
  import * as Sink from "effect/Sink";
11
13
  import * as Stream from "effect/Stream";
12
- import * as ChildProcess from "effect/unstable/process/ChildProcess";
13
- import { ExitCode, makeHandle } from "effect/unstable/process/ChildProcessSpawner";
14
14
  import { randomBytes } from "node:crypto";
15
15
  import { chmodSync, mkdtempSync, rmdirSync, rmSync } from "node:fs";
16
16
  import { createConnection, createServer } from "node:net";
@@ -1 +1 @@
1
- {"version":3,"file":"ProcessSupervisor.js","sourceRoot":"","sources":["../../../src/internal/ProcessSupervisor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,aAAa,MAAM,sBAAsB,CAAA;AACrD,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,YAAY,MAAM,sCAAsC,CAAA;AACpE,OAAO,EAA2B,QAAQ,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAA;AAC3G,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAe,MAAM,UAAU,CAAA;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAEhF,MAAM,SAAS,GAAG,IAAI,CAAA;AACtB,MAAM,UAAU,GAAG,GAAG,CAAA;AACtB,MAAM,eAAe,GAAG,IAAI,CAAA;AAC5B,4EAA4E;AAC5E,6EAA6E;AAC7E,yEAAyE;AACzE,MAAM,cAAc,GAAG,IAAI,CAAA;AAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAA+B,CAAA;AAC1D,4EAA4E;AAC5E,yEAAyE;AACzE,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,CAAA;AAE/C;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAA0B,EAAsB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,CAAA;AAE7G,yEAAyE;AACzE,MAAM,WAAW,GAAG,CAAC,KAAc,EAAuE,EAAE;IAC1G,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAA;IACxC,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAA;IACtD,MAAM,IAAI,GAAG,CAAC,KAAa,EAAsB,EAAE,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC/G,OAAO,IAAI,kBAAkB,CAAC;QAC5B,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,+BAA+B;QAC3D,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;QAClB,KAAK,EAAE,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QAChE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;QACtB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;QACxB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;QAClB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;KACvB,CAAC,CAAA;AACJ,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,OAAe,EAAE,KAAc,EAA+B,EAAE;IACtG,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;IAChC,MAAM,IAAI,GAA2D;QACnE,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE,kBAAkB;QAC1B,MAAM,EAAE,eAAe;QACvB,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE,aAAa;QACtB,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,MAAM;KACd,CAAA;IACD,OAAO,aAAa,CAAC,WAAW,CAAC;QAC/B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,SAAS;QACzC,MAAM,EAAE,cAAc;QACtB,MAAM;QACN,gBAAgB,EAAE,OAAO;QACzB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,KAAK,CAAC,OAAO;QAC1B,KAAK,EAAE,KAAK;KACb,CAAC,CAAA;AACJ,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,OAKC,EACD,eAAwB,EACxB,MAAe,EACf,QAA8B,EACtB,EAAE,CACV;IACE,kBAAkB,OAAO,CAAC,UAAU,EAAE;IACtC,oBACE,OAAO,CAAC,aAAa;QACnB,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,CAAC,eAAe;YAClB,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,OAAO,CAAC,mBAAmB;gBAC7B,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,SACN,EAAE;IACF,iBAAiB,MAAM,EAAE;IACzB,QAAQ,KAAK,SAAS;QACpB,CAAC,CAAC,6BAA6B;QAC/B,CAAC,CAAC,kBACA,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAC3B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CACtG,gBAAgB,QAAQ,CAAC,QAAQ,EAAE;IACrC,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS;QAC7B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,CAAC,UAAU,MAAM,CAAE,OAAO,CAAC,KAA+B,EAAE,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;CAC9F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEd,MAAM,OAAO,GAAG,GAAM,EAAE;IACtB,IAAI,OAA4B,CAAA;IAChC,IAAI,MAAiC,CAAA;IACrC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE;QACzC,OAAO,GAAG,GAAG,CAAA;QACb,MAAM,GAAG,EAAE,CAAA;IACb,CAAC,CAAC,CAAA;IACF,iEAAiE;IACjE,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAC5B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;AACrC,CAAC,CAAA;AAED,MAAM,IAAI,GAAG,CAAI,KAAiB,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CACrE,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;AAE5F,MAAM,OAAO,GAAG,CAAU,MAA8B,EAAE,MAAc,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3G,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,aAAa,CAAC;IACnB,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,GAAG,EAAE,CACX,MAAM,CAAC,IAAI,CACT,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,oBAAoB,EAAE,sBAAsB,MAAM,YAAY,CAAC,CAAC,CACvG;CACJ,CAAC,EACF,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CACjD,CAAA;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAgF,EAAE,EAAE,CACrH,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;IAChD,CAAC,CAAC,MAAM,CAAC,IAAI,CACX,OAAO,CACL,OAAO,EACP,OAAO,CAAC,QAAQ,EAChB,YAAY,CACV,qBAAqB,EACrB,2FAA2F,CAC5F,CACF,CACF;IACD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;AAEhF,MAAM,kBAAkB,GAAG,0BAA0B,CAAA;AACrD,MAAM,UAAU,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,wBAAwB,EAAW,CAAA;AAE/G;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,WAAyD,EAAU,EAAE;IAC9G,MAAM,OAAO,GAAG,WAAW,CAAC,kBAAkB,CAAC,CAAA;IAC/C,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAA;IACxD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsD,CAAA;IACxF,OAAO,GAAG,CAAC,OAAO,CAAC;QACjB,GAAG,UAAU;QACb,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM;QAC7D,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;KAC1F,CAAC,CAAA;AACJ,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,OAAO,OAAO;IACT,KAAK,GAAG,OAAO,EAAU,CAAA;IACzB,OAAO,GAAG,OAAO,EAAQ,CAAA;IACzB,MAAM,GAAG,OAAO,EAAY,CAAA;IAC5B,IAAI,GAAG,OAAO,EAAS,CAAA;IACvB,KAAK,GAAG,OAAO,EAAQ,CAAA;IACvB,aAAa,GAAG,OAAO,EAAQ,CAAA;IAC/B,SAAS,CAAQ;IACjB,IAAI,CAAQ;IACZ,WAAW,CAAQ;IACnB,MAAM,CAAA;IACN,aAAa,CAAA;IACb,SAAS,CAAe;IAChB,GAAG,CAAoB;IACvB,WAAW,GAAG,IAAI,GAAG,EAAU,CAAA;IAChD,MAAM,CAAoB;IAC1B,aAAa,CAAoB;IACjC,UAAU,GAAG,KAAK,CAAA;IAClB,aAAa,CAAS;IACtB,SAAS,CAAoB;IAC7B,6EAA6E;IAC7E,WAAW,CAAoB;IAC/B,SAAS,GAAG,KAAK,CAAA;IACjB,WAAW,GAAG,KAAK,CAAA;IACnB,aAAa,GAAG,KAAK,CAAA;IACrB,mBAAmB,GAAG,KAAK,CAAA;IAC3B,cAAc,GAAG,KAAK,CAAA;IACtB,SAAS,GAAG,KAAK,CAAA;IACjB,KAAK,CAAS;IACd,YAAY,GAAe,GAAG,EAAE,GAAE,CAAC,CAAA;IACnC,SAAS,GAAe,GAAG,EAAE,GAAE,CAAC,CAAA;IACxB,aAAa,GAAG,KAAK,CAAA;IACrB,eAAe,GAAG,KAAK,CAAA;IACvB,SAAS,GAAG,KAAK,CAAA;IAEzB,YAAY,YAA8B,QAAQ;QAChD,IAAI,CAAC,GAAG,GAAG,SAAS,KAAK,KAAK,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAC5F,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;QAC7F,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,CAAA;QACjC,IAAI,CAAC,WAAW,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,CAAA;QACxC,MAAM,OAAO,GAA2C,EAAE,CAAA;QAC1D,IAAI,CAAC;YACH,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;YAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;YAC9D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAA;YAC7E,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;YAChC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;gBAC3B,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;oBACjC,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;wBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;;wBAC7D,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;gBAClD,CAAC,CAAC;gBACF,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBACpC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;oBACxC,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;wBAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;;wBAC3E,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;gBACzD,CAAC,CAAC;aACH,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,KAAK,MAAM,MAAM,IAAI,OAAO;gBAAE,MAAM,CAAC,KAAK,EAAE,CAAA;YAC5C,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YACxD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,MAAgC;QACjD,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;YAAE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAA;QACvD,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC;YAC9B,GAAG,UAAU;YACb,gBAAgB,EAAE,SAAS;YAC3B,WAAW,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAI,CAAC,CAAC,CAAC,IAAI;SACrF,EAAE,MAAM,CAAC,CAAA;QACV,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE;YACjC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;QAC7D,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;QACjE,OAAO,MAAM,CAAA;IACf,CAAC;IAED,0FAA0F;IAC1F,WAAW;QACT,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;YAAE,OAAO,EAAE,CAAA;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAsB,CAAA;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAsB,CAAA;QACjE,OAAO;YACL,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC7B,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,QAAQ,EAAE,QAAQ,CAAC,IAAI;aACxB,CAAC;SACH,CAAA;IACH,CAAC;IAED,iFAAiF;IACjF,OAAO,CAAC,QAAQ,GAAG,KAAK;QACtB,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;IAClF,CAAC;IAED,iFAAiF;IACjF,QAAQ,CAAC,GAAW,EAAE,MAAc;QAClC,IAAI,GAAG,KAAK,MAAM;YAAE,MAAM,YAAY,CAAC,mBAAmB,EAAE,2BAA2B,CAAC,CAAA;QACxF,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QACnB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;QAC1B,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;QAC1B,wEAAwE;QACxE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAClC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACzC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;IACvB,CAAC;IAED,gFAAgF;IAChF,UAAU;QACR,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,CAAA;IAC/B,CAAC;IAED,OAAO;QACL,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,WAAW;YAAE,MAAM,CAAC,OAAO,EAAE,CAAA;QACvD,IAAI,CAAC,UAAU,EAAE,CAAA;QACjB,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAA;QACtB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QACnB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/E,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACrB,4EAA4E;QAC5E,uEAAuE;QACvE,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,EAAE,CAAA;IAC9C,CAAC;IAED,KAAK,CAAC,OAAgB;QACpB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAA;YACjC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACjE,MAAM,CAAC,YAAY,CAAC,wBAAwB,EAAE,wCAAwC,CAAC,CAAC,CAAA;gBACxF,OAAM;YACR,CAAC;YACD,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAA;YAC3C,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;gBAC9C,MAAM,CAAC,YAAY,CAAC,yBAAyB,EAAE,uDAAuD,CAAC,CAAC,CAAA;gBACxG,OAAM;YACR,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QAClE,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,MAAM;QACZ,IAAI,CAAC,UAAU,EAAE,CAAA;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;YACtB,YAAY,CAAC,iBAAiB,EAAE,wDAAwD,CAAC,CAAA;QAC3F,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACzF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACxB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAChC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACzB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;IACtB,CAAC;IAEO,cAAc,CAAC,MAAc;QACnC,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,CAAC,OAAO,EAAE,CAAA;YAChB,OAAM;QACR,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAA;QAC3B,yEAAyE;QACzE,wEAAwE;QACxE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QACpB,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAA;IAC9B,CAAC;IAEO,MAAM,CAAC,MAAc;QAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,CAAC,OAAO,EAAE,CAAA;YAChB,OAAM;QACR,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAC1B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACjC,IAAI,CAAC;gBACH,MAAM,IAAI,IAAI,CAAA;gBACd,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;oBAC1C,MAAM,YAAY,CAAC,kBAAkB,EAAE,wCAAwC,CAAC,CAAA;gBAClF,CAAC;gBACD,SAAS,CAAC;oBACR,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;oBAChC,IAAI,GAAG,GAAG,CAAC;wBAAE,MAAK;oBAClB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;oBACjC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;oBAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;gBAChC,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;gBAClB,MAAM,CAAC,OAAO,EAAE,CAAA;YAClB,CAAC;QACH,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QACpB,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IAC3C,CAAC;IAEO,OAAO,CAAC,KAAc;QAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAAE,MAAM,YAAY,CAAC,gBAAgB,EAAE,wBAAwB,CAAC,CAAA;QAC/G,MAAM,OAAO,GAAG,KAAgC,CAAA;QAChD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,OAAO;gBACV,IACE,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAC7G,CAAC;oBACD,MAAM,YAAY,CAAC,gBAAgB,EAAE,2BAA2B,CAAC,CAAA;gBACnE,CAAC;gBACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;gBACzB,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,OAAO,CAAA;gBACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;gBACvC,OAAM;YACR,KAAK,SAAS;gBACZ,IACE,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC;oBAClF,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;oBACxB,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAC5G,CAAC;oBACD,MAAM,YAAY,CAAC,gBAAgB,EAAE,wBAAwB,CAAC,CAAA;gBAChE,CAAC;gBACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;gBAC3B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;gBACpC,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;oBAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;gBAC/E,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;gBACtB,OAAM;YACR,KAAK,aAAa;gBAChB,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;oBACjD,MAAM,YAAY,CAAC,gBAAgB,EAAE,8BAA8B,CAAC,CAAA;gBACtE,CAAC;gBACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;gBACvB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;gBACpB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;gBAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;gBAC3B,OAAM;YACR,KAAK,OAAO;gBACV,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;gBACpB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;gBAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;gBAC3B,OAAM;YACR,KAAK,MAAM;gBACT,IACE,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,UAAU;oBACxC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI;wBACtF,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EACvG,CAAC;oBACD,MAAM,YAAY,CAAC,gBAAgB,EAAE,4BAA4B,CAAC,CAAA;gBACpE,CAAC;gBACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;gBACtB,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;wBACjB,OAAO,EAAE,kDAAkD,OAAO,CAAC,MAAM,GAAG;wBAC5E,MAAM,EAAE,OAAO,CAAC,MAAM;qBACvB,CAAC,CAAA;gBACJ,CAAC;;oBAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAC1D,IAAI,CAAC,YAAY,EAAE,CAAA;gBACnB,OAAM;YACR,KAAK,eAAe;gBAClB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;gBACzB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;gBACpB,OAAM;YACR,KAAK,SAAS;gBACZ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAA;gBAC/B,IAAI,CAAC,SAAS,EAAE,CAAA;gBAChB,OAAM;YACR;gBACE,MAAM,YAAY,CAAC,gBAAgB,EAAE,wBAAwB,CAAC,CAAA;QAClE,CAAC;IACH,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,MAAc,EACd,MAGuD,EACvD,YAA8B,QAAQ,EAC3B,EAAE,CACf,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CACjB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,KAAK,SAAS,CAAA;IAC9C,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;QAClD,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;QAC7B,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC;KAC5D,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;IACX,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,kBAAkB,CAAC;QAC1C,GAAG;QACH,GAAG;QACH,IAAI,EAAG,UAA4D,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE;KACpF,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAA;IAC3C,MAAM,OAAO,GAAG,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAA;IAC9D,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC;QAC7B,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YAChB,GAAG,EAAE,oBAAoB;YACzB,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;SAC3D,CAAC,CAAC,CAAC;QACJ,SAAS,CAAA;IACX,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAC1C,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,EAC7G,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAClD,CAAA;IACD,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IACtG,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;QAC3D,GAAG,SAAS;QACZ,IAAI;QACJ,MAAM;QACN,OAAO,CAAC,IAAI;QACZ,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;KAC7B,EAAE;QACD,GAAG,OAAO,CAAC,OAAO;QAClB,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI;QACjC,GAAG,EAAE;YACH,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,GAAG;YACT,eAAe,EAAE,GAAG;YACpB,iCAAiC,EAAE,GAAG;YACtC,GAAG,OAAO,CAAC,WAAW,EAAE;YACxB,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,2BAA2B,EAAE,aAAa,EAAE,CAAC;SACvF;QACD,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,OAAO;QACjB,UAAU,EAAE,SAAS;QACrB,cAAc,EAAE,OAAO,CAAC,OAAO;KAChC,CAAC,CAAC,CAAA;IACH,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;IAC/G,IAAI,GAAkC,CAAA;IACtC,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,UAAU,GAAG,IAAI,CAAA;IACrB,IAAI,KAAK,GAAqD,MAAM,CAAC,IAAI,CAAA;IACzE,IAAI,QAAQ,GAAG,OAAO,CAAA;IACtB,IAAI,qBAAqB,GAAG,KAAK,CAAA;IACjC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC/C,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,UAAU,CAAA;QACvC,MAAM,QAAQ,GAAG,QAAQ,EAAE,CAAA;QAC3B,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,KAAK,GAAG,CAAC,GAAG;YAAE,OAAO,KAAK,CAAA;QACzE,4DAA4D;QAC5D,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,KAAK,OAAO,CAAC,WAAW,CAAC,CAAA;QACzG,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAE,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAA;IAC5D,CAAC,CAAA;IACD,4EAA4E;IAC5E,6EAA6E;IAC7E,OAAO,CAAC,YAAY,GAAG,GAAG,EAAE;QAC1B,sEAAsE;QACtE,qEAAqE;QACrE,IAAI,OAAO,CAAC,SAAS;YAAE,OAAM;QAC7B,IAAI,CAAC,KAAK,EAAE;YAAE,OAAM;QACpB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAA;QACxB,KAAK,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;IAC3G,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACtD,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,OAAO,GAAG,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CACzG,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CACrB,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC3D,mEAAmE;YACnE,GAAI,CAAC,IAAI,EAAE,CAAA;YACX,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;QACrF,CAAC,CAAC,CACH,CACF,CAAA;QACD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;YACjG,OAAO,GAAG,IAAI,CAAA;YACd,OAAM;QACR,CAAC;QACD,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAC5G,MAAM,CAAC,MAAM,CACd,CAAA;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAA;QAC5C,SAAS,CAAC;YACR,iEAAiE;YACjE,uEAAuE;YACvE,uEAAuE;YACvE,mEAAmE;YACnE,+CAA+C;YAC/C,MAAM,MAAM,GAAG,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAChD,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;YAC5D,OAAO,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO;gBACrG,CAAC,CAAC,MAAM;oBACN,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,KAAK,GAAG,CAAC,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC9G,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;YACzE,IAAI,OAAO;gBAAE,OAAM;YACnB,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC3B,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,OAAO,CACL,MAAM,EACN,OAAO,CAAC,OAAO,EACf,YAAY,CACV,oBAAoB,EACpB,uEAAuE;oBACrE,IAAI,iBAAiB,CAAC,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,EAC5E;oBACE,KAAK,EAAE;wBACL,KAAK,EAAE,OAAO,CAAC,KAAK;wBACpB,aAAa,EAAE,OAAO,CAAC,aAAa;wBACpC,eAAe,EAAE,qBAAqB;wBACtC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;wBAChD,UAAU,EAAE,OAAO,CAAC,UAAU;wBAC9B,WAAW,EAAE,MAAM;wBACnB,aAAa,EAAE,QAAQ,KAAK,SAAS;wBACrC,OAAO,EAAE,QAAQ,EAAE,OAAO;qBAC3B;iBACF,CACF,CACF,CACF,CAAA;YACH,CAAC;YACD,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAA;QAChF,CAAC;IACH,CAAC,CAAC,CAAC,CAAA;IACH,MAAM,IAAI,GAAG,CAAC,UAAoC,EAAE,EAAE,EAAE,CACtD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;QACzD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;YACpB,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,CAAA;YACrB,OAAO,CAAC,aAAa,EAAE,GAAG,EAAE,CAAA;YAC5B,KAAK,CAAC,CAAC,KAAK,CAAA;YACZ,UAAU,GAAG,IAAI,CAAA;QACnB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAA;YACxB,QAAQ,GAAG,SAAS,CAAA;YACpB,sEAAsE;YACtE,sEAAsE;YACtE,+CAA+C;YAC/C,qBAAqB,GAAG,OAAO,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,UAAU,CAAA;YACxG,KAAK,CAAC,CAAC,OAAO,CACZ,IAAI,CACF,OAAO,CAAC,KAAK,CAAC;gBACZ,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,IAAI;gBACd,GAAG,SAAS;gBACZ,0DAA0D;gBAC1D,6DAA6D;gBAC7D,4DAA4D;gBAC5D,UAAU,EAAE,CAAC,OAAO,CAAC,cAAc,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU;aAClF,CAAC,EACF,MAAM,EACN,OAAO,CAAC,OAAO,CAChB,EACD,UAAU,EACV,MAAM,EACN,OAAO,CAAC,OAAO,CAChB;iBACE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAA;QACtE,CAAC;QACD,KAAK,CAAC,CAAC,MAAM,CAAA;IACf,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IACjC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAC9B,IAAI,EAAE,CAAC,IAAI;IACT,yEAAyE;IACzE,0EAA0E;IAC1E,MAAM,CAAC,QAAQ,CACb,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAClB,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CACpC,GAAG,CAAC,KAAK,EACT,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QACf,GAAG,EAAE,IAAI,EAAE,CAAA;QACX,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QACrB,OAAO,CAAC,UAAU,EAAE,CAAA;IACtB,CAAC,CAAC,CACH,CACF,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CACrB,EACD,MAAM,CAAC,KAAK,CACb,CACF,CAAA;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,CAC1B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EACrD,SAAS,EACT,OAAO,EACP,OAAO,CAAC,OAAO,CAChB,CAAA;IACD,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAClH,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAChB,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC;QAC3C,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;KAC3D,CAAC,CAAA;IACF,IAAI,OAAO,EAAE,CAAC;QACZ,GAAG,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YACtB,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,aAAa,EAAE,aAAc,CAAC;YAChF,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;SAC3D,CAAC,CAAA;QACF,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IACxG,CAAC;IACD,MAAM,kBAAkB,GAAG,OAAO,IAAI,SAAS,KAAK,KAAK,CAAA;IACzD,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO,CAAC,SAAS,GAAG,GAAG,EAAE;YACvB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBACvB,KAAK,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;YAC/E,CAAC;QACH,CAAC,CAAA;IACH,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC/B,4EAA4E;IAC5E,yEAAyE;IACzE,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACtG,KAAK,CAAC,CAAC,OAAO,CACZ,IAAI,CACF,OAAO,CAAC,KAAK,CAAC;QACZ,IAAI,EAAE,WAAW;QACjB,kBAAkB;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1C,GAAG;QACH,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI;QACxC,wBAAwB,EACrB,OAAyF;aACvF,wBAAwB;QAC7B,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC;QAC/B,OAAO,EAAE;YACP,GAAG,IAAI,GAAG,CACR,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC;iBACnE,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CAClD;SACF;QACD,GAAG,OAAO;KACX,CAAC,EACF,OAAO,EACP,OAAO,CAAC,OAAO,CAChB,EACD,UAAU,EACV,OAAO,EACP,OAAO,CAAC,OAAO,CAChB,CAAA;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACxD,OAAO,CAAC,cAAc,GAAG,IAAI,CAAA;QAC7B,KAAK,CAAC,CAAC,OAAO,CACZ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAChE,UAAU,EACV,OAAO,EACP,OAAO,CAAC,OAAO,CAChB,CAAA;QACD,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9G,CAAC,CAAC,CAAC,CAAA;IACH,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAChC,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAA;YACxB,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;YACrB,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAA;YACvB,OAAO,CAAC,aAAa,EAAE,KAAK,EAAE,CAAA;YAC9B,UAAU,GAAG,KAAK,CAAA;QACpB,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACzB,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;gBACpB,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,CAAA;gBACrB,OAAO,CAAC,aAAa,EAAE,GAAG,EAAE,CAAA;gBAC5B,KAAK,CAAC,CAAC,KAAK,CAAA;gBACZ,UAAU,GAAG,IAAI,CAAA;YACnB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,CAAI,MAAqD,EAAE,EAAE,CAC1E,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAC1E,CAAA;IACH,MAAM,KAAK,GAAG,CAAI,IAAkE,EAAE,EAAE,CACtF,IAAI,CAAC,WAAW,CACd,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CACvG,CAAA;IACH,MAAM,MAAM,GAAG,UAAU,CAAC;QACxB,GAAG,GAAG;QACN,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC;QACnE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QACvE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;QACvB,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC7C,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAC1B,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;QACpB,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAChD,IAAI;QACJ,KAAK;KACN,CAAC,CAAA;IACF,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,OAAO;QACL,MAAM;QACN,QAAQ;QACR,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;KACpC,CAAA;AACH,CAAC,CAAC,CAAA","sourcesContent":["/**\n * Private parent connection for a POSIX process owner. Effect retains ownership\n * of the caller's streams; separate sockets carry requests and lifetime status.\n * @since 1.0.0\n */\n\nimport type { Lifecycle } from \"@smthrs/kernel/ContainedSpawner\"\nimport * as Channel from \"effect/Channel\"\nimport * as Clock from \"effect/Clock\"\nimport * as Effect from \"effect/Effect\"\nimport * as PlatformError from \"effect/PlatformError\"\nimport * as Sink from \"effect/Sink\"\nimport * as Stream from \"effect/Stream\"\nimport * as ChildProcess from \"effect/unstable/process/ChildProcess\"\nimport { type ChildProcessHandle, ExitCode, makeHandle } from \"effect/unstable/process/ChildProcessSpawner\"\nimport { randomBytes } from \"node:crypto\"\nimport { chmodSync, mkdtempSync, rmdirSync, rmSync } from \"node:fs\"\nimport { createConnection, createServer, type Socket } from \"node:net\"\nimport { tmpdir } from \"node:os\"\nimport { join, parse, resolve } from \"node:path\"\nimport * as Tls from \"node:tls\"\nimport { standardFdsOf } from \"./PipedProcess.ts\"\nimport type { Policy, Snapshot, System } from \"./ProcessCleanup.ts\"\nimport { NativeProcessError, processFault } from \"./ProcessFault.ts\"\nimport { source } from \"./SupervisorProgram.ts\"\nimport { resolveJobExecutable, WindowsProcessJob } from \"./WindowsProcessJob.ts\"\n\nconst startupMs = 5000\nconst deliveryMs = 500\nconst exitAllowanceMs = 2500\n// Host-wide process observations can exceed a socket-delivery deadline on a\n// loaded machine. Keep verification bounded without mistaking that delay for\n// an unclean exit; an unknown observation still never counts as success.\nconst verificationMs = 2500\nconst targets = new WeakMap<ChildProcessHandle, Control>()\n// Native owners and sockets keep running when the caller freezes its Clock.\n// Their delivery bounds and cleanup retries must keep running with them.\nconst processClock = Clock.Clock.defaultValue()\n\n/**\n * Actual service pid, distinct from the owner recorded by the host.\n * @private\n * @since 1.0.0\n */\nexport const targetPidOf = (handle: ChildProcessHandle): number | undefined => targets.get(handle)?.targetPid\n\n/** Native error fields remain data on the public PlatformError cause. */\nconst nativeError = (cause: unknown): Error & { code?: string | undefined; syscall?: string | undefined } => {\n if (cause instanceof Error) return cause\n const value = (cause ?? {}) as Record<string, unknown>\n const text = (field: string): string | undefined => typeof value[field] === \"string\" ? value[field] : undefined\n return new NativeProcessError({\n message: text(\"message\") ?? \"The process supervisor failed\",\n code: text(\"code\"),\n errno: typeof value.errno === \"number\" ? value.errno : undefined,\n reason: text(\"reason\"),\n syscall: text(\"syscall\"),\n path: text(\"path\"),\n signal: text(\"signal\")\n })\n}\n\n/**\n * Preserve the platform's errno and signal vocabulary across the private wire.\n * @private\n * @since 1.0.0\n */\nexport const failure = (method: string, command: string, cause: unknown): PlatformError.PlatformError => {\n const error = nativeError(cause)\n const tags: Readonly<Record<string, PlatformError.SystemErrorTag>> = {\n ENOENT: \"NotFound\",\n EACCES: \"PermissionDenied\",\n EEXIST: \"AlreadyExists\",\n EISDIR: \"BadResource\",\n ENOTDIR: \"BadResource\",\n ELOOP: \"BadResource\",\n EBUSY: \"Busy\"\n }\n return PlatformError.systemError({\n _tag: tags[error.code ?? \"\"] ?? \"Unknown\",\n module: \"ChildProcess\",\n method,\n pathOrDescriptor: command,\n syscall: error.syscall,\n description: error.message,\n cause: error\n })\n}\n\n/**\n * The observation behind an unverified cleanup, in the message itself: a\n * failure report usually shows only the message, and whether the receipt, the\n * kernel or the snapshot was missing decides host load versus a live survivor.\n * @private\n * @since 1.0.0\n */\nexport const unverifiedCleanup = (\n control: {\n readonly fault: unknown\n readonly cleanupFailed: boolean\n readonly cleanupAcknowledged: boolean\n readonly targetDone: boolean\n },\n cleanupRequired: boolean,\n vacant: boolean,\n observed: Snapshot | undefined\n): string =>\n [\n `target exited: ${control.targetDone}`,\n `cleanup receipt: ${\n control.cleanupFailed\n ? \"failed\"\n : !cleanupRequired\n ? \"not required\"\n : control.cleanupAcknowledged\n ? \"acknowledged\"\n : \"missing\"\n }`,\n `group vacant: ${vacant}`,\n observed === undefined\n ? \"group snapshot: unavailable\"\n : `group members: ${\n observed.members.length === 0\n ? \"none\"\n : observed.members.map((member) => `${member.pid} ${member.zombie ? \"zombie\" : \"live\"}`).join(\", \")\n }; host group ${observed.ownGroup}`,\n ...(control.fault === undefined\n ? []\n : [`fault: ${String((control.fault as { message?: unknown })?.message ?? control.fault)}`])\n ].join(\"; \")\n\nconst promise = <A>() => {\n let resolve!: (value: A) => void\n let reject!: (cause: unknown) => void\n const promise = new Promise<A>((yes, no) => {\n resolve = yes\n reject = no\n })\n // A status may arrive before its Effect consumer starts waiting.\n void promise.catch(() => {})\n return { promise, resolve, reject }\n}\n\nconst wait = <A>(value: Promise<A>, method: string, command: string) =>\n Effect.tryPromise({ try: () => value, catch: (cause) => failure(method, command, cause) })\n\nconst bounded = <A, E, R>(effect: Effect.Effect<A, E, R>, millis: number, method: string, command: string) =>\n effect.pipe(\n Effect.timeoutOrElse({\n duration: millis,\n orElse: () =>\n Effect.fail(\n failure(method, command, processFault(\"supervisor_timeout\", `Process supervisor ${method} timed out`))\n )\n }),\n Effect.provideService(Clock.Clock, processClock)\n )\n\n/**\n * Standalone application executables do not implement the runtime's eval CLI.\n * Refuse them before spawning rather than recursively launching the application.\n * @private\n * @since 1.0.0\n */\nexport const bootstrapArguments = (runtime: { readonly bun: boolean; readonly main: string; readonly sea: boolean }) =>\n runtime.sea || runtime.main.startsWith(\"/$bunfs/\")\n ? Effect.fail(\n failure(\n \"spawn\",\n process.execPath,\n processFault(\n \"runtime_unsupported\",\n \"Process supervision requires a Node or Bun runtime executable, not a compiled application\"\n )\n )\n )\n : Effect.succeed(runtime.bun ? [\"--no-env-file\", \"--config=/dev/null\"] : [])\n\nconst channelEnvironment = \"SMITHERS_PROCESS_CHANNEL\"\nconst tlsOptions = { minVersion: \"TLSv1.3\", maxVersion: \"TLSv1.3\", ciphers: \"TLS_AES_128_GCM_SHA256\" } as const\n\n/**\n * Connect an owner to its authenticated private channel.\n * @private\n * @since 1.0.0\n */\nexport const connectOwner = (path: string, environment: Readonly<Record<string, string | undefined>>): Socket => {\n const encoded = environment[channelEnvironment]\n if (encoded === undefined) return createConnection(path)\n const channel = JSON.parse(encoded) as { key: string; status: number; requests: number }\n return Tls.connect({\n ...tlsOptions,\n host: \"127.0.0.1\",\n port: path.endsWith(\"/r\") ? channel.requests : channel.status,\n pskCallback: () => ({ identity: \"smithers-owner\", psk: Buffer.from(channel.key, \"hex\") })\n })\n}\n\n/**\n * Kept separate from Effect scopes so native socket callbacks only settle\n * promises; none can start an unowned fiber or signal an observed process id.\n * @private\n * @since 1.0.0\n */\nexport class Control {\n readonly ready = promise<number>()\n readonly started = promise<void>()\n readonly exited = promise<ExitCode>()\n readonly lost = promise<never>()\n readonly ended = promise<void>()\n readonly requestsReady = promise<void>()\n readonly directory: string\n readonly path: string\n readonly requestPath: string\n readonly server\n readonly requestServer\n readonly listening: Promise<void>\n private readonly key: Buffer | undefined\n private readonly connections = new Set<Socket>()\n socket: Socket | undefined\n requestSocket: Socket | undefined\n targetDone = false\n ownerCreation: unknown\n targetPid: number | undefined\n /** The owner's group guardian: a member that is neither target nor owner. */\n guardianPid: number | undefined\n ownerDone = false\n spawnFailed = false\n cleanupFailed = false\n cleanupAcknowledged = false\n activationSent = false\n closeSent = false\n fault: unknown\n onTargetExit: () => void = () => {}\n onCleanup: () => void = () => {}\n private receivedReady = false\n private receivedStarted = false\n private withdrawn = false\n\n constructor(transport: \"native\" | \"tls\" = \"native\") {\n this.key = transport === \"tls\" || process.platform === \"win32\" ? randomBytes(32) : undefined\n this.directory = mkdtempSync(this.key === undefined ? \"/tmp/sm-p-\" : join(tmpdir(), \"sm-p-\"))\n this.path = `${this.directory}/s`\n this.requestPath = `${this.directory}/r`\n const servers: Array<ReturnType<typeof createServer>> = []\n try {\n chmodSync(this.directory, 0o700)\n this.server = this.makeServer((socket) => this.accept(socket))\n servers.push(this.server)\n this.requestServer = this.makeServer((socket) => this.acceptRequests(socket))\n servers.push(this.requestServer)\n this.listening = Promise.all([\n new Promise<void>((resolve, reject) => {\n this.server.once(\"error\", reject)\n if (this.key === undefined) this.server.listen(this.path, resolve)\n else this.server.listen(0, \"127.0.0.1\", resolve)\n }),\n new Promise<void>((resolve, reject) => {\n this.requestServer.once(\"error\", reject)\n if (this.key === undefined) this.requestServer.listen(this.requestPath, resolve)\n else this.requestServer.listen(0, \"127.0.0.1\", resolve)\n })\n ]).then(() => {})\n } catch (cause) {\n for (const server of servers) server.close()\n rmSync(this.directory, { recursive: true, force: true })\n throw cause\n }\n }\n\n private makeServer(accept: (socket: Socket) => void): ReturnType<typeof createServer> {\n if (this.key === undefined) return createServer(accept)\n const server = Tls.createServer({\n ...tlsOptions,\n handshakeTimeout: startupMs,\n pskCallback: (_socket, identity) => identity === \"smithers-owner\" ? this.key! : null\n }, accept)\n server.on(\"connection\", (socket) => {\n this.connections.add(socket)\n socket.once(\"close\", () => this.connections.delete(socket))\n })\n server.on(\"tlsClientError\", (_error, socket) => socket.destroy())\n return server\n }\n\n /** Only the trusted owner receives this environment; target configuration replaces it. */\n environment(): Readonly<Record<string, string>> {\n if (this.key === undefined) return {}\n const status = this.server.address() as { port: number }\n const requests = this.requestServer.address() as { port: number }\n return {\n [channelEnvironment]: JSON.stringify({\n key: this.key.toString(\"hex\"),\n status: status.port,\n requests: requests.port\n })\n }\n }\n\n /** The test peer uses the same authenticated transport as the isolated owner. */\n connect(requests = false): Socket {\n return connectOwner(requests ? this.requestPath : this.path, this.environment())\n }\n\n /** Validate the stored READY after the raw spawn effect has returned its pid. */\n withdraw(pid: number, actual: number): void {\n if (pid !== actual) throw processFault(\"identity_mismatch\", \"Wrong supervisor identity\")\n this.server.close()\n this.server.unref()\n this.requestServer.close()\n this.requestServer.unref()\n // Node may unlink the owned socket synchronously inside server.close().\n rmSync(this.path, { force: true })\n rmSync(this.requestPath, { force: true })\n rmdirSync(this.directory)\n this.withdrawn = true\n }\n\n /** Request EOF asks for cleanup; leave its independent status reader intact. */\n disconnect(): void {\n this.requestSocket?.destroy()\n }\n\n dispose(): void {\n for (const socket of this.connections) socket.destroy()\n this.disconnect()\n this.socket?.destroy()\n this.server.close()\n this.requestServer.close()\n if (!this.withdrawn) rmSync(this.directory, { recursive: true, force: true })\n }\n\n rawEnded(): void {\n this.ownerDone = true\n // An accepted socket may still have buffered status frames. Its close event\n // rejects missing outcomes only after Node has delivered those frames.\n if (this.socket === undefined) this.closed()\n }\n\n write(message: unknown): Promise<void> {\n return new Promise((resolve, reject) => {\n const socket = this.requestSocket\n if (socket === undefined || socket.destroyed || !socket.writable) {\n reject(processFault(\"control_channel_closed\", \"Private process control channel closed\"))\n return\n }\n const data = `${JSON.stringify(message)}\\n`\n if (Buffer.byteLength(data) > 4 * 1024 * 1024) {\n reject(processFault(\"configuration_too_large\", \"Process configuration exceeds the private frame limit\"))\n return\n }\n socket.write(data, (error) => error ? reject(error) : resolve())\n })\n }\n\n private closed(): void {\n this.disconnect()\n const cause = this.fault ??\n processFault(\"outcome_missing\", \"Process supervisor closed before reporting its outcome\")\n if (this.activationSent && !this.targetDone && !this.spawnFailed) this.lost.reject(cause)\n this.ready.reject(cause)\n this.requestsReady.reject(cause)\n this.started.reject(cause)\n this.exited.reject(cause)\n this.ended.resolve()\n }\n\n private acceptRequests(socket: Socket): void {\n if (this.requestSocket !== undefined) {\n socket.destroy()\n return\n }\n this.requestSocket = socket\n // A late write may fail after the owner has sent its last status frames.\n // Destroying this socket must never discard those frames on the reader.\n socket.on(\"error\", (cause) => {\n this.fault = cause\n })\n this.requestsReady.resolve()\n }\n\n private accept(socket: Socket): void {\n if (this.socket !== undefined) {\n socket.destroy()\n return\n }\n this.socket = socket\n let buffer = \"\"\n socket.setEncoding(\"utf8\")\n socket.on(\"data\", (data: string) => {\n try {\n buffer += data\n if (Buffer.byteLength(buffer) > 16 * 1024) {\n throw processFault(\"status_too_large\", \"Process status frame exceeds its limit\")\n }\n for (;;) {\n const end = buffer.indexOf(\"\\n\")\n if (end < 0) break\n const line = buffer.slice(0, end)\n buffer = buffer.slice(end + 1)\n this.receive(JSON.parse(line))\n }\n } catch (cause) {\n this.fault = cause\n socket.destroy()\n }\n })\n socket.on(\"error\", (cause) => {\n this.fault = cause\n })\n socket.once(\"close\", () => this.closed())\n }\n\n private receive(value: unknown): void {\n if (typeof value !== \"object\" || value === null) throw processFault(\"status_invalid\", \"Invalid process status\")\n const message = value as Record<string, unknown>\n switch (message.type) {\n case \"ready\":\n if (\n this.receivedReady || message.version !== 1 || !Number.isSafeInteger(message.pid) || Number(message.pid) <= 1\n ) {\n throw processFault(\"status_invalid\", \"Invalid process readiness\")\n }\n this.receivedReady = true\n this.ownerCreation = message.created\n this.ready.resolve(Number(message.pid))\n return\n case \"spawned\":\n if (\n !this.activationSent || this.receivedStarted || !Number.isSafeInteger(message.pid) ||\n Number(message.pid) <= 1 ||\n message.guardian !== undefined && (!Number.isSafeInteger(message.guardian) || Number(message.guardian) <= 1)\n ) {\n throw processFault(\"status_invalid\", \"Invalid target startup\")\n }\n this.receivedStarted = true\n this.targetPid = Number(message.pid)\n if (message.guardian !== undefined) this.guardianPid = Number(message.guardian)\n this.started.resolve()\n return\n case \"spawn_error\":\n if (!this.activationSent || this.receivedStarted) {\n throw processFault(\"status_invalid\", \"Invalid target spawn failure\")\n }\n this.spawnFailed = true\n this.fault = message\n this.started.reject(message)\n this.exited.reject(message)\n return\n case \"fault\":\n this.fault = message\n this.started.reject(message)\n this.exited.reject(message)\n return\n case \"exit\":\n if (\n !this.receivedStarted || this.targetDone ||\n !(Number.isInteger(message.code) && Number(message.code) >= 0 && message.signal === null ||\n message.code === null && typeof message.signal === \"string\" && /^SIG[A-Z0-9]+$/.test(message.signal))\n ) {\n throw processFault(\"status_invalid\", \"Invalid target exit status\")\n }\n this.targetDone = true\n if (message.code === null) {\n this.exited.reject({\n message: `Process interrupted due to receipt of signal: '${message.signal}'`,\n signal: message.signal\n })\n } else this.exited.resolve(ExitCode(Number(message.code)))\n this.onTargetExit()\n return\n case \"cleanup_error\":\n this.cleanupFailed = true\n this.fault = message\n return\n case \"cleanup\":\n this.cleanupAcknowledged = true\n this.onCleanup()\n return\n default:\n throw processFault(\"status_unknown\", \"Unknown process status\")\n }\n }\n}\n\n/**\n * Prepare a private, independently bounded process owner before target launch.\n * @private\n * @since 1.0.0\n */\nexport const prepare = (\n system: System,\n policy: (\n options: ChildProcess.KillOptions,\n defaults?: ChildProcess.KillOptions\n ) => Effect.Effect<Policy, PlatformError.PlatformError>,\n transport: \"native\" | \"tls\" = \"native\"\n): Lifecycle =>\n(command, spawn) =>\n Effect.gen(function*() {\n const initial = yield* policy(command.options)\n const bun = process.versions.bun !== undefined\n const sea = bun ? false : (yield* Effect.tryPromise({\n try: () => import(\"node:sea\"),\n catch: (cause) => failure(\"spawn\", process.execPath, cause)\n })).isSea()\n const bootstrap = yield* bootstrapArguments({\n bun,\n sea,\n main: (globalThis as { readonly Bun?: { readonly main?: string } }).Bun?.main ?? \"\"\n })\n const windows = system.platform === \"win32\"\n const grouped = !windows && (command.options.detached ?? true)\n const jobExecutable = windows ?\n yield* Effect.try({\n try: resolveJobExecutable,\n catch: (cause) => failure(\"spawn\", command.command, cause)\n }) :\n undefined\n const control = yield* Effect.acquireRelease(\n Effect.try({ try: () => new Control(transport), catch: (cause) => failure(\"spawn\", command.command, cause) }),\n (control) => Effect.sync(() => control.dispose())\n )\n yield* bounded(wait(control.listening, \"spawn\", command.command), startupMs, \"spawn\", command.command)\n const raw = yield* spawn(ChildProcess.make(process.execPath, [\n ...bootstrap,\n \"-e\",\n source,\n control.path,\n grouped ? \"group\" : \"direct\"\n ], {\n ...command.options,\n cwd: parse(process.execPath).root,\n env: {\n PATH: \"/usr/bin:/bin\",\n HOME: \"/\",\n XDG_CONFIG_HOME: \"/\",\n BUN_RUNTIME_TRANSPILER_CACHE_PATH: \"0\",\n ...control.environment(),\n ...(jobExecutable === undefined ? {} : { SMITHERS_PROCESS_JOB_HELPER: jobExecutable })\n },\n extendEnv: false,\n shell: false,\n detached: grouped,\n killSignal: \"SIGTERM\",\n forceKillAfter: initial.graceMs\n }))\n yield* Effect.exit(raw.exitCode).pipe(Effect.andThen(Effect.sync(() => control.rawEnded())), Effect.forkScoped)\n let job: WindowsProcessJob | undefined\n let settled = false\n let referenced = true\n let reref: Effect.Effect<void, PlatformError.PlatformError> = Effect.void\n let selected = initial\n let requireCleanupReceipt = false\n const snapshot = () => system.snapshot(raw.pid)\n const alone = () => {\n if (!grouped) return control.targetDone\n const observed = snapshot()\n if (observed === undefined || observed.ownGroup === raw.pid) return false\n // The guardian leaves with the owner's final group SIGKILL.\n const running = observed.members.filter((member) => !member.zombie && member.pid !== control.guardianPid)\n return running.length === 1 && running[0]!.pid === raw.pid\n }\n // This observation only shortens the owner's deadline. The live owner makes\n // the signal, so neither a stale observation nor a reused pid grants a kill.\n control.onTargetExit = () => {\n // An explicit stop already owns its deadline and escaped-child sweep.\n // Natural exit must not replace that policy with a second fast stop.\n if (control.closeSent) return\n if (!alone()) return\n control.closeSent = true\n void control.write({ type: \"stop\", killSignal: \"SIGKILL\", fast: true }).catch(() => control.disconnect())\n }\n const finish = yield* Effect.cached(Effect.gen(function*() {\n yield* bounded(Effect.exit(raw.exitCode), selected.graceMs + exitAllowanceMs, \"kill\", command.command).pipe(\n Effect.catch((cause) =>\n job === undefined ? Effect.fail(cause) : Effect.gen(function*() {\n // The native guardian can terminate a stalled owner independently.\n job!.stop()\n yield* bounded(Effect.exit(raw.exitCode), exitAllowanceMs, \"kill\", command.command)\n })\n )\n )\n if (job !== undefined) {\n yield* bounded(wait(job.settled.promise, \"kill\", command.command), 5500, \"kill\", command.command)\n settled = true\n return\n }\n yield* bounded(wait(control.ended.promise, \"kill\", command.command), deliveryMs, \"kill\", command.command).pipe(\n Effect.ignore\n )\n const deadline = Date.now() + verificationMs\n for (;;) {\n // The kernel's ESRCH proves the group empty with no fork. A `ps`\n // snapshot can go unanswered on a loaded host, so it only decides what\n // the kernel cannot: a group still holding zombies, or an unknown one.\n // A live member keeps both answers false. This host is alive, so a\n // vacant group is never this host's own group.\n const vacant = grouped && system.vacant(raw.pid)\n const observed = grouped && !vacant ? snapshot() : undefined\n settled = !control.cleanupFailed && (!requireCleanupReceipt || control.cleanupAcknowledged) && (grouped\n ? vacant ||\n observed !== undefined && observed.ownGroup !== raw.pid && observed.members.every((member) => member.zombie)\n : control.targetDone || control.spawnFailed || !control.activationSent)\n if (settled) return\n if (Date.now() >= deadline) {\n return yield* Effect.fail(\n failure(\n \"kill\",\n command.command,\n processFault(\n \"cleanup_unverified\",\n \"Process cleanup could not be verified; its ledger record is retained \" +\n `(${unverifiedCleanup(control, requireCleanupReceipt, vacant, observed)})`,\n {\n cause: {\n fault: control.fault,\n cleanupFailed: control.cleanupFailed,\n cleanupRequired: requireCleanupReceipt,\n cleanupAcknowledged: control.cleanupAcknowledged,\n targetDone: control.targetDone,\n groupVacant: vacant,\n ownerObserved: observed !== undefined,\n members: observed?.members\n }\n }\n )\n )\n )\n }\n yield* Effect.sleep(10).pipe(Effect.provideService(Clock.Clock, processClock))\n }\n }))\n const kill = (options: ChildProcess.KillOptions = {}) =>\n Effect.gen(function*() {\n const requested = yield* policy(options, command.options)\n if (!referenced) {\n job?.reference(true)\n control.socket?.ref()\n control.requestSocket?.ref()\n yield* reref\n referenced = true\n }\n if (!control.closeSent) {\n control.closeSent = true\n selected = requested\n // An empty original group cannot prove an explicit escaped-descendant\n // sweep succeeded if its status frames were lost. Startup and natural\n // completion have no such additional contract.\n requireCleanupReceipt = grouped && control.activationSent && !control.spawnFailed && !control.targetDone\n yield* bounded(\n wait(\n control.write({\n type: \"stop\",\n explicit: true,\n ...requested,\n // A live target can move out of this group with setsid().\n // Only an owner whose target was never activated can replace\n // the requested signal; natural exit has its own fast path.\n killSignal: !control.activationSent && alone() ? \"SIGKILL\" : requested.killSignal\n }),\n \"kill\",\n command.command\n ),\n deliveryMs,\n \"kill\",\n command.command\n )\n .pipe(Effect.catch(() => Effect.sync(() => control.disconnect())))\n }\n yield* finish\n }).pipe(Effect.uninterruptible)\n yield* Effect.addFinalizer(() =>\n kill().pipe(\n // A stuck owner keeps its ledger entry. Disable the underlying spawner's\n // unconditional group-kill finalizer rather than signal a stale identity.\n Effect.ensuring(\n Effect.suspend(() =>\n settled ? Effect.void : Effect.andThen(\n raw.unref,\n Effect.sync(() => {\n job?.stop()\n job?.reference(false)\n control.disconnect()\n })\n )\n ).pipe(Effect.orDie)\n ),\n Effect.orDie\n )\n )\n const ready = yield* bounded(\n wait(control.ready.promise, \"spawn\", command.command),\n startupMs,\n \"spawn\",\n command.command\n )\n yield* bounded(wait(control.requestsReady.promise, \"spawn\", command.command), startupMs, \"spawn\", command.command)\n yield* Effect.try({\n try: () => control.withdraw(ready, raw.pid),\n catch: (cause) => failure(\"spawn\", command.command, cause)\n })\n if (windows) {\n job = yield* Effect.try({\n try: () => new WindowsProcessJob(raw.pid, control.ownerCreation, jobExecutable!),\n catch: (cause) => failure(\"spawn\", command.command, cause)\n })\n yield* bounded(wait(job.ready.promise, \"spawn\", command.command), startupMs, \"spawn\", command.command)\n }\n const acknowledgeCleanup = windows || transport === \"tls\"\n if (acknowledgeCleanup) {\n control.onCleanup = () => {\n if (!control.ownerDone) {\n void control.write({ type: \"cleanup_ack\" }).catch(() => control.disconnect())\n }\n }\n }\n const options = command.options\n // Match Effect/Node's undefined-vs-empty environment semantics in the host,\n // before replacing the helper's environment with its isolated bootstrap.\n const env = options.extendEnv ? { ...process.env, ...options.env } : options.env ?? { ...process.env }\n yield* bounded(\n wait(\n control.write({\n type: \"configure\",\n acknowledgeCleanup,\n command: command.command,\n args: command.args,\n cwd: resolve(options.cwd ?? process.cwd()),\n env,\n shell: options.shell,\n windowsHide: options.windowsHide ?? true,\n windowsVerbatimArguments:\n (options as ChildProcess.CommandOptions & { readonly windowsVerbatimArguments?: boolean })\n .windowsVerbatimArguments,\n standardFds: standardFdsOf(raw),\n userFds: [\n ...new Set(\n Object.keys(options.additionalFds ?? {}).map(ChildProcess.parseFdName)\n .filter((fd): fd is number => fd !== undefined)\n )\n ],\n ...initial\n }),\n \"spawn\",\n command.command\n ),\n deliveryMs,\n \"spawn\",\n command.command\n )\n const activate = yield* Effect.cached(Effect.gen(function*() {\n control.activationSent = true\n yield* bounded(\n wait(control.write({ type: \"start\" }), \"spawn\", command.command),\n deliveryMs,\n \"spawn\",\n command.command\n )\n yield* bounded(wait(control.started.promise, \"spawn\", command.command), startupMs, \"spawn\", command.command)\n }))\n const unref = Effect.gen(function*() {\n if (referenced) {\n reref = yield* raw.unref\n job?.reference(false)\n control.socket?.unref()\n control.requestSocket?.unref()\n referenced = false\n }\n return Effect.gen(function*() {\n if (!referenced) {\n job?.reference(true)\n control.socket?.ref()\n control.requestSocket?.ref()\n yield* reref\n referenced = true\n }\n })\n })\n const output = <A>(stream: Stream.Stream<A, PlatformError.PlatformError>) =>\n stream.pipe(\n Stream.interruptWhen(wait(control.lost.promise, \"read\", command.command))\n )\n const input = <A>(sink: Sink.Sink<A, Uint8Array, never, PlatformError.PlatformError>) =>\n Sink.fromChannel(\n Sink.toChannel(sink).pipe(Channel.interruptWhen(wait(control.lost.promise, \"write\", command.command)))\n )\n const handle = makeHandle({\n ...raw,\n exitCode: wait(control.exited.promise, \"exitCode\", command.command),\n isRunning: Effect.sync(() => !control.targetDone && !control.ownerDone),\n stdin: input(raw.stdin),\n getInputFd: (fd) => input(raw.getInputFd(fd)),\n stdout: output(raw.stdout),\n stderr: output(raw.stderr),\n all: output(raw.all),\n getOutputFd: (fd) => output(raw.getOutputFd(fd)),\n kill,\n unref\n })\n targets.set(handle, control)\n return {\n handle,\n activate,\n settled: Effect.sync(() => settled)\n }\n })\n"]}
1
+ {"version":3,"file":"ProcessSupervisor.js","sourceRoot":"","sources":["../../../src/internal/ProcessSupervisor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Private parent connection for a POSIX process owner. Effect retains ownership\n * of the caller's streams; separate sockets carry requests and lifetime status.\n * @since 1.0.0\n */\n\nimport type { Lifecycle } from \"@smthrs/kernel/ContainedSpawner\"\nimport * as Channel from \"effect/Channel\"\nimport * as Clock from \"effect/Clock\"\nimport * as Effect from \"effect/Effect\"\nimport * as PlatformError from \"effect/PlatformError\"\nimport * as ChildProcess from \"effect/process/ChildProcess\"\nimport { type ChildProcessHandle, ExitCode, makeHandle } from \"effect/process/ChildProcessSpawner\"\nimport * as Sink from \"effect/Sink\"\nimport * as Stream from \"effect/Stream\"\nimport { randomBytes } from \"node:crypto\"\nimport { chmodSync, mkdtempSync, rmdirSync, rmSync } from \"node:fs\"\nimport { createConnection, createServer, type Socket } from \"node:net\"\nimport { tmpdir } from \"node:os\"\nimport { join, parse, resolve } from \"node:path\"\nimport * as Tls from \"node:tls\"\nimport { standardFdsOf } from \"./PipedProcess.ts\"\nimport type { Policy, Snapshot, System } from \"./ProcessCleanup.ts\"\nimport { NativeProcessError, processFault } from \"./ProcessFault.ts\"\nimport { source } from \"./SupervisorProgram.ts\"\nimport { resolveJobExecutable, WindowsProcessJob } from \"./WindowsProcessJob.ts\"\n\nconst startupMs = 5000\nconst deliveryMs = 500\nconst exitAllowanceMs = 2500\n// Host-wide process observations can exceed a socket-delivery deadline on a\n// loaded machine. Keep verification bounded without mistaking that delay for\n// an unclean exit; an unknown observation still never counts as success.\nconst verificationMs = 2500\nconst targets = new WeakMap<ChildProcessHandle, Control>()\n// Native owners and sockets keep running when the caller freezes its Clock.\n// Their delivery bounds and cleanup retries must keep running with them.\nconst processClock = Clock.Clock.defaultValue()\n\n/**\n * Actual service pid, distinct from the owner recorded by the host.\n * @private\n * @since 1.0.0\n */\nexport const targetPidOf = (handle: ChildProcessHandle): number | undefined => targets.get(handle)?.targetPid\n\n/** Native error fields remain data on the public PlatformError cause. */\nconst nativeError = (cause: unknown): Error & { code?: string | undefined; syscall?: string | undefined } => {\n if (cause instanceof Error) return cause\n const value = (cause ?? {}) as Record<string, unknown>\n const text = (field: string): string | undefined => typeof value[field] === \"string\" ? value[field] : undefined\n return new NativeProcessError({\n message: text(\"message\") ?? \"The process supervisor failed\",\n code: text(\"code\"),\n errno: typeof value.errno === \"number\" ? value.errno : undefined,\n reason: text(\"reason\"),\n syscall: text(\"syscall\"),\n path: text(\"path\"),\n signal: text(\"signal\")\n })\n}\n\n/**\n * Preserve the platform's errno and signal vocabulary across the private wire.\n * @private\n * @since 1.0.0\n */\nexport const failure = (method: string, command: string, cause: unknown): PlatformError.PlatformError => {\n const error = nativeError(cause)\n const tags: Readonly<Record<string, PlatformError.SystemErrorTag>> = {\n ENOENT: \"NotFound\",\n EACCES: \"PermissionDenied\",\n EEXIST: \"AlreadyExists\",\n EISDIR: \"BadResource\",\n ENOTDIR: \"BadResource\",\n ELOOP: \"BadResource\",\n EBUSY: \"Busy\"\n }\n return PlatformError.systemError({\n _tag: tags[error.code ?? \"\"] ?? \"Unknown\",\n module: \"ChildProcess\",\n method,\n pathOrDescriptor: command,\n syscall: error.syscall,\n description: error.message,\n cause: error\n })\n}\n\n/**\n * The observation behind an unverified cleanup, in the message itself: a\n * failure report usually shows only the message, and whether the receipt, the\n * kernel or the snapshot was missing decides host load versus a live survivor.\n * @private\n * @since 1.0.0\n */\nexport const unverifiedCleanup = (\n control: {\n readonly fault: unknown\n readonly cleanupFailed: boolean\n readonly cleanupAcknowledged: boolean\n readonly targetDone: boolean\n },\n cleanupRequired: boolean,\n vacant: boolean,\n observed: Snapshot | undefined\n): string =>\n [\n `target exited: ${control.targetDone}`,\n `cleanup receipt: ${\n control.cleanupFailed\n ? \"failed\"\n : !cleanupRequired\n ? \"not required\"\n : control.cleanupAcknowledged\n ? \"acknowledged\"\n : \"missing\"\n }`,\n `group vacant: ${vacant}`,\n observed === undefined\n ? \"group snapshot: unavailable\"\n : `group members: ${\n observed.members.length === 0\n ? \"none\"\n : observed.members.map((member) => `${member.pid} ${member.zombie ? \"zombie\" : \"live\"}`).join(\", \")\n }; host group ${observed.ownGroup}`,\n ...(control.fault === undefined\n ? []\n : [`fault: ${String((control.fault as { message?: unknown })?.message ?? control.fault)}`])\n ].join(\"; \")\n\nconst promise = <A>() => {\n let resolve!: (value: A) => void\n let reject!: (cause: unknown) => void\n const promise = new Promise<A>((yes, no) => {\n resolve = yes\n reject = no\n })\n // A status may arrive before its Effect consumer starts waiting.\n void promise.catch(() => {})\n return { promise, resolve, reject }\n}\n\nconst wait = <A>(value: Promise<A>, method: string, command: string) =>\n Effect.tryPromise({ try: () => value, catch: (cause) => failure(method, command, cause) })\n\nconst bounded = <A, E, R>(effect: Effect.Effect<A, E, R>, millis: number, method: string, command: string) =>\n effect.pipe(\n Effect.timeoutOrElse({\n duration: millis,\n orElse: () =>\n Effect.fail(\n failure(method, command, processFault(\"supervisor_timeout\", `Process supervisor ${method} timed out`))\n )\n }),\n Effect.provideService(Clock.Clock, processClock)\n )\n\n/**\n * Standalone application executables do not implement the runtime's eval CLI.\n * Refuse them before spawning rather than recursively launching the application.\n * @private\n * @since 1.0.0\n */\nexport const bootstrapArguments = (runtime: { readonly bun: boolean; readonly main: string; readonly sea: boolean }) =>\n runtime.sea || runtime.main.startsWith(\"/$bunfs/\")\n ? Effect.fail(\n failure(\n \"spawn\",\n process.execPath,\n processFault(\n \"runtime_unsupported\",\n \"Process supervision requires a Node or Bun runtime executable, not a compiled application\"\n )\n )\n )\n : Effect.succeed(runtime.bun ? [\"--no-env-file\", \"--config=/dev/null\"] : [])\n\nconst channelEnvironment = \"SMITHERS_PROCESS_CHANNEL\"\nconst tlsOptions = { minVersion: \"TLSv1.3\", maxVersion: \"TLSv1.3\", ciphers: \"TLS_AES_128_GCM_SHA256\" } as const\n\n/**\n * Connect an owner to its authenticated private channel.\n * @private\n * @since 1.0.0\n */\nexport const connectOwner = (path: string, environment: Readonly<Record<string, string | undefined>>): Socket => {\n const encoded = environment[channelEnvironment]\n if (encoded === undefined) return createConnection(path)\n const channel = JSON.parse(encoded) as { key: string; status: number; requests: number }\n return Tls.connect({\n ...tlsOptions,\n host: \"127.0.0.1\",\n port: path.endsWith(\"/r\") ? channel.requests : channel.status,\n pskCallback: () => ({ identity: \"smithers-owner\", psk: Buffer.from(channel.key, \"hex\") })\n })\n}\n\n/**\n * Kept separate from Effect scopes so native socket callbacks only settle\n * promises; none can start an unowned fiber or signal an observed process id.\n * @private\n * @since 1.0.0\n */\nexport class Control {\n readonly ready = promise<number>()\n readonly started = promise<void>()\n readonly exited = promise<ExitCode>()\n readonly lost = promise<never>()\n readonly ended = promise<void>()\n readonly requestsReady = promise<void>()\n readonly directory: string\n readonly path: string\n readonly requestPath: string\n readonly server\n readonly requestServer\n readonly listening: Promise<void>\n private readonly key: Buffer | undefined\n private readonly connections = new Set<Socket>()\n socket: Socket | undefined\n requestSocket: Socket | undefined\n targetDone = false\n ownerCreation: unknown\n targetPid: number | undefined\n /** The owner's group guardian: a member that is neither target nor owner. */\n guardianPid: number | undefined\n ownerDone = false\n spawnFailed = false\n cleanupFailed = false\n cleanupAcknowledged = false\n activationSent = false\n closeSent = false\n fault: unknown\n onTargetExit: () => void = () => {}\n onCleanup: () => void = () => {}\n private receivedReady = false\n private receivedStarted = false\n private withdrawn = false\n\n constructor(transport: \"native\" | \"tls\" = \"native\") {\n this.key = transport === \"tls\" || process.platform === \"win32\" ? randomBytes(32) : undefined\n this.directory = mkdtempSync(this.key === undefined ? \"/tmp/sm-p-\" : join(tmpdir(), \"sm-p-\"))\n this.path = `${this.directory}/s`\n this.requestPath = `${this.directory}/r`\n const servers: Array<ReturnType<typeof createServer>> = []\n try {\n chmodSync(this.directory, 0o700)\n this.server = this.makeServer((socket) => this.accept(socket))\n servers.push(this.server)\n this.requestServer = this.makeServer((socket) => this.acceptRequests(socket))\n servers.push(this.requestServer)\n this.listening = Promise.all([\n new Promise<void>((resolve, reject) => {\n this.server.once(\"error\", reject)\n if (this.key === undefined) this.server.listen(this.path, resolve)\n else this.server.listen(0, \"127.0.0.1\", resolve)\n }),\n new Promise<void>((resolve, reject) => {\n this.requestServer.once(\"error\", reject)\n if (this.key === undefined) this.requestServer.listen(this.requestPath, resolve)\n else this.requestServer.listen(0, \"127.0.0.1\", resolve)\n })\n ]).then(() => {})\n } catch (cause) {\n for (const server of servers) server.close()\n rmSync(this.directory, { recursive: true, force: true })\n throw cause\n }\n }\n\n private makeServer(accept: (socket: Socket) => void): ReturnType<typeof createServer> {\n if (this.key === undefined) return createServer(accept)\n const server = Tls.createServer({\n ...tlsOptions,\n handshakeTimeout: startupMs,\n pskCallback: (_socket, identity) => identity === \"smithers-owner\" ? this.key! : null\n }, accept)\n server.on(\"connection\", (socket) => {\n this.connections.add(socket)\n socket.once(\"close\", () => this.connections.delete(socket))\n })\n server.on(\"tlsClientError\", (_error, socket) => socket.destroy())\n return server\n }\n\n /** Only the trusted owner receives this environment; target configuration replaces it. */\n environment(): Readonly<Record<string, string>> {\n if (this.key === undefined) return {}\n const status = this.server.address() as { port: number }\n const requests = this.requestServer.address() as { port: number }\n return {\n [channelEnvironment]: JSON.stringify({\n key: this.key.toString(\"hex\"),\n status: status.port,\n requests: requests.port\n })\n }\n }\n\n /** The test peer uses the same authenticated transport as the isolated owner. */\n connect(requests = false): Socket {\n return connectOwner(requests ? this.requestPath : this.path, this.environment())\n }\n\n /** Validate the stored READY after the raw spawn effect has returned its pid. */\n withdraw(pid: number, actual: number): void {\n if (pid !== actual) throw processFault(\"identity_mismatch\", \"Wrong supervisor identity\")\n this.server.close()\n this.server.unref()\n this.requestServer.close()\n this.requestServer.unref()\n // Node may unlink the owned socket synchronously inside server.close().\n rmSync(this.path, { force: true })\n rmSync(this.requestPath, { force: true })\n rmdirSync(this.directory)\n this.withdrawn = true\n }\n\n /** Request EOF asks for cleanup; leave its independent status reader intact. */\n disconnect(): void {\n this.requestSocket?.destroy()\n }\n\n dispose(): void {\n for (const socket of this.connections) socket.destroy()\n this.disconnect()\n this.socket?.destroy()\n this.server.close()\n this.requestServer.close()\n if (!this.withdrawn) rmSync(this.directory, { recursive: true, force: true })\n }\n\n rawEnded(): void {\n this.ownerDone = true\n // An accepted socket may still have buffered status frames. Its close event\n // rejects missing outcomes only after Node has delivered those frames.\n if (this.socket === undefined) this.closed()\n }\n\n write(message: unknown): Promise<void> {\n return new Promise((resolve, reject) => {\n const socket = this.requestSocket\n if (socket === undefined || socket.destroyed || !socket.writable) {\n reject(processFault(\"control_channel_closed\", \"Private process control channel closed\"))\n return\n }\n const data = `${JSON.stringify(message)}\\n`\n if (Buffer.byteLength(data) > 4 * 1024 * 1024) {\n reject(processFault(\"configuration_too_large\", \"Process configuration exceeds the private frame limit\"))\n return\n }\n socket.write(data, (error) => error ? reject(error) : resolve())\n })\n }\n\n private closed(): void {\n this.disconnect()\n const cause = this.fault ??\n processFault(\"outcome_missing\", \"Process supervisor closed before reporting its outcome\")\n if (this.activationSent && !this.targetDone && !this.spawnFailed) this.lost.reject(cause)\n this.ready.reject(cause)\n this.requestsReady.reject(cause)\n this.started.reject(cause)\n this.exited.reject(cause)\n this.ended.resolve()\n }\n\n private acceptRequests(socket: Socket): void {\n if (this.requestSocket !== undefined) {\n socket.destroy()\n return\n }\n this.requestSocket = socket\n // A late write may fail after the owner has sent its last status frames.\n // Destroying this socket must never discard those frames on the reader.\n socket.on(\"error\", (cause) => {\n this.fault = cause\n })\n this.requestsReady.resolve()\n }\n\n private accept(socket: Socket): void {\n if (this.socket !== undefined) {\n socket.destroy()\n return\n }\n this.socket = socket\n let buffer = \"\"\n socket.setEncoding(\"utf8\")\n socket.on(\"data\", (data: string) => {\n try {\n buffer += data\n if (Buffer.byteLength(buffer) > 16 * 1024) {\n throw processFault(\"status_too_large\", \"Process status frame exceeds its limit\")\n }\n for (;;) {\n const end = buffer.indexOf(\"\\n\")\n if (end < 0) break\n const line = buffer.slice(0, end)\n buffer = buffer.slice(end + 1)\n this.receive(JSON.parse(line))\n }\n } catch (cause) {\n this.fault = cause\n socket.destroy()\n }\n })\n socket.on(\"error\", (cause) => {\n this.fault = cause\n })\n socket.once(\"close\", () => this.closed())\n }\n\n private receive(value: unknown): void {\n if (typeof value !== \"object\" || value === null) throw processFault(\"status_invalid\", \"Invalid process status\")\n const message = value as Record<string, unknown>\n switch (message.type) {\n case \"ready\":\n if (\n this.receivedReady || message.version !== 1 || !Number.isSafeInteger(message.pid) || Number(message.pid) <= 1\n ) {\n throw processFault(\"status_invalid\", \"Invalid process readiness\")\n }\n this.receivedReady = true\n this.ownerCreation = message.created\n this.ready.resolve(Number(message.pid))\n return\n case \"spawned\":\n if (\n !this.activationSent || this.receivedStarted || !Number.isSafeInteger(message.pid) ||\n Number(message.pid) <= 1 ||\n message.guardian !== undefined && (!Number.isSafeInteger(message.guardian) || Number(message.guardian) <= 1)\n ) {\n throw processFault(\"status_invalid\", \"Invalid target startup\")\n }\n this.receivedStarted = true\n this.targetPid = Number(message.pid)\n if (message.guardian !== undefined) this.guardianPid = Number(message.guardian)\n this.started.resolve()\n return\n case \"spawn_error\":\n if (!this.activationSent || this.receivedStarted) {\n throw processFault(\"status_invalid\", \"Invalid target spawn failure\")\n }\n this.spawnFailed = true\n this.fault = message\n this.started.reject(message)\n this.exited.reject(message)\n return\n case \"fault\":\n this.fault = message\n this.started.reject(message)\n this.exited.reject(message)\n return\n case \"exit\":\n if (\n !this.receivedStarted || this.targetDone ||\n !(Number.isInteger(message.code) && Number(message.code) >= 0 && message.signal === null ||\n message.code === null && typeof message.signal === \"string\" && /^SIG[A-Z0-9]+$/.test(message.signal))\n ) {\n throw processFault(\"status_invalid\", \"Invalid target exit status\")\n }\n this.targetDone = true\n if (message.code === null) {\n this.exited.reject({\n message: `Process interrupted due to receipt of signal: '${message.signal}'`,\n signal: message.signal\n })\n } else this.exited.resolve(ExitCode(Number(message.code)))\n this.onTargetExit()\n return\n case \"cleanup_error\":\n this.cleanupFailed = true\n this.fault = message\n return\n case \"cleanup\":\n this.cleanupAcknowledged = true\n this.onCleanup()\n return\n default:\n throw processFault(\"status_unknown\", \"Unknown process status\")\n }\n }\n}\n\n/**\n * Prepare a private, independently bounded process owner before target launch.\n * @private\n * @since 1.0.0\n */\nexport const prepare = (\n system: System,\n policy: (\n options: ChildProcess.KillOptions,\n defaults?: ChildProcess.KillOptions\n ) => Effect.Effect<Policy, PlatformError.PlatformError>,\n transport: \"native\" | \"tls\" = \"native\"\n): Lifecycle =>\n(command, spawn) =>\n Effect.gen(function*() {\n const initial = yield* policy(command.options)\n const bun = process.versions.bun !== undefined\n const sea = bun ? false : (yield* Effect.tryPromise({\n try: () => import(\"node:sea\"),\n catch: (cause) => failure(\"spawn\", process.execPath, cause)\n })).isSea()\n const bootstrap = yield* bootstrapArguments({\n bun,\n sea,\n main: (globalThis as { readonly Bun?: { readonly main?: string } }).Bun?.main ?? \"\"\n })\n const windows = system.platform === \"win32\"\n const grouped = !windows && (command.options.detached ?? true)\n const jobExecutable = windows ?\n yield* Effect.try({\n try: resolveJobExecutable,\n catch: (cause) => failure(\"spawn\", command.command, cause)\n }) :\n undefined\n const control = yield* Effect.acquireRelease(\n Effect.try({ try: () => new Control(transport), catch: (cause) => failure(\"spawn\", command.command, cause) }),\n (control) => Effect.sync(() => control.dispose())\n )\n yield* bounded(wait(control.listening, \"spawn\", command.command), startupMs, \"spawn\", command.command)\n const raw = yield* spawn(ChildProcess.make(process.execPath, [\n ...bootstrap,\n \"-e\",\n source,\n control.path,\n grouped ? \"group\" : \"direct\"\n ], {\n ...command.options,\n cwd: parse(process.execPath).root,\n env: {\n PATH: \"/usr/bin:/bin\",\n HOME: \"/\",\n XDG_CONFIG_HOME: \"/\",\n BUN_RUNTIME_TRANSPILER_CACHE_PATH: \"0\",\n ...control.environment(),\n ...(jobExecutable === undefined ? {} : { SMITHERS_PROCESS_JOB_HELPER: jobExecutable })\n },\n extendEnv: false,\n shell: false,\n detached: grouped,\n killSignal: \"SIGTERM\",\n forceKillAfter: initial.graceMs\n }))\n yield* Effect.exit(raw.exitCode).pipe(Effect.andThen(Effect.sync(() => control.rawEnded())), Effect.forkScoped)\n let job: WindowsProcessJob | undefined\n let settled = false\n let referenced = true\n let reref: Effect.Effect<void, PlatformError.PlatformError> = Effect.void\n let selected = initial\n let requireCleanupReceipt = false\n const snapshot = () => system.snapshot(raw.pid)\n const alone = () => {\n if (!grouped) return control.targetDone\n const observed = snapshot()\n if (observed === undefined || observed.ownGroup === raw.pid) return false\n // The guardian leaves with the owner's final group SIGKILL.\n const running = observed.members.filter((member) => !member.zombie && member.pid !== control.guardianPid)\n return running.length === 1 && running[0]!.pid === raw.pid\n }\n // This observation only shortens the owner's deadline. The live owner makes\n // the signal, so neither a stale observation nor a reused pid grants a kill.\n control.onTargetExit = () => {\n // An explicit stop already owns its deadline and escaped-child sweep.\n // Natural exit must not replace that policy with a second fast stop.\n if (control.closeSent) return\n if (!alone()) return\n control.closeSent = true\n void control.write({ type: \"stop\", killSignal: \"SIGKILL\", fast: true }).catch(() => control.disconnect())\n }\n const finish = yield* Effect.cached(Effect.gen(function*() {\n yield* bounded(Effect.exit(raw.exitCode), selected.graceMs + exitAllowanceMs, \"kill\", command.command).pipe(\n Effect.catch((cause) =>\n job === undefined ? Effect.fail(cause) : Effect.gen(function*() {\n // The native guardian can terminate a stalled owner independently.\n job!.stop()\n yield* bounded(Effect.exit(raw.exitCode), exitAllowanceMs, \"kill\", command.command)\n })\n )\n )\n if (job !== undefined) {\n yield* bounded(wait(job.settled.promise, \"kill\", command.command), 5500, \"kill\", command.command)\n settled = true\n return\n }\n yield* bounded(wait(control.ended.promise, \"kill\", command.command), deliveryMs, \"kill\", command.command).pipe(\n Effect.ignore\n )\n const deadline = Date.now() + verificationMs\n for (;;) {\n // The kernel's ESRCH proves the group empty with no fork. A `ps`\n // snapshot can go unanswered on a loaded host, so it only decides what\n // the kernel cannot: a group still holding zombies, or an unknown one.\n // A live member keeps both answers false. This host is alive, so a\n // vacant group is never this host's own group.\n const vacant = grouped && system.vacant(raw.pid)\n const observed = grouped && !vacant ? snapshot() : undefined\n settled = !control.cleanupFailed && (!requireCleanupReceipt || control.cleanupAcknowledged) && (grouped\n ? vacant ||\n observed !== undefined && observed.ownGroup !== raw.pid && observed.members.every((member) => member.zombie)\n : control.targetDone || control.spawnFailed || !control.activationSent)\n if (settled) return\n if (Date.now() >= deadline) {\n return yield* Effect.fail(\n failure(\n \"kill\",\n command.command,\n processFault(\n \"cleanup_unverified\",\n \"Process cleanup could not be verified; its ledger record is retained \" +\n `(${unverifiedCleanup(control, requireCleanupReceipt, vacant, observed)})`,\n {\n cause: {\n fault: control.fault,\n cleanupFailed: control.cleanupFailed,\n cleanupRequired: requireCleanupReceipt,\n cleanupAcknowledged: control.cleanupAcknowledged,\n targetDone: control.targetDone,\n groupVacant: vacant,\n ownerObserved: observed !== undefined,\n members: observed?.members\n }\n }\n )\n )\n )\n }\n yield* Effect.sleep(10).pipe(Effect.provideService(Clock.Clock, processClock))\n }\n }))\n const kill = (options: ChildProcess.KillOptions = {}) =>\n Effect.gen(function*() {\n const requested = yield* policy(options, command.options)\n if (!referenced) {\n job?.reference(true)\n control.socket?.ref()\n control.requestSocket?.ref()\n yield* reref\n referenced = true\n }\n if (!control.closeSent) {\n control.closeSent = true\n selected = requested\n // An empty original group cannot prove an explicit escaped-descendant\n // sweep succeeded if its status frames were lost. Startup and natural\n // completion have no such additional contract.\n requireCleanupReceipt = grouped && control.activationSent && !control.spawnFailed && !control.targetDone\n yield* bounded(\n wait(\n control.write({\n type: \"stop\",\n explicit: true,\n ...requested,\n // A live target can move out of this group with setsid().\n // Only an owner whose target was never activated can replace\n // the requested signal; natural exit has its own fast path.\n killSignal: !control.activationSent && alone() ? \"SIGKILL\" : requested.killSignal\n }),\n \"kill\",\n command.command\n ),\n deliveryMs,\n \"kill\",\n command.command\n )\n .pipe(Effect.catch(() => Effect.sync(() => control.disconnect())))\n }\n yield* finish\n }).pipe(Effect.uninterruptible)\n yield* Effect.addFinalizer(() =>\n kill().pipe(\n // A stuck owner keeps its ledger entry. Disable the underlying spawner's\n // unconditional group-kill finalizer rather than signal a stale identity.\n Effect.ensuring(\n Effect.suspend(() =>\n settled ? Effect.void : Effect.andThen(\n raw.unref,\n Effect.sync(() => {\n job?.stop()\n job?.reference(false)\n control.disconnect()\n })\n )\n ).pipe(Effect.orDie)\n ),\n Effect.orDie\n )\n )\n const ready = yield* bounded(\n wait(control.ready.promise, \"spawn\", command.command),\n startupMs,\n \"spawn\",\n command.command\n )\n yield* bounded(wait(control.requestsReady.promise, \"spawn\", command.command), startupMs, \"spawn\", command.command)\n yield* Effect.try({\n try: () => control.withdraw(ready, raw.pid),\n catch: (cause) => failure(\"spawn\", command.command, cause)\n })\n if (windows) {\n job = yield* Effect.try({\n try: () => new WindowsProcessJob(raw.pid, control.ownerCreation, jobExecutable!),\n catch: (cause) => failure(\"spawn\", command.command, cause)\n })\n yield* bounded(wait(job.ready.promise, \"spawn\", command.command), startupMs, \"spawn\", command.command)\n }\n const acknowledgeCleanup = windows || transport === \"tls\"\n if (acknowledgeCleanup) {\n control.onCleanup = () => {\n if (!control.ownerDone) {\n void control.write({ type: \"cleanup_ack\" }).catch(() => control.disconnect())\n }\n }\n }\n const options = command.options\n // Match Effect/Node's undefined-vs-empty environment semantics in the host,\n // before replacing the helper's environment with its isolated bootstrap.\n const env = options.extendEnv ? { ...process.env, ...options.env } : options.env ?? { ...process.env }\n yield* bounded(\n wait(\n control.write({\n type: \"configure\",\n acknowledgeCleanup,\n command: command.command,\n args: command.args,\n cwd: resolve(options.cwd ?? process.cwd()),\n env,\n shell: options.shell,\n windowsHide: options.windowsHide ?? true,\n windowsVerbatimArguments:\n (options as ChildProcess.CommandOptions & { readonly windowsVerbatimArguments?: boolean })\n .windowsVerbatimArguments,\n standardFds: standardFdsOf(raw),\n userFds: [\n ...new Set(\n Object.keys(options.additionalFds ?? {}).map(ChildProcess.parseFdName)\n .filter((fd): fd is number => fd !== undefined)\n )\n ],\n ...initial\n }),\n \"spawn\",\n command.command\n ),\n deliveryMs,\n \"spawn\",\n command.command\n )\n const activate = yield* Effect.cached(Effect.gen(function*() {\n control.activationSent = true\n yield* bounded(\n wait(control.write({ type: \"start\" }), \"spawn\", command.command),\n deliveryMs,\n \"spawn\",\n command.command\n )\n yield* bounded(wait(control.started.promise, \"spawn\", command.command), startupMs, \"spawn\", command.command)\n }))\n const unref = Effect.gen(function*() {\n if (referenced) {\n reref = yield* raw.unref\n job?.reference(false)\n control.socket?.unref()\n control.requestSocket?.unref()\n referenced = false\n }\n return Effect.gen(function*() {\n if (!referenced) {\n job?.reference(true)\n control.socket?.ref()\n control.requestSocket?.ref()\n yield* reref\n referenced = true\n }\n })\n })\n const output = <A>(stream: Stream.Stream<A, PlatformError.PlatformError>) =>\n stream.pipe(\n Stream.interruptWhen(wait(control.lost.promise, \"read\", command.command))\n )\n const input = <A>(sink: Sink.Sink<A, Uint8Array, never, PlatformError.PlatformError>) =>\n Sink.fromChannel(\n Sink.toChannel(sink).pipe(Channel.interruptWhen(wait(control.lost.promise, \"write\", command.command)))\n )\n const handle = makeHandle({\n ...raw,\n exitCode: wait(control.exited.promise, \"exitCode\", command.command),\n isRunning: Effect.sync(() => !control.targetDone && !control.ownerDone),\n stdin: input(raw.stdin),\n getInputFd: (fd) => input(raw.getInputFd(fd)),\n stdout: output(raw.stdout),\n stderr: output(raw.stderr),\n all: output(raw.all),\n getOutputFd: (fd) => output(raw.getOutputFd(fd)),\n kill,\n unref\n })\n targets.set(handle, control)\n return {\n handle,\n activate,\n settled: Effect.sync(() => settled)\n }\n })\n"]}