alasio 7.0.0 → 9.0.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 (161) hide show
  1. package/dist/cli/src/api-server.js +18 -0
  2. package/dist/cli/src/api-server.js.map +1 -0
  3. package/dist/cli/src/branches.js +123 -46
  4. package/dist/cli/src/branches.js.map +1 -1
  5. package/dist/cli/src/cluster/docker.js +25 -10
  6. package/dist/cli/src/cluster/docker.js.map +1 -1
  7. package/dist/cli/src/cluster/host.js +33 -7
  8. package/dist/cli/src/cluster/host.js.map +1 -1
  9. package/dist/cli/src/cluster/k3s.js +51 -12
  10. package/dist/cli/src/cluster/k3s.js.map +1 -1
  11. package/dist/cli/src/cluster/node.js +115 -33
  12. package/dist/cli/src/cluster/node.js.map +1 -1
  13. package/dist/cli/src/cluster/stargz.js +55 -0
  14. package/dist/cli/src/cluster/stargz.js.map +1 -0
  15. package/dist/cli/src/commands/branch.js +5 -4
  16. package/dist/cli/src/commands/branch.js.map +1 -1
  17. package/dist/cli/src/commands/common.js +9 -3
  18. package/dist/cli/src/commands/common.js.map +1 -1
  19. package/dist/cli/src/commands/folder.js +14 -0
  20. package/dist/cli/src/commands/folder.js.map +1 -0
  21. package/dist/cli/src/commands/init.js +54 -4
  22. package/dist/cli/src/commands/init.js.map +1 -1
  23. package/dist/cli/src/commands/lake.js +40 -6
  24. package/dist/cli/src/commands/lake.js.map +1 -1
  25. package/dist/cli/src/commands/restore-filer-store.js +40 -8
  26. package/dist/cli/src/commands/restore-filer-store.js.map +1 -1
  27. package/dist/cli/src/commands/status.js +216 -20
  28. package/dist/cli/src/commands/status.js.map +1 -1
  29. package/dist/cli/src/commands/uninstall.js +8 -9
  30. package/dist/cli/src/commands/uninstall.js.map +1 -1
  31. package/dist/cli/src/commands/up.js +11 -3
  32. package/dist/cli/src/commands/up.js.map +1 -1
  33. package/dist/cli/src/commands/upgrade.js +1 -1
  34. package/dist/cli/src/commands/upgrade.js.map +1 -1
  35. package/dist/cli/src/commands.js +2 -1
  36. package/dist/cli/src/commands.js.map +1 -1
  37. package/dist/cli/src/config.js +24 -9
  38. package/dist/cli/src/config.js.map +1 -1
  39. package/dist/cli/src/cpu-baseline.js +8 -4
  40. package/dist/cli/src/cpu-baseline.js.map +1 -1
  41. package/dist/cli/src/folders.js +67 -0
  42. package/dist/cli/src/folders.js.map +1 -0
  43. package/dist/cli/src/gateway-calls.js +58 -0
  44. package/dist/cli/src/gateway-calls.js.map +1 -0
  45. package/dist/cli/src/install.js +119 -17
  46. package/dist/cli/src/install.js.map +1 -1
  47. package/dist/cli/src/kept-releases.js +27 -20
  48. package/dist/cli/src/kept-releases.js.map +1 -1
  49. package/dist/cli/src/kube/api.js +11 -5
  50. package/dist/cli/src/kube/api.js.map +1 -1
  51. package/dist/cli/src/kube/apply.js +16 -73
  52. package/dist/cli/src/kube/apply.js.map +1 -1
  53. package/dist/cli/src/kube/rollout.js +84 -26
  54. package/dist/cli/src/kube/rollout.js.map +1 -1
  55. package/dist/cli/src/lake.js +124 -0
  56. package/dist/cli/src/lake.js.map +1 -0
  57. package/dist/cli/src/manifests/admission.js +381 -223
  58. package/dist/cli/src/manifests/admission.js.map +1 -1
  59. package/dist/cli/src/manifests/alasio.js +79 -362
  60. package/dist/cli/src/manifests/alasio.js.map +1 -1
  61. package/dist/cli/src/manifests/branch.js +10 -26
  62. package/dist/cli/src/manifests/branch.js.map +1 -1
  63. package/dist/cli/src/manifests/collector.js +250 -135
  64. package/dist/cli/src/manifests/collector.js.map +1 -1
  65. package/dist/cli/src/manifests/common.js +32 -2
  66. package/dist/cli/src/manifests/common.js.map +1 -1
  67. package/dist/cli/src/manifests/config.js +256 -92
  68. package/dist/cli/src/manifests/config.js.map +1 -1
  69. package/dist/cli/src/manifests/disruption.js +10 -0
  70. package/dist/cli/src/manifests/disruption.js.map +1 -1
  71. package/dist/cli/src/manifests/folders.js +128 -0
  72. package/dist/cli/src/manifests/folders.js.map +1 -0
  73. package/dist/cli/src/manifests/grafana.js +4 -2
  74. package/dist/cli/src/manifests/grafana.js.map +1 -1
  75. package/dist/cli/src/manifests/index.js +15 -8
  76. package/dist/cli/src/manifests/index.js.map +1 -1
  77. package/dist/cli/src/manifests/keda.js +2 -1
  78. package/dist/cli/src/manifests/keda.js.map +1 -1
  79. package/dist/cli/src/manifests/lake.js +350 -73
  80. package/dist/cli/src/manifests/lake.js.map +1 -1
  81. package/dist/cli/src/manifests/log.js +316 -0
  82. package/dist/cli/src/manifests/log.js.map +1 -0
  83. package/dist/cli/src/manifests/neon.js +128 -49
  84. package/dist/cli/src/manifests/neon.js.map +1 -1
  85. package/dist/cli/src/manifests/network-policies.js +263 -100
  86. package/dist/cli/src/manifests/network-policies.js.map +1 -1
  87. package/dist/cli/src/manifests/node-agent.js +24 -8
  88. package/dist/cli/src/manifests/node-agent.js.map +1 -1
  89. package/dist/cli/src/manifests/object-store.js +4 -2
  90. package/dist/cli/src/manifests/object-store.js.map +1 -1
  91. package/dist/cli/src/manifests/sandbox-gateway.js +663 -0
  92. package/dist/cli/src/manifests/sandbox-gateway.js.map +1 -0
  93. package/dist/cli/src/manifests/scalers.js +16 -5
  94. package/dist/cli/src/manifests/scalers.js.map +1 -1
  95. package/dist/cli/src/manifests/sizing.js +16 -8
  96. package/dist/cli/src/manifests/sizing.js.map +1 -1
  97. package/dist/cli/src/manifests/valkey.js +11 -5
  98. package/dist/cli/src/manifests/valkey.js.map +1 -1
  99. package/dist/cli/src/manifests/vpa.js +3 -1
  100. package/dist/cli/src/manifests/vpa.js.map +1 -1
  101. package/dist/cli/src/manifests/webhook.js +102 -0
  102. package/dist/cli/src/manifests/webhook.js.map +1 -0
  103. package/dist/cli/src/manifests/workspace-storage.js +174 -89
  104. package/dist/cli/src/manifests/workspace-storage.js.map +1 -1
  105. package/dist/cli/src/neon-storage.js +155 -0
  106. package/dist/cli/src/neon-storage.js.map +1 -0
  107. package/dist/cli/src/release.js +9 -6
  108. package/dist/cli/src/release.js.map +1 -1
  109. package/dist/cli/src/secrets.js +45 -4
  110. package/dist/cli/src/secrets.js.map +1 -1
  111. package/dist/cli/src/target.js +1 -1
  112. package/dist/cli/src/target.js.map +1 -1
  113. package/dist/cli/src/telegram.js +56 -10
  114. package/dist/cli/src/telegram.js.map +1 -1
  115. package/dist/cli/src/webhook.js +182 -0
  116. package/dist/cli/src/webhook.js.map +1 -0
  117. package/dist/cluster/node/pins.json +12 -2
  118. package/dist/neon/control/branches.js +126 -21
  119. package/dist/neon/control/branches.js.map +1 -1
  120. package/dist/neon/control/endpoints.js +9 -0
  121. package/dist/neon/control/endpoints.js.map +1 -1
  122. package/dist/neon/control/jwt.js +16 -3
  123. package/dist/neon/control/jwt.js.map +1 -1
  124. package/dist/neon/control/secrets.js +51 -7
  125. package/dist/neon/control/secrets.js.map +1 -1
  126. package/dist/src/binder/names.js +33 -0
  127. package/dist/src/binder/names.js.map +1 -0
  128. package/dist/src/binder/tokens.js +58 -0
  129. package/dist/src/binder/tokens.js.map +1 -0
  130. package/dist/src/branch/names.js +12 -2
  131. package/dist/src/branch/names.js.map +1 -1
  132. package/dist/src/events/names.js +7 -0
  133. package/dist/src/events/names.js.map +1 -0
  134. package/dist/src/gateway/names.js +201 -0
  135. package/dist/src/gateway/names.js.map +1 -0
  136. package/dist/src/harness/names.js +49 -0
  137. package/dist/src/harness/names.js.map +1 -0
  138. package/dist/src/kube/sandbox-shape.js +19 -69
  139. package/dist/src/kube/sandbox-shape.js.map +1 -1
  140. package/dist/src/node-agent/names.js +118 -2
  141. package/dist/src/node-agent/names.js.map +1 -1
  142. package/dist/src/sandbox/names.js +12 -20
  143. package/dist/src/sandbox/names.js.map +1 -1
  144. package/dist/src/sandbox/otlp-resource.js +173 -0
  145. package/dist/src/sandbox/otlp-resource.js.map +1 -0
  146. package/dist/src/sandbox/telemetry.js +43 -0
  147. package/dist/src/sandbox/telemetry.js.map +1 -0
  148. package/dist/src/telegram/deliveries.js +40 -0
  149. package/dist/src/telegram/deliveries.js.map +1 -0
  150. package/dist/src/telemetry/config.js +131 -0
  151. package/dist/src/telemetry/config.js.map +1 -0
  152. package/dist/src/telemetry/forward.js +154 -0
  153. package/dist/src/telemetry/forward.js.map +1 -0
  154. package/package.json +1 -1
  155. package/dist/cli/src/manifests/agent-sandbox.js +0 -92
  156. package/dist/cli/src/manifests/agent-sandbox.js.map +0 -1
  157. package/dist/cli/src/manifests/juicefs-csi.js +0 -319
  158. package/dist/cli/src/manifests/juicefs-csi.js.map +0 -1
  159. package/dist/cli/src/manifests/sandboxes.agents.x-k8s.io.json +0 -6295
  160. package/dist/src/kube/config.js +0 -143
  161. package/dist/src/kube/config.js.map +0 -1
