@fnndsc/brasa 0.46.0 → 0.48.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/dist/api/index.d.ts +1 -1
- package/dist/api/index.js +1 -1
- package/dist/api/index.js.map +1 -1
- package/dist/buildinfo.json +1 -1
- package/dist/builtins/fs/cd.js +2 -2
- package/dist/builtins/fs/cd.js.map +1 -1
- package/dist/builtins/fs/cp.js +2 -2
- package/dist/builtins/fs/cp.js.map +1 -1
- package/dist/builtins/fs/edit.js +3 -3
- package/dist/builtins/fs/edit.js.map +1 -1
- package/dist/builtins/fs/entries.d.ts +1 -1
- package/dist/builtins/fs/entries.js +1 -1
- package/dist/builtins/fs/entries.js.map +1 -1
- package/dist/builtins/fs/find.d.ts +1 -1
- package/dist/builtins/fs/find.js +11 -11
- package/dist/builtins/fs/find.js.map +1 -1
- package/dist/builtins/fs/ls.js +3 -3
- package/dist/builtins/fs/ls.js.map +1 -1
- package/dist/builtins/fs/mkdir.js +4 -4
- package/dist/builtins/fs/mkdir.js.map +1 -1
- package/dist/builtins/fs/mv.js +3 -3
- package/dist/builtins/fs/mv.js.map +1 -1
- package/dist/builtins/fs/pull.js +23 -0
- package/dist/builtins/fs/pull.js.map +1 -1
- package/dist/builtins/fs/pwd.js +2 -2
- package/dist/builtins/fs/pwd.js.map +1 -1
- package/dist/builtins/fs/rm.js +2 -2
- package/dist/builtins/fs/rm.js.map +1 -1
- package/dist/builtins/fs/touch.js +2 -2
- package/dist/builtins/fs/touch.js.map +1 -1
- package/dist/builtins/games/bytes.d.ts +1 -1
- package/dist/builtins/games/bytes.js +2 -2
- package/dist/builtins/games/bytes.js.map +1 -1
- package/dist/builtins/games/numbers.d.ts +1 -1
- package/dist/builtins/games/numbers.js +2 -2
- package/dist/builtins/games/numbers.js.map +1 -1
- package/dist/builtins/games/qr.d.ts +1 -1
- package/dist/builtins/games/qr.js +2 -2
- package/dist/builtins/games/qr.js.map +1 -1
- package/dist/builtins/games/shelf.d.ts +4 -4
- package/dist/builtins/games/shelf.js +7 -7
- package/dist/builtins/games/shelf.js.map +1 -1
- package/dist/builtins/games/show.d.ts +1 -1
- package/dist/builtins/games/show.js +4 -4
- package/dist/builtins/games/show.js.map +1 -1
- package/dist/builtins/games/sky.d.ts +4 -4
- package/dist/builtins/games/sky.js +12 -12
- package/dist/builtins/games/sky.js.map +1 -1
- package/dist/builtins/help.js +55 -0
- package/dist/builtins/help.js.map +1 -1
- package/dist/builtins/helpSections.d.ts +1 -1
- package/dist/builtins/helpSections.js +3 -3
- package/dist/builtins/helpSections.js.map +1 -1
- package/dist/builtins/net/query.csv.d.ts +2 -2
- package/dist/builtins/net/query.csv.js +6 -6
- package/dist/builtins/net/query.csv.js.map +1 -1
- package/dist/builtins/net/query.d.ts +4 -22
- package/dist/builtins/net/query.js +19 -80
- package/dist/builtins/net/query.js.map +1 -1
- package/dist/builtins/net/query.model.d.ts +31 -0
- package/dist/builtins/net/query.model.js +66 -0
- package/dist/builtins/net/query.model.js.map +1 -0
- package/dist/builtins/net/query.view.js +8 -8
- package/dist/builtins/net/query.view.js.map +1 -1
- package/dist/builtins/pluginExecute.js +2 -2
- package/dist/builtins/pluginExecute.js.map +1 -1
- package/dist/builtins/proc.js +6 -6
- package/dist/builtins/proc.js.map +1 -1
- package/dist/builtins/procWatch.js +2 -2
- package/dist/builtins/procWatch.js.map +1 -1
- package/dist/builtins/res/dicom.js +2 -2
- package/dist/builtins/res/dicom.js.map +1 -1
- package/dist/builtins/res/expect.d.ts +38 -0
- package/dist/builtins/res/expect.js +78 -183
- package/dist/builtins/res/expect.js.map +1 -1
- package/dist/builtins/res/feed.diagram.js +1 -1
- package/dist/builtins/res/feed.diagram.js.map +1 -1
- package/dist/builtins/res/feed.js +3 -3
- package/dist/builtins/res/feed.js.map +1 -1
- package/dist/builtins/res/feed.tree.collapse.js +2 -2
- package/dist/builtins/res/feed.tree.collapse.js.map +1 -1
- package/dist/builtins/res/feed.tree.render.js +3 -3
- package/dist/builtins/res/feed.tree.render.js.map +1 -1
- package/dist/builtins/res/files.js +2 -2
- package/dist/builtins/res/files.js.map +1 -1
- package/dist/builtins/res/gather.facts.d.ts +18 -0
- package/dist/builtins/res/gather.facts.js +114 -0
- package/dist/builtins/res/gather.facts.js.map +1 -0
- package/dist/builtins/res/gather.js +47 -16
- package/dist/builtins/res/gather.js.map +1 -1
- package/dist/builtins/res/gather.process.d.ts +17 -0
- package/dist/builtins/res/gather.process.js +58 -5
- package/dist/builtins/res/gather.process.js.map +1 -1
- package/dist/builtins/res/gather.store.d.ts +37 -1
- package/dist/builtins/res/gather.store.js +106 -3
- package/dist/builtins/res/gather.store.js.map +1 -1
- package/dist/builtins/res/group.js +14 -4
- package/dist/builtins/res/group.js.map +1 -1
- package/dist/builtins/res/pipeline.js +2 -2
- package/dist/builtins/res/pipeline.js.map +1 -1
- package/dist/builtins/res/play.js +96 -20
- package/dist/builtins/res/play.js.map +1 -1
- package/dist/builtins/res/plugin.js +2 -2
- package/dist/builtins/res/plugin.js.map +1 -1
- package/dist/builtins/res/plugininstance.js +31 -4
- package/dist/builtins/res/plugininstance.js.map +1 -1
- package/dist/builtins/res/pluginmeta.js +13 -4
- package/dist/builtins/res/pluginmeta.js.map +1 -1
- package/dist/builtins/res/runWait.d.ts +1 -1
- package/dist/builtins/res/runWait.js +1 -1
- package/dist/builtins/res/runWait.js.map +1 -1
- package/dist/builtins/res/tag.js +13 -4
- package/dist/builtins/res/tag.js.map +1 -1
- package/dist/builtins/res/workflow.js +13 -4
- package/dist/builtins/res/workflow.js.map +1 -1
- package/dist/builtins/sys/date.js +2 -2
- package/dist/builtins/sys/date.js.map +1 -1
- package/dist/builtins/sys/grep.js +6 -6
- package/dist/builtins/sys/grep.js.map +1 -1
- package/dist/builtins/sys/tasks.js +1 -1
- package/dist/builtins/sys/tasks.js.map +1 -1
- package/dist/builtins/sys/textFilters.js +11 -11
- package/dist/builtins/sys/textFilters.js.map +1 -1
- package/dist/builtins/sys/variables.js +2 -2
- package/dist/builtins/sys/variables.js.map +1 -1
- package/dist/builtins/sys/weather.d.ts +2 -2
- package/dist/builtins/sys/weather.js +5 -5
- package/dist/builtins/sys/weather.js.map +1 -1
- package/dist/builtins/utils.d.ts +31 -2
- package/dist/builtins/utils.js +49 -3
- package/dist/builtins/utils.js.map +1 -1
- package/dist/builtins/variablesPage.js +2 -0
- package/dist/builtins/variablesPage.js.map +1 -1
- package/dist/chris/backend.js +4 -2
- package/dist/chris/backend.js.map +1 -1
- package/dist/chris/binExecutables.d.ts +7 -1
- package/dist/chris/binExecutables.js +13 -3
- package/dist/chris/binExecutables.js.map +1 -1
- package/dist/chris/binMount.js +4 -4
- package/dist/chris/binMount.js.map +1 -1
- package/dist/chris/chrisCommands.js +0 -6
- package/dist/chris/chrisCommands.js.map +1 -1
- package/dist/chris/commandFallback.js +4 -2
- package/dist/chris/commandFallback.js.map +1 -1
- package/dist/chris/connect.d.ts +3 -3
- package/dist/chris/connect.js +2 -2
- package/dist/chris/expectSubjects.d.ts +3 -0
- package/dist/chris/expectSubjects.js +131 -0
- package/dist/chris/expectSubjects.js.map +1 -0
- package/dist/chris/files.js +4 -4
- package/dist/chris/files.js.map +1 -1
- package/dist/chris/filesystem.js +2 -2
- package/dist/chris/filesystem.js.map +1 -1
- package/dist/chris/help.js +28 -71
- package/dist/chris/help.js.map +1 -1
- package/dist/chris/mounts.js +2 -2
- package/dist/chris/mounts.js.map +1 -1
- package/dist/chris/navigation.js +2 -2
- package/dist/chris/navigation.js.map +1 -1
- package/dist/chris/references.js +2 -0
- package/dist/chris/references.js.map +1 -1
- package/dist/chris/tasks.d.ts +1 -1
- package/dist/chris/tasks.js +2 -2
- package/dist/chris/tasks.js.map +1 -1
- package/dist/chris/universeLayout.d.ts +1 -1
- package/dist/chris/universeLayout.js +6 -6
- package/dist/chris/universeLayout.js.map +1 -1
- package/dist/core/backend.d.ts +43 -0
- package/dist/core/backend.js.map +1 -1
- package/dist/core/coreCommands.js +6 -0
- package/dist/core/coreCommands.js.map +1 -1
- package/dist/core/dispatch.js +11 -3
- package/dist/core/dispatch.js.map +1 -1
- package/dist/core/engine.d.ts +7 -0
- package/dist/core/engine.js +4 -3
- package/dist/core/engine.js.map +1 -1
- package/dist/core/expansion.d.ts +19 -0
- package/dist/core/expansion.js +32 -2
- package/dist/core/expansion.js.map +1 -1
- package/dist/core/listing.d.ts +2 -2
- package/dist/core/listing.js +6 -6
- package/dist/core/listing.js.map +1 -1
- package/dist/core/pipeHead.d.ts +36 -0
- package/dist/core/pipeHead.js +28 -0
- package/dist/core/pipeHead.js.map +1 -0
- package/dist/core/runner.d.ts +17 -4
- package/dist/core/runner.js +54 -19
- package/dist/core/runner.js.map +1 -1
- package/dist/core/surface.d.ts +8 -0
- package/dist/core/surface.js +10 -0
- package/dist/core/surface.js.map +1 -1
- package/dist/core/tasks.d.ts +1 -1
- package/dist/core/tasks.js +3 -3
- package/dist/core/tasks.js.map +1 -1
- package/dist/core/turn.d.ts +11 -0
- package/dist/core/turn.js +23 -0
- package/dist/core/turn.js.map +1 -1
- package/dist/core/variables.d.ts +3 -2
- package/dist/core/variables.js +15 -11
- package/dist/core/variables.js.map +1 -1
- package/dist/core/version.d.ts +1 -1
- package/dist/core/version.js +1 -1
- package/dist/core/version.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/parser.js +2 -1
- package/dist/lib/parser.js.map +1 -1
- package/dist/lib/prefetch.d.ts +1 -1
- package/dist/lib/prefetch.js +1 -1
- package/dist/lib/prefetch.js.map +1 -1
- package/dist/lib/vfs/providers/static.js +4 -4
- package/dist/lib/vfs/providers/static.js.map +1 -1
- package/dist/notes.json +1 -1
- package/dist/session/answer.d.ts +4 -4
- package/dist/session/answer.js +4 -4
- package/dist/session/answer.js.map +1 -1
- package/dist/session/answerAdapters.js +4 -4
- package/dist/session/answerAdapters.js.map +1 -1
- package/package.json +7 -7
|
@@ -95,7 +95,7 @@ function feedFlatNodes_build(graph, roots) {
|
|
|
95
95
|
});
|
|
96
96
|
}
|
|
97
97
|
/** Converts one collapsed feed node into the shared diagram model. */
|
|
98
|
-
function
|
|
98
|
+
function collapsedNode_convertToDiagram(node) {
|
|
99
99
|
const functionName = node.count === 1
|
|
100
100
|
? `${node.pluginName}_${node.memberIds[0]}`
|
|
101
101
|
: `${node.pluginName}_x${node.count}_${node.memberIds[0]}`;
|
|
@@ -109,7 +109,7 @@ function collapsedNode_toDiagram(node) {
|
|
|
109
109
|
hasJoin: node.hasJoin,
|
|
110
110
|
joinParentIDs: node.joinParentIDs,
|
|
111
111
|
arguments: [],
|
|
112
|
-
children: node.children.map((child) =>
|
|
112
|
+
children: node.children.map((child) => collapsedNode_convertToDiagram(child)),
|
|
113
113
|
};
|
|
114
114
|
}
|
|
115
115
|
/**
|
|
@@ -123,7 +123,7 @@ function collapsedNode_toDiagram(node) {
|
|
|
123
123
|
export function feedDiagramNodes_build(graph, roots, flat = false) {
|
|
124
124
|
return flat
|
|
125
125
|
? feedFlatNodes_build(graph, roots)
|
|
126
|
-
: collapse_build(graph, roots).map((node) =>
|
|
126
|
+
: collapse_build(graph, roots).map((node) => collapsedNode_convertToDiagram(node));
|
|
127
127
|
}
|
|
128
128
|
/**
|
|
129
129
|
* Pure render of a {@link FeedGraph} into an annotated tree. Collapses isomorphic siblings
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feed.tree.render.js","sourceRoot":"","sources":["../../../src/builtins/res/feed.tree.render.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"feed.tree.render.js","sourceRoot":"","sources":["../../../src/builtins/res/feed.tree.render.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Manages file resources.
|
|
4
4
|
*/
|
|
5
5
|
import chalk from 'chalk';
|
|
6
|
-
import { commandArgs_process,
|
|
6
|
+
import { commandArgs_process, cliOptions_extract } from '../utils.js';
|
|
7
7
|
import { files_fetchList } from '@fnndsc/chili/commands/files/list.js';
|
|
8
8
|
import { fileFields_fetch } from '@fnndsc/chili/commands/files/fields.js';
|
|
9
9
|
import { table_render } from '@fnndsc/chili/screen/screen.js';
|
|
@@ -24,7 +24,7 @@ async function builtin_fileGroup(args, assetName) {
|
|
|
24
24
|
try {
|
|
25
25
|
if (subcommand === 'list') {
|
|
26
26
|
const path = parsed._[1];
|
|
27
|
-
const results = await files_fetchList(
|
|
27
|
+
const results = await files_fetchList(cliOptions_extract(parsed), assetName, path);
|
|
28
28
|
if (!results) {
|
|
29
29
|
return envelope_error('', undefined, `No ${assetName} resources found. Perhaps check your current context?\n`);
|
|
30
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/builtins/res/files.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAc,
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/builtins/res/files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { GatherMember } from './gather.store.js';
|
|
2
|
+
/**
|
|
3
|
+
* Fills in each series member's facts from the query answer its path names.
|
|
4
|
+
*
|
|
5
|
+
* A fact the answer does not have is left as it was, and an answer that
|
|
6
|
+
* cannot be read leaves the member bare: these are what a listing shows,
|
|
7
|
+
* and none of them is a reason to refuse the gather.
|
|
8
|
+
*
|
|
9
|
+
* @param members - Members being gathered, changed in place.
|
|
10
|
+
*/
|
|
11
|
+
export declare function seriesFacts_fill(members: GatherMember[]): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Whether a gathered folder is imagery, by its name and place.
|
|
14
|
+
*
|
|
15
|
+
* @param member - A member being gathered.
|
|
16
|
+
* @returns True for a directory that holds one series.
|
|
17
|
+
*/
|
|
18
|
+
export declare function placeImagery_is(member: GatherMember): boolean;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file What a gathered member is, told by the kernel rather than a surface.
|
|
3
|
+
*
|
|
4
|
+
* A member is stored by its path; what a listing shows about it — a series'
|
|
5
|
+
* description, modality, patient and study, whether a folder is imagery —
|
|
6
|
+
* is filled in here when it is gathered, so every surface reads the same
|
|
7
|
+
* row and none of them has to carry facts into the cohort itself.
|
|
8
|
+
*
|
|
9
|
+
* A series' facts come from the query answer its path names. The PACS
|
|
10
|
+
* mount already holds that answer decoded (the operator listed it to find
|
|
11
|
+
* the series), so this is usually a cache read and at most one CUBE read
|
|
12
|
+
* per query. A folder's imagery comes from its name and place alone.
|
|
13
|
+
*
|
|
14
|
+
* @module
|
|
15
|
+
*/
|
|
16
|
+
import path from 'path';
|
|
17
|
+
import { queryId_extractFromFolder } from '@fnndsc/salsa';
|
|
18
|
+
import { seriesFolder_is } from '@fnndsc/menu';
|
|
19
|
+
/**
|
|
20
|
+
* The query a PACS path lives under: its id and its folder's path.
|
|
21
|
+
*
|
|
22
|
+
* @param address - A resolved `/net/pacs/queries/...` path.
|
|
23
|
+
* @returns The query, or null when the path names none.
|
|
24
|
+
*/
|
|
25
|
+
function pathQuery_parse(address) {
|
|
26
|
+
if (!address.startsWith('/net/pacs/'))
|
|
27
|
+
return null;
|
|
28
|
+
const parts = address.split('/').filter(Boolean);
|
|
29
|
+
const at = parts.findIndex((part) => /_qid:\d+/.test(part));
|
|
30
|
+
if (at === -1)
|
|
31
|
+
return null;
|
|
32
|
+
const queryId = queryId_extractFromFolder(parts[at]);
|
|
33
|
+
if (Number.isNaN(queryId))
|
|
34
|
+
return null;
|
|
35
|
+
return { queryId, folder: `/${parts.slice(0, at + 1).join('/')}` };
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Every series one query answered, by series UID.
|
|
39
|
+
*
|
|
40
|
+
* @param queryId - The query.
|
|
41
|
+
* @param folder - Its folder, which the answer's paths are built under.
|
|
42
|
+
* @returns The series, or an empty map when the answer cannot be read.
|
|
43
|
+
*/
|
|
44
|
+
async function answerSeries_get(queryId, folder) {
|
|
45
|
+
const byUID = new Map();
|
|
46
|
+
const { vfsDispatcher } = await import('@fnndsc/salsa');
|
|
47
|
+
const decoded = await vfsDispatcher.pacs.queryResult_fetch(queryId);
|
|
48
|
+
if (decoded === null || decoded.json === undefined || decoded.json === null)
|
|
49
|
+
return byUID;
|
|
50
|
+
// Loaded on demand: only a series gathered from an answer needs it.
|
|
51
|
+
const { pacsQueryModel_build } = await import('../net/query.model.js');
|
|
52
|
+
const model = pacsQueryModel_build(decoded, { queryId, vfsPath: folder, pacsName: '', expression: '' });
|
|
53
|
+
for (const study of model.studies) {
|
|
54
|
+
for (const series of study.series)
|
|
55
|
+
byUID.set(series.seriesUID, { series, study });
|
|
56
|
+
}
|
|
57
|
+
return byUID;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Fills in each series member's facts from the query answer its path names.
|
|
61
|
+
*
|
|
62
|
+
* A fact the answer does not have is left as it was, and an answer that
|
|
63
|
+
* cannot be read leaves the member bare: these are what a listing shows,
|
|
64
|
+
* and none of them is a reason to refuse the gather.
|
|
65
|
+
*
|
|
66
|
+
* @param members - Members being gathered, changed in place.
|
|
67
|
+
*/
|
|
68
|
+
export async function seriesFacts_fill(members) {
|
|
69
|
+
const queries = new Map();
|
|
70
|
+
for (const member of members) {
|
|
71
|
+
if (member.kind !== 'series' || member.seriesUID === undefined)
|
|
72
|
+
continue;
|
|
73
|
+
const query = pathQuery_parse(member.vfsPath);
|
|
74
|
+
if (query !== null)
|
|
75
|
+
queries.set(query.queryId, query.folder);
|
|
76
|
+
}
|
|
77
|
+
const answered = new Map();
|
|
78
|
+
for (const [queryId, folder] of queries)
|
|
79
|
+
answered.set(queryId, await answerSeries_get(queryId, folder));
|
|
80
|
+
for (const member of members) {
|
|
81
|
+
if (member.kind !== 'series' || member.seriesUID === undefined)
|
|
82
|
+
continue;
|
|
83
|
+
const query = pathQuery_parse(member.vfsPath);
|
|
84
|
+
if (query === null)
|
|
85
|
+
continue;
|
|
86
|
+
const found = answered.get(query.queryId)?.get(member.seriesUID);
|
|
87
|
+
if (found === undefined)
|
|
88
|
+
continue;
|
|
89
|
+
const { series, study } = found;
|
|
90
|
+
if (series.description !== '')
|
|
91
|
+
member.description = series.description;
|
|
92
|
+
if (series.modality !== '')
|
|
93
|
+
member.modality = series.modality;
|
|
94
|
+
if (series.fileCount !== undefined)
|
|
95
|
+
member.files = series.fileCount;
|
|
96
|
+
// MRN first, as the PACS listing reads a patient; the name when the
|
|
97
|
+
// answer carries no identifier.
|
|
98
|
+
const patient = study.patientId || study.patientName;
|
|
99
|
+
if (patient !== '')
|
|
100
|
+
member.patient = patient;
|
|
101
|
+
if (study.description !== '')
|
|
102
|
+
member.study = study.description;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Whether a gathered folder is imagery, by its name and place.
|
|
107
|
+
*
|
|
108
|
+
* @param member - A member being gathered.
|
|
109
|
+
* @returns True for a directory that holds one series.
|
|
110
|
+
*/
|
|
111
|
+
export function placeImagery_is(member) {
|
|
112
|
+
return member.kind === 'dir' && seriesFolder_is(member.vfsPath, path.posix.basename(member.vfsPath));
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=gather.facts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gather.facts.js","sourceRoot":"","sources":["../../../src/builtins/res/gather.facts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file Builtin gather command: the session's cohort as a kernel subject.
|
|
3
3
|
*
|
|
4
|
-
* Subcommands: list (the default), add, remove, clear, name.
|
|
4
|
+
* Subcommands: list (the default), add, remove, clear, name, feed, process.
|
|
5
5
|
*
|
|
6
6
|
* Gathering was a surface gesture before it was a verb, which meant the set
|
|
7
7
|
* a session was working on could only be built by pressing on it. As a
|
|
@@ -11,13 +11,14 @@
|
|
|
11
11
|
*
|
|
12
12
|
* @module
|
|
13
13
|
*/
|
|
14
|
-
import { listingIn_take,
|
|
15
|
-
import {
|
|
14
|
+
import { listingIn_take, listingOperands_extract } from '../../core/listing.js';
|
|
15
|
+
import { answerNumbering_derive, handleWords_map, numberedFooter_render } from '../../session/answer.js';
|
|
16
16
|
import chalk from 'chalk';
|
|
17
17
|
import path from 'path';
|
|
18
18
|
import { table_render } from '@fnndsc/chili/screen/screen.js';
|
|
19
19
|
import { commandArgs_process, path_resolve } from '../utils.js';
|
|
20
|
-
import { cohort_read, cohort_write, member_key, members_drop, members_merge, pathKind_determine,
|
|
20
|
+
import { cohort_read, cohort_write, cohortModel_wrap, cohortFolders_resolve, member_key, members_drop, members_merge, pathKind_determine, seriesUID_parse, } from './gather.store.js';
|
|
21
|
+
import { placeImagery_is, seriesFacts_fill } from './gather.facts.js';
|
|
21
22
|
import { envelope_ok, envelope_error } from '@fnndsc/menu';
|
|
22
23
|
import { GATHER_MODEL_KIND } from './gather.kind.js';
|
|
23
24
|
export { GATHER_MODEL_KIND };
|
|
@@ -65,14 +66,14 @@ function member_state(member) {
|
|
|
65
66
|
* @returns A success envelope carrying the rendered table and the model.
|
|
66
67
|
*/
|
|
67
68
|
function cohort_render(state) {
|
|
68
|
-
const model =
|
|
69
|
+
const model = cohortModel_wrap(state);
|
|
69
70
|
if (state.series.length === 0) {
|
|
70
71
|
return envelope_ok(`${chalk.gray('The cohort is empty. Gather something with `gather add <path>`.')}\n`, model);
|
|
71
72
|
}
|
|
72
73
|
// Each member wears the handle an index expands to (#1099): one sequence
|
|
73
74
|
// per kind, as the cohort's numbering counts them.
|
|
74
|
-
const numbered =
|
|
75
|
-
const words =
|
|
75
|
+
const numbered = answerNumbering_derive(GATHER_MODEL_KIND, state) ?? [];
|
|
76
|
+
const words = handleWords_map(numbered);
|
|
76
77
|
const kindCode = (member) => (member.kind === 'dir' ? 'DIR' : member.kind === 'file' ? 'FIL' : 'SER');
|
|
77
78
|
const rows = state.series.map((member) => ({
|
|
78
79
|
'@': words.get(`${kindCode(member)}:${member.vfsPath}`) ?? '',
|
|
@@ -91,7 +92,7 @@ function cohort_render(state) {
|
|
|
91
92
|
const title = state.name === null ? 'Cohort' : `Cohort · ${state.name}`;
|
|
92
93
|
return envelope_ok(`${table_render(rows, ['@', 'kind', 'member', 'state', 'path'], {
|
|
93
94
|
title: { title, justification: 'center' },
|
|
94
|
-
})}${chalk.gray(parts.join(' · '))}\n${numbered.length > 0 ? `${chalk.gray(
|
|
95
|
+
})}${chalk.gray(parts.join(' · '))}\n${numbered.length > 0 ? `${chalk.gray(numberedFooter_render(numbered))}\n` : ''}`, model);
|
|
95
96
|
}
|
|
96
97
|
/**
|
|
97
98
|
* Takes paths into the cohort.
|
|
@@ -116,17 +117,25 @@ async function gather_add(operands) {
|
|
|
116
117
|
return gather_error(`gather: ${resolved}: nothing is there.`);
|
|
117
118
|
const member = { vfsPath: resolved, kind };
|
|
118
119
|
if (member.kind === 'series') {
|
|
119
|
-
const uid =
|
|
120
|
+
const uid = seriesUID_parse(resolved);
|
|
120
121
|
if (uid !== undefined)
|
|
121
122
|
member.seriesUID = uid;
|
|
122
123
|
member.imagery = true;
|
|
123
124
|
}
|
|
125
|
+
else if (placeImagery_is(member)) {
|
|
126
|
+
member.imagery = true;
|
|
127
|
+
}
|
|
124
128
|
incoming.push(member);
|
|
125
129
|
}
|
|
126
|
-
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
|
|
130
|
+
await seriesFacts_fill(incoming);
|
|
131
|
+
const read = await cohort_read();
|
|
132
|
+
const { members, added, merged } = members_merge(read.series, incoming);
|
|
133
|
+
read.series = members;
|
|
134
|
+
await cohort_write(read);
|
|
135
|
+
// A series CUBE already holds is known by its folder from the moment it
|
|
136
|
+
// is gathered: that folder is what a surface opens as an image and what
|
|
137
|
+
// `gather process` roots on. One CUBE read for every series still unplaced.
|
|
138
|
+
const state = await cohortFolders_resolve(read);
|
|
130
139
|
const noted = [];
|
|
131
140
|
if (added > 0)
|
|
132
141
|
noted.push(`${added} gathered`);
|
|
@@ -199,7 +208,27 @@ async function gather_name(operands) {
|
|
|
199
208
|
}
|
|
200
209
|
state.name = operands.join(' ');
|
|
201
210
|
await cohort_write(state);
|
|
202
|
-
|
|
211
|
+
// The cohort travels with the answer, as every changing verb's does, so
|
|
212
|
+
// a surface showing it takes the name from here.
|
|
213
|
+
return envelope_ok(`${chalk.green(`gather: the cohort is "${state.name}".`)}\n`, cohortModel_wrap(state));
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Makes the cohort's feed, or names the one it has.
|
|
217
|
+
*
|
|
218
|
+
* @param words - The words after `gather feed`, raw.
|
|
219
|
+
* @returns The cohort, with its feed.
|
|
220
|
+
*/
|
|
221
|
+
async function gather_feed(words) {
|
|
222
|
+
// Loaded on demand, as `process` is: making a feed carries the pull and
|
|
223
|
+
// feed machinery, which the cohort's own verbs never need.
|
|
224
|
+
const { cohortFeed_make } = await import('./gather.process.js');
|
|
225
|
+
const made = await cohortFeed_make(words);
|
|
226
|
+
if (typeof made === 'string')
|
|
227
|
+
return gather_error(`gather feed: ${made}`);
|
|
228
|
+
const feedId = made.state.feed?.feedId;
|
|
229
|
+
const said = made.made ? `gather: the cohort's feed is ${feedId}, made now.` : `gather: the cohort's feed is ${feedId}.`;
|
|
230
|
+
const envelope = cohort_render(made.state);
|
|
231
|
+
return envelope_ok(`${chalk.green(said)}\n${envelope.rendered}`, envelope.model);
|
|
203
232
|
}
|
|
204
233
|
/**
|
|
205
234
|
* Builtin handler for the `gather` command.
|
|
@@ -224,7 +253,7 @@ export async function builtin_gather(args) {
|
|
|
224
253
|
if (piped === null) {
|
|
225
254
|
return gather_error(`gather ${subcommand}: what? give paths or handles (@SER3), \${listing}, or pipe a listing in (query … | gather ${subcommand === 'rm' ? 'remove' : subcommand})`);
|
|
226
255
|
}
|
|
227
|
-
given =
|
|
256
|
+
given = listingOperands_extract(piped) ?? [];
|
|
228
257
|
if (given.length === 0)
|
|
229
258
|
return gather_error(`gather ${subcommand}: the listing piped in has nothing to ${subcommand === 'add' ? 'gather' : 'remove'}.`);
|
|
230
259
|
}
|
|
@@ -242,10 +271,12 @@ export async function builtin_gather(args) {
|
|
|
242
271
|
}
|
|
243
272
|
if (subcommand === 'name')
|
|
244
273
|
return await gather_name(operands);
|
|
274
|
+
if (subcommand === 'feed')
|
|
275
|
+
return await gather_feed(args.slice(args.indexOf('feed') + 1));
|
|
245
276
|
}
|
|
246
277
|
catch (e) {
|
|
247
278
|
return gather_error(`gather: ${e instanceof Error ? e.message : String(e)}`);
|
|
248
279
|
}
|
|
249
|
-
return gather_error(`Unknown subcommand: ${subcommand}. Usage: gather <list|add|remove|clear|name|process>`);
|
|
280
|
+
return gather_error(`Unknown subcommand: ${subcommand}. Usage: gather <list|add|remove|clear|name|feed|process>`);
|
|
250
281
|
}
|
|
251
282
|
//# sourceMappingURL=gather.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gather.js","sourceRoot":"","sources":["../../../src/builtins/res/gather.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"gather.js","sourceRoot":"","sources":["../../../src/builtins/res/gather.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type CommandEnvelope } from '@fnndsc/menu';
|
|
2
|
+
import { type GatherState } from './gather.store.js';
|
|
2
3
|
/** How `gather process` was asked for. */
|
|
3
4
|
export interface GatherProcessArgs {
|
|
4
5
|
/** The plugin or pipeline, as `/bin` names it. */
|
|
@@ -19,6 +20,22 @@ export interface GatherProcessArgs {
|
|
|
19
20
|
* @returns The request, or why it is not one.
|
|
20
21
|
*/
|
|
21
22
|
export declare function gatherProcessArgs_parse(words: ReadonlyArray<string>): GatherProcessArgs;
|
|
23
|
+
/**
|
|
24
|
+
* `gather feed [--title T]`: the cohort's feed, made now when it has none.
|
|
25
|
+
*
|
|
26
|
+
* The feed is rooted on every member's place, so a series still at the
|
|
27
|
+
* PACS is pulled first (one `pull` over all of them); a folder or a file is
|
|
28
|
+
* already in CUBE and goes into the root as it is. The feed is noted on the
|
|
29
|
+
* cohort, which is what a later `gather process` runs off and what a
|
|
30
|
+
* surface reads it from.
|
|
31
|
+
*
|
|
32
|
+
* @param words - The words after `gather feed`, raw.
|
|
33
|
+
* @returns The cohort with its feed, and whether the feed was made now; or a refusal.
|
|
34
|
+
*/
|
|
35
|
+
export declare function cohortFeed_make(words: ReadonlyArray<string>): Promise<{
|
|
36
|
+
state: GatherState;
|
|
37
|
+
made: boolean;
|
|
38
|
+
} | string>;
|
|
22
39
|
/**
|
|
23
40
|
* `gather process <name> [--title T] [--detach] [-- args]`: runs a plugin or
|
|
24
41
|
* a pipeline once over the whole cohort.
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* is in the data the plugin reads. This is the shape ARGUS's PROCESS builds
|
|
8
8
|
* from a press (#597), so a manifest and a press make the same feed.
|
|
9
9
|
*
|
|
10
|
-
* When the cohort already has a feed (
|
|
11
|
-
*
|
|
10
|
+
* When the cohort already has a feed (`gather feed`, which ARGUS's CREATE
|
|
11
|
+
* FEED sends, noted it on the cohort), the run goes off that feed's root and
|
|
12
12
|
* nothing is copied twice; otherwise the feed is made here and noted on the
|
|
13
13
|
* cohort for the next run. The name resolves as a bare line resolves it in
|
|
14
14
|
* `/bin`. A series not pulled yet has no folder to copy, and the verb refuses
|
|
@@ -28,7 +28,7 @@ import { binExecutableMatches_get } from '../../chris/binExecutables.js';
|
|
|
28
28
|
import { builtin_executePlugin } from '../pluginExecute.js';
|
|
29
29
|
import { builtin_pipeline } from './pipeline.js';
|
|
30
30
|
import { newFeed_cacheAdd, run_follow } from '../feedCreation.js';
|
|
31
|
-
import { cohort_read, cohort_write } from './gather.store.js';
|
|
31
|
+
import { cohort_read, cohort_write, cohortFolders_resolve } from './gather.store.js';
|
|
32
32
|
/** The usage line a refusal points at. */
|
|
33
33
|
const USAGE = 'gather process <plugin|pipeline> [--title T] [--detach] [-- <its arguments>]';
|
|
34
34
|
/**
|
|
@@ -130,6 +130,55 @@ async function cohortFeed_ensure(state, places, title) {
|
|
|
130
130
|
sink_dataLine(chalk.green(`Feed created: ${feedId} (${places.length} member${places.length === 1 ? '' : 's'} in its root, ${rootInstanceId})`));
|
|
131
131
|
return { feed: made, made: true };
|
|
132
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* `gather feed [--title T]`: the cohort's feed, made now when it has none.
|
|
135
|
+
*
|
|
136
|
+
* The feed is rooted on every member's place, so a series still at the
|
|
137
|
+
* PACS is pulled first (one `pull` over all of them); a folder or a file is
|
|
138
|
+
* already in CUBE and goes into the root as it is. The feed is noted on the
|
|
139
|
+
* cohort, which is what a later `gather process` runs off and what a
|
|
140
|
+
* surface reads it from.
|
|
141
|
+
*
|
|
142
|
+
* @param words - The words after `gather feed`, raw.
|
|
143
|
+
* @returns The cohort with its feed, and whether the feed was made now; or a refusal.
|
|
144
|
+
*/
|
|
145
|
+
export async function cohortFeed_make(words) {
|
|
146
|
+
let title = null;
|
|
147
|
+
for (let at = 0; at < words.length; at++) {
|
|
148
|
+
const word = words[at];
|
|
149
|
+
if (word === '--title') {
|
|
150
|
+
const given = words[at + 1];
|
|
151
|
+
if (given === undefined || given.startsWith('--') || given.trim() === '')
|
|
152
|
+
return '--title needs a title';
|
|
153
|
+
title = given.trim();
|
|
154
|
+
at++;
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
return `${word}: not understood. Usage: gather feed [--title T]`;
|
|
158
|
+
}
|
|
159
|
+
let state = await cohortFolders_resolve(await cohort_read());
|
|
160
|
+
if (state.series.length === 0)
|
|
161
|
+
return 'the cohort is empty; gather add something first';
|
|
162
|
+
if (state.feed !== null)
|
|
163
|
+
return { state, made: false };
|
|
164
|
+
const away = state.series.filter((member) => member_place(member) === null);
|
|
165
|
+
if (away.length > 0) {
|
|
166
|
+
// Loaded on demand: only a cohort with series still at the PACS pulls.
|
|
167
|
+
const { builtin_pull } = await import('../fs/pull.js');
|
|
168
|
+
await builtin_pull(away.map((member) => member.vfsPath));
|
|
169
|
+
state = await cohortFolders_resolve(await cohort_read());
|
|
170
|
+
const waiting = state.series.filter((member) => member_place(member) === null);
|
|
171
|
+
if (waiting.length > 0) {
|
|
172
|
+
const named = waiting.slice(0, 5).map(member_word).join(', ') + (waiting.length > 5 ? `, and ${waiting.length - 5} more` : '');
|
|
173
|
+
return `${waiting.length} series did not land (${named}); no feed was made`;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
const places = state.series.map((member) => member_place(member));
|
|
177
|
+
const ensured = await cohortFeed_ensure(state, places, title ?? state.name ?? 'cohort');
|
|
178
|
+
if (typeof ensured === 'string')
|
|
179
|
+
return ensured;
|
|
180
|
+
return { state: { ...state, feed: ensured.feed }, made: ensured.made };
|
|
181
|
+
}
|
|
133
182
|
/**
|
|
134
183
|
* `gather process <name> [--title T] [--detach] [-- args]`: runs a plugin or
|
|
135
184
|
* a pipeline once over the whole cohort.
|
|
@@ -142,7 +191,9 @@ export async function gather_process(words) {
|
|
|
142
191
|
if (parsed.error !== null || parsed.name === null)
|
|
143
192
|
return process_refuse(parsed.error ?? USAGE);
|
|
144
193
|
const name = parsed.name;
|
|
145
|
-
|
|
194
|
+
// A series pulled but not yet noted on the cohort is found in CUBE, not
|
|
195
|
+
// refused as never pulled.
|
|
196
|
+
const state = await cohortFolders_resolve(await cohort_read());
|
|
146
197
|
if (state.series.length === 0)
|
|
147
198
|
return process_refuse('the cohort is empty; gather add something first');
|
|
148
199
|
const waiting = state.series.filter((member) => member_place(member) === null);
|
|
@@ -165,7 +216,9 @@ export async function gather_process(words) {
|
|
|
165
216
|
const { feed, made } = ensured;
|
|
166
217
|
const detach = parsed.detach ? ['--detach'] : [];
|
|
167
218
|
const envelope = matches.pipeline !== undefined
|
|
168
|
-
|
|
219
|
+
// By its /bin name, which names the id: a pipeline found by its CUBE
|
|
220
|
+
// name runs as exactly that one.
|
|
221
|
+
? await builtin_pipeline(['run', matches.pipeline.name, '--previous', String(feed.rootInstanceId), ...detach, ...parsed.forwarded])
|
|
169
222
|
: await builtin_executePlugin(name, [...detach, ...parsed.forwarded], feed.path);
|
|
170
223
|
// The run went off a root, so it reads as continuing a feed; when that
|
|
171
224
|
// feed was made by this line, the answer says so, as a bare run's would.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gather.process.js","sourceRoot":"","sources":["../../../src/builtins/res/gather.process.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAA2B,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,cAAc,EAAwB,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAA6B,MAAM,+BAA+B,CAAC;AACpG,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAwD,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"gather.process.js","sourceRoot":"","sources":["../../../src/builtins/res/gather.process.ts"],"names":[],"mappings":"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"}
|