@agent-vm/agent-vm 0.0.33 → 0.0.34
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.
- package/dist/build/gondolin-image-builder.d.ts.map +1 -1
- package/dist/build/gondolin-image-builder.js +7 -12
- package/dist/build/gondolin-image-builder.js.map +1 -1
- package/dist/cli/agent-vm-cli-support.d.ts +7 -0
- package/dist/cli/agent-vm-cli-support.d.ts.map +1 -1
- package/dist/cli/agent-vm-cli-support.js +2 -0
- package/dist/cli/agent-vm-cli-support.js.map +1 -1
- package/dist/cli/build-command.d.ts.map +1 -1
- package/dist/cli/build-command.js +15 -7
- package/dist/cli/build-command.js.map +1 -1
- package/dist/cli/commands/command-definition-support.js +1 -1
- package/dist/cli/commands/command-definition-support.js.map +1 -1
- package/dist/cli/commands/create-app.d.ts +36 -0
- package/dist/cli/commands/create-app.d.ts.map +1 -1
- package/dist/cli/commands/create-app.js +2 -0
- package/dist/cli/commands/create-app.js.map +1 -1
- package/dist/cli/commands/manual-definition.d.ts +31 -0
- package/dist/cli/commands/manual-definition.d.ts.map +1 -0
- package/dist/cli/commands/manual-definition.js +64 -0
- package/dist/cli/commands/manual-definition.js.map +1 -0
- package/dist/cli/controller-operation-commands.d.ts.map +1 -1
- package/dist/cli/controller-operation-commands.js +2 -1
- package/dist/cli/controller-operation-commands.js.map +1 -1
- package/dist/cli/init-command.d.ts.map +1 -1
- package/dist/cli/init-command.js +68 -42
- package/dist/cli/init-command.js.map +1 -1
- package/dist/cli/manual-commands.d.ts +10 -0
- package/dist/cli/manual-commands.d.ts.map +1 -0
- package/dist/cli/manual-commands.js +25 -0
- package/dist/cli/manual-commands.js.map +1 -0
- package/dist/cli/manual-templates.d.ts +12 -0
- package/dist/cli/manual-templates.d.ts.map +1 -0
- package/dist/cli/manual-templates.js +214 -0
- package/dist/cli/manual-templates.js.map +1 -0
- package/dist/config/json-config-file.d.ts +2 -0
- package/dist/config/json-config-file.d.ts.map +1 -0
- package/dist/config/json-config-file.js +32 -0
- package/dist/config/json-config-file.js.map +1 -0
- package/dist/config/system-config.d.ts.map +1 -1
- package/dist/config/system-config.js +19 -10
- package/dist/config/system-config.js.map +1 -1
- package/dist/controller/controller-runtime-types.d.ts +1 -1
- package/dist/controller/controller-runtime-types.d.ts.map +1 -1
- package/dist/controller/controller-runtime.js +2 -2
- package/dist/controller/controller-runtime.js.map +1 -1
- package/dist/controller/http/controller-http-routes.d.ts +2 -2
- package/dist/controller/http/controller-http-routes.d.ts.map +1 -1
- package/dist/controller/http/controller-http-routes.js +55 -25
- package/dist/controller/http/controller-http-routes.js.map +1 -1
- package/dist/controller/http/controller-request-schemas.d.ts +2 -2
- package/dist/controller/http/controller-request-schemas.d.ts.map +1 -1
- package/dist/controller/http/controller-request-schemas.js +2 -2
- package/dist/controller/http/controller-request-schemas.js.map +1 -1
- package/dist/controller/leases/agent-sandbox-seeding.d.ts +11 -5
- package/dist/controller/leases/agent-sandbox-seeding.d.ts.map +1 -1
- package/dist/controller/leases/agent-sandbox-seeding.js +28 -20
- package/dist/controller/leases/agent-sandbox-seeding.js.map +1 -1
- package/dist/controller/leases/lease-manager.d.ts +3 -3
- package/dist/controller/leases/lease-manager.d.ts.map +1 -1
- package/dist/controller/leases/lease-manager.js +23 -6
- package/dist/controller/leases/lease-manager.js.map +1 -1
- package/dist/controller/leases/lease-work-mount-paths.d.ts +17 -0
- package/dist/controller/leases/lease-work-mount-paths.d.ts.map +1 -0
- package/dist/controller/leases/lease-work-mount-paths.js +120 -0
- package/dist/controller/leases/lease-work-mount-paths.js.map +1 -0
- package/dist/controller/worker-task-runner.d.ts.map +1 -1
- package/dist/controller/worker-task-runner.js +32 -10
- package/dist/controller/worker-task-runner.js.map +1 -1
- package/dist/controller/zone-runtimes/zone-runtime-types.d.ts +1 -1
- package/dist/controller/zone-runtimes/zone-runtime-types.d.ts.map +1 -1
- package/dist/gateway/gateway-image-builder.d.ts.map +1 -1
- package/dist/gateway/gateway-image-builder.js +2 -2
- package/dist/gateway/gateway-image-builder.js.map +1 -1
- package/dist/tool-vm/tool-vm-lifecycle.d.ts +3 -3
- package/dist/tool-vm/tool-vm-lifecycle.d.ts.map +1 -1
- package/dist/tool-vm/tool-vm-lifecycle.js +12 -12
- package/dist/tool-vm/tool-vm-lifecycle.js.map +1 -1
- package/package.json +8 -7
- package/dist/controller/leases/lease-workspace-paths.d.ts +0 -14
- package/dist/controller/leases/lease-workspace-paths.d.ts.map +0 -1
- package/dist/controller/leases/lease-workspace-paths.js +0 -104
- package/dist/controller/leases/lease-workspace-paths.js.map +0 -1
|
@@ -1,14 +1,24 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
1
2
|
import { Hono } from 'hono';
|
|
2
|
-
import { seedAgentSandboxWorkspace, } from '../leases/agent-sandbox-seeding.js';
|
|
3
|
+
import { SandboxSeedingError, seedAgentSandboxWorkspace, } from '../leases/agent-sandbox-seeding.js';
|
|
3
4
|
import { LeaseScopeConflictError } from '../leases/lease-manager.js';
|
|
4
5
|
import { parseAgentIdFromScopeKey } from '../leases/lease-scope.js';
|
|
5
|
-
import {
|
|
6
|
+
import { LeaseWorkMountValidationError, resolveLeaseWorkMountDir as resolveLeaseWorkMountDirForZone, } from '../leases/lease-work-mount-paths.js';
|
|
6
7
|
import { readIdentityPemFromFile, serializeLeasePeekForResponse, serializeLeaseForResponse, } from './controller-http-route-support.js';
|
|
7
8
|
import { controllerLeaseCreateRequestSchema } from './controller-request-schemas.js';
|
|
8
9
|
import { registerControllerZoneOperationRoutes } from './controller-zone-operation-routes.js';
|
|
9
10
|
function writeControllerLeaseLog(message) {
|
|
10
11
|
process.stderr.write(`[controller-http-routes] ${message}\n`);
|
|
11
12
|
}
|
|
13
|
+
function formatUnknownError(error) {
|
|
14
|
+
if (error instanceof Error) {
|
|
15
|
+
return error.stack ?? error.message;
|
|
16
|
+
}
|
|
17
|
+
return String(error);
|
|
18
|
+
}
|
|
19
|
+
function logLeaseCreationFailure(options) {
|
|
20
|
+
writeControllerLeaseLog(`[ERROR] lease creation failed diagnosticId='${options.diagnosticId}' status='${String(options.status)}' zone='${options.requestContext?.zoneId ?? '(unknown)'}' scope='${options.requestContext?.scopeKey ?? '(unknown)'}' workMountDir='${options.requestContext?.workMountDir ?? '(unknown)'}': ${formatUnknownError(options.error)}`);
|
|
21
|
+
}
|
|
12
22
|
function logAgentSandboxSeedResult(result) {
|
|
13
23
|
switch (result.kind) {
|
|
14
24
|
case 'seeded':
|
|
@@ -20,11 +30,11 @@ function logAgentSandboxSeedResult(result) {
|
|
|
20
30
|
case 'sandbox-root-missing':
|
|
21
31
|
writeControllerLeaseLog(`skipped sandbox seeding for zone '${result.zoneId}' scope '${result.scopeKey}': sandbox root '${result.sandboxRoot}' does not exist`);
|
|
22
32
|
return;
|
|
23
|
-
case '
|
|
24
|
-
writeControllerLeaseLog(`skipped sandbox seeding for zone '${result.zoneId}' scope '${result.scopeKey}':
|
|
33
|
+
case 'work-mount-missing':
|
|
34
|
+
writeControllerLeaseLog(`[WARN] skipped sandbox seeding for zone '${result.zoneId}' scope '${result.scopeKey}': work mount '${result.hostWorkMountDir}' does not exist`);
|
|
25
35
|
return;
|
|
26
|
-
case '
|
|
27
|
-
writeControllerLeaseLog(`skipped sandbox seeding for zone '${result.zoneId}' scope '${result.scopeKey}':
|
|
36
|
+
case 'work-mount-outside-sandbox':
|
|
37
|
+
writeControllerLeaseLog(`[WARN] skipped sandbox seeding for zone '${result.zoneId}' scope '${result.scopeKey}': work mount '${result.hostWorkMountDir}' is outside sandbox root '${result.sandboxRoot}'`);
|
|
28
38
|
return;
|
|
29
39
|
case 'no-seeds-configured':
|
|
30
40
|
case 'non-agent-scope':
|
|
@@ -36,6 +46,7 @@ export function createControllerApp(options) {
|
|
|
36
46
|
const app = new Hono();
|
|
37
47
|
const readIdentityPem = options.readIdentityPem ?? readIdentityPemFromFile;
|
|
38
48
|
app.post('/lease', async (context) => {
|
|
49
|
+
let requestContext;
|
|
39
50
|
try {
|
|
40
51
|
const parsedPayload = controllerLeaseCreateRequestSchema.safeParse(await context.req.json());
|
|
41
52
|
if (!parsedPayload.success) {
|
|
@@ -45,6 +56,11 @@ export function createControllerApp(options) {
|
|
|
45
56
|
}, 400);
|
|
46
57
|
}
|
|
47
58
|
const payload = parsedPayload.data;
|
|
59
|
+
requestContext = {
|
|
60
|
+
scopeKey: payload.scopeKey,
|
|
61
|
+
workMountDir: payload.workMountDir,
|
|
62
|
+
zoneId: payload.zoneId,
|
|
63
|
+
};
|
|
48
64
|
if (options.zoneIds
|
|
49
65
|
? !options.zoneIds.has(payload.zoneId)
|
|
50
66
|
: options.zoneDefaultToolVmProfiles &&
|
|
@@ -62,31 +78,45 @@ export function createControllerApp(options) {
|
|
|
62
78
|
if (!defaultToolVmProfile) {
|
|
63
79
|
return context.json({ error: `Unknown tool VM profile '${resolvedProfileId}'` }, 400);
|
|
64
80
|
}
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
})
|
|
71
|
-
: payload.workspaceDir;
|
|
81
|
+
const hostWorkMountDir = await options.resolveLeaseWorkMountDir({
|
|
82
|
+
scopeKey: payload.scopeKey,
|
|
83
|
+
workMountDir: payload.workMountDir,
|
|
84
|
+
zoneId: payload.zoneId,
|
|
85
|
+
});
|
|
72
86
|
const lease = await options.leaseManager.createLease({
|
|
73
87
|
agentWorkspaceDir: payload.agentWorkspaceDir,
|
|
74
88
|
profile: defaultToolVmProfile,
|
|
75
89
|
profileId: resolvedProfileId,
|
|
76
90
|
scopeKey: payload.scopeKey,
|
|
77
|
-
|
|
91
|
+
hostWorkMountDir,
|
|
78
92
|
zoneId: payload.zoneId,
|
|
79
93
|
});
|
|
80
94
|
return context.json(await serializeLeaseForResponse(lease, readIdentityPem));
|
|
81
95
|
}
|
|
82
96
|
catch (error) {
|
|
83
|
-
|
|
84
|
-
error: error
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
: error
|
|
88
|
-
|
|
89
|
-
|
|
97
|
+
if (error instanceof LeaseWorkMountValidationError) {
|
|
98
|
+
return context.json({ error: error.message, kind: error.kind }, 400);
|
|
99
|
+
}
|
|
100
|
+
if (error instanceof LeaseScopeConflictError) {
|
|
101
|
+
return context.json({ error: error.message }, 409);
|
|
102
|
+
}
|
|
103
|
+
const diagnosticId = randomUUID();
|
|
104
|
+
if (error instanceof SandboxSeedingError) {
|
|
105
|
+
logLeaseCreationFailure({
|
|
106
|
+
diagnosticId,
|
|
107
|
+
error,
|
|
108
|
+
requestContext,
|
|
109
|
+
status: 500,
|
|
110
|
+
});
|
|
111
|
+
return context.json({ error: 'sandbox-seeding-failed', diagnosticId, kind: error.kind }, 500);
|
|
112
|
+
}
|
|
113
|
+
logLeaseCreationFailure({
|
|
114
|
+
diagnosticId,
|
|
115
|
+
error,
|
|
116
|
+
requestContext,
|
|
117
|
+
status: 503,
|
|
118
|
+
});
|
|
119
|
+
return context.json({ error: 'lease-creation-failed', diagnosticId }, 503);
|
|
90
120
|
}
|
|
91
121
|
});
|
|
92
122
|
app.get('/lease/:leaseId/peek', async (context) => {
|
|
@@ -156,22 +186,22 @@ export function createControllerService(options) {
|
|
|
156
186
|
? []
|
|
157
187
|
: [[zone.id, zone.agentToolVmProfiles]])),
|
|
158
188
|
...(options.operations ? { operations: options.operations } : {}),
|
|
159
|
-
|
|
189
|
+
resolveLeaseWorkMountDir: async ({ scopeKey, workMountDir, zoneId }) => {
|
|
160
190
|
const zone = zonesById.get(zoneId);
|
|
161
191
|
if (!zone) {
|
|
162
192
|
throw new Error(`Unknown zone '${zoneId}'`);
|
|
163
193
|
}
|
|
164
|
-
const
|
|
194
|
+
const hostWorkMountDir = await resolveLeaseWorkMountDirForZone({ workMountDir, zone });
|
|
165
195
|
if (options.secretResolver) {
|
|
166
196
|
const seedResult = await seedAgentSandboxWorkspace({
|
|
167
197
|
scopeKey,
|
|
168
198
|
secretResolver: options.secretResolver,
|
|
169
|
-
|
|
199
|
+
hostWorkMountDir,
|
|
170
200
|
zone,
|
|
171
201
|
});
|
|
172
202
|
logAgentSandboxSeedResult(seedResult);
|
|
173
203
|
}
|
|
174
|
-
return
|
|
204
|
+
return hostWorkMountDir;
|
|
175
205
|
},
|
|
176
206
|
});
|
|
177
207
|
app.get('/health', (context) => context.json({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller-http-routes.js","sourceRoot":"","sources":["../../../src/controller/http/controller-http-routes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"controller-http-routes.js","sourceRoot":"","sources":["../../../src/controller/http/controller-http-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,9 +3,9 @@ export declare const controllerLeaseCreateRequestSchema: z.ZodObject<{
|
|
|
3
3
|
agentWorkspaceDir: z.ZodString;
|
|
4
4
|
profileId: z.ZodString;
|
|
5
5
|
scopeKey: z.ZodString;
|
|
6
|
-
|
|
6
|
+
workMountDir: z.ZodString;
|
|
7
7
|
zoneId: z.ZodString;
|
|
8
|
-
}, z.core.$
|
|
8
|
+
}, z.core.$strict>;
|
|
9
9
|
export declare const controllerDestroyZoneRequestSchema: z.ZodObject<{
|
|
10
10
|
purge: z.ZodOptional<z.ZodBoolean>;
|
|
11
11
|
}, z.core.$strip>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller-request-schemas.d.ts","sourceRoot":"","sources":["../../../src/controller/http/controller-request-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,kCAAkC;;;;;;
|
|
1
|
+
{"version":3,"file":"controller-request-schemas.d.ts","sourceRoot":"","sources":["../../../src/controller/http/controller-request-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,kCAAkC;;;;;;kBAM7C,CAAC;AAEH,eAAO,MAAM,kCAAkC;;iBAE7C,CAAC;AAEH,eAAO,MAAM,qCAAqC;;iBAEhD,CAAC;AAEH,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;kBAAoC,CAAC;AAEnF,eAAO,MAAM,mCAAmC;;;;;iBAS9C,CAAC;AAcH,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiB/C,CAAC;AAEH,eAAO,MAAM,kCAAkC;;;;;iBAU7C,CAAC;AAkHH,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAI9C,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { workerTaskControllerRequestSchema } from '../../config/resource-contracts/index.js';
|
|
3
|
-
export const controllerLeaseCreateRequestSchema = z.
|
|
3
|
+
export const controllerLeaseCreateRequestSchema = z.strictObject({
|
|
4
4
|
agentWorkspaceDir: z.string().min(1),
|
|
5
5
|
profileId: z.string().min(1),
|
|
6
6
|
scopeKey: z.string().min(1),
|
|
7
|
-
|
|
7
|
+
workMountDir: z.string().min(1),
|
|
8
8
|
zoneId: z.string().min(1),
|
|
9
9
|
});
|
|
10
10
|
export const controllerDestroyZoneRequestSchema = z.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller-request-schemas.js","sourceRoot":"","sources":["../../../src/controller/http/controller-request-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iCAAiC,EAAE,MAAM,0CAA0C,CAAC;AAE7F,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"controller-request-schemas.js","sourceRoot":"","sources":["../../../src/controller/http/controller-request-schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import type { SecretResolver } from '@agent-vm/gondolin-adapter';
|
|
2
2
|
import type { SystemConfig } from '../../config/system-config.js';
|
|
3
3
|
type ZoneConfig = SystemConfig['zones'][number];
|
|
4
|
+
export type SandboxSeedingErrorKind = 'parent-not-directory' | 'parent-resolves-outside-work-mount' | 'parent-symlink' | 'target-outside-work-mount';
|
|
5
|
+
export declare class SandboxSeedingError extends Error {
|
|
6
|
+
readonly kind: SandboxSeedingErrorKind;
|
|
7
|
+
constructor(kind: SandboxSeedingErrorKind, message: string);
|
|
8
|
+
}
|
|
4
9
|
export type AgentSandboxSeedResult = {
|
|
5
10
|
readonly kind: 'not-openclaw-zone';
|
|
6
11
|
readonly zoneId: string;
|
|
@@ -26,20 +31,21 @@ export type AgentSandboxSeedResult = {
|
|
|
26
31
|
readonly zoneId: string;
|
|
27
32
|
} | {
|
|
28
33
|
readonly agentId: string;
|
|
29
|
-
readonly kind: '
|
|
34
|
+
readonly kind: 'work-mount-missing';
|
|
30
35
|
readonly scopeKey: string;
|
|
31
|
-
readonly
|
|
36
|
+
readonly hostWorkMountDir: string;
|
|
32
37
|
readonly zoneId: string;
|
|
33
38
|
} | {
|
|
34
39
|
readonly agentId: string;
|
|
35
|
-
readonly kind: '
|
|
40
|
+
readonly kind: 'work-mount-outside-sandbox';
|
|
36
41
|
readonly sandboxRoot: string;
|
|
37
42
|
readonly scopeKey: string;
|
|
38
|
-
readonly
|
|
43
|
+
readonly hostWorkMountDir: string;
|
|
39
44
|
readonly zoneId: string;
|
|
40
45
|
} | {
|
|
41
46
|
readonly agentId: string;
|
|
42
47
|
readonly alreadyExisted: number;
|
|
48
|
+
readonly hostWorkMountDir: string;
|
|
43
49
|
readonly kind: 'seeded';
|
|
44
50
|
readonly scopeKey: string;
|
|
45
51
|
readonly written: number;
|
|
@@ -48,7 +54,7 @@ export type AgentSandboxSeedResult = {
|
|
|
48
54
|
export declare function seedAgentSandboxWorkspace(options: {
|
|
49
55
|
readonly scopeKey: string;
|
|
50
56
|
readonly secretResolver: SecretResolver;
|
|
51
|
-
readonly
|
|
57
|
+
readonly hostWorkMountDir: string;
|
|
52
58
|
readonly zone: ZoneConfig;
|
|
53
59
|
}): Promise<AgentSandboxSeedResult>;
|
|
54
60
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-sandbox-seeding.d.ts","sourceRoot":"","sources":["../../../src/controller/leases/agent-sandbox-seeding.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAa,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGlE,KAAK,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAGhD,MAAM,MAAM,sBAAsB,GAC/B;IACA,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACvB,GACD;IACA,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACvB,GACD;IACA,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACvB,GACD;IACA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACvB,GACD;IACA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACvB,GACD;IACA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"agent-sandbox-seeding.d.ts","sourceRoot":"","sources":["../../../src/controller/leases/agent-sandbox-seeding.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAa,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGlE,KAAK,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAGhD,MAAM,MAAM,uBAAuB,GAChC,sBAAsB,GACtB,oCAAoC,GACpC,gBAAgB,GAChB,2BAA2B,CAAC;AAE/B,qBAAa,mBAAoB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;gBAE3B,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,MAAM;CAI1D;AAED,MAAM,MAAM,sBAAsB,GAC/B;IACA,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACvB,GACD;IACA,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACvB,GACD;IACA,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACvB,GACD;IACA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACvB,GACD;IACA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACvB,GACD;IACA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACvB,GACD;IACA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,4BAA4B,CAAC;IAC5C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACvB,GACD;IACA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACvB,CAAC;AA6GL,wBAAsB,yBAAyB,CAAC,OAAO,EAAE;IACxD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC1B,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAmGlC"}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { lstat, mkdir, open, realpath } from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { parseAgentScopeKey } from './lease-scope.js';
|
|
4
|
+
export class SandboxSeedingError extends Error {
|
|
5
|
+
kind;
|
|
6
|
+
constructor(kind, message) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.kind = kind;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
4
11
|
function isNodeErrorCode(error, code) {
|
|
5
12
|
return error instanceof Error && 'code' in error && error.code === code;
|
|
6
13
|
}
|
|
@@ -24,7 +31,7 @@ async function writeSeedFileIfAbsent(options) {
|
|
|
24
31
|
try {
|
|
25
32
|
const targetParentPath = await ensureSeedParentDirectoryInsideWorkspace({
|
|
26
33
|
targetPath: options.targetPath,
|
|
27
|
-
|
|
34
|
+
hostWorkMountDir: options.hostWorkMountDir,
|
|
28
35
|
});
|
|
29
36
|
const safeTargetPath = path.join(targetParentPath, path.basename(options.targetPath));
|
|
30
37
|
fileHandle = await open(safeTargetPath, 'wx', options.mode);
|
|
@@ -46,12 +53,12 @@ async function writeSeedFileIfAbsent(options) {
|
|
|
46
53
|
}
|
|
47
54
|
async function ensureSeedParentDirectoryInsideWorkspace(options) {
|
|
48
55
|
const targetParentPath = path.dirname(options.targetPath);
|
|
49
|
-
const relativeParentPath = path.relative(options.
|
|
56
|
+
const relativeParentPath = path.relative(options.hostWorkMountDir, targetParentPath);
|
|
50
57
|
if (relativeParentPath !== '' &&
|
|
51
58
|
(relativeParentPath.startsWith('..') || path.isAbsolute(relativeParentPath))) {
|
|
52
|
-
throw new
|
|
59
|
+
throw new SandboxSeedingError('parent-resolves-outside-work-mount', `Agent sandbox seed target parent '${targetParentPath}' resolves outside work mount '${options.hostWorkMountDir}'.`);
|
|
53
60
|
}
|
|
54
|
-
let currentPath = options.
|
|
61
|
+
let currentPath = options.hostWorkMountDir;
|
|
55
62
|
/* oxlint-disable no-await-in-loop -- each path segment must be validated before the next segment can be trusted */
|
|
56
63
|
for (const segment of relativeParentPath.split(path.sep).filter((part) => part.length > 0)) {
|
|
57
64
|
currentPath = path.join(currentPath, segment);
|
|
@@ -66,14 +73,14 @@ async function ensureSeedParentDirectoryInsideWorkspace(options) {
|
|
|
66
73
|
entry = await lstat(currentPath);
|
|
67
74
|
}
|
|
68
75
|
if (entry.isSymbolicLink()) {
|
|
69
|
-
throw new
|
|
76
|
+
throw new SandboxSeedingError('parent-symlink', `Agent sandbox seed parent '${currentPath}' must not be a symlink.`);
|
|
70
77
|
}
|
|
71
78
|
if (!entry.isDirectory()) {
|
|
72
|
-
throw new
|
|
79
|
+
throw new SandboxSeedingError('parent-not-directory', `Agent sandbox seed parent '${currentPath}' is not a directory.`);
|
|
73
80
|
}
|
|
74
81
|
const resolvedPath = await realpath(currentPath);
|
|
75
|
-
if (!isPathWithin(resolvedPath, options.
|
|
76
|
-
throw new
|
|
82
|
+
if (!isPathWithin(resolvedPath, options.hostWorkMountDir)) {
|
|
83
|
+
throw new SandboxSeedingError('parent-resolves-outside-work-mount', `Agent sandbox seed parent '${currentPath}' resolves outside work mount '${options.hostWorkMountDir}'.`);
|
|
77
84
|
}
|
|
78
85
|
currentPath = resolvedPath;
|
|
79
86
|
}
|
|
@@ -123,52 +130,53 @@ export async function seedAgentSandboxWorkspace(options) {
|
|
|
123
130
|
}
|
|
124
131
|
throw error;
|
|
125
132
|
}
|
|
126
|
-
let
|
|
133
|
+
let hostWorkMountDir;
|
|
127
134
|
try {
|
|
128
|
-
|
|
135
|
+
hostWorkMountDir = await realpath(options.hostWorkMountDir);
|
|
129
136
|
}
|
|
130
137
|
catch (error) {
|
|
131
138
|
if (isNodeErrorCode(error, 'ENOENT')) {
|
|
132
139
|
return {
|
|
133
140
|
agentId,
|
|
134
|
-
kind: '
|
|
141
|
+
kind: 'work-mount-missing',
|
|
135
142
|
scopeKey: options.scopeKey,
|
|
136
|
-
|
|
143
|
+
hostWorkMountDir: options.hostWorkMountDir,
|
|
137
144
|
zoneId: options.zone.id,
|
|
138
145
|
};
|
|
139
146
|
}
|
|
140
147
|
throw error;
|
|
141
148
|
}
|
|
142
|
-
if (!isPathWithin(
|
|
149
|
+
if (!isPathWithin(hostWorkMountDir, sandboxRoot)) {
|
|
143
150
|
return {
|
|
144
151
|
agentId,
|
|
145
|
-
kind: '
|
|
152
|
+
kind: 'work-mount-outside-sandbox',
|
|
146
153
|
sandboxRoot,
|
|
147
154
|
scopeKey: options.scopeKey,
|
|
148
|
-
|
|
155
|
+
hostWorkMountDir,
|
|
149
156
|
zoneId: options.zone.id,
|
|
150
157
|
};
|
|
151
158
|
}
|
|
152
159
|
const seedResults = await Promise.all(seeds.map(async (seed) => {
|
|
153
|
-
const targetPath = path.resolve(
|
|
154
|
-
if (!isPathWithin(targetPath,
|
|
155
|
-
throw new
|
|
160
|
+
const targetPath = path.resolve(hostWorkMountDir, seed.target);
|
|
161
|
+
if (!isPathWithin(targetPath, hostWorkMountDir)) {
|
|
162
|
+
throw new SandboxSeedingError('target-outside-work-mount', `Agent sandbox seed target '${seed.target}' resolves outside work mount '${hostWorkMountDir}'.`);
|
|
156
163
|
}
|
|
157
164
|
await ensureSeedParentDirectoryInsideWorkspace({
|
|
158
165
|
targetPath,
|
|
159
|
-
|
|
166
|
+
hostWorkMountDir,
|
|
160
167
|
});
|
|
161
168
|
const content = await options.secretResolver.resolve(toSecretRef(seed));
|
|
162
169
|
return await writeSeedFileIfAbsent({
|
|
163
170
|
content,
|
|
164
171
|
mode: seed.mode,
|
|
165
172
|
targetPath,
|
|
166
|
-
|
|
173
|
+
hostWorkMountDir,
|
|
167
174
|
});
|
|
168
175
|
}));
|
|
169
176
|
return {
|
|
170
177
|
agentId,
|
|
171
178
|
alreadyExisted: seedResults.filter((result) => result === 'already-existed').length,
|
|
179
|
+
hostWorkMountDir,
|
|
172
180
|
kind: 'seeded',
|
|
173
181
|
scopeKey: options.scopeKey,
|
|
174
182
|
written: seedResults.filter((result) => result === 'written').length,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-sandbox-seeding.js","sourceRoot":"","sources":["../../../src/controller/leases/agent-sandbox-seeding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,IAAI,MAAM,WAAW,CAAC;AAK7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-sandbox-seeding.js","sourceRoot":"","sources":["../../../src/controller/leases/agent-sandbox-seeding.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ export interface Lease {
|
|
|
21
21
|
};
|
|
22
22
|
readonly tcpSlot: number;
|
|
23
23
|
readonly vm: ManagedVm;
|
|
24
|
-
readonly
|
|
24
|
+
readonly hostWorkMountDir: string;
|
|
25
25
|
readonly zoneId: string;
|
|
26
26
|
}
|
|
27
27
|
export interface LeaseRenewal {
|
|
@@ -39,7 +39,7 @@ export interface LeaseManager {
|
|
|
39
39
|
readonly profile: ToolVmProfile;
|
|
40
40
|
readonly profileId: string;
|
|
41
41
|
readonly scopeKey: string;
|
|
42
|
-
readonly
|
|
42
|
+
readonly hostWorkMountDir: string;
|
|
43
43
|
readonly zoneId: string;
|
|
44
44
|
}): Promise<Lease>;
|
|
45
45
|
keepLeaseAlive(leaseId: string): LeaseRenewal | undefined;
|
|
@@ -58,7 +58,7 @@ export declare function createLeaseManager(options: {
|
|
|
58
58
|
readonly profileId: string;
|
|
59
59
|
readonly scopeKey: string;
|
|
60
60
|
readonly tcpSlot: number;
|
|
61
|
-
readonly
|
|
61
|
+
readonly hostWorkMountDir: string;
|
|
62
62
|
readonly zoneId: string;
|
|
63
63
|
}) => Promise<ManagedVm>;
|
|
64
64
|
readonly now: () => number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lease-manager.d.ts","sourceRoot":"","sources":["../../../src/controller/leases/lease-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,KAAK;IACrB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE;QACnB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"lease-manager.d.ts","sourceRoot":"","sources":["../../../src/controller/leases/lease-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,KAAK;IACrB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE;QACnB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC5B,WAAW,CAAC,OAAO,EAAE;QACpB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;QACnC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;QAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACxB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACnB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;IAC1D,UAAU,IAAI,KAAK,EAAE,CAAC;IACtB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;IACtD,YAAY,CACX,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;KAAE,GACpD,OAAO,CAAC,IAAI,CAAC,CAAC;CACjB;AAED,qBAAa,uBAAwB,SAAQ,KAAK;CAAG;AAwDrD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAC3C,QAAQ,CAAC,eAAe,EAAE,CAAC,YAAY,EAAE;QACxC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;QACnC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;QAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACxB,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC1B,GAAG,YAAY,CAqLf"}
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
export class LeaseScopeConflictError extends Error {
|
|
2
2
|
}
|
|
3
|
+
function formatLeaseManagerError(error) {
|
|
4
|
+
return error instanceof Error ? error.message : String(error);
|
|
5
|
+
}
|
|
6
|
+
function writeLeaseManagerWarning(message) {
|
|
7
|
+
process.stderr.write(`[lease-manager] ${message}\n`);
|
|
8
|
+
}
|
|
3
9
|
function assertReusableScopeLease(existingLease, requestedLease) {
|
|
4
10
|
if (existingLease.profileId !== requestedLease.profileId) {
|
|
5
11
|
throw new LeaseScopeConflictError(`Tool VM lease scope conflict for zone '${requestedLease.zoneId}' scopeKey '${requestedLease.scopeKey}': existing profileId '${existingLease.profileId}' does not match requested profileId '${requestedLease.profileId}'.`);
|
|
6
12
|
}
|
|
7
|
-
if (existingLease.
|
|
8
|
-
throw new LeaseScopeConflictError(`Tool VM lease scope conflict for zone '${requestedLease.zoneId}' scopeKey '${requestedLease.scopeKey}': existing
|
|
13
|
+
if (existingLease.hostWorkMountDir !== requestedLease.hostWorkMountDir) {
|
|
14
|
+
throw new LeaseScopeConflictError(`Tool VM lease scope conflict for zone '${requestedLease.zoneId}' scopeKey '${requestedLease.scopeKey}': existing hostWorkMountDir '${existingLease.hostWorkMountDir}' does not match requested hostWorkMountDir '${requestedLease.hostWorkMountDir}'.`);
|
|
9
15
|
}
|
|
10
16
|
if (existingLease.agentWorkspaceDir !== requestedLease.agentWorkspaceDir) {
|
|
11
17
|
throw new LeaseScopeConflictError(`Tool VM lease scope conflict for zone '${requestedLease.zoneId}' scopeKey '${requestedLease.scopeKey}': existing agentWorkspaceDir '${existingLease.agentWorkspaceDir}' does not match requested agentWorkspaceDir '${requestedLease.agentWorkspaceDir}'.`);
|
|
@@ -16,7 +22,8 @@ async function isLeaseVmLive(lease) {
|
|
|
16
22
|
const result = await lease.vm.exec('true');
|
|
17
23
|
return result.exitCode === 0;
|
|
18
24
|
}
|
|
19
|
-
catch {
|
|
25
|
+
catch (error) {
|
|
26
|
+
writeLeaseManagerWarning(`liveness check failed for lease '${lease.id}' in zone '${lease.zoneId}': ${formatLeaseManagerError(error)}`);
|
|
20
27
|
return false;
|
|
21
28
|
}
|
|
22
29
|
}
|
|
@@ -73,7 +80,12 @@ export function createLeaseManager(options) {
|
|
|
73
80
|
async function evictLease(lease) {
|
|
74
81
|
deleteLease(lease);
|
|
75
82
|
options.tcpPool.release(lease.tcpSlot);
|
|
76
|
-
|
|
83
|
+
try {
|
|
84
|
+
await lease.vm.close();
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
writeLeaseManagerWarning(`failed to close evicted lease '${lease.id}' in zone '${lease.zoneId}': ${formatLeaseManagerError(error)}`);
|
|
88
|
+
}
|
|
77
89
|
}
|
|
78
90
|
return {
|
|
79
91
|
async createLease(leaseOptions) {
|
|
@@ -110,14 +122,19 @@ export function createLeaseManager(options) {
|
|
|
110
122
|
sshAccess,
|
|
111
123
|
tcpSlot,
|
|
112
124
|
vm,
|
|
113
|
-
|
|
125
|
+
hostWorkMountDir: leaseOptions.hostWorkMountDir,
|
|
114
126
|
zoneId: leaseOptions.zoneId,
|
|
115
127
|
};
|
|
116
128
|
storeLease(lease);
|
|
117
129
|
return lease;
|
|
118
130
|
}
|
|
119
131
|
catch (error) {
|
|
120
|
-
|
|
132
|
+
try {
|
|
133
|
+
await vm.close();
|
|
134
|
+
}
|
|
135
|
+
catch (closeError) {
|
|
136
|
+
writeLeaseManagerWarning(`failed to close partially-created lease VM for zone '${leaseOptions.zoneId}' scope '${leaseOptions.scopeKey}': ${formatLeaseManagerError(closeError)}`);
|
|
137
|
+
}
|
|
121
138
|
throw error;
|
|
122
139
|
}
|
|
123
140
|
}
|