@fnndsc/salsa 3.8.1 → 3.10.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.
Files changed (42) hide show
  1. package/dist/dag/feedGraph.d.ts +4 -0
  2. package/dist/dag/feedGraph.js +3 -0
  3. package/dist/dag/feedGraph.js.map +1 -1
  4. package/dist/dag/feedJoins.d.ts +9 -0
  5. package/dist/dag/feedJoins.js +15 -0
  6. package/dist/dag/feedJoins.js.map +1 -1
  7. package/dist/dag/feedLoad.js +22 -3
  8. package/dist/dag/feedLoad.js.map +1 -1
  9. package/dist/pipelines/diagram.js +60 -6
  10. package/dist/pipelines/diagram.js.map +1 -1
  11. package/dist/pipelines/index.d.ts +29 -0
  12. package/dist/pipelines/index.js +33 -1
  13. package/dist/pipelines/index.js.map +1 -1
  14. package/dist/pipelines/manifest.js +1 -6
  15. package/dist/pipelines/manifest.js.map +1 -1
  16. package/dist/pipelines/packages.d.ts +44 -0
  17. package/dist/pipelines/packages.js +181 -0
  18. package/dist/pipelines/packages.js.map +1 -0
  19. package/dist/retrieve/watch.d.ts +16 -2
  20. package/dist/retrieve/watch.js +124 -54
  21. package/dist/retrieve/watch.js.map +1 -1
  22. package/dist/vfs/dispatcher.js +9 -0
  23. package/dist/vfs/dispatcher.js.map +1 -1
  24. package/dist/vfs/providers/pacsGrammar.d.ts +69 -0
  25. package/dist/vfs/providers/pacsGrammar.js +83 -0
  26. package/dist/vfs/providers/pacsGrammar.js.map +1 -0
  27. package/dist/vfs/providers/pacsHelpers.d.ts +11 -43
  28. package/dist/vfs/providers/pacsHelpers.js +21 -60
  29. package/dist/vfs/providers/pacsHelpers.js.map +1 -1
  30. package/dist/vfs/providers/proc.d.ts +14 -0
  31. package/dist/vfs/providers/proc.js +98 -3
  32. package/dist/vfs/providers/proc.js.map +1 -1
  33. package/dist/vfs/providers/share.d.ts +65 -0
  34. package/dist/vfs/providers/share.js +227 -0
  35. package/dist/vfs/providers/share.js.map +1 -0
  36. package/dist/vfs/providers/tags.d.ts +30 -0
  37. package/dist/vfs/providers/tags.js +86 -0
  38. package/dist/vfs/providers/tags.js.map +1 -0
  39. package/dist/vfs/providers/workflows.d.ts +60 -0
  40. package/dist/vfs/providers/workflows.js +172 -0
  41. package/dist/vfs/providers/workflows.js.map +1 -0
  42. package/package.json +7 -2
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pipelinePackagesPath_get = pipelinePackagesPath_get;
4
+ exports.pipelinePackages_restore = pipelinePackages_restore;
5
+ exports.pipelinePackages_sweep = pipelinePackages_sweep;
6
+ exports.pipelinePackages_all = pipelinePackages_all;
7
+ exports.pipelinePackage_find = pipelinePackage_find;
8
+ /**
9
+ * @file The pipeline package store: durable pre-cache of registered pipelines.
10
+ *
11
+ * A registered pipeline is immutable, so what CUBE knows about it — identity
12
+ * fields and the complete registered manifest — is fetched once, held in
13
+ * memory, and checkpointed to a local file keyed by the CUBE URL. The sweep
14
+ * runs as a warm-up tail after the topology index settles: it lists the
15
+ * registry and fetches only pipelines the store has never seen, so the
16
+ * steady-state cost is zero and a fresh daemon restores everything without
17
+ * a wire call. The `/usr/share/packages/<pipeline>` VFS tree and the diagram
18
+ * builder both read from here.
19
+ *
20
+ * @module
21
+ */
22
+ const crypto_1 = require("crypto");
23
+ const fs_1 = require("fs");
24
+ const os_1 = require("os");
25
+ const path_1 = require("path");
26
+ const cumin_1 = require("@fnndsc/cumin");
27
+ const manifest_js_1 = require("./manifest.js");
28
+ const index_js_1 = require("../context/index.js");
29
+ /** Bumped when the persisted shape changes; older files are ignored. */
30
+ const PACKAGES_SCHEMA = 1;
31
+ /** The in-memory store, keyed by pipeline id. */
32
+ const packages = new Map();
33
+ /** The CUBE key the store was restored for; a different CUBE resets it. */
34
+ let restoredKey = null;
35
+ /** Returns the default directory for persistent pipeline-package files. */
36
+ function packagesRoot_get() {
37
+ const cacheHome = process.env['XDG_CACHE_HOME'] ?? (0, path_1.join)((0, os_1.homedir)(), '.cache');
38
+ return (0, path_1.join)(cacheHome, 'chell', 'pipelines');
39
+ }
40
+ /**
41
+ * Builds the CUBE-keyed store path without exposing the URL.
42
+ *
43
+ * @param cubeUrl - The CUBE API URL the registry belongs to.
44
+ * @param root - Store directory override (tests).
45
+ * @returns Versioned store file path.
46
+ */
47
+ function pipelinePackagesPath_get(cubeUrl, root = packagesRoot_get()) {
48
+ const key = (0, crypto_1.createHash)('sha256').update(cubeUrl).digest('hex').slice(0, 16);
49
+ return (0, path_1.join)(root, `packages-${key}-v${PACKAGES_SCHEMA}.json`);
50
+ }
51
+ /** Resolves the current CUBE's store key, or null when disconnected. */
52
+ async function storeKey_get() {
53
+ try {
54
+ const context = await (0, index_js_1.context_getSingle)();
55
+ return context.URL ?? null;
56
+ }
57
+ catch {
58
+ return null;
59
+ }
60
+ }
61
+ /** Structurally validates one persisted package entry. */
62
+ function package_check(value) {
63
+ if (!value || typeof value !== 'object')
64
+ return false;
65
+ const entry = value;
66
+ return typeof entry.id === 'number' &&
67
+ typeof entry.name === 'string' &&
68
+ typeof entry.manifest === 'object' && entry.manifest !== null &&
69
+ Array.isArray(entry.manifest.nodes) &&
70
+ Array.isArray(entry.manifest.rootIDs);
71
+ }
72
+ /**
73
+ * Restores the store from its durable file for the current CUBE, once per
74
+ * key. Missing or invalid files leave the store empty — the sweep refills.
75
+ *
76
+ * @param root - Store directory override (tests).
77
+ */
78
+ async function pipelinePackages_restore(root = packagesRoot_get()) {
79
+ const key = await storeKey_get();
80
+ if (key === null || key === restoredKey)
81
+ return;
82
+ restoredKey = key;
83
+ packages.clear();
84
+ try {
85
+ const raw = await fs_1.promises.readFile(pipelinePackagesPath_get(key, root), 'utf8');
86
+ const parsed = JSON.parse(raw);
87
+ const entries = parsed.packages;
88
+ if (!Array.isArray(entries))
89
+ return;
90
+ for (const entry of entries) {
91
+ if (package_check(entry))
92
+ packages.set(entry.id, entry);
93
+ }
94
+ }
95
+ catch {
96
+ // No file yet, or an unreadable one: the sweep rebuilds it.
97
+ }
98
+ }
99
+ /**
100
+ * Writes the store durably, atomically, keyed by the current CUBE.
101
+ *
102
+ * @param key - The CUBE URL key.
103
+ * @param root - Store directory override (tests).
104
+ */
105
+ async function packages_save(key, root = packagesRoot_get()) {
106
+ const path = pipelinePackagesPath_get(key, root);
107
+ const temporaryPath = `${path}.${process.pid}.tmp`;
108
+ const file = {
109
+ schema: PACKAGES_SCHEMA,
110
+ savedAt: new Date().toISOString(),
111
+ packages: Array.from(packages.values()),
112
+ };
113
+ await fs_1.promises.mkdir((0, path_1.dirname)(path), { recursive: true, mode: 0o700 });
114
+ await fs_1.promises.writeFile(temporaryPath, `${JSON.stringify(file)}\n`, { encoding: 'utf8', mode: 0o600 });
115
+ await fs_1.promises.rename(temporaryPath, path);
116
+ }
117
+ /**
118
+ * The warm-up tail: lists the registry and fetches manifests only for
119
+ * pipelines the store has never seen, then saves. Sequential awaits are the
120
+ * throttle; per-pipeline failures are skipped and retried next sweep.
121
+ *
122
+ * @param root - Store directory override (tests).
123
+ */
124
+ async function pipelinePackages_sweep(root = packagesRoot_get()) {
125
+ const key = await storeKey_get();
126
+ if (key === null)
127
+ return;
128
+ await pipelinePackages_restore(root);
129
+ const listed = await (0, cumin_1.pipelines_list)();
130
+ if (!listed.ok)
131
+ return;
132
+ const client = await cumin_1.chrisConnection.client_get();
133
+ if (!client)
134
+ return;
135
+ let added = false;
136
+ for (const record of listed.value) {
137
+ if (packages.has(record.id))
138
+ continue;
139
+ const handle = await (0, cumin_1.pipeline_get)(client, record.id);
140
+ if (!handle)
141
+ continue;
142
+ const manifest = await (0, manifest_js_1.pipelineManifestForPipeline_get)(record, handle, { detail: 'registered' });
143
+ if (!manifest.ok)
144
+ continue;
145
+ packages.set(record.id, {
146
+ id: record.id,
147
+ name: record.name,
148
+ ...(typeof record.slug === 'string' ? { slug: record.slug } : {}),
149
+ ...(typeof record.authors === 'string' ? { authors: record.authors } : {}),
150
+ ...(typeof record.category === 'string' ? { category: record.category } : {}),
151
+ ...(typeof record.description === 'string' ? { description: record.description } : {}),
152
+ ...(typeof record.locked === 'boolean' ? { locked: record.locked } : {}),
153
+ manifest: manifest.value,
154
+ });
155
+ added = true;
156
+ }
157
+ if (added)
158
+ await packages_save(key, root);
159
+ }
160
+ /** @returns Every cached package, sorted by name. */
161
+ function pipelinePackages_all() {
162
+ return Array.from(packages.values()).sort((a, b) => a.name.localeCompare(b.name));
163
+ }
164
+ /**
165
+ * Finds one cached package by id, exact name, or slug.
166
+ *
167
+ * @param specifier - Pipeline id (digits), name, or slug.
168
+ * @returns The package, or null when the store holds no match.
169
+ */
170
+ function pipelinePackage_find(specifier) {
171
+ const trimmed = specifier.trim();
172
+ if (/^\d+$/.test(trimmed)) {
173
+ return packages.get(parseInt(trimmed, 10)) ?? null;
174
+ }
175
+ for (const entry of packages.values()) {
176
+ if (entry.name === trimmed || entry.slug === trimmed)
177
+ return entry;
178
+ }
179
+ return null;
180
+ }
181
+ //# sourceMappingURL=packages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packages.js","sourceRoot":"","sources":["../../src/pipelines/packages.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,15 @@
1
1
  import { type Client } from '@fnndsc/cumin';
