@fnndsc/salsa 3.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +164 -0
  3. package/dist/compute/index.d.ts +17 -0
  4. package/dist/compute/index.js +33 -0
  5. package/dist/compute/index.js.map +1 -0
  6. package/dist/connect/index.d.ts +25 -0
  7. package/dist/connect/index.js +27 -0
  8. package/dist/connect/index.js.map +1 -0
  9. package/dist/context/index.d.ts +38 -0
  10. package/dist/context/index.js +58 -0
  11. package/dist/context/index.js.map +1 -0
  12. package/dist/feeds/index.d.ts +60 -0
  13. package/dist/feeds/index.js +101 -0
  14. package/dist/feeds/index.js.map +1 -0
  15. package/dist/files/index.d.ts +179 -0
  16. package/dist/files/index.js +562 -0
  17. package/dist/files/index.js.map +1 -0
  18. package/dist/files/pacs_content.d.ts +29 -0
  19. package/dist/files/pacs_content.js +121 -0
  20. package/dist/files/pacs_content.js.map +1 -0
  21. package/dist/files/pipeline_content.d.ts +22 -0
  22. package/dist/files/pipeline_content.js +31 -0
  23. package/dist/files/pipeline_content.js.map +1 -0
  24. package/dist/files/regular_content.d.ts +33 -0
  25. package/dist/files/regular_content.js +177 -0
  26. package/dist/files/regular_content.js.map +1 -0
  27. package/dist/groups/index.d.ts +21 -0
  28. package/dist/groups/index.js +37 -0
  29. package/dist/groups/index.js.map +1 -0
  30. package/dist/index.d.ts +21 -0
  31. package/dist/index.js +42 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/jobs/index.d.ts +6 -0
  34. package/dist/jobs/index.js +17 -0
  35. package/dist/jobs/index.js.map +1 -0
  36. package/dist/jobs/jobOps.d.ts +108 -0
  37. package/dist/jobs/jobOps.js +307 -0
  38. package/dist/jobs/jobOps.js.map +1 -0
  39. package/dist/pacs/index.d.ts +64 -0
  40. package/dist/pacs/index.js +91 -0
  41. package/dist/pacs/index.js.map +1 -0
  42. package/dist/pacs/resultDecode.d.ts +13 -0
  43. package/dist/pacs/resultDecode.js +19 -0
  44. package/dist/pacs/resultDecode.js.map +1 -0
  45. package/dist/pipelines/index.d.ts +58 -0
  46. package/dist/pipelines/index.js +194 -0
  47. package/dist/pipelines/index.js.map +1 -0
  48. package/dist/plugininstances/index.d.ts +15 -0
  49. package/dist/plugininstances/index.js +27 -0
  50. package/dist/plugininstances/index.js.map +1 -0
  51. package/dist/pluginmetas/index.d.ts +21 -0
  52. package/dist/pluginmetas/index.js +37 -0
  53. package/dist/pluginmetas/index.js.map +1 -0
  54. package/dist/plugins/index.d.ts +118 -0
  55. package/dist/plugins/index.js +247 -0
  56. package/dist/plugins/index.js.map +1 -0
  57. package/dist/plugins/internal/plugin_executeContinueFeed.d.ts +17 -0
  58. package/dist/plugins/internal/plugin_executeContinueFeed.js +65 -0
  59. package/dist/plugins/internal/plugin_executeContinueFeed.js.map +1 -0
  60. package/dist/plugins/internal/plugin_executeNewFeed.d.ts +32 -0
  61. package/dist/plugins/internal/plugin_executeNewFeed.js +97 -0
  62. package/dist/plugins/internal/plugin_executeNewFeed.js.map +1 -0
  63. package/dist/plugins/peer_search.d.ts +65 -0
  64. package/dist/plugins/peer_search.js +94 -0
  65. package/dist/plugins/peer_search.js.map +1 -0
  66. package/dist/plugins/plugin_executeInPlace.d.ts +69 -0
  67. package/dist/plugins/plugin_executeInPlace.js +66 -0
  68. package/dist/plugins/plugin_executeInPlace.js.map +1 -0
  69. package/dist/plugins/plugin_register.d.ts +64 -0
  70. package/dist/plugins/plugin_register.js +121 -0
  71. package/dist/plugins/plugin_register.js.map +1 -0
  72. package/dist/plugins/store_import.d.ts +64 -0
  73. package/dist/plugins/store_import.js +196 -0
  74. package/dist/plugins/store_import.js.map +1 -0
  75. package/dist/store/index.d.ts +15 -0
  76. package/dist/store/index.js +37 -0
  77. package/dist/store/index.js.map +1 -0
  78. package/dist/tags/index.d.ts +21 -0
  79. package/dist/tags/index.js +37 -0
  80. package/dist/tags/index.js.map +1 -0
  81. package/dist/vfs/dispatcher.d.ts +83 -0
  82. package/dist/vfs/dispatcher.js +192 -0
  83. package/dist/vfs/dispatcher.js.map +1 -0
  84. package/dist/vfs/index.d.ts +9 -0
  85. package/dist/vfs/index.js +26 -0
  86. package/dist/vfs/index.js.map +1 -0
  87. package/dist/vfs/provider.d.ts +80 -0
  88. package/dist/vfs/provider.js +11 -0
  89. package/dist/vfs/provider.js.map +1 -0
  90. package/dist/vfs/providers/etc.d.ts +44 -0
  91. package/dist/vfs/providers/etc.js +119 -0
  92. package/dist/vfs/providers/etc.js.map +1 -0
  93. package/dist/vfs/providers/native.d.ts +34 -0
  94. package/dist/vfs/providers/native.js +168 -0
  95. package/dist/vfs/providers/native.js.map +1 -0
  96. package/dist/vfs/providers/pacs.d.ts +56 -0
  97. package/dist/vfs/providers/pacs.js +413 -0
  98. package/dist/vfs/providers/pacs.js.map +1 -0
  99. package/dist/vfs/providers/pacsHelpers.d.ts +27 -0
  100. package/dist/vfs/providers/pacsHelpers.js +108 -0
  101. package/dist/vfs/providers/pacsHelpers.js.map +1 -0
  102. package/dist/vfs/providers/pacs_content.d.ts +27 -0
  103. package/dist/vfs/providers/pacs_content.js +137 -0
  104. package/dist/vfs/providers/pacs_content.js.map +1 -0
  105. package/dist/vfs/providers/proc.d.ts +62 -0
  106. package/dist/vfs/providers/proc.js +478 -0
  107. package/dist/vfs/providers/proc.js.map +1 -0
  108. package/dist/workflows/index.d.ts +21 -0
  109. package/dist/workflows/index.js +37 -0
  110. package/dist/workflows/index.js.map +1 -0
  111. package/package.json +57 -0
