@agent-vm/agent-vm 0.0.32 → 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.
Files changed (150) hide show
  1. package/dist/build/gondolin-image-builder.d.ts.map +1 -1
  2. package/dist/build/gondolin-image-builder.js +7 -12
  3. package/dist/build/gondolin-image-builder.js.map +1 -1
  4. package/dist/cli/agent-vm-cli-support.d.ts +7 -0
  5. package/dist/cli/agent-vm-cli-support.d.ts.map +1 -1
  6. package/dist/cli/agent-vm-cli-support.js +2 -0
  7. package/dist/cli/agent-vm-cli-support.js.map +1 -1
  8. package/dist/cli/build-command.d.ts.map +1 -1
  9. package/dist/cli/build-command.js +15 -7
  10. package/dist/cli/build-command.js.map +1 -1
  11. package/dist/cli/commands/command-definition-support.js +1 -1
  12. package/dist/cli/commands/command-definition-support.js.map +1 -1
  13. package/dist/cli/commands/controller-definition.d.ts +24 -24
  14. package/dist/cli/commands/create-app.d.ts +60 -24
  15. package/dist/cli/commands/create-app.d.ts.map +1 -1
  16. package/dist/cli/commands/create-app.js +2 -0
  17. package/dist/cli/commands/create-app.js.map +1 -1
  18. package/dist/cli/commands/manual-definition.d.ts +31 -0
  19. package/dist/cli/commands/manual-definition.d.ts.map +1 -0
  20. package/dist/cli/commands/manual-definition.js +64 -0
  21. package/dist/cli/commands/manual-definition.js.map +1 -0
  22. package/dist/cli/controller-operation-commands.d.ts.map +1 -1
  23. package/dist/cli/controller-operation-commands.js +2 -1
  24. package/dist/cli/controller-operation-commands.js.map +1 -1
  25. package/dist/cli/init-command.d.ts.map +1 -1
  26. package/dist/cli/init-command.js +83 -52
  27. package/dist/cli/init-command.js.map +1 -1
  28. package/dist/cli/manual-commands.d.ts +10 -0
  29. package/dist/cli/manual-commands.d.ts.map +1 -0
  30. package/dist/cli/manual-commands.js +25 -0
  31. package/dist/cli/manual-commands.js.map +1 -0
  32. package/dist/cli/manual-templates.d.ts +12 -0
  33. package/dist/cli/manual-templates.d.ts.map +1 -0
  34. package/dist/cli/manual-templates.js +214 -0
  35. package/dist/cli/manual-templates.js.map +1 -0
  36. package/dist/config/json-config-file.d.ts +2 -0
  37. package/dist/config/json-config-file.d.ts.map +1 -0
  38. package/dist/config/json-config-file.js +32 -0
  39. package/dist/config/json-config-file.js.map +1 -0
  40. package/dist/config/system-config.d.ts +35 -4
  41. package/dist/config/system-config.d.ts.map +1 -1
  42. package/dist/config/system-config.js +127 -27
  43. package/dist/config/system-config.js.map +1 -1
  44. package/dist/controller/active-task-registry.d.ts +4 -1
  45. package/dist/controller/active-task-registry.d.ts.map +1 -1
  46. package/dist/controller/active-task-registry.js +19 -2
  47. package/dist/controller/active-task-registry.js.map +1 -1
  48. package/dist/controller/controller-runtime-operations.d.ts +15 -31
  49. package/dist/controller/controller-runtime-operations.d.ts.map +1 -1
  50. package/dist/controller/controller-runtime-operations.js +17 -92
  51. package/dist/controller/controller-runtime-operations.js.map +1 -1
  52. package/dist/controller/controller-runtime-types.d.ts +17 -12
  53. package/dist/controller/controller-runtime-types.d.ts.map +1 -1
  54. package/dist/controller/controller-runtime.d.ts.map +1 -1
  55. package/dist/controller/controller-runtime.js +126 -250
  56. package/dist/controller/controller-runtime.js.map +1 -1
  57. package/dist/controller/git-pull-default-operations.js +1 -1
  58. package/dist/controller/git-pull-default-operations.js.map +1 -1
  59. package/dist/controller/git-push-operations.js +1 -1
  60. package/dist/controller/git-push-operations.js.map +1 -1
  61. package/dist/controller/http/controller-http-route-support.d.ts +2 -2
  62. package/dist/controller/http/controller-http-route-support.d.ts.map +1 -1
  63. package/dist/controller/http/controller-http-route-support.js.map +1 -1
  64. package/dist/controller/http/controller-http-routes.d.ts +8 -4
  65. package/dist/controller/http/controller-http-routes.d.ts.map +1 -1
  66. package/dist/controller/http/controller-http-routes.js +102 -26
  67. package/dist/controller/http/controller-http-routes.js.map +1 -1
  68. package/dist/controller/http/controller-request-schemas.d.ts +2 -2
  69. package/dist/controller/http/controller-request-schemas.d.ts.map +1 -1
  70. package/dist/controller/http/controller-request-schemas.js +2 -2
  71. package/dist/controller/http/controller-request-schemas.js.map +1 -1
  72. package/dist/controller/http/controller-zone-operation-routes.d.ts.map +1 -1
  73. package/dist/controller/http/controller-zone-operation-routes.js +130 -11
  74. package/dist/controller/http/controller-zone-operation-routes.js.map +1 -1
  75. package/dist/controller/leases/agent-sandbox-seeding.d.ts +61 -0
  76. package/dist/controller/leases/agent-sandbox-seeding.d.ts.map +1 -0
  77. package/dist/controller/leases/agent-sandbox-seeding.js +186 -0
  78. package/dist/controller/leases/agent-sandbox-seeding.js.map +1 -0
  79. package/dist/controller/leases/idle-reaper.d.ts +4 -1
  80. package/dist/controller/leases/idle-reaper.d.ts.map +1 -1
  81. package/dist/controller/leases/idle-reaper.js +19 -8
  82. package/dist/controller/leases/idle-reaper.js.map +1 -1
  83. package/dist/controller/leases/lease-idle-policy.d.ts +12 -0
  84. package/dist/controller/leases/lease-idle-policy.d.ts.map +1 -0
  85. package/dist/controller/leases/lease-idle-policy.js +28 -0
  86. package/dist/controller/leases/lease-idle-policy.js.map +1 -0
  87. package/dist/controller/leases/lease-manager.d.ts +6 -6
  88. package/dist/controller/leases/lease-manager.d.ts.map +1 -1
  89. package/dist/controller/leases/lease-manager.js +23 -6
  90. package/dist/controller/leases/lease-manager.js.map +1 -1
  91. package/dist/controller/leases/lease-scope.d.ts +12 -0
  92. package/dist/controller/leases/lease-scope.d.ts.map +1 -0
  93. package/dist/controller/leases/lease-scope.js +19 -0
  94. package/dist/controller/leases/lease-scope.js.map +1 -0
  95. package/dist/controller/leases/lease-work-mount-paths.d.ts +17 -0
  96. package/dist/controller/leases/lease-work-mount-paths.d.ts.map +1 -0
  97. package/dist/controller/leases/lease-work-mount-paths.js +120 -0
  98. package/dist/controller/leases/lease-work-mount-paths.js.map +1 -0
  99. package/dist/controller/worker-task-runner.d.ts.map +1 -1
  100. package/dist/controller/worker-task-runner.js +32 -10
  101. package/dist/controller/worker-task-runner.js.map +1 -1
  102. package/dist/controller/zone-runtimes/openclaw-zone-runtime.d.ts +30 -0
  103. package/dist/controller/zone-runtimes/openclaw-zone-runtime.d.ts.map +1 -0
  104. package/dist/controller/zone-runtimes/openclaw-zone-runtime.js +110 -0
  105. package/dist/controller/zone-runtimes/openclaw-zone-runtime.js.map +1 -0
  106. package/dist/controller/zone-runtimes/worker-zone-runtime.d.ts +33 -0
  107. package/dist/controller/zone-runtimes/worker-zone-runtime.d.ts.map +1 -0
  108. package/dist/controller/zone-runtimes/worker-zone-runtime.js +224 -0
  109. package/dist/controller/zone-runtimes/worker-zone-runtime.js.map +1 -0
  110. package/dist/controller/zone-runtimes/zone-runtime-errors.d.ts +51 -0
  111. package/dist/controller/zone-runtimes/zone-runtime-errors.d.ts.map +1 -0
  112. package/dist/controller/zone-runtimes/zone-runtime-errors.js +94 -0
  113. package/dist/controller/zone-runtimes/zone-runtime-errors.js.map +1 -0
  114. package/dist/controller/zone-runtimes/zone-runtime-registry.d.ts +26 -0
  115. package/dist/controller/zone-runtimes/zone-runtime-registry.d.ts.map +1 -0
  116. package/dist/controller/zone-runtimes/zone-runtime-registry.js +84 -0
  117. package/dist/controller/zone-runtimes/zone-runtime-registry.js.map +1 -0
  118. package/dist/controller/zone-runtimes/zone-runtime-types.d.ts +89 -0
  119. package/dist/controller/zone-runtimes/zone-runtime-types.d.ts.map +1 -0
  120. package/dist/controller/zone-runtimes/zone-runtime-types.js +2 -0
  121. package/dist/controller/zone-runtimes/zone-runtime-types.js.map +1 -0
  122. package/dist/gateway/gateway-image-builder.d.ts.map +1 -1
  123. package/dist/gateway/gateway-image-builder.js +2 -2
  124. package/dist/gateway/gateway-image-builder.js.map +1 -1
  125. package/dist/gateway/gateway-zone-support.d.ts.map +1 -1
  126. package/dist/gateway/gateway-zone-support.js +5 -2
  127. package/dist/gateway/gateway-zone-support.js.map +1 -1
  128. package/dist/index.d.ts +1 -0
  129. package/dist/index.d.ts.map +1 -1
  130. package/dist/index.js +1 -0
  131. package/dist/index.js.map +1 -1
  132. package/dist/operations/config-validation.d.ts.map +1 -1
  133. package/dist/operations/config-validation.js +48 -2
  134. package/dist/operations/config-validation.js.map +1 -1
  135. package/dist/operations/controller-status.d.ts +13 -8
  136. package/dist/operations/controller-status.d.ts.map +1 -1
  137. package/dist/operations/controller-status.js +13 -10
  138. package/dist/operations/controller-status.js.map +1 -1
  139. package/dist/operations/doctor.d.ts.map +1 -1
  140. package/dist/operations/doctor.js +64 -6
  141. package/dist/operations/doctor.js.map +1 -1
  142. package/dist/tool-vm/tool-vm-lifecycle.d.ts +5 -5
  143. package/dist/tool-vm/tool-vm-lifecycle.d.ts.map +1 -1
  144. package/dist/tool-vm/tool-vm-lifecycle.js +12 -12
  145. package/dist/tool-vm/tool-vm-lifecycle.js.map +1 -1
  146. package/package.json +8 -7
  147. package/dist/controller/leases/lease-workspace-paths.d.ts +0 -14
  148. package/dist/controller/leases/lease-workspace-paths.d.ts.map +0 -1
  149. package/dist/controller/leases/lease-workspace-paths.js +0 -104
  150. package/dist/controller/leases/lease-workspace-paths.js.map +0 -1
