@shravansunder/agent-vm 0.0.1 → 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 (131) 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/docker-image-builder.d.ts +3 -1
  6. package/dist/build/docker-image-builder.d.ts.map +1 -1
  7. package/dist/build/docker-image-builder.js +4 -4
  8. package/dist/build/docker-image-builder.js.map +1 -1
  9. package/dist/build/gondolin-image-builder.d.ts +2 -2
  10. package/dist/build/gondolin-image-builder.d.ts.map +1 -1
  11. package/dist/build/gondolin-image-builder.js +10 -9
  12. package/dist/build/gondolin-image-builder.js.map +1 -1
  13. package/dist/build/stale-image-cleaner.d.ts.map +1 -1
  14. package/dist/build/stale-image-cleaner.js +15 -11
  15. package/dist/build/stale-image-cleaner.js.map +1 -1
  16. package/dist/cli/agent-vm-cli-support.d.ts +3 -3
  17. package/dist/cli/agent-vm-cli-support.d.ts.map +1 -1
  18. package/dist/cli/agent-vm-cli-support.js +5 -8
  19. package/dist/cli/agent-vm-cli-support.js.map +1 -1
  20. package/dist/cli/agent-vm-entrypoint.js +0 -0
  21. package/dist/cli/auth-interactive-command.d.ts +1 -1
  22. package/dist/cli/auth-interactive-command.d.ts.map +1 -1
  23. package/dist/cli/build-command.d.ts +2 -1
  24. package/dist/cli/build-command.d.ts.map +1 -1
  25. package/dist/cli/build-command.js +29 -1
  26. package/dist/cli/build-command.js.map +1 -1
  27. package/dist/cli/commands/command-definition-support.js +5 -5
  28. package/dist/cli/commands/command-definition-support.js.map +1 -1
  29. package/dist/cli/commands/controller-definition.d.ts.map +1 -1
  30. package/dist/cli/commands/controller-definition.js +2 -2
  31. package/dist/cli/commands/controller-definition.js.map +1 -1
  32. package/dist/cli/commands/create-app.d.ts +139 -139
  33. package/dist/cli/commands/create-app.js +1 -1
  34. package/dist/cli/commands/init-definition.js +1 -1
  35. package/dist/cli/init-command.d.ts +2 -2
  36. package/dist/cli/init-command.d.ts.map +1 -1
  37. package/dist/cli/init-command.js +32 -49
  38. package/dist/cli/init-command.js.map +1 -1
  39. package/dist/cli/openclaw-plugin-bundle.d.ts +8 -1
  40. package/dist/cli/openclaw-plugin-bundle.d.ts.map +1 -1
  41. package/dist/cli/openclaw-plugin-bundle.js +12 -7
  42. package/dist/cli/openclaw-plugin-bundle.js.map +1 -1
  43. package/dist/config/system-config.d.ts +21 -6
  44. package/dist/config/system-config.d.ts.map +1 -1
  45. package/dist/config/system-config.js +74 -8
  46. package/dist/config/system-config.js.map +1 -1
  47. package/dist/controller/composite-secret-resolver.d.ts +3 -0
  48. package/dist/controller/composite-secret-resolver.d.ts.map +1 -0
  49. package/dist/controller/composite-secret-resolver.js +38 -0
  50. package/dist/controller/composite-secret-resolver.js.map +1 -0
  51. package/dist/controller/controller-runtime-operations.d.ts +2 -2
  52. package/dist/controller/controller-runtime-operations.d.ts.map +1 -1
  53. package/dist/controller/controller-runtime-operations.js +4 -16
  54. package/dist/controller/controller-runtime-operations.js.map +1 -1
  55. package/dist/controller/controller-runtime-support.d.ts +3 -2
  56. package/dist/controller/controller-runtime-support.d.ts.map +1 -1
  57. package/dist/controller/controller-runtime-support.js +11 -5
  58. package/dist/controller/controller-runtime-support.js.map +1 -1
  59. package/dist/controller/controller-runtime-types.d.ts +7 -3
  60. package/dist/controller/controller-runtime-types.d.ts.map +1 -1
  61. package/dist/controller/controller-runtime.d.ts.map +1 -1
  62. package/dist/controller/controller-runtime.js +86 -20
  63. package/dist/controller/controller-runtime.js.map +1 -1
  64. package/dist/controller/docker-service-routing.d.ts +11 -0
  65. package/dist/controller/docker-service-routing.d.ts.map +1 -0
  66. package/dist/controller/docker-service-routing.js +148 -0
  67. package/dist/controller/docker-service-routing.js.map +1 -0
  68. package/dist/controller/http/controller-http-route-support.d.ts +8 -0
  69. package/dist/controller/http/controller-http-route-support.d.ts.map +1 -1
  70. package/dist/controller/http/controller-http-route-support.js.map +1 -1
  71. package/dist/controller/http/controller-http-routes.d.ts +2 -0
  72. package/dist/controller/http/controller-http-routes.d.ts.map +1 -1
  73. package/dist/controller/http/controller-http-routes.js +20 -2
  74. package/dist/controller/http/controller-http-routes.js.map +1 -1
  75. package/dist/controller/http/controller-request-schemas.d.ts +8 -0
  76. package/dist/controller/http/controller-request-schemas.d.ts.map +1 -1
  77. package/dist/controller/http/controller-request-schemas.js +6 -0
  78. package/dist/controller/http/controller-request-schemas.js.map +1 -1
  79. package/dist/controller/http/controller-zone-operation-routes.d.ts.map +1 -1
  80. package/dist/controller/http/controller-zone-operation-routes.js +25 -1
  81. package/dist/controller/http/controller-zone-operation-routes.js.map +1 -1
  82. package/dist/controller/leases/lease-manager.d.ts +1 -1
  83. package/dist/controller/leases/lease-manager.d.ts.map +1 -1
  84. package/dist/controller/leases/lease-manager.js +1 -3
  85. package/dist/controller/leases/lease-manager.js.map +1 -1
  86. package/dist/controller/worker-task-runner.d.ts +39 -0
  87. package/dist/controller/worker-task-runner.d.ts.map +1 -0
  88. package/dist/controller/worker-task-runner.js +242 -0
  89. package/dist/controller/worker-task-runner.js.map +1 -0
  90. package/dist/gateway/credential-manager.d.ts +1 -1
  91. package/dist/gateway/credential-manager.d.ts.map +1 -1
  92. package/dist/gateway/credential-manager.js +26 -7
  93. package/dist/gateway/credential-manager.js.map +1 -1
  94. package/dist/gateway/gateway-image-builder.d.ts +1 -1
  95. package/dist/gateway/gateway-image-builder.d.ts.map +1 -1
  96. package/dist/gateway/gateway-lifecycle-loader.d.ts +1 -1
  97. package/dist/gateway/gateway-lifecycle-loader.d.ts.map +1 -1
  98. package/dist/gateway/gateway-lifecycle-loader.js +3 -3
  99. package/dist/gateway/gateway-lifecycle-loader.js.map +1 -1
  100. package/dist/gateway/gateway-recovery.d.ts +19 -0
  101. package/dist/gateway/gateway-recovery.d.ts.map +1 -0
  102. package/dist/gateway/gateway-recovery.js +147 -0
  103. package/dist/gateway/gateway-recovery.js.map +1 -0
  104. package/dist/gateway/gateway-runtime-record.d.ts +33 -0
  105. package/dist/gateway/gateway-runtime-record.d.ts.map +1 -0
  106. package/dist/gateway/gateway-runtime-record.js +114 -0
  107. package/dist/gateway/gateway-runtime-record.js.map +1 -0
  108. package/dist/gateway/gateway-zone-orchestrator.d.ts +6 -2
  109. package/dist/gateway/gateway-zone-orchestrator.d.ts.map +1 -1
  110. package/dist/gateway/gateway-zone-orchestrator.js +61 -16
  111. package/dist/gateway/gateway-zone-orchestrator.js.map +1 -1
  112. package/dist/gateway/gateway-zone-support.d.ts +7 -4
  113. package/dist/gateway/gateway-zone-support.d.ts.map +1 -1
  114. package/dist/gateway/gateway-zone-support.js +34 -0
  115. package/dist/gateway/gateway-zone-support.js.map +1 -1
  116. package/dist/operations/doctor.d.ts.map +1 -1
  117. package/dist/operations/doctor.js +22 -11
  118. package/dist/operations/doctor.js.map +1 -1
  119. package/dist/operations/upgrade-zone.d.ts +0 -1
  120. package/dist/operations/upgrade-zone.d.ts.map +1 -1
  121. package/dist/operations/upgrade-zone.js +0 -1
  122. package/dist/operations/upgrade-zone.js.map +1 -1
  123. package/dist/runtime/project-namespace.d.ts +5 -0
  124. package/dist/runtime/project-namespace.d.ts.map +1 -0
  125. package/dist/runtime/project-namespace.js +22 -0
  126. package/dist/runtime/project-namespace.js.map +1 -0
  127. package/dist/tool-vm/tool-vm-lifecycle.d.ts +1 -1
  128. package/dist/tool-vm/tool-vm-lifecycle.d.ts.map +1 -1
  129. package/dist/tool-vm/tool-vm-lifecycle.js +3 -2
  130. package/dist/tool-vm/tool-vm-lifecycle.js.map +1 -1
  131. package/package.json +42 -40
