@graftland/plugin-remote 0.3.0 → 0.3.2

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 (209) hide show
  1. package/dist/Auth.d.ts +2 -2
  2. package/dist/Auth.d.ts.map +1 -1
  3. package/dist/Auth.js.map +1 -1
  4. package/dist/{Bootstrap-MCwivGN1.js → Bootstrap-H9gDsgsC.js} +2 -2
  5. package/dist/{Contract-CcpSIJm4.js → Contract-DsJtisvL.js} +8 -46
  6. package/dist/Contract.d.ts +50 -53
  7. package/dist/Contract.d.ts.map +1 -1
  8. package/dist/Contract.js +1 -1
  9. package/dist/Contract.js.map +1 -1
  10. package/dist/{Errors-oPsTLY7l.js → Errors-DYhsGZcZ.js} +14 -1
  11. package/dist/Errors.d.ts +19 -0
  12. package/dist/Errors.d.ts.map +1 -1
  13. package/dist/Errors.js +14 -1
  14. package/dist/Errors.js.map +1 -1
  15. package/dist/{FailureGroup-BcH0XOBi.js → FailureGroup-BgT73AaR.js} +14 -4
  16. package/dist/{Framing-zaYdOJnT.js → Framing-G9eSaeLb.js} +1 -1
  17. package/dist/{Graft-BsYq3F-J.js → Graft-B71CPA2Y.js} +46 -35
  18. package/dist/{Packages-B1TPk8pa.js → Packages-AgoCGotL.js} +23 -26
  19. package/dist/{Peer-IJgFK6mD.js → Peer-DXeVrGBh.js} +5 -5
  20. package/dist/{ProcessObservation-DEGrEMfP.js → ProcessObservation-gLgGirYv.js} +1 -1
  21. package/dist/{ServeLifecycle-CJM0gG5B.js → ServeLifecycle-Bd1FPJ6e.js} +1 -1
  22. package/dist/Testing.d.ts +4 -4
  23. package/dist/Testing.d.ts.map +1 -1
  24. package/dist/Testing.js +10 -4
  25. package/dist/Testing.js.map +1 -1
  26. package/dist/Transport.d.ts +2 -2
  27. package/dist/Transport.d.ts.map +1 -1
  28. package/dist/Transport.js.map +1 -1
  29. package/dist/bin.js +48 -47
  30. package/dist/bin.js.map +1 -1
  31. package/dist/{childRuntime-DSqtFN9o.js → childRuntime-Bm3iSg_N.js} +30 -26
  32. package/dist/connectionEnded-BwcxQ7W8.js +54 -0
  33. package/dist/{entry-SYsx9VNb.js → entry-psOpX3Bj.js} +76 -48
  34. package/dist/host/auth/bearer.d.ts +1 -2
  35. package/dist/host/auth/bearer.d.ts.map +1 -1
  36. package/dist/host/auth/bearer.js +1 -1
  37. package/dist/host/auth/bearer.js.map +1 -1
  38. package/dist/host/auth/jwt.d.ts +1 -2
  39. package/dist/host/auth/jwt.d.ts.map +1 -1
  40. package/dist/host/auth/jwt.js +1 -1
  41. package/dist/host/auth/jwt.js.map +1 -1
  42. package/dist/host/auth/mtls.js +2 -2
  43. package/dist/host/auth/none.js +1 -1
  44. package/dist/host/command.d.ts +1 -1
  45. package/dist/host/command.d.ts.map +1 -1
  46. package/dist/host/command.js +4 -4
  47. package/dist/host/command.js.map +1 -1
  48. package/dist/host/local.d.ts +1 -2
  49. package/dist/host/local.d.ts.map +1 -1
  50. package/dist/host/local.js +3 -3
  51. package/dist/host/local.js.map +1 -1
  52. package/dist/host/unix.d.ts +1 -1
  53. package/dist/host/unix.d.ts.map +1 -1
  54. package/dist/host/unix.js +3 -3
  55. package/dist/host/unix.js.map +1 -1
  56. package/dist/host/websocket.d.ts +1 -1
  57. package/dist/host/websocket.d.ts.map +1 -1
  58. package/dist/host/websocket.js +3 -3
  59. package/dist/host/websocket.js.map +1 -1
  60. package/dist/host/worker.d.ts +1 -2
  61. package/dist/host/worker.d.ts.map +1 -1
  62. package/dist/host/worker.js +4 -5
  63. package/dist/host/worker.js.map +1 -1
  64. package/dist/{importer-D7zSgqxq.js → importer-Cvf88eAY.js} +5 -8
  65. package/dist/index.d.ts +2 -3
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +10 -10
  68. package/dist/index.js.map +1 -1
  69. package/dist/internal/Certificates.js +4 -4
  70. package/dist/internal/Certificates.js.map +1 -1
  71. package/dist/internal/FailureGroup.js +3 -2
  72. package/dist/internal/FailureGroup.js.map +1 -1
  73. package/dist/internal/assembly.js +9 -2
  74. package/dist/internal/assembly.js.map +1 -1
  75. package/dist/internal/auth/mtls.js +1 -1
  76. package/dist/internal/auth/mtls.js.map +1 -1
  77. package/dist/internal/auth/tokenCredentials.d.ts +0 -1
  78. package/dist/internal/auth/tokenCredentials.d.ts.map +1 -1
  79. package/dist/internal/auth/tokenCredentials.js.map +1 -1
  80. package/dist/internal/child.js +20 -17
  81. package/dist/internal/child.js.map +1 -1
  82. package/dist/internal/childRuntime.js +6 -4
  83. package/dist/internal/childRuntime.js.map +1 -1
  84. package/dist/internal/contract.js +26 -0
  85. package/dist/internal/contract.js.map +1 -0
  86. package/dist/internal/credentials.d.ts +6 -6
  87. package/dist/internal/credentials.d.ts.map +1 -1
  88. package/dist/internal/credentials.js.map +1 -1
  89. package/dist/internal/directTransport.d.ts +1 -1
  90. package/dist/internal/entry.d.ts +1 -2
  91. package/dist/internal/entry.d.ts.map +1 -1
  92. package/dist/internal/entry.js +4 -14
  93. package/dist/internal/entry.js.map +1 -1
  94. package/dist/internal/execution.js +44 -7
  95. package/dist/internal/execution.js.map +1 -1
  96. package/dist/internal/host/runner.js +7 -6
  97. package/dist/internal/host/runner.js.map +1 -1
  98. package/dist/internal/host.js +5 -5
  99. package/dist/internal/host.js.map +1 -1
  100. package/dist/internal/port.d.ts +2 -10
  101. package/dist/internal/port.js +5 -5
  102. package/dist/internal/port.js.map +1 -1
  103. package/dist/internal/release.js +1 -1
  104. package/dist/internal/release.js.map +1 -1
  105. package/dist/internal/runner/Connection.d.ts +1 -1
  106. package/dist/internal/runner/Connection.js +4 -4
  107. package/dist/internal/runner/Connection.js.map +1 -1
  108. package/dist/internal/runner/Execution.js +3 -3
  109. package/dist/internal/runner/Execution.js.map +1 -1
  110. package/dist/internal/runner/Framing.d.ts +1 -11
  111. package/dist/internal/runner/Framing.js +1 -1
  112. package/dist/internal/runner/Framing.js.map +1 -1
  113. package/dist/internal/runner/Local.js +1 -1
  114. package/dist/internal/runner/Local.js.map +1 -1
  115. package/dist/internal/runner/Lock.js +1 -1
  116. package/dist/internal/runner/Lock.js.map +1 -1
  117. package/dist/internal/runner/Packages.d.ts +1 -1
  118. package/dist/internal/runner/Packages.js +22 -25
  119. package/dist/internal/runner/Packages.js.map +1 -1
  120. package/dist/internal/runner/Processes.js +7 -9
  121. package/dist/internal/runner/Processes.js.map +1 -1
  122. package/dist/internal/runner/Store.js +3 -3
  123. package/dist/internal/runner/Store.js.map +1 -1
  124. package/dist/internal/runner/Supervisor.js +46 -47
  125. package/dist/internal/runner/Supervisor.js.map +1 -1
  126. package/dist/internal/runner/accept.js +3 -3
  127. package/dist/internal/runner/accept.js.map +1 -1
  128. package/dist/internal/runner/model.js +1 -1
  129. package/dist/internal/runner/model.js.map +1 -1
  130. package/dist/internal/serve.js +1 -1
  131. package/dist/internal/serve.js.map +1 -1
  132. package/dist/internal/services.d.ts +2 -12
  133. package/dist/internal/services.d.ts.map +1 -1
  134. package/dist/internal/services.js.map +1 -1
  135. package/dist/internal/supervisorPlugin.js +1 -1
  136. package/dist/internal/watchdogMain.js +5 -5
  137. package/dist/internal/watchdogMain.js.map +1 -1
  138. package/dist/internal/websocketServer.js +3 -1
  139. package/dist/internal/websocketServer.js.map +1 -1
  140. package/dist/internal/workerMain.js +3 -3
  141. package/dist/{port-Blbh8tms.js → port--3x2zJ4D.js} +8 -8
  142. package/dist/{release-BY4Mlluy.js → release-DfZPuIcK.js} +1 -1
  143. package/dist/runner/auth/bearer.js +2 -2
  144. package/dist/runner/auth/jwt.js +4 -4
  145. package/dist/runner/auth/jwt.js.map +1 -1
  146. package/dist/runner/auth/mtls.js +3 -3
  147. package/dist/runner/auth/none.js +1 -1
  148. package/dist/runner/index.js +5 -5
  149. package/dist/runner/stdio.js +3 -3
  150. package/dist/runner/unix.js +3 -3
  151. package/dist/runner/websocket.js +4 -4
  152. package/dist/{socketChannel-KmtzF-9G.js → socketChannel-CJvL2DiB.js} +2 -2
  153. package/dist/{supervisorPlugin-Inb1S5IV.js → supervisorPlugin-t6Z6PrhD.js} +72 -76
  154. package/dist/{token-v5ne2I0-.js → token-CYBNNlhS.js} +1 -1
  155. package/dist/{tokenCredentials-WUJm2AKm.js → tokenCredentials-CbCuk-Rt.js} +3 -3
  156. package/dist/{websocketServer-MXcCJx0v.js → websocketServer-NQhODlEt.js} +5 -3
  157. package/dist/{workerChannel-P82YdNjh.js → workerChannel-C8hhBJzA.js} +1 -1
  158. package/package.json +3 -3
  159. package/src/Auth.ts +9 -2
  160. package/src/Contract.ts +67 -51
  161. package/src/Errors.ts +23 -0
  162. package/src/Testing.ts +16 -2
  163. package/src/Transport.ts +6 -2
  164. package/src/bin.ts +28 -30
  165. package/src/host/auth/bearer.ts +1 -6
  166. package/src/host/auth/jwt.ts +1 -6
  167. package/src/host/command.ts +2 -0
  168. package/src/host/local.ts +5 -9
  169. package/src/host/unix.ts +2 -0
  170. package/src/host/websocket.ts +2 -0
  171. package/src/host/worker.ts +4 -6
  172. package/src/index.ts +8 -4
  173. package/src/internal/Certificates.ts +10 -13
  174. package/src/internal/FailureGroup.ts +128 -121
  175. package/src/internal/assembly.ts +19 -10
  176. package/src/internal/auth/mtls.ts +19 -20
  177. package/src/internal/auth/tokenCredentials.ts +1 -7
  178. package/src/internal/child.ts +249 -240
  179. package/src/internal/childRuntime.ts +84 -81
  180. package/src/internal/contract.ts +47 -0
  181. package/src/internal/credentials.ts +12 -9
  182. package/src/internal/entry.ts +11 -25
  183. package/src/internal/execution.ts +73 -14
  184. package/src/internal/host/runner.ts +153 -153
  185. package/src/internal/host.ts +123 -130
  186. package/src/internal/port.ts +100 -103
  187. package/src/internal/release.ts +3 -2
  188. package/src/internal/runner/Connection.ts +52 -60
  189. package/src/internal/runner/Execution.ts +163 -164
  190. package/src/internal/runner/Framing.ts +9 -10
  191. package/src/internal/runner/Local.ts +26 -27
  192. package/src/internal/runner/Lock.ts +23 -25
  193. package/src/internal/runner/Packages.ts +67 -70
  194. package/src/internal/runner/Processes.ts +89 -92
  195. package/src/internal/runner/Store.ts +110 -114
  196. package/src/internal/runner/Supervisor.ts +392 -405
  197. package/src/internal/runner/accept.ts +76 -84
  198. package/src/internal/runner/model.ts +20 -21
  199. package/src/internal/serve.ts +15 -13
  200. package/src/internal/services.ts +1 -19
  201. package/src/internal/watchdogMain.ts +16 -11
  202. package/src/internal/websocketServer.ts +18 -3
  203. package/src/runner/auth/jwt.ts +10 -6
  204. package/dist/cleanup-BPWr-5U9.js +0 -13
  205. package/dist/connectionEnded-DUgcobEd.js +0 -9
  206. package/dist/internal/childErrors.d.ts +0 -33
  207. package/dist/internal/childErrors.d.ts.map +0 -1
  208. package/dist/internal/port.d.ts.map +0 -1
  209. package/dist/internal/runner/Framing.d.ts.map +0 -1
