@fnndsc/brasa 0.45.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 (107) hide show
  1. package/dist/api/models.d.ts +37 -0
  2. package/dist/api/models.js.map +1 -1
  3. package/dist/buildinfo.json +1 -1
  4. package/dist/builtins/fs/pull.args.d.ts +0 -10
  5. package/dist/builtins/fs/pull.args.js +5 -30
  6. package/dist/builtins/fs/pull.args.js.map +1 -1
  7. package/dist/builtins/fs/pull.js +25 -48
  8. package/dist/builtins/fs/pull.js.map +1 -1
  9. package/dist/builtins/help.js +76 -5
  10. package/dist/builtins/help.js.map +1 -1
  11. package/dist/builtins/helpSections.js +3 -3
  12. package/dist/builtins/helpSections.js.map +1 -1
  13. package/dist/builtins/net/query.d.ts +3 -21
  14. package/dist/builtins/net/query.js +4 -68
  15. package/dist/builtins/net/query.js.map +1 -1
  16. package/dist/builtins/net/query.model.d.ts +31 -0
  17. package/dist/builtins/net/query.model.js +66 -0
  18. package/dist/builtins/net/query.model.js.map +1 -0
  19. package/dist/builtins/pluginExecute.d.ts +4 -1
  20. package/dist/builtins/pluginExecute.js +11 -12
  21. package/dist/builtins/pluginExecute.js.map +1 -1
  22. package/dist/builtins/res/expect.d.ts +38 -0
  23. package/dist/builtins/res/expect.js +77 -179
  24. package/dist/builtins/res/expect.js.map +1 -1
  25. package/dist/builtins/res/gather.d.ts +2 -2
  26. package/dist/builtins/res/gather.facts.d.ts +18 -0
  27. package/dist/builtins/res/gather.facts.js +114 -0
  28. package/dist/builtins/res/gather.facts.js.map +1 -0
  29. package/dist/builtins/res/gather.js +50 -11
  30. package/dist/builtins/res/gather.js.map +1 -1
  31. package/dist/builtins/res/gather.kind.d.ts +9 -0
  32. package/dist/builtins/res/gather.kind.js +10 -0
  33. package/dist/builtins/res/gather.kind.js.map +1 -0
  34. package/dist/builtins/res/gather.process.d.ts +46 -0
  35. package/dist/builtins/res/gather.process.js +230 -0
  36. package/dist/builtins/res/gather.process.js.map +1 -0
  37. package/dist/builtins/res/gather.store.d.ts +36 -0
  38. package/dist/builtins/res/gather.store.js +105 -2
  39. package/dist/builtins/res/gather.store.js.map +1 -1
  40. package/dist/builtins/res/pipeline.d.ts +16 -0
  41. package/dist/builtins/res/pipeline.js +38 -13
  42. package/dist/builtins/res/pipeline.js.map +1 -1
  43. package/dist/builtins/res/play.d.ts +2 -0
  44. package/dist/builtins/res/play.js +59 -17
  45. package/dist/builtins/res/play.js.map +1 -1
  46. package/dist/builtins/res/plugin.js +9 -30
  47. package/dist/builtins/res/plugin.js.map +1 -1
  48. package/dist/builtins/res/runWait.d.ts +10 -0
  49. package/dist/builtins/res/runWait.js +14 -0
  50. package/dist/builtins/res/runWait.js.map +1 -1
  51. package/dist/builtins/sys/variables.d.ts +25 -0
  52. package/dist/builtins/sys/variables.js +113 -0
  53. package/dist/builtins/sys/variables.js.map +1 -0
  54. package/dist/builtins/variablesPage.d.ts +9 -0
  55. package/dist/builtins/variablesPage.js +56 -0
  56. package/dist/builtins/variablesPage.js.map +1 -0
  57. package/dist/chris/backend.js +2 -0
  58. package/dist/chris/backend.js.map +1 -1
  59. package/dist/chris/binExecutables.d.ts +25 -0
  60. package/dist/chris/binExecutables.js +28 -0
  61. package/dist/chris/binExecutables.js.map +1 -0
  62. package/dist/chris/chrisCommands.js +0 -6
  63. package/dist/chris/chrisCommands.js.map +1 -1
  64. package/dist/chris/commandFallback.js +10 -24
  65. package/dist/chris/commandFallback.js.map +1 -1
  66. package/dist/chris/expectSubjects.d.ts +3 -0
  67. package/dist/chris/expectSubjects.js +131 -0
  68. package/dist/chris/expectSubjects.js.map +1 -0
  69. package/dist/chris/help.d.ts +2 -2
  70. package/dist/chris/help.js +34 -96
  71. package/dist/chris/help.js.map +1 -1
  72. package/dist/chris/references.js +14 -75
  73. package/dist/chris/references.js.map +1 -1
  74. package/dist/core/assignment.d.ts +13 -0
  75. package/dist/core/assignment.js +98 -0
  76. package/dist/core/assignment.js.map +1 -0
  77. package/dist/core/backend.d.ts +38 -0
  78. package/dist/core/backend.js.map +1 -1
  79. package/dist/core/coreCommands.js +11 -0
  80. package/dist/core/coreCommands.js.map +1 -1
  81. package/dist/core/dispatch.js +9 -1
  82. package/dist/core/dispatch.js.map +1 -1
  83. package/dist/core/engine.js +14 -3
  84. package/dist/core/engine.js.map +1 -1
  85. package/dist/core/expansion.d.ts +13 -7
  86. package/dist/core/expansion.js +36 -19
  87. package/dist/core/expansion.js.map +1 -1
  88. package/dist/core/pipeHead.d.ts +36 -0
  89. package/dist/core/pipeHead.js +28 -0
  90. package/dist/core/pipeHead.js.map +1 -0
  91. package/dist/core/sink.d.ts +33 -0
  92. package/dist/core/sink.js +48 -0
  93. package/dist/core/sink.js.map +1 -1
  94. package/dist/core/variables.d.ts +122 -0
  95. package/dist/core/variables.js +320 -0
  96. package/dist/core/variables.js.map +1 -0
  97. package/dist/lib/parser.js +2 -2
  98. package/dist/notes.json +1 -1
  99. package/dist/session/answerAdapters.js +12 -0
  100. package/dist/session/answerAdapters.js.map +1 -1
  101. package/package.json +5 -5
  102. package/dist/builtins/pronouns.d.ts +0 -8
  103. package/dist/builtins/pronouns.js +0 -39
  104. package/dist/builtins/pronouns.js.map +0 -1
  105. package/dist/session/recent.d.ts +0 -68
  106. package/dist/session/recent.js +0 -99
  107. package/dist/session/recent.js.map +0 -1
