@elaraai/e3-api-server 1.0.83 → 1.0.85
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +88 -11
- package/dist/src/errors.d.ts +15 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +22 -1
- package/dist/src/errors.js.map +1 -1
- package/dist/src/handlers/dataflow.d.ts +89 -18
- package/dist/src/handlers/dataflow.d.ts.map +1 -1
- package/dist/src/handlers/dataflow.js +198 -123
- package/dist/src/handlers/dataflow.js.map +1 -1
- package/dist/src/handlers/dataflow.spec.js +257 -7
- package/dist/src/handlers/dataflow.spec.js.map +1 -1
- package/dist/src/handlers/datasets.d.ts +56 -15
- package/dist/src/handlers/datasets.d.ts.map +1 -1
- package/dist/src/handlers/datasets.js +200 -122
- package/dist/src/handlers/datasets.js.map +1 -1
- package/dist/src/handlers/datasets.spec.js +94 -4
- package/dist/src/handlers/datasets.spec.js.map +1 -1
- package/dist/src/handlers/functions.d.ts +11 -2
- package/dist/src/handlers/functions.d.ts.map +1 -1
- package/dist/src/handlers/functions.js +50 -20
- package/dist/src/handlers/functions.js.map +1 -1
- package/dist/src/handlers/functions.spec.js +26 -15
- package/dist/src/handlers/functions.spec.js.map +1 -1
- package/dist/src/handlers/index.d.ts +2 -2
- package/dist/src/handlers/index.d.ts.map +1 -1
- package/dist/src/handlers/index.js +2 -2
- package/dist/src/handlers/index.js.map +1 -1
- package/dist/src/handlers/packages.d.ts +1 -1
- package/dist/src/handlers/packages.d.ts.map +1 -1
- package/dist/src/handlers/packages.js +1 -1
- package/dist/src/handlers/packages.js.map +1 -1
- package/dist/src/handlers/records.d.ts +27 -7
- package/dist/src/handlers/records.d.ts.map +1 -1
- package/dist/src/handlers/records.js +36 -16
- package/dist/src/handlers/records.js.map +1 -1
- package/dist/src/handlers/records.spec.js +161 -27
- package/dist/src/handlers/records.spec.js.map +1 -1
- package/dist/src/handlers/repository.d.ts +9 -1
- package/dist/src/handlers/repository.d.ts.map +1 -1
- package/dist/src/handlers/repository.js +14 -5
- package/dist/src/handlers/repository.js.map +1 -1
- package/dist/src/handlers/tasks.d.ts +18 -6
- package/dist/src/handlers/tasks.d.ts.map +1 -1
- package/dist/src/handlers/tasks.js +31 -22
- package/dist/src/handlers/tasks.js.map +1 -1
- package/dist/src/handlers/tasks.spec.js +61 -12
- package/dist/src/handlers/tasks.spec.js.map +1 -1
- package/dist/src/handlers/workspaces.d.ts +11 -6
- package/dist/src/handlers/workspaces.d.ts.map +1 -1
- package/dist/src/handlers/workspaces.js +14 -8
- package/dist/src/handlers/workspaces.js.map +1 -1
- package/dist/src/handlers/workspaces.spec.js +25 -9
- package/dist/src/handlers/workspaces.spec.js.map +1 -1
- package/dist/src/identity.d.ts +22 -0
- package/dist/src/identity.d.ts.map +1 -0
- package/dist/src/identity.js +6 -0
- package/dist/src/identity.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/local-dataflow.d.ts +14 -1
- package/dist/src/local-dataflow.d.ts.map +1 -1
- package/dist/src/local-dataflow.js +12 -7
- package/dist/src/local-dataflow.js.map +1 -1
- package/dist/src/middleware/auth.d.ts +1 -11
- package/dist/src/middleware/auth.d.ts.map +1 -1
- package/dist/src/middleware/auth.js.map +1 -1
- package/dist/src/middleware/repository.d.ts +1 -1
- package/dist/src/middleware/repository.d.ts.map +1 -1
- package/dist/src/middleware/repository.js +4 -10
- package/dist/src/middleware/repository.js.map +1 -1
- package/dist/src/middleware/repository.spec.js +7 -6
- package/dist/src/middleware/repository.spec.js.map +1 -1
- package/dist/src/portable.d.ts +47 -0
- package/dist/src/portable.d.ts.map +1 -0
- package/dist/src/portable.js +79 -0
- package/dist/src/portable.js.map +1 -0
- package/dist/src/portable.spec.d.ts +6 -0
- package/dist/src/portable.spec.d.ts.map +1 -0
- package/dist/src/portable.spec.js +325 -0
- package/dist/src/portable.spec.js.map +1 -0
- package/dist/src/routes/dataset-path.d.ts +28 -0
- package/dist/src/routes/dataset-path.d.ts.map +1 -0
- package/dist/src/routes/dataset-path.js +52 -0
- package/dist/src/routes/dataset-path.js.map +1 -0
- package/dist/src/routes/datasets.d.ts +7 -1
- package/dist/src/routes/datasets.d.ts.map +1 -1
- package/dist/src/routes/datasets.js +5 -11
- package/dist/src/routes/datasets.js.map +1 -1
- package/dist/src/routes/executions.d.ts +4 -2
- package/dist/src/routes/executions.d.ts.map +1 -1
- package/dist/src/routes/executions.js +31 -10
- package/dist/src/routes/executions.js.map +1 -1
- package/dist/src/routes/functions.d.ts +16 -8
- package/dist/src/routes/functions.d.ts.map +1 -1
- package/dist/src/routes/functions.js +21 -11
- package/dist/src/routes/functions.js.map +1 -1
- package/dist/src/routes/index.d.ts +4 -3
- package/dist/src/routes/index.d.ts.map +1 -1
- package/dist/src/routes/index.js +1 -0
- package/dist/src/routes/index.js.map +1 -1
- package/dist/src/routes/objects.d.ts +4 -2
- package/dist/src/routes/objects.d.ts.map +1 -1
- package/dist/src/routes/objects.js +5 -8
- package/dist/src/routes/objects.js.map +1 -1
- package/dist/src/routes/package-transfer.d.ts +1 -1
- package/dist/src/routes/package-transfer.d.ts.map +1 -1
- package/dist/src/routes/package-transfer.js +19 -22
- package/dist/src/routes/package-transfer.js.map +1 -1
- package/dist/src/routes/packages.d.ts +1 -1
- package/dist/src/routes/packages.d.ts.map +1 -1
- package/dist/src/routes/query.d.ts +53 -0
- package/dist/src/routes/query.d.ts.map +1 -0
- package/dist/src/routes/query.js +86 -0
- package/dist/src/routes/query.js.map +1 -0
- package/dist/src/routes/query.spec.d.ts +6 -0
- package/dist/src/routes/query.spec.d.ts.map +1 -0
- package/dist/src/routes/query.spec.js +49 -0
- package/dist/src/routes/query.spec.js.map +1 -0
- package/dist/src/routes/records.d.ts +32 -3
- package/dist/src/routes/records.d.ts.map +1 -1
- package/dist/src/routes/records.js +34 -7
- package/dist/src/routes/records.js.map +1 -1
- package/dist/src/routes/repositories.d.ts +1 -1
- package/dist/src/routes/repositories.d.ts.map +1 -1
- package/dist/src/routes/repository.d.ts +6 -1
- package/dist/src/routes/repository.d.ts.map +1 -1
- package/dist/src/routes/repository.js +5 -0
- package/dist/src/routes/repository.js.map +1 -1
- package/dist/src/routes/repository.spec.d.ts +6 -0
- package/dist/src/routes/repository.spec.d.ts.map +1 -0
- package/dist/src/routes/repository.spec.js +84 -0
- package/dist/src/routes/repository.spec.js.map +1 -0
- package/dist/src/routes/tasks.d.ts +1 -1
- package/dist/src/routes/tasks.d.ts.map +1 -1
- package/dist/src/routes/tasks.js +16 -4
- package/dist/src/routes/tasks.js.map +1 -1
- package/dist/src/routes/transfer.d.ts +1 -1
- package/dist/src/routes/transfer.d.ts.map +1 -1
- package/dist/src/routes/transfer.js +7 -27
- package/dist/src/routes/transfer.js.map +1 -1
- package/dist/src/routes/workspaces.d.ts +1 -1
- package/dist/src/routes/workspaces.d.ts.map +1 -1
- package/dist/src/routes/workspaces.js +34 -22
- package/dist/src/routes/workspaces.js.map +1 -1
- package/dist/src/server.js +1 -1
- package/dist/src/server.js.map +1 -1
- package/dist/src/types.d.ts +135 -5
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +7 -5
- package/dist/src/types.js.map +1 -1
- package/package.json +8 -4
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
5
|
import { Hono } from 'hono';
|
|
6
|
+
import { dataflowForceOption } from '@elaraai/e3-types';
|
|
6
7
|
import { startDataflow, getDataflowStatus, getDataflowGraph, getTaskLogs, getDataflowExecution, getDataflowBudget, cancelDataflow, } from '../handlers/dataflow.js';
|
|
7
8
|
import { decodeBody } from '../beast2.js';
|
|
8
9
|
import { DataflowRequestType } from '../types.js';
|
|
10
|
+
import { badQuery, wholeQuery } from './query.js';
|
|
9
11
|
/**
|
|
10
12
|
* The routes of a workspace's dataflow: start, poll, cancel, its graph, its
|
|
11
13
|
* tasks' logs, and the budget a run gets.
|
|
@@ -29,7 +31,7 @@ export function createExecutionRoutes(storage, getRepoPath, seams) {
|
|
|
29
31
|
return startDataflow(storage, seams.getOrchestrator(repoPath), repoPath, ws, {
|
|
30
32
|
runner: seams.getRunner(repoPath),
|
|
31
33
|
...(seams.width !== undefined && { width: seams.width }),
|
|
32
|
-
force: body.force,
|
|
34
|
+
force: dataflowForceOption(body.force),
|
|
33
35
|
filter,
|
|
34
36
|
verbose: c.req.query('verbose') === '1',
|
|
35
37
|
});
|
|
@@ -48,27 +50,46 @@ export function createExecutionRoutes(storage, getRepoPath, seams) {
|
|
|
48
50
|
const ws = c.req.param('ws');
|
|
49
51
|
return getDataflowGraph(storage, repoPath, ws);
|
|
50
52
|
});
|
|
51
|
-
// GET /api/repos/:repo/workspaces/:ws/dataflow/logs/:task -
|
|
53
|
+
// GET /api/repos/:repo/workspaces/:ws/dataflow/logs/:task[?inputs=<inputsHash>&execution=<executionId>] -
|
|
54
|
+
// A chunk of a task's log: of its current execution, or of the one `inputs`
|
|
55
|
+
// and `execution` name together
|
|
52
56
|
app.get('/logs/:task', async (c) => {
|
|
53
57
|
const repo = c.req.param('repo');
|
|
54
58
|
const repoPath = getRepoPath(repo);
|
|
55
59
|
const ws = c.req.param('ws');
|
|
56
60
|
const taskName = c.req.param('task');
|
|
57
|
-
//
|
|
61
|
+
// The stream, the window and the execution, refused before any store is
|
|
62
|
+
// asked when malformed. The stream names the log the store reads, so
|
|
63
|
+
// nothing but its two is taken; and a window of no bytes is a window,
|
|
64
|
+
// which reports the log's size, as the CLI's probe reads it. An execution
|
|
65
|
+
// is named by its inputs hash and its id together, which the store checks
|
|
66
|
+
// are of their form.
|
|
58
67
|
const stream = c.req.query('stream') || 'stdout';
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
68
|
+
if (stream !== 'stdout' && stream !== 'stderr') {
|
|
69
|
+
return badQuery(`stream must be stdout or stderr, got ${JSON.stringify(stream)}`);
|
|
70
|
+
}
|
|
71
|
+
const window = wholeQuery(c, { offset: 0, limit: 0 });
|
|
72
|
+
if (window instanceof Response)
|
|
73
|
+
return window;
|
|
74
|
+
const inputsHash = c.req.query('inputs') ?? '';
|
|
75
|
+
const executionId = c.req.query('execution') ?? '';
|
|
76
|
+
if ((inputsHash === '') !== (executionId === '')) {
|
|
77
|
+
return badQuery('inputs and execution name an execution together: give both, or neither');
|
|
78
|
+
}
|
|
79
|
+
return getTaskLogs(storage, repoPath, ws, taskName, stream, window.offset ?? 0, window.limit ?? 65536, inputsHash === '' ? undefined : { inputsHash, executionId });
|
|
62
80
|
});
|
|
63
81
|
// GET /api/repos/:repo/workspaces/:ws/dataflow/execution - Get execution state (for polling)
|
|
64
82
|
app.get('/execution', (c) => {
|
|
65
83
|
const repo = c.req.param('repo');
|
|
66
84
|
const repoPath = getRepoPath(repo);
|
|
67
85
|
const ws = c.req.param('ws');
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
86
|
+
// The poll's cursor — the sequence number of the last event the client has
|
|
87
|
+
// — and the most events it is served, refused before the store is asked
|
|
88
|
+
// when malformed; a poll of no events still carries the run's state
|
|
89
|
+
const window = wholeQuery(c, { since: 0, limit: 0 });
|
|
90
|
+
if (window instanceof Response)
|
|
91
|
+
return window;
|
|
92
|
+
return getDataflowExecution(seams.getStateStore(repoPath), seams.getOrchestrator(repoPath), repoPath, ws, window, seams.budget);
|
|
72
93
|
});
|
|
73
94
|
// GET /api/repos/:repo/workspaces/:ws/dataflow/budget - The budget a run gets
|
|
74
95
|
app.get('/budget', () => getDataflowBudget(seams.budget));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executions.js","sourceRoot":"","sources":["../../../src/routes/executions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"executions.js","sourceRoot":"","sources":["../../../src/routes/executions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,GAEf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA4BlD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAuB,EACvB,WAAqC,EACrC,KAAoB;IAEpB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,0FAA0F;IAC1F,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACxB,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC;QAE9B,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAE3E,OAAO,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC3E,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;YACjC,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;YACxD,KAAK,EAAE,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;YACtC,MAAM;YACN,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG;SACxC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,oFAAoF;IACpF,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACvB,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC;QAC9B,OAAO,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC;QAC9B,OAAO,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,0GAA0G;IAC1G,4EAA4E;IAC5E,gCAAgC;IAChC,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAE,CAAC;QAEtC,wEAAwE;QACxE,qEAAqE;QACrE,sEAAsE;QACtE,0EAA0E;QAC1E,0EAA0E;QAC1E,qBAAqB;QACrB,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;QACjD,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/C,OAAO,QAAQ,CAAC,wCAAwC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,MAAM,YAAY,QAAQ;YAAE,OAAO,MAAM,CAAC;QAC9C,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,CAAC,UAAU,KAAK,EAAE,CAAC,KAAK,CAAC,WAAW,KAAK,EAAE,CAAC,EAAE,CAAC;YACjD,OAAO,QAAQ,CAAC,wEAAwE,CAAC,CAAC;QAC5F,CAAC;QAED,OAAO,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK,EACnG,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,6FAA6F;IAC7F,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC;QAE9B,2EAA2E;QAC3E,wEAAwE;QACxE,oEAAoE;QACpE,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACrD,IAAI,MAAM,YAAY,QAAQ;YAAE,OAAO,MAAM,CAAC;QAE9C,OAAO,oBAAoB,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAClI,CAAC,CAAC,CAAC;IAEH,8EAA8E;IAC9E,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAE1D,kFAAkF;IAClF,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC;QAE9B,OAAO,cAAc,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IACtG,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* Routes for named package functions and one-shot execution.
|
|
7
7
|
*
|
|
8
|
-
* Functions
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
8
|
+
* Functions are callable at the package level (imported in a repo, no
|
|
9
|
+
* workspace) and at the workspace level (resolved from the deployed package).
|
|
10
|
+
* Both mount the same handlers. An argument is a value, or through a workspace
|
|
11
|
+
* one of its datasets, pinned at launch as a one-shot's is; the package level
|
|
12
|
+
* has no workspace to read one from, and answers a dataset argument
|
|
13
|
+
* `invalid`. A function runs on its author's runner for any caller the routes
|
|
14
|
+
* admit; a runner a call names instead is held to the caller's grant, which
|
|
15
|
+
* the routes take as the one-shot routes do.
|
|
14
16
|
*
|
|
15
17
|
* One-shot is workspace-scoped, caller-supplied IR. Who may run what is the
|
|
16
18
|
* host's to say, since only its auth knows who the caller is: the route takes
|
|
@@ -23,8 +25,8 @@
|
|
|
23
25
|
*/
|
|
24
26
|
import { Hono } from 'hono';
|
|
25
27
|
import type { Context } from 'hono';
|
|
26
|
-
import type { ExecuteCeilings, OneShotGrant, StorageBackend, TaskRunner, TransferBackend } from '@elaraai/e3-core';
|
|
27
|
-
import type { Identity } from '../
|
|
28
|
+
import type { ExecuteCeilings, OneShotGrant, StorageBackend, TaskRunner, TransferBackend } from '@elaraai/e3-core/portable';
|
|
29
|
+
import type { Identity } from '../identity.js';
|
|
28
30
|
/**
|
|
29
31
|
* Per-repo TaskRunner accessor — the runner is injected (the local server
|
|
30
32
|
* passes LocalTaskRunner), mirroring the orchestrator runner-injection seam.
|
|
@@ -88,6 +90,12 @@ export declare function createPackageFunctionRoutes(storage: StorageBackend, get
|
|
|
88
90
|
* `/api/repos/:repo/workspaces/:ws/functions`. The package is resolved from
|
|
89
91
|
* what's deployed in the workspace; the handlers are identical.
|
|
90
92
|
*
|
|
93
|
+
* @remarks
|
|
94
|
+
* A workspace whose package cannot be resolved — none deployed, or no such
|
|
95
|
+
* workspace — is answered in the envelope of the route's own type, as its
|
|
96
|
+
* handler answers every other error: the client decodes each route's answer by
|
|
97
|
+
* that type, and would read another's as a decode error, not the API's.
|
|
98
|
+
*
|
|
91
99
|
* @param storage - Storage backend
|
|
92
100
|
* @param getRepoPath - A repository's identifier from its name
|
|
93
101
|
* @param getRunner - Each repository's task runner
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../src/routes/functions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH
|
|
1
|
+
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../src/routes/functions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAGpC,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5H,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAkB/C;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,UAAU,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,OAAO,KAAK,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAEjF,+CAA+C;AAC/C,MAAM,WAAW,oBAAoB;IACnC,yDAAyD;IACzD,MAAM,EAAE,aAAa,CAAC;IACtB;uBACmB;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;2CACuC;IACvC,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,6CAA6C;AAC7C,MAAM,WAAW,qBAAqB;IACpC;uBACmB;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAOD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,GAAE,SAAS,MAAM,EAAuB,GAAG,aAAa,CAMpG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EACrC,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE,qBAA0B,8EA6BpC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EACrC,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE,qBAA0B,8EA0CpC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EACrC,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,oBAAoB;eAEK;QAAE,QAAQ,CAAC,EAAE,QAAQ,CAAA;KAAE;0CAgD1D"}
|
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* Routes for named package functions and one-shot execution.
|
|
7
7
|
*
|
|
8
|
-
* Functions
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
8
|
+
* Functions are callable at the package level (imported in a repo, no
|
|
9
|
+
* workspace) and at the workspace level (resolved from the deployed package).
|
|
10
|
+
* Both mount the same handlers. An argument is a value, or through a workspace
|
|
11
|
+
* one of its datasets, pinned at launch as a one-shot's is; the package level
|
|
12
|
+
* has no workspace to read one from, and answers a dataset argument
|
|
13
|
+
* `invalid`. A function runs on its author's runner for any caller the routes
|
|
14
|
+
* admit; a runner a call names instead is held to the caller's grant, which
|
|
15
|
+
* the routes take as the one-shot routes do.
|
|
14
16
|
*
|
|
15
17
|
* One-shot is workspace-scoped, caller-supplied IR. Who may run what is the
|
|
16
18
|
* host's to say, since only its auth knows who the caller is: the route takes
|
|
@@ -22,10 +24,11 @@
|
|
|
22
24
|
* and runs as a job the client polls.
|
|
23
25
|
*/
|
|
24
26
|
import { Hono } from 'hono';
|
|
25
|
-
import {
|
|
27
|
+
import { ArrayType } from '@elaraai/east';
|
|
28
|
+
import { oneShotExecute, workspaceGetPackage } from '@elaraai/e3-core/portable';
|
|
26
29
|
import { decodeBody, sendError, sendSuccess } from '../beast2.js';
|
|
27
30
|
import { errorToVariant } from '../errors.js';
|
|
28
|
-
import { FunctionCallRequestType, OneShotRequestType, ExecuteResultType, PackageJobResponseType, SplitCallRequestType, SplitCallStatusType, } from '../types.js';
|
|
31
|
+
import { FunctionCallRequestType, FunctionSignatureType, OneShotRequestType, ExecuteResultType, PackageJobResponseType, SplitCallRequestType, SplitCallStatusType, } from '../types.js';
|
|
29
32
|
import { listPackageFunctions, describePackageFunction, callFunctionSync, getSplitCallStatus, startSplitCall, } from '../handlers/functions.js';
|
|
30
33
|
/** The grant of a function call's caller, by the routes' options. */
|
|
31
34
|
async function functionGrant(c, options) {
|
|
@@ -90,6 +93,12 @@ export function createPackageFunctionRoutes(storage, getRepoPath, getRunner, opt
|
|
|
90
93
|
* `/api/repos/:repo/workspaces/:ws/functions`. The package is resolved from
|
|
91
94
|
* what's deployed in the workspace; the handlers are identical.
|
|
92
95
|
*
|
|
96
|
+
* @remarks
|
|
97
|
+
* A workspace whose package cannot be resolved — none deployed, or no such
|
|
98
|
+
* workspace — is answered in the envelope of the route's own type, as its
|
|
99
|
+
* handler answers every other error: the client decodes each route's answer by
|
|
100
|
+
* that type, and would read another's as a decode error, not the API's.
|
|
101
|
+
*
|
|
93
102
|
* @param storage - Storage backend
|
|
94
103
|
* @param getRepoPath - A repository's identifier from its name
|
|
95
104
|
* @param getRunner - Each repository's task runner
|
|
@@ -111,7 +120,7 @@ export function createWorkspaceFunctionRoutes(storage, getRepoPath, getRunner, o
|
|
|
111
120
|
return await listPackageFunctions(storage, repoPath, name, version);
|
|
112
121
|
}
|
|
113
122
|
catch (err) {
|
|
114
|
-
return sendError(
|
|
123
|
+
return sendError(ArrayType(FunctionSignatureType), errorToVariant(err));
|
|
115
124
|
}
|
|
116
125
|
});
|
|
117
126
|
app.get('/:fn', async (c) => {
|
|
@@ -120,7 +129,7 @@ export function createWorkspaceFunctionRoutes(storage, getRepoPath, getRunner, o
|
|
|
120
129
|
return await describePackageFunction(storage, repoPath, name, version, c.req.param('fn'));
|
|
121
130
|
}
|
|
122
131
|
catch (err) {
|
|
123
|
-
return sendError(
|
|
132
|
+
return sendError(FunctionSignatureType, errorToVariant(err));
|
|
124
133
|
}
|
|
125
134
|
});
|
|
126
135
|
app.post('/:fn', async (c) => {
|
|
@@ -128,7 +137,8 @@ export function createWorkspaceFunctionRoutes(storage, getRepoPath, getRunner, o
|
|
|
128
137
|
const { repoPath, name, version } = await deployed(c);
|
|
129
138
|
const grant = await functionGrant(c, options);
|
|
130
139
|
const req = await decodeBody(c, FunctionCallRequestType);
|
|
131
|
-
|
|
140
|
+
// A dataset argument is the workspace's, pinned at launch
|
|
141
|
+
return await callFunctionSync(storage, repoPath, getRunner(repoPath), name, version, c.req.param('fn'), req, c.req.query('verbose') === '1', options.syncDeadlineMs, grant, c.req.param('ws'));
|
|
132
142
|
}
|
|
133
143
|
catch (err) {
|
|
134
144
|
return sendError(ExecuteResultType, errorToVariant(err));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/routes/functions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/routes/functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,13 +6,14 @@ export { createRepositoriesRoutes, createSingleRepositoryRoutes } from './reposi
|
|
|
6
6
|
export { createRepositoryRoutes } from './repository.js';
|
|
7
7
|
export { createPackageRoutes } from './packages.js';
|
|
8
8
|
export { createWorkspaceRoutes } from './workspaces.js';
|
|
9
|
-
export { createDatasetRoutes } from './datasets.js';
|
|
9
|
+
export { createDatasetRoutes, type DatasetRouteOptions } from './datasets.js';
|
|
10
10
|
export { createTaskRoutes } from './tasks.js';
|
|
11
|
-
export { createExecutionRoutes, type DataflowSeams } from './executions.js';
|
|
11
|
+
export { createExecutionRoutes, type DataflowSeams, type RunnerBudget } from './executions.js';
|
|
12
12
|
export { createObjectRoutes } from './objects.js';
|
|
13
13
|
export { createTransferRoutes, type TransferRouteOptions } from './transfer.js';
|
|
14
14
|
export { createPackageTransferRoutes } from './package-transfer.js';
|
|
15
15
|
export { createDataEndpoints } from './data.js';
|
|
16
16
|
export { createPackageFunctionRoutes, createWorkspaceFunctionRoutes, createOneShotRoutes, oneShotAccessByRoles, type GetRunner, type OneShotAccess, type OneShotRoutesOptions, type FunctionRoutesOptions, } from './functions.js';
|
|
17
|
-
export { createWorkspaceRecordRoutes } from './records.js';
|
|
17
|
+
export { createWorkspaceRecordRoutes, type RecordRoutesOptions } from './records.js';
|
|
18
|
+
export { badQuery, wholeQuery, pathsQuery, type QueryLeast } from './query.js';
|
|
18
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAC3F,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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAC3F,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,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,EAC7B,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,2BAA2B,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/src/routes/index.js
CHANGED
|
@@ -15,4 +15,5 @@ export { createPackageTransferRoutes } from './package-transfer.js';
|
|
|
15
15
|
export { createDataEndpoints } from './data.js';
|
|
16
16
|
export { createPackageFunctionRoutes, createWorkspaceFunctionRoutes, createOneShotRoutes, oneShotAccessByRoles, } from './functions.js';
|
|
17
17
|
export { createWorkspaceRecordRoutes } from './records.js';
|
|
18
|
+
export { badQuery, wholeQuery, pathsQuery } from './query.js';
|
|
18
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAC3F,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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAC3F,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,EAA4B,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAyC,MAAM,iBAAiB,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAA6B,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,EAC7B,mBAAmB,EACnB,oBAAoB,GAKrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,2BAA2B,EAA4B,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAmB,MAAM,YAAY,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
5
|
import { Hono } from 'hono';
|
|
6
|
-
import { type StorageBackend, type TransferBackend } from '@elaraai/e3-core';
|
|
6
|
+
import { type StorageBackend, type TransferBackend } from '@elaraai/e3-core/portable';
|
|
7
7
|
/**
|
|
8
8
|
* Creates the routes that read an object by its hash.
|
|
9
9
|
*
|
|
@@ -11,7 +11,9 @@ import { type StorageBackend, type TransferBackend } from '@elaraai/e3-core';
|
|
|
11
11
|
* A client downloading a collection by its segments reads each segment here.
|
|
12
12
|
* With a transfer backend, an object over {@link DOWNLOAD_REDIRECT_BYTES} is
|
|
13
13
|
* answered as a dataset download is: JSON `{ url }`, which the client fetches
|
|
14
|
-
* directly, so a host whose responses are capped never carries the bytes.
|
|
14
|
+
* directly, so a host whose responses are capped never carries the bytes. A
|
|
15
|
+
* hash that is not a SHA-256 in lowercase hex is refused 400 `invalid_name`,
|
|
16
|
+
* before any store is asked, as every route refuses a malformed name.
|
|
15
17
|
*
|
|
16
18
|
* @param storage - The storage backend the objects are read from
|
|
17
19
|
* @param getRepoPath - Maps a repository name to its path in the backend
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objects.d.ts","sourceRoot":"","sources":["../../../src/routes/objects.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,
|
|
1
|
+
{"version":3,"file":"objects.d.ts","sourceRoot":"","sources":["../../../src/routes/objects.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAa,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAKjG;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EACrC,eAAe,CAAC,EAAE,eAAe,8EAwClC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
5
|
import { Hono } from 'hono';
|
|
6
|
-
import {
|
|
6
|
+
import { checkHash } from '@elaraai/e3-core/portable';
|
|
7
7
|
import { BEAST2_CONTENT_TYPE } from '@elaraai/e3-types';
|
|
8
8
|
import { sendJsonError } from '../errors.js';
|
|
9
9
|
import { DOWNLOAD_REDIRECT_BYTES } from '../handlers/datasets.js';
|
|
@@ -14,7 +14,9 @@ import { DOWNLOAD_REDIRECT_BYTES } from '../handlers/datasets.js';
|
|
|
14
14
|
* A client downloading a collection by its segments reads each segment here.
|
|
15
15
|
* With a transfer backend, an object over {@link DOWNLOAD_REDIRECT_BYTES} is
|
|
16
16
|
* answered as a dataset download is: JSON `{ url }`, which the client fetches
|
|
17
|
-
* directly, so a host whose responses are capped never carries the bytes.
|
|
17
|
+
* directly, so a host whose responses are capped never carries the bytes. A
|
|
18
|
+
* hash that is not a SHA-256 in lowercase hex is refused 400 `invalid_name`,
|
|
19
|
+
* before any store is asked, as every route refuses a malformed name.
|
|
18
20
|
*
|
|
19
21
|
* @param storage - The storage backend the objects are read from
|
|
20
22
|
* @param getRepoPath - Maps a repository name to its path in the backend
|
|
@@ -28,13 +30,8 @@ export function createObjectRoutes(storage, getRepoPath, transferBackend) {
|
|
|
28
30
|
const repo = c.req.param('repo');
|
|
29
31
|
const repoPath = getRepoPath(repo);
|
|
30
32
|
const hash = c.req.param('hash');
|
|
31
|
-
if (!isObjectHash(hash)) {
|
|
32
|
-
return new Response(JSON.stringify({ error: { type: 'bad_request', message: `invalid hash format: ${hash}` } }), {
|
|
33
|
-
status: 400,
|
|
34
|
-
headers: { 'Content-Type': 'application/json' },
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
33
|
try {
|
|
34
|
+
checkHash('object hash', hash);
|
|
38
35
|
if (transferBackend) {
|
|
39
36
|
const { size } = await storage.objects.stat(repoPath, hash);
|
|
40
37
|
if (size > DOWNLOAD_REDIRECT_BYTES) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objects.js","sourceRoot":"","sources":["../../../src/routes/objects.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"objects.js","sourceRoot":"","sources":["../../../src/routes/objects.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAA6C,MAAM,2BAA2B,CAAC;AACjG,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAuB,EACvB,WAAqC,EACrC,eAAiC;IAEjC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,2DAA2D;IAC3D,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAE,CAAC;QAElC,IAAI,CAAC;YACH,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAC/B,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC5D,IAAI,IAAI,GAAG,uBAAuB,EAAE,CAAC;oBACnC,IAAI,GAAG,GAAG,MAAM,eAAe,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBAC3E,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;wBAAE,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;oBACpE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;wBAC3C,OAAO,EAAE;4BACP,cAAc,EAAE,kBAAkB;4BAClC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC;4BAChC,kBAAkB,EAAE,IAAI;yBACzB;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACxD,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;gBACxB,OAAO,EAAE;oBACP,cAAc,EAAE,mBAAmB;oBACnC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;oBACzC,kBAAkB,EAAE,IAAI;iBACzB;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
5
|
import { Hono } from 'hono';
|
|
6
|
-
import type { StorageBackend, TransferBackend } from '@elaraai/e3-core';
|
|
6
|
+
import type { StorageBackend, TransferBackend } from '@elaraai/e3-core/portable';
|
|
7
7
|
/**
|
|
8
8
|
* Create package transfer routes.
|
|
9
9
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-transfer.d.ts","sourceRoot":"","sources":["../../../src/routes/package-transfer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"package-transfer.d.ts","sourceRoot":"","sources":["../../../src/routes/package-transfer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAiBjF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EACrC,eAAe,EAAE,eAAe;;;EAwJjC"}
|
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
5
|
import { Hono } from 'hono';
|
|
6
|
-
import { randomUUID } from 'node:crypto';
|
|
7
6
|
import { variant, none } from '@elaraai/east';
|
|
8
|
-
import { packageResolve
|
|
7
|
+
import { packageResolve } from '@elaraai/e3-core/portable';
|
|
9
8
|
import { PackageTransferInitRequestType, PackageTransferInitResponseType, PackageJobResponseType, PackageImportStatusType, PackageExportStatusType, } from '@elaraai/e3-types';
|
|
10
9
|
import { decodeBody, sendSuccess, sendError } from '../beast2.js';
|
|
11
10
|
import { errorToVariant } from '../errors.js';
|
|
@@ -47,7 +46,7 @@ export function createPackageTransferRoutes(storage, getRepoPath, transferBacken
|
|
|
47
46
|
message: `Invalid size: must be between 1 and ${MAX_PACKAGE_SIZE} bytes`,
|
|
48
47
|
}));
|
|
49
48
|
}
|
|
50
|
-
const transferId = randomUUID();
|
|
49
|
+
const transferId = globalThis.crypto.randomUUID();
|
|
51
50
|
await transferBackend.packageImport.create(transferId, {
|
|
52
51
|
repo,
|
|
53
52
|
size,
|
|
@@ -132,33 +131,31 @@ export function createPackageTransferRoutes(storage, getRepoPath, transferBacken
|
|
|
132
131
|
// =========================================================================
|
|
133
132
|
// Package-level routes (mounted at /api/repos/:repo/packages)
|
|
134
133
|
// =========================================================================
|
|
135
|
-
// POST /api/repos/:repo/packages/:name/:version/export — Trigger export
|
|
134
|
+
// POST /api/repos/:repo/packages/:name/:version/export — Trigger export.
|
|
135
|
+
// The package is resolved before a job is filed, so a name or version the
|
|
136
|
+
// repository does not hold, or cannot (`invalid_name`), files none; every
|
|
137
|
+
// error is answered as the other routes answer it.
|
|
136
138
|
pkgApi.post('/:name/:version/export', async (c) => {
|
|
137
139
|
const repo = c.req.param('repo');
|
|
138
|
-
const repoPath = getRepoPath(repo);
|
|
139
140
|
const name = c.req.param('name');
|
|
140
141
|
const version = c.req.param('version');
|
|
141
|
-
// Pre-flight: verify package exists before creating job
|
|
142
142
|
try {
|
|
143
|
-
await packageResolve(storage,
|
|
143
|
+
await packageResolve(storage, getRepoPath(repo), name, version);
|
|
144
|
+
const id = globalThis.crypto.randomUUID();
|
|
145
|
+
await transferBackend.packageExport.create(id, {
|
|
146
|
+
repo,
|
|
147
|
+
name,
|
|
148
|
+
version,
|
|
149
|
+
workspace: none,
|
|
150
|
+
status: variant('processing', variant('pending', null)),
|
|
151
|
+
createdAt: new Date(),
|
|
152
|
+
});
|
|
153
|
+
await transferBackend.packageExport.execute(id, repo);
|
|
154
|
+
return sendSuccess(PackageJobResponseType, { id });
|
|
144
155
|
}
|
|
145
156
|
catch (err) {
|
|
146
|
-
|
|
147
|
-
return sendError(PackageJobResponseType, errorToVariant(err));
|
|
148
|
-
}
|
|
149
|
-
throw err;
|
|
157
|
+
return sendError(PackageJobResponseType, errorToVariant(err));
|
|
150
158
|
}
|
|
151
|
-
const id = randomUUID();
|
|
152
|
-
await transferBackend.packageExport.create(id, {
|
|
153
|
-
repo,
|
|
154
|
-
name,
|
|
155
|
-
version,
|
|
156
|
-
workspace: none,
|
|
157
|
-
status: variant('processing', variant('pending', null)),
|
|
158
|
-
createdAt: new Date(),
|
|
159
|
-
});
|
|
160
|
-
await transferBackend.packageExport.execute(id, repo);
|
|
161
|
-
return sendSuccess(PackageJobResponseType, { id });
|
|
162
159
|
});
|
|
163
160
|
return { repoApi, pkgApi };
|
|
164
161
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-transfer.js","sourceRoot":"","sources":["../../../src/routes/package-transfer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"package-transfer.js","sourceRoot":"","sources":["../../../src/routes/package-transfer.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
5
|
import { Hono } from 'hono';
|
|
6
|
-
import type { StorageBackend } from '@elaraai/e3-core';
|
|
6
|
+
import type { StorageBackend } from '@elaraai/e3-core/portable';
|
|
7
7
|
export declare function createPackageRoutes(storage: StorageBackend, getRepoPath: (repo: string) => string): Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
|
|
8
8
|
//# sourceMappingURL=packages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packages.d.ts","sourceRoot":"","sources":["../../../src/routes/packages.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"packages.d.ts","sourceRoot":"","sources":["../../../src/routes/packages.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAOhE,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,8EA8BtC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* What a route reads from a request's query string, read alike by every route
|
|
7
|
+
* that takes it: a window's offset and limit, and the like.
|
|
8
|
+
*/
|
|
9
|
+
import type { Context } from 'hono';
|
|
10
|
+
import { type TreePath } from '@elaraai/e3-types';
|
|
11
|
+
/** The least a whole-number query parameter takes: 0 for an offset, or for a
|
|
12
|
+
* limit whose empty window still reports a total; 1 for a limit whose empty
|
|
13
|
+
* window says nothing. */
|
|
14
|
+
export type QueryLeast = 0 | 1;
|
|
15
|
+
/**
|
|
16
|
+
* The `400 bad_request` that refuses a malformed query, as the dataset routes
|
|
17
|
+
* answer one: JSON naming what was wrong, which the client reads as an
|
|
18
|
+
* `ApiError` of that type.
|
|
19
|
+
*
|
|
20
|
+
* @param message - What was wrong, naming the parameter and what it was given
|
|
21
|
+
* @returns The response
|
|
22
|
+
*/
|
|
23
|
+
export declare function badQuery(message: string): Response;
|
|
24
|
+
/**
|
|
25
|
+
* Reads whole-number query parameters, each at or above the least it takes.
|
|
26
|
+
*
|
|
27
|
+
* @remarks
|
|
28
|
+
* A parameter absent, or given empty, is left out. One given that is not a
|
|
29
|
+
* whole number at or above its least — `abc`, `-1`, `1.5`, `NaN` — or that is
|
|
30
|
+
* past the integers a number holds exactly, is refused before any store is
|
|
31
|
+
* asked: `400 bad_request`, naming it and what it was given.
|
|
32
|
+
*
|
|
33
|
+
* @param c - The request's context
|
|
34
|
+
* @param least - Each parameter by name, and the least value it takes
|
|
35
|
+
* @returns The parameters given, by name; or the 400 that refuses one
|
|
36
|
+
*/
|
|
37
|
+
export declare function wholeQuery<K extends string>(c: Context, least: Readonly<Record<K, QueryLeast>>): Partial<Record<K, number>> | Response;
|
|
38
|
+
/**
|
|
39
|
+
* Reads the dataset paths a query names: each `path` parameter one keypath, as
|
|
40
|
+
* a status names a dataset (`.inputs.x`, `` .inputs.`my field` ``).
|
|
41
|
+
*
|
|
42
|
+
* @remarks
|
|
43
|
+
* Absent, or given only empty, there are none. One that is not a keypath —
|
|
44
|
+
* `inputs.x`, `.inputs.` — is refused before any store is asked:
|
|
45
|
+
* `400 bad_request`, naming it. Whether a path names anything is the route's
|
|
46
|
+
* to judge.
|
|
47
|
+
*
|
|
48
|
+
* @param c - The request's context
|
|
49
|
+
* @returns The paths given, or `undefined` when none is; or the 400 that
|
|
50
|
+
* refuses one
|
|
51
|
+
*/
|
|
52
|
+
export declare function pathsQuery(c: Context): TreePath[] | undefined | Response;
|
|
53
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/routes/query.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAKhE;;2BAE2B;AAC3B,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;AAQ/B;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAKlD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,QAAQ,CAetI;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,GAAG,SAAS,GAAG,QAAQ,CAYxE"}
|