2
- /** Lifecycle states of one series retrieve. */
3
- export type RetrieveStatus = 'pending' | 'pulling' | 'pulled' | 'stalled' | 'timeout' | 'error' | 'unfired';
2
+ /**
3
+ * Lifecycle states of one series retrieve.
4
+ *
5
+ * `unconfirmed` is the state of a series the client stopped watching before it
6
+ * could see the end. It is not a failure: the PACS keeps pushing and CUBE keeps
7
+ * registering after a watch ends, so the retrieve is very likely still running
8
+ * or already done. Reporting such a series as `error` claims knowledge the
9
+ * client does not have, and a caller that treats it as failure will tell an
10
+ * operator that nothing arrived while the files land behind them.
11
+ */
12
+ export type RetrieveStatus = 'pending' | 'pulling' | 'pulled' | 'stalled' | 'timeout' | 'error' | 'unfired' | 'unconfirmed';
4
13
  /** Progress classification reported to event consumers. */
5
14
  export type RetrieveProgressStatus = 'running' | 'done' | 'unconfirmed' | 'error' | 'stalled' | 'timeout';
6
15
  /**
@@ -46,6 +55,11 @@ export interface RetrieveTask {
46
55
  export interface RetrieveWatchEvents {
47
56
  task?: (task: RetrieveTask, status: RetrieveProgressStatus, phase: 'watching' | 'retrying') => void;
48
57
  retryRound?: (attempt: number, retryMax: number, count: number) => void;
58
+ /**
59
+ * The watch socket dropped and is being reopened. Reported because a silent
60
+ * reconnection during a long pull looks identical to a stall.
61
+ */
62
+ reconnect?: (attempt: number, maxAttempts: number, watching: number) => void;
49
63
  }
