@elaraai/e3-api-server 1.0.79 → 1.0.80

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/README.md +83 -19
  2. package/dist/src/beast2.js +1 -1
  3. package/dist/src/beast2.js.map +1 -1
  4. package/dist/src/cli.js +13 -0
  5. package/dist/src/cli.js.map +1 -1
  6. package/dist/src/errors.d.ts.map +1 -1
  7. package/dist/src/errors.js +8 -1
  8. package/dist/src/errors.js.map +1 -1
  9. package/dist/src/handlers/dataflow.d.ts +58 -11
  10. package/dist/src/handlers/dataflow.d.ts.map +1 -1
  11. package/dist/src/handlers/dataflow.js +120 -48
  12. package/dist/src/handlers/dataflow.js.map +1 -1
  13. package/dist/src/handlers/dataflow.spec.d.ts +6 -0
  14. package/dist/src/handlers/dataflow.spec.d.ts.map +1 -0
  15. package/dist/src/handlers/dataflow.spec.js +106 -0
  16. package/dist/src/handlers/dataflow.spec.js.map +1 -0
  17. package/dist/src/handlers/datasets.d.ts +60 -34
  18. package/dist/src/handlers/datasets.d.ts.map +1 -1
  19. package/dist/src/handlers/datasets.js +452 -306
  20. package/dist/src/handlers/datasets.js.map +1 -1
  21. package/dist/src/handlers/datasets.spec.js +338 -119
  22. package/dist/src/handlers/datasets.spec.js.map +1 -1
  23. package/dist/src/handlers/functions.d.ts.map +1 -1
  24. package/dist/src/handlers/functions.js +10 -8
  25. package/dist/src/handlers/functions.js.map +1 -1
  26. package/dist/src/handlers/functions.spec.js +2 -2
  27. package/dist/src/handlers/functions.spec.js.map +1 -1
  28. package/dist/src/handlers/index.d.ts +2 -2
  29. package/dist/src/handlers/index.d.ts.map +1 -1
  30. package/dist/src/handlers/index.js +2 -2
  31. package/dist/src/handlers/index.js.map +1 -1
  32. package/dist/src/handlers/records.d.ts.map +1 -1
  33. package/dist/src/handlers/records.js +15 -12
  34. package/dist/src/handlers/records.js.map +1 -1
  35. package/dist/src/handlers/records.spec.js +9 -5
  36. package/dist/src/handlers/records.spec.js.map +1 -1
  37. package/dist/src/handlers/repository.d.ts +59 -10
  38. package/dist/src/handlers/repository.d.ts.map +1 -1
  39. package/dist/src/handlers/repository.js +147 -40
  40. package/dist/src/handlers/repository.js.map +1 -1
  41. package/dist/src/handlers/tasks.d.ts +2 -1
  42. package/dist/src/handlers/tasks.d.ts.map +1 -1
  43. package/dist/src/handlers/tasks.js +31 -8
  44. package/dist/src/handlers/tasks.js.map +1 -1
  45. package/dist/src/handlers/tasks.spec.d.ts +6 -0
  46. package/dist/src/handlers/tasks.spec.d.ts.map +1 -0
  47. package/dist/src/handlers/tasks.spec.js +64 -0
  48. package/dist/src/handlers/tasks.spec.js.map +1 -0
  49. package/dist/src/handlers/workspaces.d.ts +44 -6
  50. package/dist/src/handlers/workspaces.d.ts.map +1 -1
  51. package/dist/src/handlers/workspaces.js +74 -40
  52. package/dist/src/handlers/workspaces.js.map +1 -1
  53. package/dist/src/handlers/workspaces.spec.d.ts +6 -0
  54. package/dist/src/handlers/workspaces.spec.d.ts.map +1 -0
  55. package/dist/src/handlers/workspaces.spec.js +164 -0
  56. package/dist/src/handlers/workspaces.spec.js.map +1 -0
  57. package/dist/src/index.d.ts +3 -0
  58. package/dist/src/index.d.ts.map +1 -1
  59. package/dist/src/index.js +7 -0
  60. package/dist/src/index.js.map +1 -1
  61. package/dist/src/local-dataflow.d.ts +14 -0
  62. package/dist/src/local-dataflow.d.ts.map +1 -0
  63. package/dist/src/local-dataflow.js +41 -0
  64. package/dist/src/local-dataflow.js.map +1 -0
  65. package/dist/src/middleware/repository.d.ts +39 -0
  66. package/dist/src/middleware/repository.d.ts.map +1 -0
  67. package/dist/src/middleware/repository.js +77 -0
  68. package/dist/src/middleware/repository.js.map +1 -0
  69. package/dist/src/routes/data.d.ts +2 -2
  70. package/dist/src/routes/data.d.ts.map +1 -1
  71. package/dist/src/routes/data.js +22 -45
  72. package/dist/src/routes/data.js.map +1 -1
  73. package/dist/src/routes/datasets.d.ts +0 -3
  74. package/dist/src/routes/datasets.d.ts.map +1 -1
  75. package/dist/src/routes/datasets.js +40 -8
  76. package/dist/src/routes/datasets.js.map +1 -1
  77. package/dist/src/routes/executions.d.ts +37 -2
  78. package/dist/src/routes/executions.d.ts.map +1 -1
  79. package/dist/src/routes/executions.js +21 -12
  80. package/dist/src/routes/executions.js.map +1 -1
  81. package/dist/src/routes/index.d.ts +2 -1
  82. package/dist/src/routes/index.d.ts.map +1 -1
  83. package/dist/src/routes/index.js +1 -0
  84. package/dist/src/routes/index.js.map +1 -1
  85. package/dist/src/routes/objects.d.ts +16 -2
  86. package/dist/src/routes/objects.d.ts.map +1 -1
  87. package/dist/src/routes/objects.js +34 -3
  88. package/dist/src/routes/objects.js.map +1 -1
  89. package/dist/src/routes/repositories.d.ts +26 -0
  90. package/dist/src/routes/repositories.d.ts.map +1 -0
  91. package/dist/src/routes/repositories.js +58 -0
  92. package/dist/src/routes/repositories.js.map +1 -0
  93. package/dist/src/routes/repositories.spec.d.ts +6 -0
  94. package/dist/src/routes/repositories.spec.d.ts.map +1 -0
  95. package/dist/src/routes/repositories.spec.js +77 -0
  96. package/dist/src/routes/repositories.spec.js.map +1 -0
  97. package/dist/src/routes/repository.d.ts +12 -2
  98. package/dist/src/routes/repository.d.ts.map +1 -1
  99. package/dist/src/routes/repository.js +24 -9
  100. package/dist/src/routes/repository.js.map +1 -1
  101. package/dist/src/routes/transfer.d.ts +11 -9
  102. package/dist/src/routes/transfer.d.ts.map +1 -1
  103. package/dist/src/routes/transfer.js +90 -115
  104. package/dist/src/routes/transfer.js.map +1 -1
  105. package/dist/src/routes/workspaces.d.ts +14 -1
  106. package/dist/src/routes/workspaces.d.ts.map +1 -1
  107. package/dist/src/routes/workspaces.js +57 -46
  108. package/dist/src/routes/workspaces.js.map +1 -1
  109. package/dist/src/server.d.ts +18 -6
  110. package/dist/src/server.d.ts.map +1 -1
  111. package/dist/src/server.js +55 -182
  112. package/dist/src/server.js.map +1 -1
  113. package/dist/src/server.spec.d.ts +6 -0
  114. package/dist/src/server.spec.d.ts.map +1 -0
  115. package/dist/src/server.spec.js +59 -0
  116. package/dist/src/server.spec.js.map +1 -0
  117. package/dist/src/types.d.ts +200 -16
  118. package/dist/src/types.d.ts.map +1 -1
  119. package/dist/src/types.js +5 -2
  120. package/dist/src/types.js.map +1 -1
  121. package/package.json +5 -5
  122. package/dist/src/async-operation-state.d.ts +0 -37
  123. package/dist/src/async-operation-state.d.ts.map +0 -1
  124. package/dist/src/async-operation-state.js +0 -118
  125. package/dist/src/async-operation-state.js.map +0 -1
  126. package/dist/src/orchestrator-manager.d.ts +0 -45
  127. package/dist/src/orchestrator-manager.d.ts.map +0 -1
  128. package/dist/src/orchestrator-manager.js +0 -150
  129. package/dist/src/orchestrator-manager.js.map +0 -1
