@agent-vm/agent-vm 0.0.91 → 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/gondolin-image-builder.d.ts +1 -0
- package/dist/build/gondolin-image-builder.d.ts.map +1 -1
- package/dist/build/gondolin-image-builder.js +11 -1
- package/dist/build/gondolin-image-builder.js.map +1 -1
- 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 +60 -60
- package/dist/cli/manual-templates.d.ts.map +1 -1
- package/dist/cli/manual-templates.js +14 -1
- package/dist/cli/manual-templates.js.map +1 -1
- package/dist/config/system-config.d.ts +15 -0
- package/dist/config/system-config.d.ts.map +1 -1
- package/dist/config/system-config.js +74 -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 +5 -0
- package/dist/controller/controller-runtime-types.d.ts.map +1 -1
- package/dist/controller/controller-runtime.d.ts +1 -0
- package/dist/controller/controller-runtime.d.ts.map +1 -1
- package/dist/controller/controller-runtime.js +220 -3
- 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 +71 -3
- package/dist/controller/health/gateway-service-health-monitor.d.ts.map +1 -1
- package/dist/controller/health/gateway-service-health-monitor.js +383 -10
- package/dist/controller/health/gateway-service-health-monitor.js.map +1 -1
- package/dist/controller/health/gateway-vm-recovery-policy.d.ts +68 -0
- package/dist/controller/health/gateway-vm-recovery-policy.d.ts.map +1 -0
- package/dist/controller/health/gateway-vm-recovery-policy.js +199 -0
- package/dist/controller/health/gateway-vm-recovery-policy.js.map +1 -0
- 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 +16 -1
- package/dist/controller/zone-runtimes/openclaw-zone-runtime.d.ts.map +1 -1
- package/dist/controller/zone-runtimes/openclaw-zone-runtime.js +700 -40
- 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 +14 -1
- 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} +134 -108
- 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,9 +4,9 @@ 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
|
-
import { resolveManagedImageRelease } from '../build/managed-image-dockerfile.js';
|
|
9
|
+
import { generateManagedDockerfile, resolveManagedImageRelease, } from '../build/managed-image-dockerfile.js';
|
|
10
10
|
import { isZigVersionAtLeast, resolveHostZigVersion } from '../build/zig-compatibility.js';
|
|
11
11
|
import { scaffoldAgentVmProject } from '../cli/init-command.js';
|
|
12
12
|
import { loadJsonConfigFile } from '../config/json-config-file.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,6 +363,19 @@ export async function useLocalToolVmMcpPortalPackage(options) {
|
|
|
359
363
|
function localPackageTarballArchiveName(packageName) {
|
|
360
364
|
return `${packageName}-local.tgz`;
|
|
361
365
|
}
|
|
366
|
+
async function writeManagedOpenClawE2eDockerfileBase(options) {
|
|
367
|
+
const managedImageRelease = await resolveManagedImageRelease();
|
|
368
|
+
const result = await generateManagedDockerfile({
|
|
369
|
+
base: 'openclaw-gateway',
|
|
370
|
+
imageTargetFamily: 'gateway',
|
|
371
|
+
imageTargetName: options.profileName,
|
|
372
|
+
managedImageRelease,
|
|
373
|
+
openClawAgentVmPackageInstallMode: options.openClawAgentVmPackageInstallMode,
|
|
374
|
+
outputDirectory: options.dockerContextDirectory,
|
|
375
|
+
requiredOpenClawPackageNames: ['@openclaw/discord'],
|
|
376
|
+
});
|
|
377
|
+
return result.dockerfilePath;
|
|
378
|
+
}
|
|
362
379
|
function isJsonRecord(value) {
|
|
363
380
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
364
381
|
}
|
|
@@ -371,7 +388,7 @@ function mutableJsonRecord(value) {
|
|
|
371
388
|
async function runDockerCommand(args) {
|
|
372
389
|
await execFileAsync('docker', [...args]);
|
|
373
390
|
}
|
|
374
|
-
async function
|
|
391
|
+
async function readE2eDockerImageTag(buildConfigPath) {
|
|
375
392
|
let buildConfig;
|
|
376
393
|
try {
|
|
377
394
|
buildConfig = mutableJsonRecord(await loadJsonConfigFile(buildConfigPath));
|
|
@@ -386,7 +403,7 @@ async function readSmokeDockerImageTag(buildConfigPath) {
|
|
|
386
403
|
const imageTag = ociConfig?.image;
|
|
387
404
|
return typeof imageTag === 'string' && imageTag.length > 0 ? imageTag : null;
|
|
388
405
|
}
|
|
389
|
-
export async function
|
|
406
|
+
export async function collectE2eDockerImageTags(systemConfig) {
|
|
390
407
|
const imageProfiles = [
|
|
391
408
|
...Object.values(systemConfig.imageProfiles.gateways),
|
|
392
409
|
...Object.values(systemConfig.imageProfiles.toolVms),
|
|
@@ -394,14 +411,14 @@ export async function collectSmokeDockerImageTags(systemConfig) {
|
|
|
394
411
|
const imageTags = [];
|
|
395
412
|
for (const imageProfile of imageProfiles) {
|
|
396
413
|
// oxlint-disable-next-line eslint/no-await-in-loop -- config files are intentionally read deterministically
|
|
397
|
-
const imageTag = await
|
|
414
|
+
const imageTag = await readE2eDockerImageTag(imageProfile.buildConfig);
|
|
398
415
|
if (imageTag !== null) {
|
|
399
416
|
imageTags.push(imageTag);
|
|
400
417
|
}
|
|
401
418
|
}
|
|
402
419
|
return Array.from(new Set(imageTags));
|
|
403
420
|
}
|
|
404
|
-
export async function
|
|
421
|
+
export async function removeE2eDockerImages(imageTags, options = {}) {
|
|
405
422
|
const dockerCommand = options.runDockerCommand ?? runDockerCommand;
|
|
406
423
|
for (const imageTag of Array.from(new Set(imageTags))) {
|
|
407
424
|
try {
|
|
@@ -415,10 +432,10 @@ export async function removeSmokeDockerImages(imageTags, options = {}) {
|
|
|
415
432
|
await dockerCommand(['image', 'rm', '--force', imageTag]);
|
|
416
433
|
}
|
|
417
434
|
}
|
|
418
|
-
export async function
|
|
419
|
-
await
|
|
435
|
+
export async function removeE2eDockerImagesForSystemConfig(systemConfig, options = {}) {
|
|
436
|
+
await removeE2eDockerImages(await collectE2eDockerImageTags(systemConfig), options);
|
|
420
437
|
}
|
|
421
|
-
function
|
|
438
|
+
function throwIfE2eHarnessCleanupFailed(errors) {
|
|
422
439
|
if (errors.length === 0) {
|
|
423
440
|
return;
|
|
424
441
|
}
|
|
@@ -458,10 +475,7 @@ export async function useLocalOpenClawGatewayImagePackages(options) {
|
|
|
458
475
|
if (!gatewayProfile) {
|
|
459
476
|
throw new Error(`Gateway image profile '${options.profileName}' is not configured.`);
|
|
460
477
|
}
|
|
461
|
-
const managedImageRelease = await resolveManagedImageRelease();
|
|
462
|
-
const baseImage = managedImageRelease.baseImages['openclaw-gateway'];
|
|
463
478
|
const dockerContextDirectory = path.join(options.projectRoot, 'vm-images', 'gateways', `${options.profileName}-local-packages`);
|
|
464
|
-
const dockerfilePath = path.join(dockerContextDirectory, 'Dockerfile');
|
|
465
479
|
const localConfigContractsTarballPath = await packLocalPackageTarball({
|
|
466
480
|
packageDirectory: path.join(options.repoRoot, 'packages', 'config-contracts'),
|
|
467
481
|
packageName: 'config-contracts',
|
|
@@ -521,8 +535,11 @@ export async function useLocalOpenClawGatewayImagePackages(options) {
|
|
|
521
535
|
sourcePath: localOpenClawMcpPortalPluginTarballPath,
|
|
522
536
|
},
|
|
523
537
|
];
|
|
524
|
-
await
|
|
525
|
-
|
|
538
|
+
const dockerfilePath = await writeManagedOpenClawE2eDockerfileBase({
|
|
539
|
+
dockerContextDirectory,
|
|
540
|
+
profileName: options.profileName,
|
|
541
|
+
openClawAgentVmPackageInstallMode: 'local-overlay',
|
|
542
|
+
});
|
|
526
543
|
await copyLocalPackageTarballsToDockerContext({
|
|
527
544
|
dockerContextDirectory,
|
|
528
545
|
tarballs: localPackageTarballs,
|
|
@@ -534,10 +551,9 @@ export async function useLocalOpenClawGatewayImagePackages(options) {
|
|
|
534
551
|
projectRoot: options.projectRoot,
|
|
535
552
|
systemConfig: options.systemConfig,
|
|
536
553
|
});
|
|
537
|
-
await fs.
|
|
538
|
-
`FROM ${baseImage.repository}:${baseImage.tag}`,
|
|
554
|
+
await fs.appendFile(dockerfilePath, [
|
|
539
555
|
'',
|
|
540
|
-
'#
|
|
556
|
+
'# Local package overlay generated by the OpenClaw smoke harness.',
|
|
541
557
|
...localPackageTarballs.map((tarball) => `COPY ${tarball.archiveName} /tmp/${tarball.archiveName}`),
|
|
542
558
|
'RUN mkdir -p /opt/agent-vm/local-packages && \\',
|
|
543
559
|
' npm install --omit=dev --no-audit --no-fund --prefix /opt/agent-vm/local-packages ' +
|
|
@@ -546,7 +562,9 @@ export async function useLocalOpenClawGatewayImagePackages(options) {
|
|
|
546
562
|
' rm -f ' +
|
|
547
563
|
localPackageTarballs.map((tarball) => `/tmp/${tarball.archiveName}`).join(' '),
|
|
548
564
|
'RUN package_root="/opt/agent-vm/local-packages/node_modules" && \\',
|
|
549
|
-
'
|
|
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" && \\',
|
|
550
568
|
' ln -sfn "$package_root/@agent-vm/openclaw-agent-vm-plugin/dist" /home/openclaw/.openclaw/extensions/gondolin && \\',
|
|
551
569
|
' ln -sfn "$package_root/@agent-vm/openclaw-mcp-portal-plugin/dist" /home/openclaw/.openclaw/extensions/mcp-portal',
|
|
552
570
|
'',
|
|
@@ -571,10 +589,7 @@ export async function useLocalOpenClawPluginGatewayImage(options) {
|
|
|
571
589
|
if (!gatewayProfile) {
|
|
572
590
|
throw new Error(`Gateway image profile '${options.profileName}' is not configured.`);
|
|
573
591
|
}
|
|
574
|
-
const managedImageRelease = await resolveManagedImageRelease();
|
|
575
|
-
const baseImage = managedImageRelease.baseImages['openclaw-gateway'];
|
|
576
592
|
const dockerContextDirectory = path.join(options.projectRoot, 'vm-images', 'gateways', `${options.profileName}-local-plugin`);
|
|
577
|
-
const dockerfilePath = path.join(dockerContextDirectory, 'Dockerfile');
|
|
578
593
|
const localSecretManagementTarballPath = await packLocalPackageTarball({
|
|
579
594
|
packageDirectory: path.join(options.repoRoot, 'packages', 'secret-management'),
|
|
580
595
|
packageName: 'secret-management',
|
|
@@ -610,16 +625,18 @@ export async function useLocalOpenClawPluginGatewayImage(options) {
|
|
|
610
625
|
sourcePath: localOpenClawAgentVmPluginTarballPath,
|
|
611
626
|
},
|
|
612
627
|
];
|
|
613
|
-
await
|
|
614
|
-
|
|
628
|
+
const dockerfilePath = await writeManagedOpenClawE2eDockerfileBase({
|
|
629
|
+
dockerContextDirectory,
|
|
630
|
+
profileName: options.profileName,
|
|
631
|
+
openClawAgentVmPackageInstallMode: 'local-overlay',
|
|
632
|
+
});
|
|
615
633
|
await copyLocalPackageTarballsToDockerContext({
|
|
616
634
|
dockerContextDirectory,
|
|
617
635
|
tarballs: localPackageTarballs,
|
|
618
636
|
});
|
|
619
|
-
await fs.
|
|
620
|
-
`FROM ${baseImage.repository}:${baseImage.tag}`,
|
|
637
|
+
await fs.appendFile(dockerfilePath, [
|
|
621
638
|
'',
|
|
622
|
-
'#
|
|
639
|
+
'# Local plugin overlay generated by the OpenClaw smoke harness.',
|
|
623
640
|
...localPackageTarballs.map((tarball) => `COPY ${tarball.archiveName} /tmp/${tarball.archiveName}`),
|
|
624
641
|
'RUN mkdir -p /opt/agent-vm/local-packages && \\',
|
|
625
642
|
' npm install --omit=dev --no-audit --no-fund --prefix /opt/agent-vm/local-packages ' +
|
|
@@ -628,7 +645,9 @@ export async function useLocalOpenClawPluginGatewayImage(options) {
|
|
|
628
645
|
' rm -f ' +
|
|
629
646
|
localPackageTarballs.map((tarball) => `/tmp/${tarball.archiveName}`).join(' '),
|
|
630
647
|
'RUN package_root="/opt/agent-vm/local-packages/node_modules" && \\',
|
|
631
|
-
'
|
|
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" && \\',
|
|
632
651
|
' ln -sfn "$package_root/@agent-vm/openclaw-agent-vm-plugin/dist" /home/openclaw/.openclaw/extensions/gondolin',
|
|
633
652
|
'',
|
|
634
653
|
].join('\n'), 'utf8');
|
|
@@ -644,7 +663,7 @@ export async function useLocalOpenClawPluginGatewayImage(options) {
|
|
|
644
663
|
]);
|
|
645
664
|
}
|
|
646
665
|
}
|
|
647
|
-
export async function
|
|
666
|
+
export async function scaffoldOpenClawE2eProject(options) {
|
|
648
667
|
const tempRoot = await fs.mkdtemp(path.join(os.tmpdir(), options.prefix));
|
|
649
668
|
const controllerPort = await findAvailablePort();
|
|
650
669
|
const gatewayPort = await findAvailablePort();
|
|
@@ -659,8 +678,8 @@ export async function scaffoldOpenClawSmokeProject(options) {
|
|
|
659
678
|
const systemConfig = await loadSystemConfig(path.join(tempRoot, 'config', 'system.json'));
|
|
660
679
|
systemConfig.host.controllerPort = controllerPort;
|
|
661
680
|
systemConfig.host.projectNamespace = 'claw-tests-zone-git';
|
|
662
|
-
systemConfig.cacheDir = path.join(
|
|
663
|
-
const zone =
|
|
681
|
+
systemConfig.cacheDir = path.join(resolveE2eCacheRoot(), 'openclaw');
|
|
682
|
+
const zone = getOpenClawE2eZone(systemConfig);
|
|
664
683
|
zone.gateway.port = gatewayPort;
|
|
665
684
|
return {
|
|
666
685
|
controllerPort,
|
|
@@ -687,7 +706,7 @@ export async function prepareLocalWorkerPackageForGatewayImage(repoRoot) {
|
|
|
687
706
|
}
|
|
688
707
|
return path.join(packDirectory, packedTarballName);
|
|
689
708
|
}
|
|
690
|
-
export async function
|
|
709
|
+
export async function scaffoldWorkerE2eProject(options) {
|
|
691
710
|
const tempRoot = await fs.mkdtemp(path.join(os.tmpdir(), options.prefix));
|
|
692
711
|
const controllerPort = await findAvailablePort();
|
|
693
712
|
const gatewayPort = await findAvailablePort();
|
|
@@ -701,12 +720,12 @@ export async function scaffoldWorkerSmokeProject(options) {
|
|
|
701
720
|
const systemConfig = await loadSystemConfig(path.join(tempRoot, 'config', 'system.json'));
|
|
702
721
|
systemConfig.host.controllerPort = controllerPort;
|
|
703
722
|
systemConfig.host.projectNamespace = 'claw-tests-worker';
|
|
704
|
-
systemConfig.cacheDir = path.join(
|
|
723
|
+
systemConfig.cacheDir = path.join(resolveE2eCacheRoot(), 'worker');
|
|
705
724
|
systemConfig.host.secretsProvider = {
|
|
706
725
|
type: '1password',
|
|
707
|
-
tokenSource: { type: 'env', envVar: '
|
|
726
|
+
tokenSource: { type: 'env', envVar: 'AGENT_VM_TEST_OPENAI_API_KEY' },
|
|
708
727
|
};
|
|
709
|
-
const zone =
|
|
728
|
+
const zone = getWorkerE2eZone(systemConfig);
|
|
710
729
|
zone.gateway.port = gatewayPort;
|
|
711
730
|
return {
|
|
712
731
|
controllerPort,
|
|
@@ -716,27 +735,27 @@ export async function scaffoldWorkerSmokeProject(options) {
|
|
|
716
735
|
zone,
|
|
717
736
|
};
|
|
718
737
|
}
|
|
719
|
-
export async function
|
|
738
|
+
export async function scaffoldGatewayE2eProject(options) {
|
|
720
739
|
if (options.kind === 'openclaw') {
|
|
721
|
-
return await
|
|
740
|
+
return await scaffoldOpenClawE2eProject({
|
|
722
741
|
architecture: options.architecture,
|
|
723
742
|
prefix: options.prefix,
|
|
724
743
|
zoneId: options.zoneId,
|
|
725
744
|
...(options.agents ? { agents: options.agents } : {}),
|
|
726
745
|
});
|
|
727
746
|
}
|
|
728
|
-
return await
|
|
747
|
+
return await scaffoldWorkerE2eProject({
|
|
729
748
|
architecture: options.architecture,
|
|
730
749
|
prefix: options.prefix,
|
|
731
750
|
zoneId: options.zoneId,
|
|
732
751
|
});
|
|
733
752
|
}
|
|
734
|
-
export async function
|
|
753
|
+
export async function writeOpenClawMcpPortalE2eConfigs(options) {
|
|
735
754
|
await fs.writeFile(path.join(options.configDir, 'mcp.config.jsonc'), `${JSON.stringify({
|
|
736
755
|
$schema: '../../schemas/mcp.schema.json',
|
|
737
756
|
providers: {
|
|
738
757
|
upstreamMock: {
|
|
739
|
-
discovery: { summary: 'Mock upstream MCP server for
|
|
758
|
+
discovery: { summary: 'Mock upstream MCP server for e2e tests' },
|
|
740
759
|
kind: 'mcp',
|
|
741
760
|
namespace: options.namespace,
|
|
742
761
|
transport: {
|
|
@@ -769,7 +788,7 @@ export async function writeOpenClawMcpPortalSmokeConfigs(options) {
|
|
|
769
788
|
schemaVersion: 1,
|
|
770
789
|
}, null, '\t')}\n`, 'utf8');
|
|
771
790
|
}
|
|
772
|
-
export async function
|
|
791
|
+
export async function startE2eControllerRuntime(options) {
|
|
773
792
|
const restoreEnvironment = applySmokeEnvironment(options.secrets);
|
|
774
793
|
const secretResolver = createSmokeSecretResolver(options.secrets);
|
|
775
794
|
const tempRoot = path.dirname(path.dirname(options.startOptions.systemConfig.systemConfigPath));
|
|
@@ -808,7 +827,7 @@ export async function startSmokeControllerRuntime(options) {
|
|
|
808
827
|
runtime,
|
|
809
828
|
systemConfig: options.startOptions.systemConfig,
|
|
810
829
|
tempRoot,
|
|
811
|
-
close: async () => {
|
|
830
|
+
close: async (closeOptions = {}) => {
|
|
812
831
|
const cleanupErrors = [];
|
|
813
832
|
try {
|
|
814
833
|
await runtime.close();
|
|
@@ -816,14 +835,19 @@ export async function startSmokeControllerRuntime(options) {
|
|
|
816
835
|
catch (error) {
|
|
817
836
|
cleanupErrors.push(error);
|
|
818
837
|
}
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
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
|
+
}
|
|
824
848
|
}
|
|
825
849
|
try {
|
|
826
|
-
await
|
|
850
|
+
await removeE2eTempRoot(tempRoot);
|
|
827
851
|
}
|
|
828
852
|
catch (error) {
|
|
829
853
|
cleanupErrors.push(error);
|
|
@@ -831,20 +855,22 @@ export async function startSmokeControllerRuntime(options) {
|
|
|
831
855
|
finally {
|
|
832
856
|
restoreEnvironment();
|
|
833
857
|
}
|
|
834
|
-
|
|
858
|
+
throwIfE2eHarnessCleanupFailed(cleanupErrors);
|
|
835
859
|
},
|
|
836
860
|
};
|
|
837
861
|
}
|
|
838
862
|
catch (error) {
|
|
839
863
|
const cleanupErrors = [error];
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
864
|
+
if (shouldCleanupE2eDockerImages({ env: process.env })) {
|
|
865
|
+
try {
|
|
866
|
+
await removeE2eDockerImagesForSystemConfig(options.startOptions.systemConfig);
|
|
867
|
+
}
|
|
868
|
+
catch (cleanupError) {
|
|
869
|
+
cleanupErrors.push(cleanupError);
|
|
870
|
+
}
|
|
845
871
|
}
|
|
846
872
|
try {
|
|
847
|
-
await
|
|
873
|
+
await removeE2eTempRoot(tempRoot);
|
|
848
874
|
}
|
|
849
875
|
catch (cleanupError) {
|
|
850
876
|
cleanupErrors.push(cleanupError);
|
|
@@ -852,8 +878,8 @@ export async function startSmokeControllerRuntime(options) {
|
|
|
852
878
|
finally {
|
|
853
879
|
restoreEnvironment();
|
|
854
880
|
}
|
|
855
|
-
|
|
881
|
+
throwIfE2eHarnessCleanupFailed(cleanupErrors);
|
|
856
882
|
throw error;
|
|
857
883
|
}
|
|
858
884
|
}
|
|
859
|
-
//# 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"}
|