@elaraai/e3-api-server 0.0.2-beta.12 → 0.0.2-beta.14

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 (111) hide show
  1. package/README.md +144 -29
  2. package/dist/src/async-operation-state.d.ts +63 -0
  3. package/dist/src/async-operation-state.d.ts.map +1 -0
  4. package/dist/src/async-operation-state.js +193 -0
  5. package/dist/src/async-operation-state.js.map +1 -0
  6. package/dist/src/auth/device.d.ts +26 -0
  7. package/dist/src/auth/device.d.ts.map +1 -0
  8. package/dist/src/auth/device.js +227 -0
  9. package/dist/src/auth/device.js.map +1 -0
  10. package/dist/src/auth/discovery.d.ts +23 -0
  11. package/dist/src/auth/discovery.d.ts.map +1 -0
  12. package/dist/src/auth/discovery.js +40 -0
  13. package/dist/src/auth/discovery.js.map +1 -0
  14. package/dist/src/auth/index.d.ts +56 -0
  15. package/dist/src/auth/index.d.ts.map +1 -0
  16. package/dist/src/auth/index.js +69 -0
  17. package/dist/src/auth/index.js.map +1 -0
  18. package/dist/src/auth/keys.d.ts +55 -0
  19. package/dist/src/auth/keys.d.ts.map +1 -0
  20. package/dist/src/auth/keys.js +78 -0
  21. package/dist/src/auth/keys.js.map +1 -0
  22. package/dist/src/beast2.d.ts +15 -3
  23. package/dist/src/beast2.d.ts.map +1 -1
  24. package/dist/src/beast2.js +30 -4
  25. package/dist/src/beast2.js.map +1 -1
  26. package/dist/src/cli.js +58 -6
  27. package/dist/src/cli.js.map +1 -1
  28. package/dist/src/errors.d.ts.map +1 -1
  29. package/dist/src/errors.js +5 -2
  30. package/dist/src/errors.js.map +1 -1
  31. package/dist/src/execution-state.d.ts +54 -0
  32. package/dist/src/execution-state.d.ts.map +1 -0
  33. package/dist/src/execution-state.js +150 -0
  34. package/dist/src/execution-state.js.map +1 -0
  35. package/dist/src/handlers/dataflow.d.ts +49 -0
  36. package/dist/src/handlers/dataflow.d.ts.map +1 -0
  37. package/dist/src/handlers/dataflow.js +371 -0
  38. package/dist/src/handlers/dataflow.js.map +1 -0
  39. package/dist/src/handlers/datasets.d.ts +23 -0
  40. package/dist/src/handlers/datasets.d.ts.map +1 -0
  41. package/dist/src/handlers/datasets.js +113 -0
  42. package/dist/src/handlers/datasets.js.map +1 -0
  43. package/dist/src/handlers/index.d.ts +12 -0
  44. package/dist/src/handlers/index.d.ts.map +1 -0
  45. package/dist/src/handlers/index.js +12 -0
  46. package/dist/src/handlers/index.js.map +1 -0
  47. package/dist/src/handlers/packages.d.ts +26 -0
  48. package/dist/src/handlers/packages.d.ts.map +1 -0
  49. package/dist/src/handlers/packages.js +101 -0
  50. package/dist/src/handlers/packages.js.map +1 -0
  51. package/dist/src/handlers/repos.d.ts +11 -0
  52. package/dist/src/handlers/repos.d.ts.map +1 -0
  53. package/dist/src/handlers/repos.js +52 -0
  54. package/dist/src/handlers/repos.js.map +1 -0
  55. package/dist/src/handlers/repository.d.ts +35 -0
  56. package/dist/src/handlers/repository.d.ts.map +1 -0
  57. package/dist/src/handlers/repository.js +142 -0
  58. package/dist/src/handlers/repository.js.map +1 -0
  59. package/dist/src/handlers/tasks.d.ts +18 -0
  60. package/dist/src/handlers/tasks.d.ts.map +1 -0
  61. package/dist/src/handlers/tasks.js +134 -0
  62. package/dist/src/handlers/tasks.js.map +1 -0
  63. package/dist/src/handlers/workspaces.d.ts +34 -0
  64. package/dist/src/handlers/workspaces.d.ts.map +1 -0
  65. package/dist/src/handlers/workspaces.js +225 -0
  66. package/dist/src/handlers/workspaces.js.map +1 -0
  67. package/dist/src/index.d.ts +3 -0
  68. package/dist/src/index.d.ts.map +1 -1
  69. package/dist/src/index.js +6 -0
  70. package/dist/src/index.js.map +1 -1
  71. package/dist/src/middleware/auth.d.ts +51 -0
  72. package/dist/src/middleware/auth.d.ts.map +1 -0
  73. package/dist/src/middleware/auth.js +158 -0
  74. package/dist/src/middleware/auth.js.map +1 -0
  75. package/dist/src/routes/datasets.d.ts +2 -1
  76. package/dist/src/routes/datasets.d.ts.map +1 -1
  77. package/dist/src/routes/datasets.js +50 -85
  78. package/dist/src/routes/datasets.js.map +1 -1
  79. package/dist/src/routes/executions.d.ts +2 -1
  80. package/dist/src/routes/executions.d.ts.map +1 -1
  81. package/dist/src/routes/executions.js +60 -286
  82. package/dist/src/routes/executions.js.map +1 -1
  83. package/dist/src/routes/index.d.ts +11 -0
  84. package/dist/src/routes/index.d.ts.map +1 -0
  85. package/dist/src/routes/index.js +11 -0
  86. package/dist/src/routes/index.js.map +1 -0
  87. package/dist/src/routes/packages.d.ts +2 -1
  88. package/dist/src/routes/packages.d.ts.map +1 -1
  89. package/dist/src/routes/packages.js +42 -105
  90. package/dist/src/routes/packages.js.map +1 -1
  91. package/dist/src/routes/repository.d.ts +2 -1
  92. package/dist/src/routes/repository.d.ts.map +1 -1
  93. package/dist/src/routes/repository.js +19 -54
  94. package/dist/src/routes/repository.js.map +1 -1
  95. package/dist/src/routes/tasks.d.ts +2 -1
  96. package/dist/src/routes/tasks.d.ts.map +1 -1
  97. package/dist/src/routes/tasks.js +22 -46
  98. package/dist/src/routes/tasks.js.map +1 -1
  99. package/dist/src/routes/workspaces.d.ts +2 -1
  100. package/dist/src/routes/workspaces.d.ts.map +1 -1
  101. package/dist/src/routes/workspaces.js +45 -116
  102. package/dist/src/routes/workspaces.js.map +1 -1
  103. package/dist/src/server.d.ts +24 -3
  104. package/dist/src/server.d.ts.map +1 -1
  105. package/dist/src/server.js +178 -19
  106. package/dist/src/server.js.map +1 -1
  107. package/dist/src/types.d.ts +486 -1
  108. package/dist/src/types.d.ts.map +1 -1
  109. package/dist/src/types.js +209 -2
  110. package/dist/src/types.js.map +1 -1
  111. package/package.json +15 -3
