@agent-vm/agent-vm 0.0.92 → 0.0.93
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/build/managed-image-dockerfile.d.ts +2 -1
- package/dist/build/managed-image-dockerfile.d.ts.map +1 -1
- package/dist/build/managed-image-dockerfile.js +51 -27
- package/dist/build/managed-image-dockerfile.js.map +1 -1
- package/dist/cli/commands/controller-definition.d.ts +42 -42
- package/dist/cli/commands/create-app.d.ts +42 -42
- package/dist/cli/manual-templates.d.ts.map +1 -1
- package/dist/cli/manual-templates.js +11 -2
- package/dist/cli/manual-templates.js.map +1 -1
- package/dist/config/system-config.d.ts +7 -0
- package/dist/config/system-config.d.ts.map +1 -1
- package/dist/config/system-config.js +35 -0
- package/dist/config/system-config.js.map +1 -1
- package/dist/controller/controller-runtime-operations.d.ts +1 -0
- package/dist/controller/controller-runtime-operations.d.ts.map +1 -1
- package/dist/controller/controller-runtime-operations.js +2 -0
- package/dist/controller/controller-runtime-operations.js.map +1 -1
- package/dist/controller/controller-runtime-types.d.ts +3 -0
- package/dist/controller/controller-runtime-types.d.ts.map +1 -1
- package/dist/controller/controller-runtime.d.ts +1 -1
- package/dist/controller/controller-runtime.d.ts.map +1 -1
- package/dist/controller/controller-runtime.js +207 -116
- package/dist/controller/controller-runtime.js.map +1 -1
- package/dist/controller/health/channel-provider-recovery-observation.d.ts +23 -0
- package/dist/controller/health/channel-provider-recovery-observation.d.ts.map +1 -0
- package/dist/controller/health/channel-provider-recovery-observation.js +69 -0
- package/dist/controller/health/channel-provider-recovery-observation.js.map +1 -0
- package/dist/controller/health/durable-health-event-log.d.ts +24 -0
- package/dist/controller/health/durable-health-event-log.d.ts.map +1 -0
- package/dist/controller/health/durable-health-event-log.js +89 -0
- package/dist/controller/health/durable-health-event-log.js.map +1 -0
- package/dist/controller/health/gateway-recovery-actions.d.ts +27 -0
- package/dist/controller/health/gateway-recovery-actions.d.ts.map +1 -0
- package/dist/controller/health/gateway-recovery-actions.js +71 -0
- package/dist/controller/health/gateway-recovery-actions.js.map +1 -0
- package/dist/controller/health/gateway-service-health-monitor.d.ts +41 -3
- package/dist/controller/health/gateway-service-health-monitor.d.ts.map +1 -1
- package/dist/controller/health/gateway-service-health-monitor.js +231 -57
- package/dist/controller/health/gateway-service-health-monitor.js.map +1 -1
- package/dist/controller/health/gateway-vm-recovery-policy.d.ts +20 -0
- package/dist/controller/health/gateway-vm-recovery-policy.d.ts.map +1 -1
- package/dist/controller/health/gateway-vm-recovery-policy.js +85 -21
- package/dist/controller/health/gateway-vm-recovery-policy.js.map +1 -1
- package/dist/controller/health/gateway-vm-recovery-runner.d.ts +39 -0
- package/dist/controller/health/gateway-vm-recovery-runner.d.ts.map +1 -0
- package/dist/controller/health/gateway-vm-recovery-runner.js +251 -0
- package/dist/controller/health/gateway-vm-recovery-runner.js.map +1 -0
- package/dist/controller/health/health-event-store.d.ts +4 -0
- package/dist/controller/health/health-event-store.d.ts.map +1 -1
- package/dist/controller/health/health-event-store.js +19 -0
- package/dist/controller/health/health-event-store.js.map +1 -1
- package/dist/controller/http/controller-health-event-routes.d.ts +6 -0
- package/dist/controller/http/controller-health-event-routes.d.ts.map +1 -1
- package/dist/controller/http/controller-health-event-routes.js +49 -0
- package/dist/controller/http/controller-health-event-routes.js.map +1 -1
- package/dist/controller/http/controller-http-routes.d.ts.map +1 -1
- package/dist/controller/http/controller-http-routes.js +6 -0
- package/dist/controller/http/controller-http-routes.js.map +1 -1
- package/dist/controller/leases/lease-manager.d.ts.map +1 -1
- package/dist/controller/leases/lease-manager.js +37 -16
- package/dist/controller/leases/lease-manager.js.map +1 -1
- package/dist/controller/leases/tool-vm-lease-lifecycle.d.ts +44 -0
- package/dist/controller/leases/tool-vm-lease-lifecycle.d.ts.map +1 -0
- package/dist/controller/leases/tool-vm-lease-lifecycle.js +28 -0
- package/dist/controller/leases/tool-vm-lease-lifecycle.js.map +1 -0
- package/dist/controller/zone-runtimes/gateway-lifecycle-operation-record.d.ts +37 -0
- package/dist/controller/zone-runtimes/gateway-lifecycle-operation-record.d.ts.map +1 -0
- package/dist/controller/zone-runtimes/gateway-lifecycle-operation-record.js +133 -0
- package/dist/controller/zone-runtimes/gateway-lifecycle-operation-record.js.map +1 -0
- package/dist/controller/zone-runtimes/gateway-zone-state-machine.d.ts +101 -0
- package/dist/controller/zone-runtimes/gateway-zone-state-machine.d.ts.map +1 -0
- package/dist/controller/zone-runtimes/gateway-zone-state-machine.js +143 -0
- package/dist/controller/zone-runtimes/gateway-zone-state-machine.js.map +1 -0
- package/dist/controller/zone-runtimes/openclaw-zone-runtime.d.ts +8 -1
- package/dist/controller/zone-runtimes/openclaw-zone-runtime.d.ts.map +1 -1
- package/dist/controller/zone-runtimes/openclaw-zone-runtime.js +621 -65
- package/dist/controller/zone-runtimes/openclaw-zone-runtime.js.map +1 -1
- package/dist/controller/zone-runtimes/zone-runtime-errors.d.ts +7 -1
- package/dist/controller/zone-runtimes/zone-runtime-errors.d.ts.map +1 -1
- package/dist/controller/zone-runtimes/zone-runtime-errors.js +5 -1
- package/dist/controller/zone-runtimes/zone-runtime-errors.js.map +1 -1
- package/dist/controller/zone-runtimes/zone-runtime-registry.d.ts +2 -0
- package/dist/controller/zone-runtimes/zone-runtime-registry.d.ts.map +1 -1
- package/dist/controller/zone-runtimes/zone-runtime-registry.js +23 -0
- package/dist/controller/zone-runtimes/zone-runtime-registry.js.map +1 -1
- package/dist/controller/zone-runtimes/zone-runtime-types.d.ts +7 -0
- package/dist/controller/zone-runtimes/zone-runtime-types.d.ts.map +1 -1
- package/dist/gateway/gateway-ownership-evidence.d.ts +35 -0
- package/dist/gateway/gateway-ownership-evidence.d.ts.map +1 -0
- package/dist/gateway/gateway-ownership-evidence.js +10 -0
- package/dist/gateway/gateway-ownership-evidence.js.map +1 -0
- package/dist/gateway/gateway-recovery.d.ts +16 -0
- package/dist/gateway/gateway-recovery.d.ts.map +1 -1
- package/dist/gateway/gateway-recovery.js +105 -9
- package/dist/gateway/gateway-recovery.js.map +1 -1
- package/dist/gateway/gateway-zone-orchestrator.d.ts.map +1 -1
- package/dist/gateway/gateway-zone-orchestrator.js +50 -39
- package/dist/gateway/gateway-zone-orchestrator.js.map +1 -1
- package/dist/integration-tests/{smoke-harness.d.ts → e2e-harness.d.ts} +45 -37
- package/dist/integration-tests/e2e-harness.d.ts.map +1 -0
- package/dist/integration-tests/{smoke-harness.js → e2e-harness.js} +112 -94
- package/dist/integration-tests/e2e-harness.js.map +1 -0
- package/dist/integration-tests/e2e-workspace-build-global-setup.d.ts +16 -0
- package/dist/integration-tests/e2e-workspace-build-global-setup.d.ts.map +1 -0
- package/dist/integration-tests/e2e-workspace-build-global-setup.js +27 -0
- package/dist/integration-tests/e2e-workspace-build-global-setup.js.map +1 -0
- package/dist/integration-tests/live-agent-model-roundtrip-deployment.d.ts +11 -0
- package/dist/integration-tests/live-agent-model-roundtrip-deployment.d.ts.map +1 -0
- package/dist/integration-tests/live-agent-model-roundtrip-deployment.js +48 -0
- package/dist/integration-tests/live-agent-model-roundtrip-deployment.js.map +1 -0
- package/dist/integration-tests/live-agent-model-roundtrip-gates.d.ts +11 -0
- package/dist/integration-tests/live-agent-model-roundtrip-gates.d.ts.map +1 -0
- package/dist/integration-tests/live-agent-model-roundtrip-gates.js +21 -0
- package/dist/integration-tests/live-agent-model-roundtrip-gates.js.map +1 -0
- package/dist/integration-tests/live-vm-e2e-gates.d.ts +2 -0
- package/dist/integration-tests/live-vm-e2e-gates.d.ts.map +1 -0
- package/dist/integration-tests/live-vm-e2e-gates.js +4 -0
- package/dist/integration-tests/live-vm-e2e-gates.js.map +1 -0
- package/dist/operations/controller-status.d.ts +5 -0
- package/dist/operations/controller-status.d.ts.map +1 -1
- package/dist/operations/controller-status.js +42 -0
- package/dist/operations/controller-status.js.map +1 -1
- package/package.json +11 -11
- package/dist/integration-tests/live-integration-gates.d.ts +0 -2
- package/dist/integration-tests/live-integration-gates.d.ts.map +0 -1
- package/dist/integration-tests/live-integration-gates.js +0 -4
- package/dist/integration-tests/live-integration-gates.js.map +0 -1
- package/dist/integration-tests/smoke-harness.d.ts.map +0 -1
- package/dist/integration-tests/smoke-harness.js.map +0 -1
|
@@ -4,7 +4,7 @@ import net from 'node:net';
|
|
|
4
4
|
import os from 'node:os';
|
|
5
5
|
import path from 'node:path';
|
|
6
6
|
import { promisify } from 'node:util';
|
|
7
|
-
import { resolveGondolinMinimumZigVersion } from '@agent-vm/gondolin-adapter';
|
|
7
|
+
import { hasBuiltImageAssets, resolveGondolinMinimumZigVersion } from '@agent-vm/gondolin-adapter';
|
|
8
8
|
import { computeFingerprintFromConfigPath } from '../build/gondolin-image-builder.js';
|
|
9
9
|
import { generateManagedDockerfile, resolveManagedImageRelease, } from '../build/managed-image-dockerfile.js';
|
|
10
10
|
import { isZigVersionAtLeast, resolveHostZigVersion } from '../build/zig-compatibility.js';
|
|
@@ -16,15 +16,26 @@ import { startGatewayZone } from '../gateway/gateway-zone-orchestrator.js';
|
|
|
16
16
|
const defaultOpenClawMcpPortalExtensionsPath = '/home/openclaw/.openclaw/extensions/mcp-portal';
|
|
17
17
|
const execFileAsync = promisify(execFile);
|
|
18
18
|
const openClawMcpPortalPluginName = 'mcp-portal';
|
|
19
|
-
const
|
|
20
|
-
'agent-vm-gateway-
|
|
21
|
-
'agent-vm-
|
|
22
|
-
'openclaw-control-link-
|
|
23
|
-
'openclaw-mcp-portal-
|
|
24
|
-
'openclaw-subagent-lease-
|
|
25
|
-
'openclaw-zone-git-
|
|
26
|
-
'worker-loop-
|
|
19
|
+
const e2eTempRootPrefixes = [
|
|
20
|
+
'agent-vm-gateway-e2e-project-',
|
|
21
|
+
'agent-vm-e2e-harness-',
|
|
22
|
+
'openclaw-control-link-e2e-',
|
|
23
|
+
'openclaw-mcp-portal-e2e-',
|
|
24
|
+
'openclaw-subagent-lease-e2e-',
|
|
25
|
+
'openclaw-zone-git-e2e-',
|
|
26
|
+
'worker-loop-e2e-',
|
|
27
27
|
];
|
|
28
|
+
function resolveE2eCacheRoot() {
|
|
29
|
+
const configuredCacheRoot = process.env.AGENT_VM_E2E_CACHE_DIR;
|
|
30
|
+
if (configuredCacheRoot !== undefined && configuredCacheRoot.length > 0) {
|
|
31
|
+
return path.resolve(configuredCacheRoot);
|
|
32
|
+
}
|
|
33
|
+
return path.join(os.tmpdir(), 'agent-vm-e2e-cache');
|
|
34
|
+
}
|
|
35
|
+
export function shouldCleanupE2eDockerImages(options = {}) {
|
|
36
|
+
const env = options.env ?? process.env;
|
|
37
|
+
return options.cleanupImages === true || env.AGENT_VM_E2E_CLEAN_IMAGES === '1';
|
|
38
|
+
}
|
|
28
39
|
export function hasCommand(command) {
|
|
29
40
|
try {
|
|
30
41
|
execFileSync('sh', ['-lc', `command -v ${command} >/dev/null`], { stdio: 'ignore' });
|
|
@@ -34,13 +45,13 @@ export function hasCommand(command) {
|
|
|
34
45
|
return false;
|
|
35
46
|
}
|
|
36
47
|
}
|
|
37
|
-
export function
|
|
48
|
+
export function currentE2eArchitecture() {
|
|
38
49
|
return process.arch === 'arm64' ? 'aarch64' : 'x86_64';
|
|
39
50
|
}
|
|
40
51
|
export function qemuCommandForArchitecture(architecture) {
|
|
41
52
|
return architecture === 'aarch64' ? 'qemu-system-aarch64' : 'qemu-system-x86_64';
|
|
42
53
|
}
|
|
43
|
-
function
|
|
54
|
+
function isOwnedE2eTempRoot(tempRoot) {
|
|
44
55
|
const resolvedTempRoot = path.resolve(tempRoot);
|
|
45
56
|
const resolvedSystemTempRoot = path.resolve(os.tmpdir());
|
|
46
57
|
if (resolvedTempRoot === resolvedSystemTempRoot ||
|
|
@@ -48,15 +59,15 @@ function isOwnedSmokeTempRoot(tempRoot) {
|
|
|
48
59
|
return false;
|
|
49
60
|
}
|
|
50
61
|
const basename = path.basename(resolvedTempRoot);
|
|
51
|
-
return
|
|
62
|
+
return e2eTempRootPrefixes.some((prefix) => basename.startsWith(prefix));
|
|
52
63
|
}
|
|
53
|
-
export async function
|
|
54
|
-
if (!
|
|
64
|
+
export async function removeE2eTempRoot(tempRoot) {
|
|
65
|
+
if (!isOwnedE2eTempRoot(tempRoot)) {
|
|
55
66
|
return;
|
|
56
67
|
}
|
|
57
68
|
await fs.rm(tempRoot, { force: true, recursive: true });
|
|
58
69
|
}
|
|
59
|
-
export async function
|
|
70
|
+
export async function canRunGondolinE2e(options) {
|
|
60
71
|
const commandExists = options.commandExists ?? hasCommand;
|
|
61
72
|
if (!commandExists(qemuCommandForArchitecture(options.architecture)) ||
|
|
62
73
|
!commandExists('docker')) {
|
|
@@ -67,14 +78,14 @@ export async function canRunGondolinSmoke(options) {
|
|
|
67
78
|
return (installedZigVersion !== undefined &&
|
|
68
79
|
isZigVersionAtLeast(installedZigVersion, requiredZigVersion));
|
|
69
80
|
}
|
|
70
|
-
export async function
|
|
81
|
+
export async function shouldRunWorkerGatewayE2e(options) {
|
|
71
82
|
const env = options.env ?? process.env;
|
|
72
|
-
if (env.
|
|
73
|
-
typeof env.
|
|
74
|
-
env.
|
|
83
|
+
if (env.AGENT_VM_WORKER_E2E !== '1' ||
|
|
84
|
+
typeof env.AGENT_VM_TEST_OPENAI_API_KEY !== 'string' ||
|
|
85
|
+
env.AGENT_VM_TEST_OPENAI_API_KEY.length === 0) {
|
|
75
86
|
return false;
|
|
76
87
|
}
|
|
77
|
-
return await
|
|
88
|
+
return await canRunGondolinE2e({
|
|
78
89
|
architecture: options.architecture,
|
|
79
90
|
...(options.commandExists ? { commandExists: options.commandExists } : {}),
|
|
80
91
|
...(options.resolveRequiredZigVersion
|
|
@@ -83,12 +94,6 @@ export async function shouldRunWorkerGatewaySmoke(options) {
|
|
|
83
94
|
...(options.resolveZigVersion ? { resolveZigVersion: options.resolveZigVersion } : {}),
|
|
84
95
|
});
|
|
85
96
|
}
|
|
86
|
-
export function rebuildWorkspacePackages(repoRoot) {
|
|
87
|
-
execFileSync('pnpm', ['build'], {
|
|
88
|
-
cwd: repoRoot,
|
|
89
|
-
stdio: 'inherit',
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
97
|
export async function findAvailablePort() {
|
|
93
98
|
return await new Promise((resolve, reject) => {
|
|
94
99
|
const server = net.createServer();
|
|
@@ -121,45 +126,41 @@ export async function waitForControllerReady(controllerPort) {
|
|
|
121
126
|
}
|
|
122
127
|
throw new Error('Controller did not become ready in time.');
|
|
123
128
|
}
|
|
124
|
-
export async function findReusableGatewayImageDirectory(currentProjectRoot, gatewayBuildConfigPath) {
|
|
125
|
-
const
|
|
126
|
-
if (!
|
|
129
|
+
export async function findReusableGatewayImageDirectory(currentProjectRoot, gatewayBuildConfigPath, imageProfileName = 'worker') {
|
|
130
|
+
const explicitE2eCacheRoot = process.env.AGENT_VM_E2E_CACHE_DIR;
|
|
131
|
+
if (!explicitE2eCacheRoot) {
|
|
127
132
|
return null;
|
|
128
133
|
}
|
|
129
134
|
const requiredFingerprint = await computeFingerprintFromConfigPath(gatewayBuildConfigPath);
|
|
130
|
-
const tempRootEntries = await fs.readdir(
|
|
131
|
-
const
|
|
132
|
-
.filter((entry) => entry.isDirectory()
|
|
133
|
-
.map((entry) => path.join(
|
|
134
|
-
for (const
|
|
135
|
-
if (
|
|
135
|
+
const tempRootEntries = await fs.readdir(explicitE2eCacheRoot, { withFileTypes: true });
|
|
136
|
+
const e2eRunDirectories = tempRootEntries
|
|
137
|
+
.filter((entry) => entry.isDirectory())
|
|
138
|
+
.map((entry) => path.join(explicitE2eCacheRoot, entry.name));
|
|
139
|
+
for (const e2eRunDirectory of e2eRunDirectories) {
|
|
140
|
+
if (e2eRunDirectory === currentProjectRoot) {
|
|
136
141
|
continue;
|
|
137
142
|
}
|
|
138
|
-
const
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
await fs.access(path.join(candidateImageDir, 'rootfs.ext4'));
|
|
144
|
-
// oxlint-disable-next-line eslint/no-await-in-loop -- intentionally searches cache candidates
|
|
145
|
-
await fs.access(path.join(candidateImageDir, 'initramfs.cpio.lz4'));
|
|
143
|
+
const candidateImageDirectories = [
|
|
144
|
+
path.join(e2eRunDirectory, 'gateway-images', imageProfileName, requiredFingerprint),
|
|
145
|
+
path.join(e2eRunDirectory, 'cache', 'gateway-images', imageProfileName, requiredFingerprint),
|
|
146
|
+
];
|
|
147
|
+
for (const candidateImageDir of candidateImageDirectories) {
|
|
146
148
|
// oxlint-disable-next-line eslint/no-await-in-loop -- intentionally searches cache candidates
|
|
147
|
-
await
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
catch {
|
|
151
|
-
continue;
|
|
149
|
+
if (await hasBuiltImageAssets(candidateImageDir)) {
|
|
150
|
+
return candidateImageDir;
|
|
151
|
+
}
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
154
|
return null;
|
|
155
155
|
}
|
|
156
156
|
export async function seedGatewayImageCacheIfAvailable(options) {
|
|
157
|
-
const
|
|
157
|
+
const imageProfileName = options.imageProfileName ?? 'worker';
|
|
158
|
+
const reusableImageDir = await findReusableGatewayImageDirectory(options.currentProjectRoot, options.gatewayBuildConfigPath, imageProfileName);
|
|
158
159
|
if (!reusableImageDir) {
|
|
159
160
|
return;
|
|
160
161
|
}
|
|
161
162
|
const requiredFingerprint = await computeFingerprintFromConfigPath(options.gatewayBuildConfigPath);
|
|
162
|
-
const activeImageDir = path.join(options.activeCacheDir, 'images',
|
|
163
|
+
const activeImageDir = path.join(options.activeCacheDir, 'gateway-images', imageProfileName, requiredFingerprint);
|
|
163
164
|
if (activeImageDir === reusableImageDir) {
|
|
164
165
|
return;
|
|
165
166
|
}
|
|
@@ -208,14 +209,14 @@ function applySmokeEnvironment(secrets) {
|
|
|
208
209
|
}
|
|
209
210
|
};
|
|
210
211
|
}
|
|
211
|
-
export function
|
|
212
|
+
export function getOpenClawE2eZone(systemConfig) {
|
|
212
213
|
const zone = systemConfig.zones[0];
|
|
213
214
|
if (!zone || zone.gateway.type !== 'openclaw') {
|
|
214
215
|
throw new Error('Expected smoke system config to contain an OpenClaw zone.');
|
|
215
216
|
}
|
|
216
217
|
return { ...zone, gateway: zone.gateway };
|
|
217
218
|
}
|
|
218
|
-
function
|
|
219
|
+
function getWorkerE2eZone(systemConfig) {
|
|
219
220
|
const zone = systemConfig.zones[0];
|
|
220
221
|
if (!zone || zone.gateway.type !== 'worker') {
|
|
221
222
|
throw new Error('Expected smoke system config to contain a Worker Gateway zone.');
|
|
@@ -247,13 +248,16 @@ async function assertLocalPackageFilesExist(props) {
|
|
|
247
248
|
}
|
|
248
249
|
}));
|
|
249
250
|
}
|
|
251
|
+
export function resolveLocalPackagePackArgs(packDirectory) {
|
|
252
|
+
return ['pack', '--pack-destination', packDirectory, '--config.ignore-scripts=true'];
|
|
253
|
+
}
|
|
250
254
|
async function packLocalPackageTarball(props) {
|
|
251
255
|
const packageJsonPath = path.join(props.packageDirectory, 'package.json');
|
|
252
256
|
await fs.access(packageJsonPath);
|
|
253
257
|
await assertLocalPackageFilesExist(props);
|
|
254
258
|
const packDirectory = await fs.mkdtemp(path.join(os.tmpdir(), `${props.packageName}-pack-`));
|
|
255
259
|
try {
|
|
256
|
-
execFileSync('pnpm', [
|
|
260
|
+
execFileSync('pnpm', [...resolveLocalPackagePackArgs(packDirectory)], {
|
|
257
261
|
cwd: props.packageDirectory,
|
|
258
262
|
stdio: 'pipe',
|
|
259
263
|
});
|
|
@@ -359,13 +363,14 @@ export async function useLocalToolVmMcpPortalPackage(options) {
|
|
|
359
363
|
function localPackageTarballArchiveName(packageName) {
|
|
360
364
|
return `${packageName}-local.tgz`;
|
|
361
365
|
}
|
|
362
|
-
async function
|
|
366
|
+
async function writeManagedOpenClawE2eDockerfileBase(options) {
|
|
363
367
|
const managedImageRelease = await resolveManagedImageRelease();
|
|
364
368
|
const result = await generateManagedDockerfile({
|
|
365
369
|
base: 'openclaw-gateway',
|
|
366
370
|
imageTargetFamily: 'gateway',
|
|
367
371
|
imageTargetName: options.profileName,
|
|
368
372
|
managedImageRelease,
|
|
373
|
+
openClawAgentVmPackageInstallMode: options.openClawAgentVmPackageInstallMode,
|
|
369
374
|
outputDirectory: options.dockerContextDirectory,
|
|
370
375
|
requiredOpenClawPackageNames: ['@openclaw/discord'],
|
|
371
376
|
});
|
|
@@ -383,7 +388,7 @@ function mutableJsonRecord(value) {
|
|
|
383
388
|
async function runDockerCommand(args) {
|
|
384
389
|
await execFileAsync('docker', [...args]);
|
|
385
390
|
}
|
|
386
|
-
async function
|
|
391
|
+
async function readE2eDockerImageTag(buildConfigPath) {
|
|
387
392
|
let buildConfig;
|
|
388
393
|
try {
|
|
389
394
|
buildConfig = mutableJsonRecord(await loadJsonConfigFile(buildConfigPath));
|
|
@@ -398,7 +403,7 @@ async function readSmokeDockerImageTag(buildConfigPath) {
|
|
|
398
403
|
const imageTag = ociConfig?.image;
|
|
399
404
|
return typeof imageTag === 'string' && imageTag.length > 0 ? imageTag : null;
|
|
400
405
|
}
|
|
401
|
-
export async function
|
|
406
|
+
export async function collectE2eDockerImageTags(systemConfig) {
|
|
402
407
|
const imageProfiles = [
|
|
403
408
|
...Object.values(systemConfig.imageProfiles.gateways),
|
|
404
409
|
...Object.values(systemConfig.imageProfiles.toolVms),
|
|
@@ -406,14 +411,14 @@ export async function collectSmokeDockerImageTags(systemConfig) {
|
|
|
406
411
|
const imageTags = [];
|
|
407
412
|
for (const imageProfile of imageProfiles) {
|
|
408
413
|
// oxlint-disable-next-line eslint/no-await-in-loop -- config files are intentionally read deterministically
|
|
409
|
-
const imageTag = await
|
|
414
|
+
const imageTag = await readE2eDockerImageTag(imageProfile.buildConfig);
|
|
410
415
|
if (imageTag !== null) {
|
|
411
416
|
imageTags.push(imageTag);
|
|
412
417
|
}
|
|
413
418
|
}
|
|
414
419
|
return Array.from(new Set(imageTags));
|
|
415
420
|
}
|
|
416
|
-
export async function
|
|
421
|
+
export async function removeE2eDockerImages(imageTags, options = {}) {
|
|
417
422
|
const dockerCommand = options.runDockerCommand ?? runDockerCommand;
|
|
418
423
|
for (const imageTag of Array.from(new Set(imageTags))) {
|
|
419
424
|
try {
|
|
@@ -427,10 +432,10 @@ export async function removeSmokeDockerImages(imageTags, options = {}) {
|
|
|
427
432
|
await dockerCommand(['image', 'rm', '--force', imageTag]);
|
|
428
433
|
}
|
|
429
434
|
}
|
|
430
|
-
export async function
|
|
431
|
-
await
|
|
435
|
+
export async function removeE2eDockerImagesForSystemConfig(systemConfig, options = {}) {
|
|
436
|
+
await removeE2eDockerImages(await collectE2eDockerImageTags(systemConfig), options);
|
|
432
437
|
}
|
|
433
|
-
function
|
|
438
|
+
function throwIfE2eHarnessCleanupFailed(errors) {
|
|
434
439
|
if (errors.length === 0) {
|
|
435
440
|
return;
|
|
436
441
|
}
|
|
@@ -530,9 +535,10 @@ export async function useLocalOpenClawGatewayImagePackages(options) {
|
|
|
530
535
|
sourcePath: localOpenClawMcpPortalPluginTarballPath,
|
|
531
536
|
},
|
|
532
537
|
];
|
|
533
|
-
const dockerfilePath = await
|
|
538
|
+
const dockerfilePath = await writeManagedOpenClawE2eDockerfileBase({
|
|
534
539
|
dockerContextDirectory,
|
|
535
540
|
profileName: options.profileName,
|
|
541
|
+
openClawAgentVmPackageInstallMode: 'local-overlay',
|
|
536
542
|
});
|
|
537
543
|
await copyLocalPackageTarballsToDockerContext({
|
|
538
544
|
dockerContextDirectory,
|
|
@@ -556,7 +562,9 @@ export async function useLocalOpenClawGatewayImagePackages(options) {
|
|
|
556
562
|
' rm -f ' +
|
|
557
563
|
localPackageTarballs.map((tarball) => `/tmp/${tarball.archiveName}`).join(' '),
|
|
558
564
|
'RUN package_root="/opt/agent-vm/local-packages/node_modules" && \\',
|
|
559
|
-
'
|
|
565
|
+
' global_package_root="$(pnpm root -g)" && \\',
|
|
566
|
+
' mkdir -p "$global_package_root" /home/openclaw/.openclaw/extensions && \\',
|
|
567
|
+
' ln -sfn "$package_root/@agent-vm" "$global_package_root/@agent-vm" && \\',
|
|
560
568
|
' ln -sfn "$package_root/@agent-vm/openclaw-agent-vm-plugin/dist" /home/openclaw/.openclaw/extensions/gondolin && \\',
|
|
561
569
|
' ln -sfn "$package_root/@agent-vm/openclaw-mcp-portal-plugin/dist" /home/openclaw/.openclaw/extensions/mcp-portal',
|
|
562
570
|
'',
|
|
@@ -617,9 +625,10 @@ export async function useLocalOpenClawPluginGatewayImage(options) {
|
|
|
617
625
|
sourcePath: localOpenClawAgentVmPluginTarballPath,
|
|
618
626
|
},
|
|
619
627
|
];
|
|
620
|
-
const dockerfilePath = await
|
|
628
|
+
const dockerfilePath = await writeManagedOpenClawE2eDockerfileBase({
|
|
621
629
|
dockerContextDirectory,
|
|
622
630
|
profileName: options.profileName,
|
|
631
|
+
openClawAgentVmPackageInstallMode: 'local-overlay',
|
|
623
632
|
});
|
|
624
633
|
await copyLocalPackageTarballsToDockerContext({
|
|
625
634
|
dockerContextDirectory,
|
|
@@ -636,7 +645,9 @@ export async function useLocalOpenClawPluginGatewayImage(options) {
|
|
|
636
645
|
' rm -f ' +
|
|
637
646
|
localPackageTarballs.map((tarball) => `/tmp/${tarball.archiveName}`).join(' '),
|
|
638
647
|
'RUN package_root="/opt/agent-vm/local-packages/node_modules" && \\',
|
|
639
|
-
'
|
|
648
|
+
' global_package_root="$(pnpm root -g)" && \\',
|
|
649
|
+
' mkdir -p "$global_package_root" /home/openclaw/.openclaw/extensions && \\',
|
|
650
|
+
' ln -sfn "$package_root/@agent-vm" "$global_package_root/@agent-vm" && \\',
|
|
640
651
|
' ln -sfn "$package_root/@agent-vm/openclaw-agent-vm-plugin/dist" /home/openclaw/.openclaw/extensions/gondolin',
|
|
641
652
|
'',
|
|
642
653
|
].join('\n'), 'utf8');
|
|
@@ -652,7 +663,7 @@ export async function useLocalOpenClawPluginGatewayImage(options) {
|
|
|
652
663
|
]);
|
|
653
664
|
}
|
|
654
665
|
}
|
|
655
|
-
export async function
|
|
666
|
+
export async function scaffoldOpenClawE2eProject(options) {
|
|
656
667
|
const tempRoot = await fs.mkdtemp(path.join(os.tmpdir(), options.prefix));
|
|
657
668
|
const controllerPort = await findAvailablePort();
|
|
658
669
|
const gatewayPort = await findAvailablePort();
|
|
@@ -667,8 +678,8 @@ export async function scaffoldOpenClawSmokeProject(options) {
|
|
|
667
678
|
const systemConfig = await loadSystemConfig(path.join(tempRoot, 'config', 'system.json'));
|
|
668
679
|
systemConfig.host.controllerPort = controllerPort;
|
|
669
680
|
systemConfig.host.projectNamespace = 'claw-tests-zone-git';
|
|
670
|
-
systemConfig.cacheDir = path.join(
|
|
671
|
-
const zone =
|
|
681
|
+
systemConfig.cacheDir = path.join(resolveE2eCacheRoot(), 'openclaw');
|
|
682
|
+
const zone = getOpenClawE2eZone(systemConfig);
|
|
672
683
|
zone.gateway.port = gatewayPort;
|
|
673
684
|
return {
|
|
674
685
|
controllerPort,
|
|
@@ -695,7 +706,7 @@ export async function prepareLocalWorkerPackageForGatewayImage(repoRoot) {
|
|
|
695
706
|
}
|
|
696
707
|
return path.join(packDirectory, packedTarballName);
|
|
697
708
|
}
|
|
698
|
-
export async function
|
|
709
|
+
export async function scaffoldWorkerE2eProject(options) {
|
|
699
710
|
const tempRoot = await fs.mkdtemp(path.join(os.tmpdir(), options.prefix));
|
|
700
711
|
const controllerPort = await findAvailablePort();
|
|
701
712
|
const gatewayPort = await findAvailablePort();
|
|
@@ -709,12 +720,12 @@ export async function scaffoldWorkerSmokeProject(options) {
|
|
|
709
720
|
const systemConfig = await loadSystemConfig(path.join(tempRoot, 'config', 'system.json'));
|
|
710
721
|
systemConfig.host.controllerPort = controllerPort;
|
|
711
722
|
systemConfig.host.projectNamespace = 'claw-tests-worker';
|
|
712
|
-
systemConfig.cacheDir = path.join(
|
|
723
|
+
systemConfig.cacheDir = path.join(resolveE2eCacheRoot(), 'worker');
|
|
713
724
|
systemConfig.host.secretsProvider = {
|
|
714
725
|
type: '1password',
|
|
715
|
-
tokenSource: { type: 'env', envVar: '
|
|
726
|
+
tokenSource: { type: 'env', envVar: 'AGENT_VM_TEST_OPENAI_API_KEY' },
|
|
716
727
|
};
|
|
717
|
-
const zone =
|
|
728
|
+
const zone = getWorkerE2eZone(systemConfig);
|
|
718
729
|
zone.gateway.port = gatewayPort;
|
|
719
730
|
return {
|
|
720
731
|
controllerPort,
|
|
@@ -724,27 +735,27 @@ export async function scaffoldWorkerSmokeProject(options) {
|
|
|
724
735
|
zone,
|
|
725
736
|
};
|
|
726
737
|
}
|
|
727
|
-
export async function
|
|
738
|
+
export async function scaffoldGatewayE2eProject(options) {
|
|
728
739
|
if (options.kind === 'openclaw') {
|
|
729
|
-
return await
|
|
740
|
+
return await scaffoldOpenClawE2eProject({
|
|
730
741
|
architecture: options.architecture,
|
|
731
742
|
prefix: options.prefix,
|
|
732
743
|
zoneId: options.zoneId,
|
|
733
744
|
...(options.agents ? { agents: options.agents } : {}),
|
|
734
745
|
});
|
|
735
746
|
}
|
|
736
|
-
return await
|
|
747
|
+
return await scaffoldWorkerE2eProject({
|
|
737
748
|
architecture: options.architecture,
|
|
738
749
|
prefix: options.prefix,
|
|
739
750
|
zoneId: options.zoneId,
|
|
740
751
|
});
|
|
741
752
|
}
|
|
742
|
-
export async function
|
|
753
|
+
export async function writeOpenClawMcpPortalE2eConfigs(options) {
|
|
743
754
|
await fs.writeFile(path.join(options.configDir, 'mcp.config.jsonc'), `${JSON.stringify({
|
|
744
755
|
$schema: '../../schemas/mcp.schema.json',
|
|
745
756
|
providers: {
|
|
746
757
|
upstreamMock: {
|
|
747
|
-
discovery: { summary: 'Mock upstream MCP server for
|
|
758
|
+
discovery: { summary: 'Mock upstream MCP server for e2e tests' },
|
|
748
759
|
kind: 'mcp',
|
|
749
760
|
namespace: options.namespace,
|
|
750
761
|
transport: {
|
|
@@ -777,7 +788,7 @@ export async function writeOpenClawMcpPortalSmokeConfigs(options) {
|
|
|
777
788
|
schemaVersion: 1,
|
|
778
789
|
}, null, '\t')}\n`, 'utf8');
|
|
779
790
|
}
|
|
780
|
-
export async function
|
|
791
|
+
export async function startE2eControllerRuntime(options) {
|
|
781
792
|
const restoreEnvironment = applySmokeEnvironment(options.secrets);
|
|
782
793
|
const secretResolver = createSmokeSecretResolver(options.secrets);
|
|
783
794
|
const tempRoot = path.dirname(path.dirname(options.startOptions.systemConfig.systemConfigPath));
|
|
@@ -816,7 +827,7 @@ export async function startSmokeControllerRuntime(options) {
|
|
|
816
827
|
runtime,
|
|
817
828
|
systemConfig: options.startOptions.systemConfig,
|
|
818
829
|
tempRoot,
|
|
819
|
-
close: async () => {
|
|
830
|
+
close: async (closeOptions = {}) => {
|
|
820
831
|
const cleanupErrors = [];
|
|
821
832
|
try {
|
|
822
833
|
await runtime.close();
|
|
@@ -824,14 +835,19 @@ export async function startSmokeControllerRuntime(options) {
|
|
|
824
835
|
catch (error) {
|
|
825
836
|
cleanupErrors.push(error);
|
|
826
837
|
}
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
838
|
+
if (shouldCleanupE2eDockerImages({
|
|
839
|
+
...closeOptions,
|
|
840
|
+
env: process.env,
|
|
841
|
+
})) {
|
|
842
|
+
try {
|
|
843
|
+
await removeE2eDockerImagesForSystemConfig(options.startOptions.systemConfig);
|
|
844
|
+
}
|
|
845
|
+
catch (error) {
|
|
846
|
+
cleanupErrors.push(error);
|
|
847
|
+
}
|
|
832
848
|
}
|
|
833
849
|
try {
|
|
834
|
-
await
|
|
850
|
+
await removeE2eTempRoot(tempRoot);
|
|
835
851
|
}
|
|
836
852
|
catch (error) {
|
|
837
853
|
cleanupErrors.push(error);
|
|
@@ -839,20 +855,22 @@ export async function startSmokeControllerRuntime(options) {
|
|
|
839
855
|
finally {
|
|
840
856
|
restoreEnvironment();
|
|
841
857
|
}
|
|
842
|
-
|
|
858
|
+
throwIfE2eHarnessCleanupFailed(cleanupErrors);
|
|
843
859
|
},
|
|
844
860
|
};
|
|
845
861
|
}
|
|
846
862
|
catch (error) {
|
|
847
863
|
const cleanupErrors = [error];
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
864
|
+
if (shouldCleanupE2eDockerImages({ env: process.env })) {
|
|
865
|
+
try {
|
|
866
|
+
await removeE2eDockerImagesForSystemConfig(options.startOptions.systemConfig);
|
|
867
|
+
}
|
|
868
|
+
catch (cleanupError) {
|
|
869
|
+
cleanupErrors.push(cleanupError);
|
|
870
|
+
}
|
|
853
871
|
}
|
|
854
872
|
try {
|
|
855
|
-
await
|
|
873
|
+
await removeE2eTempRoot(tempRoot);
|
|
856
874
|
}
|
|
857
875
|
catch (cleanupError) {
|
|
858
876
|
cleanupErrors.push(cleanupError);
|
|
@@ -860,8 +878,8 @@ export async function startSmokeControllerRuntime(options) {
|
|
|
860
878
|
finally {
|
|
861
879
|
restoreEnvironment();
|
|
862
880
|
}
|
|
863
|
-
|
|
881
|
+
throwIfE2eHarnessCleanupFailed(cleanupErrors);
|
|
864
882
|
throw error;
|
|
865
883
|
}
|
|
866
884
|
}
|
|
867
|
-
//# sourceMappingURL=
|
|
885
|
+
//# sourceMappingURL=e2e-harness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"e2e-harness.js","sourceRoot":"","sources":["../../src/integration-tests/e2e-harness.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
type E2eWorkspaceBuildResult = 'built' | 'skipped';
|
|
2
|
+
type E2eWorkspaceBuildEnvironment = Partial<Record<'AGENT_VM_GONDOLIN_E2E' | 'AGENT_VM_1PASSWORD_E2E' | 'AGENT_VM_E2E_SKIP_WORKSPACE_BUILD' | 'AGENT_VM_LLM_E2E' | 'AGENT_VM_OPENCLAW_E2E' | 'AGENT_VM_TEST_OPENAI_API_KEY' | 'AGENT_VM_TEST_OP_SERVICE_ACCOUNT_TOKEN' | 'AGENT_VM_WORKER_E2E', string>>;
|
|
3
|
+
interface E2eWorkspaceBuildExecOptions {
|
|
4
|
+
readonly cwd: string;
|
|
5
|
+
readonly stdio: 'inherit';
|
|
6
|
+
}
|
|
7
|
+
interface RunE2eWorkspaceBuildOptions {
|
|
8
|
+
readonly cwd: string;
|
|
9
|
+
readonly env?: E2eWorkspaceBuildEnvironment;
|
|
10
|
+
readonly execFileSync?: (command: string, args: readonly string[], options: E2eWorkspaceBuildExecOptions) => unknown;
|
|
11
|
+
}
|
|
12
|
+
export declare function shouldBuildWorkspaceForE2e(env?: E2eWorkspaceBuildEnvironment): boolean;
|
|
13
|
+
export declare function runE2eWorkspaceBuild(options: RunE2eWorkspaceBuildOptions): E2eWorkspaceBuildResult;
|
|
14
|
+
export declare function setup(): void;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=e2e-workspace-build-global-setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"e2e-workspace-build-global-setup.d.ts","sourceRoot":"","sources":["../../src/integration-tests/e2e-workspace-build-global-setup.ts"],"names":[],"mappings":"AAGA,KAAK,uBAAuB,GAAG,OAAO,GAAG,SAAS,CAAC;AAEnD,KAAK,4BAA4B,GAAG,OAAO,CAC1C,MAAM,CACH,uBAAuB,GACvB,wBAAwB,GACxB,mCAAmC,GACnC,kBAAkB,GAClB,uBAAuB,GACvB,8BAA8B,GAC9B,wCAAwC,GACxC,qBAAqB,EACvB,MAAM,CACN,CACD,CAAC;AAEF,UAAU,4BAA4B;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;CAC1B;AAED,UAAU,2BAA2B;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,4BAA4B,CAAC;IAC5C,QAAQ,CAAC,YAAY,CAAC,EAAE,CACvB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE,4BAA4B,KACjC,OAAO,CAAC;CACb;AAED,wBAAgB,0BAA0B,CACzC,GAAG,GAAE,4BAA0C,GAC7C,OAAO,CAUT;AAED,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,2BAA2B,GAClC,uBAAuB,CAYzB;AAED,wBAAgB,KAAK,IAAI,IAAI,CAE5B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { execFileSync } from 'node:child_process';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
export function shouldBuildWorkspaceForE2e(env = process.env) {
|
|
4
|
+
if (env.AGENT_VM_E2E_SKIP_WORKSPACE_BUILD === '1') {
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
7
|
+
return (env.AGENT_VM_OPENCLAW_E2E === '1' ||
|
|
8
|
+
env.AGENT_VM_WORKER_E2E === '1' ||
|
|
9
|
+
env.AGENT_VM_LLM_E2E === '1' ||
|
|
10
|
+
env.AGENT_VM_GONDOLIN_E2E === '1');
|
|
11
|
+
}
|
|
12
|
+
export function runE2eWorkspaceBuild(options) {
|
|
13
|
+
const env = options.env ?? process.env;
|
|
14
|
+
if (!shouldBuildWorkspaceForE2e(env)) {
|
|
15
|
+
return 'skipped';
|
|
16
|
+
}
|
|
17
|
+
const runExecFileSync = options.execFileSync ?? execFileSync;
|
|
18
|
+
runExecFileSync('pnpm', ['build'], {
|
|
19
|
+
cwd: path.resolve(options.cwd),
|
|
20
|
+
stdio: 'inherit',
|
|
21
|
+
});
|
|
22
|
+
return 'built';
|
|
23
|
+
}
|
|
24
|
+
export function setup() {
|
|
25
|
+
runE2eWorkspaceBuild({ cwd: process.cwd() });
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=e2e-workspace-build-global-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"e2e-workspace-build-global-setup.js","sourceRoot":"","sources":["../../src/integration-tests/e2e-workspace-build-global-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,IAAI,MAAM,WAAW,CAAC;AAiC7B,MAAM,UAAU,0BAA0B,CACzC,MAAoC,OAAO,CAAC,GAAG;IAE/C,IAAI,GAAG,CAAC,iCAAiC,KAAK,GAAG,EAAE,CAAC;QACnD,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,CACN,GAAG,CAAC,qBAAqB,KAAK,GAAG;QACjC,GAAG,CAAC,mBAAmB,KAAK,GAAG;QAC/B,GAAG,CAAC,gBAAgB,KAAK,GAAG;QAC5B,GAAG,CAAC,qBAAqB,KAAK,GAAG,CACjC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CACnC,OAAoC;IAEpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,eAAe,GAAG,OAAO,CAAC,YAAY,IAAI,YAAY,CAAC;IAC7D,eAAe,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;QAClC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;QAC9B,KAAK,EAAE,SAAS;KAChB,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,KAAK;IACpB,oBAAoB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { LoadedSystemConfig } from '../config/system-config.js';
|
|
2
|
+
export interface CreateLiveRoundtripDeploymentConfigOptions {
|
|
3
|
+
readonly controllerPort: number;
|
|
4
|
+
readonly deploymentRoot: string;
|
|
5
|
+
readonly gatewayPort: number;
|
|
6
|
+
readonly systemConfig: LoadedSystemConfig;
|
|
7
|
+
readonly toolSshPort: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function resolveLiveRoundtripCacheDir(env?: Partial<Record<'AGENT_VM_E2E_CACHE_DIR', string>>): string;
|
|
10
|
+
export declare function createLiveRoundtripDeploymentConfig(options: CreateLiveRoundtripDeploymentConfigOptions): LoadedSystemConfig;
|
|
11
|
+
//# sourceMappingURL=live-agent-model-roundtrip-deployment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-agent-model-roundtrip-deployment.d.ts","sourceRoot":"","sources":["../../src/integration-tests/live-agent-model-roundtrip-deployment.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,MAAM,WAAW,0CAA0C;IAC1D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,4BAA4B,CAC3C,GAAG,GAAE,OAAO,CAAC,MAAM,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAe,GAClE,MAAM,CAOR;AAED,wBAAgB,mCAAmC,CAClD,OAAO,EAAE,0CAA0C,GACjD,kBAAkB,CAqCpB"}
|