@fnndsc/brasa 0.44.1 → 0.46.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 (99) 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 +2 -48
  8. package/dist/builtins/fs/pull.js.map +1 -1
  9. package/dist/builtins/help.js +43 -11
  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.js +0 -3
  14. package/dist/builtins/net/query.js.map +1 -1
  15. package/dist/builtins/pluginExecute.d.ts +4 -1
  16. package/dist/builtins/pluginExecute.js +11 -12
  17. package/dist/builtins/pluginExecute.js.map +1 -1
  18. package/dist/builtins/res/expect.js +5 -2
  19. package/dist/builtins/res/expect.js.map +1 -1
  20. package/dist/builtins/res/gather.d.ts +2 -2
  21. package/dist/builtins/res/gather.js +11 -3
  22. package/dist/builtins/res/gather.js.map +1 -1
  23. package/dist/builtins/res/gather.kind.d.ts +9 -0
  24. package/dist/builtins/res/gather.kind.js +10 -0
  25. package/dist/builtins/res/gather.kind.js.map +1 -0
  26. package/dist/builtins/res/gather.process.d.ts +29 -0
  27. package/dist/builtins/res/gather.process.js +177 -0
  28. package/dist/builtins/res/gather.process.js.map +1 -0
  29. package/dist/builtins/res/pipeline.d.ts +16 -0
  30. package/dist/builtins/res/pipeline.js +38 -13
  31. package/dist/builtins/res/pipeline.js.map +1 -1
  32. package/dist/builtins/res/play.d.ts +2 -0
  33. package/dist/builtins/res/play.js +30 -7
  34. package/dist/builtins/res/play.js.map +1 -1
  35. package/dist/builtins/res/plugin.js +9 -30
  36. package/dist/builtins/res/plugin.js.map +1 -1
  37. package/dist/builtins/res/runWait.d.ts +10 -0
  38. package/dist/builtins/res/runWait.js +14 -0
  39. package/dist/builtins/res/runWait.js.map +1 -1
  40. package/dist/builtins/sys/tasks.d.ts +46 -0
  41. package/dist/builtins/sys/tasks.js +128 -0
  42. package/dist/builtins/sys/tasks.js.map +1 -0
  43. package/dist/builtins/sys/textFilters.js +3 -3
  44. package/dist/builtins/sys/textFilters.js.map +1 -1
  45. package/dist/builtins/sys/variables.d.ts +25 -0
  46. package/dist/builtins/sys/variables.js +113 -0
  47. package/dist/builtins/sys/variables.js.map +1 -0
  48. package/dist/builtins/variablesPage.d.ts +9 -0
  49. package/dist/builtins/variablesPage.js +54 -0
  50. package/dist/builtins/variablesPage.js.map +1 -0
  51. package/dist/chris/binExecutables.d.ts +19 -0
  52. package/dist/chris/binExecutables.js +18 -0
  53. package/dist/chris/binExecutables.js.map +1 -0
  54. package/dist/chris/commandFallback.js +6 -22
  55. package/dist/chris/commandFallback.js.map +1 -1
  56. package/dist/chris/help.d.ts +2 -2
  57. package/dist/chris/help.js +27 -44
  58. package/dist/chris/help.js.map +1 -1
  59. package/dist/chris/references.js +14 -75
  60. package/dist/chris/references.js.map +1 -1
  61. package/dist/core/assignment.d.ts +13 -0
  62. package/dist/core/assignment.js +98 -0
  63. package/dist/core/assignment.js.map +1 -0
  64. package/dist/core/backend.d.ts +3 -0
  65. package/dist/core/backend.js.map +1 -1
  66. package/dist/core/coreCommands.js +10 -0
  67. package/dist/core/coreCommands.js.map +1 -1
  68. package/dist/core/engine.d.ts +8 -0
  69. package/dist/core/engine.js +29 -6
  70. package/dist/core/engine.js.map +1 -1
  71. package/dist/core/expansion.d.ts +13 -7
  72. package/dist/core/expansion.js +36 -19
  73. package/dist/core/expansion.js.map +1 -1
  74. package/dist/core/runner.d.ts +231 -0
  75. package/dist/core/runner.js +391 -0
  76. package/dist/core/runner.js.map +1 -0
  77. package/dist/core/sink.d.ts +33 -0
  78. package/dist/core/sink.js +48 -0
  79. package/dist/core/sink.js.map +1 -1
  80. package/dist/core/variables.d.ts +121 -0
  81. package/dist/core/variables.js +316 -0
  82. package/dist/core/variables.js.map +1 -0
  83. package/dist/core/version.d.ts +14 -0
  84. package/dist/core/version.js +19 -0
  85. package/dist/core/version.js.map +1 -1
  86. package/dist/core.d.ts +2 -1
  87. package/dist/core.js +2 -1
  88. package/dist/core.js.map +1 -1
  89. package/dist/lib/parser.js +2 -2
  90. package/dist/notes.json +1 -1
  91. package/dist/session/answerAdapters.js +12 -0
  92. package/dist/session/answerAdapters.js.map +1 -1
  93. package/package.json +5 -5
  94. package/dist/builtins/pronouns.d.ts +0 -8
  95. package/dist/builtins/pronouns.js +0 -39
  96. package/dist/builtins/pronouns.js.map +0 -1
  97. package/dist/session/recent.d.ts +0 -68
  98. package/dist/session/recent.js +0 -99
  99. package/dist/session/recent.js.map +0 -1
