@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.
Files changed (129) hide show
  1. package/LICENSE.md +4 -0
  2. package/README.md +194 -43
  3. package/dist/src/async-operation-state.d.ts +37 -0
  4. package/dist/src/async-operation-state.d.ts.map +1 -0
  5. package/dist/src/async-operation-state.js +118 -0
  6. package/dist/src/async-operation-state.js.map +1 -0
  7. package/dist/src/auth/device.d.ts +26 -0
  8. package/dist/src/auth/device.d.ts.map +1 -0
  9. package/dist/src/auth/device.js +227 -0
  10. package/dist/src/auth/device.js.map +1 -0
  11. package/dist/src/auth/discovery.d.ts +23 -0
  12. package/dist/src/auth/discovery.d.ts.map +1 -0
  13. package/dist/src/auth/discovery.js +40 -0
  14. package/dist/src/auth/discovery.js.map +1 -0
  15. package/dist/src/auth/index.d.ts +56 -0
  16. package/dist/src/auth/index.d.ts.map +1 -0
  17. package/dist/src/auth/index.js +69 -0
  18. package/dist/src/auth/index.js.map +1 -0
  19. package/dist/src/auth/keys.d.ts +55 -0
  20. package/dist/src/auth/keys.d.ts.map +1 -0
  21. package/dist/src/auth/keys.js +78 -0
  22. package/dist/src/auth/keys.js.map +1 -0
  23. package/dist/src/beast2.d.ts +15 -3
  24. package/dist/src/beast2.d.ts.map +1 -1
  25. package/dist/src/beast2.js +38 -8
  26. package/dist/src/beast2.js.map +1 -1
  27. package/dist/src/cli.js +58 -6
  28. package/dist/src/cli.js.map +1 -1
  29. package/dist/src/errors.d.ts +11 -0
  30. package/dist/src/errors.d.ts.map +1 -1
  31. package/dist/src/errors.js +95 -2
  32. package/dist/src/errors.js.map +1 -1
  33. package/dist/src/handlers/dataflow.d.ts +43 -0
  34. package/dist/src/handlers/dataflow.d.ts.map +1 -0
  35. package/dist/src/handlers/dataflow.js +363 -0
  36. package/dist/src/handlers/dataflow.js.map +1 -0
  37. package/dist/src/handlers/datasets.d.ts +39 -0
  38. package/dist/src/handlers/datasets.d.ts.map +1 -0
  39. package/dist/src/handlers/datasets.js +232 -0
  40. package/dist/src/handlers/datasets.js.map +1 -0
  41. package/dist/src/handlers/datasets.spec.d.ts +6 -0
  42. package/dist/src/handlers/datasets.spec.d.ts.map +1 -0
  43. package/dist/src/handlers/datasets.spec.js +151 -0
  44. package/dist/src/handlers/datasets.spec.js.map +1 -0
  45. package/dist/src/handlers/index.d.ts +11 -0
  46. package/dist/src/handlers/index.d.ts.map +1 -0
  47. package/dist/src/handlers/index.js +11 -0
  48. package/dist/src/handlers/index.js.map +1 -0
  49. package/dist/src/handlers/packages.d.ts +18 -0
  50. package/dist/src/handlers/packages.d.ts.map +1 -0
  51. package/dist/src/handlers/packages.js +51 -0
  52. package/dist/src/handlers/packages.js.map +1 -0
  53. package/dist/src/handlers/repository.d.ts +24 -0
  54. package/dist/src/handlers/repository.d.ts.map +1 -0
  55. package/dist/src/handlers/repository.js +79 -0
  56. package/dist/src/handlers/repository.js.map +1 -0
  57. package/dist/src/handlers/tasks.d.ts +18 -0
  58. package/dist/src/handlers/tasks.d.ts.map +1 -0
  59. package/dist/src/handlers/tasks.js +136 -0
  60. package/dist/src/handlers/tasks.js.map +1 -0
  61. package/dist/src/handlers/workspaces.d.ts +34 -0
  62. package/dist/src/handlers/workspaces.d.ts.map +1 -0
  63. package/dist/src/handlers/workspaces.js +225 -0
  64. package/dist/src/handlers/workspaces.js.map +1 -0
  65. package/dist/src/index.d.ts +3 -0
  66. package/dist/src/index.d.ts.map +1 -1
  67. package/dist/src/index.js +6 -0
  68. package/dist/src/index.js.map +1 -1
  69. package/dist/src/middleware/auth.d.ts +51 -0
  70. package/dist/src/middleware/auth.d.ts.map +1 -0
  71. package/dist/src/middleware/auth.js +158 -0
  72. package/dist/src/middleware/auth.js.map +1 -0
  73. package/dist/src/orchestrator-manager.d.ts +45 -0
  74. package/dist/src/orchestrator-manager.d.ts.map +1 -0
  75. package/dist/src/orchestrator-manager.js +150 -0
  76. package/dist/src/orchestrator-manager.js.map +1 -0
  77. package/dist/src/routes/data.d.ts +21 -0
  78. package/dist/src/routes/data.d.ts.map +1 -0
  79. package/dist/src/routes/data.js +123 -0
  80. package/dist/src/routes/data.js.map +1 -0
  81. package/dist/src/routes/datasets.d.ts +2 -1
  82. package/dist/src/routes/datasets.d.ts.map +1 -1
  83. package/dist/src/routes/datasets.js +59 -83
  84. package/dist/src/routes/datasets.js.map +1 -1
  85. package/dist/src/routes/executions.d.ts +2 -1
  86. package/dist/src/routes/executions.d.ts.map +1 -1
  87. package/dist/src/routes/executions.js +54 -287
  88. package/dist/src/routes/executions.js.map +1 -1
  89. package/dist/src/routes/index.d.ts +15 -0
  90. package/dist/src/routes/index.d.ts.map +1 -0
  91. package/dist/src/routes/index.js +15 -0
  92. package/dist/src/routes/index.js.map +1 -0
  93. package/dist/src/routes/objects.d.ts +8 -0
  94. package/dist/src/routes/objects.d.ts.map +1 -0
  95. package/dist/src/routes/objects.js +37 -0
  96. package/dist/src/routes/objects.js.map +1 -0
  97. package/dist/src/routes/package-transfer.d.ts +23 -0
  98. package/dist/src/routes/package-transfer.d.ts.map +1 -0
  99. package/dist/src/routes/package-transfer.js +152 -0
  100. package/dist/src/routes/package-transfer.js.map +1 -0
  101. package/dist/src/routes/packages.d.ts +2 -1
  102. package/dist/src/routes/packages.d.ts.map +1 -1
  103. package/dist/src/routes/packages.js +18 -109
  104. package/dist/src/routes/packages.js.map +1 -1
  105. package/dist/src/routes/repository.d.ts +2 -1
  106. package/dist/src/routes/repository.d.ts.map +1 -1
  107. package/dist/src/routes/repository.js +19 -54
  108. package/dist/src/routes/repository.js.map +1 -1
  109. package/dist/src/routes/tasks.d.ts +2 -1
  110. package/dist/src/routes/tasks.d.ts.map +1 -1
  111. package/dist/src/routes/tasks.js +22 -46
  112. package/dist/src/routes/tasks.js.map +1 -1
  113. package/dist/src/routes/transfer.d.ts +19 -0
  114. package/dist/src/routes/transfer.d.ts.map +1 -0
  115. package/dist/src/routes/transfer.js +124 -0
  116. package/dist/src/routes/transfer.js.map +1 -0
  117. package/dist/src/routes/workspaces.d.ts +2 -1
  118. package/dist/src/routes/workspaces.d.ts.map +1 -1
  119. package/dist/src/routes/workspaces.js +83 -112
  120. package/dist/src/routes/workspaces.js.map +1 -1
  121. package/dist/src/server.d.ts +24 -3
  122. package/dist/src/server.d.ts.map +1 -1
  123. package/dist/src/server.js +270 -19
  124. package/dist/src/server.js.map +1 -1
  125. package/dist/src/types.d.ts +786 -1223
  126. package/dist/src/types.d.ts.map +1 -1
  127. package/dist/src/types.js +65 -407
  128. package/dist/src/types.js.map +1 -1
  129. package/package.json +28 -16
