@shravansunder/agent-vm 0.0.2 → 0.0.3

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 (101) hide show
  1. package/dist/backup/backup-encryption.d.ts +2 -2
  2. package/dist/backup/backup-encryption.d.ts.map +1 -1
  3. package/dist/backup/backup-encryption.js +29 -7
  4. package/dist/backup/backup-encryption.js.map +1 -1
  5. package/dist/build/gondolin-image-builder.d.ts.map +1 -1
  6. package/dist/build/gondolin-image-builder.js +3 -2
  7. package/dist/build/gondolin-image-builder.js.map +1 -1
  8. package/dist/cli/agent-vm-cli-support.d.ts +1 -0
  9. package/dist/cli/agent-vm-cli-support.d.ts.map +1 -1
  10. package/dist/cli/agent-vm-cli-support.js +4 -7
  11. package/dist/cli/agent-vm-cli-support.js.map +1 -1
  12. package/dist/cli/auth-interactive-command.d.ts.map +1 -1
  13. package/dist/cli/auth-interactive-command.js +9 -2
  14. package/dist/cli/auth-interactive-command.js.map +1 -1
  15. package/dist/cli/build-command.d.ts +2 -0
  16. package/dist/cli/build-command.d.ts.map +1 -1
  17. package/dist/cli/build-command.js +37 -0
  18. package/dist/cli/build-command.js.map +1 -1
  19. package/dist/cli/commands/command-definition-support.js +5 -5
  20. package/dist/cli/commands/command-definition-support.js.map +1 -1
  21. package/dist/cli/commands/controller-definition.d.ts.map +1 -1
  22. package/dist/cli/commands/controller-definition.js +10 -5
  23. package/dist/cli/commands/controller-definition.js.map +1 -1
  24. package/dist/cli/commands/create-app.d.ts +139 -139
  25. package/dist/cli/commands/create-app.js +2 -2
  26. package/dist/cli/commands/init-definition.js +1 -1
  27. package/dist/cli/init-command.d.ts +3 -2
  28. package/dist/cli/init-command.d.ts.map +1 -1
  29. package/dist/cli/init-command.js +63 -60
  30. package/dist/cli/init-command.js.map +1 -1
  31. package/dist/cli/openclaw-plugin-bundle.d.ts +10 -0
  32. package/dist/cli/openclaw-plugin-bundle.d.ts.map +1 -0
  33. package/dist/cli/openclaw-plugin-bundle.js +35 -0
  34. package/dist/cli/openclaw-plugin-bundle.js.map +1 -0
  35. package/dist/cli/ssh-commands.d.ts.map +1 -1
  36. package/dist/cli/ssh-commands.js +11 -1
  37. package/dist/cli/ssh-commands.js.map +1 -1
  38. package/dist/config/system-config.d.ts +22 -7
  39. package/dist/config/system-config.d.ts.map +1 -1
  40. package/dist/config/system-config.js +75 -9
  41. package/dist/config/system-config.js.map +1 -1
  42. package/dist/controller/composite-secret-resolver.d.ts +3 -0
  43. package/dist/controller/composite-secret-resolver.d.ts.map +1 -0
  44. package/dist/controller/composite-secret-resolver.js +38 -0
  45. package/dist/controller/composite-secret-resolver.js.map +1 -0
  46. package/dist/controller/controller-runtime-operations.d.ts.map +1 -1
  47. package/dist/controller/controller-runtime-operations.js +4 -21
  48. package/dist/controller/controller-runtime-operations.js.map +1 -1
  49. package/dist/controller/controller-runtime-support.d.ts +1 -0
  50. package/dist/controller/controller-runtime-support.d.ts.map +1 -1
  51. package/dist/controller/controller-runtime-support.js +10 -4
  52. package/dist/controller/controller-runtime-support.js.map +1 -1
  53. package/dist/controller/controller-runtime-types.d.ts +3 -1
  54. package/dist/controller/controller-runtime-types.d.ts.map +1 -1
  55. package/dist/controller/controller-runtime.d.ts.map +1 -1
  56. package/dist/controller/controller-runtime.js +64 -20
  57. package/dist/controller/controller-runtime.js.map +1 -1
  58. package/dist/controller/http/controller-request-schemas.d.ts.map +1 -1
  59. package/dist/controller/http/controller-request-schemas.js +2 -6
  60. package/dist/controller/http/controller-request-schemas.js.map +1 -1
  61. package/dist/controller/leases/lease-manager.d.ts.map +1 -1
  62. package/dist/controller/leases/lease-manager.js +1 -3
  63. package/dist/controller/leases/lease-manager.js.map +1 -1
  64. package/dist/controller/worker-task-runner.d.ts.map +1 -1
  65. package/dist/controller/worker-task-runner.js +19 -6
  66. package/dist/controller/worker-task-runner.js.map +1 -1
  67. package/dist/gateway/credential-manager.d.ts.map +1 -1
  68. package/dist/gateway/credential-manager.js +52 -9
  69. package/dist/gateway/credential-manager.js.map +1 -1
  70. package/dist/gateway/gateway-lifecycle-loader.js +1 -1
  71. package/dist/gateway/gateway-recovery.d.ts +19 -0
  72. package/dist/gateway/gateway-recovery.d.ts.map +1 -0
  73. package/dist/gateway/gateway-recovery.js +147 -0
  74. package/dist/gateway/gateway-recovery.js.map +1 -0
  75. package/dist/gateway/gateway-runtime-record.d.ts +33 -0
  76. package/dist/gateway/gateway-runtime-record.d.ts.map +1 -0
  77. package/dist/gateway/gateway-runtime-record.js +114 -0
  78. package/dist/gateway/gateway-runtime-record.js.map +1 -0
  79. package/dist/gateway/gateway-zone-orchestrator.d.ts +4 -0
  80. package/dist/gateway/gateway-zone-orchestrator.d.ts.map +1 -1
  81. package/dist/gateway/gateway-zone-orchestrator.js +60 -19
  82. package/dist/gateway/gateway-zone-orchestrator.js.map +1 -1
  83. package/dist/gateway/gateway-zone-support.d.ts +2 -1
  84. package/dist/gateway/gateway-zone-support.d.ts.map +1 -1
  85. package/dist/gateway/gateway-zone-support.js +34 -0
  86. package/dist/gateway/gateway-zone-support.js.map +1 -1
  87. package/dist/operations/doctor.d.ts.map +1 -1
  88. package/dist/operations/doctor.js +22 -11
  89. package/dist/operations/doctor.js.map +1 -1
  90. package/dist/operations/upgrade-zone.d.ts +0 -1
  91. package/dist/operations/upgrade-zone.d.ts.map +1 -1
  92. package/dist/operations/upgrade-zone.js +0 -1
  93. package/dist/operations/upgrade-zone.js.map +1 -1
  94. package/dist/runtime/project-namespace.d.ts +5 -0
  95. package/dist/runtime/project-namespace.d.ts.map +1 -0
  96. package/dist/runtime/project-namespace.js +22 -0
  97. package/dist/runtime/project-namespace.js.map +1 -0
  98. package/dist/tool-vm/tool-vm-lifecycle.d.ts.map +1 -1
  99. package/dist/tool-vm/tool-vm-lifecycle.js +2 -1
  100. package/dist/tool-vm/tool-vm-lifecycle.js.map +1 -1
  101. package/package.json +9 -7
