@graftland/plugin-remote 0.3.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. package/README.md +18 -54
  2. package/README.zh-CN.md +17 -51
  3. package/README.zh-TW.md +17 -51
  4. package/dist/Auth.d.ts.map +1 -1
  5. package/dist/Auth.js.map +1 -1
  6. package/dist/Config.d.ts +1151 -0
  7. package/dist/Config.d.ts.map +1 -0
  8. package/dist/Config.js +183 -0
  9. package/dist/Config.js.map +1 -0
  10. package/dist/Contract.d.ts +1 -1
  11. package/dist/Contract.d.ts.map +1 -1
  12. package/dist/Contract.js +32 -1
  13. package/dist/Contract.js.map +1 -1
  14. package/dist/Instance.d.ts.map +1 -1
  15. package/dist/Instance.js.map +1 -1
  16. package/dist/Testing.d.ts +1 -1
  17. package/dist/Testing.d.ts.map +1 -1
  18. package/dist/Testing.js.map +1 -1
  19. package/dist/Transport.d.ts +1 -1
  20. package/dist/Transport.d.ts.map +1 -1
  21. package/dist/Transport.js.map +1 -1
  22. package/dist/cli.d.ts +4 -0
  23. package/dist/cli.d.ts.map +1 -0
  24. package/dist/cli.js +25 -0
  25. package/dist/cli.js.map +1 -0
  26. package/dist/host/auth/bearer.d.ts +9 -1
  27. package/dist/host/auth/bearer.d.ts.map +1 -1
  28. package/dist/host/auth/bearer.js +4 -2
  29. package/dist/host/auth/bearer.js.map +1 -1
  30. package/dist/host/auth/jwt.d.ts +9 -1
  31. package/dist/host/auth/jwt.d.ts.map +1 -1
  32. package/dist/host/auth/jwt.js +4 -2
  33. package/dist/host/auth/jwt.js.map +1 -1
  34. package/dist/host/auth/mtls.d.ts +10 -7
  35. package/dist/host/auth/mtls.d.ts.map +1 -1
  36. package/dist/host/auth/mtls.js +13 -14
  37. package/dist/host/auth/mtls.js.map +1 -1
  38. package/dist/host/auth/none.d.ts +3 -1
  39. package/dist/host/auth/none.js +7 -5
  40. package/dist/host/auth/none.js.map +1 -1
  41. package/dist/host/command.d.ts +14 -1
  42. package/dist/host/command.d.ts.map +1 -1
  43. package/dist/host/command.js +11 -9
  44. package/dist/host/command.js.map +1 -1
  45. package/dist/host/local.d.ts +2 -1
  46. package/dist/host/local.d.ts.map +1 -1
  47. package/dist/host/local.js +9 -30
  48. package/dist/host/local.js.map +1 -1
  49. package/dist/host/unix.d.ts +6 -1
  50. package/dist/host/unix.d.ts.map +1 -1
  51. package/dist/host/unix.js +13 -9
  52. package/dist/host/unix.js.map +1 -1
  53. package/dist/host/websocket.d.ts +10 -1
  54. package/dist/host/websocket.d.ts.map +1 -1
  55. package/dist/host/websocket.js +11 -8
  56. package/dist/host/websocket.js.map +1 -1
  57. package/dist/host/worker.d.ts +3 -1
  58. package/dist/host/worker.d.ts.map +1 -1
  59. package/dist/host/worker.js +13 -9
  60. package/dist/host/worker.js.map +1 -1
  61. package/dist/index.d.ts +6 -8
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +30 -64
  64. package/dist/index.js.map +1 -1
  65. package/dist/internal/Certificates.js.map +1 -1
  66. package/dist/internal/FailureGroup.js +6 -6
  67. package/dist/internal/FailureGroup.js.map +1 -1
  68. package/dist/internal/Peer.js.map +1 -1
  69. package/dist/internal/{ServeLifecycle.js → RunnerLifecycle.js} +6 -6
  70. package/dist/internal/RunnerLifecycle.js.map +1 -0
  71. package/dist/internal/Supervisor.js.map +1 -1
  72. package/dist/internal/assembly.d.ts +3 -2
  73. package/dist/internal/assembly.js +8 -8
  74. package/dist/internal/assembly.js.map +1 -1
  75. package/dist/internal/auth/config.d.ts +27 -0
  76. package/dist/internal/auth/config.d.ts.map +1 -0
  77. package/dist/internal/auth/config.js +29 -0
  78. package/dist/internal/auth/config.js.map +1 -0
  79. package/dist/internal/auth/mtls.js.map +1 -1
  80. package/dist/internal/auth/token.js.map +1 -1
  81. package/dist/internal/auth/tokenCredentials.d.ts +2 -1
  82. package/dist/internal/auth/tokenCredentials.d.ts.map +1 -1
  83. package/dist/internal/auth/tokenCredentials.js +1 -1
  84. package/dist/internal/auth/tokenCredentials.js.map +1 -1
  85. package/dist/internal/child.js +3 -3
  86. package/dist/internal/child.js.map +1 -1
  87. package/dist/internal/childMain.js +47 -0
  88. package/dist/internal/childMain.js.map +1 -0
  89. package/dist/internal/childRuntime.js +8 -8
  90. package/dist/internal/childRuntime.js.map +1 -1
  91. package/dist/internal/cleanup.js +3 -3
  92. package/dist/internal/cleanup.js.map +1 -1
  93. package/dist/internal/contract.js.map +1 -1
  94. package/dist/internal/credentials.d.ts +3 -2
  95. package/dist/internal/credentials.d.ts.map +1 -1
  96. package/dist/internal/credentials.js +1 -1
  97. package/dist/internal/credentials.js.map +1 -1
  98. package/dist/internal/directTransport.js.map +1 -1
  99. package/dist/internal/entry.d.ts +493 -3
  100. package/dist/internal/entry.d.ts.map +1 -1
  101. package/dist/internal/entry.js +22 -9
  102. package/dist/internal/entry.js.map +1 -1
  103. package/dist/internal/entryConfig.d.ts +2 -202
  104. package/dist/internal/entryConfig.js +2 -136
  105. package/dist/internal/entryConfig.js.map +1 -1
  106. package/dist/internal/execution.d.ts +4 -4
  107. package/dist/internal/execution.js +11 -11
  108. package/dist/internal/execution.js.map +1 -1
  109. package/dist/internal/follow.js +1 -1
  110. package/dist/internal/follow.js.map +1 -1
  111. package/dist/internal/forkTree.js.map +1 -1
  112. package/dist/internal/host/local.js.map +1 -1
  113. package/dist/internal/host/runner.js +4 -4
  114. package/dist/internal/host/runner.js.map +1 -1
  115. package/dist/internal/host.js +2 -2
  116. package/dist/internal/host.js.map +1 -1
  117. package/dist/internal/importer.js +1 -1
  118. package/dist/internal/importer.js.map +1 -1
  119. package/dist/internal/listenerStartup.js +1 -1
  120. package/dist/internal/listenerStartup.js.map +1 -1
  121. package/dist/internal/loadModule.js.map +1 -1
  122. package/dist/internal/platform.js +1 -9
  123. package/dist/internal/port.d.ts +1 -1
  124. package/dist/internal/port.js +2 -2
  125. package/dist/internal/port.js.map +1 -1
  126. package/dist/internal/runner/Bootstrap.js.map +1 -1
  127. package/dist/internal/runner/Connection.d.ts +3 -2
  128. package/dist/internal/runner/Connection.js +6 -6
  129. package/dist/internal/runner/Connection.js.map +1 -1
  130. package/dist/internal/runner/Execution.js +6 -6
  131. package/dist/internal/runner/Execution.js.map +1 -1
  132. package/dist/internal/runner/Local.js +1 -1
  133. package/dist/internal/runner/Local.js.map +1 -1
  134. package/dist/internal/runner/Lock.js.map +1 -1
  135. package/dist/internal/runner/Multiplex.js.map +1 -1
  136. package/dist/internal/runner/Packages.js.map +1 -1
  137. package/dist/internal/runner/ProcessObservation.js.map +1 -1
  138. package/dist/internal/runner/Processes.js.map +1 -1
  139. package/dist/internal/runner/Retention.js.map +1 -1
  140. package/dist/internal/runner/Store.js.map +1 -1
  141. package/dist/internal/runner/Supervisor.js +5 -5
  142. package/dist/internal/runner/Supervisor.js.map +1 -1
  143. package/dist/internal/runner/Watchdog.js.map +1 -1
  144. package/dist/internal/runner/Wire.d.ts +1 -1
  145. package/dist/internal/runner/Wire.js.map +1 -1
  146. package/dist/internal/runner/accept.js +2 -2
  147. package/dist/internal/runner/accept.js.map +1 -1
  148. package/dist/internal/runner/command.js +1 -1
  149. package/dist/internal/runner/command.js.map +1 -1
  150. package/dist/internal/runner/connectionEnded.js +1 -1
  151. package/dist/internal/runner/connectionEnded.js.map +1 -1
  152. package/dist/internal/runner/model.d.ts.map +1 -1
  153. package/dist/internal/runner/model.js.map +1 -1
  154. package/dist/internal/services.d.ts.map +1 -1
  155. package/dist/internal/services.js +1 -1
  156. package/dist/internal/services.js.map +1 -1
  157. package/dist/internal/socketChannel.js.map +1 -1
  158. package/dist/internal/stdioChannel.js.map +1 -1
  159. package/dist/internal/supervisorPlugin.js +48 -1
  160. package/dist/internal/supervisorPlugin.js.map +1 -1
  161. package/dist/internal/transportOptions.d.ts.map +1 -1
  162. package/dist/internal/watchdogMain.js +5 -3
  163. package/dist/internal/watchdogMain.js.map +1 -1
  164. package/dist/internal/websocket.js.map +1 -1
  165. package/dist/internal/websocketServer.js +1 -1
  166. package/dist/internal/websocketServer.js.map +1 -1
  167. package/dist/internal/workerChannel.js.map +1 -1
  168. package/dist/internal/workerMain.js +13 -6
  169. package/dist/internal/workerMain.js.map +1 -1
  170. package/dist/runner/auth/bearer.d.ts +8 -5
  171. package/dist/runner/auth/bearer.d.ts.map +1 -1
  172. package/dist/runner/auth/bearer.js +13 -11
  173. package/dist/runner/auth/bearer.js.map +1 -1
  174. package/dist/runner/auth/jwt.d.ts +30 -17
  175. package/dist/runner/auth/jwt.d.ts.map +1 -1
  176. package/dist/runner/auth/jwt.js +16 -28
  177. package/dist/runner/auth/jwt.js.map +1 -1
  178. package/dist/runner/auth/mtls.d.ts +8 -6
  179. package/dist/runner/auth/mtls.d.ts.map +1 -1
  180. package/dist/runner/auth/mtls.js +13 -29
  181. package/dist/runner/auth/mtls.js.map +1 -1
  182. package/dist/runner/auth/none.d.ts +7 -1
  183. package/dist/runner/auth/none.js +7 -5
  184. package/dist/runner/auth/none.js.map +1 -1
  185. package/dist/runner/index.d.ts +5 -1
  186. package/dist/runner/index.d.ts.map +1 -1
  187. package/dist/runner/index.js +62 -30
  188. package/dist/runner/index.js.map +1 -1
  189. package/dist/runner/stdio.d.ts +6 -1
  190. package/dist/runner/stdio.d.ts.map +1 -1
  191. package/dist/runner/stdio.js +11 -9
  192. package/dist/runner/stdio.js.map +1 -1
  193. package/dist/runner/unix.d.ts +6 -1
  194. package/dist/runner/unix.d.ts.map +1 -1
  195. package/dist/runner/unix.js +10 -8
  196. package/dist/runner/unix.js.map +1 -1
  197. package/dist/runner/websocket.d.ts +24 -1
  198. package/dist/runner/websocket.d.ts.map +1 -1
  199. package/dist/runner/websocket.js +12 -10
  200. package/dist/runner/websocket.js.map +1 -1
  201. package/package.json +14 -12
  202. package/schema.json +2269 -0
  203. package/src/Auth.ts +8 -2
  204. package/src/Config.ts +196 -0
  205. package/src/Contract.ts +12 -3
  206. package/src/Instance.ts +1 -0
  207. package/src/Testing.ts +6 -4
  208. package/src/Transport.ts +12 -3
  209. package/src/cli.ts +60 -0
  210. package/src/host/auth/bearer.ts +1 -0
  211. package/src/host/auth/jwt.ts +1 -0
  212. package/src/host/auth/mtls.ts +7 -12
  213. package/src/host/auth/none.ts +3 -1
  214. package/src/host/command.ts +8 -5
  215. package/src/host/local.ts +4 -2
  216. package/src/host/unix.ts +11 -7
  217. package/src/host/websocket.ts +10 -7
  218. package/src/host/worker.ts +8 -5
  219. package/src/index.ts +36 -23
  220. package/src/internal/Certificates.ts +1 -0
  221. package/src/internal/FailureGroup.ts +5 -3
  222. package/src/internal/Peer.ts +1 -0
  223. package/src/internal/{ServeLifecycle.ts → RunnerLifecycle.ts} +7 -5
  224. package/src/internal/Supervisor.ts +5 -4
  225. package/src/internal/assembly.ts +11 -9
  226. package/src/internal/auth/config.ts +44 -0
  227. package/src/internal/auth/mtls.ts +1 -0
  228. package/src/internal/auth/token.ts +1 -0
  229. package/src/internal/auth/tokenCredentials.ts +4 -2
  230. package/src/internal/child.ts +8 -6
  231. package/src/{bin.ts → internal/childMain.ts} +16 -61
  232. package/src/internal/childRuntime.ts +12 -10
  233. package/src/internal/cleanup.ts +3 -2
  234. package/src/internal/contract.ts +1 -0
  235. package/src/internal/credentials.ts +3 -1
  236. package/src/internal/directTransport.ts +9 -2
  237. package/src/internal/entry.ts +53 -16
  238. package/src/internal/entryConfig.ts +10 -132
  239. package/src/internal/execution.ts +17 -15
  240. package/src/internal/follow.ts +2 -1
  241. package/src/internal/forkTree.ts +2 -1
  242. package/src/internal/host/local.ts +1 -0
  243. package/src/internal/host/runner.ts +7 -5
  244. package/src/internal/host.ts +9 -8
  245. package/src/internal/importer.ts +3 -2
  246. package/src/internal/listenerStartup.ts +4 -2
  247. package/src/internal/loadModule.ts +1 -0
  248. package/src/internal/platform.ts +1 -12
  249. package/src/internal/port.ts +11 -6
  250. package/src/internal/runner/Bootstrap.ts +1 -0
  251. package/src/internal/runner/Connection.ts +13 -11
  252. package/src/internal/runner/Execution.ts +14 -13
  253. package/src/internal/runner/Local.ts +3 -2
  254. package/src/internal/runner/Lock.ts +1 -0
  255. package/src/internal/runner/Multiplex.ts +2 -1
  256. package/src/internal/runner/Packages.ts +7 -5
  257. package/src/internal/runner/ProcessObservation.ts +2 -1
  258. package/src/internal/runner/Processes.ts +3 -1
  259. package/src/internal/runner/Retention.ts +1 -0
  260. package/src/internal/runner/Store.ts +3 -2
  261. package/src/internal/runner/Supervisor.ts +22 -20
  262. package/src/internal/runner/Watchdog.ts +3 -1
  263. package/src/internal/runner/Wire.ts +13 -12
  264. package/src/internal/runner/accept.ts +6 -5
  265. package/src/internal/runner/command.ts +3 -2
  266. package/src/internal/runner/connectionEnded.ts +2 -1
  267. package/src/internal/runner/model.ts +5 -3
  268. package/src/internal/services.ts +9 -2
  269. package/src/internal/socketChannel.ts +2 -1
  270. package/src/internal/stdioChannel.ts +4 -2
  271. package/src/internal/supervisorPlugin.ts +10 -8
  272. package/src/internal/transportOptions.ts +1 -0
  273. package/src/internal/watchdogMain.ts +5 -3
  274. package/src/internal/websocket.ts +5 -2
  275. package/src/internal/websocketServer.ts +6 -4
  276. package/src/internal/workerChannel.ts +1 -0
  277. package/src/internal/workerMain.ts +21 -5
  278. package/src/runner/auth/bearer.ts +10 -6
  279. package/src/runner/auth/jwt.ts +10 -41
  280. package/src/runner/auth/mtls.ts +6 -3
  281. package/src/runner/auth/none.ts +3 -1
  282. package/src/runner/index.ts +102 -11
  283. package/src/runner/stdio.ts +15 -10
  284. package/src/runner/unix.ts +7 -4
  285. package/src/runner/websocket.ts +9 -7
  286. package/dist/Auth-BElTC9_X.js +0 -6
  287. package/dist/Bootstrap-H9gDsgsC.js +0 -9
  288. package/dist/ConfigDirectory-BCC6q2R4.js +0 -5
  289. package/dist/Contract-DsJtisvL.js +0 -83
  290. package/dist/Errors-DYhsGZcZ.js +0 -58
  291. package/dist/FailureGroup-BgT73AaR.js +0 -63
  292. package/dist/Framing-G9eSaeLb.js +0 -61
  293. package/dist/Graft-B71CPA2Y.js +0 -996
  294. package/dist/Packages-AgoCGotL.js +0 -108
  295. package/dist/Peer-DXeVrGBh.js +0 -342
  296. package/dist/ProcessObservation-gLgGirYv.js +0 -38
  297. package/dist/ServeLifecycle-Bd1FPJ6e.js +0 -24
  298. package/dist/Transport-DULzpsgR.js +0 -6
  299. package/dist/WatchdogProtocol-BZmVxrBP.js +0 -17
  300. package/dist/bin.js +0 -28276
  301. package/dist/bin.js.map +0 -1
  302. package/dist/childRuntime-Bm3iSg_N.js +0 -192
  303. package/dist/command-9zrHdbwT.js +0 -7
  304. package/dist/connectionEnded-BwcxQ7W8.js +0 -54
  305. package/dist/directTransport-DrexuPSm.js +0 -5
  306. package/dist/entry-psOpX3Bj.js +0 -736
  307. package/dist/importer-Cvf88eAY.js +0 -344
  308. package/dist/internal/ServeLifecycle.js.map +0 -1
  309. package/dist/internal/entryConfig.d.ts.map +0 -1
  310. package/dist/internal/platform.js.map +0 -1
  311. package/dist/internal/release.js +0 -25
  312. package/dist/internal/release.js.map +0 -1
  313. package/dist/internal/serve.js +0 -60
  314. package/dist/internal/serve.js.map +0 -1
  315. package/dist/port--3x2zJ4D.js +0 -285
  316. package/dist/release-DfZPuIcK.js +0 -23
  317. package/dist/rolldown-runtime-DYf_mQCB.js +0 -34
  318. package/dist/socketChannel-CJvL2DiB.js +0 -3658
  319. package/dist/supervisorPlugin-t6Z6PrhD.js +0 -733
  320. package/dist/token-CYBNNlhS.js +0 -17
  321. package/dist/tokenCredentials-CbCuk-Rt.js +0 -31
  322. package/dist/websocketServer-NQhODlEt.js +0 -60
  323. package/dist/workerChannel-C8hhBJzA.js +0 -27
  324. package/src/internal/release.ts +0 -72
  325. package/src/internal/serve.ts +0 -119
  326. /package/dist/{bin.d.ts → internal/childMain.d.ts} +0 -0