@@ -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 !== 'application/beast2') {
13
- throw new Error(`Expected Content-Type: application/beast2, got ${contentType}`);
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(c, type, value) {
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': 'application/beast2',
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(c, type, error) {
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': 'application/beast2',
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
  }
@@ -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;AAG1E,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,oBAAoB,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,kDAAkD,WAAW,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,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,WAAW,CACzB,CAAU,EACV,IAAO,EACP,KAAqB;IAErB,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,SAAS,EAAE,KAAK,CAAqC,CAAC,CAAC;IAEnF,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;QACxB,MAAM,EAAE,GAAG;QACX,OAAO,EAAE;YACP,cAAc,EAAE,oBAAoB;SACrC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,CAAU,EACV,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,oBAAoB;SACrC;KACF,CAAC,CAAC;AACL,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
- .argument('<repo>', 'Path to e3 repository')
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
- .action(async (repo, options) => {
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
- repo,
19
- port: parseInt(options.port, 10),
20
- host: options.host,
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://${options.host}:${server.port}`);
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...');
@@ -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,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAC;KAC3C,MAAM,CAAC,mBAAmB,EAAE,WAAW,EAAE,MAAM,CAAC;KAChD,MAAM,CAAC,mBAAmB,EAAE,cAAc,EAAE,WAAW,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAG5B,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;QAChC,IAAI;QACJ,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,OAAO,CAAC,GAAG,CAAC,qCAAqC,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAEhF,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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -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
  */
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CA+DlD"}
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"}
@@ -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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
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"}