@agent-vm/agent-vm 0.0.81 → 0.0.84

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/cli/commands/create-app.d.ts +336 -334
  2. package/dist/cli/commands/create-app.d.ts.map +1 -1
  3. package/dist/cli/commands/doctor-definition.d.ts +2 -0
  4. package/dist/cli/commands/doctor-definition.d.ts.map +1 -1
  5. package/dist/cli/commands/doctor-definition.js +7 -3
  6. package/dist/cli/commands/doctor-definition.js.map +1 -1
  7. package/dist/cli/controller-operation-commands.d.ts.map +1 -1
  8. package/dist/cli/controller-operation-commands.js +39 -2
  9. package/dist/cli/controller-operation-commands.js.map +1 -1
  10. package/dist/cli/manual-templates.d.ts.map +1 -1
  11. package/dist/cli/manual-templates.js +40 -22
  12. package/dist/cli/manual-templates.js.map +1 -1
  13. package/dist/config/system-config.d.ts +18 -10
  14. package/dist/config/system-config.d.ts.map +1 -1
  15. package/dist/config/system-config.js +53 -10
  16. package/dist/config/system-config.js.map +1 -1
  17. package/dist/controller/controller-runtime-operations.d.ts +3 -0
  18. package/dist/controller/controller-runtime-operations.d.ts.map +1 -1
  19. package/dist/controller/controller-runtime-operations.js.map +1 -1
  20. package/dist/controller/controller-runtime-types.d.ts +5 -1
  21. package/dist/controller/controller-runtime-types.d.ts.map +1 -1
  22. package/dist/controller/controller-runtime.d.ts.map +1 -1
  23. package/dist/controller/controller-runtime.js +63 -15
  24. package/dist/controller/controller-runtime.js.map +1 -1
  25. package/dist/controller/health/gateway-service-health-monitor.d.ts +24 -0
  26. package/dist/controller/health/gateway-service-health-monitor.d.ts.map +1 -0
  27. package/dist/controller/health/gateway-service-health-monitor.js +68 -0
  28. package/dist/controller/health/gateway-service-health-monitor.js.map +1 -0
  29. package/dist/controller/health/health-event-store.d.ts +19 -0
  30. package/dist/controller/health/health-event-store.d.ts.map +1 -0
  31. package/dist/controller/health/health-event-store.js +54 -0
  32. package/dist/controller/health/health-event-store.js.map +1 -0
  33. package/dist/controller/http/controller-health-event-routes.d.ts +9 -0
  34. package/dist/controller/http/controller-health-event-routes.d.ts.map +1 -0
  35. package/dist/controller/http/controller-health-event-routes.js +47 -0
  36. package/dist/controller/http/controller-health-event-routes.js.map +1 -0
  37. package/dist/controller/http/controller-http-route-support.d.ts +3 -4
  38. package/dist/controller/http/controller-http-route-support.d.ts.map +1 -1
  39. package/dist/controller/http/controller-http-route-support.js +3 -4
  40. package/dist/controller/http/controller-http-route-support.js.map +1 -1
  41. package/dist/controller/http/controller-http-routes.d.ts +17 -10
  42. package/dist/controller/http/controller-http-routes.d.ts.map +1 -1
  43. package/dist/controller/http/controller-http-routes.js +192 -75
  44. package/dist/controller/http/controller-http-routes.js.map +1 -1
  45. package/dist/controller/http/controller-lease-response-types.d.ts +3 -3
  46. package/dist/controller/http/controller-lease-response-types.d.ts.map +1 -1
  47. package/dist/controller/http/controller-lease-response-types.js +3 -3
  48. package/dist/controller/http/controller-lease-response-types.js.map +1 -1
  49. package/dist/controller/http/controller-request-schemas.d.ts +97 -9
  50. package/dist/controller/http/controller-request-schemas.d.ts.map +1 -1
  51. package/dist/controller/http/controller-request-schemas.js +38 -22
  52. package/dist/controller/http/controller-request-schemas.js.map +1 -1
  53. package/dist/controller/http/controller-zone-operation-routes.d.ts +3 -0
  54. package/dist/controller/http/controller-zone-operation-routes.d.ts.map +1 -1
  55. package/dist/controller/http/controller-zone-operation-routes.js +13 -0
  56. package/dist/controller/http/controller-zone-operation-routes.js.map +1 -1
  57. package/dist/controller/leases/agent-sandbox-seeding.d.ts +0 -7
  58. package/dist/controller/leases/agent-sandbox-seeding.d.ts.map +1 -1
  59. package/dist/controller/leases/agent-sandbox-seeding.js +0 -6
  60. package/dist/controller/leases/agent-sandbox-seeding.js.map +1 -1
  61. package/dist/controller/leases/idle-reaper.d.ts +0 -1
  62. package/dist/controller/leases/idle-reaper.d.ts.map +1 -1
  63. package/dist/controller/leases/idle-reaper.js +1 -1
  64. package/dist/controller/leases/idle-reaper.js.map +1 -1
  65. package/dist/controller/leases/lease-idle-policy.d.ts +13 -9
  66. package/dist/controller/leases/lease-idle-policy.d.ts.map +1 -1
  67. package/dist/controller/leases/lease-idle-policy.js +23 -25
  68. package/dist/controller/leases/lease-idle-policy.js.map +1 -1
  69. package/dist/controller/leases/lease-manager.d.ts +20 -9
  70. package/dist/controller/leases/lease-manager.d.ts.map +1 -1
  71. package/dist/controller/leases/lease-manager.js +107 -31
  72. package/dist/controller/leases/lease-manager.js.map +1 -1
  73. package/dist/controller/leases/lease-work-mount-paths.d.ts +7 -2
  74. package/dist/controller/leases/lease-work-mount-paths.d.ts.map +1 -1
  75. package/dist/controller/leases/lease-work-mount-paths.js +48 -31
  76. package/dist/controller/leases/lease-work-mount-paths.js.map +1 -1
  77. package/dist/controller/leases/openclaw-gateway-lease-path-mapping.d.ts +7 -0
  78. package/dist/controller/leases/openclaw-gateway-lease-path-mapping.d.ts.map +1 -0
  79. package/dist/controller/leases/openclaw-gateway-lease-path-mapping.js +71 -0
  80. package/dist/controller/leases/openclaw-gateway-lease-path-mapping.js.map +1 -0
  81. package/dist/controller/zone-runtimes/openclaw-zone-runtime.d.ts.map +1 -1
  82. package/dist/controller/zone-runtimes/openclaw-zone-runtime.js +3 -0
  83. package/dist/controller/zone-runtimes/openclaw-zone-runtime.js.map +1 -1
  84. package/dist/controller/zone-runtimes/zone-runtime-types.d.ts +3 -0
  85. package/dist/controller/zone-runtimes/zone-runtime-types.d.ts.map +1 -1
  86. package/dist/gateway/gateway-health-check.d.ts +3 -0
  87. package/dist/gateway/gateway-health-check.d.ts.map +1 -1
  88. package/dist/gateway/gateway-health-check.js +10 -0
  89. package/dist/gateway/gateway-health-check.js.map +1 -1
  90. package/dist/integration-tests/smoke-harness.d.ts +1 -0
  91. package/dist/integration-tests/smoke-harness.d.ts.map +1 -1
  92. package/dist/integration-tests/smoke-harness.js +5 -0
  93. package/dist/integration-tests/smoke-harness.js.map +1 -1
  94. package/dist/operations/openclaw-deployment-doctor.d.ts.map +1 -1
  95. package/dist/operations/openclaw-deployment-doctor.js +12 -3
  96. package/dist/operations/openclaw-deployment-doctor.js.map +1 -1
  97. package/package.json +12 -11
  98. package/dist/controller/leases/lease-scope.d.ts +0 -12
  99. package/dist/controller/leases/lease-scope.d.ts.map +0 -1
  100. package/dist/controller/leases/lease-scope.js +0 -19
  101. package/dist/controller/leases/lease-scope.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"create-app.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/create-app.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAgBzE,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsB5F"}