@@ -0,0 +1,18 @@
1
+ import { Effect } from "effect";
2
+ import { kind, KubeApi } from "./kube/api.js";
3
+ /**
4
+ * Where `slices`, the `kubernetes` Service's, say the API server is: the addresses of their
5
+ * IPv4 endpoints not said to be unready, and their TCP ports; null where they say no address
6
+ * or no port.
7
+ */
8
+ export function apiServerOf(slices) {
9
+ const ipv4 = slices.filter(({ addressType }) => addressType === "IPv4");
10
+ const addresses = ipv4.flatMap(({ endpoints }) => (endpoints ?? []).filter(({ conditions }) => conditions?.ready !== false).flatMap(({ addresses }) => addresses));
11
+ const ports = ipv4.flatMap(({ ports }) => (ports ?? []).flatMap(({ port, protocol }) => (port !== undefined && (protocol ?? "TCP") === "TCP" ? [port] : [])));
12
+ if (addresses.length === 0 || ports.length === 0)
13
+ return null;
14
+ return { addresses: [...new Set(addresses)].sort(), ports: [...new Set(ports)].sort((a, b) => a - b) };
15
+ }
16
+ /** Where the cluster's API server is, as the module says; null where its EndpointSlices cannot be read, or say nowhere. */
17
+ export const readApiServer = Effect.flatMap(KubeApi, (kube) => kube.list(kind("EndpointSlice"), { namespace: "default", labelSelector: "kubernetes.io/service-name=kubernetes" }).pipe(Effect.map(apiServerOf), Effect.catch(() => Effect.succeed(null))));
18
+ //# sourceMappingURL=api-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-server.js","sourceRoot":"","sources":["../../../src/api-server.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAQ9C;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,MAAkC;IAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,KAAK,KAAK,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IACnK,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9J,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9D,OAAO,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AACzG,CAAC;AAED,2HAA2H;AAC3H,MAAM,CAAC,MAAM,aAAa,GAAoD,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAC7G,IAAI,CAAC,IAAI,CAAkB,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,uCAAuC,EAAE,CAAC,CAAC,IAAI,CACtI,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EACvB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CACzC,CAAC,CAAC"}
@@ -6,38 +6,53 @@
6
6
  * main has made: a branch of Neon's at that position, by neon-control, and the branch's
