@awcp/sdk 0.0.16 → 0.0.18
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 +7 -28
- package/dist/delegator/admission.d.ts.map +1 -1
- package/dist/delegator/admission.js +35 -26
- package/dist/delegator/admission.js.map +1 -1
- package/dist/delegator/bin/client.d.ts +2 -2
- package/dist/delegator/bin/client.d.ts.map +1 -1
- package/dist/delegator/bin/client.js +6 -2
- package/dist/delegator/bin/client.js.map +1 -1
- package/dist/delegator/bin/daemon.d.ts +1 -1
- package/dist/delegator/bin/daemon.d.ts.map +1 -1
- package/dist/delegator/bin/daemon.js +13 -4
- package/dist/delegator/bin/daemon.js.map +1 -1
- package/dist/delegator/config.d.ts +57 -78
- package/dist/delegator/config.d.ts.map +1 -1
- package/dist/delegator/config.js +40 -24
- package/dist/delegator/config.js.map +1 -1
- package/dist/delegator/delegation-manager.d.ts +12 -0
- package/dist/delegator/delegation-manager.d.ts.map +1 -0
- package/dist/delegator/delegation-manager.js +36 -0
- package/dist/delegator/delegation-manager.js.map +1 -0
- package/dist/delegator/{environment-builder.d.ts → environment-manager.d.ts} +6 -12
- package/dist/delegator/{environment-builder.d.ts.map → environment-manager.d.ts.map} +1 -1
- package/dist/delegator/{environment-builder.js → environment-manager.js} +8 -26
- package/dist/delegator/environment-manager.js.map +1 -0
- package/dist/delegator/executor-client.d.ts +8 -25
- package/dist/delegator/executor-client.d.ts.map +1 -1
- package/dist/delegator/executor-client.js +33 -53
- package/dist/delegator/executor-client.js.map +1 -1
- package/dist/delegator/index.d.ts +5 -4
- 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/service.d.ts +28 -14
- package/dist/delegator/service.d.ts.map +1 -1
- package/dist/delegator/service.js +258 -297
- package/dist/delegator/service.js.map +1 -1
- package/dist/delegator/snapshot-manager.d.ts +23 -0
- package/dist/delegator/snapshot-manager.d.ts.map +1 -0
- package/dist/delegator/snapshot-manager.js +120 -0
- package/dist/delegator/snapshot-manager.js.map +1 -0
- package/dist/executor/a2a-adapter.d.ts +1 -1
- package/dist/executor/a2a-adapter.d.ts.map +1 -1
- package/dist/executor/admission.d.ts +13 -0
- package/dist/executor/admission.d.ts.map +1 -0
- package/dist/executor/admission.js +27 -0
- package/dist/executor/admission.js.map +1 -0
- package/dist/executor/assignment-manager.d.ts +12 -0
- package/dist/executor/assignment-manager.d.ts.map +1 -0
- package/dist/executor/assignment-manager.js +36 -0
- package/dist/executor/assignment-manager.js.map +1 -0
- package/dist/executor/config.d.ts +37 -24
- package/dist/executor/config.d.ts.map +1 -1
- package/dist/executor/config.js +21 -15
- package/dist/executor/config.js.map +1 -1
- package/dist/executor/index.d.ts +4 -2
- package/dist/executor/index.d.ts.map +1 -1
- package/dist/executor/index.js +3 -1
- package/dist/executor/index.js.map +1 -1
- package/dist/executor/service.d.ts +18 -12
- package/dist/executor/service.d.ts.map +1 -1
- package/dist/executor/service.js +325 -211
- package/dist/executor/service.js.map +1 -1
- package/dist/executor/workspace-manager.d.ts +1 -8
- package/dist/executor/workspace-manager.d.ts.map +1 -1
- package/dist/executor/workspace-manager.js +3 -25
- package/dist/executor/workspace-manager.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/listener/http-listener.d.ts +1 -1
- package/dist/listener/http-listener.d.ts.map +1 -1
- package/dist/listener/http-listener.js +8 -1
- package/dist/listener/http-listener.js.map +1 -1
- package/dist/listener/index.d.ts +1 -0
- package/dist/listener/index.d.ts.map +1 -1
- package/dist/listener/index.js.map +1 -1
- package/dist/listener/types.d.ts +52 -0
- package/dist/listener/types.d.ts.map +1 -0
- package/dist/listener/types.js +5 -0
- package/dist/listener/types.js.map +1 -0
- package/dist/listener/websocket-tunnel-listener.d.ts +1 -1
- package/dist/listener/websocket-tunnel-listener.d.ts.map +1 -1
- package/dist/server/express/awcp-executor-handler.d.ts +3 -3
- package/dist/server/express/awcp-executor-handler.d.ts.map +1 -1
- package/dist/server/express/awcp-executor-handler.js +3 -1
- package/dist/server/express/awcp-executor-handler.js.map +1 -1
- package/dist/utils/fs-helpers.d.ts +1 -1
- package/dist/utils/fs-helpers.js +1 -1
- package/package.json +2 -2
- package/dist/delegator/environment-builder.js.map +0 -1
- package/dist/delegator/snapshot-store.d.ts +0 -27
- package/dist/delegator/snapshot-store.d.ts.map +0 -1
- package/dist/delegator/snapshot-store.js +0 -40
- package/dist/delegator/snapshot-store.js.map +0 -1
|
@@ -1,42 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
* Admission control configuration
|
|
3
|
-
*/
|
|
4
|
-
export interface AdmissionConfig {
|
|
5
|
-
/** Maximum total bytes allowed */
|
|
6
|
-
maxTotalBytes?: number;
|
|
7
|
-
/** Maximum file count allowed */
|
|
8
|
-
maxFileCount?: number;
|
|
9
|
-
/** Maximum single file size */
|
|
10
|
-
maxSingleFileBytes?: number;
|
|
11
|
-
/** Custom check function for advanced validation */
|
|
12
|
-
customCheck?: (localDir: string) => Promise<AdmissionResult>;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Workspace statistics from admission scan
|
|
16
|
-
*/
|
|
1
|
+
import { type DelegatorAdmissionConfig } from './config.js';
|
|
17
2
|
export interface WorkspaceStats {
|
|
18
3
|
estimatedBytes?: number;
|
|
19
4
|
fileCount?: number;
|
|
20
5
|
largestFileBytes?: number;
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Admission check result
|
|
24
|
-
*/
|
|
25
|
-
export interface AdmissionResult {
|
|
26
|
-
allowed: boolean;
|
|
27
|
-
stats?: WorkspaceStats;
|
|
28
|
-
hint?: string;
|
|
6
|
+
sensitiveFiles?: string[];
|
|
29
7
|
}
|
|
30
8
|
/**
|
|
31
9
|
* Performs preflight checks on workspace before allowing delegation.
|
|
32
|
-
* Protects the system from oversized workspaces
|
|
33
|
-
* network or storage resources.
|
|
10
|
+
* Protects the system from oversized workspaces and sensitive file leaks.
|
|
34
11
|
*/
|
|
35
12
|
export declare class AdmissionController {
|
|
36
13
|
private config;
|
|
37
|
-
constructor(config?:
|
|
38
|
-
check(localDir: string): Promise<
|
|
14
|
+
constructor(config?: DelegatorAdmissionConfig);
|
|
15
|
+
check(localDir: string, delegationId?: string): Promise<WorkspaceStats>;
|
|
39
16
|
private scanWorkspace;
|
|
17
|
+
private matchesSensitivePattern;
|
|
18
|
+
private globMatch;
|
|
40
19
|
private formatBytes;
|
|
41
20
|
}
|
|
42
21
|
//# 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":"AAGA,OAAO,EAAqB,KAAK,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE/E,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAA2B;gBAE7B,MAAM,CAAC,EAAE,wBAAwB;IAIvC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;YA8C/D,aAAa;IA0C3B,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,WAAW;CAMpB"}
|
|
@@ -1,70 +1,65 @@
|
|
|
1
1
|
import { stat, readdir } from 'node:fs/promises';
|
|
2
|
-
import { join } from 'node:path';
|
|
2
|
+
import { join, relative } from 'node:path';
|
|
3
|
+
import { WorkspaceTooLargeError, SensitiveFilesError } from '@awcp/core';
|
|
3
4
|
import { DEFAULT_ADMISSION } from './config.js';
|
|
4
5
|
/**
|
|
5
6
|
* Performs preflight checks on workspace before allowing delegation.
|
|
6
|
-
* Protects the system from oversized workspaces
|
|
7
|
-
* network or storage resources.
|
|
7
|
+
* Protects the system from oversized workspaces and sensitive file leaks.
|
|
8
8
|
*/
|
|
9
9
|
export class AdmissionController {
|
|
10
10
|
config;
|
|
11
11
|
constructor(config) {
|
|
12
12
|
this.config = config ?? {};
|
|
13
13
|
}
|
|
14
|
-
async check(localDir) {
|
|
15
|
-
if (this.config.customCheck) {
|
|
16
|
-
return this.config.customCheck(localDir);
|
|
17
|
-
}
|
|
14
|
+
async check(localDir, delegationId) {
|
|
18
15
|
try {
|
|
19
16
|
const stats = await this.scanWorkspace(localDir);
|
|
20
17
|
const maxTotal = this.config.maxTotalBytes ?? DEFAULT_ADMISSION.maxTotalBytes;
|
|
21
18
|
const maxCount = this.config.maxFileCount ?? DEFAULT_ADMISSION.maxFileCount;
|
|
22
19
|
const maxSingle = this.config.maxSingleFileBytes ?? DEFAULT_ADMISSION.maxSingleFileBytes;
|
|
23
20
|
if (stats.estimatedBytes && stats.estimatedBytes > maxTotal) {
|
|
24
|
-
|
|
25
|
-
allowed: false,
|
|
26
|
-
stats,
|
|
27
|
-
hint: `Workspace size (${this.formatBytes(stats.estimatedBytes)}) exceeds limit (${this.formatBytes(maxTotal)}). Consider selecting a smaller subdirectory.`,
|
|
28
|
-
};
|
|
21
|
+
throw new WorkspaceTooLargeError(stats, `Workspace size (${this.formatBytes(stats.estimatedBytes)}) exceeds limit (${this.formatBytes(maxTotal)}). Consider selecting a smaller subdirectory.`, delegationId);
|
|
29
22
|
}
|
|
30
23
|
if (stats.fileCount && stats.fileCount > maxCount) {
|
|
31
|
-
|
|
32
|
-
allowed: false,
|
|
33
|
-
stats,
|
|
34
|
-
hint: `File count (${stats.fileCount}) exceeds limit (${maxCount}). Consider excluding node_modules, build artifacts, or data directories.`,
|
|
35
|
-
};
|
|
24
|
+
throw new WorkspaceTooLargeError(stats, `File count (${stats.fileCount}) exceeds limit (${maxCount}). Consider excluding node_modules, build artifacts, or data directories.`, delegationId);
|
|
36
25
|
}
|
|
37
26
|
if (stats.largestFileBytes && stats.largestFileBytes > maxSingle) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
27
|
+
throw new WorkspaceTooLargeError(stats, `Largest file (${this.formatBytes(stats.largestFileBytes)}) exceeds limit (${this.formatBytes(maxSingle)}). Consider excluding large binary files.`, delegationId);
|
|
28
|
+
}
|
|
29
|
+
const skipSensitive = this.config.skipSensitiveCheck ?? false;
|
|
30
|
+
if (!skipSensitive && stats.sensitiveFiles && stats.sensitiveFiles.length > 0) {
|
|
31
|
+
throw new SensitiveFilesError(stats.sensitiveFiles, undefined, delegationId);
|
|
43
32
|
}
|
|
44
|
-
return
|
|
33
|
+
return stats;
|
|
45
34
|
}
|
|
46
35
|
catch (error) {
|
|
36
|
+
if (error instanceof WorkspaceTooLargeError || error instanceof SensitiveFilesError)
|
|
37
|
+
throw error;
|
|
47
38
|
// Fail open for usability - real implementations may want to fail closed
|
|
48
39
|
console.warn('[AWCP:Admission] Check failed, allowing by default:', error);
|
|
49
|
-
return {
|
|
40
|
+
return {};
|
|
50
41
|
}
|
|
51
42
|
}
|
|
52
43
|
async scanWorkspace(localDir) {
|
|
53
44
|
let totalBytes = 0;
|
|
54
45
|
let fileCount = 0;
|
|
55
46
|
let largestFileBytes = 0;
|
|
47
|
+
const sensitiveFiles = [];
|
|
48
|
+
const patterns = this.config.sensitivePatterns ?? [...DEFAULT_ADMISSION.sensitivePatterns];
|
|
56
49
|
const scan = async (dir) => {
|
|
57
50
|
const entries = await readdir(dir, { withFileTypes: true });
|
|
58
51
|
for (const entry of entries) {
|
|
59
52
|
const fullPath = join(dir, entry.name);
|
|
60
53
|
if (entry.isDirectory()) {
|
|
61
|
-
// Skip directories that shouldn't be delegated
|
|
62
54
|
if (entry.name === 'node_modules' || entry.name === '.git') {
|
|
63
55
|
continue;
|
|
64
56
|
}
|
|
65
57
|
await scan(fullPath);
|
|
66
58
|
}
|
|
67
59
|
else if (entry.isFile()) {
|
|
60
|
+
if (this.matchesSensitivePattern(entry.name, patterns)) {
|
|
61
|
+
sensitiveFiles.push(relative(localDir, fullPath));
|
|
62
|
+
}
|
|
68
63
|
try {
|
|
69
64
|
const fileStat = await stat(fullPath);
|
|
70
65
|
const size = fileStat.size;
|
|
@@ -81,7 +76,21 @@ export class AdmissionController {
|
|
|
81
76
|
}
|
|
82
77
|
};
|
|
83
78
|
await scan(localDir);
|
|
84
|
-
return { estimatedBytes: totalBytes, fileCount, largestFileBytes };
|
|
79
|
+
return { estimatedBytes: totalBytes, fileCount, largestFileBytes, sensitiveFiles };
|
|
80
|
+
}
|
|
81
|
+
matchesSensitivePattern(fileName, patterns) {
|
|
82
|
+
for (const pattern of patterns) {
|
|
83
|
+
if (this.globMatch(fileName, pattern))
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
globMatch(name, pattern) {
|
|
89
|
+
const regex = pattern
|
|
90
|
+
.replace(/[.+^${}()|[\]\\]/g, '\\$&')
|
|
91
|
+
.replace(/\*/g, '.*')
|
|
92
|
+
.replace(/\?/g, '.');
|
|
93
|
+
return new RegExp(`^${regex}$`).test(name);
|
|
85
94
|
}
|
|
86
95
|
formatBytes(bytes) {
|
|
87
96
|
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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"}
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* const all = await client.listDelegations();
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
|
-
import type { Delegation, TaskSpec, AccessMode, AuthCredential, EnvironmentSpec, EnvironmentSnapshot,
|
|
29
|
+
import type { Delegation, TaskSpec, AccessMode, AuthCredential, EnvironmentSpec, EnvironmentSnapshot, SnapshotMode } from '@awcp/core';
|
|
30
30
|
/**
|
|
31
31
|
* Parameters for creating a delegation
|
|
32
32
|
*/
|
|
@@ -42,7 +42,7 @@ export interface DelegateRequest {
|
|
|
42
42
|
/** Access mode (uses default if not specified) */
|
|
43
43
|
accessMode?: AccessMode;
|
|
44
44
|
/** Snapshot handling mode */
|
|
45
|
-
snapshotMode?:
|
|
45
|
+
snapshotMode?: SnapshotMode;
|
|
46
46
|
/** Optional authentication for paid/restricted Executor services */
|
|
47
47
|
auth?: AuthCredential;
|
|
48
48
|
}
|
|
@@ -1 +1 @@
|
|
|
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,mBAAmB,EAAE,
|
|
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,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEvI;;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,6BAA6B;IAC7B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,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,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAOzE;;OAEG;IACG,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5E;;OAEG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9E;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;YASlB,OAAO;CAkCtB"}
|
|
@@ -128,8 +128,12 @@ export class DelegatorDaemonClient {
|
|
|
128
128
|
if (!response.ok) {
|
|
129
129
|
const errorBody = await response.json().catch(() => ({}));
|
|
130
130
|
const message = errorBody.error ?? `HTTP ${response.status}: ${response.statusText}`;
|
|
131
|
-
const
|
|
132
|
-
|
|
131
|
+
const parts = [message];
|
|
132
|
+
if (errorBody.hint)
|
|
133
|
+
parts.push(`Hint: ${errorBody.hint}`);
|
|
134
|
+
if (errorBody.knownDelegations !== undefined)
|
|
135
|
+
parts.push(`Known delegations: ${errorBody.knownDelegations}`);
|
|
136
|
+
throw new Error(parts.join('. '));
|
|
133
137
|
}
|
|
134
138
|
return response.json();
|
|
135
139
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/delegator/bin/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/delegator/bin/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../../src/delegator/bin/daemon.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,gBAAgB,EAAgC,MAAM,eAAe,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,eAAe,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../../src/delegator/bin/daemon.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,gBAAgB,EAAgC,MAAM,eAAe,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,eAAe,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAyKxF;AAED;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAyC1C"}
|
|
@@ -21,6 +21,7 @@ export async function startDelegatorDaemon(config) {
|
|
|
21
21
|
config: config.delegator,
|
|
22
22
|
};
|
|
23
23
|
const service = new DelegatorService(serviceOptions);
|
|
24
|
+
await service.initialize();
|
|
24
25
|
/**
|
|
25
26
|
* POST /delegate - Create a new delegation
|
|
26
27
|
*/
|
|
@@ -70,7 +71,14 @@ export async function startDelegatorDaemon(config) {
|
|
|
70
71
|
app.get('/delegation/:id', (req, res) => {
|
|
71
72
|
const delegation = service.getDelegation(req.params.id);
|
|
72
73
|
if (!delegation) {
|
|
73
|
-
|
|
74
|
+
const known = Array.from(service.delegations?.keys?.() ?? []);
|
|
75
|
+
console.warn(`[AWCP:Daemon] GET /delegation/${req.params.id} not found` +
|
|
76
|
+
` (known=${known.length} delegations: [${known.join(',')}])`);
|
|
77
|
+
res.status(404).json({
|
|
78
|
+
error: `Delegation not found in daemon: no delegation with id ${req.params.id}`,
|
|
79
|
+
hint: 'The daemon may have been restarted, losing in-memory state',
|
|
80
|
+
knownDelegations: known.length,
|
|
81
|
+
});
|
|
74
82
|
return;
|
|
75
83
|
}
|
|
76
84
|
res.json(delegation);
|
|
@@ -146,7 +154,8 @@ export async function startDelegatorDaemon(config) {
|
|
|
146
154
|
server.on('error', reject);
|
|
147
155
|
});
|
|
148
156
|
return {
|
|
149
|
-
|
|
157
|
+
shutdown: async () => {
|
|
158
|
+
await service.shutdown();
|
|
150
159
|
await new Promise((resolve, reject) => {
|
|
151
160
|
server.close((err) => {
|
|
152
161
|
if (err)
|
|
@@ -191,11 +200,11 @@ export async function main() {
|
|
|
191
200
|
});
|
|
192
201
|
process.on('SIGINT', async () => {
|
|
193
202
|
console.log('\n[AWCP:Daemon] Shutting down...');
|
|
194
|
-
await daemon.
|
|
203
|
+
await daemon.shutdown();
|
|
195
204
|
process.exit(0);
|
|
196
205
|
});
|
|
197
206
|
process.on('SIGTERM', async () => {
|
|
198
|
-
await daemon.
|
|
207
|
+
await daemon.shutdown();
|
|
199
208
|
process.exit(0);
|
|
200
209
|
});
|
|
201
210
|
console.log(`[AWCP:Daemon] Ready. API available at ${daemon.url}`);
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../../src/delegator/bin/daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,43 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* AWCP Delegator Configuration
|
|
3
3
|
*/
|
|
4
|
-
import type { Delegation, AccessMode,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
/** Retention time in ms for staged snapshots (default: 30 minutes) */
|
|
4
|
+
import type { Delegation, AccessMode, SnapshotMode, DelegatorTransportAdapter, EnvironmentSnapshot, EnvironmentSpec, TaskSpec, AuthCredential } from '@awcp/core';
|
|
5
|
+
export interface DelegatorAdmissionConfig {
|
|
6
|
+
maxTotalBytes?: number;
|
|
7
|
+
maxFileCount?: number;
|
|
8
|
+
maxSingleFileBytes?: number;
|
|
9
|
+
sensitivePatterns?: string[];
|
|
10
|
+
skipSensitiveCheck?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface DelegationConfig {
|
|
14
13
|
retentionMs?: number;
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
lease?: {
|
|
15
|
+
ttlSeconds?: number;
|
|
16
|
+
accessMode?: AccessMode;
|
|
17
|
+
};
|
|
18
|
+
snapshot?: {
|
|
19
|
+
mode?: SnapshotMode;
|
|
20
|
+
maxSnapshots?: number;
|
|
21
|
+
};
|
|
22
|
+
connection?: {
|
|
23
|
+
requestTimeout?: number;
|
|
24
|
+
sseMaxRetries?: number;
|
|
25
|
+
sseRetryDelayMs?: number;
|
|
26
|
+
};
|
|
17
27
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
28
|
+
export interface DelegateParams {
|
|
29
|
+
executorUrl: string;
|
|
30
|
+
environment: EnvironmentSpec;
|
|
31
|
+
task: TaskSpec;
|
|
32
|
+
existingId?: string;
|
|
33
|
+
retentionMs?: number;
|
|
23
34
|
ttlSeconds?: number;
|
|
24
|
-
/** Default access mode (default: 'rw') */
|
|
25
35
|
accessMode?: AccessMode;
|
|
36
|
+
snapshotMode?: SnapshotMode;
|
|
37
|
+
auth?: AuthCredential;
|
|
26
38
|
}
|
|
27
|
-
/**
|
|
28
|
-
* Lifecycle hooks for Delegator events
|
|
29
|
-
*/
|
|
30
39
|
export interface DelegatorHooks {
|
|
40
|
+
onAdmissionCheck?: (localDir: string) => Promise<void>;
|
|
31
41
|
onDelegationCreated?: (delegation: Delegation) => void;
|
|
32
42
|
onDelegationStarted?: (delegation: Delegation) => void;
|
|
33
43
|
onDelegationCompleted?: (delegation: Delegation) => void;
|
|
@@ -35,78 +45,47 @@ export interface DelegatorHooks {
|
|
|
35
45
|
onSnapshotApplied?: (delegation: Delegation, snapshot: EnvironmentSnapshot) => void;
|
|
36
46
|
onError?: (delegationId: string, error: Error) => void;
|
|
37
47
|
}
|
|
38
|
-
/**
|
|
39
|
-
* AWCP Delegator Configuration
|
|
40
|
-
*/
|
|
41
48
|
export interface DelegatorConfig {
|
|
42
|
-
/** Base directory for all delegation data (environments, snapshots) */
|
|
43
49
|
baseDir: string;
|
|
44
|
-
/** Transport adapter for data plane */
|
|
45
50
|
transport: DelegatorTransportAdapter;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
snapshot?: SnapshotConfig;
|
|
50
|
-
/** Default values for delegations */
|
|
51
|
-
defaults?: DelegationDefaults;
|
|
52
|
-
/** Lifecycle hooks */
|
|
51
|
+
admission?: DelegatorAdmissionConfig;
|
|
52
|
+
delegation?: DelegationConfig;
|
|
53
|
+
cleanupOnInitialize?: boolean;
|
|
53
54
|
hooks?: DelegatorHooks;
|
|
54
55
|
}
|
|
55
|
-
/**
|
|
56
|
-
* Default admission thresholds
|
|
57
|
-
*/
|
|
58
56
|
export declare const DEFAULT_ADMISSION: {
|
|
59
57
|
readonly maxTotalBytes: number;
|
|
60
58
|
readonly maxFileCount: 10000;
|
|
61
59
|
readonly maxSingleFileBytes: number;
|
|
60
|
+
readonly sensitivePatterns: readonly [".env", ".env.*", "*.pem", "*.key", "*.p12", "*.pfx", "id_rsa", "id_rsa.*", "id_ed25519", "id_ed25519.*", "id_ecdsa", "id_ecdsa.*", "credentials.json", "service-account*.json", ".npmrc", ".pypirc"];
|
|
62
61
|
};
|
|
63
|
-
/**
|
|
64
|
-
* Default snapshot settings
|
|
65
|
-
*/
|
|
66
|
-
export declare const DEFAULT_SNAPSHOT: {
|
|
67
|
-
readonly mode: SnapshotPolicy;
|
|
68
|
-
readonly retentionMs: number;
|
|
69
|
-
readonly maxSnapshots: 10;
|
|
70
|
-
};
|
|
71
|
-
/**
|
|
72
|
-
* Default delegation settings
|
|
73
|
-
*/
|
|
74
62
|
export declare const DEFAULT_DELEGATION: {
|
|
75
|
-
readonly
|
|
76
|
-
readonly
|
|
63
|
+
readonly retentionMs: number;
|
|
64
|
+
readonly lease: {
|
|
65
|
+
readonly ttlSeconds: 3600;
|
|
66
|
+
readonly accessMode: AccessMode;
|
|
67
|
+
};
|
|
68
|
+
readonly snapshot: {
|
|
69
|
+
readonly mode: SnapshotMode;
|
|
70
|
+
readonly maxSnapshots: 10;
|
|
71
|
+
};
|
|
72
|
+
readonly connection: {
|
|
73
|
+
readonly requestTimeout: 30000;
|
|
74
|
+
readonly sseMaxRetries: 3;
|
|
75
|
+
readonly sseRetryDelayMs: 2000;
|
|
76
|
+
};
|
|
77
77
|
};
|
|
78
|
-
/**
|
|
79
|
-
* Resolved admission config with all fields
|
|
80
|
-
*/
|
|
81
|
-
export interface ResolvedAdmissionConfig {
|
|
82
|
-
maxTotalBytes: number;
|
|
83
|
-
maxFileCount: number;
|
|
84
|
-
maxSingleFileBytes: number;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Resolved snapshot config with all fields
|
|
88
|
-
*/
|
|
89
|
-
export interface ResolvedSnapshotConfig {
|
|
90
|
-
mode: SnapshotPolicy;
|
|
91
|
-
retentionMs: number;
|
|
92
|
-
maxSnapshots: number;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Resolved defaults with all fields
|
|
96
|
-
*/
|
|
97
|
-
export interface ResolvedDelegationDefaults {
|
|
98
|
-
ttlSeconds: number;
|
|
99
|
-
accessMode: AccessMode;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Resolved configuration with all defaults applied
|
|
103
|
-
*/
|
|
104
78
|
export interface ResolvedDelegatorConfig {
|
|
105
79
|
baseDir: string;
|
|
106
80
|
transport: DelegatorTransportAdapter;
|
|
107
|
-
admission:
|
|
108
|
-
|
|
109
|
-
|
|
81
|
+
admission: Required<DelegatorAdmissionConfig>;
|
|
82
|
+
delegation: {
|
|
83
|
+
retentionMs: number;
|
|
84
|
+
lease: Required<NonNullable<DelegationConfig['lease']>>;
|
|
85
|
+
snapshot: Required<NonNullable<DelegationConfig['snapshot']>>;
|
|
86
|
+
connection: Required<NonNullable<DelegationConfig['connection']>>;
|
|
87
|
+
};
|
|
88
|
+
cleanupOnInitialize: boolean;
|
|
110
89
|
hooks: DelegatorHooks;
|
|
111
90
|
}
|
|
112
91
|
export declare function resolveDelegatorConfig(config: DelegatorConfig): ResolvedDelegatorConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/delegator/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/delegator/config.ts"],"names":[],"mappings":"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"}
|
package/dist/delegator/config.js
CHANGED
|
@@ -1,28 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* AWCP Delegator Configuration
|
|
3
3
|
*/
|
|
4
|
-
|
|
5
|
-
* Default admission thresholds
|
|
6
|
-
*/
|
|
4
|
+
// ========== Defaults ==========
|
|
7
5
|
export const DEFAULT_ADMISSION = {
|
|
8
6
|
maxTotalBytes: 100 * 1024 * 1024, // 100MB
|
|
9
7
|
maxFileCount: 10000,
|
|
10
8
|
maxSingleFileBytes: 50 * 1024 * 1024, // 50MB
|
|
9
|
+
sensitivePatterns: [
|
|
10
|
+
'.env', '.env.*',
|
|
11
|
+
'*.pem', '*.key', '*.p12', '*.pfx',
|
|
12
|
+
'id_rsa', 'id_rsa.*', 'id_ed25519', 'id_ed25519.*', 'id_ecdsa', 'id_ecdsa.*',
|
|
13
|
+
'credentials.json', 'service-account*.json',
|
|
14
|
+
'.npmrc', '.pypirc',
|
|
15
|
+
],
|
|
11
16
|
};
|
|
12
|
-
/**
|
|
13
|
-
* Default snapshot settings
|
|
14
|
-
*/
|
|
15
|
-
export const DEFAULT_SNAPSHOT = {
|
|
16
|
-
mode: 'auto',
|
|
17
|
-
retentionMs: 30 * 60 * 1000, // 30 minutes
|
|
18
|
-
maxSnapshots: 10,
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* Default delegation settings
|
|
22
|
-
*/
|
|
23
17
|
export const DEFAULT_DELEGATION = {
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
retentionMs: 7 * 24 * 60 * 60 * 1000, // 7 days
|
|
19
|
+
lease: {
|
|
20
|
+
ttlSeconds: 3600,
|
|
21
|
+
accessMode: 'rw',
|
|
22
|
+
},
|
|
23
|
+
snapshot: {
|
|
24
|
+
mode: 'auto',
|
|
25
|
+
maxSnapshots: 10,
|
|
26
|
+
},
|
|
27
|
+
connection: {
|
|
28
|
+
requestTimeout: 30000, // 30 seconds
|
|
29
|
+
sseMaxRetries: 3,
|
|
30
|
+
sseRetryDelayMs: 2000, // 2s × retryCount (linear backoff)
|
|
31
|
+
},
|
|
26
32
|
};
|
|
27
33
|
export function resolveDelegatorConfig(config) {
|
|
28
34
|
return {
|
|
@@ -32,16 +38,26 @@ export function resolveDelegatorConfig(config) {
|
|
|
32
38
|
maxTotalBytes: config.admission?.maxTotalBytes ?? DEFAULT_ADMISSION.maxTotalBytes,
|
|
33
39
|
maxFileCount: config.admission?.maxFileCount ?? DEFAULT_ADMISSION.maxFileCount,
|
|
34
40
|
maxSingleFileBytes: config.admission?.maxSingleFileBytes ?? DEFAULT_ADMISSION.maxSingleFileBytes,
|
|
41
|
+
sensitivePatterns: config.admission?.sensitivePatterns ?? [...DEFAULT_ADMISSION.sensitivePatterns],
|
|
42
|
+
skipSensitiveCheck: config.admission?.skipSensitiveCheck ?? false,
|
|
35
43
|
},
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
+
delegation: {
|
|
45
|
+
retentionMs: config.delegation?.retentionMs ?? DEFAULT_DELEGATION.retentionMs,
|
|
46
|
+
lease: {
|
|
47
|
+
ttlSeconds: config.delegation?.lease?.ttlSeconds ?? DEFAULT_DELEGATION.lease.ttlSeconds,
|
|
48
|
+
accessMode: config.delegation?.lease?.accessMode ?? DEFAULT_DELEGATION.lease.accessMode,
|
|
49
|
+
},
|
|
50
|
+
snapshot: {
|
|
51
|
+
mode: config.delegation?.snapshot?.mode ?? DEFAULT_DELEGATION.snapshot.mode,
|
|
52
|
+
maxSnapshots: config.delegation?.snapshot?.maxSnapshots ?? DEFAULT_DELEGATION.snapshot.maxSnapshots,
|
|
53
|
+
},
|
|
54
|
+
connection: {
|
|
55
|
+
requestTimeout: config.delegation?.connection?.requestTimeout ?? DEFAULT_DELEGATION.connection.requestTimeout,
|
|
56
|
+
sseMaxRetries: config.delegation?.connection?.sseMaxRetries ?? DEFAULT_DELEGATION.connection.sseMaxRetries,
|
|
57
|
+
sseRetryDelayMs: config.delegation?.connection?.sseRetryDelayMs ?? DEFAULT_DELEGATION.connection.sseRetryDelayMs,
|
|
58
|
+
},
|
|
44
59
|
},
|
|
60
|
+
cleanupOnInitialize: config.cleanupOnInitialize ?? true,
|
|
45
61
|
hooks: config.hooks ?? {},
|
|
46
62
|
};
|
|
47
63
|
}
|