@fnndsc/brasa 0.46.0 → 0.47.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 (57) hide show
  1. package/dist/buildinfo.json +1 -1
  2. package/dist/builtins/fs/pull.js +23 -0
  3. package/dist/builtins/fs/pull.js.map +1 -1
  4. package/dist/builtins/help.js +55 -0
  5. package/dist/builtins/help.js.map +1 -1
  6. package/dist/builtins/net/query.d.ts +3 -21
  7. package/dist/builtins/net/query.js +4 -65
  8. package/dist/builtins/net/query.js.map +1 -1
  9. package/dist/builtins/net/query.model.d.ts +31 -0
  10. package/dist/builtins/net/query.model.js +66 -0
  11. package/dist/builtins/net/query.model.js.map +1 -0
  12. package/dist/builtins/res/expect.d.ts +38 -0
  13. package/dist/builtins/res/expect.js +77 -182
  14. package/dist/builtins/res/expect.js.map +1 -1
  15. package/dist/builtins/res/gather.facts.d.ts +18 -0
  16. package/dist/builtins/res/gather.facts.js +114 -0
  17. package/dist/builtins/res/gather.facts.js.map +1 -0
  18. package/dist/builtins/res/gather.js +40 -9
  19. package/dist/builtins/res/gather.js.map +1 -1
  20. package/dist/builtins/res/gather.process.d.ts +17 -0
  21. package/dist/builtins/res/gather.process.js +58 -5
  22. package/dist/builtins/res/gather.process.js.map +1 -1
  23. package/dist/builtins/res/gather.store.d.ts +36 -0
  24. package/dist/builtins/res/gather.store.js +105 -2
  25. package/dist/builtins/res/gather.store.js.map +1 -1
  26. package/dist/builtins/res/play.js +29 -10
  27. package/dist/builtins/res/play.js.map +1 -1
  28. package/dist/builtins/variablesPage.js +2 -0
  29. package/dist/builtins/variablesPage.js.map +1 -1
  30. package/dist/chris/backend.js +2 -0
  31. package/dist/chris/backend.js.map +1 -1
  32. package/dist/chris/binExecutables.d.ts +7 -1
  33. package/dist/chris/binExecutables.js +13 -3
  34. package/dist/chris/binExecutables.js.map +1 -1
  35. package/dist/chris/chrisCommands.js +0 -6
  36. package/dist/chris/chrisCommands.js.map +1 -1
  37. package/dist/chris/commandFallback.js +4 -2
  38. package/dist/chris/commandFallback.js.map +1 -1
  39. package/dist/chris/expectSubjects.d.ts +3 -0
  40. package/dist/chris/expectSubjects.js +131 -0
  41. package/dist/chris/expectSubjects.js.map +1 -0
  42. package/dist/chris/help.js +10 -55
  43. package/dist/chris/help.js.map +1 -1
  44. package/dist/core/backend.d.ts +38 -0
  45. package/dist/core/backend.js.map +1 -1
  46. package/dist/core/coreCommands.js +6 -0
  47. package/dist/core/coreCommands.js.map +1 -1
  48. package/dist/core/dispatch.js +9 -1
  49. package/dist/core/dispatch.js.map +1 -1
  50. package/dist/core/pipeHead.d.ts +36 -0
  51. package/dist/core/pipeHead.js +28 -0
  52. package/dist/core/pipeHead.js.map +1 -0
  53. package/dist/core/variables.d.ts +3 -2
  54. package/dist/core/variables.js +7 -3
  55. package/dist/core/variables.js.map +1 -1
  56. package/dist/notes.json +1 -1
  57. package/package.json +5 -5
@@ -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
@@ -17,7 +17,8 @@ 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, seriesUID_ofPath, } from './gather.store.js';
20
+ import { cohort_read, cohort_write, cohortModel_of, cohortFolders_resolve, member_key, members_drop, members_merge, pathKind_determine, seriesUID_ofPath, } 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,7 +66,7 @@ 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 = { kind: GATHER_MODEL_KIND, data: state };
69
+ const model = cohortModel_of(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
  }
