@yourrealm/sdk 0.0.0-alpha.1378.ce03c8dc

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 (230) hide show
  1. package/LICENSE-EXCEPTION +26 -0
  2. package/README.md +34 -0
  3. package/dist/chunk-3R6KEFOI.js +22 -0
  4. package/dist/chunk-67BDAMYX.js +376 -0
  5. package/dist/chunk-AITGS27R.js +139 -0
  6. package/dist/chunk-CMAEHQ4F.js +6 -0
  7. package/dist/chunk-MLKGABMK.js +9 -0
  8. package/dist/chunk-O3UIK34B.js +1430 -0
  9. package/dist/chunk-VHTUSZUX.js +176 -0
  10. package/dist/cli.js +9006 -0
  11. package/dist/docker.js +54 -0
  12. package/dist/index.js +1053 -0
  13. package/dist/ingress.js +436 -0
  14. package/dist/jsx-runtime.js +2 -0
  15. package/dist/preact.js +22 -0
  16. package/dist/service-url.js +11 -0
  17. package/dist/services.js +213 -0
  18. package/dist/test.js +5069 -0
  19. package/dist/ui.js +254 -0
  20. package/dist/worker-protocol.js +89 -0
  21. package/package.json +112 -0
  22. package/src/app-icon.ts +74 -0
  23. package/src/apply.ts +52 -0
  24. package/src/bundle-ui.ts +211 -0
  25. package/src/bundle.ts +546 -0
  26. package/src/cli/build-dev-landing.ts +84 -0
  27. package/src/cli/build-install-panel.ts +90 -0
  28. package/src/cli/build-runtime.ts +133 -0
  29. package/src/cli/build.ts +63 -0
  30. package/src/cli/dev.ts +107 -0
  31. package/src/cli/down.ts +60 -0
  32. package/src/cli/main.ts +56 -0
  33. package/src/cli/test.ts +61 -0
  34. package/src/cli/validate.ts +37 -0
  35. package/src/compile.ts +100 -0
  36. package/src/create-app.ts +982 -0
  37. package/src/deep-merge.ts +33 -0
  38. package/src/dev/fixture.ts +48 -0
  39. package/src/dev/install-handler.ts +383 -0
  40. package/src/dev/server.ts +968 -0
  41. package/src/dev/stack.ts +108 -0
  42. package/src/dev/state.ts +159 -0
  43. package/src/docker.ts +96 -0
  44. package/src/errors.ts +61 -0
  45. package/src/factory.ts +481 -0
  46. package/src/garage.ts +56 -0
  47. package/src/generator/hash.ts +6 -0
  48. package/src/generator/resolve-refs.ts +207 -0
  49. package/src/grants-builder.ts +100 -0
  50. package/src/grants.ts +260 -0
  51. package/src/home-api.ts +172 -0
  52. package/src/home-cookie.ts +10 -0
  53. package/src/home-registry.ts +120 -0
  54. package/src/home.ts +187 -0
  55. package/src/host-registry.ts +143 -0
  56. package/src/http-header.ts +20 -0
  57. package/src/identifiers.ts +49 -0
  58. package/src/index.ts +66 -0
  59. package/src/info.ts +64 -0
  60. package/src/ini.ts +50 -0
  61. package/src/json.ts +14 -0
  62. package/src/jsx-runtime/index.ts +5 -0
  63. package/src/keys.ts +29 -0
  64. package/src/mysql.ts +56 -0
  65. package/src/pack-build.ts +108 -0
  66. package/src/pack.ts +115 -0
  67. package/src/peer-registry.ts +121 -0
  68. package/src/peer-world.ts +117 -0
  69. package/src/permission-meta.ts +116 -0
  70. package/src/permissions.ts +108 -0
  71. package/src/pkg-root.ts +34 -0
  72. package/src/postgres.ts +79 -0
  73. package/src/preact/index.ts +27 -0
  74. package/src/redis.ts +43 -0
  75. package/src/ref.ts +271 -0
  76. package/src/remote-registry.ts +33 -0
  77. package/src/required-host-kinds.ts +110 -0
  78. package/src/resolve-context.ts +111 -0
  79. package/src/resolve.ts +471 -0
  80. package/src/runtime/docker/compose/compose-schema.ts +118 -0
  81. package/src/runtime/docker/compose/convert-to-docker-compose.ts +278 -0
  82. package/src/runtime/docker/compose/default-hardening.ts +21 -0
  83. package/src/runtime/docker/compose/effects.ts +107 -0
  84. package/src/runtime/docker/compose/index.ts +17 -0
  85. package/src/runtime/docker/compose/labels.ts +39 -0
  86. package/src/runtime/docker/compose/types.ts +78 -0
  87. package/src/runtime/docker/home-proxy-server/index.ts +177 -0
  88. package/src/runtime/docker/home-proxy-server/protocol.ts +53 -0
  89. package/src/runtime/docker/ingress/build-config.ts +819 -0
  90. package/src/runtime/docker/ingress/index.ts +16 -0
  91. package/src/runtime/docker/ingress/types.ts +182 -0
  92. package/src/runtime/docker/log-frames.ts +121 -0
  93. package/src/runtime/docker/logs-server/index.ts +366 -0
  94. package/src/runtime/docker/spawn-server/context-key.ts +82 -0
  95. package/src/runtime/docker/spawn-server/index.ts +492 -0
  96. package/src/runtime/docker/spawn-server/protocol.ts +70 -0
  97. package/src/runtime/docker/spawn-server/spec.ts +122 -0
  98. package/src/runtime/docker/stats-server/disks.ts +161 -0
  99. package/src/runtime/docker/stats-server/index.ts +322 -0
  100. package/src/runtime/home-client/index.ts +71 -0
  101. package/src/runtime/log-line.ts +24 -0
  102. package/src/runtime/logs-client/index.ts +175 -0
  103. package/src/runtime/spawn-client/index.ts +93 -0
  104. package/src/runtime/spawn-client/kaniko.ts +79 -0
  105. package/src/runtime/stats-client/index.ts +65 -0
  106. package/src/runtime/stats-sample.ts +95 -0
  107. package/src/safe-json.ts +37 -0
  108. package/src/sandbox.ts +1209 -0
  109. package/src/schema/build-apps.ts +38 -0
  110. package/src/schema/home.ts +217 -0
  111. package/src/schema/host.ts +792 -0
  112. package/src/schema/inputs.ts +26 -0
  113. package/src/schema/nodes.ts +75 -0
  114. package/src/schema/peer.ts +400 -0
  115. package/src/schema/public-domain.ts +116 -0
  116. package/src/schema/remote.ts +74 -0
  117. package/src/security.ts +594 -0
  118. package/src/serialize.ts +21 -0
  119. package/src/service-definition.ts +284 -0
  120. package/src/service-url.ts +64 -0
  121. package/src/service.ts +39 -0
  122. package/src/services/index.ts +5 -0
  123. package/src/shared.ts +65 -0
  124. package/src/speculative-silo.ts +96 -0
  125. package/src/stable-secret.ts +14 -0
  126. package/src/surfaces.ts +264 -0
  127. package/src/tailwind-bin.ts +56 -0
  128. package/src/test/boot.ts +192 -0
  129. package/src/test/compile.ts +501 -0
  130. package/src/test/describe.ts +117 -0
  131. package/src/test/index.ts +11 -0
  132. package/src/test/ingress-fixture.ts +37 -0
  133. package/src/test/types.ts +318 -0
  134. package/src/trusted-headers.ts +79 -0
  135. package/src/types.ts +126 -0
  136. package/src/ui/components/aside.tsx +96 -0
  137. package/src/ui/components/badge.tsx +42 -0
  138. package/src/ui/components/button.tsx +59 -0
  139. package/src/ui/components/card.tsx +106 -0
  140. package/src/ui/components/checkbox.tsx +37 -0
  141. package/src/ui/components/code-block.tsx +29 -0
  142. package/src/ui/components/combobox.tsx +119 -0
  143. package/src/ui/components/config-field.tsx +284 -0
  144. package/src/ui/components/dialog.tsx +137 -0
  145. package/src/ui/components/domain-editor.tsx +317 -0
  146. package/src/ui/components/domain-list.ts +205 -0
  147. package/src/ui/components/dropdown-menu.tsx +73 -0
  148. package/src/ui/components/empty-state.tsx +51 -0
  149. package/src/ui/components/highlight.ts +59 -0
  150. package/src/ui/components/icons.tsx +101 -0
  151. package/src/ui/components/image-posture.tsx +85 -0
  152. package/src/ui/components/input.tsx +28 -0
  153. package/src/ui/components/label.tsx +16 -0
  154. package/src/ui/components/line-chart.tsx +113 -0
  155. package/src/ui/components/page.tsx +39 -0
  156. package/src/ui/components/permission-row.tsx +262 -0
  157. package/src/ui/components/permission-section.tsx +51 -0
  158. package/src/ui/components/pie-chart.tsx +245 -0
  159. package/src/ui/components/schema-block.tsx +60 -0
  160. package/src/ui/components/separator.tsx +42 -0
  161. package/src/ui/components/sheet.tsx +130 -0
  162. package/src/ui/components/sidebar.tsx +650 -0
  163. package/src/ui/components/silo-picker.tsx +510 -0
  164. package/src/ui/components/skeleton.tsx +13 -0
  165. package/src/ui/components/sonner.tsx +33 -0
  166. package/src/ui/components/switch.tsx +58 -0
  167. package/src/ui/components/table-view.ts +219 -0
  168. package/src/ui/components/table.tsx +506 -0
  169. package/src/ui/components/tabs.tsx +59 -0
  170. package/src/ui/components/timeago.tsx +84 -0
  171. package/src/ui/components/tooltip.tsx +56 -0
  172. package/src/ui/components.json +21 -0
  173. package/src/ui/dev/dev-shell.tsx +145 -0
  174. package/src/ui/home/home-grid.tsx +177 -0
  175. package/src/ui/hooks/use-mobile.ts +19 -0
  176. package/src/ui/index.ts +189 -0
  177. package/src/ui/install/adapter.ts +193 -0
  178. package/src/ui/install/deploy-targets-picker.tsx +185 -0
  179. package/src/ui/install/install-app-panel.tsx +912 -0
  180. package/src/ui/install/install-error.tsx +62 -0
  181. package/src/ui/install/perms-inactive.ts +50 -0
  182. package/src/ui/install/required-fields.ts +37 -0
  183. package/src/ui/install/tabs-form.tsx +557 -0
  184. package/src/ui/tokens.css +279 -0
  185. package/src/ui/utils.ts +78 -0
  186. package/src/ui-error.ts +139 -0
  187. package/src/ui-runtime/dev-landing-entry.tsx +258 -0
  188. package/src/ui-runtime/index.ts +83 -0
  189. package/src/ui-runtime/install-entry.tsx +119 -0
  190. package/src/ui-runtime/mount.ts +367 -0
  191. package/src/ui-runtime/runtime.css +56 -0
  192. package/src/ui-surface.ts +451 -0
  193. package/src/valkey.ts +43 -0
  194. package/src/worker/extract-tar.ts +125 -0
  195. package/src/worker/identity.ts +183 -0
  196. package/src/worker/index.ts +16 -0
  197. package/src/worker/public-ip.ts +92 -0
  198. package/src/worker/queue.ts +54 -0
  199. package/src/worker/reconcile.ts +127 -0
  200. package/src/worker/start-worker.ts +227 -0
  201. package/src/worker/ui-proxy.ts +335 -0
  202. package/src/worker/uplink.ts +523 -0
  203. package/src/worker/validate.ts +34 -0
  204. package/src/worker/verify-relay.ts +102 -0
  205. package/src/worker-protocol/app-dirs.ts +94 -0
  206. package/src/worker-protocol/home-proxy-paths.ts +76 -0
  207. package/src/worker-protocol/index.ts +55 -0
  208. package/src/worker-protocol/ingress.ts +166 -0
  209. package/src/worker-protocol/logs-socket-path.ts +50 -0
  210. package/src/worker-protocol/networks.ts +39 -0
  211. package/src/worker-protocol/node-version.ts +70 -0
  212. package/src/worker-protocol/silo-paths.ts +114 -0
  213. package/src/worker-protocol/spawn-paths.ts +165 -0
  214. package/src/worker-protocol/stats-socket-path.ts +40 -0
  215. package/src/worker-protocol/update-files.ts +77 -0
  216. package/src/worker-protocol/uplink/constants.ts +86 -0
  217. package/src/worker-protocol/uplink/errors.ts +61 -0
  218. package/src/worker-protocol/uplink/frame.ts +114 -0
  219. package/src/worker-protocol/uplink/identity.ts +40 -0
  220. package/src/worker-protocol/uplink/index.ts +63 -0
  221. package/src/worker-protocol/uplink/methods.ts +462 -0
  222. package/src/worker-protocol/uplink/mux.ts +646 -0
  223. package/src/worker-protocol/uplink/protocol.ts +11 -0
  224. package/src/worker-protocol/uplink/rpc.ts +309 -0
  225. package/src/worker-protocol/uplink/session.ts +540 -0
  226. package/src/worker-protocol/uplink/test-support.ts +188 -0
  227. package/src/worker-protocol/worker-mount.ts +27 -0
  228. package/src/worker-protocol/worker-state.ts +190 -0
  229. package/src/xml.ts +49 -0
  230. package/src/yaml.ts +15 -0