7
7
  * objects on it, with Secrets of its own: credentials of its own for what it runs (the
8
8
  * password of alasio's role on its compute, which neon-control gives the role there, the
9
- * lake's role's, which its alasio gives it, and its compute's token, which fetches its
9
+ * lake's role's and the harness host's, which its alasio gives them, and its compute's token, which fetches its
10
10
  * spec alone), none of which reaches main's compute or another branch's; its bot's;
11
- * Claude Code's token when main has one; the pull Secrets of its images; and its token to
12
- * ask main to fork with. Its lake has main's object store identity, as it reads main's
13
- * files where they are (one data path: DuckLake keeps every file's path relative to it),
14
- * and SeaweedFS's Write, which writing needs, deletes too. Its clients reach its compute
15
- * as main's do theirs, through Neon's proxy, by its compute's id. neon-control is called
16
- * in its own pod, as the API server's service proxy drops the Authorization header it
17
- * authenticates its callers by, which neon-control would read a token from; and a compute
18
- * this works in, which may sleep, it wakes first.
11
+ * Claude Code's token when main has one; the pull Secrets of its images; its token to ask
12
+ * main to fork with; and its principals on the log, its alasio's, which reads its own
13
+ * Telegram topic and writes its own wake topic alone, and its lake loader's, which reads
14
+ * that alone, made beside the log's node by its access applier. Its bot's updates are
15
+ * delivered to the webhook intake at a route of its own (./webhook.ts), which its bot is
16
+ * registered with once its alasio runs. Its lake has main's object store identity, as it
17
+ * reads main's files where they are (one data path: DuckLake keeps every file's path
18
+ * relative to it), and SeaweedFS's Write, which writing needs, deletes too; and KEDA's
19
+ * principal on the log, which describes how far its loader is behind and reads nothing.
20
+ * Its clients reach its compute as main's do theirs, through Neon's proxy, by its
21
+ * compute's id. neon-control is called in its own pod, as the API server's service proxy
22
+ * drops the Authorization header it authenticates its callers by, which neon-control
23
+ * would read a token from; and a compute this works in, which may sleep, it wakes first.
19
24
  *
20
25
  * A branch is deleted in the order nothing of it outlives what it runs on: its alasio and
