@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.
Files changed (129) hide show
  1. package/dist/build/managed-image-dockerfile.d.ts +2 -1
  2. package/dist/build/managed-image-dockerfile.d.ts.map +1 -1
  3. package/dist/build/managed-image-dockerfile.js +51 -27
  4. package/dist/build/managed-image-dockerfile.js.map +1 -1
  5. package/dist/cli/commands/controller-definition.d.ts +42 -42
  6. package/dist/cli/commands/create-app.d.ts +42 -42
  7. package/dist/cli/manual-templates.d.ts.map +1 -1
  8. package/dist/cli/manual-templates.js +11 -2
  9. package/dist/cli/manual-templates.js.map +1 -1
  10. package/dist/config/system-config.d.ts +7 -0
  11. package/dist/config/system-config.d.ts.map +1 -1
  12. package/dist/config/system-config.js +35 -0
  13. package/dist/config/system-config.js.map +1 -1
  14. package/dist/controller/controller-runtime-operations.d.ts +1 -0
  15. package/dist/controller/controller-runtime-operations.d.ts.map +1 -1
  16. package/dist/controller/controller-runtime-operations.js +2 -0
  17. package/dist/controller/controller-runtime-operations.js.map +1 -1
  18. package/dist/controller/controller-runtime-types.d.ts +3 -0
  19. package/dist/controller/controller-runtime-types.d.ts.map +1 -1
  20. package/dist/controller/controller-runtime.d.ts +1 -1
  21. package/dist/controller/controller-runtime.d.ts.map +1 -1
  22. package/dist/controller/controller-runtime.js +207 -116
  23. package/dist/controller/controller-runtime.js.map +1 -1
  24. package/dist/controller/health/channel-provider-recovery-observation.d.ts +23 -0
  25. package/dist/controller/health/channel-provider-recovery-observation.d.ts.map +1 -0
  26. package/dist/controller/health/channel-provider-recovery-observation.js +69 -0
  27. package/dist/controller/health/channel-provider-recovery-observation.js.map +1 -0
  28. package/dist/controller/health/durable-health-event-log.d.ts +24 -0
  29. package/dist/controller/health/durable-health-event-log.d.ts.map +1 -0
  30. package/dist/controller/health/durable-health-event-log.js +89 -0
  31. package/dist/controller/health/durable-health-event-log.js.map +1 -0
  32. package/dist/controller/health/gateway-recovery-actions.d.ts +27 -0
  33. package/dist/controller/health/gateway-recovery-actions.d.ts.map +1 -0
  34. package/dist/controller/health/gateway-recovery-actions.js +71 -0
  35. package/dist/controller/health/gateway-recovery-actions.js.map +1 -0
  36. package/dist/controller/health/gateway-service-health-monitor.d.ts +41 -3
  37. package/dist/controller/health/gateway-service-health-monitor.d.ts.map +1 -1
  38. package/dist/controller/health/gateway-service-health-monitor.js +231 -57
  39. package/dist/controller/health/gateway-service-health-monitor.js.map +1 -1
  40. package/dist/controller/health/gateway-vm-recovery-policy.d.ts +20 -0
  41. package/dist/controller/health/gateway-vm-recovery-policy.d.ts.map +1 -1
  42. package/dist/controller/health/gateway-vm-recovery-policy.js +85 -21
  43. package/dist/controller/health/gateway-vm-recovery-policy.js.map +1 -1
  44. package/dist/controller/health/gateway-vm-recovery-runner.d.ts +39 -0
  45. package/dist/controller/health/gateway-vm-recovery-runner.d.ts.map +1 -0
  46. package/dist/controller/health/gateway-vm-recovery-runner.js +251 -0
  47. package/dist/controller/health/gateway-vm-recovery-runner.js.map +1 -0
  48. package/dist/controller/health/health-event-store.d.ts +4 -0
  49. package/dist/controller/health/health-event-store.d.ts.map +1 -1
  50. package/dist/controller/health/health-event-store.js +19 -0
  51. package/dist/controller/health/health-event-store.js.map +1 -1
  52. package/dist/controller/http/controller-health-event-routes.d.ts +6 -0
  53. package/dist/controller/http/controller-health-event-routes.d.ts.map +1 -1
  54. package/dist/controller/http/controller-health-event-routes.js +49 -0
  55. package/dist/controller/http/controller-health-event-routes.js.map +1 -1
  56. package/dist/controller/http/controller-http-routes.d.ts.map +1 -1
  57. package/dist/controller/http/controller-http-routes.js +6 -0
  58. package/dist/controller/http/controller-http-routes.js.map +1 -1
  59. package/dist/controller/leases/lease-manager.d.ts.map +1 -1
  60. package/dist/controller/leases/lease-manager.js +37 -16
  61. package/dist/controller/leases/lease-manager.js.map +1 -1
  62. package/dist/controller/leases/tool-vm-lease-lifecycle.d.ts +44 -0
  63. package/dist/controller/leases/tool-vm-lease-lifecycle.d.ts.map +1 -0
  64. package/dist/controller/leases/tool-vm-lease-lifecycle.js +28 -0
  65. package/dist/controller/leases/tool-vm-lease-lifecycle.js.map +1 -0
  66. package/dist/controller/zone-runtimes/gateway-lifecycle-operation-record.d.ts +37 -0
  67. package/dist/controller/zone-runtimes/gateway-lifecycle-operation-record.d.ts.map +1 -0
  68. package/dist/controller/zone-runtimes/gateway-lifecycle-operation-record.js +133 -0
  69. package/dist/controller/zone-runtimes/gateway-lifecycle-operation-record.js.map +1 -0
  70. package/dist/controller/zone-runtimes/gateway-zone-state-machine.d.ts +101 -0
  71. package/dist/controller/zone-runtimes/gateway-zone-state-machine.d.ts.map +1 -0
  72. package/dist/controller/zone-runtimes/gateway-zone-state-machine.js +143 -0
  73. package/dist/controller/zone-runtimes/gateway-zone-state-machine.js.map +1 -0
  74. package/dist/controller/zone-runtimes/openclaw-zone-runtime.d.ts +8 -1
  75. package/dist/controller/zone-runtimes/openclaw-zone-runtime.d.ts.map +1 -1
  76. package/dist/controller/zone-runtimes/openclaw-zone-runtime.js +621 -65
  77. package/dist/controller/zone-runtimes/openclaw-zone-runtime.js.map +1 -1
  78. package/dist/controller/zone-runtimes/zone-runtime-errors.d.ts +7 -1
  79. package/dist/controller/zone-runtimes/zone-runtime-errors.d.ts.map +1 -1
  80. package/dist/controller/zone-runtimes/zone-runtime-errors.js +5 -1
  81. package/dist/controller/zone-runtimes/zone-runtime-errors.js.map +1 -1
  82. package/dist/controller/zone-runtimes/zone-runtime-registry.d.ts +2 -0
  83. package/dist/controller/zone-runtimes/zone-runtime-registry.d.ts.map +1 -1
  84. package/dist/controller/zone-runtimes/zone-runtime-registry.js +23 -0
  85. package/dist/controller/zone-runtimes/zone-runtime-registry.js.map +1 -1
  86. package/dist/controller/zone-runtimes/zone-runtime-types.d.ts +7 -0
  87. package/dist/controller/zone-runtimes/zone-runtime-types.d.ts.map +1 -1
  88. package/dist/gateway/gateway-ownership-evidence.d.ts +35 -0
  89. package/dist/gateway/gateway-ownership-evidence.d.ts.map +1 -0
  90. package/dist/gateway/gateway-ownership-evidence.js +10 -0
  91. package/dist/gateway/gateway-ownership-evidence.js.map +1 -0
  92. package/dist/gateway/gateway-recovery.d.ts +16 -0
  93. package/dist/gateway/gateway-recovery.d.ts.map +1 -1
  94. package/dist/gateway/gateway-recovery.js +105 -9
  95. package/dist/gateway/gateway-recovery.js.map +1 -1
  96. package/dist/gateway/gateway-zone-orchestrator.d.ts.map +1 -1
  97. package/dist/gateway/gateway-zone-orchestrator.js +50 -39
  98. package/dist/gateway/gateway-zone-orchestrator.js.map +1 -1
  99. package/dist/integration-tests/{smoke-harness.d.ts → e2e-harness.d.ts} +45 -37
  100. package/dist/integration-tests/e2e-harness.d.ts.map +1 -0
  101. package/dist/integration-tests/{smoke-harness.js → e2e-harness.js} +112 -94
  102. package/dist/integration-tests/e2e-harness.js.map +1 -0
  103. package/dist/integration-tests/e2e-workspace-build-global-setup.d.ts +16 -0
  104. package/dist/integration-tests/e2e-workspace-build-global-setup.d.ts.map +1 -0
  105. package/dist/integration-tests/e2e-workspace-build-global-setup.js +27 -0
  106. package/dist/integration-tests/e2e-workspace-build-global-setup.js.map +1 -0
  107. package/dist/integration-tests/live-agent-model-roundtrip-deployment.d.ts +11 -0
  108. package/dist/integration-tests/live-agent-model-roundtrip-deployment.d.ts.map +1 -0
  109. package/dist/integration-tests/live-agent-model-roundtrip-deployment.js +48 -0
  110. package/dist/integration-tests/live-agent-model-roundtrip-deployment.js.map +1 -0
  111. package/dist/integration-tests/live-agent-model-roundtrip-gates.d.ts +11 -0
  112. package/dist/integration-tests/live-agent-model-roundtrip-gates.d.ts.map +1 -0
  113. package/dist/integration-tests/live-agent-model-roundtrip-gates.js +21 -0
  114. package/dist/integration-tests/live-agent-model-roundtrip-gates.js.map +1 -0
  115. package/dist/integration-tests/live-vm-e2e-gates.d.ts +2 -0
  116. package/dist/integration-tests/live-vm-e2e-gates.d.ts.map +1 -0
  117. package/dist/integration-tests/live-vm-e2e-gates.js +4 -0
  118. package/dist/integration-tests/live-vm-e2e-gates.js.map +1 -0
  119. package/dist/operations/controller-status.d.ts +5 -0
  120. package/dist/operations/controller-status.d.ts.map +1 -1
  121. package/dist/operations/controller-status.js +42 -0
  122. package/dist/operations/controller-status.js.map +1 -1
  123. package/package.json +11 -11
  124. package/dist/integration-tests/live-integration-gates.d.ts +0 -2
  125. package/dist/integration-tests/live-integration-gates.d.ts.map +0 -1
  126. package/dist/integration-tests/live-integration-gates.js +0 -4
  127. package/dist/integration-tests/live-integration-gates.js.map +0 -1
  128. package/dist/integration-tests/smoke-harness.d.ts.map +0 -1
  129. 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 smokeTempRootPrefixes = [
20
- 'agent-vm-gateway-smoke-project-',
21
- 'agent-vm-smoke-harness-',
22
- 'openclaw-control-link-smoke-',
23
- 'openclaw-mcp-portal-smoke-',
24
- 'openclaw-subagent-lease-smoke-',
25
- 'openclaw-zone-git-smoke-',
26
- 'worker-loop-smoke-',
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 currentSmokeArchitecture() {
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 isOwnedSmokeTempRoot(tempRoot) {
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 smokeTempRootPrefixes.some((prefix) => basename.startsWith(prefix));
62
+ return e2eTempRootPrefixes.some((prefix) => basename.startsWith(prefix));
52
63
  }
53
- export async function removeSmokeTempRoot(tempRoot) {
54
- if (!isOwnedSmokeTempRoot(tempRoot)) {
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 canRunGondolinSmoke(options) {
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 shouldRunWorkerGatewaySmoke(options) {
81
+ export async function shouldRunWorkerGatewayE2e(options) {
71
82
  const env = options.env ?? process.env;
72
- if (env.AGENT_VM_WORKER_SMOKE !== '1' ||
73
- typeof env.OPEN_AI_TEST_KEY !== 'string' ||
74
- env.OPEN_AI_TEST_KEY.length === 0) {
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 canRunGondolinSmoke({
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 explicitSmokeCacheRoot = process.env.AGENT_VM_SMOKE_CACHE_DIR;
126
- if (!explicitSmokeCacheRoot) {
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(explicitSmokeCacheRoot, { withFileTypes: true });
131
- const smokeRunDirectories = tempRootEntries
132
- .filter((entry) => entry.isDirectory() && entry.name.includes('-smoke-'))
133
- .map((entry) => path.join(explicitSmokeCacheRoot, entry.name));
134
- for (const smokeRunDirectory of smokeRunDirectories) {
135
- if (smokeRunDirectory === currentProjectRoot) {
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 candidateImageDir = path.join(smokeRunDirectory, 'cache', 'images', 'gateway', requiredFingerprint);
139
- try {
140
- // oxlint-disable-next-line eslint/no-await-in-loop -- intentionally searches cache candidates
141
- await fs.access(path.join(candidateImageDir, 'manifest.json'));
142
- // oxlint-disable-next-line eslint/no-await-in-loop -- intentionally searches cache candidates
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 fs.access(path.join(candidateImageDir, 'vmlinuz-virt'));
148
- return candidateImageDir;
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 reusableImageDir = await findReusableGatewayImageDirectory(options.currentProjectRoot, options.gatewayBuildConfigPath);
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', 'gateway', requiredFingerprint);
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 getOpenClawSmokeZone(systemConfig) {
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 getWorkerSmokeZone(systemConfig) {
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', ['pack', '--pack-destination', packDirectory], {
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 writeManagedOpenClawSmokeDockerfileBase(options) {
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 readSmokeDockerImageTag(buildConfigPath) {
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 collectSmokeDockerImageTags(systemConfig) {
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 readSmokeDockerImageTag(imageProfile.buildConfig);
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 removeSmokeDockerImages(imageTags, options = {}) {
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 removeSmokeDockerImagesForSystemConfig(systemConfig, options = {}) {
431
- await removeSmokeDockerImages(await collectSmokeDockerImageTags(systemConfig), options);
435
+ export async function removeE2eDockerImagesForSystemConfig(systemConfig, options = {}) {
436
+ await removeE2eDockerImages(await collectE2eDockerImageTags(systemConfig), options);
432
437
  }
433
- function throwIfSmokeHarnessCleanupFailed(errors) {
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 writeManagedOpenClawSmokeDockerfileBase({
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
- ' mkdir -p /home/openclaw/.openclaw/extensions && \\',
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 writeManagedOpenClawSmokeDockerfileBase({
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
- ' mkdir -p /home/openclaw/.openclaw/extensions && \\',
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 scaffoldOpenClawSmokeProject(options) {
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(tempRoot, 'cache');
671
- const zone = getOpenClawSmokeZone(systemConfig);
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 scaffoldWorkerSmokeProject(options) {
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(tempRoot, 'cache');
723
+ systemConfig.cacheDir = path.join(resolveE2eCacheRoot(), 'worker');
713
724
  systemConfig.host.secretsProvider = {
714
725
  type: '1password',
715
- tokenSource: { type: 'env', envVar: 'OPEN_AI_TEST_KEY' },
726
+ tokenSource: { type: 'env', envVar: 'AGENT_VM_TEST_OPENAI_API_KEY' },
716
727
  };
717
- const zone = getWorkerSmokeZone(systemConfig);
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 scaffoldGatewaySmokeProject(options) {
738
+ export async function scaffoldGatewayE2eProject(options) {
728
739
  if (options.kind === 'openclaw') {
729
- return await scaffoldOpenClawSmokeProject({
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 scaffoldWorkerSmokeProject({
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 writeOpenClawMcpPortalSmokeConfigs(options) {
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 smoke tests' },
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 startSmokeControllerRuntime(options) {
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
- try {
828
- await removeSmokeDockerImagesForSystemConfig(options.startOptions.systemConfig);
829
- }
830
- catch (error) {
831
- cleanupErrors.push(error);
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 removeSmokeTempRoot(tempRoot);
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
- throwIfSmokeHarnessCleanupFailed(cleanupErrors);
858
+ throwIfE2eHarnessCleanupFailed(cleanupErrors);
843
859
  },
844
860
  };
845
861
  }
846
862
  catch (error) {
847
863
  const cleanupErrors = [error];
848
- try {
849
- await removeSmokeDockerImagesForSystemConfig(options.startOptions.systemConfig);
850
- }
851
- catch (cleanupError) {
852
- cleanupErrors.push(cleanupError);
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 removeSmokeTempRoot(tempRoot);
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
- throwIfSmokeHarnessCleanupFailed(cleanupErrors);
881
+ throwIfE2eHarnessCleanupFailed(cleanupErrors);
864
882
  throw error;
865
883
  }
866
884
  }
867
- //# sourceMappingURL=smoke-harness.js.map
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"}