@@ -0,0 +1,176 @@
1
+ // src/identifiers.ts
2
+ import { z } from "zod";
3
+ var nameSchema = z.string().regex(
4
+ /^[a-z][a-z0-9-]*$/,
5
+ "Must be lowercase alphanumeric with hyphens, starting with a letter"
6
+ );
7
+ var domainSchema = z.string().regex(/^[a-zA-Z0-9.*-]+$/, "Invalid domain name");
8
+ var hostKey = z.string().regex(/^[a-zA-Z0-9.-]+(:[0-9]+)?$/, "Invalid registry host");
9
+ var networkSchema = z.string().brand();
10
+
11
+ // src/worker-protocol/logs-socket-path.ts
12
+ var REALM_LOGS_DIR = "/opt/realm/worker/logs";
13
+ var REALM_LOGS_SOCKET = `${REALM_LOGS_DIR}/logs.sock`;
14
+ var REALM_LOGS_MOUNT = {
15
+ hostPath: REALM_LOGS_DIR,
16
+ containerPath: "/run/realm/logs",
17
+ readOnly: true
18
+ };
19
+
20
+ // src/worker-protocol/stats-socket-path.ts
21
+ var REALM_STATS_DIR = "/opt/realm/worker/stats";
22
+ var REALM_STATS_SOCKET = `${REALM_STATS_DIR}/stats.sock`;
23
+ var REALM_STATS_MOUNT = {
24
+ hostPath: REALM_STATS_DIR,
25
+ containerPath: "/run/realm/stats",
26
+ readOnly: true
27
+ };
28
+
29
+ // src/worker-protocol/spawn-paths.ts
30
+ var REALM_SPAWN_DIR = "/opt/realm/worker/spawn";
31
+ function spawnSocketDir(appId) {
32
+ return `${REALM_SPAWN_DIR}/sock/${appId}`;
33
+ }
34
+ function spawnSocketPath(appId) {
35
+ return `${spawnSocketDir(appId)}/spawn.sock`;
36
+ }
37
+ function spawnScratchPath(appId) {
38
+ return `${REALM_SPAWN_DIR}/data/${appId}/scratch`;
39
+ }
40
+ function spawnArtifactsPath(appId) {
41
+ return `${REALM_SPAWN_DIR}/data/${appId}/artifacts`;
42
+ }
43
+ function spawnMounts(appId) {
44
+ return {
45
+ socket: {
46
+ hostPath: spawnSocketDir(appId),
47
+ containerPath: "/run/realm/spawn-sock",
48
+ readOnly: true
49
+ },
50
+ scratch: {
51
+ hostPath: spawnScratchPath(appId),
52
+ containerPath: "/run/realm/spawn",
53
+ readOnly: false
54
+ },
55
+ artifacts: {
56
+ hostPath: spawnArtifactsPath(appId),
57
+ containerPath: "/run/realm/artifacts",
58
+ readOnly: false
59
+ }
60
+ };
61
+ }
62
+ var UNFILLED = spawnMounts("");
63
+ var blank = (m) => ({ ...m, hostPath: "" });
64
+ var SPAWN_PLACEHOLDER = {
65
+ socket: blank(UNFILLED.socket),
66
+ scratch: blank(UNFILLED.scratch),
67
+ artifacts: blank(UNFILLED.artifacts)
68
+ };
69
+
70
+ // src/worker-protocol/networks.ts
71
+ var MANAGEMENT_NET = "management-net";
72
+ var UNTRUSTED_NET = "untrusted-net";
73
+ var SILO_NET_PREFIX = "realm_silo_";
74
+ function siloNetwork(siloId) {
75
+ return `${SILO_NET_PREFIX}${siloId}`;
76
+ }
77
+ function isSiloNetwork(name) {
78
+ return name.startsWith(SILO_NET_PREFIX);
79
+ }
80
+
81
+ // src/worker-protocol/home-proxy-paths.ts
82
+ var REALM_HOME_PROXY_DIR = "/opt/realm/worker/home-proxy";
83
+ function homeProxyAppDir(appId) {
84
+ return `${REALM_HOME_PROXY_DIR}/${appId}`;
85
+ }
86
+ function homeProxySocketPath(appId) {
87
+ return `${homeProxyAppDir(appId)}/home-proxy.sock`;
88
+ }
89
+ var REALM_HOME_PROXY_CONTAINER_DIR = "/run/realm/home-proxy";
90
+ var REALM_HOME_PROXY_CONTAINER_PATH = `${REALM_HOME_PROXY_CONTAINER_DIR}/home-proxy.sock`;
91
+ function homeProxyMount(appId) {
92
+ return {
93
+ hostPath: homeProxyAppDir(appId),
94
+ containerPath: REALM_HOME_PROXY_CONTAINER_DIR,
95
+ readOnly: true
96
+ };
97
+ }
98
+
99
+ // src/speculative-silo.ts
100
+ var SPECULATIVE_SILO = {
101
+ id: "speculative",
102
+ hostPath: "/speculative-silo",
103
+ containerPath: "/silo",
104
+ /**
105
+ * The volume schema requires a positive gid, so this cannot be 0. Home draws
106
+ * real Silo gids from a counter starting at 1,000,000 (`home_state.next_gid`),
107
+ * so anything below that floor can never name a group an operator has.
108
+ */
109
+ gid: 999999,
110
+ /**
111
+ * Shape-faithful on purpose: 64 hex characters, the same as a derived key.
112
+ * A recognisable sentinel would look safer and behave worse - an app that
113
+ * validates its Silo key (`z.string().length(64)`, or a bare truthiness
114
+ * check) would drop out of its own preview, which is the exact failure this
115
+ * whole module exists to prevent.
116
+ */
117
+ apiKey: "0".repeat(64)
118
+ };
119
+ function speculativeSilo(asked) {
120
+ const resolved = {};
121
+ if (asked.network !== void 0) {
122
+ resolved.network = siloNetwork(SPECULATIVE_SILO.id);
123
+ if (asked.network !== true) {
124
+ const services = {};
125
+ for (const [name, port] of Object.entries(asked.network)) {
126
+ services[name] = { host: name, port };
127
+ }
128
+ resolved.services = services;
129
+ }
130
+ }
131
+ if (asked.volume !== void 0) {
132
+ resolved.volume = {
133
+ hostPath: SPECULATIVE_SILO.hostPath,
134
+ containerPath: SPECULATIVE_SILO.containerPath,
135
+ gid: SPECULATIVE_SILO.gid,
136
+ // The author declared the mode and the placeholder honours it: the shape
137
+ // an app sees must not change with the mode of the eval.
138
+ readOnly: asked.volume === "read",
139
+ backup: false
140
+ };
141
+ }
142
+ if (asked.apiKey !== void 0) {
143
+ resolved.apiKey = SPECULATIVE_SILO.apiKey;
144
+ }
145
+ return resolved;
146
+ }
147
+
148
+ export {
149
+ nameSchema,
150
+ hostKey,
151
+ REALM_LOGS_DIR,
152
+ REALM_LOGS_SOCKET,
153
+ REALM_LOGS_MOUNT,
154
+ REALM_STATS_DIR,
155
+ REALM_STATS_SOCKET,
156
+ REALM_STATS_MOUNT,
157
+ REALM_SPAWN_DIR,
158
+ spawnSocketDir,
159
+ spawnSocketPath,
160
+ spawnScratchPath,
161
+ spawnArtifactsPath,
162
+ spawnMounts,
163
+ SPAWN_PLACEHOLDER,
164
+ MANAGEMENT_NET,
165
+ UNTRUSTED_NET,
166
+ SILO_NET_PREFIX,
167
+ siloNetwork,
168
+ isSiloNetwork,
169
+ SPECULATIVE_SILO,
170
+ speculativeSilo,
171
+ REALM_HOME_PROXY_DIR,
172
+ homeProxyAppDir,
173
+ homeProxySocketPath,
174
+ REALM_HOME_PROXY_CONTAINER_PATH,
175
+ homeProxyMount
176
+ };