@fnndsc/brasa 0.23.1 → 0.24.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 (89) hide show
  1. package/dist/buildinfo.json +1 -1
  2. package/dist/builtins/fs/pull.args.d.ts +1 -1
  3. package/dist/builtins/fs/pull.args.js +5 -3
  4. package/dist/builtins/fs/pull.args.js.map +1 -1
  5. package/dist/builtins/fs/pull.js +2 -2
  6. package/dist/builtins/fs/touch.js +1 -1
  7. package/dist/builtins/fs/touch.js.map +1 -1
  8. package/dist/builtins/help.js +128 -10
  9. package/dist/builtins/help.js.map +1 -1
  10. package/dist/builtins/index.d.ts +5 -0
  11. package/dist/builtins/index.js +5 -0
  12. package/dist/builtins/index.js.map +1 -1
  13. package/dist/builtins/net/query.csv.js +14 -0
  14. package/dist/builtins/net/query.csv.js.map +1 -1
  15. package/dist/builtins/net/query.js +3 -0
  16. package/dist/builtins/net/query.js.map +1 -1
  17. package/dist/builtins/pluginExecute.js +28 -3
  18. package/dist/builtins/pluginExecute.js.map +1 -1
  19. package/dist/builtins/proc.js +32 -2
  20. package/dist/builtins/proc.js.map +1 -1
  21. package/dist/builtins/res/dicom.d.ts +35 -1
  22. package/dist/builtins/res/dicom.js +62 -3
  23. package/dist/builtins/res/dicom.js.map +1 -1
  24. package/dist/builtins/res/expect.d.ts +40 -0
  25. package/dist/builtins/res/expect.js +447 -0
  26. package/dist/builtins/res/expect.js.map +1 -0
  27. package/dist/builtins/res/gather.d.ts +10 -0
  28. package/dist/builtins/res/gather.js +224 -0
  29. package/dist/builtins/res/gather.js.map +1 -0
  30. package/dist/builtins/res/gather.store.d.ts +131 -0
  31. package/dist/builtins/res/gather.store.js +225 -0
  32. package/dist/builtins/res/gather.store.js.map +1 -0
  33. package/dist/builtins/res/pipeline.args.d.ts +5 -2
  34. package/dist/builtins/res/pipeline.args.js +8 -3
  35. package/dist/builtins/res/pipeline.args.js.map +1 -1
  36. package/dist/builtins/res/pipeline.js +23 -0
  37. package/dist/builtins/res/pipeline.js.map +1 -1
  38. package/dist/builtins/res/play.d.ts +70 -0
  39. package/dist/builtins/res/play.js +334 -0
  40. package/dist/builtins/res/play.js.map +1 -0
  41. package/dist/builtins/res/plugin.js +21 -6
  42. package/dist/builtins/res/plugin.js.map +1 -1
  43. package/dist/builtins/res/record.d.ts +49 -0
  44. package/dist/builtins/res/record.js +150 -0
  45. package/dist/builtins/res/record.js.map +1 -0
  46. package/dist/builtins/res/runWait.d.ts +49 -0
  47. package/dist/builtins/res/runWait.js +193 -0
  48. package/dist/builtins/res/runWait.js.map +1 -0
  49. package/dist/builtins/sys/weather.d.ts +132 -0
  50. package/dist/builtins/sys/weather.js +297 -0
  51. package/dist/builtins/sys/weather.js.map +1 -0
  52. package/dist/command-keys.js +4 -0
  53. package/dist/command-keys.js.map +1 -1
  54. package/dist/core/connect.d.ts +31 -1
  55. package/dist/core/connect.js +32 -1
  56. package/dist/core/connect.js.map +1 -1
  57. package/dist/core/dispatch.d.ts +0 -14
  58. package/dist/core/dispatch.js +83 -27
  59. package/dist/core/dispatch.js.map +1 -1
  60. package/dist/core/engine.d.ts +10 -0
  61. package/dist/core/engine.js +48 -3
  62. package/dist/core/engine.js.map +1 -1
  63. package/dist/core/expansion.d.ts +70 -0
  64. package/dist/core/expansion.js +289 -0
  65. package/dist/core/expansion.js.map +1 -0
  66. package/dist/core/promptContext.js +5 -1
  67. package/dist/core/promptContext.js.map +1 -1
  68. package/dist/lib/duration.d.ts +17 -0
  69. package/dist/lib/duration.js +25 -0
  70. package/dist/lib/duration.js.map +1 -0
  71. package/dist/lib/parser.d.ts +50 -0
  72. package/dist/lib/parser.js +119 -0
  73. package/dist/lib/parser.js.map +1 -1
  74. package/dist/logo/brain.d.ts +6 -27
  75. package/dist/logo/brain.js +5 -250
  76. package/dist/logo/brain.js.map +1 -1
  77. package/dist/session/answer.d.ts +141 -0
  78. package/dist/session/answer.js +163 -0
  79. package/dist/session/answer.js.map +1 -0
  80. package/dist/session/answerAdapters.d.ts +4 -0
  81. package/dist/session/answerAdapters.js +106 -0
  82. package/dist/session/answerAdapters.js.map +1 -0
  83. package/dist/session/recent.d.ts +68 -0
  84. package/dist/session/recent.js +99 -0
  85. package/dist/session/recent.js.map +1 -0
  86. package/dist/session/recorder.d.ts +61 -0
  87. package/dist/session/recorder.js +95 -0
  88. package/dist/session/recorder.js.map +1 -0
  89. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"promptContext.js","sourceRoot":"","sources":["../../src/core/promptContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"promptContext.js","sourceRoot":"","sources":["../../src/core/promptContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @file How the language reads a duration.
3
+ *
4
+ * `expect --within` and `play --pace` are the same notion of time, so they
5
+ * read it with the same function: a second parser beside this one is a
6
+ * second set of durations that mean something slightly else, and a manifest
7
+ * that says `20m` in two places must mean twenty minutes in both.
8
+ *
9
+ * @module
10
+ */
11
+ /**
12
+ * Reads a duration the way an operator writes one.
13
+ *
14
+ * @param text - A duration such as `30s`, `20m`, `2h`, `250ms`, or bare seconds.
15
+ * @returns Milliseconds, or null when the text is not a duration.
16
+ */
17
+ export declare function duration_parse(text: string): number | null;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @file How the language reads a duration.
3
+ *
4
+ * `expect --within` and `play --pace` are the same notion of time, so they
5
+ * read it with the same function: a second parser beside this one is a
6
+ * second set of durations that mean something slightly else, and a manifest
7
+ * that says `20m` in two places must mean twenty minutes in both.
8
+ *
9
+ * @module
10
+ */
11
+ /** How long each unit lasts, in milliseconds. */
12
+ const UNIT_MS = { ms: 1, s: 1000, m: 60000, h: 3600000 };
13
+ /**
14
+ * Reads a duration the way an operator writes one.
15
+ *
16
+ * @param text - A duration such as `30s`, `20m`, `2h`, `250ms`, or bare seconds.
17
+ * @returns Milliseconds, or null when the text is not a duration.
18
+ */
19
+ export function duration_parse(text) {
20
+ const match = text.trim().match(/^(\d+(?:\.\d+)?)(ms|s|m|h)?$/);
21
+ if (match === null)
22
+ return null;
23
+ return Number(match[1]) * UNIT_MS[match[2] ?? 's'];
24
+ }
25
+ //# sourceMappingURL=duration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duration.js","sourceRoot":"","sources":["../../src/lib/duration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,iDAAiD;AACjD,MAAM,OAAO,GAA2B,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;AAEjF;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,KAAK,GAA4B,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACzF,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;AACrD,CAAC"}
@@ -5,12 +5,32 @@
5
5
  * backslash escapes. Quotes are stripped from rendered values, but their
6
6
  * pathname-expansion meaning is retained.
7
7
  */
8
+ /**
9
+ * One piece of a word: literal text, or a reference the line asked for.
10
+ *
11
+ * The tokenizer records references rather than resolving them, because
12
+ * resolving is asynchronous (a pronoun asks the session) and tokenizing is
13
+ * not. What it must record is the QUOTING, since that is known only here:
14
+ * inside single quotes a `$` is text, inside double quotes a reference is
15
+ * one operand however many values it carries, and bare it may become
16
+ * several — the shell's rule, which the stack claims to wear.
17
+ */
18
+ export interface ShellSegment {
19
+ /** Literal text, when this piece is text. */
20
+ text: string;
21
+ /** The reference's name, when this piece is one. */
22
+ ref: string | null;
23
+ /** Whether the reference stood inside double quotes. */
24
+ quoted: boolean;
25
+ }
8
26
  /** A rendered shell word and the glob pattern it may contribute. */
9
27
  export interface ShellWord {
10
28
  value: string;
11
29
  globPattern: string;
12
30
  pathnameExpansion: boolean;
13
31
  pathnameExpanded: boolean;
32
+ /** The word's pieces, when it holds a reference; absent when it is plain text. */
33
+ segments?: ShellSegment[];
14
34
  }
15
35
  /** String arguments with per-operand pathname-expansion provenance. */
16
36
  export type ShellArguments = string[] & {
@@ -84,3 +104,33 @@ export declare function shellWords_tokenize(line: string): ShellWord[];
84
104
  * @returns Array of tokens with quotes removed.
85
105
  */
86
106
  export declare function args_tokenize(line: string): string[];
107
+ /** What a reference turned out to be. */
108
+ export type ReferenceValue = {
109
+ values: string[];
110
+ } | null;
111
+ /** Answers what a reference refers to, or null when nothing does. */
112
+ export type ReferenceResolver = (name: string) => Promise<ReferenceValue>;
113
+ /** How reference expansion went. */
114
+ export type ReferenceExpansion = {
115
+ ok: true;
116
+ words: ShellWord[];
117
+ } | {
118
+ ok: false;
119
+ missing: string;
120
+ };
121
+ /**
122
+ * Resolves the references in a line's words, respecting how they were quoted.
123
+ *
124
+ * The shell's rule, kept: a bare reference carrying several values becomes
125
+ * several operands, a double-quoted one stays a single operand however many
126
+ * values it holds, and a single-quoted `$` never got here at all. An
127
+ * expanded value never globs afterwards — a filename with a bracket in it is
128
+ * a filename, not a pattern.
129
+ *
130
+ * @param words - The tokenized words.
131
+ * @param resolve - Answers what a reference refers to.
132
+ * @param unresolvedStands - Leave an unanswerable reference as written
133
+ * instead of refusing: what a dry run does, having run nothing.
134
+ * @returns The expanded words, or the reference nothing could answer.
135
+ */
136
+ export declare function shellWords_referencesExpand(words: readonly ShellWord[], resolve: ReferenceResolver, unresolvedStands?: boolean): Promise<ReferenceExpansion>;
@@ -5,6 +5,23 @@
5
5
  * backslash escapes. Quotes are stripped from rendered values, but their
6
6
  * pathname-expansion meaning is retained.
7
7
  */
8
+ /**
9
+ * What a reference looks like: `${name}` or a bare `$NAME`.
10
+ *
11
+ * A braced name may carry dots, which is how a session pronoun names part
12
+ * of what it refers to (`${gather.first.place}`); a bare one may not, so
13
+ * `$HOME.txt` keeps its extension.
14
+ */
15
+ const REFERENCE_PATTERN = /^\$(?:\{([A-Za-z_][A-Za-z0-9_.]*)\}|([A-Za-z_][A-Za-z0-9_]*))/;
16
+ /**
17
+ * What an index looks like: `@SER3`, `@STD001`, `@FIL2,3,7`, `@DIR2-4`.
18
+ *
19
+ * A row of the session's last answer, named by the handle the listing shows
20
+ * beside it — the KIND it counts, then its place in that kind's sequence.
21
+ * The sigil keeps it unambiguous: a directory called `SER3` is a path, and
22
+ * `@SER3` never is.
23
+ */
24
+ const INDEX_PATTERN = /^@([A-Z]{3}\d+(?:-\d+)?(?:,\d+(?:-\d+)?)*)/;
8
25
  /** Escapes wildcard metacharacters for literal minimatch use. */
9
26
  function globLiteral_escape(value) {
10
27
  return value.replace(/[\\*?\[\]]/g, '\\$&');
@@ -132,25 +149,49 @@ export function shellWords_tokenize(line) {
132
149
  let inSingle = false;
133
150
  let inDouble = false;
134
151
  let escapeNext = false;
152
+ let segments = [];
153
+ let pendingText = '';
154
+ const text_flush = () => {
155
+ if (pendingText.length === 0)
156
+ return;
157
+ segments.push({ text: pendingText, ref: null, quoted: false });
158
+ pendingText = '';
159
+ };
135
160
  const character_append = (char, literal) => {
136
161
  currentValue += char;
137
162
  currentPattern += literal ? globLiteral_escape(char) : char;
138
163
  pathnameExpansion ||= !literal && /[*?[\]]/.test(char);
164
+ pendingText += char;
165
+ wordStarted = true;
166
+ };
167
+ const reference_append = (name, raw, quoted) => {
168
+ text_flush();
169
+ segments.push({ text: '', ref: name, quoted });
170
+ // The value keeps the reference as written: every reader that does not
171
+ // resolve references (completion, help, the tests) sees the line as the
172
+ // operator typed it.
173
+ currentValue += raw;
174
+ currentPattern += globLiteral_escape(raw);
139
175
  wordStarted = true;
140
176
  };
141
177
  const word_pushCurrent = () => {
142
178
  if (!wordStarted)
143
179
  return;
180
+ text_flush();
181
+ const held = segments;
144
182
  tokens.push({
145
183
  value: currentValue,
146
184
  globPattern: currentPattern,
147
185
  pathnameExpansion,
148
186
  pathnameExpanded: false,
187
+ ...(held.some((segment) => segment.ref !== null) ? { segments: held } : {}),
149
188
  });
150
189
  currentValue = '';
151
190
  currentPattern = '';
152
191
  pathnameExpansion = false;
153
192
  wordStarted = false;
193
+ segments = [];
194
+ pendingText = '';
154
195
  };
155
196
  for (let i = 0; i < line.length; i++) {
156
197
  const char = line[i];
@@ -178,6 +219,29 @@ export function shellWords_tokenize(line) {
178
219
  word_pushCurrent();
179
220
  continue;
180
221
  }
222
+ // An index into the session's last answer, unless it stands in quotes.
223
+ // Only at the START of a word: `user@host` is not an index, and neither
224
+ // is an email address in a tag value.
225
+ if (char === '@' && !inSingle && !inDouble && !wordStarted) {
226
+ const rest = line.slice(i);
227
+ const match = rest.match(INDEX_PATTERN);
228
+ if (match !== null) {
229
+ reference_append(`@${match[1]}`, match[0], false);
230
+ i += match[0].length - 1;
231
+ continue;
232
+ }
233
+ }
234
+ // A reference, unless it stands in single quotes, where a `$` is text —
235
+ // which is what makes a quoted DICOM value or a literal price safe.
236
+ if (char === '$' && !inSingle) {
237
+ const rest = line.slice(i);
238
+ const match = rest.match(REFERENCE_PATTERN);
239
+ if (match !== null) {
240
+ reference_append(match[1] ?? match[2], match[0], inDouble);
241
+ i += match[0].length - 1;
242
+ continue;
243
+ }
244
+ }
181
245
  character_append(char, inSingle || inDouble);
182
246
  }
183
247
  word_pushCurrent();
@@ -192,4 +256,59 @@ export function shellWords_tokenize(line) {
192
256
  export function args_tokenize(line) {
193
257
  return shellWords_tokenize(line).map((word) => word.value);
194
258
  }
259
+ /**
260
+ * Resolves the references in a line's words, respecting how they were quoted.
261
+ *
262
+ * The shell's rule, kept: a bare reference carrying several values becomes
263
+ * several operands, a double-quoted one stays a single operand however many
264
+ * values it holds, and a single-quoted `$` never got here at all. An
265
+ * expanded value never globs afterwards — a filename with a bracket in it is
266
+ * a filename, not a pattern.
267
+ *
268
+ * @param words - The tokenized words.
269
+ * @param resolve - Answers what a reference refers to.
270
+ * @param unresolvedStands - Leave an unanswerable reference as written
271
+ * instead of refusing: what a dry run does, having run nothing.
272
+ * @returns The expanded words, or the reference nothing could answer.
273
+ */
274
+ export async function shellWords_referencesExpand(words, resolve, unresolvedStands = false) {
275
+ const expanded = [];
276
+ for (const word of words) {
277
+ const segments = word.segments;
278
+ if (segments === undefined) {
279
+ expanded.push(word);
280
+ continue;
281
+ }
282
+ // A word that is nothing but one bare reference is the list case: it may
283
+ // leave as several operands. Anything else joins into one word.
284
+ const lone = segments.length === 1 && segments[0].ref !== null && !segments[0].quoted;
285
+ let rendered = '';
286
+ let split = null;
287
+ for (const segment of segments) {
288
+ if (segment.ref === null) {
289
+ rendered += segment.text;
290
+ continue;
291
+ }
292
+ const held = await resolve(segment.ref);
293
+ if (held === null) {
294
+ if (!unresolvedStands)
295
+ return { ok: false, missing: segment.ref };
296
+ rendered += `\${${segment.ref}}`;
297
+ continue;
298
+ }
299
+ if (lone && held.values.length !== 1) {
300
+ split = held.values;
301
+ continue;
302
+ }
303
+ rendered += held.values.join(' ');
304
+ }
305
+ if (split !== null) {
306
+ for (const value of split)
307
+ expanded.push(shellWord_literal(value));
308
+ continue;
309
+ }
310
+ expanded.push(shellWord_literal(rendered));
311
+ }
312
+ return { ok: true, words: expanded };
313
+ }
195
314
  //# sourceMappingURL=parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/lib/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/lib/parser.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,10 @@
1
1
  /**
2
- * Renders the ASCII logo as an array of lines.
2
+ * @file The mise brain, as the kernel's hosts have always imported it.
3
3
  *
4
- * @param colorize - Whether to apply color.
5
- * @param reverse - Whether to reverse the gradient.
6
- * @returns The rendered logo lines.
7
- */
8
- export declare function logo_linesRender(colorize: boolean, reverse?: boolean): string[];
9
- /**
10
- * Renders a single frame of the brain activity animation, where the core brain
11
- * structure retains its original hue'd color gradient, and only the inner spaces
12
- * (stylized nodes) pulse, grow, and fade physically as spatial blooms.
13
- *
14
- * @param frameIndex - The index of the animation frame.
15
- * @param isStaticEndState - If true, renders the final steady state where holes are blank.
16
- * @returns Array of rendered lines with color codes.
17
- */
18
- export declare function logo_frameRender(frameIndex: number, isStaticEndState?: boolean): string[];
19
- /**
20
- * The number of terminal rows one rendered frame occupies.
21
- *
22
- * @returns The frame height in rows.
23
- */
24
- export declare function logoRows_count(): number;
25
- /**
26
- * The number of terminal columns the widest rendered line occupies,
27
- * including the two-column indent every frame line carries.
4
+ * The art and its frame renderer moved to the wire package so a browser can
5
+ * draw the same brain a terminal boot does; the kernel re-exports them here so
6
+ * chell and calypso keep their import.
28
7
  *
29
- * @returns The frame width in columns.
8
+ * @module
30
9
  */
31
- export declare function logoColumns_count(): number;
10
+ export { logo_linesRender, logo_frameRender, logoRows_count, logoColumns_count } from '@fnndsc/menu/logo';