@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/README.md CHANGED
@@ -2,10 +2,10 @@
2
2
 
3
3
  English | [简体中文](README.zh-CN.md) | [繁體中文](README.zh-TW.md)
4
4
 
5
- Run a Graft plugin in a child process, a Node worker, or on a runner. Declare
6
- cross-boundary services in a contract; consumers keep their usual interfaces.
7
- The host imports only the contract, whose `module` points to the implementation.
8
- Build both to JavaScript.
5
+ Run a Graft plugin somewhere else: in a child process, in a Node worker, or on
6
+ another machine through a runner. The plugins that use it keep injecting its
7
+ [services](https://graftland.github.io/graft/services/) as usual; only its
8
+ [config entry](https://graftland.github.io/graft/config-file/) changes.
9
9
 
10
10
  ```yaml
11
11
  - id: greeter
@@ -16,62 +16,26 @@ Build both to JavaScript.
16
16
  config: { greeting: Hello }
17
17
  ```
18
18
 
19
- Use `graft start`, or load this TypeScript plugin with `Graft.plugin(entry)`:
19
+ Remote isolates execution, not permissions. For a permission boundary, run the
20
+ runner in a container or a VM.
20
21
 
21
- ```ts
22
- import * as Remote from "@graftland/plugin-remote"
23
- import { contract } from "./contract.js"
22
+ ## Documentation
24
23
 
25
- export default Remote.plugin(contract, {
26
- contractModule: new URL("./contract.js", import.meta.url).href,
27
- connect: { worker: {} },
28
- config: { greeting: "Hello" },
29
- })
30
- ```
31
-
32
- TS and YAML share `connect`: local, worker, url (ws/wss), unix, or command. Auth
33
- is mtls, bearer, jwt, none, or a third-party `{ name, config }` reference. No
34
- separate capability entries or service-key strings are needed. TS credentials
35
- can also be Effects or `{ inject, read }`. A custom host supplies
36
- `NodeServices.layer` and `SecureRandom.layerWebCrypto` to Graft.
37
-
38
- A runner configuration:
39
-
40
- ```yaml
41
- - name: remote/runner
42
- config:
43
- root: ./installation
44
- state: ./state
45
- listen:
46
- - url: wss://0.0.0.0:7443
47
- cert: ./certs/server.crt
48
- key: ./certs/server.key
49
- auth: { mtls: { ca: ./certs/ca.crt } }
50
- ```
51
-
52
- Run `graft-remote serve --config runner.yml`. Install its plugin packages in
53
- advance, preserve the state directory, and supervise the runner and descendants.
54
- `graft-remote certificates` can issue certificates. A saved host entry id names
55
- the instance by default; the runner confirms old-process exit before replacement
56
- and advances generation. Read the guide for leases and three stopping outcomes.
24
+ - [Remote](https://graftland.github.io/graft/remote/overview/): what Remote does
25
+ and its limits.
26
+ - [Host entries](https://graftland.github.io/graft/remote/hosts/): contracts,
27
+ `remote` entries, services and errors.
28
+ - [Runners](https://graftland.github.io/graft/remote/runners/): run plugins on
29
+ another machine with `graft start runner.yml`.
30
+ - [Transport and authentication](https://graftland.github.io/graft/remote/transport-auth/)
31
+ - [Replacement and stopping](https://graftland.github.io/graft/remote/lifecycle/)
32
+ - [Capability plugins](https://graftland.github.io/graft/remote/capabilities/)
33
+ - [API reference](https://graftland.github.io/graft/reference/plugin-remote/readme/)
57
34
 
58
- Workers do not isolate permissions. Unix relies on file permissions; stdio
59
- relies on SSH or another external mechanism. Use wss for tokens; stolen tokens
60
- can be replayed while valid. JWT is checked once at upgrade. Restart the host
61
- after changing a contract; contract imports do not participate in HMR.
35
+ ## Samples
62
36
 
63
- Public APIs: root default, `plugin`, `Contract`, `Instance`, public errors;
64
- `/runner`; `/Auth`, `/Transport`, `/Errors`, `/Contract`, `/Testing`; and
65
- capability modules under `host/*` and `runner/*`. The executable paths
66
- `/internal/bin`, `/internal/worker`, `/internal/watchdog` are **not public
67
- APIs**.
68
-
69
- - [Remote](https://graftland.github.io/graft/remote/overview/)
70
- - [Capabilities](https://graftland.github.io/graft/remote/capabilities/)
71
37
  - [06 · Remote](../../samples/06-remote/)
72
38
  - [Chat bot](../../samples/chat-bot/)
73
39
 
74
- This workspace package remains private.
75
-
76
40
  Part of [Graft](https://github.com/graftland/graft). Licensed under
77
41
  [Apache 2.0](https://github.com/graftland/graft/blob/main/LICENSE).
package/README.zh-CN.md CHANGED
@@ -1,10 +1,9 @@
1
1
  # @graftland/plugin-remote
2
2
 
3
- English | [简体中文](README.zh-CN.md) | [繁體中文](README.zh-TW.md)
3
+ [English](README.md) | 简体中文 | [繁體中文](README.zh-TW.md)
4
4
 
5
- 在子进程、Node
6
- worker 或 runner 上运行 Graft 插件。契约声明跨边界的服务,消费者保留原来的接口。宿主只导入契约,契约的
7
- `module` 指向实现;先把两者构建成 JavaScript。
5
+ 把 Graft 插件放到别处运行:子进程、Node
6
+ worker,或通过 runner 放到另一台机器上。使用它的插件照常注入它的[服务](https://graftland.github.io/graft/zh-cn/services/),要改的只有它的[配置条目](https://graftland.github.io/graft/zh-cn/config-file/)。
8
7
 
9
8
  ```yaml
10
9
  - id: greeter
@@ -15,57 +14,24 @@ worker 或 runner 上运行 Graft 插件。契约声明跨边界的服务,消
15
14
  config: { greeting: Hello }
16
15
  ```
17
16
 
18
- 运行 `graft start`,或用 `Graft.plugin(entry)` 加载 TS 插件:
17
+ Remote 隔离的是执行,不是权限。需要权限边界时,请把 runner 放进容器或虚拟机。
19
18
 
20
- ```ts
21
- import * as Remote from "@graftland/plugin-remote"
22
- import { contract } from "./contract.js"
19
+ ## 文档
23
20
 
24
- export default Remote.plugin(contract, {
25
- contractModule: new URL("./contract.js", import.meta.url).href,
26
- connect: { worker: {} },
27
- config: { greeting: "Hello" },
28
- })
29
- ```
30
-
31
- TS 和 YAML 共用
32
- `connect`:local、worker、url(ws/wss)、unix、command。认证可以选 mtls、bearer、jwt、none,或第三方
33
- `{ name, config }`
34
- 引用。不必另写能力 entry 或服务键字符串。TS 凭证还允许 Effect 或
35
- `{ inject, read }`。自定义宿主需为 Graft 提供 `NodeServices.layer` 和
36
- `SecureRandom.layerWebCrypto`。
37
-
38
- runner 配置:
39
-
40
- ```yaml
41
- - name: remote/runner
42
- config:
43
- root: ./installation
44
- state: ./state
45
- listen:
46
- - url: wss://0.0.0.0:7443
47
- cert: ./certs/server.crt
48
- key: ./certs/server.key
49
- auth: { mtls: { ca: ./certs/ca.crt } }
50
- ```
51
-
52
- 运行
53
- `graft-remote serve --config runner.yml`。提前安装插件包,保留状态目录,并由外部 supervisor 管理 runner 及后代进程。`graft-remote certificates`
54
- 可生成证书。宿主保存的条目 id 默认就是实例名;runner 确认旧进程退出后才接纳替换,并递增 generation。租约和三种停止结果见指南。
55
-
56
- worker 不隔离权限;unix 依赖文件权限;stdio 依赖 SSH 等外部机制。token 建议走 wss,被盗后在有效期内可以重放。JWT 只在 upgrade 验证一次。修改契约后须重启宿主,契约导入不参与 HMR。
57
-
58
- 公开 API:包根 default、`plugin`、`Contract`、`Instance`、公开错误;`/runner`;`/Auth`、`/Transport`、`/Errors`、`/Contract`、`/Testing`;以及
59
- `host/*`、`runner/*`
60
- 能力模块。`/internal/bin`、`/internal/worker`、`/internal/watchdog`
61
- 只是可执行文件路径,**不是公开 API**。
21
+ - [Remote](https://graftland.github.io/graft/zh-cn/remote/overview/):Remote 做什么,有哪些局限。
22
+ - [宿主条目](https://graftland.github.io/graft/zh-cn/remote/hosts/):契约、`remote`
23
+ 条目、服务与错误。
24
+ - [Runner](https://graftland.github.io/graft/zh-cn/remote/runners/):用
25
+ `graft start runner.yml` 在另一台机器上运行插件。
26
+ - [传输与认证](https://graftland.github.io/graft/zh-cn/remote/transport-auth/)
27
+ - [替换与停止](https://graftland.github.io/graft/zh-cn/remote/lifecycle/)
28
+ - [能力插件](https://graftland.github.io/graft/zh-cn/remote/capabilities/)
29
+ - [API 参考](https://graftland.github.io/graft/reference/plugin-remote/readme/)
62
30
 
63
- - [Remote](https://graftland.github.io/graft/zh-cn/remote/overview/)
64
- - [Capabilities](https://graftland.github.io/graft/zh-cn/remote/capabilities/)
65
- - [06 · Remote](../../samples/06-remote/)
66
- - [Chat bot](../../samples/chat-bot/)
31
+ ## 示例
67
32
 
68
- 本工作区包仍为 private。
33
+ - [06 · 远程插件](../../samples/06-remote/README.zh-CN.md)
34
+ - [聊天机器人](../../samples/chat-bot/README.zh-CN.md)
69
35
 
70
36
  Part of [Graft](https://github.com/graftland/graft). Licensed under
71
37
  [Apache 2.0](https://github.com/graftland/graft/blob/main/LICENSE).
package/README.zh-TW.md CHANGED
@@ -1,10 +1,9 @@
1
1
  # @graftland/plugin-remote
2
2
 
3
- English | [简体中文](README.zh-CN.md) | [繁體中文](README.zh-TW.md)
3
+ [English](README.md) | [简体中文](README.zh-CN.md) | 繁體中文
4
4
 
5
- 在子行程、Node
6
- worker 或 runner 執行 Graft 外掛。契約宣告跨邊界的服務,消費者保留原來的介面。宿主只匯入契約,契約的
7
- `module` 指向實作;先將兩者建置為 JavaScript。
5
+ 把 Graft 外掛放到別處執行:子行程、Node
6
+ worker,或透過 runner 放到另一台機器上。使用它的外掛照常注入它的[服務](https://graftland.github.io/graft/zh-tw/services/),需要改的只有它的[設定項目](https://graftland.github.io/graft/zh-tw/config-file/)。
8
7
 
9
8
  ```yaml
10
9
  - id: greeter
@@ -15,57 +14,24 @@ worker 或 runner 執行 Graft 外掛。契約宣告跨邊界的服務,消費
15
14
  config: { greeting: Hello }
16
15
  ```
17
16
 
18
- 執行 `graft start`,或以 `Graft.plugin(entry)` 載入 TS 外掛:
17
+ Remote 隔離的是執行,不是權限。需要權限邊界時,請把 runner 放進容器或虛擬機器。
19
18
 
20
- ```ts
21
- import * as Remote from "@graftland/plugin-remote"
22
- import { contract } from "./contract.js"
19
+ ## 文件
23
20
 
24
- export default Remote.plugin(contract, {
25
- contractModule: new URL("./contract.js", import.meta.url).href,
26
- connect: { worker: {} },
27
- config: { greeting: "Hello" },
28
- })
29
- ```
30
-
31
- TS 與 YAML 共用
32
- `connect`:local、worker、url(ws/wss)、unix、command。驗證可選 mtls、bearer、jwt、none,或第三方
33
- `{ name, config }`
34
- 引用。不必另寫能力 entry 或服務鍵字串。TS 憑證也允許 Effect 或
35
- `{ inject, read }`。自訂宿主須為 Graft 提供 `NodeServices.layer` 與
36
- `SecureRandom.layerWebCrypto`。
37
-
38
- runner 設定:
39
-
40
- ```yaml
41
- - name: remote/runner
42
- config:
43
- root: ./installation
44
- state: ./state
45
- listen:
46
- - url: wss://0.0.0.0:7443
47
- cert: ./certs/server.crt
48
- key: ./certs/server.key
49
- auth: { mtls: { ca: ./certs/ca.crt } }
50
- ```
51
-
52
- 執行
53
- `graft-remote serve --config runner.yml`。預先安裝外掛套件,保留狀態目錄,並由外部 supervisor 管理 runner 及後代行程。`graft-remote certificates`
54
- 可產生憑證。宿主保存的條目 id 預設就是實例名稱;runner 確認舊行程退出後才接受替換,並遞增 generation。租約與三種停止結果見指南。
55
-
56
- worker 不隔離權限;unix 依賴檔案權限;stdio 依賴 SSH 等外部機制。token 建議走 wss,被竊後在有效期內可以重放。JWT 只在 upgrade 驗證一次。修改契約後須重啟宿主,契約匯入不參與 HMR。
57
-
58
- 公開 API:套件根目錄 default、`plugin`、`Contract`、`Instance`、公開錯誤;`/runner`;`/Auth`、`/Transport`、`/Errors`、`/Contract`、`/Testing`;以及
59
- `host/*`、`runner/*`
60
- 能力模組。`/internal/bin`、`/internal/worker`、`/internal/watchdog`
61
- 僅是執行檔路徑,**不是公開 API**。
21
+ - [Remote](https://graftland.github.io/graft/zh-tw/remote/overview/):Remote 做什麼,以及它的限制。
22
+ - [宿主設定項目](https://graftland.github.io/graft/zh-tw/remote/hosts/):契約、`remote`
23
+ 設定項目、服務與錯誤。
24
+ - [Runner](https://graftland.github.io/graft/zh-tw/remote/runners/):用
25
+ `graft start runner.yml` 在另一台機器上執行外掛。
26
+ - [傳輸與驗證](https://graftland.github.io/graft/zh-tw/remote/transport-auth/)
27
+ - [替換與停止](https://graftland.github.io/graft/zh-tw/remote/lifecycle/)
28
+ - [能力外掛](https://graftland.github.io/graft/zh-tw/remote/capabilities/)
29
+ - [API 參考](https://graftland.github.io/graft/reference/plugin-remote/readme/)
62
30
 
63
- - [Remote](https://graftland.github.io/graft/zh-tw/remote/overview/)
64
- - [Capabilities](https://graftland.github.io/graft/zh-tw/remote/capabilities/)
65
- - [06 · Remote](../../samples/06-remote/)
66
- - [Chat bot](../../samples/chat-bot/)
31
+ ## 範例
67
32
 
68
- 此工作區套件仍為 private。
33
+ - [06 · 遠端外掛](../../samples/06-remote/README.zh-TW.md)
34
+ - [聊天機器人](../../samples/chat-bot/README.zh-TW.md)
69
35
 
70
36
  Part of [Graft](https://github.com/graftland/graft). Licensed under
71
37
  [Apache 2.0](https://github.com/graftland/graft/blob/main/LICENSE).
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"Auth.d.ts","names":[],"sources":["../src/Auth.ts"],"mappings":";;iBAeiB;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 {\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
+ {"version":3,"file":"Auth.js","names":[],"sources":["../src/Auth.ts"],"sourcesContent":["/** Credentials and authenticated identities shared by transport plugins. */\nimport {\n\tContext,\n\ttype Effect,\n\ttype Option,\n\ttype Redacted,\n\ttype Scope,\n} from \"effect\"\n\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":";;;AAoEA,IAAa,cAAb,cAAiC,QAAQ,QAAqC,CAAC,CAC9E,2CACD,CAAC,CAAC,CAAC;AACH,IAAa,gBAAb,cAAmC,QAAQ,QAGzC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC"}