alasio 9.0.0 → 10.0.1

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 (148) hide show
  1. package/dist/cli/src/bound-harnesses.js +98 -0
  2. package/dist/cli/src/bound-harnesses.js.map +1 -0
  3. package/dist/cli/src/branches.js +30 -14
  4. package/dist/cli/src/branches.js.map +1 -1
  5. package/dist/cli/src/cluster/docker.js +21 -11
  6. package/dist/cli/src/cluster/docker.js.map +1 -1
  7. package/dist/cli/src/cluster/host.js +5 -1
  8. package/dist/cli/src/cluster/host.js.map +1 -1
  9. package/dist/cli/src/cluster/k3s.js +68 -3
  10. package/dist/cli/src/cluster/k3s.js.map +1 -1
  11. package/dist/cli/src/cluster/node.js +47 -13
  12. package/dist/cli/src/cluster/node.js.map +1 -1
  13. package/dist/cli/src/cluster/stargz.js +40 -3
  14. package/dist/cli/src/cluster/stargz.js.map +1 -1
  15. package/dist/cli/src/commands/common.js +2 -2
  16. package/dist/cli/src/commands/common.js.map +1 -1
  17. package/dist/cli/src/commands/lake.js +1 -1
  18. package/dist/cli/src/commands/lake.js.map +1 -1
  19. package/dist/cli/src/commands/login-relay.js +91 -0
  20. package/dist/cli/src/commands/login-relay.js.map +1 -0
  21. package/dist/cli/src/commands/login.js +11 -10
  22. package/dist/cli/src/commands/login.js.map +1 -1
  23. package/dist/cli/src/commands/logs.js +89 -6
  24. package/dist/cli/src/commands/logs.js.map +1 -1
  25. package/dist/cli/src/commands/restart.js +10 -4
  26. package/dist/cli/src/commands/restart.js.map +1 -1
  27. package/dist/cli/src/commands/restore-filer-store.js +27 -10
  28. package/dist/cli/src/commands/restore-filer-store.js.map +1 -1
  29. package/dist/cli/src/commands/status.js +59 -12
  30. package/dist/cli/src/commands/status.js.map +1 -1
  31. package/dist/cli/src/commands/up.js +9 -6
  32. package/dist/cli/src/commands/up.js.map +1 -1
  33. package/dist/cli/src/commands/upgrade.js +14 -5
  34. package/dist/cli/src/commands/upgrade.js.map +1 -1
  35. package/dist/cli/src/folders.js +9 -13
  36. package/dist/cli/src/folders.js.map +1 -1
  37. package/dist/cli/src/gateway-calls.js +14 -8
  38. package/dist/cli/src/gateway-calls.js.map +1 -1
  39. package/dist/cli/src/install.js +7 -41
  40. package/dist/cli/src/install.js.map +1 -1
  41. package/dist/cli/src/kube/api.js +59 -12
  42. package/dist/cli/src/kube/api.js.map +1 -1
  43. package/dist/cli/src/kube/apply.js +107 -9
  44. package/dist/cli/src/kube/apply.js.map +1 -1
  45. package/dist/cli/src/kube/object-store-scale.js +10 -7
  46. package/dist/cli/src/kube/object-store-scale.js.map +1 -1
  47. package/dist/cli/src/kube/rollout.js +16 -6
  48. package/dist/cli/src/kube/rollout.js.map +1 -1
  49. package/dist/cli/src/main.js +2 -1
  50. package/dist/cli/src/main.js.map +1 -1
  51. package/dist/cli/src/manifests/admission.js +228 -11
  52. package/dist/cli/src/manifests/admission.js.map +1 -1
  53. package/dist/cli/src/manifests/alasio.js +151 -63
  54. package/dist/cli/src/manifests/alasio.js.map +1 -1
  55. package/dist/cli/src/manifests/branch.js +6 -1
  56. package/dist/cli/src/manifests/branch.js.map +1 -1
  57. package/dist/cli/src/manifests/codex-login.js +101 -0
  58. package/dist/cli/src/manifests/codex-login.js.map +1 -0
  59. package/dist/cli/src/manifests/collector.js +26 -21
  60. package/dist/cli/src/manifests/collector.js.map +1 -1
  61. package/dist/cli/src/manifests/common.js +50 -23
  62. package/dist/cli/src/manifests/common.js.map +1 -1
  63. package/dist/cli/src/manifests/config.js +79 -30
  64. package/dist/cli/src/manifests/config.js.map +1 -1
  65. package/dist/cli/src/manifests/disruption.js +8 -3
  66. package/dist/cli/src/manifests/disruption.js.map +1 -1
  67. package/dist/cli/src/manifests/folders.js +8 -5
  68. package/dist/cli/src/manifests/folders.js.map +1 -1
  69. package/dist/cli/src/manifests/harness-pools.js +236 -0
  70. package/dist/cli/src/manifests/harness-pools.js.map +1 -0
  71. package/dist/cli/src/manifests/image-holder.js +61 -0
  72. package/dist/cli/src/manifests/image-holder.js.map +1 -0
  73. package/dist/cli/src/manifests/index.js +6 -2
  74. package/dist/cli/src/manifests/index.js.map +1 -1
  75. package/dist/cli/src/manifests/keda.js +4 -2
  76. package/dist/cli/src/manifests/keda.js.map +1 -1
  77. package/dist/cli/src/manifests/lake.js +1 -17
  78. package/dist/cli/src/manifests/lake.js.map +1 -1
  79. package/dist/cli/src/manifests/log.js +63 -16
  80. package/dist/cli/src/manifests/log.js.map +1 -1
  81. package/dist/cli/src/manifests/neon.js +57 -77
  82. package/dist/cli/src/manifests/neon.js.map +1 -1
  83. package/dist/cli/src/manifests/network-policies.js +111 -39
  84. package/dist/cli/src/manifests/network-policies.js.map +1 -1
  85. package/dist/cli/src/manifests/node-agent.js +39 -19
  86. package/dist/cli/src/manifests/node-agent.js.map +1 -1
  87. package/dist/cli/src/manifests/object-store.js +98 -24
  88. package/dist/cli/src/manifests/object-store.js.map +1 -1
  89. package/dist/cli/src/manifests/sandbox-gateway.js +147 -46
  90. package/dist/cli/src/manifests/sandbox-gateway.js.map +1 -1
  91. package/dist/cli/src/manifests/scalers.js +5 -4
  92. package/dist/cli/src/manifests/scalers.js.map +1 -1
  93. package/dist/cli/src/manifests/sizing.js +1 -1
  94. package/dist/cli/src/manifests/sizing.js.map +1 -1
  95. package/dist/cli/src/manifests/valkey.js +19 -5
  96. package/dist/cli/src/manifests/valkey.js.map +1 -1
  97. package/dist/cli/src/manifests/volume-lock.js +43 -0
  98. package/dist/cli/src/manifests/volume-lock.js.map +1 -0
  99. package/dist/cli/src/manifests/vpa.js +12 -1
  100. package/dist/cli/src/manifests/vpa.js.map +1 -1
  101. package/dist/cli/src/manifests/workspace-storage.js +19 -16
  102. package/dist/cli/src/manifests/workspace-storage.js.map +1 -1
  103. package/dist/cli/src/neon-storage.js +0 -2
  104. package/dist/cli/src/neon-storage.js.map +1 -1
  105. package/dist/cli/src/release.js +9 -9
  106. package/dist/cli/src/release.js.map +1 -1
  107. package/dist/cli/src/target.js +2 -2
  108. package/dist/cli/src/target.js.map +1 -1
  109. package/dist/cli/src/telegram.js +13 -4
  110. package/dist/cli/src/telegram.js.map +1 -1
  111. package/dist/cli/src/wakes.js +68 -0
  112. package/dist/cli/src/wakes.js.map +1 -0
  113. package/dist/cli/src/webhook.js +5 -2
  114. package/dist/cli/src/webhook.js.map +1 -1
  115. package/dist/cluster/node/pins.json +6 -5
  116. package/dist/neon/control/branches.js +11 -4
  117. package/dist/neon/control/branches.js.map +1 -1
  118. package/dist/neon/control/endpoints.js +81 -10
  119. package/dist/neon/control/endpoints.js.map +1 -1
  120. package/dist/neon/control/secrets.js +11 -6
  121. package/dist/neon/control/secrets.js.map +1 -1
  122. package/dist/src/binder/bindings.js +195 -0
  123. package/dist/src/binder/bindings.js.map +1 -0
  124. package/dist/src/binder/names.js +30 -0
  125. package/dist/src/binder/names.js.map +1 -1
  126. package/dist/src/binder/tokens.js +17 -4
  127. package/dist/src/binder/tokens.js.map +1 -1
  128. package/dist/src/branch/names.js +10 -6
  129. package/dist/src/branch/names.js.map +1 -1
  130. package/dist/src/events/names.js +24 -3
  131. package/dist/src/events/names.js.map +1 -1
  132. package/dist/src/gateway/names.js +44 -5
  133. package/dist/src/gateway/names.js.map +1 -1
  134. package/dist/src/harness/names.js +18 -0
  135. package/dist/src/harness/names.js.map +1 -1
  136. package/dist/src/kube/client.js +212 -0
  137. package/dist/src/kube/client.js.map +1 -0
  138. package/dist/src/kube/sandbox-shape.js +6 -0
  139. package/dist/src/kube/sandbox-shape.js.map +1 -1
  140. package/dist/src/kube/started-map.js +12 -0
  141. package/dist/src/kube/started-map.js.map +1 -0
  142. package/dist/src/node-agent/names.js +16 -8
  143. package/dist/src/node-agent/names.js.map +1 -1
  144. package/dist/src/telegram/bot-commands.js +17 -0
  145. package/dist/src/telegram/bot-commands.js.map +1 -0
  146. package/dist/src/telegram/stop.js +12 -0
  147. package/dist/src/telegram/stop.js.map +1 -0
  148. package/package.json +1 -1
