@fnndsc/salsa 3.5.0 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/dist/connect/index.d.ts +11 -0
- package/dist/connect/index.js +11 -0
- package/dist/connect/index.js.map +1 -1
- package/dist/dag/feedJoins.js +4 -1
- package/dist/dag/feedJoins.js.map +1 -1
- package/dist/feeds/index.d.ts +15 -2
- package/dist/feeds/index.js.map +1 -1
- package/dist/files/index.d.ts +7 -0
- package/dist/files/index.js +12 -11
- package/dist/files/index.js.map +1 -1
- package/dist/files/regular_content.js +11 -3
- package/dist/files/regular_content.js.map +1 -1
- package/dist/groups/index.d.ts +59 -0
- package/dist/groups/index.js +89 -0
- package/dist/groups/index.js.map +1 -1
- package/dist/groups/membershipRevision.d.ts +19 -0
- package/dist/groups/membershipRevision.js +29 -0
- package/dist/groups/membershipRevision.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/jobs/jobOps.js +45 -2
- package/dist/jobs/jobOps.js.map +1 -1
- package/dist/pipelines/index.d.ts +28 -5
- package/dist/pipelines/index.js +110 -48
- package/dist/pipelines/index.js.map +1 -1
- package/dist/pipelines/invocation.d.ts +80 -0
- package/dist/pipelines/invocation.js +290 -0
- package/dist/pipelines/invocation.js.map +1 -0
- package/dist/pipelines/manifest.d.ts +102 -0
- package/dist/pipelines/manifest.js +204 -0
- package/dist/pipelines/manifest.js.map +1 -0
- package/dist/plugins/index.d.ts +29 -0
- package/dist/plugins/index.js +51 -10
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/internal/plugin_executeNewFeed.d.ts +0 -14
- package/dist/plugins/internal/plugin_executeNewFeed.js +3 -3
- package/dist/plugins/internal/plugin_executeNewFeed.js.map +1 -1
- package/dist/plugins/plugin_register.js +5 -5
- package/dist/plugins/plugin_register.js.map +1 -1
- package/dist/plugins/store_import.js +1 -1
- package/dist/plugins/store_import.js.map +1 -1
- package/dist/retrieve/watch.d.ts +114 -0
- package/dist/retrieve/watch.js +360 -0
- package/dist/retrieve/watch.js.map +1 -0
- package/dist/store/index.d.ts +17 -4
- package/dist/store/index.js +9 -4
- package/dist/store/index.js.map +1 -1
- package/dist/users/index.d.ts +36 -0
- package/dist/users/index.js +50 -0
- package/dist/users/index.js.map +1 -0
- package/dist/vfs/dispatcher.d.ts +11 -0
- package/dist/vfs/dispatcher.js +37 -6
- package/dist/vfs/dispatcher.js.map +1 -1
- package/dist/vfs/index.d.ts +1 -0
- package/dist/vfs/index.js +3 -0
- package/dist/vfs/index.js.map +1 -1
- package/dist/vfs/provider.d.ts +13 -0
- package/dist/vfs/providers/etc.d.ts +2 -0
- package/dist/vfs/providers/etc.js +41 -2
- package/dist/vfs/providers/etc.js.map +1 -1
- package/dist/vfs/providers/native.js +41 -7
- package/dist/vfs/providers/native.js.map +1 -1
- package/dist/vfs/providers/pacs.d.ts +13 -1
- package/dist/vfs/providers/pacs.js +86 -107
- package/dist/vfs/providers/pacs.js.map +1 -1
- package/dist/vfs/providers/pacsHelpers.js +9 -5
- package/dist/vfs/providers/pacsHelpers.js.map +1 -1
- package/dist/vfs/providers/proc.d.ts +61 -6
- package/dist/vfs/providers/proc.js +445 -100
- package/dist/vfs/providers/proc.js.map +1 -1
- package/package.json +11 -8
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export * from './context/index.js';
|
|
|
10
10
|
export * from './store/index.js';
|
|
11
11
|
export * from './pipelines/index.js';
|
|
12
12
|
export * from './pacs/index.js';
|
|
13
|
+
export * from './retrieve/watch.js';
|
|
13
14
|
export * from './vfs/index.js';
|
|
14
15
|
export * from './tags/index.js';
|
|
15
16
|
export * from './groups/index.js';
|
|
@@ -18,7 +19,9 @@ export * from './plugininstances/index.js';
|
|
|
18
19
|
export * from './workflows/index.js';
|
|
19
20
|
export * from './compute/index.js';
|
|
20
21
|
export * from './jobs/index.js';
|
|
21
|
-
export
|
|
22
|
+
export * from './users/index.js';
|
|
23
|
+
export { procCache_refresh, procTopology_warmup, procTopology_reconcileFeeds, procTopology_retry, procTopology_status, procTopology_await, procFeed_ensureLoaded, feedInstances_ensureLoaded, feedMeta_ensure, feedStatus_refresh } from './vfs/providers/proc.js';
|
|
24
|
+
export type { ProcTopologyState, ProcTopologyStatus } from './vfs/providers/proc.js';
|
|
22
25
|
export { feedGraph_build, signature_compute } from './dag/feedGraph.js';
|
|
23
26
|
export type { FeedGraph, FeedNode } from './dag/feedGraph.js';
|
|
24
27
|
export { feedJoins_ensure, nodeJoins_resolve } from './dag/feedJoins.js';
|
package/dist/index.js
CHANGED
|
@@ -18,7 +18,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
18
18
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
19
19
|
};
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
-
exports.feedGraphData_ensure = exports.nodeJoins_resolve = exports.feedJoins_ensure = exports.signature_compute = exports.feedGraph_build = exports.feedStatus_refresh = exports.feedMeta_ensure = exports.feedInstances_ensureLoaded = exports.procFeed_ensureLoaded = exports.procTopology_warmup = exports.procCache_refresh = void 0;
|
|
21
|
+
exports.feedGraphData_ensure = exports.nodeJoins_resolve = exports.feedJoins_ensure = exports.signature_compute = exports.feedGraph_build = exports.feedStatus_refresh = exports.feedMeta_ensure = exports.feedInstances_ensureLoaded = exports.procFeed_ensureLoaded = exports.procTopology_await = exports.procTopology_status = exports.procTopology_retry = exports.procTopology_reconcileFeeds = exports.procTopology_warmup = exports.procCache_refresh = void 0;
|
|
22
22
|
__exportStar(require("./feeds/index.js"), exports);
|
|
23
23
|
__exportStar(require("./plugins/index.js"), exports);
|
|
24
24
|
__exportStar(require("./files/index.js"), exports);
|
|
@@ -27,6 +27,7 @@ __exportStar(require("./context/index.js"), exports);
|
|
|
27
27
|
__exportStar(require("./store/index.js"), exports);
|
|
28
28
|
__exportStar(require("./pipelines/index.js"), exports);
|
|
29
29
|
__exportStar(require("./pacs/index.js"), exports);
|
|
30
|
+
__exportStar(require("./retrieve/watch.js"), exports);
|
|
30
31
|
__exportStar(require("./vfs/index.js"), exports);
|
|
31
32
|
__exportStar(require("./tags/index.js"), exports);
|
|
32
33
|
__exportStar(require("./groups/index.js"), exports);
|
|
@@ -35,9 +36,14 @@ __exportStar(require("./plugininstances/index.js"), exports);
|
|
|
35
36
|
__exportStar(require("./workflows/index.js"), exports);
|
|
36
37
|
__exportStar(require("./compute/index.js"), exports);
|
|
37
38
|
__exportStar(require("./jobs/index.js"), exports);
|
|
39
|
+
__exportStar(require("./users/index.js"), exports);
|
|
38
40
|
var proc_js_1 = require("./vfs/providers/proc.js");
|
|
39
41
|
Object.defineProperty(exports, "procCache_refresh", { enumerable: true, get: function () { return proc_js_1.procCache_refresh; } });
|
|
40
42
|
Object.defineProperty(exports, "procTopology_warmup", { enumerable: true, get: function () { return proc_js_1.procTopology_warmup; } });
|
|
43
|
+
Object.defineProperty(exports, "procTopology_reconcileFeeds", { enumerable: true, get: function () { return proc_js_1.procTopology_reconcileFeeds; } });
|
|
44
|
+
Object.defineProperty(exports, "procTopology_retry", { enumerable: true, get: function () { return proc_js_1.procTopology_retry; } });
|
|
45
|
+
Object.defineProperty(exports, "procTopology_status", { enumerable: true, get: function () { return proc_js_1.procTopology_status; } });
|
|
46
|
+
Object.defineProperty(exports, "procTopology_await", { enumerable: true, get: function () { return proc_js_1.procTopology_await; } });
|
|
41
47
|
Object.defineProperty(exports, "procFeed_ensureLoaded", { enumerable: true, get: function () { return proc_js_1.procFeed_ensureLoaded; } });
|
|
42
48
|
Object.defineProperty(exports, "feedInstances_ensureLoaded", { enumerable: true, get: function () { return proc_js_1.feedInstances_ensureLoaded; } });
|
|
43
49
|
Object.defineProperty(exports, "feedMeta_ensure", { enumerable: true, get: function () { return proc_js_1.feedMeta_ensure; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAEH,mDAAiC;AACjC,qDAAmC;AACnC,mDAAiC;AACjC,qDAAmC;AACnC,qDAAmC;AACnC,mDAAiC;AACjC,uDAAqC;AACrC,kDAAgC;AAChC,iDAA+B;AAC/B,kDAAgC;AAChC,oDAAkC;AAClC,yDAAuC;AACvC,6DAA2C;AAC3C,uDAAqC;AACrC,qDAAmC;AACnC,kDAAgC;AAChC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAEH,mDAAiC;AACjC,qDAAmC;AACnC,mDAAiC;AACjC,qDAAmC;AACnC,qDAAmC;AACnC,mDAAiC;AACjC,uDAAqC;AACrC,kDAAgC;AAChC,sDAAoC;AACpC,iDAA+B;AAC/B,kDAAgC;AAChC,oDAAkC;AAClC,yDAAuC;AACvC,6DAA2C;AAC3C,uDAAqC;AACrC,qDAAmC;AACnC,kDAAgC;AAChC,mDAAiC;AACjC,mDAAmQ;AAA1P,4GAAA,iBAAiB,OAAA;AAAE,8GAAA,mBAAmB,OAAA;AAAE,sHAAA,2BAA2B,OAAA;AAAE,6GAAA,kBAAkB,OAAA;AAAE,8GAAA,mBAAmB,OAAA;AAAE,6GAAA,kBAAkB,OAAA;AAAE,gHAAA,qBAAqB,OAAA;AAAE,qHAAA,0BAA0B,OAAA;AAAE,0GAAA,eAAe,OAAA;AAAE,6GAAA,kBAAkB,OAAA;AAEjO,mDAAwE;AAA/D,+GAAA,eAAe,OAAA;AAAE,iHAAA,iBAAiB,OAAA;AAE3C,mDAAyE;AAAhE,gHAAA,gBAAgB,OAAA;AAAE,iHAAA,iBAAiB,OAAA;AAC5C,iDAAyD;AAAhD,mHAAA,oBAAoB,OAAA"}
|
package/dist/jobs/jobOps.js
CHANGED
|
@@ -13,12 +13,38 @@ exports.jobs_find = jobs_find;
|
|
|
13
13
|
exports.job_feedID_get = job_feedID_get;
|
|
14
14
|
exports.job_logFetch = job_logFetch;
|
|
15
15
|
const cumin_1 = require("@fnndsc/cumin");
|
|
16
|
+
const node_zlib_1 = require("node:zlib");
|
|
16
17
|
/** Statuses that cannot be cancelled — operation is already done. */
|
|
17
18
|
const TERMINAL_STATUSES = new Set([
|
|
18
19
|
'finishedSuccessfully',
|
|
19
20
|
'finishedWithError',
|
|
20
21
|
'cancelled',
|
|
21
22
|
]);
|
|
23
|
+
/** Tests whether an unknown value is a non-null record. */
|
|
24
|
+
function record_is(value) {
|
|
25
|
+
return typeof value === 'object' && value !== null;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Decodes CUBE's base64-encoded, zlib-compressed raw pfcon response and
|
|
29
|
+
* extracts its complete compute log.
|
|
30
|
+
*
|
|
31
|
+
* @param raw - The `PluginInstance.raw` value returned by CUBE.
|
|
32
|
+
* @returns The complete compute log, or undefined when no decodable log exists.
|
|
33
|
+
*/
|
|
34
|
+
function pfconLog_decode(raw) {
|
|
35
|
+
if (typeof raw !== 'string' || raw.length === 0)
|
|
36
|
+
return undefined;
|
|
37
|
+
try {
|
|
38
|
+
const json = JSON.parse((0, node_zlib_1.inflateSync)(Buffer.from(raw, 'base64')).toString('utf8'));
|
|
39
|
+
if (!record_is(json) || !record_is(json['compute']))
|
|
40
|
+
return undefined;
|
|
41
|
+
const logs = json['compute']['logs'];
|
|
42
|
+
return typeof logs === 'string' ? logs : undefined;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
22
48
|
/**
|
|
23
49
|
* Cancels a running or scheduled plugin instance.
|
|
24
50
|
* No-op if already terminal (returns Ok).
|
|
@@ -155,21 +181,34 @@ async function jobs_statusBatch(ids) {
|
|
|
155
181
|
if (ids.length === 0)
|
|
156
182
|
return result;
|
|
157
183
|
const client = await cumin_1.chrisConnection.client_get();
|
|
158
|
-
if (!client)
|
|
184
|
+
if (!client) {
|
|
185
|
+
// An empty map from a disconnected client is not "no jobs": say so, so
|
|
186
|
+
// callers rendering stale status have a visible reason.
|
|
187
|
+
cumin_1.errorStack.stack_push("warning", `jobs_statusBatch: not connected; status for ${ids.length} instance(s) unavailable.`);
|
|
159
188
|
return result;
|
|
189
|
+
}
|
|
160
190
|
const typedClient = client;
|
|
191
|
+
const failedIDs = [];
|
|
161
192
|
const entries = (await Promise.all(ids.map(async (id) => {
|
|
162
193
|
try {
|
|
163
194
|
const inst = await typedClient.getPluginInstance(id);
|
|
164
|
-
if (!inst)
|
|
195
|
+
if (!inst) {
|
|
196
|
+
failedIDs.push(id);
|
|
165
197
|
return null;
|
|
198
|
+
}
|
|
166
199
|
const status = inst.data.status ?? 'unknown';
|
|
167
200
|
return [id, status];
|
|
168
201
|
}
|
|
169
202
|
catch {
|
|
203
|
+
failedIDs.push(id);
|
|
170
204
|
return null;
|
|
171
205
|
}
|
|
172
206
|
}))).filter((e) => e !== null);
|
|
207
|
+
// Partial results are by design (one dead instance must not blank a whole
|
|
208
|
+
// listing), but the gaps must be visible rather than reading as absent.
|
|
209
|
+
if (failedIDs.length > 0) {
|
|
210
|
+
cumin_1.errorStack.stack_push("warning", `jobs_statusBatch: could not fetch status for instance(s) ${failedIDs.sort((a, b) => a - b).join(", ")}.`);
|
|
211
|
+
}
|
|
173
212
|
for (const [id, status] of entries) {
|
|
174
213
|
result.set(id, status);
|
|
175
214
|
}
|
|
@@ -289,6 +328,10 @@ async function job_logFetch(instanceID) {
|
|
|
289
328
|
cumin_1.errorStack.stack_push('error', `Plugin instance ${instanceID} not found.`);
|
|
290
329
|
return (0, cumin_1.Err)();
|
|
291
330
|
}
|
|
331
|
+
const rawLog = pfconLog_decode(instance.data.raw);
|
|
332
|
+
if (rawLog !== undefined) {
|
|
333
|
+
return (0, cumin_1.Ok)(rawLog || '(no log output yet)');
|
|
334
|
+
}
|
|
292
335
|
if (!instance.getLogs) {
|
|
293
336
|
return (0, cumin_1.Ok)('(log not available for this instance)');
|
|
294
337
|
}
|
package/dist/jobs/jobOps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobOps.js","sourceRoot":"","sources":["../../src/jobs/jobOps.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;
|
|
1
|
+
{"version":3,"file":"jobOps.js","sourceRoot":"","sources":["../../src/jobs/jobOps.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,10 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { FilteredResourceData, ListOptions, Result, PipelineRecord, WorkflowResult } from '@fnndsc/cumin';
|
|
10
10
|
export { pipelineDiagram_get, type PipelineDiagram, type PipelineDiagramArgument, type PipelineDiagramNode, } from './diagram.js';
|
|
11
|
+
export { pipelineManifest_get, type PipelineManifest, type PipelineManifestGetOptions, type PipelineManifestNode, type PipelineManifestParameterDefault, } from './manifest.js';
|
|
12
|
+
export { pipelineInvocation_prepare, type PipelineInvocationBinding, type PipelineInvocationPrepareOptions, type PipelineParameterDefinition, type PreparedPipelineInvocation, type PreparedWorkflowNode, } from './invocation.js';
|
|
13
|
+
import { type PipelineManifest } from './manifest.js';
|
|
14
|
+
import { type PipelineInvocationBinding } from './invocation.js';
|
|
11
15
|
export type { PipelineRecord, WorkflowResult };
|
|
12
16
|
/**
|
|
13
17
|
* Lists registered pipelines, optionally filtered by name substring.
|
|
@@ -35,14 +39,33 @@ export declare function pipelineFields_get(): Promise<string[] | null>;
|
|
|
35
39
|
*/
|
|
36
40
|
export declare function pipelines_getAll(): Promise<Result<PipelineRecord[]>>;
|
|
37
41
|
/**
|
|
38
|
-
*
|
|
42
|
+
* Project one exact Pipeline executable slug without listing every Pipeline.
|
|
43
|
+
*
|
|
44
|
+
* The stable `_id<N>` suffix identifies the candidate Pipeline. The targeted
|
|
45
|
+
* source-file lookup then verifies the complete slug before it is accepted.
|
|
46
|
+
*
|
|
47
|
+
* @param slug - Exact Pipeline basename exposed in `/bin`.
|
|
48
|
+
* @returns The registered invocation manifest for the exact Pipeline slug.
|
|
49
|
+
*/
|
|
50
|
+
export declare function pipelineManifestBySlug_get(slug: string): Promise<Result<PipelineManifest>>;
|
|
51
|
+
/** Runtime overlays accepted by `pipeline_run`. */
|
|
52
|
+
export interface PipelineRunOptions {
|
|
53
|
+
/** Compute placement baseline applied before node-specific overlays. */
|
|
54
|
+
globalCompute?: string;
|
|
55
|
+
/** Parsed sparse or complete registered-manifest YAML overlay. */
|
|
56
|
+
parameterFile?: unknown;
|
|
57
|
+
/** Explicit node-qualified values, with highest precedence. */
|
|
58
|
+
cliBindings?: PipelineInvocationBinding[];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Run a pipeline by name or ID, attaching it to a previous plugin instance.
|
|
39
62
|
*
|
|
40
63
|
* @param nameOrId - Pipeline name or numeric ID string.
|
|
41
|
-
* @param previousPluginInstId -
|
|
42
|
-
* @param
|
|
43
|
-
* @returns Result containing
|
|
64
|
+
* @param previousPluginInstId - Plugin instance to which pipeline roots attach.
|
|
65
|
+
* @param invocationOptions - Runtime overlays, or the legacy global compute string.
|
|
66
|
+
* @returns Result containing Workflow ID and created plugin instance IDs.
|
|
44
67
|
*/
|
|
45
|
-
export declare function pipeline_run(nameOrId: string, previousPluginInstId: number,
|
|
68
|
+
export declare function pipeline_run(nameOrId: string, previousPluginInstId: number, invocationOptions?: PipelineRunOptions | string): Promise<Result<WorkflowResult>>;
|
|
46
69
|
/**
|
|
47
70
|
* Fetches the YAML source of a registered pipeline by searching /PIPELINES/ for
|
|
48
71
|
* a file whose basename matches the pipeline name.
|
package/dist/pipelines/index.js
CHANGED
|
@@ -11,18 +11,44 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
11
11
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.pipelineDiagram_get = void 0;
|
|
14
|
+
exports.pipelineInvocation_prepare = exports.pipelineManifest_get = exports.pipelineDiagram_get = void 0;
|
|
15
15
|
exports.pipelines_list = pipelines_list;
|
|
16
16
|
exports.pipelines_listAll = pipelines_listAll;
|
|
17
17
|
exports.pipelineFields_get = pipelineFields_get;
|
|
18
18
|
exports.pipelines_getAll = pipelines_getAll;
|
|
19
|
+
exports.pipelineManifestBySlug_get = pipelineManifestBySlug_get;
|
|
19
20
|
exports.pipeline_run = pipeline_run;
|
|
20
21
|
exports.pipeline_sourceGet = pipeline_sourceGet;
|
|
21
22
|
exports.pipeline_getContent = pipeline_getContent;
|
|
22
23
|
const cumin_1 = require("@fnndsc/cumin");
|
|
23
24
|
var diagram_js_1 = require("./diagram.js");
|
|
24
25
|
Object.defineProperty(exports, "pipelineDiagram_get", { enumerable: true, get: function () { return diagram_js_1.pipelineDiagram_get; } });
|
|
26
|
+
var manifest_js_1 = require("./manifest.js");
|
|
27
|
+
Object.defineProperty(exports, "pipelineManifest_get", { enumerable: true, get: function () { return manifest_js_1.pipelineManifest_get; } });
|
|
28
|
+
var invocation_js_1 = require("./invocation.js");
|
|
29
|
+
Object.defineProperty(exports, "pipelineInvocation_prepare", { enumerable: true, get: function () { return invocation_js_1.pipelineInvocation_prepare; } });
|
|
25
30
|
const axios_1 = __importDefault(require("axios"));
|
|
31
|
+
const manifest_js_2 = require("./manifest.js");
|
|
32
|
+
const invocation_js_2 = require("./invocation.js");
|
|
33
|
+
const PIPELINE_SLUG_TTL_MS = 5 * 60 * 1000;
|
|
34
|
+
const pipelineSlugCaches = new WeakMap();
|
|
35
|
+
function pipelineSlugCache_get(client) {
|
|
36
|
+
let cache = pipelineSlugCaches.get(client);
|
|
37
|
+
if (cache === undefined) {
|
|
38
|
+
cache = new Map();
|
|
39
|
+
pipelineSlugCaches.set(client, cache);
|
|
40
|
+
}
|
|
41
|
+
return cache;
|
|
42
|
+
}
|
|
43
|
+
function pipelineSlug_create(pipeline, sourceFilename) {
|
|
44
|
+
const sourceBase = sourceFilename
|
|
45
|
+
?.split('/').pop()?.replace(/\.(ya?ml)$/i, '');
|
|
46
|
+
const generatedBase = pipeline.name
|
|
47
|
+
.replace(/[^a-zA-Z0-9]/g, '_')
|
|
48
|
+
.replace(/_+/g, '_')
|
|
49
|
+
.replace(/^_|_$/g, '');
|
|
50
|
+
return `${sourceBase ?? generatedBase}_id${pipeline.id}`;
|
|
51
|
+
}
|
|
26
52
|
/**
|
|
27
53
|
* Lists registered pipelines, optionally filtered by name substring.
|
|
28
54
|
* Returns FilteredResourceData for table rendering compatibility.
|
|
@@ -75,69 +101,105 @@ async function pipelines_getAll() {
|
|
|
75
101
|
]);
|
|
76
102
|
if (!pipelinesResult.ok)
|
|
77
103
|
return (0, cumin_1.Err)();
|
|
78
|
-
const
|
|
104
|
+
const idToSourceFilename = new Map();
|
|
79
105
|
if (sourceFilesResponse) {
|
|
80
106
|
for (const item of sourceFilesResponse.getItems()) {
|
|
81
107
|
const { fname, pipeline_id } = item.data;
|
|
82
108
|
if (pipeline_id && fname) {
|
|
83
|
-
|
|
84
|
-
const slug = base.replace(/\.(ya?ml)$/i, '');
|
|
85
|
-
idToSlug.set(pipeline_id, slug);
|
|
109
|
+
idToSourceFilename.set(pipeline_id, fname);
|
|
86
110
|
}
|
|
87
111
|
}
|
|
88
112
|
}
|
|
89
|
-
const records = pipelinesResult.value.map((pipeline) => {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
.replace(/_+/g, '_')
|
|
94
|
-
.replace(/^_|_$/g, '');
|
|
95
|
-
const base = sourceSlug ?? generatedSlug;
|
|
96
|
-
return {
|
|
97
|
-
...pipeline,
|
|
98
|
-
slug: `${base}_id${pipeline.id}`,
|
|
99
|
-
};
|
|
100
|
-
});
|
|
113
|
+
const records = pipelinesResult.value.map((pipeline) => ({
|
|
114
|
+
...pipeline,
|
|
115
|
+
slug: pipelineSlug_create(pipeline, idToSourceFilename.get(pipeline.id)),
|
|
116
|
+
}));
|
|
101
117
|
return (0, cumin_1.Ok)(records);
|
|
102
118
|
}
|
|
103
119
|
/**
|
|
104
|
-
*
|
|
120
|
+
* Project one exact Pipeline executable slug without listing every Pipeline.
|
|
105
121
|
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
* @
|
|
122
|
+
* The stable `_id<N>` suffix identifies the candidate Pipeline. The targeted
|
|
123
|
+
* source-file lookup then verifies the complete slug before it is accepted.
|
|
124
|
+
*
|
|
125
|
+
* @param slug - Exact Pipeline basename exposed in `/bin`.
|
|
126
|
+
* @returns The registered invocation manifest for the exact Pipeline slug.
|
|
110
127
|
*/
|
|
111
|
-
async function
|
|
112
|
-
const
|
|
113
|
-
if (
|
|
128
|
+
async function pipelineManifestBySlug_get(slug) {
|
|
129
|
+
const match = slug.match(/_id(\d+)$/);
|
|
130
|
+
if (match === null)
|
|
114
131
|
return (0, cumin_1.Err)();
|
|
115
|
-
const
|
|
116
|
-
const
|
|
117
|
-
if (
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
132
|
+
const pipelineID = Number(match[1]);
|
|
133
|
+
const client = await cumin_1.chrisConnection.client_get();
|
|
134
|
+
if (!client) {
|
|
135
|
+
cumin_1.errorStack.stack_push('error', 'Not connected to ChRIS');
|
|
136
|
+
return (0, cumin_1.Err)();
|
|
137
|
+
}
|
|
138
|
+
const cache = pipelineSlugCache_get(client);
|
|
139
|
+
const cached = cache.get(slug);
|
|
140
|
+
if (cached !== undefined && cached.expiresAt > Date.now()) {
|
|
141
|
+
return (0, manifest_js_2.pipelineManifestForPipeline_get)(cached.record, cached.resource, { detail: 'registered' });
|
|
142
|
+
}
|
|
143
|
+
if (cached !== undefined)
|
|
144
|
+
cache.delete(slug);
|
|
145
|
+
try {
|
|
146
|
+
const typedClient = client;
|
|
147
|
+
const [pipelineResource, sourceFiles] = await Promise.all([
|
|
148
|
+
typedClient.getPipeline(pipelineID),
|
|
149
|
+
typedClient.getPipelineSourceFiles({ pipeline_id: pipelineID, limit: 1000 }),
|
|
150
|
+
]);
|
|
151
|
+
if (pipelineResource === null || pipelineResource.data === undefined)
|
|
121
152
|
return (0, cumin_1.Err)();
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
piping_id: p.data.id,
|
|
130
|
-
compute_resource_name: computeOverride,
|
|
131
|
-
}));
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
catch (error) {
|
|
135
|
-
const msg = error instanceof Error ? error.message : String(error);
|
|
136
|
-
cumin_1.errorStack.stack_push('error', `pipeline_run: compute override failed: ${msg}`);
|
|
153
|
+
const pipeline = pipelineResource.data;
|
|
154
|
+
const sourceItems = sourceFiles.getItems();
|
|
155
|
+
const source = sourceItems.find((item) => item.data.pipeline_id === pipelineID)
|
|
156
|
+
?? sourceItems.find((item) => item.data.pipeline_name === pipeline.name)
|
|
157
|
+
?? (sourceItems.length === 1 ? sourceItems[0] : undefined);
|
|
158
|
+
const exactSlug = pipelineSlug_create(pipeline, source?.data.fname);
|
|
159
|
+
if (exactSlug !== slug)
|
|
137
160
|
return (0, cumin_1.Err)();
|
|
138
|
-
}
|
|
161
|
+
const record = { ...pipeline, slug: exactSlug };
|
|
162
|
+
cache.set(slug, {
|
|
163
|
+
record,
|
|
164
|
+
resource: pipelineResource,
|
|
165
|
+
expiresAt: Date.now() + PIPELINE_SLUG_TTL_MS,
|
|
166
|
+
});
|
|
167
|
+
return (0, manifest_js_2.pipelineManifestForPipeline_get)(record, pipelineResource, { detail: 'registered' });
|
|
139
168
|
}
|
|
140
|
-
|
|
169
|
+
catch (error) {
|
|
170
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
171
|
+
cumin_1.errorStack.stack_push('error', `pipelineManifestBySlug_get: ${message}`);
|
|
172
|
+
return (0, cumin_1.Err)();
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Run a pipeline by name or ID, attaching it to a previous plugin instance.
|
|
177
|
+
*
|
|
178
|
+
* @param nameOrId - Pipeline name or numeric ID string.
|
|
179
|
+
* @param previousPluginInstId - Plugin instance to which pipeline roots attach.
|
|
180
|
+
* @param invocationOptions - Runtime overlays, or the legacy global compute string.
|
|
181
|
+
* @returns Result containing Workflow ID and created plugin instance IDs.
|
|
182
|
+
*/
|
|
183
|
+
async function pipeline_run(nameOrId, previousPluginInstId, invocationOptions = {}) {
|
|
184
|
+
const normalized = typeof invocationOptions === 'string'
|
|
185
|
+
? { globalCompute: invocationOptions }
|
|
186
|
+
: invocationOptions;
|
|
187
|
+
const manifestResult = await (0, manifest_js_2.pipelineManifest_get)(nameOrId);
|
|
188
|
+
if (!manifestResult.ok)
|
|
189
|
+
return (0, cumin_1.Err)();
|
|
190
|
+
const prepared = (0, invocation_js_2.pipelineInvocation_prepare)({
|
|
191
|
+
manifest: manifestResult.value,
|
|
192
|
+
globalCompute: normalized.globalCompute,
|
|
193
|
+
parameterFile: normalized.parameterFile,
|
|
194
|
+
cliBindings: normalized.cliBindings,
|
|
195
|
+
});
|
|
196
|
+
if (!prepared.ok)
|
|
197
|
+
return (0, cumin_1.Err)();
|
|
198
|
+
const options = {
|
|
199
|
+
previousPluginInstId,
|
|
200
|
+
nodeOverrides: prepared.value.nodeOverrides,
|
|
201
|
+
};
|
|
202
|
+
return (0, cumin_1.pipeline_createWorkflow)(prepared.value.pipelineID, options);
|
|
141
203
|
}
|
|
142
204
|
/**
|
|
143
205
|
* Fetches the YAML source of a registered pipeline by searching /PIPELINES/ for
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pipelines/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pipelines/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Pure preparation of one registered Pipeline Workflow invocation.
|
|
3
|
+
*
|
|
4
|
+
* This module validates sparse or complete YAML overlays, applies global/file/CLI
|
|
5
|
+
* precedence, and produces the complete `nodes_info` payload CUBE expects. It
|
|
6
|
+
* assumes the manifest has already been fetched from the authenticated CUBE.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
import { Result } from '@fnndsc/cumin';
|
|
11
|
+
import type { PipelineManifest } from './manifest.js';
|
|
12
|
+
/** Hosted plugin parameter schema used to validate one runtime binding. */
|
|
13
|
+
export interface PipelineParameterDefinition {
|
|
14
|
+
/** Hosted parameter name. */
|
|
15
|
+
name: string;
|
|
16
|
+
/** CUBE parameter type. */
|
|
17
|
+
type: string;
|
|
18
|
+
/** Whether the hosted plugin permits omission. */
|
|
19
|
+
optional: boolean;
|
|
20
|
+
/** Plugin-declared default. */
|
|
21
|
+
default?: unknown;
|
|
22
|
+
/** Plugin-declared help text. */
|
|
23
|
+
help?: string;
|
|
24
|
+
}
|
|
25
|
+
/** Surface-neutral binding of one value to one pipeline node field. */
|
|
26
|
+
export interface PipelineInvocationBinding {
|
|
27
|
+
/** Unique node title or exact `@<piping-id>` selector. */
|
|
28
|
+
node: string;
|
|
29
|
+
/** Hosted parameter name or reserved execution-control name. */
|
|
30
|
+
field: string;
|
|
31
|
+
/** Typed runtime value. */
|
|
32
|
+
value: unknown;
|
|
33
|
+
}
|
|
34
|
+
/** Complete CUBE `nodes_info` entry for one plugin piping. */
|
|
35
|
+
export interface PreparedWorkflowNode {
|
|
36
|
+
/** CUBE plugin piping ID. */
|
|
37
|
+
piping_id: number;
|
|
38
|
+
/** Authored node title. */
|
|
39
|
+
title: string;
|
|
40
|
+
/** Effective compute placement. */
|
|
41
|
+
compute_resource_name: string;
|
|
42
|
+
/** Effective CPU limit. */
|
|
43
|
+
cpu_limit?: unknown;
|
|
44
|
+
/** Effective memory limit. */
|
|
45
|
+
memory_limit?: unknown;
|
|
46
|
+
/** Effective GPU limit. */
|
|
47
|
+
gpu_limit?: unknown;
|
|
48
|
+
/** Effective worker count. */
|
|
49
|
+
number_of_workers?: unknown;
|
|
50
|
+
/** Complete registered parameter values plus runtime overrides. */
|
|
51
|
+
plugin_parameter_defaults: Array<{
|
|
52
|
+
name: string;
|
|
53
|
+
default: unknown;
|
|
54
|
+
}>;
|
|
55
|
+
}
|
|
56
|
+
/** Fully resolved Pipeline Workflow creation input. */
|
|
57
|
+
export interface PreparedPipelineInvocation {
|
|
58
|
+
/** Registered Pipeline ID. */
|
|
59
|
+
pipelineID: number;
|
|
60
|
+
/** Complete merged Workflow node override set. */
|
|
61
|
+
nodeOverrides: PreparedWorkflowNode[];
|
|
62
|
+
}
|
|
63
|
+
/** Inputs accepted by pure pipeline invocation preparation. */
|
|
64
|
+
export interface PipelineInvocationPrepareOptions {
|
|
65
|
+
/** Selected registered Pipeline manifest. */
|
|
66
|
+
manifest: PipelineManifest;
|
|
67
|
+
/** Baseline compute placement for every piping. */
|
|
68
|
+
globalCompute?: string;
|
|
69
|
+
/** Parsed CFS YAML overlay. */
|
|
70
|
+
parameterFile?: unknown;
|
|
71
|
+
/** Explicit node-qualified command or GUI bindings. */
|
|
72
|
+
cliBindings?: PipelineInvocationBinding[];
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Build the complete `nodes_info` override set for one Workflow invocation.
|
|
76
|
+
*
|
|
77
|
+
* @param options - Registered manifest and optional global, file, and CLI overlays.
|
|
78
|
+
* @returns Prepared invocation, or an error after strict validation fails.
|
|
79
|
+
*/
|
|
80
|
+
export declare function pipelineInvocation_prepare(options: PipelineInvocationPrepareOptions): Result<PreparedPipelineInvocation>;
|