50
64
  /**
51
65
  * Builds a fresh retrieve task from series identity facts.
@@ -35,6 +35,14 @@ const FIRE_CONCURRENCY = 4;
35
35
  /** Retry attempts for one retrieve creation, with backoff between them. */
36
36
  const FIRE_ATTEMPTS = 3;
37
37
  const FIRE_BACKOFF_MS = [250, 500];
38
+ /**
39
+ * Reconnection attempts for a dropped LONK socket.
40
+ *
41
+ * A long retrieve gives a socket more chances to die, which is why a large
42
+ * study failed where a small one did not. The retrieves are unaffected by the
43
+ * loss, so reconnecting resumes reporting rather than repeating work.
44
+ */
45
+ const WATCH_RECONNECT_ATTEMPTS = 3;
38
46
  const STALL_TIMEOUT_MS = 30_000;
39
47
  const NO_ACTIVITY_TIMEOUT_MS = 15_000;
40
48
  const SERIES_TIMEOUT_MS = 5 * 60 * 1_000;
@@ -194,14 +202,26 @@ async function retrieve_fireAndWatch(tasks, pacsserver, client, events = {}, pha
194
202
  events.task?.(task, status ?? retrieveProgress_classify(task), phase);
195
203
  };
196
204
  const downloadToken = await (0, cumin_1.downloadToken_create)(client);
