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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (442) hide show
  1. package/CHANGELOG.md +211 -0
  2. package/LICENSE +21 -0
  3. package/README.md +165 -2
  4. package/bin/darwin-arm64/smithers-jj-export +0 -0
  5. package/bin/darwin-x64/smithers-jj-export +0 -0
  6. package/bin/linux-arm64/smithers-jj-export +0 -0
  7. package/bin/linux-x64/smithers-jj-export +4 -0
  8. package/bin/win32-x64/smithers-jj-export.exe +0 -0
  9. package/dist/cjs/AtomicFileSystem.d.ts +147 -0
  10. package/dist/cjs/AtomicFileSystem.d.ts.map +1 -0
  11. package/dist/cjs/AtomicFileSystem.js +234 -0
  12. package/dist/cjs/AtomicFileSystem.js.map +7 -0
  13. package/dist/cjs/EgressHttpClient.d.ts +106 -0
  14. package/dist/cjs/EgressHttpClient.d.ts.map +1 -0
  15. package/dist/cjs/EgressHttpClient.js +202 -0
  16. package/dist/cjs/EgressHttpClient.js.map +7 -0
  17. package/dist/cjs/HostLiveness.d.ts +81 -0
  18. package/dist/cjs/HostLiveness.d.ts.map +1 -0
  19. package/dist/cjs/HostLiveness.js +49 -0
  20. package/dist/cjs/HostLiveness.js.map +7 -0
  21. package/dist/cjs/NodeHost.d.ts +145 -0
  22. package/dist/cjs/NodeHost.d.ts.map +1 -0
  23. package/dist/cjs/NodeHost.js +128 -0
  24. package/dist/cjs/NodeHost.js.map +7 -0
  25. package/dist/cjs/ProcessConfinement.d.ts +61 -0
  26. package/dist/cjs/ProcessConfinement.d.ts.map +1 -0
  27. package/dist/cjs/ProcessConfinement.js +292 -0
  28. package/dist/cjs/ProcessConfinement.js.map +7 -0
  29. package/dist/cjs/ProcessReaper.d.ts +457 -0
  30. package/dist/cjs/ProcessReaper.d.ts.map +1 -0
  31. package/dist/cjs/ProcessReaper.js +349 -0
  32. package/dist/cjs/ProcessReaper.js.map +7 -0
  33. package/dist/cjs/ProcessSandbox.d.ts +391 -0
  34. package/dist/cjs/ProcessSandbox.d.ts.map +1 -0
  35. package/dist/cjs/ProcessSandbox.js +774 -0
  36. package/dist/cjs/ProcessSandbox.js.map +7 -0
  37. package/dist/cjs/ScopedProcess.d.ts +66 -0
  38. package/dist/cjs/ScopedProcess.d.ts.map +1 -0
  39. package/dist/cjs/ScopedProcess.js +87 -0
  40. package/dist/cjs/ScopedProcess.js.map +7 -0
  41. package/dist/cjs/index.d.ts +38 -0
  42. package/dist/cjs/index.d.ts.map +1 -0
  43. package/dist/cjs/index.js +47 -0
  44. package/dist/cjs/index.js.map +7 -0
  45. package/dist/cjs/internal/AtomicFileSystemExecutable.d.ts +61 -0
  46. package/dist/cjs/internal/AtomicFileSystemExecutable.d.ts.map +1 -0
  47. package/dist/cjs/internal/AtomicFileSystemExecutable.js +250 -0
  48. package/dist/cjs/internal/AtomicFileSystemExecutable.js.map +7 -0
  49. package/dist/cjs/internal/AtomicFileSystemProtocol.d.ts +78 -0
  50. package/dist/cjs/internal/AtomicFileSystemProtocol.d.ts.map +1 -0
  51. package/dist/cjs/internal/AtomicFileSystemProtocol.js +382 -0
  52. package/dist/cjs/internal/AtomicFileSystemProtocol.js.map +7 -0
  53. package/dist/cjs/internal/AtomicFileSystemTransport.d.ts +44 -0
  54. package/dist/cjs/internal/AtomicFileSystemTransport.d.ts.map +1 -0
  55. package/dist/cjs/internal/AtomicFileSystemTransport.js +197 -0
  56. package/dist/cjs/internal/AtomicFileSystemTransport.js.map +7 -0
  57. package/dist/cjs/internal/AtomicHelperError.d.ts +35 -0
  58. package/dist/cjs/internal/AtomicHelperError.d.ts.map +1 -0
  59. package/dist/cjs/internal/AtomicHelperError.js +45 -0
  60. package/dist/cjs/internal/AtomicHelperError.js.map +7 -0
  61. package/dist/cjs/internal/AtomicHelperFault.d.ts +59 -0
  62. package/dist/cjs/internal/AtomicHelperFault.d.ts.map +1 -0
  63. package/dist/cjs/internal/AtomicHelperFault.js +66 -0
  64. package/dist/cjs/internal/AtomicHelperFault.js.map +7 -0
  65. package/dist/cjs/internal/PipedProcess.d.ts +35 -0
  66. package/dist/cjs/internal/PipedProcess.d.ts.map +1 -0
  67. package/dist/cjs/internal/PipedProcess.js +309 -0
  68. package/dist/cjs/internal/PipedProcess.js.map +7 -0
  69. package/dist/cjs/internal/ProcSnapshot.d.ts +85 -0
  70. package/dist/cjs/internal/ProcSnapshot.d.ts.map +1 -0
  71. package/dist/cjs/internal/ProcSnapshot.js +123 -0
  72. package/dist/cjs/internal/ProcSnapshot.js.map +7 -0
  73. package/dist/cjs/internal/ProcessCleanup.d.ts +64 -0
  74. package/dist/cjs/internal/ProcessCleanup.d.ts.map +1 -0
  75. package/dist/cjs/internal/ProcessCleanup.js +62 -0
  76. package/dist/cjs/internal/ProcessCleanup.js.map +7 -0
  77. package/dist/cjs/internal/ProcessCleanupPolicyError.d.ts +30 -0
  78. package/dist/cjs/internal/ProcessCleanupPolicyError.d.ts.map +1 -0
  79. package/dist/cjs/internal/ProcessCleanupPolicyError.js +33 -0
  80. package/dist/cjs/internal/ProcessCleanupPolicyError.js.map +7 -0
  81. package/dist/cjs/internal/ProcessFault.d.ts +63 -0
  82. package/dist/cjs/internal/ProcessFault.d.ts.map +1 -0
  83. package/dist/cjs/internal/ProcessFault.js +63 -0
  84. package/dist/cjs/internal/ProcessFault.js.map +7 -0
  85. package/dist/cjs/internal/ProcessSupervisor.d.ts +143 -0
  86. package/dist/cjs/internal/ProcessSupervisor.d.ts.map +1 -0
  87. package/dist/cjs/internal/ProcessSupervisor.js +685 -0
  88. package/dist/cjs/internal/ProcessSupervisor.js.map +7 -0
  89. package/dist/cjs/internal/SupervisorProgram.d.ts +9 -0
  90. package/dist/cjs/internal/SupervisorProgram.d.ts.map +1 -0
  91. package/dist/cjs/internal/SupervisorProgram.js +326 -0
  92. package/dist/cjs/internal/SupervisorProgram.js.map +7 -0
  93. package/dist/cjs/internal/WindowsProcessJob.d.ts +39 -0
  94. package/dist/cjs/internal/WindowsProcessJob.d.ts.map +1 -0
  95. package/dist/cjs/internal/WindowsProcessJob.js +113 -0
  96. package/dist/cjs/internal/WindowsProcessJob.js.map +7 -0
  97. package/dist/cjs/package.json +1 -0
  98. package/dist/esm/AtomicFileSystem.d.ts +147 -0
  99. package/dist/esm/AtomicFileSystem.d.ts.map +1 -0
  100. package/dist/esm/AtomicFileSystem.js +290 -0
  101. package/dist/esm/AtomicFileSystem.js.map +1 -0
  102. package/dist/esm/EgressHttpClient.d.ts +106 -0
  103. package/dist/esm/EgressHttpClient.d.ts.map +1 -0
  104. package/dist/esm/EgressHttpClient.js +259 -0
  105. package/dist/esm/EgressHttpClient.js.map +1 -0
  106. package/dist/esm/HostLiveness.d.ts +81 -0
  107. package/dist/esm/HostLiveness.d.ts.map +1 -0
  108. package/dist/esm/HostLiveness.js +68 -0
  109. package/dist/esm/HostLiveness.js.map +1 -0
  110. package/dist/esm/NodeHost.d.ts +145 -0
  111. package/dist/esm/NodeHost.d.ts.map +1 -0
  112. package/dist/esm/NodeHost.js +162 -0
  113. package/dist/esm/NodeHost.js.map +1 -0
  114. package/dist/esm/ProcessConfinement.d.ts +61 -0
  115. package/dist/esm/ProcessConfinement.d.ts.map +1 -0
  116. package/dist/esm/ProcessConfinement.js +311 -0
  117. package/dist/esm/ProcessConfinement.js.map +1 -0
  118. package/dist/esm/ProcessReaper.d.ts +457 -0
  119. package/dist/esm/ProcessReaper.d.ts.map +1 -0
  120. package/dist/esm/ProcessReaper.js +711 -0
  121. package/dist/esm/ProcessReaper.js.map +1 -0
  122. package/dist/esm/ProcessSandbox.d.ts +391 -0
  123. package/dist/esm/ProcessSandbox.d.ts.map +1 -0
  124. package/dist/esm/ProcessSandbox.js +1043 -0
  125. package/dist/esm/ProcessSandbox.js.map +1 -0
  126. package/dist/esm/ScopedProcess.d.ts +66 -0
  127. package/dist/esm/ScopedProcess.d.ts.map +1 -0
  128. package/dist/esm/ScopedProcess.js +67 -0
  129. package/dist/esm/ScopedProcess.js.map +1 -0
  130. package/dist/esm/index.d.ts +38 -0
  131. package/dist/esm/index.d.ts.map +1 -0
  132. package/dist/esm/index.js +38 -0
  133. package/dist/esm/index.js.map +1 -0
  134. package/dist/esm/internal/AtomicFileSystemExecutable.d.ts +61 -0
  135. package/dist/esm/internal/AtomicFileSystemExecutable.d.ts.map +1 -0
  136. package/dist/esm/internal/AtomicFileSystemExecutable.js +350 -0
  137. package/dist/esm/internal/AtomicFileSystemExecutable.js.map +1 -0
  138. package/dist/esm/internal/AtomicFileSystemProtocol.d.ts +78 -0
  139. package/dist/esm/internal/AtomicFileSystemProtocol.d.ts.map +1 -0
  140. package/dist/esm/internal/AtomicFileSystemProtocol.js +412 -0
  141. package/dist/esm/internal/AtomicFileSystemProtocol.js.map +1 -0
  142. package/dist/esm/internal/AtomicFileSystemTransport.d.ts +44 -0
  143. package/dist/esm/internal/AtomicFileSystemTransport.d.ts.map +1 -0
  144. package/dist/esm/internal/AtomicFileSystemTransport.js +242 -0
  145. package/dist/esm/internal/AtomicFileSystemTransport.js.map +1 -0
  146. package/dist/esm/internal/AtomicHelperError.d.ts +35 -0
  147. package/dist/esm/internal/AtomicHelperError.d.ts.map +1 -0
  148. package/dist/esm/internal/AtomicHelperError.js +39 -0
  149. package/dist/esm/internal/AtomicHelperError.js.map +1 -0
  150. package/dist/esm/internal/AtomicHelperFault.d.ts +59 -0
  151. package/dist/esm/internal/AtomicHelperFault.d.ts.map +1 -0
  152. package/dist/esm/internal/AtomicHelperFault.js +66 -0
  153. package/dist/esm/internal/AtomicHelperFault.js.map +1 -0
  154. package/dist/esm/internal/PipedProcess.d.ts +35 -0
  155. package/dist/esm/internal/PipedProcess.d.ts.map +1 -0
  156. package/dist/esm/internal/PipedProcess.js +321 -0
  157. package/dist/esm/internal/PipedProcess.js.map +1 -0
  158. package/dist/esm/internal/ProcSnapshot.d.ts +85 -0
  159. package/dist/esm/internal/ProcSnapshot.d.ts.map +1 -0
  160. package/dist/esm/internal/ProcSnapshot.js +188 -0
  161. package/dist/esm/internal/ProcSnapshot.js.map +1 -0
  162. package/dist/esm/internal/ProcessCleanup.d.ts +64 -0
  163. package/dist/esm/internal/ProcessCleanup.d.ts.map +1 -0
  164. package/dist/esm/internal/ProcessCleanup.js +45 -0
  165. package/dist/esm/internal/ProcessCleanup.js.map +1 -0
  166. package/dist/esm/internal/ProcessCleanupPolicyError.d.ts +30 -0
  167. package/dist/esm/internal/ProcessCleanupPolicyError.d.ts.map +1 -0
  168. package/dist/esm/internal/ProcessCleanupPolicyError.js +25 -0
  169. package/dist/esm/internal/ProcessCleanupPolicyError.js.map +1 -0
  170. package/dist/esm/internal/ProcessFault.d.ts +63 -0
  171. package/dist/esm/internal/ProcessFault.d.ts.map +1 -0
  172. package/dist/esm/internal/ProcessFault.js +64 -0
  173. package/dist/esm/internal/ProcessFault.js.map +1 -0
  174. package/dist/esm/internal/ProcessSupervisor.d.ts +143 -0
  175. package/dist/esm/internal/ProcessSupervisor.d.ts.map +1 -0
  176. package/dist/esm/internal/ProcessSupervisor.js +689 -0
  177. package/dist/esm/internal/ProcessSupervisor.js.map +1 -0
  178. package/dist/esm/internal/SupervisorProgram.d.ts +9 -0
  179. package/dist/esm/internal/SupervisorProgram.d.ts.map +1 -0
  180. package/dist/esm/internal/SupervisorProgram.js +310 -0
  181. package/dist/esm/internal/SupervisorProgram.js.map +1 -0
  182. package/dist/esm/internal/WindowsProcessJob.d.ts +39 -0
  183. package/dist/esm/internal/WindowsProcessJob.d.ts.map +1 -0
  184. package/dist/esm/internal/WindowsProcessJob.js +115 -0
  185. package/dist/esm/internal/WindowsProcessJob.js.map +1 -0
  186. package/dist/vendor/adapters.json +1757 -0
  187. package/dist/vendor/chunk-2Y7WC4KU.js +109 -0
  188. package/dist/vendor/chunk-3GR5VZ2M.js +118 -0
  189. package/dist/vendor/chunk-42QKY6T6.js +40 -0
  190. package/dist/vendor/chunk-54RLBMTZ.js +61 -0
  191. package/dist/vendor/chunk-5ZMHBXIK.js +55 -0
  192. package/dist/vendor/chunk-6ME2W7TF.js +28 -0
  193. package/dist/vendor/chunk-AMQKOQNT.js +34 -0
  194. package/dist/vendor/chunk-B3FZ67QU.js +59 -0
  195. package/dist/vendor/chunk-BKTBUBQY.js +437 -0
  196. package/dist/vendor/chunk-DS7GF46S.js +34 -0
  197. package/dist/vendor/chunk-DVOAHXPG.js +104 -0
  198. package/dist/vendor/chunk-DWSHTSVX.js +229 -0
  199. package/dist/vendor/chunk-EGBNVEEW.js +14 -0
  200. package/dist/vendor/chunk-EZWY45HP.js +18 -0
  201. package/dist/vendor/chunk-FNZOJHSV.js +71 -0
  202. package/dist/vendor/chunk-GXCHI7BM.js +131 -0
  203. package/dist/vendor/chunk-IIJ52ZU6.js +20 -0
  204. package/dist/vendor/chunk-J7A4CZDO.js +92 -0
  205. package/dist/vendor/chunk-JG5TTWPT.js +85 -0
  206. package/dist/vendor/chunk-JJ24ARBQ.js +394 -0
  207. package/dist/vendor/chunk-KOZMM5PZ.js +426 -0
  208. package/dist/vendor/chunk-KUUXSID7.js +18 -0
  209. package/dist/vendor/chunk-LEUPYT3Q.js +36 -0
  210. package/dist/vendor/chunk-M32LDTW7.js +18 -0
  211. package/dist/vendor/chunk-M7CLUILA.js +0 -0
  212. package/dist/vendor/chunk-MBSKBQ5D.js +21 -0
  213. package/dist/vendor/chunk-MLKGABMK.js +9 -0
  214. package/dist/vendor/chunk-NBVRTDTV.js +129 -0
  215. package/dist/vendor/chunk-OXNGN5H7.js +81 -0
  216. package/dist/vendor/chunk-QPLDT6A6.js +564 -0
  217. package/dist/vendor/chunk-QYBKAIA6.js +18 -0
  218. package/dist/vendor/chunk-RO2R4MJH.js +62 -0
  219. package/dist/vendor/chunk-SIR62W3Y.js +398 -0
  220. package/dist/vendor/chunk-TFIKFFSC.js +26 -0
  221. package/dist/vendor/chunk-TXKLEBBL.js +143 -0
  222. package/dist/vendor/chunk-UFH5UUZK.js +48 -0
  223. package/dist/vendor/chunk-VANKHF46.js +96 -0
  224. package/dist/vendor/chunk-VZBDV3TV.js +18 -0
  225. package/dist/vendor/chunk-XDKNKFBW.js +22 -0
  226. package/dist/vendor/chunk-XH4U3JSV.js +249 -0
  227. package/dist/vendor/chunk-Y35ZAO5U.js +53 -0
  228. package/dist/vendor/chunk-ZJMRMY57.js +0 -0
  229. package/dist/vendor/cjs/node/NodeChildProcessSpawner.d.ts +7 -0
  230. package/dist/vendor/cjs/node/NodeChildProcessSpawner.js +1 -0
  231. package/dist/vendor/cjs/node/NodeClusterHttp.d.ts +63 -0
  232. package/dist/vendor/cjs/node/NodeClusterHttp.js +1 -0
  233. package/dist/vendor/cjs/node/NodeClusterSocket.d.ts +79 -0
  234. package/dist/vendor/cjs/node/NodeClusterSocket.js +1 -0
  235. package/dist/vendor/cjs/node/NodeCrypto.d.ts +10 -0
  236. package/dist/vendor/cjs/node/NodeCrypto.js +1 -0
  237. package/dist/vendor/cjs/node/NodeFileSystem.d.ts +10 -0
  238. package/dist/vendor/cjs/node/NodeFileSystem.js +1 -0
  239. package/dist/vendor/cjs/node/NodeHttpClient.d.ts +179 -0
  240. package/dist/vendor/cjs/node/NodeHttpClient.js +1 -0
  241. package/dist/vendor/cjs/node/NodeHttpIncomingMessage.d.ts +62 -0
  242. package/dist/vendor/cjs/node/NodeHttpIncomingMessage.js +1 -0
  243. package/dist/vendor/cjs/node/NodeHttpPlatform.d.ts +36 -0
  244. package/dist/vendor/cjs/node/NodeHttpPlatform.js +1 -0
  245. package/dist/vendor/cjs/node/NodeHttpServer.d.ts +120 -0
  246. package/dist/vendor/cjs/node/NodeHttpServer.js +1 -0
  247. package/dist/vendor/cjs/node/NodeHttpServerRequest.d.ts +29 -0
  248. package/dist/vendor/cjs/node/NodeHttpServerRequest.js +1 -0
  249. package/dist/vendor/cjs/node/NodeMultipart.d.ts +46 -0
  250. package/dist/vendor/cjs/node/NodeMultipart.js +1 -0
  251. package/dist/vendor/cjs/node/NodeMultipartParser.d.ts +97 -0
  252. package/dist/vendor/cjs/node/NodeMultipartParser.js +1 -0
  253. package/dist/vendor/cjs/node/NodePath.d.ts +27 -0
  254. package/dist/vendor/cjs/node/NodePath.js +1 -0
  255. package/dist/vendor/cjs/node/NodeRedis.d.ts +74 -0
  256. package/dist/vendor/cjs/node/NodeRedis.js +1 -0
  257. package/dist/vendor/cjs/node/NodeRuntime.d.ts +85 -0
  258. package/dist/vendor/cjs/node/NodeRuntime.js +1 -0
  259. package/dist/vendor/cjs/node/NodeServices.d.ts +34 -0
  260. package/dist/vendor/cjs/node/NodeServices.js +1 -0
  261. package/dist/vendor/cjs/node/NodeSink.d.ts +8 -0
  262. package/dist/vendor/cjs/node/NodeSink.js +1 -0
  263. package/dist/vendor/cjs/node/NodeSocket.d.ts +38 -0
  264. package/dist/vendor/cjs/node/NodeSocket.js +1 -0
  265. package/dist/vendor/cjs/node/NodeSocketServer.d.ts +8 -0
  266. package/dist/vendor/cjs/node/NodeSocketServer.js +1 -0
  267. package/dist/vendor/cjs/node/NodeStdio.d.ts +11 -0
  268. package/dist/vendor/cjs/node/NodeStdio.js +1 -0
  269. package/dist/vendor/cjs/node/NodeStream.d.ts +8 -0
  270. package/dist/vendor/cjs/node/NodeStream.js +1 -0
  271. package/dist/vendor/cjs/node/NodeTerminal.d.ts +21 -0
  272. package/dist/vendor/cjs/node/NodeTerminal.js +1 -0
  273. package/dist/vendor/cjs/node/NodeWorker.d.ts +22 -0
  274. package/dist/vendor/cjs/node/NodeWorker.js +1 -0
  275. package/dist/vendor/cjs/node/NodeWorkerRunner.d.ts +12 -0
  276. package/dist/vendor/cjs/node/NodeWorkerRunner.js +1 -0
  277. package/dist/vendor/cjs/node/Undici.d.ts +28 -0
  278. package/dist/vendor/cjs/node/Undici.js +1 -0
  279. package/dist/vendor/cjs/node/index.d.ts +100 -0
  280. package/dist/vendor/cjs/node/index.js +1 -0
  281. package/dist/vendor/cjs/node-shared/NodeChildProcessSpawner.d.ts +57 -0
  282. package/dist/vendor/cjs/node-shared/NodeChildProcessSpawner.js +1 -0
  283. package/dist/vendor/cjs/node-shared/NodeClusterSocket.d.ts +22 -0
  284. package/dist/vendor/cjs/node-shared/NodeClusterSocket.js +1 -0
  285. package/dist/vendor/cjs/node-shared/NodeCrypto.d.ts +27 -0
  286. package/dist/vendor/cjs/node-shared/NodeCrypto.js +1 -0
  287. package/dist/vendor/cjs/node-shared/NodeFileSystem.d.ts +11 -0
  288. package/dist/vendor/cjs/node-shared/NodeFileSystem.js +1 -0
  289. package/dist/vendor/cjs/node-shared/NodeHttpCompression.d.ts +36 -0
  290. package/dist/vendor/cjs/node-shared/NodeHttpCompression.js +1 -0
  291. package/dist/vendor/cjs/node-shared/NodePath.d.ts +27 -0
  292. package/dist/vendor/cjs/node-shared/NodePath.js +1 -0
  293. package/dist/vendor/cjs/node-shared/NodeRuntime.d.ts +47 -0
  294. package/dist/vendor/cjs/node-shared/NodeRuntime.js +1 -0
  295. package/dist/vendor/cjs/node-shared/NodeSink.d.ts +69 -0
  296. package/dist/vendor/cjs/node-shared/NodeSink.js +1 -0
  297. package/dist/vendor/cjs/node-shared/NodeSocket.d.ts +134 -0
  298. package/dist/vendor/cjs/node-shared/NodeSocket.js +1 -0
  299. package/dist/vendor/cjs/node-shared/NodeSocketServer.d.ts +80 -0
  300. package/dist/vendor/cjs/node-shared/NodeSocketServer.js +1 -0
  301. package/dist/vendor/cjs/node-shared/NodeStdio.d.ts +12 -0
  302. package/dist/vendor/cjs/node-shared/NodeStdio.js +1 -0
  303. package/dist/vendor/cjs/node-shared/NodeStream.d.ts +179 -0
  304. package/dist/vendor/cjs/node-shared/NodeStream.js +1 -0
  305. package/dist/vendor/cjs/node-shared/NodeTerminal.d.ts +22 -0
  306. package/dist/vendor/cjs/node-shared/NodeTerminal.js +1 -0
  307. package/dist/vendor/cjs/node-shared/index.d.ts +56 -0
  308. package/dist/vendor/cjs/node-shared/index.js +1 -0
  309. package/dist/vendor/cjs/node-shared/internal/nodeChildProcessSpawner.d.ts +4 -0
  310. package/dist/vendor/cjs/node-shared/internal/nodeChildProcessSpawner.js +1 -0
  311. package/dist/vendor/cjs/node-shared/internal/utils.d.ts +2 -0
  312. package/dist/vendor/cjs/node-shared/internal/utils.js +1 -0
  313. package/dist/vendor/cjs/package.json +1 -0
  314. package/dist/vendor/cjs/platform-node-shared.d.ts +56 -0
  315. package/dist/vendor/cjs/platform-node-shared.js +1 -0
  316. package/dist/vendor/cjs/platform-node.d.ts +100 -0
  317. package/dist/vendor/cjs/platform-node.js +1 -0
  318. package/dist/vendor/node/LICENSE +21 -0
  319. package/dist/vendor/node/NodeChildProcessSpawner.d.ts +7 -0
  320. package/dist/vendor/node/NodeChildProcessSpawner.js +14 -0
  321. package/dist/vendor/node/NodeClusterHttp.d.ts +63 -0
  322. package/dist/vendor/node/NodeClusterHttp.js +43 -0
  323. package/dist/vendor/node/NodeClusterSocket.d.ts +79 -0
  324. package/dist/vendor/node/NodeClusterSocket.js +30 -0
  325. package/dist/vendor/node/NodeCrypto.d.ts +10 -0
  326. package/dist/vendor/node/NodeCrypto.js +8 -0
  327. package/dist/vendor/node/NodeFileSystem.d.ts +10 -0
  328. package/dist/vendor/node/NodeFileSystem.js +9 -0
  329. package/dist/vendor/node/NodeHttpClient.d.ts +179 -0
  330. package/dist/vendor/node/NodeHttpClient.js +46 -0
  331. package/dist/vendor/node/NodeHttpIncomingMessage.d.ts +62 -0
  332. package/dist/vendor/node/NodeHttpIncomingMessage.js +10 -0
  333. package/dist/vendor/node/NodeHttpPlatform.d.ts +36 -0
  334. package/dist/vendor/node/NodeHttpPlatform.js +16 -0
  335. package/dist/vendor/node/NodeHttpServer.d.ts +120 -0
  336. package/dist/vendor/node/NodeHttpServer.js +46 -0
  337. package/dist/vendor/node/NodeHttpServerRequest.d.ts +29 -0
  338. package/dist/vendor/node/NodeHttpServerRequest.js +9 -0
  339. package/dist/vendor/node/NodeMultipart.d.ts +46 -0
  340. package/dist/vendor/node/NodeMultipart.js +15 -0
  341. package/dist/vendor/node/NodeMultipartParser.d.ts +97 -0
  342. package/dist/vendor/node/NodeMultipartParser.js +11 -0
  343. package/dist/vendor/node/NodePath.d.ts +27 -0
  344. package/dist/vendor/node/NodePath.js +12 -0
  345. package/dist/vendor/node/NodeRedis.d.ts +74 -0
  346. package/dist/vendor/node/NodeRedis.js +11 -0
  347. package/dist/vendor/node/NodeRuntime.d.ts +85 -0
  348. package/dist/vendor/node/NodeRuntime.js +8 -0
  349. package/dist/vendor/node/NodeServices.d.ts +34 -0
  350. package/dist/vendor/node/NodeServices.js +23 -0
  351. package/dist/vendor/node/NodeSink.d.ts +8 -0
  352. package/dist/vendor/node/NodeSink.js +12 -0
  353. package/dist/vendor/node/NodeSocket.d.ts +38 -0
  354. package/dist/vendor/node/NodeSocket.js +31 -0
  355. package/dist/vendor/node/NodeSocketServer.d.ts +8 -0
  356. package/dist/vendor/node/NodeSocketServer.js +21 -0
  357. package/dist/vendor/node/NodeStdio.d.ts +11 -0
  358. package/dist/vendor/node/NodeStdio.js +10 -0
  359. package/dist/vendor/node/NodeStream.d.ts +8 -0
  360. package/dist/vendor/node/NodeStream.js +27 -0
  361. package/dist/vendor/node/NodeTerminal.d.ts +21 -0
  362. package/dist/vendor/node/NodeTerminal.js +10 -0
  363. package/dist/vendor/node/NodeWorker.d.ts +22 -0
  364. package/dist/vendor/node/NodeWorker.js +9 -0
  365. package/dist/vendor/node/NodeWorkerRunner.d.ts +12 -0
  366. package/dist/vendor/node/NodeWorkerRunner.js +7 -0
  367. package/dist/vendor/node/Undici.d.ts +28 -0
  368. package/dist/vendor/node/Undici.js +9 -0
  369. package/dist/vendor/node/index.d.ts +100 -0
  370. package/dist/vendor/node/index.js +115 -0
  371. package/dist/vendor/node-shared/LICENSE +21 -0
  372. package/dist/vendor/node-shared/NodeChildProcessSpawner.d.ts +57 -0
  373. package/dist/vendor/node-shared/NodeChildProcessSpawner.js +13 -0
  374. package/dist/vendor/node-shared/NodeClusterSocket.d.ts +22 -0
  375. package/dist/vendor/node-shared/NodeClusterSocket.js +11 -0
  376. package/dist/vendor/node-shared/NodeCrypto.d.ts +27 -0
  377. package/dist/vendor/node-shared/NodeCrypto.js +9 -0
  378. package/dist/vendor/node-shared/NodeFileSystem.d.ts +11 -0
  379. package/dist/vendor/node-shared/NodeFileSystem.js +8 -0
  380. package/dist/vendor/node-shared/NodeHttpCompression.d.ts +36 -0
  381. package/dist/vendor/node-shared/NodeHttpCompression.js +13 -0
  382. package/dist/vendor/node-shared/NodePath.d.ts +27 -0
  383. package/dist/vendor/node-shared/NodePath.js +11 -0
  384. package/dist/vendor/node-shared/NodeRuntime.d.ts +47 -0
  385. package/dist/vendor/node-shared/NodeRuntime.js +7 -0
  386. package/dist/vendor/node-shared/NodeSink.d.ts +69 -0
  387. package/dist/vendor/node-shared/NodeSink.js +11 -0
  388. package/dist/vendor/node-shared/NodeSocket.d.ts +134 -0
  389. package/dist/vendor/node-shared/NodeSocket.js +23 -0
  390. package/dist/vendor/node-shared/NodeSocketServer.d.ts +80 -0
  391. package/dist/vendor/node-shared/NodeSocketServer.js +20 -0
  392. package/dist/vendor/node-shared/NodeStdio.d.ts +12 -0
  393. package/dist/vendor/node-shared/NodeStdio.js +9 -0
  394. package/dist/vendor/node-shared/NodeStream.d.ts +179 -0
  395. package/dist/vendor/node-shared/NodeStream.js +26 -0
  396. package/dist/vendor/node-shared/NodeTerminal.d.ts +22 -0
  397. package/dist/vendor/node-shared/NodeTerminal.js +9 -0
  398. package/dist/vendor/node-shared/index.d.ts +56 -0
  399. package/dist/vendor/node-shared/index.js +58 -0
  400. package/dist/vendor/node-shared/internal/nodeChildProcessSpawner.d.ts +4 -0
  401. package/dist/vendor/node-shared/internal/nodeChildProcessSpawner.js +7 -0
  402. package/dist/vendor/node-shared/internal/utils.d.ts +2 -0
  403. package/dist/vendor/node-shared/internal/utils.js +7 -0
  404. package/dist/vendor/platform-node-shared.d.ts +56 -0
  405. package/dist/vendor/platform-node-shared.js +58 -0
  406. package/dist/vendor/platform-node.d.ts +100 -0
  407. package/dist/vendor/platform-node.js +115 -0
  408. package/docs/README.md +129 -0
  409. package/docs/api.md +553 -0
  410. package/docs/concepts/descriptor-relative-filesystem.md +181 -0
  411. package/docs/concepts/host-bundle.md +125 -0
  412. package/docs/concepts/process-containment.md +190 -0
  413. package/docs/guides/answer-run-ownership.md +87 -0
  414. package/docs/guides/configure-the-filesystem-helper.md +152 -0
  415. package/docs/guides/contain-child-processes.md +139 -0
  416. package/docs/guides/match-files-with-glob.md +151 -0
  417. package/docs/installation.md +204 -0
  418. package/docs/quickstart.md +147 -0
  419. package/docs/troubleshooting.md +130 -0
  420. package/package.json +202 -3
  421. package/src/AtomicFileSystem.ts +415 -0
  422. package/src/EgressHttpClient.ts +327 -0
  423. package/src/HostLiveness.ts +103 -0
  424. package/src/NodeHost.ts +253 -0
  425. package/src/ProcessConfinement.ts +363 -0
  426. package/src/ProcessReaper.ts +951 -0
  427. package/src/ProcessSandbox.ts +1307 -0
  428. package/src/ScopedProcess.ts +124 -0
  429. package/src/index.ts +44 -0
  430. package/src/internal/AtomicFileSystemExecutable.ts +379 -0
  431. package/src/internal/AtomicFileSystemProtocol.ts +502 -0
  432. package/src/internal/AtomicFileSystemTransport.ts +272 -0
  433. package/src/internal/AtomicHelperError.ts +50 -0
  434. package/src/internal/AtomicHelperFault.ts +84 -0
  435. package/src/internal/PipedProcess.ts +357 -0
  436. package/src/internal/ProcSnapshot.ts +193 -0
  437. package/src/internal/ProcessCleanup.ts +99 -0
  438. package/src/internal/ProcessCleanupPolicyError.ts +30 -0
  439. package/src/internal/ProcessFault.ts +82 -0
  440. package/src/internal/ProcessSupervisor.ts +807 -0
  441. package/src/internal/SupervisorProgram.ts +309 -0
  442. package/src/internal/WindowsProcessJob.ts +114 -0
