@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.
Files changed (133) hide show
  1. package/dist/build/gondolin-image-builder.d.ts +1 -0
  2. package/dist/build/gondolin-image-builder.d.ts.map +1 -1
  3. package/dist/build/gondolin-image-builder.js +11 -1
  4. package/dist/build/gondolin-image-builder.js.map +1 -1
  5. package/dist/build/managed-image-dockerfile.d.ts +2 -1
  6. package/dist/build/managed-image-dockerfile.d.ts.map +1 -1
  7. package/dist/build/managed-image-dockerfile.js +51 -27
  8. package/dist/build/managed-image-dockerfile.js.map +1 -1
  9. package/dist/cli/commands/controller-definition.d.ts +42 -42
  10. package/dist/cli/commands/create-app.d.ts +60 -60
  11. package/dist/cli/manual-templates.d.ts.map +1 -1
  12. package/dist/cli/manual-templates.js +14 -1
  13. package/dist/cli/manual-templates.js.map +1 -1
  14. package/dist/config/system-config.d.ts +15 -0
  15. package/dist/config/system-config.d.ts.map +1 -1
  16. package/dist/config/system-config.js +74 -0
  17. package/dist/config/system-config.js.map +1 -1
  18. package/dist/controller/controller-runtime-operations.d.ts +1 -0
  19. package/dist/controller/controller-runtime-operations.d.ts.map +1 -1
  20. package/dist/controller/controller-runtime-operations.js +2 -0
  21. package/dist/controller/controller-runtime-operations.js.map +1 -1
  22. package/dist/controller/controller-runtime-types.d.ts +5 -0
  23. package/dist/controller/controller-runtime-types.d.ts.map +1 -1
  24. package/dist/controller/controller-runtime.d.ts +1 -0
  25. package/dist/controller/controller-runtime.d.ts.map +1 -1
  26. package/dist/controller/controller-runtime.js +220 -3
  27. package/dist/controller/controller-runtime.js.map +1 -1
  28. package/dist/controller/health/channel-provider-recovery-observation.d.ts +23 -0
  29. package/dist/controller/health/channel-provider-recovery-observation.d.ts.map +1 -0
  30. package/dist/controller/health/channel-provider-recovery-observation.js +69 -0
  31. package/dist/controller/health/channel-provider-recovery-observation.js.map +1 -0
  32. package/dist/controller/health/durable-health-event-log.d.ts +24 -0
  33. package/dist/controller/health/durable-health-event-log.d.ts.map +1 -0
  34. package/dist/controller/health/durable-health-event-log.js +89 -0
  35. package/dist/controller/health/durable-health-event-log.js.map +1 -0
  36. package/dist/controller/health/gateway-recovery-actions.d.ts +27 -0
  37. package/dist/controller/health/gateway-recovery-actions.d.ts.map +1 -0
  38. package/dist/controller/health/gateway-recovery-actions.js +71 -0
  39. package/dist/controller/health/gateway-recovery-actions.js.map +1 -0
  40. package/dist/controller/health/gateway-service-health-monitor.d.ts +71 -3
  41. package/dist/controller/health/gateway-service-health-monitor.d.ts.map +1 -1
  42. package/dist/controller/health/gateway-service-health-monitor.js +383 -10
  43. package/dist/controller/health/gateway-service-health-monitor.js.map +1 -1
  44. package/dist/controller/health/gateway-vm-recovery-policy.d.ts +68 -0
  45. package/dist/controller/health/gateway-vm-recovery-policy.d.ts.map +1 -0
  46. package/dist/controller/health/gateway-vm-recovery-policy.js +199 -0
  47. package/dist/controller/health/gateway-vm-recovery-policy.js.map +1 -0
  48. package/dist/controller/health/gateway-vm-recovery-runner.d.ts +39 -0
  49. package/dist/controller/health/gateway-vm-recovery-runner.d.ts.map +1 -0
  50. package/dist/controller/health/gateway-vm-recovery-runner.js +251 -0
  51. package/dist/controller/health/gateway-vm-recovery-runner.js.map +1 -0
  52. package/dist/controller/health/health-event-store.d.ts +4 -0
  53. package/dist/controller/health/health-event-store.d.ts.map +1 -1
  54. package/dist/controller/health/health-event-store.js +19 -0
  55. package/dist/controller/health/health-event-store.js.map +1 -1
  56. package/dist/controller/http/controller-health-event-routes.d.ts +6 -0
  57. package/dist/controller/http/controller-health-event-routes.d.ts.map +1 -1
  58. package/dist/controller/http/controller-health-event-routes.js +49 -0
  59. package/dist/controller/http/controller-health-event-routes.js.map +1 -1
  60. package/dist/controller/http/controller-http-routes.d.ts.map +1 -1
  61. package/dist/controller/http/controller-http-routes.js +6 -0
  62. package/dist/controller/http/controller-http-routes.js.map +1 -1
  63. package/dist/controller/leases/lease-manager.d.ts.map +1 -1
  64. package/dist/controller/leases/lease-manager.js +37 -16
  65. package/dist/controller/leases/lease-manager.js.map +1 -1
  66. package/dist/controller/leases/tool-vm-lease-lifecycle.d.ts +44 -0
  67. package/dist/controller/leases/tool-vm-lease-lifecycle.d.ts.map +1 -0
  68. package/dist/controller/leases/tool-vm-lease-lifecycle.js +28 -0
  69. package/dist/controller/leases/tool-vm-lease-lifecycle.js.map +1 -0
  70. package/dist/controller/zone-runtimes/gateway-lifecycle-operation-record.d.ts +37 -0
  71. package/dist/controller/zone-runtimes/gateway-lifecycle-operation-record.d.ts.map +1 -0
  72. package/dist/controller/zone-runtimes/gateway-lifecycle-operation-record.js +133 -0
  73. package/dist/controller/zone-runtimes/gateway-lifecycle-operation-record.js.map +1 -0
  74. package/dist/controller/zone-runtimes/gateway-zone-state-machine.d.ts +101 -0
  75. package/dist/controller/zone-runtimes/gateway-zone-state-machine.d.ts.map +1 -0
  76. package/dist/controller/zone-runtimes/gateway-zone-state-machine.js +143 -0
  77. package/dist/controller/zone-runtimes/gateway-zone-state-machine.js.map +1 -0
  78. package/dist/controller/zone-runtimes/openclaw-zone-runtime.d.ts +16 -1
  79. package/dist/controller/zone-runtimes/openclaw-zone-runtime.d.ts.map +1 -1
  80. package/dist/controller/zone-runtimes/openclaw-zone-runtime.js +700 -40
  81. package/dist/controller/zone-runtimes/openclaw-zone-runtime.js.map +1 -1
  82. package/dist/controller/zone-runtimes/zone-runtime-errors.d.ts +7 -1
  83. package/dist/controller/zone-runtimes/zone-runtime-errors.d.ts.map +1 -1
  84. package/dist/controller/zone-runtimes/zone-runtime-errors.js +5 -1
  85. package/dist/controller/zone-runtimes/zone-runtime-errors.js.map +1 -1
  86. package/dist/controller/zone-runtimes/zone-runtime-registry.d.ts +2 -0
  87. package/dist/controller/zone-runtimes/zone-runtime-registry.d.ts.map +1 -1
  88. package/dist/controller/zone-runtimes/zone-runtime-registry.js +23 -0
  89. package/dist/controller/zone-runtimes/zone-runtime-registry.js.map +1 -1
  90. package/dist/controller/zone-runtimes/zone-runtime-types.d.ts +14 -1
  91. package/dist/controller/zone-runtimes/zone-runtime-types.d.ts.map +1 -1
  92. package/dist/gateway/gateway-ownership-evidence.d.ts +35 -0
  93. package/dist/gateway/gateway-ownership-evidence.d.ts.map +1 -0
  94. package/dist/gateway/gateway-ownership-evidence.js +10 -0
  95. package/dist/gateway/gateway-ownership-evidence.js.map +1 -0
  96. package/dist/gateway/gateway-recovery.d.ts +16 -0
  97. package/dist/gateway/gateway-recovery.d.ts.map +1 -1
  98. package/dist/gateway/gateway-recovery.js +105 -9
  99. package/dist/gateway/gateway-recovery.js.map +1 -1
  100. package/dist/gateway/gateway-zone-orchestrator.d.ts.map +1 -1
  101. package/dist/gateway/gateway-zone-orchestrator.js +50 -39
  102. package/dist/gateway/gateway-zone-orchestrator.js.map +1 -1
  103. package/dist/integration-tests/{smoke-harness.d.ts → e2e-harness.d.ts} +45 -37
  104. package/dist/integration-tests/e2e-harness.d.ts.map +1 -0
  105. package/dist/integration-tests/{smoke-harness.js → e2e-harness.js} +134 -108
  106. package/dist/integration-tests/e2e-harness.js.map +1 -0
  107. package/dist/integration-tests/e2e-workspace-build-global-setup.d.ts +16 -0
  108. package/dist/integration-tests/e2e-workspace-build-global-setup.d.ts.map +1 -0
  109. package/dist/integration-tests/e2e-workspace-build-global-setup.js +27 -0
  110. package/dist/integration-tests/e2e-workspace-build-global-setup.js.map +1 -0
  111. package/dist/integration-tests/live-agent-model-roundtrip-deployment.d.ts +11 -0
  112. package/dist/integration-tests/live-agent-model-roundtrip-deployment.d.ts.map +1 -0
  113. package/dist/integration-tests/live-agent-model-roundtrip-deployment.js +48 -0
  114. package/dist/integration-tests/live-agent-model-roundtrip-deployment.js.map +1 -0
  115. package/dist/integration-tests/live-agent-model-roundtrip-gates.d.ts +11 -0
  116. package/dist/integration-tests/live-agent-model-roundtrip-gates.d.ts.map +1 -0
  117. package/dist/integration-tests/live-agent-model-roundtrip-gates.js +21 -0
  118. package/dist/integration-tests/live-agent-model-roundtrip-gates.js.map +1 -0
  119. package/dist/integration-tests/live-vm-e2e-gates.d.ts +2 -0
  120. package/dist/integration-tests/live-vm-e2e-gates.d.ts.map +1 -0
  121. package/dist/integration-tests/live-vm-e2e-gates.js +4 -0
  122. package/dist/integration-tests/live-vm-e2e-gates.js.map +1 -0
  123. package/dist/operations/controller-status.d.ts +5 -0
  124. package/dist/operations/controller-status.d.ts.map +1 -1
  125. package/dist/operations/controller-status.js +42 -0
  126. package/dist/operations/controller-status.js.map +1 -1
  127. package/package.json +11 -11
  128. package/dist/integration-tests/live-integration-gates.d.ts +0 -2
  129. package/dist/integration-tests/live-integration-gates.d.ts.map +0 -1
  130. package/dist/integration-tests/live-integration-gates.js +0 -4
  131. package/dist/integration-tests/live-integration-gates.js.map +0 -1
  132. package/dist/integration-tests/smoke-harness.d.ts.map +0 -1
  133. 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 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,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 readSmokeDockerImageTag(buildConfigPath) {
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 collectSmokeDockerImageTags(systemConfig) {
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 readSmokeDockerImageTag(imageProfile.buildConfig);
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 removeSmokeDockerImages(imageTags, options = {}) {
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 removeSmokeDockerImagesForSystemConfig(systemConfig, options = {}) {
419
- await removeSmokeDockerImages(await collectSmokeDockerImageTags(systemConfig), options);
435
+ export async function removeE2eDockerImagesForSystemConfig(systemConfig, options = {}) {
436
+ await removeE2eDockerImages(await collectE2eDockerImageTags(systemConfig), options);
420
437
  }
421
- function throwIfSmokeHarnessCleanupFailed(errors) {
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 fs.rm(dockerContextDirectory, { force: true, recursive: true });
525
- await fs.mkdir(dockerContextDirectory, { recursive: true });
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.writeFile(dockerfilePath, [
538
- `FROM ${baseImage.repository}:${baseImage.tag}`,
554
+ await fs.appendFile(dockerfilePath, [
539
555
  '',
540
- '# Generated by the OpenClaw smoke harness from local package tarballs.',
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
- ' 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" && \\',
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 fs.rm(dockerContextDirectory, { force: true, recursive: true });
614
- await fs.mkdir(dockerContextDirectory, { recursive: true });
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.writeFile(dockerfilePath, [
620
- `FROM ${baseImage.repository}:${baseImage.tag}`,
637
+ await fs.appendFile(dockerfilePath, [
621
638
  '',
622
- '# Generated by the OpenClaw smoke harness from local plugin package tarballs.',
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
- ' 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" && \\',
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 scaffoldOpenClawSmokeProject(options) {
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(tempRoot, 'cache');
663
- const zone = getOpenClawSmokeZone(systemConfig);
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 scaffoldWorkerSmokeProject(options) {
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(tempRoot, 'cache');
723
+ systemConfig.cacheDir = path.join(resolveE2eCacheRoot(), 'worker');
705
724
  systemConfig.host.secretsProvider = {
706
725
  type: '1password',
707
- tokenSource: { type: 'env', envVar: 'OPEN_AI_TEST_KEY' },
726
+ tokenSource: { type: 'env', envVar: 'AGENT_VM_TEST_OPENAI_API_KEY' },
708
727
  };
709
- const zone = getWorkerSmokeZone(systemConfig);
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 scaffoldGatewaySmokeProject(options) {
738
+ export async function scaffoldGatewayE2eProject(options) {
720
739
  if (options.kind === 'openclaw') {
721
- return await scaffoldOpenClawSmokeProject({
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 scaffoldWorkerSmokeProject({
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 writeOpenClawMcpPortalSmokeConfigs(options) {
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 smoke tests' },
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 startSmokeControllerRuntime(options) {
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
- try {
820
- await removeSmokeDockerImagesForSystemConfig(options.startOptions.systemConfig);
821
- }
822
- catch (error) {
823
- 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
+ }
824
848
  }
825
849
  try {
826
- await removeSmokeTempRoot(tempRoot);
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
- throwIfSmokeHarnessCleanupFailed(cleanupErrors);
858
+ throwIfE2eHarnessCleanupFailed(cleanupErrors);
835
859
  },
836
860
  };
837
861
  }
838
862
  catch (error) {
839
863
  const cleanupErrors = [error];
840
- try {
841
- await removeSmokeDockerImagesForSystemConfig(options.startOptions.systemConfig);
842
- }
843
- catch (cleanupError) {
844
- 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
+ }
845
871
  }
846
872
  try {
847
- await removeSmokeTempRoot(tempRoot);
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
- throwIfSmokeHarnessCleanupFailed(cleanupErrors);
881
+ throwIfE2eHarnessCleanupFailed(cleanupErrors);
856
882
  throw error;
857
883
  }
858
884
  }
859
- //# 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":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,mBAAmB,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AAGnG,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,EACN,yBAAyB,EACzB,0BAA0B,GAC1B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAA0B,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAA2B,MAAM,4BAA4B,CAAC;AAMvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AA2B3E,MAAM,sCAAsC,GAAG,gDAAgD,CAAC;AAChG,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC1C,MAAM,2BAA2B,GAAG,YAAY,CAAC;AACjD,MAAM,mBAAmB,GAAG;IAC3B,+BAA+B;IAC/B,uBAAuB;IACvB,4BAA4B;IAC5B,0BAA0B;IAC1B,8BAA8B;IAC9B,wBAAwB;IACxB,kBAAkB;CACT,CAAC;AAEX,SAAS,mBAAmB;IAC3B,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAC/D,IAAI,mBAAmB,KAAK,SAAS,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC;AACrD,CAAC;AAuED,MAAM,UAAU,4BAA4B,CAAC,UAAyC,EAAE;IACvF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,OAAO,OAAO,CAAC,aAAa,KAAK,IAAI,IAAI,GAAG,CAAC,yBAAyB,KAAK,GAAG,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAe;IACzC,IAAI,CAAC;QACJ,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,cAAc,OAAO,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrF,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAED,MAAM,UAAU,sBAAsB;IACrC,OAAO,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,YAA+B;IACzE,OAAO,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,oBAAoB,CAAC;AAClF,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAgB;IAC3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IACzD,IACC,gBAAgB,KAAK,sBAAsB;QAC3C,CAAC,gBAAgB,CAAC,UAAU,CAAC,GAAG,sBAAsB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EACnE,CAAC;QACF,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACjD,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IACvD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,OAAO;IACR,CAAC;IACD,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAuC;IAC9E,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,UAAU,CAAC;IAC1D,IACC,CAAC,aAAa,CAAC,0BAA0B,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAChE,CAAC,aAAa,CAAC,QAAQ,CAAC,EACvB,CAAC;QACF,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,kBAAkB,GAAG,MAAM,CAChC,OAAO,CAAC,yBAAyB,IAAI,gCAAgC,CACrE,EAAE,CAAC;IACJ,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,IAAI,qBAAqB,CAAC,EAAE,CAAC;IACzF,OAAO,CACN,mBAAmB,KAAK,SAAS;QACjC,mBAAmB,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,CAC5D,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,OAM/C;IACA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,IACC,GAAG,CAAC,mBAAmB,KAAK,GAAG;QAC/B,OAAO,GAAG,CAAC,4BAA4B,KAAK,QAAQ;QACpD,GAAG,CAAC,4BAA4B,CAAC,MAAM,KAAK,CAAC,EAC5C,CAAC;QACF,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,MAAM,iBAAiB,CAAC;QAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,GAAG,CAAC,OAAO,CAAC,yBAAyB;YACpC,CAAC,CAAC,EAAE,yBAAyB,EAAE,OAAO,CAAC,yBAAyB,EAAE;YAClE,CAAC,CAAC,EAAE,CAAC;QACN,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtF,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACtC,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE;YAClC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC7C,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC;gBAChF,OAAO;YACR,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACtB,IAAI,KAAK,EAAE,CAAC;oBACX,MAAM,CAAC,KAAK,CAAC,CAAC;oBACd,OAAO;gBACR,CAAC;gBACD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,cAAsB;IAClE,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QAClD,sFAAsF;QACtF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oBAAoB,cAAc,oBAAoB,CAAC,CAAC,KAAK,CACzF,GAAG,EAAE,CAAC,IAAI,CACV,CAAC;QACF,IAAI,QAAQ,EAAE,EAAE,EAAE,CAAC;YAClB,OAAO;QACR,CAAC;QACD,sFAAsF;QACtF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACtD,kBAA0B,EAC1B,sBAA8B,EAC9B,gBAAgB,GAAG,QAAQ;IAE3B,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAChE,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACb,CAAC;IACD,MAAM,mBAAmB,GAAG,MAAM,gCAAgC,CAAC,sBAAsB,CAAC,CAAC;IAC3F,MAAM,eAAe,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACxF,MAAM,iBAAiB,GAAG,eAAe;SACvC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;SACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9D,KAAK,MAAM,eAAe,IAAI,iBAAiB,EAAE,CAAC;QACjD,IAAI,eAAe,KAAK,kBAAkB,EAAE,CAAC;YAC5C,SAAS;QACV,CAAC;QACD,MAAM,yBAAyB,GAAG;YACjC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC;YACnF,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC;SAC5F,CAAC;QACF,KAAK,MAAM,iBAAiB,IAAI,yBAAyB,EAAE,CAAC;YAC3D,8FAA8F;YAC9F,IAAI,MAAM,mBAAmB,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAClD,OAAO,iBAAiB,CAAC;YAC1B,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gCAAgC,CAAC,OAKtD;IACA,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,QAAQ,CAAC;IAC9D,MAAM,gBAAgB,GAAG,MAAM,iCAAiC,CAC/D,OAAO,CAAC,kBAAkB,EAC1B,OAAO,CAAC,sBAAsB,EAC9B,gBAAgB,CAChB,CAAC;IACF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvB,OAAO;IACR,CAAC;IAED,MAAM,mBAAmB,GAAG,MAAM,gCAAgC,CACjE,OAAO,CAAC,sBAAsB,CAC9B,CAAC;IACF,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAC/B,OAAO,CAAC,cAAc,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,CACnB,CAAC;IACF,IAAI,cAAc,KAAK,gBAAgB,EAAE,CAAC;QACzC,OAAO;IACR,CAAC;IAED,MAAM,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,MAAM,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAA4B;IACrE,MAAM,OAAO,GAAG,KAAK,EAAE,GAAc,EAAmB,EAAE;QACzD,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,GAAG,CAAC,KAAK,CAAC;QAClB,CAAC;QACD,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC;QAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,iBAAiB,SAAS,sBAAsB,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC,CAAC;IACF,OAAO;QACN,OAAO;QACP,UAAU,EAAE,KAAK,EAAE,IAA+B,EAAE,EAAE;YACrD,MAAM,eAAe,GAA2B,EAAE,CAAC;YACnD,KAAK,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtD,wFAAwF;gBACxF,eAAe,CAAC,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;YAClD,CAAC;YACD,OAAO,eAAe,CAAC;QACxB,CAAC;KACD,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,OAA4B;IAC1D,MAAM,cAAc,GAAG,IAAI,GAAG,EAA8B,CAAC;IAC7D,KAAK,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACjE,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;IACvC,CAAC;IACD,OAAO,GAAG,EAAE;QACX,KAAK,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,IAAI,cAAc,EAAE,CAAC;YAC1D,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC;YACzC,CAAC;QACF,CAAC;IACF,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,YAAgC;IAClE,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,gBAAgB,CAAC,YAAgC;IACzD,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,yBAAyB,CAAC,SAAiB;IACnD,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED,KAAK,UAAU,4BAA4B,CAAC,KAA6B;IACxE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;IAC1E,MAAM,eAAe,GAAG,iBAAiB,CAAC,MAAM,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,eAAe,EAAE,KAAK,CAAC;IACrC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACvC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,EAAuB,EAAE,CAAC,OAAO,SAAS,KAAK,QAAQ,CAAC;QACjF,CAAC,CAAC,SAAS,CAAC;IACb,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO;IACR,CAAC;IACD,MAAM,OAAO,CAAC,GAAG,CAChB,WAAW,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;QACrE,IAAI,CAAC;YACJ,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpD,MAAM,IAAI,KAAK,CACd,GAAG,KAAK,CAAC,WAAW,2BAA2B,SAAS,0BAA0B,EAClF,EAAE,KAAK,EAAE,KAAK,EAAE,CAChB,CAAC;YACH,CAAC;YACD,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC,CAAC,CACF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,aAAqB;IAChE,OAAO,CAAC,MAAM,EAAE,oBAAoB,EAAE,aAAa,EAAE,8BAA8B,CAAC,CAAC;AACtF,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,KAA6B;IACnE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;IAC1E,MAAM,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACjC,MAAM,4BAA4B,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,KAAK,CAAC,WAAW,QAAQ,CAAC,CAAC,CAAC;IAC7F,IAAI,CAAC;QACJ,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,2BAA2B,CAAC,aAAa,CAAC,CAAC,EAAE;YACrE,GAAG,EAAE,KAAK,CAAC,gBAAgB;YAC3B,KAAK,EAAE,MAAM;SACb,CAAC,CAAC;QACH,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC5E,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CACzB,CAAC;QACF,MAAM,CAAC,iBAAiB,CAAC,GAAG,cAAc,CAAC;QAC3C,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,CAAC,WAAW,2BAA2B,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACd,0BAA0B,KAAK,CAAC,WAAW,kCAAkC,CAC7E,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,KAAK,CAAC;IACb,CAAC;AACF,CAAC;AAED,KAAK,UAAU,oCAAoC,CAClD,YAA6C;IAE7C,MAAM,OAAO,CAAC,GAAG,CAChB,KAAK,CAAC,IAAI,CACT,IAAI,GAAG,CACN,YAAY;SACV,MAAM,CAAC,CAAC,WAAW,EAAyB,EAAE,CAAC,WAAW,KAAK,SAAS,CAAC;SACzE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CACjD,CACD,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE;QAC7B,MAAM,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC,CACF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,uCAAuC,CAAC,OAGtD;IACA,MAAM,OAAO,CAAC,GAAG,CAChB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACtC,MAAM,EAAE,CAAC,QAAQ,CAChB,OAAO,CAAC,UAAU,EAClB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,OAAO,CAAC,WAAW,CAAC,CAC9D,CAAC;IACH,CAAC,CAAC,CACF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sCAAsC,CAAC,OAMrD;IACA,MAAM,mBAAmB,GAAG,MAAM,0BAA0B,EAAE,CAAC;IAC/D,MAAM,SAAS,GAAG,mBAAmB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC5D,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAClF,MAAM,OAAO,CAAC,GAAG,CAChB,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC,EAAiB,EAAE;QACxE,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CACvC,OAAO,CAAC,WAAW,EACnB,WAAW,EACX,UAAU,EACV,GAAG,WAAW,mBAAmB,CACjC,CAAC;QACF,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;QACvE,MAAM,+BAA+B,GAAG,4BAA4B,CAAC;QACrE,MAAM,gCAAgC,GAAG,6BAA6B,CAAC;QACvE,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;QAChD,MAAM,EAAE,CAAC,EAAE,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtE,MAAM,EAAE,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,uCAAuC,CAAC;YAC7C,sBAAsB;YACtB,QAAQ,EAAE;gBACT;oBACC,WAAW,EAAE,+BAA+B;oBAC5C,UAAU,EAAE,OAAO,CAAC,+BAA+B;iBACnD;gBACD;oBACC,WAAW,EAAE,gCAAgC;oBAC7C,UAAU,EAAE,OAAO,CAAC,gCAAgC;iBACpD;gBACD,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,OAAO,CAAC,yBAAyB,EAAE;aAChF;SACD,CAAC,CAAC;QACH,MAAM,EAAE,CAAC,SAAS,CACjB,cAAc,EACd;YACC,QAAQ,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,GAAG,EAAE;YAC/C,EAAE;YACF,8EAA8E;YAC9E,iEAAiE;YACjE,mEAAmE;YACnE,qDAAqD;YACrD,iDAAiD;YACjD,wLAAwL;YACxL,sGAAsG;YACtG,EAAE;SACF,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,MAAM,CACN,CAAC;QACF,aAAa,CAAC,UAAU,GAAG,cAAc,CAAC;QAC1C,OAAO,aAAa,CAAC,MAAM,CAAC;IAC7B,CAAC,CAAC,CACF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,OAIpD;IACA,MAAM,+BAA+B,GAAG,MAAM,uBAAuB,CAAC;QACrE,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,kBAAkB,CAAC;QAC7E,WAAW,EAAE,kBAAkB;KAC/B,CAAC,CAAC;IACH,MAAM,gCAAgC,GAAG,MAAM,uBAAuB,CAAC;QACtE,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,mBAAmB,CAAC;QAC9E,WAAW,EAAE,mBAAmB;KAChC,CAAC,CAAC;IACH,MAAM,yBAAyB,GAAG,MAAM,uBAAuB,CAAC;QAC/D,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC;QACvE,WAAW,EAAE,YAAY;KACzB,CAAC,CAAC;IACH,IAAI,CAAC;QACJ,MAAM,sCAAsC,CAAC;YAC5C,+BAA+B;YAC/B,yBAAyB;YACzB,gCAAgC;YAChC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,YAAY,EAAE,OAAO,CAAC,YAAY;SAClC,CAAC,CAAC;IACJ,CAAC;YAAS,CAAC;QACV,MAAM,oCAAoC,CAAC;YAC1C,+BAA+B;YAC/B,gCAAgC;YAChC,yBAAyB;SACzB,CAAC,CAAC;IACJ,CAAC;AACF,CAAC;AAED,SAAS,8BAA8B,CAAC,WAAmB;IAC1D,OAAO,GAAG,WAAW,YAAY,CAAC;AACnC,CAAC;AAED,KAAK,UAAU,qCAAqC,CAAC,OAIpD;IACA,MAAM,mBAAmB,GAAG,MAAM,0BAA0B,EAAE,CAAC;IAC/D,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAAC;QAC9C,IAAI,EAAE,kBAAkB;QACxB,iBAAiB,EAAE,SAAS;QAC5B,eAAe,EAAE,OAAO,CAAC,WAAW;QACpC,mBAAmB;QACnB,iCAAiC,EAAE,OAAO,CAAC,iCAAiC;QAC5E,eAAe,EAAE,OAAO,CAAC,sBAAsB;QAC/C,4BAA4B,EAAE,CAAC,mBAAmB,CAAC;KACnD,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,cAAc,CAAC;AAC9B,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACxC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAuB;IACtD,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,eAAuB;IAC3D,IAAI,WAAgD,CAAC;IACrD,IAAI,CAAC;QACJ,WAAW,GAAG,iBAAiB,CAAC,MAAM,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC;IAC5E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC;QACb,CAAC;QACD,MAAM,KAAK,CAAC;IACb,CAAC;IACD,MAAM,SAAS,GAAG,iBAAiB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,SAAS,EAAE,KAAK,CAAC;IAClC,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC9C,YAAgC;IAEhC,MAAM,aAAa,GAAG;QACrB,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC;QACrD,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC;KACpD,CAAC;IACF,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QAC1C,4GAA4G;QAC5G,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACvE,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACvB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,SAA4B,EAC5B,UAAwC,EAAE;IAE1C,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,IAAI,gBAAgB,CAAC;IACnE,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC;YACJ,0GAA0G;YAC1G,MAAM,aAAa,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACR,SAAS;QACV,CAAC;QACD,0GAA0G;QAC1G,MAAM,aAAa,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC3D,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oCAAoC,CACzD,YAAgC,EAChC,UAAwC,EAAE;IAE1C,MAAM,qBAAqB,CAAC,MAAM,yBAAyB,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,8BAA8B,CAAC,MAA0B;IACjE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;IACR,CAAC;IACD,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;IAC5B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACrD,MAAM,UAAU,CAAC;IAClB,CAAC;IACD,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,+BAA+B,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc,EAAE,YAAoB;IAC/D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,UAAkB;IACtE,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;IACvE,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,sBAAsB,UAAU,qBAAqB,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpD,IAAI,UAAU,EAAE,CAAC;QAChB,UAAU,CAAC,KAAK,GAAG,kBAAkB,CAAC,UAAU,CAAC,KAAK,EAAE,sCAAsC,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,aAAa,GAAG,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1D,IAAI,aAAa,EAAE,CAAC;QACnB,OAAO,aAAa,CAAC,2BAA2B,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oCAAoC,CAAC,OAK1D;IACA,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACxF,IAAI,CAAC,cAAc,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,CAAC,WAAW,sBAAsB,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CACvC,OAAO,CAAC,WAAW,EACnB,WAAW,EACX,UAAU,EACV,GAAG,OAAO,CAAC,WAAW,iBAAiB,CACvC,CAAC;IACF,MAAM,+BAA+B,GAAG,MAAM,uBAAuB,CAAC;QACrE,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,kBAAkB,CAAC;QAC7E,WAAW,EAAE,kBAAkB;KAC/B,CAAC,CAAC;IACH,MAAM,gCAAgC,GAAG,MAAM,uBAAuB,CAAC;QACtE,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,mBAAmB,CAAC;QAC9E,WAAW,EAAE,mBAAmB;KAChC,CAAC,CAAC;IACH,MAAM,+BAA+B,GAAG,MAAM,uBAAuB,CAAC;QACrE,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,kBAAkB,CAAC;QAC7E,WAAW,EAAE,kBAAkB;KAC/B,CAAC,CAAC;IACH,MAAM,gCAAgC,GAAG,MAAM,uBAAuB,CAAC;QACtE,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,mBAAmB,CAAC;QAC9E,WAAW,EAAE,mBAAmB;KAChC,CAAC,CAAC;IACH,MAAM,yBAAyB,GAAG,MAAM,uBAAuB,CAAC;QAC/D,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC;QACvE,WAAW,EAAE,YAAY;KACzB,CAAC,CAAC;IACH,MAAM,qCAAqC,GAAG,MAAM,uBAAuB,CAAC;QAC3E,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,0BAA0B,CAAC;QACrF,WAAW,EAAE,0BAA0B;KACvC,CAAC,CAAC;IACH,MAAM,uCAAuC,GAAG,MAAM,uBAAuB,CAAC;QAC7E,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,4BAA4B,CAAC;QACvF,WAAW,EAAE,4BAA4B;KACzC,CAAC,CAAC;IACH,IAAI,CAAC;QACJ,MAAM,oBAAoB,GAAG;YAC5B;gBACC,WAAW,EAAE,8BAA8B,CAAC,kBAAkB,CAAC;gBAC/D,UAAU,EAAE,+BAA+B;aAC3C;YACD;gBACC,WAAW,EAAE,8BAA8B,CAAC,mBAAmB,CAAC;gBAChE,UAAU,EAAE,gCAAgC;aAC5C;YACD;gBACC,WAAW,EAAE,8BAA8B,CAAC,kBAAkB,CAAC;gBAC/D,UAAU,EAAE,+BAA+B;aAC3C;YACD;gBACC,WAAW,EAAE,8BAA8B,CAAC,mBAAmB,CAAC;gBAChE,UAAU,EAAE,gCAAgC;aAC5C;YACD;gBACC,WAAW,EAAE,8BAA8B,CAAC,YAAY,CAAC;gBACzD,UAAU,EAAE,yBAAyB;aACrC;YACD;gBACC,WAAW,EAAE,8BAA8B,CAAC,0BAA0B,CAAC;gBACvE,UAAU,EAAE,qCAAqC;aACjD;YACD;gBACC,WAAW,EAAE,8BAA8B,CAAC,4BAA4B,CAAC;gBACzE,UAAU,EAAE,uCAAuC;aACnD;SAC8C,CAAC;QAEjD,MAAM,cAAc,GAAG,MAAM,qCAAqC,CAAC;YAClE,sBAAsB;YACtB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,iCAAiC,EAAE,eAAe;SAClD,CAAC,CAAC;QACH,MAAM,uCAAuC,CAAC;YAC7C,sBAAsB;YACtB,QAAQ,EAAE,oBAAoB;SAC9B,CAAC,CAAC;QACH,MAAM,sCAAsC,CAAC;YAC5C,+BAA+B;YAC/B,yBAAyB;YACzB,gCAAgC;YAChC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,YAAY,EAAE,OAAO,CAAC,YAAY;SAClC,CAAC,CAAC;QAEH,MAAM,EAAE,CAAC,UAAU,CAClB,cAAc,EACd;YACC,EAAE;YACF,kEAAkE;YAClE,GAAG,oBAAoB,CAAC,GAAG,CAC1B,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,OAAO,CAAC,WAAW,SAAS,OAAO,CAAC,WAAW,EAAE,CACtE;YACD,iDAAiD;YACjD,wFAAwF;gBACvF,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC9E,QAAQ;YACT,YAAY;gBACX,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/E,oEAAoE;YACpE,iDAAiD;YACjD,+EAA+E;YAC/E,8EAA8E;YAC9E,wHAAwH;YACxH,sHAAsH;YACtH,EAAE;SACF,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,MAAM,CACN,CAAC;QAEF,cAAc,CAAC,UAAU,GAAG,cAAc,CAAC;QAC3C,OAAO,cAAc,CAAC,MAAM,CAAC;IAC9B,CAAC;YAAS,CAAC;QACV,MAAM,oCAAoC,CAAC;YAC1C,+BAA+B;YAC/B,gCAAgC;YAChC,+BAA+B;YAC/B,gCAAgC;YAChC,yBAAyB;YACzB,qCAAqC;YACrC,uCAAuC;SACvC,CAAC,CAAC;IACJ,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kCAAkC,CAAC,OAKxD;IACA,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACxF,IAAI,CAAC,cAAc,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,CAAC,WAAW,sBAAsB,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CACvC,OAAO,CAAC,WAAW,EACnB,WAAW,EACX,UAAU,EACV,GAAG,OAAO,CAAC,WAAW,eAAe,CACrC,CAAC;IACF,MAAM,gCAAgC,GAAG,MAAM,uBAAuB,CAAC;QACtE,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,mBAAmB,CAAC;QAC9E,WAAW,EAAE,mBAAmB;KAChC,CAAC,CAAC;IACH,MAAM,+BAA+B,GAAG,MAAM,uBAAuB,CAAC;QACrE,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,kBAAkB,CAAC;QAC7E,WAAW,EAAE,kBAAkB;KAC/B,CAAC,CAAC;IACH,MAAM,gCAAgC,GAAG,MAAM,uBAAuB,CAAC;QACtE,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,mBAAmB,CAAC;QAC9E,WAAW,EAAE,mBAAmB;KAChC,CAAC,CAAC;IACH,MAAM,qCAAqC,GAAG,MAAM,uBAAuB,CAAC;QAC3E,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,0BAA0B,CAAC;QACrF,WAAW,EAAE,0BAA0B;KACvC,CAAC,CAAC;IACH,IAAI,CAAC;QACJ,MAAM,oBAAoB,GAAG;YAC5B;gBACC,WAAW,EAAE,8BAA8B,CAAC,mBAAmB,CAAC;gBAChE,UAAU,EAAE,gCAAgC;aAC5C;YACD;gBACC,WAAW,EAAE,8BAA8B,CAAC,kBAAkB,CAAC;gBAC/D,UAAU,EAAE,+BAA+B;aAC3C;YACD;gBACC,WAAW,EAAE,8BAA8B,CAAC,mBAAmB,CAAC;gBAChE,UAAU,EAAE,gCAAgC;aAC5C;YACD;gBACC,WAAW,EAAE,8BAA8B,CAAC,0BAA0B,CAAC;gBACvE,UAAU,EAAE,qCAAqC;aACjD;SAC8C,CAAC;QAEjD,MAAM,cAAc,GAAG,MAAM,qCAAqC,CAAC;YAClE,sBAAsB;YACtB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,iCAAiC,EAAE,eAAe;SAClD,CAAC,CAAC;QACH,MAAM,uCAAuC,CAAC;YAC7C,sBAAsB;YACtB,QAAQ,EAAE,oBAAoB;SAC9B,CAAC,CAAC;QAEH,MAAM,EAAE,CAAC,UAAU,CAClB,cAAc,EACd;YACC,EAAE;YACF,iEAAiE;YACjE,GAAG,oBAAoB,CAAC,GAAG,CAC1B,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,OAAO,CAAC,WAAW,SAAS,OAAO,CAAC,WAAW,EAAE,CACtE;YACD,iDAAiD;YACjD,wFAAwF;gBACvF,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC9E,QAAQ;YACT,YAAY;gBACX,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/E,oEAAoE;YACpE,iDAAiD;YACjD,+EAA+E;YAC/E,8EAA8E;YAC9E,kHAAkH;YAClH,EAAE;SACF,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,MAAM,CACN,CAAC;QAEF,cAAc,CAAC,UAAU,GAAG,cAAc,CAAC;QAC3C,OAAO,cAAc,CAAC,MAAM,CAAC;IAC9B,CAAC;YAAS,CAAC;QACV,MAAM,oCAAoC,CAAC;YAC1C,gCAAgC;YAChC,+BAA+B;YAC/B,gCAAgC;YAChC,qCAAqC;SACrC,CAAC,CAAC;IACJ,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,OAKhD;IACA,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,MAAM,cAAc,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACjD,MAAM,WAAW,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAC9C,MAAM,sBAAsB,CAAC;QAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,WAAW,EAAE,UAAU;QACvB,eAAe,EAAE,aAAa;QAC9B,SAAS,EAAE,QAAQ;QACnB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrD,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IAC1F,YAAY,CAAC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IAClD,YAAY,CAAC,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC;IAC3D,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,UAAU,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC;IAChC,OAAO;QACN,cAAc;QACd,WAAW;QACX,YAAY;QACZ,QAAQ;QACR,IAAI;KACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wCAAwC,CAAC,QAAgB;IAC9E,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAC5F,YAAY,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,oBAAoB,EAAE,aAAa,CAAC,EAAE;QACnE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,iBAAiB,CAAC;QACvD,KAAK,EAAE,MAAM;KACb,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC5E,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CACzB,CAAC;IACF,MAAM,CAAC,iBAAiB,CAAC,GAAG,cAAc,CAAC;IAC3C,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,OAI9C;IACA,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,MAAM,cAAc,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACjD,MAAM,WAAW,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAC9C,MAAM,sBAAsB,CAAC;QAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,WAAW,EAAE,QAAQ;QACrB,eAAe,EAAE,WAAW;QAC5B,SAAS,EAAE,QAAQ;QACnB,MAAM,EAAE,OAAO,CAAC,MAAM;KACtB,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IAC1F,YAAY,CAAC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IAClD,YAAY,CAAC,IAAI,CAAC,gBAAgB,GAAG,mBAAmB,CAAC;IACzD,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,QAAQ,CAAC,CAAC;IACnE,YAAY,CAAC,IAAI,CAAC,eAAe,GAAG;QACnC,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,8BAA8B,EAAE;KACpE,CAAC;IACF,MAAM,IAAI,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC;IAChC,OAAO;QACN,cAAc;QACd,WAAW;QACX,YAAY;QACZ,QAAQ;QACR,IAAI;KACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC9C,OAAyC;IAEzC,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO,MAAM,0BAA0B,CAAC;YACvC,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrD,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,wBAAwB,CAAC;QACrC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;KACtB,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gCAAgC,CAAC,OAMtD;IACA,MAAM,EAAE,CAAC,SAAS,CACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,EAChD,GAAG,IAAI,CAAC,SAAS,CAChB;QACC,OAAO,EAAE,+BAA+B;QACxC,SAAS,EAAE;YACV,YAAY,EAAE;gBACb,SAAS,EAAE,EAAE,OAAO,EAAE,wCAAwC,EAAE;gBAChE,IAAI,EAAE,KAAK;gBACX,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,SAAS,EAAE;oBACV,IAAI,EAAE,iBAAiB;oBACvB,GAAG,EAAE,OAAO,CAAC,WAAW;iBACxB;aACD;SACD;QACD,aAAa,EAAE,CAAC;KAChB,EACD,IAAI,EACJ,IAAI,CACJ,IAAI,EACL,MAAM,CACN,CAAC;IACF,MAAM,EAAE,CAAC,SAAS,CACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,yBAAyB,CAAC,EACvD,GAAG,IAAI,CAAC,SAAS,CAChB;QACC,OAAO,EAAE,sCAAsC;QAC/C,MAAM,EAAE;YACP,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;SACvC;QACD,QAAQ,EAAE;YACT,KAAK,EAAE;gBACN,UAAU,EAAE;oBACX,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;wBACpB,KAAK,EAAE;4BACN,gBAAgB,EAAE,EAAE,KAAK,EAAE,CAAC,aAAa,CAAC,EAAE;4BAC5C,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC,YAAY,CAAC,EAAE;yBAC1C;wBACD,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE;qBAC/C;iBACD;gBACD,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE;aACnD;SACD;QACD,aAAa,EAAE,CAAC;KAChB,EACD,IAAI,EACJ,IAAI,CACJ,IAAI,EACL,MAAM,CACN,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC9C,OAAyC;IAEzC,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,MAAM,cAAc,GAAG,yBAAyB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAChG,IAAI,CAAC;QACJ,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,YAAY,EAAE;YAClE,oBAAoB,EAAE,KAAK,IAA6B,EAAE,CAAC,cAAc;YACzE,GAAG,CAAC,OAAO,CAAC,oBAAoB,KAAK,SAAS;gBAC7C,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAAE,CAAC;YAC1D,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS;gBACxC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC;YAChD,GAAG,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS;gBAC1C,OAAO,CAAC,gBAAgB,KAAK,SAAS;gBACtC,OAAO,CAAC,iBAAiB,KAAK,SAAS;gBACtC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC;oBACA,gBAAgB,EAAE,KAAK,EAAE,mBAA4C,EAAE,EAAE,CACxE,MAAM,CAAC,OAAO,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,CAAC;wBACpD,GAAG,mBAAmB;wBACtB,gBAAgB,EAAE;4BACjB,GAAG,mBAAmB,CAAC,gBAAgB;4BACvC,GAAG,OAAO,CAAC,gBAAgB;yBAC3B;wBACD,iBAAiB,EAAE;4BAClB,GAAG,mBAAmB,CAAC,iBAAiB;4BACxC,GAAG,OAAO,CAAC,iBAAiB;yBAC5B;qBACD,CAAC;iBACH,CAAC;SACJ,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YAC3C,MAAM,sBAAsB,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrF,CAAC;QACD,OAAO;YACN,aAAa,EAAE,oBAAoB,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE;YAC1F,OAAO;YACP,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,YAAY;YAC/C,QAAQ;YACR,KAAK,EAAE,KAAK,EAAE,YAAY,GAAG,EAAE,EAAE,EAAE;gBAClC,MAAM,aAAa,GAAc,EAAE,CAAC;gBACpC,IAAI,CAAC;oBACJ,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;gBACvB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC3B,CAAC;gBACD,IACC,4BAA4B,CAAC;oBAC5B,GAAG,YAAY;oBACf,GAAG,EAAE,OAAO,CAAC,GAAG;iBAChB,CAAC,EACD,CAAC;oBACF,IAAI,CAAC;wBACJ,MAAM,oCAAoC,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;oBAC/E,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBAChB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC3B,CAAC;gBACF,CAAC;gBACD,IAAI,CAAC;oBACJ,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;gBACnC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC3B,CAAC;wBAAS,CAAC;oBACV,kBAAkB,EAAE,CAAC;gBACtB,CAAC;gBACD,8BAA8B,CAAC,aAAa,CAAC,CAAC;YAC/C,CAAC;SACD,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,aAAa,GAAc,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,4BAA4B,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC;gBACJ,MAAM,oCAAoC,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YAC/E,CAAC;YAAC,OAAO,YAAY,EAAE,CAAC;gBACvB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAClC,CAAC;QACF,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,YAAY,EAAE,CAAC;YACvB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClC,CAAC;gBAAS,CAAC;YACV,kBAAkB,EAAE,CAAC;QACtB,CAAC;QACD,8BAA8B,CAAC,aAAa,CAAC,CAAC;QAC9C,MAAM,KAAK,CAAC;IACb,CAAC;AACF,CAAC"}
@@ -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"}