@@ -0,0 +1,212 @@
1
+ /**
2
+ * alasio's one door to the Kubernetes API (decision 001 of the Kubernetes design): a
3
+ * narrow client over @kubernetes/client-node, so the modules that drive workloads take
4
+ * this small service and their tests a fake of it.
5
+ *
6
+ * In a pod it authenticates as the pod's ServiceAccount; elsewhere (tests, a developer's
7
+ * machine) as the current context of `KUBECONFIG` or ~/.kube/config.
8
+ */
9
+ import { request } from "node:http";
10
+ import { createInterface } from "node:readline";
11
+ import { PassThrough } from "node:stream";
12
+ import { finished } from "node:stream/promises";
13
+ import { isDeepStrictEqual } from "node:util";
14
+ import { CoreV1Api, Exec, KubeConfig, KubernetesObjectApi, PatchStrategy, setHeaderOptions } from "@kubernetes/client-node";
15
+ import { Cause, Context, Effect, Layer, Predicate, Queue, Result, Schema, Stream } from "effect";
16
+ /** The annotation of the bookmark that ends a watch's initial events. */
17
+ export const INITIAL_EVENTS_END = "k8s.io/initial-events-end";
18
+ /** The API refused a call, or could not be reached: the status it answered with, when it answered. */
19
+ export class KubeApiError extends Schema.TaggedError()("KubeApiError", {
20
+ /** The API's HTTP status (404 for absent, 409 for a conflict), when it answered. */
21
+ status: Schema.optional(Schema.Number),
22
+ cause: Schema.Defect(),
23
+ }) {
24
+ /** What a call failed with, read for the status the API answered with (the client's ApiException carries it as `code`). */
25
+ static of(cause) {
26
+ return new KubeApiError({ status: Predicate.hasProperty(cause, "code") && Predicate.isNumber(cause.code) ? cause.code : undefined, cause });
27
+ }
28
+ get message() {
29
+ return this.cause instanceof Error ? this.cause.message : String(this.cause);
30
+ }
31
+ }
32
+ /** A command `exec` ran in a container came to no exit code: its output overflowed, or the exec itself failed. */
33
+ export class KubeExecError extends Schema.TaggedError()("KubeExecError", {
34
+ message: Schema.String,
35
+ }) {
36
+ }
37
+ /** Whether `error` is the API's answer `status`. */
38
+ export const hasStatus = (status) => (error) => error.status === status;
39
+ /** Whether `value` is a JSON object, which a merge patch merges key by key. */
40
+ const isJsonObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
41
+ /**
42
+ * The JSON merge patch (RFC 7386) that makes `from` into `to`: objects patched key by key,
43
+ * with null for each key `to` has no value for, and anything else, arrays included,
44
+ * given whole. A merge patch cannot set a null, so a null in `to` is a key it lacks.
45
+ */
46
+ export function mergePatch(from, to) {
47
+ if (!isJsonObject(from) || !isJsonObject(to))
48
+ return to;
49
+ const patch = {};
50
+ for (const [key, value] of Object.entries(from)) {
51
+ if (value !== undefined && to[key] === undefined)
52
+ patch[key] = null;
53
+ }
54
+ for (const [key, value] of Object.entries(to)) {
55
+ if (value === undefined || isDeepStrictEqual(from[key], value))
56
+ continue;
57
+ patch[key] = mergePatch(from[key], value);
58
+ }
59
+ return patch;
60
+ }
61
+ const DEFAULT_EXEC_MAX_BYTES = 16 * 1024 * 1024;
62
+ /**
63
+ * How long a watch hears nothing before its connection is taken for lost and the watch
64
+ * fails: one and a half times the minute between the bookmarks the API server sends a watch
65
+ * that asks for them, however quiet what it watches.
66
+ */
67
+ export const WATCH_SILENCE_MS = 90_000;
68
+ /** The kubeconfig alasio runs with: its ServiceAccount in a pod, the default elsewhere. */
69
+ function loadKubeConfig() {
70
+ const kubeConfig = new KubeConfig();
71
+ kubeConfig.loadFromDefault();
72
+ return kubeConfig;
73
+ }
74
+ const ref = (apiVersion, kind, namespace, name) => ({ apiVersion, kind, metadata: { namespace, name } });
75
+ /**
76
+ * What a merge patch of the object sends: `patch`, addressed to the object, whose name
77
+ * and namespace sit in its metadata beside what `patch` changes there.
78
+ */
79
+ export function patchBody(apiVersion, kind, namespace, name, patch) {
80
+ const target = ref(apiVersion, kind, namespace, name);
81
+ const metadata = Predicate.hasProperty(patch, "metadata") && isJsonObject(patch.metadata) ? patch.metadata : {};
82
+ return { ...patch, ...target, metadata: { ...metadata, ...target.metadata } };
83
+ }
84
+ /** A call to the API, its rejection a KubeApiError. */
85
+ const call = (request) => Effect.tryPromise({ try: request, catch: KubeApiError.of });
86
+ /**
87
+ * The Kubernetes API, as alasio calls it. Objects are addressed by `apiVersion`, `kind`,
88
+ * namespace and name, so one set of calls serves every kind alike.
89
+ */
90
+ export class KubeClient extends Context.Service()("alasio/kube/KubeClient") {
91
+ /** The API alasio's kubeconfig (loadKubeConfig) reaches. */
92
+ static layer = Layer.sync(KubeClient, () => makeKubeClient(loadKubeConfig()));
93
+ }
94
+ /** The client over `kubeConfig`, its watches failing after `watchSilenceMs` of silence. */
95
+ export function makeKubeClient(kubeConfig, { watchSilenceMs = WATCH_SILENCE_MS } = {}) {
96
+ const objects = KubernetesObjectApi.makeApiClient(kubeConfig);
97
+ const core = kubeConfig.makeApiClient(CoreV1Api);
98
+ const executor = new Exec(kubeConfig);
99
+ const exec = Effect.fnUntraced(function* (namespace, pod, container, command, { maxBytes = DEFAULT_EXEC_MAX_BYTES } = {}) {
100
+ const stdout = new PassThrough();
101
+ const stderr = new PassThrough();
102
+ const out = [];
103
+ const err = [];
104
+ let size = 0;
105
+ let socket = null;
106
+ let overflowed = false;
107
+ stdout.on("data", (chunk) => {
108
+ size += chunk.length;
109
+ if (size > maxBytes) {
110
+ overflowed = true;
111
+ socket?.close();
112
+ return;
113
+ }
114
+ out.push(chunk);
115
+ });
116
+ stderr.on("data", (chunk) => err.push(chunk));
117
+ // Held in an object: the status callback sets it where control flow cannot see.
118
+ const reported = { status: null };
119
+ // The status arrives on its own channel before the socket closes; the output is
120
+ // whole once the socket has closed and both streams have drained.
121
+ yield* Effect.callback((resume) => {
122
+ executor
123
+ .exec(namespace, pod, container, [...command], stdout, stderr, null, false, (status) => { reported.status = status; })
124
+ .then((opened) => {
125
+ socket = opened;
126
+ opened.on("close", () => resume(Effect.void));
127
+ opened.on("error", (error) => resume(Effect.fail(KubeApiError.of(error))));
128
+ }, (error) => resume(Effect.fail(KubeApiError.of(error))));
129
+ return Effect.sync(() => socket?.close());
130
+ });
131
+ for (const stream of [stdout, stderr]) {
132
+ if (!stream.writableEnded)
133
+ stream.end();
134
+ }
135
+ // Both were ended just above, so both finish.
136
+ yield* Effect.promise(() => Promise.all([finished(stdout), finished(stderr)]));
137
+ if (overflowed) {
138
+ return yield* new KubeExecError({ message: `the output of ${JSON.stringify(command[0])} in ${namespace}/${pod} is over ${maxBytes} bytes` });
139
+ }
140
+ if (!reported.status)
141
+ return yield* new KubeExecError({ message: `exec in ${namespace}/${pod} ended without a status` });
142
+ return {
143
+ exitCode: yield* Effect.fromResult(exitCodeOf(reported.status)),
144
+ stdout: Buffer.concat(out),
145
+ stderr: Buffer.concat(err).toString("utf8"),
146
+ };
147
+ });
148
+ // Asked over node:http, as client-node's ProtoClient asks, not through its Watch: its request timeout, 30 s and not to be
149
+ // set, ends every watch of something quiet between two of the API server's bookmarks, so each would be listed anew twice a minute.
150
+ const watch = (apiVersion, plural, namespace, labelSelector, from) => Stream.callback((queue) => Effect.acquireRelease(Effect.tryPromise({
151
+ try: async () => {
152
+ const url = new URL(`${kubeConfig.getCurrentCluster()?.server ?? ""}/${apiVersion.includes("/") ? "apis" : "api"}/${apiVersion}/namespaces/${namespace}/${plural}`);
153
+ const since = from === undefined ? { sendInitialEvents: "true", resourceVersionMatch: "NotOlderThan" } : { resourceVersion: from };
154
+ for (const [name, value] of Object.entries({ watch: "true", labelSelector, allowWatchBookmarks: "true", ...since })) {
155
+ url.searchParams.set(name, value);
156
+ }
157
+ const options = {};
158
+ await kubeConfig.applyToHTTPSOptions(options);
159
+ const fail = (error) => void Queue.failCauseUnsafe(queue, Cause.fail(KubeApiError.of(error)));
160
+ const asked = request(url, options, (response) => {
161
+ response.on("error", fail);
162
+ if (response.statusCode !== 200) {
163
+ response.resume();
164
+ return fail(Object.assign(new Error(`watching ${url.pathname} was answered ${response.statusCode} ${response.statusMessage}`), { code: response.statusCode }));
165
+ }
166
+ const lines = createInterface({ input: response, crlfDelay: Infinity });
167
+ // What ends the response, the watch ended or its connection lost, ends the lines, which say so as their own error.
168
+ lines.on("error", fail);
169
+ lines.on("line", (line) => {
170
+ try {
171
+ const { type, object } = JSON.parse(line);
172
+ // The API server's own end of a watch it cannot go on with, as a Status: 410 where what it watched from is too old.
173
+ if (type === "ERROR")
174
+ fail(Object.assign(new Error(object.message ?? `watching ${url.pathname} failed`), { code: object.code }));
175
+ else
176
+ Queue.offerUnsafe(queue, { type, object });
177
+ }
178
+ catch (error) {
179
+ fail(error);
180
+ }
181
+ });
182
+ response.on("end", () => void Queue.endUnsafe(queue));
183
+ });
184
+ asked.setTimeout(watchSilenceMs, () => asked.destroy(new Error(`the watch of ${url.pathname} heard nothing for ${watchSilenceMs} ms`)));
185
+ asked.on("error", fail);
186
+ asked.end();
187
+ return asked;
188
+ },
189
+ catch: KubeApiError.of,
190
+ }), (asked) => Effect.sync(() => asked.destroy())));
191
+ return KubeClient.of({
192
+ read: (apiVersion, kind, namespace, name) => call(() => objects.read(ref(apiVersion, kind, namespace, name))).pipe(Effect.catchIf(hasStatus(404), () => Effect.succeed(null))),
193
+ list: (apiVersion, kind, namespace, labelSelector) => call(() => objects.list(apiVersion, kind, namespace, undefined, undefined, undefined, undefined, labelSelector)).pipe(Effect.map(({ items }) => items)),
194
+ create: (object) => call(() => objects.create(object)),
195
+ replace: (object) => call(() => objects.replace(object)),
196
+ patch: (apiVersion, kind, namespace, name, patch) => call(() => objects.patch(patchBody(apiVersion, kind, namespace, name, patch), undefined, undefined, "alasio", undefined, PatchStrategy.MergePatch)),
197
+ watch,
198
+ patchPodStatus: (namespace, name, patch) => call(() => core.patchNamespacedPodStatus({ namespace, name, body: patch, fieldManager: "alasio" }, setHeaderOptions("Content-Type", PatchStrategy.StrategicMergePatch))).pipe(Effect.asVoid),
199
+ remove: (apiVersion, kind, namespace, name, resourceVersion) => call(() => objects.delete(ref(apiVersion, kind, namespace, name), undefined, undefined, undefined, undefined, "Background", resourceVersion === undefined ? undefined : { preconditions: { resourceVersion } })).pipe(Effect.asVoid, Effect.catchIf(hasStatus(404), () => Effect.void)),
200
+ exec,
201
+ });
202
+ }
203
+ /** The exit code a `pods/exec` status reports: 0 on success, the process's own otherwise. */
204
+ export function exitCodeOf(status) {
205
+ if (status.status === "Success")
206
+ return Result.succeed(0);
207
+ const cause = status.details?.causes?.find((entry) => entry.reason === "ExitCode");
208
+ if (cause)
209
+ return Result.succeed(Number(cause.message));
210
+ return Result.fail(new KubeExecError({ message: `exec failed: ${status.message ?? status.reason ?? "unknown error"}` }));
211
+ }
212
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/kube/client.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,OAAO,EAAuB,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAyB,mBAAmB,EAAE,aAAa,EAAE,gBAAgB,EAAiB,MAAM,yBAAyB,CAAC;AAClK,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAyBjG,yEAAyE;AACzE,MAAM,CAAC,MAAM,kBAAkB,GAAG,2BAA2B,CAAC;AAE9D,sGAAsG;AACtG,MAAM,OAAO,YAAa,SAAQ,MAAM,CAAC,WAAW,EAAgB,CAAC,cAAc,EAAE;IACnF,oFAAoF;IACpF,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;CACvB,CAAC;IACA,2HAA2H;IAC3H,MAAM,CAAC,EAAE,CAAC,KAAc;QACtB,OAAO,IAAI,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9I,CAAC;IAED,IAAa,OAAO;QAClB,OAAO,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/E,CAAC;CACF;AAED,kHAAkH;AAClH,MAAM,OAAO,aAAc,SAAQ,MAAM,CAAC,WAAW,EAAiB,CAAC,eAAe,EAAE;IACtF,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CAAC;CAAG;AAEL,oDAAoD;AACpD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC,KAAmB,EAAW,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC;AAEvG,+EAA+E;AAC/E,MAAM,YAAY,GAAG,CAAC,KAAc,EAA8C,EAAE,CAClF,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAEvE;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAa,EAAE,EAAW;IACnD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC;IACxD,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,IAAI,KAAK,KAAK,SAAS,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACtE,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9C,IAAI,KAAK,KAAK,SAAS,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;YAAE,SAAS;QACzE,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAKD,MAAM,sBAAsB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEhD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEvC,2FAA2F;AAC3F,SAAS,cAAc;IACrB,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IACpC,UAAU,CAAC,eAAe,EAAE,CAAC;IAC7B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,GAAG,GAAG,CAAC,UAAkB,EAAE,IAAY,EAAE,SAAiB,EAAE,IAAY,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAEzI;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,UAAkB,EAAE,IAAY,EAAE,SAAiB,EAAE,IAAY,EAAE,KAAa;IACxG,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAChH,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;AAChF,CAAC;AAED,uDAAuD;AACvD,MAAM,IAAI,GAAG,CAAI,OAAyB,EAAkC,EAAE,CAC5E,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;AAE9D;;;GAGG;AACH,MAAM,OAAO,UAAW,SAAQ,OAAO,CAAC,OAAO,EAyC3C,CAAC,wBAAwB,CAAC;IAC5B,4DAA4D;IAC5D,MAAM,CAAU,KAAK,GAA4B,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;CACjH;AAED,2FAA2F;AAC3F,MAAM,UAAU,cAAc,CAAC,UAAsB,EAAE,EAAE,cAAc,GAAG,gBAAgB,EAAE,GAAyC,EAAE;IACrI,MAAM,OAAO,GAAG,mBAAmB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;IAEtC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EACtC,SAAiB,EACjB,GAAW,EACX,SAAiB,EACjB,OAA0B,EAC1B,EAAE,QAAQ,GAAG,sBAAsB,EAAE,GAAgB,EAAE;QAEvD,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,MAAM,GAAsB,IAAI,CAAC;QACrC,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAClC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;YACrB,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;gBACpB,UAAU,GAAG,IAAI,CAAC;gBAClB,MAAM,EAAE,KAAK,EAAE,CAAC;gBAChB,OAAO;YACT,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,gFAAgF;QAChF,MAAM,QAAQ,GAAgC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC/D,gFAAgF;QAChF,kEAAkE;QAClE,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAqB,CAAC,MAAM,EAAE,EAAE;YACpD,QAAQ;iBACL,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;iBACrH,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACf,MAAM,GAAG,MAAM,CAAC;gBAChB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC9C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7E,CAAC,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACtE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,KAAK,MAAM,MAAM,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,aAAa;gBAAE,MAAM,CAAC,GAAG,EAAE,CAAC;QAC1C,CAAC;QACD,8CAA8C;QAC9C,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,EAAE,OAAO,EAAE,iBAAiB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,SAAS,IAAI,GAAG,YAAY,QAAQ,QAAQ,EAAE,CAAC,CAAC;QAC/I,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,EAAE,OAAO,EAAE,WAAW,SAAS,IAAI,GAAG,yBAAyB,EAAE,CAAC,CAAC;QACzH,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC/D,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;YAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;SAC5C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,0HAA0H;IAC1H,mIAAmI;IACnI,MAAM,KAAK,GAAG,CAAC,UAAkB,EAAE,MAAc,EAAE,SAAiB,EAAE,aAAqB,EAAE,IAAa,EAA2C,EAAE,CACrJ,MAAM,CAAC,QAAQ,CAA2B,CAAC,KAAK,EAAE,EAAE,CAClD,MAAM,CAAC,cAAc,CACnB,MAAM,CAAC,UAAU,CAAC;QAChB,GAAG,EAAE,KAAK,IAAI,EAAE;YACd,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,UAAU,CAAC,iBAAiB,EAAE,EAAE,MAAM,IAAI,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,UAAU,eAAe,SAAS,IAAI,MAAM,EAAE,CAAC,CAAC;YACpK,MAAM,KAAK,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,EAAE,oBAAoB,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;YACnI,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;gBACpH,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACpC,CAAC;YACD,MAAM,OAAO,GAAmB,EAAE,CAAC;YACnC,MAAM,UAAU,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACvG,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE;gBAC/C,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC3B,IAAI,QAAQ,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;oBAChC,QAAQ,CAAC,MAAM,EAAE,CAAC;oBAClB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,QAAQ,iBAAiB,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;gBACjK,CAAC;gBACD,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACxE,mHAAmH;gBACnH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACxB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBACxB,IAAI,CAAC;wBACH,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAkG,CAAC;wBAC3I,oHAAoH;wBACpH,IAAI,IAAI,KAAK,OAAO;4BAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,YAAY,GAAG,CAAC,QAAQ,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;;4BAC5H,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;oBAClD,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,CAAC,KAAK,CAAC,CAAC;oBACd,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,gBAAgB,GAAG,CAAC,QAAQ,sBAAsB,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC;YACxI,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACxB,KAAK,CAAC,GAAG,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,EAAE,YAAY,CAAC,EAAE;KACvB,CAAC,EACF,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAC9C,CACF,CAAC;IAEJ,OAAO,UAAU,CAAC,EAAE,CAAC;QACnB,IAAI,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAC1C,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CACnE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAC3D;QACH,IAAI,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,CACnD,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACzJ,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtD,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACxD,KAAK,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAClD,IAAI,CAAC,GAAG,EAAE,CACR,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,UAAU,CAAC,CACxI;QACH,KAAK;QACL,cAAc,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CACzC,IAAI,CAAC,GAAG,EAAE,CACR,IAAI,CAAC,wBAAwB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,gBAAgB,CAAC,cAAc,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAC7J,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACvB,MAAM,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,CAC7D,IAAI,CAAC,GAAG,EAAE,CACR,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,eAAe,EAAE,EAAE,CAAC,CACrM,CAAC,IAAI,CACJ,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAClD;QACH,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,UAAU,CAAC,MAAgB;IACzC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;IACnF,IAAI,KAAK;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,EAAE,OAAO,EAAE,gBAAgB,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,IAAI,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3H,CAAC"}
@@ -16,6 +16,12 @@ export const NET_MODE_LABEL = "alasio.dev/net-mode";
16
16
  export const STOP_WAIT_ARG = "--stop-wait-ms";
