@usine/executor 0.3.0 → 0.4.1-next.240.g158c84b
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/LICENSE +661 -21
- package/README.md +116 -19
- package/dist/child-command.d.ts +1 -1
- package/dist/child-command.d.ts.map +1 -1
- package/dist/child-command.js +6 -4
- package/dist/child-command.js.map +1 -1
- package/dist/child-environment.d.ts +19 -0
- package/dist/child-environment.d.ts.map +1 -0
- package/dist/child-environment.js +18 -0
- package/dist/child-environment.js.map +1 -0
- package/dist/claude-login-lock.d.ts +3 -2
- package/dist/claude-login-lock.d.ts.map +1 -1
- package/dist/claude-login-lock.js +10 -4
- package/dist/claude-login-lock.js.map +1 -1
- package/dist/cloudflare/client.d.ts +50 -0
- package/dist/cloudflare/client.d.ts.map +1 -0
- package/dist/cloudflare/client.js +108 -0
- package/dist/cloudflare/client.js.map +1 -0
- package/dist/cloudflare/cloudflare.d.ts +17 -0
- package/dist/cloudflare/cloudflare.d.ts.map +1 -0
- package/dist/cloudflare/cloudflare.js +704 -0
- package/dist/cloudflare/cloudflare.js.map +1 -0
- package/dist/cloudflare/model.d.ts +42 -0
- package/dist/cloudflare/model.d.ts.map +1 -0
- package/dist/cloudflare/model.js +2 -0
- package/dist/cloudflare/model.js.map +1 -0
- package/dist/cloudflare/shell/environment.d.ts +12 -0
- package/dist/cloudflare/shell/environment.d.ts.map +1 -0
- package/dist/cloudflare/shell/environment.js +12 -0
- package/dist/cloudflare/shell/environment.js.map +1 -0
- package/dist/cloudflare/shell/shell.d.ts +2 -0
- package/dist/cloudflare/shell/shell.d.ts.map +1 -0
- package/dist/cloudflare/shell/shell.js +155 -0
- package/dist/cloudflare/shell/shell.js.map +1 -0
- package/dist/durable-session.d.ts +21 -3
- package/dist/durable-session.d.ts.map +1 -1
- package/dist/durable-session.js +69 -10
- package/dist/durable-session.js.map +1 -1
- package/dist/exe-dev/commands.d.ts +1 -1
- package/dist/exe-dev/commands.d.ts.map +1 -1
- package/dist/exe-dev/exe-dev.d.ts +1 -1
- package/dist/exe-dev/exe-dev.d.ts.map +1 -1
- package/dist/exe-dev/exe-dev.js +9 -1
- package/dist/exe-dev/exe-dev.js.map +1 -1
- package/dist/exe-dev/preflight.d.ts +2 -2
- package/dist/exe-dev/preflight.d.ts.map +1 -1
- package/dist/exe-dev/preflight.js +5 -4
- package/dist/exe-dev/preflight.js.map +1 -1
- package/dist/executor.d.ts +164 -15
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +100 -3
- package/dist/executor.js.map +1 -1
- package/dist/guard.d.ts.map +1 -1
- package/dist/guard.js +1 -0
- package/dist/guard.js.map +1 -1
- package/dist/harness-preflight.d.ts +9 -8
- package/dist/harness-preflight.d.ts.map +1 -1
- package/dist/harness-preflight.js +15 -10
- package/dist/harness-preflight.js.map +1 -1
- package/dist/local/local.d.ts +1 -1
- package/dist/local/local.d.ts.map +1 -1
- package/dist/local/local.js +76 -37
- package/dist/local/local.js.map +1 -1
- package/dist/memory-preflight.d.ts +3 -1
- package/dist/memory-preflight.d.ts.map +1 -1
- package/dist/memory-preflight.js +1 -1
- package/dist/memory-preflight.js.map +1 -1
- package/dist/pre-push-hook.d.ts +1 -1
- package/dist/pre-push-hook.js +1 -1
- package/dist/prepared-attempt.d.ts +8 -0
- package/dist/prepared-attempt.d.ts.map +1 -1
- package/dist/prepared-attempt.js.map +1 -1
- package/dist/provision.d.ts +64 -13
- package/dist/provision.d.ts.map +1 -1
- package/dist/provision.js +99 -42
- package/dist/provision.js.map +1 -1
- package/dist/remote/commands.d.ts +1 -1
- package/dist/remote/commands.d.ts.map +1 -1
- package/dist/remote/commands.js +1 -1
- package/dist/remote/commands.js.map +1 -1
- package/dist/remote/container.d.ts +90 -0
- package/dist/remote/container.d.ts.map +1 -0
- package/dist/remote/container.js +480 -0
- package/dist/remote/container.js.map +1 -0
- package/dist/remote/liveness.d.ts +1 -1
- package/dist/remote/liveness.d.ts.map +1 -1
- package/dist/remote/liveness.js +6 -4
- package/dist/remote/liveness.js.map +1 -1
- package/dist/remote/machine.d.ts +52 -6
- package/dist/remote/machine.d.ts.map +1 -1
- package/dist/remote/remote.d.ts +11 -7
- package/dist/remote/remote.d.ts.map +1 -1
- package/dist/remote/remote.js +340 -92
- package/dist/remote/remote.js.map +1 -1
- package/dist/remote/sweep.d.ts +3 -1
- package/dist/remote/sweep.d.ts.map +1 -1
- package/dist/remote/sweep.js +2 -1
- package/dist/remote/sweep.js.map +1 -1
- package/dist/salvage.d.ts +18 -10
- package/dist/salvage.d.ts.map +1 -1
- package/dist/salvage.js +123 -29
- package/dist/salvage.js.map +1 -1
- package/dist/ssh/api-keys.d.ts +36 -0
- package/dist/ssh/api-keys.d.ts.map +1 -0
- package/dist/ssh/api-keys.js +72 -0
- package/dist/ssh/api-keys.js.map +1 -0
- package/dist/ssh/codex-homes.d.ts +21 -0
- package/dist/ssh/codex-homes.d.ts.map +1 -0
- package/dist/ssh/codex-homes.js +78 -0
- package/dist/ssh/codex-homes.js.map +1 -0
- package/dist/ssh/container.d.ts +32 -0
- package/dist/ssh/container.d.ts.map +1 -0
- package/dist/ssh/container.js +282 -0
- package/dist/ssh/container.js.map +1 -0
- package/dist/ssh/credentials.d.ts +3 -0
- package/dist/ssh/credentials.d.ts.map +1 -1
- package/dist/ssh/credentials.js +3 -0
- package/dist/ssh/credentials.js.map +1 -1
- package/dist/ssh/gateway/admin.d.ts +1 -1
- package/dist/ssh/gateway/admin.d.ts.map +1 -1
- package/dist/ssh/gateway/admin.js +2 -2
- package/dist/ssh/gateway/admin.js.map +1 -1
- package/dist/ssh/gateway/attachments.d.ts +15 -6
- package/dist/ssh/gateway/attachments.d.ts.map +1 -1
- package/dist/ssh/gateway/attachments.js +39 -25
- package/dist/ssh/gateway/attachments.js.map +1 -1
- package/dist/ssh/gateway/environment.d.ts +21 -2
- package/dist/ssh/gateway/environment.d.ts.map +1 -1
- package/dist/ssh/gateway/environment.js +76 -6
- package/dist/ssh/gateway/environment.js.map +1 -1
- package/dist/ssh/gateway/forward.d.ts +1 -1
- package/dist/ssh/gateway/forward.d.ts.map +1 -1
- package/dist/ssh/gateway/forward.js +1 -1
- package/dist/ssh/gateway/forward.js.map +1 -1
- package/dist/ssh/gateway/preflight.d.ts +51 -12
- package/dist/ssh/gateway/preflight.d.ts.map +1 -1
- package/dist/ssh/gateway/preflight.js +155 -69
- package/dist/ssh/gateway/preflight.js.map +1 -1
- package/dist/ssh/limits.d.ts +60 -0
- package/dist/ssh/limits.d.ts.map +1 -0
- package/dist/ssh/limits.js +84 -0
- package/dist/ssh/limits.js.map +1 -0
- package/dist/ssh/model.d.ts +97 -9
- package/dist/ssh/model.d.ts.map +1 -1
- package/dist/ssh/preflight.d.ts +26 -7
- package/dist/ssh/preflight.d.ts.map +1 -1
- package/dist/ssh/preflight.js +50 -10
- package/dist/ssh/preflight.js.map +1 -1
- package/dist/ssh/provisioner/boat.d.ts +33 -0
- package/dist/ssh/provisioner/boat.d.ts.map +1 -0
- package/dist/ssh/provisioner/boat.js +247 -0
- package/dist/ssh/provisioner/boat.js.map +1 -0
- package/dist/ssh/provisioner/hetzner.d.ts +32 -0
- package/dist/ssh/provisioner/hetzner.d.ts.map +1 -0
- package/dist/ssh/provisioner/hetzner.js +337 -0
- package/dist/ssh/provisioner/hetzner.js.map +1 -0
- package/dist/ssh/provisioner/host-key.d.ts +11 -0
- package/dist/ssh/provisioner/host-key.d.ts.map +1 -0
- package/dist/ssh/provisioner/host-key.js +57 -0
- package/dist/ssh/provisioner/host-key.js.map +1 -0
- package/dist/ssh/provisioner/http.d.ts +45 -0
- package/dist/ssh/provisioner/http.d.ts.map +1 -0
- package/dist/ssh/provisioner/http.js +72 -0
- package/dist/ssh/provisioner/http.js.map +1 -0
- package/dist/ssh/provisioner/machines.d.ts +48 -0
- package/dist/ssh/provisioner/machines.d.ts.map +1 -0
- package/dist/ssh/provisioner/machines.js +686 -0
- package/dist/ssh/provisioner/machines.js.map +1 -0
- package/dist/ssh/provisioner/model.d.ts +92 -0
- package/dist/ssh/provisioner/model.d.ts.map +1 -0
- package/dist/ssh/provisioner/model.js +37 -0
- package/dist/ssh/provisioner/model.js.map +1 -0
- package/dist/ssh/ssh.d.ts +14 -11
- package/dist/ssh/ssh.d.ts.map +1 -1
- package/dist/ssh/ssh.js +94 -27
- package/dist/ssh/ssh.js.map +1 -1
- package/dist/ssh/worker-records.d.ts +18 -0
- package/dist/ssh/worker-records.d.ts.map +1 -0
- package/dist/ssh/worker-records.js +100 -0
- package/dist/ssh/worker-records.js.map +1 -0
- package/dist/ssh/workers.d.ts +34 -7
- package/dist/ssh/workers.d.ts.map +1 -1
- package/dist/ssh/workers.js +92 -18
- package/dist/ssh/workers.js.map +1 -1
- package/package.json +19 -11
|
@@ -3,33 +3,44 @@ import { Cache, DateTime, Effect, Option, Redacted, Ref, Semaphore } from "effec
|
|
|
3
3
|
import { CredentialProvider, CredentialUnavailableError, } from "../../executor.js";
|
|
4
4
|
import { sendingShell } from "../../remote/commands.js";
|
|
5
5
|
import { renewableCredential } from "../../renewable-credential.js";
|
|
6
|
-
import {
|
|
6
|
+
import { attemptCodexHome } from "../codex-homes.js";
|
|
7
|
+
import { GH_GATEWAY_SOCKET_DIRECTORY, gatewayConfigFiles, gatewayEnvironment, } from "./environment.js";
|
|
7
8
|
/**
|
|
8
|
-
* A script that
|
|
9
|
-
* file is written to a temporary name and renamed.
|
|
9
|
+
* A script that takes path and contents pairs and writes each file, creating its directory.
|
|
10
|
+
* Each file is written to a temporary name and renamed.
|
|
10
11
|
*/
|
|
11
|
-
const
|
|
12
|
+
const WRITE_FILES_SCRIPT = String.raw `
|
|
12
13
|
set -e
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
printf '%s' "$
|
|
16
|
-
mv "$1
|
|
17
|
-
|
|
14
|
+
while [ "$#" -gt 1 ]; do
|
|
15
|
+
mkdir -p "$(dirname "$1")"
|
|
16
|
+
printf '%s' "$2" > "$1.$$"
|
|
17
|
+
mv "$1.$$" "$1"
|
|
18
|
+
shift 2
|
|
19
|
+
done
|
|
18
20
|
`.trim();
|
|
19
21
|
/** The interval for re-storing a live Attempt's attachment, which bounds the outage after a Gateway restart. */
|
|
20
22
|
const RESTORE_INTERVAL = "2 minutes";
|
|
21
|
-
/**
|
|
22
|
-
const
|
|
23
|
+
/** Writes each file of `files` on the machine through `shell`, creating its directory. */
|
|
24
|
+
export const writeMachineFiles = (commands, operation, shell, files) => commands.run(operation, shell, "sh", ["-c", WRITE_FILES_SCRIPT, "sh", ...files.flat()]);
|
|
25
|
+
/**
|
|
26
|
+
* Returns the directory of gh's configuration on a Worker behind a Gateway, and the Attempt's
|
|
27
|
+
* Codex home. Neither contains a token.
|
|
28
|
+
*/
|
|
29
|
+
const configDirectories = (machine, attemptId) => ({
|
|
30
|
+
ghConfigDirectory: `${machine.workerDirectory}/gh`,
|
|
31
|
+
codexHome: attemptCodexHome(machine, attemptId),
|
|
32
|
+
});
|
|
23
33
|
/**
|
|
24
34
|
* Grants each Attempt repository access through the Gateway without a token on the machine
|
|
25
35
|
* (ADR 0027). Attaches the token, renews it before expiry, re-stores it every two minutes, and
|
|
26
|
-
* detaches it when the scope closes.
|
|
27
|
-
*
|
|
36
|
+
* detaches it when the scope closes. If the Gateway holds the OpenAI credential, gives the
|
|
37
|
+
* Attempt its Codex home through `holdCodexHome`. On first use of a Worker, detaches attachments
|
|
38
|
+
* left by an earlier process.
|
|
28
39
|
*/
|
|
29
|
-
export const gatewayAttachmentsFor = Effect.fn("SshExecutor.gatewayAttachmentsFor")(function* (commands,
|
|
40
|
+
export const gatewayAttachmentsFor = Effect.fn("SshExecutor.gatewayAttachmentsFor")(function* (commands, workerFor, holdCodexHome) {
|
|
30
41
|
const provider = yield* CredentialProvider;
|
|
31
42
|
const detachLeftovers = Effect.fn("SshExecutor.detachLeftoverAttachments")(function* (worker) {
|
|
32
|
-
const machine = yield*
|
|
43
|
+
const machine = yield* workerFor(worker);
|
|
33
44
|
yield* Effect.annotateCurrentSpan({ worker });
|
|
34
45
|
if (Option.isNone(machine.gateway))
|
|
35
46
|
return yield* Effect.logDebug("The Worker has no Gateway to detach leftovers from", {
|
|
@@ -62,15 +73,15 @@ export const gatewayAttachmentsFor = Effect.fn("SshExecutor.gatewayAttachmentsFo
|
|
|
62
73
|
const { admin, settings } = gateway;
|
|
63
74
|
const fields = { attemptId, worker, repository, permissions, domain: settings.domain };
|
|
64
75
|
yield* Effect.annotateCurrentSpan(fields);
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
76
|
+
const directories = configDirectories(machine, attemptId);
|
|
77
|
+
const codex = settings.llmProviders.includes("openai");
|
|
78
|
+
if (codex)
|
|
79
|
+
yield* holdCodexHome(machine, attemptId);
|
|
80
|
+
yield* writeMachineFiles(commands, operation, machine.shell, gatewayConfigFiles({
|
|
81
|
+
domain: settings.domain,
|
|
82
|
+
llmProviders: settings.llmProviders,
|
|
83
|
+
...directories,
|
|
84
|
+
}));
|
|
74
85
|
const attached = yield* Ref.make(Option.none());
|
|
75
86
|
// Serializes publish and restore so the Gateway never gets an older token.
|
|
76
87
|
const turn = yield* Semaphore.make(1);
|
|
@@ -138,11 +149,14 @@ export const gatewayAttachmentsFor = Effect.fn("SshExecutor.gatewayAttachmentsFo
|
|
|
138
149
|
const { exported, sent } = gatewayEnvironment({
|
|
139
150
|
domain: settings.domain,
|
|
140
151
|
llmProviders: settings.llmProviders,
|
|
141
|
-
|
|
152
|
+
...directories,
|
|
142
153
|
callerToken,
|
|
143
154
|
});
|
|
144
155
|
return {
|
|
145
156
|
shell: sendingShell(machine.shell, sent),
|
|
157
|
+
secrets: sent,
|
|
158
|
+
readOnlyPaths: [directories.ghConfigDirectory, GH_GATEWAY_SOCKET_DIRECTORY],
|
|
159
|
+
writablePaths: codex ? [directories.codexHome] : [],
|
|
146
160
|
environment: exported,
|
|
147
161
|
gitEnvironment: exported,
|
|
148
162
|
refresh: credential.refresh(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../../src/ssh/gateway/attachments.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../../src/ssh/gateway/attachments.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,10 @@ import type { RepositoryName } from "@usine/core/repository";
|
|
|
2
2
|
import type { GatewayDomain, GatewayLlmProvider } from "@usine/core/worker";
|
|
3
3
|
import { type CallerToken } from "@usine/gateway/admin";
|
|
4
4
|
import { Redacted } from "effect";
|
|
5
|
+
/** The directory of the Unix socket that gh reaches the Gateway through. */
|
|
6
|
+
export declare const GH_GATEWAY_SOCKET_DIRECTORY = "/run/usine-gateway";
|
|
5
7
|
/** The variables sent through the SSH connection because they contain the caller token. The Worker's sshd must accept each in `AcceptEnv`. */
|
|
6
|
-
export declare const GATEWAY_SENT_VARIABLES: readonly ["GIT_CONFIG_VALUE_0", "GH_ENTERPRISE_TOKEN", "GH_TOKEN", "ANTHROPIC_AUTH_TOKEN"];
|
|
8
|
+
export declare const GATEWAY_SENT_VARIABLES: readonly ["GIT_CONFIG_VALUE_0", "GH_ENTERPRISE_TOKEN", "GH_TOKEN", "ANTHROPIC_AUTH_TOKEN", "USINE_GATEWAY_TOKEN"];
|
|
7
9
|
/** Returns the Gateway's forward proxy URL from a Worker; children receive it as `HTTPS_PROXY`. */
|
|
8
10
|
export declare const forwardProxyUrl: (domain: GatewayDomain) => string;
|
|
9
11
|
/** Returns the URL a Worker behind the Gateway clones and fetches `repository` from. */
|
|
@@ -23,8 +25,16 @@ export interface GatewayEnvironmentOptions {
|
|
|
23
25
|
readonly llmProviders: ReadonlyArray<GatewayLlmProvider>;
|
|
24
26
|
/** The machine directory that contains the `ghGatewayConfig` files. */
|
|
25
27
|
readonly ghConfigDirectory: string;
|
|
28
|
+
/** The Attempt's machine directory that Codex uses as `CODEX_HOME` if the Gateway holds the OpenAI credential. */
|
|
29
|
+
readonly codexHome: string;
|
|
26
30
|
readonly callerToken: CallerToken;
|
|
27
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Returns the configuration files that the executor writes on the machine before an Attempt,
|
|
34
|
+
* keyed by path: gh's files, and Codex's `config.toml` if the Gateway holds the OpenAI
|
|
35
|
+
* credential. None contains a token.
|
|
36
|
+
*/
|
|
37
|
+
export declare const gatewayConfigFiles: (options: Omit<GatewayEnvironmentOptions, "callerToken">) => ReadonlyArray<readonly [path: string, contents: string]>;
|
|
28
38
|
/**
|
|
29
39
|
* An Attempt's environment behind a Gateway. `exported` has no secrets and goes in each command
|
|
30
40
|
* line; `sent` contains the caller token and goes only through the SSH connection.
|
|
@@ -33,6 +43,12 @@ export interface GatewayEnvironment {
|
|
|
33
43
|
readonly exported: Readonly<Record<string, string>>;
|
|
34
44
|
readonly sent: Readonly<Record<string, Redacted.Redacted<string>>>;
|
|
35
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Returns the variables of `gatewayEnvironment` without a caller token or Codex's home, which
|
|
48
|
+
* only an Attempt has, for commands that reach the Gateway's forward proxy but no attachment,
|
|
49
|
+
* such as a preflight's harness probes.
|
|
50
|
+
*/
|
|
51
|
+
export declare const gatewayExportedEnvironment: (settings: Pick<GatewayEnvironmentOptions, "domain" | "llmProviders">, ghConfigDirectory: string) => Readonly<Record<string, string>>;
|
|
36
52
|
/**
|
|
37
53
|
* Returns the environment that points git, gh, package managers, and Claude Code at the
|
|
38
54
|
* Gateway at `domain`.
|
|
@@ -45,7 +61,10 @@ export interface GatewayEnvironment {
|
|
|
45
61
|
* - Package managers use the forward proxy at `<domain>:3128`; local addresses and the
|
|
46
62
|
* Gateway's own names bypass it.
|
|
47
63
|
* - Claude Code calls `llm.<domain>/anthropic` with the caller token if the Gateway has the
|
|
48
|
-
* Anthropic credential.
|
|
64
|
+
* Anthropic credential.
|
|
65
|
+
* - Codex reads `codexGatewayConfig` from `CODEX_HOME` and calls `llm.<domain>/openai/v1` with
|
|
66
|
+
* the caller token if the Gateway has the OpenAI credential.
|
|
67
|
+
* - A harness whose provider the Gateway has no credential for uses its own login through the
|
|
49
68
|
* forward proxy, whose allowlist must include the login's hosts.
|
|
50
69
|
*/
|
|
51
70
|
export declare const gatewayEnvironment: (options: GatewayEnvironmentOptions) => GatewayEnvironment;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../../src/ssh/gateway/environment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,KAAK,WAAW,EAAwB,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../../src/ssh/gateway/environment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,KAAK,WAAW,EAAwB,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,4EAA4E;AAC5E,eAAO,MAAM,2BAA2B,uBAAuB,CAAC;AAchE,8IAA8I;AAC9I,eAAO,MAAM,sBAAsB,YACjC,oBAAoB,EACpB,qBAAqB,EACrB,UAAU,EACV,sBAAsB,wBAEd,CAAC;AAEX,mGAAmG;AACnG,eAAO,MAAM,eAAe,WAAY,aAAa,KAAG,MACd,CAAC;AAE3C,wFAAwF;AACxF,eAAO,MAAM,oBAAoB,WAAY,aAAa,cAAc,cAAc,KAAG,MAC/C,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,eAAe,WAAY,aAAa;aAEjD,YAAY;aACZ,WAAW;;;CACF,CAAC;AAoBd,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACzD,uEAAuE;IACvE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,kHAAkH;IAClH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,YACpB,IAAI,CAAC,yBAAyB,EAAE,aAAa,CAAC,KACtD,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CASzD,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACpE;AAED;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,aAC3B,IAAI,CAAC,yBAAyB,EAAE,QAAQ,GAAG,cAAc,CAAC,qBACjD,MAAM,KACxB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQjC,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,kBAAkB,YAAa,yBAAyB,KAAG,kBAsCvE,CAAC"}
|
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
import { GATEWAY_TOKEN_HEADER } from "@usine/gateway/admin";
|
|
2
2
|
import { Redacted } from "effect";
|
|
3
|
+
/** The directory of the Unix socket that gh reaches the Gateway through. */
|
|
4
|
+
export const GH_GATEWAY_SOCKET_DIRECTORY = "/run/usine-gateway";
|
|
3
5
|
/**
|
|
4
6
|
* The Unix socket that systemd forwards to the Gateway's port 80
|
|
5
7
|
* (`infra/hetzner/gateway/worker-cloud-init.yaml`). gh sends plain HTTP over it, and only HTTPS
|
|
6
8
|
* to `GH_HOST` directly.
|
|
7
9
|
*/
|
|
8
|
-
const GH_GATEWAY_SOCKET =
|
|
10
|
+
const GH_GATEWAY_SOCKET = `${GH_GATEWAY_SOCKET_DIRECTORY}/http.sock`;
|
|
9
11
|
const FORWARD_PROXY_PORT = 3128;
|
|
12
|
+
/** The variable that Codex's `model_provider` reads the caller token from (`env_key`). */
|
|
13
|
+
const CODEX_TOKEN_VARIABLE = "USINE_GATEWAY_TOKEN";
|
|
10
14
|
/** The variables sent through the SSH connection because they contain the caller token. The Worker's sshd must accept each in `AcceptEnv`. */
|
|
11
15
|
export const GATEWAY_SENT_VARIABLES = [
|
|
12
16
|
"GIT_CONFIG_VALUE_0",
|
|
13
17
|
"GH_ENTERPRISE_TOKEN",
|
|
14
18
|
"GH_TOKEN",
|
|
15
19
|
"ANTHROPIC_AUTH_TOKEN",
|
|
20
|
+
CODEX_TOKEN_VARIABLE,
|
|
16
21
|
];
|
|
17
22
|
/** Returns the Gateway's forward proxy URL from a Worker; children receive it as `HTTPS_PROXY`. */
|
|
18
23
|
export const forwardProxyUrl = (domain) => `http://${domain}:${FORWARD_PROXY_PORT}`;
|
|
@@ -26,6 +31,51 @@ export const ghGatewayConfig = (domain) => ({
|
|
|
26
31
|
"config.yml": `version: "1"\nhttp_unix_socket: ${GH_GATEWAY_SOCKET}\n`,
|
|
27
32
|
"hosts.yml": `git.${domain}:\n git_protocol: https\n`,
|
|
28
33
|
});
|
|
34
|
+
/**
|
|
35
|
+
* Returns Codex's `config.toml` for the Gateway at `domain`: a `model_provider` that sends the
|
|
36
|
+
* Responses API to `llm.<domain>/openai/v1` with the caller token from `USINE_GATEWAY_TOKEN` as
|
|
37
|
+
* the bearer token, and needs no login. The file contains no token.
|
|
38
|
+
*/
|
|
39
|
+
const codexGatewayConfig = (domain) => [
|
|
40
|
+
'model_provider = "usine-gateway"',
|
|
41
|
+
"",
|
|
42
|
+
"[model_providers.usine-gateway]",
|
|
43
|
+
'name = "usine gateway"',
|
|
44
|
+
`base_url = "http://llm.${domain}/openai/v1"`,
|
|
45
|
+
`env_key = "${CODEX_TOKEN_VARIABLE}"`,
|
|
46
|
+
'wire_api = "responses"',
|
|
47
|
+
"requires_openai_auth = false",
|
|
48
|
+
"",
|
|
49
|
+
].join("\n");
|
|
50
|
+
/**
|
|
51
|
+
* Returns the configuration files that the executor writes on the machine before an Attempt,
|
|
52
|
+
* keyed by path: gh's files, and Codex's `config.toml` if the Gateway holds the OpenAI
|
|
53
|
+
* credential. None contains a token.
|
|
54
|
+
*/
|
|
55
|
+
export const gatewayConfigFiles = (options) => {
|
|
56
|
+
const gh = ghGatewayConfig(options.domain);
|
|
57
|
+
return [
|
|
58
|
+
[`${options.ghConfigDirectory}/config.yml`, gh["config.yml"]],
|
|
59
|
+
[`${options.ghConfigDirectory}/hosts.yml`, gh["hosts.yml"]],
|
|
60
|
+
...(options.llmProviders.includes("openai")
|
|
61
|
+
? [[`${options.codexHome}/config.toml`, codexGatewayConfig(options.domain)]]
|
|
62
|
+
: []),
|
|
63
|
+
];
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Returns the variables of `gatewayEnvironment` without a caller token or Codex's home, which
|
|
67
|
+
* only an Attempt has, for commands that reach the Gateway's forward proxy but no attachment,
|
|
68
|
+
* such as a preflight's harness probes.
|
|
69
|
+
*/
|
|
70
|
+
export const gatewayExportedEnvironment = (settings, ghConfigDirectory) => {
|
|
71
|
+
const { CODEX_HOME: _, ...exported } = gatewayEnvironment({
|
|
72
|
+
...settings,
|
|
73
|
+
ghConfigDirectory,
|
|
74
|
+
codexHome: "",
|
|
75
|
+
callerToken: Redacted.make(""),
|
|
76
|
+
}).exported;
|
|
77
|
+
return exported;
|
|
78
|
+
};
|
|
29
79
|
/**
|
|
30
80
|
* Returns the environment that points git, gh, package managers, and Claude Code at the
|
|
31
81
|
* Gateway at `domain`.
|
|
@@ -38,7 +88,10 @@ export const ghGatewayConfig = (domain) => ({
|
|
|
38
88
|
* - Package managers use the forward proxy at `<domain>:3128`; local addresses and the
|
|
39
89
|
* Gateway's own names bypass it.
|
|
40
90
|
* - Claude Code calls `llm.<domain>/anthropic` with the caller token if the Gateway has the
|
|
41
|
-
* Anthropic credential.
|
|
91
|
+
* Anthropic credential.
|
|
92
|
+
* - Codex reads `codexGatewayConfig` from `CODEX_HOME` and calls `llm.<domain>/openai/v1` with
|
|
93
|
+
* the caller token if the Gateway has the OpenAI credential.
|
|
94
|
+
* - A harness whose provider the Gateway has no credential for uses its own login through the
|
|
42
95
|
* forward proxy, whose allowlist must include the login's hosts.
|
|
43
96
|
*/
|
|
44
97
|
export const gatewayEnvironment = (options) => {
|
|
@@ -68,11 +121,28 @@ export const gatewayEnvironment = (options) => {
|
|
|
68
121
|
GH_ENTERPRISE_TOKEN: callerToken,
|
|
69
122
|
GH_TOKEN: callerToken,
|
|
70
123
|
};
|
|
71
|
-
|
|
72
|
-
return { exported, sent };
|
|
124
|
+
const harnesses = options.llmProviders.map((provider) => harnessVariables(provider, options));
|
|
73
125
|
return {
|
|
74
|
-
exported: {
|
|
75
|
-
|
|
126
|
+
exported: {
|
|
127
|
+
...exported,
|
|
128
|
+
...Object.fromEntries(harnesses.flatMap(({ exported }) => Object.entries(exported))),
|
|
129
|
+
},
|
|
130
|
+
sent: {
|
|
131
|
+
...sent,
|
|
132
|
+
...Object.fromEntries(harnesses.map(({ token }) => [token, callerToken])),
|
|
133
|
+
},
|
|
76
134
|
};
|
|
77
135
|
};
|
|
136
|
+
/** Returns the variables that point `provider`'s harness at the Gateway. */
|
|
137
|
+
const harnessVariables = (provider, options) => {
|
|
138
|
+
switch (provider) {
|
|
139
|
+
case "anthropic":
|
|
140
|
+
return {
|
|
141
|
+
exported: { ANTHROPIC_BASE_URL: `http://llm.${options.domain}/anthropic` },
|
|
142
|
+
token: "ANTHROPIC_AUTH_TOKEN",
|
|
143
|
+
};
|
|
144
|
+
case "openai":
|
|
145
|
+
return { exported: { CODEX_HOME: options.codexHome }, token: CODEX_TOKEN_VARIABLE };
|
|
146
|
+
}
|
|
147
|
+
};
|
|
78
148
|
//# sourceMappingURL=environment.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../src/ssh/gateway/environment.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC;;;;GAIG;AACH,MAAM,iBAAiB,GAAG,
|
|
1
|
+
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../src/ssh/gateway/environment.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,4EAA4E;AAC5E,MAAM,CAAC,MAAM,2BAA2B,GAAG,oBAAoB,CAAC;AAEhE;;;;GAIG;AACH,MAAM,iBAAiB,GAAG,GAAG,2BAA2B,YAAY,CAAC;AAErE,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC,0FAA0F;AAC1F,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAEnD,8IAA8I;AAC9I,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,oBAAoB;IACpB,qBAAqB;IACrB,UAAU;IACV,sBAAsB;IACtB,oBAAoB;CACZ,CAAC;AAEX,mGAAmG;AACnG,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAqB,EAAU,EAAE,CAC/D,UAAU,MAAM,IAAI,kBAAkB,EAAE,CAAC;AAE3C,wFAAwF;AACxF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAqB,EAAE,UAA0B,EAAU,EAAE,CAChG,cAAc,MAAM,IAAI,UAAU,MAAM,CAAC;AAE3C;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAqB,EAAE,EAAE,CACvD,CAAC;IACC,YAAY,EAAE,mCAAmC,iBAAiB,IAAI;IACtE,WAAW,EAAE,OAAO,MAAM,8BAA8B;CACzD,CAAU,CAAC;AAEd;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,CAAC,MAAqB,EAAU,EAAE,CAC3D;IACE,kCAAkC;IAClC,EAAE;IACF,iCAAiC;IACjC,wBAAwB;IACxB,0BAA0B,MAAM,aAAa;IAC7C,cAAc,oBAAoB,GAAG;IACrC,wBAAwB;IACxB,8BAA8B;IAC9B,EAAE;CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAYf;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,OAAuD,EACG,EAAE;IAC5D,MAAM,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,OAAO;QACL,CAAC,GAAG,OAAO,CAAC,iBAAiB,aAAa,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;QAC7D,CAAC,GAAG,OAAO,CAAC,iBAAiB,YAAY,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;QAC3D,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACzC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,cAAc,EAAE,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAU,CAAC;YACrF,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC,CAAC;AAWF;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,QAAoE,EACpE,iBAAyB,EACS,EAAE;IACpC,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,kBAAkB,CAAC;QACxD,GAAG,QAAQ;QACX,iBAAiB;QACjB,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;KAC/B,CAAC,CAAC,QAAQ,CAAC;IACZ,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAkC,EAAsB,EAAE;IAC3F,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,OAAO,GAAG,cAAc,MAAM,GAAG,CAAC;IACxC,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,2BAA2B,MAAM,EAAE,CAAC;IACnD,MAAM,QAAQ,GAAG;QACf,gBAAgB,EAAE,GAAG;QACrB,gBAAgB,EAAE,QAAQ,OAAO,cAAc;QAC/C,gBAAgB,EAAE,OAAO,OAAO,YAAY;QAC5C,kBAAkB,EAAE,qBAAqB;QACzC,gBAAgB,EAAE,OAAO,OAAO,YAAY;QAC5C,kBAAkB,EAAE,eAAe,MAAM,GAAG;QAC5C,OAAO,EAAE,OAAO,MAAM,EAAE;QACxB,aAAa,EAAE,OAAO,CAAC,iBAAiB;QACxC,kBAAkB,EAAE,GAAG;QACvB,WAAW,EAAE,KAAK;QAClB,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,KAAK;QAClB,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,MAAM;KACjB,CAAC;IACF,MAAM,IAAI,GAAG;QACX,kBAAkB,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,oBAAoB,KAAK,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5F,mBAAmB,EAAE,WAAW;QAChC,QAAQ,EAAE,WAAW;KACtB,CAAC;IACF,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9F,OAAO;QACL,QAAQ,EAAE;YACR,GAAG,QAAQ;YACX,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;SACrF;QACD,IAAI,EAAE;YACJ,GAAG,IAAI;YACP,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,WAAW,CAAU,CAAC,CAAC;SACnF;KACF,CAAC;AACJ,CAAC,CAAC;AASF,4EAA4E;AAC5E,MAAM,gBAAgB,GAAG,CACvB,QAA4B,EAC5B,OAAgE,EAC9C,EAAE;IACpB,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,WAAW;YACd,OAAO;gBACL,QAAQ,EAAE,EAAE,kBAAkB,EAAE,cAAc,OAAO,CAAC,MAAM,YAAY,EAAE;gBAC1E,KAAK,EAAE,sBAAsB;aAC9B,CAAC;QACJ,KAAK,QAAQ;YACX,OAAO,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;IACxF,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { RemoteShell } from "@usine/agents/child-host";
|
|
2
2
|
import { SshDestination } from "@usine/core/worker";
|
|
3
3
|
import { DateTime, Effect, Schema, Stream } from "effect";
|
|
4
|
-
import { ChildProcess, type ChildProcessSpawner } from "effect/
|
|
4
|
+
import { ChildProcess, type ChildProcessSpawner } from "effect/process";
|
|
5
5
|
export interface OpenForward {
|
|
6
6
|
/** The SSH client number, starting at 1. `reopen` replaces only this generation. */
|
|
7
7
|
readonly generation: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forward.d.ts","sourceRoot":"","sources":["../../../src/ssh/gateway/forward.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAyB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAY,MAAM,EAA8B,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"forward.d.ts","sourceRoot":"","sources":["../../../src/ssh/gateway/forward.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAyB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAY,MAAM,EAA8B,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAcxE,MAAM,WAAW,WAAW;IAC1B,oFAAoF;IACpF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;CACnB;;;;;;;AAED;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,yBAOxC;CAAG;AAEL;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kHAAkH;IAClH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;IACnE;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;IAC1F,sIAAsI;IACtI,QAAQ,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3E,iGAAiG;IACjG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACxC;AA6DD;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;yBAyQA,QAAQ,CAAC,GAAG;;uCAWxC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createServer } from "node:net";
|
|
2
2
|
import { SshDestination } from "@usine/core/worker";
|
|
3
3
|
import { DateTime, Deferred, Effect, Fiber, Option, Ref, Result, Schema, Stream } from "effect";
|
|
4
|
-
import { ChildProcess } from "effect/
|
|
4
|
+
import { ChildProcess } from "effect/process";
|
|
5
5
|
/** The line the SSH client prints through `LocalCommand` when its local port is listening. */
|
|
6
6
|
const OPEN_LINE = "usine-gateway-forward-open";
|
|
7
7
|
/** The time an SSH client has to connect and listen before it's replaced. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forward.js","sourceRoot":"","sources":["../../../src/ssh/gateway/forward.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAyB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChG,OAAO,EAAE,YAAY,EAA4B,MAAM,yBAAyB,CAAC;AAEjF,8FAA8F;AAC9F,MAAM,SAAS,GAAG,4BAA4B,CAAC;AAE/C,6EAA6E;AAC7E,MAAM,YAAY,GAAG,YAAY,CAAC;AAElC,wDAAwD;AACxD,MAAM,SAAS,GAAG,UAAU,CAAC;AAE7B,oHAAoH;AACpH,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAQhC;;;GAGG;AACH,MAAM,OAAO,oBAAqB,SAAQ,MAAM,CAAC,WAAW,CAC1D,sCAAsC,CACvC,CAAC,sBAAsB,EAAE;IACxB,OAAO,EAAE,cAAc;IACvB,UAAU,EAAE,MAAM,CAAC,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC,WAAW;IACzB,MAAM,EAAE,MAAM,CAAC,cAAc;CAC9B,CAAC;CAAG;AAiDL,MAAM,SAAS,GAAG,CAAC,MAAc,EAAa,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;AACjF,MAAM,MAAM,GAAG,CAAC,MAAc,EAAa,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AAC3E,MAAM,QAAQ,GAAc,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAEjD,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AAE5D,uGAAuG;AACvG,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAgB,CAAC,MAAM,EAAE,EAAE;IAC9D,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE;QACjC,MAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9E,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAChB,MAAM,CACJ,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;YACpB,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACrE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SAC3C,CAAC,CACH,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,wFAAwF;AACxF,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,QAAgB,EAAU,EAAE;IAC7D,MAAM,KAAK,GAAG,MAAM;SACjB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;IACjC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,wBAAwB,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC1F,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAU,EAAE,CAC9C,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,EAAE,CAAC,+BAA+B,CAAC,CAAC,QAAQ,CAAC,EACnF,OAA2D,EAC3D,KAAkD,EAClD,OAAuB,EACvB,SAA2B;IAE3B,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IACtC,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;IACjG,MAAM,OAAO,GAAG;QACd,KAAK,CAAC,GAAG,CAAC,OAAO;QACjB,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI;QACjB,IAAI;QACJ,IAAI;QACJ,0BAA0B;QAC1B,IAAI;QACJ,WAAW,CAAC,SAAS,CAAC;QACtB,OAAO;KACR,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC;QACrC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI;QACjB,IAAI;QACJ,8JAA8J;QAC9J,IAAI;QACJ,0BAA0B;QAC1B,IAAI;QACJ,kBAAkB;QAClB,IAAI;QACJ,wBAAwB;QACxB,IAAI;QACJ,qBAAqB,SAAS,EAAE;QAChC,IAAI;QACJ,WAAW,CAAC,IAAI,CAAC;QACjB,OAAO;KACR,CAAC;IAEF,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAE,EAAE,CAC5C,MAAM,CAAC,GAAG,CAAC;QACT,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAqC;QAC1D,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAQ;QAC9B,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAc;KAClC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAc,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAe,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IAEpF,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,+BAA+B,CAAC,CAAC,QAAQ,CAAC,EACpE,UAAsB,EACtB,WAAwC;QAExC,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAChF,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACnD,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;YAC1B,OAAO,SAAS,CAAC,8BAA8B,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;QAC5B,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,mEAAmE,EAAE;YAC1F,GAAG,MAAM;YACT,UAAU,EAAE,UAAU,CAAC,MAAM;YAC7B,IAAI;SACL,CAAC,CAAC;QACH,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CACzB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CACjC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE;gBACvD,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE;gBAChC,SAAS,EAAE,KAAK;gBAChB,QAAQ,EAAE,KAAK;gBACf,cAAc,EAAE,WAAW;gBAC3B,KAAK,EAAE,QAAQ;aAChB,CAAC,CACH,CAAC;YACF,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACtC,MAAM,CAAC,UAAU,EAAE,EACnB,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,UAAU,CAClB,CAAC;YACF,MAAM,QAAQ,GAAG,CAAC,QAAgB,EAAE,EAAE,CACpC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC3E,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACzC,MAAM,CAAC,UAAU,EAAE,EACnB,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,CAAC,EAClD,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CACnC,CAAC;YACF,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;gBAC1B,OAAO,SAAS,CAAC,sCAAsC,YAAY,EAAE,CAAC,CAAC;YACzE,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;gBAChC,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAEpE,MAAM,IAAI,GAAgB;gBACxB,UAAU,EAAE,UAAU,CAAC,MAAM;gBAC7B,GAAG,EAAE,IAAI,GAAG,CAAC,oBAAoB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;aACjD,CAAC;YACF,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACjD,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE;gBAC/B,MAAM,EAAE,GAAG,EAAE,CACX,MAAM,CAAC,OAAO,CAAC,+CAA+C,EAAE;oBAC9D,GAAG,MAAM;oBACT,UAAU,EAAE,UAAU,CAAC,MAAM;oBAC7B,IAAI;iBACL,CAAC;gBACJ,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAChB,MAAM,CAAC,OAAO,CAAC,iDAAiD,EAAE;oBAChE,GAAG,MAAM;oBACT,UAAU,EAAE,UAAU,CAAC,MAAM;oBAC7B,IAAI;oBACJ,WAAW,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;iBACvC,CAAC;aACL,CAAC,CAAC;YACH,6FAA6F;YAC7F,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,EAAE,CACnC,QAAQ,CAAC,GAAG,CAAC,IAAI,CACf,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACvB,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE;gBACb,IAAI,EAAE,QAAQ;gBACd,UAAU;gBACV,MAAM,EAAE,IAAI,oBAAoB,CAAC;oBAC/B,OAAO;oBACP,UAAU,EAAE,UAAU,CAAC,MAAM;oBAC7B,KAAK;oBACL,MAAM;iBACP,CAAC;aACH,CAAC,CACH,CACF,CAAC;YACJ,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAClB,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAChD,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CACrB,MAAM,CAAC,OAAO,CAAC,0CAA0C,KAAK,CAAC,OAAO,EAAE,CAAC,CAC1E,EACD,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EACrB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CACnB,EACD,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CACrC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,0CAA0C,CAAC,CAAC,EACrE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CACpB,CACF,CAAC;QACJ,CAAC,CAAC,CACH,CAAC,IAAI,CACJ,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CACrB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAC9E,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,sEAAsE;IACtE,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACpC,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,EAAgB,CAAC;QAC9C,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YACtD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YAChC,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC5B,QAAQ,GAAG,CAAC,CAAC;gBACb,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC/B,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CACnB,oFAAoF,EACpF,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,CAC7C,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACpD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;gBACrF,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjC,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACnC,MAAM,MAAM,GAAG,IAAI,oBAAoB,CAAC;oBACtC,OAAO;oBACP,UAAU,EAAE,UAAU,CAAC,MAAM;oBAC7B,KAAK;oBACL,MAAM,EAAE,GAAG,CAAC,MAAM;iBACnB,CAAC,CAAC;gBACH,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC9D,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAChD,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CACtB,GAAG,CAAC,IAAI,KAAK,QAAQ;oBACnB,CAAC,CAAC,2EAA2E;oBAC7E,CAAC,CAAC,mFAAmF,EACvF;oBACE,GAAG,MAAM;oBACT,UAAU,EAAE,UAAU,CAAC,MAAM;oBAC7B,WAAW,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;oBACtC,QAAQ;oBACR,YAAY,EAAE,KAAK,GAAG,IAAI;oBAC1B,MAAM,EAAE,GAAG,CAAC,MAAM;iBACnB,CACF,CAAC;gBACF,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CACrC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,EACpD,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAC9D,CAAC;gBACF,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,kDAAkD,EAAE;oBACxE,GAAG,MAAM;oBACT,UAAU,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC;oBACjC,WAAW,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;oBACtC,OAAO;iBACR,CAAC,CAAC;YACL,CAAC;YACD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC9D,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC/C,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CACnB,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CACtB,MAAM,CAAC,OAAO,CAAC,+CAA+C,EAAE,MAAM,CAAC,CACxE,EACD,MAAM,CAAC,UAAU,CAClB,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,UAAkB,EAAE,EAAE,CAC7C,QAAQ,CAAC,GAAG,CAAC,IAAI,CACf,MAAM,CAAC,OAAO,CACZ,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,oBAAoB,CAAC;QACvB,OAAO;QACP,UAAU;QACV,KAAK;QACL,MAAM,EAAE,kCAAkC,SAAS,EAAE;KACtD,CAAC,CACL,CACF,CAAC;IAEJ,MAAM,OAAO,GAA8B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC7D,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,MAAM;gBACT,OAAO,GAAG,CAAC,IAAI,CAAC;YAClB,KAAK,QAAQ;gBACX,OAAO,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;YAC3B,KAAK,SAAS;gBACZ,OAAO,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CACtD,MAAM,CAAC,aAAa,CAAC;oBACnB,QAAQ,EAAE,SAAS;oBACnB,MAAM,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;iBACrD,CAAC,CACH,CAAC;QACN,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,kCAAkC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAkB;QACxF,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACzC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CACpB,yEAAyE,EACzE,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,CAC1D,CAAC;YACF,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC;QACxB,CAAC;QACD,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3D,OAAO,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CACpD,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EACrD,MAAM,CAAC,aAAa,CAAC;YACnB,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,UAAU,GAAG,CAAC,CAAC;SAC9C,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAgB,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,CAAC,MAAoB,EAAE,EAAE,CAC1C,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;YAChC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM;YACpB,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC;SACnD,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAU,CAAC;IAC9C,CAAC,CAAC,CAAC;IACL,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAErD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAA2B,CAAC;AAC9F,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"forward.js","sourceRoot":"","sources":["../../../src/ssh/gateway/forward.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { type RemoteShell } from "@usine/agents/child-host";
|
|
1
2
|
import type { Harness } from "@usine/core/agent/brain";
|
|
2
|
-
import
|
|
3
|
+
import { HarnessReady, HarnessUnavailableError } from "@usine/core/agent/capability";
|
|
4
|
+
import type { GatewayCredentialKind, WorkerName } from "@usine/core/worker";
|
|
3
5
|
import { Effect, Option } from "effect";
|
|
4
6
|
import { ExecutorOperationError, WorkerCapabilityError } from "../../executor.ts";
|
|
5
7
|
import type { HarnessProbe } from "../../harness-preflight.ts";
|
|
@@ -7,22 +9,59 @@ import { type RemoteCommands } from "../../remote/commands.ts";
|
|
|
7
9
|
import type { MachineGateway, SshMachine } from "../model.ts";
|
|
8
10
|
/**
|
|
9
11
|
* Returns the credential kind the Gateway injects for `harness`, as recorded by the last
|
|
10
|
-
* preflight
|
|
12
|
+
* preflight: Anthropic's for Claude Code, OpenAI's for Codex. Pi uses its own login.
|
|
11
13
|
*/
|
|
12
14
|
export declare const gatewayCredentialFor: (gateway: MachineGateway, harness: Harness) => Effect.Effect<Option.Option<GatewayCredentialKind>>;
|
|
15
|
+
/**
|
|
16
|
+
* Verifies the Gateway's admin API for an SSH Worker without attaching anything: the forward
|
|
17
|
+
* opens and the admin API accepts the admin token. Records the Gateway's credential kind for
|
|
18
|
+
* each provider in the Worker's `llmProviders`. Needs no Worker machine.
|
|
19
|
+
*/
|
|
20
|
+
export declare const verifyGatewayAdmin: (worker: string & import("effect/Brand").Brand<"WorkerName">, gateway: MachineGateway) => Effect.Effect<void, WorkerCapabilityError, never>;
|
|
13
21
|
/**
|
|
14
22
|
* Verifies the Gateway in front of an SSH Worker without attaching anything: the admin API
|
|
15
|
-
*
|
|
16
|
-
|
|
17
|
-
|
|
23
|
+
* checks of `verifyGatewayAdmin`, then the machine checks of `verifyGatewayFromMachine`.
|
|
24
|
+
*/
|
|
25
|
+
export declare const verifyGateway: (commands: RemoteCommands, worker: WorkerName, machine: SshMachine, gateway: MachineGateway) => Effect.Effect<undefined, ExecutorOperationError | WorkerCapabilityError, never>;
|
|
26
|
+
/**
|
|
27
|
+
* Checks only the binary of a harness whose credential the machine doesn't keep, the Gateway's
|
|
28
|
+
* or an API key in the Attempt's environment, named by `credential` in the log. Codex's version
|
|
29
|
+
* must also be supported.
|
|
30
|
+
*/
|
|
31
|
+
export declare const harnessBinaryProbe: (commands: RemoteCommands, host: string, shell: RemoteShell, harness: "claude" | "codex", credential: string) => Effect.Effect<HarnessReady | HarnessUnavailableError, ExecutorOperationError, never>;
|
|
32
|
+
/**
|
|
33
|
+
* The harnesses that can use the operator's login on the machine or the Gateway's credential
|
|
34
|
+
* for their provider, with the hosts each login calls through the forward proxy, which
|
|
35
|
+
* `infra/hetzner/gateway/egress-allowlist` lists, and the API host that an API key in the
|
|
36
|
+
* Attempt's environment calls.
|
|
18
37
|
*/
|
|
19
|
-
|
|
38
|
+
declare const LOGINS: {
|
|
39
|
+
readonly claude: {
|
|
40
|
+
readonly label: "Claude Code";
|
|
41
|
+
readonly provider: "Anthropic";
|
|
42
|
+
readonly gatewayProvider: "anthropic";
|
|
43
|
+
readonly hosts: readonly ["api.anthropic.com", "platform.claude.com"];
|
|
44
|
+
readonly apiHost: "api.anthropic.com";
|
|
45
|
+
};
|
|
46
|
+
readonly codex: {
|
|
47
|
+
readonly label: "Codex";
|
|
48
|
+
readonly provider: "OpenAI";
|
|
49
|
+
readonly gatewayProvider: "openai";
|
|
50
|
+
readonly hosts: readonly ["chatgpt.com", "auth.openai.com"];
|
|
51
|
+
readonly apiHost: "api.openai.com";
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
/** A harness that can use a login, the Gateway's credential, or an API key. */
|
|
55
|
+
export type LoginHarness = keyof typeof LOGINS;
|
|
20
56
|
/**
|
|
21
|
-
* Probes a brain on a Worker behind a Gateway (ADR 0027). If the Gateway has the
|
|
22
|
-
*
|
|
23
|
-
* operator's login (ADR 0026)
|
|
24
|
-
*
|
|
25
|
-
*
|
|
57
|
+
* Probes a brain on a Worker behind a Gateway (ADR 0027). If the Gateway has the credential of
|
|
58
|
+
* the harness's provider, checks only the harness binary. Otherwise, Claude Code and Codex use
|
|
59
|
+
* the operator's login (ADR 0026), or an API key in the Attempt's environment if `apiKeyed`
|
|
60
|
+
* returns `true` for the harness: `probe` checks the login or the binary, then the machine must
|
|
61
|
+
* connect to the login's hosts, or the provider's API host, through the forward proxy. Pi goes
|
|
62
|
+
* to `probe`, which rejects it on any remote machine. The checks run through `shell`, on the
|
|
63
|
+
* machine or in a container on it.
|
|
26
64
|
*/
|
|
27
|
-
export declare const gatewayHarnessProbe: (commands: RemoteCommands, machine: SshMachine, gateway: MachineGateway, probe: HarnessProbe) => HarnessProbe;
|
|
65
|
+
export declare const gatewayHarnessProbe: (commands: RemoteCommands, machine: SshMachine, gateway: MachineGateway, probe: HarnessProbe, shell: RemoteShell, apiKeyed: (harness: LoginHarness) => boolean) => HarnessProbe;
|
|
66
|
+
export {};
|
|
28
67
|
//# sourceMappingURL=preflight.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../../src/ssh/gateway/preflight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,OAAO,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../../src/ssh/gateway/preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,0BAA0B,CAAC;AAEzE,OAAO,KAAK,EAAa,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACrF,OAAO,KAAK,EAAE,qBAAqB,EAAsB,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAiB,MAAM,QAAQ,CAAC;AAEvD,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,KAAK,cAAc,EAAgB,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,EAAsB,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA0HlF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,YACtB,cAAc,WACd,OAAO,KACf,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CASpD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,6IA+B7B,CAAC;AAqEH;;;GAGG;AACH,eAAO,MAAM,aAAa,aACd,cAAc,UAChB,UAAU,WACT,UAAU,WACV,cAAc,oFAItB,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,uMA0B7B,CAAC;AAEH;;;;;GAKG;AACH,QAAA,MAAM,MAAM;;iBAER,KAAK,EAAE,aAAa;iBACpB,QAAQ,EAAE,WAAW;iBACrB,eAAe,EAAE,WAAW;iBAC5B,KAAK;iBACL,OAAO,EAAE,mBAAmB;;;iBAG5B,KAAK,EAAE,OAAO;iBACd,QAAQ,EAAE,QAAQ;iBAClB,eAAe,EAAE,QAAQ;iBACzB,KAAK;iBACL,OAAO,EAAE,gBAAgB;;CAa5B,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,MAAM,CAAC;AAqB/C;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,aACpB,cAAc,WACf,UAAU,WACV,cAAc,SAChB,YAAY,SACZ,WAAW,YACR,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,KAC3C,YAyFF,CAAC"}
|