@@ -3,6 +3,7 @@ import { PullDefaultValidationError } from '../git-pull-default-operations.js';
3
3
  import { PushBranchesValidationError } from '../git-push-operations.js';
4
4
  import { buildTaskConfigFromPreparedInput } from '../task-config-builder.js';
5
5
  import { writeTaskFailureSentinel } from '../task-state-reader.js';
6
+ import { ControllerZoneConfigurationError, ControllerZoneNotFoundError, ControllerZoneOperationUnsupportedError, ControllerZoneTaskNotFoundError, ControllerZoneTaskNotReadyError, ControllerZoneWorkerCloseAggregateError, ControllerZoneWorkerCloseError, ControllerZoneRuntimeStartError, ControllerZoneRuntimeUnavailableError, } from '../zone-runtimes/zone-runtime-errors.js';
6
7
  import { ControllerRuntimeAtCapacityError, ControllerTaskNotReadyError, } from './controller-http-route-support.js';
7
8
  import { controllerDestroyZoneRequestSchema, controllerExecuteCommandRequestSchema, controllerPullDefaultRequestSchema, controllerPushBranchesRequestSchema, controllerWorkerTaskRequestSchema, } from './controller-request-schemas.js';
8
9
  class JsonBodyParseError extends Error {
@@ -51,20 +52,122 @@ async function parseJsonBodyWithSchema(context, schema, invalidRequestError) {
51
52
  function writeControllerRouteLog(message) {
52
53
  process.stderr.write(`[controller-zone-operation-routes] ${message}\n`);
53
54
  }
55
+ function zoneRuntimeErrorStatus(error) {
56
+ if (error instanceof ControllerZoneNotFoundError ||
57
+ error instanceof ControllerZoneTaskNotFoundError) {
58
+ return 404;
59
+ }
60
+ if (error instanceof ControllerZoneOperationUnsupportedError) {
61
+ return 405;
62
+ }
63
+ if (error instanceof ControllerZoneRuntimeUnavailableError) {
64
+ return 409;
65
+ }
66
+ if (error instanceof ControllerZoneTaskNotReadyError) {
67
+ return 409;
68
+ }
69
+ if (error instanceof ControllerZoneWorkerCloseError ||
70
+ error instanceof ControllerZoneWorkerCloseAggregateError) {
71
+ return 502;
72
+ }
73
+ if (error instanceof ControllerZoneRuntimeStartError) {
74
+ return 503;
75
+ }
76
+ if (error instanceof ControllerZoneConfigurationError) {
77
+ return 412;
78
+ }
79
+ return 500;
80
+ }
81
+ function zoneRuntimeErrorBody(error) {
82
+ if (error instanceof ControllerZoneOperationUnsupportedError) {
83
+ return {
84
+ error: error.message,
85
+ gatewayType: error.gatewayType,
86
+ operationName: error.operationName,
87
+ zoneId: error.zoneId,
88
+ };
89
+ }
90
+ if (error instanceof ControllerZoneTaskNotReadyError) {
91
+ return {
92
+ error: error.message,
93
+ kind: 'task-not-ready',
94
+ taskId: error.taskId,
95
+ zoneId: error.zoneId,
96
+ };
97
+ }
98
+ if (error instanceof ControllerZoneWorkerCloseError) {
99
+ return {
100
+ error: error.message,
101
+ body: error.body,
102
+ httpStatus: error.httpStatus,
103
+ kind: 'worker-close-failed',
104
+ taskId: error.taskId,
105
+ zoneId: error.zoneId,
106
+ };
107
+ }
108
+ if (error instanceof ControllerZoneWorkerCloseAggregateError) {
109
+ return {
110
+ error: error.message,
111
+ failures: error.failures.map((failure) => ({
112
+ body: failure.body,
113
+ httpStatus: failure.httpStatus,
114
+ taskId: failure.taskId,
115
+ })),
116
+ kind: 'worker-close-aggregate-failed',
117
+ zoneId: error.zoneId,
118
+ };
119
+ }
120
+ return {
121
+ error: error instanceof Error ? error.message : 'zone-operation-failed',
122
+ };
123
+ }
54
124
  export function registerControllerZoneOperationRoutes(app, operations) {
55
125
  app.get('/controller-status', async (context) => context.json(await operations.getStatus()));
56
- app.get('/zones/:zoneId/status', async (context) => context.json(await operations.getZoneStatus(context.req.param('zoneId'))));
57
- app.get('/zones/:zoneId/logs', async (context) => context.json(await operations.getZoneLogs(context.req.param('zoneId'))));
58
- app.post('/zones/:zoneId/credentials/refresh', async (context) => context.json(await operations.refreshZoneCredentials(context.req.param('zoneId'))));
126
+ app.get('/zones/:zoneId/status', async (context) => {
127
+ try {
128
+ return context.json(await operations.getZoneStatus(context.req.param('zoneId')));
129
+ }
130
+ catch (error) {
131
+ return context.json(zoneRuntimeErrorBody(error), zoneRuntimeErrorStatus(error));
132
+ }
133
+ });
134
+ app.get('/zones/:zoneId/logs', async (context) => {
135
+ try {
136
+ return context.json(await operations.getZoneLogs(context.req.param('zoneId')));
137
+ }
138
+ catch (error) {
139
+ return context.json(zoneRuntimeErrorBody(error), zoneRuntimeErrorStatus(error));
140
+ }
141
+ });
142
+ app.post('/zones/:zoneId/credentials/refresh', async (context) => {
143
+ try {
144
+ return context.json(await operations.refreshZoneCredentials(context.req.param('zoneId')));
145
+ }
146
+ catch (error) {
147
+ return context.json(zoneRuntimeErrorBody(error), zoneRuntimeErrorStatus(error));
148
+ }
149
+ });
59
150
  app.post('/zones/:zoneId/destroy', async (context) => {
60
151
  const parsedPayload = await parseJsonBodyWithSchema(context, controllerDestroyZoneRequestSchema, 'invalid-destroy-request');
61
152
  if (!parsedPayload.ok) {
62
153
  return parsedPayload.response;
63
154
  }
64
155
  const payload = parsedPayload.data;
65
- return context.json(await operations.destroyZone(context.req.param('zoneId'), payload.purge === true));
156
+ try {
157
+ return context.json(await operations.destroyZone(context.req.param('zoneId'), payload.purge === true));
158
+ }
159
+ catch (error) {
160
+ return context.json(zoneRuntimeErrorBody(error), zoneRuntimeErrorStatus(error));
161
+ }
162
+ });
163
+ app.post('/zones/:zoneId/upgrade', async (context) => {
164
+ try {
165
+ return context.json(await operations.upgradeZone(context.req.param('zoneId')));
166
+ }
167
+ catch (error) {
168
+ return context.json(zoneRuntimeErrorBody(error), zoneRuntimeErrorStatus(error));
169
+ }
66
170
  });
67
- app.post('/zones/:zoneId/upgrade', async (context) => context.json(await operations.upgradeZone(context.req.param('zoneId'))));
68
171
  if (operations.prepareWorkerTask && operations.executeWorkerTask) {
69
172
  const prepareWorkerTask = operations.prepareWorkerTask;
70
173
  const executeWorkerTask = operations.executeWorkerTask;
@@ -105,6 +208,10 @@ export function registerControllerZoneOperationRoutes(app, operations) {
105
208
  return context.json({ taskId: prepared.taskId, status: 'accepted' }, 202);
106
209
  }
107
210
  catch (error) {
211
+ const runtimeStatus = zoneRuntimeErrorStatus(error);
212
+ if (runtimeStatus !== 500) {
213
+ return context.json(zoneRuntimeErrorBody(error), runtimeStatus);
214
+ }
108
215
  if (error instanceof ControllerRuntimeAtCapacityError) {
109
216
  return context.json({
110
217
  status: 'at-capacity',
@@ -128,6 +235,10 @@ export function registerControllerZoneOperationRoutes(app, operations) {
128
235
  return context.json(state);
129
236
  }
130
237
  catch (error) {
238
+ const runtimeStatus = zoneRuntimeErrorStatus(error);
239
+ if (runtimeStatus !== 500) {
240
+ return context.json(zoneRuntimeErrorBody(error), runtimeStatus);
241
+ }
131
242
  const message = error instanceof Error ? error.message : 'get-task-state-failed';
132
243
  return context.json({ error: message }, 500);
133
244
  }
@@ -140,6 +251,10 @@ export function registerControllerZoneOperationRoutes(app, operations) {
140
251
  return context.json(await closeTaskForZone(context.req.param('zoneId'), context.req.param('taskId')));
141
252
  }
142
253
  catch (error) {
254
+ const runtimeStatus = zoneRuntimeErrorStatus(error);
255
+ if (runtimeStatus !== 500) {
256
+ return context.json(zoneRuntimeErrorBody(error), runtimeStatus);
257
+ }
143
258
  const message = error instanceof Error ? error.message : 'close-task-failed';
144
259
  if (error instanceof ControllerTaskNotReadyError) {
145
260
  return context.json({ status: 'not-ready', error: message }, 409);
@@ -159,6 +274,10 @@ export function registerControllerZoneOperationRoutes(app, operations) {
159
274
  return context.json(await pushTaskBranches(context.req.param('zoneId'), context.req.param('taskId'), parsedPayload.data));
160
275
  }
161
276
  catch (error) {
277
+ const runtimeStatus = zoneRuntimeErrorStatus(error);
278
+ if (runtimeStatus !== 500) {
279
+ return context.json(zoneRuntimeErrorBody(error), runtimeStatus);
280
+ }
162
281
  const message = error instanceof Error ? error.message : 'push-branches-failed';
163
282
  writeControllerRouteLog(`push-branches failed for zone '${context.req.param('zoneId')}' task '${context.req.param('taskId')}': ${message}`);
164
283
  return context.json({
@@ -178,6 +297,10 @@ export function registerControllerZoneOperationRoutes(app, operations) {
178
297
  return context.json(await pullDefaultForTask(context.req.param('zoneId'), context.req.param('taskId'), parsedPayload.data));
179
298
  }
180
299
  catch (error) {
300
+ const runtimeStatus = zoneRuntimeErrorStatus(error);
301
+ if (runtimeStatus !== 500) {
302
+ return context.json(zoneRuntimeErrorBody(error), runtimeStatus);
303
+ }
181
304
  const isValidationError = error instanceof PullDefaultValidationError;
182
305
  const message = scrubGithubTokenFromOutput(error instanceof Error ? error.message : 'pull-default-failed');
183
306
  const logDetail = scrubGithubTokenFromOutput(error instanceof Error
@@ -199,9 +322,7 @@ export function registerControllerZoneOperationRoutes(app, operations) {
199
322
  return context.json(await enableSshForZone(context.req.param('zoneId')));
200
323
  }
201
324
  catch (error) {
202
- return context.json({
203
- error: error instanceof Error ? error.message : 'zone-ssh-enable-failed',
204
- }, 500);
325
+ return context.json(zoneRuntimeErrorBody(error), zoneRuntimeErrorStatus(error));
205
326
  }
206
327
  });
207
328
  }
@@ -217,9 +338,7 @@ export function registerControllerZoneOperationRoutes(app, operations) {
217
338
  return context.json(await execInZone(context.req.param('zoneId'), payload.command));
218
339
  }
219
340
  catch (error) {
220
- return context.json({
221
- error: error instanceof Error ? error.message : 'zone-command-execution-failed',
222
- }, 500);
341
+ return context.json(zoneRuntimeErrorBody(error), zoneRuntimeErrorStatus(error));
223
342
  }
224
343
  });
225
344
  }
@@ -1 +1 @@
1
- {"version":3,"file":"controller-zone-operation-routes.js","sourceRoot":"","sources":["../../../src/controller/http/controller-zone-operation-routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller-zone-operation-routes.js","sourceRoot":"","sources":["../../../src/controller/http/controller-zone-operation-routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import type { SecretResolver } from '@agent-vm/gondolin-adapter';
2
+ import type { SystemConfig } from '../../config/system-config.js';
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
+ }
9
+ export type AgentSandboxSeedResult = {
10
+ readonly kind: 'not-openclaw-zone';
11
+ readonly zoneId: string;
12
+ } | {
13
+ readonly kind: 'non-agent-scope';
14
+ readonly scopeKey: string;
15
+ readonly zoneId: string;
16
+ } | {
17
+ readonly kind: 'malformed-agent-scope';
18
+ readonly reason: string;
19
+ readonly scopeKey: string;
20
+ readonly zoneId: string;
21
+ } | {
22
+ readonly agentId: string;
23
+ readonly kind: 'no-seeds-configured';
24
+ readonly scopeKey: string;
25
+ readonly zoneId: string;
26
+ } | {
27
+ readonly agentId: string;
28
+ readonly kind: 'sandbox-root-missing';
29
+ readonly sandboxRoot: string;
30
+ readonly scopeKey: string;
31
+ readonly zoneId: string;
32
+ } | {
33
+ readonly agentId: string;
34
+ readonly kind: 'work-mount-missing';
35
+ readonly scopeKey: string;
36
+ readonly hostWorkMountDir: string;
37
+ readonly zoneId: string;
38
+ } | {
39
+ readonly agentId: string;
40
+ readonly kind: 'work-mount-outside-sandbox';
41
+ readonly sandboxRoot: string;
42
+ readonly scopeKey: string;
43
+ readonly hostWorkMountDir: string;
44
+ readonly zoneId: string;
45
+ } | {
46
+ readonly agentId: string;
47
+ readonly alreadyExisted: number;
48
+ readonly hostWorkMountDir: string;
49
+ readonly kind: 'seeded';
50
+ readonly scopeKey: string;
51
+ readonly written: number;
52
+ readonly zoneId: string;
53
+ };
54
+ export declare function seedAgentSandboxWorkspace(options: {
55
+ readonly scopeKey: string;
56
+ readonly secretResolver: SecretResolver;
57
+ readonly hostWorkMountDir: string;
58
+ readonly zone: ZoneConfig;
59
+ }): Promise<AgentSandboxSeedResult>;
60
+ export {};
61
+ //# sourceMappingURL=agent-sandbox-seeding.d.ts.map
@@ -0,0 +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,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"}
@@ -0,0 +1,186 @@
1
+ import { lstat, mkdir, open, realpath } from 'node:fs/promises';
2
+ import path from 'node:path';
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
+ }
11
+ function isNodeErrorCode(error, code) {
12
+ return error instanceof Error && 'code' in error && error.code === code;
13
+ }
14
+ function isPathWithin(candidatePath, rootPath) {
15
+ const relativePath = path.relative(rootPath, candidatePath);
16
+ return relativePath === '' || (!relativePath.startsWith('..') && !path.isAbsolute(relativePath));
17
+ }
18
+ function toSecretRef(seed) {
19
+ return seed.source.source === 'environment'
20
+ ? {
21
+ source: 'environment',
22
+ ref: seed.source.envVar,
23
+ }
24
+ : {
25
+ source: '1password',
26
+ ref: seed.source.ref,
27
+ };
28
+ }
29
+ async function writeSeedFileIfAbsent(options) {
30
+ let fileHandle;
31
+ try {
32
+ const targetParentPath = await ensureSeedParentDirectoryInsideWorkspace({
33
+ targetPath: options.targetPath,
34
+ hostWorkMountDir: options.hostWorkMountDir,
35
+ });
36
+ const safeTargetPath = path.join(targetParentPath, path.basename(options.targetPath));
37
+ fileHandle = await open(safeTargetPath, 'wx', options.mode);
38
+ await fileHandle.chmod(options.mode);
39
+ await fileHandle.writeFile(options.content, 'utf8');
40
+ await fileHandle.close();
41
+ fileHandle = undefined;
42
+ return 'written';
43
+ }
44
+ catch (error) {
45
+ if (fileHandle) {
46
+ await fileHandle.close();
47
+ }
48
+ if (isNodeErrorCode(error, 'EEXIST')) {
49
+ return 'already-existed';
50
+ }
51
+ throw error;
52
+ }
53
+ }
54
+ async function ensureSeedParentDirectoryInsideWorkspace(options) {
55
+ const targetParentPath = path.dirname(options.targetPath);
56
+ const relativeParentPath = path.relative(options.hostWorkMountDir, targetParentPath);
57
+ if (relativeParentPath !== '' &&
58
+ (relativeParentPath.startsWith('..') || path.isAbsolute(relativeParentPath))) {
59
+ throw new SandboxSeedingError('parent-resolves-outside-work-mount', `Agent sandbox seed target parent '${targetParentPath}' resolves outside work mount '${options.hostWorkMountDir}'.`);
60
+ }
61
+ let currentPath = options.hostWorkMountDir;
62
+ /* oxlint-disable no-await-in-loop -- each path segment must be validated before the next segment can be trusted */
63
+ for (const segment of relativeParentPath.split(path.sep).filter((part) => part.length > 0)) {
64
+ currentPath = path.join(currentPath, segment);
65
+ let entry = await lstat(currentPath).catch((error) => {
66
+ if (isNodeErrorCode(error, 'ENOENT')) {
67
+ return null;
68
+ }
69
+ throw error;
70
+ });
71
+ if (!entry) {
72
+ await mkdir(currentPath, { mode: 0o700 });
73
+ entry = await lstat(currentPath);
74
+ }
75
+ if (entry.isSymbolicLink()) {
76
+ throw new SandboxSeedingError('parent-symlink', `Agent sandbox seed parent '${currentPath}' must not be a symlink.`);
77
+ }
78
+ if (!entry.isDirectory()) {
79
+ throw new SandboxSeedingError('parent-not-directory', `Agent sandbox seed parent '${currentPath}' is not a directory.`);
80
+ }
81
+ const resolvedPath = await realpath(currentPath);
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}'.`);
84
+ }
85
+ currentPath = resolvedPath;
86
+ }
87
+ /* oxlint-enable no-await-in-loop */
88
+ return currentPath;
89
+ }
90
+ export async function seedAgentSandboxWorkspace(options) {
91
+ if (options.zone.gateway.type !== 'openclaw') {
92
+ return { kind: 'not-openclaw-zone', zoneId: options.zone.id };
93
+ }
94
+ const parsedScope = parseAgentScopeKey(options.scopeKey);
95
+ if (parsedScope.kind === 'non-agent-scope') {
96
+ return { kind: 'non-agent-scope', scopeKey: options.scopeKey, zoneId: options.zone.id };
97
+ }
98
+ if (parsedScope.kind === 'malformed-agent-scope') {
99
+ return {
100
+ kind: 'malformed-agent-scope',
101
+ reason: parsedScope.reason,
102
+ scopeKey: options.scopeKey,
103
+ zoneId: options.zone.id,
104
+ };
105
+ }
106
+ const agentId = parsedScope.agentId;
107
+ const seeds = options.zone.agentSandboxSeeds?.[agentId] ?? [];
108
+ if (seeds.length === 0) {
109
+ return {
110
+ agentId,
111
+ kind: 'no-seeds-configured',
112
+ scopeKey: options.scopeKey,
113
+ zoneId: options.zone.id,
114
+ };
115
+ }
116
+ const sandboxRootPath = path.join(options.zone.gateway.stateDir, 'sandboxes');
117
+ let sandboxRoot;
118
+ try {
119
+ sandboxRoot = await realpath(sandboxRootPath);
120
+ }
121
+ catch (error) {
122
+ if (isNodeErrorCode(error, 'ENOENT')) {
123
+ return {
124
+ agentId,
125
+ kind: 'sandbox-root-missing',
126
+ sandboxRoot: sandboxRootPath,
127
+ scopeKey: options.scopeKey,
128
+ zoneId: options.zone.id,
129
+ };
130
+ }
131
+ throw error;
132
+ }
133
+ let hostWorkMountDir;
134
+ try {
135
+ hostWorkMountDir = await realpath(options.hostWorkMountDir);
136
+ }
137
+ catch (error) {
138
+ if (isNodeErrorCode(error, 'ENOENT')) {
139
+ return {
140
+ agentId,
141
+ kind: 'work-mount-missing',
142
+ scopeKey: options.scopeKey,
143
+ hostWorkMountDir: options.hostWorkMountDir,
144
+ zoneId: options.zone.id,
145
+ };
146
+ }
147
+ throw error;
148
+ }
149
+ if (!isPathWithin(hostWorkMountDir, sandboxRoot)) {
150
+ return {
151
+ agentId,
152
+ kind: 'work-mount-outside-sandbox',
153
+ sandboxRoot,
154
+ scopeKey: options.scopeKey,
155
+ hostWorkMountDir,
156
+ zoneId: options.zone.id,
157
+ };
158
+ }
159
+ const seedResults = await Promise.all(seeds.map(async (seed) => {
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}'.`);
163
+ }
164
+ await ensureSeedParentDirectoryInsideWorkspace({
165
+ targetPath,
166
+ hostWorkMountDir,
167
+ });
168
+ const content = await options.secretResolver.resolve(toSecretRef(seed));
169
+ return await writeSeedFileIfAbsent({
170
+ content,
171
+ mode: seed.mode,
172
+ targetPath,
173
+ hostWorkMountDir,
174
+ });
175
+ }));
176
+ return {
177
+ agentId,
178
+ alreadyExisted: seedResults.filter((result) => result === 'already-existed').length,
179
+ hostWorkMountDir,
180
+ kind: 'seeded',
181
+ scopeKey: options.scopeKey,
182
+ written: seedResults.filter((result) => result === 'written').length,
183
+ zoneId: options.zone.id,
184
+ };
185
+ }
186
+ //# sourceMappingURL=agent-sandbox-seeding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-sandbox-seeding.js","sourceRoot":"","sources":["../../../src/controller/leases/agent-sandbox-seeding.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,15 @@ export declare function createIdleReaper(options: {
2
2
  readonly getLeases: () => {
3
3
  readonly id: string;
4
4
  readonly lastUsedAt: number;
5
+ readonly scopeKey: string;
5
6
  }[];
6
7
  readonly now: () => number;
7
8
  readonly releaseLease: (leaseId: string, options?: {
8
9
  readonly ifLastUsedAtBeforeOrAt?: number;
9
10
  }) => Promise<void>;
10
- readonly ttlMs: number;
11
+ readonly ttlForLease: (lease: {
12
+ readonly scopeKey: string;
13
+ }) => number;
11
14
  }): {
12
15
  reapExpiredLeases(): Promise<void>;
13
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"idle-reaper.d.ts","sourceRoot":"","sources":["../../../src/controller/leases/idle-reaper.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM;QACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC5B,EAAE,CAAC;IACJ,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,CACtB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;KAAE,KAClD,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB,GAAG;IACH,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC,CAcA"}
1
+ {"version":3,"file":"idle-reaper.d.ts","sourceRoot":"","sources":["../../../src/controller/leases/idle-reaper.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM;QACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC1B,EAAE,CAAC;IACJ,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,CACtB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;KAAE,KAClD,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;CACvE,GAAG;IACH,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC,CA2BA"}
@@ -1,14 +1,25 @@
1
1
  export function createIdleReaper(options) {
2
2
  return {
3
3
  async reapExpiredLeases() {
4
- const expirationCutoff = options.now() - options.ttlMs;
5
- const expiredLeaseIds = options
6
- .getLeases()
7
- .filter((lease) => lease.lastUsedAt < expirationCutoff)
8
- .map((lease) => lease.id);
9
- for (const leaseId of expiredLeaseIds) {
10
- // oxlint-disable-next-line eslint/no-await-in-loop -- release must stay sequential to avoid TCP pool races
11
- await options.releaseLease(leaseId, { ifLastUsedAtBeforeOrAt: expirationCutoff });
4
+ const now = options.now();
5
+ const expiredLeases = options.getLeases().flatMap((lease) => {
6
+ const expirationCutoff = now - options.ttlForLease(lease);
7
+ return lease.lastUsedAt < expirationCutoff ? [{ expirationCutoff, leaseId: lease.id }] : [];
8
+ });
9
+ const releaseErrors = [];
10
+ for (const expiredLease of expiredLeases) {
11
+ try {
12
+ // oxlint-disable-next-line eslint/no-await-in-loop -- release must stay sequential to avoid TCP pool races
13
+ await options.releaseLease(expiredLease.leaseId, {
14
+ ifLastUsedAtBeforeOrAt: expiredLease.expirationCutoff,
15
+ });
16
+ }
17
+ catch (error) {
18
+ releaseErrors.push(error instanceof Error ? error : new Error(String(error)));
19
+ }
20
+ }
21
+ if (releaseErrors.length > 0) {
22
+ throw new AggregateError(releaseErrors, `Failed to release ${String(releaseErrors.length)} expired lease(s).`);
12
23
  }
13
24
  },
14
25
  };
@@ -1 +1 @@
1
- {"version":3,"file":"idle-reaper.js","sourceRoot":"","sources":["../../../src/controller/leases/idle-reaper.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAAC,OAWhC;IAGA,OAAO;QACN,KAAK,CAAC,iBAAiB;YACtB,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;YACvD,MAAM,eAAe,GAAG,OAAO;iBAC7B,SAAS,EAAE;iBACX,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,gBAAgB,CAAC;iBACtD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3B,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;gBACvC,2GAA2G;gBAC3G,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACnF,CAAC;QACF,CAAC;KACD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"idle-reaper.js","sourceRoot":"","sources":["../../../src/controller/leases/idle-reaper.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAAC,OAYhC;IAGA,OAAO;QACN,KAAK,CAAC,iBAAiB;YACtB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAC1B,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC3D,MAAM,gBAAgB,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC1D,OAAO,KAAK,CAAC,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7F,CAAC,CAAC,CAAC;YACH,MAAM,aAAa,GAAY,EAAE,CAAC;YAClC,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;gBAC1C,IAAI,CAAC;oBACJ,2GAA2G;oBAC3G,MAAM,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,EAAE;wBAChD,sBAAsB,EAAE,YAAY,CAAC,gBAAgB;qBACrD,CAAC,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,aAAa,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/E,CAAC;YACF,CAAC;YACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,cAAc,CACvB,aAAa,EACb,qBAAqB,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,oBAAoB,CACrE,CAAC;YACH,CAAC;QACF,CAAC;KACD,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ export declare const leaseScopeKinds: readonly ["agent", "discord", "project", "session", "shared", "workspace"];
2
+ export type LeaseScopeKind = (typeof leaseScopeKinds)[number];
3
+ export interface LeaseIdleTtlPolicy {
4
+ readonly defaultMs: number;
5
+ readonly byScopeKind: Partial<Readonly<Record<LeaseScopeKind, number>>>;
6
+ readonly byScopePrefix: Readonly<Record<string, number>>;
7
+ }
8
+ export declare function ttlForLeaseScope(options: {
9
+ readonly policy: LeaseIdleTtlPolicy;
10
+ readonly scopeKey: string;
11
+ }): number;
12
+ //# sourceMappingURL=lease-idle-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lease-idle-policy.d.ts","sourceRoot":"","sources":["../../../src/controller/leases/lease-idle-policy.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,4EAOlB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACxE,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACzD;AAWD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACzC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC1B,GAAG,MAAM,CAWT"}
@@ -0,0 +1,28 @@
1
+ export const leaseScopeKinds = [
2
+ 'agent',
3
+ 'discord',
4
+ 'project',
5
+ 'session',
6
+ 'shared',
7
+ 'workspace',
8
+ ];
9
+ function scopePrefixes(scopeKey) {
10
+ const segments = scopeKey.split(':').filter((segment) => segment.length > 0);
11
+ return segments.map((_segment, index) => segments.slice(0, index + 1).join(':')).toReversed();
12
+ }
13
+ function isLeaseScopeKind(scopeKind) {
14
+ return leaseScopeKinds.some((candidate) => candidate === scopeKind);
15
+ }
16
+ export function ttlForLeaseScope(options) {
17
+ for (const prefix of scopePrefixes(options.scopeKey)) {
18
+ const ttl = options.policy.byScopePrefix[prefix];
19
+ if (ttl !== undefined) {
20
+ return ttl;
21
+ }
22
+ }
23
+ const scopeKind = options.scopeKey.split(':')[0] ?? '';
24
+ return isLeaseScopeKind(scopeKind)
25
+ ? (options.policy.byScopeKind[scopeKind] ?? options.policy.defaultMs)
26
+ : options.policy.defaultMs;
27
+ }
28
+ //# sourceMappingURL=lease-idle-policy.js.map