17
17
  /** How long a session's bayma takes to stop once it holds its stop no more: it persists its sessions. */
18
18
  export const BAYMA_STOP_SECONDS = 30;
19
+ /**
20
+ * The variable bayma's hook, run as its sandbox is restored, takes why its host stopped the
21
+ * sandbox from, as the end of a sentence, to tell each live session's next exec (bayma's
22
+ * sandbox-hook help).
23
+ */
24
+ export const SANDBOX_STOP_REASON_VARIABLE = "BAYMA_SANDBOX_STOP_REASON";
19
25
  /** A path segment from `value`: never empty, nor starting with a dot. */
20
26
  export function sanitizePathToken(value) {
21
27
  return String(value).replace(/[^A-Za-z0-9_.-]+/g, "-").replace(/^[-.]+|-+$/g, "") || "default";
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-shape.js","sourceRoot":"","sources":["../../../../src/kube/sandbox-shape.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC;AAEvC,gFAAgF;AAChF,MAAM,CAAC,MAAM,cAAc,GAAG,qBAAqB,CAAC;AAEpD;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAE9C,yGAAyG;AACzG,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAErC,yEAAyE;AACzE,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;AACjG,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,6BAA6B,CAAC;AACzE,oGAAoG;AACpG,MAAM,CAAC,MAAM,uBAAuB,GAAG,iCAAiC,CAAC;AACzE,0GAA0G;AAC1G,MAAM,CAAC,MAAM,kBAAkB,GAAG,6CAA6C,CAAC;AAChF,yGAAyG;AACzG,MAAM,CAAC,MAAM,yBAAyB,GAAG,oCAAoC,CAAC;AAC9E,uGAAuG;AACvG,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AACtD,8HAA8H;AAC9H,MAAM,CAAC,MAAM,kBAAkB,GAAG,2BAA2B,CAAC;AAC9D;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,gCAAgC,CAAC;AAC5D,qIAAqI;AACrI,MAAM,CAAC,MAAM,IAAI,GAAG,uCAAuC,CAAC"}
1
+ {"version":3,"file":"sandbox-shape.js","sourceRoot":"","sources":["../../../../src/kube/sandbox-shape.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC;AAEvC,gFAAgF;AAChF,MAAM,CAAC,MAAM,cAAc,GAAG,qBAAqB,CAAC;AAEpD;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAE9C,yGAAyG;AACzG,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAErC;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,2BAA2B,CAAC;AAExE,yEAAyE;AACzE,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;AACjG,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,6BAA6B,CAAC;AACzE,oGAAoG;AACpG,MAAM,CAAC,MAAM,uBAAuB,GAAG,iCAAiC,CAAC;AACzE,0GAA0G;AAC1G,MAAM,CAAC,MAAM,kBAAkB,GAAG,6CAA6C,CAAC;AAChF,yGAAyG;AACzG,MAAM,CAAC,MAAM,yBAAyB,GAAG,oCAAoC,CAAC;AAC9E,uGAAuG;AACvG,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AACtD,8HAA8H;AAC9H,MAAM,CAAC,MAAM,kBAAkB,GAAG,2BAA2B,CAAC;AAC9D;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,gCAAgC,CAAC;AAC5D,qIAAqI;AACrI,MAAM,CAAC,MAAM,IAAI,GAAG,uCAAuC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Where alasio keeps the time of its last start (./started.ts), which `alasio status` reads
3
+ * while alasio runs no replica (cli/src/commands/status.ts), and whose ConfigMap alasio's
4
+ * manifests make, empty, alasio's Role letting it read and patch that one alone
5
+ * (cli/src/manifests/alasio.ts). In a module of its own, with no dependency, so the command
6
+ * line takes it as it is.
7
+ */
8
+ /** The ConfigMap alasio keeps the time of its last start in, of its namespace. */
9
+ export const STARTED_CONFIG_MAP = "alasio-started";
10
+ /** Its key holding the time, as an ISO 8601 timestamp. */
11
+ export const STARTED_KEY = "startedAt";
12
+ //# sourceMappingURL=started-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"started-map.js","sourceRoot":"","sources":["../../../../src/kube/started-map.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,kFAAkF;AAClF,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAEnD,0DAA0D;AAC1D,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC"}
@@ -102,13 +102,21 @@ export const gvisorHandler = (release) => `runsc-${gvisorLabel(release)}`;
102
102
  export const gvisorRuntimeClass = (release) => `gvisor-${gvisorLabel(release)}`;
103
103
  /** The version runsc of gVisor's `release` reports, and saves its images with: its release's tag. */
104
104
  export const runscVersion = (release) => `release-${release}`;
105
+ /**
106
+ * The directory alasio's pods keep on a node, which nothing of k3s's removes: the workspaces'
107
+ * JuiceFS mount and its state and cache, its juicefs, and the pool pods' directories, which
108
+ * workspaces are attached into, mounts all (cli/src/manifests/sandbox-gateway.ts).
109
+ */
110
+ export const NODE_DIRECTORY = "/var/lib/alasio";
105
111
  /**
106
112
  * Where a node has workspace storage mounted, held by a pod of its own, each workspace's
107
113
  * files at `<environment>/<workspace>/files`.
108
114
  */
109
- export const WORKSPACES_ROOT = "/var/lib/alasio/workspaces";
110
- /** Where a node keeps the directory of each pod of a sandbox pool, `<namespace>/<pod>`, which the pod mounts by `subPathExpr` of its namespace and its name. */
111
- export const ATTACH_ROOT = "/var/lib/alasio/attach";
115
+ export const WORKSPACES_ROOT = `${NODE_DIRECTORY}/workspaces`;
116
+ /** Where a node keeps the directory of each pod of a sandbox pool, or of a harness pool, `<namespace>/<pod>`, which the pod mounts by `subPathExpr` of its namespace and its name. */
117
+ export const ATTACH_ROOT = `${NODE_DIRECTORY}/attach`;
118
+ /** The file of a harness pool's pod's binding in its directory, which its node's agent writes as the gateway binds it, and the pod serves once it is there (src/harness/program.ts). */
119
+ export const BINDING_FILE = "binding.json";
112
120
  /** The root the gVisor shims run runsc with for Kubernetes' containers, under the node's /run. */
113
121
  export const RUNSC_ROOT = "/run/containerd/runsc/k8s.io";
114
122
  /** The node's snapshot cache, where its sandboxes are restored from, as the admission policy holds a restore to. */
@@ -156,17 +164,17 @@ export const OPERATION_LIMIT_SECONDS = 15 * 60;
156
164
  /**
157
165
  * How long a restore from the bucket may take from its prepare to its resume, which its token
158
166
  * lasts unless resumed before (./store-proxy.ts): the longest it takes, alasio waiting 3
159
- * minutes for its pod to run (POD_RUNNING_TIMEOUT_MS in src/gateway/snapshots.ts), then for the
160
- * agent's resume, and a margin.
167
+ * minutes for its pod to run (POD_RUNNING_TIMEOUT_MS in src/gateway/snapshots.ts), then the
168
+ * agent's resume waiting for the pod's network policies before it resumes its containers,
169
+ * from which its token lasts as its resumed restore reads, and a margin.
161
170
  */
162
171
  export const RESTORE_PREPARED_FOR_SECONDS = 5 * 60;
163
172
  /** The variable holding how long, in seconds, a resumed restore from the bucket may read it through the node agent (backgroundReadSeconds). */
164
173
  export const BACKGROUND_READ_SECONDS_VARIABLE = "ALASIO_BACKGROUND_READ_SECONDS";
165
174
  /**
166
175
  * The slowest a resumed restore is taken to read the rest of its sandbox through the node
167
- * agent, in the background: half of what gate 4 measured on a runner's bundled SeaweedFS,
168
- * 8.7 MB/s through the agent's proxy from the restore's start to its last read
169
- * (program/progress/live-lazy.md).
176
+ * agent, in the background: half of what was measured on a runner's bundled SeaweedFS,
177
+ * 8.7 MB/s through the agent's proxy from the restore's start to its last read.
170
178
  */
171
179
  export const BACKGROUND_READ_BYTES_PER_SECOND = 4 * 1024 ** 2;
172
180
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"names.js","sourceRoot":"","sources":["../../../../src/node-agent/names.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"names.js","sourceRoot":"","sources":["../../../../src/node-agent/names.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * The bot's commands, as Telegram's menu offers them: set by alasio's command line as it
3
+ * registers each environment's bot (cli/src/webhook.ts), not by alasio as it starts, which
4
+ * would ask Telegram the same of every start, and an environment that sleeps starts often.
5
+ * Free of anything but itself, so the command line takes it without the server.
6
+ */
7
+ /** The bot's commands, in the menu's order. */
8
+ export const BOT_COMMANDS = [
9
+ { command: "service", description: "Switch between Codex and Claude" },
10
+ { command: "model", description: "Choose the model and effort" },
11
+ { command: "workspace", description: "Choose, create or fork the workspace to work in" },
12
+ { command: "session", description: "Manage the mounted agent session" },
13
+ { command: "sessions", description: "Browse and mount agent sessions" },
14
+ { command: "goal", description: "View or set the mounted session goal (Codex)" },
15
+ { command: "stop", description: "Interrupt the active turn" },
16
+ ];
17
+ //# sourceMappingURL=bot-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bot-commands.js","sourceRoot":"","sources":["../../../../src/telegram/bot-commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,+CAA+C;AAC/C,MAAM,CAAC,MAAM,YAAY,GAA0B;IACjD,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,iCAAiC,EAAE;IACtE,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,6BAA6B,EAAE;IAChE,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,iDAAiD,EAAE;IACxF,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,kCAAkC,EAAE;IACvE,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,iCAAiC,EAAE;IACvE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,8CAA8C,EAAE;IAChF,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,2BAA2B,EAAE;CAC9D,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * How long an alasio is given to stop, as its Deployment says (cli/src/manifests/alasio.ts) and
3
+ * its drain keeps to (./drain.ts). Free of anything but itself, so the command line takes it
4
+ * without the app.
5
+ */
6
+ /**
7
+ * How long an alasio is given to stop, in seconds: past the longest Telegram is waited for
8
+ * before a reply is sent again (./outbox.ts, five minutes), so a reply held off as it is told to
9
+ * stop is delivered still.
10
+ */
11
+ export const STOP_GRACE_SECONDS = 360;
12
+ //# sourceMappingURL=stop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../../src/telegram/stop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "alasio",
3
- "version": "9.0.0",
3
+ "version": "10.0.1",
4
4
  "description": "alasio: coding agents you talk to from Telegram, installed and run with npx alasio",
5
5
  "type": "module",
6
6
  "license": "MIT",