@moxt-ai/mobius 0.0.10 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/acp/session-history.d.ts.map +1 -1
- package/dist/acp/session-history.js +1 -0
- package/dist/acp/session-history.js.map +1 -1
- package/dist/acp/session-manager.d.ts +4 -1
- package/dist/acp/session-manager.d.ts.map +1 -1
- package/dist/acp/session-manager.js +99 -24
- package/dist/acp/session-manager.js.map +1 -1
- package/dist/agent-catalog/acp-readiness-probe.d.ts +4 -0
- package/dist/agent-catalog/acp-readiness-probe.d.ts.map +1 -0
- package/dist/agent-catalog/acp-readiness-probe.js +153 -0
- package/dist/agent-catalog/acp-readiness-probe.js.map +1 -0
- package/dist/agent-catalog/agent-diagnostics.d.ts +1 -1
- package/dist/agent-catalog/agent-diagnostics.d.ts.map +1 -1
- package/dist/agent-catalog/agent-diagnostics.js +1 -1
- package/dist/agent-catalog/agent-diagnostics.js.map +1 -1
- package/dist/agent-catalog/agent-discovery-context.d.ts +8 -0
- package/dist/agent-catalog/agent-discovery-context.d.ts.map +1 -0
- package/dist/agent-catalog/agent-discovery-context.js +2 -0
- package/dist/agent-catalog/agent-discovery-context.js.map +1 -0
- package/dist/agent-catalog/agent-discovery.d.ts +55 -0
- package/dist/agent-catalog/agent-discovery.d.ts.map +1 -0
- package/dist/agent-catalog/agent-discovery.js +89 -0
- package/dist/agent-catalog/agent-discovery.js.map +1 -0
- package/dist/agent-catalog/agent-probe-error.d.ts +5 -0
- package/dist/agent-catalog/agent-probe-error.d.ts.map +1 -0
- package/dist/agent-catalog/agent-probe-error.js +9 -0
- package/dist/agent-catalog/agent-probe-error.js.map +1 -0
- package/dist/agent-catalog/agent-specification.d.ts +45 -0
- package/dist/agent-catalog/agent-specification.d.ts.map +1 -0
- package/dist/agent-catalog/agent-specification.js +59 -0
- package/dist/agent-catalog/agent-specification.js.map +1 -0
- package/dist/agent-catalog/agents/claude-code-agent.d.ts +14 -0
- package/dist/agent-catalog/agents/claude-code-agent.d.ts.map +1 -0
- package/dist/agent-catalog/agents/claude-code-agent.js +30 -0
- package/dist/agent-catalog/agents/claude-code-agent.js.map +1 -0
- package/dist/agent-catalog/agents/codex-agent.d.ts +14 -0
- package/dist/agent-catalog/agents/codex-agent.d.ts.map +1 -0
- package/dist/agent-catalog/agents/codex-agent.js +23 -0
- package/dist/agent-catalog/agents/codex-agent.js.map +1 -0
- package/dist/agent-catalog/agents/deepseek-harness-agent.d.ts +16 -0
- package/dist/agent-catalog/agents/deepseek-harness-agent.d.ts.map +1 -0
- package/dist/agent-catalog/agents/deepseek-harness-agent.js +94 -0
- package/dist/agent-catalog/agents/deepseek-harness-agent.js.map +1 -0
- package/dist/agent-catalog/agents/opencode-agent.d.ts +17 -0
- package/dist/agent-catalog/agents/opencode-agent.d.ts.map +1 -0
- package/dist/agent-catalog/agents/opencode-agent.js +36 -0
- package/dist/agent-catalog/agents/opencode-agent.js.map +1 -0
- package/dist/agent-catalog/agents/pi-agent.d.ts +21 -0
- package/dist/agent-catalog/agents/pi-agent.d.ts.map +1 -0
- package/dist/agent-catalog/agents/pi-agent.js +69 -0
- package/dist/agent-catalog/agents/pi-agent.js.map +1 -0
- package/dist/agent-catalog/agents/supported-agent-specifications.d.ts +3 -0
- package/dist/agent-catalog/agents/supported-agent-specifications.d.ts.map +1 -0
- package/dist/agent-catalog/agents/supported-agent-specifications.js +15 -0
- package/dist/agent-catalog/agents/supported-agent-specifications.js.map +1 -0
- package/dist/agent-catalog/discover-agent.d.ts +5 -0
- package/dist/agent-catalog/discover-agent.d.ts.map +1 -0
- package/dist/agent-catalog/discover-agent.js +100 -0
- package/dist/agent-catalog/discover-agent.js.map +1 -0
- package/dist/agent-catalog/discover-local-agents.d.ts +12 -101
- package/dist/agent-catalog/discover-local-agents.d.ts.map +1 -1
- package/dist/agent-catalog/discover-local-agents.js +11 -564
- package/dist/agent-catalog/discover-local-agents.js.map +1 -1
- package/dist/agent-catalog/executable-discovery.d.ts +16 -0
- package/dist/agent-catalog/executable-discovery.d.ts.map +1 -0
- package/dist/agent-catalog/executable-discovery.js +105 -0
- package/dist/agent-catalog/executable-discovery.js.map +1 -0
- package/dist/agent-installation/agent-installation-manager.d.ts +1 -1
- package/dist/agent-installation/agent-installation-manager.d.ts.map +1 -1
- package/dist/agent-installation/automatic-adapter-provisioner.d.ts +2 -1
- package/dist/agent-installation/automatic-adapter-provisioner.d.ts.map +1 -1
- package/dist/agent-installation/automatic-adapter-provisioner.js +11 -2
- package/dist/agent-installation/automatic-adapter-provisioner.js.map +1 -1
- package/dist/agent-installation/deepseek-managed-package.d.ts +9 -0
- package/dist/agent-installation/deepseek-managed-package.d.ts.map +1 -0
- package/dist/agent-installation/deepseek-managed-package.js +10 -0
- package/dist/agent-installation/deepseek-managed-package.js.map +1 -0
- package/dist/agent-installation/fixed-agent-install-recipes.d.ts +18 -0
- package/dist/agent-installation/fixed-agent-install-recipes.d.ts.map +1 -1
- package/dist/agent-installation/fixed-agent-install-recipes.js +97 -0
- package/dist/agent-installation/fixed-agent-install-recipes.js.map +1 -1
- package/dist/agent-installation/fixed-installation-executor.d.ts +1 -1
- package/dist/agent-installation/fixed-installation-executor.d.ts.map +1 -1
- package/dist/agent-installation/fixed-installation-executor.js +17 -3
- package/dist/agent-installation/fixed-installation-executor.js.map +1 -1
- package/dist/agent-installation/managed-adapter-installer.d.ts +4 -4
- package/dist/agent-installation/managed-adapter-installer.d.ts.map +1 -1
- package/dist/agent-installation/managed-adapter-installer.js.map +1 -1
- package/dist/agent-installation/managed-agent-archive.d.ts +40 -0
- package/dist/agent-installation/managed-agent-archive.d.ts.map +1 -0
- package/dist/agent-installation/managed-agent-archive.js +274 -0
- package/dist/agent-installation/managed-agent-archive.js.map +1 -0
- package/dist/agent-installation/managed-npm-package.d.ts +3 -0
- package/dist/agent-installation/managed-npm-package.d.ts.map +1 -1
- package/dist/agent-installation/managed-npm-package.js +55 -24
- package/dist/agent-installation/managed-npm-package.js.map +1 -1
- package/dist/agent-installation/opencode-managed-release.d.ts +4 -0
- package/dist/agent-installation/opencode-managed-release.d.ts.map +1 -0
- package/dist/agent-installation/opencode-managed-release.js +25 -0
- package/dist/agent-installation/opencode-managed-release.js.map +1 -0
- package/dist/cli.js +2353 -1314
- package/dist/cli.js.map +4 -4
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/index.js +1802 -761
- package/dist/index.js.map +4 -4
- package/dist/native-sessions/codex-history.d.ts.map +1 -1
- package/dist/native-sessions/codex-history.js +1 -0
- package/dist/native-sessions/codex-history.js.map +1 -1
- package/dist/pairing/pair-local-machine.js +2 -2
- package/dist/pairing/pair-local-machine.js.map +1 -1
- package/dist/process/executable.d.ts +6 -1
- package/dist/process/executable.d.ts.map +1 -1
- package/dist/process/executable.js +150 -7
- package/dist/process/executable.js.map +1 -1
- package/dist/run-daemon.d.ts.map +1 -1
- package/dist/run-daemon.js +14 -2
- package/dist/run-daemon.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type ResolvedExecutable } from "../process/executable.ts";
|
|
2
|
+
import { type VerifiedDownload, type VerifiedDownloadOptions } from "./verified-download.ts";
|
|
3
|
+
export declare abstract class ManagedAgentArchiveDefinition {
|
|
4
|
+
readonly archiveName: string;
|
|
5
|
+
readonly archiveSha256: string;
|
|
6
|
+
readonly archiveUrl: URL;
|
|
7
|
+
readonly executableName: string;
|
|
8
|
+
readonly version: string;
|
|
9
|
+
abstract readonly extractArguments: (archivePath: string, destination: string) => readonly string[];
|
|
10
|
+
abstract readonly extractor: string;
|
|
11
|
+
abstract readonly listArguments: (archivePath: string) => readonly string[];
|
|
12
|
+
constructor(version: string, archiveName: string, archiveUrl: URL, archiveSha256: string, executableName: string);
|
|
13
|
+
}
|
|
14
|
+
export declare class ZipManagedAgentArchiveDefinition extends ManagedAgentArchiveDefinition {
|
|
15
|
+
readonly extractor = "/usr/bin/unzip";
|
|
16
|
+
readonly extractArguments: (archivePath: string, destination: string) => readonly string[];
|
|
17
|
+
readonly listArguments: (archivePath: string) => readonly string[];
|
|
18
|
+
}
|
|
19
|
+
export declare class TarGzipManagedAgentArchiveDefinition extends ManagedAgentArchiveDefinition {
|
|
20
|
+
readonly extractor = "/usr/bin/tar";
|
|
21
|
+
readonly extractArguments: (archivePath: string, destination: string) => readonly string[];
|
|
22
|
+
readonly listArguments: (archivePath: string) => readonly string[];
|
|
23
|
+
}
|
|
24
|
+
export declare class ManagedAgentArchiveError extends Error {
|
|
25
|
+
readonly code: string;
|
|
26
|
+
constructor(code: string, message: string, options?: ErrorOptions);
|
|
27
|
+
}
|
|
28
|
+
export interface ManagedAgentArchiveDownloadPort {
|
|
29
|
+
readonly download: (options: VerifiedDownloadOptions) => Promise<VerifiedDownload>;
|
|
30
|
+
}
|
|
31
|
+
export interface ManagedAgentArchiveInstallationPort {
|
|
32
|
+
readonly install: (root: string, definition: ManagedAgentArchiveDefinition, signal: AbortSignal) => Promise<ResolvedExecutable>;
|
|
33
|
+
}
|
|
34
|
+
export declare function validateManagedAgentArchive(root: string, definition: ManagedAgentArchiveDefinition, signal: AbortSignal): Promise<ResolvedExecutable>;
|
|
35
|
+
export declare class ManagedAgentArchiveInstaller implements ManagedAgentArchiveInstallationPort {
|
|
36
|
+
#private;
|
|
37
|
+
constructor(downloader?: ManagedAgentArchiveDownloadPort);
|
|
38
|
+
readonly install: (root: string, definition: ManagedAgentArchiveDefinition, signal: AbortSignal) => Promise<ResolvedExecutable>;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=managed-agent-archive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"managed-agent-archive.d.ts","sourceRoot":"","sources":["../../src/agent-installation/managed-agent-archive.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,KAAK,kBAAkB,EAGxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC7B,MAAM,wBAAwB,CAAC;AAQhC,8BAAsB,6BAA6B;IACjD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAClC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,KAChB,SAAS,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,SAAS,MAAM,EAAE,CAAC;IAE5E,YACE,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,GAAG,EACf,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EAOvB;CACF;AAED,qBAAa,gCAAiC,SAAQ,6BAA6B;IACjF,QAAQ,CAAC,SAAS,oBAAoB;IACtC,QAAQ,CAAC,gBAAgB,gBACV,MAAM,eACN,MAAM,KAClB,SAAS,MAAM,EAAE,CAA2C;IAC/D,QAAQ,CAAC,aAAa,gBAAiB,MAAM,KAAG,SAAS,MAAM,EAAE,CAG/D;CACH;AAED,qBAAa,oCAAqC,SAAQ,6BAA6B;IACrF,QAAQ,CAAC,SAAS,kBAAkB;IACpC,QAAQ,CAAC,gBAAgB,gBACV,MAAM,eACN,MAAM,KAClB,SAAS,MAAM,EAAE,CAA6C;IACjE,QAAQ,CAAC,aAAa,gBAAiB,MAAM,KAAG,SAAS,MAAM,EAAE,CAG/D;CACH;AAED,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,YAAY,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,EAIpE;CACF;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,QAAQ,EAAE,CACjB,OAAO,EAAE,uBAAuB,KAC7B,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAChC;AAQD,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,OAAO,EAAE,CAChB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,6BAA6B,EACzC,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAClC;AA4FD,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,6BAA6B,EACzC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,kBAAkB,CAAC,CA4C7B;AAsBD,qBAAa,4BACX,YAAW,mCAAmC;;IAI9C,YACE,UAAU,GAAE,+BAAqE,EAGlF;IAED,QAAQ,CAAC,OAAO,SACR,MAAM,cACA,6BAA6B,UACjC,WAAW,KAClB,OAAO,CAAC,kBAAkB,CAAC,CAkI5B;CACH"}
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { createReadStream } from "node:fs";
|
|
3
|
+
import { chmod, copyFile, mkdir, mkdtemp, open, realpath, rename, rm, stat, writeFile, } from "node:fs/promises";
|
|
4
|
+
import { dirname, isAbsolute, join, relative, sep } from "node:path";
|
|
5
|
+
import { resolveExecutablePath, runBoundedProcess, } from "../process/executable.js";
|
|
6
|
+
import { downloadVerifiedFile, } from "./verified-download.js";
|
|
7
|
+
const ARCHIVE_DOWNLOAD_LIMIT_BYTES = 128 * 1024 * 1024;
|
|
8
|
+
const ARCHIVE_DOWNLOAD_TIMEOUT_MILLISECONDS = 2 * 60 * 1_000;
|
|
9
|
+
const ARCHIVE_EXTRACTION_TIMEOUT_MILLISECONDS = 60_000;
|
|
10
|
+
const MANIFEST_LIMIT_BYTES = 16 * 1024;
|
|
11
|
+
const MINIMAL_PATH = "/usr/bin:/bin";
|
|
12
|
+
export class ManagedAgentArchiveDefinition {
|
|
13
|
+
archiveName;
|
|
14
|
+
archiveSha256;
|
|
15
|
+
archiveUrl;
|
|
16
|
+
executableName;
|
|
17
|
+
version;
|
|
18
|
+
constructor(version, archiveName, archiveUrl, archiveSha256, executableName) {
|
|
19
|
+
this.archiveName = archiveName;
|
|
20
|
+
this.archiveSha256 = archiveSha256;
|
|
21
|
+
this.archiveUrl = new URL(archiveUrl);
|
|
22
|
+
this.executableName = executableName;
|
|
23
|
+
this.version = version;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export class ZipManagedAgentArchiveDefinition extends ManagedAgentArchiveDefinition {
|
|
27
|
+
extractor = "/usr/bin/unzip";
|
|
28
|
+
extractArguments = (archivePath, destination) => ["-q", archivePath, "-d", destination];
|
|
29
|
+
listArguments = (archivePath) => [
|
|
30
|
+
"-Z1",
|
|
31
|
+
archivePath,
|
|
32
|
+
];
|
|
33
|
+
}
|
|
34
|
+
export class TarGzipManagedAgentArchiveDefinition extends ManagedAgentArchiveDefinition {
|
|
35
|
+
extractor = "/usr/bin/tar";
|
|
36
|
+
extractArguments = (archivePath, destination) => ["-xzf", archivePath, "-C", destination];
|
|
37
|
+
listArguments = (archivePath) => [
|
|
38
|
+
"-tzf",
|
|
39
|
+
archivePath,
|
|
40
|
+
];
|
|
41
|
+
}
|
|
42
|
+
export class ManagedAgentArchiveError extends Error {
|
|
43
|
+
code;
|
|
44
|
+
constructor(code, message, options = {}) {
|
|
45
|
+
super(message, options);
|
|
46
|
+
this.code = code;
|
|
47
|
+
this.name = "ManagedAgentArchiveError";
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
class ManagedAgentArchiveDownloader {
|
|
51
|
+
download = async (options) => await downloadVerifiedFile(options);
|
|
52
|
+
}
|
|
53
|
+
function isRecord(value) {
|
|
54
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
55
|
+
}
|
|
56
|
+
function isContainedPath(root, candidate) {
|
|
57
|
+
const difference = relative(root, candidate);
|
|
58
|
+
return (difference.length > 0 &&
|
|
59
|
+
difference !== ".." &&
|
|
60
|
+
!difference.startsWith(`..${sep}`) &&
|
|
61
|
+
!isAbsolute(difference));
|
|
62
|
+
}
|
|
63
|
+
async function hashFile(path, signal) {
|
|
64
|
+
signal.throwIfAborted();
|
|
65
|
+
const digest = createHash("sha256");
|
|
66
|
+
const stream = createReadStream(path, { signal });
|
|
67
|
+
try {
|
|
68
|
+
for await (const chunk of stream) {
|
|
69
|
+
signal.throwIfAborted();
|
|
70
|
+
if (!(chunk instanceof Uint8Array)) {
|
|
71
|
+
throw new ManagedAgentArchiveError("managed_archive_verification_failed", "The managed Agent archive produced invalid bytes");
|
|
72
|
+
}
|
|
73
|
+
digest.update(chunk);
|
|
74
|
+
}
|
|
75
|
+
return digest.digest("hex");
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
if (signal.aborted) {
|
|
79
|
+
signal.throwIfAborted();
|
|
80
|
+
}
|
|
81
|
+
if (error instanceof ManagedAgentArchiveError) {
|
|
82
|
+
throw error;
|
|
83
|
+
}
|
|
84
|
+
throw new ManagedAgentArchiveError("managed_archive_verification_failed", "The managed Agent artifact could not be verified", { cause: error });
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async function readManifest(path) {
|
|
88
|
+
let handle;
|
|
89
|
+
try {
|
|
90
|
+
handle = await open(path, "r");
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
throw new ManagedAgentArchiveError("managed_archive_verification_failed", "The managed Agent archive manifest is invalid", { cause: error });
|
|
94
|
+
}
|
|
95
|
+
try {
|
|
96
|
+
const metadata = await handle.stat();
|
|
97
|
+
if (!metadata.isFile() || metadata.size > MANIFEST_LIMIT_BYTES) {
|
|
98
|
+
throw new ManagedAgentArchiveError("managed_archive_verification_failed", "The managed Agent archive manifest is invalid");
|
|
99
|
+
}
|
|
100
|
+
const parsed = JSON.parse(await handle.readFile({ encoding: "utf8" }));
|
|
101
|
+
if (!isRecord(parsed)) {
|
|
102
|
+
throw new ManagedAgentArchiveError("managed_archive_verification_failed", "The managed Agent archive manifest is invalid");
|
|
103
|
+
}
|
|
104
|
+
return parsed;
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
if (error instanceof ManagedAgentArchiveError) {
|
|
108
|
+
throw error;
|
|
109
|
+
}
|
|
110
|
+
throw new ManagedAgentArchiveError("managed_archive_verification_failed", "The managed Agent archive manifest is invalid", { cause: error });
|
|
111
|
+
}
|
|
112
|
+
finally {
|
|
113
|
+
await handle.close();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
export async function validateManagedAgentArchive(root, definition, signal) {
|
|
117
|
+
try {
|
|
118
|
+
const rootPath = await realpath(root);
|
|
119
|
+
const rootMetadata = await stat(rootPath);
|
|
120
|
+
if (!rootMetadata.isDirectory() ||
|
|
121
|
+
(typeof process.getuid === "function" &&
|
|
122
|
+
rootMetadata.uid !== process.getuid())) {
|
|
123
|
+
throw new Error("Managed Agent root is not user-owned");
|
|
124
|
+
}
|
|
125
|
+
const manifest = await readManifest(join(rootPath, "archive.json"));
|
|
126
|
+
if (manifest["archiveSha256"] !== definition.archiveSha256 ||
|
|
127
|
+
manifest["archiveUrl"] !== definition.archiveUrl.toString() ||
|
|
128
|
+
manifest["version"] !== definition.version ||
|
|
129
|
+
typeof manifest["executableSha256"] !== "string") {
|
|
130
|
+
throw new Error("Managed Agent archive identity is invalid");
|
|
131
|
+
}
|
|
132
|
+
const executable = await resolveExecutablePath(join(rootPath, "bin", definition.executableName));
|
|
133
|
+
if (executable === null ||
|
|
134
|
+
!isContainedPath(rootPath, executable.path) ||
|
|
135
|
+
(await hashFile(executable.path, signal)) !== manifest["executableSha256"]) {
|
|
136
|
+
throw new Error("Managed Agent executable is invalid");
|
|
137
|
+
}
|
|
138
|
+
return executable;
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
if (signal.aborted) {
|
|
142
|
+
signal.throwIfAborted();
|
|
143
|
+
}
|
|
144
|
+
if (error instanceof ManagedAgentArchiveError) {
|
|
145
|
+
throw error;
|
|
146
|
+
}
|
|
147
|
+
throw new ManagedAgentArchiveError("managed_archive_verification_failed", "The managed Agent archive did not match its pinned artifact", { cause: error });
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
function validateArchiveEntries(output, definition) {
|
|
151
|
+
const entries = output
|
|
152
|
+
.split(/\r?\n/)
|
|
153
|
+
.map((entry) => entry.trim())
|
|
154
|
+
.filter((entry) => entry.length > 0);
|
|
155
|
+
if (entries.length !== 1 ||
|
|
156
|
+
(entries[0] !== definition.executableName &&
|
|
157
|
+
entries[0] !== `./${definition.executableName}`)) {
|
|
158
|
+
throw new ManagedAgentArchiveError("managed_archive_verification_failed", "The managed Agent archive contains unexpected entries");
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
export class ManagedAgentArchiveInstaller {
|
|
162
|
+
#downloader;
|
|
163
|
+
constructor(downloader = new ManagedAgentArchiveDownloader()) {
|
|
164
|
+
this.#downloader = downloader;
|
|
165
|
+
}
|
|
166
|
+
install = async (root, definition, signal) => {
|
|
167
|
+
signal.throwIfAborted();
|
|
168
|
+
try {
|
|
169
|
+
const metadata = await stat(root);
|
|
170
|
+
if (metadata.isDirectory()) {
|
|
171
|
+
return await validateManagedAgentArchive(root, definition, signal);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
if (error instanceof ManagedAgentArchiveError ||
|
|
176
|
+
!(error instanceof Error) ||
|
|
177
|
+
!("code" in error) ||
|
|
178
|
+
error.code !== "ENOENT") {
|
|
179
|
+
throw error;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
const parent = dirname(root);
|
|
183
|
+
await mkdir(parent, { mode: 0o700, recursive: true });
|
|
184
|
+
const working = await mkdtemp(join(parent, `.${definition.version}.archive-`));
|
|
185
|
+
const staging = await mkdtemp(join(parent, `.${definition.version}.staging-`));
|
|
186
|
+
try {
|
|
187
|
+
const archivePath = join(working, definition.archiveName);
|
|
188
|
+
const extractionRoot = join(working, "extracted");
|
|
189
|
+
await mkdir(extractionRoot, { mode: 0o700 });
|
|
190
|
+
const canonicalExtractionRoot = await realpath(extractionRoot);
|
|
191
|
+
const download = await this.#downloader.download({
|
|
192
|
+
allowedHosts: new Set([
|
|
193
|
+
"github.com",
|
|
194
|
+
"objects.githubusercontent.com",
|
|
195
|
+
"release-assets.githubusercontent.com",
|
|
196
|
+
]),
|
|
197
|
+
destination: archivePath,
|
|
198
|
+
maximumBytes: ARCHIVE_DOWNLOAD_LIMIT_BYTES,
|
|
199
|
+
signal,
|
|
200
|
+
timeoutMilliseconds: ARCHIVE_DOWNLOAD_TIMEOUT_MILLISECONDS,
|
|
201
|
+
url: definition.archiveUrl,
|
|
202
|
+
});
|
|
203
|
+
if (download.sha256 !== definition.archiveSha256) {
|
|
204
|
+
throw new ManagedAgentArchiveError("managed_archive_verification_failed", "The managed Agent archive checksum is invalid");
|
|
205
|
+
}
|
|
206
|
+
const list = await runBoundedProcess({
|
|
207
|
+
arguments: definition.listArguments(archivePath),
|
|
208
|
+
command: definition.extractor,
|
|
209
|
+
cwd: working,
|
|
210
|
+
environment: { PATH: MINIMAL_PATH },
|
|
211
|
+
outputLimitBytes: 64 * 1024,
|
|
212
|
+
signal,
|
|
213
|
+
timeoutMilliseconds: ARCHIVE_EXTRACTION_TIMEOUT_MILLISECONDS,
|
|
214
|
+
});
|
|
215
|
+
validateArchiveEntries(list.stdout, definition);
|
|
216
|
+
await runBoundedProcess({
|
|
217
|
+
arguments: definition.extractArguments(archivePath, extractionRoot),
|
|
218
|
+
command: definition.extractor,
|
|
219
|
+
cwd: working,
|
|
220
|
+
environment: { PATH: MINIMAL_PATH },
|
|
221
|
+
outputLimitBytes: 64 * 1024,
|
|
222
|
+
signal,
|
|
223
|
+
timeoutMilliseconds: ARCHIVE_EXTRACTION_TIMEOUT_MILLISECONDS,
|
|
224
|
+
});
|
|
225
|
+
const extracted = await realpath(join(canonicalExtractionRoot, definition.executableName));
|
|
226
|
+
const extractedMetadata = await stat(extracted);
|
|
227
|
+
if (!isContainedPath(canonicalExtractionRoot, extracted) ||
|
|
228
|
+
!extractedMetadata.isFile()) {
|
|
229
|
+
throw new ManagedAgentArchiveError("managed_archive_verification_failed", "The managed Agent archive executable is invalid");
|
|
230
|
+
}
|
|
231
|
+
const binDirectory = join(staging, "bin");
|
|
232
|
+
const executablePath = join(binDirectory, definition.executableName);
|
|
233
|
+
await mkdir(binDirectory, { mode: 0o700 });
|
|
234
|
+
await copyFile(extracted, executablePath);
|
|
235
|
+
await chmod(executablePath, 0o700);
|
|
236
|
+
const executableSha256 = await hashFile(executablePath, signal);
|
|
237
|
+
await writeFile(join(staging, "archive.json"), `${JSON.stringify({
|
|
238
|
+
archiveSha256: definition.archiveSha256,
|
|
239
|
+
archiveUrl: definition.archiveUrl.toString(),
|
|
240
|
+
executableSha256,
|
|
241
|
+
version: definition.version,
|
|
242
|
+
})}\n`, { mode: 0o600 });
|
|
243
|
+
await validateManagedAgentArchive(staging, definition, signal);
|
|
244
|
+
try {
|
|
245
|
+
await rename(staging, root);
|
|
246
|
+
}
|
|
247
|
+
catch (error) {
|
|
248
|
+
try {
|
|
249
|
+
return await validateManagedAgentArchive(root, definition, signal);
|
|
250
|
+
}
|
|
251
|
+
catch {
|
|
252
|
+
throw new ManagedAgentArchiveError("managed_archive_publish_failed", "The managed Agent archive could not be published", { cause: error });
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
return await validateManagedAgentArchive(root, definition, signal);
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
if (signal.aborted) {
|
|
259
|
+
signal.throwIfAborted();
|
|
260
|
+
}
|
|
261
|
+
if (error instanceof ManagedAgentArchiveError) {
|
|
262
|
+
throw error;
|
|
263
|
+
}
|
|
264
|
+
throw new ManagedAgentArchiveError("managed_archive_install_failed", "The pinned Agent archive could not be installed", { cause: error });
|
|
265
|
+
}
|
|
266
|
+
finally {
|
|
267
|
+
await Promise.all([
|
|
268
|
+
rm(working, { force: true, recursive: true }),
|
|
269
|
+
rm(staging, { force: true, recursive: true }),
|
|
270
|
+
]);
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
//# sourceMappingURL=managed-agent-archive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"managed-agent-archive.js","sourceRoot":"","sources":["../../src/agent-installation/managed-agent-archive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EACL,KAAK,EACL,QAAQ,EACR,KAAK,EACL,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,EAAE,EACF,IAAI,EACJ,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAErE,OAAO,EAEL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,oBAAoB,GAGrB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,4BAA4B,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AACvD,MAAM,qCAAqC,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;AAC7D,MAAM,uCAAuC,GAAG,MAAM,CAAC;AACvD,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,CAAC;AACvC,MAAM,YAAY,GAAG,eAAe,CAAC;AAErC,MAAM,OAAgB,6BAA6B;IACxC,WAAW,CAAS;IACpB,aAAa,CAAS;IACtB,UAAU,CAAM;IAChB,cAAc,CAAS;IACvB,OAAO,CAAS;IAQzB,YACE,OAAe,EACf,WAAmB,EACnB,UAAe,EACf,aAAqB,EACrB,cAAsB;QAEtB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,gCAAiC,SAAQ,6BAA6B;IACxE,SAAS,GAAG,gBAAgB,CAAC;IAC7B,gBAAgB,GAAG,CAC1B,WAAmB,EACnB,WAAmB,EACA,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IACtD,aAAa,GAAG,CAAC,WAAmB,EAAqB,EAAE,CAAC;QACnE,KAAK;QACL,WAAW;KACZ,CAAC;CACH;AAED,MAAM,OAAO,oCAAqC,SAAQ,6BAA6B;IAC5E,SAAS,GAAG,cAAc,CAAC;IAC3B,gBAAgB,GAAG,CAC1B,WAAmB,EACnB,WAAmB,EACA,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IACxD,aAAa,GAAG,CAAC,WAAmB,EAAqB,EAAE,CAAC;QACnE,MAAM;QACN,WAAW;KACZ,CAAC;CACH;AAED,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACxC,IAAI,CAAS;IAEtB,YAAY,IAAY,EAAE,OAAe,EAAE,OAAO,GAAiB,EAAE;QACnE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAQD,MAAM,6BAA6B;IACxB,QAAQ,GAAG,KAAK,EACvB,OAAgC,EACL,EAAE,CAAC,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;CACrE;AAUD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,SAAiB;IACtD,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7C,OAAO,CACL,UAAU,CAAC,MAAM,GAAG,CAAC;QACrB,UAAU,KAAK,IAAI;QACnB,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC;QAClC,CAAC,UAAU,CAAC,UAAU,CAAC,CACxB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,MAAmB;IACvD,MAAM,CAAC,cAAc,EAAE,CAAC;IACxB,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAClD,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,MAAM,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,wBAAwB,CAChC,qCAAqC,EACrC,kDAAkD,CACnD,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,KAAK,YAAY,wBAAwB,EAAE,CAAC;YAC9C,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,wBAAwB,CAChC,qCAAqC,EACrC,kDAAkD,EAClD,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,IAAY;IAEZ,IAAI,MAAwC,CAAC;IAC7C,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,wBAAwB,CAChC,qCAAqC,EACrC,+CAA+C,EAC/C,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,QAAQ,CAAC,IAAI,GAAG,oBAAoB,EAAE,CAAC;YAC/D,MAAM,IAAI,wBAAwB,CAChC,qCAAqC,EACrC,+CAA+C,CAChD,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAChC,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAC5C,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,wBAAwB,CAChC,qCAAqC,EACrC,+CAA+C,CAChD,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,wBAAwB,EAAE,CAAC;YAC9C,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,wBAAwB,CAChC,qCAAqC,EACrC,+CAA+C,EAC/C,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,IAAY,EACZ,UAAyC,EACzC,MAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,IACE,CAAC,YAAY,CAAC,WAAW,EAAE;YAC3B,CAAC,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU;gBACnC,YAAY,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,EACxC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;QACpE,IACE,QAAQ,CAAC,eAAe,CAAC,KAAK,UAAU,CAAC,aAAa;YACtD,QAAQ,CAAC,YAAY,CAAC,KAAK,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE;YAC3D,QAAQ,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,OAAO;YAC1C,OAAO,QAAQ,CAAC,kBAAkB,CAAC,KAAK,QAAQ,EAChD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAC5C,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC,CACjD,CAAC;QACF,IACE,UAAU,KAAK,IAAI;YACnB,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC;YAC3C,CAAC,MAAM,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,kBAAkB,CAAC,EAC1E,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,KAAK,YAAY,wBAAwB,EAAE,CAAC;YAC9C,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,wBAAwB,CAChC,qCAAqC,EACrC,6DAA6D,EAC7D,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAAc,EACd,UAAyC;IAEzC,MAAM,OAAO,GAAG,MAAM;SACnB,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvC,IACE,OAAO,CAAC,MAAM,KAAK,CAAC;QACpB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,cAAc;YACvC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,cAAc,EAAE,CAAC,EAClD,CAAC;QACD,MAAM,IAAI,wBAAwB,CAChC,qCAAqC,EACrC,uDAAuD,CACxD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,OAAO,4BAA4B;IAG9B,WAAW,CAAkC;IAEtD,YACE,UAAU,GAAoC,IAAI,6BAA6B,EAAE;QAEjF,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAEQ,OAAO,GAAG,KAAK,EACtB,IAAY,EACZ,UAAyC,EACzC,MAAmB,EACU,EAAE;QAC/B,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC3B,OAAO,MAAM,2BAA2B,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IACE,KAAK,YAAY,wBAAwB;gBACzC,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;gBACzB,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC;gBAClB,KAAK,CAAC,IAAI,KAAK,QAAQ,EACvB,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,MAAM,OAAO,CAC3B,IAAI,CAAC,MAAM,EAAE,IAAI,UAAU,CAAC,OAAO,WAAW,CAAC,CAChD,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,OAAO,CAC3B,IAAI,CAAC,MAAM,EAAE,IAAI,UAAU,CAAC,OAAO,WAAW,CAAC,CAChD,CAAC;QACF,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;YAC1D,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAClD,MAAM,KAAK,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7C,MAAM,uBAAuB,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;gBAC/C,YAAY,EAAE,IAAI,GAAG,CAAC;oBACpB,YAAY;oBACZ,+BAA+B;oBAC/B,sCAAsC;iBACvC,CAAC;gBACF,WAAW,EAAE,WAAW;gBACxB,YAAY,EAAE,4BAA4B;gBAC1C,MAAM;gBACN,mBAAmB,EAAE,qCAAqC;gBAC1D,GAAG,EAAE,UAAU,CAAC,UAAU;aAC3B,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC,aAAa,EAAE,CAAC;gBACjD,MAAM,IAAI,wBAAwB,CAChC,qCAAqC,EACrC,+CAA+C,CAChD,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC;gBACnC,SAAS,EAAE,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC;gBAChD,OAAO,EAAE,UAAU,CAAC,SAAS;gBAC7B,GAAG,EAAE,OAAO;gBACZ,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;gBACnC,gBAAgB,EAAE,EAAE,GAAG,IAAI;gBAC3B,MAAM;gBACN,mBAAmB,EAAE,uCAAuC;aAC7D,CAAC,CAAC;YACH,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAChD,MAAM,iBAAiB,CAAC;gBACtB,SAAS,EAAE,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,cAAc,CAAC;gBACnE,OAAO,EAAE,UAAU,CAAC,SAAS;gBAC7B,GAAG,EAAE,OAAO;gBACZ,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;gBACnC,gBAAgB,EAAE,EAAE,GAAG,IAAI;gBAC3B,MAAM;gBACN,mBAAmB,EAAE,uCAAuC;aAC7D,CAAC,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,QAAQ,CAC9B,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,cAAc,CAAC,CACzD,CAAC;YACF,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;YAChD,IACE,CAAC,eAAe,CAAC,uBAAuB,EAAE,SAAS,CAAC;gBACpD,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAC3B,CAAC;gBACD,MAAM,IAAI,wBAAwB,CAChC,qCAAqC,EACrC,iDAAiD,CAClD,CAAC;YACJ,CAAC;YACD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC1C,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;YACrE,MAAM,KAAK,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3C,MAAM,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YAC1C,MAAM,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;YACnC,MAAM,gBAAgB,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YAChE,MAAM,SAAS,CACb,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,EAC7B,GAAG,IAAI,CAAC,SAAS,CAAC;gBAChB,aAAa,EAAE,UAAU,CAAC,aAAa;gBACvC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE;gBAC5C,gBAAgB;gBAChB,OAAO,EAAE,UAAU,CAAC,OAAO;aAC5B,CAAC,IAAI,EACN,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;YACF,MAAM,2BAA2B,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;YAC/D,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC9B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC;oBACH,OAAO,MAAM,2BAA2B,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;gBACrE,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,IAAI,wBAAwB,CAChC,gCAAgC,EAChC,kDAAkD,EAClD,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,OAAO,MAAM,2BAA2B,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,CAAC;YACD,IAAI,KAAK,YAAY,wBAAwB,EAAE,CAAC;gBAC9C,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,wBAAwB,CAChC,gCAAgC,EAChC,iDAAiD,EACjD,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;gBAC7C,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;aAC9C,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;CACH"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { type ResolvedExecutable } from "../process/executable.ts";
|
|
2
2
|
export declare class ManagedNpmPackageDefinition {
|
|
3
|
+
readonly dependencyResolutionArguments: readonly string[];
|
|
3
4
|
readonly executableName: string;
|
|
5
|
+
readonly includeOptionalDependencies: boolean;
|
|
4
6
|
readonly packageName: string;
|
|
5
7
|
readonly version: string;
|
|
8
|
+
readonly verifyDependencyClosure: boolean;
|
|
6
9
|
constructor(packageName: string, version: string, executableName: string);
|
|
7
10
|
}
|
|
8
11
|
export declare class SriManagedNpmPackageDefinition extends ManagedNpmPackageDefinition {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"managed-npm-package.d.ts","sourceRoot":"","sources":["../../src/agent-installation/managed-npm-package.ts"],"names":[],"mappings":"AAWA,OAAO,EAEL,KAAK,kBAAkB,EAGxB,MAAM,0BAA0B,CAAC;AAMlC,qBAAa,2BAA2B;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"managed-npm-package.d.ts","sourceRoot":"","sources":["../../src/agent-installation/managed-npm-package.ts"],"names":[],"mappings":"AAWA,OAAO,EAEL,KAAK,kBAAkB,EAGxB,MAAM,0BAA0B,CAAC;AAMlC,qBAAa,2BAA2B;IACtC,QAAQ,CAAC,6BAA6B,EAAE,SAAS,MAAM,EAAE,CAAqB;IAC9E,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,2BAA2B,EAAE,OAAO,CAAS;IACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAS;IAElD,YAAY,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAIvE;CACF;AAED,qBAAa,8BAA+B,SAAQ,2BAA2B;IAC7E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,YACE,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAKnB;CACF;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,YAAY,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,EAIpE;CACF;AAwJD,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,2BAA2B,GACtC,OAAO,CAAC,kBAAkB,CAAC,CAa7B;AAmDD,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,OAAO,EAAE,CAChB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,2BAA2B,EACvC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EACxC,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAClC;AAED,qBAAa,0BACX,YAAW,iCAAiC;IAE5C,QAAQ,CAAC,OAAO,SACR,MAAM,cACA,2BAA2B,eAC1B,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,UAChC,WAAW,KAClB,OAAO,CAAC,kBAAkB,CAAC,CA2G5B;CACH"}
|
|
@@ -5,9 +5,12 @@ const INSTALL_TIMEOUT_MILLISECONDS = 5 * 60 * 1_000;
|
|
|
5
5
|
const PACKAGE_METADATA_LIMIT_BYTES = 64 * 1024;
|
|
6
6
|
const PACKAGE_LOCK_LIMIT_BYTES = 8 * 1024 * 1024;
|
|
7
7
|
export class ManagedNpmPackageDefinition {
|
|
8
|
+
dependencyResolutionArguments = Object.freeze([]);
|
|
8
9
|
executableName;
|
|
10
|
+
includeOptionalDependencies = false;
|
|
9
11
|
packageName;
|
|
10
12
|
version;
|
|
13
|
+
verifyDependencyClosure = false;
|
|
11
14
|
constructor(packageName, version, executableName) {
|
|
12
15
|
this.executableName = executableName;
|
|
13
16
|
this.packageName = packageName;
|
|
@@ -92,6 +95,31 @@ function verifyPackageLock(lock, definition) {
|
|
|
92
95
|
let matches = 0;
|
|
93
96
|
for (const [key, candidate] of Object.entries(packages)) {
|
|
94
97
|
const normalizedKey = key.replaceAll("\\", "/");
|
|
98
|
+
if (definition.verifyDependencyClosure && normalizedKey.length > 0) {
|
|
99
|
+
let resolved;
|
|
100
|
+
try {
|
|
101
|
+
if (!normalizedKey.split("/").includes("node_modules") ||
|
|
102
|
+
!isRecord(candidate) ||
|
|
103
|
+
typeof candidate["version"] !== "string" ||
|
|
104
|
+
candidate["version"].length === 0 ||
|
|
105
|
+
typeof candidate["integrity"] !== "string" ||
|
|
106
|
+
!/^sha512-[A-Za-z0-9+/]{86}==$/.test(candidate["integrity"]) ||
|
|
107
|
+
typeof candidate["resolved"] !== "string") {
|
|
108
|
+
throw new Error("Invalid locked dependency");
|
|
109
|
+
}
|
|
110
|
+
resolved = new URL(candidate["resolved"]);
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
throw new ManagedNpmPackageError("managed_package_verification_failed", "The managed npm dependency closure is invalid", { cause: error });
|
|
114
|
+
}
|
|
115
|
+
if (resolved.protocol !== "https:" ||
|
|
116
|
+
resolved.hostname !== "registry.npmjs.org" ||
|
|
117
|
+
resolved.port.length > 0 ||
|
|
118
|
+
resolved.username.length > 0 ||
|
|
119
|
+
resolved.password.length > 0) {
|
|
120
|
+
throw new ManagedNpmPackageError("managed_package_verification_failed", "The managed npm dependency closure is invalid");
|
|
121
|
+
}
|
|
122
|
+
}
|
|
95
123
|
if (normalizedKey === suffix || normalizedKey.endsWith(`/${suffix}`)) {
|
|
96
124
|
entry = candidate;
|
|
97
125
|
matches += 1;
|
|
@@ -161,33 +189,36 @@ export class ManagedNpmPackageInstaller {
|
|
|
161
189
|
if (npm === null) {
|
|
162
190
|
throw new ManagedNpmPackageError("package_manager_not_found", "A supported npm executable is required to install the managed package");
|
|
163
191
|
}
|
|
192
|
+
const installArguments = ["install", "--prefix", staging];
|
|
193
|
+
installArguments.push(...definition.dependencyResolutionArguments);
|
|
194
|
+
if (definition.includeOptionalDependencies) {
|
|
195
|
+
installArguments.push("--include=optional");
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
installArguments.push("--omit=optional");
|
|
199
|
+
}
|
|
200
|
+
installArguments.push("--ignore-scripts", "--no-audit", "--no-fund", "--package-lock=true", "--save-exact", "--registry=https://registry.npmjs.org/", `${definition.packageName}@${definition.version}`);
|
|
201
|
+
const installEnvironment = {
|
|
202
|
+
HOME: join(staging, "home"),
|
|
203
|
+
NPM_CONFIG_AUDIT: "false",
|
|
204
|
+
NPM_CONFIG_CACHE: join(staging, ".npm-cache"),
|
|
205
|
+
NPM_CONFIG_FUND: "false",
|
|
206
|
+
NPM_CONFIG_IGNORE_SCRIPTS: "true",
|
|
207
|
+
NPM_CONFIG_PACKAGE_LOCK: "true",
|
|
208
|
+
NPM_CONFIG_REGISTRY: "https://registry.npmjs.org/",
|
|
209
|
+
PATH: `${dirname(process.execPath)}${delimiter}/usr/bin${delimiter}/bin`,
|
|
210
|
+
};
|
|
211
|
+
if (definition.includeOptionalDependencies) {
|
|
212
|
+
installEnvironment["NPM_CONFIG_INCLUDE"] = "optional";
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
installEnvironment["NPM_CONFIG_OMIT"] = "optional";
|
|
216
|
+
}
|
|
164
217
|
await runBoundedProcess({
|
|
165
|
-
arguments:
|
|
166
|
-
"install",
|
|
167
|
-
"--prefix",
|
|
168
|
-
staging,
|
|
169
|
-
"--omit=optional",
|
|
170
|
-
"--ignore-scripts",
|
|
171
|
-
"--no-audit",
|
|
172
|
-
"--no-fund",
|
|
173
|
-
"--package-lock=true",
|
|
174
|
-
"--save-exact",
|
|
175
|
-
"--registry=https://registry.npmjs.org/",
|
|
176
|
-
`${definition.packageName}@${definition.version}`,
|
|
177
|
-
],
|
|
218
|
+
arguments: installArguments,
|
|
178
219
|
command: npm.path,
|
|
179
220
|
cwd: staging,
|
|
180
|
-
environment:
|
|
181
|
-
HOME: join(staging, "home"),
|
|
182
|
-
NPM_CONFIG_AUDIT: "false",
|
|
183
|
-
NPM_CONFIG_CACHE: join(staging, ".npm-cache"),
|
|
184
|
-
NPM_CONFIG_FUND: "false",
|
|
185
|
-
NPM_CONFIG_IGNORE_SCRIPTS: "true",
|
|
186
|
-
NPM_CONFIG_OMIT: "optional",
|
|
187
|
-
NPM_CONFIG_PACKAGE_LOCK: "true",
|
|
188
|
-
NPM_CONFIG_REGISTRY: "https://registry.npmjs.org/",
|
|
189
|
-
PATH: `${dirname(process.execPath)}${delimiter}/usr/bin${delimiter}/bin`,
|
|
190
|
-
},
|
|
221
|
+
environment: installEnvironment,
|
|
191
222
|
outputLimitBytes: 64 * 1024,
|
|
192
223
|
signal,
|
|
193
224
|
timeoutMilliseconds: INSTALL_TIMEOUT_MILLISECONDS,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"managed-npm-package.js","sourceRoot":"","sources":["../../src/agent-installation/managed-npm-package.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,EAAE,EACF,IAAI,GACL,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEhF,OAAO,EACL,oBAAoB,EAEpB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAElC,MAAM,4BAA4B,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;AACpD,MAAM,4BAA4B,GAAG,EAAE,GAAG,IAAI,CAAC;AAC/C,MAAM,wBAAwB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjD,MAAM,OAAO,2BAA2B;IAC7B,cAAc,CAAS;IACvB,WAAW,CAAS;IACpB,OAAO,CAAS;
|
|
1
|
+
{"version":3,"file":"managed-npm-package.js","sourceRoot":"","sources":["../../src/agent-installation/managed-npm-package.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type ManagedAgentArchiveDefinition } from "./managed-agent-archive.ts";
|
|
2
|
+
export declare const OPENCODE_MANAGED_VERSION = "1.18.29";
|
|
3
|
+
export declare function openCodeManagedArchive(platform: NodeJS.Platform, architecture: NodeJS.Architecture): ManagedAgentArchiveDefinition;
|
|
4
|
+
//# sourceMappingURL=opencode-managed-release.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode-managed-release.d.ts","sourceRoot":"","sources":["../../src/agent-installation/opencode-managed-release.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,6BAA6B,EAGnC,MAAM,4BAA4B,CAAC;AAEpC,eAAO,MAAM,wBAAwB,YAAY,CAAC;AAQlD,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,YAAY,EAAE,MAAM,CAAC,YAAY,GAChC,6BAA6B,CA4C/B"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { TarGzipManagedAgentArchiveDefinition, ZipManagedAgentArchiveDefinition, } from "./managed-agent-archive.js";
|
|
2
|
+
export const OPENCODE_MANAGED_VERSION = "1.18.29";
|
|
3
|
+
function releaseUrl(asset) {
|
|
4
|
+
return new URL(`https://github.com/anomalyco/opencode/releases/download/v${OPENCODE_MANAGED_VERSION}/${asset}`);
|
|
5
|
+
}
|
|
6
|
+
export function openCodeManagedArchive(platform, architecture) {
|
|
7
|
+
if (platform === "darwin" && architecture === "arm64") {
|
|
8
|
+
const asset = "opencode-darwin-arm64.zip";
|
|
9
|
+
return new ZipManagedAgentArchiveDefinition(OPENCODE_MANAGED_VERSION, asset, releaseUrl(asset), "fe764f7f360c584a83e18dd5f23fb1a6b2725f5ee8854b0252fe558f7798e946", "opencode");
|
|
10
|
+
}
|
|
11
|
+
if (platform === "darwin" && architecture === "x64") {
|
|
12
|
+
const asset = "opencode-darwin-x64.zip";
|
|
13
|
+
return new ZipManagedAgentArchiveDefinition(OPENCODE_MANAGED_VERSION, asset, releaseUrl(asset), "9858853e7bacdbbd22c2d70c377e009dc4b354dd04f5588705411e7afb89fd2d", "opencode");
|
|
14
|
+
}
|
|
15
|
+
if (platform === "linux" && architecture === "arm64") {
|
|
16
|
+
const asset = "opencode-linux-arm64.tar.gz";
|
|
17
|
+
return new TarGzipManagedAgentArchiveDefinition(OPENCODE_MANAGED_VERSION, asset, releaseUrl(asset), "70baf769395ca4e7a68924026530c390eace194f3b7e4919d4efcb2aa2eed3c0", "opencode");
|
|
18
|
+
}
|
|
19
|
+
if (platform === "linux" && architecture === "x64") {
|
|
20
|
+
const asset = "opencode-linux-x64.tar.gz";
|
|
21
|
+
return new TarGzipManagedAgentArchiveDefinition(OPENCODE_MANAGED_VERSION, asset, releaseUrl(asset), "ea800b7ff56226b70952126c9fc1e2517ca4c4b5682fd9d3f9e87449697a1194", "opencode");
|
|
22
|
+
}
|
|
23
|
+
throw new Error("OpenCode does not publish an approved archive for this platform");
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=opencode-managed-release.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode-managed-release.js","sourceRoot":"","sources":["../../src/agent-installation/opencode-managed-release.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,oCAAoC,EACpC,gCAAgC,GACjC,MAAM,4BAA4B,CAAC;AAEpC,MAAM,CAAC,MAAM,wBAAwB,GAAG,SAAS,CAAC;AAElD,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,IAAI,GAAG,CACZ,4DAA4D,wBAAwB,IAAI,KAAK,EAAE,CAChG,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,QAAyB,EACzB,YAAiC;IAEjC,IAAI,QAAQ,KAAK,QAAQ,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,2BAA2B,CAAC;QAC1C,OAAO,IAAI,gCAAgC,CACzC,wBAAwB,EACxB,KAAK,EACL,UAAU,CAAC,KAAK,CAAC,EACjB,kEAAkE,EAClE,UAAU,CACX,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,KAAK,QAAQ,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,yBAAyB,CAAC;QACxC,OAAO,IAAI,gCAAgC,CACzC,wBAAwB,EACxB,KAAK,EACL,UAAU,CAAC,KAAK,CAAC,EACjB,kEAAkE,EAClE,UAAU,CACX,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,6BAA6B,CAAC;QAC5C,OAAO,IAAI,oCAAoC,CAC7C,wBAAwB,EACxB,KAAK,EACL,UAAU,CAAC,KAAK,CAAC,EACjB,kEAAkE,EAClE,UAAU,CACX,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,2BAA2B,CAAC;QAC1C,OAAO,IAAI,oCAAoC,CAC7C,wBAAwB,EACxB,KAAK,EACL,UAAU,CAAC,KAAK,CAAC,EACjB,kEAAkE,EAClE,UAAU,CACX,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;AACJ,CAAC"}
|