@@ -3,20 +3,30 @@
3
3
  * Licensed under BSL 1.1. See LICENSE for details.
4
4
  */
5
5
  import { Hono } from 'hono';
6
- import { mkdir, stat, unlink } from 'node:fs/promises';
7
6
  import { randomUUID } from 'node:crypto';
8
7
  import { variant } from '@elaraai/east';
9
- import { transferPartCount, urlPathToTreePath } from '@elaraai/e3-types';
10
- import { DatasetTypeMismatchError, datasetAdoptFile, datasetAdoptObject, transferStagingDir, transferStagingPath, } from '@elaraai/e3-core';
8
+ import { E3_RELEASE, TRANSFER_PROTOCOL_VERSION, transferPartCount, urlPathToTreePath } from '@elaraai/e3-types';
9
+ import { datasetAdoptObject, deliveryKnown, } from '@elaraai/e3-core';
11
10
  import { decodeBody, sendSuccess, sendError } from '../beast2.js';
11
+ import { errorToVariant } from '../errors.js';
12
12
  import { TransferUploadRequestType, TransferUploadResponseType, TransferPartResponseType, TransferDoneResponseType, } from '../types.js';
13
13
  const DEFAULT_COMMIT_WAIT_MS = 5_000;
14
- /** How long a finished commit's answer stays pollable. */
15
- const COMMIT_RESULT_TTL_MS = 10 * 60 * 1000;
16
- /** The transfer protocol version a request speaks: `?protocol=N`, else 1. */
17
- function requestProtocol(c) {
18
- const version = Number(c.req.query('protocol'));
19
- return Number.isInteger(version) && version >= 1 ? version : 1;
14
+ /**
15
+ * Why a request does not speak this server's transfer protocol, or `null`
16
+ * when it does. A client names its version with `?protocol=N`, and one that
17
+ * names none was built before there was a version to name. It names its
18
+ * release beside it (`&release=`), which decides nothing: a refusal names it
19
+ * beside this server's.
20
+ */
21
+ function protocolProblem(c) {
22
+ const named = c.req.query('protocol');
23
+ if (named === String(TRANSFER_PROTOCOL_VERSION))
24
+ return null;
25
+ const release = c.req.query('release');
26
+ const newer = named !== undefined && Number(named) > TRANSFER_PROTOCOL_VERSION;
27
+ return `this server, e3 ${E3_RELEASE}, speaks transfer protocol ${TRANSFER_PROTOCOL_VERSION}, and the request, `
28
+ + `${release === undefined ? 'which names no release' : `from e3 ${release}`}, ${named === undefined ? 'names no protocol' : `speaks ${named}`}: `
29
+ + (newer ? 'a newer e3 sent it — upgrade the server' : 'an older e3 sent it — upgrade it');
20
30
  }
21
31
  /** A backend's URL as the client can use it: a relative one resolves against the request's origin. */
22
32
  function resolveUrl(c, url) {
@@ -37,10 +47,23 @@ async function within(promise, ms) {
37
47
  clearTimeout(timer);
38
48
  }
39
49
  }
40
- function sendOutcome(outcome) {
41
- return outcome.type === 'answer'
42
- ? sendSuccess(TransferDoneResponseType, outcome.value)
43
- : sendError(TransferDoneResponseType, outcome.error);
50
+ /** A commit's status as the API answers it: a type the dataset does not
51
+ * declare is its `dataset_type_mismatch` error, as an inline write's is. */
52
+ function sendCommitStatus(transfer, status) {
53
+ switch (status.type) {
54
+ case 'processing':
55
+ return sendSuccess(TransferDoneResponseType, variant('processing', null));
56
+ case 'completed':
57
+ return sendSuccess(TransferDoneResponseType, variant('completed', null));
58
+ case 'failed':
59
+ return sendSuccess(TransferDoneResponseType, variant('error', { message: status.value.message }));
60
+ case 'type_mismatch':
61
+ return sendError(TransferDoneResponseType, variant('dataset_type_mismatch', {
62
+ workspace: transfer.workspace,
63
+ path: status.value.path,
64
+ message: status.value.message,
65
+ }));
66
+ }
44
67
  }
45
68
  /**
46
69
  * Create dataset transfer routes.
@@ -52,17 +75,19 @@ function sendOutcome(outcome) {
52
75
  * generic data endpoints in `data.ts`.
53
76
  *
54
77
  * @remarks
55
- * A protocol-2 client (`?protocol=2` on the init and the commit) is sent its
56
- * bytes' plan as parts, and its commit runs in the background: the request
57
- * waits up to `commitWaitMs` for it and otherwise answers `processing`, which
58
- * the client polls — so verifying a delivery of many gigabytes never holds one
59
- * request open for as long as its SHA-256 takes. A protocol-1 client gets the
60
- * single upload URL and a commit that answers only when it is done.
78
+ * The init and the commit name the protocol version they speak
79
+ * (`?protocol=N`) and the client's release (`&release=`), and one of another
80
+ * version, or none, is refused, naming both releases and the fix. A client is
81
+ * sent its bytes' plan as parts. The upload store commits the upload, where it
82
+ * runs its commits: the request waits up to `commitWaitMs` for it and
83
+ * otherwise answers `processing`, which the client polls from the store,
84
+ * whichever instance answers — so verifying a delivery of many gigabytes never
85
+ * holds one request open for as long as its SHA-256 takes.
61
86
  */
62
87
  export function createTransferRoutes(storage, getRepoPath, transferBackend, options = {}) {
63
88
  const api = new Hono();
64
89
  const commitWaitMs = options.commitWaitMs ?? DEFAULT_COMMIT_WAIT_MS;
65
- const commits = new Map();
90
+ const uploads = transferBackend.datasetUpload;
66
91
  /**
67
92
  * Extract dataset path from the request URL wildcard.
68
93
  * The route is mounted at /api/repos/:repo/workspaces/:ws/datasets
@@ -92,7 +117,7 @@ export function createTransferRoutes(storage, getRepoPath, transferBackend, opti
92
117
  }
93
118
  /** The upload `id`, if this request addresses it. */
94
119
  async function uploadAt(c, id, suffix) {
95
- const transfer = await transferBackend.datasetUpload.get(id);
120
+ const transfer = await uploads.get(id);
96
121
  return transfer && addresses(c, transfer, suffix) ? transfer : null;
97
122
  }
98
123
  // =========================================================================
@@ -132,40 +157,43 @@ export function createTransferRoutes(storage, getRepoPath, transferBackend, opti
132
157
  await next();
133
158
  });
134
159
  async function handleInit(c) {
160
+ const problem = protocolProblem(c);
161
+ if (problem !== null) {
162
+ return sendError(TransferUploadResponseType, variant('internal', { message: problem }));
163
+ }
135
164
  const repo = c.req.param('repo');
136
165
  const ws = c.req.param('ws');
137
166
  const repoPath = getRepoPath(repo);
138
167
  const pathStr = extractDatasetPath(c, '/upload');
139
168
  const { hash, size } = await decodeBody(c, TransferUploadRequestType);
140
- // Dedup — the bytes are already an object, so no upload is needed. The
141
- // object is not necessarily THIS dataset's type though (it may have been
142
- // stored for another one), so the pairing is checked here: it is the only
143
- // door that skips the commit.
144
- if (await storage.objects.exists(repoPath, hash)) {
169
+ // Dedup — the store knows these bytes, as the manifest they were split
170
+ // into or as an object, so no upload is needed. It may have stored them
171
+ // for another dataset, of another type, so the pairing is checked here: it
172
+ // is the only door that skips the commit.
173
+ if (await deliveryKnown(storage, repoPath, hash)) {
145
174
  const treePath = urlPathToTreePath(pathStr);
146
175
  await datasetAdoptObject(storage, repoPath, ws, treePath, hash);
147
176
  return sendSuccess(TransferUploadResponseType, variant('completed', null));
148
177
  }
149
- // Create transfer record in backend
178
+ // The upload's record, and its plan as parts, which the store makes ready
179
+ // to stage
150
180
  const transferId = randomUUID();
151
181
  const transfer = { repo, workspace: ws, path: pathStr, hash, size };
152
- await transferBackend.datasetUpload.create(transferId, transfer);
153
- // Create the staging slot under the repo, so the commit's adopt is a
154
- // same-device link or rename rather than a whole-file copy.
155
- await mkdir(transferStagingDir(repoPath), { recursive: true });
156
- if (requestProtocol(c) >= 2) {
157
- const partBytes = await transferBackend.datasetUpload.createParts(transferId, transfer);
158
- return sendSuccess(TransferUploadResponseType, variant('upload_parts', { id: transferId, partBytes }));
159
- }
160
- const uploadUrl = await transferBackend.datasetUpload.getUploadUrl(transferId, repo, hash);
161
- return sendSuccess(TransferUploadResponseType, variant('upload', { id: transferId, uploadUrl: resolveUrl(c, uploadUrl) }));
182
+ await uploads.create(transferId, transfer);
183
+ const partBytes = await uploads.createParts(transferId, transfer);
184
+ return sendSuccess(TransferUploadResponseType, variant('upload_parts', { id: transferId, partBytes }));
162
185
  }
163
186
  async function handlePart(c, id, part, suffix) {
164
187
  const transfer = await uploadAt(c, id, suffix);
165
188
  if (!transfer) {
166
189
  return sendError(TransferPartResponseType, variant('internal', { message: 'transfer not found' }));
167
190
  }
168
- const partBytes = await transferBackend.datasetUpload.getPartBytes(id);
191
+ // A part sent once the commit is under way could rewrite the bytes it
192
+ // verifies.
193
+ if ((await uploads.getCommitStatus(id)) !== null) {
194
+ return sendError(TransferPartResponseType, variant('internal', { message: 'the upload is committed: it takes no more parts' }));
195
+ }
196
+ const partBytes = await uploads.getPartBytes(id);
169
197
  if (partBytes === null) {
170
198
  return sendError(TransferPartResponseType, variant('internal', { message: 'transfer was not planned as parts' }));
171
199
  }
@@ -175,98 +203,45 @@ export function createTransferRoutes(storage, getRepoPath, transferBackend, opti
175
203
  message: `no part ${part}: the upload has ${count} part${count === 1 ? '' : 's'}`,
176
204
  }));
177
205
  }
178
- const target = await transferBackend.datasetUpload.getPartUpload(id, transfer, part);
206
+ const target = await uploads.getPartUpload(id, transfer, part);
179
207
  return sendSuccess(TransferPartResponseType, {
180
208
  url: resolveUrl(c, target.url),
181
209
  headers: new Map(Object.entries(target.headers)),
182
210
  });
183
211
  }