@@ -0,0 +1,33 @@
1
+ import { type GatewayProcessSpec, type GatewayType } from '@shravansunder/gateway-interface';
2
+ import { type ManagedVm } from '@shravansunder/gondolin-core';
3
+ import { z } from 'zod';
4
+ export declare const gatewayRuntimeRecordSchema: z.ZodObject<{
5
+ createdAt: z.ZodString;
6
+ gatewayType: z.ZodEnum<{
7
+ openclaw: "openclaw";
8
+ worker: "worker";
9
+ }>;
10
+ guestListenPort: z.ZodNumber;
11
+ ingressPort: z.ZodNumber;
12
+ projectNamespace: z.ZodString;
13
+ qemuPid: z.ZodNumber;
14
+ sessionLabel: z.ZodString;
15
+ vmId: z.ZodString;
16
+ zoneId: z.ZodString;
17
+ }, z.core.$strip>;
18
+ export type GatewayRuntimeRecord = z.infer<typeof gatewayRuntimeRecordSchema>;
19
+ export type GatewayRuntimeLog = (message: string) => void;
20
+ export declare function loadGatewayRuntimeRecord(stateDirectory: string, options?: {
21
+ readonly log?: GatewayRuntimeLog;
22
+ }): Promise<GatewayRuntimeRecord | null>;
23
+ export declare function writeGatewayRuntimeRecord(stateDirectory: string, record: GatewayRuntimeRecord): Promise<void>;
24
+ export declare function deleteGatewayRuntimeRecord(stateDirectory: string): Promise<void>;
25
+ export declare function buildGatewayRuntimeRecord(options: {
26
+ readonly gatewayType: GatewayType;
27
+ readonly ingressPort: number;
28
+ readonly managedVm: ManagedVm;
29
+ readonly processSpec: GatewayProcessSpec;
30
+ readonly projectNamespace: string;
31
+ readonly zoneId: string;
32
+ }): GatewayRuntimeRecord;
33
+ //# sourceMappingURL=gateway-runtime-record.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-runtime-record.d.ts","sourceRoot":"","sources":["../../src/gateway/gateway-runtime-record.ts"],"names":[],"mappings":"AAGA,OAAO,EAGN,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAY,CAAC,EAAE,MAAM,KAAK,CAAC;AAElC,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;iBAUrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAwC1D,wBAAsB,wBAAwB,CAC7C,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE;IACR,QAAQ,CAAC,GAAG,CAAC,EAAE,iBAAiB,CAAC;CAC5B,GACJ,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAyBtC;AAED,wBAAsB,yBAAyB,CAC9C,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,oBAAoB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAsB,0BAA0B,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtF;AAmCD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IAClD,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB,GAAG,oBAAoB,CAcvB"}
@@ -0,0 +1,114 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { buildGatewaySessionLabel, gatewayTypeValues, } from '@shravansunder/gateway-interface';
4
+ import { writeFileAtomically } from '@shravansunder/gondolin-core';
5
+ import { ZodError, z } from 'zod';
6
+ export const gatewayRuntimeRecordSchema = z.object({
7
+ createdAt: z.string().datetime(),
8
+ gatewayType: z.enum(gatewayTypeValues),
9
+ guestListenPort: z.number().int().positive(),
10
+ ingressPort: z.number().int().positive(),
11
+ projectNamespace: z.string().min(1),
12
+ qemuPid: z.number().int().positive(),
13
+ sessionLabel: z.string().min(1),
14
+ vmId: z.string().min(1),
15
+ zoneId: z.string().min(1),
16
+ });
17
+ const gatewayRuntimeRecordFileName = 'gateway-runtime.json';
18
+ function resolveGatewayRuntimeRecordPath(stateDirectory) {
19
+ return path.join(stateDirectory, gatewayRuntimeRecordFileName);
20
+ }
21
+ function resolveInvalidGatewayRuntimeRecordPath(stateDirectory) {
22
+ return path.join(stateDirectory, `gateway-runtime.invalid.${Date.now()}.json`);
23
+ }
24
+ function isObjectRecord(value) {
25
+ return typeof value === 'object' && value !== null;
26
+ }
27
+ async function quarantineMalformedGatewayRuntimeRecord(stateDirectory, runtimeRecordPath, log) {
28
+ const invalidRuntimeRecordPath = resolveInvalidGatewayRuntimeRecordPath(stateDirectory);
29
+ try {
30
+ await fs.rename(runtimeRecordPath, invalidRuntimeRecordPath);
31
+ log(`Quarantined malformed gateway runtime record '${runtimeRecordPath}' to '${invalidRuntimeRecordPath}'.`);
32
+ return;
33
+ }
34
+ catch (error) {
35
+ await fs.rm(runtimeRecordPath, { force: true });
36
+ log(`Deleted malformed gateway runtime record '${runtimeRecordPath}' after quarantine rename failed: ${error instanceof Error ? error.message : JSON.stringify(error)}`);
37
+ }
38
+ }
39
+ function writeGatewayRuntimeLog(message) {
40
+ process.stderr.write(`[agent-vm] ${message}\n`);
41
+ }
42
+ export async function loadGatewayRuntimeRecord(stateDirectory, options = {}) {
43
+ const runtimeRecordPath = resolveGatewayRuntimeRecordPath(stateDirectory);
44
+ let rawRuntimeRecord;
45
+ try {
46
+ rawRuntimeRecord = await fs.readFile(runtimeRecordPath, 'utf8');
47
+ }
48
+ catch (error) {
49
+ if (typeof error === 'object' && error !== null && 'code' in error && error.code === 'ENOENT') {
50
+ return null;
51
+ }
52
+ throw error;
53
+ }
54
+ try {
55
+ return gatewayRuntimeRecordSchema.parse(JSON.parse(rawRuntimeRecord));
56
+ }
57
+ catch (error) {
58
+ if (!(error instanceof SyntaxError) && !(error instanceof ZodError)) {
59
+ throw error;
60
+ }
61
+ await quarantineMalformedGatewayRuntimeRecord(stateDirectory, runtimeRecordPath, options.log ?? writeGatewayRuntimeLog);
62
+ return null;
63
+ }
64
+ }
65
+ export async function writeGatewayRuntimeRecord(stateDirectory, record) {
66
+ const runtimeRecordPath = resolveGatewayRuntimeRecordPath(stateDirectory);
67
+ await fs.mkdir(stateDirectory, { recursive: true });
68
+ await writeFileAtomically(runtimeRecordPath, `${JSON.stringify(gatewayRuntimeRecordSchema.parse(record), null, 2)}\n`, { mode: 0o600 });
69
+ }
70
+ export async function deleteGatewayRuntimeRecord(stateDirectory) {
71
+ await fs.rm(resolveGatewayRuntimeRecordPath(stateDirectory), { force: true });
72
+ }
73
+ function resolveManagedVmQemuPid(managedVm) {
74
+ const vmInstance = managedVm.getVmInstance();
75
+ if (!isObjectRecord(vmInstance)) {
76
+ throw new Error('Gateway VM runtime is missing its live VM instance.');
77
+ }
78
+ // Level 1 currently relies on Gondolin's live runtime object graph:
79
+ // VM -> SandboxServer -> SandboxController -> child_process.ChildProcess.
80
+ // If Gondolin refactors that structure, we fail closed here instead of
81
+ // silently persisting an invalid pid into gateway-runtime.json.
82
+ const server = vmInstance.server;
83
+ if (!isObjectRecord(server)) {
84
+ throw new Error('Gateway VM runtime is missing its live sandbox server.');
85
+ }
86
+ const controller = server.controller;
87
+ if (!isObjectRecord(controller)) {
88
+ throw new Error('Gateway VM runtime is missing its live sandbox controller.');
89
+ }
90
+ const child = controller.child;
91
+ if (!isObjectRecord(child)) {
92
+ throw new Error('Gateway VM runtime is missing its live QEMU child process.');
93
+ }
94
+ const qemuPid = child.pid;
95
+ if (typeof qemuPid !== 'number' || !Number.isInteger(qemuPid) || qemuPid <= 0) {
96
+ throw new Error('Gateway VM runtime is missing its live QEMU pid.');
97
+ }
98
+ return qemuPid;
99
+ }
100
+ export function buildGatewayRuntimeRecord(options) {
101
+ const gatewayType = gatewayRuntimeRecordSchema.shape.gatewayType.parse(options.gatewayType);
102
+ return {
103
+ createdAt: new Date().toISOString(),
104
+ gatewayType,
105
+ guestListenPort: options.processSpec.guestListenPort,
106
+ ingressPort: options.ingressPort,
107
+ projectNamespace: options.projectNamespace,
108
+ qemuPid: resolveManagedVmQemuPid(options.managedVm),
109
+ sessionLabel: buildGatewaySessionLabel(options.projectNamespace, options.zoneId),
110
+ vmId: options.managedVm.id,
111
+ zoneId: options.zoneId,
112
+ };
113
+ }
114
+ //# sourceMappingURL=gateway-runtime-record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-runtime-record.js","sourceRoot":"","sources":["../../src/gateway/gateway-runtime-record.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,14 @@
1
- import type { GatewayLifecycle, GatewayZoneConfig } from '@shravansunder/agent-vm-gateway-interface';
2
- import { type ManagedVm } from '@shravansunder/agent-vm-gondolin-core';
1
+ import type { GatewayLifecycle, GatewayZoneConfig } from '@shravansunder/gateway-interface';
2
+ import { type ManagedVm } from '@shravansunder/gondolin-core';
3
3
  import { type GatewayImageBuilderDependencies } from './gateway-image-builder.js';