package/dist/bin.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"bin.js","names":["Serve.run","Certificates.generate","Watchdog.start"],"sources":["../src/bin.ts"],"sourcesContent":["#!/usr/bin/env node\n/** Runs local children and WebSocket supervisors, and issues their deployment certificates. */\nimport { Graft } from \"@graftland/graft\"\nimport { NodeRuntime } from \"@effect/platform-node\"\nimport { Console, Array, Effect, Layer, Logger, Option, Schema } from \"effect\"\nimport { Argument, CliError, Command, Flag } from \"effect/cli\"\nimport process from \"node:process\"\nimport { pathToFileURL } from \"node:url\"\nimport { platform } from \"./internal/platform\"\nimport { bytes } from \"./internal/stdioChannel\"\nimport { load, run } from \"./internal/childRuntime\"\nimport { Bootstrap } from \"./internal/runner/Bootstrap\"\nimport * as Watchdog from \"./internal/runner/Watchdog\"\nimport * as Serve from \"./internal/serve\"\nimport * as Certificates from \"./internal/Certificates\"\n\nconst serve = Command.make(\n\t\"serve\",\n\t{ config: Flag.String(\"config\") },\n\t({ config }) => Serve.run(config),\n)\nconst certificates = Command.make(\n\t\"certificates\",\n\t{\n\t\tout: Flag.String(\"out\").pipe(\n\t\t\tFlag.withDescription(\"Directory for the CA and issued certificates\"),\n\t\t),\n\t\tserver: Flag.String(\"server\").pipe(\n\t\t\tFlag.atLeast(0),\n\t\t\tFlag.withDescription(\n\t\t\t\t\"Runner DNS name or IP address; repeat for additional SANs\",\n\t\t\t),\n\t\t),\n\t\tidentity: Flag.String(\"identity\").pipe(\n\t\t\tFlag.atLeast(0),\n\t\t\tFlag.withDescription(\n\t\t\t\t\"Host identity; repeat to issue multiple client certificates\",\n\t\t\t),\n\t\t),\n\t\tdays: Flag.Int(\"days\").pipe(\n\t\t\tFlag.withDefault(365),\n\t\t\tFlag.filter(\n\t\t\t\t(days) => days > 0,\n\t\t\t\t() => \"Days must be a positive integer\",\n\t\t\t),\n\t\t),\n\t\tforce: Flag.Boolean(\"force\").pipe(\n\t\t\tFlag.withDefault(false),\n\t\t\tFlag.withDescription(\n\t\t\t\t\"Replace requested leaf certificates, keeping the existing CA\",\n\t\t\t),\n\t\t),\n\t},\n\t(options) =>\n\t\tCertificates.generate(options).pipe(\n\t\t\tEffect.andThen(Console.log(`Certificates written to ${options.out}`)),\n\t\t\tEffect.catchTag(\"CertificateExists\", (error) =>\n\t\t\t\tCliError.UserError.make({ cause: error, userMessage: error.message }),\n\t\t\t),\n\t\t),\n)\nconst child = Command.make(\n\t\"child\",\n\t{\n\t\tcontract: Argument.String(\"contract\"),\n\t\tsession: Argument.String(\"session\"),\n\t\tbootstrap: Argument.String(\"bootstrap\").pipe(\n\t\t\tArgument.withSchema(Schema.fromJsonString(Bootstrap)),\n\t\t),\n\t},\n\tEffect.fnUntraced(function* ({ contract, session, bootstrap }) {\n\t\tconst watchdog = yield* Watchdog.start\n\t\t// The executable owns stdin; it must not retain the process after a supervisor stop.\n\t\tyield* Effect.addFinalizer(() =>\n\t\t\tEffect.sync(() => {\n\t\t\t\tprocess.stdin.destroy()\n\t\t\t}),\n\t\t)\n\t\tconst begin = yield* Effect.raceFirst(\n\t\t\twatchdog.begin.pipe(Effect.as(true)),\n\t\t\twatchdog.stop.pipe(Effect.as(false)),\n\t\t)\n\t\tif (!begin) return\n\t\tconst definition = yield* load(pathToFileURL(contract).href)\n\t\tconst channel = yield* bytes\n\t\treturn yield* run(definition, channel, session, bootstrap, watchdog.stop)\n\t}),\n)\nconst cli = Command.make(\n\t\"graft-remote\",\n\t{\n\t\tcontract: Argument.String(\"contract\").pipe(Argument.optional),\n\t\tsession: Argument.String(\"session\").pipe(Argument.withDefault(\"local\")),\n\t},\n\tEffect.fnUntraced(function* ({ contract, session }) {\n\t\tif (Option.isNone(contract))\n\t\t\treturn yield* CliError.UserError.make({\n\t\t\t\tcause: \"Missing contract module\",\n\t\t\t\tuserMessage:\n\t\t\t\t\t\"A contract module or the child/serve/certificates subcommand is required\",\n\t\t\t})\n\t\tconst definition = yield* load(contract.value)\n\t\tconst channel = yield* bytes\n\t\treturn yield* run(definition, channel, session)\n\t}),\n).pipe(Command.withSubcommands([child, serve, certificates]))\n\nNodeRuntime.runMain(\n\tEffect.scoped(\n\t\tEffect.gen(function* () {\n\t\t\tconst context = yield* Layer.build(\n\t\t\t\tLayer.provideMerge(Graft.layer, platform),\n\t\t\t)\n\t\t\treturn yield* Command.run(cli, { version: \"0.0.0\" }).pipe(\n\t\t\t\tEffect.provideContext(context),\n\t\t\t)\n\t\t}),\n\t).pipe(\n\t\t(effect) =>\n\t\t\tEffect.withFiber((main) =>\n\t\t\t\teffect.pipe(\n\t\t\t\t\tEffect.tapCause((cause) =>\n\t\t\t\t\t\t// NodeRuntime uses this fiber's id; a self-interrupt here is indistinguishable, but worker cleanup is not.\n\t\t\t\t\t\tArray.every(\n\t\t\t\t\t\t\tcause.reasons,\n\t\t\t\t\t\t\t(reason) =>\n\t\t\t\t\t\t\t\treason._tag === \"Interrupt\" && reason.fiberId === main.id,\n\t\t\t\t\t\t) ||\n\t\t\t\t\t\tArray.every(\n\t\t\t\t\t\t\tcause.reasons,\n\t\t\t\t\t\t\t(reason) =>\n\t\t\t\t\t\t\t\treason._tag === \"Fail\" && CliError.isCliError(reason.error),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\t? Effect.void\n\t\t\t\t\t\t\t: Effect.logError(cause),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t),\n\t\tEffect.provideService(Logger.LogToStderr, true),\n\t),\n\t// Report inside the stderr context, including failures from resource cleanup.\n\t{ disableErrorReporting: true },\n)\n"],"mappings":"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"}
@@ -1,192 +0,0 @@
1
- import { i as plugin, l as make, s as fromModule } from "./Graft-B71CPA2Y.js";
2
- import { a as AlreadyLoaded, i as ActivationFailed, o as ContractNotFound, r as prepare, s as ModuleImportFailed, t as closedNormally } from "./connectionEnded-BwcxQ7W8.js";
3
- import { n as make$1 } from "./port--3x2zJ4D.js";
4
- import { c as endpoint, o as endpoints, r as fromModule$1 } from "./Contract-DsJtisvL.js";
5
- import { E as make$2, O as Instance, a as ExecutionError, r as channel } from "./Peer-DXeVrGBh.js";
6
- import { Array, Cause, Data, Deferred, Effect, Exit, Fiber, Layer, Logger, MutableRef, Option, Queue, Ref, References, Scope, Stream, SynchronizedRef } from "effect";
7
- import { NodeServices } from "@effect/platform-node";
8
- import { Digest, SecureRandom, Signature } from "effect/crypto";
9
- import { FetchHttpClient } from "effect/http";
10
- import { RpcServer } from "effect/rpc";
11
- // packages/remote/src/internal/platform.ts
12
- const platform = Layer.mergeAll(NodeServices.layer, FetchHttpClient.layer, Digest.layerWebCrypto, SecureRandom.layerWebCrypto, Signature.layerWebCrypto.pipe(Layer.provide(SecureRandom.layerWebCrypto)));
13
- // packages/remote/src/internal/loadModule.ts
14
- /** Native imports cannot be cancelled; late rejection still belongs to the importing context. */
15
- const loadModule = Effect.fn("Remote.loadModule")(function* (module) {
16
- const context = yield* Effect.context();
17
- return yield* Effect.tryPromise({
18
- try: (signal) => import(module).catch((cause) => {
19
- if (signal.aborted) Effect.runSyncWith(context)(Effect.logError("Module import failed after cancellation", Cause.die(cause)).pipe(Effect.annotateLogs({ module })));
20
- throw cause;
21
- }),
22
- catch: (cause) => ModuleImportFailed.make({
23
- module,
24
- cause
25
- })
26
- });
27
- });
28
- // packages/remote/src/internal/child.ts
29
- const ChildEvent = Data.taggedEnum();
30
- /** Queue data; serialization belongs to the RPC consumer, outside synchronous logger callbacks. */
31
- const telemetry = Effect.fnUntraced(function* (contract) {
32
- const events = yield* Queue.bounded(2);
33
- const logs = yield* Queue.dropping(128);
34
- const dropped = MutableRef.make(0);
35
- const encode = (cause) => contract.encodeCause(cause).pipe(Effect.orDie);
36
- return {
37
- events,
38
- logs,
39
- logger: Logger.make((entry) => {
40
- if (!Queue.offerUnsafe(logs, {
41
- level: entry.logLevel,
42
- message: entry.message,
43
- cause: entry.cause,
44
- annotations: entry.fiber.getRef(References.CurrentLogAnnotations)
45
- })) MutableRef.increment(dropped);
46
- }),
47
- eventStream: Stream.fromQueue(events).pipe(Stream.mapEffect((event) => event._tag === "Failed" ? encode(event.cause).pipe(Effect.map((cause) => ({
48
- _tag: "Failed",
49
- cause
50
- }))) : Effect.succeed(event))),
51
- logStream: Stream.fromQueue(logs).pipe(Stream.mapEffect((entry) => encode(entry.cause).pipe(Effect.map((cause) => ({
52
- _tag: "Log",
53
- entry: {
54
- ...entry,
55
- cause
56
- },
57
- dropped: MutableRef.get(dropped)
58
- })))), Stream.concat(Stream.sync(() => ({
59
- _tag: "LogsEnded",
60
- dropped: MutableRef.get(dropped)
61
- }))))
62
- };
63
- });
64
- const Lifecycle = Data.taggedEnum();
65
- const runningOf = (state) => state._tag === "Running" ? Option.some(state.running) : state._tag === "Withdrawing" || state._tag === "Disposing" ? state.running : Option.none();
66
- const cleanup = Effect.fnUntraced(function* (running, retired) {
67
- const pluginExit = yield* Effect.exit(running.fork.dispose);
68
- const bridgeExit = yield* Effect.exit(running.bridge.dispose);
69
- yield* Fiber.join(running.observation);
70
- const failed = yield* Ref.get(running.observedFailure);
71
- return Array.reduce([bridgeExit, pluginExit], retired ? failed : Cause.empty, (cause, exit) => Exit.isFailure(exit) ? Cause.combine(cause, Cause.fromReasons(Array.flatMap(exit.cause.reasons, (reason) => reason._tag === "Fail" ? reason.error.cause.reasons : [reason]))) : cause);
72
- });
73
- const lifecycle = Effect.fnUntraced(function* (contract, peer, identity, telemetry) {
74
- const scope = yield* Effect.scope;
75
- const instanceScope = yield* Scope.fork(scope);
76
- const releaseExports = yield* Deferred.make();
77
- const state = yield* SynchronizedRef.make(Lifecycle.Idle());
78
- const disposing = (current) => Lifecycle.Disposing({ running: runningOf(current) });
79
- const release = SynchronizedRef.update(state, disposing).pipe(Effect.andThen(Deferred.succeed(releaseExports, void 0)));
80
- const exportBridge = plugin(make({
81
- name: `${contract.name}/exports`,
82
- inject: Array.map(contract.provides, (service) => service.key),
83
- apply: Effect.fnUntraced(function* () {
84
- for (const service of contract.provides) yield* service.serve(peer).pipe(Effect.tapCause((cause) => Cause.hasInterruptsOnly(cause) ? Effect.void : Queue.offer(telemetry.events, ChildEvent.Failed({ cause }))), Effect.forkScoped);
85
- yield* Effect.addFinalizer(Effect.fnUntraced(function* () {
86
- if (yield* SynchronizedRef.modify(state, (current) => current._tag === "Disposing" ? [false, current] : [true, Lifecycle.Withdrawing({ running: runningOf(current) })])) yield* Queue.offer(telemetry.events, ChildEvent.Withdrawing());
87
- yield* Deferred.await(releaseExports);
88
- }));
89
- })
90
- })).pipe(Scope.provide(instanceScope));
91
- const start = Effect.fnUntraced(function* (input) {
92
- for (const service of contract.inject) yield* service.publish(peer).pipe(Scope.provide(scope), Effect.mapError((error) => ActivationFailed.make({
93
- detail: "Publishing imported services failed",
94
- cause: Cause.fail(error)
95
- })));
96
- const module = yield* loadModule(contract.module);
97
- const plugin$1 = fromModule(module);
98
- if (Option.isNone(plugin$1)) return yield* ActivationFailed.make({ detail: "The implementation module exports no plugin" });
99
- const fork = yield* plugin({
100
- ...plugin$1.value,
101
- retry: void 0
102
- }, input).pipe(Effect.provideService(Instance, identity), Scope.provide(instanceScope));
103
- const observedFailure = yield* Ref.make(Cause.empty);
104
- const observation = yield* fork.state.pipe(Stream.runForEach((state) => state._tag === "Failed" ? Ref.set(observedFailure, state.cause) : Effect.void), Effect.forkIn(instanceScope));
105
- return {
106
- fork,
107
- bridge: yield* exportBridge,
108
- observedFailure,
109
- observation
110
- };
111
- });
112
- const awaitActive = Effect.fnUntraced(function* (running) {
113
- const first = yield* running.fork.state.pipe(Stream.filter((state) => state._tag !== "Loading"), Stream.runHead);
114
- if (Option.isNone(first)) return yield* ActivationFailed.make({ detail: "The remote fork disappeared during startup" });
115
- if (first.value._tag === "Failed") return yield* Effect.fail(contract.normalizeCause(first.value.cause));
116
- if (first.value._tag !== "Active") return yield* ActivationFailed.make({ detail: "The remote plugin did not become active; check its declared dependencies" });
117
- yield* running.fork.state.pipe(Stream.runForEach((state) => state._tag === "Failed" ? Queue.offer(telemetry.events, ChildEvent.Failed({ cause: state.cause })) : Effect.void), Effect.forkIn(instanceScope));
118
- const exported = yield* running.bridge.state.pipe(Stream.filter((state) => state._tag === "Active" || state._tag === "Failed" || state._tag === "Disposed"), Stream.runHead);
119
- if (Option.isSome(exported) && exported.value._tag === "Failed") return yield* ActivationFailed.make({
120
- detail: "The remote export bridge failed during startup",
121
- cause: exported.value.cause
122
- });
123
- if (Option.isNone(exported) || exported.value._tag !== "Active") return yield* ActivationFailed.make({ detail: "The remote export bridge stopped during startup" });
124
- });
125
- return {
126
- load: Effect.fnUntraced(function* (input) {
127
- yield* SynchronizedRef.updateEffect(state, (current) => current._tag === "Idle" ? Effect.succeed(Lifecycle.Loading()) : Effect.fail(AlreadyLoaded.make({})));
128
- const running = yield* start(input);
129
- if (yield* SynchronizedRef.modify(state, (current) => current._tag === "Withdrawing" ? [false, Lifecycle.Withdrawing({ running: Option.some(running) })] : current._tag === "Disposing" ? [true, Lifecycle.Disposing({ running: Option.some(running) })] : [false, Lifecycle.Running({ running })])) {
130
- const cause = yield* cleanup(running, false);
131
- return yield* Effect.fail(Cause.combine(Cause.fail(ActivationFailed.make({ detail: "The execution was disposed during load" })), cause));
132
- }
133
- yield* awaitActive(running);
134
- }, Effect.mapError((error) => contract.normalizeCause(Cause.isCause(error) ? error : Cause.fail(error)))),
135
- dispose: Effect.gen(function* () {
136
- const previous = yield* SynchronizedRef.getAndUpdate(state, disposing);
137
- yield* Deferred.succeed(releaseExports, void 0);
138
- const current = runningOf(previous);
139
- const retired = previous._tag === "Withdrawing";
140
- const cause = Option.isSome(current) ? yield* cleanup(current.value, retired) : Cause.empty;
141
- yield* Queue.offer(telemetry.events, ChildEvent.Stopped());
142
- yield* Queue.end(telemetry.logs);
143
- if (cause.reasons.length > 0) return yield* Effect.fail(contract.normalizeCause(cause));
144
- }),
145
- release
146
- };
147
- });
148
- // packages/remote/src/internal/childRuntime.ts
149
- /** Import a contract in the runner installation; importing this module performs no I/O. */
150
- const load = Effect.fnUntraced(function* (specifier) {
151
- const module = yield* loadModule(specifier);
152
- const contract = fromModule$1(module);
153
- if (Option.isNone(contract)) return yield* ContractNotFound.make({ module: specifier });
154
- return contract.value;
155
- });
156
- const connect = Effect.fnUntraced(function* (contract, channel$1, session, bootstrap) {
157
- const mux = bootstrap === void 0 ? void 0 : yield* make$2(channel$1);
158
- return yield* make$1(mux === void 0 ? channel$1 : channel(mux, 1), {
159
- session,
160
- serve: {
161
- ...endpoints(contract.provides),
162
- [endpoint]: contract.control
163
- },
164
- call: endpoints(contract.inject),
165
- ...bootstrap === void 0 ? {} : { limits: bootstrap.limits }
166
- });
167
- });
168
- /** One execution unit; the executable supplies the platform and Graft services. */
169
- const run = Effect.fnUntraced(function* (descriptor, channel, session = "local", bootstrap, stop = Effect.never) {
170
- const contract = prepare(descriptor);
171
- const telemetry$1 = yield* telemetry(contract);
172
- const loggers = yield* Logger.CurrentLoggers;
173
- yield* Effect.gen(function* () {
174
- const peer = yield* connect(contract, channel, session, bootstrap);
175
- const instance = yield* lifecycle(contract, peer, bootstrap?.identity ?? {
176
- id: session,
177
- generation: 1
178
- }, telemetry$1);
179
- const handlers = yield* contract.control.toHandlers({
180
- Load: ({ input }) => instance.load(input),
181
- Dispose: () => instance.dispose,
182
- Events: () => telemetry$1.eventStream,
183
- Logs: () => telemetry$1.logStream
184
- });
185
- yield* RpcServer.make(contract.control, { disableFatalDefects: true }).pipe(Effect.provideContext(handlers), Effect.provideService(RpcServer.Protocol, peer.serverProtocol(endpoint)), Effect.forkScoped);
186
- yield* Effect.raceFirst(peer.await.pipe(Effect.catchIf((error) => closedNormally(error.cause), () => Effect.void), Effect.mapError((error) => ExecutionError.make({
187
- detail: "Child transport failed",
188
- cause: error.cause
189
- }))), stop).pipe(Effect.ensuring(instance.release));
190
- }).pipe(Effect.provideService(Logger.CurrentLoggers, /* @__PURE__ */ new Set([...loggers, telemetry$1.logger])));
191
- }, Effect.scoped);
192
- export { run as n, platform as r, load as t };
@@ -1,7 +0,0 @@
1
- import { Effect } from "effect";
2
- import process from "node:process";
3
- import { fileURLToPath } from "node:url";
4
- // packages/remote/src/internal/runner/command.ts
5
- /** Resolve the executable through the installed package export, never a relative dist path. */
6
- const command = (override) => Effect.sync(() => override ?? [process.execPath, fileURLToPath(import.meta.resolve("@graftland/plugin-remote/internal/bin"))]);
7
- export { command as t };
@@ -1,54 +0,0 @@
1
- import { u as TransportError } from "./Errors-DYhsGZcZ.js";
2
- import { t as EndOfStream } from "./Framing-G9eSaeLb.js";
3
- import { l as make, n as UndeclaredFailure } from "./Contract-DsJtisvL.js";
4
- import { t as Peer } from "./Peer-DXeVrGBh.js";
5
- import { Array, Cause, Effect, Schema } from "effect";
6
- import { Socket } from "effect/socket";
7
- // packages/remote/src/internal/childErrors.ts
8
- var AlreadyLoaded = class extends Schema.TaggedError()("AlreadyLoaded", {}) {};
9
- var ContractNotFound = class extends Schema.TaggedError()("ContractNotFound", { module: Schema.String }) {
10
- get message() {
11
- return `No remote contract exported by ${this.module}`;
12
- }
13
- };
14
- var ModuleImportFailed = class extends Schema.TaggedError()("ModuleImportFailed", {
15
- module: Schema.String,
16
- cause: Schema.Defect({ includeStack: true })
17
- }) {};
18
- var ActivationFailed = class extends Schema.TaggedError()("ActivationFailed", {
19
- detail: Schema.String,
20
- cause: Schema.optionalKey(Schema.Cause(Schema.Defect({ includeStack: true }), Schema.Defect({ includeStack: true })))
21
- }) {
22
- get message() {
23
- return this.detail;
24
- }
25
- };
26
- const ChildFailure = Schema.Union([
27
- AlreadyLoaded,
28
- ContractNotFound,
29
- ModuleImportFailed,
30
- ActivationFailed
31
- ]);
32
- // packages/remote/src/internal/contract.ts
33
- /** Control RPCs and child failures belong to the execution protocol, not the public descriptor. */
34
- const prepare = (contract) => {
35
- const failure = Schema.Union([
36
- contract.error,
37
- UndeclaredFailure,
38
- ChildFailure
39
- ]);
40
- const codec = Schema.toCodecJson(Schema.Cause(failure, Schema.Defect({ includeStack: true })));
41
- const declared = Schema.is(failure);
42
- const normalizeCause = (cause) => Cause.map(cause, (error) => declared(error) ? error : UndeclaredFailure.make({ original: error }));
43
- return {
44
- ...contract,
45
- control: make(codec),
46
- normalizeCause,
47
- encodeCause: (cause) => normalizeCause(cause).pipe(Schema.encodeEffect(codec)),
48
- decodeCause: Schema.decodeUnknownEffect(codec)
49
- };
50
- };
51
- // packages/remote/src/internal/runner/connectionEnded.ts
52
- const closedNormally = (cause) => cause.reasons.length > 0 && Array.every(cause.reasons, (reason) => reason._tag === "Fail" && (Schema.is(TransportError)(reason.error) ? closedNormally(reason.error.cause) : Schema.is(EndOfStream)(reason.error) || Socket.isSocketError(reason.error) && reason.error.reason._tag === "SocketCloseError" && reason.error.reason.code === 1e3));
53
- const connectionEnded = (cause) => Cause.hasInterruptsOnly(cause) || closedNormally(cause) ? Effect.void : Effect.flatMap(Peer, (identity) => Effect.logWarning("Remote host connection failed", cause).pipe(Effect.annotateLogs({ "remote.peer": identity })));
54
- export { AlreadyLoaded as a, ActivationFailed as i, connectionEnded as n, ContractNotFound as o, prepare as r, ModuleImportFailed as s, closedNormally as t };
@@ -1,5 +0,0 @@
1
- import { Context } from "effect";
2
- // packages/remote/src/internal/directTransport.ts
3
- var LocalTransport = class extends Context.Service()("@graftland/plugin-remote/internal/directTransport/LocalTransport") {};
4
- var WorkerTransport = class extends Context.Service()("@graftland/plugin-remote/internal/directTransport/WorkerTransport") {};
5
- export { WorkerTransport as n, LocalTransport as t };