184
212
  async function handleCommit(c, id, suffix) {
185
- let commit = commits.get(id);
186
- if (!commit) {
187
- const transfer = await uploadAt(c, id, suffix);
188
- if (!transfer) {
189
- return sendError(TransferDoneResponseType, variant('internal', { message: 'transfer not found' }));
190
- }
191
- // A retried commit may have started it while this one looked it up.
192
- commit = commits.get(id) ?? startCommit(id, transfer);
213
+ const problem = protocolProblem(c);
214
+ if (problem !== null) {
215
+ return sendError(TransferDoneResponseType, variant('internal', { message: problem }));
193
216
  }
194
- if (!addresses(c, commit.transfer, suffix)) {
217
+ const transfer = await uploadAt(c, id, suffix);
218
+ if (!transfer) {
195
219
  return sendError(TransferDoneResponseType, variant('internal', { message: 'transfer not found' }));
196
220
  }
197
- const outcome = requestProtocol(c) >= 2
198
- ? commit.outcome ?? await within(commit.settled, commitWaitMs)
199
- : await commit.settled;
200
- return outcome ? sendOutcome(outcome) : sendSuccess(TransferDoneResponseType, variant('processing', null));
201
- }
202
- async function handlePoll(c, id, suffix) {
203
- const commit = commits.get(id);
204
- if (commit && addresses(c, commit.transfer, suffix)) {
205
- return commit.outcome
206
- ? sendOutcome(commit.outcome)
207
- : sendSuccess(TransferDoneResponseType, variant('processing', null));
208
- }
209
- const transfer = await uploadAt(c, id, suffix);
210
- return sendError(TransferDoneResponseType, variant('internal', {
211
- message: transfer ? 'transfer not committed' : 'transfer not found',
212
- }));
213
- }
214
- function startCommit(id, transfer) {
215
- const settled = verifyAndAdopt(id, transfer).then((outcome) => {
216
- commit.outcome = outcome;
217
- // The answer stays pollable for a while — a client whose response was
218
- // lost asks again — and then goes, as the upload record already has.
219
- setTimeout(() => commits.delete(id), COMMIT_RESULT_TTL_MS).unref();
220
- return outcome;
221
- });
222
- const commit = { transfer, outcome: null, settled };
223
- commits.set(id, commit);
224
- return commit;
225
- }
226
- /**
227
- * Verify a staged upload and point its dataset at it; never rejects.
228
- */
229
- async function verifyAndAdopt(id, transfer) {
230
- // Nothing may escape: a commit answering `processing` is awaited by no one.
231
- let stagingPath = null;
221
+ // A commit asked for again, as a client whose answer was lost asks, is
222
+ // answered as the first was: at once, when it has finished.
223
+ let status;
232
224
  try {
233
- const repoPath = getRepoPath(transfer.repo);
234
- stagingPath = transferStagingPath(repoPath, id);
235
- // The staged file is never read whole: its size comes from `stat`, its
236
- // digest from a streamed hash, its declared type and paging index from
237
- // two ranged reads, and it becomes an object by link or rename. A
238
- // multi-gigabyte delivery therefore commits for the cost of its SHA-256.
239
- const stats = await stat(stagingPath);
240
- if (BigInt(stats.size) !== transfer.size) {
241
- return {
242
- type: 'answer',
243
- value: variant('error', { message: `size mismatch: expected ${transfer.size}, got ${stats.size}` }),
244
- };
225
+ status = await uploads.getCommitStatus(id);
226
+ if (status === null || status.type === 'processing') {
227
+ status = await within(uploads.commit(id, transfer), commitWaitMs);
245
228
  }
246
- const treePath = urlPathToTreePath(transfer.path);
247
- await datasetAdoptFile(storage, repoPath, transfer.workspace, treePath, stagingPath, {
248
- expectHash: transfer.hash,
249
- });
250
- return { type: 'answer', value: variant('completed', null) };
251
229
  }
252
230
  catch (err) {
253
- if (err instanceof DatasetTypeMismatchError) {
254
- return {
255
- type: 'refused',
256
- error: variant('dataset_type_mismatch', {
257
- workspace: transfer.workspace,
258
- path: err.path,
259
- message: err.message,
260
- }),
261
- };
262
- }
263
- return { type: 'answer', value: variant('error', { message: err instanceof Error ? err.message : String(err) }) };
231
+ return sendError(TransferDoneResponseType, errorToVariant(err));
232
+ }
233
+ return sendCommitStatus(transfer, status ?? variant('processing', null));
234
+ }
235
+ async function handlePoll(c, id, suffix) {
236
+ const transfer = await uploadAt(c, id, suffix);
237
+ if (!transfer) {
238
+ return sendError(TransferDoneResponseType, variant('internal', { message: 'transfer not found' }));
264
239
  }
265
- finally {
266
- if (stagingPath !== null)
267
- await unlink(stagingPath).catch(() => { });
268
- await transferBackend.datasetUpload.delete(id).catch(() => { });
240
+ const status = await uploads.getCommitStatus(id);
241
+ if (status === null) {
242
+ return sendError(TransferDoneResponseType, variant('internal', { message: 'transfer not committed' }));
269
243
  }
244
+ return sendCommitStatus(transfer, status);
270
245
  }
271
246
  return { api };
272
247
  }
@@ -1 +1 @@
1
- {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../../src/routes/transfer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../../src/routes/transfer.ts"],"names":[],"mappings":"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"}
@@ -4,5 +4,18 @@
4
4
  */
5
5
  import { Hono } from 'hono';
6
6
  import type { StorageBackend, TransferBackend } from '@elaraai/e3-core';
7
- export declare function createWorkspaceRoutes(storage: StorageBackend, getRepoPath: (repo: string) => string, transferBackend?: TransferBackend): Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
7
+ import type { GetRunner } from './functions.js';
8
+ /**
9
+ * Workspace routes, mounted at `/api/repos/:repo/workspaces`.
10
+ *
11
+ * @param storage - Storage backend
12
+ * @param getRepoPath - The repository identifier for a repo name
13
+ * @param transferBackend - Files and dispatches the jobs a deploy and an
14
+ * export run as, which outlast a request. A deploy job runs its migrations
15
+ * and index builds on the runner the backend was given.
16
+ * @param getRunner - The runner a repository's tasks run on, which the status
17
+ * asks whether an execution recorded running can still finish
18
+ * @returns The routes
19
+ */
20
+ export declare function createWorkspaceRoutes(storage: StorageBackend, getRepoPath: (repo: string) => string, transferBackend: TransferBackend, getRunner: GetRunner): Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
8
21
  //# sourceMappingURL=workspaces.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../../src/routes/workspaces.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAexE,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EACrC,eAAe,CAAC,EAAE,eAAe,8EAsGlC"}
1
+ {"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../../src/routes/workspaces.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAcxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EACrC,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,SAAS,8EAqGrB"}
@@ -7,10 +7,22 @@ import { randomUUID } from 'node:crypto';
7
7
  import { variant, some } from '@elaraai/east';
8
8
  import { workspaceGetState } from '@elaraai/e3-core';
9
9
  import { PackageJobResponseType } from '@elaraai/e3-types';
10
- import { listWorkspaces, createWorkspace, getWorkspace, getWorkspaceStatus, deleteWorkspace, deployWorkspace, exportWorkspace, } from '../handlers/workspaces.js';
10
+ import { listWorkspaces, createWorkspace, getWorkspace, getWorkspaceStatus, deleteWorkspace, startWorkspaceDeploy, getWorkspaceDeployStatus, } from '../handlers/workspaces.js';
11
11
  import { decodeBody, sendSuccess, sendError } from '../beast2.js';
12
12
  import { WorkspaceCreateRequestType, WorkspaceDeployRequestType, WorkspaceExportRequestType } from '../types.js';
13
- export function createWorkspaceRoutes(storage, getRepoPath, transferBackend) {
13
+ /**
14
+ * Workspace routes, mounted at `/api/repos/:repo/workspaces`.
15
+ *
16
+ * @param storage - Storage backend
17
+ * @param getRepoPath - The repository identifier for a repo name
18
+ * @param transferBackend - Files and dispatches the jobs a deploy and an
19
+ * export run as, which outlast a request. A deploy job runs its migrations
20
+ * and index builds on the runner the backend was given.
21
+ * @param getRunner - The runner a repository's tasks run on, which the status
22
+ * asks whether an execution recorded running can still finish
23
+ * @returns The routes
24
+ */
25
+ export function createWorkspaceRoutes(storage, getRepoPath, transferBackend, getRunner) {
14
26
  const app = new Hono();
15
27
  // GET /api/repos/:repo/workspaces - List all workspaces
16
28
  app.get('/', async (c) => {
@@ -37,7 +49,7 @@ export function createWorkspaceRoutes(storage, getRepoPath, transferBackend) {
37
49
  const repo = c.req.param('repo');
38
50
  const repoPath = getRepoPath(repo);
39
51
  const ws = c.req.param('ws');
40
- return getWorkspaceStatus(storage, repoPath, ws);
52
+ return getWorkspaceStatus(storage, getRunner(repoPath), repoPath, ws);
41
53
  });
42
54
  // DELETE /api/repos/:repo/workspaces/:ws - Remove a workspace
43
55
  app.delete('/:ws', async (c) => {
@@ -46,58 +58,57 @@ export function createWorkspaceRoutes(storage, getRepoPath, transferBackend) {
46
58
  const ws = c.req.param('ws');
47
59
  return deleteWorkspace(storage, repoPath, ws);
48
60
  });
49
- // POST /api/repos/:repo/workspaces/:ws/deploy - Deploy a package to a workspace
61
+ // POST /api/repos/:repo/workspaces/:ws/deploy - Start a deploy job
50
62
  app.post('/:ws/deploy', async (c) => {
51
63
  const repo = c.req.param('repo');
52
64
  const repoPath = getRepoPath(repo);
53
65
  const ws = c.req.param('ws');
54
66
  const body = await decodeBody(c, WorkspaceDeployRequestType);
55
- return deployWorkspace(storage, repoPath, ws, body.packageRef);
67
+ return startWorkspaceDeploy(storage, repoPath, repo, ws, body, transferBackend.workspaceDeploy);
56
68
  });
57
- // POST /api/repos/:repo/workspaces/:ws/export - Trigger async workspace export
58
- if (transferBackend) {
59
- app.post('/:ws/export', async (c) => {
60
- const repo = c.req.param('repo');
61
- const repoPath = getRepoPath(repo);
62
- const ws = c.req.param('ws');
63
- // Determine name and version from request body or deployed package
64
- let requestName;
65
- let requestVersion;
66
- try {
67
- const body = await decodeBody(c, WorkspaceExportRequestType);
68
- if (body.name?.type === 'some')
69
- requestName = body.name.value;
70
- if (body.version?.type === 'some')
71
- requestVersion = body.version.value;
72
- }
73
- catch {
74
- // No body or invalid — use defaults
75
- }
76
- const state = await workspaceGetState(storage, repoPath, ws);
77
- if (!state) {
78
- return sendError(PackageJobResponseType, variant('internal', { message: 'workspace not found or not deployed' }));
79
- }
80
- const exportName = requestName ?? state.packageName;
81
- const exportVersion = requestVersion ?? `${state.packageVersion}-${Date.now().toString(36)}`;
82
- const id = randomUUID();
83
- await transferBackend.packageExport.create(id, {
84
- repo,
85
- name: exportName,
86
- version: exportVersion,
87
- workspace: some(ws),
88
- status: variant('processing', variant('pending', null)),
89
- createdAt: new Date(),
90
- });
91
- await transferBackend.packageExport.execute(id, repo);
92
- return sendSuccess(PackageJobResponseType, { id });
93
- });
94
- }
95
- // GET /api/repos/:repo/workspaces/:ws/export - Export workspace as a package zip
96
- app.get('/:ws/export', async (c) => {
69
+ // GET /api/repos/:repo/workspaces/:ws/deploy/:id - Poll a deploy job
70
+ app.get('/:ws/deploy/:id', (c) => {
71
+ const repo = c.req.param('repo');
72
+ const ws = c.req.param('ws');
73
+ const id = c.req.param('id');
74
+ return getWorkspaceDeployStatus(transferBackend.workspaceDeploy, repo, ws, id);
75
+ });
76
+ // POST /api/repos/:repo/workspaces/:ws/export - Start an export job, polled
77
+ // at /api/repos/:repo/export/:id
78
+ app.post('/:ws/export', async (c) => {
97
79
  const repo = c.req.param('repo');
98
80
  const repoPath = getRepoPath(repo);
99
81
  const ws = c.req.param('ws');
100
- return exportWorkspace(storage, repoPath, ws);
82
+ // Determine name and version from request body or deployed package
83
+ let requestName;
84
+ let requestVersion;
85
+ try {
86
+ const body = await decodeBody(c, WorkspaceExportRequestType);
87
+ if (body.name?.type === 'some')
88
+ requestName = body.name.value;
89
+ if (body.version?.type === 'some')
90
+ requestVersion = body.version.value;
91
+ }
92
+ catch {
93
+ // No body or invalid — use defaults
94
+ }
95
+ const state = await workspaceGetState(storage, repoPath, ws);
96
+ if (!state) {
97
+ return sendError(PackageJobResponseType, variant('internal', { message: 'workspace not found or not deployed' }));
98
+ }
99
+ const exportName = requestName ?? state.packageName;
100
+ const exportVersion = requestVersion ?? `${state.packageVersion}-${Date.now().toString(36)}`;
101
+ const id = randomUUID();
102
+ await transferBackend.packageExport.create(id, {
103
+ repo,
104
+ name: exportName,
105
+ version: exportVersion,
106
+ workspace: some(ws),
107
+ status: variant('processing', variant('pending', null)),
108
+ createdAt: new Date(),
109
+ });
110
+ await transferBackend.packageExport.execute(id, repo);
111
+ return sendSuccess(PackageJobResponseType, { id });
101
112
  });
102
113
  return app;
103
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../../../src/routes/workspaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../../../src/routes/workspaces.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@
3
3
  * Licensed under BSL 1.1. See LICENSE for details.
4
4
  */
5
5
  import { type ServerType } from '@hono/node-server';
6
+ import { Budget } from '@elaraai/e3-core';
7
+ import type { BudgetSettings } from '@elaraai/e3-core';
6
8
  import { type AuthConfig } from './middleware/auth.js';
7
9
  import { type OidcConfig } from './auth/index.js';
8
10
  export type { AuthConfig } from './middleware/auth.js';
@@ -32,15 +34,22 @@ export interface ServerConfig {
32
34
  /** Byte budget clamping each dataset page's share of the source blob
33
35
  * (default: 4 MiB). Lower it for deployments with tight response limits. */
34
36
  pageByteBudget?: number;
35
- /** Size of the parts a dataset upload is sent in, for a client that speaks
36
- * transfer protocol 2 (default: 64 MiB). An upload no larger is one part;
37
- * a smaller size suits a proxy that caps request bodies. */
37
+ /** Size of the parts a dataset upload is sent in (default: 64 MiB). An
38
+ * upload no larger is one part; a smaller size suits a proxy that caps
39
+ * request bodies. */
38
40
  transferPartBytes?: number;
39
- /** How long a protocol-2 dataset commit waits for the upload to be verified
40
- * before answering `processing` for the client to poll (default: 5000 ms;
41
- * 0 answers `processing` at once). Keep it under any proxy's request
41
+ /** How long a dataset commit waits for the upload to be verified before
42
+ * answering `processing` for the client to poll (default: 5000 ms; 0
43
+ * answers `processing` at once). Keep it under any proxy's request
42
44
  * timeout. */
43
45
  transferCommitWaitMs?: number;
46
+ /** The server's budget of cores and memory, which every runner process it
47
+ * spawns takes from: dataflow tasks and units, function calls, mutations
48
+ * and index builds, across every run. A {@link Budget}, or the settings
49
+ * to resolve one from, as `-j` and `--memory` give them (default:
50
+ * `E3_JOBS` and `E3_MEMORY`, else what the process may use); settings
51
+ * that do not resolve make `createServer` throw a `RangeError`. */
52
+ budget?: Budget | BudgetSettings;
44
53
  }
45
54
  /**
46
55
  * Server instance handle.
@@ -67,6 +76,9 @@ export interface Server {
67
76
  *
68
77
  * @param config - Server configuration
69
78
  * @returns Server instance
79
+ * @throws {RangeError} When the budget's settings do not resolve
80
+ * @throws {RepoNotFoundError} When the single repository is none
81
+ * @throws {RepoLayoutError} When this e3 cannot open the single repository
70
82
  */
71
83
  export declare function createServer(config: ServerConfig): Promise<Server>;
72
84
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EAAwB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAyC,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAiBzF,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wEAAwE;IACxE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,mEAAmE;IACnE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;iFAC6E;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;iEAE6D;IAC7D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;mBAGe;IACf,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,uBAAuB;IACvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,sBAAsB;IACtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,iCAAiC;IACjC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CA+XxE"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EACL,MAAM,EACP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAA+C,MAAM,kBAAkB,CAAC;AACpG,OAAO,EAAwB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE7E,OAAO,EAAyC,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAiBzF,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wEAAwE;IACxE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,mEAAmE;IACnE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;iFAC6E;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;0BAEsB;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;mBAGe;IACf,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;wEAKoE;IACpE,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,uBAAuB;IACvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,sBAAsB;IACtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,iCAAiC;IACjC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAyOxE"}