@@ -121,12 +122,20 @@ async function gather_add(operands) {
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
- const state = await cohort_read();
127
- const { members, added, merged } = members_merge(state.series, incoming);
128
- state.series = members;
129
- await cohort_write(state);
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
- return envelope_ok(`${chalk.green(`gather: the cohort is "${state.name}".`)}\n`);
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_of(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.
@@ -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":"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"}
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 (a `pull --new-feed`, or ARGUS's
11
- * CREATE FEED, noted it on the cohort), the run goes off that feed's root and
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
- const state = await cohort_read();
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
- ? await builtin_pipeline(['run', name, '--previous', String(feed.rootInstanceId), ...detach, ...parsed.forwarded])
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":"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"}
1
+ {"version":3,"file":"gather.process.js","sourceRoot":"","sources":["../../../src/builtins/res/gather.process.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { EnvelopeModel } from '@fnndsc/menu';
1
2
  /** Where the session keeps the cohort it is working on. */
2
3
  export declare const COHORT_FILE: string;
3
4
  /** The directory that holds it, created on first write. */
@@ -57,6 +58,16 @@ export interface GatherState {
57
58
  }
58
59
  /** An empty cohort: what a session that has gathered nothing holds. */
59
60
  export declare function cohortState_empty(): GatherState;
61
+ /**
62
+ * The cohort as the model it travels in.
63
+ *
64
+ * Every verb that changes the cohort answers with it, so a surface showing
65
+ * the cohort redraws from the kernel's copy and never keeps one of its own.
66
+ *
67
+ * @param state - The cohort.
68
+ * @returns The `gather.cohort` model.
69
+ */
70
+ export declare function cohortModel_of(state: GatherState): EnvelopeModel;
60
71
  /**
61
72
  * The identity of one member.
62
73
  *
@@ -101,10 +112,35 @@ export declare function pathKind_determine(address: string): Promise<GatherKind
101
112
  /**
102
113
  * The series UID a PACS projection path names, when it names one.
103
114
  *
115
+ * A query's answer names a series `Series_<uid>_<description>`; a path may
116
+ * also end in the bare UID.
117
+ *
104
118
  * @param address - A resolved VFS path.
105
119
  * @returns The UID, or undefined when the path is not a series projection.
106
120
  */
107
121
  export declare function seriesUID_ofPath(address: string): string | undefined;
122
+ /**
123
+ * Notes on the cohort where the series a pull fetched landed.
124
+ *
125
+ * The pull knows each folder the moment CUBE files it; a member that stands
126
+ * for one of those series takes the folder, so the cohort reads as home
127
+ * without asking CUBE again.
128
+ *
129
+ * @param landed - Series UID to the CUBE folder it landed in.
130
+ * @returns How many members changed.
131
+ */
132
+ export declare function cohortFolders_note(landed: ReadonlyMap<string, string>): Promise<number>;
133
+ /**
134
+ * Asks CUBE where any series member not yet known to be home landed.
135
+ *
136
+ * CUBE is the truth and the cohort file a cache of it: a series pulled
137
+ * earlier, by a surface or in another session, or a folder a surface's
138
+ * rewrite dropped, is found again here rather than read as never pulled.
139
+ *
140
+ * @param state - The cohort, changed in place.
141
+ * @returns The cohort, with every folder CUBE could name; written back when it changed.
142
+ */
143
+ export declare function cohortFolders_resolve(state: GatherState): Promise<GatherState>;
108
144
  /**
109
145
  * Takes members into a cohort, merging what a later sighting knows.
110
146
  *
@@ -22,11 +22,12 @@
22
22
  * @module
23
23
  */
24
24
  import path from 'path';
25
- import { listCache_get } from '@fnndsc/cumin';
25
+ import { listCache_get, seriesStorage_resolveMany } from '@fnndsc/cumin';
26
26
  import { fileContent_get, files_path_isDirectory } from '@fnndsc/salsa';
27
27
  import { files_touch as chefs_touch_cmd } from '@fnndsc/chili/commands/fs/touch.js';
28
28
  import { files_mkdir as chefs_mkdir_cmd } from '@fnndsc/chili/commands/fs/mkdir.js';
29
29
  import { path_resolve } from '../utils.js';
30
+ import { GATHER_MODEL_KIND } from './gather.kind.js';
30
31
  /** Where the session keeps the cohort it is working on. */
31
32
  export const COHORT_FILE = '~/gather/current.json';
32
33
  /** The directory that holds it, created on first write. */
@@ -35,6 +36,18 @@ export const COHORT_DIR = '~/gather';
35
36
  export function cohortState_empty() {
36
37
  return { version: 1, name: null, feed: null, series: [] };
37
38
  }
39
+ /**
40
+ * The cohort as the model it travels in.
41
+ *
42
+ * Every verb that changes the cohort answers with it, so a surface showing
43
+ * the cohort redraws from the kernel's copy and never keeps one of its own.
44
+ *
45
+ * @param state - The cohort.
46
+ * @returns The `gather.cohort` model.
47
+ */
48
+ export function cohortModel_of(state) {
49
+ return { kind: GATHER_MODEL_KIND, data: state };
50
+ }
38
51
  /**
39
52
  * The identity of one member.
40
53
  *
@@ -164,12 +177,102 @@ async function folderEntries_list(folder) {
164
177
  /**
165
178
  * The series UID a PACS projection path names, when it names one.
166
179
  *
180
+ * A query's answer names a series `Series_<uid>_<description>`; a path may
181
+ * also end in the bare UID.
182
+ *
167
183
  * @param address - A resolved VFS path.
168
184
  * @returns The UID, or undefined when the path is not a series projection.
169
185
  */
170
186
  export function seriesUID_ofPath(address) {
171
187
  const leaf = path.posix.basename(address);
172
- return /^[0-9]+(\.[0-9]+)+$/.test(leaf) ? leaf : undefined;
188
+ if (/^[0-9]+(\.[0-9]+)+$/.test(leaf))
189
+ return leaf;
190
+ const named = leaf.match(/^Series_([0-9]+(?:\.[0-9]+)+)(?:_|$)/);
191
+ return named === null ? undefined : named[1];
192
+ }
193
+ /**
194
+ * The series UID a member stands for, when it is a series.
195
+ *
196
+ * @param member - A cohort member.
197
+ * @returns The UID it carries, else the one its path names.
198
+ */
199
+ function memberSeriesUID_get(member) {
200
+ if (member.kind !== 'series')
201
+ return undefined;
202
+ return typeof member.seriesUID === 'string' && member.seriesUID.length > 0
203
+ ? member.seriesUID
204
+ : seriesUID_ofPath(member.vfsPath);
205
+ }
206
+ /**
207
+ * Writes where series landed onto the members that stand for them.
208
+ *
209
+ * @param state - The cohort, changed in place.
210
+ * @param landed - Series UID to the CUBE folder it landed in.
211
+ * @returns How many members changed.
212
+ */
213
+ function memberFolders_apply(state, landed) {
214
+ let changed = 0;
215
+ for (const member of state.series) {
216
+ const uid = memberSeriesUID_get(member);
217
+ if (uid === undefined)
218
+ continue;
219
+ const folder = landed.get(uid);
220
+ if (folder === undefined || member.folderPath === folder)
221
+ continue;
222
+ member.seriesUID = uid;
223
+ member.folderPath = folder;
224
+ changed += 1;
225
+ }
226
+ return changed;
227
+ }
228
+ /**
229
+ * Notes on the cohort where the series a pull fetched landed.
230
+ *
231
+ * The pull knows each folder the moment CUBE files it; a member that stands
232
+ * for one of those series takes the folder, so the cohort reads as home
233
+ * without asking CUBE again.
234
+ *
235
+ * @param landed - Series UID to the CUBE folder it landed in.
236
+ * @returns How many members changed.
237
+ */
238
+ export async function cohortFolders_note(landed) {
239
+ if (landed.size === 0)
240
+ return 0;
241
+ const state = await cohort_read();
242
+ const changed = memberFolders_apply(state, landed);
243
+ if (changed > 0)
244
+ await cohort_write(state);
245
+ return changed;
246
+ }
247
+ /**
248
+ * Asks CUBE where any series member not yet known to be home landed.
249
+ *
250
+ * CUBE is the truth and the cohort file a cache of it: a series pulled
251
+ * earlier, by a surface or in another session, or a folder a surface's
252
+ * rewrite dropped, is found again here rather than read as never pulled.
253
+ *
254
+ * @param state - The cohort, changed in place.
255
+ * @returns The cohort, with every folder CUBE could name; written back when it changed.
256
+ */
257
+ export async function cohortFolders_resolve(state) {
258
+ const uids = [...new Set(state.series
259
+ .filter((member) => typeof member.folderPath !== 'string' || member.folderPath.length === 0)
260
+ .map(memberSeriesUID_get)
261
+ .filter((uid) => uid !== undefined))];
262
+ if (uids.length === 0)
263
+ return state;
264
+ const filters = uids.map((uid) => ({ SeriesInstanceUID: uid }));
265
+ const found = await seriesStorage_resolveMany(filters, { counts: false });
266
+ if (!found.ok)
267
+ return state;
268
+ const landed = new Map();
269
+ for (const [uid, storage] of found.value) {
270
+ if (storage.folderPath !== null)
271
+ landed.set(uid, storage.folderPath);
272
+ }
273
+ if (memberFolders_apply(state, landed) > 0)
274
+ await cohort_write(state);
275
+ return state;
173
276
  }
174
277
  /**
175
278
  * Takes members into a cohort, merging what a later sighting knows.
@@ -1 +1 @@
1
- {"version":3,"file":"gather.store.js","sourceRoot":"","sources":["../../../src/builtins/res/gather.store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gather.store.js","sourceRoot":"","sources":["../../../src/builtins/res/gather.store.ts"],"names":[],"mappings":"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"}
@@ -20,12 +20,13 @@
20
20
  * @module
21
21
  */
22
22
  import chalk from 'chalk';
23
- import { fileContent_get } from '@fnndsc/salsa';
24
23
  import { path_resolve } from '../utils.js';
25
24
  import { duration_parse } from '../../lib/duration.js';
26
25
  import { recorder_mute, recorder_unmute } from '../../session/recorder.js';
27
26
  import { sink_dataLine, sink_errLine } from '../../core/sink.js';
28
27
  import { commandCancellation_enable, commandCancellation_signalGet } from '../../core/cancellation.js';
28
+ import { backendInstalled_get } from '../../core/backend.js';
29
+ import { exitCode_read } from '../../core/handlerRun.js';
29
30
  import { reference_isReserved, reference_resolve, unresolvedStands_run } from '../../core/expansion.js';
30
31
  import { VARIABLE_NAME, variable_get, variableScope_run } from '../../core/variables.js';
31
32
  import { shellWords_referencesExpand, shellWords_tokenize } from '../../lib/parser.js';
@@ -110,7 +111,8 @@ async function pause_take(ms, signal) {
110
111
  });
111
112
  }
112
113
  /**
113
- * Reads a manifest, from the ChRIS filesystem or from the engine's own disk.
114
+ * Reads a manifest, from the backend's filesystem (ChRIS: CFS) or from the
115
+ * engine's own disk.
114
116
  *
115
117
  * A manifest is a ChRIS file: that is what makes one shareable, and sharing
116
118
  * it is `setfacl`, like any other file. But a repository's battery lives
@@ -127,11 +129,19 @@ async function manifestText_read(target) {
127
129
  // Asking CFS is how we find out whether the manifest lives there. The
128
130
  // miss is an ANSWER, not a fault: left on the stack it made a play that
129
131
  // ran a host-side battery perfectly exit non-zero.
130
- const mark = errorStack.checkpoint_mark();
131
- const held = await fileContent_get(resolved);
132
- if (held.ok)
133
- return { ok: true, value: { text: held.value, from: resolved } };
134
- errorStack.checkpoint_drain(mark);
132
+ // The backend's files are asked first (ChRIS: CFS); a backend with no
133
+ // files of its own (stratus) has only the engine's disk.
134
+ const files = backendInstalled_get()?.files;
135
+ if (files !== undefined) {
136
+ const mark = errorStack.checkpoint_mark();
137
+ try {
138
+ const bytes = await files.read(resolved);
139
+ return { ok: true, value: { text: bytes.toString('utf8'), from: resolved } };
140
+ }
141
+ catch {
142
+ errorStack.checkpoint_drain(mark);
143
+ }
144
+ }
135
145
  try {
136
146
  const { readFile } = await import('node:fs/promises');
137
147
  const text = await readFile(target, 'utf8');
@@ -246,7 +256,7 @@ export async function builtin_play(args) {
246
256
  const source = await manifestText_read(parsed.manifest);
247
257
  if (!source.ok) {
248
258
  process.exitCode = 1;
249
- return envelope_error('', undefined, `${chalk.red(`play: cannot read ${parsed.manifest} — no such manifest in the ChRIS filesystem, and none beside the engine.`)}\n`);
259
+ return envelope_error('', undefined, `${chalk.red(`play: cannot read ${parsed.manifest} — no such manifest in the session's filesystem, and none beside the engine.`)}\n`);
250
260
  }
251
261
  const manifest = manifest_parse(source.value.text);
252
262
  // A manifest may not take a name the session answers for: shadowing a
@@ -294,6 +304,7 @@ export async function builtin_play(args) {
294
304
  let stoppedAt = null;
295
305
  // What the manifest answers with, read before its scope ends with it.
296
306
  let answered;
307
+ const exitBeforePlay = exitCode_read();
297
308
  depth += 1;
298
309
  // What a play runs is already written down in the file it is playing: a
299
310
  // recording that captured it too would hold every line twice.
@@ -313,10 +324,15 @@ export async function builtin_play(args) {
313
324
  // The line is SHOWN as written, then handed to the session, which
314
325
  // resolves its references the way it resolves every other line's.
315
326
  sink_dataLine(chalk.cyan(`▸ ${line.text}`));
327
+ // A line failed when it refused or set the exit status. The status is
328
+ // cleared before each line, so one an earlier command left set (before
329
+ // the play, or by a line that passed) is never this line's.
330
+ process.exitCode = 0;
316
331
  const envelopes = await line_execute(line.text);
317
332
  ran += 1;
318
- const refused = envelopes.some((envelope) => envelope.status === 'error');
319
- if (refused || process.exitCode === 1) {
333
+ const refused = envelopes.some((envelope) => envelope.status === 'error')
334
+ || exitCode_read() !== 0;
335
+ if (refused) {
320
336
  // A workflow whose first half failed has a second half that is
321
337
  // noise: the play stops where the trouble is.
322
338
  sink_errLine(chalk.red(`✗ ${parsed.manifest}:${line.number} refused — stopping.`));
@@ -337,6 +353,9 @@ export async function builtin_play(args) {
337
353
  recorder_unmute();
338
354
  depth -= 1;
339
355
  }
356
+ // A play that ran through leaves the session's status as it found it.
357
+ if (stoppedAt === null)
358
+ process.exitCode = exitBeforePlay;
340
359
  const outcome = {
341
360
  manifest: parsed.manifest,
342
361
  ran,