@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 +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":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Delegation } from '@awcp/core';
|
|
2
|
+
export interface DelegationManagerConfig {
|
|
3
|
+
baseDir: string;
|
|
4
|
+
}
|
|
5
|
+
export declare class DelegationManager {
|
|
6
|
+
private baseDir;
|
|
7
|
+
constructor(config: DelegationManagerConfig);
|
|
8
|
+
save(delegation: Delegation): Promise<void>;
|
|
9
|
+
loadAll(): Promise<Delegation[]>;
|
|
10
|
+
delete(delegationId: string): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=delegation-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegation-manager.d.ts","sourceRoot":"","sources":["../../src/delegator/delegation-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,uBAAuB;IAIrC,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3C,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAgBhC,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAIlD"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { mkdir, rm, readFile, writeFile, readdir } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
export class DelegationManager {
|
|
4
|
+
baseDir;
|
|
5
|
+
constructor(config) {
|
|
6
|
+
this.baseDir = config.baseDir;
|
|
7
|
+
}
|
|
8
|
+
async save(delegation) {
|
|
9
|
+
await mkdir(this.baseDir, { recursive: true });
|
|
10
|
+
const filePath = join(this.baseDir, `${delegation.id}.json`);
|
|
11
|
+
await writeFile(filePath, JSON.stringify(delegation, null, 2));
|
|
12
|
+
}
|
|
13
|
+
async loadAll() {
|
|
14
|
+
try {
|
|
15
|
+
const entries = await readdir(this.baseDir);
|
|
16
|
+
const delegations = [];
|
|
17
|
+
for (const entry of entries) {
|
|
18
|
+
if (!entry.endsWith('.json'))
|
|
19
|
+
continue;
|
|
20
|
+
const content = await readFile(join(this.baseDir, entry), 'utf-8');
|
|
21
|
+
delegations.push(JSON.parse(content));
|
|
22
|
+
}
|
|
23
|
+
return delegations;
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
if (error.code === 'ENOENT')
|
|
27
|
+
return [];
|
|
28
|
+
throw error;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
async delete(delegationId) {
|
|
32
|
+
const filePath = join(this.baseDir, `${delegationId}.json`);
|
|
33
|
+
await rm(filePath, { force: true });
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=delegation-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegation-manager.js","sourceRoot":"","sources":["../../src/delegator/delegation-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAOjC,MAAM,OAAO,iBAAiB;IACpB,OAAO,CAAS;IAExB,YAAY,MAA+B;QACzC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,UAAsB;QAC/B,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7D,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,WAAW,GAAiB,EAAE,CAAC;YACrC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAAE,SAAS;gBACvC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;gBACnE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAe,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,WAAW,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,EAAE,CAAC;YAClE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,YAAoB;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,YAAY,OAAO,CAAC,CAAC;QAC5D,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Environment
|
|
2
|
+
* Environment Manager - manages environment directories for delegation
|
|
3
3
|
*/
|
|
4
4
|
import type { EnvironmentSpec } from '@awcp/core';
|
|
5
5
|
export interface EnvironmentManifest {
|
|
@@ -17,21 +17,15 @@ export interface EnvironmentBuildResult {
|
|
|
17
17
|
envRoot: string;
|
|
18
18
|
manifest: EnvironmentManifest;
|
|
19
19
|
}
|
|
20
|
-
export interface
|
|
20
|
+
export interface EnvironmentManagerConfig {
|
|
21
21
|
baseDir?: string;
|
|
22
22
|
}
|
|
23
|
-
export declare class
|
|
23
|
+
export declare class EnvironmentManager {
|
|
24
24
|
private baseDir;
|
|
25
25
|
private adapters;
|
|
26
|
-
|
|
27
|
-
constructor(config?: EnvironmentBuilderConfig);
|
|
28
|
-
/**
|
|
29
|
-
* Build an environment directory from spec.
|
|
30
|
-
* Returns envRoot with trailing slash for SSHFS compatibility.
|
|
31
|
-
*/
|
|
26
|
+
constructor(config?: EnvironmentManagerConfig);
|
|
32
27
|
build(delegationId: string, spec: EnvironmentSpec): Promise<EnvironmentBuildResult>;
|
|
33
|
-
get(delegationId: string): EnvironmentBuildResult | undefined;
|
|
34
28
|
release(delegationId: string): Promise<void>;
|
|
35
|
-
cleanupStale(): Promise<number>;
|
|
29
|
+
cleanupStale(knownIds: Set<string>): Promise<number>;
|
|
36
30
|
}
|
|
37
|
-
//# sourceMappingURL=environment-
|
|
31
|
+
//# sourceMappingURL=environment-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment-
|
|
1
|
+
{"version":3,"file":"environment-manager.d.ts","sourceRoot":"","sources":["../../src/delegator/environment-manager.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;gBAE9B,MAAM,CAAC,EAAE,wBAAwB;IAMvC,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA6BnF,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5C,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;CAG3D"}
|
|
@@ -1,24 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Environment
|
|
2
|
+
* Environment Manager - manages environment directories for delegation
|
|
3
3
|
*/
|
|
4
4
|
import { mkdir, rm, writeFile } from 'node:fs/promises';
|
|
5
5
|
import { join } from 'node:path';
|
|
6
6
|
import { ResourceAdapterRegistry, FsResourceAdapter } from './resource-adapters/index.js';
|
|
7
7
|
import { cleanupStaleDirectories } from '../utils/index.js';
|
|
8
8
|
const DEFAULT_ENV_BASE = '/tmp/awcp/environments';
|
|
9
|
-
export class
|
|
9
|
+
export class EnvironmentManager {
|
|
10
10
|
baseDir;
|
|
11
11
|
adapters;
|
|
12
|
-
environments = new Map();
|
|
13
12
|
constructor(config) {
|
|
14
13
|
this.baseDir = config?.baseDir ?? DEFAULT_ENV_BASE;
|
|
15
14
|
this.adapters = new ResourceAdapterRegistry();
|
|
16
15
|
this.adapters.register(new FsResourceAdapter());
|
|
17
16
|
}
|
|
18
|
-
/**
|
|
19
|
-
* Build an environment directory from spec.
|
|
20
|
-
* Returns envRoot with trailing slash for SSHFS compatibility.
|
|
21
|
-
*/
|
|
22
17
|
async build(delegationId, spec) {
|
|
23
18
|
const envRoot = join(this.baseDir, delegationId);
|
|
24
19
|
await mkdir(envRoot, { recursive: true });
|
|
@@ -41,27 +36,14 @@ export class EnvironmentBuilder {
|
|
|
41
36
|
const awcpDir = join(envRoot, '.awcp');
|
|
42
37
|
await mkdir(awcpDir, { recursive: true });
|
|
43
38
|
await writeFile(join(awcpDir, 'manifest.json'), JSON.stringify(manifest, null, 2));
|
|
44
|
-
|
|
45
|
-
this.environments.set(delegationId, result);
|
|
46
|
-
return result;
|
|
47
|
-
}
|
|
48
|
-
get(delegationId) {
|
|
49
|
-
return this.environments.get(delegationId);
|
|
39
|
+
return { envRoot: `${envRoot}/`, manifest };
|
|
50
40
|
}
|
|
51
41
|
async release(delegationId) {
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
return;
|
|
55
|
-
try {
|
|
56
|
-
await rm(env.envRoot, { recursive: true, force: true });
|
|
57
|
-
}
|
|
58
|
-
catch {
|
|
59
|
-
// Directory may already be removed
|
|
60
|
-
}
|
|
61
|
-
this.environments.delete(delegationId);
|
|
42
|
+
const envRoot = join(this.baseDir, delegationId);
|
|
43
|
+
await rm(envRoot, { recursive: true, force: true }).catch(() => { });
|
|
62
44
|
}
|
|
63
|
-
async cleanupStale() {
|
|
64
|
-
return cleanupStaleDirectories(this.baseDir,
|
|
45
|
+
async cleanupStale(knownIds) {
|
|
46
|
+
return cleanupStaleDirectories(this.baseDir, knownIds);
|
|
65
47
|
}
|
|
66
48
|
}
|
|
67
|
-
//# sourceMappingURL=environment-
|
|
49
|
+
//# sourceMappingURL=environment-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment-manager.js","sourceRoot":"","sources":["../../src/delegator/environment-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AAuBlD,MAAM,OAAO,kBAAkB;IACrB,OAAO,CAAS;IAChB,QAAQ,CAA0B;IAE1C,YAAY,MAAiC;QAC3C,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,gBAAgB,CAAC;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,YAAoB,EAAE,IAAqB;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACjD,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,QAAQ,GAAwB;YACpC,OAAO,EAAE,GAAG;YACZ,YAAY;YACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAClC,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,IAAI,EAAE,CAAC,CAAC,IAAI;aACb,CAAC,CAAC;SACJ,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACvC,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAEnF,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,GAAG,EAAE,QAAQ,EAAE,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,YAAoB;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACjD,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAqB;QACtC,OAAO,uBAAuB,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACzD,CAAC;CACF"}
|
|
@@ -1,42 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* HTTP Client for sending AWCP messages to Executor
|
|
3
3
|
*/
|
|
4
|
-
import type { AwcpMessage, AcceptMessage, ErrorMessage, TaskEvent
|
|
4
|
+
import type { AwcpMessage, AcceptMessage, ErrorMessage, TaskEvent } from '@awcp/core';
|
|
5
5
|
export type InviteResponse = AcceptMessage | ErrorMessage;
|
|
6
|
-
export interface
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
sseRetryDelayMs?: number;
|
|
6
|
+
export interface TaskEventStream {
|
|
7
|
+
events: AsyncIterable<TaskEvent>;
|
|
8
|
+
abort: () => void;
|
|
10
9
|
}
|
|
11
10
|
export declare class ExecutorClient {
|
|
12
11
|
private timeout;
|
|
13
12
|
private sseMaxRetries;
|
|
14
13
|
private sseRetryDelayMs;
|
|
15
|
-
constructor(
|
|
16
|
-
/**
|
|
17
|
-
* Send INVITE to Executor and get ACCEPT/ERROR response
|
|
18
|
-
*/
|
|
14
|
+
constructor(timeout: number, sseMaxRetries: number, sseRetryDelayMs: number);
|
|
19
15
|
sendInvite(executorUrl: string, message: AwcpMessage): Promise<InviteResponse>;
|
|
20
|
-
/**
|
|
21
|
-
* Send START to Executor (async, no response expected)
|
|
22
|
-
*/
|
|
23
16
|
sendStart(executorUrl: string, message: AwcpMessage): Promise<void>;
|
|
24
17
|
/**
|
|
25
|
-
*
|
|
26
|
-
*/
|
|
27
|
-
subscribeTask(executorUrl: string, delegationId: string): AsyncIterable<TaskEvent>;
|
|
28
|
-
private readSSE;
|
|
29
|
-
/**
|
|
30
|
-
* Request Executor to cancel a delegation
|
|
18
|
+
* Establish SSE connection with retry. Resolves once connected.
|
|
31
19
|
*/
|
|
20
|
+
connectTaskEvents(executorUrl: string, delegationId: string): Promise<TaskEventStream>;
|
|
21
|
+
private parseSSEStream;
|
|
32
22
|
sendCancel(executorUrl: string, delegationId: string): Promise<void>;
|
|
33
|
-
/**
|
|
34
|
-
* Fetch task result from Executor (for offline recovery)
|
|
35
|
-
*/
|
|
36
|
-
fetchResult(executorUrl: string, delegationId: string): Promise<TaskResultResponse>;
|
|
37
|
-
/**
|
|
38
|
-
* Acknowledge result receipt to Executor
|
|
39
|
-
*/
|
|
40
23
|
acknowledgeResult(executorUrl: string, delegationId: string): Promise<void>;
|
|
41
24
|
private send;
|
|
42
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor-client.d.ts","sourceRoot":"","sources":["../../src/delegator/executor-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"executor-client.d.ts","sourceRoot":"","sources":["../../src/delegator/executor-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEtF,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,YAAY,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACjC,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAS;gBAEpB,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM;IAMrE,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;IAM9E,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzE;;OAEG;IACG,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;YA2C7E,cAAc;IAoCvB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBpE,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAiBnE,IAAI;CAwBnB"}
|
|
@@ -5,57 +5,62 @@ export class ExecutorClient {
|
|
|
5
5
|
timeout;
|
|
6
6
|
sseMaxRetries;
|
|
7
7
|
sseRetryDelayMs;
|
|
8
|
-
constructor(
|
|
9
|
-
this.timeout =
|
|
10
|
-
this.sseMaxRetries =
|
|
11
|
-
this.sseRetryDelayMs =
|
|
8
|
+
constructor(timeout, sseMaxRetries, sseRetryDelayMs) {
|
|
9
|
+
this.timeout = timeout;
|
|
10
|
+
this.sseMaxRetries = sseMaxRetries;
|
|
11
|
+
this.sseRetryDelayMs = sseRetryDelayMs;
|
|
12
12
|
}
|
|
13
|
-
/**
|
|
14
|
-
* Send INVITE to Executor and get ACCEPT/ERROR response
|
|
15
|
-
*/
|
|
16
13
|
async sendInvite(executorUrl, message) {
|
|
17
14
|
const response = await this.send(executorUrl, message);
|
|
18
15
|
const data = await response.json();
|
|
19
16
|
return data;
|
|
20
17
|
}
|
|
21
|
-
/**
|
|
22
|
-
* Send START to Executor (async, no response expected)
|
|
23
|
-
*/
|
|
24
18
|
async sendStart(executorUrl, message) {
|
|
25
19
|
await this.send(executorUrl, message);
|
|
26
20
|
}
|
|
27
21
|
/**
|
|
28
|
-
*
|
|
22
|
+
* Establish SSE connection with retry. Resolves once connected.
|
|
29
23
|
*/
|
|
30
|
-
async
|
|
24
|
+
async connectTaskEvents(executorUrl, delegationId) {
|
|
31
25
|
const baseUrl = executorUrl.replace(/\/$/, '').replace(/\/awcp$/, '');
|
|
32
26
|
const url = `${baseUrl}/awcp/tasks/${delegationId}/events`;
|
|
27
|
+
const controller = new AbortController();
|
|
33
28
|
let retries = 0;
|
|
34
29
|
while (retries < this.sseMaxRetries) {
|
|
35
30
|
try {
|
|
36
|
-
|
|
37
|
-
|
|
31
|
+
console.log(`[AWCP:Client] SSE connecting to ${url} (attempt ${retries + 1}/${this.sseMaxRetries})`);
|
|
32
|
+
const response = await fetch(url, {
|
|
33
|
+
headers: { Accept: 'text/event-stream' },
|
|
34
|
+
signal: controller.signal,
|
|
35
|
+
});
|
|
36
|
+
if (!response.ok) {
|
|
37
|
+
throw new Error(`SSE connection failed: ${response.status} ${response.statusText}`);
|
|
38
|
+
}
|
|
39
|
+
if (!response.body) {
|
|
40
|
+
throw new Error('SSE connection failed: no response body');
|
|
41
|
+
}
|
|
42
|
+
console.log(`[AWCP:Client] SSE connected for ${delegationId}`);
|
|
43
|
+
return {
|
|
44
|
+
events: this.parseSSEStream(response.body),
|
|
45
|
+
abort: () => controller.abort(),
|
|
46
|
+
};
|
|
38
47
|
}
|
|
39
48
|
catch (error) {
|
|
40
49
|
retries++;
|
|
41
|
-
|
|
50
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
51
|
+
if (retries >= this.sseMaxRetries || controller.signal.aborted) {
|
|
52
|
+
console.error(`[AWCP:Client] SSE failed after ${retries} attempts for ${delegationId}: ${msg}`);
|
|
42
53
|
throw error;
|
|
43
|
-
|
|
44
|
-
|
|
54
|
+
}
|
|
55
|
+
const delayMs = this.sseRetryDelayMs * retries;
|
|
56
|
+
console.warn(`[AWCP:Client] SSE attempt ${retries} failed for ${delegationId}: ${msg}, retrying in ${delayMs}ms`);
|
|
57
|
+
await new Promise(r => setTimeout(r, delayMs));
|
|
45
58
|
}
|
|
46
59
|
}
|
|
60
|
+
throw new Error(`SSE connection failed after ${this.sseMaxRetries} attempts`);
|
|
47
61
|
}
|
|
48
|
-
async *
|
|
49
|
-
const
|
|
50
|
-
headers: { Accept: 'text/event-stream' },
|
|
51
|
-
});
|
|
52
|
-
if (!response.ok) {
|
|
53
|
-
throw new Error(`SSE connection failed: ${response.status} ${response.statusText}`);
|
|
54
|
-
}
|
|
55
|
-
if (!response.body) {
|
|
56
|
-
throw new Error('SSE connection failed: no response body');
|
|
57
|
-
}
|
|
58
|
-
const reader = response.body.getReader();
|
|
62
|
+
async *parseSSEStream(body) {
|
|
63
|
+
const reader = body.getReader();
|
|
59
64
|
const decoder = new TextDecoder();
|
|
60
65
|
let buffer = '';
|
|
61
66
|
try {
|
|
@@ -89,9 +94,6 @@ export class ExecutorClient {
|
|
|
89
94
|
reader.releaseLock();
|
|
90
95
|
}
|
|
91
96
|
}
|
|
92
|
-
/**
|
|
93
|
-
* Request Executor to cancel a delegation
|
|
94
|
-
*/
|
|
95
97
|
async sendCancel(executorUrl, delegationId) {
|
|
96
98
|
const cancelUrl = executorUrl.replace(/\/$/, '') + `/cancel/${delegationId}`;
|
|
97
99
|
const controller = new AbortController();
|
|
@@ -111,28 +113,6 @@ export class ExecutorClient {
|
|
|
111
113
|
clearTimeout(timeoutId);
|
|
112
114
|
}
|
|
113
115
|
}
|
|
114
|
-
/**
|
|
115
|
-
* Fetch task result from Executor (for offline recovery)
|
|
116
|
-
*/
|
|
117
|
-
async fetchResult(executorUrl, delegationId) {
|
|
118
|
-
const baseUrl = executorUrl.replace(/\/$/, '').replace(/\/awcp$/, '');
|
|
119
|
-
const url = `${baseUrl}/awcp/tasks/${delegationId}/result`;
|
|
120
|
-
const controller = new AbortController();
|
|
121
|
-
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
122
|
-
try {
|
|
123
|
-
const response = await fetch(url, {
|
|
124
|
-
headers: { 'Content-Type': 'application/json' },
|
|
125
|
-
signal: controller.signal,
|
|
126
|
-
});
|
|
127
|
-
return await response.json();
|
|
128
|
-
}
|
|
129
|
-
finally {
|
|
130
|
-
clearTimeout(timeoutId);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Acknowledge result receipt to Executor
|
|
135
|
-
*/
|
|
136
116
|
async acknowledgeResult(executorUrl, delegationId) {
|
|
137
117
|
const baseUrl = executorUrl.replace(/\/$/, '').replace(/\/awcp$/, '');
|
|
138
118
|
const url = `${baseUrl}/awcp/tasks/${delegationId}/ack`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor-client.js","sourceRoot":"","sources":["../../src/delegator/executor-client.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"executor-client.js","sourceRoot":"","sources":["../../src/delegator/executor-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
export { DelegatorService, type DelegatorServiceOptions } from './service.js';
|
|
2
|
-
export { type DelegatorConfig, type
|
|
1
|
+
export { DelegatorService, type DelegatorServiceOptions, type DelegatorRequestHandler, type DelegatorServiceStatus, type DelegatorDelegationInfo } from './service.js';
|
|
2
|
+
export { type DelegatorConfig, type DelegatorAdmissionConfig, type DelegationConfig, type DelegateParams, type DelegatorHooks, type ResolvedDelegatorConfig, DEFAULT_ADMISSION, DEFAULT_DELEGATION, resolveDelegatorConfig, } from './config.js';
|
|
3
3
|
export { startDelegatorDaemon, type DaemonConfig, type DaemonInstance, } from './bin/daemon.js';
|
|
4
4
|
export { DelegatorDaemonClient, type DelegateRequest, type DelegateResponse, type ListDelegationsResponse, } from './bin/client.js';
|
|
5
|
-
export { AdmissionController, type
|
|
6
|
-
export {
|
|
5
|
+
export { AdmissionController, type WorkspaceStats } from './admission.js';
|
|
6
|
+
export { DelegationManager, type DelegationManagerConfig } from './delegation-manager.js';
|
|
7
|
+
export { EnvironmentManager, type EnvironmentManifest, type EnvironmentBuildResult, type EnvironmentManagerConfig } from './environment-manager.js';
|
|
7
8
|
export { ExecutorClient, type InviteResponse } from './executor-client.js';
|
|
8
9
|
export { type ResourceAdapter, ResourceAdapterRegistry, FsResourceAdapter } from './resource-adapters/index.js';
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/delegator/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/delegator/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,KAAK,uBAAuB,EAAE,KAAK,sBAAsB,EAAE,KAAK,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvK,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,oBAAoB,EACpB,KAAK,YAAY,EACjB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,KAAK,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,KAAK,sBAAsB,EAAE,KAAK,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpJ,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,KAAK,eAAe,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC"}
|
package/dist/delegator/index.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
// High-level API
|
|
2
2
|
export { DelegatorService } from './service.js';
|
|
3
|
-
export { DEFAULT_ADMISSION,
|
|
3
|
+
export { DEFAULT_ADMISSION, DEFAULT_DELEGATION, resolveDelegatorConfig, } from './config.js';
|
|
4
4
|
// Daemon mode
|
|
5
5
|
export { startDelegatorDaemon, } from './bin/daemon.js';
|
|
6
6
|
export { DelegatorDaemonClient, } from './bin/client.js';
|
|
7
7
|
// Utilities
|
|
8
8
|
export { AdmissionController } from './admission.js';
|
|
9
|
-
export {
|
|
9
|
+
export { DelegationManager } from './delegation-manager.js';
|
|
10
|
+
export { EnvironmentManager } from './environment-manager.js';
|
|
10
11
|
export { ExecutorClient } from './executor-client.js';
|
|
11
12
|
export { ResourceAdapterRegistry, FsResourceAdapter } from './resource-adapters/index.js';
|
|
12
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/delegator/index.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/delegator/index.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,OAAO,EAAE,gBAAgB,EAAyH,MAAM,cAAc,CAAC;AACvK,OAAO,EAOL,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAErB,cAAc;AACd,OAAO,EACL,oBAAoB,GAGrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,qBAAqB,GAItB,MAAM,iBAAiB,CAAC;AAEzB,YAAY;AACZ,OAAO,EAAE,mBAAmB,EAAuB,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAgC,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAwF,MAAM,0BAA0B,CAAC;AACpJ,OAAO,EAAE,cAAc,EAAuB,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAwB,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -3,8 +3,25 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Manages the AWCP delegation protocol on the Delegator side.
|
|
5
5
|
*/
|
|
6
|
-
import { type Delegation, type AcceptMessage, type DoneMessage, type ErrorMessage, type
|
|
7
|
-
import { type DelegatorConfig } from './config.js';
|
|
6
|
+
import { type Delegation, type AcceptMessage, type DoneMessage, type ErrorMessage, type EnvironmentSnapshot, type EnvironmentSpec } from '@awcp/core';
|
|
7
|
+
import { type DelegatorConfig, type DelegateParams } from './config.js';
|
|
8
|
+
export interface DelegatorDelegationInfo {
|
|
9
|
+
id: string;
|
|
10
|
+
state: string;
|
|
11
|
+
executorUrl: string;
|
|
12
|
+
environment: EnvironmentSpec;
|
|
13
|
+
createdAt: string;
|
|
14
|
+
}
|
|
15
|
+
export interface DelegatorServiceStatus {
|
|
16
|
+
activeDelegations: number;
|
|
17
|
+
delegations: DelegatorDelegationInfo[];
|
|
18
|
+
}
|
|
19
|
+
export interface DelegatorRequestHandler {
|
|
20
|
+
delegate(params: DelegateParams): Promise<string>;
|
|
21
|
+
cancel(delegationId: string): Promise<void>;
|
|
22
|
+
getDelegation(delegationId: string): Delegation | undefined;
|
|
23
|
+
getStatus(): DelegatorServiceStatus;
|
|
24
|
+
}
|
|
8
25
|
export interface DelegatorServiceOptions {
|
|
9
26
|
config: DelegatorConfig;
|
|
10
27
|
}
|
|
@@ -12,33 +29,30 @@ export declare class DelegatorService implements DelegatorRequestHandler {
|
|
|
12
29
|
private config;
|
|
13
30
|
private transport;
|
|
14
31
|
private admissionController;
|
|
15
|
-
private
|
|
16
|
-
private
|
|
32
|
+
private delegationManager;
|
|
33
|
+
private environmentManager;
|
|
34
|
+
private snapshotManager;
|
|
17
35
|
private executorClient;
|
|
18
36
|
private delegations;
|
|
19
37
|
private stateMachines;
|
|
20
|
-
private executorUrls;
|
|
21
38
|
private cleanupTimer?;
|
|
22
39
|
constructor(options: DelegatorServiceOptions);
|
|
40
|
+
initialize(): Promise<void>;
|
|
41
|
+
shutdown(): Promise<void>;
|
|
23
42
|
delegate(params: DelegateParams): Promise<string>;
|
|
24
43
|
handleAccept(message: AcceptMessage): Promise<void>;
|
|
25
|
-
private subscribeToTaskEvents;
|
|
26
|
-
private handleTaskEvent;
|
|
27
|
-
private handleSnapshotEvent;
|
|
28
|
-
private applySnapshotToWorkspace;
|
|
29
44
|
handleDone(message: DoneMessage): Promise<void>;
|
|
30
45
|
handleError(message: ErrorMessage): Promise<void>;
|
|
31
|
-
|
|
46
|
+
private consumeTaskEvents;
|
|
47
|
+
private handleTaskEvent;
|
|
48
|
+
private handleSnapshotEvent;
|
|
32
49
|
cancel(delegationId: string): Promise<void>;
|
|
33
50
|
getDelegation(delegationId: string): Delegation | undefined;
|
|
34
51
|
listSnapshots(delegationId: string): EnvironmentSnapshot[];
|
|
35
52
|
applySnapshot(delegationId: string, snapshotId: string): Promise<void>;
|
|
36
53
|
discardSnapshot(delegationId: string, snapshotId: string): Promise<void>;
|
|
37
|
-
waitForCompletion(delegationId: string, timeoutMs?: number): Promise<Delegation>;
|
|
38
54
|
getStatus(): DelegatorServiceStatus;
|
|
39
|
-
|
|
40
|
-
private shouldCleanup;
|
|
41
|
-
private cleanup;
|
|
55
|
+
private persistDelegation;
|
|
42
56
|
private startCleanupTimer;
|
|
43
57
|
private transitionState;
|
|
44
58
|
private validateAndNormalizePath;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/delegator/service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,KAAK,UAAU,EAGf,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/delegator/service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,KAAK,UAAU,EAGf,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,YAAY,EAIjB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EAUrB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,eAAe,EAAgC,KAAK,cAAc,EAA0B,MAAM,aAAa,CAAC;AAO9H,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,eAAe,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,uBAAuB,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC5D,SAAS,IAAI,sBAAsB,CAAC;CACrC;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,qBAAa,gBAAiB,YAAW,uBAAuB;IAC9D,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,aAAa,CAA6C;IAClE,OAAO,CAAC,YAAY,CAAC,CAAiC;gBAE1C,OAAO,EAAE,uBAAuB;IA4BtC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA0C3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAYzB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAmHjD,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA2DnD,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B/C,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;YAgCzC,iBAAiB;YA6BjB,eAAe;YA4Cf,mBAAmB;IAY3B,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAajD,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAI3D,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAMpD,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtE,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9E,SAAS,IAAI,sBAAsB;YAarB,iBAAiB;IAO/B,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,eAAe;YAgBT,wBAAwB;CA+BvC"}
|