@awcp/sdk 0.0.7 → 0.0.9
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/delegator/admission.d.ts +8 -15
- package/dist/delegator/admission.d.ts.map +1 -1
- package/dist/delegator/admission.js +15 -36
- package/dist/delegator/admission.js.map +1 -1
- package/dist/delegator/bin/client.d.ts +8 -9
- package/dist/delegator/bin/client.d.ts.map +1 -1
- package/dist/delegator/bin/client.js +3 -1
- package/dist/delegator/bin/client.js.map +1 -1
- package/dist/delegator/bin/daemon.js +9 -9
- package/dist/delegator/bin/daemon.js.map +1 -1
- package/dist/delegator/config.d.ts +24 -25
- package/dist/delegator/config.d.ts.map +1 -1
- package/dist/delegator/config.js +24 -20
- package/dist/delegator/config.js.map +1 -1
- package/dist/delegator/environment-builder.d.ts +38 -0
- package/dist/delegator/environment-builder.d.ts.map +1 -0
- package/dist/delegator/environment-builder.js +81 -0
- package/dist/delegator/environment-builder.js.map +1 -0
- package/dist/delegator/executor-client.js +1 -1
- package/dist/delegator/executor-client.js.map +1 -1
- package/dist/delegator/index.d.ts +4 -3
- package/dist/delegator/index.d.ts.map +1 -1
- package/dist/delegator/index.js +3 -2
- package/dist/delegator/index.js.map +1 -1
- package/dist/delegator/resource-adapters/fs-adapter.d.ts +8 -0
- package/dist/delegator/resource-adapters/fs-adapter.d.ts.map +1 -0
- package/dist/delegator/resource-adapters/fs-adapter.js +14 -0
- package/dist/delegator/resource-adapters/fs-adapter.js.map +1 -0
- package/dist/delegator/resource-adapters/index.d.ts +4 -0
- package/dist/delegator/resource-adapters/index.d.ts.map +1 -0
- package/dist/delegator/resource-adapters/index.js +3 -0
- package/dist/delegator/resource-adapters/index.js.map +1 -0
- package/dist/delegator/resource-adapters/registry.d.ts +8 -0
- package/dist/delegator/resource-adapters/registry.d.ts.map +1 -0
- package/dist/delegator/resource-adapters/registry.js +17 -0
- package/dist/delegator/resource-adapters/registry.js.map +1 -0
- package/dist/delegator/resource-adapters/types.d.ts +7 -0
- package/dist/delegator/resource-adapters/types.d.ts.map +1 -0
- package/dist/delegator/resource-adapters/types.js +2 -0
- package/dist/delegator/resource-adapters/types.js.map +1 -0
- package/dist/delegator/service.d.ts +4 -4
- package/dist/delegator/service.d.ts.map +1 -1
- package/dist/delegator/service.js +36 -39
- package/dist/delegator/service.js.map +1 -1
- package/dist/executor/config.d.ts +2 -1
- package/dist/executor/config.d.ts.map +1 -1
- package/dist/executor/config.js.map +1 -1
- package/dist/executor/service.d.ts +1 -0
- package/dist/executor/service.d.ts.map +1 -1
- package/dist/executor/service.js +30 -9
- package/dist/executor/service.js.map +1 -1
- package/dist/executor/workspace-manager.d.ts +0 -10
- package/dist/executor/workspace-manager.d.ts.map +1 -1
- package/dist/executor/workspace-manager.js +8 -27
- package/dist/executor/workspace-manager.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -22
- package/dist/index.js.map +1 -1
- package/dist/server/express/awcp-executor-handler.js +2 -2
- package/dist/utils/fs-helpers.d.ts +17 -0
- package/dist/utils/fs-helpers.d.ts.map +1 -0
- package/dist/utils/fs-helpers.js +34 -0
- package/dist/utils/fs-helpers.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/resolve-workdir.d.ts +21 -0
- package/dist/utils/resolve-workdir.d.ts.map +1 -0
- package/dist/utils/resolve-workdir.js +30 -0
- package/dist/utils/resolve-workdir.js.map +1 -0
- package/package.json +2 -2
- package/dist/delegator/export-manager.d.ts +0 -27
- package/dist/delegator/export-manager.d.ts.map +0 -1
- package/dist/delegator/export-manager.js +0 -85
- package/dist/delegator/export-manager.js.map +0 -1
- package/dist/delegator/export-view.d.ts +0 -43
- package/dist/delegator/export-view.d.ts.map +0 -1
- package/dist/delegator/export-view.js +0 -108
- package/dist/delegator/export-view.js.map +0 -1
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
* Admission control configuration
|
|
3
3
|
*/
|
|
4
4
|
export interface AdmissionConfig {
|
|
5
|
-
/** Maximum total bytes allowed
|
|
5
|
+
/** Maximum total bytes allowed */
|
|
6
6
|
maxTotalBytes?: number;
|
|
7
|
-
/** Maximum file count allowed
|
|
7
|
+
/** Maximum file count allowed */
|
|
8
8
|
maxFileCount?: number;
|
|
9
|
-
/** Maximum single file size
|
|
9
|
+
/** Maximum single file size */
|
|
10
10
|
maxSingleFileBytes?: number;
|
|
11
|
-
/** Custom check function */
|
|
11
|
+
/** Custom check function for advanced validation */
|
|
12
12
|
customCheck?: (localDir: string) => Promise<AdmissionResult>;
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
|
-
* Workspace statistics
|
|
15
|
+
* Workspace statistics from admission scan
|
|
16
16
|
*/
|
|
17
17
|
export interface WorkspaceStats {
|
|
18
18
|
estimatedBytes?: number;
|
|
@@ -28,22 +28,15 @@ export interface AdmissionResult {
|
|
|
28
28
|
hint?: string;
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
|
-
* Admission Controller
|
|
32
|
-
*
|
|
33
31
|
* Performs preflight checks on workspace before allowing delegation.
|
|
34
|
-
*
|
|
32
|
+
* Protects the system from oversized workspaces that could overwhelm
|
|
33
|
+
* network or storage resources.
|
|
35
34
|
*/
|
|
36
35
|
export declare class AdmissionController {
|
|
37
36
|
private config;
|
|
38
37
|
constructor(config?: AdmissionConfig);
|
|
39
|
-
/**
|
|
40
|
-
* Check if a workspace is suitable for delegation
|
|
41
|
-
*/
|
|
42
38
|
check(localDir: string): Promise<AdmissionResult>;
|
|
43
|
-
|
|
44
|
-
* Estimate workspace statistics by recursively scanning the directory
|
|
45
|
-
*/
|
|
46
|
-
private estimateWorkspaceStats;
|
|
39
|
+
private scanWorkspace;
|
|
47
40
|
private formatBytes;
|
|
48
41
|
}
|
|
49
42
|
//# sourceMappingURL=admission.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admission.d.ts","sourceRoot":"","sources":["../../src/delegator/admission.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"admission.d.ts","sourceRoot":"","sources":["../../src/delegator/admission.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oDAAoD;IACpD,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;CAC9D;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,CAAC,EAAE,eAAe;IAI9B,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;YA4CzC,aAAa;IAsC3B,OAAO,CAAC,WAAW;CAMpB"}
|
|
@@ -1,36 +1,25 @@
|
|
|
1
1
|
import { stat, readdir } from 'node:fs/promises';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
+
import { DEFAULT_ADMISSION } from './config.js';
|
|
3
4
|
/**
|
|
4
|
-
* Default thresholds
|
|
5
|
-
*/
|
|
6
|
-
const DEFAULT_MAX_TOTAL_BYTES = 100 * 1024 * 1024; // 100MB
|
|
7
|
-
const DEFAULT_MAX_FILE_COUNT = 10000;
|
|
8
|
-
const DEFAULT_MAX_SINGLE_FILE_BYTES = 50 * 1024 * 1024; // 50MB
|
|
9
|
-
/**
|
|
10
|
-
* Admission Controller
|
|
11
|
-
*
|
|
12
5
|
* Performs preflight checks on workspace before allowing delegation.
|
|
13
|
-
*
|
|
6
|
+
* Protects the system from oversized workspaces that could overwhelm
|
|
7
|
+
* network or storage resources.
|
|
14
8
|
*/
|
|
15
9
|
export class AdmissionController {
|
|
16
10
|
config;
|
|
17
11
|
constructor(config) {
|
|
18
12
|
this.config = config ?? {};
|
|
19
13
|
}
|
|
20
|
-
/**
|
|
21
|
-
* Check if a workspace is suitable for delegation
|
|
22
|
-
*/
|
|
23
14
|
async check(localDir) {
|
|
24
|
-
// If custom check is provided, use it
|
|
25
15
|
if (this.config.customCheck) {
|
|
26
16
|
return this.config.customCheck(localDir);
|
|
27
17
|
}
|
|
28
18
|
try {
|
|
29
|
-
const stats = await this.
|
|
30
|
-
const maxTotal = this.config.maxTotalBytes ??
|
|
31
|
-
const maxCount = this.config.maxFileCount ??
|
|
32
|
-
const maxSingle = this.config.maxSingleFileBytes ??
|
|
33
|
-
// Check total size
|
|
19
|
+
const stats = await this.scanWorkspace(localDir);
|
|
20
|
+
const maxTotal = this.config.maxTotalBytes ?? DEFAULT_ADMISSION.maxTotalBytes;
|
|
21
|
+
const maxCount = this.config.maxFileCount ?? DEFAULT_ADMISSION.maxFileCount;
|
|
22
|
+
const maxSingle = this.config.maxSingleFileBytes ?? DEFAULT_ADMISSION.maxSingleFileBytes;
|
|
34
23
|
if (stats.estimatedBytes && stats.estimatedBytes > maxTotal) {
|
|
35
24
|
return {
|
|
36
25
|
allowed: false,
|
|
@@ -38,7 +27,6 @@ export class AdmissionController {
|
|
|
38
27
|
hint: `Workspace size (${this.formatBytes(stats.estimatedBytes)}) exceeds limit (${this.formatBytes(maxTotal)}). Consider selecting a smaller subdirectory.`,
|
|
39
28
|
};
|
|
40
29
|
}
|
|
41
|
-
// Check file count
|
|
42
30
|
if (stats.fileCount && stats.fileCount > maxCount) {
|
|
43
31
|
return {
|
|
44
32
|
allowed: false,
|
|
@@ -46,7 +34,6 @@ export class AdmissionController {
|
|
|
46
34
|
hint: `File count (${stats.fileCount}) exceeds limit (${maxCount}). Consider excluding node_modules, build artifacts, or data directories.`,
|
|
47
35
|
};
|
|
48
36
|
}
|
|
49
|
-
// Check largest file
|
|
50
37
|
if (stats.largestFileBytes && stats.largestFileBytes > maxSingle) {
|
|
51
38
|
return {
|
|
52
39
|
allowed: false,
|
|
@@ -57,29 +44,25 @@ export class AdmissionController {
|
|
|
57
44
|
return { allowed: true, stats };
|
|
58
45
|
}
|
|
59
46
|
catch (error) {
|
|
60
|
-
//
|
|
61
|
-
|
|
62
|
-
console.warn('Admission check failed, allowing by default:', error);
|
|
47
|
+
// Fail open for usability - real implementations may want to fail closed
|
|
48
|
+
console.warn('[AWCP:Admission] Check failed, allowing by default:', error);
|
|
63
49
|
return { allowed: true };
|
|
64
50
|
}
|
|
65
51
|
}
|
|
66
|
-
|
|
67
|
-
* Estimate workspace statistics by recursively scanning the directory
|
|
68
|
-
*/
|
|
69
|
-
async estimateWorkspaceStats(localDir) {
|
|
52
|
+
async scanWorkspace(localDir) {
|
|
70
53
|
let totalBytes = 0;
|
|
71
54
|
let fileCount = 0;
|
|
72
55
|
let largestFileBytes = 0;
|
|
73
|
-
const
|
|
56
|
+
const scan = async (dir) => {
|
|
74
57
|
const entries = await readdir(dir, { withFileTypes: true });
|
|
75
58
|
for (const entry of entries) {
|
|
76
59
|
const fullPath = join(dir, entry.name);
|
|
77
60
|
if (entry.isDirectory()) {
|
|
78
|
-
// Skip
|
|
61
|
+
// Skip directories that shouldn't be delegated
|
|
79
62
|
if (entry.name === 'node_modules' || entry.name === '.git') {
|
|
80
63
|
continue;
|
|
81
64
|
}
|
|
82
|
-
await
|
|
65
|
+
await scan(fullPath);
|
|
83
66
|
}
|
|
84
67
|
else if (entry.isFile()) {
|
|
85
68
|
try {
|
|
@@ -97,12 +80,8 @@ export class AdmissionController {
|
|
|
97
80
|
}
|
|
98
81
|
}
|
|
99
82
|
};
|
|
100
|
-
await
|
|
101
|
-
return {
|
|
102
|
-
estimatedBytes: totalBytes,
|
|
103
|
-
fileCount,
|
|
104
|
-
largestFileBytes,
|
|
105
|
-
};
|
|
83
|
+
await scan(localDir);
|
|
84
|
+
return { estimatedBytes: totalBytes, fileCount, largestFileBytes };
|
|
106
85
|
}
|
|
107
86
|
formatBytes(bytes) {
|
|
108
87
|
if (bytes < 1024)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admission.js","sourceRoot":"","sources":["../../src/delegator/admission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"admission.js","sourceRoot":"","sources":["../../src/delegator/admission.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,9 @@
|
|
|
13
13
|
* // Create delegation
|
|
14
14
|
* const result = await client.delegate({
|
|
15
15
|
* executorUrl: 'http://executor:4001/awcp',
|
|
16
|
-
*
|
|
16
|
+
* environment: {
|
|
17
|
+
* resources: [{ name: 'project', type: 'fs', source: '/path/to/project', mode: 'rw' }]
|
|
18
|
+
* },
|
|
17
19
|
* task: { description: 'Fix bug', prompt: '...' },
|
|
18
20
|
* });
|
|
19
21
|
*
|
|
@@ -24,25 +26,22 @@
|
|
|
24
26
|
* const all = await client.listDelegations();
|
|
25
27
|
* ```
|
|
26
28
|
*/
|
|
27
|
-
import type { Delegation, TaskSpec, AccessMode, AuthCredential } from '@awcp/core';
|
|
29
|
+
import type { Delegation, TaskSpec, AccessMode, AuthCredential, EnvironmentSpec } from '@awcp/core';
|
|
28
30
|
/**
|
|
29
31
|
* Parameters for creating a delegation
|
|
30
32
|
*/
|
|
31
33
|
export interface DelegateRequest {
|
|
32
34
|
/** URL of the Executor's AWCP endpoint */
|
|
33
35
|
executorUrl: string;
|
|
34
|
-
/**
|
|
35
|
-
|
|
36
|
+
/** Environment specification with resources to delegate */
|
|
37
|
+
environment: EnvironmentSpec;
|
|
36
38
|
/** Task specification */
|
|
37
39
|
task: TaskSpec;
|
|
38
40
|
/** TTL in seconds (uses default if not specified) */
|
|
39
41
|
ttlSeconds?: number;
|
|
40
42
|
/** Access mode (uses default if not specified) */
|
|
41
43
|
accessMode?: AccessMode;
|
|
42
|
-
/**
|
|
43
|
-
* Optional authentication for paid/restricted Executor services.
|
|
44
|
-
* This will be included in the INVITE message.
|
|
45
|
-
*/
|
|
44
|
+
/** Optional authentication for paid/restricted Executor services */
|
|
46
45
|
auth?: AuthCredential;
|
|
47
46
|
}
|
|
48
47
|
/**
|
|
@@ -60,7 +59,7 @@ export interface ListDelegationsResponse {
|
|
|
60
59
|
id: string;
|
|
61
60
|
state: string;
|
|
62
61
|
executorUrl: string;
|
|
63
|
-
|
|
62
|
+
environment: EnvironmentSpec;
|
|
64
63
|
createdAt: string;
|
|
65
64
|
}>;
|
|
66
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/delegator/bin/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/delegator/bin/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEpG;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,WAAW,EAAE,eAAe,CAAC;IAC7B,yBAAyB;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,oEAAoE;IACpE,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,KAAK,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,eAAe,CAAC;QAC7B,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;gBAEZ,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAK7D;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAQlE;;OAEG;IACG,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAI9D;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAIzD;;OAEG;IACG,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D;;OAEG;IACG,iBAAiB,CACrB,YAAY,EAAE,MAAM,EACpB,cAAc,GAAE,MAAa,EAC7B,SAAS,GAAE,MAAc,GACxB,OAAO,CAAC,UAAU,CAAC;IAoBtB;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;YASlB,OAAO;CA+BtB"}
|
|
@@ -13,7 +13,9 @@
|
|
|
13
13
|
* // Create delegation
|
|
14
14
|
* const result = await client.delegate({
|
|
15
15
|
* executorUrl: 'http://executor:4001/awcp',
|
|
16
|
-
*
|
|
16
|
+
* environment: {
|
|
17
|
+
* resources: [{ name: 'project', type: 'fs', source: '/path/to/project', mode: 'rw' }]
|
|
18
|
+
* },
|
|
17
19
|
* task: { description: 'Fix bug', prompt: '...' },
|
|
18
20
|
* });
|
|
19
21
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/delegator/bin/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/delegator/bin/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,16 +26,16 @@ export async function startDelegatorDaemon(config) {
|
|
|
26
26
|
*/
|
|
27
27
|
app.post('/delegate', async (req, res) => {
|
|
28
28
|
try {
|
|
29
|
-
const { executorUrl,
|
|
30
|
-
if (!executorUrl || !
|
|
29
|
+
const { executorUrl, environment, task, ttlSeconds, accessMode } = req.body;
|
|
30
|
+
if (!executorUrl || !environment || !task) {
|
|
31
31
|
res.status(400).json({
|
|
32
|
-
error: 'Missing required fields: executorUrl,
|
|
32
|
+
error: 'Missing required fields: executorUrl, environment, task',
|
|
33
33
|
});
|
|
34
34
|
return;
|
|
35
35
|
}
|
|
36
36
|
const delegationId = await service.delegate({
|
|
37
37
|
executorUrl,
|
|
38
|
-
|
|
38
|
+
environment,
|
|
39
39
|
task,
|
|
40
40
|
ttlSeconds,
|
|
41
41
|
accessMode,
|
|
@@ -43,7 +43,7 @@ export async function startDelegatorDaemon(config) {
|
|
|
43
43
|
res.json({ delegationId });
|
|
44
44
|
}
|
|
45
45
|
catch (error) {
|
|
46
|
-
console.error('[
|
|
46
|
+
console.error('[AWCP:Daemon] Error creating delegation:', error);
|
|
47
47
|
if (error instanceof AwcpError) {
|
|
48
48
|
res.status(400).json({
|
|
49
49
|
error: error.message,
|
|
@@ -98,7 +98,7 @@ export async function startDelegatorDaemon(config) {
|
|
|
98
98
|
const server = createServer(app);
|
|
99
99
|
await new Promise((resolve, reject) => {
|
|
100
100
|
server.listen(port, host, () => {
|
|
101
|
-
console.log(`[
|
|
101
|
+
console.log(`[AWCP:Daemon] Listening on ${baseUrl}`);
|
|
102
102
|
resolve();
|
|
103
103
|
});
|
|
104
104
|
server.on('error', reject);
|
|
@@ -113,7 +113,7 @@ export async function startDelegatorDaemon(config) {
|
|
|
113
113
|
resolve();
|
|
114
114
|
});
|
|
115
115
|
});
|
|
116
|
-
console.log('[
|
|
116
|
+
console.log('[AWCP:Daemon] Stopped');
|
|
117
117
|
},
|
|
118
118
|
service,
|
|
119
119
|
url: baseUrl,
|
|
@@ -148,7 +148,7 @@ export async function main() {
|
|
|
148
148
|
delegator: delegatorConfig,
|
|
149
149
|
});
|
|
150
150
|
process.on('SIGINT', async () => {
|
|
151
|
-
console.log('\n[
|
|
151
|
+
console.log('\n[AWCP:Daemon] Shutting down...');
|
|
152
152
|
await daemon.stop();
|
|
153
153
|
process.exit(0);
|
|
154
154
|
});
|
|
@@ -156,6 +156,6 @@ export async function main() {
|
|
|
156
156
|
await daemon.stop();
|
|
157
157
|
process.exit(0);
|
|
158
158
|
});
|
|
159
|
-
console.log(`[
|
|
159
|
+
console.log(`[AWCP:Daemon] Ready. API available at ${daemon.url}`);
|
|
160
160
|
}
|
|
161
161
|
//# sourceMappingURL=daemon.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../../src/delegator/bin/daemon.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAgC,MAAM,eAAe,CAAC;AAE/E,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAoBvC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAoB;IAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC;IACjC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC;IACxC,MAAM,OAAO,GAAG,UAAU,IAAI,IAAI,IAAI,EAAE,CAAC;IAEzC,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAEhB,MAAM,cAAc,GAA4B;QAC9C,MAAM,EAAE,MAAM,CAAC,SAAS;KACzB,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAErD;;OAEG;IACH,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../../src/delegator/bin/daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,25 +2,14 @@
|
|
|
2
2
|
* AWCP Delegator Configuration
|
|
3
3
|
*/
|
|
4
4
|
import type { Delegation, AccessMode, DelegatorTransportAdapter } from '@awcp/core';
|
|
5
|
+
import type { AdmissionConfig } from './admission.js';
|
|
6
|
+
export type { AdmissionConfig } from './admission.js';
|
|
5
7
|
/**
|
|
6
|
-
*
|
|
8
|
+
* Environment builder configuration
|
|
7
9
|
*/
|
|
8
|
-
export interface
|
|
9
|
-
/** Base directory for
|
|
10
|
+
export interface EnvironmentConfig {
|
|
11
|
+
/** Base directory for environment directories */
|
|
10
12
|
baseDir: string;
|
|
11
|
-
/** Strategy for creating export view (default: 'symlink') */
|
|
12
|
-
strategy?: 'symlink' | 'bind' | 'worktree';
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Admission control configuration
|
|
16
|
-
*/
|
|
17
|
-
export interface AdmissionConfig {
|
|
18
|
-
/** Maximum total bytes allowed (default: 100MB) */
|
|
19
|
-
maxTotalBytes?: number;
|
|
20
|
-
/** Maximum file count allowed (default: 10000) */
|
|
21
|
-
maxFileCount?: number;
|
|
22
|
-
/** Maximum single file size (default: 50MB) */
|
|
23
|
-
maxSingleFileBytes?: number;
|
|
24
13
|
}
|
|
25
14
|
/**
|
|
26
15
|
* Default values for delegations
|
|
@@ -44,8 +33,8 @@ export interface DelegatorHooks {
|
|
|
44
33
|
* AWCP Delegator Configuration
|
|
45
34
|
*/
|
|
46
35
|
export interface DelegatorConfig {
|
|
47
|
-
/**
|
|
48
|
-
|
|
36
|
+
/** Environment builder configuration */
|
|
37
|
+
environment: EnvironmentConfig;
|
|
49
38
|
/** Transport adapter for data plane */
|
|
50
39
|
transport: DelegatorTransportAdapter;
|
|
51
40
|
/** Admission control */
|
|
@@ -56,12 +45,24 @@ export interface DelegatorConfig {
|
|
|
56
45
|
hooks?: DelegatorHooks;
|
|
57
46
|
}
|
|
58
47
|
/**
|
|
59
|
-
* Default
|
|
48
|
+
* Default admission thresholds
|
|
49
|
+
*/
|
|
50
|
+
export declare const DEFAULT_ADMISSION: {
|
|
51
|
+
readonly maxTotalBytes: number;
|
|
52
|
+
readonly maxFileCount: 10000;
|
|
53
|
+
readonly maxSingleFileBytes: number;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Default delegation settings
|
|
57
|
+
*/
|
|
58
|
+
export declare const DEFAULT_DELEGATION: {
|
|
59
|
+
readonly ttlSeconds: 3600;
|
|
60
|
+
readonly accessMode: AccessMode;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Combined default configuration
|
|
60
64
|
*/
|
|
61
65
|
export declare const DEFAULT_DELEGATOR_CONFIG: {
|
|
62
|
-
readonly export: {
|
|
63
|
-
readonly strategy: "symlink";
|
|
64
|
-
};
|
|
65
66
|
readonly admission: {
|
|
66
67
|
readonly maxTotalBytes: number;
|
|
67
68
|
readonly maxFileCount: 10000;
|
|
@@ -91,9 +92,7 @@ export interface ResolvedDelegationDefaults {
|
|
|
91
92
|
* Resolved configuration with all defaults applied
|
|
92
93
|
*/
|
|
93
94
|
export interface ResolvedDelegatorConfig {
|
|
94
|
-
export:
|
|
95
|
-
strategy: 'symlink' | 'bind' | 'worktree';
|
|
96
|
-
};
|
|
95
|
+
export: EnvironmentConfig;
|
|
97
96
|
transport: DelegatorTransportAdapter;
|
|
98
97
|
admission: ResolvedAdmissionConfig;
|
|
99
98
|
defaults: ResolvedDelegationDefaults;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/delegator/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/delegator/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mBAAmB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IACvD,mBAAmB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IACvD,qBAAqB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IACzD,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACxD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,wCAAwC;IACxC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,uCAAuC;IACvC,SAAS,EAAE,yBAAyB,CAAC;IACrC,wBAAwB;IACxB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,sBAAsB;IACtB,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,kBAAkB;;yBAET,UAAU;CACtB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;6BANf,UAAU;;CAStB,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,EAAE,yBAAyB,CAAC;IACrC,SAAS,EAAE,uBAAuB,CAAC;IACnC,QAAQ,EAAE,0BAA0B,CAAC;IACrC,KAAK,EAAE,cAAc,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,GAAG,uBAAuB,CAiBvF"}
|
package/dist/delegator/config.js
CHANGED
|
@@ -2,21 +2,26 @@
|
|
|
2
2
|
* AWCP Delegator Configuration
|
|
3
3
|
*/
|
|
4
4
|
/**
|
|
5
|
-
* Default
|
|
5
|
+
* Default admission thresholds
|
|
6
|
+
*/
|
|
7
|
+
export const DEFAULT_ADMISSION = {
|
|
8
|
+
maxTotalBytes: 100 * 1024 * 1024, // 100MB
|
|
9
|
+
maxFileCount: 10000,
|
|
10
|
+
maxSingleFileBytes: 50 * 1024 * 1024, // 50MB
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Default delegation settings
|
|
14
|
+
*/
|
|
15
|
+
export const DEFAULT_DELEGATION = {
|
|
16
|
+
ttlSeconds: 3600,
|
|
17
|
+
accessMode: 'rw',
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Combined default configuration
|
|
6
21
|
*/
|
|
7
22
|
export const DEFAULT_DELEGATOR_CONFIG = {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
},
|
|
11
|
-
admission: {
|
|
12
|
-
maxTotalBytes: 100 * 1024 * 1024, // 100MB
|
|
13
|
-
maxFileCount: 10000,
|
|
14
|
-
maxSingleFileBytes: 50 * 1024 * 1024, // 50MB
|
|
15
|
-
},
|
|
16
|
-
defaults: {
|
|
17
|
-
ttlSeconds: 3600,
|
|
18
|
-
accessMode: 'rw',
|
|
19
|
-
},
|
|
23
|
+
admission: DEFAULT_ADMISSION,
|
|
24
|
+
defaults: DEFAULT_DELEGATION,
|
|
20
25
|
};
|
|
21
26
|
/**
|
|
22
27
|
* Merge user config with defaults
|
|
@@ -24,18 +29,17 @@ export const DEFAULT_DELEGATOR_CONFIG = {
|
|
|
24
29
|
export function resolveDelegatorConfig(config) {
|
|
25
30
|
return {
|
|
26
31
|
export: {
|
|
27
|
-
baseDir: config.
|
|
28
|
-
strategy: config.export.strategy ?? DEFAULT_DELEGATOR_CONFIG.export.strategy,
|
|
32
|
+
baseDir: config.environment.baseDir,
|
|
29
33
|
},
|
|
30
34
|
transport: config.transport,
|
|
31
35
|
admission: {
|
|
32
|
-
maxTotalBytes: config.admission?.maxTotalBytes ??
|
|
33
|
-
maxFileCount: config.admission?.maxFileCount ??
|
|
34
|
-
maxSingleFileBytes: config.admission?.maxSingleFileBytes ??
|
|
36
|
+
maxTotalBytes: config.admission?.maxTotalBytes ?? DEFAULT_ADMISSION.maxTotalBytes,
|
|
37
|
+
maxFileCount: config.admission?.maxFileCount ?? DEFAULT_ADMISSION.maxFileCount,
|
|
38
|
+
maxSingleFileBytes: config.admission?.maxSingleFileBytes ?? DEFAULT_ADMISSION.maxSingleFileBytes,
|
|
35
39
|
},
|
|
36
40
|
defaults: {
|
|
37
|
-
ttlSeconds: config.defaults?.ttlSeconds ??
|
|
38
|
-
accessMode: config.defaults?.accessMode ??
|
|
41
|
+
ttlSeconds: config.defaults?.ttlSeconds ?? DEFAULT_DELEGATION.ttlSeconds,
|
|
42
|
+
accessMode: config.defaults?.accessMode ?? DEFAULT_DELEGATION.accessMode,
|
|
39
43
|
},
|
|
40
44
|
hooks: config.hooks ?? {},
|
|
41
45
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/delegator/config.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/delegator/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoDH;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,aAAa,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,EAAO,QAAQ;IAC/C,YAAY,EAAE,KAAK;IACnB,kBAAkB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAG,OAAO;CACtC,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,UAAU,EAAE,IAAI;IAChB,UAAU,EAAE,IAAkB;CACtB,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,SAAS,EAAE,iBAAiB;IAC5B,QAAQ,EAAE,kBAAkB;CACpB,CAAC;AA8BX;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAuB;IAC5D,OAAO;QACL,MAAM,EAAE;YACN,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO;SACpC;QACD,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE;YACT,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,aAAa,IAAI,iBAAiB,CAAC,aAAa;YACjF,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,YAAY,IAAI,iBAAiB,CAAC,YAAY;YAC9E,kBAAkB,EAAE,MAAM,CAAC,SAAS,EAAE,kBAAkB,IAAI,iBAAiB,CAAC,kBAAkB;SACjG;QACD,QAAQ,EAAE;YACR,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,IAAI,kBAAkB,CAAC,UAAU;YACxE,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,IAAI,kBAAkB,CAAC,UAAU;SACzE;QACD,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;KAC1B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment Builder - builds environment directories for delegation
|
|
3
|
+
*/
|
|
4
|
+
import type { EnvironmentSpec } from '@awcp/core';
|
|
5
|
+
export interface EnvironmentManifest {
|
|
6
|
+
version: '1';
|
|
7
|
+
delegationId: string;
|
|
8
|
+
createdAt: string;
|
|
9
|
+
resources: Array<{
|
|
10
|
+
name: string;
|
|
11
|
+
type: string;
|
|
12
|
+
source: string;
|
|
13
|
+
mode: 'ro' | 'rw';
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
16
|
+
export interface EnvironmentBuildResult {
|
|
17
|
+
envRoot: string;
|
|
18
|
+
manifest: EnvironmentManifest;
|
|
19
|
+
}
|
|
20
|
+
export interface EnvironmentBuilderConfig {
|
|
21
|
+
baseDir?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare class EnvironmentBuilder {
|
|
24
|
+
private baseDir;
|
|
25
|
+
private adapters;
|
|
26
|
+
private environments;
|
|
27
|
+
constructor(config?: EnvironmentBuilderConfig);
|
|
28
|
+
/**
|
|
29
|
+
* Build an environment directory from spec.
|
|
30
|
+
* Returns envRoot with trailing slash for SSHFS compatibility.
|
|
31
|
+
*/
|
|
32
|
+
build(delegationId: string, spec: EnvironmentSpec): Promise<EnvironmentBuildResult>;
|
|
33
|
+
get(delegationId: string): EnvironmentBuildResult | undefined;
|
|
34
|
+
release(delegationId: string): Promise<void>;
|
|
35
|
+
applyResult(delegationId: string, resultEnvRoot: string): Promise<void>;
|
|
36
|
+
cleanupStale(): Promise<number>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=environment-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment-builder.d.ts","sourceRoot":"","sources":["../../src/delegator/environment-builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAMlD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,GAAG,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;KACnB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,YAAY,CAA6C;gBAErD,MAAM,CAAC,EAAE,wBAAwB;IAM7C;;;OAGG;IACG,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA+BzF,GAAG,CAAC,YAAY,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS;IAIvD,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY5C,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBvE,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;CAGtC"}
|