@awcp/sdk 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 (61) hide show
  1. package/dist/delegator/bin/daemon.d.ts +0 -45
  2. package/dist/delegator/bin/daemon.d.ts.map +1 -1
  3. package/dist/delegator/bin/daemon.js +1 -85
  4. package/dist/delegator/bin/daemon.js.map +1 -1
  5. package/dist/delegator/config.d.ts +9 -71
  6. package/dist/delegator/config.d.ts.map +1 -1
  7. package/dist/delegator/config.js +1 -12
  8. package/dist/delegator/config.js.map +1 -1
  9. package/dist/delegator/executor-client.d.ts +6 -13
  10. package/dist/delegator/executor-client.d.ts.map +1 -1
  11. package/dist/delegator/executor-client.js +52 -14
  12. package/dist/delegator/executor-client.js.map +1 -1
  13. package/dist/delegator/export-manager.d.ts +27 -0
  14. package/dist/delegator/export-manager.d.ts.map +1 -0
  15. package/dist/delegator/export-manager.js +85 -0
  16. package/dist/delegator/export-manager.js.map +1 -0
  17. package/dist/delegator/index.d.ts +2 -2
  18. package/dist/delegator/index.d.ts.map +1 -1
  19. package/dist/delegator/index.js +3 -3
  20. package/dist/delegator/index.js.map +1 -1
  21. package/dist/delegator/service.d.ts +5 -69
  22. package/dist/delegator/service.d.ts.map +1 -1
  23. package/dist/delegator/service.js +96 -104
  24. package/dist/delegator/service.js.map +1 -1
  25. package/dist/executor/config.d.ts +11 -81
  26. package/dist/executor/config.d.ts.map +1 -1
  27. package/dist/executor/config.js +2 -9
  28. package/dist/executor/config.js.map +1 -1
  29. package/dist/executor/index.d.ts +2 -3
  30. package/dist/executor/index.d.ts.map +1 -1
  31. package/dist/executor/index.js +2 -3
  32. package/dist/executor/index.js.map +1 -1
  33. package/dist/executor/service.d.ts +8 -50
  34. package/dist/executor/service.d.ts.map +1 -1
  35. package/dist/executor/service.js +100 -136
  36. package/dist/executor/service.js.map +1 -1
  37. package/dist/executor/workspace-manager.d.ts +30 -0
  38. package/dist/executor/workspace-manager.d.ts.map +1 -0
  39. package/dist/executor/workspace-manager.js +75 -0
  40. package/dist/executor/workspace-manager.js.map +1 -0
  41. package/dist/index.d.ts +2 -2
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +2 -2
  44. package/dist/index.js.map +1 -1
  45. package/dist/server/express/awcp-delegator-handler.d.ts +0 -41
  46. package/dist/server/express/awcp-delegator-handler.d.ts.map +1 -1
  47. package/dist/server/express/awcp-delegator-handler.js +0 -49
  48. package/dist/server/express/awcp-delegator-handler.js.map +1 -1
  49. package/dist/server/express/awcp-executor-handler.d.ts +0 -27
  50. package/dist/server/express/awcp-executor-handler.d.ts.map +1 -1
  51. package/dist/server/express/awcp-executor-handler.js +23 -38
  52. package/dist/server/express/awcp-executor-handler.js.map +1 -1
  53. package/package.json +6 -3
  54. package/dist/executor/delegator-client.d.ts +0 -18
  55. package/dist/executor/delegator-client.d.ts.map +0 -1
  56. package/dist/executor/delegator-client.js +0 -37
  57. package/dist/executor/delegator-client.js.map +0 -1
  58. package/dist/executor/policy.d.ts +0 -55
  59. package/dist/executor/policy.d.ts.map +0 -1
  60. package/dist/executor/policy.js +0 -100
  61. package/dist/executor/policy.js.map +0 -1
@@ -1,54 +1,31 @@
1
1
  /**
2
2
  * AWCP Executor Service
3
- *
4
- * Handles the AWCP delegation protocol on the Executor (Collaborator) side.
5
- * Integrates with A2A SDK executor for task execution.
6
3
  */
7
4
  import { randomUUID } from 'node:crypto';
5
+ import { EventEmitter } from 'node:events';
8
6
  import { DefaultExecutionEventBus, } from '@a2a-js/sdk/server';
9
- import { SshfsMountClient } from '@awcp/transport-sshfs';
10
7
  import { PROTOCOL_VERSION, ErrorCodes, AwcpError, } from '@awcp/core';
11
8
  import { resolveExecutorConfig } from './config.js';