@@ -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,10 +17,11 @@ 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
- /** The model kind under which a cohort travels to a surface. */
23
- export const GATHER_MODEL_KIND = 'gather.cohort';
23
+ import { GATHER_MODEL_KIND } from './gather.kind.js';
24
+ export { GATHER_MODEL_KIND };
24
25
  /**
25
26
  * Renders a refusal.
26
27
  *
@@ -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.
@@ -232,12 +261,22 @@ export async function builtin_gather(args) {
232
261
  }
233
262
  if (subcommand === 'clear')
234
263
  return await gather_clear();
264
+ // Raw words: the run's own arguments follow `--`, and a generic parser
265
+ // would read them as gather's options.
266
+ // Loaded on demand: running carries the plugin and pipeline machinery,
267
+ // which the cohort's own verbs never need.
268
+ if (subcommand === 'process') {
269
+ const { gather_process } = await import('./gather.process.js');
270
+ return await gather_process(args.slice(args.indexOf('process') + 1));
271
+ }
235
272
  if (subcommand === 'name')
236
273
  return await gather_name(operands);
274
+ if (subcommand === 'feed')
275
+ return await gather_feed(args.slice(args.indexOf('feed') + 1));
237
276
  }
238
277
  catch (e) {
239
278
  return gather_error(`gather: ${e instanceof Error ? e.message : String(e)}`);
240
279
  }
241
- return gather_error(`Unknown subcommand: ${subcommand}. Usage: gather <list|add|remove|clear|name>`);
280
+ return gather_error(`Unknown subcommand: ${subcommand}. Usage: gather <list|add|remove|clear|name|feed|process>`);
242
281
  }
243
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,kBAAkB,EAAqB,MAAM,uBAAuB,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,iBAAiB,EAAuB,MAAM,yBAAyB,CAAC;AACrH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAc,YAAY,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAIL,WAAW,EACX,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAmB,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE5E,gEAAgE;AAChE,MAAM,CAAC,MAAM,iBAAiB,GAAW,eAAe,CAAC;AAEzD;;;;;GAKG;AACH,SAAS,YAAY,CAAC,OAAe;IACnC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACrB,OAAO,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClE,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CAAC,MAAoB;IACxC,MAAM,SAAS,GAAY,MAAM,CAAC,WAAW,CAAC;IAC9C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IACnF,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,YAAY,CAAC,MAAoB;IACxC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC/C,MAAM,MAAM,GAAY,MAAM,CAAC,UAAU,CAAC;IAC1C,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,KAAkB;IACvC,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACvD,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,WAAW,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,iEAAiE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClH,CAAC;IAED,yEAAyE;IACzE,mDAAmD;IACnD,MAAM,QAAQ,GAAqB,kBAAkB,CAAC,iBAAiB,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IACtF,MAAM,KAAK,GAAwB,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,CAAC,MAAoB,EAAU,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC5H,MAAM,IAAI,GAA8B,KAAK,CAAC,MAAM,CAAC,GAAG,CACtD,CAAC,MAAoB,EAA2B,EAAE,CAAC,CAAC;QAClD,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE;QAC7D,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC;QAC5B,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC;QAC3B,IAAI,EAAE,MAAM,CAAC,OAAO;KACrB,CAAC,CACH,CAAC;IACF,MAAM,WAAW,GAAW,KAAK,CAAC,MAAM,CAAC,MAAM,CAC7C,CAAC,MAAoB,EAAW,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAC5D,CAAC,MAAM,CAAC;IACT,MAAM,UAAU,GAAW,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC;IAC7D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,WAAW,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,IAAI,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7F,IAAI,UAAU,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzF,MAAM,KAAK,GAAW,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,EAAE,CAAC;IAEhF,OAAO,WAAW,CAChB,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE;QAC9D,KAAK,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE;KAC1C,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAClH,KAAK,CACN,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,UAAU,CAAC,QAAkB;IAC1C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC,oCAAoC,CAAC,CAAC;IAErF,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAW,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,IAAI,GAAsB,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACnE,mEAAmE;QACnE,uEAAuE;QACvE,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,YAAY,CAAC,WAAW,QAAQ,qBAAqB,CAAC,CAAC;QACjF,MAAM,MAAM,GAAiB,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACzD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAuB,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAC3D,IAAI,GAAG,KAAK,SAAS;gBAAE,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;YAC9C,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAED,MAAM,KAAK,GAAgB,MAAM,WAAW,EAAE,CAAC;IAC/C,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IACvB,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;IAE1B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC;IAC/C,IAAI,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,wBAAwB,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAoB,aAAa,CAAC,KAAK,CAAC,CAAC;IACvD,OAAO,WAAW,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7G,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,aAAa,CAAC,QAAkB;IAC7C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC,mDAAmD,CAAC,CAAC;IAEpG,MAAM,KAAK,GAAgB,MAAM,WAAW,EAAE,CAAC;IAC/C,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC,8BAA8B,CAAC,CAAC;IAEnF,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAW,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;YACzE,MAAM,MAAM,GAA6B,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YACnE,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,YAAY,CAAC,qBAAqB,OAAO,uBAAuB,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YACzH,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,YAAY,CAAC,8BAA8B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IACvB,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,QAAQ,GAAoB,aAAa,CAAC,KAAK,CAAC,CAAC;IACvD,OAAO,WAAW,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,OAAO,WAAW,CAAC,KAAK,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5G,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,YAAY;IACzB,MAAM,KAAK,GAAgB,MAAM,WAAW,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAW,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACzC,MAAM,OAAO,GAAgB,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC5F,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,QAAQ,GAAoB,aAAa,CAAC,OAAO,CAAC,CAAC;IACzD,OAAO,WAAW,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,mBAAmB,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9I,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,WAAW,CAAC,QAAkB;IAC3C,MAAM,KAAK,GAAgB,MAAM,WAAW,EAAE,CAAC;IAC/C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,WAAW,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;QAC1F,OAAO,WAAW,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1B,OAAO,WAAW,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,0BAA0B,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;AACnF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc;IACjD,MAAM,MAAM,GAAe,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,UAAU,GAAuB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAa,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE7C,IAAI,CAAC;QACH,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,MAAM;YAAE,OAAO,aAAa,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC;QACjG,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YAC3E,oEAAoE;YACpE,oEAAoE;YACpE,kEAAkE;YAClE,IAAI,KAAK,GAAa,QAAQ,CAAC;YAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAwB,cAAc,EAAE,CAAC;gBACpD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBACnB,OAAO,YAAY,CAAC,UAAU,UAAU,8FAA8F,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;gBACxL,CAAC;gBACD,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACxC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,YAAY,CAAC,UAAU,UAAU,yCAAyC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC1J,CAAC;YACD,OAAO,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,UAAU,KAAK,OAAO;YAAE,OAAO,MAAM,YAAY,EAAE,CAAC;QACxD,IAAI,UAAU,KAAK,MAAM;YAAE,OAAO,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,OAAO,YAAY,CAAC,WAAW,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,YAAY,CAAC,uBAAuB,UAAU,8CAA8C,CAAC,CAAC;AACvG,CAAC"}
1
+ {"version":3,"file":"gather.js","sourceRoot":"","sources":["../../../src/builtins/res/gather.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @file The model kind a cohort travels under: its own module, so a reader
3
+ * of the cohort (the `${gather}` reference) names it without loading the
4
+ * `gather` verb.
5
+ *
6
+ * @module
7
+ */
8
+ /** The model kind under which a cohort travels to a surface. */
9
+ export declare const GATHER_MODEL_KIND: string;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @file The model kind a cohort travels under: its own module, so a reader
3
+ * of the cohort (the `${gather}` reference) names it without loading the
4
+ * `gather` verb.
5
+ *
6
+ * @module
7
+ */
8
+ /** The model kind under which a cohort travels to a surface. */
9
+ export const GATHER_MODEL_KIND = 'gather.cohort';
10
+ //# sourceMappingURL=gather.kind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gather.kind.js","sourceRoot":"","sources":["../../../src/builtins/res/gather.kind.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,gEAAgE;AAChE,MAAM,CAAC,MAAM,iBAAiB,GAAW,eAAe,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { type CommandEnvelope } from '@fnndsc/menu';
2
+ import { type GatherState } from './gather.store.js';
3
+ /** How `gather process` was asked for. */
4
+ export interface GatherProcessArgs {
5
+ /** The plugin or pipeline, as `/bin` names it. */
6
+ name: string | null;
7
+ /** The feed's title, when one is made. */
8
+ title: string | null;
9
+ /** Whether the line returns at once rather than waiting for the run. */
10
+ detach: boolean;
11
+ /** What follows `--`, handed to the run as its own arguments. */
12
+ forwarded: string[];
13
+ /** Why the words make no request, when they do not. */
14
+ error: string | null;
15
+ }
16
+ /**
17
+ * Reads the words after `gather process`.
18
+ *
19
+ * @param words - The words, raw.
20
+ * @returns The request, or why it is not one.
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>;
39
+ /**
40
+ * `gather process <name> [--title T] [--detach] [-- args]`: runs a plugin or
41
+ * a pipeline once over the whole cohort.
42
+ *
43
+ * @param words - The words after `gather process`, raw.
44
+ * @returns The run's envelope, or a refusal.
45
+ */
46
+ export declare function gather_process(words: ReadonlyArray<string>): Promise<CommandEnvelope>;
@@ -0,0 +1,230 @@
1
+ /**
2
+ * @file `gather process`: one run over the whole cohort.
3
+ *
4
+ * A cohort is processed as a group: one feed whose `pl-dircopy` root holds
5
+ * every member's landed folder, and the named plugin or pipeline runs once
6
+ * off that root, reading the group from it. There is no loop: the iteration
7
+ * is in the data the plugin reads. This is the shape ARGUS's PROCESS builds
8
+ * from a press (#597), so a manifest and a press make the same feed.
9
+ *
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
+ * nothing is copied twice; otherwise the feed is made here and noted on the
13
+ * cohort for the next run. The name resolves as a bare line resolves it in
14
+ * `/bin`. A series not pulled yet has no folder to copy, and the verb refuses
15
+ * by name rather than processing part of the cohort.
16
+ *
17
+ * It answers what the bare run would: `run.scheduled` for a plugin,
18
+ * `pipeline.scheduled` for a pipeline. Waiting, `--detach` and failure are
19
+ * the bare run's.
20
+ *
21
+ * @module
22
+ */
23
+ import chalk from 'chalk';
24
+ import { feed_create } from '@fnndsc/salsa';
25
+ import { envelope_error } from '@fnndsc/menu';
26
+ import { sink_dataLine } from '../../core/sink.js';
27
+ import { binExecutableMatches_get } from '../../chris/binExecutables.js';
28
+ import { builtin_executePlugin } from '../pluginExecute.js';
29
+ import { builtin_pipeline } from './pipeline.js';
30
+ import { newFeed_cacheAdd, run_follow } from '../feedCreation.js';
31
+ import { cohort_read, cohort_write, cohortFolders_resolve } from './gather.store.js';
32
+ /** The usage line a refusal points at. */
33
+ const USAGE = 'gather process <plugin|pipeline> [--title T] [--detach] [-- <its arguments>]';
34
+ /**
35
+ * Reads the words after `gather process`.
36
+ *
37
+ * @param words - The words, raw.
38
+ * @returns The request, or why it is not one.
39
+ */
40
+ export function gatherProcessArgs_parse(words) {
41
+ const delimiter = words.indexOf('--');
42
+ const own = delimiter === -1 ? words : words.slice(0, delimiter);
43
+ const forwarded = delimiter === -1 ? [] : words.slice(delimiter + 1);
44
+ const parsed = { name: null, title: null, detach: false, forwarded, error: null };
45
+ for (let at = 0; at < own.length; at++) {
46
+ const word = own[at];
47
+ if (word === '--detach') {
48
+ parsed.detach = true;
49
+ continue;
50
+ }
51
+ if (word === '--title') {
52
+ const title = own[at + 1];
53
+ if (title === undefined || title.startsWith('--') || title.trim() === '') {
54
+ parsed.error ??= '--title needs a title';
55
+ continue;
56
+ }
57
+ parsed.title = title.trim();
58
+ at++;
59
+ continue;
60
+ }
61
+ if (word.startsWith('-')) {
62
+ parsed.error ??= `${word}: unknown option; the run's own arguments go after --`;
63
+ continue;
64
+ }
65
+ if (parsed.name !== null) {
66
+ parsed.error ??= `one plugin or pipeline at a time; ${word} is a second (its arguments go after --)`;
67
+ continue;
68
+ }
69
+ parsed.name = word;
70
+ }
71
+ if (parsed.name === null)
72
+ parsed.error ??= `name the plugin or pipeline to run over the cohort. Usage: ${USAGE}`;
73
+ return parsed;
74
+ }
75
+ /**
76
+ * Refuses, saying why.
77
+ *
78
+ * @param message - What the operator needs to know.
79
+ * @returns The error envelope.
80
+ */
81
+ function process_refuse(message) {
82
+ process.exitCode = 1;
83
+ return envelope_error('', undefined, `${chalk.red(`gather process: ${message}`)}\n`);
84
+ }
85
+ /**
86
+ * Where a member is in CUBE: a pulled series' landed folder, a folder or
87
+ * file's own path; null for a series not pulled yet.
88
+ *
89
+ * @param member - The member.
90
+ * @returns Its CFS path, or null.
91
+ */
92
+ function member_place(member) {
93
+ if (member.kind !== 'series')
94
+ return member.vfsPath;
95
+ const landed = member.folderPath;
96
+ return typeof landed === 'string' && landed.length > 0 ? landed : null;
97
+ }
98
+ /**
99
+ * What a member is called in a refusal.
100
+ *
101
+ * @param member - The member.
102
+ * @returns Its description, or the last part of its address.
103
+ */
104
+ function member_word(member) {
105
+ return member.description ?? member.vfsPath.split('/').filter(Boolean).pop() ?? member.vfsPath;
106
+ }
107
+ /**
108
+ * The cohort's feed: the one noted on it, or one made now from every
109
+ * member's place and noted on the cohort.
110
+ *
111
+ * @param state - The cohort.
112
+ * @param places - Every member's CFS path.
113
+ * @param title - The title for a feed made now.
114
+ * @returns The feed and whether it was made now, or a refusal.
115
+ */
116
+ async function cohortFeed_ensure(state, places, title) {
117
+ if (state.feed !== null)
118
+ return { feed: state.feed, made: false };
119
+ const feed = await feed_create(places, { title });
120
+ const feedId = Number(feed?.id);
121
+ const rootInstanceId = Number(feed?.pluginInstance?.data?.id);
122
+ const owner = typeof feed?.owner_username === 'string' ? feed.owner_username.trim() : '';
123
+ if (!Number.isInteger(feedId) || feedId <= 0 || !Number.isInteger(rootInstanceId) || rootInstanceId <= 0 || owner === '') {
124
+ return `could not make the cohort's feed '${title}'`;
125
+ }
126
+ newFeed_cacheAdd({ feedID: feedId, title, ownerUsername: owner, rootInstanceID: rootInstanceId });
127
+ run_follow(feedId);
128
+ const made = { feedId, rootInstanceId, path: `/home/${owner}/feeds/feed_${feedId}/pl-dircopy_${rootInstanceId}/data` };
129
+ await cohort_write({ ...state, feed: made });
130
+ sink_dataLine(chalk.green(`Feed created: ${feedId} (${places.length} member${places.length === 1 ? '' : 's'} in its root, ${rootInstanceId})`));
131
+ return { feed: made, made: true };
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
+ }
182
+ /**
183
+ * `gather process <name> [--title T] [--detach] [-- args]`: runs a plugin or
184
+ * a pipeline once over the whole cohort.
185
+ *
186
+ * @param words - The words after `gather process`, raw.
187
+ * @returns The run's envelope, or a refusal.
188
+ */
189
+ export async function gather_process(words) {
190
+ const parsed = gatherProcessArgs_parse(words);
191
+ if (parsed.error !== null || parsed.name === null)
192
+ return process_refuse(parsed.error ?? USAGE);
193
+ const name = parsed.name;
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());
197
+ if (state.series.length === 0)
198
+ return process_refuse('the cohort is empty; gather add something first');
199
+ const waiting = state.series.filter((member) => member_place(member) === null);
200
+ if (waiting.length > 0) {
201
+ const named = waiting.slice(0, 5).map(member_word).join(', ') + (waiting.length > 5 ? `, and ${waiting.length - 5} more` : '');
202
+ return process_refuse(`${waiting.length} series ${waiting.length === 1 ? 'is' : 'are'} not pulled yet (${named}); pull \${gather} first`);
203
+ }
204
+ const matches = await binExecutableMatches_get(name);
205
+ if (matches.plugin !== undefined && matches.pipeline !== undefined) {
206
+ return process_refuse(`${name} names both a plugin and a pipeline in /bin; it cannot tell which to run`);
207
+ }
208
+ if (matches.plugin === undefined && matches.pipeline === undefined) {
209
+ return process_refuse(`no plugin or pipeline named ${name} in /bin`);
210
+ }
211
+ const places = state.series.map((member) => member_place(member));
212
+ const title = parsed.title ?? state.name ?? 'cohort';
213
+ const ensured = await cohortFeed_ensure(state, places, title);
214
+ if (typeof ensured === 'string')
215
+ return process_refuse(ensured);
216
+ const { feed, made } = ensured;
217
+ const detach = parsed.detach ? ['--detach'] : [];
218
+ const envelope = matches.pipeline !== undefined
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])
222
+ : await builtin_executePlugin(name, [...detach, ...parsed.forwarded], feed.path);
223
+ // The run went off a root, so it reads as continuing a feed; when that
224
+ // feed was made by this line, the answer says so, as a bare run's would.
225
+ if (made && envelope.model !== undefined && typeof envelope.model.data === 'object' && envelope.model.data !== null) {
226
+ return { ...envelope, model: { ...envelope.model, data: { ...envelope.model.data, newFeed: true } } };
227
+ }
228
+ return envelope;
229
+ }
230
+ //# sourceMappingURL=gather.process.js.map
@@ -0,0 +1 @@
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
  *