@moxt-ai/mobius 0.0.9 → 0.0.11
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 +109 -25
- 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 +7 -3
- 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 -73
- package/dist/agent-catalog/discover-local-agents.d.ts.map +1 -1
- package/dist/agent-catalog/discover-local-agents.js +11 -453
- 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-catalog/local-agent.d.ts +2 -1
- package/dist/agent-catalog/local-agent.d.ts.map +1 -1
- package/dist/agent-catalog/local-agent.js +7 -1
- package/dist/agent-catalog/local-agent.js.map +1 -1
- 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 +19 -0
- package/dist/agent-installation/fixed-agent-install-recipes.d.ts.map +1 -1
- package/dist/agent-installation/fixed-agent-install-recipes.js +145 -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 +19 -3
- package/dist/agent-installation/fixed-installation-executor.js.map +1 -1
- package/dist/agent-installation/managed-adapter-installer.d.ts +7 -6
- package/dist/agent-installation/managed-adapter-installer.d.ts.map +1 -1
- package/dist/agent-installation/managed-adapter-installer.js +25 -126
- 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 +27 -0
- package/dist/agent-installation/managed-npm-package.d.ts.map +1 -0
- package/dist/agent-installation/managed-npm-package.js +258 -0
- package/dist/agent-installation/managed-npm-package.js.map +1 -0
- 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/agent-installation/pi-managed-packages.d.ts +4 -0
- package/dist/agent-installation/pi-managed-packages.d.ts.map +1 -0
- package/dist/agent-installation/pi-managed-packages.js +4 -0
- package/dist/agent-installation/pi-managed-packages.js.map +1 -0
- package/dist/cli.js +2419 -950
- package/dist/cli.js.map +4 -4
- package/dist/index.js +2138 -669
- 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/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/package.json +1 -1
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { findExecutableOnPath, resolveExecutablePath, runBoundedProcess, } from "../process/executable.js";
|
|
4
|
-
const ADAPTER_INSTALL_TIMEOUT_MILLISECONDS = 2 * 60 * 1_000;
|
|
5
|
-
const PACKAGE_METADATA_LIMIT_BYTES = 64 * 1024;
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { ManagedNpmPackageError, ManagedNpmPackageInstaller, validateManagedNpmPackage, } from "./managed-npm-package.js";
|
|
6
3
|
export class ManagedAdapterInstallError extends Error {
|
|
7
4
|
code;
|
|
8
5
|
constructor(code, message, options = {}) {
|
|
@@ -11,148 +8,50 @@ export class ManagedAdapterInstallError extends Error {
|
|
|
11
8
|
this.name = "ManagedAdapterInstallError";
|
|
12
9
|
}
|
|
13
10
|
}
|
|
14
|
-
function
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const handle = await open(path, "r");
|
|
22
|
-
try {
|
|
23
|
-
const metadata = await handle.stat();
|
|
24
|
-
if (!metadata.isFile() || metadata.size > PACKAGE_METADATA_LIMIT_BYTES) {
|
|
25
|
-
throw new ManagedAdapterInstallError("adapter_verification_failed", "The managed adapter package metadata is invalid");
|
|
11
|
+
function translateError(error) {
|
|
12
|
+
if (error instanceof ManagedAdapterInstallError) {
|
|
13
|
+
return error;
|
|
14
|
+
}
|
|
15
|
+
if (error instanceof ManagedNpmPackageError) {
|
|
16
|
+
if (error.code === "package_manager_not_found") {
|
|
17
|
+
return new ManagedAdapterInstallError(error.code, "A supported npm executable is required to install the ACP adapter", { cause: error });
|
|
26
18
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
19
|
+
if (error.code === "managed_package_verification_failed") {
|
|
20
|
+
return new ManagedAdapterInstallError("adapter_verification_failed", "The managed adapter did not match its pinned artifact", { cause: error });
|
|
21
|
+
}
|
|
22
|
+
if (error.code === "managed_package_publish_failed") {
|
|
23
|
+
return new ManagedAdapterInstallError("adapter_publish_failed", "The managed adapter could not be published", { cause: error });
|
|
30
24
|
}
|
|
31
|
-
return value;
|
|
32
|
-
}
|
|
33
|
-
finally {
|
|
34
|
-
await handle.close();
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
function readBinPath(packageMetadata, executableName) {
|
|
38
|
-
const bin = packageMetadata["bin"];
|
|
39
|
-
if (typeof bin === "string") {
|
|
40
|
-
return bin;
|
|
41
|
-
}
|
|
42
|
-
if (isRecord(bin) && typeof bin[executableName] === "string") {
|
|
43
|
-
return bin[executableName];
|
|
44
25
|
}
|
|
45
|
-
|
|
26
|
+
return new ManagedAdapterInstallError("adapter_install_failed", "The pinned ACP adapter could not be installed", { cause: error });
|
|
46
27
|
}
|
|
47
28
|
export async function validateManagedAdapter(root, specification) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const packageDifference = relative(rootPath, packageRoot);
|
|
51
|
-
if (packageDifference.startsWith("..") || packageDifference.length === 0) {
|
|
52
|
-
throw new ManagedAdapterInstallError("adapter_verification_failed", "The managed adapter package escaped its private cache");
|
|
53
|
-
}
|
|
54
|
-
const metadata = await readPackageJson(join(packageRoot, "package.json"));
|
|
55
|
-
if (metadata["name"] !== specification.adapterPackage ||
|
|
56
|
-
metadata["version"] !== specification.adapterVersion) {
|
|
57
|
-
throw new ManagedAdapterInstallError("adapter_verification_failed", "The managed adapter package identity is invalid");
|
|
58
|
-
}
|
|
59
|
-
const declaredBin = readBinPath(metadata, specification.adapterExecutable);
|
|
60
|
-
const executable = await resolveExecutablePath(join(packageRoot, declaredBin));
|
|
61
|
-
if (executable === null) {
|
|
62
|
-
throw new ManagedAdapterInstallError("adapter_verification_failed", "The managed adapter executable is invalid");
|
|
29
|
+
try {
|
|
30
|
+
return await validateManagedNpmPackage(root, specification.adapterPackageDefinition);
|
|
63
31
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
executableDifference.length === 0) {
|
|
67
|
-
throw new ManagedAdapterInstallError("adapter_verification_failed", "The managed adapter executable escaped its private cache");
|
|
32
|
+
catch (error) {
|
|
33
|
+
throw translateError(error);
|
|
68
34
|
}
|
|
69
|
-
return executable;
|
|
70
35
|
}
|
|
71
36
|
export class ManagedAdapterInstaller {
|
|
72
37
|
#environment;
|
|
38
|
+
#npmInstaller;
|
|
73
39
|
#stateDirectory;
|
|
74
|
-
constructor(options) {
|
|
40
|
+
constructor(options, npmInstaller = new ManagedNpmPackageInstaller()) {
|
|
75
41
|
this.#environment = options.environment;
|
|
42
|
+
this.#npmInstaller = npmInstaller;
|
|
76
43
|
this.#stateDirectory = options.stateDirectory;
|
|
77
44
|
}
|
|
78
45
|
install = async (specification, signal) => {
|
|
79
|
-
|
|
80
|
-
const agentCache = join(this.#stateDirectory, "adapters", specification.id);
|
|
81
|
-
const published = join(agentCache, specification.adapterVersion);
|
|
46
|
+
const root = join(this.#stateDirectory, "adapters", specification.id, specification.adapterVersion);
|
|
82
47
|
try {
|
|
83
|
-
|
|
84
|
-
if (metadata.isDirectory()) {
|
|
85
|
-
return await validateManagedAdapter(published, specification);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
catch (error) {
|
|
89
|
-
if (!(error instanceof Error) ||
|
|
90
|
-
!("code" in error) ||
|
|
91
|
-
error.code !== "ENOENT") {
|
|
92
|
-
throw error;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
await mkdir(agentCache, { mode: 0o700, recursive: true });
|
|
96
|
-
const staging = await mkdtemp(join(agentCache, `.${specification.adapterVersion}.staging-`));
|
|
97
|
-
try {
|
|
98
|
-
const npm = await findExecutableOnPath(process.platform === "win32" ? "npm.cmd" : "npm", this.#environment);
|
|
99
|
-
if (npm === null) {
|
|
100
|
-
throw new ManagedAdapterInstallError("package_manager_not_found", "A supported npm executable is required to install the ACP adapter");
|
|
101
|
-
}
|
|
102
|
-
await runBoundedProcess({
|
|
103
|
-
arguments: [
|
|
104
|
-
"install",
|
|
105
|
-
"--prefix",
|
|
106
|
-
staging,
|
|
107
|
-
"--omit=optional",
|
|
108
|
-
"--ignore-scripts",
|
|
109
|
-
"--no-audit",
|
|
110
|
-
"--no-fund",
|
|
111
|
-
"--package-lock=false",
|
|
112
|
-
"--save=false",
|
|
113
|
-
"--registry=https://registry.npmjs.org/",
|
|
114
|
-
`${specification.adapterPackage}@${specification.adapterVersion}`,
|
|
115
|
-
],
|
|
116
|
-
command: npm.path,
|
|
117
|
-
cwd: staging,
|
|
118
|
-
environment: {
|
|
119
|
-
HOME: join(staging, "home"),
|
|
120
|
-
NPM_CONFIG_AUDIT: "false",
|
|
121
|
-
NPM_CONFIG_FUND: "false",
|
|
122
|
-
NPM_CONFIG_IGNORE_SCRIPTS: "true",
|
|
123
|
-
NPM_CONFIG_OMIT: "optional",
|
|
124
|
-
NPM_CONFIG_REGISTRY: "https://registry.npmjs.org/",
|
|
125
|
-
PATH: `${dirname(process.execPath)}${delimiter}/usr/bin${delimiter}/bin`,
|
|
126
|
-
},
|
|
127
|
-
outputLimitBytes: 64 * 1024,
|
|
128
|
-
signal,
|
|
129
|
-
timeoutMilliseconds: ADAPTER_INSTALL_TIMEOUT_MILLISECONDS,
|
|
130
|
-
});
|
|
131
|
-
await validateManagedAdapter(staging, specification);
|
|
132
|
-
try {
|
|
133
|
-
await rename(staging, published);
|
|
134
|
-
}
|
|
135
|
-
catch (error) {
|
|
136
|
-
try {
|
|
137
|
-
return await validateManagedAdapter(published, specification);
|
|
138
|
-
}
|
|
139
|
-
catch {
|
|
140
|
-
throw new ManagedAdapterInstallError("adapter_publish_failed", "The managed adapter could not be published", { cause: error });
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
return await validateManagedAdapter(published, specification);
|
|
48
|
+
return await this.#npmInstaller.install(root, specification.adapterPackageDefinition, this.#environment, signal);
|
|
144
49
|
}
|
|
145
50
|
catch (error) {
|
|
146
51
|
if (signal.aborted) {
|
|
147
52
|
signal.throwIfAborted();
|
|
148
53
|
}
|
|
149
|
-
|
|
150
|
-
throw error;
|
|
151
|
-
}
|
|
152
|
-
throw new ManagedAdapterInstallError("adapter_install_failed", "The pinned ACP adapter could not be installed", { cause: error });
|
|
153
|
-
}
|
|
154
|
-
finally {
|
|
155
|
-
await rm(staging, { force: true, recursive: true });
|
|
54
|
+
throw translateError(error);
|
|
156
55
|
}
|
|
157
56
|
};
|
|
158
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"managed-adapter-installer.js","sourceRoot":"","sources":["../../src/agent-installation/managed-adapter-installer.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"managed-adapter-installer.js","sourceRoot":"","sources":["../../src/agent-installation/managed-adapter-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,OAAO,EACL,sBAAsB,EAEtB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,0BAA0B,CAAC;AAElC,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IAC1C,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,4BAA4B,CAAC;IAC3C,CAAC;CACF;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,KAAK,YAAY,0BAA0B,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,YAAY,sBAAsB,EAAE,CAAC;QAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,2BAA2B,EAAE,CAAC;YAC/C,OAAO,IAAI,0BAA0B,CACnC,KAAK,CAAC,IAAI,EACV,mEAAmE,EACnE,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,qCAAqC,EAAE,CAAC;YACzD,OAAO,IAAI,0BAA0B,CACnC,6BAA6B,EAC7B,uDAAuD,EACvD,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,gCAAgC,EAAE,CAAC;YACpD,OAAO,IAAI,0BAA0B,CACnC,wBAAwB,EACxB,4CAA4C,EAC5C,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,0BAA0B,CACnC,wBAAwB,EACxB,+CAA+C,EAC/C,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAY,EACZ,aAAwC;IAExC,IAAI,CAAC;QACH,OAAO,MAAM,yBAAyB,CACpC,IAAI,EACJ,aAAa,CAAC,wBAAwB,CACvC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAcD,MAAM,OAAO,uBAAuB;IACzB,YAAY,CAA8B;IAC1C,aAAa,CAAoC;IACjD,eAAe,CAAS;IAEjC,YACE,OAAuC,EACvC,YAAY,GAAsC,IAAI,0BAA0B,EAAE;QAElF,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;QACxC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAChD,CAAC;IAEQ,OAAO,GAAG,KAAK,EACtB,aAAwC,EACxC,MAAmB,EACU,EAAE;QAC/B,MAAM,IAAI,GAAG,IAAI,CACf,IAAI,CAAC,eAAe,EACpB,UAAU,EACV,aAAa,CAAC,EAAE,EAChB,aAAa,CAAC,cAAc,CAC7B,CAAC;QACF,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CACrC,IAAI,EACJ,aAAa,CAAC,wBAAwB,EACtC,IAAI,CAAC,YAAY,EACjB,MAAM,CACP,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,CAAC;YACD,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC;CACH"}
|
|
@@ -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":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type ResolvedExecutable } from "../process/executable.ts";
|
|
2
|
+
export declare class ManagedNpmPackageDefinition {
|
|
3
|
+
readonly dependencyResolutionArguments: readonly string[];
|
|
4
|
+
readonly executableName: string;
|
|
5
|
+
readonly includeOptionalDependencies: boolean;
|
|
6
|
+
readonly packageName: string;
|
|
7
|
+
readonly version: string;
|
|
8
|
+
readonly verifyDependencyClosure: boolean;
|
|
9
|
+
constructor(packageName: string, version: string, executableName: string);
|
|
10
|
+
}
|
|
11
|
+
export declare class SriManagedNpmPackageDefinition extends ManagedNpmPackageDefinition {
|
|
12
|
+
readonly integrity: string;
|
|
13
|
+
readonly tarballUrl: string;
|
|
14
|
+
constructor(packageName: string, version: string, executableName: string, integrity: string, tarballUrl: string);
|
|
15
|
+
}
|
|
16
|
+
export declare class ManagedNpmPackageError extends Error {
|
|
17
|
+
readonly code: string;
|
|
18
|
+
constructor(code: string, message: string, options?: ErrorOptions);
|
|
19
|
+
}
|
|
20
|
+
export declare function validateManagedNpmPackage(root: string, definition: ManagedNpmPackageDefinition): Promise<ResolvedExecutable>;
|
|
21
|
+
export interface ManagedNpmPackageInstallationPort {
|
|
22
|
+
readonly install: (root: string, definition: ManagedNpmPackageDefinition, environment: Readonly<NodeJS.ProcessEnv>, signal: AbortSignal) => Promise<ResolvedExecutable>;
|
|
23
|
+
}
|
|
24
|
+
export declare class ManagedNpmPackageInstaller implements ManagedNpmPackageInstallationPort {
|
|
25
|
+
readonly install: (root: string, definition: ManagedNpmPackageDefinition, environment: Readonly<NodeJS.ProcessEnv>, signal: AbortSignal) => Promise<ResolvedExecutable>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=managed-npm-package.d.ts.map
|
|
@@ -0,0 +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,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"}
|