197
- const ws = new ws_1.default(lonkWsUrl_build(downloadToken.url, downloadToken.token));
198
- await new Promise((openResolve, openReject) => {
199
- ws.once('open', openResolve);
200
- ws.once('error', (err) => openReject(err));
201
- });
202
- for (const t of tasks) {
203
- ws.send(JSON.stringify({ SeriesInstanceUID: t.seriesUID, pacs_name: t.pacsName, action: 'subscribe' }));
204
- }
205
+ const lonkUrl = lonkWsUrl_build(downloadToken.url, downloadToken.token);
206
+ /**
207
+ * Opens a LONK socket and subscribes it to the series given.
208
+ *
209
+ * A reconnect subscribes only what is still in flight: the retrieves are
210
+ * already running on the server, so re-firing them would duplicate work that
211
+ * was never lost.
212
+ */
213
+ const socket_open = async (subscribe) => {
214
+ const socket = new ws_1.default(lonkUrl);
215
+ await new Promise((openResolve, openReject) => {
216
+ socket.once('open', openResolve);
217
+ socket.once('error', (err) => openReject(err));
218
+ });
219
+ for (const t of subscribe) {
220
+ socket.send(JSON.stringify({ SeriesInstanceUID: t.seriesUID, pacs_name: t.pacsName, action: 'subscribe' }));
221
+ }
222
+ return socket;
223
+ };
224
+ let ws = await socket_open(tasks);
205
225
  await tasks_fireBounded(tasks, pacsserver);
206
226
  const fired = tasks.filter((t) => t.status !== 'unfired');
207
227
  const firingErrors = tasks.length - fired.length;