12
- import { LocalPolicy } from './policy.js';
13
- import { DelegatorClient } from './delegator-client.js';
14
- /**
15
- * AWCP Executor Service
16
- *
17
- * Manages the AWCP delegation lifecycle:
18
- * 1. Receives INVITE from Delegator
19
- * 2. Sends ACCEPT back
20
- * 3. Receives START with credentials
21
- * 4. Mounts workspace via SSHFS
22
- * 5. Executes task via A2A executor
23
- * 6. Unmounts and sends DONE/ERROR
24
- */
9
+ import { WorkspaceManager } from './workspace-manager.js';
25
10
  export class ExecutorService {
26
11
  executor;
27
12
  config;
28
- policy;
29
- sshfsClient;
30
- delegatorClient;
13
+ transport;
14
+ workspace;
31
15
  pendingInvitations = new Map();
32
16
  activeDelegations = new Map();
33
17
  constructor(options) {
34
18
  this.executor = options.executor;
35
19
  this.config = resolveExecutorConfig(options.config);
36
- this.policy = new LocalPolicy({
37
- mountRoot: this.config.mount.root,
38
- maxConcurrent: this.config.policy.maxConcurrentDelegations,
39
- });
40
- this.sshfsClient = new SshfsMountClient();
41
- this.delegatorClient = new DelegatorClient();
20
+ this.transport = this.config.transport;
21
+ this.workspace = new WorkspaceManager(this.config.workDir);
42
22
  }
43
- /**
44
- * Handle incoming AWCP message from Delegator
45
- */
46
- async handleMessage(message, delegatorUrl) {
23
+ async handleMessage(message) {
47
24
  switch (message.type) {
48
25
  case 'INVITE':
49
- return this.handleInvite(message, delegatorUrl);
26
+ return this.handleInvite(message);
50
27
  case 'START':
51
- await this.handleStart(message, delegatorUrl);
28
+ await this.handleStart(message);
52
29
  return null;
53
30
  case 'ERROR':
54
31
  await this.handleError(message);
@@ -58,30 +35,44 @@ export class ExecutorService {
58
35
  }
59
36
  }
60
37
  /**
61
- * Handle INVITE message
38
+ * Subscribe to task events via SSE
62
39
  */
63
- async handleInvite(invite, delegatorUrl) {
40
+ subscribeTask(delegationId, callback) {
41
+ const delegation = this.activeDelegations.get(delegationId);
42
+ if (!delegation) {
43
+ const errorEvent = {
44
+ delegationId,
45
+ type: 'error',
46
+ timestamp: new Date().toISOString(),
47
+ code: 'NOT_FOUND',
48
+ message: 'Delegation not found',
49
+ };
50
+ callback(errorEvent);
51
+ return () => { };
52
+ }
53
+ const handler = (event) => callback(event);
54
+ delegation.eventEmitter.on('event', handler);
55
+ return () => {
56
+ delegation.eventEmitter.off('event', handler);
57
+ };
58
+ }
59
+ async handleInvite(invite) {
64
60
  const { delegationId } = invite;
65
- // Check if we can accept more delegations
66
- if (!this.policy.canAcceptMore()) {
61
+ if (this.activeDelegations.size >= this.config.policy.maxConcurrentDelegations) {
67
62
  return this.createErrorMessage(delegationId, ErrorCodes.DECLINED, 'Maximum concurrent delegations reached', 'Try again later when current tasks complete');
68
63
  }
69
- // Check TTL constraints
70
64
  const maxTtl = this.config.policy.maxTtlSeconds;
71
65
  if (invite.lease.ttlSeconds > maxTtl) {
72
66
  return this.createErrorMessage(delegationId, ErrorCodes.DECLINED, `Requested TTL (${invite.lease.ttlSeconds}s) exceeds maximum (${maxTtl}s)`, `Request a shorter TTL (max: ${maxTtl}s)`);
73
67
  }
74
- // Check access mode
75
68
  const allowedModes = this.config.policy.allowedAccessModes;
76
69
  if (!allowedModes.includes(invite.lease.accessMode)) {
77
70
  return this.createErrorMessage(delegationId, ErrorCodes.DECLINED, `Access mode '${invite.lease.accessMode}' not allowed`, `Allowed modes: ${allowedModes.join(', ')}`);
78
71
  }
79
- // Check dependencies
80
- const depCheck = await this.sshfsClient.checkDependency();
72
+ const depCheck = await this.transport.checkDependency();
81
73
  if (!depCheck.available) {
82
- return this.createErrorMessage(delegationId, ErrorCodes.DEP_MISSING, 'SSHFS is not available', 'Install sshfs: brew install macfuse && brew install sshfs (macOS) or apt install sshfs (Linux)');
74
+ return this.createErrorMessage(delegationId, ErrorCodes.DEP_MISSING, `Transport ${this.transport.type} is not available`, depCheck.hint);
83
75
  }
84
- // Call onInvite hook if provided
85
76
  if (this.config.hooks.onInvite) {
86
77
  const accepted = await this.config.hooks.onInvite(invite);
87
78
  if (!accepted) {
@@ -89,142 +80,132 @@ export class ExecutorService {
89
80
  }
90
81
  }
91
82
  else if (!this.config.policy.autoAccept) {
92
- // No hook and not auto-accept - store as pending
93
83
  this.pendingInvitations.set(delegationId, {
94
84
  invite,
95
- delegatorUrl,
96
85
  receivedAt: new Date(),
97
86
  });
98
- // For now, we'll auto-decline if not auto-accept and no hook
99
87
  return this.createErrorMessage(delegationId, ErrorCodes.DECLINED, 'Manual acceptance required but no hook provided', 'Configure autoAccept: true or provide onInvite hook');
100
88
  }
101
- // Allocate mount point
102
- const mountPoint = this.policy.allocateMountPoint(delegationId);
103
- // Validate mount point
104
- const validation = await this.policy.validateMountPoint(mountPoint);
89
+ const workPath = this.workspace.allocate(delegationId);
90
+ const validation = this.workspace.validate(workPath);
105
91
  if (!validation.valid) {
106
- await this.policy.releaseMountPoint(mountPoint);
107
- return this.createErrorMessage(delegationId, ErrorCodes.MOUNTPOINT_DENIED, validation.reason ?? 'Mount point validation failed', 'Check mount root configuration');
92
+ await this.workspace.release(workPath);
93
+ return this.createErrorMessage(delegationId, ErrorCodes.WORKDIR_DENIED, validation.reason ?? 'Workspace validation failed', 'Check workDir configuration');
108
94
  }
109
- // Store pending invitation
110
95
  this.pendingInvitations.set(delegationId, {
111
96
  invite,
112
- delegatorUrl,
113
97
  receivedAt: new Date(),
114
98
  });
115
- // Build executor constraints
116
99
  const executorConstraints = {
117
100
  acceptedAccessMode: invite.lease.accessMode,
118
101
  maxTtlSeconds: Math.min(invite.lease.ttlSeconds, maxTtl),
119
102
  sandboxProfile: this.config.sandbox,
120
103
  };
121
- // Return ACCEPT
122
104
  const acceptMessage = {
123
105
  version: PROTOCOL_VERSION,
124
106
  type: 'ACCEPT',
125
107
  delegationId,
126
- executorMount: { mountPoint },
108
+ executorWorkDir: { path: workPath },
127
109
  executorConstraints,
128
110
  };
129
111
  return acceptMessage;
130
112
  }
131
- /**
132
- * Handle START message
133
- */
134
- async handleStart(start, delegatorUrl) {
113
+ async handleStart(start) {
135
114
  const { delegationId } = start;
136
115
  const pending = this.pendingInvitations.get(delegationId);
137
116
  if (!pending) {
138
117
  console.warn(`[AWCP] Unknown delegation for START: ${delegationId}`);
139
118
  return;
140
119
  }
141
- const mountPoint = this.policy.allocateMountPoint(delegationId);
120
+ const workPath = this.workspace.allocate(delegationId);
142
121
  this.pendingInvitations.delete(delegationId);
122
+ const eventEmitter = new EventEmitter();
123
+ this.activeDelegations.set(delegationId, {
124
+ id: delegationId,
125
+ workPath,
126
+ task: pending.invite.task,
127
+ startedAt: new Date(),
128
+ eventEmitter,
129
+ });
130
+ // Task execution runs async - don't await
131
+ this.executeTask(delegationId, start, workPath, pending.invite.task, eventEmitter);
132
+ }
133
+ async executeTask(delegationId, start, workPath, task, eventEmitter) {
143
134
  try {
144
- // Prepare mount point
145
- await this.policy.prepareMountPoint(mountPoint);
146
- // Mount the workspace
147
- await this.sshfsClient.mount({
148
- endpoint: start.mount.endpoint,
149
- exportLocator: start.mount.exportLocator,
150
- credential: start.mount.credential,
151
- mountPoint,
152
- options: start.mount.mountOptions,
153
- });
154
- // Track active delegation
155
- this.activeDelegations.set(delegationId, {
156
- id: delegationId,
157
- delegatorUrl,
158
- mountPoint,
159
- task: pending.invite.task,
160
- startedAt: new Date(),
135
+ await this.workspace.prepare(workPath);
136
+ const actualPath = await this.transport.setup({
137
+ delegationId,
138
+ workDirInfo: start.workDir,
139
+ workDir: workPath,
161
140
  });
162
- // Call onTaskStart hook
163
- this.config.hooks.onTaskStart?.(delegationId, mountPoint);
164
- // Execute task via A2A executor
165
- const result = await this.executeViaA2A(mountPoint, pending.invite.task);
166
- // Unmount
167
- await this.sshfsClient.unmount(mountPoint);
168
- // Send DONE
169
- const doneMessage = {
170
- version: PROTOCOL_VERSION,
171
- type: 'DONE',
141
+ this.config.hooks.onTaskStart?.(delegationId, actualPath);
142
+ const statusEvent = {
172
143
  delegationId,
173
- finalSummary: result.summary,
144
+ type: 'status',
145
+ timestamp: new Date().toISOString(),
146
+ status: 'running',
147
+ message: 'Task execution started',
148
+ };
149
+ eventEmitter.emit('event', statusEvent);
150
+ const result = await this.executeViaA2A(actualPath, task);
151
+ const teardownResult = await this.transport.teardown({ delegationId, workDir: actualPath });
152
+ const doneEvent = {
153
+ delegationId,
154
+ type: 'done',
155
+ timestamp: new Date().toISOString(),
156
+ summary: result.summary,
174
157
  highlights: result.highlights,
158
+ resultBase64: teardownResult.resultBase64,
175
159
  };
176
- await this.delegatorClient.send(delegatorUrl, doneMessage);
177
- // Call onTaskComplete hook
160
+ eventEmitter.emit('event', doneEvent);
178
161
  this.config.hooks.onTaskComplete?.(delegationId, result.summary);
179
- // Cleanup
180
162
  this.activeDelegations.delete(delegationId);
181
- await this.policy.releaseMountPoint(mountPoint);
163
+ await this.workspace.release(actualPath);
182
164
  }
183
165
  catch (error) {
184
- // Cleanup on error
185
- await this.sshfsClient.unmount(mountPoint).catch(() => { });
186
- this.activeDelegations.delete(delegationId);
187
- await this.policy.releaseMountPoint(mountPoint);
188
- // Send ERROR
189
- const errorMessage = {
190
- version: PROTOCOL_VERSION,
191
- type: 'ERROR',
166
+ const delegation = this.activeDelegations.get(delegationId);
167
+ if (delegation) {
168
+ await this.transport.teardown({ delegationId, workDir: delegation.workPath }).catch(() => { });
169
+ await this.workspace.release(delegation.workPath);
170
+ }
171
+ const errorEvent = {
192
172
  delegationId,
173
+ type: 'error',
174
+ timestamp: new Date().toISOString(),
193
175
  code: ErrorCodes.TASK_FAILED,
194
176
  message: error instanceof Error ? error.message : String(error),
195
177
  hint: 'Check task requirements and try again',
196
178
  };
197
- await this.delegatorClient.send(delegatorUrl, errorMessage).catch(console.error);
198
- // Call onError hook
179
+ eventEmitter.emit('event', errorEvent);
199
180
  this.config.hooks.onError?.(delegationId, error instanceof Error ? error : new Error(String(error)));
181
+ this.activeDelegations.delete(delegationId);
200
182
  }
201
183
  }
202
- /**
203
- * Handle ERROR message from Delegator
204
- */
205
184
  async handleError(error) {
206
185
  const { delegationId } = error;
207
- // Cleanup if we have an active delegation
208
186
  const delegation = this.activeDelegations.get(delegationId);
209
187
  if (delegation) {
210
- await this.sshfsClient.unmount(delegation.mountPoint).catch(() => { });
188
+ await this.transport.teardown({ delegationId, workDir: delegation.workPath }).catch(() => { });
211
189
  this.activeDelegations.delete(delegationId);
212
- await this.policy.releaseMountPoint(delegation.mountPoint);
190
+ await this.workspace.release(delegation.workPath);
213
191
  }
214
- // Remove pending invitation if any
215
192
  this.pendingInvitations.delete(delegationId);
216
- // Call onError hook
217
193
  this.config.hooks.onError?.(delegationId, new AwcpError(error.code, error.message, error.hint, delegationId));
218
194
  }
219
- /**
220
- * Cancel a delegation (called by Delegator via /cancel endpoint)
221
- */
222
195
  async cancelDelegation(delegationId) {
223
196
  const delegation = this.activeDelegations.get(delegationId);
224
197
  if (delegation) {
225
- await this.sshfsClient.unmount(delegation.mountPoint).catch(() => { });
198
+ await this.transport.teardown({ delegationId, workDir: delegation.workPath }).catch(() => { });
199
+ const errorEvent = {
200
+ delegationId,
201
+ type: 'error',
202
+ timestamp: new Date().toISOString(),
203
+ code: ErrorCodes.CANCELLED,
204
+ message: 'Delegation cancelled',
205
+ };
206
+ delegation.eventEmitter.emit('event', errorEvent);
226
207
  this.activeDelegations.delete(delegationId);
227
- await this.policy.releaseMountPoint(delegation.mountPoint);
208
+ await this.workspace.release(delegation.workPath);
228
209
  this.config.hooks.onError?.(delegationId, new AwcpError(ErrorCodes.CANCELLED, 'Delegation cancelled by Delegator', undefined, delegationId));
229
210
  return;
230
211
  }
@@ -234,11 +215,7 @@ export class ExecutorService {
234
215
  }
235
216
  throw new Error(`Delegation not found: ${delegationId}`);
236
217
  }
237
- /**
238
- * Execute task via A2A executor
239
- */
240
- async executeViaA2A(mountPoint, task) {
241
- // Create synthetic A2A message with task context
218
+ async executeViaA2A(workPath, task) {
242
219
  const message = {
243
220
  kind: 'message',
244
221
  messageId: randomUUID(),
@@ -247,15 +224,13 @@ export class ExecutorService {
247
224
  { kind: 'text', text: task.prompt },
248
225
  {
249
226
  kind: 'text',
250
- text: `\n\n[AWCP Context]\nWorking directory: ${mountPoint}\nTask: ${task.description}`,
227
+ text: `\n\n[AWCP Context]\nWorking directory: ${workPath}\nTask: ${task.description}`,
251
228
  },
252
229
  ],
253
230
  };
254
- // Create request context
255
231
  const taskId = randomUUID();
256
232
  const contextId = randomUUID();
257
233
  const requestContext = new RequestContextImpl(message, taskId, contextId);
258
- // Create event bus and collect results
259
234
  const eventBus = new DefaultExecutionEventBus();
260
235
  const results = [];
261
236
  eventBus.on('event', (event) => {
@@ -263,9 +238,7 @@ export class ExecutorService {
263
238
  results.push(event);
264
239
  }
265
240
  });
266
- // Execute
267
241
  await this.executor.execute(requestContext, eventBus);
268
- // Extract summary from results
269
242
  const summary = results
270
243
  .flatMap((m) => m.parts)
271
244
  .filter((p) => p.kind === 'text')
@@ -275,23 +248,17 @@ export class ExecutorService {
275
248
  summary: summary || 'Task completed',
276
249
  };
277
250
  }
278
- /**
279
- * Get service status
280
- */
281
251
  getStatus() {
282
252
  return {
283
253
  pendingInvitations: this.pendingInvitations.size,
284
254
  activeDelegations: this.activeDelegations.size,
285
255
  delegations: Array.from(this.activeDelegations.values()).map((d) => ({
286
256
  id: d.id,
287
- mountPoint: d.mountPoint,
257
+ workPath: d.workPath,
288
258
  startedAt: d.startedAt.toISOString(),
289
259
  })),
290
260
  };
291
261
  }
292
- /**
293
- * Create an error message
294
- */
295
262
  createErrorMessage(delegationId, code, message, hint) {
296
263
  return {
297
264
  version: PROTOCOL_VERSION,
@@ -303,9 +270,6 @@ export class ExecutorService {
303
270
  };
304
271
  }
305
272
  }
306
- /**
307
- * Simple RequestContext implementation
308
- */
309
273
  class RequestContextImpl {
310
274
  userMessage;
311
275
  taskId;
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/executor/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/executor/service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EACL,wBAAwB,GAGzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAaL,gBAAgB,EAChB,UAAU,EACV,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAoD,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACtG,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AA8B1D,MAAM,OAAO,eAAe;IAClB,QAAQ,CAAgB;IACxB,MAAM,CAAyB;IAC/B,SAAS,CAA2B;IACpC,SAAS,CAAmB;IAC5B,kBAAkB,GAAG,IAAI,GAAG,EAA6B,CAAC;IAC1D,iBAAiB,GAAG,IAAI,GAAG,EAA4B,CAAC;IAEhE,YAAY,OAA+B;QACzC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAoB;QACtC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACpC,KAAK,OAAO;gBACV,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAChC,OAAO,IAAI,CAAC;YACd,KAAK,OAAO;gBACV,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAChC,OAAO,IAAI,CAAC;YACd;gBACE,MAAM,IAAI,KAAK,CAAC,4BAA6B,OAAuB,CAAC,IAAI,EAAE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,YAAoB,EAAE,QAAoC;QACtE,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,UAAU,GAAmB;gBACjC,YAAY;gBACZ,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,sBAAsB;aAChC,CAAC;YACF,QAAQ,CAAC,UAAU,CAAC,CAAC;YACrB,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,KAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtD,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE7C,OAAO,GAAG,EAAE;YACV,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,MAAqB;QAC9C,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;QAEhC,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAC;YAC/E,OAAO,IAAI,CAAC,kBAAkB,CAC5B,YAAY,EACZ,UAAU,CAAC,QAAQ,EACnB,wCAAwC,EACxC,6CAA6C,CAC9C,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;QAChD,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,kBAAkB,CAC5B,YAAY,EACZ,UAAU,CAAC,QAAQ,EACnB,kBAAkB,MAAM,CAAC,KAAK,CAAC,UAAU,uBAAuB,MAAM,IAAI,EAC1E,+BAA+B,MAAM,IAAI,CAC1C,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC;QAC3D,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC,kBAAkB,CAC5B,YAAY,EACZ,UAAU,CAAC,QAAQ,EACnB,gBAAgB,MAAM,CAAC,KAAK,CAAC,UAAU,eAAe,EACtD,kBAAkB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5C,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,kBAAkB,CAC5B,YAAY,EACZ,UAAU,CAAC,WAAW,EACtB,aAAa,IAAI,CAAC,SAAS,CAAC,IAAI,mBAAmB,EACnD,QAAQ,CAAC,IAAI,CACd,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,IAAI,CAAC,kBAAkB,CAC5B,YAAY,EACZ,UAAU,CAAC,QAAQ,EACnB,+BAA+B,EAC/B,4CAA4C,CAC7C,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC1C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,EAAE;gBACxC,MAAM;gBACN,UAAU,EAAE,IAAI,IAAI,EAAE;aACvB,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,kBAAkB,CAC5B,YAAY,EACZ,UAAU,CAAC,QAAQ,EACnB,iDAAiD,EACjD,qDAAqD,CACtD,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAEvD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,kBAAkB,CAC5B,YAAY,EACZ,UAAU,CAAC,cAAc,EACzB,UAAU,CAAC,MAAM,IAAI,6BAA6B,EAClD,6BAA6B,CAC9B,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,EAAE;YACxC,MAAM;YACN,UAAU,EAAE,IAAI,IAAI,EAAE;SACvB,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAwB;YAC/C,kBAAkB,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;YAC3C,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC;YACxD,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;SACpC,CAAC;QAEF,MAAM,aAAa,GAAkB;YACnC,OAAO,EAAE,gBAAgB;YACzB,IAAI,EAAE,QAAQ;YACd,YAAY;YACZ,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACnC,mBAAmB;SACpB,CAAC;QAEF,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,KAAmB;QAC3C,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;QAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE7C,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QAExC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,EAAE;YACvC,EAAE,EAAE,YAAY;YAChB,QAAQ;YACR,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;YACzB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,YAAY;SACb,CAAC,CAAC;QAEH,0CAA0C;QAC1C,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACrF,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,YAAoB,EACpB,KAAmB,EACnB,QAAgB,EAChB,IAAc,EACd,YAA0B;QAE1B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEvC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBAC5C,YAAY;gBACZ,WAAW,EAAE,KAAK,CAAC,OAAO;gBAC1B,OAAO,EAAE,QAAQ;aAClB,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAE1D,MAAM,WAAW,GAAoB;gBACnC,YAAY;gBACZ,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,wBAAwB;aAClC,CAAC;YACF,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAExC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAE1D,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;YAE5F,MAAM,SAAS,GAAkB;gBAC/B,YAAY;gBACZ,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,YAAY,EAAE,cAAc,CAAC,YAAY;aAC1C,CAAC;YAEF,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAEjE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC5C,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC5D,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAC9F,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACpD,CAAC;YAED,MAAM,UAAU,GAAmB;gBACjC,YAAY;gBACZ,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,IAAI,EAAE,UAAU,CAAC,WAAW;gBAC5B,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC/D,IAAI,EAAE,uCAAuC;aAC9C,CAAC;YAEF,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CACzB,YAAY,EACZ,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC1D,CAAC;YAEF,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,KAAmB;QAC3C,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;QAE/B,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC5D,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC9F,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC5C,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CACzB,YAAY,EACZ,IAAI,SAAS,CAAC,KAAK,CAAC,IAAW,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAC1E,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,YAAoB;QACzC,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC5D,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAE9F,MAAM,UAAU,GAAmB;gBACjC,YAAY;gBACZ,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,IAAI,EAAE,UAAU,CAAC,SAAS;gBAC1B,OAAO,EAAE,sBAAsB;aAChC,CAAC;YACF,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAElD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC5C,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CACzB,YAAY,EACZ,IAAI,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,mCAAmC,EAAE,SAAS,EAAE,YAAY,CAAC,CAClG,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAC;IAC3D,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,QAAgB,EAChB,IAAc;QAEd,MAAM,OAAO,GAAY;YACvB,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,UAAU,EAAE;YACvB,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE;gBACL,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;gBACnC;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,0CAA0C,QAAQ,WAAW,IAAI,CAAC,WAAW,EAAE;iBACtF;aACF;SACF,CAAC;QAEF,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;QAC/B,MAAM,cAAc,GAAG,IAAI,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAE1E,MAAM,QAAQ,GAAG,IAAI,wBAAwB,EAAE,CAAC;QAChD,MAAM,OAAO,GAAc,EAAE,CAAC;QAE9B,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAA0B,EAAE,EAAE;YAClD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QAEtD,MAAM,OAAO,GAAG,OAAO;aACpB,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;aACvB,MAAM,CAAC,CAAC,CAAC,EAAuC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;aACrE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAClB,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO;YACL,OAAO,EAAE,OAAO,IAAI,gBAAgB;SACrC,CAAC;IACJ,CAAC;IAED,SAAS;QACP,OAAO;YACL,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI;YAChD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI;YAC9C,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACnE,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE;aACrC,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAEO,kBAAkB,CACxB,YAAoB,EACpB,IAAY,EACZ,OAAe,EACf,IAAa;QAEb,OAAO;YACL,OAAO,EAAE,gBAAgB;YACzB,IAAI,EAAE,OAAO;YACb,YAAY;YACZ,IAAI;YACJ,OAAO;YACP,IAAI;SACL,CAAC;IACJ,CAAC;CACF;AAED,MAAM,kBAAkB;IACb,WAAW,CAAU;IACrB,MAAM,CAAS;IACf,SAAS,CAAS;IAClB,IAAI,CAAa;IACjB,cAAc,CAAa;IAC3B,OAAO,CAAa;IAE7B,YAAY,WAAoB,EAAE,MAAc,EAAE,SAAiB;QACjE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Workspace Manager - manages workspace directories on Executor side
3
+ */
4
+ export interface WorkspaceValidation {
5
+ valid: boolean;
6
+ reason?: string;
7
+ }
8
+ /**
9
+ * Manages workspace allocation, preparation, and cleanup.
10
+ */
11
+ export declare class WorkspaceManager {
12
+ private workDir;
13
+ private allocated;
14
+ constructor(workDir: string);
15
+ /** Allocate a workspace path for a delegation */
16
+ allocate(delegationId: string): string;
17
+ /** Validate that a workspace path is safe to use */
18
+ validate(path: string): WorkspaceValidation;
19
+ /** Prepare a workspace directory */
20
+ prepare(path: string): Promise<void>;
21
+ /** Release a workspace and remove the directory */
22
+ release(path: string): Promise<void>;
23
+ /** Cleanup stale workspace directories from previous runs */
24
+ cleanupStale(): Promise<number>;
25
+ /** Check if a path is currently allocated */
26
+ isAllocated(path: string): boolean;
27
+ /** Get all currently allocated paths */
28
+ getAllocated(): string[];
29
+ }
30
+ //# sourceMappingURL=workspace-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-manager.d.ts","sourceRoot":"","sources":["../../src/executor/workspace-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAqB;gBAE1B,OAAO,EAAE,MAAM;IAI3B,iDAAiD;IACjD,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAMtC,oDAAoD;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB;IAO3C,oCAAoC;IAC9B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1C,mDAAmD;IAC7C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1C,6DAA6D;IACvD,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAmBrC,6CAA6C;IAC7C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIlC,wCAAwC;IACxC,YAAY,IAAI,MAAM,EAAE;CAGzB"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Workspace Manager - manages workspace directories on Executor side
3
+ */
4
+ import { mkdir, readdir, rm } from 'node:fs/promises';
5
+ import { join } from 'node:path';
6
+ /**
7
+ * Manages workspace allocation, preparation, and cleanup.
8
+ */
9
+ export class WorkspaceManager {
10
+ workDir;
11
+ allocated = new Set();
12
+ constructor(workDir) {
13
+ this.workDir = workDir;
14
+ }
15
+ /** Allocate a workspace path for a delegation */
16
+ allocate(delegationId) {
17
+ const path = join(this.workDir, delegationId);
18
+ this.allocated.add(path);
19
+ return path;
20
+ }
21
+ /** Validate that a workspace path is safe to use */
22
+ validate(path) {
23
+ if (!path.startsWith(this.workDir)) {
24
+ return { valid: false, reason: `Path must be under ${this.workDir}` };
25
+ }
26
+ return { valid: true };
27
+ }
28
+ /** Prepare a workspace directory */
29
+ async prepare(path) {
30
+ await mkdir(path, { recursive: true });
31
+ const entries = await readdir(path);
32
+ if (entries.length > 0) {
33
+ throw new Error(`Workspace ${path} is not empty`);
34
+ }
35
+ }
36
+ /** Release a workspace and remove the directory */
37
+ async release(path) {
38
+ this.allocated.delete(path);
39
+ try {
40
+ await rm(path, { recursive: true, force: true });
41
+ }
42
+ catch {
43
+ // Ignore errors - directory may already be gone
44
+ }
45
+ }
46
+ /** Cleanup stale workspace directories from previous runs */
47
+ async cleanupStale() {
48
+ let cleaned = 0;
49
+ try {
50
+ const entries = await readdir(this.workDir, { withFileTypes: true });
51
+ for (const entry of entries) {
52
+ if (entry.isDirectory()) {
53
+ const path = join(this.workDir, entry.name);
54
+ if (!this.allocated.has(path)) {
55
+ await rm(path, { recursive: true, force: true });
56
+ cleaned++;
57
+ }
58
+ }
59
+ }
60
+ }
61
+ catch {
62
+ // Root directory may not exist yet
63
+ }
64
+ return cleaned;
65
+ }
66
+ /** Check if a path is currently allocated */
67
+ isAllocated(path) {
68
+ return this.allocated.has(path);
69
+ }
70
+ /** Get all currently allocated paths */
71
+ getAllocated() {
72
+ return Array.from(this.allocated);
73
+ }
74
+ }
75
+ //# sourceMappingURL=workspace-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-manager.js","sourceRoot":"","sources":["../../src/executor/workspace-manager.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * AWCP SDK - Delegator and Executor implementations
5
5
  */
6
- export { DelegatorService, type DelegatorServiceOptions, type DelegateParams, type DelegatorServiceStatus, type DelegatorConfig, type SshConfig, type DelegationDefaults, type DelegatorHooks, startDelegatorDaemon, DelegatorDaemonClient, type DaemonConfig, type DaemonInstance, type DelegateRequest, type DelegateResponse, type ListDelegationsResponse, AdmissionController, type AdmissionConfig, type AdmissionResult, type WorkspaceStats, ExportViewManager, ExecutorClient, } from './delegator/index.js';
7
- export { ExecutorService, type ExecutorServiceOptions, type ExecutorServiceStatus, type ExecutorConfig, type MountConfig, type PolicyConstraints, type ExecutorHooks, LocalPolicy, type PolicyConfig, type MountPointValidation, DelegatorClient, } from './executor/index.js';
6
+ export { DelegatorService, type DelegatorServiceOptions, type DelegateParams, type DelegatorServiceStatus, type DelegatorConfig, type DelegationDefaults, type DelegatorHooks, startDelegatorDaemon, DelegatorDaemonClient, type DaemonConfig, type DaemonInstance, type DelegateRequest, type DelegateResponse, type ListDelegationsResponse, AdmissionController, type AdmissionConfig, type AdmissionResult, type WorkspaceStats, ExportManager, ExecutorClient, } from './delegator/index.js';
7
+ export { ExecutorService, type ExecutorServiceOptions, type ExecutorServiceStatus, type ExecutorConfig, type PolicyConstraints, type ExecutorHooks, WorkspaceManager, type WorkspaceValidation, } from './executor/index.js';
8
8
  export * from '@awcp/core';
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAEL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAE3B,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,cAAc,EAEnB,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAE5B,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,iBAAiB,EACjB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAEL,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAE1B,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAElB,WAAW,EACX,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAM7B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAEL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAE3B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EAEnB,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAE5B,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,aAAa,EACb,cAAc,GACf,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAEL,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAE1B,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAElB,gBAAgB,EAChB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAM7B,cAAc,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -12,7 +12,7 @@ DelegatorService,
12
12
  // Daemon mode
13
13
  startDelegatorDaemon, DelegatorDaemonClient,
14
14
  // Utilities
15
- AdmissionController, ExportViewManager, ExecutorClient, } from './delegator/index.js';
15
+ AdmissionController, ExportManager, ExecutorClient, } from './delegator/index.js';
16
16
  // ============================================
17
17
  // Executor API (for executing delegations)
18
18
  // ============================================
@@ -20,7 +20,7 @@ export {
20
20
  // Service
21
21
  ExecutorService,
22
22
  // Utilities
23
- LocalPolicy, DelegatorClient, } from './executor/index.js';
23
+ WorkspaceManager, } from './executor/index.js';
24
24
  // ============================================
25
25
  // Re-export core types for convenience
26
26
  // ============================================
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,+CAA+C;AAC/C,2CAA2C;AAC3C,+CAA+C;AAE/C,OAAO;AACL,UAAU;AACV,gBAAgB;AAShB,cAAc;AACd,oBAAoB,EACpB,qBAAqB;AAMrB,YAAY;AACZ,mBAAmB,EAInB,iBAAiB,EACjB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,+CAA+C;AAC/C,2CAA2C;AAC3C,+CAA+C;AAE/C,OAAO;AACL,UAAU;AACV,eAAe;AAQf,YAAY;AACZ,WAAW,EAGX,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAE7B,+CAA+C;AAC/C,uCAAuC;AACvC,+CAA+C;AAE/C,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,+CAA+C;AAC/C,2CAA2C;AAC3C,+CAA+C;AAE/C,OAAO;AACL,UAAU;AACV,gBAAgB;AAQhB,cAAc;AACd,oBAAoB,EACpB,qBAAqB;AAMrB,YAAY;AACZ,mBAAmB,EAInB,aAAa,EACb,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,+CAA+C;AAC/C,2CAA2C;AAC3C,+CAA+C;AAE/C,OAAO;AACL,UAAU;AACV,eAAe;AAOf,YAAY;AACZ,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAE7B,+CAA+C;AAC/C,uCAAuC;AACvC,+CAA+C;AAE/C,cAAc,YAAY,CAAC"}