@elaraai/e3-api-server 0.0.2-beta.9 → 1.0.0
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/LICENSE.md +4 -0
- package/README.md +194 -43
- package/dist/src/async-operation-state.d.ts +37 -0
- package/dist/src/async-operation-state.d.ts.map +1 -0
- package/dist/src/async-operation-state.js +118 -0
- package/dist/src/async-operation-state.js.map +1 -0
- package/dist/src/auth/device.d.ts +26 -0
- package/dist/src/auth/device.d.ts.map +1 -0
- package/dist/src/auth/device.js +227 -0
- package/dist/src/auth/device.js.map +1 -0
- package/dist/src/auth/discovery.d.ts +23 -0
- package/dist/src/auth/discovery.d.ts.map +1 -0
- package/dist/src/auth/discovery.js +40 -0
- package/dist/src/auth/discovery.js.map +1 -0
- package/dist/src/auth/index.d.ts +56 -0
- package/dist/src/auth/index.d.ts.map +1 -0
- package/dist/src/auth/index.js +69 -0
- package/dist/src/auth/index.js.map +1 -0
- package/dist/src/auth/keys.d.ts +55 -0
- package/dist/src/auth/keys.d.ts.map +1 -0
- package/dist/src/auth/keys.js +78 -0
- package/dist/src/auth/keys.js.map +1 -0
- package/dist/src/beast2.d.ts +15 -3
- package/dist/src/beast2.d.ts.map +1 -1
- package/dist/src/beast2.js +38 -8
- package/dist/src/beast2.js.map +1 -1
- package/dist/src/cli.js +58 -6
- package/dist/src/cli.js.map +1 -1
- package/dist/src/errors.d.ts +11 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +95 -2
- package/dist/src/errors.js.map +1 -1
- package/dist/src/handlers/dataflow.d.ts +43 -0
- package/dist/src/handlers/dataflow.d.ts.map +1 -0
- package/dist/src/handlers/dataflow.js +363 -0
- package/dist/src/handlers/dataflow.js.map +1 -0
- package/dist/src/handlers/datasets.d.ts +39 -0
- package/dist/src/handlers/datasets.d.ts.map +1 -0
- package/dist/src/handlers/datasets.js +232 -0
- package/dist/src/handlers/datasets.js.map +1 -0
- package/dist/src/handlers/datasets.spec.d.ts +6 -0
- package/dist/src/handlers/datasets.spec.d.ts.map +1 -0
- package/dist/src/handlers/datasets.spec.js +151 -0
- package/dist/src/handlers/datasets.spec.js.map +1 -0
- package/dist/src/handlers/index.d.ts +11 -0
- package/dist/src/handlers/index.d.ts.map +1 -0
- package/dist/src/handlers/index.js +11 -0
- package/dist/src/handlers/index.js.map +1 -0
- package/dist/src/handlers/packages.d.ts +18 -0
- package/dist/src/handlers/packages.d.ts.map +1 -0
- package/dist/src/handlers/packages.js +51 -0
- package/dist/src/handlers/packages.js.map +1 -0
- package/dist/src/handlers/repository.d.ts +24 -0
- package/dist/src/handlers/repository.d.ts.map +1 -0
- package/dist/src/handlers/repository.js +79 -0
- package/dist/src/handlers/repository.js.map +1 -0
- package/dist/src/handlers/tasks.d.ts +18 -0
- package/dist/src/handlers/tasks.d.ts.map +1 -0
- package/dist/src/handlers/tasks.js +136 -0
- package/dist/src/handlers/tasks.js.map +1 -0
- package/dist/src/handlers/workspaces.d.ts +34 -0
- package/dist/src/handlers/workspaces.d.ts.map +1 -0
- package/dist/src/handlers/workspaces.js +225 -0
- package/dist/src/handlers/workspaces.js.map +1 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/middleware/auth.d.ts +51 -0
- package/dist/src/middleware/auth.d.ts.map +1 -0
- package/dist/src/middleware/auth.js +158 -0
- package/dist/src/middleware/auth.js.map +1 -0
- package/dist/src/orchestrator-manager.d.ts +45 -0
- package/dist/src/orchestrator-manager.d.ts.map +1 -0
- package/dist/src/orchestrator-manager.js +150 -0
- package/dist/src/orchestrator-manager.js.map +1 -0
- package/dist/src/routes/data.d.ts +21 -0
- package/dist/src/routes/data.d.ts.map +1 -0
- package/dist/src/routes/data.js +123 -0
- package/dist/src/routes/data.js.map +1 -0
- package/dist/src/routes/datasets.d.ts +2 -1
- package/dist/src/routes/datasets.d.ts.map +1 -1
- package/dist/src/routes/datasets.js +59 -83
- package/dist/src/routes/datasets.js.map +1 -1
- package/dist/src/routes/executions.d.ts +2 -1
- package/dist/src/routes/executions.d.ts.map +1 -1
- package/dist/src/routes/executions.js +54 -287
- package/dist/src/routes/executions.js.map +1 -1
- package/dist/src/routes/index.d.ts +15 -0
- package/dist/src/routes/index.d.ts.map +1 -0
- package/dist/src/routes/index.js +15 -0
- package/dist/src/routes/index.js.map +1 -0
- package/dist/src/routes/objects.d.ts +8 -0
- package/dist/src/routes/objects.d.ts.map +1 -0
- package/dist/src/routes/objects.js +37 -0
- package/dist/src/routes/objects.js.map +1 -0
- package/dist/src/routes/package-transfer.d.ts +23 -0
- package/dist/src/routes/package-transfer.d.ts.map +1 -0
- package/dist/src/routes/package-transfer.js +152 -0
- package/dist/src/routes/package-transfer.js.map +1 -0
- package/dist/src/routes/packages.d.ts +2 -1
- package/dist/src/routes/packages.d.ts.map +1 -1
- package/dist/src/routes/packages.js +18 -109
- package/dist/src/routes/packages.js.map +1 -1
- package/dist/src/routes/repository.d.ts +2 -1
- package/dist/src/routes/repository.d.ts.map +1 -1
- package/dist/src/routes/repository.js +19 -54
- package/dist/src/routes/repository.js.map +1 -1
- package/dist/src/routes/tasks.d.ts +2 -1
- package/dist/src/routes/tasks.d.ts.map +1 -1
- package/dist/src/routes/tasks.js +22 -46
- package/dist/src/routes/tasks.js.map +1 -1
- package/dist/src/routes/transfer.d.ts +19 -0
- package/dist/src/routes/transfer.d.ts.map +1 -0
- package/dist/src/routes/transfer.js +124 -0
- package/dist/src/routes/transfer.js.map +1 -0
- package/dist/src/routes/workspaces.d.ts +2 -1
- package/dist/src/routes/workspaces.d.ts.map +1 -1
- package/dist/src/routes/workspaces.js +83 -112
- package/dist/src/routes/workspaces.js.map +1 -1
- package/dist/src/server.d.ts +24 -3
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +270 -19
- package/dist/src/server.js.map +1 -1
- package/dist/src/types.d.ts +786 -1223
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +65 -407
- package/dist/src/types.js.map +1 -1
- package/package.json +28 -16
package/dist/src/beast2.js
CHANGED
|
@@ -3,44 +3,74 @@
|
|
|
3
3
|
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
5
|
import { encodeBeast2For, decodeBeast2For, variant } from '@elaraai/east';
|
|
6
|
+
import { BEAST2_CONTENT_TYPE } from '@elaraai/e3-core';
|
|
6
7
|
import { ResponseType } from './types.js';
|
|
7
8
|
/**
|
|
8
|
-
* Decode BEAST2 request body.
|
|
9
|
+
* Decode BEAST2 request body from Hono context.
|
|
9
10
|
*/
|
|
10
11
|
export async function decodeBody(c, type) {
|
|
11
12
|
const contentType = c.req.header('content-type');
|
|
12
|
-
if (contentType !==
|
|
13
|
-
throw new Error(`Expected Content-Type:
|
|
13
|
+
if (contentType !== BEAST2_CONTENT_TYPE) {
|
|
14
|
+
throw new Error(`Expected Content-Type: ${BEAST2_CONTENT_TYPE}, got ${contentType}`);
|
|
14
15
|
}
|
|
16
|
+
// TODO should we use use streaming decoder here?
|
|
15
17
|
const buffer = await c.req.arrayBuffer();
|
|
16
18
|
const decode = decodeBeast2For(type);
|
|
17
19
|
return decode(new Uint8Array(buffer));
|
|
18
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Decode raw BEAST2 bytes (for handlers that receive body directly).
|
|
23
|
+
*/
|
|
24
|
+
export function decodeBeast2(data, type) {
|
|
25
|
+
const decode = decodeBeast2For(type);
|
|
26
|
+
return decode(data);
|
|
27
|
+
}
|
|
19
28
|
/**
|
|
20
29
|
* Send BEAST2 success response.
|
|
30
|
+
*
|
|
31
|
+
* Returns a web Response object that can be used by both Hono routes and Lambda handlers.
|
|
21
32
|
*/
|
|
22
|
-
export function sendSuccess(
|
|
33
|
+
export function sendSuccess(type, value) {
|
|
23
34
|
const responseType = ResponseType(type);
|
|
24
|
-
const encode = encodeBeast2For(responseType);
|
|
35
|
+
const encode = encodeBeast2For(responseType); // TODO should we use streaming encoder here?
|
|
25
36
|
const body = encode(variant('success', value));
|
|
26
37
|
return new Response(body, {
|
|
27
38
|
status: 200,
|
|
28
39
|
headers: {
|
|
29
|
-
'Content-Type':
|
|
40
|
+
'Content-Type': BEAST2_CONTENT_TYPE,
|
|
41
|
+
'Content-Length': String(body.byteLength),
|
|
30
42
|
},
|
|
31
43
|
});
|
|
32
44
|
}
|
|
33
45
|
/**
|
|
34
46
|
* Send BEAST2 error response.
|
|
47
|
+
*
|
|
48
|
+
* Returns a web Response object that can be used by both Hono routes and Lambda handlers.
|
|
35
49
|
*/
|
|
36
|
-
export function sendError(
|
|
50
|
+
export function sendError(type, error) {
|
|
37
51
|
const responseType = ResponseType(type);
|
|
38
52
|
const encode = encodeBeast2For(responseType);
|
|
39
53
|
const body = encode(variant('error', error));
|
|
40
54
|
return new Response(body, {
|
|
41
55
|
status: 200,
|
|
42
56
|
headers: {
|
|
43
|
-
'Content-Type':
|
|
57
|
+
'Content-Type': BEAST2_CONTENT_TYPE,
|
|
58
|
+
'Content-Length': String(body.byteLength),
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Send BEAST2 success response with custom HTTP status.
|
|
64
|
+
*/
|
|
65
|
+
export function sendSuccessWithStatus(type, value, status) {
|
|
66
|
+
const responseType = ResponseType(type);
|
|
67
|
+
const encode = encodeBeast2For(responseType); // TODO should we use streaming encoder here?
|
|
68
|
+
const body = encode(variant('success', value));
|
|
69
|
+
return new Response(body, {
|
|
70
|
+
status,
|
|
71
|
+
headers: {
|
|
72
|
+
'Content-Type': BEAST2_CONTENT_TYPE,
|
|
73
|
+
'Content-Length': String(body.byteLength),
|
|
44
74
|
},
|
|
45
75
|
});
|
|
46
76
|
}
|
package/dist/src/beast2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beast2.js","sourceRoot":"","sources":["../../src/beast2.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"beast2.js","sourceRoot":"","sources":["../../src/beast2.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAEtD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,CAAU,EACV,IAAO;IAEP,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACjD,IAAI,WAAW,KAAK,mBAAmB,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,0BAA0B,mBAAmB,SAAS,WAAW,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,iDAAiD;IACjD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAgB,EAChB,IAAO;IAEP,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,IAAO,EACP,KAAqB;IAErB,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,6CAA6C;IAC3F,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAqC,CAAC,CAAC;IAEnF,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;QACxB,MAAM,EAAE,GAAG;QACX,OAAO,EAAE;YACP,cAAc,EAAE,mBAAmB;YACnC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;SAC1C;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CACvB,IAAO,EACP,KAAY;IAEZ,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAqC,CAAC,CAAC;IAEjF,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;QACxB,MAAM,EAAE,GAAG;QACX,OAAO,EAAE;YACP,cAAc,EAAE,mBAAmB;YACnC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;SAC1C;KACF,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAO,EACP,KAAqB,EACrB,MAAc;IAEd,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,6CAA6C;IAC3F,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAqC,CAAC,CAAC;IAEnF,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;QACxB,MAAM;QACN,OAAO,EAAE;YACP,cAAc,EAAE,mBAAmB;YACnC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;SAC1C;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/dist/src/cli.js
CHANGED
|
@@ -10,17 +10,69 @@ program
|
|
|
10
10
|
.name('e3-api-server')
|
|
11
11
|
.description('HTTP server for e3 repositories')
|
|
12
12
|
.version('0.0.1-beta.0')
|
|
13
|
-
.
|
|
13
|
+
.option('--repos <dir>', 'Directory containing e3 repositories (multi-repo mode)')
|
|
14
|
+
.option('--repo <path>', 'Path to a single repository (single-repo mode, access via /repos/default)')
|
|
14
15
|
.option('-p, --port <port>', 'HTTP port', '3000')
|
|
15
16
|
.option('-H, --host <host>', 'Bind address', 'localhost')
|
|
16
|
-
.
|
|
17
|
+
.option('--cors', 'Enable CORS')
|
|
18
|
+
.option('--oidc', 'Enable built-in OIDC authentication provider')
|
|
19
|
+
.option('--token-expiry <duration>', 'Access token expiry (e.g., "5s", "15m", "1h")', '1h')
|
|
20
|
+
.option('--refresh-token-expiry <duration>', 'Refresh token expiry (e.g., "1h", "7d", "90d")', '90d')
|
|
21
|
+
.option('--auth-key <path>', 'JWT public key path (external auth)')
|
|
22
|
+
.option('--auth-issuer <iss>', 'Expected JWT issuer (external auth)')
|
|
23
|
+
.option('--auth-audience <aud>', 'Expected JWT audience (external auth)')
|
|
24
|
+
.action(async (options) => {
|
|
25
|
+
// Validate mutually exclusive options
|
|
26
|
+
if (options.repos && options.repo) {
|
|
27
|
+
console.error('Error: Cannot specify both --repos and --repo');
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
if (!options.repos && !options.repo) {
|
|
31
|
+
console.error('Error: Must specify either --repos or --repo');
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
const port = parseInt(options.port, 10);
|
|
35
|
+
const host = options.host;
|
|
36
|
+
// Build auth config if all auth options provided (external provider)
|
|
37
|
+
const auth = options.authKey && options.authIssuer && options.authAudience
|
|
38
|
+
? {
|
|
39
|
+
publicKeyPath: options.authKey,
|
|
40
|
+
issuer: options.authIssuer,
|
|
41
|
+
audience: options.authAudience,
|
|
42
|
+
}
|
|
43
|
+
: undefined;
|
|
44
|
+
// Build OIDC config if enabled (built-in provider)
|
|
45
|
+
const oidc = options.oidc
|
|
46
|
+
? {
|
|
47
|
+
baseUrl: `http://${host}:${port}`,
|
|
48
|
+
tokenExpiry: options.tokenExpiry,
|
|
49
|
+
refreshTokenExpiry: options.refreshTokenExpiry,
|
|
50
|
+
}
|
|
51
|
+
: undefined;
|
|
17
52
|
const server = await createServer({
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
53
|
+
reposDir: options.repos,
|
|
54
|
+
singleRepoPath: options.repo,
|
|
55
|
+
port,
|
|
56
|
+
host,
|
|
57
|
+
cors: options.cors,
|
|
58
|
+
auth,
|
|
59
|
+
oidc,
|
|
21
60
|
});
|
|
22
61
|
await server.start();
|
|
23
|
-
console.log(`e3-api-server listening on http://${
|
|
62
|
+
console.log(`e3-api-server listening on http://${host}:${server.port}`);
|
|
63
|
+
if (options.repos) {
|
|
64
|
+
console.log(`Serving repositories from: ${options.repos}`);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
console.log(`Serving single repository from: ${options.repo}`);
|
|
68
|
+
console.log(`Access via: http://${host}:${server.port}/repos/default`);
|
|
69
|
+
}
|
|
70
|
+
if (oidc) {
|
|
71
|
+
console.log(`OIDC provider enabled (token expiry: ${options.tokenExpiry})`);
|
|
72
|
+
if (process.env.E3_AUTH_AUTO_APPROVE === '1') {
|
|
73
|
+
console.log(' Auto-approve mode enabled (E3_AUTH_AUTO_APPROVE=1)');
|
|
74
|
+
}
|
|
75
|
+
}
|
|
24
76
|
// Handle shutdown signals
|
|
25
77
|
const shutdown = async () => {
|
|
26
78
|
console.log('\nShutting down...');
|
package/dist/src/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,iCAAiC,CAAC;KAC9C,OAAO,CAAC,cAAc,CAAC;KACvB,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,iCAAiC,CAAC;KAC9C,OAAO,CAAC,cAAc,CAAC;KACvB,MAAM,CAAC,eAAe,EAAE,wDAAwD,CAAC;KACjF,MAAM,CAAC,eAAe,EAAE,2EAA2E,CAAC;KACpG,MAAM,CAAC,mBAAmB,EAAE,WAAW,EAAE,MAAM,CAAC;KAChD,MAAM,CAAC,mBAAmB,EAAE,cAAc,EAAE,WAAW,CAAC;KACxD,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;KAC/B,MAAM,CAAC,QAAQ,EAAE,8CAA8C,CAAC;KAChE,MAAM,CAAC,2BAA2B,EAAE,+CAA+C,EAAE,IAAI,CAAC;KAC1F,MAAM,CAAC,mCAAmC,EAAE,gDAAgD,EAAE,KAAK,CAAC;KACpG,MAAM,CAAC,mBAAmB,EAAE,qCAAqC,CAAC;KAClE,MAAM,CAAC,qBAAqB,EAAE,qCAAqC,CAAC;KACpE,MAAM,CAAC,uBAAuB,EAAE,uCAAuC,CAAC;KACxE,MAAM,CAAC,KAAK,EAAE,OAYd,EAAE,EAAE;IACH,sCAAsC;IACtC,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,qEAAqE;IACrE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,YAAY;QACxE,CAAC,CAAC;YACE,aAAa,EAAE,OAAO,CAAC,OAAO;YAC9B,MAAM,EAAE,OAAO,CAAC,UAAU;YAC1B,QAAQ,EAAE,OAAO,CAAC,YAAY;SAC/B;QACH,CAAC,CAAC,SAAS,CAAC;IAEd,mDAAmD;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI;QACvB,CAAC,CAAC;YACE,OAAO,EAAE,UAAU,IAAI,IAAI,IAAI,EAAE;YACjC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;SAC/C;QACH,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;QAChC,QAAQ,EAAE,OAAO,CAAC,KAAK;QACvB,cAAc,EAAE,OAAO,CAAC,IAAI;QAC5B,IAAI;QACJ,IAAI;QACJ,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI;QACJ,IAAI;KACL,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,OAAO,CAAC,GAAG,CAAC,qCAAqC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACxE,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,8BAA8B,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,mCAAmC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,IAAI,MAAM,CAAC,IAAI,gBAAgB,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,wCAAwC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;QAC5E,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,GAAG,EAAE,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/src/errors.d.ts
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
5
|
import type { Error } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Map an e3-core error to an HTTP status code.
|
|
8
|
+
*/
|
|
9
|
+
export declare function errorToHttpStatus(err: unknown): number;
|
|
10
|
+
/**
|
|
11
|
+
* Send a JSON error response with an appropriate HTTP status code.
|
|
12
|
+
*
|
|
13
|
+
* Use this for routes that return raw data (not BEAST2-wrapped result types)
|
|
14
|
+
* on success, so errors need a different content type and status code.
|
|
15
|
+
*/
|
|
16
|
+
export declare function sendJsonError(err: unknown): Response;
|
|
6
17
|
/**
|
|
7
18
|
* Convert an e3-core error to an API error variant.
|
|
8
19
|
*/
|
package/dist/src/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoBH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAiBtD;AAwBD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,QAAQ,CAQpD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAqElD"}
|
package/dist/src/errors.js
CHANGED
|
@@ -3,11 +3,101 @@
|
|
|
3
3
|
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
5
|
import { variant, some, none } from '@elaraai/east';
|
|
6
|
-
import { WorkspaceNotFoundError, WorkspaceNotDeployedError, WorkspaceExistsError, WorkspaceLockError, PackageNotFoundError, PackageExistsError, PackageInvalidError, DatasetNotFoundError, TaskNotFoundError, ObjectNotFoundError, DataflowError, DataflowAbortedError, PermissionDeniedError, } from '@elaraai/e3-core';
|
|
6
|
+
import { RepoNotFoundError, WorkspaceNotFoundError, WorkspaceNotDeployedError, WorkspaceExistsError, WorkspaceLockError, PackageNotFoundError, PackageExistsError, PackageInvalidError, DatasetNotFoundError, TaskNotFoundError, ExecutionNotFoundError, ObjectNotFoundError, DataflowError, DataflowAbortedError, PermissionDeniedError, } from '@elaraai/e3-core';
|
|
7
|
+
/**
|
|
8
|
+
* Map an e3-core error to an HTTP status code.
|
|
9
|
+
*/
|
|
10
|
+
export function errorToHttpStatus(err) {
|
|
11
|
+
if (err instanceof RepoNotFoundError)
|
|
12
|
+
return 404;
|
|
13
|
+
if (err instanceof WorkspaceNotFoundError)
|
|
14
|
+
return 404;
|
|
15
|
+
if (err instanceof WorkspaceNotDeployedError)
|
|
16
|
+
return 409;
|
|
17
|
+
if (err instanceof WorkspaceExistsError)
|
|
18
|
+
return 409;
|
|
19
|
+
if (err instanceof WorkspaceLockError)
|
|
20
|
+
return 409;
|
|
21
|
+
if (err instanceof PackageNotFoundError)
|
|
22
|
+
return 404;
|
|
23
|
+
if (err instanceof PackageExistsError)
|
|
24
|
+
return 409;
|
|
25
|
+
if (err instanceof PackageInvalidError)
|
|
26
|
+
return 422;
|
|
27
|
+
if (err instanceof DatasetNotFoundError)
|
|
28
|
+
return 404;
|
|
29
|
+
if (err instanceof TaskNotFoundError)
|
|
30
|
+
return 404;
|
|
31
|
+
if (err instanceof ExecutionNotFoundError)
|
|
32
|
+
return 404;
|
|
33
|
+
if (err instanceof ObjectNotFoundError)
|
|
34
|
+
return 404;
|
|
35
|
+
if (err instanceof DataflowError)
|
|
36
|
+
return 500;
|
|
37
|
+
if (err instanceof DataflowAbortedError)
|
|
38
|
+
return 500;
|
|
39
|
+
if (err instanceof PermissionDeniedError)
|
|
40
|
+
return 403;
|
|
41
|
+
return 500;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Map an e3-core error to a JSON error type string.
|
|
45
|
+
*/
|
|
46
|
+
function errorToType(err) {
|
|
47
|
+
if (err instanceof RepoNotFoundError)
|
|
48
|
+
return 'repository_not_found';
|
|
49
|
+
if (err instanceof WorkspaceNotFoundError)
|
|
50
|
+
return 'workspace_not_found';
|
|
51
|
+
if (err instanceof WorkspaceNotDeployedError)
|
|
52
|
+
return 'workspace_not_deployed';
|
|
53
|
+
if (err instanceof WorkspaceExistsError)
|
|
54
|
+
return 'workspace_exists';
|
|
55
|
+
if (err instanceof WorkspaceLockError)
|
|
56
|
+
return 'workspace_locked';
|
|
57
|
+
if (err instanceof PackageNotFoundError)
|
|
58
|
+
return 'package_not_found';
|
|
59
|
+
if (err instanceof PackageExistsError)
|
|
60
|
+
return 'package_exists';
|
|
61
|
+
if (err instanceof PackageInvalidError)
|
|
62
|
+
return 'package_invalid';
|
|
63
|
+
if (err instanceof DatasetNotFoundError)
|
|
64
|
+
return 'dataset_not_found';
|
|
65
|
+
if (err instanceof TaskNotFoundError)
|
|
66
|
+
return 'task_not_found';
|
|
67
|
+
if (err instanceof ExecutionNotFoundError)
|
|
68
|
+
return 'execution_not_found';
|
|
69
|
+
if (err instanceof ObjectNotFoundError)
|
|
70
|
+
return 'object_not_found';
|
|
71
|
+
if (err instanceof DataflowError)
|
|
72
|
+
return 'dataflow_error';
|
|
73
|
+
if (err instanceof DataflowAbortedError)
|
|
74
|
+
return 'dataflow_aborted';
|
|
75
|
+
if (err instanceof PermissionDeniedError)
|
|
76
|
+
return 'permission_denied';
|
|
77
|
+
return 'internal';
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Send a JSON error response with an appropriate HTTP status code.
|
|
81
|
+
*
|
|
82
|
+
* Use this for routes that return raw data (not BEAST2-wrapped result types)
|
|
83
|
+
* on success, so errors need a different content type and status code.
|
|
84
|
+
*/
|
|
85
|
+
export function sendJsonError(err) {
|
|
86
|
+
const status = errorToHttpStatus(err);
|
|
87
|
+
const type = errorToType(err);
|
|
88
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
89
|
+
return new Response(JSON.stringify({ error: { type, message } }), {
|
|
90
|
+
status,
|
|
91
|
+
headers: { 'Content-Type': 'application/json' },
|
|
92
|
+
});
|
|
93
|
+
}
|
|
7
94
|
/**
|
|
8
95
|
* Convert an e3-core error to an API error variant.
|
|
9
96
|
*/
|
|
10
97
|
export function errorToVariant(err) {
|
|
98
|
+
if (err instanceof RepoNotFoundError) {
|
|
99
|
+
return variant('repository_not_found', { repo: err.repo });
|
|
100
|
+
}
|
|
11
101
|
if (err instanceof WorkspaceNotFoundError) {
|
|
12
102
|
return variant('workspace_not_found', { workspace: err.workspace });
|
|
13
103
|
}
|
|
@@ -20,7 +110,7 @@ export function errorToVariant(err) {
|
|
|
20
110
|
if (err instanceof WorkspaceLockError) {
|
|
21
111
|
return variant('workspace_locked', {
|
|
22
112
|
workspace: err.workspace,
|
|
23
|
-
holder: err.holder
|
|
113
|
+
holder: err.holder && err.holder.pid !== undefined
|
|
24
114
|
? variant('known', {
|
|
25
115
|
pid: BigInt(err.holder.pid),
|
|
26
116
|
acquiredAt: err.holder.acquiredAt,
|
|
@@ -54,6 +144,9 @@ export function errorToVariant(err) {
|
|
|
54
144
|
if (err instanceof TaskNotFoundError) {
|
|
55
145
|
return variant('task_not_found', { task: err.task });
|
|
56
146
|
}
|
|
147
|
+
if (err instanceof ExecutionNotFoundError) {
|
|
148
|
+
return variant('execution_not_found', { task: err.task });
|
|
149
|
+
}
|
|
57
150
|
if (err instanceof ObjectNotFoundError) {
|
|
58
151
|
return variant('object_not_found', { hash: err.hash });
|
|
59
152
|
}
|
package/dist/src/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAG1B;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,IAAI,GAAG,YAAY,sBAAsB,EAAE,CAAC;QAC1C,OAAO,OAAO,CAAC,qBAAqB,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,GAAG,YAAY,yBAAyB,EAAE,CAAC;QAC7C,OAAO,OAAO,CAAC,wBAAwB,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,GAAG,YAAY,oBAAoB,EAAE,CAAC;QACxC,OAAO,OAAO,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,GAAG,YAAY,kBAAkB,EAAE,CAAC;QACtC,OAAO,OAAO,CAAC,kBAAkB,EAAE;YACjC,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,MAAM,EAAE,GAAG,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
import type { StorageBackend } from '@elaraai/e3-core';
|
|
6
|
+
/**
|
|
7
|
+
* Start dataflow execution (non-blocking).
|
|
8
|
+
*
|
|
9
|
+
* Returns 202 Accepted immediately and runs execution in background.
|
|
10
|
+
* Creates execution state that can be polled via getDataflowExecution().
|
|
11
|
+
*/
|
|
12
|
+
export declare function startDataflow(storage: StorageBackend, repoPath: string, workspace: string, options: {
|
|
13
|
+
concurrency: number;
|
|
14
|
+
force: boolean;
|
|
15
|
+
filter?: string;
|
|
16
|
+
}): Promise<Response>;
|
|
17
|
+
/**
|
|
18
|
+
* Get workspace status (for polling).
|
|
19
|
+
*/
|
|
20
|
+
export declare function getDataflowStatus(storage: StorageBackend, repoPath: string, workspace: string): Promise<Response>;
|
|
21
|
+
/**
|
|
22
|
+
* Get dependency graph.
|
|
23
|
+
*/
|
|
24
|
+
export declare function getDataflowGraph(storage: StorageBackend, repoPath: string, workspace: string): Promise<Response>;
|
|
25
|
+
/**
|
|
26
|
+
* Get task logs.
|
|
27
|
+
*/
|
|
28
|
+
export declare function getTaskLogs(storage: StorageBackend, repoPath: string, workspace: string, taskName: string, stream: 'stdout' | 'stderr', offset: number, limit: number): Promise<Response>;
|
|
29
|
+
/**
|
|
30
|
+
* Get dataflow execution state (for polling).
|
|
31
|
+
*
|
|
32
|
+
* Returns the current execution state including events for progress tracking.
|
|
33
|
+
* Supports offset/limit for paginating events.
|
|
34
|
+
*/
|
|
35
|
+
export declare function getDataflowExecution(repoPath: string, workspace: string, options?: {
|
|
36
|
+
offset?: number;
|
|
37
|
+
limit?: number;
|
|
38
|
+
}): Promise<Response>;
|
|
39
|
+
/**
|
|
40
|
+
* Cancel a running dataflow execution.
|
|
41
|
+
*/
|
|
42
|
+
export declare function cancelDataflow(repoPath: string, workspace: string): Promise<Response>;
|
|
43
|
+
//# sourceMappingURL=dataflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataflow.d.ts","sourceRoot":"","sources":["../../../src/handlers/dataflow.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAyIvD;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAChE,OAAO,CAAC,QAAQ,CAAC,CA6BnB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,CAAC,CAOnB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,CAAC,CAenB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAC3B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC,CAqBnB;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAChD,OAAO,CAAC,QAAQ,CAAC,CA0InB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,CAAC,CAiBnB"}
|