4
+ import { cleanupOrphanedGatewayIfPresent } from './gateway-recovery.js';
5
+ import { type GatewayRuntimeRecord } from './gateway-runtime-record.js';
4
6
  import { type GatewayManagedVmFactoryOptions, type GatewayZoneStartResult, type StartGatewayZoneOptions } from './gateway-zone-support.js';
5
7
  export interface GatewayManagerDependencies extends GatewayImageBuilderDependencies {
8
+ readonly cleanupOrphanedGatewayIfPresent?: typeof cleanupOrphanedGatewayIfPresent;
6
9
  readonly createManagedVm?: (options: GatewayManagedVmFactoryOptions) => Promise<ManagedVm>;
7
10
  readonly loadGatewayLifecycle?: (type: GatewayZoneConfig['gateway']['type']) => GatewayLifecycle;
11
+ readonly writeGatewayRuntimeRecord?: (stateDirectory: string, record: GatewayRuntimeRecord) => Promise<void>;
8
12
  }
9
13
  export declare function startGatewayZone(options: StartGatewayZoneOptions, dependencies?: GatewayManagerDependencies): Promise<GatewayZoneStartResult>;
10
14
  //# sourceMappingURL=gateway-zone-orchestrator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-zone-orchestrator.d.ts","sourceRoot":"","sources":["../../src/gateway/gateway-zone-orchestrator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEX,gBAAgB,EAChB,iBAAiB,EACjB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAEN,KAAK,SAAS,EACd,MAAM,uCAAuC,CAAC;AAI/C,OAAO,EAEN,KAAK,+BAA+B,EACpC,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAEN,KAAK,8BAA8B,EACnC,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,0BAA2B,SAAQ,+BAA+B;IAClF,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,8BAA8B,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3F,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,gBAAgB,CAAC;CACjG;AAmCD,wBAAsB,gBAAgB,CACrC,OAAO,EAAE,uBAAuB,EAChC,YAAY,GAAE,0BAA+B,GAC3C,OAAO,CAAC,sBAAsB,CAAC,CAyFjC"}