@@ -219,6 +239,7 @@ async function retrieve_fireAndWatch(tasks, pacsserver, client, events = {}, pha
219
239
  const taskByUID = new Map(tasks.map((t) => [t.seriesUID, t]));
220
240
  await new Promise((resolve) => {
221
241
  let resolved = false;
242
+ let reconnectsLeft = WATCH_RECONNECT_ATTEMPTS;
222
243
  const done = () => {
223
244
  if (resolved)
224
245
  return;
@@ -230,11 +251,54 @@ async function retrieve_fireAndWatch(tasks, pacsserver, client, events = {}, pha
230
251
  catch { /* best-effort socket cleanup */ }
231
252
  resolve();
232
253
  };
254
+ /** The series this watch is still waiting on. */
255
+ const inFlight = () => fired.filter((t) => t.status === 'pending' || t.status === 'pulling');
256
+ /**
257
+ * Replaces a dead socket, or gives up and records what is unknown.
258
+ *
259
+ * A LONK socket carries no state a client cannot rebuild: the retrieves run
260
+ * on the server regardless, and a fresh subscription resumes reporting on
261
+ * them. Only when reconnection is exhausted does the watch admit it stopped
262
+ * looking — and even then it says so rather than calling the retrieves
263
+ * failed.
264
+ */
265
+ const socket_replace = () => {
266
+ if (resolved)
267
+ return;
268
+ const remaining = inFlight();
269
+ if (remaining.length === 0) {
270
+ done();
271
+ return;
272
+ }
273
+ if (reconnectsLeft <= 0) {
274
+ for (const t of remaining) {
275
+ t.status = 'unconfirmed';
276
+ emit(t, 'unconfirmed');
277
+ }
278
+ done();
279
+ return;
280
+ }
281
+ reconnectsLeft -= 1;
282
+ events.reconnect?.(WATCH_RECONNECT_ATTEMPTS - reconnectsLeft, WATCH_RECONNECT_ATTEMPTS, remaining.length);
283
+ void socket_open(remaining)
284
+ .then((replacement) => {
285
+ if (resolved) {
286
+ try {
287
+ replacement.close();
288
+ }
289
+ catch { /* the watch already ended */ }
290
+ return;
291
+ }
292
+ ws = replacement;
293
+ socket_listen();
294
+ })
295
+ .catch(() => socket_replace());
296
+ };
233
297
  const checker = setInterval(() => {
234
298
  const now = Date.now();
235
299
  let allTerminal = true;
236
300
  for (const t of fired) {
237
- if (t.status === 'pulled' || t.status === 'error' || t.status === 'unfired' || t.status === 'stalled' || t.status === 'timeout') {
301
+ if (t.status === 'pulled' || t.status === 'error' || t.status === 'unfired' || t.status === 'stalled' || t.status === 'timeout' || t.status === 'unconfirmed') {
238
302
  continue;
239
303
  }
240
304
  allTerminal = false;
@@ -258,52 +322,51 @@ async function retrieve_fireAndWatch(tasks, pacsserver, client, events = {}, pha
258
322
  if (allTerminal)
259
323
  done();
260
324
  }, CHECKER_INTERVAL_MS);
261
- ws.on('message', (data) => {
262
- try {
263
- const outer = JSON.parse(data.toString());
264
- const seriesUID = outer.SeriesInstanceUID;
265
- const message = outer.message;
266
- if (!seriesUID || !message)
267
- return;
268
- const t = taskByUID.get(seriesUID);
269
- if (!t)
270
- return;
271
- if ('ndicom' in message && typeof message.ndicom === 'number') {
272
- const n = message.ndicom;
273
- t.actualFiles = n;
274
- t.lastProgressFiles = n;
275
- t.lastProgressTime = Date.now();
276
- if (t.status === 'pending')
277
- t.status = 'pulling';
278
- emit(t, 'running');
279
- }
280
- else if ('done' in message && message.done === true) {
281
- t.status = 'pulled';
282
- t.lonkConfirmed = true;
283
- if (t.actualFiles < t.expectedFiles)
284
- t.actualFiles = t.expectedFiles;
285
- emit(t, 'done');
325
+ /** Attaches this watch's handlers to whichever socket is current. */
326
+ const socket_listen = () => {
327
+ ws.on('message', (data) => {
328
+ try {
329
+ const outer = JSON.parse(data.toString());
330
+ const seriesUID = outer.SeriesInstanceUID;
331
+ const message = outer.message;
332
+ if (!seriesUID || !message)
333
+ return;
334
+ const t = taskByUID.get(seriesUID);
335
+ if (!t)
336
+ return;
337
+ if ('ndicom' in message && typeof message.ndicom === 'number') {
338
+ const n = message.ndicom;
339
+ t.actualFiles = n;
340
+ t.lastProgressFiles = n;
341
+ t.lastProgressTime = Date.now();
342
+ if (t.status === 'pending')
343
+ t.status = 'pulling';
344
+ emit(t, 'running');
345
+ }
346
+ else if ('done' in message && message.done === true) {
347
+ t.status = 'pulled';
348
+ t.lonkConfirmed = true;
349
+ if (t.actualFiles < t.expectedFiles)
350
+ t.actualFiles = t.expectedFiles;
351
+ emit(t, 'done');
352
+ }
353
+ else if ('error' in message && typeof message.error === 'string') {
354
+ t.status = 'error';
355
+ emit(t, 'error');
356
+ }
286
357
  }
287
- else if ('error' in message && typeof message.error === 'string') {
288
- t.status = 'error';
289
- emit(t, 'error');
358
+ catch {
359
+ // Deliberate absorption: a malformed LONK frame carries no correlation
360
+ // to fail; the checker's stall/timeout guards still bound the watch.
290
361
  }
291
- }
292
- catch {
293
- // Deliberate absorption: a malformed LONK frame carries no correlation
294
- // to fail; the checker's stall/timeout guards still bound the watch.
295
- }
296
- });
297
- ws.on('error', () => {
298
- for (const t of fired) {
299
- if (t.status === 'pending' || t.status === 'pulling') {
300
- t.status = 'error';
301
- emit(t, 'error');
302
- }
303
- }
304
- done();
305
- });
306
- ws.on('close', () => { done(); });
362
+ });
363
+ // A dead socket is a lost view, not a lost retrieve: reconnect and keep
364
+ // watching. Only when that fails repeatedly does the watch stop, and even
365
+ // then it records what it no longer knows rather than declaring failure.
366
+ ws.on('error', () => { socket_replace(); });
367
+ ws.on('close', () => { socket_replace(); });
368
+ };
369
+ socket_listen();
307
370
  });
308
371
  return firingErrors;
309
372
  }
@@ -322,13 +385,20 @@ async function retrieve_fireAndWatch(tasks, pacsserver, client, events = {}, pha
322
385
  */
323
386
  async function retrieve_confirmLoop(allTasks, retryMax, pacsserver, client, events = {}) {
324
387
  let extraFiringErrors = 0;
325
- let retryCandidates = allTasks.filter((t) => t.status === 'pulled' && !t.lonkConfirmed);
388
+ // A series the watch lost sight of is a candidate for exactly the same
389
+ // treatment as one whose confirmation went missing: ask CUBE. Both are
390
+ // "we did not see the end", and CUBE is the only thing that knows.
391
+ let retryCandidates = allTasks.filter((t) => (t.status === 'pulled' && !t.lonkConfirmed) || t.status === 'unconfirmed');
326
392
  for (let attempt = 1; attempt <= retryMax && retryCandidates.length > 0; attempt++) {
327
393
  await Promise.all(retryCandidates.map(async (t) => {
328
394
  const stateResult = await (0, cumin_1.seriesStorage_resolve)(t.seriesUID);
329
395
  if (stateResult.ok && stateResult.value.folderPath !== null) {
330
396
  t.lonkConfirmed = true;
331
397
  t.cubePathDir = stateResult.value.folderPath;
398
+ // A series found in CUBE arrived, whatever the watch managed to see.
399
+ t.status = 'pulled';
400
+ t.actualFiles = stateResult.value.fileCount;
401
+ events.task?.(t, 'done', 'retrying');
332
402
  }
333
403
  }));
334
404
  retryCandidates = retryCandidates.filter((t) => !t.lonkConfirmed);
@@ -1 +1 @@
1
- {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/retrieve/watch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/retrieve/watch.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,9 @@ const native_js_1 = require("./providers/native.js");
14
14
  const pacs_js_1 = require("./providers/pacs.js");
15
15
  const etc_js_1 = require("./providers/etc.js");
16
16
  const proc_js_1 = require("./providers/proc.js");
17
+ const workflows_js_1 = require("./providers/workflows.js");
18
+ const tags_js_1 = require("./providers/tags.js");
19
+ const share_js_1 = require("./providers/share.js");
17
20
  /**
18
21
  * Registry and dispatcher routing filesystem commands to matched VFS providers.
19
22
  */
@@ -29,6 +32,12 @@ class VFSDispatcher {
29
32
  this.provider_register(new pacs_js_1.PacsVfsProvider());
30
33
  this.provider_register(new etc_js_1.EtcVfsProvider());
31
34
  this.provider_register(new proc_js_1.ProcVfsProvider());
35
+ // Three relations CUBE owns and the namespace did not reach: the tags a
36
+ // feed can carry, the runs a pipeline produced, and what is known about a
37
+ // plugin as opposed to how to invoke it.
38
+ this.provider_register(new workflows_js_1.WorkflowsVfsProvider());
39
+ this.provider_register(new tags_js_1.TagsVfsProvider());
40
+ this.provider_register(new share_js_1.ShareVfsProvider());
32
41
  }
33
42
  /**
34
43
  * Registers a path resolution hook that maps logical paths to physical paths.
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/vfs/dispatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/vfs/dispatcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * @file The PACS VFS folder grammar, both directions.
3
+ *
4
+ * Query folders are named `<desc>_qid:<id>[_<user>][_no-hits]`, study
5
+ * folders `Study_<uid>_<desc>`, series folders `Series_<uid>_<desc>`. This
6
+ * module owns building those names and parsing them back, so a path a
7
+ * surface builds is always the path the listing shows.
8
+ *
9
+ * Deliberately dependency-free: test mocks forward these functions directly
10
+ * (via the package's `./pacs-grammar` subpath export) instead of maintaining
11
+ * copies, so nothing here may import anything.
12
+ *
13
+ * @module
14
+ */
15
+ /**
16
+ * Extracts the numeric query id from a query folder name or any path
17
+ * containing one.
18
+ *
19
+ * @param folder - Folder name or full path carrying a `_qid:<id>` marker.
20
+ * @returns The query id, or NaN when no marker is present.
21
+ */
22
+ export declare function queryId_extractFromFolder(folder: string): number;
23
+ /**
24
+ * Extracts the descriptive label of a query folder, the part before its
25
+ * `_qid:` marker (the id, user, and no-hits suffixes are all dropped).
26
+ *
27
+ * @param folder - Query folder name (`<desc>_qid:<id>[_<user>][_no-hits]`).
28
+ * @returns The label, or the folder unchanged when it carries no marker.
29
+ */
30
+ export declare function queryLabel_extractFromFolder(folder: string): string;
31
+ /**
32
+ * Extracts the UID portion of a study or series folder name
33
+ * (`<prefix>_<uid>_<label>`).
34
+ *
35
+ * @param folder - The folder name.
36
+ * @param prefix - The expected prefix, `Study` or `Series`.
37
+ * @returns The UID between the prefix and the first following underscore.
38
+ */
39
+ export declare function folderUID_get(folder: string, prefix: string): string;
40
+ /**
41
+ * Everything that determines a query folder's name.
42
+ *
43
+ * @property queryId - The query's numeric id.
44
+ * @property queryObj - The query's key-value search terms; blank values are
45
+ * skipped.
46
+ * @property title - The query record's title, used as the description when
47
+ * queryObj yields nothing.
48
+ * @property username - Owning username, appended as `_<user>` when present.
49
+ * @property hasResult - Whether the query holds a result payload; false
50
+ * appends the `_no-hits` suffix. Defaults to true.
51
+ */
52
+ export interface QueryFolderNameParts {
53
+ queryId: number | string;
54
+ queryObj: Record<string, unknown>;
55
+ title?: string;
56
+ username?: string;
57
+ hasResult?: boolean;
58
+ }
59
+ /**
60
+ * Builds a query folder name: `<desc>_qid:<id>[_<user>][_no-hits]`.
61
+ *
62
+ * This is the single naming authority: the listing provider and any surface
63
+ * that pre-computes a query's path must both use it, otherwise a freshly
64
+ * created query can be addressed by a name `ls` will never show.
65
+ *
66
+ * @param parts - The name's inputs. See QueryFolderNameParts.
67
+ * @returns The folder name (no leading path).
68
+ */
69
+ export declare function queryFolderName_build(parts: QueryFolderNameParts): string;