@@ -0,0 +1,478 @@
1
+ "use strict";
2
+ /**
3
+ * @file /proc VFS Provider
4
+ *
5
+ * Surfaces ChRIS plugin instances as a navigable DAG under /proc/jobs/.
6
+ * Backed by ProcCache (topology only — no status stored).
7
+ *
8
+ * Status is always fetched live:
9
+ * - cat .../status → getPluginInstance(id)
10
+ * - ls -l /proc/jobs/N → jobs_statusBatch(allNodeIDs) — parallel
11
+ * - ls /proc/jobs → aggregate from ProcFeed job counters (no API)
12
+ *
13
+ * @module
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.ProcVfsProvider = void 0;
17
+ exports.feedStatus_derive = feedStatus_derive;
18
+ exports.procPath_parse = procPath_parse;
19
+ exports.procFeed_ensureLoaded = procFeed_ensureLoaded;
20
+ exports.procTopology_warmup = procTopology_warmup;
21
+ exports.procCache_refresh = procCache_refresh;
22
+ const cumin_1 = require("@fnndsc/cumin");
23
+ const index_js_1 = require("../../jobs/index.js");
24
+ /** Virtual filenames inside each instance directory. */
25
+ const INSTANCE_FILES = new Set(['status', 'params', 'log']);
26
+ /** Virtual filenames inside each feed directory. */
27
+ const FEED_FILES = new Set(['status', 'title']);
28
+ const PAGE = 100;
29
+ // ── Cache build ────────────────────────────────────────────────────────────
30
+ /**
31
+ * Builds the feed index (fast). Fetches all feeds with job counters.
32
+ * Instance topology is loaded separately via procTopology_warmup().
33
+ */
34
+ async function procCache_build() {
35
+ const cache = (0, cumin_1.procCache_get)();
36
+ cache.cache_clear();
37
+ const client = await cumin_1.chrisConnection.client_get();
38
+ if (!client) {
39
+ cumin_1.errorStack.stack_push('error', 'procCache_build: not connected');
40
+ return;
41
+ }
42
+ const typedClient = client;
43
+ let feedOffset = 0;
44
+ while (true) {
45
+ const feedPage = await typedClient.getFeeds({ limit: PAGE, offset: feedOffset });
46
+ const chunk = feedPage.data ?? [];
47
+ for (const f of chunk) {
48
+ cache.feed_add({
49
+ id: Number(f.id),
50
+ title: String(f.name),
51
+ creationDate: String(f.creation_date ?? ''),
52
+ finishedJobs: Number(f.finished_jobs ?? 0),
53
+ erroredJobs: Number(f.errored_jobs ?? 0),
54
+ startedJobs: Number(f.started_jobs ?? 0),
55
+ scheduledJobs: Number(f.scheduled_jobs ?? 0),
56
+ cancelledJobs: Number(f.cancelled_jobs ?? 0),
57
+ createdJobs: Number(f.created_jobs ?? 0),
58
+ });
59
+ }
60
+ if (chunk.length < PAGE)
61
+ break;
62
+ feedOffset += PAGE;
63
+ }
64
+ cache.built_set();
65
+ }
66
+ /** Ensures the feed index is built, building it on first access. */
67
+ async function cache_ensure() {
68
+ if (!(0, cumin_1.procCache_get)().built) {
69
+ await procCache_build();
70
+ }
71
+ }
72
+ /**
73
+ * Loads instance topology for a single feed.
74
+ * Uses in-flight map to prevent duplicate API calls.
75
+ */
76
+ async function feedInstances_load(feedID) {
77
+ const cache = (0, cumin_1.procCache_get)();
78
+ const client = await cumin_1.chrisConnection.client_get();
79
+ if (!client)
80
+ return;
81
+ const typedClient = client;
82
+ const instances = [];
83
+ let offset = 0;
84
+ while (true) {
85
+ const page = await typedClient.getPluginInstances({
86
+ feed_id: feedID, limit: PAGE, offset,
87
+ });
88
+ const chunk = page.data ?? [];
89
+ instances.push(...chunk);
90
+ if (chunk.length < PAGE)
91
+ break;
92
+ offset += PAGE;
93
+ }
94
+ for (const inst of instances) {
95
+ const prevID = (inst.previous_id !== null && inst.previous_id !== undefined)
96
+ ? Number(inst.previous_id)
97
+ : null;
98
+ cache.instance_add({
99
+ id: Number(inst.id),
100
+ feedID: Number(inst.feed_id),
101
+ parentID: prevID,
102
+ pluginName: String(inst.plugin_name),
103
+ params: null,
104
+ });
105
+ }
106
+ cache.topologyLoaded_mark(feedID);
107
+ }
108
+ /**
109
+ * Ensures topology for a feed is loaded.
110
+ * Per-feed loads proceed immediately even while the global sweep is running —
111
+ * instance_add is idempotent so concurrent additions are safe.
112
+ */
113
+ async function feedInstances_ensureLoaded(feedID) {
114
+ const cache = (0, cumin_1.procCache_get)();
115
+ if (cache.topologyLoaded_has(feedID))
116
+ return;
117
+ const inflight = cache.loading_get(feedID);
118
+ if (inflight)
119
+ return inflight;
120
+ const promise = feedInstances_load(feedID);
121
+ cache.loading_set(feedID, promise);
122
+ await promise;
123
+ cache.loading_clear(feedID);
124
+ }
125
+ // ── Aggregate status ───────────────────────────────────────────────────────
126
+ /** Derives aggregate feed status from stored job counters — no API call. */
127
+ function feedStatus_derive(feed) {
128
+ if (feed.erroredJobs > 0)
129
+ return 'finishedWithError';
130
+ const running = feed.startedJobs + feed.scheduledJobs + feed.createdJobs;
131
+ if (running > 0)
132
+ return 'running';
133
+ if (feed.cancelledJobs > 0 && feed.finishedJobs === 0)
134
+ return 'cancelled';
135
+ if (feed.finishedJobs > 0)
136
+ return 'finishedSuccessfully';
137
+ return 'empty';
138
+ }
139
+ // ── Path parsing ───────────────────────────────────────────────────────────
140
+ function procPath_parse(pathStr) {
141
+ const parts = pathStr.replace(/^\/proc\/feeds\/?/, '').split('/').filter(Boolean);
142
+ let feedID = null;
143
+ let instanceID = null;
144
+ let virtualFile = null;
145
+ if (parts.length >= 1) {
146
+ const feedMatch = parts[0].match(/^feed_(\d+)$/);
147
+ if (feedMatch)
148
+ feedID = parseInt(feedMatch[1], 10);
149
+ }
150
+ if (parts.length >= 2) {
151
+ const lastPart = parts[parts.length - 1];
152
+ if (FEED_FILES.has(lastPart) || INSTANCE_FILES.has(lastPart)) {
153
+ virtualFile = lastPart;
154
+ if (parts.length >= 3) {
155
+ const instMatch = parts[parts.length - 2].match(/_(\d+)$/);
156
+ if (instMatch)
157
+ instanceID = parseInt(instMatch[1], 10);
158
+ }
159
+ }
160
+ else {
161
+ const instMatch = lastPart.match(/_(\d+)$/);
162
+ if (instMatch)
163
+ instanceID = parseInt(instMatch[1], 10);
164
+ }
165
+ }
166
+ return { feedID, instanceID, virtualFile };
167
+ }
168
+ /** Formats instance params as key=value lines. */
169
+ function params_render(inst) {
170
+ if (!inst.params || Object.keys(inst.params).length === 0)
171
+ return '(no parameters)';
172
+ return Object.entries(inst.params)
173
+ .map(([k, v]) => `${k}=${String(v)}`)
174
+ .join('\n');
175
+ }
176
+ /** Collects all instance IDs for a feed recursively. */
177
+ function getAllInstanceIDs_forFeed(feedID, cache) {
178
+ const result = [];
179
+ const queue = [...cache.feedRoots_get(feedID)];
180
+ while (queue.length > 0) {
181
+ const id = queue.shift();
182
+ result.push(id);
183
+ queue.push(...cache.children_get(id));
184
+ }
185
+ return result;
186
+ }
187
+ // ── Provider ───────────────────────────────────────────────────────────────
188
+ /**
189
+ * VFS provider exposing running jobs and feeds under the /proc namespace.
190
+ */
191
+ class ProcVfsProvider {
192
+ prefix = '/proc/jobs';
193
+ async list(pathStr, _options) {
194
+ await cache_ensure();
195
+ const cache = (0, cumin_1.procCache_get)();
196
+ const clean = pathStr.replace(/\/$/, '');
197
+ // /proc/jobs — list all feeds with aggregate status from counters
198
+ if (clean === '/proc/jobs') {
199
+ const items = cache.feedIDs_get().map((feedID) => {
200
+ const feed = cache.feed_get(feedID);
201
+ const status = feed ? feedStatus_derive(feed) : 'unknown';
202
+ return {
203
+ name: `feed_${feedID}`,
204
+ type: 'job',
205
+ size: 0,
206
+ owner: '',
207
+ date: '',
208
+ title: feed?.title ?? `feed_${feedID}`,
209
+ status,
210
+ };
211
+ });
212
+ return (0, cumin_1.Ok)(items);
213
+ }
214
+ const { feedID, instanceID } = procPath_parse(clean);
215
+ // /proc/jobs/feed_N — list root instances + feed virtual files
216
+ if (feedID !== null && instanceID === null) {
217
+ await feedInstances_ensureLoaded(feedID);
218
+ const feed = cache.feed_get(feedID);
219
+ if (!feed)
220
+ return (0, cumin_1.Ok)([]);
221
+ // Collect all root instance IDs to batch-fetch statuses
222
+ const rootIDs = cache.feedRoots_get(feedID);
223
+ const statuses = rootIDs.length > 0
224
+ ? await (0, index_js_1.jobs_statusBatch)(rootIDs)
225
+ : new Map();
226
+ const items = [];
227
+ items.push({ name: 'status', type: 'file', size: 0, owner: '', date: '' });
228
+ items.push({ name: 'title', type: 'file', size: 0, owner: '', date: '' });
229
+ for (const rootID of rootIDs) {
230
+ const inst = cache.instance_get(rootID);
231
+ if (!inst)
232
+ continue;
233
+ items.push({
234
+ name: `${inst.pluginName}_${rootID}`,
235
+ type: 'job',
236
+ size: 0,
237
+ owner: '',
238
+ date: '',
239
+ status: statuses.get(rootID) ?? 'unknown',
240
+ });
241
+ }
242
+ return (0, cumin_1.Ok)(items);
243
+ }
244
+ // /proc/jobs/feed_N/plugin_ID — list children + virtual files
245
+ if (feedID !== null && instanceID !== null) {
246
+ await feedInstances_ensureLoaded(feedID);
247
+ const inst = cache.instance_get(instanceID);
248
+ if (!inst)
249
+ return (0, cumin_1.Ok)([]);
250
+ const childIDs = cache.children_get(instanceID);
251
+ const statuses = childIDs.length > 0
252
+ ? await (0, index_js_1.jobs_statusBatch)(childIDs)
253
+ : new Map();
254
+ const items = [];
255
+ items.push({ name: 'status', type: 'file', size: 0, owner: '', date: '' });
256
+ items.push({ name: 'params', type: 'file', size: 0, owner: '', date: '' });
257
+ items.push({ name: 'log', type: 'file', size: 0, owner: '', date: '' });
258
+ for (const childID of childIDs) {
259
+ const child = cache.instance_get(childID);
260
+ if (!child)
261
+ continue;
262
+ items.push({
263
+ name: `${child.pluginName}_${childID}`,
264
+ type: 'job',
265
+ size: 0,
266
+ owner: '',
267
+ date: '',
268
+ status: statuses.get(childID) ?? 'unknown',
269
+ });
270
+ }
271
+ return (0, cumin_1.Ok)(items);
272
+ }
273
+ return (0, cumin_1.Ok)([]);
274
+ }
275
+ async read(pathStr) {
276
+ await cache_ensure();
277
+ const cache = (0, cumin_1.procCache_get)();
278
+ const clean = pathStr.replace(/\/$/, '');
279
+ const { feedID, instanceID, virtualFile } = procPath_parse(clean);
280
+ // Feed-level virtual files
281
+ if (feedID !== null && instanceID === null && virtualFile !== null) {
282
+ const feed = cache.feed_get(feedID);
283
+ if (!feed)
284
+ return (0, cumin_1.Ok)('');
285
+ if (virtualFile === 'status')
286
+ return (0, cumin_1.Ok)(feedStatus_derive(feed));
287
+ if (virtualFile === 'title')
288
+ return (0, cumin_1.Ok)(feed.title);
289
+ return (0, cumin_1.Ok)('');
290
+ }
291
+ // Instance-level virtual files — all live or cached-on-first-read
292
+ if (instanceID !== null && virtualFile !== null) {
293
+ await feedInstances_ensureLoaded(feedID);
294
+ const inst = cache.instance_get(instanceID);
295
+ if (!inst)
296
+ return (0, cumin_1.Ok)('');
297
+ if (virtualFile === 'status') {
298
+ const fresh = await (0, index_js_1.job_statusFetch)(instanceID);
299
+ return (0, cumin_1.Ok)(fresh.ok ? fresh.value : 'unknown');
300
+ }
301
+ if (virtualFile === 'params') {
302
+ if (inst.params === null) {
303
+ // Fetch params on first read and cache permanently
304
+ const client = await cumin_1.chrisConnection.client_get();
305
+ if (client) {
306
+ try {
307
+ const raw = await client.getPluginInstance(instanceID);
308
+ if (raw?.data) {
309
+ const p = { ...raw.data };
310
+ delete p['id'];
311
+ delete p['feed_id'];
312
+ delete p['plugin_name'];
313
+ delete p['status'];
314
+ delete p['previous_id'];
315
+ cache.params_update(instanceID, p);
316
+ }
317
+ }
318
+ catch { /* leave null */ }
319
+ }
320
+ }
321
+ return (0, cumin_1.Ok)(params_render(inst));
322
+ }
323
+ if (virtualFile === 'log') {
324
+ const logResult = await (0, index_js_1.job_logFetch)(instanceID);
325
+ return (0, cumin_1.Ok)(logResult.ok ? logResult.value : '(log unavailable)');
326
+ }
327
+ }
328
+ return (0, cumin_1.Ok)('');
329
+ }
330
+ async rm(pathStr, _options) {
331
+ await cache_ensure();
332
+ const cache = (0, cumin_1.procCache_get)();
333
+ const clean = pathStr.replace(/\/$/, '');
334
+ const { feedID, instanceID } = procPath_parse(clean);
335
+ if (feedID !== null && instanceID === null) {
336
+ const allIDs = getAllInstanceIDs_forFeed(feedID, cache);
337
+ const statusMap = await (0, index_js_1.jobs_statusBatch)(allIDs);
338
+ await Promise.all(allIDs.map(async (id) => {
339
+ const s = statusMap.get(id) ?? '';
340
+ if (!['finishedSuccessfully', 'finishedWithError', 'cancelled'].includes(s)) {
341
+ await (0, index_js_1.job_cancel)(id);
342
+ }
343
+ }));
344
+ cache.feed_remove(feedID);
345
+ return true;
346
+ }
347
+ if (instanceID !== null) {
348
+ const statusResult = await (0, index_js_1.job_statusFetch)(instanceID);
349
+ const status = statusResult.ok ? statusResult.value : '';
350
+ const isTerminal = ['finishedSuccessfully', 'finishedWithError', 'cancelled'].includes(status);
351
+ let result;
352
+ if (!isTerminal) {
353
+ result = await (0, index_js_1.job_cancel)(instanceID);
354
+ }
355
+ else {
356
+ result = await (0, index_js_1.job_delete)(instanceID);
357
+ if (result.ok)
358
+ cache.instance_remove(instanceID);
359
+ }
360
+ return result.ok;
361
+ }
362
+ return false;
363
+ }
364
+ async cp(_src, _dst, _options) { return false; }
365
+ async mv(_src, _dst) { return false; }
366
+ async mkdir(_pathStr) { return false; }
367
+ async touch(_pathStr) { return false; }
368
+ async upload(_localPath, _remotePath) { return false; }
369
+ async write(_pathStr, _content) { return false; }
370
+ }
371
+ exports.ProcVfsProvider = ProcVfsProvider;
372
+ /**
373
+ * Ensures instance topology is loaded for a feed without clearing existing data.
374
+ * Use this from proc find — it respects already-loaded feeds and the in-flight map.
375
+ * Use procCache_refresh(feedID) only when a forced reload is desired.
376
+ */
377
+ async function procFeed_ensureLoaded(feedID) {
378
+ const cache = (0, cumin_1.procCache_get)();
379
+ if (!cache.feed_get(feedID)) {
380
+ cache.feed_add({
381
+ id: feedID, title: `feed_${feedID}`, creationDate: '',
382
+ finishedJobs: 0, erroredJobs: 0, startedJobs: 0,
383
+ scheduledJobs: 0, cancelledJobs: 0, createdJobs: 0,
384
+ });
385
+ }
386
+ await feedInstances_ensureLoaded(feedID);
387
+ }
388
+ // ── Public API ─────────────────────────────────────────────────────────────
389
+ /**
390
+ * Background topology warm-up — single paginated sweep of all plugin instances
391
+ * across all feeds. Replaces the per-feed fan-out that was O(feeds) round trips.
392
+ *
393
+ * Registers itself as the active sweep so that any concurrent
394
+ * feedInstances_ensureLoaded call waits for this sweep rather than launching
395
+ * its own per-feed API call.
396
+ */
397
+ async function procTopology_warmup() {
398
+ await cache_ensure();
399
+ const cache = (0, cumin_1.procCache_get)();
400
+ const client = await cumin_1.chrisConnection.client_get();
401
+ if (!client)
402
+ return;
403
+ cache.warmup_progress(0, 0);
404
+ const typedClient = client;
405
+ let offset = 0;
406
+ let loaded = 0;
407
+ const seenFeedIDs = new Set();
408
+ while (true) {
409
+ const page = await typedClient.getPluginInstances({
410
+ limit: PAGE, offset,
411
+ });
412
+ const chunk = page.data ?? [];
413
+ for (const inst of chunk) {
414
+ const feedID = Number(inst.feed_id);
415
+ const prevID = (inst.previous_id !== null && inst.previous_id !== undefined)
416
+ ? Number(inst.previous_id)
417
+ : null;
418
+ if (!cache.feed_get(feedID)) {
419
+ cache.feed_add({
420
+ id: feedID, title: `feed_${feedID}`, creationDate: '',
421
+ finishedJobs: 0, erroredJobs: 0, startedJobs: 0,
422
+ scheduledJobs: 0, cancelledJobs: 0, createdJobs: 0,
423
+ });
424
+ }
425
+ cache.instance_add({
426
+ id: Number(inst.id),
427
+ feedID,
428
+ parentID: prevID,
429
+ pluginName: String(inst.plugin_name),
430
+ params: null,
431
+ });
432
+ seenFeedIDs.add(feedID);
433
+ loaded++;
434
+ }
435
+ cache.warmup_progress(loaded, 0);
436
+ if (chunk.length < PAGE)
437
+ break;
438
+ offset += PAGE;
439
+ }
440
+ for (const feedID of seenFeedIDs) {
441
+ cache.topologyLoaded_mark(feedID);
442
+ }
443
+ cache.warmup_complete();
444
+ }
445
+ /**
446
+ * Rebuilds the ProcCache, optionally scoped to one feed.
447
+ */
448
+ async function procCache_refresh(feedID) {
449
+ if (feedID !== undefined) {
450
+ const cache = (0, cumin_1.procCache_get)();
451
+ cache.feed_remove(feedID);
452
+ // Re-fetch feed metadata with job counters
453
+ const client = await cumin_1.chrisConnection.client_get();
454
+ if (client) {
455
+ const typedClient = client;
456
+ const page = await typedClient.getFeeds({ id: feedID, limit: 1, offset: 0 });
457
+ const f = (page.data ?? [])[0];
458
+ if (f) {
459
+ cache.feed_add({
460
+ id: Number(f.id),
461
+ title: String(f.name),
462
+ creationDate: String(f.creation_date ?? ''),
463
+ finishedJobs: Number(f.finished_jobs ?? 0),
464
+ erroredJobs: Number(f.errored_jobs ?? 0),
465
+ startedJobs: Number(f.started_jobs ?? 0),
466
+ scheduledJobs: Number(f.scheduled_jobs ?? 0),
467
+ cancelledJobs: Number(f.cancelled_jobs ?? 0),
468
+ createdJobs: Number(f.created_jobs ?? 0),
469
+ });
470
+ }
471
+ }
472
+ await feedInstances_ensureLoaded(feedID);
473
+ }
474
+ else {
475
+ await procCache_build();
476
+ }
477
+ }
478
+ //# sourceMappingURL=proc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proc.js","sourceRoot":"","sources":["../../../src/vfs/providers/proc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @file Workflow resource operations.
3
+ * @module
4
+ */
5
+ import { FilteredResourceData, ListOptions } from '@fnndsc/cumin';
6
+ /**
7
+ * Lists workflows (single page).
8
+ *
9
+ * @param options - Search and pagination options.
10
+ */
11
+ export declare function workflows_list(options: ListOptions): Promise<FilteredResourceData | null>;
12
+ /**
13
+ * Lists all workflows across all pages.
14
+ *
15
+ * @param options - Search options (limit/offset managed internally).
16
+ */
17
+ export declare function workflows_listAll(options?: Partial<ListOptions>): Promise<FilteredResourceData | null>;
18
+ /**
19
+ * Returns available field names for workflows.
20
+ */
21
+ export declare function workflowFields_get(): Promise<string[] | null>;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ /**
3
+ * @file Workflow resource operations.
4
+ * @module
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.workflows_list = workflows_list;
8
+ exports.workflows_listAll = workflows_listAll;
9
+ exports.workflowFields_get = workflowFields_get;
10
+ const cumin_1 = require("@fnndsc/cumin");
11
+ /**
12
+ * Lists workflows (single page).
13
+ *
14
+ * @param options - Search and pagination options.
15
+ */
16
+ async function workflows_list(options) {
17
+ const group = new cumin_1.ChRISWorkflowGroup();
18
+ return await group.asset.resources_listAndFilterByOptions(options);
19
+ }
20
+ /**
21
+ * Lists all workflows across all pages.
22
+ *
23
+ * @param options - Search options (limit/offset managed internally).
24
+ */
25
+ async function workflows_listAll(options = {}) {
26
+ const group = new cumin_1.ChRISWorkflowGroup();
27
+ return await group.asset.resources_getAll(options);
28
+ }
29
+ /**
30
+ * Returns available field names for workflows.
31
+ */
32
+ async function workflowFields_get() {
33
+ const group = new cumin_1.ChRISWorkflowGroup();
34
+ const result = await group.asset.resourceFields_get();
35
+ return result ? result.fields : null;
36
+ }
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflows/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AASH,wCAGC;AAOD,8CAGC;AAKD,gDAIC;AA7BD,yCAAsF;AAEtF;;;;GAIG;AACI,KAAK,UAAU,cAAc,CAAC,OAAoB;IACvD,MAAM,KAAK,GAAuB,IAAI,0BAAkB,EAAE,CAAC;IAC3D,OAAO,MAAM,KAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,iBAAiB,CAAC,UAAgC,EAAE;IACxE,MAAM,KAAK,GAAuB,IAAI,0BAAkB,EAAE,CAAC;IAC3D,OAAO,MAAM,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,kBAAkB;IACtC,MAAM,KAAK,GAAuB,IAAI,0BAAkB,EAAE,CAAC;IAC3D,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;IACtD,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@fnndsc/salsa",
3
+ "version": "3.2.4",
4
+ "description": "Shared Application Logic and Service Assets for ChRIS",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/FNNDSC/salsa.git"
8
+ },
9
+ "homepage": "https://github.com/FNNDSC/salsa#readme",
10
+ "bugs": {
11
+ "url": "https://github.com/FNNDSC/salsa/issues"
12
+ },
13
+ "keywords": [
14
+ "chris",
15
+ "fnndsc",
16
+ "vfs",
17
+ "logic"
18
+ ],
19
+ "main": "dist/index.js",
20
+ "module": "dist/index.js",
21
+ "types": "dist/index.d.ts",
22
+ "files": [
23
+ "dist"
24
+ ],
25
+ "exports": {
26
+ ".": {
27
+ "import": "./dist/index.js",
28
+ "types": "./dist/index.d.ts",
29
+ "require": "./dist/index.js"
30
+ },
31
+ "./package.json": "./package.json"
32
+ },
33
+ "scripts": {
34
+ "build": "rm -fr dist && tsc",
35
+ "test": "jest --coverage"
36
+ },
37
+ "author": "Rudolph Pienaar",
38
+ "license": "MIT",
39
+ "devDependencies": {
40
+ "@babel/core": "^7.28.5",
41
+ "@babel/preset-env": "^7.28.5",
42
+ "@babel/preset-typescript": "^7.28.5",
43
+ "@types/jest": "^29.5.12",
44
+ "babel-jest": "^29.7.0",
45
+ "jest": "^29.7.0",
46
+ "ts-jest": "^29.1.5",
47
+ "typescript": "^5.0.0"
48
+ },
49
+ "overrides": {
50
+ "glob": "^10.0.0",
51
+ "inflight": "npm:@aashutoshrathi/word-wrap@^1.2.6"
52
+ },
53
+ "dependencies": {
54
+ "@fnndsc/cumin": "^3.2.4",
55
+ "axios": "^1.6.8"
56
+ }
57
+ }