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.
- package/dist/cli/src/api-server.js +18 -0
- package/dist/cli/src/api-server.js.map +1 -0
- package/dist/cli/src/branches.js +123 -46
- package/dist/cli/src/branches.js.map +1 -1
- package/dist/cli/src/cluster/docker.js +25 -10
- package/dist/cli/src/cluster/docker.js.map +1 -1
- package/dist/cli/src/cluster/host.js +33 -7
- package/dist/cli/src/cluster/host.js.map +1 -1
- package/dist/cli/src/cluster/k3s.js +51 -12
- package/dist/cli/src/cluster/k3s.js.map +1 -1
- package/dist/cli/src/cluster/node.js +115 -33
- package/dist/cli/src/cluster/node.js.map +1 -1
- package/dist/cli/src/cluster/stargz.js +55 -0
- package/dist/cli/src/cluster/stargz.js.map +1 -0
- package/dist/cli/src/commands/branch.js +5 -4
- package/dist/cli/src/commands/branch.js.map +1 -1
- package/dist/cli/src/commands/common.js +9 -3
- package/dist/cli/src/commands/common.js.map +1 -1
- package/dist/cli/src/commands/folder.js +14 -0
- package/dist/cli/src/commands/folder.js.map +1 -0
- package/dist/cli/src/commands/init.js +54 -4
- package/dist/cli/src/commands/init.js.map +1 -1
- package/dist/cli/src/commands/lake.js +40 -6
- package/dist/cli/src/commands/lake.js.map +1 -1
- package/dist/cli/src/commands/restore-filer-store.js +40 -8
- package/dist/cli/src/commands/restore-filer-store.js.map +1 -1
- package/dist/cli/src/commands/status.js +216 -20
- package/dist/cli/src/commands/status.js.map +1 -1
- package/dist/cli/src/commands/uninstall.js +8 -9
- package/dist/cli/src/commands/uninstall.js.map +1 -1
- package/dist/cli/src/commands/up.js +11 -3
- package/dist/cli/src/commands/up.js.map +1 -1
- package/dist/cli/src/commands/upgrade.js +1 -1
- package/dist/cli/src/commands/upgrade.js.map +1 -1
- package/dist/cli/src/commands.js +2 -1
- package/dist/cli/src/commands.js.map +1 -1
- package/dist/cli/src/config.js +24 -9
- package/dist/cli/src/config.js.map +1 -1
- package/dist/cli/src/cpu-baseline.js +8 -4
- package/dist/cli/src/cpu-baseline.js.map +1 -1
- package/dist/cli/src/folders.js +67 -0
- package/dist/cli/src/folders.js.map +1 -0
- package/dist/cli/src/gateway-calls.js +58 -0
- package/dist/cli/src/gateway-calls.js.map +1 -0
- package/dist/cli/src/install.js +119 -17
- package/dist/cli/src/install.js.map +1 -1
- package/dist/cli/src/kept-releases.js +27 -20
- package/dist/cli/src/kept-releases.js.map +1 -1
- package/dist/cli/src/kube/api.js +11 -5
- package/dist/cli/src/kube/api.js.map +1 -1
- package/dist/cli/src/kube/apply.js +16 -73
- package/dist/cli/src/kube/apply.js.map +1 -1
- package/dist/cli/src/kube/rollout.js +84 -26
- package/dist/cli/src/kube/rollout.js.map +1 -1
- package/dist/cli/src/lake.js +124 -0
- package/dist/cli/src/lake.js.map +1 -0
- package/dist/cli/src/manifests/admission.js +381 -223
- package/dist/cli/src/manifests/admission.js.map +1 -1
- package/dist/cli/src/manifests/alasio.js +79 -362
- package/dist/cli/src/manifests/alasio.js.map +1 -1
- package/dist/cli/src/manifests/branch.js +10 -26
- package/dist/cli/src/manifests/branch.js.map +1 -1
- package/dist/cli/src/manifests/collector.js +250 -135
- package/dist/cli/src/manifests/collector.js.map +1 -1
- package/dist/cli/src/manifests/common.js +32 -2
- package/dist/cli/src/manifests/common.js.map +1 -1
- package/dist/cli/src/manifests/config.js +256 -92
- package/dist/cli/src/manifests/config.js.map +1 -1
- package/dist/cli/src/manifests/disruption.js +10 -0
- package/dist/cli/src/manifests/disruption.js.map +1 -1
- package/dist/cli/src/manifests/folders.js +128 -0
- package/dist/cli/src/manifests/folders.js.map +1 -0
- package/dist/cli/src/manifests/grafana.js +4 -2
- package/dist/cli/src/manifests/grafana.js.map +1 -1
- package/dist/cli/src/manifests/index.js +15 -8
- package/dist/cli/src/manifests/index.js.map +1 -1
- package/dist/cli/src/manifests/keda.js +2 -1
- package/dist/cli/src/manifests/keda.js.map +1 -1
- package/dist/cli/src/manifests/lake.js +350 -73
- package/dist/cli/src/manifests/lake.js.map +1 -1
- package/dist/cli/src/manifests/log.js +316 -0
- package/dist/cli/src/manifests/log.js.map +1 -0
- package/dist/cli/src/manifests/neon.js +128 -49
- package/dist/cli/src/manifests/neon.js.map +1 -1
- package/dist/cli/src/manifests/network-policies.js +263 -100
- package/dist/cli/src/manifests/network-policies.js.map +1 -1
- package/dist/cli/src/manifests/node-agent.js +24 -8
- package/dist/cli/src/manifests/node-agent.js.map +1 -1
- package/dist/cli/src/manifests/object-store.js +4 -2
- package/dist/cli/src/manifests/object-store.js.map +1 -1
- package/dist/cli/src/manifests/sandbox-gateway.js +663 -0
- package/dist/cli/src/manifests/sandbox-gateway.js.map +1 -0
- package/dist/cli/src/manifests/scalers.js +16 -5
- package/dist/cli/src/manifests/scalers.js.map +1 -1
- package/dist/cli/src/manifests/sizing.js +16 -8
- package/dist/cli/src/manifests/sizing.js.map +1 -1
- package/dist/cli/src/manifests/valkey.js +11 -5
- package/dist/cli/src/manifests/valkey.js.map +1 -1
- package/dist/cli/src/manifests/vpa.js +3 -1
- package/dist/cli/src/manifests/vpa.js.map +1 -1
- package/dist/cli/src/manifests/webhook.js +102 -0
- package/dist/cli/src/manifests/webhook.js.map +1 -0
- package/dist/cli/src/manifests/workspace-storage.js +174 -89
- package/dist/cli/src/manifests/workspace-storage.js.map +1 -1
- package/dist/cli/src/neon-storage.js +155 -0
- package/dist/cli/src/neon-storage.js.map +1 -0
- package/dist/cli/src/release.js +9 -6
- package/dist/cli/src/release.js.map +1 -1
- package/dist/cli/src/secrets.js +45 -4
- package/dist/cli/src/secrets.js.map +1 -1
- package/dist/cli/src/target.js +1 -1
- package/dist/cli/src/target.js.map +1 -1
- package/dist/cli/src/telegram.js +56 -10
- package/dist/cli/src/telegram.js.map +1 -1
- package/dist/cli/src/webhook.js +182 -0
- package/dist/cli/src/webhook.js.map +1 -0
- package/dist/cluster/node/pins.json +12 -2
- package/dist/neon/control/branches.js +126 -21
- package/dist/neon/control/branches.js.map +1 -1
- package/dist/neon/control/endpoints.js +9 -0
- package/dist/neon/control/endpoints.js.map +1 -1
- package/dist/neon/control/jwt.js +16 -3
- package/dist/neon/control/jwt.js.map +1 -1
- package/dist/neon/control/secrets.js +51 -7
- package/dist/neon/control/secrets.js.map +1 -1
- package/dist/src/binder/names.js +33 -0
- package/dist/src/binder/names.js.map +1 -0
- package/dist/src/binder/tokens.js +58 -0
- package/dist/src/binder/tokens.js.map +1 -0
- package/dist/src/branch/names.js +12 -2
- package/dist/src/branch/names.js.map +1 -1
- package/dist/src/events/names.js +7 -0
- package/dist/src/events/names.js.map +1 -0
- package/dist/src/gateway/names.js +201 -0
- package/dist/src/gateway/names.js.map +1 -0
- package/dist/src/harness/names.js +49 -0
- package/dist/src/harness/names.js.map +1 -0
- package/dist/src/kube/sandbox-shape.js +19 -69
- package/dist/src/kube/sandbox-shape.js.map +1 -1
- package/dist/src/node-agent/names.js +118 -2
- package/dist/src/node-agent/names.js.map +1 -1
- package/dist/src/sandbox/names.js +12 -20
- package/dist/src/sandbox/names.js.map +1 -1
- package/dist/src/sandbox/otlp-resource.js +173 -0
- package/dist/src/sandbox/otlp-resource.js.map +1 -0
- package/dist/src/sandbox/telemetry.js +43 -0
- package/dist/src/sandbox/telemetry.js.map +1 -0
- package/dist/src/telegram/deliveries.js +40 -0
- package/dist/src/telegram/deliveries.js.map +1 -0
- package/dist/src/telemetry/config.js +131 -0
- package/dist/src/telemetry/config.js.map +1 -0
- package/dist/src/telemetry/forward.js +154 -0
- package/dist/src/telemetry/forward.js.map +1 -0
- package/package.json +1 -1
- package/dist/cli/src/manifests/agent-sandbox.js +0 -92
- package/dist/cli/src/manifests/agent-sandbox.js.map +0 -1
- package/dist/cli/src/manifests/juicefs-csi.js +0 -319
- package/dist/cli/src/manifests/juicefs-csi.js.map +0 -1
- package/dist/cli/src/manifests/sandboxes.agents.x-k8s.io.json +0 -6295
- package/dist/src/kube/config.js +0 -143
- package/dist/src/kube/config.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/commands.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC/C,OAAO,CAAC,eAAe,CACrB,iHAAiH;IAC/G,qHAAqH,CACxH,EACD,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/commands.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC/C,OAAO,CAAC,eAAe,CACrB,iHAAiH;IAC/G,qHAAqH,CACxH,EACD,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,EACrJ,OAAO,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC,CACtC,CAAC"}
|
package/dist/cli/src/config.js
CHANGED
|
@@ -40,7 +40,10 @@ const Url = matching(/^https?:\/\/.+$/u, "must be an http(s) URL");
|
|
|
40
40
|
* them, its keys in camel case: a registry's mirrors, by its host (`*` for every one), and
|
|
41
41
|
* its TLS, whose files are the nodes', as `mounts` mounts them. A registry's login is a
|
|
42
42
|
* secret, which the config does not hold, so there is none: the registries are ones that
|
|
43
|
-
* ask for none.
|
|
43
|
+
* ask for none. stargz-snapshotter's daemon, which the nodes pull through, reads an eStargz
|
|
44
|
+
* layer lazily through a mirror it can reach as it is (no `*`, no rewrite, no path), which
|
|
45
|
+
* should answer range requests: from one that does not, a layer is fetched whole at its
|
|
46
|
+
* first read.
|
|
44
47
|
*/
|
|
45
48
|
export const Registries = Schema.Struct({
|
|
46
49
|
mirrors: defaulted(Schema.Record(NonEmpty, Schema.Struct({
|
|
@@ -92,8 +95,14 @@ const configOf = (target) => Schema.Struct({
|
|
|
92
95
|
install: defaulted(Schema.Record(Schema.String, Schema.Unknown), {}),
|
|
93
96
|
});
|
|
94
97
|
const OperatorConfigSchema = configOf(Target);
|
|
95
|
-
/**
|
|
96
|
-
export const
|
|
98
|
+
/** The kind of `target`. */
|
|
99
|
+
export const targetKind = (target) => ("host" in target ? "host" : "docker" in target ? "docker" : "kubeconfig");
|
|
100
|
+
/**
|
|
101
|
+
* How Telegram reaches the webhook intake on a cluster of `kind`: on this machine's
|
|
102
|
+
* address, from k3s on it; on the node's, from the cluster in Docker, whose port the
|
|
103
|
+
* machine maps; through a LoadBalancer Service, on one a kubeconfig reaches.
|
|
104
|
+
*/
|
|
105
|
+
const EXPOSURES = { host: "hostAddress", docker: "node", kubeconfig: "loadBalancer" };
|
|
97
106
|
/** The config file is not what alasio runs from: where, and which key and why. */
|
|
98
107
|
export class OperatorConfigError extends Schema.TaggedError()("OperatorConfigError", {
|
|
99
108
|
path: Schema.String,
|
|
@@ -114,20 +123,26 @@ export class NotInitialized extends Schema.TaggedError()("NotInitialized", {
|
|
|
114
123
|
/**
|
|
115
124
|
* The install configuration of `install`, with the Secrets alasio names: the bot's,
|
|
116
125
|
* and Claude Code's when `claude`, as alasio finds Claude Code's login in its home when
|
|
117
|
-
* there is none
|
|
118
|
-
*
|
|
126
|
+
* there is none; and with how the webhook intake is reached, as the cluster's `target`
|
|
127
|
+
* makes it. On a cluster alasio may share with others (one a kubeconfig reaches), its
|
|
128
|
+
* pods take no other's place unless autoscaling.preemption says.
|
|
119
129
|
*/
|
|
120
|
-
export function installConfigOf(install, { claude,
|
|
130
|
+
export function installConfigOf(install, { claude, target }) {
|
|
121
131
|
const alasio = Predicate.isObject(install["alasio"]) ? install["alasio"] : {};
|
|
122
132
|
const own = ["telegram", "claude"].find((key) => Predicate.hasProperty(alasio, key));
|
|
123
133
|
if (own)
|
|
124
134
|
return Result.fail(`install.alasio.${own} is alasio's own to say: its Secret is the one alasio init writes`);
|
|
125
|
-
|
|
135
|
+
if (Predicate.hasProperty(install["webhook"], "exposure"))
|
|
136
|
+
return Result.fail("install.webhook.exposure is alasio's own to say: the target makes it");
|
|
137
|
+
// Given as anything but a map, each is refused as it is.
|
|
126
138
|
const autoscaling = install["autoscaling"] ?? {};
|
|
139
|
+
const webhook = install["webhook"] ?? {};
|
|
140
|
+
const mapped = (value, defaults) => (Predicate.isObject(value) && !Array.isArray(value) ? { ...defaults, ...value } : value);
|
|
127
141
|
return Result.mapBoth(decodeInstallConfig({
|
|
128
142
|
...install,
|
|
129
143
|
alasio: { ...alasio, telegram: { existingSecret: TELEGRAM_SECRET }, claude: { existingSecret: claude ? CLAUDE_SECRET : "" } },
|
|
130
|
-
autoscaling:
|
|
144
|
+
autoscaling: mapped(autoscaling, { preemption: target !== "kubeconfig" }),
|
|
145
|
+
webhook: mapped(webhook, { exposure: EXPOSURES[target] }),
|
|
131
146
|
}), { onFailure: (error) => `install.${error.message}`, onSuccess: (config) => config });
|
|
132
147
|
}
|
|
133
148
|
/**
|
|
@@ -145,7 +160,7 @@ export function decodeOperatorConfig(path, input) {
|
|
|
145
160
|
return Result.fail(new OperatorConfigError({ path, reason: describeIssue((Result.isFailure(precise) ? precise : decoded).failure.issue) }));
|
|
146
161
|
}
|
|
147
162
|
const { target, install } = decoded.success;
|
|
148
|
-
const checked = installConfigOf(install, { claude: true,
|
|
163
|
+
const checked = installConfigOf(install, { claude: true, target: targetKind(target) });
|
|
149
164
|
if (Result.isFailure(checked))
|
|
150
165
|
return Result.fail(new OperatorConfigError({ path, reason: checked.failure }));
|
|
151
166
|
return Result.succeed({ path, file: input, target, install });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@ import { CPU_FEATURES_CONTAINER } from "../../src/node-agent/names.js";
|
|
|
3
3
|
import { currentGvisorRelease } from "./cluster/node.js";
|
|
4
4
|
import { kind, KubeApi } from "./kube/api.js";
|
|
5
5
|
import { selectorOf } from "./kube/rollout.js";
|
|
6
|
-
import { recordedCpuBaseline, SANDBOX_TEMPLATES } from "./manifests/alasio.js";
|
|
7
6
|
import { NAMESPACE, selectorLabels } from "./manifests/common.js";
|
|
7
|
+
import { GATEWAY, recordedCpuBaseline } from "./manifests/sandbox-gateway.js";
|
|
8
8
|
/** What a node agent's CPU_FEATURES_CONTAINER says. */
|
|
9
9
|
const Report = Schema.Struct({ release: Schema.String, cpuFeatures: Schema.Array(Schema.String) });
|
|
10
10
|
/** What the node agent's pod `pod` says of its node's CPU under gVisor's `release`. Pure, for tests. */
|
|
@@ -32,10 +32,14 @@ export const surveyCpu = Effect.gen(function* () {
|
|
|
32
32
|
const release = currentGvisorRelease();
|
|
33
33
|
return pods.filter((pod) => !pod.metadata?.deletionTimestamp).flatMap((pod) => nodeCpuOf(pod, release) ?? []).toSorted((a, b) => a.node.localeCompare(b.node));
|
|
34
34
|
});
|
|
35
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* The baseline the installation the cluster runs holds sessions to, as its sandbox
|
|
37
|
+
* gateway's configuration records it in its pools' template, and that configuration,
|
|
38
|
+
* which up carries the pools' templates before the current ones from.
|
|
39
|
+
*/
|
|
36
40
|
export const recordedBaseline = Effect.gen(function* () {
|
|
37
|
-
const
|
|
38
|
-
return {
|
|
41
|
+
const liveGateway = (yield* (yield* KubeApi).get({ ...kind("ConfigMap"), namespace: NAMESPACE, name: GATEWAY }))?.data?.["config.json"];
|
|
42
|
+
return { liveGateway, baseline: recordedCpuBaseline(liveGateway) };
|
|
39
43
|
});
|
|
40
44
|
/**
|
|
41
45
|
* The baseline `survey` comes to, beside the one `recorded` before, as the module says:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cpu-baseline.js","sourceRoot":"","sources":["../../../src/cpu-baseline.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cpu-baseline.js","sourceRoot":"","sources":["../../../src/cpu-baseline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Effect, Schema } from "effect";
|
|
2
|
+
import { CLAUDE_HARNESS, CODEX_HARNESS, harnessDisplayName } from "../../src/harness/names.js";
|
|
3
|
+
import { folderKey } from "../../src/gateway/names.js";
|
|
4
|
+
import { MAIN_ENVIRONMENT_NAME } from "../../src/branch/names.js";
|
|
5
|
+
import { gatewayCalls, GatewayUnreached } from "./gateway-calls.js";
|
|
6
|
+
import { kind, KubeApi } from "./kube/api.js";
|
|
7
|
+
import { NAMESPACE, SESSIONS_CALLER_SECRET } from "./manifests/common.js";
|
|
8
|
+
/** A folder instance, as the gateway lists it. */
|
|
9
|
+
const FolderInstance = Schema.Struct({
|
|
10
|
+
key: Schema.String,
|
|
11
|
+
harness: Schema.String,
|
|
12
|
+
conversation: Schema.String,
|
|
13
|
+
pod: Schema.NullOr(Schema.String),
|
|
14
|
+
boundAt: Schema.NullOr(Schema.String),
|
|
15
|
+
lastExecAt: Schema.NullOr(Schema.String),
|
|
16
|
+
failing: Schema.NullOr(Schema.Struct({ reason: Schema.String, at: Schema.String, times: Schema.Number, held: Schema.Boolean })),
|
|
17
|
+
});
|
|
18
|
+
const Listed = Schema.Struct({ folders: Schema.Array(FolderInstance) });
|
|
19
|
+
/** Calls the gateway as main, for `key`: what it answered. */
|
|
20
|
+
const asMain = (key, method, path) => Effect.gen(function* () {
|
|
21
|
+
const kube = yield* KubeApi;
|
|
22
|
+
const secret = yield* kube.get({ ...kind("Secret"), namespace: NAMESPACE, name: SESSIONS_CALLER_SECRET });
|
|
23
|
+
const callerKey = secret?.data?.["caller-key"];
|
|
24
|
+
if (!callerKey)
|
|
25
|
+
return yield* new GatewayUnreached({ reason: `${SESSIONS_CALLER_SECRET} holds no caller key of main's` });
|
|
26
|
+
const call = yield* gatewayCalls;
|
|
27
|
+
return yield* call({ callerKey: Buffer.from(callerKey, "base64"), environment: MAIN_ENVIRONMENT_NAME, key, method, path });
|
|
28
|
+
}).pipe(Effect.scoped);
|
|
29
|
+
export const folderInstances = asMain("folders", "GET", "/folders").pipe(Effect.flatMap(({ status, text }) => (status === 200 ? Effect.succeed(text) : Effect.fail(new GatewayUnreached({ reason: `it answered ${status}: ${text}` })))), Effect.flatMap((text) => Schema.decodeUnknownEffect(Schema.fromJsonString(Listed))(text)), Effect.map(({ folders }) => ({ listed: folders })), Effect.catch((error) => Effect.succeed({ unread: error.message })));
|
|
30
|
+
/** How long ago `at` was, of `now`, as people say it: in seconds, minutes, hours, or days. */
|
|
31
|
+
function ago(at, now) {
|
|
32
|
+
const seconds = Math.max(0, Math.round((now - Date.parse(at)) / 1000));
|
|
33
|
+
if (seconds < 120)
|
|
34
|
+
return `${seconds}s`;
|
|
35
|
+
const minutes = Math.round(seconds / 60);
|
|
36
|
+
return minutes < 120 ? `${minutes}m` : minutes < 48 * 60 ? `${Math.round(minutes / 60)}h` : `${Math.round(minutes / (24 * 60))}d`;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* What `alasio status` says of the folder instances `listed`, at `now`, a line each: its
|
|
40
|
+
* conversation and harness; bound, to which pod, for how long, and when its bayma last ran an
|
|
41
|
+
* exec, or released; and its binds' last failure, how many in a row, and whether it is held.
|
|
42
|
+
* Pure, for tests.
|
|
43
|
+
*/
|
|
44
|
+
export function describeFolders(listing, now) {
|
|
45
|
+
if ("unread" in listing)
|
|
46
|
+
return [`folder instances: not seen, as the sandbox gateway did not list them: ${listing.unread}`];
|
|
47
|
+
if (listing.listed.length === 0)
|
|
48
|
+
return ["folder instances: none bound"];
|
|
49
|
+
return ["folder instances:", ...listing.listed.map(({ conversation, harness, pod, boundAt, lastExecAt, failing }) => {
|
|
50
|
+
const of = ` ${conversation} under ${harnessDisplayName(harness === CLAUDE_HARNESS || harness === CODEX_HARNESS ? harness : null)}`;
|
|
51
|
+
const bound = pod === null ? "released" : `bound to ${pod}${boundAt === null ? "" : ` for ${ago(boundAt, now)}`}, ${lastExecAt === null ? "running an exec, or none yet" : `its last exec ${ago(lastExecAt, now)} ago`}`;
|
|
52
|
+
const failed = failing === null
|
|
53
|
+
? ""
|
|
54
|
+
: `; its last bind failed ${ago(failing.at, now)} ago, ${failing.times} in a row${failing.held ? ", so it is bound again only as the operator asks (Retry now, or alasio folder restart)" : ""}: ${failing.reason}`;
|
|
55
|
+
return `${of}: ${bound}${failed}`;
|
|
56
|
+
})];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Lets the folder instances of `conversation` go, each harness's, saved whole as each stops,
|
|
60
|
+
* so the next message makes them anew: what to say of each.
|
|
61
|
+
*/
|
|
62
|
+
export const restartFolder = (conversation) => Effect.forEach([CLAUDE_HARNESS, CODEX_HARNESS], (harness) => Effect.map(asMain(folderKey(harness, conversation), "POST", "/release"), ({ status, text }) => status === 204
|
|
63
|
+
? `${harnessDisplayName(harness)}: its folder instance of ${conversation} is let go, its REPL sessions saved, its failed binds forgotten; the next message makes it anew`
|
|
64
|
+
: status === 409
|
|
65
|
+
? `${harnessDisplayName(harness)}: its failed binds of ${conversation} are forgotten, but it is being started or stopped now, so it was not let go: ask again in a moment`
|
|
66
|
+
: `${harnessDisplayName(harness)}: the sandbox gateway did not let it go (${status}): ${text}`));
|
|
67
|
+
//# sourceMappingURL=folders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"folders.js","sourceRoot":"","sources":["../../../src/folders.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The command line's calls of the sandbox gateway's front (src/gateway/sessions.ts operate),
|
|
3
|
+
* through a port-forward to a gateway pod of its own: each call on a connection of its own,
|
|
4
|
+
* closed once answered, so its forward ends with it, with a token of the environment it is
|
|
5
|
+
* of, signed by that environment's key, which stops a minute after it is made.
|
|
6
|
+
*/
|
|
7
|
+
import { request } from "node:http";
|
|
8
|
+
import { createServer } from "node:net";
|
|
9
|
+
import { Clock, Effect, FiberSet, Schema } from "effect";
|
|
10
|
+
import { mintToken } from "../../src/binder/tokens.js";
|
|
11
|
+
import { runningPodIn } from "./commands/common.js";
|
|
12
|
+
import { KubeApi } from "./kube/api.js";
|
|
13
|
+
import { NAMESPACE } from "./manifests/common.js";
|
|
14
|
+
import { GATEWAY_COMPONENT, GATEWAY_PORT } from "./manifests/sandbox-gateway.js";
|
|
15
|
+
/** The gateway could not be reached, or a call of it not made; the reason says why. */
|
|
16
|
+
export class GatewayUnreached extends Schema.TaggedError()("GatewayUnreached", { reason: Schema.String }) {
|
|
17
|
+
get message() {
|
|
18
|
+
return this.reason;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/** A server on a free port of the loopback, open while the scope is, each connection forwarded by `forward`. */
|
|
22
|
+
const loopback = (forward) => Effect.acquireRelease(Effect.callback((resume) => {
|
|
23
|
+
const server = createServer(forward);
|
|
24
|
+
server.once("error", (error) => resume(Effect.fail(new GatewayUnreached({ reason: `no port of this machine could be listened on: ${error.message}` }))));
|
|
25
|
+
server.listen(0, "127.0.0.1", () => resume(Effect.succeed(server)));
|
|
26
|
+
}), (server) => Effect.sync(() => server.close()));
|
|
27
|
+
/**
|
|
28
|
+
* What calls the gateway while the scope is open, through a forward to one of its pods: a
|
|
29
|
+
* call answered whatever its status, failed only where it could not be made.
|
|
30
|
+
*/
|
|
31
|
+
export const gatewayCalls = Effect.gen(function* () {
|
|
32
|
+
const kube = yield* KubeApi;
|
|
33
|
+
const pod = yield* runningPodIn(NAMESPACE, GATEWAY_COMPONENT).pipe(Effect.mapError((error) => new GatewayUnreached({ reason: error.message })));
|
|
34
|
+
const run = yield* FiberSet.makeRuntime();
|
|
35
|
+
const server = yield* loopback((socket) => {
|
|
36
|
+
socket.on("error", () => socket.destroy());
|
|
37
|
+
run(kube.portForward({ namespace: NAMESPACE, pod }, GATEWAY_PORT, socket).pipe(Effect.catch(() => Effect.sync(() => socket.destroy()))));
|
|
38
|
+
});
|
|
39
|
+
// A server listening on a TCP port has an address of its own.
|
|
40
|
+
const { port } = server.address();
|
|
41
|
+
return ({ callerKey, environment, key, method, path }) => Effect.gen(function* () {
|
|
42
|
+
const token = mintToken(callerKey, { key, expires: (yield* Clock.currentTimeMillis) + 60_000, options: { environment } });
|
|
43
|
+
return yield* Effect.tryPromise({
|
|
44
|
+
try: (signal) => new Promise((resolve, reject) => {
|
|
45
|
+
const asked = request({ host: "127.0.0.1", port, method, path, headers: { authorization: `Bearer ${token}` }, agent: false, signal }, (response) => {
|
|
46
|
+
const chunks = [];
|
|
47
|
+
response.on("data", (chunk) => chunks.push(chunk));
|
|
48
|
+
response.on("error", reject);
|
|
49
|
+
response.on("end", () => resolve({ status: response.statusCode ?? 0, text: Buffer.concat(chunks).toString("utf8") }));
|
|
50
|
+
});
|
|
51
|
+
asked.on("error", reject);
|
|
52
|
+
asked.end();
|
|
53
|
+
}),
|
|
54
|
+
catch: (error) => new GatewayUnreached({ reason: error instanceof Error ? error.message : String(error) }),
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=gateway-calls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-calls.js","sourceRoot":"","sources":["../../../src/gateway-calls.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/src/install.js
CHANGED
|
@@ -1,23 +1,45 @@
|
|
|
1
1
|
import { Effect, Result, Schema } from "effect";
|
|
2
|
+
import { readApiServer } from "./api-server.js";
|
|
2
3
|
import { gvisorReleases as gvisorReleasesOf, NODE_PINS } from "./cluster/node.js";
|
|
3
|
-
import { installConfigOf, OperatorConfigError,
|
|
4
|
+
import { installConfigOf, OperatorConfigError, targetKind } from "./config.js";
|
|
4
5
|
import { decideCpuBaseline, recordedBaseline, sameBaseline, surveyCpu } from "./cpu-baseline.js";
|
|
5
6
|
import { clusterReleases } from "./kept-releases.js";
|
|
6
|
-
import { KubeApi } from "./kube/api.js";
|
|
7
|
+
import { describeRef, hasStatus, kind, KubeApi, refOf } from "./kube/api.js";
|
|
7
8
|
import { applyInstallation, labelled } from "./kube/apply.js";
|
|
8
9
|
import { checkAutoscalers } from "./kube/autoscalers.js";
|
|
9
10
|
import { checkObjectStoreLayout, checkObjectStoreScale } from "./kube/object-store-scale.js";
|
|
10
11
|
import { labels, NAMESPACE, nodeAgentRuns } from "./manifests/common.js";
|
|
12
|
+
import { mountServices as mountServicesOf, sandboxServiceRuns } from "./manifests/sandbox-gateway.js";
|
|
11
13
|
import { carriedFrom, manifests, NOTHING_CARRIED } from "./manifests/index.js";
|
|
12
|
-
import {
|
|
14
|
+
import { checkNeonStorage } from "./neon-storage.js";
|
|
15
|
+
import { botChecksum, ensureBotChecksumKey, readBotChecksumKey, readClaudeToken, readTelegramBot } from "./secrets.js";
|
|
16
|
+
import { ensureRoute, registerBot } from "./webhook.js";
|
|
13
17
|
/** alasio's namespace. */
|
|
14
18
|
const NAMESPACE_OBJECT = { apiVersion: "v1", kind: "Namespace", metadata: { name: NAMESPACE, labels: labels("alasio") } };
|
|
19
|
+
/** The UIDs of the Services `names` of alasio's namespace, as the nodes' mount reaches them by address (../manifests/sandbox-gateway.ts mountServices), each by its name, null where it is not there. */
|
|
20
|
+
export const readMountServices = (names) => Effect.gen(function* () {
|
|
21
|
+
const api = yield* KubeApi;
|
|
22
|
+
const read = yield* Effect.forEach(names, (name) => Effect.map(api.get({ ...kind("Service"), namespace: NAMESPACE, name }), (service) => [name, service?.metadata?.uid ?? null]));
|
|
23
|
+
return Object.fromEntries(read);
|
|
24
|
+
});
|
|
15
25
|
/** The objects of the installation `config` describes, with what it carries forward from the one it replaces. */
|
|
16
26
|
export function installationObjects(config, carried = NOTHING_CARRIED) {
|
|
17
27
|
return [NAMESPACE_OBJECT, ...manifests(config, carried)];
|
|
18
28
|
}
|
|
19
29
|
/** alasio's namespace, applied as the installation's, so its Secrets can be written before the rest of it is. */
|
|
20
30
|
export const applyNamespace = Effect.flatMap(KubeApi, (kube) => kube.apply(labelled(NAMESPACE_OBJECT))).pipe(Effect.asVoid);
|
|
31
|
+
/** The configuration names no address for Telegram to deliver to. */
|
|
32
|
+
export class PublicAddressNotSet extends Schema.TaggedError()("PublicAddressNotSet", {}) {
|
|
33
|
+
get message() {
|
|
34
|
+
return "install.webhook.publicAddress is not set: the address Telegram delivers the bot's updates to, which the webhook intake's certificate is made for; alasio init asks for it";
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/** The bot's Secret allows no user: alasio would answer no one, as it admits no one by default. */
|
|
38
|
+
export class NoUserAllowed extends Schema.TaggedError()("NoUserAllowed", {}) {
|
|
39
|
+
get message() {
|
|
40
|
+
return "the bot allows no Telegram user (alasio-telegram's allowedUserIds is empty), and alasio admits no one but those it allows: alasio init --allowed-user-ids gives it them";
|
|
41
|
+
}
|
|
42
|
+
}
|
|
21
43
|
/** The cluster has no bot's Secret: alasio has not been given its bot. */
|
|
22
44
|
export class BotNotSet extends Schema.TaggedError()("BotNotSet", {}) {
|
|
23
45
|
get message() {
|
|
@@ -27,45 +49,125 @@ export class BotNotSet extends Schema.TaggedError()("BotNotSet", {}) {
|
|
|
27
49
|
/** The install configuration of `config`, which names Claude Code's Secret when the cluster has it. */
|
|
28
50
|
export const installConfig = Effect.fnUntraced(function* (config) {
|
|
29
51
|
const claude = (yield* readClaudeToken) !== null;
|
|
30
|
-
const install = installConfigOf(config.install, { claude,
|
|
52
|
+
const install = installConfigOf(config.install, { claude, target: targetKind(config.target) });
|
|
31
53
|
if (Result.isFailure(install))
|
|
32
54
|
return yield* new OperatorConfigError({ path: config.path, reason: install.failure });
|
|
33
55
|
return install.success;
|
|
34
56
|
});
|
|
57
|
+
/** Whether the installation `settings` confines what reaches its API server to it, by NetworkPolicies, but could not, as `apiServer` was not read. */
|
|
58
|
+
export const apiServerUnconfined = (settings, apiServer) => apiServer === null && settings.networkPolicies.enabled && sandboxServiceRuns(settings);
|
|
59
|
+
/** An object the cluster has that cannot take this release's of it, and why, as a dry run of its apply said. */
|
|
60
|
+
const Refusal = Schema.Struct({ object: Schema.String, reason: Schema.String });
|
|
61
|
+
/**
|
|
62
|
+
* The cluster has objects of the installation that cannot take this release's of them, as
|
|
63
|
+
* applying each as a dry run said, all of them told at once: nothing is applied, as one
|
|
64
|
+
* refused midway would leave the installation half of one release, half of the other.
|
|
65
|
+
*/
|
|
66
|
+
export class ObjectRefused extends Schema.TaggedError()("ObjectRefused", { refused: Schema.NonEmptyArray(Refusal) }) {
|
|
67
|
+
get message() {
|
|
68
|
+
const [first, ...more] = this.refused;
|
|
69
|
+
return more.length === 0
|
|
70
|
+
? `the cluster's ${first.object} cannot take this release's of it (${first.reason}), so alasio applies nothing`
|
|
71
|
+
: `the cluster's objects cannot take this release's of them, so alasio applies nothing:\n${this.refused.map(({ object, reason }) => ` ${object}: ${reason}`).join("\n")}`;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Refuses `objects` where the cluster has any that cannot take this release's of it, each
|
|
76
|
+
* applied as a dry run, every one refused told at once. A Job, whose pod template cannot
|
|
77
|
+
* change, is left out: it is run afresh, one of its name deleted first (./kube/apply.ts).
|
|
78
|
+
*/
|
|
79
|
+
const checkApplicable = (objects) => Effect.flatMap(KubeApi, (kube) => Effect.forEach(objects.filter(({ kind }) => kind !== "Job"), (object) => {
|
|
80
|
+
const ref = refOf(object);
|
|
81
|
+
return Effect.flatMap(kube.get(ref), (live) => live
|
|
82
|
+
? kube.dryApply(labelled(object)).pipe(Effect.as(null), Effect.catchIf(hasStatus(422), (error) => Effect.succeed({ object: describeRef(ref), reason: error.reason })))
|
|
83
|
+
: Effect.succeed(null));
|
|
84
|
+
}, { concurrency: 8 }).pipe(Effect.flatMap((each) => {
|
|
85
|
+
const refused = each.filter((refusal) => refusal !== null).sort((a, b) => a.object.localeCompare(b.object));
|
|
86
|
+
const [first, ...more] = refused;
|
|
87
|
+
return first === undefined ? Effect.void : Effect.fail(new ObjectRefused({ refused: [first, ...more] }));
|
|
88
|
+
})));
|
|
89
|
+
/**
|
|
90
|
+
* The sessions' namespace holds session workspaces of the release before: its Sandboxes, and
|
|
91
|
+
* their workspaces' claims, which this release runs no session on and moves nothing of. alasio
|
|
92
|
+
* applies nothing while one remains, saying how to delete each, which deletes its files.
|
|
93
|
+
*/
|
|
94
|
+
export class SessionWorkspacesLeft extends Schema.TaggedError()("SessionWorkspacesLeft", {
|
|
95
|
+
namespace: Schema.String,
|
|
96
|
+
sandboxes: Schema.Array(Schema.String),
|
|
97
|
+
claims: Schema.Array(Schema.String),
|
|
98
|
+
}) {
|
|
99
|
+
get message() {
|
|
100
|
+
const deletions = [
|
|
101
|
+
...this.sandboxes.map((name) => `kubectl -n ${this.namespace} delete sandboxes.agents.x-k8s.io ${name}`),
|
|
102
|
+
...this.claims.map((name) => `kubectl -n ${this.namespace} delete pvc ${name}`),
|
|
103
|
+
];
|
|
104
|
+
return `${this.namespace} holds session workspaces of the release before (${[...this.sandboxes.map((name) => `Sandbox ${name}`), ...this.claims.map((name) => `claim ${name}`)].join(", ")}), ` +
|
|
105
|
+
`which this release runs no session on and moves nothing of, so alasio applies nothing: delete each first, its files with it (${deletions.join("; ")})`;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/** Refuses a cluster whose sessions' namespace, `namespace`, holds the release before's session workspaces (SessionWorkspacesLeft); none where its Sandboxes' CRD is gone. */
|
|
109
|
+
const checkSessionWorkspacesGone = (namespace) => Effect.gen(function* () {
|
|
110
|
+
const kube = yield* KubeApi;
|
|
111
|
+
const names = (objects) => objects.map(({ metadata }) => metadata?.name ?? "").sort();
|
|
112
|
+
const sandboxes = names(yield* kube.list(kind("Sandbox"), { namespace }).pipe(Effect.catchIf(hasStatus(404), () => Effect.succeed([]))));
|
|
113
|
+
// This release claims no volume there: each claim is a workspace of the release before's.
|
|
114
|
+
const claims = names(yield* kube.list(kind("PersistentVolumeClaim"), { namespace }));
|
|
115
|
+
if (sandboxes.length > 0 || claims.length > 0)
|
|
116
|
+
return yield* new SessionWorkspacesLeft({ namespace, sandboxes, claims });
|
|
117
|
+
});
|
|
35
118
|
/**
|
|
36
119
|
* The installation `config` describes, with its bot, refused where applying it would not do:
|
|
37
|
-
* with no bot set,
|
|
38
|
-
*
|
|
120
|
+
* with no bot set, or one that allows no user, with no address for Telegram to deliver to,
|
|
121
|
+
* against the cluster's own autoscalers, its object store's layout and scale, or Neon's
|
|
122
|
+
* storage (./neon-storage.ts), where the sessions' namespace holds the release before's session
|
|
123
|
+
* workspaces (SessionWorkspacesLeft), or where an object the cluster has cannot take this
|
|
124
|
+
* release's of it. Its objects carry forward what the installation they replace recorded.
|
|
39
125
|
*/
|
|
40
|
-
export const checkInstallation = Effect.fnUntraced(function* (config) {
|
|
126
|
+
export const checkInstallation = Effect.fnUntraced(function* (config, wait) {
|
|
41
127
|
const bot = yield* readTelegramBot;
|
|
42
128
|
if (!bot)
|
|
43
129
|
return yield* new BotNotSet();
|
|
130
|
+
if (bot.allowedUserIds.length === 0)
|
|
131
|
+
return yield* new NoUserAllowed();
|
|
44
132
|
const settings = yield* installConfig(config);
|
|
45
|
-
|
|
133
|
+
if (!settings.webhook.publicAddress)
|
|
134
|
+
return yield* new PublicAddressNotSet();
|
|
135
|
+
const { liveGateway, baseline: recorded } = yield* recordedBaseline;
|
|
46
136
|
const gvisorReleases = yield* clusterReleases(gvisorReleasesOf(NODE_PINS));
|
|
47
|
-
|
|
137
|
+
// None where the bot's Secret has no key for it yet, as up gives it one before it checks (ensureBotChecksumKey).
|
|
138
|
+
const key = yield* readBotChecksumKey;
|
|
139
|
+
const checksum = key === null ? null : botChecksum(bot, key);
|
|
140
|
+
const apiServer = yield* readApiServer;
|
|
141
|
+
const mountServices = yield* readMountServices(mountServicesOf(settings));
|
|
142
|
+
const objects = installationObjects(settings, carriedFrom(settings, { cpuBaseline: recorded, gvisorReleases, botChecksum: checksum, apiServer, mountServices }, liveGateway));
|
|
48
143
|
yield* checkAutoscalers(objects, settings);
|
|
49
144
|
yield* checkObjectStoreLayout(objects);
|
|
50
145
|
yield* checkObjectStoreScale(objects);
|
|
51
|
-
|
|
146
|
+
yield* checkNeonStorage(settings, wait);
|
|
147
|
+
if (settings.sessions.enabled)
|
|
148
|
+
yield* checkSessionWorkspacesGone(settings.sessions.namespace);
|
|
149
|
+
yield* checkApplicable(objects);
|
|
150
|
+
return { bot, settings, objects, liveGateway, recorded, gvisorReleases, checksum, apiServer, mountServices };
|
|
52
151
|
});
|
|
53
152
|
/**
|
|
54
|
-
* Applies the installation `config` describes, once its bot is set,
|
|
55
|
-
*
|
|
56
|
-
* before, then to the one the node agents' pods
|
|
57
|
-
* again where that differs.
|
|
153
|
+
* Applies the installation `config` describes, once its bot is set, waits until it runs,
|
|
154
|
+
* and has Telegram deliver main's bot's updates to it. Where sessions are snapshotted, it
|
|
155
|
+
* holds them to the CPU baseline it recorded before, then to the one the node agents' pods
|
|
156
|
+
* then say (./cpu-baseline.ts), applied again where that differs.
|
|
58
157
|
*/
|
|
59
158
|
export const install = Effect.fnUntraced(function* (config, options) {
|
|
60
|
-
|
|
159
|
+
yield* ensureBotChecksumKey;
|
|
160
|
+
const { bot, settings, objects, liveGateway, recorded, gvisorReleases, checksum, apiServer, mountServices } = yield* checkInstallation(config, options);
|
|
161
|
+
const route = yield* ensureRoute("main", bot.allowedUserIds);
|
|
61
162
|
yield* applyInstallation(objects, options);
|
|
62
|
-
|
|
163
|
+
yield* registerBot(settings, "main", bot, route, options);
|
|
164
|
+
const installed = { bot, claude: settings.alasio.claude.existingSecret !== "", apiServerUnconfined: apiServerUnconfined(settings, apiServer) };
|
|
63
165
|
if (!nodeAgentRuns(settings))
|
|
64
166
|
return { ...installed, cpuBaseline: null };
|
|
65
167
|
const decision = decideCpuBaseline(yield* surveyCpu, recorded);
|
|
66
168
|
// Carried from the installation before this one, as the first apply carried it.
|
|
67
169
|
if (!sameBaseline(decision.baseline, recorded)) {
|
|
68
|
-
yield* applyInstallation(installationObjects(settings, carriedFrom(settings,
|
|
170
|
+
yield* applyInstallation(installationObjects(settings, carriedFrom(settings, { cpuBaseline: decision.baseline, gvisorReleases, botChecksum: checksum, apiServer, mountServices }, liveGateway)), options);
|
|
69
171
|
}
|
|
70
172
|
return { ...installed, cpuBaseline: decision };
|
|
71
173
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/install.ts"],"names":[],"mappings":"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"}
|