21
- * lake stopped, its Sandboxes and their claims deleted (JuiceFS keeps every chunk main
22
- * still uses), its compute stopped, its branch of Neon's deleted, and its namespaces with
23
- * all that is left in them.
26
+ * lake stopped, its sessions' workspaces deleted through the sandbox gateway, their bound
27
+ * pods first (JuiceFS keeps every chunk a fork shares with main's), its computes stopped, its branch of Neon's deleted, and its namespaces
28
+ * with all that is left in them; its bot told to deliver nowhere first, its route, its
29
+ * topics and its principals gone last.
24
30
  */
25
31
  import { randomBytes } from "node:crypto";
26
32
  import { Console, Effect, Predicate, Redacted, Result, Schedule, Schema } from "effect";
27
33
  import { COMPUTE_PORT, computeId, MAIN, nameProblem, tokenSha256 } from "../../neon/control/branches.js";
28
34
  import { scramVerifier } from "../../neon/control/scram.js";
29
- import { LAKE_ROLE, ROLE } from "../../neon/control/secrets.js";
35
+ import { HARNESS_ROLE, LAKE_ROLE, ROLE } from "../../neon/control/secrets.js";
36
+ import { BINDING_LABEL, environmentKey, KEY_ANNOTATION } from "../../src/binder/names.js";
37
+ import { sessionKey, volumeIdOfKey } from "../../src/sandbox/names.js";
30
38
  import { branchNamespace, branchSessionsNamespace, forkToken } from "../../src/branch/names.js";
31
39
  import { memoryBytes, memoryText } from "./capacity.js";
32
- import { installConfigOf, OperatorConfigError, sharedCluster } from "./config.js";
40
+ import { installConfigOf, OperatorConfigError, targetKind } from "./config.js";
41
+ import { recordedBaseline } from "./cpu-baseline.js";
33
42
  import { runIn, runningPod, runningPodIn } from "./commands/common.js";
34
- import { hasStatus, kind, KubeApi, refOf } from "./kube/api.js";
43
+ import { gatewayCalls } from "./gateway-calls.js";
44
+ import { kind, KubeApi, refOf } from "./kube/api.js";
35
45
  import { applyObjects } from "./kube/apply.js";
36
- import { awaitGone, awaitReady, awaitReclaimed, readiness, selectorOf } from "./kube/rollout.js";
37
- import { sandboxPolicyName } from "./manifests/admission.js";
46
+ import { awaitGone, awaitReady, readiness, selectorOf } from "./kube/rollout.js";
47
+ import { alasioPrincipal, environmentAccess, environmentLogSecret, LOG, loaderLogSecret, loaderPrincipal, logPrincipalSecret } from "./manifests/log.js";
38
48
  import { branchObjects } from "./manifests/branch.js";
39
- import { BRANCH_FORK_SECRET, BRANCH_LABEL, componentName, NAMESPACE, neonName, RELEASE, selectorLabels } from "./manifests/common.js";
49
+ import { REPLICA_NAME } from "./manifests/neon.js";
50
+ import { BRANCH_FORK_SECRET, BRANCH_LABEL, componentName, NAMESPACE, neonName, RELEASE, selectorLabels, SESSIONS_CALLER_SECRET } from "./manifests/common.js";
51
+ import { GATEWAY, sandboxServiceRuns } from "./manifests/sandbox-gateway.js";
52
+ import { LOADER_COMPONENT } from "./manifests/lake.js";
40
53
  import { CLAUDE_SECRET, readClaudeToken, readTelegramBot, TELEGRAM_SECRET } from "./secrets.js";
54
+ import { TelegramBotApi } from "./telegram.js";
55
+ import { ensureRoute, registerBot, removeRoute } from "./webhook.js";
41
56
  /** A branch environment alasio will not make or delete now, and why, as the operator is told. */
42
57
  export class BranchRefused extends Schema.TaggedError()("BranchRefused", {
43
58
  message: Schema.String,
@@ -60,14 +75,16 @@ const requiredSecret = (name, key) => Effect.flatMap(mainSecret(name, key), (val
60
75
  const succeeded = (what) => (ran) => ran.exitCode === 0 ? Effect.succeed(ran.stdout) : Effect.fail(new BranchRefused({ message: `${what} failed (exit ${ran.exitCode}): ${ran.stderr.trim() || ran.stdout.trim()}` }));
61
76
  /**
62
77
  * Calls neon-control's API (neon/control/service.ts) in its pod, with the stack's admin
63
- * token (the `alasio-branches` Secret's), which goes on stdin, never on a command line.
78
+ * token (the `alasio-branches` Secret's), which goes on stdin, never on a command line. A
79
+ * neon-control that does not answer holds a command 4 minutes at most, longer than it
80
+ * waits for a compute to wake (3 minutes).
64
81
  */
65
82
  function neonControl(method, path, body) {
66
83
  return Effect.gen(function* () {
67
84
  const token = yield* requiredSecret(componentName("branches"), "control-token");
68
85
  const pod = yield* runningPod("neon-control");
69
86
  const command = [
70
- "curl", "-sS", "-X", method, "-H", "@-",
87
+ "curl", "-sS", "--max-time", "240", "-X", method, "-H", "@-",
71
88
  ...(body === undefined ? [] : ["-H", "content-type: application/json", "--data-binary", JSON.stringify(body)]),
72
89
  "-w", "\n%{http_code}", `http://127.0.0.1:8080${path}`,
73
90
  ];
@@ -79,8 +96,10 @@ function neonControl(method, path, body) {
79
96
  return { status, body: parsed };
80
97
  });
81
98
  }
82
- /** Each compute neon-control knows of, by its namespace; none where neon-control does not answer. */
83
- export const computeTimes = neonControl("GET", "/computes").pipe(Effect.map((answer) => new Map(answer.status === 200 && answer.body ? answer.body.computes.map((compute) => [compute.namespace, compute]) : [])), Effect.orElseSucceed(() => new Map()));
99
+ /** Each compute neon-control knows of, by its Deployment, `<namespace>/<name>`; none where neon-control does not answer. */
100
+ export const computeTimes = neonControl("GET", "/computes").pipe(Effect.map((answer) => new Map(answer.status === 200 && answer.body ? answer.body.computes.map((compute) => [`${compute.namespace}/${compute.name}`, compute]) : [])), Effect.orElseSucceed(() => new Map()));
101
+ /** Neon's tenant, as neon-control has it; null where neon-control does not answer, as before alasio runs. */
102
+ export const tenantView = neonControl("GET", "/tenant").pipe(Effect.map((answer) => (answer.status === 200 ? answer.body : null)), Effect.orElseSucceed(() => null));
84
103
  /** What neon-control says of a refusal: its error, or its status. */
85
104
  const refusalOf = (answer) => Predicate.hasProperty(answer.body, "error") ? String(answer.body.error) : `it answered ${answer.status}`;
86
105
  /** Neon's branches but main, as neon-control lists them. */
@@ -97,14 +116,10 @@ const neonBranches = Effect.gen(function* () {
97
116
  const awake = (name, namespace, options) => neonControl("POST", `/computes/${computeId(name)}/wake`).pipe(Effect.flatMap((answer) => answer.status === 200 ? Effect.void : Effect.fail(new BranchRefused({ message: `neon-control did not wake ${name}'s compute: ${refusalOf(answer)}` }))), Effect.andThen(awaitReady([{ ...DEPLOYMENT, namespace, name: neonName("compute") }], options)));
98
117
  /** Runs `sql` as the compute's own superuser, in its pod: what psql printed of its one value. */
99
118
  const onCompute = (namespace, pod, sql) => runIn({ namespace, pod, container: "compute" }, ["psql", "-h", "127.0.0.1", "-p", String(COMPUTE_PORT), "-U", "cloud_admin", "-d", "alasio", "-Atc", sql]).pipe(Effect.flatMap(succeeded(`asking the compute in ${namespace}`)), Effect.map((printed) => printed.trim()));
100
- /** The containers of main's pods a branch environment runs none of: the lake's query endpoint, as a branch has no Grafana. */
101
- const UNBRANCHED_CONTAINERS = ["query"];
102
- /** The memory `of` uses now; of a pod, that of the containers a branch runs its own of. */
103
- const used = (of) => of.containers
104
- ? of.containers.filter(({ name }) => !UNBRANCHED_CONTAINERS.includes(name ?? "")).reduce((sum, container) => sum + memoryBytes(container.usage?.memory ?? "0"), 0)
105
- : memoryBytes(of.usage?.memory ?? "0");
106
- /** The components a branch environment runs its own of. */
107
- const BRANCHED_COMPONENTS = ["alasio", "neon-compute", "lake"];
119
+ /** The memory `of` uses now: a pod's containers', or a node's. */
120
+ const used = (of) => of.containers ? of.containers.reduce((sum, container) => sum + memoryBytes(container.usage?.memory ?? "0"), 0) : memoryBytes(of.usage?.memory ?? "0");
121
+ /** The components a branch environment runs its own of; its lake's loader only while it loads, as main's. */
122
+ const BRANCHED_COMPONENTS = ["alasio", "neon-compute", "neon-compute-ro", LOADER_COMPONENT];
108
123
  /** What `measure` lists, or null where the cluster has no metrics server to answer. */
109
124
  const measured = (measure) => measure.pipe(Effect.catchIf((error) => error.status === 404 || error.status === 503, () => Effect.succeed(null)));
110
125
  /** What a branch takes, as main's alasio, compute and lake use memory now, and the most a node has free. */
@@ -137,7 +152,7 @@ function merged(base, overrides) {
137
152
  export const branchConfig = Effect.fnUntraced(function* (config, overrides) {
138
153
  const claude = (yield* readClaudeToken) !== null;
139
154
  const install = merged(config.install, merged(overrides, { host: { enabled: false } }));
140
- const decoded = installConfigOf(install, { claude, shared: sharedCluster(config.target) });
155
+ const decoded = installConfigOf(install, { claude, target: targetKind(config.target) });
141
156
  if (Result.isFailure(decoded))
142
157
  return yield* new OperatorConfigError({ path: config.path, reason: `with the branch's overrides, ${decoded.failure}` });
143
158
  return decoded.success;
@@ -181,7 +196,7 @@ export const createBranch = Effect.fnUntraced(function* (config, { name, bot, ov
181
196
  return yield* new BranchRefused({ message: `there is a branch ${name} already` });
182
197
  const main = yield* readTelegramBot;
183
198
  if (main && Redacted.value(main.token) === Redacted.value(bot.token)) {
184
- return yield* new BranchRefused({ message: "a branch's bot is its own: Telegram gives a bot's updates to one poller, and main's alasio polls main's bot" });
199
+ return yield* new BranchRefused({ message: "a branch's bot is its own: Telegram delivers a bot's updates to one webhook, and main's bot's to main" });
185
200
  }
186
201
  const memory = yield* measureMemory;
187
202
  if (memory === null)
@@ -191,16 +206,25 @@ export const createBranch = Effect.fnUntraced(function* (config, { name, bot, ov
191
206
  }
192
207
  // The branch's own, as the module says: none of main's passwords or tokens of its Neon.
193
208
  const own = () => randomBytes(24).toString("base64url");
194
- const credentials = { alasio: own(), lake: own(), compute: own() };
209
+ const credentials = { alasio: own(), lake: own(), harness: own(), compute: own(), log: own(), loader: own() };
195
210
  // Their verifiers, each made once and given to whatever sets the role or answers for it.
196
- const verifiers = { [ROLE]: scramVerifier(credentials.alasio), [LAKE_ROLE]: scramVerifier(credentials.lake) };
211
+ const verifiers = { [ROLE]: scramVerifier(credentials.alasio), [LAKE_ROLE]: scramVerifier(credentials.lake), [HARNESS_ROLE]: scramVerifier(credentials.harness) };
212
+ // Each of its principals on the log a password of its own, its alasio's the one in its Secret.
213
+ const access = environmentAccess(name);
214
+ const passwords = { [alasioPrincipal(name)]: credentials.log, [loaderPrincipal(name)]: credentials.loader };
215
+ const log = { ...access, principals: access.principals.map((principal) => ({ ...principal, password: passwords[principal.name] ?? own() })) };
197
216
  // Main's URL, through the proxy, with the branch's password, on the branch's compute.
198
217
  const url = new URL(yield* requiredSecret(componentName("database"), "url"));
199
218
  url.password = credentials.alasio;
200
219
  url.searchParams.set("options", `endpoint=${computeId(name)}`);
220
+ // The harness host's, the same as its own role.
221
+ const harnessUrl = new URL(url);
222
+ harnessUrl.username = HARNESS_ROLE;
223
+ harnessUrl.password = credentials.harness;
201
224
  const lake = settings.lake.enabled ? yield* copiedSecret(name, componentName("lake"), ["LAKE_S3_KEY", "LAKE_S3_SECRET"]) : null;
202
225
  const secrets = [
203
- branchSecret(name, componentName("database"), { url: url.toString(), "lake-verifier": verifiers[LAKE_ROLE] }),
226
+ branchSecret(name, componentName("database"), { url: url.toString(), "lake-verifier": verifiers[LAKE_ROLE], "harness-verifier": verifiers[HARNESS_ROLE] }),
227
+ branchSecret(name, componentName("harness-database"), { url: harnessUrl.toString() }),
204
228
  branchSecret(name, neonName("compute"), { NEON_CONTROL_PLANE_TOKEN: credentials.compute }),
205
229
  // The lake service's: main's object store identity, the one thing of main's a branch is given (see the module), and its role's password.
206
230
  ...(lake ? [{ ...lake, data: { ...lake.data, LAKE_DATABASE_PASSWORD: Buffer.from(credentials.lake, "utf8").toString("base64") } }] : []),
@@ -208,6 +232,19 @@ export const createBranch = Effect.fnUntraced(function* (config, { name, bot, ov
208
232
  ...(yield* Effect.forEach(settings.imagePullSecrets, (secret) => copiedSecret(name, secret))),
209
233
  branchSecret(name, TELEGRAM_SECRET, { token: Redacted.value(bot.token), allowedUserIds: bot.allowedUserIds.join(",") }),
210
234
  branchSecret(name, BRANCH_FORK_SECRET, { token: forkToken(yield* requiredSecret(componentName("branches"), "fork-key"), name) }),
235
+ // Its callers' key to the sandbox gateway, its own of the gateway's, which signs its own sessions' tokens alone.
236
+ ...(sandboxServiceRuns(settings)
237
+ ? [branchSecret(name, SESSIONS_CALLER_SECRET, { "caller-key": environmentKey(Buffer.from(yield* requiredSecret(GATEWAY, "caller-key")), name).toString() })]
238
+ : []),
239
+ branchSecret(name, environmentLogSecret({ namespace: branchNamespace(name), branch: name }), { username: alasioPrincipal(name), password: credentials.log }),
240
+ // Its lake loader's, which reads its wake topic alone; and KEDA's, which may describe
241
+ // how far behind that is and read nothing, which its loader's scaler reads as.
242
+ ...(lake
243
+ ? [
244
+ branchSecret(name, loaderLogSecret({ namespace: branchNamespace(name), branch: name }), { username: loaderPrincipal(name), password: credentials.loader }),
245
+ yield* copiedSecret(name, logPrincipalSecret("scaler")),
246
+ ]
247
+ : []),
211
248
  ];
212
249
  // At main's current WAL position, so the branch holds every commit main has made.
213
250
  yield* awake(MAIN, NAMESPACE, options);
@@ -220,11 +257,19 @@ export const createBranch = Effect.fnUntraced(function* (config, { name, bot, ov
220
257
  });
221
258
  if (made.status !== 201 && made.status !== 200)
222
259
  return yield* new BranchRefused({ message: `neon-control did not make the branch ${name}: ${refusalOf(made)}` });
223
- const objects = branchObjects(settings, name);
260
+ // Its principals on the log, their ACLs and its topics, made by the log's access applier.
261
+ yield* changeEnvironment("environment", log);
262
+ const route = yield* ensureRoute(name, bot.allowedUserIds);
263
+ // Its sandbox pools main's, held to the CPU baseline main's are.
264
+ const { baseline } = yield* recordedBaseline;
265
+ const objects = branchObjects(settings, name, baseline);
224
266
  yield* Effect.forEach(objects.filter((object) => object.kind === "Namespace"), (namespace) => kube.apply(namespace), { discard: true });
225
267
  yield* Effect.forEach(secrets, (secret) => kube.apply(secret), { discard: true });
226
268
  yield* applyObjects(objects, options);
269
+ yield* registerBot(settings, name, bot, route, options);
227
270
  });
271
+ /** Makes, or forgets, an environment's access on the log, by the access applier beside its first node (src/log/access.ts). */
272
+ const changeEnvironment = (change, access) => runIn({ namespace: NAMESPACE, pod: `${LOG}-0`, container: "access" }, ["node", "/opt/alasio/src/log/access.ts", change], JSON.stringify(access)).pipe(Effect.flatMap(succeeded(change === "environment" ? "making the branch's principal on the log" : "forgetting the branch's principal on the log")));
228
273
  /** The memory the workloads of `namespace` request. */
229
274
  const requestedIn = (namespace) => Effect.flatMap(KubeApi, (kube) => kube.list(DEPLOYMENT, { namespace })).pipe(Effect.map((deployments) => deployments.flatMap(({ spec }) => spec?.template.spec?.containers ?? []).reduce((sum, container) => sum + memoryBytes(container.resources?.requests?.["memory"] ?? "0"), 0)));
230
275
  /** The namespaces of branch environments, each its own. */
@@ -286,10 +331,37 @@ const stopped = Effect.fnUntraced(function* (namespace, names, options) {
286
331
  const pods = (yield* Effect.forEach(workloads, ({ spec }) => kube.list(POD, { namespace, labelSelector: selectorOf(spec?.selector.matchLabels ?? {}) }))).flat();
287
332
  yield* removed([...workloads, ...pods].map(refOf), options);
288
333
  });
334
+ /** The workspaces of the sessions of `sessions`, a branch's sessions' namespace, bound now, by their pods: their names. */
335
+ const boundWorkspaces = (sessions) => Effect.flatMap(KubeApi, (kube) => kube.list(POD, { namespace: sessions, labelSelector: BINDING_LABEL })).pipe(Effect.map((pods) => pods.flatMap(({ metadata }) => volumeIdOfKey(metadata?.annotations?.[KEY_ANNOTATION] ?? "") ?? [])));
336
+ /** What the sandbox gateway answers of an environment's workspaces. */
337
+ const WorkspacesAnswer = Schema.fromJsonString(Schema.Struct({ workspaces: Schema.Array(Schema.String) }));
338
+ /**
339
+ * Deletes the workspaces of the branch `name`'s sessions through the sandbox gateway, as the
340
+ * branch's own key signs its calls, of the gateway's caller key: their directories in
341
+ * workspace storage, and their snapshots, in the bucket and every node's cache
342
+ * (src/gateway/sessions.ts). The pods bound to them now are deleted first, which the gateway
343
+ * releases them on; one the gateway still holds, bound or being released, is asked again
344
+ * until it is deleted, within the timeout. Nothing where there is no sandbox service, as
345
+ * there is then no caller key of its.
346
+ */
347
+ const deleteWorkspaces = Effect.fnUntraced(function* (name, options) {
348
+ const master = yield* mainSecret(GATEWAY, "caller-key");
349
+ if (master === null)
350
+ return;
351
+ const kube = yield* KubeApi;
352
+ yield* removed((yield* kube.list(POD, { namespace: branchSessionsNamespace(name), labelSelector: BINDING_LABEL })).map(refOf), options);
353
+ const call = yield* gatewayCalls;
354
+ const callerKey = environmentKey(Buffer.from(master), name);
355
+ const listed = yield* call({ callerKey, environment: name, key: "workspaces", method: "GET", path: "/workspace/all" });
356
+ if (listed.status !== 200)
357
+ return yield* new BranchRefused({ message: `the sandbox gateway did not list its workspaces: it answered ${listed.status}: ${listed.text}` });
358
+ const { workspaces } = yield* Schema.decodeUnknownEffect(WorkspacesAnswer)(listed.text).pipe(Effect.mapError((error) => new BranchRefused({ message: `the sandbox gateway's list of its workspaces is not one: ${error.message}` })));
359
+ yield* Effect.forEach(workspaces, (workspace) => call({ callerKey, environment: name, key: sessionKey(workspace), method: "DELETE", path: "/workspace" }).pipe(Effect.flatMap(({ status, text }) => status === 204 ? Effect.void : Effect.fail(new BranchRefused({ message: `the sandbox gateway did not delete its workspace ${workspace}: it answered ${status}: ${text}` }))), Effect.retry({ while: (error) => error.message.includes("answered 409"), schedule: Schedule.max([Schedule.spaced(options.poll), Schedule.during(options.timeout)]) })), { discard: true });
360
+ }, Effect.scoped, Effect.catchTag("GatewayUnreached", (error) => Effect.fail(new BranchRefused({ message: `its workspaces could not be deleted through the sandbox gateway: ${error.message}` }))));
289
361
  /**
290
362
  * Deletes the branch environment `name`, as the module says. Unless `force`, refuses
291
363
  * while its alasio has a turn running, as its database says, or when that cannot be
292
- * read.
364
+ * read, and while a workspace of its sessions is bound.
293
365
  */
294
366
  export const deleteBranch = Effect.fnUntraced(function* (name, { force }, options) {
295
367
  const kube = yield* KubeApi;
@@ -303,15 +375,19 @@ export const deleteBranch = Effect.fnUntraced(function* (name, { force }, option
303
375
  const turns = yield* awake(name, namespace, options).pipe(Effect.andThen(runningPodIn(namespace, "neon-compute")), Effect.flatMap((pod) => onCompute(namespace, pod, "select count(*) from state.turns where state = 'active'")), Effect.catch((error) => Effect.fail(new BranchRefused({ message: `whether its alasio has a turn running cannot be read: ${error.message}; --force deletes it all the same` }))));
304
376
  if (Number(turns) > 0)
305
377
  return yield* new BranchRefused({ message: `its alasio has ${turns} turn${turns === "1" ? "" : "s"} running; --force deletes it all the same` });
378
+ const bound = yield* boundWorkspaces(sessions);
379
+ if (bound.length > 0) {
380
+ return yield* new BranchRefused({ message: `its session${bound.length === 1 ? "'s workspace" : "s' workspaces"} ${bound.join(", ")} ${bound.length === 1 ? "is" : "are"} bound; --force deletes it all the same` });
381
+ }
306
382
  }
307
383
  if (made) {
308
- yield* stopped(namespace, [RELEASE, componentName("lake")], options);
309
- const sandboxes = yield* kube.list(kind("Sandbox"), { namespace: sessions }).pipe(Effect.catchIf(hasStatus(404), () => Effect.succeed([])));
310
- yield* removed(sandboxes.map(refOf), options);
311
- const claimed = (yield* kube.list(kind("PersistentVolume"))).filter(({ spec }) => spec?.claimRef?.namespace === sessions);
312
- yield* removed((yield* kube.list(kind("PersistentVolumeClaim"), { namespace: sessions })).map(refOf), options);
313
- yield* awaitReclaimed(claimed.map(refOf), options);
314
- yield* stopped(namespace, [neonName("compute")], options);
384
+ // Its bot's updates delivered nowhere: what Telegram holds of them it keeps, for no one.
385
+ const token = (yield* kube.get({ ...SECRET, namespace, name: TELEGRAM_SECRET }))?.data?.["token"];
386
+ if (token)
387
+ yield* Effect.flatMap(TelegramBotApi, (telegram) => telegram.deleteWebhook(Redacted.make(Buffer.from(token, "base64").toString("utf8"))));
388
+ yield* stopped(namespace, [RELEASE, componentName(LOADER_COMPONENT)], options);
389
+ yield* deleteWorkspaces(name, options);
390
+ yield* stopped(namespace, [neonName("compute"), REPLICA_NAME], options);
315
391
  }
316
392
  if (branch) {
317
393
  // neon-control answers 409 while the storage controller is still deleting it.
@@ -320,7 +396,8 @@ export const deleteBranch = Effect.fnUntraced(function* (name, { force }, option
320
396
  : Effect.fail(new BranchRefused({ message: `neon-control did not delete the branch ${name}: ${refusalOf(answer)}` }))), Effect.retry({ while: (error) => error._tag === "BranchRefused" && error.message.includes("still deleting"), schedule: Schedule.max([Schedule.spaced(options.poll), Schedule.during(options.timeout)]) }));
321
397
  }
322
398
  yield* removed([namespace, sessions].map((each) => ({ ...NAMESPACE_KIND, name: each })), options);
323
- // What of its is the cluster's: its Sandboxes' admission policy.
324
- yield* removed([kind("ValidatingAdmissionPolicyBinding"), kind("ValidatingAdmissionPolicy")].map((each) => ({ ...each, name: sandboxPolicyName(namespace) })), options);
399
+ // What of its is the cluster's: its route, its topic and its principal.
400
+ yield* removeRoute(name);
401
+ yield* changeEnvironment("forget", environmentAccess(name));
325
402
  });
326
403
  //# sourceMappingURL=branches.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"branches.js","sourceRoot":"","sources":["../../../src/branches.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"branches.js","sourceRoot":"","sources":["../../../src/branches.ts"],"names":[],"mappings":"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"}
@@ -29,8 +29,9 @@ import { SNAPSHOT_CACHE_DIR } from "../../../src/node-agent/names.js";
29
29
  import { imageReference } from "../images.js";
30
30
  import { NODE_IMAGE } from "../release.js";
31
31
  import { DockerEngine } from "./docker-engine.js";
32
- import { awaitReady as waitFor, clusterKubeconfig, gvisorRuntimeClasses, gvisorRuntimeFiles, KUBELET_ARGS, nodeHostsWith, NotYet, readySince, registriesYaml, staleRuntimeClasses, WAITS, writeKubeconfig, } from "./k3s.js";
32
+ import { awaitReady as waitFor, clusterKubeconfig, containerdFiles, gvisorRuntimeClasses, KUBELET_ARGS, nodeHostsWith, NotYet, readySince, registriesYaml, staleRuntimeClasses, WAITS, writeKubeconfig, } from "./k3s.js";
33
33
  import { gvisorReleases, NODE_PINS } from "./node.js";
34
+ import { STARGZ_MEMORY_LIMIT, STARGZ_ROOT, stargzConfig } from "./stargz.js";
34
35
  import { tarArchive } from "./tar.js";
35
36
  /** The cluster cannot be made as asked: something of its name is not its own, or its settings cannot hold. */
36
37
  export class ClusterUnusable extends Schema.TaggedError()("ClusterUnusable", {
@@ -68,6 +69,7 @@ const NODE_VOLUMES = [
68
69
  ["log", "/var/log"],
69
70
  // The snapshots of sandboxes gVisor saves whole, which the node restores them from.
70
71
  ["snapshots", SNAPSHOT_CACHE_DIR],
72
+ ["stargz", STARGZ_ROOT],
71
73
  ];
72
74
  /** The API server's port in the server node. */
73
75
  const K3S_PORT = 6443;
@@ -77,6 +79,12 @@ const K3S_KUBECONFIG = "/etc/rancher/k3s/k3s.yaml";
77
79
  const K3S_TOKEN = "/var/lib/rancher/k3s/server/token";
78
80
  /** The variable the node image's entrypoint writes k3s's registries.yaml from, before k3s starts. */
79
81
  const REGISTRIES_ENV = "ALASIO_REGISTRIES";
82
+ /** The variable the node image's entrypoint writes stargz-snapshotter's daemon's configuration from, before it starts it. */
83
+ const STARGZ_CONFIG_ENV = "ALASIO_STARGZ_CONFIG";
84
+ /** The variable the node image's entrypoint gives the daemon, and its FUSE manager, as Go's soft limit on their heaps (./stargz.ts's STARGZ_MEMORY_LIMIT). */
85
+ const STARGZ_MEMORY_ENV = "ALASIO_STARGZ_MEMORY_LIMIT";
86
+ /** Where the node image's entrypoint writes the pid of stargz-snapshotter's daemon, at each of the daemon's starts. */
87
+ const STARGZ_PID = "/run/containerd-stargz-grpc/daemon.pid";
80
88
  /** The `index`th address of the IPv4 subnet `cidr` (a.b.c.d/n), its network address the 0th; null when it has no such host address. */
81
89
  export function subnetAddress(cidr, index) {
82
90
  const match = /^(\d+)\.(\d+)\.(\d+)\.(\d+)\/(\d+)$/u.exec(cidr);
@@ -135,8 +143,11 @@ const ABORT_FUSE = [
135
143
  ' if [ -e "$abort" ]; then echo 1 >"$abort"; fi',
136
144
  "done",
137
145
  ].join("\n");
138
- /** kubelet's settings, as k3s's flags give them. */
139
- const kubeletArgs = KUBELET_ARGS.map((arg) => `--kubelet-arg=${arg}`);
146
+ /**
147
+ * What every node's k3s is given: kubelet's settings, and no snapshotter, as containerd's
148
+ * files in its container say stargz-snapshotter's daemon's (./stargz.ts).
149
+ */
150
+ const nodeArgs = [...KUBELET_ARGS.map((arg) => `--kubelet-arg=${arg}`), "--snapshotter="];
140
151
  /** A digest of `spec` and the `files` put into its container that two share only when they are the same. */
141
152
  const specHash = (spec, files) => createHash("sha256").update(JSON.stringify([spec, [...files]])).digest("hex");
142
153
  /** The tar archive of `files`, by their paths, which Docker extracts at a container's root: each file with the directories it is in. */
@@ -160,17 +171,18 @@ const makeDockerCluster = Effect.fnUntraced(function* ({ name: cluster, apiPort,
160
171
  const server = `${cluster}-server-0`;
161
172
  const nodes = [server, ...Array.from({ length: agents }, (_, index) => `${cluster}-agent-${index}`)];
162
173
  const unusable = (reason) => new ClusterUnusable({ cluster, reason });
163
- /** The files that make each gVisor release the node image holds a runtime of containerd's, in every node. */
164
- const files = gvisorRuntimeFiles(gvisor, { systemd: false });
174
+ /** containerd's files, which pull through stargz-snapshotter's daemon and make each gVisor release the node image holds a runtime, in every node. */
175
+ const files = containerdFiles(gvisor, { systemd: false });
165
176
  /**
166
177
  * The container of `node`, with what every node has: privileged, as k3s in Docker needs,
167
- * its volumes, the storage directory and the host mounts, and the registries.
178
+ * its volumes, the storage directory and the host mounts, the registries, and
179
+ * stargz-snapshotter's daemon's configuration.
168
180
  */
169
181
  const nodeContainer = (node, role, address, command, env) => ({
170
182
  Image: image,
171
183
  Hostname: node,
172
184
  Cmd: command,
173
- Env: [...env, ...(registries ? [`${REGISTRIES_ENV}=${registriesYaml(registries)}`] : [])],
185
+ Env: [...env, ...(registries ? [`${REGISTRIES_ENV}=${registriesYaml(registries)}`] : []), `${STARGZ_CONFIG_ENV}=${stargzConfig(registries)}`, `${STARGZ_MEMORY_ENV}=${STARGZ_MEMORY_LIMIT}`],
174
186
  Labels: { ...labels, [ROLE_LABEL]: role },
175
187
  ...(role === "server" ? { ExposedPorts: { [API_PORT]: {} } } : {}),
176
188
  HostConfig: {
@@ -299,13 +311,13 @@ const makeDockerCluster = Effect.fnUntraced(function* ({ name: cluster, apiPort,
299
311
  // Where the kubeconfig reaches it.
300
312
  "--tls-san=127.0.0.1",
301
313
  `--default-local-storage-path=${storagePath}`,
302
- ...kubeletArgs,
314
+ ...nodeArgs,
303
315
  ], []));
304
316
  yield* awaitReady("its API server", kubectl(["get", "--raw=/readyz"]));
305
317
  if (agents > 0) {
306
318
  const token = (yield* awaitReady("its token", docker.readFile(server, K3S_TOKEN))).toString("utf8").trim();
307
319
  for (const [index, agent] of nodes.slice(1).entries()) {
308
- yield* ensureNode(agent, nodeContainer(agent, "agent", yield* nodeAddress(networkSubnet, 1 + index), ["agent", ...kubeletArgs], [
320
+ yield* ensureNode(agent, nodeContainer(agent, "agent", yield* nodeAddress(networkSubnet, 1 + index), ["agent", ...nodeArgs], [
309
321
  `K3S_URL=https://${server}:${K3S_PORT}`,
310
322
  `K3S_TOKEN=${token}`,
311
323
  ]));
@@ -355,7 +367,10 @@ const makeDockerCluster = Effect.fnUntraced(function* ({ name: cluster, apiPort,
355
367
  }),
356
368
  status: Effect.all({
357
369
  docker: Effect.map(docker.version, ({ Version }) => Version),
358
- nodes: existingNodes,
370
+ // The daemon's pid, as the node's entrypoint writes it at each of its starts.
371
+ nodes: Effect.flatMap(existingNodes, (found) => Effect.forEach(found, (node) => node.state !== "running"
372
+ ? Effect.succeed({ ...node, snapshotter: null })
373
+ : inNode(node.name, ["sh", "-c", `kill -0 "$(cat ${STARGZ_PID})"`]).pipe(Effect.as(true), Effect.catchTag("NodeCommandFailed", () => Effect.succeed(false)), Effect.map((snapshotter) => ({ ...node, snapshotter }))))),
359
374
  }),
360
375
  });
361
376
  });