@@ -0,0 +1,272 @@
1
+ /**
2
+ * The process transport beneath the atomic filesystem: resolving the
3
+ * configured helper to a file the confined workspace cannot have
4
+ * supplied, and running one isolated, bounded helper process per framed
5
+ * request.
6
+ * @since 1.0.0
7
+ */
8
+
9
+ import type * as KernelFileSystem from "@smthrs/kernel/FileSystem"
10
+ import { Effect, type PlatformError } from "effect"
11
+ import { type ChildProcessWithoutNullStreams, spawn } from "node:child_process"
12
+ import { accessSync, constants, lstatSync, readlinkSync, realpathSync, statSync } from "node:fs"
13
+ import { basename, dirname, isAbsolute, join, parse, relative, sep } from "node:path"
14
+ import type { Limits } from "../AtomicFileSystem.ts"
15
+ import { convert, decode, failure, frameHeaderBytes, type HelperResult } from "./AtomicFileSystemProtocol.ts"
16
+ import { AtomicHelperError } from "./AtomicHelperError.ts"
17
+ import { atomicHelperFault } from "./AtomicHelperFault.ts"
18
+
19
+ let startedHelpers = 0
20
+
21
+ /**
22
+ * Process-local helper starts, including helpers later cancelled or refused.
23
+ * @private
24
+ * @since 1.0.0
25
+ */
26
+ export const started = (): number => startedHelpers
27
+
28
+ /** An inert working directory: nothing the helper could import lives there. */
29
+ const inertDirectory = parse(process.execPath).root
30
+
31
+ /**
32
+ * True when `target` is at or below `root`. Both are absolute and already
33
+ * canonical. A different Windows drive produces an absolute relative result.
34
+ * @private
35
+ * @since 1.0.0
36
+ */
37
+ export const inside = (root: string, target: string): boolean => {
38
+ const path = relative(root, target)
39
+ return path === "" || (path !== ".." && !path.startsWith(`..${sep}`) && !isAbsolute(path))
40
+ }
41
+
42
+ /** Resolve symlinks without replacing a hard-linked executable's entry name. */
43
+ const executablePath = (configured: string): string => {
44
+ let current = configured
45
+ for (let links = 0; links < 40; links++) {
46
+ if (current.endsWith("/") || current.endsWith(sep)) {
47
+ throw new AtomicHelperError({
48
+ code: "helper_path_invalid",
49
+ message: "atomic helper executable cannot end with a directory separator"
50
+ })
51
+ }
52
+ // Bun's macOS realpath can return another hard link to the final inode:
53
+ // A hard-linked executable can change its entry name during guarded reads.
54
+ // Directories cannot have those file aliases. Resolve the parent, preserve
55
+ // the leaf name, and explicitly follow only actual leaf symlinks.
56
+ const parent = realpathSync.native(dirname(current))
57
+ const candidate = join(parent, basename(current))
58
+ if (!lstatSync(candidate).isSymbolicLink()) return candidate
59
+ const target = readlinkSync(candidate)
60
+ // Do not normalize `link/..` lexically; realpath must traverse it first.
61
+ current = isAbsolute(target) ? target : `${parent}/${target}`
62
+ }
63
+ throw new AtomicHelperError({
64
+ code: "helper_path_invalid",
65
+ message: "atomic helper executable has too many symbolic links"
66
+ })
67
+ }
68
+
69
+ /**
70
+ * Resolves the configured helper to an absolute, executable regular file
71
+ * that the confined workspace cannot have supplied. Every failure throws, and
72
+ * every throw becomes a fail-closed `PermissionDenied`, so a host without a
73
+ * usable helper performs no filesystem operation at all.
74
+ * @private
75
+ * @since 1.0.0
76
+ */
77
+ export const usableExecutable = (configured: string, boundaryRoot: string | undefined): string => {
78
+ if (!isAbsolute(configured)) {
79
+ throw new AtomicHelperError({
80
+ code: "helper_path_invalid",
81
+ message: `atomic helper executable must be an absolute path, got ${JSON.stringify(configured)}`
82
+ })
83
+ }
84
+ // Resolved first: the checks below have to describe the file that will
85
+ // actually run, not the name that leads to it.
86
+ const resolved = executablePath(configured)
87
+ if (!statSync(resolved).isFile()) {
88
+ throw new AtomicHelperError({
89
+ code: "helper_not_regular_file",
90
+ message: `atomic helper executable is not a regular file: ${resolved}`
91
+ })
92
+ }
93
+ accessSync(resolved, constants.X_OK)
94
+ if (boundaryRoot !== undefined && inside(boundaryRoot, resolved)) {
95
+ throw new AtomicHelperError({
96
+ code: "helper_inside_workspace",
97
+ message: `atomic helper executable must live outside the confined workspace: ${resolved}`
98
+ })
99
+ }
100
+ return resolved
101
+ }
102
+
103
+ /**
104
+ * Runs one helper over one framed request and settles with its converted
105
+ * answer. Every exit path kills the child, releases its pipes, and waits for
106
+ * the operating system to report that the process has closed.
107
+ * @private
108
+ * @since 1.0.0
109
+ */
110
+ export const spawnHelper = <A>(
111
+ request: KernelFileSystem.AtomicRequest,
112
+ executable: string,
113
+ payload: Buffer,
114
+ settings: { readonly limits: Limits; readonly timeoutMs: number }
115
+ ): Effect.Effect<A, PlatformError.PlatformError> =>
116
+ Effect.callback<A, PlatformError.PlatformError>((resume) => {
117
+ const limits = settings.limits
118
+ let settled = false
119
+ const stdout: Array<Buffer> = []
120
+ let stdoutBytes = 0
121
+ const stderr: Array<Buffer> = []
122
+ let stderrBytes = 0
123
+ let truncated = false
124
+ let writeFailure: unknown
125
+
126
+ // The packaged helper runs with an inert cwd and empty environment. The
127
+ // configured executable is validated outside the confined root first.
128
+ let child: ChildProcessWithoutNullStreams
129
+ try {
130
+ child = spawn(executable, ["--atomic-fs"], {
131
+ cwd: inertDirectory,
132
+ env: {},
133
+ stdio: ["pipe", "pipe", "pipe"]
134
+ })
135
+ startedHelpers++
136
+ } catch (cause) {
137
+ // libuv reports some exec failures — `ENOEXEC` for a file that is
138
+ // neither a script nor a binary — by throwing rather than by emitting an
139
+ // `error` event, so both arrivals have to end in the same refusal.
140
+ resume(Effect.fail(failure(request, cause)))
141
+ return Effect.void
142
+ }
143
+ const closed = new Promise<void>((resolve) => child.once("close", () => resolve()))
144
+ // `deadline` is armed below, after the completion it resumes through
145
+ // exists. Reading it here is safe because nothing calls `cleanup` before
146
+ // then: the one earlier exit, a spawn that threw, resumes and returns.
147
+ const cleanup = () => {
148
+ clearTimeout(deadline)
149
+ child.stdin.destroy()
150
+ child.stdout.destroy()
151
+ child.stderr.destroy()
152
+ child.kill("SIGKILL")
153
+ }
154
+ const complete = (effect: Effect.Effect<A, PlatformError.PlatformError>) => {
155
+ if (settled) return
156
+ settled = true
157
+ // Every exit path drains and kills, so an overflowing, hung, or already
158
+ // finished helper leaves no descriptor and no child behind.
159
+ cleanup()
160
+ resume(Effect.andThen(Effect.promise(() => closed), effect))
161
+ }
162
+ // A wall-clock backstop, independent of every byte ceiling. Those bound
163
+ // what a helper may SAY; nothing bounds how long it may take to say it, and
164
+ // a helper that never answers would otherwise hold the fiber until the run
165
+ // itself is interrupted.
166
+ const deadline = setTimeout(() => {
167
+ complete(Effect.fail(failure(
168
+ request,
169
+ atomicHelperFault("helper_timeout", `atomic helper did not answer within ${settings.timeoutMs} ms`)
170
+ )))
171
+ }, settings.timeoutMs)
172
+ deadline.unref()
173
+ // Raw buffers, never decoded strings: a chunk boundary in the middle of a
174
+ // multi-byte character would otherwise be decoded as two replacement
175
+ // characters before the JSON parse ever saw it. Concatenating once at the
176
+ // end also keeps accumulation linear instead of quadratic.
177
+ // Retained bytes are bounded by the ceiling plus at most one pipe chunk:
178
+ // an overflowing chunk is sliced before it is retained, so the host never
179
+ // relies on the stream implementation's chunk-size convention.
180
+ child.stdout.on("data", (chunk: Buffer) => {
181
+ const remaining = limits.response + frameHeaderBytes - stdoutBytes
182
+ if (chunk.byteLength > remaining) {
183
+ if (remaining > 0) {
184
+ stdout.push(chunk.subarray(0, remaining))
185
+ stdoutBytes += remaining
186
+ }
187
+ complete(Effect.fail(failure(
188
+ request,
189
+ atomicHelperFault(
190
+ "response_limit_exceeded",
191
+ `atomic helper wrote more than ${limits.response} response bytes`
192
+ )
193
+ )))
194
+ return
195
+ }
196
+ stdoutBytes += chunk.byteLength
197
+ stdout.push(chunk)
198
+ })
199
+ // stderr is bounded on its own budget: a helper that says nothing useful
200
+ // on stdout must not be able to exhaust the host through diagnostics.
201
+ // Destroying the pipe stops the helper at its next write rather than
202
+ // letting it produce output nobody will read.
203
+ child.stderr.on("data", (chunk: Buffer) => {
204
+ // Sliced to the remaining room rather than kept whole, so the retained
205
+ // text is exactly the budget and not the budget plus a pipe buffer.
206
+ const slice = chunk.subarray(0, limits.stderr - stderrBytes)
207
+ stderrBytes += slice.byteLength
208
+ stderr.push(slice)
209
+ if (stderrBytes >= limits.stderr) {
210
+ truncated = true
211
+ child.stderr.destroy()
212
+ }
213
+ })
214
+ child.on("error", (cause) => complete(Effect.fail(failure(request, cause))))
215
+ // A helper that exits before draining stdin — an unavailable helper,
216
+ // a rejected request, an interrupt that killed it mid-write — makes the
217
+ // request write fail with EPIPE. Without a listener that is an unhandled
218
+ // `error` event on the pipe, which terminates the host process instead of
219
+ // failing one filesystem call. It is recorded rather than resumed on, so
220
+ // that a helper which did manage to report a real errno keeps precedence
221
+ // over the broken pipe its own exit caused.
222
+ child.stdin.on("error", (cause) => {
223
+ writeFailure = cause
224
+ })
225
+ child.on("close", (code) => {
226
+ let envelope: HelperResult | undefined
227
+ let malformed: unknown
228
+ try {
229
+ envelope = decode(Buffer.concat(stdout), limits)
230
+ } catch (cause) {
231
+ malformed = cause
232
+ }
233
+ if (envelope !== undefined && !envelope.ok) {
234
+ // The helper's own typed rejection outranks the exit status and any
235
+ // transport noise: it is the only thing that knows which errno the
236
+ // syscall produced.
237
+ complete(Effect.fail(failure(
238
+ request,
239
+ atomicHelperFault("helper_rejected", envelope.message ?? "atomic helper rejected the operation"),
240
+ envelope
241
+ )))
242
+ return
243
+ }
244
+ if (envelope !== undefined && code === 0) {
245
+ try {
246
+ complete(convert<A>(request, envelope.value, limits))
247
+ } catch (cause) {
248
+ complete(Effect.fail(failure(request, cause)))
249
+ }
250
+ return
251
+ }
252
+ const text = Buffer.concat(stderr).toString("utf8")
253
+ complete(Effect.fail(failure(
254
+ request,
255
+ text !== ""
256
+ ? atomicHelperFault(
257
+ "helper_exited",
258
+ `atomic helper exited ${code}: ${text}${truncated ? " (truncated)" : ""}`
259
+ )
260
+ : writeFailure !== undefined
261
+ ? writeFailure
262
+ : malformed !== undefined
263
+ ? malformed
264
+ : atomicHelperFault("helper_exited", `atomic helper exited ${code}`)
265
+ )))
266
+ })
267
+ child.stdin.end(payload)
268
+ return Effect.promise(async () => {
269
+ cleanup()
270
+ await closed
271
+ })
272
+ })
@@ -0,0 +1,50 @@
1
+ /**
2
+ * The configuration failures of the atomic filesystem helper: a layer option
3
+ * outside its bounds, a request that cannot be serialized, and a helper that
4
+ * cannot be found, is not usable, or is not trusted. A caller classifies one
5
+ * by `_tag` and `code` instead of reading its message.
6
+ * @since 1.0.0
7
+ */
8
+
9
+ import { Schema } from "effect"
10
+
11
+ /**
12
+ * Why the atomic helper could not be configured or resolved.
13
+ * @category models
14
+ * @since 1.0.0
15
+ */
16
+ export const AtomicHelperErrorCode = Schema.Literals([
17
+ "limit_invalid",
18
+ "concurrency_invalid",
19
+ "timeout_invalid",
20
+ "request_not_serializable",
21
+ "helper_missing",
22
+ "helper_unusable",
23
+ "helper_path_invalid",
24
+ "helper_not_regular_file",
25
+ "helper_inside_workspace",
26
+ "staging_directory_not_private",
27
+ "staging_unavailable"
28
+ ])
29
+
30
+ /**
31
+ * The stable code of an {@link AtomicHelperError}.
32
+ * @category models
33
+ * @since 1.0.0
34
+ */
35
+ export type AtomicHelperErrorCode = typeof AtomicHelperErrorCode.Type
36
+
37
+ /**
38
+ * The atomic helper is misconfigured, missing, or untrusted. `message` names
39
+ * what was searched and how to install the helper where that applies.
40
+ * @category errors
41
+ * @since 1.0.0
42
+ */
43
+ export class AtomicHelperError
44
+ extends Schema.TaggedError<AtomicHelperError>()("@smthrs/platform-node/AtomicHelperError", {
45
+ code: AtomicHelperErrorCode,
46
+ message: Schema.String
47
+ })
48
+ {
49
+ override readonly name = "AtomicHelperError"
50
+ }
@@ -0,0 +1,84 @@
1
+ /**
2
+ * The atomic helper broke its protocol or its transport failed: a response that
3
+ * is not framed, a field of the wrong shape, an answer over a bound, a helper
4
+ * that never answered, or one that exited. `AtomicFileSystemProtocol.failure`
5
+ * reports one as the `cause` of a `PlatformError`, so a caller classifies it by
6
+ * `_tag` and `code`. {@link AtomicHelperRejection} carries the errno a helper
7
+ * itself reported.
8
+ * @since 1.0.0
9
+ */
10
+
11
+ import { Schema } from "effect"
12
+
13
+ /**
14
+ * Which rule of the helper protocol or transport was broken.
15
+ * @category models
16
+ * @since 1.0.0
17
+ */
18
+ export const AtomicHelperFaultCode = Schema.Literals([
19
+ "response_unframed",
20
+ "response_tag_unknown",
21
+ "response_length_invalid",
22
+ "response_length_mismatch",
23
+ "envelope_malformed",
24
+ "field_malformed",
25
+ "file_type_unknown",
26
+ "payload_malformed",
27
+ "read_limit_exceeded",
28
+ "entries_malformed",
29
+ "batch_malformed",
30
+ "digest_malformed",
31
+ "result_malformed",
32
+ "operation_unsupported",
33
+ "helper_timeout",
34
+ "response_limit_exceeded",
35
+ "helper_rejected",
36
+ "helper_exited"
37
+ ])
38
+
39
+ /**
40
+ * The stable code of an {@link AtomicHelperFault}.
41
+ * @category models
42
+ * @since 1.0.0
43
+ */
44
+ export type AtomicHelperFaultCode = typeof AtomicHelperFaultCode.Type
45
+
46
+ /**
47
+ * The helper's response or process broke the protocol. The helper is treated as
48
+ * untrusted, so the operation fails closed.
49
+ * @category errors
50
+ * @since 1.0.0
51
+ */
52
+ export class AtomicHelperFault extends Schema.TaggedError<AtomicHelperFault>()(
53
+ "@smthrs/platform-node/AtomicHelperFault",
54
+ { code: AtomicHelperFaultCode, message: Schema.String }
55
+ ) {
56
+ override readonly name = "AtomicHelperFault"
57
+ }
58
+
59
+ /**
60
+ * A helper fault with a stable code.
61
+ * @category constructors
62
+ * @since 1.0.0
63
+ */
64
+ export const atomicHelperFault = (code: AtomicHelperFaultCode, message: string): AtomicHelperFault =>
65
+ new AtomicHelperFault({ code, message })
66
+
67
+ /**
68
+ * The errno a helper reported for a syscall it ran, in the shape the native
69
+ * Node adapter's errors carry so callers that read `code` and `syscall` see the
70
+ * same contract.
71
+ * @category errors
72
+ * @since 1.0.0
73
+ */
74
+ export class AtomicHelperRejection extends Schema.TaggedError<AtomicHelperRejection>()(
75
+ "@smthrs/platform-node/AtomicHelperRejection",
76
+ {
77
+ code: Schema.String,
78
+ syscall: Schema.optional(Schema.String),
79
+ message: Schema.String,
80
+ cause: Schema.optional(Schema.Unknown)
81
+ }
82
+ ) {
83
+ override readonly name = "AtomicHelperRejection"
84
+ }