1
+ {"version":3,"file":"create-app.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/create-app.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAgBzE,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsB5F"}
@@ -2,9 +2,11 @@ import type { CliDependencies, CliIo } from '../agent-vm-cli-support.js';
2
2
  export declare function createDoctorCommand(io: CliIo, dependencies: CliDependencies): Partial<import("cmd-ts/dist/cjs/argparser.js").Register> & {
3
3
  parse(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<{
4
4
  config: string | undefined;
5
+ json: boolean;
5
6
  }>>;
6
7
  } & import("cmd-ts/dist/cjs/helpdoc.js").PrintHelp & import("cmd-ts/dist/cjs/helpdoc.js").ProvidesHelp & import("cmd-ts/dist/cjs/helpdoc.js").Named & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Versioned> & import("cmd-ts/dist/cjs/argparser.js").Register & import("cmd-ts/dist/cjs/runner.js").Handling<{
7
8
  config: string | undefined;
9
+ json: boolean;
8
10
  }, Promise<void>> & {
9
11
  run(context: import("cmd-ts/dist/cjs/argparser.js").ParseContext): Promise<import("cmd-ts/dist/cjs/argparser.js").ParsingResult<Promise<void>>>;
10
12
  } & Partial<import("cmd-ts/dist/cjs/helpdoc.js").Versioned & import("cmd-ts/dist/cjs/helpdoc.js").Descriptive & import("cmd-ts/dist/cjs/helpdoc.js").Aliased>;
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-definition.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor-definition.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAIzE,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,eAAe;;;;;;;;8JAiB3E"}
1
+ {"version":3,"file":"doctor-definition.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor-definition.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAIzE,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,eAAe;;;;;;;;;;8JAqB3E"}
@@ -1,5 +1,5 @@
1
1
  // oxlint-disable typescript-eslint/explicit-function-return-type
2
- import { command } from 'cmd-ts';
2
+ import { command, flag } from 'cmd-ts';
3
3
  import { runControllerOperationCommand } from '../controller-operation-commands.js';
4
4
  import { createConfigOption, loadSystemConfigFromOption } from './command-definition-support.js';
5
5
  export function createDoctorCommand(io, dependencies) {
@@ -8,12 +8,16 @@ export function createDoctorCommand(io, dependencies) {
8
8
  description: 'Check offline prerequisites for the configured agent-vm project',
9
9
  args: {
10
10
  config: createConfigOption(),
11
+ json: flag({
12
+ long: 'json',
13
+ description: 'Print machine-readable JSON output',
14
+ }),
11
15
  },
12
- handler: async ({ config }) => {
16
+ handler: async ({ config, json }) => {
13
17
  await runControllerOperationCommand({
14
18
  dependencies,
15
19
  io,
16
- restArguments: [],
20
+ restArguments: json ? ['--json'] : [],
17
21
  subcommand: 'doctor',
18
22
  systemConfig: await loadSystemConfigFromOption(config, dependencies),
19
23
  });
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-definition.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor-definition.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGjC,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAEjG,MAAM,UAAU,mBAAmB,CAAC,EAAS,EAAE,YAA6B;IAC3E,OAAO,OAAO,CAAC;QACd,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,iEAAiE;QAC9E,IAAI,EAAE;YACL,MAAM,EAAE,kBAAkB,EAAE;SAC5B;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YAC7B,MAAM,6BAA6B,CAAC;gBACnC,YAAY;gBACZ,EAAE;gBACF,aAAa,EAAE,EAAE;gBACjB,UAAU,EAAE,QAAQ;gBACpB,YAAY,EAAE,MAAM,0BAA0B,CAAC,MAAM,EAAE,YAAY,CAAC;aACpE,CAAC,CAAC;QACJ,CAAC;KACD,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"doctor-definition.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor-definition.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAGvC,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAEjG,MAAM,UAAU,mBAAmB,CAAC,EAAS,EAAE,YAA6B;IAC3E,OAAO,OAAO,CAAC;QACd,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,iEAAiE;QAC9E,IAAI,EAAE;YACL,MAAM,EAAE,kBAAkB,EAAE;YAC5B,IAAI,EAAE,IAAI,CAAC;gBACV,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,oCAAoC;aACjD,CAAC;SACF;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;YACnC,MAAM,6BAA6B,CAAC;gBACnC,YAAY;gBACZ,EAAE;gBACF,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;gBACrC,UAAU,EAAE,QAAQ;gBACpB,YAAY,EAAE,MAAM,0BAA0B,CAAC,MAAM,EAAE,YAAY,CAAC;aACpE,CAAC,CAAC;QACJ,CAAC;KACD,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"controller-operation-commands.d.ts","sourceRoot":"","sources":["../../src/cli/controller-operation-commands.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAYrE,OAAO,EAEN,KAAK,eAAe,EACpB,KAAK,KAAK,EAKV,MAAM,2BAA2B,CAAC;AAEnC,UAAU,oCAAoC;IAC7C,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,UAAU,EAChB,aAAa,GACb,SAAS,GACT,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,MAAM,GACN,SAAS,CAAC;IACb,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;CAC1C;AA4ND,wBAAsB,6BAA6B,CAClD,OAAO,EAAE,oCAAoC,GAC3C,OAAO,CAAC,IAAI,CAAC,CA0If"}
1
+ {"version":3,"file":"controller-operation-commands.d.ts","sourceRoot":"","sources":["../../src/cli/controller-operation-commands.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAYrE,OAAO,EAEN,KAAK,eAAe,EACpB,KAAK,KAAK,EAKV,MAAM,2BAA2B,CAAC;AAEnC,UAAU,oCAAoC;IAC7C,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,UAAU,EAChB,aAAa,GACb,SAAS,GACT,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,MAAM,GACN,SAAS,CAAC;IACb,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;CAC1C;AAuQD,wBAAsB,6BAA6B,CAClD,OAAO,EAAE,oCAAoC,GAC3C,OAAO,CAAC,IAAI,CAAC,CA+If"}
@@ -2,6 +2,7 @@ import { constants } from 'node:fs';
2
2
  import fs from 'node:fs/promises';
3
3
  import path from 'node:path';
4
4
  import { loadWorkerConfigDraft } from '@agent-vm/agent-vm-worker';
5
+ import { dim, green, red } from 'ansis';
5
6
  import { execa } from 'execa';
6
7
  import { loadJsonConfigFile } from '../config/json-config-file.js';
7
8
  import { resolveControllerGithubToken } from '../controller/controller-runtime-support.js';
@@ -157,6 +158,37 @@ function convertConfigValidationChecksToDoctorChecks(checks) {
157
158
  ...(check.hint ? { hint: check.hint } : {}),
158
159
  }));
159
160
  }
161
+ function formatDoctorCheckStatus(check) {
162
+ return check.ok ? green('PASS') : red('FAIL');
163
+ }
164
+ function formatDoctorCheckDetails(check) {
165
+ const details = [];
166
+ if (check.value !== undefined) {
167
+ details.push(` value: ${String(check.value)}`);
168
+ }
169
+ if (check.hint !== undefined) {
170
+ const [firstLine, ...remainingLines] = check.hint.split('\n');
171
+ details.push(` hint: ${firstLine ?? ''}`);
172
+ for (const line of remainingLines) {
173
+ details.push(` ${line}`);
174
+ }
175
+ }
176
+ return details;
177
+ }
178
+ function writeDoctorText(io, result) {
179
+ const failedChecks = result.checks.filter((check) => !check.ok);
180
+ const passedChecks = result.checks.filter((check) => check.ok);
181
+ const orderedChecks = [...failedChecks, ...passedChecks];
182
+ const statusLine = result.failed === 0
183
+ ? green(`${result.passed} passed, 0 failed`)
184
+ : red(`${result.failed} failed`) + dim(`, ${result.passed} passed`);
185
+ const lines = ['agent-vm doctor', '', statusLine, ''];
186
+ for (const check of orderedChecks) {
187
+ lines.push(`${formatDoctorCheckStatus(check)} ${check.name}`);
188
+ lines.push(...formatDoctorCheckDetails(check));
189
+ }
190
+ io.stdout.write(`${lines.join('\n')}\n`);
191
+ }
160
192
  export async function runControllerOperationCommand(options) {
161
193
  const controllerClient = options.dependencies.createControllerClient({
162
194
  baseUrl: resolveControllerBaseUrl(options.systemConfig),
@@ -219,13 +251,18 @@ export async function runControllerOperationCommand(options) {
219
251
  const checks = [...doctorResult.checks, ...dynamicChecks];
220
252
  const failed = checks.filter((check) => !check.ok).length;
221
253
  const passed = checks.length - failed;
222
- writeJson(options.io, {
254
+ const result = {
223
255
  ok: doctorResult.ok && failed === 0,
224
256
  summary: failed === 0 ? 'all checks passed' : `${failed} check(s) failed`,
225
257
  passed,
226
258
  failed,
227
259
  checks,
228
- });
260
+ };
261
+ if (options.restArguments.includes('--json')) {
262
+ writeJson(options.io, result);
263
+ return;
264
+ }
265
+ writeDoctorText(options.io, result);
229
266
  return;
230
267
  }
231
268
  case 'status':
@@ -1 +1 @@
1
- {"version":3,"file":"controller-operation-commands.js","sourceRoot":"","sources":["../../src/cli/controller-operation-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller-operation-commands.js","sourceRoot":"","sources":["../../src/cli/controller-operation-commands.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"manual-templates.d.ts","sourceRoot":"","sources":["../../src/cli/manual-templates.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,uDAAuD,CAAC;AAE5F,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC9B;AAWD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,CAwBjF;AAED,wBAAgB,wBAAwB,CACvC,OAAO,EAAE,qBAAqB,GAC5B,SAAS,kBAAkB,EAAE,CAoZ/B"}
1
+ {"version":3,"file":"manual-templates.d.ts","sourceRoot":"","sources":["../../src/cli/manual-templates.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,uDAAuD,CAAC;AAE5F,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC9B;AAWD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,CAyBjF;AAED,wBAAgB,wBAAwB,CACvC,OAAO,EAAE,qBAAqB,GAC5B,SAAS,kBAAkB,EAAE,CAqa/B"}
@@ -17,13 +17,14 @@ Primary config:
17
17
 
18
18
  Use docs/manual/layout.md before moving files or changing generated folders.
19
19
  Use docs/manual/image-versioning.md before changing agent-vm package pins, managed image pins, OpenClaw runtime package pins, or generated Dockerfiles.
20
- Use docs/manual/scope.md before changing OpenClaw sandbox scope or tool VM lease behavior.
20
+ Use docs/manual/tool-vm-leases.md before changing agent-vm Tool VM lease identity, renewal, or reuse behavior.
21
21
  Use docs/manual/gateway-ingress.md before changing gateway ports, OpenClaw Control UI access, SSE/streaming behavior, WebSocket access, or serving additional webservers from inside a VM.
22
+ Use docs/manual/operations.md before debugging agent-vm controller health, gateway service health, lease-heartbeat, lease-renew, Tool VM SSH, or Gondolin tcpHosts timeouts.
22
23
  Use docs/manual/mcp-portal.md before changing MCP providers, MCP Portal profiles, MCP package pins, or live MCP validation.
23
24
  Use docs/manual/tool-access.md before answering whether a tool binary, auth profile, or tool VM image should be agent-specific.
24
25
  Use docs/manual/channels.md before helping a human configure Discord, Slack, Telegram, or another OpenClaw channel.
25
26
  Use docs/manual/runtime-paths.md before answering where files appear inside VMs or how workMountDir backs the Tool VM lease workdir.
26
- Use docs/manual/per-agent-setup.md before changing multi-agent layouts, scope=agent behavior, or per-agent tool/auth isolation.
27
+ Use docs/manual/per-agent-setup.md before changing multi-agent layouts, OpenClaw scope=agent configuration, or per-agent tool/auth isolation.
27
28
 
28
29
  Do not assume Discord is enabled by the framework. Channels and channel secrets are deployment-owned.
29
30
  Do not silently edit privileged host/deployment config. Explain the proposed Dockerfile, secret, egressHosts, websocketBypass, or OpenClaw config change and wait for the human to ask you to apply it.
@@ -39,7 +40,7 @@ This manual is generated from the installed agent-vm package. It is the deployme
39
40
  Read in this order:
40
41
  1. layout.md explains generated folders and ownership.
41
42
  2. image-versioning.md explains package pins, managed image pins, overlays, and generated Dockerfiles.
42
- 3. scope.md explains session, agent, and shared scope.
43
+ 3. tool-vm-leases.md explains agent-keyed Tool VM lease identity and reuse.
43
44
  4. openclaw.md explains OpenClaw gateway configuration.
44
45
  5. gateway-ingress.md explains host-facing gateway ports, OpenClaw web serving, SSE, WebSockets, and the boundary between single-route OpenClaw ingress and additional guest webservers.
45
46
  6. openclaw-defaults.md explains agent-vm-owned OpenClaw defaults and doctor checks.
@@ -47,10 +48,10 @@ Read in this order:
47
48
  8. tool-access.md explains binary, auth, OpenClaw tool, and zone/image isolation.
48
49
  9. channels.md explains how deployments add Discord or other channels.
49
50
  10. runtime-paths.md explains /workspace, /work, and other in-VM paths.
50
- 11. per-agent-setup.md explains multi-agent scope and tool access choices.
51
+ 11. per-agent-setup.md explains multi-agent layout and tool access choices.
51
52
  12. migration-discord.md explains how existing Discord deployments keep working.
52
53
  13. secrets.md explains runtime auth and HTTP mediation.
53
- 14. operations.md explains start, graceful stop, and scoped offline cleanup.
54
+ 14. operations.md explains start, graceful stop, scoped offline cleanup, health snapshots, lease-heartbeat, lease-renew, gateway-service health, and gateway-to-controller control-link checks.
54
55
 
55
56
  Local deployment notes belong in docs/manual/local-notes.md or another non-generated file.
56
57
  `),
@@ -102,23 +103,19 @@ agent-vm build prints the resolved base image, generated Dockerfile path, OpenCl
102
103
  `),
103
104
  },
104
105
  {
105
- relativePath: 'docs/manual/scope.md',
106
- content: generatedPage('Scope And Tool VM Reuse', `
107
- OpenClaw sandbox scope decides which work mount a Tool VM sees.
108
-
109
- session scope isolates per conversation.
110
- agent scope reuses a stable work mount for one agent identity.
111
- shared scope intentionally shares one work mount across participants.
112
-
106
+ relativePath: 'docs/manual/tool-vm-leases.md',
107
+ content: generatedPage('Tool VM Lease Identity And Reuse', `
113
108
  Managed OpenClaw Tool VMs are agent-keyed: one compatible Tool VM per zone and OpenClaw agent id.
114
- OpenClaw scopeKey may describe a channel, thread, session, or subagent scope under that agent; it does not choose the Tool VM.
109
+ The OpenClaw plugin derives agentId from the OpenClaw session key and sends agentId to the controller. OpenClaw scope keys are plugin-boundary metadata only: they are discarded before the controller lease request and do not choose, identify, renew, list, log, or store Tool VM leases.
110
+ The controller validates the requested gateway work path, resolves it to a host work mount, and returns the Tool VM guest workdir. The lease identity remains zoneId + agentId, not a path string.
115
111
  TCP slots are capacity; they are not identity.
116
112
  GET lease reads are read-only. Cached Tool VM handles renew idle leases with POST renew, and active shell/file operations heartbeat per-use records so long commands are not reaped mid-run.
113
+ Health snapshots call POST renew lease-renew and active-use heartbeat lease-heartbeat. Both keep lease state alive when successful, but they prove different things: lease-renew proves an idle cached lease can be reused, while lease-heartbeat proves an active operation still has a live controller path.
117
114
 
118
115
  Example:
119
- - shravan agent uses agentId=shravan and may receive scopeKey=agent:shravan:discord:channel:123.
120
- - alevtina agent uses agentId=alevtina and may receive scopeKey=agent:alevtina:subagent:child.
121
- - Each agent gets its own scoped sandbox mounted at /workspace in its Tool VM.
116
+ - shravan agent uses agentId=shravan.
117
+ - alevtina agent uses agentId=alevtina.
118
+ - Each agent gets its own compatible Tool VM lease mounted at /workspace in its Tool VM.
122
119
  - If both agents share one OpenClaw zone, unmapped agents use defaultToolVmProfile.
123
120
  - Configure agentToolVmProfiles when agents in one zone need different Tool VM images.
124
121
  - Configure gateway.authProfilesByAgent and agentSandboxSeeds for per-agent auth/profile files.
@@ -143,6 +140,20 @@ It reads the selected deployment config, loads only that zone's gateway-runtime.
143
140
  Do not use broad QEMU process kills as normal deployment workflow. Multiple agent-vm installations can run on one host, and broad process matching can kill the wrong installation.
144
141
 
145
142
  Local package scripts should be thin wrappers around these commands. Deployment repos should not copy process-fencing logic.
143
+
144
+ Health model:
145
+ - GET /health is the global agent-vm controller liveness endpoint.
146
+ - GET /zones/<zoneId>/health is an on-demand live gateway-service probe.
147
+ - GET /zones/<zoneId>/health-snapshot is an in-memory zone health view.
148
+ - gateway-service-health means the agent-vm controller can probe the gateway service through the gateway VM runtime.
149
+ - gateway-control-link means the gateway VM can call back to the agent-vm controller through controller.vm.host:18800.
150
+ - lease-heartbeat means an active Tool VM operation can refresh its active use.
151
+ - lease-renew means an idle cached Tool VM lease can be reused.
152
+ - tool-vm-ssh means command, file-bridge, finalize, or probe SSH operations on the gateway-to-Tool-VM path.
153
+
154
+ Health event history is in-memory controller state. It is useful for live diagnosis but is lost on agent-vm controller restart.
155
+
156
+ Health timeouts are operation-specific. Short health probes should fail quickly; git push/pull and lease-create get longer budgets. Do not assume every abort means the work should be killed.
146
157
  `),
147
158
  },
148
159
  {
@@ -151,6 +162,7 @@ Local package scripts should be thin wrappers around these commands. Deployment
151
162
  Agent-vm provides VM lifecycle, storage mounts, TCP/HTTP mediation, image build, and tool VM leases.
152
163
  OpenClaw owns plugin lifecycle, agents.list, channels, and gateway behavior.
153
164
  The controller is the control plane: it issues leases and tracks active uses. Command stdout, stderr, and file bridge traffic stay on the gateway-to-Tool-VM SSH data path.
165
+ OpenClaw application heartbeat turns are not infrastructure health checks. Use agent-vm health snapshots to distinguish gateway-service health, gateway-to-controller control link, lease-heartbeat, lease-renew, and Tool VM SSH health.
154
166
 
155
167
  The default scaffold enables Gondolin and memory-core support. It does not enable Discord.
156
168
  OpenClaw-owned openclaw.json stays strict JSON unless OpenClaw itself supports comments or agent-vm renders a strict effective config first.
@@ -223,6 +235,8 @@ MCP Portal is a scoped tool facade over deployment-owned upstream MCP servers. M
223
235
 
224
236
  MCP JSON Schema is canonical. Zod is derived for validation and helper code. Invalid call arguments and schemas that cannot be converted return structured errors without calling upstream. Tool VMs can use the mcp-portal helper package but do not receive upstream MCP credentials.
225
237
 
238
+ Prefer http-mediation for MCP provider API keys, including stdio providers, when the provider sends the env value in outbound HTTP headers or other Gondolin-supported request locations. The MCP server sees a placeholder env value; Gondolin swaps it for the real secret only for configured hosts. Use raw env injection only as an explicit exception for providers that cannot operate with placeholders.
239
+
226
240
  Run agent-vm validate --mcp-live after editing MCP providers or MCP Portal profiles. Static validate checks schema and materialization. Live validate starts each configured MCP provider, runs tools/list, and reports namespace, transport, phase, and hints for failures.
227
241
 
228
242
  Read-only/destructive annotations are trusted only for configured namespaces. Untrusted upstream tools require approval unless explicitly allowlisted by policy. Managed OpenClaw uses the in-process before_tool_call approval boundary.
@@ -293,9 +307,10 @@ To add a channel:
293
307
 
294
308
  Discord recipe:
295
309
  - Add DISCORD_BOT_TOKEN as a zone secret.
296
- - Add discord.com, discordapp.com, *.discordapp.com, and *.discordapp.net to egressHosts with audience gateway.
310
+ - Add discord.com, *.discord.com, discord.gg, *.discord.gg, discord.media, *.discord.media, discordapp.com, *.discordapp.com, and *.discordapp.net to egressHosts with audience both.
297
311
  - Discord media downloads use OpenClaw's Discord media SSRF policy, not tools.web.fetch.ssrfPolicy. If media logs show blocked URL fetch for cdn.discordapp.com or media.discordapp.net, verify the installed agent-vm version emits ::ffff:198.18.0.1 synthetic AAAA for Gondolin TCP-host VMs before adding broader OpenClaw hostname bypasses.
298
- - Add gateway.discord.gg:443 to websocketBypass.
312
+ - Add exact Discord Gateway hosts such as gateway.discord.gg:443, gateway-us-east1-b.discord.gg:443, gateway-us-east1-c.discord.gg:443, and gateway-us-east1-d.discord.gg:443 to websocketBypass.
313
+ - Do not use wildcard websocketBypass entries for Discord today. websocketBypass compiles to exact Gondolin tcpHosts entries; wildcard Discord coverage belongs in egressHosts until wildcard raw TCP bypass is implemented.
299
314
  - Enable channels.discord in deployment-owned openclaw.json.
300
315
  - Do not add Discord under plugins.allow or plugins.entries.
301
316
  - agent-vm build installs @openclaw/discord for managed OpenClaw images when channels.discord is enabled.
@@ -316,6 +331,9 @@ worker repo edits live under /work/repos inside Worker gateway task VMs.
316
331
  Worker gateway task VMs use /work/tmp for temporary files and /work/cache for disposable package-manager cache.
317
332
  OpenClaw gateway VMs use /work/tmp and /work/cache for disposable runtime work; persistent zone files live at /zone and are backed by gateway.zoneFilesDir.
318
333
 
334
+ The OpenClaw plugin may accept Tool VM guest cwd intent such as \`/workspace\`, \`/workspace/<child>\`, \`/work\`, or \`/work/<child>\`. The plugin translates that intent before it calls the controller.
335
+ The controller \`/lease workMountDir\` is stricter: it accepts only controller-supported OpenClaw gateway paths such as \`/zone/<child>\` or \`/home/openclaw/.openclaw/state/sandboxes/<child>\`. Direct Tool VM guest paths such as \`/workspace\` and \`/work\` are rejected at the controller boundary.
336
+
319
337
  workMountDir is a gateway VM path under /zone or /home/openclaw/.openclaw/state/sandboxes. The roots themselves are validation boundaries; leases must choose concrete child paths.
320
338
  hostWorkMountDir is the host realpath after controller validation.
321
339
  OpenClaw SDK compatibility note: OpenClaw may call the selected sandbox path workspaceDir. The agent-vm plugin translates that external SDK name to controller workMountDir.
@@ -335,7 +353,7 @@ When gateway.zoneGit is configured:
335
353
  {
336
354
  relativePath: 'docs/manual/per-agent-setup.md',
337
355
  content: generatedPage('Per-Agent Setup', `
338
- A single OpenClaw gateway can host multiple agents. Use scope=agent when each agent should have a stable work mount and reusable Tool VM lease identity.
356
+ A single OpenClaw gateway can host multiple agents. Use scope=agent so OpenClaw resolves each agent to its stable work mount; agent-vm still keys Tool VM lease identity by zone and agent id.
339
357
 
340
358
  Per-agent auth isolation works by using agent-vm auth codex-harness for native Codex CLI auth, gateway.authProfilesByAgent for OpenClaw auth profiles, and first-boot files through agentSandboxSeeds. Seeds target paths relative to the agent sandbox backing directory exposed at /workspace in Tool VMs and do not overwrite existing files.
341
359
  agent-vm auth openclaw <provider> --all-agents repeats the same OpenClaw provider login once per configured zone agent.
@@ -360,8 +378,8 @@ Agent-vm defaults are channel-neutral. Existing Discord deployments keep Discord
360
378
  1. Run agent-vm migrate images if the deployment still references Dockerfiles.
361
379
  2. Keep Discord enabled under channels.discord in config/gateways/<zone>/openclaw.json.
362
380
  3. Keep DISCORD_BOT_TOKEN in ${options.systemConfigPath} zone secrets.
363
- 4. Keep discord.com, discordapp.com, *.discordapp.com, and *.discordapp.net in egressHosts with audience gateway.
364
- 5. Keep gateway.discord.gg:443 in websocketBypass.
381
+ 4. Keep discord.com, *.discord.com, discord.gg, *.discord.gg, discord.media, *.discord.media, discordapp.com, *.discordapp.com, and *.discordapp.net in egressHosts with audience both.
382
+ 5. Keep exact Discord Gateway hosts such as gateway.discord.gg:443, gateway-us-east1-b.discord.gg:443, gateway-us-east1-c.discord.gg:443, and gateway-us-east1-d.discord.gg:443 in websocketBypass.
365
383
 
366
384
  Do not reintroduce Discord into agent-vm init defaults. Use this page as the deployment recipe.
367
385
  `),
@@ -1 +1 @@
1
- {"version":3,"file":"manual-templates.js","sourceRoot":"","sources":["../../src/cli/manual-templates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manual-templates.js","sourceRoot":"","sources":["../../src/cli/manual-templates.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,16 @@ declare const systemConfigSchema: z.ZodObject<{
32
32
  value: z.ZodString;
33
33
  }, z.core.$strict>], "source">>;
34
34
  }, z.core.$strip>;
35
+ controller: z.ZodDefault<z.ZodObject<{
36
+ health: z.ZodDefault<z.ZodObject<{
37
+ enabled: z.ZodDefault<z.ZodBoolean>;
38
+ eventHistoryLimit: z.ZodDefault<z.ZodNumber>;
39
+ gatewayControlLinkBackoffCeilingMs: z.ZodDefault<z.ZodNumber>;
40
+ gatewayControlLinkIntervalMs: z.ZodDefault<z.ZodNumber>;
41
+ gatewayServiceIntervalMs: z.ZodDefault<z.ZodNumber>;
42
+ staleAfterMs: z.ZodDefault<z.ZodNumber>;
43
+ }, z.core.$strict>>;
44
+ }, z.core.$strict>>;
35
45
  cacheDir: z.ZodDefault<z.ZodString>;
36
46
  runtimeDir: z.ZodDefault<z.ZodString>;
37
47
  imageProfiles: z.ZodObject<{
@@ -270,24 +280,22 @@ declare const systemConfigSchema: z.ZodObject<{
270
280
  defaultMs: z.ZodDefault<z.ZodNumber>;
271
281
  maxRequestedMs: z.ZodDefault<z.ZodNumber>;
272
282
  minRequestedMs: z.ZodDefault<z.ZodNumber>;
273
- byScopeKind: z.ZodDefault<z.ZodRecord<z.ZodEnum<{
274
- agent: "agent";
275
- discord: "discord";
276
- project: "project";
277
- session: "session";
278
- shared: "shared";
279
- workspace: "workspace";
280
- }> & z.core.$partial, z.ZodNumber>>;
281
- byScopePrefix: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodNumber>>;
282
283
  }, z.core.$strict>>;
283
284
  }, z.core.$strict>;
284
- export type SystemConfig = z.infer<typeof systemConfigSchema>;
285
+ type ParsedSystemConfig = z.infer<typeof systemConfigSchema>;
286
+ export type SystemConfig = Omit<ParsedSystemConfig, 'controller'> & {
287
+ readonly controller?: ParsedSystemConfig['controller'];
288
+ };
285
289
  export type SystemConfigInput = z.input<typeof systemConfigSchema>;
286
290
  export declare const systemConfigSchemaId = "agent-vm:system:1";
287
291
  export declare function createSystemConfigSchemaArtifact(): Record<string, unknown>;
292
+ export type ControllerHealthConfig = ParsedSystemConfig['controller']['health'];
288
293
  export type LoadedSystemConfig = SystemConfig & {
289
294
  readonly systemConfigPath: string;
290
295
  };
296
+ export declare function resolveControllerHealthConfig(config: {
297
+ readonly controller?: ParsedSystemConfig['controller'];
298
+ }): ControllerHealthConfig;
291
299
  export declare function createLoadedSystemConfig(config: SystemConfigInput, options: {
292
300
  readonly systemConfigPath: string;
293
301
  }): LoadedSystemConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"system-config.d.ts","sourceRoot":"","sources":["../../src/config/system-config.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,aAAa,aAMxB,CAAC;AACH,eAAO,MAAM,YAAY,aAMvB,CAAC;AAqXH,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA2WrB,CAAC;AAEJ,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEnE,eAAO,MAAM,oBAAoB,sBAAsB,CAAC;AAExD,wBAAgB,gCAAgC,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAK1E;AAED,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG;IAC/C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CAClC,CAAC;AAgCF,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE;IAAE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GAC5C,kBAAkB,CAOpB;AAyGD,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAQtF"}
1
+ {"version":3,"file":"system-config.d.ts","sourceRoot":"","sources":["../../src/config/system-config.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,aAAa,aAMxB,CAAC;AACH,eAAO,MAAM,YAAY,aAMvB,CAAC;AAiaH,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA4WrB,CAAC;AAEJ,KAAK,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE7D,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,YAAY,CAAC,GAAG;IACnE,QAAQ,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC;CACvD,CAAC;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEnE,eAAO,MAAM,oBAAoB,sBAAsB,CAAC;AAExD,wBAAgB,gCAAgC,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAK1E;AAED,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC;AAEhF,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG;IAC/C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF,wBAAgB,6BAA6B,CAAC,MAAM,EAAE;IACrD,QAAQ,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC;CACvD,GAAG,sBAAsB,CAEzB;AAgCD,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE;IAAE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GAC5C,kBAAkB,CAOpB;AAyGD,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAQtF"}
@@ -278,14 +278,6 @@ const toolVmProfileSchema = z
278
278
  runtimeRootfsSize: z.string().min(1).optional(),
279
279
  })
280
280
  .strict();
281
- const leaseScopeKindSchema = z.enum([
282
- 'agent',
283
- 'discord',
284
- 'project',
285
- 'session',
286
- 'shared',
287
- 'workspace',
288
- ]);
289
281
  const leaseIdleTtlSchema = z
290
282
  .object({
291
283
  defaultMs: z
@@ -299,8 +291,55 @@ const leaseIdleTtlSchema = z
299
291
  .positive()
300
292
  .default(24 * 60 * 60 * 1000),
301
293
  minRequestedMs: z.number().int().positive().default(1_000),
302
- byScopeKind: z.partialRecord(leaseScopeKindSchema, z.number().int().positive()).default({}),
303
- byScopePrefix: z.record(z.string().min(1), z.number().int().positive()).default({}),
294
+ })
295
+ .strict();
296
+ const defaultControllerHealthConfig = {
297
+ enabled: true,
298
+ eventHistoryLimit: 500,
299
+ gatewayControlLinkBackoffCeilingMs: 120_000,
300
+ gatewayControlLinkIntervalMs: 10_000,
301
+ gatewayServiceIntervalMs: 10_000,
302
+ staleAfterMs: 30_000,
303
+ };
304
+ const controllerHealthSchema = z
305
+ .object({
306
+ enabled: z.boolean().default(defaultControllerHealthConfig.enabled),
307
+ eventHistoryLimit: z
308
+ .number()
309
+ .int()
310
+ .positive()
311
+ .default(defaultControllerHealthConfig.eventHistoryLimit),
312
+ gatewayControlLinkBackoffCeilingMs: z
313
+ .number()
314
+ .int()
315
+ .positive()
316
+ .default(defaultControllerHealthConfig.gatewayControlLinkBackoffCeilingMs),
317
+ gatewayControlLinkIntervalMs: z
318
+ .number()
319
+ .int()
320
+ .positive()
321
+ .default(defaultControllerHealthConfig.gatewayControlLinkIntervalMs),
322
+ gatewayServiceIntervalMs: z
323
+ .number()
324
+ .int()
325
+ .positive()
326
+ .default(defaultControllerHealthConfig.gatewayServiceIntervalMs),
327
+ staleAfterMs: z.number().int().positive().default(defaultControllerHealthConfig.staleAfterMs),
328
+ })
329
+ .strict()
330
+ .superRefine((healthConfig, context) => {
331
+ if (healthConfig.gatewayControlLinkBackoffCeilingMs >= healthConfig.gatewayControlLinkIntervalMs) {
332
+ return;
333
+ }
334
+ context.addIssue({
335
+ code: z.ZodIssueCode.custom,
336
+ message: 'gatewayControlLinkBackoffCeilingMs must be greater than or equal to gatewayControlLinkIntervalMs.',
337
+ path: ['gatewayControlLinkBackoffCeilingMs'],
338
+ });
339
+ });
340
+ const controllerConfigSchema = z
341
+ .object({
342
+ health: controllerHealthSchema.default(defaultControllerHealthConfig),
304
343
  })
305
344
  .strict();
306
345
  const imageConfigSchema = z
@@ -356,6 +395,7 @@ const systemConfigSchema = z
356
395
  .optional(),
357
396
  githubToken: hostSecretReferenceSchema.optional(),
358
397
  }),
398
+ controller: controllerConfigSchema.default({ health: defaultControllerHealthConfig }),
359
399
  cacheDir: z.string().min(1).default('./cache'),
360
400
  runtimeDir: z.string().min(1).default('./runtime'),
361
401
  imageProfiles: imageProfilesSchema,
@@ -667,6 +707,9 @@ export function createSystemConfigSchemaArtifact() {
667
707
  ...z.toJSONSchema(systemConfigSchema, { target: 'draft-07' }),
668
708
  };
669
709
  }
710
+ export function resolveControllerHealthConfig(config) {
711
+ return config.controller?.health ?? defaultControllerHealthConfig;
712
+ }
670
713
  function pathsOverlap(firstPath, secondPath) {
671
714
  const firstResolved = path.resolve(firstPath);
672
715
  const secondResolved = path.resolve(secondPath);