@@ -1,89 +1,28 @@
1
- import { recentFeed_get, recentQuery_get, recentRunPlace_get, recentRuns_get } from '../session/recent.js';
1
+ import { fieldReading_value } from '../core/expansion.js';
2
+ import { answer_read } from '../core/variables.js';
3
+ import { GATHER_MODEL_KIND } from '../builtins/res/gather.kind.js';
2
4
  /**
3
- * What the cohort answers, for the pronoun that names part of it.
5
+ * What the cohort answers: `${gather}` is a live `$(gather)`, re-read on
6
+ * every use, and read by the same rule as any variable. Bare, it is every
7
+ * member's address (where it was gathered FROM, which `pull` takes); a dot
8
+ * is a field of the cohort as `gather` answers it, so
9
+ * `${gather.series.folderPath}` is where each member LANDED, which a viewer
10
+ * and a run take. Live, because the cohort is a working set a flow is still
11
+ * building: a capture taken before `pull` would hold no landed folders.
4
12
  *
5
- * @param name - The reference, such as `gather`, `gather.first.place`.
6
- * @returns The values, or null when the cohort cannot answer.
13
+ * @param name - The reference, such as `gather`, `gather.series.folderPath`.
14
+ * @returns The values, or null with the reason recorded.
7
15
  */
8
16
  async function cohort_reference(name) {
9
17
  // Loaded on demand: the cohort's store is a builtin's, and reading it is
10
18
  // only worth doing when a line names the cohort.
11
19
  const { cohort_read } = await import('../builtins/res/gather.store.js');
12
20
  const state = await cohort_read();
13
- const members = state.series;
14
- // A member has two addresses and the difference is load-bearing: where it
15
- // was gathered FROM, which `pull` takes, and where it LANDED, which a
16
- // viewer and a run take.
17
- const wantsPlace = name.endsWith('.place');
18
- const stem = wantsPlace ? name.slice(0, -'.place'.length) : name;
19
- const addressOf = (member) => {
20
- if (!wantsPlace)
21
- return member.vfsPath;
22
- const landed = member.folderPath;
23
- if (typeof landed === 'string' && landed.length > 0)
24
- return landed;
25
- return member.kind === 'series' ? null : member.vfsPath;
26
- };
27
- if (stem === 'gather') {
28
- const addresses = members.map(addressOf);
29
- if (addresses.some((address) => address === null))
30
- return null;
31
- return { values: addresses };
32
- }
33
- const which = stem.slice('gather.'.length);
34
- if (which === 'size')
35
- return { values: [`${members.length}`] };
36
- if (which === 'name')
37
- return { values: [state.name ?? ''] };
38
- const pick = (member) => {
39
- if (member === undefined)
40
- return null;
41
- const address = addressOf(member);
42
- return address === null ? null : { values: [address] };
43
- };
44
- if (which === 'first')
45
- return pick(members[0]);
46
- if (which === 'last')
47
- return pick(members[members.length - 1]);
48
- const nth = Number(which);
49
- if (Number.isInteger(nth) && nth >= 1 && nth <= members.length)
50
- return pick(members[nth - 1]);
51
- return null;
21
+ const answer = { source: 'gather', kind: GATHER_MODEL_KIND, rows: [], data: state };
22
+ return fieldReading_value(answer_read(answer, 'gather', name.split('.').slice(1)));
52
23
  }
53
24
  /** The references the ChRIS session answers. */