package/dist/Auth.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AuthenticationFailed, CredentialsError } from "./Errors.js";
1
+ import { AuthenticationFailed, AuthenticatorUnavailable, CredentialsError } from "./Errors.js";
2
2
  import { Context, Effect, Option, Redacted, Scope } from "effect";
3
3
  export interface ClientCertificate {
4
4
  readonly cert: string;
@@ -32,7 +32,7 @@ export type CredentialsApi = { [K in Prepared["_tag"]]: {
32
32
  export type AuthenticatorApi = {
33
33
  readonly _tag: "Header";
34
34
  readonly issuer?: string;
35
- readonly authenticate: (header: Option.Option<Redacted.Redacted<string>>) => Effect.Effect<string, AuthenticationFailed>;
35
+ readonly authenticate: (header: Option.Option<Redacted.Redacted<string>>) => Effect.Effect<string, AuthenticationFailed | AuthenticatorUnavailable>;
36
36
  } | {
37
37
  readonly _tag: "Mtls";
38
38
  readonly tls: TlsPolicy;
@@ -1 +1 @@
1
- {"version":3,"file":"Auth.d.ts","names":[],"sources":["../src/Auth.ts"],"mappings":";;iBAKiB;WACP;WACA,KAAK,SAAS;;iBAEP;WACP,KAAK;WACL,gBAAgB,OAAO;;iBAEhB;WACP,IAAI;WACJ;WACA;WACA;;YAEE;WAEA;WACA,OAAO,SAAS;;WAEd;WAA8B,OAAO;;WACrC;;YAEF,oBACV,KAAK;WACI,MAAM;WACN,MAAM,OAAO,OACrB,QAAQ;aAAqB,MAAM;MACnC,kBACA,MAAM;KAGP;YAEU;WAEA;WACA;WACA,eACR,QAAQ,OAAO,OAAO,SAAS,sBAC3B,OAAO,eAAe;;WAGlB;WACA,KAAK;WACL,eACR,MAAM,wBACF,OAAO,eAAe;;WAEhB;WAAuB;;;qBAExB,oBAAoB;;qBAGpB,sBAAsB"}
1
+ {"version":3,"file":"Auth.d.ts","names":[],"sources":["../src/Auth.ts"],"mappings":";;iBASiB;WACP;WACA,KAAK,SAAS;;iBAEP;WACP,KAAK;WACL,gBAAgB,OAAO;;iBAEhB;WACP,IAAI;WACJ;WACA;WACA;;YAEE;WAEA;WACA,OAAO,SAAS;;WAEd;WAA8B,OAAO;;WACrC;;YAEF,oBACV,KAAK;WACI,MAAM;WACN,MAAM,OAAO,OACrB,QAAQ;aAAqB,MAAM;MACnC,kBACA,MAAM;KAGP;YAEU;WAEA;WACA;WACA,eACR,QAAQ,OAAO,OAAO,SAAS,sBAC3B,OAAO,eAEX,uBAAuB;;WAIf;WACA,KAAK;WACL,eACR,MAAM,wBACF,OAAO,eAAe;;WAEhB;WAAuB;;;qBAExB,oBAAoB;;qBAGpB,sBAAsB"}
package/dist/Auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Auth.js","names":[],"sources":["../src/Auth.ts"],"sourcesContent":["/** Credentials and authenticated identities shared by transport plugins. */\nimport { Context } from \"effect\"\nimport type { Effect, Redacted, Option, Scope } from \"effect\"\nimport type { AuthenticationFailed, CredentialsError } from \"./Errors\"\n\nexport interface ClientCertificate {\n\treadonly cert: string\n\treadonly key: Redacted.Redacted<string>\n}\nexport interface VerifiedCertificate {\n\treadonly der: Uint8Array\n\treadonly subjectAltName: Option.Option<string>\n}\nexport interface TlsPolicy {\n\treadonly ca: ReadonlyArray<string>\n\treadonly minVersion: \"TLSv1.3\"\n\treadonly requestCert: true\n\treadonly rejectUnauthorized: true\n}\nexport type Prepared =\n\t| {\n\t\t\treadonly _tag: \"Authorization\"\n\t\t\treadonly value: Redacted.Redacted<string>\n\t }\n\t| { readonly _tag: \"Certificate\"; readonly value: ClientCertificate }\n\t| { readonly _tag: \"None\" }\n\nexport type CredentialsApi = {\n\t[K in Prepared[\"_tag\"]]: {\n\t\treadonly kind: K\n\t\treadonly read: Effect.Effect<\n\t\t\tExtract<Prepared, { readonly _tag: K }>,\n\t\t\tCredentialsError,\n\t\t\tScope.Scope\n\t\t>\n\t}\n}[Prepared[\"_tag\"]]\n\nexport type AuthenticatorApi =\n\t| {\n\t\t\treadonly _tag: \"Header\"\n\t\t\treadonly issuer?: string\n\t\t\treadonly authenticate: (\n\t\t\t\theader: Option.Option<Redacted.Redacted<string>>,\n\t\t\t) => Effect.Effect<string, AuthenticationFailed>\n\t }\n\t| {\n\t\t\treadonly _tag: \"Mtls\"\n\t\t\treadonly tls: TlsPolicy\n\t\t\treadonly authenticate: (\n\t\t\t\tpeer: VerifiedCertificate,\n\t\t\t) => Effect.Effect<string, AuthenticationFailed>\n\t }\n\t| { readonly _tag: \"None\"; readonly identity: string }\n\nexport class Credentials extends Context.Service<Credentials, CredentialsApi>()(\n\t\"@graftland/plugin-remote/Auth/Credentials\",\n) {}\nexport class Authenticator extends Context.Service<\n\tAuthenticator,\n\tAuthenticatorApi\n>()(\"@graftland/plugin-remote/Auth/Authenticator\") {}\n"],"mappings":";;;AAuDA,IAAa,cAAb,cAAiC,QAAQ,QAAqC,CAAC,CAC9E,2CACD,CAAC,CAAC,CAAC;AACH,IAAa,gBAAb,cAAmC,QAAQ,QAGzC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"Auth.js","names":[],"sources":["../src/Auth.ts"],"sourcesContent":["/** Credentials and authenticated identities shared by transport plugins. */\nimport { Context } from \"effect\"\nimport type { Effect, Redacted, Option, Scope } from \"effect\"\nimport type {\n\tAuthenticationFailed,\n\tAuthenticatorUnavailable,\n\tCredentialsError,\n} from \"./Errors\"\n\nexport interface ClientCertificate {\n\treadonly cert: string\n\treadonly key: Redacted.Redacted<string>\n}\nexport interface VerifiedCertificate {\n\treadonly der: Uint8Array\n\treadonly subjectAltName: Option.Option<string>\n}\nexport interface TlsPolicy {\n\treadonly ca: ReadonlyArray<string>\n\treadonly minVersion: \"TLSv1.3\"\n\treadonly requestCert: true\n\treadonly rejectUnauthorized: true\n}\nexport type Prepared =\n\t| {\n\t\t\treadonly _tag: \"Authorization\"\n\t\t\treadonly value: Redacted.Redacted<string>\n\t }\n\t| { readonly _tag: \"Certificate\"; readonly value: ClientCertificate }\n\t| { readonly _tag: \"None\" }\n\nexport type CredentialsApi = {\n\t[K in Prepared[\"_tag\"]]: {\n\t\treadonly kind: K\n\t\treadonly read: Effect.Effect<\n\t\t\tExtract<Prepared, { readonly _tag: K }>,\n\t\t\tCredentialsError,\n\t\t\tScope.Scope\n\t\t>\n\t}\n}[Prepared[\"_tag\"]]\n\nexport type AuthenticatorApi =\n\t| {\n\t\t\treadonly _tag: \"Header\"\n\t\t\treadonly issuer?: string\n\t\t\treadonly authenticate: (\n\t\t\t\theader: Option.Option<Redacted.Redacted<string>>,\n\t\t\t) => Effect.Effect<\n\t\t\t\tstring,\n\t\t\t\tAuthenticationFailed | AuthenticatorUnavailable\n\t\t\t>\n\t }\n\t| {\n\t\t\treadonly _tag: \"Mtls\"\n\t\t\treadonly tls: TlsPolicy\n\t\t\treadonly authenticate: (\n\t\t\t\tpeer: VerifiedCertificate,\n\t\t\t) => Effect.Effect<string, AuthenticationFailed>\n\t }\n\t| { readonly _tag: \"None\"; readonly identity: string }\n\nexport class Credentials extends Context.Service<Credentials, CredentialsApi>()(\n\t\"@graftland/plugin-remote/Auth/Credentials\",\n) {}\nexport class Authenticator extends Context.Service<\n\tAuthenticator,\n\tAuthenticatorApi\n>()(\"@graftland/plugin-remote/Auth/Authenticator\") {}\n"],"mappings":";;;AA8DA,IAAa,cAAb,cAAiC,QAAQ,QAAqC,CAAC,CAC9E,2CACD,CAAC,CAAC,CAAC;AACH,IAAa,gBAAb,cAAmC,QAAQ,QAGzC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
- import { D as Identity } from "./Peer-IJgFK6mD.js";
2
- import { r as Limits } from "./port-Blbh8tms.js";
1
+ import { D as Identity } from "./Peer-DXeVrGBh.js";
2
+ import { r as Limits } from "./port--3x2zJ4D.js";
3
3
  import { Schema } from "effect";
4
4
  // packages/remote/src/internal/runner/Bootstrap.ts
5
5
  const Bootstrap = Schema.Struct({
@@ -1,33 +1,8 @@
1
1
  import { n as __exportAll } from "./rolldown-runtime-DYf_mQCB.js";
2
- import { t as Priority } from "./port-Blbh8tms.js";
3
- import { a as provide } from "./Graft-BsYq3F-J.js";
4
- import { Array, Cause, Context, Effect, Predicate, Record, Schema } from "effect";
2
+ import { t as Priority } from "./port--3x2zJ4D.js";
3
+ import { a as provide } from "./Graft-B71CPA2Y.js";
4
+ import { Array, Context, Effect, Predicate, Record, Schema } from "effect";
5
5
  import { Rpc, RpcClient, RpcGroup, RpcServer } from "effect/rpc";
6
- // packages/remote/src/internal/childErrors.ts
7
- var AlreadyLoaded = class extends Schema.TaggedError()("AlreadyLoaded", {}) {};
8
- var ContractNotFound = class extends Schema.TaggedError()("ContractNotFound", { module: Schema.String }) {
9
- get message() {
10
- return `No remote contract exported by ${this.module}`;
11
- }
12
- };
13
- var ModuleImportFailed = class extends Schema.TaggedError()("ModuleImportFailed", {
14
- module: Schema.String,
15
- cause: Schema.Defect({ includeStack: true })
16
- }) {};
17
- var ActivationFailed = class extends Schema.TaggedError()("ActivationFailed", {
18
- detail: Schema.String,
19
- cause: Schema.optionalKey(Schema.Cause(Schema.Defect({ includeStack: true }), Schema.Defect({ includeStack: true })))
20
- }) {
21
- get message() {
22
- return this.detail;
23
- }
24
- };
25
- const ChildFailure = Schema.Union([
26
- AlreadyLoaded,
27
- ContractNotFound,
28
- ModuleImportFailed,
29
- ActivationFailed
30
- ]);
31
6
  // packages/remote/src/internal/control.ts
32
7
  const Log = Schema.Struct({
33
8
  level: Schema.Literals([
@@ -82,7 +57,6 @@ const service = (key, group, mapping) => ({
82
57
  const endpoints = (services) => Record.fromEntries(Array.map(services, (service) => [service.key.key, service.group]));
83
58
  // packages/remote/src/Contract.ts
84
59
  var Contract_exports = /* @__PURE__ */ __exportAll({
85
- ChildFailure: () => ChildFailure,
86
60
  UndeclaredFailure: () => UndeclaredFailure,
87
61
  fromModule: () => fromModule,
88
62
  isContract: () => isContract,
@@ -92,30 +66,18 @@ var Contract_exports = /* @__PURE__ */ __exportAll({
92
66
  const TypeId = "~@graftland/plugin-remote/Contract";
93
67
  /** An undeclared failure still crosses the boundary, with its diagnostic value. */
94
68
  var UndeclaredFailure = class extends Schema.TaggedError()("UndeclaredFailure", { original: Schema.Defect({ includeStack: true }) }) {};
95
- /** Pure metadata shared by the host and the executable runner bootstrap. */
96
- const make = (options) => {
69
+ function make(options) {
97
70
  const keys = Array.map([...options.inject ?? [], ...options.provides ?? []], (service) => service.key.key);
98
71
  if (Array.dedupe(keys).length !== keys.length || keys.includes("@graftland/plugin-remote/control")) throw new Error("Service keys must be unique within a remote contract and must not use the control endpoint");
99
- const failure = Schema.Union([
100
- options.error,
101
- UndeclaredFailure,
102
- ChildFailure
103
- ]);
104
- const codec = Schema.toCodecJson(Schema.Cause(failure, Schema.Defect({ includeStack: true })));
105
- const declared = Schema.is(failure);
106
- const normalizeCause = (cause) => Cause.map(cause, (error) => declared(error) ? error : UndeclaredFailure.make({ original: error }));
107
72
  return {
108
73
  ...options,
109
- control: make$1(codec),
110
- normalizeCause,
74
+ error: options.error ?? Schema.Never,
111
75
  inject: options.inject ?? [],
112
76
  provides: options.provides ?? [],
113
- [TypeId]: TypeId,
114
- encodeCause: (cause) => normalizeCause(cause).pipe(Schema.encodeEffect(codec)),
115
- decodeCause: Schema.decodeUnknownEffect(codec)
77
+ [TypeId]: TypeId
116
78
  };
117
- };
79
+ }
118
80
  const isContract = (value) => Predicate.hasProperty(value, TypeId) && value[TypeId] === TypeId;
119
81
  /** A contract module exports either default or a named contract. */
120
82
  const fromModule = (module) => Array.findFirst([Predicate.hasProperty(module, "default") ? module.default : void 0, Predicate.hasProperty(module, "contract") ? module.contract : void 0], isContract);
121
- export { make as a, endpoint as c, ChildFailure as d, ContractNotFound as f, isContract as i, ActivationFailed as l, UndeclaredFailure as n, endpoints as o, ModuleImportFailed as p, fromModule as r, service as s, Contract_exports as t, AlreadyLoaded as u };
83
+ export { make as a, endpoint as c, isContract as i, make$1 as l, UndeclaredFailure as n, endpoints as o, fromModule as r, service as s, Contract_exports as t };
@@ -1,71 +1,68 @@
1
- import { ActivationFailed, AlreadyLoaded, ChildFailure, ContractNotFound, ModuleImportFailed } from "./internal/childErrors.js";
2
- import { Service, service } from "./internal/services.js";
3
- import { Cause, Schema } from "effect";
1
+ import { service } from "./internal/services.js";
2
+ import { Graft } from "@graftland/graft";
3
+ import { Context, Effect, Schema, Scope } from "effect";
4
+ import { Rpc, RpcClient, RpcGroup, RpcServer } from "effect/rpc";
4
5
  declare namespace Contract_d_exports {
5
- export { ChildFailure, Contract, RunnerContract, UndeclaredFailure, fromModule, isContract, make, service };
6
+ export { ConfigSchema, Contract, ErrorSchema, Options, RunnerContract, Service, UndeclaredFailure, fromModule, isContract, make, service };
6
7
  }
7
- declare const UndeclaredFailure_base: Schema.Class<UndeclaredFailure, Schema.TaggedStruct<"UndeclaredFailure", {
8
- readonly original: Schema.Defect;
9
- }>, Cause.YieldableError & {
10
- readonly brand: unique symbol;
11
- }>;
12
- /** An undeclared failure still crosses the boundary, with its diagnostic value. */
13
- export declare class UndeclaredFailure extends UndeclaredFailure_base {}
14
- /** Pure metadata shared by the host and the executable runner bootstrap. */
15
- export declare const make: <S extends Schema.Top & {
8
+ declare const TypeId = "~@graftland/plugin-remote/Contract";
9
+ /** RPC types stay inside the descriptor; Graft supplies its dynamic activation context. */
10
+ export interface Service<R = never, ClientR = never> {
11
+ readonly key: Context.Key<unknown, unknown>;
12
+ readonly group: Pick<RpcGroup.RpcGroup<Rpc.Any>, "requests">;
13
+ readonly serve: (port: {
14
+ readonly serverProtocol: (endpoint: string) => RpcServer.Protocol["Service"];
15
+ }) => Effect.Effect<never, never, R>;
16
+ readonly publish: (port: {
17
+ readonly clientProtocol: (endpoint: string) => RpcClient.Protocol["Service"];
18
+ }) => Effect.Effect<void, Graft.ServiceConflict, Graft.Graft | Scope.Scope | ClientR>;
19
+ }
20
+ /** A self-contained configuration schema that encodes as JSON. */
21
+ export type ConfigSchema = Schema.Top & {
16
22
  readonly Encoded: Schema.Json;
17
23
  readonly DecodingServices: never;
18
24
  readonly EncodingServices: never;
19
- }, E extends Schema.Top & {
25
+ };
26
+ /** A self-contained schema for declared failures. */
27
+ export type ErrorSchema = Schema.Top & {
20
28
  readonly DecodingServices: never;
21
29
  readonly EncodingServices: never;
22
- }>(options: {
30
+ };
31
+ /** The shared configuration and service declarations for one remote plugin. */
32
+ export interface Contract<S extends ConfigSchema, E extends ErrorSchema = typeof Schema.Never> {
23
33
  readonly name: string;
24
34
  readonly config: S;
25
35
  readonly error: E;
26
36
  readonly module: string;
37
+ readonly inject: ReadonlyArray<Service>;
38
+ readonly provides: ReadonlyArray<Service>;
39
+ readonly [TypeId]: typeof TypeId;
40
+ }
41
+ /** Configuration accepted by make; omitted errors default to Never. */
42
+ export interface Options<S extends ConfigSchema, E extends ErrorSchema> {
43
+ readonly name: string;
44
+ readonly config: S;
45
+ readonly error?: E;
46
+ readonly module: string;
27
47
  readonly inject?: ReadonlyArray<Service>;
28
48
  readonly provides?: ReadonlyArray<Service>;
29
- }) => {
30
- name: string;
31
- config: S;
32
- error: E;
33
- module: string;
34
- control: import("effect/rpc/RpcGroup").RpcGroup<import("effect/rpc/Rpc").Rpc<"Dispose", Schema.Void, Schema.Void, Schema.toCodecJson<Schema.Cause<Schema.Union<readonly [E, typeof UndeclaredFailure, Schema.Union<readonly [typeof AlreadyLoaded, typeof ContractNotFound, typeof ModuleImportFailed, typeof ActivationFailed]>]>, Schema.Defect>>, never, never> | import("effect/rpc/Rpc").Rpc<"Events", Schema.Void, import("effect/rpc/RpcSchema").Stream<Schema.Union<readonly [Schema.TaggedStruct<"Failed", {
35
- readonly cause: Schema.Codec<Schema.Json, Schema.Json, never, never>;
36
- }>, Schema.TaggedStruct<"Stopped", {}>, Schema.TaggedStruct<"Withdrawing", {}>]>, Schema.Never>, Schema.Never, never, never> | import("effect/rpc/Rpc").Rpc<"Load", Schema.Struct<{
37
- input: Schema.Codec<Schema.Json, Schema.Json, never, never>;
38
- }>, Schema.Void, Schema.toCodecJson<Schema.Cause<Schema.Union<readonly [E, typeof UndeclaredFailure, Schema.Union<readonly [typeof AlreadyLoaded, typeof ContractNotFound, typeof ModuleImportFailed, typeof ActivationFailed]>]>, Schema.Defect>>, never, never> | import("effect/rpc/Rpc").Rpc<"Logs", Schema.Void, import("effect/rpc/RpcSchema").Stream<Schema.Union<readonly [Schema.TaggedStruct<"Log", {
39
- readonly entry: Schema.Struct<{
40
- readonly level: Schema.Literals<readonly ["Fatal", "Error", "Warn", "Info", "Debug", "Trace", "All", "None"]>;
41
- readonly message: Schema.Defect;
42
- readonly cause: Schema.Codec<Schema.Json, Schema.Json, never, never>;
43
- readonly annotations: Schema.$Record<Schema.String, Schema.Defect>;
44
- }>;
45
- readonly dropped: Schema.Int;
46
- }>, Schema.TaggedStruct<"LogsEnded", {
47
- readonly dropped: Schema.Int;
48
- }>]>, Schema.Never>, Schema.Never, never, never>>;
49
- normalizeCause: (cause: Cause.Cause<unknown>) => Cause.Cause<ActivationFailed | AlreadyLoaded | ContractNotFound | ModuleImportFailed | UndeclaredFailure | E["Type"]>;
50
- inject: readonly Service<never, never>[];
51
- provides: readonly Service<never, never>[];
52
- "~@graftland/plugin-remote/Contract": string;
53
- encodeCause: (cause: Cause.Cause<unknown>) => import("effect/Effect").Effect<Schema.Json, Schema.SchemaError, E["EncodingServices"]>;
54
- decodeCause: (input: unknown, options?: import("effect/SchemaAST").ParseOptions) => import("effect/Effect").Effect<Cause.Cause<ActivationFailed | AlreadyLoaded | ContractNotFound | ModuleImportFailed | UndeclaredFailure | E["Type"]>, Schema.SchemaError, E["DecodingServices"]>;
55
- };
56
- /** The shared config, error codecs, and service declarations for one remote plugin. */
57
- export type Contract<S extends Schema.Top & {
58
- readonly Encoded: Schema.Json;
59
- readonly DecodingServices: never;
60
- readonly EncodingServices: never;
61
- }, E extends Schema.Top & {
62
- readonly DecodingServices: never;
63
- readonly EncodingServices: never;
64
- }> = ReturnType<typeof make<S, E>>;
65
- /** Dynamic imports retain the control server and cause normalization; hosts retain the declared error type. */
49
+ }
50
+ declare const UndeclaredFailure_base: Schema.Class<UndeclaredFailure, Schema.TaggedStruct<"UndeclaredFailure", {
51
+ readonly original: Schema.Defect;
52
+ }>, import("effect/Cause").YieldableError & {
53
+ readonly brand: unique symbol;
54
+ }>;
55
+ /** An undeclared failure still crosses the boundary, with its diagnostic value. */
56
+ export declare class UndeclaredFailure extends UndeclaredFailure_base {}
57
+ /** Pure metadata shared by the host and the executable runner bootstrap. */
58
+ export declare function make<S extends ConfigSchema, E extends ErrorSchema>(options: Options<S, E> & {
59
+ readonly error: E;
60
+ }): Contract<S, E>;
61
+ export declare function make<S extends ConfigSchema>(options: Options<S, typeof Schema.Never>): Contract<S>;
62
+ /** A contract whose schemas are discovered through a dynamic import. */
66
63
  export type RunnerContract = Contract<Schema.Codec<unknown, Schema.Json>, Schema.Codec<unknown>>;
67
64
  export declare const isContract: (value: unknown) => value is RunnerContract;
68
65
  /** A contract module exports either default or a named contract. */
69
66
  export declare const fromModule: (module: unknown) => import("effect/Option").Option<RunnerContract>;
70
- export { ChildFailure, Contract_d_exports, service };
67
+ export { Contract_d_exports, service };
71
68
  //# sourceMappingURL=Contract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Contract.d.ts","names":["_$__internal_childErrors0.AlreadyLoaded","_$__internal_childErrors0.ContractNotFound","_$__internal_childErrors0.ModuleImportFailed","_$__internal_childErrors0.ActivationFailed"],"sources":["../src/Contract.ts"],"mappings":";;;;;;;;;WAamB;;;qBAFN,0BAA0B;;qBAM1B,OACZ,UAAU,OAAO;WACP,SAAS,OAAO;WAChB;WACA;GAEV,UAAU,OAAO;WACP;WACA;GACT;WAEQ;WACA,QAAQ;WACR,OAAO;WACP;WACA,SAAS,cAAc;WACvB,WAAW,cAAc;;EALnB;EACE,QAAA;EACD,OAAA;EACC;;;;;;;;;;;;;;;;EAqBc,iBAAA,OAAA,MAAM,mBAAc,MAAA,MAAdG,mBAAcH,gBAAAC,mBAAAC,qBAAA,oBAAA;;;;EAW7B,cAAA,OAAA,MAAM,2CAAc,OAAA,OAAA,MAAA,OAAA,aAAA;E,+HAAAC,mB;;;YAO/B,SACX,UAAU,OAAO;WACP,SAAS,OAAO;WAChB;WACA;GAEV,UAAU,OAAO;WACP;WACA;KAEP,kBAAkB,KAAK,GAAG;;YAGlB,iBAAiB,SAC5B,OAAO,eAAe,OAAO,OAC7B,OAAO;qBAGK,aAAU,mBAAqB,SAAS;;qBAIxC,aAAU,4CAAmB,OAAA"}
1
+ {"version":3,"file":"Contract.d.ts","names":[],"sources":["../src/Contract.ts"],"mappings":";;;;;;;cAOM;;iBAGW,QAAQ,WAAW;WAC1B,KAAK,QAAQ;WACb,OAAO,KAAK,SAAS,SAAS,IAAI;WAClC,QAAQ;aACP,iBAAiB,qBAAqB,UAAU;QACpD,OAAO,qBAAqB;WACzB,UAAU;aACT,iBAAiB,qBAAqB,UAAU;QACpD,OAAO,aAEZ,MAAM,iBACN,MAAM,QAAQ,MAAM,QAAQ;;;YAKlB,eAAe,OAAO;WACxB,SAAS,OAAO;WAChB;WACA;;;YAGE,cAAc,OAAO;WACvB;WACA;;;iBAIO,SAChB,UAAU,cACV,UAAU,qBAAqB,OAAO;WAE7B;WACA,QAAQ;WACR,OAAO;WACP;WACA,QAAQ,cAAc;WACtB,UAAU,cAAc;YACvB,gBAAgB;;;iBAGV,QAAQ,UAAU,cAAc,UAAU;WACjD;WACA,QAAQ;WACR,QAAQ;WACR;WACA,SAAS,cAAc;WACvB,WAAW,cAAc;;;;;WAMhB;;;qBAFN,0BAA0B;;wBAMvB,KAAK,UAAU,cAAc,UAAU,aACtD,SAAS,QAAQ,GAAG;WAAgB,OAAO;IACzC,SAAS,GAAG;wBACC,KAAK,UAAU,cAC9B,SAAS,QAAQ,UAAU,OAAO,SAChC,SAAS;;YA2BA,iBAAiB,SAC5B,OAAO,eAAe,OAAO,OAC7B,OAAO;qBAGK,aAAU,mBAAqB,SAAS;;qBAIxC,aAAU,4CAAmB,OAAA"}
package/dist/Contract.js CHANGED
@@ -1 +1 @@
1
- export { d as ChildFailure, n as UndeclaredFailure, r as fromModule, i as isContract, a as make, s as service } from "./Contract-CcpSIJm4.js";
1
+ export { n as UndeclaredFailure, r as fromModule, i as isContract, a as make, s as service } from "./Contract-DsJtisvL.js";
@@ -1 +1 @@
1
- {"version":3,"file":"Contract.js","names":["Control.make"],"sources":["../src/Contract.ts"],"sourcesContent":["import { ChildFailure } from \"./internal/childErrors\"\nexport { ChildFailure }\nimport { Array, Cause, Predicate, Schema } from \"effect\"\n\nimport type { Service } from \"./internal/services\"\nimport * as Control from \"./internal/control\"\nexport { service } from \"./internal/services\"\n\nconst TypeId = \"~@graftland/plugin-remote/Contract\"\n\n/** An undeclared failure still crosses the boundary, with its diagnostic value. */\nexport class UndeclaredFailure extends Schema.TaggedError<\n\tUndeclaredFailure,\n\t{ readonly brand: unique symbol }\n>()(\"UndeclaredFailure\", { original: Schema.Defect({ includeStack: true }) }) {}\n\n/** Pure metadata shared by the host and the executable runner bootstrap. */\nexport const make = <\n\tS extends Schema.Top & {\n\t\treadonly Encoded: Schema.Json\n\t\treadonly DecodingServices: never\n\t\treadonly EncodingServices: never\n\t},\n\tE extends Schema.Top & {\n\t\treadonly DecodingServices: never\n\t\treadonly EncodingServices: never\n\t},\n>(options: {\n\treadonly name: string\n\treadonly config: S\n\treadonly error: E\n\treadonly module: string\n\treadonly inject?: ReadonlyArray<Service>\n\treadonly provides?: ReadonlyArray<Service>\n}) => {\n\t// Keys are runtime strings; tuple types cannot distinguish independently created keys.\n\tconst keys = Array.map(\n\t\t[...(options.inject ?? []), ...(options.provides ?? [])],\n\t\t(service) => service.key.key,\n\t)\n\tif (\n\t\tArray.dedupe(keys).length !== keys.length ||\n\t\tkeys.includes(Control.endpoint)\n\t)\n\t\tthrow new Error(\n\t\t\t\"Service keys must be unique within a remote contract and must not use the control endpoint\",\n\t\t)\n\tconst failure = Schema.Union([options.error, UndeclaredFailure, ChildFailure])\n\tconst codec = Schema.toCodecJson(\n\t\tSchema.Cause(failure, Schema.Defect({ includeStack: true })),\n\t)\n\tconst declared = Schema.is(failure)\n\tconst normalizeCause = (cause: Cause.Cause<unknown>) =>\n\t\tCause.map(cause, (error) =>\n\t\t\tdeclared(error) ? error : UndeclaredFailure.make({ original: error }),\n\t\t)\n\treturn {\n\t\t...options,\n\t\tcontrol: Control.make(codec),\n\t\tnormalizeCause,\n\t\tinject: options.inject ?? [],\n\t\tprovides: options.provides ?? [],\n\t\t[TypeId]: TypeId,\n\t\tencodeCause: (cause: Cause.Cause<unknown>) =>\n\t\t\tnormalizeCause(cause).pipe(Schema.encodeEffect(codec)),\n\t\tdecodeCause: Schema.decodeUnknownEffect(codec),\n\t}\n}\n\n/** The shared config, error codecs, and service declarations for one remote plugin. */\nexport type Contract<\n\tS extends Schema.Top & {\n\t\treadonly Encoded: Schema.Json\n\t\treadonly DecodingServices: never\n\t\treadonly EncodingServices: never\n\t},\n\tE extends Schema.Top & {\n\t\treadonly DecodingServices: never\n\t\treadonly EncodingServices: never\n\t},\n> = ReturnType<typeof make<S, E>>\n\n/** Dynamic imports retain the control server and cause normalization; hosts retain the declared error type. */\nexport type RunnerContract = Contract<\n\tSchema.Codec<unknown, Schema.Json>,\n\tSchema.Codec<unknown>\n>\n\nexport const isContract = (value: unknown): value is RunnerContract =>\n\tPredicate.hasProperty(value, TypeId) && value[TypeId] === TypeId\n\n/** A contract module exports either default or a named contract. */\nexport const fromModule = (module: unknown) =>\n\tArray.findFirst(\n\t\t[\n\t\t\tPredicate.hasProperty(module, \"default\") ? module.default : undefined,\n\t\t\tPredicate.hasProperty(module, \"contract\") ? module.contract : undefined,\n\t\t],\n\t\tisContract,\n\t)\n"],"mappings":";;;;;;;;;;;;;;AAQA,MAAM,SAAS;;AAGf,IAAa,oBAAb,cAAuC,OAAO,YAG5C,CAAC,CAAC,qBAAqB,EAAE,UAAU,OAAO,OAAO,EAAE,cAAc,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;;AAG/E,MAAa,QAUX,YAOI;CAEL,MAAM,OAAO,MAAM,IAClB,CAAC,GAAI,QAAQ,UAAU,CAAC,GAAI,GAAI,QAAQ,YAAY,CAAC,CAAE,IACtD,YAAY,QAAQ,IAAI,GAC1B;CACA,IACC,MAAM,OAAO,IAAI,CAAC,CAAC,WAAW,KAAK,UACnC,KAAK,SAAS,kCAAgB,GAE9B,MAAM,IAAI,MACT,4FACD;CACD,MAAM,UAAU,OAAO,MAAM;EAAC,QAAQ;EAAO;EAAmB;CAAY,CAAC;CAC7E,MAAM,QAAQ,OAAO,YACpB,OAAO,MAAM,SAAS,OAAO,OAAO,EAAE,cAAc,KAAK,CAAC,CAAC,CAC5D;CACA,MAAM,WAAW,OAAO,GAAG,OAAO;CAClC,MAAM,kBAAkB,UACvB,MAAM,IAAI,QAAQ,UACjB,SAAS,KAAK,IAAI,QAAQ,kBAAkB,KAAK,EAAE,UAAU,MAAM,CAAC,CACrE;CACD,OAAO;EACN,GAAG;EACH,SAASA,OAAa,KAAK;EAC3B;EACA,QAAQ,QAAQ,UAAU,CAAC;EAC3B,UAAU,QAAQ,YAAY,CAAC;GAC9B,SAAS;EACV,cAAc,UACb,eAAe,KAAK,CAAC,CAAC,KAAK,OAAO,aAAa,KAAK,CAAC;EACtD,aAAa,OAAO,oBAAoB,KAAK;CAC9C;AACD;AAqBA,MAAa,cAAc,UAC1B,UAAU,YAAY,OAAO,MAAM,KAAK,MAAM,YAAY;;AAG3D,MAAa,cAAc,WAC1B,MAAM,UACL,CACC,UAAU,YAAY,QAAQ,SAAS,IAAI,OAAO,UAAU,KAAA,GAC5D,UAAU,YAAY,QAAQ,UAAU,IAAI,OAAO,WAAW,KAAA,CAC/D,GACA,UACD"}
1
+ {"version":3,"file":"Contract.js","names":[],"sources":["../src/Contract.ts"],"sourcesContent":["import { Array, Predicate, Schema } from \"effect\"\nimport type { Context, Effect, Scope } from \"effect\"\nimport type { Graft } from \"@graftland/graft\"\nimport type { Rpc, RpcClient, RpcGroup, RpcServer } from \"effect/rpc\"\nimport * as Control from \"./internal/control\"\nexport { service } from \"./internal/services\"\n\nconst TypeId = \"~@graftland/plugin-remote/Contract\"\n\n/** RPC types stay inside the descriptor; Graft supplies its dynamic activation context. */\nexport interface Service<R = never, ClientR = never> {\n\treadonly key: Context.Key<unknown, unknown>\n\treadonly group: Pick<RpcGroup.RpcGroup<Rpc.Any>, \"requests\">\n\treadonly serve: (port: {\n\t\treadonly serverProtocol: (endpoint: string) => RpcServer.Protocol[\"Service\"]\n\t}) => Effect.Effect<never, never, R>\n\treadonly publish: (port: {\n\t\treadonly clientProtocol: (endpoint: string) => RpcClient.Protocol[\"Service\"]\n\t}) => Effect.Effect<\n\t\tvoid,\n\t\tGraft.ServiceConflict,\n\t\tGraft.Graft | Scope.Scope | ClientR\n\t>\n}\n\n/** A self-contained configuration schema that encodes as JSON. */\nexport type ConfigSchema = Schema.Top & {\n\treadonly Encoded: Schema.Json\n\treadonly DecodingServices: never\n\treadonly EncodingServices: never\n}\n/** A self-contained schema for declared failures. */\nexport type ErrorSchema = Schema.Top & {\n\treadonly DecodingServices: never\n\treadonly EncodingServices: never\n}\n\n/** The shared configuration and service declarations for one remote plugin. */\nexport interface Contract<\n\tS extends ConfigSchema,\n\tE extends ErrorSchema = typeof Schema.Never,\n> {\n\treadonly name: string\n\treadonly config: S\n\treadonly error: E\n\treadonly module: string\n\treadonly inject: ReadonlyArray<Service>\n\treadonly provides: ReadonlyArray<Service>\n\treadonly [TypeId]: typeof TypeId\n}\n/** Configuration accepted by make; omitted errors default to Never. */\nexport interface Options<S extends ConfigSchema, E extends ErrorSchema> {\n\treadonly name: string\n\treadonly config: S\n\treadonly error?: E\n\treadonly module: string\n\treadonly inject?: ReadonlyArray<Service>\n\treadonly provides?: ReadonlyArray<Service>\n}\n\n/** An undeclared failure still crosses the boundary, with its diagnostic value. */\nexport class UndeclaredFailure extends Schema.TaggedError<\n\tUndeclaredFailure,\n\t{ readonly brand: unique symbol }\n>()(\"UndeclaredFailure\", { original: Schema.Defect({ includeStack: true }) }) {}\n\n/** Pure metadata shared by the host and the executable runner bootstrap. */\nexport function make<S extends ConfigSchema, E extends ErrorSchema>(\n\toptions: Options<S, E> & { readonly error: E },\n): Contract<S, E>\nexport function make<S extends ConfigSchema>(\n\toptions: Options<S, typeof Schema.Never>,\n): Contract<S>\nexport function make<S extends ConfigSchema, E extends ErrorSchema>(\n\toptions: Options<S, E>,\n): Contract<S, E | typeof Schema.Never> {\n\t// Keys are runtime strings; tuple types cannot distinguish independently created keys.\n\tconst keys = Array.map(\n\t\t[...(options.inject ?? []), ...(options.provides ?? [])],\n\t\t(service) => service.key.key,\n\t)\n\tif (\n\t\tArray.dedupe(keys).length !== keys.length ||\n\t\tkeys.includes(Control.endpoint)\n\t)\n\t\tthrow new Error(\n\t\t\t\"Service keys must be unique within a remote contract and must not use the control endpoint\",\n\t\t)\n\n\treturn {\n\t\t...options,\n\t\terror: options.error ?? Schema.Never,\n\t\tinject: options.inject ?? [],\n\t\tprovides: options.provides ?? [],\n\t\t[TypeId]: TypeId,\n\t}\n}\n\n/** A contract whose schemas are discovered through a dynamic import. */\nexport type RunnerContract = Contract<\n\tSchema.Codec<unknown, Schema.Json>,\n\tSchema.Codec<unknown>\n>\n\nexport const isContract = (value: unknown): value is RunnerContract =>\n\tPredicate.hasProperty(value, TypeId) && value[TypeId] === TypeId\n\n/** A contract module exports either default or a named contract. */\nexport const fromModule = (module: unknown) =>\n\tArray.findFirst(\n\t\t[\n\t\t\tPredicate.hasProperty(module, \"default\") ? module.default : undefined,\n\t\t\tPredicate.hasProperty(module, \"contract\") ? module.contract : undefined,\n\t\t],\n\t\tisContract,\n\t)\n"],"mappings":";;;;;;;;;;;;AAOA,MAAM,SAAS;;AAsDf,IAAa,oBAAb,cAAuC,OAAO,YAG5C,CAAC,CAAC,qBAAqB,EAAE,UAAU,OAAO,OAAO,EAAE,cAAc,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAS/E,SAAgB,KACf,SACuC;CAEvC,MAAM,OAAO,MAAM,IAClB,CAAC,GAAI,QAAQ,UAAU,CAAC,GAAI,GAAI,QAAQ,YAAY,CAAC,CAAE,IACtD,YAAY,QAAQ,IAAI,GAC1B;CACA,IACC,MAAM,OAAO,IAAI,CAAC,CAAC,WAAW,KAAK,UACnC,KAAK,SAAS,kCAAgB,GAE9B,MAAM,IAAI,MACT,4FACD;CAED,OAAO;EACN,GAAG;EACH,OAAO,QAAQ,SAAS,OAAO;EAC/B,QAAQ,QAAQ,UAAU,CAAC;EAC3B,UAAU,QAAQ,YAAY,CAAC;GAC9B,SAAS;CACX;AACD;AAQA,MAAa,cAAc,UAC1B,UAAU,YAAY,OAAO,MAAM,KAAK,MAAM,YAAY;;AAG3D,MAAa,cAAc,WAC1B,MAAM,UACL,CACC,UAAU,YAAY,QAAQ,SAAS,IAAI,OAAO,UAAU,KAAA,GAC5D,UAAU,YAAY,QAAQ,UAAU,IAAI,OAAO,WAAW,KAAA,CAC/D,GACA,UACD"}
@@ -42,4 +42,17 @@ var AuthenticationFailed = class extends Schema.TaggedError()("AuthenticationFai
42
42
  challenge: Schema.optionalKey(Schema.String),
43
43
  cause: Schema.optionalKey(Schema.Cause(Schema.Unknown, Schema.Unknown))
44
44
  }) {};
45
- export { ProcessExited as a, TransportError as c, MissingInstance as i, CredentialsError as n, RemoteError as o, LocalTerminationTimeout as r, RemoteWithdrawn as s, AuthenticationFailed as t };
45
+ /** The authenticator could not reach what it needs to decide, such as its key set; the credential may still be valid. */
46
+ var AuthenticatorUnavailable = class extends Schema.TaggedError()("AuthenticatorUnavailable", { cause: Schema.Cause(Schema.Unknown, Schema.Unknown) }) {};
47
+ /** A remote entry could not be resolved or configured at the indicated field. */
48
+ var RemoteEntryError = class extends Schema.TaggedError()("RemoteEntryError", {
49
+ entry: Schema.Option(Schema.String),
50
+ directory: Schema.Option(Schema.String),
51
+ field: Schema.String,
52
+ cause: Schema.Cause(Schema.Unknown, Schema.Unknown)
53
+ }) {
54
+ get message() {
55
+ return `Remote entry ${Option.getOrElse(this.entry, () => "<programmatic>")} failed at ${this.field}`;
56
+ }
57
+ };
58
+ export { MissingInstance as a, RemoteError as c, LocalTerminationTimeout as i, RemoteWithdrawn as l, AuthenticatorUnavailable as n, ProcessExited as o, CredentialsError as r, RemoteEntryError as s, AuthenticationFailed as t, TransportError as u };
package/dist/Errors.d.ts CHANGED
@@ -63,5 +63,24 @@ declare const AuthenticationFailed_base: Schema.Class<AuthenticationFailed, Sche
63
63
  readonly brand: unique symbol;
64
64
  }>;
65
65
  export declare class AuthenticationFailed extends AuthenticationFailed_base {}
66
+ declare const AuthenticatorUnavailable_base: Schema.Class<AuthenticatorUnavailable, Schema.TaggedStruct<"AuthenticatorUnavailable", {
67
+ readonly cause: Schema.Cause<Schema.Unknown, Schema.Unknown>;
68
+ }>, import("effect/Cause").YieldableError & {
69
+ readonly brand: unique symbol;
70
+ }>;
71
+ /** The authenticator could not reach what it needs to decide, such as its key set; the credential may still be valid. */
72
+ export declare class AuthenticatorUnavailable extends AuthenticatorUnavailable_base {}
73
+ declare const RemoteEntryError_base: Schema.Class<RemoteEntryError, Schema.TaggedStruct<"RemoteEntryError", {
74
+ readonly entry: Schema.Option<Schema.String>;
75
+ readonly directory: Schema.Option<Schema.String>;
76
+ readonly field: Schema.String;
77
+ readonly cause: Schema.Cause<Schema.Unknown, Schema.Unknown>;
78
+ }>, import("effect/Cause").YieldableError & {
79
+ readonly brand: unique symbol;
80
+ }>;
81
+ /** A remote entry could not be resolved or configured at the indicated field. */
82
+ export declare class RemoteEntryError extends RemoteEntryError_base {
83
+ get message(): string;
84
+ }
66
85
  export {};
67
86
  //# sourceMappingURL=Errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Errors.d.ts","names":[],"sources":["../src/Errors.ts"],"mappings":";;;;;;;;WAImB;;qBAFN,sBAAsB;MAUrB;;;;;WAQK;;qBAFN,uBAAuB;;WAUjB;;;qBAFN,wBAAwB;MAIvB;;;;;WAQK;;;qBAFN,oBAAoB;;WAQd;;;qBAFN,wBAAwB;MAIvB;;;;;;WAQK;;;qBAFN,gCAAgC;MAO/B;;;;;WAUK;;;qBAFN,yBAAyB;;;;;;WASnB;;qBAFN,6BAA6B"}
1
+ {"version":3,"file":"Errors.d.ts","names":[],"sources":["../src/Errors.ts"],"mappings":";;;;;;;;WAImB;;qBAFN,sBAAsB;MAUrB;;;;;WAQK;;qBAFN,uBAAuB;;WAUjB;;;qBAFN,wBAAwB;MAIvB;;;;;WAQK;;;qBAFN,oBAAoB;;WAQd;;;qBAFN,wBAAwB;MAIvB;;;;;;WAQK;;;qBAFN,gCAAgC;MAO/B;;;;;WAUK;;;qBAFN,yBAAyB;;;;;;WASnB;;qBAFN,6BAA6B;;;;WAYvB;;;qBAFN,iCAAiC;;;;;;;WAU3B;;;qBAFN,yBAAyB;MASxB"}
package/dist/Errors.js CHANGED
@@ -42,6 +42,19 @@ var AuthenticationFailed = class extends Schema.TaggedError()("AuthenticationFai
42
42
  challenge: Schema.optionalKey(Schema.String),
43
43
  cause: Schema.optionalKey(Schema.Cause(Schema.Unknown, Schema.Unknown))
44
44
  }) {};
45
- export { AuthenticationFailed, CredentialsError, LocalTerminationTimeout, MissingInstance, ProcessExited, RemoteError, RemoteWithdrawn, TransportError };
45
+ /** The authenticator could not reach what it needs to decide, such as its key set; the credential may still be valid. */
46
+ var AuthenticatorUnavailable = class extends Schema.TaggedError()("AuthenticatorUnavailable", { cause: Schema.Cause(Schema.Unknown, Schema.Unknown) }) {};
47
+ /** A remote entry could not be resolved or configured at the indicated field. */
48
+ var RemoteEntryError = class extends Schema.TaggedError()("RemoteEntryError", {
49
+ entry: Schema.Option(Schema.String),
50
+ directory: Schema.Option(Schema.String),
51
+ field: Schema.String,
52
+ cause: Schema.Cause(Schema.Unknown, Schema.Unknown)
53
+ }) {
54
+ get message() {
55
+ return `Remote entry ${Option.getOrElse(this.entry, () => "<programmatic>")} failed at ${this.field}`;
56
+ }
57
+ };
58
+ export { AuthenticationFailed, AuthenticatorUnavailable, CredentialsError, LocalTerminationTimeout, MissingInstance, ProcessExited, RemoteEntryError, RemoteError, RemoteWithdrawn, TransportError };
46
59
 
47
60
  //# sourceMappingURL=Errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Errors.js","names":[],"sources":["../src/Errors.ts"],"sourcesContent":["import { Option, Schema } from \"effect\"\n\nexport class ProcessExited extends Schema.TaggedError<\n\tProcessExited,\n\t{ readonly brand: unique symbol }\n>()(\"ProcessExited\", {\n\tpid: Schema.Option(Schema.Int),\n\tthreadId: Schema.optionalKey(Schema.Int),\n\texitCode: Schema.NullOr(Schema.Int),\n\tstderr: Schema.String,\n\tstatusCause: Schema.Cause(Schema.Unknown, Schema.Unknown),\n}) {\n\toverride get message() {\n\t\treturn this.threadId !== undefined\n\t\t\t? `Remote worker ${this.threadId} exited unexpectedly (${this.exitCode})`\n\t\t\t: `Remote process${Option.isSome(this.pid) ? ` ${this.pid.value}` : \"\"} exited unexpectedly (${this.exitCode ?? \"signal\"})`\n\t}\n}\nexport class TransportError extends Schema.TaggedError<\n\tTransportError,\n\t{ readonly brand: unique symbol }\n>()(\"TransportError\", {\n\tcause: Schema.Cause(Schema.Unknown, Schema.Unknown),\n}) {}\n\n/** The remote export lease was withdrawn; host consumers must drain before Dispose. */\nexport class RemoteWithdrawn extends Schema.TaggedError<\n\tRemoteWithdrawn,\n\t{ readonly brand: unique symbol }\n>()(\"RemoteWithdrawn\", {}) {\n\toverride get message() {\n\t\treturn \"Remote services were withdrawn\"\n\t}\n}\n\n/** Infrastructure failure at the plugin boundary; the complete underlying cause remains inspectable. */\nexport class RemoteError extends Schema.TaggedError<\n\tRemoteError,\n\t{ readonly brand: unique symbol }\n>()(\"RemoteError\", { cause: Schema.Cause(Schema.Unknown, Schema.Unknown) }) {}\n\n/** A network execution needs a stable logical identity across host restarts. */\nexport class MissingInstance extends Schema.TaggedError<\n\tMissingInstance,\n\t{ readonly brand: unique symbol }\n>()(\"MissingInstance\", {}) {\n\toverride get message() {\n\t\treturn \"A runner connection requires an instance or a loader entry id; set connect.instance when loading without Loader.\"\n\t}\n}\n\n/** Dispose completed, but Node still owns live handles; process-scope cleanup must terminate it. */\nexport class LocalTerminationTimeout extends Schema.TaggedError<\n\tLocalTerminationTimeout,\n\t{ readonly brand: unique symbol }\n>()(\"LocalTerminationTimeout\", {\n\tpid: Schema.optionalKey(Schema.Int),\n\tthreadId: Schema.optionalKey(Schema.Int),\n}) {\n\toverride get message() {\n\t\treturn this.threadId !== undefined\n\t\t\t? `Remote worker ${this.threadId} did not exit within one second after Dispose; terminating it`\n\t\t\t: `Remote process ${this.pid} did not exit within one second after Dispose; terminating it`\n\t}\n}\n\n/** A credential source failed; the original failure remains available. */\nexport class CredentialsError extends Schema.TaggedError<\n\tCredentialsError,\n\t{ readonly brand: unique symbol }\n>()(\"CredentialsError\", {\n\tcause: Schema.Cause(Schema.Unknown, Schema.Unknown),\n}) {}\n\nexport class AuthenticationFailed extends Schema.TaggedError<\n\tAuthenticationFailed,\n\t{ readonly brand: unique symbol }\n>()(\"AuthenticationFailed\", {\n\treason: Schema.Literals([\"missing\", \"invalid\"]),\n\tchallenge: Schema.optionalKey(Schema.String),\n\tcause: Schema.optionalKey(Schema.Cause(Schema.Unknown, Schema.Unknown)),\n}) {}\n"],"mappings":";;AAEA,IAAa,gBAAb,cAAmC,OAAO,YAGxC,CAAC,CAAC,iBAAiB;CACpB,KAAK,OAAO,OAAO,OAAO,GAAG;CAC7B,UAAU,OAAO,YAAY,OAAO,GAAG;CACvC,UAAU,OAAO,OAAO,OAAO,GAAG;CAClC,QAAQ,OAAO;CACf,aAAa,OAAO,MAAM,OAAO,SAAS,OAAO,OAAO;AACzD,CAAC,CAAC,CAAC;CACF,IAAa,UAAU;EACtB,OAAO,KAAK,aAAa,KAAA,IACtB,iBAAiB,KAAK,SAAS,wBAAwB,KAAK,SAAS,KACrE,iBAAiB,OAAO,OAAO,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,UAAU,GAAG,wBAAwB,KAAK,YAAY,SAAS;CAC3H;AACD;AACA,IAAa,iBAAb,cAAoC,OAAO,YAGzC,CAAC,CAAC,kBAAkB,EACrB,OAAO,OAAO,MAAM,OAAO,SAAS,OAAO,OAAO,EACnD,CAAC,CAAC,CAAC,CAAC;;AAGJ,IAAa,kBAAb,cAAqC,OAAO,YAG1C,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;CAC1B,IAAa,UAAU;EACtB,OAAO;CACR;AACD;;AAGA,IAAa,cAAb,cAAiC,OAAO,YAGtC,CAAC,CAAC,eAAe,EAAE,OAAO,OAAO,MAAM,OAAO,SAAS,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;;AAG7E,IAAa,kBAAb,cAAqC,OAAO,YAG1C,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;CAC1B,IAAa,UAAU;EACtB,OAAO;CACR;AACD;;AAGA,IAAa,0BAAb,cAA6C,OAAO,YAGlD,CAAC,CAAC,2BAA2B;CAC9B,KAAK,OAAO,YAAY,OAAO,GAAG;CAClC,UAAU,OAAO,YAAY,OAAO,GAAG;AACxC,CAAC,CAAC,CAAC;CACF,IAAa,UAAU;EACtB,OAAO,KAAK,aAAa,KAAA,IACtB,iBAAiB,KAAK,SAAS,iEAC/B,kBAAkB,KAAK,IAAI;CAC/B;AACD;;AAGA,IAAa,mBAAb,cAAsC,OAAO,YAG3C,CAAC,CAAC,oBAAoB,EACvB,OAAO,OAAO,MAAM,OAAO,SAAS,OAAO,OAAO,EACnD,CAAC,CAAC,CAAC,CAAC;AAEJ,IAAa,uBAAb,cAA0C,OAAO,YAG/C,CAAC,CAAC,wBAAwB;CAC3B,QAAQ,OAAO,SAAS,CAAC,WAAW,SAAS,CAAC;CAC9C,WAAW,OAAO,YAAY,OAAO,MAAM;CAC3C,OAAO,OAAO,YAAY,OAAO,MAAM,OAAO,SAAS,OAAO,OAAO,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"Errors.js","names":[],"sources":["../src/Errors.ts"],"sourcesContent":["import { Option, Schema } from \"effect\"\n\nexport class ProcessExited extends Schema.TaggedError<\n\tProcessExited,\n\t{ readonly brand: unique symbol }\n>()(\"ProcessExited\", {\n\tpid: Schema.Option(Schema.Int),\n\tthreadId: Schema.optionalKey(Schema.Int),\n\texitCode: Schema.NullOr(Schema.Int),\n\tstderr: Schema.String,\n\tstatusCause: Schema.Cause(Schema.Unknown, Schema.Unknown),\n}) {\n\toverride get message() {\n\t\treturn this.threadId !== undefined\n\t\t\t? `Remote worker ${this.threadId} exited unexpectedly (${this.exitCode})`\n\t\t\t: `Remote process${Option.isSome(this.pid) ? ` ${this.pid.value}` : \"\"} exited unexpectedly (${this.exitCode ?? \"signal\"})`\n\t}\n}\nexport class TransportError extends Schema.TaggedError<\n\tTransportError,\n\t{ readonly brand: unique symbol }\n>()(\"TransportError\", {\n\tcause: Schema.Cause(Schema.Unknown, Schema.Unknown),\n}) {}\n\n/** The remote export lease was withdrawn; host consumers must drain before Dispose. */\nexport class RemoteWithdrawn extends Schema.TaggedError<\n\tRemoteWithdrawn,\n\t{ readonly brand: unique symbol }\n>()(\"RemoteWithdrawn\", {}) {\n\toverride get message() {\n\t\treturn \"Remote services were withdrawn\"\n\t}\n}\n\n/** Infrastructure failure at the plugin boundary; the complete underlying cause remains inspectable. */\nexport class RemoteError extends Schema.TaggedError<\n\tRemoteError,\n\t{ readonly brand: unique symbol }\n>()(\"RemoteError\", { cause: Schema.Cause(Schema.Unknown, Schema.Unknown) }) {}\n\n/** A network execution needs a stable logical identity across host restarts. */\nexport class MissingInstance extends Schema.TaggedError<\n\tMissingInstance,\n\t{ readonly brand: unique symbol }\n>()(\"MissingInstance\", {}) {\n\toverride get message() {\n\t\treturn \"A runner connection requires an instance or a loader entry id; set connect.instance when loading without Loader.\"\n\t}\n}\n\n/** Dispose completed, but Node still owns live handles; process-scope cleanup must terminate it. */\nexport class LocalTerminationTimeout extends Schema.TaggedError<\n\tLocalTerminationTimeout,\n\t{ readonly brand: unique symbol }\n>()(\"LocalTerminationTimeout\", {\n\tpid: Schema.optionalKey(Schema.Int),\n\tthreadId: Schema.optionalKey(Schema.Int),\n}) {\n\toverride get message() {\n\t\treturn this.threadId !== undefined\n\t\t\t? `Remote worker ${this.threadId} did not exit within one second after Dispose; terminating it`\n\t\t\t: `Remote process ${this.pid} did not exit within one second after Dispose; terminating it`\n\t}\n}\n\n/** A credential source failed; the original failure remains available. */\nexport class CredentialsError extends Schema.TaggedError<\n\tCredentialsError,\n\t{ readonly brand: unique symbol }\n>()(\"CredentialsError\", {\n\tcause: Schema.Cause(Schema.Unknown, Schema.Unknown),\n}) {}\n\nexport class AuthenticationFailed extends Schema.TaggedError<\n\tAuthenticationFailed,\n\t{ readonly brand: unique symbol }\n>()(\"AuthenticationFailed\", {\n\treason: Schema.Literals([\"missing\", \"invalid\"]),\n\tchallenge: Schema.optionalKey(Schema.String),\n\tcause: Schema.optionalKey(Schema.Cause(Schema.Unknown, Schema.Unknown)),\n}) {}\n\n/** The authenticator could not reach what it needs to decide, such as its key set; the credential may still be valid. */\nexport class AuthenticatorUnavailable extends Schema.TaggedError<\n\tAuthenticatorUnavailable,\n\t{ readonly brand: unique symbol }\n>()(\"AuthenticatorUnavailable\", {\n\tcause: Schema.Cause(Schema.Unknown, Schema.Unknown),\n}) {}\n\n/** A remote entry could not be resolved or configured at the indicated field. */\nexport class RemoteEntryError extends Schema.TaggedError<\n\tRemoteEntryError,\n\t{ readonly brand: unique symbol }\n>()(\"RemoteEntryError\", {\n\tentry: Schema.Option(Schema.String),\n\tdirectory: Schema.Option(Schema.String),\n\tfield: Schema.String,\n\tcause: Schema.Cause(Schema.Unknown, Schema.Unknown),\n}) {\n\toverride get message() {\n\t\treturn `Remote entry ${Option.getOrElse(this.entry, () => \"<programmatic>\")} failed at ${this.field}`\n\t}\n}\n"],"mappings":";;AAEA,IAAa,gBAAb,cAAmC,OAAO,YAGxC,CAAC,CAAC,iBAAiB;CACpB,KAAK,OAAO,OAAO,OAAO,GAAG;CAC7B,UAAU,OAAO,YAAY,OAAO,GAAG;CACvC,UAAU,OAAO,OAAO,OAAO,GAAG;CAClC,QAAQ,OAAO;CACf,aAAa,OAAO,MAAM,OAAO,SAAS,OAAO,OAAO;AACzD,CAAC,CAAC,CAAC;CACF,IAAa,UAAU;EACtB,OAAO,KAAK,aAAa,KAAA,IACtB,iBAAiB,KAAK,SAAS,wBAAwB,KAAK,SAAS,KACrE,iBAAiB,OAAO,OAAO,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,UAAU,GAAG,wBAAwB,KAAK,YAAY,SAAS;CAC3H;AACD;AACA,IAAa,iBAAb,cAAoC,OAAO,YAGzC,CAAC,CAAC,kBAAkB,EACrB,OAAO,OAAO,MAAM,OAAO,SAAS,OAAO,OAAO,EACnD,CAAC,CAAC,CAAC,CAAC;;AAGJ,IAAa,kBAAb,cAAqC,OAAO,YAG1C,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;CAC1B,IAAa,UAAU;EACtB,OAAO;CACR;AACD;;AAGA,IAAa,cAAb,cAAiC,OAAO,YAGtC,CAAC,CAAC,eAAe,EAAE,OAAO,OAAO,MAAM,OAAO,SAAS,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;;AAG7E,IAAa,kBAAb,cAAqC,OAAO,YAG1C,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;CAC1B,IAAa,UAAU;EACtB,OAAO;CACR;AACD;;AAGA,IAAa,0BAAb,cAA6C,OAAO,YAGlD,CAAC,CAAC,2BAA2B;CAC9B,KAAK,OAAO,YAAY,OAAO,GAAG;CAClC,UAAU,OAAO,YAAY,OAAO,GAAG;AACxC,CAAC,CAAC,CAAC;CACF,IAAa,UAAU;EACtB,OAAO,KAAK,aAAa,KAAA,IACtB,iBAAiB,KAAK,SAAS,iEAC/B,kBAAkB,KAAK,IAAI;CAC/B;AACD;;AAGA,IAAa,mBAAb,cAAsC,OAAO,YAG3C,CAAC,CAAC,oBAAoB,EACvB,OAAO,OAAO,MAAM,OAAO,SAAS,OAAO,OAAO,EACnD,CAAC,CAAC,CAAC,CAAC;AAEJ,IAAa,uBAAb,cAA0C,OAAO,YAG/C,CAAC,CAAC,wBAAwB;CAC3B,QAAQ,OAAO,SAAS,CAAC,WAAW,SAAS,CAAC;CAC9C,WAAW,OAAO,YAAY,OAAO,MAAM;CAC3C,OAAO,OAAO,YAAY,OAAO,MAAM,OAAO,SAAS,OAAO,OAAO,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC;;AAGJ,IAAa,2BAAb,cAA8C,OAAO,YAGnD,CAAC,CAAC,4BAA4B,EAC/B,OAAO,OAAO,MAAM,OAAO,SAAS,OAAO,OAAO,EACnD,CAAC,CAAC,CAAC,CAAC;;AAGJ,IAAa,mBAAb,cAAsC,OAAO,YAG3C,CAAC,CAAC,oBAAoB;CACvB,OAAO,OAAO,OAAO,OAAO,MAAM;CAClC,WAAW,OAAO,OAAO,OAAO,MAAM;CACtC,OAAO,OAAO;CACd,OAAO,OAAO,MAAM,OAAO,SAAS,OAAO,OAAO;AACnD,CAAC,CAAC,CAAC;CACF,IAAa,UAAU;EACtB,OAAO,gBAAgB,OAAO,UAAU,KAAK,aAAa,gBAAgB,EAAE,aAAa,KAAK;CAC/F;AACD"}
@@ -1,9 +1,19 @@
1
- import { n as close, t as ReleaseInterrupted } from "./release-BY4Mlluy.js";
1
+ import { n as close, t as ReleaseInterrupted } from "./release-DfZPuIcK.js";
2
+ import { f as CleanupError } from "./Graft-B71CPA2Y.js";
2
3
  import { Array, Cause, Data, Deferred, Effect, Exit, Fiber, FiberSet, Ref, Schema, Scope, TxRef } from "effect";
4
+ // packages/remote/src/internal/cleanup.ts
5
+ /** Finalizers have no typed failure channel. Keep reasons and their annotations flat. */
6
+ const cleanupCause = (cause) => Cause.fromReasons(Array.flatMap(cause.reasons, (reason) => {
7
+ const error = reason._tag === "Fail" ? reason.error : reason._tag === "Die" ? reason.defect : void 0;
8
+ if (Schema.is(CleanupError)(error)) return Array.map(cleanupCause(error.cause).reasons, (inner) => inner.annotate(Cause.reasonAnnotations(reason)));
9
+ return [reason._tag === "Fail" ? Cause.makeDieReason(reason.error).annotate(Cause.reasonAnnotations(reason)) : reason];
10
+ }));
11
+ /** Assembly children close before the entry reports their cleanup as its own result. */
12
+ const children = Effect.acquireRelease(Scope.make(), (scope, exit) => close(scope, exit).pipe(Effect.catchCause((cause) => Effect.failCause(cleanupCause(cause)))));
3
13
  // packages/remote/src/internal/FailureGroup.ts
4
14
  const State = Data.taggedEnum();
5
15
  /** One owner for first failure, transaction wakeups, and interruption of sibling work. */
6
- const make = () => Effect.gen(function* () {
16
+ const make = Effect.fnUntraced(function* () {
7
17
  const fibers = yield* FiberSet.make();
8
18
  const state = yield* TxRef.make(State.Open());
9
19
  const failures = yield* Ref.make(Cause.empty);
@@ -37,7 +47,7 @@ const make = () => Effect.gen(function* () {
37
47
  const failure = Effect.tx(check.pipe(Effect.andThen(Effect.txRetry)));
38
48
  const failCause = (cause) => FiberSet.run(fibers, observe(Effect.failCause(cause))).pipe(Effect.asVoid);
39
49
  const close$1 = TxRef.update(state, (s) => s._tag === "Open" ? State.Closed() : s).pipe(Effect.andThen(FiberSet.clear(fibers)), Effect.andThen(Ref.get(cleanup)), Effect.flatMap((cause) => cause.reasons.length > 0 ? Effect.failCause(cause) : Effect.void), Effect.uninterruptible);
40
- yield* Effect.addFinalizer(() => close$1.pipe(Effect.orDie));
50
+ yield* Effect.addFinalizer(() => close$1.pipe(Effect.catchCause((cause) => Effect.failCause(cleanupCause(cause)))));
41
51
  return {
42
52
  await: failure,
43
53
  check,
@@ -50,4 +60,4 @@ const make = () => Effect.gen(function* () {
50
60
  close: close$1
51
61
  };
52
62
  });
53
- export { make as t };
63
+ export { children as n, cleanupCause as r, make as t };
@@ -14,7 +14,7 @@ var EndOfStream = class extends Schema.TaggedError()("RunnerEndOfStream", {}) {
14
14
  const maxPayload = 1048576;
15
15
  const invalid = (detail) => FrameError.make({ detail });
16
16
  /** Version 2 carries only channel and length; request admission belongs to port. */
17
- const encode = (frame) => Effect.gen(function* () {
17
+ const encode = Effect.fnUntraced(function* (frame) {
18
18
  if (frame.payload.byteLength > 1048576) return yield* invalid("Runner frame exceeds the payload limit");
19
19
  const bytes = new Uint8Array(8 + frame.payload.byteLength);
20
20
  bytes.set([