@awcp/sdk 0.0.0-dev-202601301521 → 0.0.1

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 (45) hide show
  1. package/dist/delegator/bin/daemon.d.ts +1 -9
  2. package/dist/delegator/bin/daemon.d.ts.map +1 -1
  3. package/dist/delegator/bin/daemon.js +7 -18
  4. package/dist/delegator/bin/daemon.js.map +1 -1
  5. package/dist/delegator/config.d.ts +71 -9
  6. package/dist/delegator/config.d.ts.map +1 -1
  7. package/dist/delegator/config.js +12 -1
  8. package/dist/delegator/config.js.map +1 -1
  9. package/dist/delegator/index.d.ts +2 -2
  10. package/dist/delegator/index.d.ts.map +1 -1
  11. package/dist/delegator/index.js +3 -3
  12. package/dist/delegator/index.js.map +1 -1
  13. package/dist/delegator/service.d.ts +69 -1
  14. package/dist/delegator/service.d.ts.map +1 -1
  15. package/dist/delegator/service.js +100 -15
  16. package/dist/delegator/service.js.map +1 -1
  17. package/dist/executor/config.d.ts +81 -11
  18. package/dist/executor/config.d.ts.map +1 -1
  19. package/dist/executor/config.js +9 -2
  20. package/dist/executor/config.js.map +1 -1
  21. package/dist/executor/index.d.ts +2 -2
  22. package/dist/executor/index.d.ts.map +1 -1
  23. package/dist/executor/index.js +2 -2
  24. package/dist/executor/index.js.map +1 -1
  25. package/dist/executor/policy.d.ts +55 -0
  26. package/dist/executor/policy.d.ts.map +1 -0
  27. package/dist/executor/policy.js +100 -0
  28. package/dist/executor/policy.js.map +1 -0
  29. package/dist/executor/service.d.ts +49 -3
  30. package/dist/executor/service.d.ts.map +1 -1
  31. package/dist/executor/service.js +112 -33
  32. package/dist/executor/service.js.map +1 -1
  33. package/dist/index.d.ts +2 -2
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +2 -2
  36. package/dist/index.js.map +1 -1
  37. package/package.json +3 -2
  38. package/dist/delegator/export-manager.d.ts +0 -27
  39. package/dist/delegator/export-manager.d.ts.map +0 -1
  40. package/dist/delegator/export-manager.js +0 -85
  41. package/dist/delegator/export-manager.js.map +0 -1
  42. package/dist/executor/workspace-manager.d.ts +0 -30
  43. package/dist/executor/workspace-manager.d.ts.map +0 -1
  44. package/dist/executor/workspace-manager.js +0 -75
  45. package/dist/executor/workspace-manager.js.map +0 -1
@@ -1,27 +0,0 @@
1
- /**
2
- * Export Manager - manages export directories on Delegator side
3
- */
4
- import type { ExportConfig } from './config.js';
5
- /**
6
- * Manages export directory allocation and cleanup.
7
- */
8
- export declare class ExportManager {
9
- private baseDir;
10
- private strategy;
11
- private exports;
12
- constructor(config?: ExportConfig);
13
- /**
14
- * Allocate an export path for a delegation.
15
- * Returns path with trailing slash for SSHFS symlink compatibility.
16
- */
17
- allocate(delegationId: string, localDir: string): Promise<string>;
18
- /** Release an export and remove the directory */
19
- release(delegationId: string): Promise<void>;
20
- /** Get the export path for a delegation */
21
- getPath(delegationId: string): string | undefined;
22
- /** Release all exports */
23
- releaseAll(): Promise<void>;
24
- /** Cleanup stale export directories from previous runs */
25
- cleanupStale(): Promise<number>;
26
- }
27
- //# sourceMappingURL=export-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"export-manager.d.ts","sourceRoot":"","sources":["../../src/delegator/export-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,OAAO,CAA6B;gBAEhC,MAAM,CAAC,EAAE,YAAY;IAKjC;;;OAGG;IACG,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BvE,iDAAiD;IAC3C,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAalD,2CAA2C;IAC3C,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIjD,0BAA0B;IACpB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC,0DAA0D;IACpD,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;CAetC"}
@@ -1,85 +0,0 @@
1
- /**
2
- * Export Manager - manages export directories on Delegator side
3
- */
4
- import { mkdir, rm, symlink, readdir } from 'node:fs/promises';
5
- import { join } from 'node:path';
6
- const DEFAULT_EXPORT_BASE = '/tmp/awcp/exports';
7
- /**
8
- * Manages export directory allocation and cleanup.
9
- */
10
- export class ExportManager {
11
- baseDir;
12
- strategy;
13
- exports = new Map();
14
- constructor(config) {
15
- this.baseDir = config?.baseDir ?? DEFAULT_EXPORT_BASE;
16
- this.strategy = config?.strategy ?? 'symlink';
17
- }
18
- /**
19
- * Allocate an export path for a delegation.
20
- * Returns path with trailing slash for SSHFS symlink compatibility.
21
- */
22
- async allocate(delegationId, localDir) {
23
- const exportPath = join(this.baseDir, delegationId, 'workspace');
24
- await mkdir(join(this.baseDir, delegationId), { recursive: true });
25
- switch (this.strategy) {
26
- case 'symlink':
27
- await symlink(localDir, exportPath);
28
- break;
29
- case 'bind':
30
- // Not implemented, fallback to symlink
31
- await symlink(localDir, exportPath);
32
- break;
33
- case 'worktree':
34
- // Not implemented, fallback to symlink
35
- await symlink(localDir, exportPath);
36
- break;
37
- }
38
- this.exports.set(delegationId, exportPath);
39
- // Trailing slash for SSHFS symlink compatibility
40
- // See: https://github.com/libfuse/sshfs/issues/312
41
- return exportPath + '/';
42
- }
43
- /** Release an export and remove the directory */
44
- async release(delegationId) {
45
- const exportPath = this.exports.get(delegationId);
46
- if (!exportPath)
47
- return;
48
- try {
49
- const delegationDir = join(this.baseDir, delegationId);
50
- await rm(delegationDir, { recursive: true, force: true });
51
- this.exports.delete(delegationId);
52
- }
53
- catch (error) {
54
- console.error(`Failed to release export for ${delegationId}:`, error);
55
- }
56
- }
57
- /** Get the export path for a delegation */
58
- getPath(delegationId) {
59
- return this.exports.get(delegationId);
60
- }
61
- /** Release all exports */
62
- async releaseAll() {
63
- for (const delegationId of this.exports.keys()) {
64
- await this.release(delegationId);
65
- }
66
- }
67
- /** Cleanup stale export directories from previous runs */
68
- async cleanupStale() {
69
- let cleaned = 0;
70
- try {
71
- const entries = await readdir(this.baseDir, { withFileTypes: true });
72
- for (const entry of entries) {
73
- if (entry.isDirectory() && !this.exports.has(entry.name)) {
74
- await rm(join(this.baseDir, entry.name), { recursive: true, force: true });
75
- cleaned++;
76
- }
77
- }
78
- }
79
- catch {
80
- // Base directory may not exist yet
81
- }
82
- return cleaned;
83
- }
84
- }
85
- //# sourceMappingURL=export-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"export-manager.js","sourceRoot":"","sources":["../../src/delegator/export-manager.ts"],"names":[],"mappings":"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"}
@@ -1,30 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,75 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace-manager.js","sourceRoot":"","sources":["../../src/executor/workspace-manager.ts"],"names":[],"mappings":"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"}