@@ -2,28 +2,33 @@ import { execFileSync } from 'node:child_process';
2
2
  import fs from 'node:fs/promises';
3
3
  import path from 'node:path';
4
4
  import readline from 'node:readline/promises';
5
+ import { workerConfigSchema } from '@shravansunder/agent-vm-worker';
6
+ import { buildDefaultProjectNamespace } from '../runtime/project-namespace.js';
5
7
  import { getKeychainTokenSource, hasServiceAccountToken, storeServiceAccountToken, } from './keychain-credential.js';
8
+ import { openClawPluginVendorDirectory, syncBundledOpenClawPluginBundle, } from './openclaw-plugin-bundle.js';
6
9
  const defaultGatewayIngressPort = 18791;
10
+ const defaultOpenClawExtensionsPath = '/home/openclaw/.openclaw/extensions';
7
11
  function resolveGatewayConfigFileName(gatewayType) {
8
- return gatewayType === 'coding' ? 'coding.json' : 'openclaw.json';
12
+ return gatewayType === 'worker' ? 'worker.json' : 'openclaw.json';
9
13
  }
10
- const defaultSystemConfig = (zoneId, gatewayType) => ({
14
+ const defaultSystemConfig = (zoneId, gatewayType, projectNamespace) => ({
11
15
  host: {
12
16
  controllerPort: 18800,
17
+ projectNamespace,
13
18
  secretsProvider: {
14
19
  type: '1password',
15
20
  tokenSource: getKeychainTokenSource(),
16
21
  },
17
22
  },
18
- cacheDir: './cache',
23
+ cacheDir: '../cache',
19
24
  images: {
20
25
  gateway: {
21
- buildConfig: './images/gateway/build-config.json',
22
- dockerfile: './images/gateway/Dockerfile',
26
+ buildConfig: '../images/gateway/build-config.json',
27
+ dockerfile: '../images/gateway/Dockerfile',
23
28
  },
24
29
  tool: {
25
- buildConfig: './images/tool/build-config.json',
26
- dockerfile: './images/tool/Dockerfile',
30
+ buildConfig: '../images/tool/build-config.json',
31
+ dockerfile: '../images/tool/Dockerfile',
27
32
  },
28
33
  },
29
34
  zones: [
@@ -34,11 +39,11 @@ const defaultSystemConfig = (zoneId, gatewayType) => ({
34
39
  memory: '2G',
35
40
  cpus: 2,
36
41
  port: defaultGatewayIngressPort,
37
- gatewayConfig: `./config/${zoneId}/${resolveGatewayConfigFileName(gatewayType)}`,
38
- stateDir: `./state/${zoneId}`,
39
- workspaceDir: `./workspaces/${zoneId}`,
42
+ gatewayConfig: `./${zoneId}/${resolveGatewayConfigFileName(gatewayType)}`,
43
+ stateDir: `../state/${zoneId}`,
44
+ workspaceDir: `../workspaces/${zoneId}`,
40
45
  },
41
- secrets: defaultSecretsForGatewayType(gatewayType),
46
+ secrets: defaultSecretsForGatewayType(zoneId, gatewayType),
42
47
  allowedHosts: defaultAllowedHostsForGatewayType(gatewayType),
43
48
  websocketBypass: defaultWebsocketBypassForGatewayType(gatewayType),
44
49
  toolProfile: 'standard',
@@ -48,7 +53,7 @@ const defaultSystemConfig = (zoneId, gatewayType) => ({
48
53
  standard: {
49
54
  memory: '1G',
50
55
  cpus: 1,
51
- workspaceRoot: './workspaces/tools',
56
+ workspaceRoot: '../workspaces/tools',
52
57
  },
53
58
  },
54
59
  tcpPool: {
@@ -56,15 +61,11 @@ const defaultSystemConfig = (zoneId, gatewayType) => ({
56
61
  size: 5,
57
62
  },
58
63
  });
59
- function defaultSecretsForGatewayType(gatewayType) {
60
- if (gatewayType === 'coding') {
64
+ function defaultSecretsForGatewayType(zoneId, gatewayType) {
65
+ if (gatewayType === 'worker') {
61
66
  return {
62
- ANTHROPIC_API_KEY: {
63
- source: '1password',
64
- hosts: ['api.anthropic.com'],
65
- injection: 'http-mediation',
66
- },
67
67
  OPENAI_API_KEY: {
68
+ ref: 'op://agent-vm/workers-openai/credential',
68
69
  source: '1password',
69
70
  hosts: ['api.openai.com'],
70
71
  injection: 'http-mediation',
@@ -73,22 +74,25 @@ function defaultSecretsForGatewayType(gatewayType) {
73
74
  }
74
75
  return {
75
76
  DISCORD_BOT_TOKEN: {
77
+ ref: `op://agent-vm/${zoneId}-discord/bot-token`,
76
78
  source: '1password',
77
79
  injection: 'env',
78
80
  },
79
81
  PERPLEXITY_API_KEY: {
82
+ ref: `op://agent-vm/${zoneId}-perplexity/credential`,
80
83
  source: '1password',
81
84
  hosts: ['api.perplexity.ai'],
82
85
  injection: 'http-mediation',
83
86
  },
84
87
  OPENCLAW_GATEWAY_TOKEN: {
88
+ ref: `op://agent-vm/${zoneId}-gateway-auth/password`,
85
89
  source: '1password',
86
90
  injection: 'env',
87
91
  },
88
92
  };
89
93
  }
90
94
  function defaultAllowedHostsForGatewayType(gatewayType) {
91
- if (gatewayType === 'coding') {
95
+ if (gatewayType === 'worker') {
92
96
  return [
93
97
  'api.anthropic.com',
94
98
  'api.openai.com',
@@ -108,7 +112,7 @@ function defaultAllowedHostsForGatewayType(gatewayType) {
108
112
  ];
109
113
  }
110
114
  function defaultWebsocketBypassForGatewayType(gatewayType) {
111
- if (gatewayType === 'coding') {
115
+ if (gatewayType === 'worker') {
112
116
  return [];
113
117
  }
114
118
  return [
@@ -118,26 +122,18 @@ function defaultWebsocketBypassForGatewayType(gatewayType) {
118
122
  'mmg.whatsapp.net:443',
119
123
  ];
120
124
  }
121
- function defaultEnvTemplateForGatewayType(gatewayType) {
122
- const header = `# agent-vm environment configuration
125
+ function defaultEnvTemplateForGatewayType(_gatewayType) {
126
+ return `# agent-vm environment configuration
123
127
  # 1Password token is stored in macOS Keychain by agent-vm init.
124
128
  # Only set this for CI or non-macOS environments:
125
129
  # OP_SERVICE_ACCOUNT_TOKEN=
126
-
127
- # === Secret References (1Password op:// URIs) ===
128
- `;
129
- if (gatewayType === 'coding') {
130
- return `${header}ANTHROPIC_API_KEY_REF=op://agent-vm/agent-anthropic/api-key
131
- OPENAI_API_KEY_REF=op://agent-vm/agent-openai/api-key
132
- `;
133
- }
134
- return `${header}DISCORD_BOT_TOKEN_REF=op://agent-vm/agent-discord-app/bot-token
135
- PERPLEXITY_API_KEY_REF=op://agent-vm/agent-perplexity/credential
136
- OPENCLAW_GATEWAY_TOKEN_REF=op://agent-vm/agent-shravan-claw-gateway/password
137
130
  `;
138
131
  }
139
132
  const defaultGatewayDockerfile = `FROM node:24-slim
140
133
 
134
+ ENV PNPM_HOME=/pnpm
135
+ ENV PATH=\${PNPM_HOME}:\${PATH}
136
+
141
137
  RUN apt-get update && \\
142
138
  apt-get install -y --no-install-recommends \\
143
139
  openssh-server \\
@@ -147,14 +143,22 @@ RUN apt-get update && \\
147
143
  python3 && \\
148
144
  rm -rf /var/lib/apt/lists/* && \\
149
145
  update-ca-certificates && \\
150
- npm install -g openclaw@2026.4.2 && \\
146
+ corepack enable && \\
147
+ pnpm add -g openclaw@2026.4.2 && \\
148
+ OPENCLAW_PACKAGE_ROOT="$(pnpm root -g)/openclaw" && \\
149
+ (cd "$OPENCLAW_PACKAGE_ROOT" && node scripts/postinstall-bundled-plugins.mjs) && \\
150
+ mkdir -p /opt/openclaw-sdk && \\
151
+ ln -sf "$OPENCLAW_PACKAGE_ROOT/dist/plugin-sdk/sandbox.js" /opt/openclaw-sdk/sandbox.js && \\
152
+ printf '#!/bin/sh\\nexec /pnpm/openclaw "$@"\\n' > /usr/local/bin/openclaw && \\
153
+ chmod 755 /usr/local/bin/openclaw && \\
151
154
  useradd -m -s /bin/bash openclaw && \\
152
- mkdir -p /home/openclaw/.openclaw /home/openclaw/workspace /run/sshd /root && \\
155
+ mkdir -p ${defaultOpenClawExtensionsPath} /home/openclaw/workspace /run/sshd /root && \\
153
156
  chown -R openclaw:openclaw /home/openclaw && \\
154
- ln -sf /proc/self/fd /dev/fd 2>/dev/null || true && \\
155
- mkdir -p /usr/local/lib/node_modules/openclaw/dist/extensions/gondolin
157
+ ln -sf /proc/self/fd /dev/fd 2>/dev/null || true
158
+
159
+ COPY vendor/gondolin ${defaultOpenClawExtensionsPath}/gondolin
156
160
  `;
157
- const defaultCodingGatewayDockerfile = `FROM node:24-slim
161
+ const defaultWorkerGatewayDockerfile = `FROM node:24-slim
158
162
 
159
163
  RUN apt-get update && \\
160
164
  apt-get install -y --no-install-recommends \\
@@ -165,7 +169,9 @@ RUN apt-get update && \\
165
169
  python3 && \\
166
170
  rm -rf /var/lib/apt/lists/* && \\
167
171
  update-ca-certificates && \\
168
- npm install -g @openai/codex-cli && \\
172
+ npm install -g @openai/codex @shravansunder/agent-vm-worker && \\
173
+ mkdir -p /opt/agent-vm-worker && \\
174
+ ln -s /usr/local/lib/node_modules/@shravansunder/agent-vm-worker /opt/agent-vm-worker && \\
169
175
  useradd -m -s /bin/bash coder && \\
170
176
  mkdir -p /workspace /run/sshd /state && \\
171
177
  chown -R coder:coder /workspace /state && \\
@@ -247,6 +253,9 @@ const defaultOpenClawConfig = (zoneId, gatewayIngressPort) => ({
247
253
  },
248
254
  tools: { elevated: { enabled: false } },
249
255
  plugins: {
256
+ load: {
257
+ paths: [defaultOpenClawExtensionsPath],
258
+ },
250
259
  entries: {
251
260
  gondolin: {
252
261
  enabled: true,
@@ -259,18 +268,7 @@ const defaultOpenClawConfig = (zoneId, gatewayIngressPort) => ({
259
268
  },
260
269
  channels: {},
261
270
  });
262
- const defaultCodingGatewayConfig = () => ({
263
- agentTimeoutMs: 600_000,
264
- branchPrefix: 'agent/',
265
- commitCoAuthor: 'agent-vm-coding <noreply@agent-vm>',
266
- idleTimeoutMs: 1_800_000,
267
- lintCommand: 'pnpm lint',
268
- maxRetries: 3,
269
- model: 'gpt-5.4-mini',
270
- stateDir: '/state',
271
- testCommand: 'pnpm test',
272
- verificationTimeoutMs: 300_000,
273
- });
271
+ const defaultWorkerGatewayConfig = () => workerConfigSchema.parse({});
274
272
  async function writeFileIfMissing(filePath, content) {
275
273
  await fs.mkdir(path.dirname(filePath), { recursive: true });
276
274
  try {
@@ -294,9 +292,10 @@ async function scaffoldAgentVmProjectInternal(options, dependencies = {}) {
294
292
  const created = [];
295
293
  const skipped = [];
296
294
  const gatewayType = options.gatewayType;
297
- const systemConfigPath = path.join(options.targetDir, 'system.json');
298
- const systemConfigStatus = await writeFileIfMissing(systemConfigPath, `${JSON.stringify(defaultSystemConfig(options.zoneId, gatewayType), null, '\t')}\n`);
299
- (systemConfigStatus === 'created' ? created : skipped).push('system.json');
295
+ const projectNamespace = await buildDefaultProjectNamespace(options.targetDir);
296
+ const systemConfigPath = path.join(options.targetDir, 'config', 'system.json');
297
+ const systemConfigStatus = await writeFileIfMissing(systemConfigPath, `${JSON.stringify(defaultSystemConfig(options.zoneId, gatewayType, projectNamespace), null, '\t')}\n`);
298
+ (systemConfigStatus === 'created' ? created : skipped).push('config/system.json');
300
299
  const envFilePath = path.join(options.targetDir, '.env.local');
301
300
  const envFileStatus = await writeFileIfMissing(envFilePath, defaultEnvTemplateForGatewayType(gatewayType));
302
301
  (envFileStatus === 'created' ? created : skipped).push('.env.local');
@@ -323,27 +322,31 @@ async function scaffoldAgentVmProjectInternal(options, dependencies = {}) {
323
322
  const gatewayConfigPath = path.join(options.targetDir, 'config', options.zoneId, gatewayConfigFileName);
324
323
  const gatewayConfigStatus = await writeFileIfMissing(gatewayConfigPath, `${JSON.stringify(gatewayType === 'openclaw'
325
324
  ? defaultOpenClawConfig(options.zoneId, defaultGatewayIngressPort)
326
- : defaultCodingGatewayConfig(), null, '\t')}\n`);
325
+ : defaultWorkerGatewayConfig(), null, '\t')}\n`);
327
326
  (gatewayConfigStatus === 'created' ? created : skipped).push(`config/${options.zoneId}/${gatewayConfigFileName}`);
328
327
  const gatewayDockerfilePath = path.join(options.targetDir, 'images', 'gateway', 'Dockerfile');
329
- const gatewayDockerfileStatus = await writeFileIfMissing(gatewayDockerfilePath, gatewayType === 'openclaw' ? defaultGatewayDockerfile : defaultCodingGatewayDockerfile);
328
+ const gatewayDockerfileStatus = await writeFileIfMissing(gatewayDockerfilePath, gatewayType === 'openclaw' ? defaultGatewayDockerfile : defaultWorkerGatewayDockerfile);
330
329
  (gatewayDockerfileStatus === 'created' ? created : skipped).push('images/gateway/Dockerfile');
331
330
  const gatewayBuildConfigPath = path.join(options.targetDir, 'images', 'gateway', 'build-config.json');
332
331
  const gatewayBuildConfigStatus = await writeFileIfMissing(gatewayBuildConfigPath, `${JSON.stringify(defaultGatewayBuildConfig(), null, '\t')}\n`);
333
332
  (gatewayBuildConfigStatus === 'created' ? created : skipped).push('images/gateway/build-config.json');
333
+ if (gatewayType === 'openclaw') {
334
+ const pluginCopyStatus = await (dependencies.copyBundledOpenClawPlugin ?? syncBundledOpenClawPluginBundle)(options.targetDir);
335
+ (pluginCopyStatus === 'created' ? created : skipped).push(openClawPluginVendorDirectory);
336
+ }
334
337
  const toolDockerfilePath = path.join(options.targetDir, 'images', 'tool', 'Dockerfile');
335
338
  const toolDockerfileStatus = await writeFileIfMissing(toolDockerfilePath, defaultToolDockerfile);
336
339
  (toolDockerfileStatus === 'created' ? created : skipped).push('images/tool/Dockerfile');
337
340
  const toolBuildConfigPath = path.join(options.targetDir, 'images', 'tool', 'build-config.json');
338
341
  const toolBuildConfigStatus = await writeFileIfMissing(toolBuildConfigPath, `${JSON.stringify(defaultToolBuildConfig(), null, '\t')}\n`);
339
342
  (toolBuildConfigStatus === 'created' ? created : skipped).push('images/tool/build-config.json');
340
- for (const directoryPath of [
343
+ await Promise.all([
341
344
  path.join(options.targetDir, 'state', options.zoneId),
342
345
  path.join(options.targetDir, 'workspaces', options.zoneId),
343
346
  path.join(options.targetDir, 'workspaces', 'tools'),
344
- ]) {
347
+ ].map(async (directoryPath) => {
345
348
  await fs.mkdir(directoryPath, { recursive: true });
346
- }
349
+ }));
347
350
  return { created, keychainStored: false, skipped };
348
351
  }
349
352
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"init-command.js","sourceRoot":"","sources":["../../src/cli/init-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init-command.js","sourceRoot":"","sources":["../../src/cli/init-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import fs from 'node:fs/promises';
2
+ export declare const openClawPluginVendorDirectory = "images/gateway/vendor/gondolin";
3
+ export declare function syncBundledOpenClawPluginBundle(targetDir: string, dependencies?: {
4
+ readonly access?: typeof fs.access;
5
+ readonly copyDirectory?: typeof fs.cp;
6
+ readonly createDirectory?: typeof fs.mkdir;
7
+ readonly removeDirectory?: typeof fs.rm;
8
+ readonly resolveBundledDistDirectory?: () => Promise<string>;
9
+ }): Promise<'created' | 'skipped'>;
10
+ //# sourceMappingURL=openclaw-plugin-bundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openclaw-plugin-bundle.d.ts","sourceRoot":"","sources":["../../src/cli/openclaw-plugin-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAIlC,eAAO,MAAM,6BAA6B,mCAAmC,CAAC;AAkB9E,wBAAsB,+BAA+B,CACpD,SAAS,EAAE,MAAM,EACjB,YAAY,GAAE;IACb,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACtC,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC;IAC3C,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACxC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CACxD,GACJ,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAmBhC"}
@@ -0,0 +1,35 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ export const openClawPluginVendorDirectory = 'images/gateway/vendor/gondolin';
5
+ async function resolveBundledOpenClawPluginDistDirectory() {
6
+ const pluginEntrypointPath = fileURLToPath(import.meta.resolve('@shravansunder/openclaw-agent-vm-plugin'));
7
+ const pluginDistDirectory = path.dirname(pluginEntrypointPath);
8
+ try {
9
+ await fs.access(path.join(pluginDistDirectory, 'openclaw.plugin.json'));
10
+ }
11
+ catch (error) {
12
+ throw new Error(`Bundled gondolin plugin dist is missing at '${pluginDistDirectory}'. Run \`pnpm build\` before using the OpenClaw gateway scaffold/build path.`, { cause: error });
13
+ }
14
+ return pluginDistDirectory;
15
+ }
16
+ export async function syncBundledOpenClawPluginBundle(targetDir, dependencies = {}) {
17
+ const access = dependencies.access ?? fs.access;
18
+ const copyDirectory = dependencies.copyDirectory ?? fs.cp;
19
+ const createDirectory = dependencies.createDirectory ?? fs.mkdir;
20
+ const removeDirectory = dependencies.removeDirectory ?? fs.rm;
21
+ const resolveBundledDistDirectory = dependencies.resolveBundledDistDirectory ?? resolveBundledOpenClawPluginDistDirectory;
22
+ const pluginTargetDirectory = path.join(targetDir, openClawPluginVendorDirectory);
23
+ try {
24
+ await access(path.join(pluginTargetDirectory, 'openclaw.plugin.json'));
25
+ }
26
+ catch {
27
+ // Target does not exist yet — nothing to clean.
28
+ }
29
+ await removeDirectory(pluginTargetDirectory, { force: true, recursive: true });
30
+ const pluginDistDirectory = await resolveBundledDistDirectory();
31
+ await createDirectory(path.dirname(pluginTargetDirectory), { recursive: true });
32
+ await copyDirectory(pluginDistDirectory, pluginTargetDirectory, { recursive: true });
33
+ return 'created';
34
+ }
35
+ //# sourceMappingURL=openclaw-plugin-bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openclaw-plugin-bundle.js","sourceRoot":"","sources":["../../src/cli/openclaw-plugin-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,CAAC,MAAM,6BAA6B,GAAG,gCAAgC,CAAC;AAE9E,KAAK,UAAU,yCAAyC;IACvD,MAAM,oBAAoB,GAAG,aAAa,CACzC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAC9D,CAAC;IACF,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC/D,IAAI,CAAC;QACJ,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,CAAC,CAAC;IACzE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACd,+CAA+C,mBAAmB,8EAA8E,EAChJ,EAAE,KAAK,EAAE,KAAK,EAAE,CAChB,CAAC;IACH,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACpD,SAAiB,EACjB,eAMI,EAAE;IAEN,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC;IAChD,MAAM,aAAa,GAAG,YAAY,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,CAAC;IAC1D,MAAM,eAAe,GAAG,YAAY,CAAC,eAAe,IAAI,EAAE,CAAC,KAAK,CAAC;IACjE,MAAM,eAAe,GAAG,YAAY,CAAC,eAAe,IAAI,EAAE,CAAC,EAAE,CAAC;IAC9D,MAAM,2BAA2B,GAChC,YAAY,CAAC,2BAA2B,IAAI,yCAAyC,CAAC;IACvF,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC;IAClF,IAAI,CAAC;QACJ,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,sBAAsB,CAAC,CAAC,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACR,gDAAgD;IACjD,CAAC;IACD,MAAM,eAAe,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/E,MAAM,mBAAmB,GAAG,MAAM,2BAA2B,EAAE,CAAC;IAChE,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChF,MAAM,aAAa,CAAC,mBAAmB,EAAE,qBAAqB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrF,OAAO,SAAS,CAAC;AAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ssh-commands.d.ts","sourceRoot":"","sources":["../../src/cli/ssh-commands.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EACN,KAAK,eAAe,EACpB,KAAK,KAAK,EAIV,MAAM,2BAA2B,CAAC;AAEnC,UAAU,oBAAoB;IAC7B,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;IACvC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;CACpC;AAED,eAAO,MAAM,2BAA2B;;;;;;iBAQzB,CAAC;AAEhB,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DhF"}
1
+ {"version":3,"file":"ssh-commands.d.ts","sourceRoot":"","sources":["../../src/cli/ssh-commands.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EACN,KAAK,eAAe,EACpB,KAAK,KAAK,EAIV,MAAM,2BAA2B,CAAC;AAEnC,UAAU,oBAAoB;IAC7B,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;IACvC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;CACpC;AAED,eAAO,MAAM,2BAA2B;;;;;;iBAQzB,CAAC;AAEhB,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAahF,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8DhF"}
@@ -10,6 +10,14 @@ export const zoneSshAccessResponseSchema = z
10
10
  user: z.string().min(1).optional(),
11
11
  })
12
12
  .passthrough();
13
+ const openClawShellEnvFilePath = '/etc/profile.d/openclaw-env.sh';
14
+ function shellQuote(value) {
15
+ return `'${value.replace(/'/gu, `'\\''`)}'`;
16
+ }
17
+ function buildOpenClawAwareRemoteCommand(commandArguments) {
18
+ const quotedCommand = commandArguments.map((commandPart) => shellQuote(commandPart)).join(' ');
19
+ return `bash -lc ${shellQuote(`source ${openClawShellEnvFilePath} && exec ${quotedCommand}`)}`;
20
+ }
13
21
  export async function runSshCommand(options) {
14
22
  const controllerClient = options.dependencies.createControllerClient({
15
23
  baseUrl: resolveControllerBaseUrl(options.systemConfig),
@@ -42,7 +50,9 @@ export async function runSshCommand(options) {
42
50
  '-p',
43
51
  String(sshResponse.port),
44
52
  `${sshResponse.user ?? 'root'}@${sshResponse.host}`,
45
- ...remoteCommandArguments,
53
+ ...(remoteCommandArguments.length > 0
54
+ ? [buildOpenClawAwareRemoteCommand(remoteCommandArguments)]
55
+ : []),
46
56
  ];
47
57
  const runInteractiveProcess = options.dependencies.runInteractiveProcess ??
48
58
  (async (command, arguments_) => {
@@ -1 +1 @@
1
- {"version":3,"file":"ssh-commands.js","sourceRoot":"","sources":["../../src/cli/ssh-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ssh-commands.js","sourceRoot":"","sources":["../../src/cli/ssh-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAGN,YAAY,EACZ,WAAW,EACX,wBAAwB,GACxB,MAAM,2BAA2B,CAAC;AASnC,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC;KAC1C,MAAM,CAAC;IACP,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAClC,CAAC;KACD,WAAW,EAAE,CAAC;AAIhB,MAAM,wBAAwB,GAAG,gCAAgC,CAAC;AAElE,SAAS,UAAU,CAAC,KAAa;IAChC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED,SAAS,+BAA+B,CAAC,gBAAmC;IAC3E,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/F,OAAO,YAAY,UAAU,CAAC,UAAU,wBAAwB,YAAY,aAAa,EAAE,CAAC,EAAE,CAAC;AAChG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA6B;IAChE,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC;QACpE,OAAO,EAAE,wBAAwB,CAAC,OAAO,CAAC,YAAY,CAAC;KACvD,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;IACpF,MAAM,iBAAiB,GAAG,2BAA2B,CAAC,SAAS,CAC9D,MAAM,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAC7C,CAAC;IACF,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,WAAW,GAA0B,iBAAiB,CAAC,IAAI,CAAC;IAClE,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC5D,MAAM,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,MAAM,sBAAsB,GAC3B,qBAAqB,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE1F,IAAI,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACzD,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,cAAc,GACnB,sBAAsB,CAAC,MAAM,GAAG,CAAC;gBAChC,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,IAAI,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBAC9D,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC;YACxB,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,IAAI,CAAC,CAAC;YAC/C,OAAO;QACR,CAAC;QAED,MAAM,IAAI,KAAK,CACd,yGAAyG,CACzG,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG;QACpB,IAAI;QACJ,0BAA0B;QAC1B,IAAI;QACJ,8BAA8B;QAC9B,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,IAAI;QACJ,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;QACxB,GAAG,WAAW,CAAC,IAAI,IAAI,MAAM,IAAI,WAAW,CAAC,IAAI,EAAE;QACnD,GAAG,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC;YACpC,CAAC,CAAC,CAAC,+BAA+B,CAAC,sBAAsB,CAAC,CAAC;YAC3D,CAAC,CAAC,EAAE,CAAC;KACN,CAAC;IACF,MAAM,qBAAqB,GAC1B,OAAO,CAAC,YAAY,CAAC,qBAAqB;QAC1C,CAAC,KAAK,EAAE,OAAe,EAAE,UAA6B,EAAiB,EAAE;YACxE,MAAM,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE;gBAChC,KAAK,EAAE,SAAS;aAChB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,IAAI,CAAC;QACJ,MAAM,qBAAqB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACd,iCAAiC,WAAW,CAAC,IAAI,IAAI,MAAM,IAAI,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAChK;YACC,KAAK,EAAE,KAAK;SACZ,CACD,CAAC;IACH,CAAC;AACF,CAAC"}
@@ -2,7 +2,8 @@ import { z } from 'zod';
2
2
  declare const systemConfigSchema: z.ZodObject<{
3
3
  host: z.ZodObject<{
4
4
  controllerPort: z.ZodNumber;
5
- secretsProvider: z.ZodObject<{
5
+ projectNamespace: z.ZodString;
6
+ secretsProvider: z.ZodOptional<z.ZodObject<{
6
7
  type: z.ZodLiteral<"1password">;
7
8
  tokenSource: z.ZodDiscriminatedUnion<[z.ZodObject<{
8
9
  type: z.ZodLiteral<"op-cli">;
@@ -15,7 +16,7 @@ declare const systemConfigSchema: z.ZodObject<{
15
16
  service: z.ZodString;
16
17
  account: z.ZodString;
17
18
  }, z.core.$strip>], "type">;
18
- }, z.core.$strip>;
19
+ }, z.core.$strip>>;
19
20
  }, z.core.$strip>;
20
21
  cacheDir: z.ZodDefault<z.ZodString>;
21
22
  images: z.ZodObject<{
@@ -33,7 +34,7 @@ declare const systemConfigSchema: z.ZodObject<{
33
34
  gateway: z.ZodObject<{
34
35
  type: z.ZodDefault<z.ZodEnum<{
35
36
  openclaw: "openclaw";
36
- coding: "coding";
37
+ worker: "worker";
37
38
  }>>;
38
39
  memory: z.ZodString;
39
40
  cpus: z.ZodNumber;
@@ -41,17 +42,31 @@ declare const systemConfigSchema: z.ZodObject<{
41
42
  gatewayConfig: z.ZodString;
42
43
  stateDir: z.ZodString;
43
44
  workspaceDir: z.ZodString;
44
- authProfilesRef: z.ZodOptional<z.ZodString>;
45
+ authProfilesRef: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
46
+ source: z.ZodLiteral<"1password">;
47
+ ref: z.ZodString;
48
+ }, z.core.$strip>, z.ZodObject<{
49
+ source: z.ZodLiteral<"environment">;
50
+ envVar: z.ZodString;
51
+ }, z.core.$strip>], "source">>;
45
52
  }, z.core.$strip>;
46
- secrets: z.ZodRecord<z.ZodString, z.ZodObject<{
53
+ secrets: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
47
54
  source: z.ZodLiteral<"1password">;
48
- ref: z.ZodOptional<z.ZodString>;
55
+ ref: z.ZodString;
49
56
  injection: z.ZodDefault<z.ZodEnum<{
50
57
  env: "env";
51
58
  "http-mediation": "http-mediation";
52
59
  }>>;
53
60
  hosts: z.ZodOptional<z.ZodArray<z.ZodString>>;
54
- }, z.core.$strip>>;
61
+ }, z.core.$strip>, z.ZodObject<{
62
+ source: z.ZodLiteral<"environment">;
63
+ envVar: z.ZodString;
64
+ injection: z.ZodDefault<z.ZodEnum<{
65
+ env: "env";
66
+ "http-mediation": "http-mediation";
67
+ }>>;
68
+ hosts: z.ZodOptional<z.ZodArray<z.ZodString>>;
69
+ }, z.core.$strip>], "source">>;
55
70
  allowedHosts: z.ZodArray<z.ZodString>;
56
71
  websocketBypass: z.ZodDefault<z.ZodArray<z.ZodString>>;
57
72
  toolProfile: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"system-config.d.ts","sourceRoot":"","sources":["../../src/config/system-config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA+CxB,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8BtB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AA+C9D,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAOhF"}
1
+ {"version":3,"file":"system-config.d.ts","sourceRoot":"","sources":["../../src/config/system-config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiFxB,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiErB,CAAC;AAEJ,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AA+C9D,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAehF"}
@@ -1,12 +1,31 @@
1
1
  import fs from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import { z } from 'zod';
4
- const secretReferenceSchema = z.object({
4
+ const gatewayTypeValues = ['openclaw', 'worker'];
5
+ const secretInjectionSchema = z.enum(['env', 'http-mediation']);
6
+ const onePasswordSecretSchema = z.object({
5
7
  source: z.literal('1password'),
6
- ref: z.string().min(1).optional(),
7
- injection: z.enum(['env', 'http-mediation']).default('env'),
8
+ ref: z.string().min(1),
9
+ injection: secretInjectionSchema.default('http-mediation'),
8
10
  hosts: z.array(z.string().min(1)).optional(),
9
11
  });
12
+ const environmentSecretSchema = z.object({
13
+ source: z.literal('environment'),
14
+ envVar: z.string().min(1),
15
+ injection: secretInjectionSchema.default('http-mediation'),
16
+ hosts: z.array(z.string().min(1)).optional(),
17
+ });
18
+ const secretReferenceSchema = z
19
+ .discriminatedUnion('source', [onePasswordSecretSchema, environmentSecretSchema])
20
+ .superRefine((secret, context) => {
21
+ if (secret.injection === 'http-mediation' && (!secret.hosts || secret.hosts.length === 0)) {
22
+ context.addIssue({
23
+ code: z.ZodIssueCode.custom,
24
+ message: "Injection 'http-mediation' requires at least one host.",
25
+ path: ['hosts'],
26
+ });
27
+ }
28
+ });
10
29
  const tokenSourceSchema = z.discriminatedUnion('type', [
11
30
  z.object({
12
31
  type: z.literal('op-cli'),
@@ -22,15 +41,25 @@ const tokenSourceSchema = z.discriminatedUnion('type', [
22
41
  account: z.string().min(1),
23
42
  }),
24
43
  ]);
44
+ const authProfilesSecretSchema = z.discriminatedUnion('source', [
45
+ z.object({
46
+ source: z.literal('1password'),
47
+ ref: z.string().min(1),
48
+ }),
49
+ z.object({
50
+ source: z.literal('environment'),
51
+ envVar: z.string().min(1),
52
+ }),
53
+ ]);
25
54
  const zoneGatewaySchema = z.object({
26
- type: z.enum(['openclaw', 'coding']).default('openclaw'),
55
+ type: z.enum(gatewayTypeValues).default('openclaw'),
27
56
  memory: z.string().min(1),
28
57
  cpus: z.number().int().positive(),
29
58
  port: z.number().int().positive(),
30
59
  gatewayConfig: z.string().min(1),
31
60
  stateDir: z.string().min(1),
32
61
  workspaceDir: z.string().min(1),
33
- authProfilesRef: z.string().min(1).optional(),
62
+ authProfilesRef: authProfilesSecretSchema.optional(),
34
63
  });
35
64
  const toolProfileSchema = z.object({
36
65
  memory: z.string().min(1),
@@ -41,13 +70,20 @@ const imageConfigSchema = z.object({
41
70
  buildConfig: z.string().min(1),
42
71
  dockerfile: z.string().min(1).optional(),
43
72
  });
44
- const systemConfigSchema = z.object({
73
+ const systemConfigSchema = z
74
+ .object({
45
75
  host: z.object({
46
76
  controllerPort: z.number().int().positive(),
47
- secretsProvider: z.object({
77
+ projectNamespace: z
78
+ .string()
79
+ .min(1)
80
+ .regex(/^[a-z0-9][a-z0-9-]*$/u, 'projectNamespace must use lowercase letters, numbers, and hyphens only'),
81
+ secretsProvider: z
82
+ .object({
48
83
  type: z.literal('1password'),
49
84
  tokenSource: tokenSourceSchema,
50
- }),
85
+ })
86
+ .optional(),
51
87
  }),
52
88
  cacheDir: z.string().min(1).default('./cache'),
53
89
  images: z.object({
@@ -69,6 +105,27 @@ const systemConfigSchema = z.object({
69
105
  basePort: z.number().int().positive(),
70
106
  size: z.number().int().positive(),
71
107
  }),
108
+ })
109
+ .superRefine((config, context) => {
110
+ const hasOnePasswordSecrets = config.zones.some((zone) => Object.values(zone.secrets).some((secret) => secret.source === '1password') ||
111
+ zone.gateway.authProfilesRef?.source === '1password');
112
+ if (hasOnePasswordSecrets && !config.host.secretsProvider) {
113
+ context.addIssue({
114
+ code: z.ZodIssueCode.custom,
115
+ message: "host.secretsProvider is required when any zone secret uses source '1password'.",
116
+ path: ['host', 'secretsProvider'],
117
+ });
118
+ }
119
+ for (const [zoneIndex, zone] of config.zones.entries()) {
120
+ if (config.toolProfiles[zone.toolProfile]) {
121
+ continue;
122
+ }
123
+ context.addIssue({
124
+ code: z.ZodIssueCode.custom,
125
+ message: `Zone '${zone.id}' references unknown toolProfile '${zone.toolProfile}'.`,
126
+ path: ['zones', zoneIndex, 'toolProfile'],
127
+ });
128
+ }
72
129
  });
73
130
  /**
74
131
  * Resolve all relative paths in a system config relative to the config file's directory.
@@ -114,7 +171,16 @@ export async function loadSystemConfig(configPath) {
114
171
  const absoluteConfigPath = path.resolve(configPath);
115
172
  const configDir = path.dirname(absoluteConfigPath);
116
173
  const rawConfig = await fs.readFile(absoluteConfigPath, 'utf8');
117
- const parsedConfig = JSON.parse(rawConfig);
174
+ let parsedConfig;
175
+ try {
176
+ parsedConfig = JSON.parse(rawConfig);
177
+ }
178
+ catch (error) {
179
+ const message = error instanceof Error ? error.message : String(error);
180
+ throw new Error(`Failed to parse system config '${absoluteConfigPath}': ${message}`, {
181
+ cause: error,
182
+ });
183
+ }
118
184
  const config = systemConfigSchema.parse(parsedConfig);
119
185
  return resolveRelativePaths(config, configDir);
120
186
  }