@@ -3,95 +3,60 @@
3
3
  * Licensed under BSL 1.1. See LICENSE for details.
4
4
  */
5
5
  import { Hono } from 'hono';
6
- import { NullType, ArrayType, StringType, decodeBeast2 } from '@elaraai/east';
7
6
  import { urlPathToTreePath } from '@elaraai/e3-types';
8
- import { workspaceListTree, workspaceGetDatasetHash, workspaceSetDataset, objectRead, } from '@elaraai/e3-core';
9
- import { sendSuccess, sendError } from '../beast2.js';
10
- import { errorToVariant } from '../errors.js';
11
- import { extractWildcardPath } from '../utils.js';
12
- export function createDatasetRoutes(repoPath) {
7
+ import { listDatasets, listDatasetsRecursive, getDataset, setDataset, } from '../handlers/datasets.js';
8
+ export function createDatasetRoutes(storage, getRepoPath) {
13
9
  const app = new Hono();
14
- // GET /list - List field names at root (e3 list <repo> <ws>)
15
- app.get('/list', async (c) => {
16
- try {
17
- const workspace = c.req.param('ws');
18
- if (!workspace) {
19
- return sendError(c, ArrayType(StringType), errorToVariant(new Error('Missing workspace parameter')));
20
- }
21
- const fields = await workspaceListTree(repoPath, workspace, []);
22
- return sendSuccess(c, ArrayType(StringType), fields);
23
- }
24
- catch (err) {
25
- return sendError(c, ArrayType(StringType), errorToVariant(err));
26
- }
10
+ // GET /api/repos/:repo/workspaces/:ws/datasets - List root fields (or recursive list if ?recursive=true)
11
+ app.get('/', async (c) => {
12
+ const repo = c.req.param('repo');
13
+ const repoPath = getRepoPath(repo);
14
+ const ws = c.req.param('ws');
15
+ // Check if this is a recursive list request
16
+ const recursive = c.req.query('recursive');
17
+ if (recursive === 'true') {
18
+ return listDatasetsRecursive(storage, repoPath, ws, []);
19
+ }
20
+ return listDatasets(storage, repoPath, ws, []);
27
21
  });
28
- // GET /list/* - List field names at path (e3 list <repo> <ws.path>)
29
- app.get('/list/*', async (c) => {
30
- try {
31
- const workspace = c.req.param('ws');
32
- if (!workspace) {
33
- return sendError(c, ArrayType(StringType), errorToVariant(new Error('Missing workspace parameter')));
34
- }
35
- const pathStr = extractWildcardPath(c.req.path, /^\/api\/workspaces\/[^/]+\/list\//);
36
- const treePath = urlPathToTreePath(pathStr);
37
- const fields = await workspaceListTree(repoPath, workspace, treePath);
38
- return sendSuccess(c, ArrayType(StringType), fields);
39
- }
40
- catch (err) {
41
- return sendError(c, ArrayType(StringType), errorToVariant(err));
42
- }
22
+ // GET /api/repos/:repo/workspaces/:ws/datasets/* - Get dataset value (or list if ?list=true, or recursive if ?recursive=true)
23
+ app.get('/*', async (c) => {
24
+ const repo = c.req.param('repo');
25
+ const repoPath = getRepoPath(repo);
26
+ const ws = c.req.param('ws');
27
+ // Extract the wildcard path
28
+ const fullPath = c.req.path;
29
+ // Path format: /api/repos/:repo/workspaces/:ws/datasets/*
30
+ // Find the position after /datasets/
31
+ const datasetsPrefix = `/api/repos/${repo}/workspaces/${ws}/datasets/`;
32
+ const pathStr = fullPath.startsWith(datasetsPrefix) ? fullPath.slice(datasetsPrefix.length) : '';
33
+ const treePath = urlPathToTreePath(pathStr);
34
+ // Check if this is a recursive list request
35
+ const recursive = c.req.query('recursive');
36
+ if (recursive === 'true') {
37
+ return listDatasetsRecursive(storage, repoPath, ws, treePath);
38
+ }
39
+ // Check if this is a list request
40
+ const listParam = c.req.query('list');
41
+ if (listParam === 'true') {
42
+ return listDatasets(storage, repoPath, ws, treePath);
43
+ }
44
+ return getDataset(storage, repoPath, ws, treePath);
43
45
  });
44
- // GET /get/* - Get dataset value as raw BEAST2 (e3 get <repo> <ws.path>)
45
- app.get('/get/*', async (c) => {
46
- try {
47
- const workspace = c.req.param('ws');
48
- if (!workspace) {
49
- return sendError(c, NullType, errorToVariant(new Error('Missing workspace parameter')));
50
- }
51
- const pathStr = extractWildcardPath(c.req.path, /^\/api\/workspaces\/[^/]+\/get\//);
52
- const treePath = urlPathToTreePath(pathStr);
53
- if (treePath.length === 0) {
54
- return sendError(c, NullType, errorToVariant(new Error('Path required for get')));
55
- }
56
- const { refType, hash } = await workspaceGetDatasetHash(repoPath, workspace, treePath);
57
- if (refType === 'unassigned') {
58
- return sendError(c, NullType, errorToVariant(new Error('Dataset is unassigned (pending task output)')));
59
- }
60
- if (refType === 'null' || !hash) {
61
- return sendError(c, NullType, errorToVariant(new Error('Dataset is null')));
62
- }
63
- // Return raw BEAST2 bytes directly from object store
64
- const data = await objectRead(repoPath, hash);
65
- return new Response(data, {
66
- status: 200,
67
- headers: { 'Content-Type': 'application/beast2' },
68
- });
69
- }
70
- catch (err) {
71
- return sendError(c, NullType, errorToVariant(err));
72
- }
73
- });
74
- // PUT /set/* - Set dataset value from raw BEAST2 (e3 set <repo> <ws.path>)
75
- app.put('/set/*', async (c) => {
76
- try {
77
- const workspace = c.req.param('ws');
78
- if (!workspace) {
79
- return sendError(c, NullType, errorToVariant(new Error('Missing workspace parameter')));
80
- }
81
- const pathStr = extractWildcardPath(c.req.path, /^\/api\/workspaces\/[^/]+\/set\//);
82
- const treePath = urlPathToTreePath(pathStr);
83
- if (treePath.length === 0) {
84
- return sendError(c, NullType, errorToVariant(new Error('Path required for set')));
85
- }
86
- // Body is raw BEAST2 - decode to get type and value
87
- const buffer = await c.req.arrayBuffer();
88
- const { type, value } = decodeBeast2(new Uint8Array(buffer));
89
- await workspaceSetDataset(repoPath, workspace, treePath, value, type);
90
- return sendSuccess(c, NullType, null);
91
- }
92
- catch (err) {
93
- return sendError(c, NullType, errorToVariant(err));
94
- }
46
+ // PUT /api/repos/:repo/workspaces/:ws/datasets/* - Set dataset value
47
+ app.put('/*', async (c) => {
48
+ const repo = c.req.param('repo');
49
+ const repoPath = getRepoPath(repo);
50
+ const ws = c.req.param('ws');
51
+ // Extract the wildcard path
52
+ const fullPath = c.req.path;
53
+ const datasetsPrefix = `/api/repos/${repo}/workspaces/${ws}/datasets/`;
54
+ const pathStr = fullPath.startsWith(datasetsPrefix) ? fullPath.slice(datasetsPrefix.length) : '';
55
+ const treePath = urlPathToTreePath(pathStr);
56
+ // Body is raw BEAST2
57
+ const buffer = await c.req.arrayBuffer();
58
+ const body = new Uint8Array(buffer);
59
+ return setDataset(storage, repoPath, ws, treePath, body);
95
60
  });
96
61
  return app;
97
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"datasets.js","sourceRoot":"","sources":["../../../src/routes/datasets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"datasets.js","sourceRoot":"","sources":["../../../src/routes/datasets.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,6 @@
3
3
  * Licensed under BSL 1.1. See LICENSE for details.
4
4
  */
5
5
  import { Hono } from 'hono';
6
- export declare function createExecutionRoutes(repoPath: string): Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
6
+ import type { StorageBackend } from '@elaraai/e3-core';
7
+ export declare function createExecutionRoutes(storage: StorageBackend, getRepoPath: (repo: string) => string): Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
7
8
  //# sourceMappingURL=executions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"executions.d.ts","sourceRoot":"","sources":["../../../src/routes/executions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAgM5B,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,8EAgKrD"}
1
+ {"version":3,"file":"executions.d.ts","sourceRoot":"","sources":["../../../src/routes/executions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAYvD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,8EAmFtC"}
@@ -3,300 +3,74 @@
3
3
  * Licensed under BSL 1.1. See LICENSE for details.
4
4
  */
5
5
  import { Hono } from 'hono';
6
- import { NullType, some, none, variant } from '@elaraai/east';
7
- import { dataflowStart, dataflowExecute, dataflowGetGraph, workspaceStatus, workspaceGetTaskHash, workspaceGetTask, workspaceGetDatasetHash, executionListForTask, executionReadLog, inputsHash, acquireWorkspaceLock, } from '@elaraai/e3-core';
8
- import { decodeBody, sendSuccess, sendError } from '../beast2.js';
9
- import { errorToVariant } from '../errors.js';
10
- import { DataflowRequestType, WorkspaceStatusResultType, DataflowGraphType, LogChunkType, DataflowResultType, } from '../types.js';
11
- /**
12
- * Convert core DatasetStatusInfo to API type.
13
- */
14
- function convertDatasetStatus(info) {
15
- let status;
16
- switch (info.status.type) {
17
- case 'unset':
18
- status = variant('unset', null);
19
- break;
20
- case 'stale':
21
- status = variant('stale', null);
22
- break;
23
- case 'up-to-date':
24
- status = variant('up-to-date', null);
25
- break;
26
- }
27
- return {
28
- path: info.path,
29
- status,
30
- hash: info.hash ? some(info.hash) : none,
31
- isTaskOutput: info.isTaskOutput,
32
- producedBy: info.producedBy ? some(info.producedBy) : none,
33
- };
34
- }
35
- /**
36
- * Convert core TaskStatusInfo to API type.
37
- */
38
- function convertTaskStatus(info) {
39
- let status;
40
- switch (info.status.type) {
41
- case 'up-to-date':
42
- status = variant('up-to-date', { cached: info.status.cached });
43
- break;
44
- case 'ready':
45
- status = variant('ready', null);
46
- break;
47
- case 'waiting':
48
- status = variant('waiting', { reason: info.status.reason });
49
- break;
50
- case 'in-progress':
51
- status = variant('in-progress', {
52
- pid: info.status.pid != null ? some(BigInt(info.status.pid)) : none,
53
- startedAt: info.status.startedAt ? some(info.status.startedAt) : none,
54
- });
55
- break;
56
- case 'failed':
57
- status = variant('failed', {
58
- exitCode: BigInt(info.status.exitCode),
59
- completedAt: info.status.completedAt ? some(info.status.completedAt) : none,
60
- });
61
- break;
62
- case 'error':
63
- status = variant('error', {
64
- message: info.status.message,
65
- completedAt: info.status.completedAt ? some(info.status.completedAt) : none,
66
- });
67
- break;
68
- case 'stale-running':
69
- status = variant('stale-running', {
70
- pid: info.status.pid != null ? some(BigInt(info.status.pid)) : none,
71
- startedAt: info.status.startedAt ? some(info.status.startedAt) : none,
72
- });
73
- break;
74
- }
75
- return {
76
- name: info.name,
77
- hash: info.hash,
78
- status,
79
- inputs: info.inputs,
80
- output: info.output,
81
- dependsOn: info.dependsOn,
82
- };
83
- }
84
- /**
85
- * Convert core TaskExecutionResult to API type.
86
- */
87
- function convertTaskExecutionResult(result) {
88
- let state;
89
- switch (result.state) {
90
- case 'success':
91
- state = variant('success', null);
92
- break;
93
- case 'failed':
94
- state = variant('failed', { exitCode: BigInt(result.exitCode ?? -1) });
95
- break;
96
- case 'error':
97
- state = variant('error', { message: result.error ?? 'Unknown error' });
98
- break;
99
- case 'skipped':
100
- state = variant('skipped', null);
101
- break;
102
- }
103
- return {
104
- name: result.name,
105
- cached: result.cached,
106
- state,
107
- duration: result.duration,
108
- };
109
- }
110
- /**
111
- * Convert core DataflowResult to API type.
112
- */
113
- function convertDataflowResult(result) {
114
- return {
115
- success: result.success,
116
- executed: BigInt(result.executed),
117
- cached: BigInt(result.cached),
118
- failed: BigInt(result.failed),
119
- skipped: BigInt(result.skipped),
120
- tasks: result.tasks.map(convertTaskExecutionResult),
121
- duration: result.duration,
122
- };
123
- }
124
- /**
125
- * Convert core WorkspaceStatusResult to API type.
126
- */
127
- function convertWorkspaceStatus(result) {
128
- return {
129
- workspace: result.workspace,
130
- lock: result.lock
131
- ? some({
132
- pid: BigInt(result.lock.pid),
133
- acquiredAt: result.lock.acquiredAt,
134
- bootId: result.lock.bootId ? some(result.lock.bootId) : none,
135
- command: result.lock.command ? some(result.lock.command) : none,
136
- })
137
- : none,
138
- datasets: result.datasets.map(convertDatasetStatus),
139
- tasks: result.tasks.map(convertTaskStatus),
140
- summary: {
141
- datasets: {
142
- total: BigInt(result.summary.datasets.total),
143
- unset: BigInt(result.summary.datasets.unset),
144
- stale: BigInt(result.summary.datasets.stale),
145
- upToDate: BigInt(result.summary.datasets.upToDate),
146
- },
147
- tasks: {
148
- total: BigInt(result.summary.tasks.total),
149
- upToDate: BigInt(result.summary.tasks.upToDate),
150
- ready: BigInt(result.summary.tasks.ready),
151
- waiting: BigInt(result.summary.tasks.waiting),
152
- inProgress: BigInt(result.summary.tasks.inProgress),
153
- failed: BigInt(result.summary.tasks.failed),
154
- error: BigInt(result.summary.tasks.error),
155
- staleRunning: BigInt(result.summary.tasks.staleRunning),
156
- },
157
- },
158
- };
159
- }
160
- export function createExecutionRoutes(repoPath) {
6
+ import { startDataflow, executeDataflow, getDataflowStatus, getDataflowGraph, getTaskLogs, getDataflowExecution, } from '../handlers/dataflow.js';
7
+ import { decodeBody } from '../beast2.js';
8
+ import { DataflowRequestType } from '../types.js';
9
+ export function createExecutionRoutes(storage, getRepoPath) {
161
10
  const app = new Hono();
162
- // POST /api/workspaces/:ws/start - Start dataflow execution (non-blocking)
163
- app.post('/start', async (c) => {
164
- const workspace = c.req.param('ws');
165
- if (!workspace) {
166
- return sendError(c, NullType, errorToVariant(new Error('Missing workspace parameter')));
167
- }
168
- try {
169
- const body = await decodeBody(c, DataflowRequestType);
170
- // Acquire lock first - this will throw WorkspaceLockError if already locked
171
- const lock = await acquireWorkspaceLock(repoPath, workspace);
172
- // Spawn dataflow execution in background
173
- const concurrency = body.concurrency.type === 'some' ? Number(body.concurrency.value) : 4;
174
- const filter = body.filter.type === 'some' ? body.filter.value : undefined;
175
- // Start execution without awaiting - it runs in background
176
- dataflowStart(repoPath, workspace, {
177
- concurrency,
178
- force: body.force,
179
- filter,
180
- lock,
181
- }).catch((err) => {
182
- // Log error but don't throw - execution is in background
183
- console.error(`Dataflow execution error for workspace ${workspace}:`, err);
184
- });
185
- // Return immediately with 202 Accepted
186
- c.status(202);
187
- return sendSuccess(c, NullType, null);
188
- }
189
- catch (err) {
190
- return sendError(c, NullType, errorToVariant(err));
191
- }
11
+ // POST /api/repos/:repo/workspaces/:ws/dataflow - Start dataflow execution (non-blocking)
12
+ app.post('/', async (c) => {
13
+ const repo = c.req.param('repo');
14
+ const repoPath = getRepoPath(repo);
15
+ const ws = c.req.param('ws');
16
+ const body = await decodeBody(c, DataflowRequestType);
17
+ const concurrency = body.concurrency.type === 'some' ? Number(body.concurrency.value) : 4;
18
+ const filter = body.filter.type === 'some' ? body.filter.value : undefined;
19
+ return startDataflow(storage, repoPath, ws, {
20
+ concurrency,
21
+ force: body.force,
22
+ filter,
23
+ });
192
24
  });
193
- // POST /api/workspaces/:ws/execute - Execute dataflow (blocking)
194
- app.post('/execute', async (c) => {
195
- const workspace = c.req.param('ws');
196
- if (!workspace) {
197
- return sendError(c, DataflowResultType, errorToVariant(new Error('Missing workspace parameter')));
198
- }
199
- try {
200
- const body = await decodeBody(c, DataflowRequestType);
201
- const concurrency = body.concurrency.type === 'some' ? Number(body.concurrency.value) : 4;
202
- const filter = body.filter.type === 'some' ? body.filter.value : undefined;
203
- const result = await dataflowExecute(repoPath, workspace, {
204
- concurrency,
205
- force: body.force,
206
- filter,
207
- });
208
- return sendSuccess(c, DataflowResultType, convertDataflowResult(result));
209
- }
210
- catch (err) {
211
- return sendError(c, DataflowResultType, errorToVariant(err));
212
- }
25
+ // GET /api/repos/:repo/workspaces/:ws/dataflow - Get workspace status (for polling)
26
+ app.get('/', async (c) => {
27
+ const repo = c.req.param('repo');
28
+ const repoPath = getRepoPath(repo);
29
+ const ws = c.req.param('ws');
30
+ return getDataflowStatus(storage, repoPath, ws);
213
31
  });
214
- // GET /api/workspaces/:ws/status - Get workspace status (for polling)
215
- app.get('/status', async (c) => {
216
- const workspace = c.req.param('ws');
217
- if (!workspace) {
218
- return sendError(c, WorkspaceStatusResultType, errorToVariant(new Error('Missing workspace parameter')));
219
- }
220
- try {
221
- const result = await workspaceStatus(repoPath, workspace);
222
- return sendSuccess(c, WorkspaceStatusResultType, convertWorkspaceStatus(result));
223
- }
224
- catch (err) {
225
- return sendError(c, WorkspaceStatusResultType, errorToVariant(err));
226
- }
32
+ // POST /api/repos/:repo/workspaces/:ws/dataflow/execute - Execute dataflow (blocking)
33
+ app.post('/execute', async (c) => {
34
+ const repo = c.req.param('repo');
35
+ const repoPath = getRepoPath(repo);
36
+ const ws = c.req.param('ws');
37
+ const body = await decodeBody(c, DataflowRequestType);
38
+ const concurrency = body.concurrency.type === 'some' ? Number(body.concurrency.value) : 4;
39
+ const filter = body.filter.type === 'some' ? body.filter.value : undefined;
40
+ return executeDataflow(storage, repoPath, ws, {
41
+ concurrency,
42
+ force: body.force,
43
+ filter,
44
+ });
227
45
  });
228
- // GET /api/workspaces/:ws/graph - Get dependency graph
46
+ // GET /api/repos/:repo/workspaces/:ws/dataflow/graph - Get dependency graph
229
47
  app.get('/graph', async (c) => {
230
- const workspace = c.req.param('ws');
231
- if (!workspace) {
232
- return sendError(c, DataflowGraphType, errorToVariant(new Error('Missing workspace parameter')));
233
- }
234
- try {
235
- const graph = await dataflowGetGraph(repoPath, workspace);
236
- return sendSuccess(c, DataflowGraphType, {
237
- tasks: graph.tasks.map((t) => ({
238
- name: t.name,
239
- hash: t.hash,
240
- inputs: t.inputs,
241
- output: t.output,
242
- dependsOn: t.dependsOn,
243
- })),
244
- });
245
- }
246
- catch (err) {
247
- return sendError(c, DataflowGraphType, errorToVariant(err));
248
- }
48
+ const repo = c.req.param('repo');
49
+ const repoPath = getRepoPath(repo);
50
+ const ws = c.req.param('ws');
51
+ return getDataflowGraph(storage, repoPath, ws);
249
52
  });
250
- // GET /api/workspaces/:ws/logs/:task - Get task logs
53
+ // GET /api/repos/:repo/workspaces/:ws/dataflow/logs/:task - Get task logs
251
54
  app.get('/logs/:task', async (c) => {
252
- const workspace = c.req.param('ws');
55
+ const repo = c.req.param('repo');
56
+ const repoPath = getRepoPath(repo);
57
+ const ws = c.req.param('ws');
253
58
  const taskName = c.req.param('task');
254
- if (!workspace) {
255
- return sendError(c, LogChunkType, errorToVariant(new Error('Missing workspace parameter')));
256
- }
257
- if (!taskName) {
258
- return sendError(c, LogChunkType, errorToVariant(new Error('Missing task parameter')));
259
- }
260
- try {
261
- // Get query params
262
- const stream = c.req.query('stream') || 'stdout';
263
- const offset = parseInt(c.req.query('offset') || '0', 10);
264
- const limit = parseInt(c.req.query('limit') || '65536', 10);
265
- // Get task hash and current input hashes
266
- const taskHash = await workspaceGetTaskHash(repoPath, workspace, taskName);
267
- const task = await workspaceGetTask(repoPath, workspace, taskName);
268
- // Get current input hashes
269
- const currentInputHashes = [];
270
- for (const inputPath of task.inputs) {
271
- const { refType, hash } = await workspaceGetDatasetHash(repoPath, workspace, inputPath);
272
- if (refType !== 'value' || hash === null) {
273
- return sendError(c, LogChunkType, errorToVariant(new Error('Task inputs not assigned')));
274
- }
275
- currentInputHashes.push(hash);
276
- }
277
- const inHash = inputsHash(currentInputHashes);
278
- // Check if execution exists, fall back to most recent
279
- const executions = await executionListForTask(repoPath, taskHash);
280
- let execInHash = inHash;
281
- if (!executions.includes(inHash) && executions.length > 0) {
282
- execInHash = executions[0];
283
- }
284
- else if (executions.length === 0) {
285
- return sendError(c, LogChunkType, errorToVariant(new Error('No executions found for task')));
286
- }
287
- // Read logs
288
- const chunk = await executionReadLog(repoPath, taskHash, execInHash, stream, { offset, limit });
289
- return sendSuccess(c, LogChunkType, {
290
- data: chunk.data,
291
- offset: BigInt(chunk.offset),
292
- size: BigInt(chunk.size),
293
- totalSize: BigInt(chunk.totalSize),
294
- complete: chunk.complete,
295
- });
296
- }
297
- catch (err) {
298
- return sendError(c, LogChunkType, errorToVariant(err));
299
- }
59
+ // Get query params
60
+ const stream = c.req.query('stream') || 'stdout';
61
+ const offset = parseInt(c.req.query('offset') || '0', 10);
62
+ const limit = parseInt(c.req.query('limit') || '65536', 10);
63
+ return getTaskLogs(storage, repoPath, ws, taskName, stream, offset, limit);
64
+ });
65
+ // GET /api/repos/:repo/workspaces/:ws/dataflow/execution - Get execution state (for polling)
66
+ app.get('/execution', (c) => {
67
+ const repo = c.req.param('repo');
68
+ const repoPath = getRepoPath(repo);
69
+ const ws = c.req.param('ws');
70
+ // Get query params for pagination
71
+ const offset = c.req.query('offset') ? parseInt(c.req.query('offset'), 10) : undefined;
72
+ const limit = c.req.query('limit') ? parseInt(c.req.query('limit'), 10) : undefined;
73
+ return getDataflowExecution(repoPath, ws, { offset, limit });
300
74
  });
301
75
  return app;
302
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"executions.js","sourceRoot":"","sources":["../../../src/routes/executions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executions.js","sourceRoot":"","sources":["../../../src/routes/executions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ export { createRepositoryRoutes } from './repository.js';
6
+ export { createPackageRoutes } from './packages.js';
7
+ export { createWorkspaceRoutes } from './workspaces.js';
8
+ export { createDatasetRoutes } from './datasets.js';
9
+ export { createTaskRoutes } from './tasks.js';
10
+ export { createExecutionRoutes } from './executions.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ export { createRepositoryRoutes } from './repository.js';
6
+ export { createPackageRoutes } from './packages.js';
7
+ export { createWorkspaceRoutes } from './workspaces.js';
8
+ export { createDatasetRoutes } from './datasets.js';
9
+ export { createTaskRoutes } from './tasks.js';
10
+ export { createExecutionRoutes } from './executions.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC"}