54
25
  export const chrisReferences = [
55
- {
56
- name: 'feed',
57
- resolve: async (name) => {
58
- if (name !== 'feed')
59
- return undefined;
60
- const feed = recentFeed_get();
61
- return feed === null ? null : { values: [`${feed}`] };
62
- },
63
- },
64
- {
65
- name: 'run',
66
- resolve: async (name) => {
67
- if (name === 'run') {
68
- const runs = recentRuns_get();
69
- return runs.length === 0 ? null : { values: [`${runs[runs.length - 1]}`] };
70
- }
71
- if (name === 'run.place') {
72
- const place = recentRunPlace_get();
73
- return place === null ? null : { values: [place] };
74
- }
75
- return undefined;
76
- },
77
- },
78
- {
79
- name: 'query',
80
- resolve: async (name) => {
81
- if (name !== 'query')
82
- return undefined;
83
- const query = recentQuery_get();
84
- return query === null ? null : { values: [query] };
85
- },
86
- },
87
26
  {
88
27
  name: 'gather',
89
28
  resolve: async (name) => await cohort_reference(name),
@@ -1 +1 @@
1
- {"version":3,"file":"references.js","sourceRoot":"","sources":["../../src/chris/references.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3G;;;;;GAKG;AACH,KAAK,UAAU,gBAAgB,CAAC,IAAY;IAC1C,yEAAyE;IACzE,iDAAiD;IACjD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,MAAM,WAAW,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;IAE7B,0EAA0E;IAC1E,sEAAsE;IACtE,yBAAyB;IACzB,MAAM,UAAU,GAAY,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,IAAI,GAAW,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzE,MAAM,SAAS,GAAG,CAAC,MAAgE,EAAiB,EAAE;QACpG,IAAI,CAAC,UAAU;YAAE,OAAO,MAAM,CAAC,OAAO,CAAC;QACvC,MAAM,MAAM,GAAY,MAAM,CAAC,UAAU,CAAC;QAC1C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,MAAM,CAAC;QACnE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IAC1D,CAAC,CAAC;IAEF,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,MAAM,SAAS,GAAyB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,OAAsB,EAAW,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACvF,OAAO,EAAE,MAAM,EAAE,SAAqB,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,GAAW,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;IAC/D,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;IAE5D,MAAM,IAAI,GAAG,CAAC,MAA0C,EAAkB,EAAE;QAC1E,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACtC,MAAM,OAAO,GAAkB,SAAS,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACzD,CAAC,CAAC;IACF,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9F,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,MAAM,eAAe,GAAmC;IAC7D;QACE,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,KAAK,EAAE,IAAY,EAAuC,EAAE;YACnE,IAAI,IAAI,KAAK,MAAM;gBAAE,OAAO,SAAS,CAAC;YACtC,MAAM,IAAI,GAAkB,cAAc,EAAE,CAAC;YAC7C,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC;QACxD,CAAC;KACF;IACD;QACE,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,KAAK,EAAE,IAAY,EAAuC,EAAE;YACnE,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,MAAM,IAAI,GAAa,cAAc,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7E,CAAC;YACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAkB,kBAAkB,EAAE,CAAC;gBAClD,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACrD,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;KACF;IACD;QACE,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,KAAK,EAAE,IAAY,EAAuC,EAAE;YACnE,IAAI,IAAI,KAAK,OAAO;gBAAE,OAAO,SAAS,CAAC;YACvC,MAAM,KAAK,GAAkB,eAAe,EAAE,CAAC;YAC/C,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QACrD,CAAC;KACF;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,KAAK,EAAE,IAAY,EAAuC,EAAE,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC;KACnG;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAkC;IAC7D,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE;IACnD,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;IAC/D,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE;CAChD,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAA6B;IACtD,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;IAC/C,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;IAC7C,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;IAC9C,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;IACrC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE;CACrC,CAAC"}
1
+ {"version":3,"file":"references.js","sourceRoot":"","sources":["../../src/chris/references.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,gBAAgB,CAAC,IAAY;IAC1C,yEAAyE;IACzE,iDAAiD;IACjD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;IACxE,MAAM,KAAK,GAAY,MAAM,WAAW,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAkB,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACnG,OAAO,kBAAkB,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,MAAM,eAAe,GAAmC;IAC7D;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,KAAK,EAAE,IAAY,EAAuC,EAAE,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC;KACnG;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAkC;IAC7D,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE;IACnD,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;IAC/D,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE;CAChD,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAA6B;IACtD,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;IAC/C,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;IAC7C,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;IAC9C,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;IACrC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE;CACrC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { CommandEnvelope } from '@fnndsc/menu';
2
+ import { type Assignment } from './variables.js';
3
+ /** Runs one line, as the engine does, and answers its envelopes. */
4
+ export type LineRun = (line: string) => Promise<CommandEnvelope[]>;
5
+ /**
6
+ * Runs an assignment line.
7
+ *
8
+ * @param assignment - The line, taken apart.
9
+ * @param line - The line as written, the answer's source.
10
+ * @param run - Runs a captured command line, as the engine runs any line.
11
+ * @returns The line's envelopes: a capture's are its command's.
12
+ */
13
+ export declare function assignment_execute(assignment: Assignment, line: string, run: LineRun): Promise<CommandEnvelope[]>;
@@ -0,0 +1,98 @@
1
+ /**
2
+ * @file Running an assignment line: `NAME=$(command)` and `NAME=word`.
3
+ *
4
+ * A capture runs its command as any line runs, printing what it prints, and
5
+ * holds the command's answer: its model when it answers with one, else the
6
+ * text it printed. A command that fails leaves the name as it was and fails
7
+ * the line, so a manifest stops there rather than carrying an empty value
8
+ * forward. A literal is one word, expanded the way any word is, and never
9
+ * split.
10
+ *
11
+ * @module
12
+ */
13
+ import chalk from 'chalk';
14
+ import { shellWords_referencesExpand, shellWords_tokenize } from '../lib/parser.js';
15
+ import { reference_isReserved, reference_refusal, reference_resolve, unresolvedStands_get } from './expansion.js';
16
+ import { exitCode_read } from './handlerRun.js';
17
+ import { sink_get, sinkScope_run, TeeSink } from './sink.js';
18
+ import { textAnswer_make, variable_set } from './variables.js';
19
+ /**
20
+ * Refuses an assignment line, saying why on the error channel.
21
+ *
22
+ * @param message - What the operator needs to know.
23
+ * @returns The line's envelopes: one refusal.
24
+ */
25
+ function assignment_refuse(message) {
26
+ sink_get().err_write(`${chalk.red(message)}\n`);
27
+ process.exitCode = 1;
28
+ return [{ status: 'error', rendered: '' }];
29
+ }
30
+ /**
31
+ * Sets a name, or refuses when the scope will not take it.
32
+ *
33
+ * @param name - The name.
34
+ * @param answer - What it holds.
35
+ * @returns A refusal, or null when it was set.
36
+ */
37
+ function assignment_store(name, answer) {
38
+ const refused = variable_set(name, answer);
39
+ return refused === null ? null : assignment_refuse(`${name}=…: ${refused}`);
40
+ }
41
+ /**
42
+ * Expands a literal value into the one word it must be.
43
+ *
44
+ * @param name - The name being set.
45
+ * @param value - The value as written.
46
+ * @returns The word, or a refusal.
47
+ */
48
+ async function literal_expand(name, value) {
49
+ const words = shellWords_tokenize(value);
50
+ if (words.length === 0)
51
+ return { word: '' };
52
+ if (words.length > 1)
53
+ return { refused: `${name}=…: a value is one word; quote it: ${name}='${value}'` };
54
+ const expanded = await shellWords_referencesExpand(words, reference_resolve, unresolvedStands_get());
55
+ if (!expanded.ok)
56
+ return { refused: reference_refusal(expanded.missing) };
57
+ if (expanded.words.length !== 1)
58
+ return { refused: `${name}=…: ${value} expands to ${expanded.words.length} words; a value is one word, so quote it: ${name}="${value}"` };
59
+ return { word: expanded.words[0].value };
60
+ }
61
+ /**
62
+ * Runs an assignment line.
63
+ *
64
+ * @param assignment - The line, taken apart.
65
+ * @param line - The line as written, the answer's source.
66
+ * @param run - Runs a captured command line, as the engine runs any line.
67
+ * @returns The line's envelopes: a capture's are its command's.
68
+ */
69
+ export async function assignment_execute(assignment, line, run) {
70
+ const { name } = assignment;
71
+ if ('refused' in assignment)
72
+ return assignment_refuse(assignment.refused);
73
+ if (reference_isReserved(name))
74
+ return assignment_refuse(`${name}=…: \${${name}} is the session's own; it is read-only`);
75
+ if ('literal' in assignment) {
76
+ const value = await literal_expand(name, assignment.literal);
77
+ if ('refused' in value)
78
+ return assignment_refuse(value.refused);
79
+ return assignment_store(name, textAnswer_make(value.word, line)) ?? [];
80
+ }
81
+ const tee = new TeeSink(sink_get());
82
+ const exitBefore = exitCode_read();
83
+ const envelopes = await sinkScope_run(tee, () => run(assignment.capture));
84
+ const exitAfter = exitCode_read();
85
+ const failed = envelopes.some((envelope) => envelope.status === 'error')
86
+ || (exitAfter !== 0 && exitAfter !== exitBefore);
87
+ if (failed) {
88
+ return [...envelopes, ...assignment_refuse(`${name}=$(…): the command failed; ${name} is unchanged`)];
89
+ }
90
+ // The answer is the last model the line gave: a pipe's is its last
91
+ // segment's, as `NAME=$(query … | grep sag)` means.
92
+ const modelled = [...envelopes].reverse().find((envelope) => envelope.model !== undefined);
93
+ const answer = modelled?.model !== undefined
94
+ ? { source: assignment.capture, kind: modelled.model.kind, rows: [], data: modelled.model.data }
95
+ : textAnswer_make(tee.text_get(), assignment.capture);
96
+ return assignment_store(name, answer) ?? envelopes;
97
+ }
98
+ //# sourceMappingURL=assignment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assignment.js","sourceRoot":"","sources":["../../src/core/assignment.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@
12
12
  *
13
13
  * @module
14
14
  */
15
+ import type { JobSource } from './runner.js';
15
16
  import type { PromptContext, CubeTelemetry, JobsStateTelemetry, CommandEnvelope, WatchState, Task } from '@fnndsc/menu';
16
17
  import type { ReferenceValue } from '../lib/parser.js';
17
18
  import type { ListingLook, VFSDispatcher } from '@fnndsc/fond';
@@ -244,6 +245,8 @@ export interface Backend {
244
245
  /** Opens one file's bytes as a stream, never read whole; absent, a surface is served `read`'s buffer. */
245
246
  readonly stream?: (path: string) => Promise<FileByteStream>;
246
247
  };
248
+ /** The long jobs it hands the core's runner, by kind (core/runner.ts); each is mounted under `/proc` as a task source. */
249
+ readonly jobs?: ReadonlyArray<JobSource>;
247
250
  /** Its long-running steps, by kind; the core mounts those that bring no mount of their own under `/proc`. */
248
251
  readonly tasks?: ReadonlyArray<TaskSource>;
249
252
  /** Its filesystem; absent, the session has only the core's own mounts. */
@@ -1 +1 @@
1
- {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/core/backend.ts"],"names":[],"mappings":"AAiRA,IAAI,SAAS,GAAmB,IAAI,CAAC;AAErC;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,SAAS,GAAG,OAAO,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW;IACzB,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;IAC3G,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/core/backend.ts"],"names":[],"mappings":"AAoRA,IAAI,SAAS,GAAmB,IAAI,CAAC;AAErC;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,SAAS,GAAG,OAAO,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW;IACzB,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;IAC3G,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -13,6 +13,8 @@ import { builtin_ddate, builtin_pom, builtin_stardate, builtin_sunrise } from '.
13
13
  import { builtin_grep } from '../builtins/sys/grep.js';
14
14
  import { builtin_cut, builtin_head, builtin_sort, builtin_tail, builtin_uniq, builtin_wc } from '../builtins/sys/textFilters.js';
15
15
  import { builtin_command } from '../builtins/sys/command.js';
16
+ import { builtin_kill, builtin_wait } from '../builtins/sys/tasks.js';
17
+ import { builtin_set, builtin_unset } from '../builtins/sys/variables.js';
16
18
  import { builtin_apropos, builtin_man } from '../builtins/sys/apropos.js';
17
19
  import { builtin_rev, builtin_rot13, builtin_seq, builtin_shuf, builtin_tac, builtin_yes } from '../builtins/games/text.js';
18
20
  import { builtin_wtf } from '../builtins/games/wtf.js';
@@ -91,6 +93,10 @@ const envelope = {
91
93
  ddate: builtin_ddate,
92
94
  sunrise: builtin_sunrise,
93
95
  timer: builtin_timer,
96
+ kill: builtin_kill,
97
+ wait: builtin_wait,
98
+ set: builtin_set,
99
+ unset: builtin_unset,
94
100
  leave: builtin_leave,
95
101
  stopwatch: builtin_stopwatch,
96
102
  sl: builtin_sl,
@@ -163,6 +169,10 @@ const plain = {
163
169
  ddate: envelopeHandler_wrap(builtin_ddate),
164
170
  sunrise: envelopeHandler_wrap(builtin_sunrise),
165
171
  timer: envelopeHandler_wrap(builtin_timer),
172
+ kill: envelopeHandler_wrap(builtin_kill),
173
+ wait: envelopeHandler_wrap(builtin_wait),
174
+ set: envelopeHandler_wrap(builtin_set),
175
+ unset: envelopeHandler_wrap(builtin_unset),
166
176
  leave: envelopeHandler_wrap(builtin_leave),
167
177
  stopwatch: envelopeHandler_wrap(builtin_stopwatch),
168
178
  sl: envelopeHandler_wrap(builtin_sl),
@@ -1 +1 @@
1
- {"version":3,"file":"coreCommands.js","sourceRoot":"","sources":["../../src/core/coreCommands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coreCommands.js","sourceRoot":"","sources":["../../src/core/coreCommands.ts"],"names":[],"mappings":"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"}
@@ -157,6 +157,14 @@ export interface BrasaEngine {
157
157
  * @param surface - The surface.
158
158
  */
159
159
  surface_install(surface: Surface): void;
160
+ /**
161
+ * Picks up the backend's jobs that were running when the session last
162
+ * ended (core/runner.ts). A host calls it once, after installing its surface,
163
+ * which says whether the `tasks` tier is granted.
164
+ *
165
+ * @returns How many went on.
166
+ */
167
+ jobs_resume?(): number;
160
168
  }
161
169
  /**
162
170
  * Sets the shared stop-on-error flag. Exposed so the boot layer (which owns
@@ -38,10 +38,13 @@ import { commandCancellation_abort, commandCancellation_stopped, commandCancella
38
38
  import { turn_leave, turn_resume } from './turn.js';
39
39
  import { errorStack } from '@fnndsc/fond';
40
40
  import { recorder_note } from '../session/recorder.js';
41
+ import { assignment_parse } from './variables.js';
42
+ import { assignment_execute } from './assignment.js';
41
43
  import { answerAdapters_register } from '../session/answerAdapters.js';
42
44
  import { numbering_get } from '../session/answer.js';
43
45
  import { sink_get, sink_set } from './sink.js';
44
46
  import { backend_install, backendInstalled_get } from './backend.js';
47
+ import { JobRunner, jobsRoot_of, runner_get, runner_install } from './runner.js';
45
48
  import { vfsDispatcher_get } from './filesystem.js';
46
49
  import { itemType_isContainer } from './itemKinds.js';
47
50
  /**
@@ -148,15 +151,18 @@ export async function line_execute(line) {
148
151
  * Executes one line inside its already-established cancellation scope.
149
152
  *
150
153
  * @param line - The raw input line.
154
+ * @param captured - Whether the line is a capture's command, already noted with its assignment.
151
155
  * @returns The envelopes of the executed commands, in execution order.
152
156
  */
153
- async function line_execute_run(line) {
157
+ async function line_execute_run(line, captured = false) {
154
158
  const trimmedLine = line.trim();
155
159
  if (!trimmedLine)
156
160
  return [];
157
161
  // A press on a surface and a line at a console arrive here alike, which is
158
- // what makes recording a session cost nothing: the lowering is the law.
159
- recorder_note(trimmedLine);
162
+ // what makes recording a session cost nothing: the lowering is the law. A
163
+ // capture's command is part of its assignment's line, already noted.
164
+ if (!captured)
165
+ recorder_note(trimmedLine);
160
166
  // Start timing if enabled
161
167
  const timingEnabled = session.timingEnabled_get();
162
168
  const startTime = timingEnabled ? performance.now() : 0;
@@ -167,6 +173,12 @@ async function line_execute_run(line) {
167
173
  if (batch.length > 1) {
168
174
  return batch_execute(batch, startTime, timingEnabled);
169
175
  }
176
+ // `NAME=$(command)` or `NAME=word`: before pipes, since a capture's
177
+ // command may be a pipe of its own.
178
+ const assignment = assignment_parse(trimmedLine);
179
+ if (assignment !== null) {
180
+ return await assignment_execute(assignment, trimmedLine, (capture) => line_execute_run(capture, true));
181
+ }
170
182
  const pipeSegments = pipes_parse(trimmedLine);
171
183
  if (pipeSegments.length > 1) {
172
184
  try {
@@ -254,13 +266,21 @@ async function vfsProviders_register() {
254
266
  vfsDispatcher.provider_register(new StaticVfsProvider('/usr/games'));
255
267
  vfsDispatcher.provider_register(new StaticVfsProvider('/usr/share'));
256
268
  vfsDispatcher.provider_register(new StaticVfsProvider('/usr/share/doc'));
257
- // A backend's task sources that bring no mount of their own are the core's to show.
269
+ // A backend's task sources that bring no mount of their own are the core's to show, the runner's among them.
258
270
  const { TaskSourceVfsProvider } = await import('./tasks.js');
259
- for (const source of backendInstalled_get()?.tasks ?? []) {
271
+ for (const source of taskSources_all()) {
260
272
  if (source.mounted !== true)
261
273
  vfsDispatcher.provider_register(new TaskSourceVfsProvider(source));
262
274
  }
263
275
  }
276
+ /**
277
+ * Every task source of the session: the backend's own, and its jobs as the runner keeps them.
278
+ *
279
+ * @returns The sources.
280
+ */
281
+ function taskSources_all() {
282
+ return [...(backendInstalled_get()?.tasks ?? []), ...(runner_get()?.taskSources_get() ?? [])];
283
+ }
264
284
  /**
265
285
  * Creates the engine: initializes session state, registers the VFS
266
286
  * providers, and returns the facade a host drives.
@@ -279,6 +299,8 @@ export async function engine_create(backend) {
279
299
  backend_install(backend);
280
300
  // What each listing's rows are, so `@3` can name one.
281
301
  answerAdapters_register();
302
+ const jobs = backendInstalled_get()?.jobs ?? [];
303
+ runner_install(jobs.length > 0 ? new JobRunner(jobsRoot_of(backendInstalled_get()?.id ?? 'session'), jobs) : null);
282
304
  await session.init();
283
305
  await vfsProviders_register();
284
306
  // A backend's containers are folders to every tool, the dispatcher's read included.
@@ -300,7 +322,7 @@ export async function engine_create(backend) {
300
322
  // The backend answers for its own subjects (ChRIS: feeds); a task it
301
323
  // leaves to the core is watched by the core.
302
324
  watch_set: (subject, owner, on) => backendInstalled_get()?.watch?.set(subject, owner, on)
303
- ?? taskWatch_set(subject, owner, on, backendInstalled_get()?.tasks ?? []),
325
+ ?? taskWatch_set(subject, owner, on, taskSources_all()),
304
326
  watch_release: (owner) => {
305
327
  backendInstalled_get()?.watch?.release(owner);
306
328
  taskWatch_release(owner);
@@ -308,6 +330,7 @@ export async function engine_create(backend) {
308
330
  ambient_listen,
309
331
  sink_install: (sink) => { sink_set(sink); },
310
332
  surface_install: (surface) => { surface_set(surface); },
333
+ jobs_resume: () => runner_get()?.jobs_resume() ?? 0,
311
334
  };
312
335
  }
313
336
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,19 @@
1
1
  import type { ReferenceValue } from '../lib/parser.js';
2
2
  import { type AnswerHandle } from '../session/answer.js';
3
+ import { type FieldReading } from './variables.js';
3
4
  /**
4
- * Runs work with a manifest's parameters in scope.
5
+ * Records why a reference was refused, for the line's refusal to say.
5
6
  *
6
- * @param params - The parameters, already checked for completeness.
7
- * @param operation - The work to run.
8
- * @returns The operation's result.
7
+ * @param reason - The reason, or null to clear it.
8
+ */
9
+ export declare function referenceRefusal_set(reason: string | null): void;
10
+ /**
11
+ * Turns a reading into what the resolver returns, keeping the refusal.
12
+ *
13
+ * @param reading - What reading the variable or built-in gave.
14
+ * @returns Its operands, or null with the reason recorded.
9
15
  */
10
- export declare function paramScope_run<T>(params: Map<string, string>, operation: () => Promise<T>): Promise<T>;
16
+ export declare function fieldReading_value(reading: FieldReading): ReferenceValue;
11
17
  /**
12
18
  * Runs work in which an unanswerable reference stands as written.
13
19
  *
@@ -52,8 +58,8 @@ export declare function indices_parse(spec: string): AnswerHandle[] | null;
52
58
  */
53
59
  export declare function verbInHand_set(verb: string | null): void;
54
60
  /**
55
- * Answers a reference: an index, then the session, then the manifest, then
56
- * the environment.
61
+ * Answers a reference: an index, then the built-ins, then the variables,
62
+ * then the environment.
57
63
  *
58
64
  * @param name - The reference's name.
59
65
  * @returns What it refers to, or null when nothing does.
@@ -10,9 +10,11 @@
10
10
  *
11
11
  * One resolver now answers for all of them, in a fixed order:
12
12
  *
13
- * . *Session pronouns*: the place the session stands (`cwd`), and those
14
- * the backend answers (ChRIS: the cohort, the feed, the run, the query).
15
- * . *Parameters* of the manifest being played, if one is.
13
+ * . *Built-ins*: the place the session stands (`cwd`), the held listing,
14
+ * and those the backend answers (ChRIS: the cohort, the feed, the run,
15
+ * the query). Read-only.
16
+ * . *Variables* (`core/variables.ts`): what lines set, and inside a play
17
+ * the manifest's parameters, read-only.
16
18
  * . *The environment*.
17
19
  *
18
20
  * A name nothing answers refuses the LINE rather than expanding to nothing
@@ -27,6 +29,7 @@ import { session } from '../session/index.js';
27
29
  import { answer_get, answerHandles_get, answerKind_count, answerRow_get, handle_word, numberedFooter_of } from '../session/answer.js';
28
30
  import { heldListingOperands_get } from './listing.js';
29
31
  import { backendInstalled_get } from './backend.js';
32
+ import { answer_read, variable_get, variableScope_isPlay } from './variables.js';
30
33
  import { answerKind_find, answerKinds_get, verbTakes_get } from './answerKinds.js';
31
34
  /** The name the core answers for itself: where the session stands. */
32
35
  const CORE_REFERENCE = 'cwd';
@@ -42,17 +45,28 @@ function referenceSources_get() {
42
45
  }
43
46
  /** Whether an unanswerable reference may stand as written: what a dry run does. */
44
47
  const standsScope = new AsyncLocalStorage();
45
- /** Parameters of the manifest being played, if one is. */
46
- const paramScope = new AsyncLocalStorage();
48
+ /** Why the last reference was refused, when a variable or a built-in said why. */
49
+ let fieldRefusal = null;
47
50
  /**
48
- * Runs work with a manifest's parameters in scope.
51
+ * Records why a reference was refused, for the line's refusal to say.
49
52
  *
50
- * @param params - The parameters, already checked for completeness.
51
- * @param operation - The work to run.
52
- * @returns The operation's result.
53
+ * @param reason - The reason, or null to clear it.
54
+ */
55
+ export function referenceRefusal_set(reason) {
56
+ fieldRefusal = reason;
57
+ }
58
+ /**
59
+ * Turns a reading into what the resolver returns, keeping the refusal.
60
+ *
61
+ * @param reading - What reading the variable or built-in gave.
62
+ * @returns Its operands, or null with the reason recorded.
53
63
  */
54
- export async function paramScope_run(params, operation) {
55
- return await paramScope.run(params, operation);
64
+ export function fieldReading_value(reading) {
65
+ if ('refused' in reading) {
66
+ fieldRefusal = reading.refused;
67
+ return null;
68
+ }
69
+ return { values: reading.values };
56
70
  }
57
71
  /**
58
72
  * Runs work in which an unanswerable reference stands as written.
@@ -173,13 +187,14 @@ function index_resolve(name) {
173
187
  return { values };
174
188
  }
175
189
  /**
176
- * Answers a reference: an index, then the session, then the manifest, then
177
- * the environment.
190
+ * Answers a reference: an index, then the built-ins, then the variables,
191
+ * then the environment.
178
192
  *
179
193
  * @param name - The reference's name.
180
194
  * @returns What it refers to, or null when nothing does.
181
195
  */
182
196
  export async function reference_resolve(name) {
197
+ fieldRefusal = null;
183
198
  if (name.startsWith('@'))
184
199
  return index_resolve(name);
185
200
  if (name === CORE_REFERENCE)
@@ -197,10 +212,9 @@ export async function reference_resolve(name) {
197
212
  if (answered !== undefined)
198
213
  return answered;
199
214
  }
200
- const params = paramScope.getStore();
201
- const given = params?.get(name);
202
- if (given !== undefined)
203
- return { values: [given] };
215
+ const variable = variable_get(stem);
216
+ if (variable !== undefined)
217
+ return fieldReading_value(answer_read(variable.answer, stem, name.split('.').slice(1)));
204
218
  const environment = process.env[name];
205
219
  return environment === undefined ? null : { values: [environment] };
206
220
  }
@@ -211,8 +225,11 @@ export async function reference_resolve(name) {
211
225
  * @returns The refusal's text.
212
226
  */
213
227
  export function reference_refusal(name) {
214
- const scoped = paramScope.getStore() !== undefined;
215
- const places = scoped ? "the session, this manifest's parameters, the environment" : 'the session, the environment';
228
+ if (fieldRefusal !== null)
229
+ return `\${${name}}: ${fieldRefusal}.`;
230
+ const places = variableScope_isPlay()
231
+ ? "the session's built-ins, this manifest's variables and parameters, the environment"
232
+ : "the session's built-ins, its variables, the environment";
216
233
  if (name.startsWith('@')) {
217
234
  if (kindRefusal !== null)
218
235
  return `${name}: ${kindRefusal}`;