1
+ {"version":3,"file":"gateway-zone-orchestrator.d.ts","sourceRoot":"","sources":["../../src/gateway/gateway-zone-orchestrator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEX,gBAAgB,EAChB,iBAAiB,EACjB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAEN,KAAK,SAAS,EACd,MAAM,8BAA8B,CAAC;AAItC,OAAO,EAEN,KAAK,+BAA+B,EACpC,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAGN,KAAK,oBAAoB,EACzB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAGN,KAAK,8BAA8B,EACnC,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,0BAA2B,SAAQ,+BAA+B;IAClF,QAAQ,CAAC,+BAA+B,CAAC,EAAE,OAAO,+BAA+B,CAAC;IAClF,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,8BAA8B,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3F,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,gBAAgB,CAAC;IACjG,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CACpC,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,oBAAoB,KACxB,OAAO,CAAC,IAAI,CAAC,CAAC;CACnB;AA4CD,wBAAsB,gBAAgB,CACrC,OAAO,EAAE,uBAAuB,EAChC,YAAY,GAAE,0BAA+B,GAC3C,OAAO,CAAC,sBAAsB,CAAC,CA0HjC"}
@@ -1,32 +1,50 @@
1
1
  import fs from 'node:fs/promises';
2
2
  import path from 'node:path';
3
- import { createManagedVm as createManagedVmFromCore, } from '@shravansunder/agent-vm-gondolin-core';
3
+ import { createManagedVm as createManagedVmFromCore, } from '@shravansunder/gondolin-core';
4
4
  import { runTaskWithResult } from '../shared/run-task.js';
5
5
  import { resolveZoneSecrets } from './credential-manager.js';
6
6
  import { buildGatewayImage, } from './gateway-image-builder.js';
7
7
  import { loadGatewayLifecycle } from './gateway-lifecycle-loader.js';
8
- import { findGatewayZone, } from './gateway-zone-support.js';
9
- async function waitForHealth(managedVm, healthCheck, attempt = 0, maxAttempts = 30, lastObservation = 'none') {
8
+ import { cleanupOrphanedGatewayIfPresent } from './gateway-recovery.js';
9
+ import { buildGatewayRuntimeRecord, writeGatewayRuntimeRecord, } from './gateway-runtime-record.js';
10
+ import { findGatewayZone, mapSystemGatewayZoneToLifecycleZone, } from './gateway-zone-support.js';
11
+ async function waitForHealth(options) {
12
+ const attempt = options.attempt ?? 0;
13
+ const maxAttempts = options.maxAttempts ?? 30;
14
+ const lastObservation = options.lastObservation ?? 'none';
10
15
  if (attempt >= maxAttempts) {
11
16
  throw new Error(`Gateway readiness check failed after ${maxAttempts} attempts. Last observation: ${lastObservation}.`);
12
17
  }
13
- const healthCommand = healthCheck.type === 'http'
14
- ? `curl -sS -o /dev/null -w "%{http_code}" --max-time 2 http://127.0.0.1:${healthCheck.port}${healthCheck.path} 2>/dev/null || echo 000`
15
- : healthCheck.command;
16
- const result = await managedVm.exec(healthCommand);
17
- const currentObservation = healthCheck.type === 'http'
18
+ const healthCommand = options.healthCheck.type === 'http'
19
+ ? `curl -sS -o /dev/null -w "%{http_code}" --max-time 2 http://127.0.0.1:${options.healthCheck.port}${options.healthCheck.path} 2>/dev/null || echo 000`
20
+ : options.healthCheck.command;
21
+ const result = await options.managedVm.exec(healthCommand);
22
+ const currentObservation = options.healthCheck.type === 'http'
18
23
  ? `http ${result.stdout.trim() || '(empty)'}`
19
24
  : `exit ${result.exitCode}`;
20
- if ((healthCheck.type === 'http' && result.stdout.trim().startsWith('2')) ||
21
- (healthCheck.type === 'command' && result.exitCode === 0)) {
25
+ if ((options.healthCheck.type === 'http' && result.stdout.trim().startsWith('2')) ||
26
+ (options.healthCheck.type === 'command' && result.exitCode === 0)) {
22
27
  return;
23
28
  }
24
29
  await new Promise((resolve) => setTimeout(resolve, 500));
25
- await waitForHealth(managedVm, healthCheck, attempt + 1, maxAttempts, currentObservation);
30
+ await waitForHealth({
31
+ attempt: attempt + 1,
32
+ healthCheck: options.healthCheck,
33
+ lastObservation: currentObservation,
34
+ managedVm: options.managedVm,
35
+ maxAttempts,
36
+ });
26
37
  }
27
38
  export async function startGatewayZone(options, dependencies = {}) {
28
39
  const runTaskStep = options.runTask ?? (async (_title, fn) => await fn());
29
- const zone = findGatewayZone(options.systemConfig, options.zoneId);
40
+ const zone = options.zoneOverride ?? findGatewayZone(options.systemConfig, options.zoneId);
41
+ const lifecycleZone = mapSystemGatewayZoneToLifecycleZone(zone);
42
+ await runTaskStep('Cleaning orphaned gateway runtime', async () => {
43
+ await (dependencies.cleanupOrphanedGatewayIfPresent ?? cleanupOrphanedGatewayIfPresent)({
44
+ stateDir: zone.gateway.stateDir,
45
+ zoneId: zone.id,
46
+ });
47
+ });
30
48
  const lifecycle = (dependencies.loadGatewayLifecycle ?? loadGatewayLifecycle)(zone.gateway.type);
31
49
  const resolvedSecrets = await runTaskWithResult(runTaskStep, 'Resolving zone secrets', async () => await resolveZoneSecrets({
32
50
  systemConfig: options.systemConfig,
@@ -45,10 +63,16 @@ export async function startGatewayZone(options, dependencies = {}) {
45
63
  await fs.mkdir(zone.gateway.stateDir, { recursive: true });
46
64
  await fs.mkdir(zone.gateway.workspaceDir, { recursive: true });
47
65
  await runTaskStep('Preparing host state', async () => {
48
- await lifecycle.prepareHostState?.(zone, options.secretResolver);
66
+ await lifecycle.prepareHostState?.(lifecycleZone, options.secretResolver);
67
+ });
68
+ const vmSpec = lifecycle.buildVmSpec({
69
+ controllerPort: options.systemConfig.host.controllerPort,
70
+ projectNamespace: options.systemConfig.host.projectNamespace,
71
+ resolvedSecrets,
72
+ tcpPool: options.systemConfig.tcpPool,
73
+ zone: lifecycleZone,
49
74
  });
50
- const vmSpec = lifecycle.buildVmSpec(zone, resolvedSecrets, options.systemConfig.host.controllerPort, options.systemConfig.tcpPool);
51
- const processSpec = lifecycle.buildProcessSpec(zone, resolvedSecrets);
75
+ const processSpec = lifecycle.buildProcessSpec(lifecycleZone, resolvedSecrets);
52
76
  const createManagedVm = dependencies.createManagedVm ?? createManagedVmFromCore;
53
77
  const managedVm = await runTaskWithResult(runTaskStep, 'Booting gateway VM', async () => await createManagedVm({
54
78
  allowedHosts: vmSpec.allowedHosts,
@@ -69,7 +93,10 @@ export async function startGatewayZone(options, dependencies = {}) {
69
93
  await managedVm.exec(processSpec.startCommand);
70
94
  });
71
95
  await runTaskStep('Waiting for readiness', async () => {
72
- await waitForHealth(managedVm, processSpec.healthCheck);
96
+ await waitForHealth({
97
+ healthCheck: processSpec.healthCheck,
98
+ managedVm,
99
+ });
73
100
  });
74
101
  managedVm.setIngressRoutes([
75
102
  {
@@ -81,6 +108,24 @@ export async function startGatewayZone(options, dependencies = {}) {
81
108
  const ingress = await managedVm.enableIngress({
82
109
  listenPort: zone.gateway.port,
83
110
  });
111
+ try {
112
+ await runTaskStep('Recording gateway runtime', async () => {
113
+ await (dependencies.writeGatewayRuntimeRecord ?? writeGatewayRuntimeRecord)(zone.gateway.stateDir, buildGatewayRuntimeRecord({
114
+ gatewayType: zone.gateway.type,
115
+ ingressPort: ingress.port,
116
+ managedVm,
117
+ processSpec,
118
+ projectNamespace: options.systemConfig.host.projectNamespace,
119
+ zoneId: zone.id,
120
+ }));
121
+ });
122
+ }
123
+ catch (error) {
124
+ await managedVm.close().catch((closeError) => {
125
+ process.stderr.write(`[agent-vm] Failed to close gateway VM after runtime-record write failure: ${closeError instanceof Error ? closeError.message : JSON.stringify(closeError)}\n`);
126
+ });
127
+ throw error;
128
+ }
84
129
  return {
85
130
  image,
86
131
  ingress,
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-zone-orchestrator.js","sourceRoot":"","sources":["../../src/gateway/gateway-zone-orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gateway-zone-orchestrator.js","sourceRoot":"","sources":["../../src/gateway/gateway-zone-orchestrator.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,23 @@
1
- import type { GatewayProcessSpec } from '@shravansunder/agent-vm-gateway-interface';
1
+ import type { GatewayProcessSpec, GatewayZoneConfig } from '@shravansunder/gateway-interface';
2
2
  import type { SystemConfig } from '../config/system-config.js';
3
3
  import type { RunTaskFn } from '../shared/run-task.js';
4
4
  export type GatewayZone = SystemConfig['zones'][number];
5
5
  export interface StartGatewayZoneOptions {
6
6
  readonly runTask?: RunTaskFn;
7
- readonly secretResolver: import('@shravansunder/agent-vm-gondolin-core').SecretResolver;
7
+ readonly secretResolver: import('@shravansunder/gondolin-core').SecretResolver;
8
8
  readonly systemConfig: SystemConfig;
9
+ readonly tcpHostsOverride?: Record<string, string>;
9
10
  readonly zoneId: string;
11
+ readonly zoneOverride?: GatewayZone;
10
12
  }
11
13
  export interface GatewayZoneStartResult {
12
- readonly image: import('@shravansunder/agent-vm-gondolin-core').BuildImageResult;
14
+ readonly image: import('@shravansunder/gondolin-core').BuildImageResult;
13
15
  readonly ingress: {
14
16
  readonly host: string;
15
17
  readonly port: number;
16
18
  };
17
19
  readonly processSpec: GatewayProcessSpec;
18
- readonly vm: import('@shravansunder/agent-vm-gondolin-core').ManagedVm;
20
+ readonly vm: import('@shravansunder/gondolin-core').ManagedVm;
19
21
  readonly zone: GatewayZone;
20
22
  }
21
23
  export interface GatewayBuildImageOptions {
@@ -46,4 +48,5 @@ export interface GatewayManagedVmFactoryOptions {
46
48
  }>;
47
49
  }
48
50
  export declare function findGatewayZone(systemConfig: SystemConfig, zoneId: string): GatewayZone;
51
+ export declare function mapSystemGatewayZoneToLifecycleZone(zone: GatewayZone): GatewayZoneConfig;
49
52
  //# sourceMappingURL=gateway-zone-support.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-zone-support.d.ts","sourceRoot":"","sources":["../../src/gateway/gateway-zone-support.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAEpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD,MAAM,WAAW,uBAAuB;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,OAAO,uCAAuC,EAAE,cAAc,CAAC;IACxF,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,uCAAuC,EAAE,gBAAgB,CAAC;IACjF,QAAQ,CAAC,OAAO,EAAE;QACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,EAAE,EAAE,OAAO,uCAAuC,EAAE,SAAS,CAAC;IACvE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,8BAA8B;IAC9C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CACvB,MAAM,EACN;QACC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;QAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACvB,CACD,CAAC;IACF,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CACzB,MAAM,EACN;QACC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,CAAC;QAClE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE;YACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;YACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;SAClC,CAAC;KACF,CACD,CAAC;CACF;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAOvF"}
1
+ {"version":3,"file":"gateway-zone-support.d.ts","sourceRoot":"","sources":["../../src/gateway/gateway-zone-support.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAE9F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD,MAAM,WAAW,uBAAuB;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,OAAO,8BAA8B,EAAE,cAAc,CAAC;IAC/E,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,WAAW,CAAC;CACpC;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,8BAA8B,EAAE,gBAAgB,CAAC;IACxE,QAAQ,CAAC,OAAO,EAAE;QACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,EAAE,EAAE,OAAO,8BAA8B,EAAE,SAAS,CAAC;IAC9D,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,8BAA8B;IAC9C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CACvB,MAAM,EACN;QACC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;QAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACvB,CACD,CAAC;IACF,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CACzB,MAAM,EACN;QACC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,CAAC;QAClE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE;YACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;YACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;SAClC,CAAC;KACF,CACD,CAAC;CACF;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAOvF;AAED,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,WAAW,GAAG,iBAAiB,CAmCxF"}
@@ -5,4 +5,38 @@ export function findGatewayZone(systemConfig, zoneId) {
5
5
  }
6
6
  return zone;
7
7
  }
8
+ export function mapSystemGatewayZoneToLifecycleZone(zone) {
9
+ return {
10
+ id: zone.id,
11
+ gateway: {
12
+ cpus: zone.gateway.cpus,
13
+ gatewayConfig: zone.gateway.gatewayConfig,
14
+ memory: zone.gateway.memory,
15
+ port: zone.gateway.port,
16
+ stateDir: zone.gateway.stateDir,
17
+ type: zone.gateway.type,
18
+ workspaceDir: zone.gateway.workspaceDir,
19
+ authProfilesRef: zone.gateway.authProfilesRef,
20
+ },
21
+ secrets: Object.fromEntries(Object.entries(zone.secrets).map(([secretName, secretConfig]) => [
22
+ secretName,
23
+ secretConfig.source === 'environment'
24
+ ? {
25
+ source: 'environment',
26
+ ...(secretConfig.hosts ? { hosts: secretConfig.hosts } : {}),
27
+ injection: secretConfig.injection,
28
+ envVar: secretConfig.envVar,
29
+ }
30
+ : {
31
+ source: '1password',
32
+ ...(secretConfig.hosts ? { hosts: secretConfig.hosts } : {}),
33
+ injection: secretConfig.injection,
34
+ ref: secretConfig.ref,
35
+ },
36
+ ])),
37
+ allowedHosts: zone.allowedHosts,
38
+ toolProfile: zone.toolProfile,
39
+ websocketBypass: zone.websocketBypass,
40
+ };
41
+ }
8
42
  //# sourceMappingURL=gateway-zone-support.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-zone-support.js","sourceRoot":"","sources":["../../src/gateway/gateway-zone-support.ts"],"names":[],"mappings":"AA4DA,MAAM,UAAU,eAAe,CAAC,YAA0B,EAAE,MAAc;IACzE,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IACrF,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"gateway-zone-support.js","sourceRoot":"","sources":["../../src/gateway/gateway-zone-support.ts"],"names":[],"mappings":"AA8DA,MAAM,UAAU,eAAe,CAAC,YAA0B,EAAE,MAAc;IACzE,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IACrF,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,IAAiB;IACpE,OAAO;QACN,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,OAAO,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;YACzC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YAC3B,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;YAC/B,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;YACvC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe;SAC7C;QACD,OAAO,EAAE,MAAM,CAAC,WAAW,CAC1B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC;YAChE,UAAU;YACV,YAAY,CAAC,MAAM,KAAK,aAAa;gBACpC,CAAC,CAAC;oBACA,MAAM,EAAE,aAAsB;oBAC9B,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5D,SAAS,EAAE,YAAY,CAAC,SAAS;oBACjC,MAAM,EAAE,YAAY,CAAC,MAAM;iBAC3B;gBACF,CAAC,CAAC;oBACA,MAAM,EAAE,WAAoB;oBAC5B,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5D,SAAS,EAAE,YAAY,CAAC,SAAS;oBACjC,GAAG,EAAE,YAAY,CAAC,GAAG;iBACrB;SACH,CAAC,CACF;QACD,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,eAAe,EAAE,IAAI,CAAC,eAAe;KACrC,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/operations/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;CAC/B;AAeD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,sBAAsB,CAoF/F"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/operations/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;CAC/B;AAeD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,sBAAsB,CA+F/F"}
@@ -20,8 +20,11 @@ export function runControllerDoctor(options) {
20
20
  const multiplier = (memoryMatch[2] ?? '').toLowerCase() === 'g' ? 1024 * 1024 * 1024 : 1024 * 1024;
21
21
  return totalBytes + numericValue * multiplier;
22
22
  }, 0);
23
- const tokenSource = options.systemConfig.host.secretsProvider.tokenSource;
23
+ const tokenSource = options.systemConfig.host.secretsProvider?.tokenSource;
24
24
  const tokenSourceReady = (() => {
25
+ if (!tokenSource) {
26
+ return true;
27
+ }
25
28
  switch (tokenSource.type) {
26
29
  case 'env': {
27
30
  const envVar = tokenSource.envVar ?? 'OP_SERVICE_ACCOUNT_TOKEN';
@@ -31,6 +34,8 @@ export function runControllerDoctor(options) {
31
34
  return availableBinaries.has('op');
32
35
  case 'keychain':
33
36
  return availableBinaries.has('security');
37
+ default:
38
+ return false;
34
39
  }
35
40
  })();
36
41
  const checks = [
@@ -39,16 +44,22 @@ export function runControllerDoctor(options) {
39
44
  ok: nodeMajorVersion >= 24,
40
45
  ...(nodeMajorVersion < 24 ? { hint: 'Requires Node.js >= 24. Install via nvm or fnm.' } : {}),
41
46
  },
42
- {
43
- name: '1password-token-source',
44
- ok: tokenSourceReady,
45
- ...(!tokenSourceReady && tokenSource.type === 'env'
46
- ? { hint: `Set ${tokenSource.envVar ?? 'OP_SERVICE_ACCOUNT_TOKEN'} environment variable` }
47
- : {}),
48
- ...(!tokenSourceReady && tokenSource.type === 'op-cli'
49
- ? { hint: 'Install 1Password CLI: brew install 1password-cli' }
50
- : {}),
51
- },
47
+ ...(tokenSource
48
+ ? [
49
+ {
50
+ name: '1password-token-source',
51
+ ok: tokenSourceReady,
52
+ ...(!tokenSourceReady && tokenSource.type === 'env'
53
+ ? {
54
+ hint: `Set ${tokenSource.envVar ?? 'OP_SERVICE_ACCOUNT_TOKEN'} environment variable`,
55
+ }
56
+ : {}),
57
+ ...(!tokenSourceReady && tokenSource.type === 'op-cli'
58
+ ? { hint: 'Install 1Password CLI: brew install 1password-cli' }
59
+ : {}),
60
+ },
61
+ ]
62
+ : []),
52
63
  checkBinary('qemu', 'qemu-system-aarch64', 'brew install qemu', availableBinaries),
53
64
  checkBinary('age', 'age', 'brew install age', availableBinaries),
54
65
  checkBinary('1password-cli', 'op', 'brew install 1password-cli', availableBinaries),
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/operations/doctor.ts"],"names":[],"mappings":"AAwBA,SAAS,WAAW,CACnB,IAAY,EACZ,UAAkB,EAClB,WAAmB,EACnB,iBAAsC;IAEtC,OAAO;QACN,IAAI;QACJ,EAAE,EAAE,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC;QACrC,GAAG,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAmC;IACtE,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CACvC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAC3D,EAAE,CACF,CAAC;IACF,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,GAAG,EAAU,CAAC;IACjE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,MAAM,CAAC,iBAAiB,CAAC;IACxE,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,MAAM,CAAC,iBAAiB,CAAC;IAC9E,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,IAAI,GAAG,EAAU,CAAC;IACzE,MAAM,sBAAsB,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE;QACrF,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW,EAAE,CAAC;YAClB,OAAO,UAAU,CAAC;QACnB,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAChE,MAAM,UAAU,GACf,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QACjF,OAAO,UAAU,GAAG,YAAY,GAAG,UAAU,CAAC;IAC/C,CAAC,EAAE,CAAC,CAAC,CAAC;IACN,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;IAC1E,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE;QAC9B,QAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;YAC1B,KAAK,KAAK,CAAC,CAAC,CAAC;gBACZ,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,0BAA0B,CAAC;gBAChE,OAAO,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAClF,CAAC;YACD,KAAK,QAAQ;gBACZ,OAAO,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpC,KAAK,UAAU;gBACd,OAAO,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;IACF,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,MAAM,GAAkB;QAC7B;YACC,IAAI,EAAE,cAAc;YACpB,EAAE,EAAE,gBAAgB,IAAI,EAAE;YAC1B,GAAG,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,iDAAiD,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7F;QACD;YACC,IAAI,EAAE,wBAAwB;YAC9B,EAAE,EAAE,gBAAgB;YACpB,GAAG,CAAC,CAAC,gBAAgB,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK;gBAClD,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,WAAW,CAAC,MAAM,IAAI,0BAA0B,uBAAuB,EAAE;gBAC1F,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,CAAC,gBAAgB,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ;gBACrD,CAAC,CAAC,EAAE,IAAI,EAAE,mDAAmD,EAAE;gBAC/D,CAAC,CAAC,EAAE,CAAC;SACN;QACD,WAAW,CAAC,MAAM,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,iBAAiB,CAAC;QAClF,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,CAAC;QAChE,WAAW,CAAC,eAAe,EAAE,IAAI,EAAE,4BAA4B,EAAE,iBAAiB,CAAC;QACnF;YACC,IAAI,EAAE,iBAAiB;YACvB,EAAE,EACD,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC;gBAC5C,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;YAC7D,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc;SAC/C;QACD,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAChC,CAAC,IAAI,EAAE,EAAE,CACR,CAAC;YACA,IAAI,EAAE,gBAAgB,IAAI,CAAC,EAAE,EAAE;YAC/B,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAClE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;SACxB,CAAuB,CACzB;QACD;YACC,IAAI,EAAE,YAAY;YAClB,EAAE,EAAE,aAAa,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;YAC5C,GAAG,CAAC,aAAa,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;gBAC1C,CAAC,CAAC,EAAE,IAAI,EAAE,oCAAoC,EAAE;gBAChD,CAAC,CAAC,EAAE,CAAC;SACN;QACD;YACC,IAAI,EAAE,eAAe;YACrB,EAAE,EAAE,gBAAgB,IAAI,sBAAsB;SAC9C;KACD,CAAC;IAEF,OAAO;QACN,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM;KACN,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/operations/doctor.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,6 @@ export declare function runControllerUpgrade(options: {
5
5
  }, dependencies: {
6
6
  readonly rebuildGatewayImage: (zoneId: string) => Promise<void>;
7
7
  readonly restartGatewayZone: (zoneId: string) => Promise<void>;
8
- readonly stopGatewayZone: (zoneId: string) => Promise<void>;
9
8
  }): Promise<{
10
9
  readonly ok: true;
11
10
  readonly zoneId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade-zone.d.ts","sourceRoot":"","sources":["../../src/operations/upgrade-zone.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,wBAAsB,oBAAoB,CACzC,OAAO,EAAE;IACR,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB,EACD,YAAY,EAAE;IACb,QAAQ,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,QAAQ,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D,GACC,OAAO,CAAC;IACV,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB,CAAC,CAUD"}
1
+ {"version":3,"file":"upgrade-zone.d.ts","sourceRoot":"","sources":["../../src/operations/upgrade-zone.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,wBAAsB,oBAAoB,CACzC,OAAO,EAAE;IACR,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB,EACD,YAAY,EAAE;IACb,QAAQ,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,QAAQ,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D,GACC,OAAO,CAAC;IACV,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB,CAAC,CASD"}
@@ -1,7 +1,6 @@
1
1
  export async function runControllerUpgrade(options, dependencies) {
2
2
  void options.systemConfig;
3
3
  await dependencies.rebuildGatewayImage(options.zoneId);
4
- await dependencies.stopGatewayZone(options.zoneId);
5
4
  await dependencies.restartGatewayZone(options.zoneId);
6
5
  return {
7
6
  ok: true,
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade-zone.js","sourceRoot":"","sources":["../../src/operations/upgrade-zone.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,OAGC,EACD,YAIC;IAKD,KAAK,OAAO,CAAC,YAAY,CAAC;IAC1B,MAAM,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtD,OAAO;QACN,EAAE,EAAE,IAAI;QACR,MAAM,EAAE,OAAO,CAAC,MAAM;KACtB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"upgrade-zone.js","sourceRoot":"","sources":["../../src/operations/upgrade-zone.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,OAGC,EACD,YAGC;IAKD,KAAK,OAAO,CAAC,YAAY,CAAC;IAC1B,MAAM,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtD,OAAO;QACN,EAAE,EAAE,IAAI;QACR,MAAM,EAAE,OAAO,CAAC,MAAM;KACtB,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function buildDefaultProjectNamespace(targetDirectory: string, dependencies?: {
2
+ readonly realpath?: (targetDirectory: string) => Promise<string>;
3
+ readonly resolvePath?: (targetDirectory: string) => string;
4
+ }): Promise<string>;
5
+ //# sourceMappingURL=project-namespace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-namespace.d.ts","sourceRoot":"","sources":["../../src/runtime/project-namespace.ts"],"names":[],"mappings":"AAcA,wBAAsB,4BAA4B,CACjD,eAAe,EAAE,MAAM,EACvB,YAAY,GAAE;IACb,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACjE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM,CAAC;CACtD,GACJ,OAAO,CAAC,MAAM,CAAC,CAYjB"}
@@ -0,0 +1,22 @@
1
+ import crypto from 'node:crypto';
2
+ import fs from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ function slugifyProjectName(projectName) {
5
+ const normalizedProjectName = projectName
6
+ .toLowerCase()
7
+ .replace(/[^a-z0-9]+/gu, '-')
8
+ .replace(/^-+/u, '')
9
+ .replace(/-+$/u, '');
10
+ return normalizedProjectName.length > 0 ? normalizedProjectName : 'agent-vm';
11
+ }
12
+ export async function buildDefaultProjectNamespace(targetDirectory, dependencies = {}) {
13
+ const resolvedTargetDirectory = await (dependencies.realpath ?? fs.realpath)(targetDirectory).catch(() => (dependencies.resolvePath ?? path.resolve)(targetDirectory));
14
+ const projectName = slugifyProjectName(path.basename(resolvedTargetDirectory));
15
+ const projectHash = crypto
16
+ .createHash('sha1')
17
+ .update(resolvedTargetDirectory)
18
+ .digest('hex')
19
+ .slice(0, 8);
20
+ return `${projectName}-${projectHash}`;
21
+ }
22
+ //# sourceMappingURL=project-namespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-namespace.js","sourceRoot":"","sources":["../../src/runtime/project-namespace.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,SAAS,kBAAkB,CAAC,WAAmB;IAC9C,MAAM,qBAAqB,GAAG,WAAW;SACvC,WAAW,EAAE;SACb,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;SAC5B,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACnB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAEtB,OAAO,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,UAAU,CAAC;AAC9E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CACjD,eAAuB,EACvB,eAGI,EAAE;IAEN,MAAM,uBAAuB,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,IAAI,EAAE,CAAC,QAAQ,CAAC,CAC3E,eAAe,CACf,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,YAAY,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;IAC3E,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAC/E,MAAM,WAAW,GAAG,MAAM;SACxB,UAAU,CAAC,MAAM,CAAC;SAClB,MAAM,CAAC,uBAAuB,CAAC;SAC/B,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEd,OAAO,GAAG,WAAW,IAAI,WAAW,EAAE,CAAC;AACxC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { createManagedVm as createManagedVmFromCore, type ManagedVm } from '@shravansunder/agent-vm-gondolin-core';
1
+ import { createManagedVm as createManagedVmFromCore, type ManagedVm } from '@shravansunder/gondolin-core';
2
2
  import { buildGondolinImage as buildGondolinImageDefault } from '../build/gondolin-image-builder.js';
3
3
  import type { SystemConfig } from '../config/system-config.js';
4
4
  import type { ToolProfile } from '../controller/leases/lease-manager.js';
@@ -1 +1 @@
1
- {"version":3,"file":"tool-vm-lifecycle.d.ts","sourceRoot":"","sources":["../../src/tool-vm/tool-vm-lifecycle.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,eAAe,IAAI,uBAAuB,EAC1C,KAAK,SAAS,EACd,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAE,kBAAkB,IAAI,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AACrG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAEzE,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE;QACvC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;KAC7B,KAAK,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC;IACnD,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,uBAAuB,CAAC;CAC1D;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE;IACxD,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB,GAAG,MAAM,CAET;AAED,wBAAsB,oBAAoB,CAAC,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAepF;AAED,wBAAsB,YAAY,CACjC,OAAO,EAAE;IACR,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB,EACD,YAAY,GAAE,2BAAgC,GAC5C,OAAO,CAAC,SAAS,CAAC,CAgCpB"}
1
+ {"version":3,"file":"tool-vm-lifecycle.d.ts","sourceRoot":"","sources":["../../src/tool-vm/tool-vm-lifecycle.ts"],"names":[],"mappings":"AAIA,OAAO,EACN,eAAe,IAAI,uBAAuB,EAC1C,KAAK,SAAS,EACd,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,kBAAkB,IAAI,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AACrG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAEzE,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE;QACvC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;KAC7B,KAAK,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC;IACnD,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,uBAAuB,CAAC;CAC1D;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE;IACxD,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB,GAAG,MAAM,CAET;AAED,wBAAsB,oBAAoB,CAAC,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAepF;AAED,wBAAsB,YAAY,CACjC,OAAO,EAAE;IACR,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB,EACD,YAAY,GAAE,2BAAgC,GAC5C,OAAO,CAAC,SAAS,CAAC,CAoCpB"}