@fnndsc/brasa 0.56.1 → 0.56.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/buildinfo.json +1 -1
- package/dist/builtins/berth/berth.d.ts +90 -3
- package/dist/builtins/berth/berth.js +129 -76
- package/dist/builtins/berth/berth.js.map +1 -1
- package/dist/builtins/berth/berthClose.d.ts +25 -6
- package/dist/builtins/berth/berthClose.js +8 -64
- package/dist/builtins/berth/berthClose.js.map +1 -1
- package/dist/builtins/berth/berthCube.d.ts +3 -2
- package/dist/builtins/berth/berthCube.js +9 -16
- package/dist/builtins/berth/berthCube.js.map +1 -1
- package/dist/builtins/berth/berthProcesses.js +33 -3
- package/dist/builtins/berth/berthProcesses.js.map +1 -1
- package/dist/builtins/debug.d.ts +24 -3
- package/dist/builtins/debug.js +66 -13
- package/dist/builtins/debug.js.map +1 -1
- package/dist/builtins/fs/acl.args.d.ts +5 -38
- package/dist/builtins/fs/acl.args.js +6 -72
- package/dist/builtins/fs/acl.args.js.map +1 -1
- package/dist/builtins/fs/acl.d.ts +100 -10
- package/dist/builtins/fs/acl.js +222 -68
- package/dist/builtins/fs/acl.js.map +1 -1
- package/dist/builtins/fs/cat.args.d.ts +14 -15
- package/dist/builtins/fs/cat.args.js +13 -40
- package/dist/builtins/fs/cat.args.js.map +1 -1
- package/dist/builtins/fs/cat.d.ts +40 -3
- package/dist/builtins/fs/cat.js +92 -13
- package/dist/builtins/fs/cat.js.map +1 -1
- package/dist/builtins/fs/cd.d.ts +24 -6
- package/dist/builtins/fs/cd.js +71 -18
- package/dist/builtins/fs/cd.js.map +1 -1
- package/dist/builtins/fs/configWrite.d.ts +24 -8
- package/dist/builtins/fs/configWrite.js +77 -36
- package/dist/builtins/fs/configWrite.js.map +1 -1
- package/dist/builtins/fs/cp.d.ts +39 -4
- package/dist/builtins/fs/cp.js +122 -56
- package/dist/builtins/fs/cp.js.map +1 -1
- package/dist/builtins/fs/download.d.ts +31 -4
- package/dist/builtins/fs/download.js +75 -38
- package/dist/builtins/fs/download.js.map +1 -1
- package/dist/builtins/fs/du.d.ts +59 -33
- package/dist/builtins/fs/du.js +111 -79
- package/dist/builtins/fs/du.js.map +1 -1
- package/dist/builtins/fs/edit.d.ts +19 -4
- package/dist/builtins/fs/edit.js +77 -16
- package/dist/builtins/fs/edit.js.map +1 -1
- package/dist/builtins/fs/find.d.ts +25 -0
- package/dist/builtins/fs/find.js +76 -5
- package/dist/builtins/fs/find.js.map +1 -1
- package/dist/builtins/fs/ls.d.ts +69 -4
- package/dist/builtins/fs/ls.js +84 -45
- package/dist/builtins/fs/ls.js.map +1 -1
- package/dist/builtins/fs/mkdir.d.ts +28 -18
- package/dist/builtins/fs/mkdir.js +95 -66
- package/dist/builtins/fs/mkdir.js.map +1 -1
- package/dist/builtins/fs/mv.d.ts +34 -4
- package/dist/builtins/fs/mv.js +129 -64
- package/dist/builtins/fs/mv.js.map +1 -1
- package/dist/builtins/fs/pull.args.d.ts +56 -17
- package/dist/builtins/fs/pull.args.js +16 -66
- package/dist/builtins/fs/pull.args.js.map +1 -1
- package/dist/builtins/fs/pull.d.ts +62 -0
- package/dist/builtins/fs/pull.js +123 -31
- package/dist/builtins/fs/pull.js.map +1 -1
- package/dist/builtins/fs/pwd.d.ts +19 -5
- package/dist/builtins/fs/pwd.js +62 -8
- package/dist/builtins/fs/pwd.js.map +1 -1
- package/dist/builtins/fs/rm.d.ts +58 -21
- package/dist/builtins/fs/rm.js +99 -82
- package/dist/builtins/fs/rm.js.map +1 -1
- package/dist/builtins/fs/rmdir.d.ts +29 -11
- package/dist/builtins/fs/rmdir.js +87 -36
- package/dist/builtins/fs/rmdir.js.map +1 -1
- package/dist/builtins/fs/touch.d.ts +44 -9
- package/dist/builtins/fs/touch.js +91 -27
- package/dist/builtins/fs/touch.js.map +1 -1
- package/dist/builtins/fs/tree.d.ts +36 -9
- package/dist/builtins/fs/tree.js +126 -36
- package/dist/builtins/fs/tree.js.map +1 -1
- package/dist/builtins/fs/upload.d.ts +22 -3
- package/dist/builtins/fs/upload.js +82 -14
- package/dist/builtins/fs/upload.js.map +1 -1
- package/dist/builtins/fs/xattr.args.d.ts +12 -33
- package/dist/builtins/fs/xattr.args.js +17 -95
- package/dist/builtins/fs/xattr.args.js.map +1 -1
- package/dist/builtins/fs/xattr.d.ts +98 -8
- package/dist/builtins/fs/xattr.js +163 -24
- package/dist/builtins/fs/xattr.js.map +1 -1
- package/dist/builtins/games/bytes.d.ts +201 -5
- package/dist/builtins/games/bytes.js +255 -54
- package/dist/builtins/games/bytes.js.map +1 -1
- package/dist/builtins/games/chimes.d.ts +180 -3
- package/dist/builtins/games/chimes.js +203 -26
- package/dist/builtins/games/chimes.js.map +1 -1
- package/dist/builtins/games/chrislab.d.ts +101 -3
- package/dist/builtins/games/chrislab.js +117 -17
- package/dist/builtins/games/chrislab.js.map +1 -1
- package/dist/builtins/games/cowsay.d.ts +93 -2
- package/dist/builtins/games/cowsay.js +90 -31
- package/dist/builtins/games/cowsay.js.map +1 -1
- package/dist/builtins/games/figlet.d.ts +70 -2
- package/dist/builtins/games/figlet.js +83 -6
- package/dist/builtins/games/figlet.js.map +1 -1
- package/dist/builtins/games/lab.d.ts +104 -5
- package/dist/builtins/games/lab.js +144 -6
- package/dist/builtins/games/lab.js.map +1 -1
- package/dist/builtins/games/lolcat.d.ts +61 -1
- package/dist/builtins/games/lolcat.js +59 -24
- package/dist/builtins/games/lolcat.js.map +1 -1
- package/dist/builtins/games/morse.d.ts +36 -1
- package/dist/builtins/games/morse.js +50 -2
- package/dist/builtins/games/morse.js.map +1 -1
- package/dist/builtins/games/numbers.d.ts +241 -5
- package/dist/builtins/games/numbers.js +298 -23
- package/dist/builtins/games/numbers.js.map +1 -1
- package/dist/builtins/games/play.d.ts +96 -6
- package/dist/builtins/games/play.js +137 -6
- package/dist/builtins/games/play.js.map +1 -1
- package/dist/builtins/games/qr.d.ts +40 -1
- package/dist/builtins/games/qr.js +51 -2
- package/dist/builtins/games/qr.js.map +1 -1
- package/dist/builtins/games/show.d.ts +131 -6
- package/dist/builtins/games/show.js +208 -20
- package/dist/builtins/games/show.js.map +1 -1
- package/dist/builtins/games/sky.d.ts +178 -4
- package/dist/builtins/games/sky.js +228 -12
- package/dist/builtins/games/sky.js.map +1 -1
- package/dist/builtins/games/text.d.ts +258 -7
- package/dist/builtins/games/text.js +310 -29
- package/dist/builtins/games/text.js.map +1 -1
- package/dist/builtins/games/trek.d.ts +67 -3
- package/dist/builtins/games/trek.js +63 -10
- package/dist/builtins/games/trek.js.map +1 -1
- package/dist/builtins/games/wtf.d.ts +58 -1
- package/dist/builtins/games/wtf.js +67 -6
- package/dist/builtins/games/wtf.js.map +1 -1
- package/dist/builtins/help.d.ts +41 -3
- package/dist/builtins/help.js +92 -796
- package/dist/builtins/help.js.map +1 -1
- package/dist/builtins/net/connect.d.ts +36 -3
- package/dist/builtins/net/connect.js +84 -26
- package/dist/builtins/net/connect.js.map +1 -1
- package/dist/builtins/net/cubepath.d.ts +49 -5
- package/dist/builtins/net/cubepath.js +69 -27
- package/dist/builtins/net/cubepath.js.map +1 -1
- package/dist/builtins/net/logout.d.ts +13 -4
- package/dist/builtins/net/logout.js +49 -3
- package/dist/builtins/net/logout.js.map +1 -1
- package/dist/builtins/net/netstat.d.ts +29 -4
- package/dist/builtins/net/netstat.js +64 -23
- package/dist/builtins/net/netstat.js.map +1 -1
- package/dist/builtins/net/pacs.d.ts +169 -15
- package/dist/builtins/net/pacs.js +92 -33
- package/dist/builtins/net/pacs.js.map +1 -1
- package/dist/builtins/net/query.args.d.ts +95 -0
- package/dist/builtins/net/query.args.js +26 -0
- package/dist/builtins/net/query.args.js.map +1 -0
- package/dist/builtins/net/query.d.ts +98 -5
- package/dist/builtins/net/query.js +89 -83
- package/dist/builtins/net/query.js.map +1 -1
- package/dist/builtins/net/status.d.ts +5 -3
- package/dist/builtins/net/status.js +5 -12
- package/dist/builtins/net/status.js.map +1 -1
- package/dist/builtins/parametersofplugin.d.ts +82 -3
- package/dist/builtins/parametersofplugin.js +79 -23
- package/dist/builtins/parametersofplugin.js.map +1 -1
- package/dist/builtins/proc.d.ts +210 -3
- package/dist/builtins/proc.js +210 -119
- package/dist/builtins/proc.js.map +1 -1
- package/dist/builtins/res/compute.d.ts +67 -3
- package/dist/builtins/res/compute.js +121 -35
- package/dist/builtins/res/compute.js.map +1 -1
- package/dist/builtins/res/dicom.d.ts +55 -7
- package/dist/builtins/res/dicom.js +86 -52
- package/dist/builtins/res/dicom.js.map +1 -1
- package/dist/builtins/res/expect.d.ts +52 -3
- package/dist/builtins/res/expect.js +92 -29
- package/dist/builtins/res/expect.js.map +1 -1
- package/dist/builtins/res/feed.d.ts +475 -3
- package/dist/builtins/res/feed.js +253 -158
- package/dist/builtins/res/feed.js.map +1 -1
- package/dist/builtins/res/files.d.ts +517 -3
- package/dist/builtins/res/files.js +124 -44
- package/dist/builtins/res/files.js.map +1 -1
- package/dist/builtins/res/gather.d.ts +113 -3
- package/dist/builtins/res/gather.js +153 -44
- package/dist/builtins/res/gather.js.map +1 -1
- package/dist/builtins/res/gather.process.d.ts +27 -19
- package/dist/builtins/res/gather.process.js +29 -59
- package/dist/builtins/res/gather.process.js.map +1 -1
- package/dist/builtins/res/group.d.ts +284 -3
- package/dist/builtins/res/group.js +147 -76
- package/dist/builtins/res/group.js.map +1 -1
- package/dist/builtins/res/image.d.ts +30 -2
- package/dist/builtins/res/image.js +62 -10
- package/dist/builtins/res/image.js.map +1 -1
- package/dist/builtins/res/play.d.ts +71 -9
- package/dist/builtins/res/play.js +124 -82
- package/dist/builtins/res/play.js.map +1 -1
- package/dist/builtins/res/plugininstance.d.ts +307 -2
- package/dist/builtins/res/plugininstance.js +122 -50
- package/dist/builtins/res/plugininstance.js.map +1 -1
- package/dist/builtins/res/pluginmeta.d.ts +244 -2
- package/dist/builtins/res/pluginmeta.js +98 -40
- package/dist/builtins/res/pluginmeta.js.map +1 -1
- package/dist/builtins/res/record.d.ts +37 -3
- package/dist/builtins/res/record.js +127 -57
- package/dist/builtins/res/record.js.map +1 -1
- package/dist/builtins/res/resourceList.d.ts +136 -0
- package/dist/builtins/res/resourceList.js +51 -0
- package/dist/builtins/res/resourceList.js.map +1 -0
- package/dist/builtins/res/tag.d.ts +244 -3
- package/dist/builtins/res/tag.js +97 -41
- package/dist/builtins/res/tag.js.map +1 -1
- package/dist/builtins/res/user.d.ts +122 -3
- package/dist/builtins/res/user.js +83 -21
- package/dist/builtins/res/user.js.map +1 -1
- package/dist/builtins/res/workflow.d.ts +244 -2
- package/dist/builtins/res/workflow.js +97 -40
- package/dist/builtins/res/workflow.js.map +1 -1
- package/dist/builtins/store.d.ts +85 -3
- package/dist/builtins/store.js +135 -68
- package/dist/builtins/store.js.map +1 -1
- package/dist/builtins/sys/apropos.d.ts +80 -5
- package/dist/builtins/sys/apropos.js +121 -15
- package/dist/builtins/sys/apropos.js.map +1 -1
- package/dist/builtins/sys/cal.d.ts +44 -5
- package/dist/builtins/sys/cal.js +57 -10
- package/dist/builtins/sys/cal.js.map +1 -1
- package/dist/builtins/sys/command.d.ts +20 -0
- package/dist/builtins/sys/command.js +31 -0
- package/dist/builtins/sys/command.js.map +1 -1
- package/dist/builtins/sys/context.d.ts +13 -3
- package/dist/builtins/sys/context.js +51 -4
- package/dist/builtins/sys/context.js.map +1 -1
- package/dist/builtins/sys/date.d.ts +56 -5
- package/dist/builtins/sys/date.js +63 -9
- package/dist/builtins/sys/date.js.map +1 -1
- package/dist/builtins/sys/echo.d.ts +63 -2
- package/dist/builtins/sys/echo.js +87 -8
- package/dist/builtins/sys/echo.js.map +1 -1
- package/dist/builtins/sys/fortune.d.ts +27 -2
- package/dist/builtins/sys/fortune.js +44 -2
- package/dist/builtins/sys/fortune.js.map +1 -1
- package/dist/builtins/sys/grep.d.ts +245 -11
- package/dist/builtins/sys/grep.js +418 -131
- package/dist/builtins/sys/grep.js.map +1 -1
- package/dist/builtins/sys/joblets.d.ts +66 -7
- package/dist/builtins/sys/joblets.js +101 -14
- package/dist/builtins/sys/joblets.js.map +1 -1
- package/dist/builtins/sys/motd.d.ts +37 -3
- package/dist/builtins/sys/motd.js +49 -8
- package/dist/builtins/sys/motd.js.map +1 -1
- package/dist/builtins/sys/notes.d.ts +75 -3
- package/dist/builtins/sys/notes.js +90 -29
- package/dist/builtins/sys/notes.js.map +1 -1
- package/dist/builtins/sys/physicalmode.d.ts +24 -3
- package/dist/builtins/sys/physicalmode.js +68 -14
- package/dist/builtins/sys/physicalmode.js.map +1 -1
- package/dist/builtins/sys/tasks.d.ts +74 -5
- package/dist/builtins/sys/tasks.js +102 -14
- package/dist/builtins/sys/tasks.js.map +1 -1
- package/dist/builtins/sys/textFilters.d.ts +673 -41
- package/dist/builtins/sys/textFilters.js +719 -264
- package/dist/builtins/sys/textFilters.js.map +1 -1
- package/dist/builtins/sys/timing.d.ts +24 -3
- package/dist/builtins/sys/timing.js +67 -14
- package/dist/builtins/sys/timing.js.map +1 -1
- package/dist/builtins/sys/variables.d.ts +70 -4
- package/dist/builtins/sys/variables.js +103 -31
- package/dist/builtins/sys/variables.js.map +1 -1
- package/dist/builtins/sys/version.d.ts +27 -2
- package/dist/builtins/sys/version.js +48 -3
- package/dist/builtins/sys/version.js.map +1 -1
- package/dist/builtins/sys/weather.d.ts +92 -15
- package/dist/builtins/sys/weather.js +71 -45
- package/dist/builtins/sys/weather.js.map +1 -1
- package/dist/builtins/sys/whoami.d.ts +38 -18
- package/dist/builtins/sys/whoami.js +112 -8
- package/dist/builtins/sys/whoami.js.map +1 -1
- package/dist/builtins/utils.d.ts +1 -38
- package/dist/builtins/utils.js +1 -87
- package/dist/builtins/utils.js.map +1 -1
- package/dist/chris/backend.js +2 -0
- package/dist/chris/backend.js.map +1 -1
- package/dist/chris/chrisCommands.js +62 -159
- package/dist/chris/chrisCommands.js.map +1 -1
- package/dist/chris/commandFallback.d.ts +12 -0
- package/dist/chris/commandFallback.js +47 -0
- package/dist/chris/commandFallback.js.map +1 -1
- package/dist/chris/files.js +24 -85
- package/dist/chris/files.js.map +1 -1
- package/dist/chris/filesystem.js +7 -5
- package/dist/chris/filesystem.js.map +1 -1
- package/dist/chris/help.js +0 -1082
- package/dist/chris/help.js.map +1 -1
- package/dist/chris/kinds.d.ts +30 -0
- package/dist/chris/kinds.js +154 -0
- package/dist/chris/kinds.js.map +1 -0
- package/dist/chris/mounts.d.ts +4 -4
- package/dist/chris/mounts.js +9 -16
- package/dist/chris/mounts.js.map +1 -1
- package/dist/chris/navigation.d.ts +2 -3
- package/dist/chris/navigation.js +6 -20
- package/dist/chris/navigation.js.map +1 -1
- package/dist/chris/pacsResources.d.ts +259 -0
- package/dist/chris/pacsResources.js +168 -0
- package/dist/chris/pacsResources.js.map +1 -0
- package/dist/chris/promptContext.d.ts +6 -0
- package/dist/chris/promptContext.js +3 -1
- package/dist/chris/promptContext.js.map +1 -1
- package/dist/core/argumentKinds.d.ts +107 -0
- package/dist/core/argumentKinds.js +223 -0
- package/dist/core/argumentKinds.js.map +1 -0
- package/dist/core/backend.d.ts +4 -1
- package/dist/core/backend.js.map +1 -1
- package/dist/core/commandDeclaration.d.ts +453 -0
- package/dist/core/commandDeclaration.js +52 -0
- package/dist/core/commandDeclaration.js.map +1 -0
- package/dist/core/commandParse.d.ts +64 -0
- package/dist/core/commandParse.js +468 -0
- package/dist/core/commandParse.js.map +1 -0
- package/dist/core/commandRegistry.d.ts +37 -0
- package/dist/core/commandRegistry.js +100 -3
- package/dist/core/commandRegistry.js.map +1 -1
- package/dist/core/commandSchema.d.ts +32 -0
- package/dist/core/commandSchema.js +117 -0
- package/dist/core/commandSchema.js.map +1 -0
- package/dist/core/commandUsage.d.ts +62 -0
- package/dist/core/commandUsage.js +247 -0
- package/dist/core/commandUsage.js.map +1 -0
- package/dist/core/coreCommands.js +66 -214
- package/dist/core/coreCommands.js.map +1 -1
- package/dist/core/dispatch.js +15 -8
- package/dist/core/dispatch.js.map +1 -1
- package/dist/core/paths.d.ts +51 -0
- package/dist/core/paths.js +86 -2
- package/dist/core/paths.js.map +1 -1
- package/dist/core/preprocess.d.ts +10 -9
- package/dist/core/preprocess.js +10 -20
- package/dist/core/preprocess.js.map +1 -1
- package/dist/core/warmupFailures.d.ts +34 -2
- package/dist/core/warmupFailures.js +43 -2
- package/dist/core/warmupFailures.js.map +1 -1
- package/dist/lib/completer/cfsPaths.d.ts +14 -0
- package/dist/lib/completer/cfsPaths.js +91 -0
- package/dist/lib/completer/cfsPaths.js.map +1 -0
- package/dist/lib/completer/declared.d.ts +15 -0
- package/dist/lib/completer/declared.js +189 -0
- package/dist/lib/completer/declared.js.map +1 -0
- package/dist/lib/completer/index.js +33 -79
- package/dist/lib/completer/index.js.map +1 -1
- package/dist/lib/parser.d.ts +5 -8
- package/dist/lib/parser.js +2 -11
- package/dist/lib/parser.js.map +1 -1
- package/dist/lib/vfs/vfs.d.ts +2 -1
- package/dist/lib/vfs/vfs.js +9 -6
- package/dist/lib/vfs/vfs.js.map +1 -1
- package/dist/lib/wildcard.js +2 -3
- package/dist/lib/wildcard.js.map +1 -1
- package/dist/notes.json +1 -1
- package/package.json +6 -5
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { dirname, join, resolve } from 'node:path';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { backendInstalled_get } from './backend.js';
|
|
4
|
+
/** The core's kind names, which a core command may use and no other. */
|
|
5
|
+
export const CORE_KIND_NAMES = ['word', 'enum', 'int', 'number', 'cfsPath', 'hostPath', 'variable', 'job'];
|
|
6
|
+
/** A variable's name, as `set` and `${name}` spell it. */
|
|
7
|
+
const VARIABLE_NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
8
|
+
/** A joblet as a word names it: `%3`, `3`, `%%`, `%+`, `%`. */
|
|
9
|
+
const JOB_WORD = /^(?:%?\d+|%%|%\+|%)$/;
|
|
10
|
+
/** A whole number as a word writes it. */
|
|
11
|
+
const INT_WORD = /^[+-]?\d+$/;
|
|
12
|
+
/**
|
|
13
|
+
* Checks a number against an argument's bounds.
|
|
14
|
+
*
|
|
15
|
+
* @param value - The number.
|
|
16
|
+
* @param argument - The argument, with its bounds.
|
|
17
|
+
* @returns The value, or why it is out of bounds.
|
|
18
|
+
*/
|
|
19
|
+
function bounds_check(value, argument) {
|
|
20
|
+
if (argument.min !== undefined && value < argument.min)
|
|
21
|
+
return { ok: false, reason: `at least ${argument.min}` };
|
|
22
|
+
if (argument.max !== undefined && value > argument.max)
|
|
23
|
+
return { ok: false, reason: `at most ${argument.max}` };
|
|
24
|
+
return { ok: true, value };
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* A number schema with an argument's bounds.
|
|
28
|
+
*
|
|
29
|
+
* @param base - The number schema.
|
|
30
|
+
* @param argument - The argument, with its bounds.
|
|
31
|
+
* @returns The schema, bounded.
|
|
32
|
+
*/
|
|
33
|
+
function numberSchema_bound(base, argument) {
|
|
34
|
+
let schema = base;
|
|
35
|
+
if (argument.min !== undefined)
|
|
36
|
+
schema = schema.min(argument.min);
|
|
37
|
+
if (argument.max !== undefined)
|
|
38
|
+
schema = schema.max(argument.max);
|
|
39
|
+
return schema;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Reads a word as text that is not empty.
|
|
43
|
+
*
|
|
44
|
+
* @param word - The word.
|
|
45
|
+
* @param what - What it should be, for the reason.
|
|
46
|
+
* @returns The word, or why it is not one.
|
|
47
|
+
*/
|
|
48
|
+
function text_read(word, what) {
|
|
49
|
+
return word === '' ? { ok: false, reason: `an empty word is not ${what}` } : { ok: true, value: word };
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The candidates among some words that start with what was typed.
|
|
53
|
+
*
|
|
54
|
+
* @param words - The words.
|
|
55
|
+
* @param partial - What was typed.
|
|
56
|
+
* @returns Those that start with it.
|
|
57
|
+
*/
|
|
58
|
+
export function candidates_filter(words, partial) {
|
|
59
|
+
return words.filter((word) => word.startsWith(partial));
|
|
60
|
+
}
|
|
61
|
+
/** Any word at all. */
|
|
62
|
+
const WORD_KIND = {
|
|
63
|
+
name: 'word',
|
|
64
|
+
summary: 'a word',
|
|
65
|
+
word_read: (word) => ({ ok: true, value: word }),
|
|
66
|
+
schema_make: () => z.string(),
|
|
67
|
+
};
|
|
68
|
+
/** One of the words an argument lists. */
|
|
69
|
+
const ENUM_KIND = {
|
|
70
|
+
name: 'enum',
|
|
71
|
+
summary: 'one of the listed words',
|
|
72
|
+
word_read: (word, argument) => {
|
|
73
|
+
const values = argument.values ?? [];
|
|
74
|
+
return values.includes(word) ? { ok: true, value: word } : { ok: false, reason: `valid: ${values.join(', ')}` };
|
|
75
|
+
},
|
|
76
|
+
schema_make: (argument) => z.enum([...(argument.values ?? [])]),
|
|
77
|
+
words_complete: async (partial, argument) => candidates_filter(argument.values ?? [], partial),
|
|
78
|
+
};
|
|
79
|
+
/** A whole number. */
|
|
80
|
+
const INT_KIND = {
|
|
81
|
+
name: 'int',
|
|
82
|
+
summary: 'a whole number',
|
|
83
|
+
numeric: true,
|
|
84
|
+
word_read: (word, argument) => INT_WORD.test(word) ? bounds_check(Number(word), argument) : { ok: false, reason: 'not a whole number' },
|
|
85
|
+
schema_make: (argument) => numberSchema_bound(z.number().int(), argument),
|
|
86
|
+
};
|
|
87
|
+
/** A number, whole or not. */
|
|
88
|
+
const NUMBER_KIND = {
|
|
89
|
+
name: 'number',
|
|
90
|
+
summary: 'a number',
|
|
91
|
+
numeric: true,
|
|
92
|
+
word_read: (word, argument) => {
|
|
93
|
+
const value = word.trim() === '' ? Number.NaN : Number(word);
|
|
94
|
+
return Number.isFinite(value) ? bounds_check(value, argument) : { ok: false, reason: 'not a number' };
|
|
95
|
+
},
|
|
96
|
+
schema_make: (argument) => numberSchema_bound(z.number(), argument),
|
|
97
|
+
};
|
|
98
|
+
/** A path in ChRIS's filesystem (CFS), as the session resolves it. */
|
|
99
|
+
const CFS_PATH_KIND = {
|
|
100
|
+
name: 'cfsPath',
|
|
101
|
+
summary: "a path in ChRIS's filesystem",
|
|
102
|
+
path: true,
|
|
103
|
+
word_read: (word) => text_read(word, 'a path'),
|
|
104
|
+
schema_make: () => z.string().min(1),
|
|
105
|
+
words_complete: async (partial) => {
|
|
106
|
+
const { cfsPaths_complete } = await import('../lib/completer/cfsPaths.js');
|
|
107
|
+
return cfsPaths_complete(partial);
|
|
108
|
+
},
|
|
109
|
+
words_expand: async (words) => {
|
|
110
|
+
const { shellWords_expand } = await import('../lib/wildcard.js');
|
|
111
|
+
const { errorStack } = await import('@fnndsc/fond');
|
|
112
|
+
const expanded = await shellWords_expand(words, () => true);
|
|
113
|
+
if (expanded.ok)
|
|
114
|
+
return { ok: true, words: expanded.value };
|
|
115
|
+
const reason = errorStack.stack_pop()?.message;
|
|
116
|
+
return { ok: false, reason: reason ?? 'a wildcard could not be expanded' };
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* The folders and files under a host folder that start with a name, for
|
|
121
|
+
* completion of a host path.
|
|
122
|
+
*
|
|
123
|
+
* The disk is loaded when asked, so parsing a line loads no filesystem.
|
|
124
|
+
*
|
|
125
|
+
* @param partial - The path typed so far.
|
|
126
|
+
* @returns The candidates, a folder ending in `/`; none when the folder cannot be read.
|
|
127
|
+
*/
|
|
128
|
+
async function hostPaths_list(partial) {
|
|
129
|
+
const { readdirSync } = await import('node:fs');
|
|
130
|
+
const { homedir } = await import('node:os');
|
|
131
|
+
const expanded = partial.startsWith('~/') ? join(homedir(), partial.slice(2)) : partial;
|
|
132
|
+
const folder = expanded.endsWith('/') ? expanded : dirname(expanded);
|
|
133
|
+
const typedFolder = partial.endsWith('/') ? partial : partial.slice(0, partial.lastIndexOf('/') + 1);
|
|
134
|
+
const prefix = expanded.endsWith('/') ? '' : expanded.slice(expanded.lastIndexOf('/') + 1);
|
|
135
|
+
let entries = [];
|
|
136
|
+
try {
|
|
137
|
+
entries = readdirSync(resolve(folder === '' ? '.' : folder), { withFileTypes: true });
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
return [];
|
|
141
|
+
}
|
|
142
|
+
return entries
|
|
143
|
+
.filter((entry) => entry.name.startsWith(prefix))
|
|
144
|
+
.map((entry) => `${typedFolder}${entry.name}${entry.isDirectory() ? '/' : ''}`)
|
|
145
|
+
.sort();
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* A path on the host the operator's surface sits on. It completes from the
|
|
149
|
+
* engine's own disk only when that disk is the surface's: under a daemon the
|
|
150
|
+
* engine's disk is a machine nobody at the surface sits at.
|
|
151
|
+
*/
|
|
152
|
+
const HOST_PATH_KIND = {
|
|
153
|
+
name: 'hostPath',
|
|
154
|
+
summary: "a path on this machine's filesystem",
|
|
155
|
+
path: true,
|
|
156
|
+
word_read: (word) => text_read(word, 'a path'),
|
|
157
|
+
schema_make: () => z.string().min(1),
|
|
158
|
+
words_complete: async (partial) => {
|
|
159
|
+
const { surface_get } = await import('./surface.js');
|
|
160
|
+
return surface_get().capabilities.engineFilesystem ? hostPaths_list(partial) : [];
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
/** A session variable's name. */
|
|
164
|
+
const VARIABLE_KIND = {
|
|
165
|
+
name: 'variable',
|
|
166
|
+
summary: 'a variable name',
|
|
167
|
+
word_read: (word) => VARIABLE_NAME.test(word) ? { ok: true, value: word } : { ok: false, reason: 'not a variable name' },
|
|
168
|
+
schema_make: () => z.string().regex(VARIABLE_NAME),
|
|
169
|
+
words_complete: async (partial) => {
|
|
170
|
+
const { variables_list } = await import('./variables.js');
|
|
171
|
+
return candidates_filter(variables_list().map((variable) => variable.name), partial);
|
|
172
|
+
},
|
|
173
|
+
};
|
|
174
|
+
/** A joblet: `%3`, `3`, or the most recent, `%%`. */
|
|
175
|
+
const JOB_KIND = {
|
|
176
|
+
name: 'job',
|
|
177
|
+
summary: 'a job: %N, or %% for the most recent',
|
|
178
|
+
word_read: (word) => JOB_WORD.test(word) ? { ok: true, value: word } : { ok: false, reason: 'a job is %N, or %% for the most recent' },
|
|
179
|
+
schema_make: () => z.string().regex(JOB_WORD),
|
|
180
|
+
words_complete: async (partial) => {
|
|
181
|
+
const { joblets_running } = await import('./joblets.js');
|
|
182
|
+
return candidates_filter(joblets_running().map((joblet) => `%${joblet.number}`), partial);
|
|
183
|
+
},
|
|
184
|
+
};
|
|
185
|
+
/** The core's kinds, by name. */
|
|
186
|
+
const CORE_KINDS = new Map([WORD_KIND, ENUM_KIND, INT_KIND, NUMBER_KIND, CFS_PATH_KIND, HOST_PATH_KIND, VARIABLE_KIND, JOB_KIND]
|
|
187
|
+
.map((kind) => [kind.name, kind]));
|
|
188
|
+
/**
|
|
189
|
+
* Finds a kind: the core's, then the installed backend's.
|
|
190
|
+
*
|
|
191
|
+
* @param name - The kind's name.
|
|
192
|
+
* @returns The kind, or null when neither has it.
|
|
193
|
+
*
|
|
194
|
+
* @example
|
|
195
|
+
* ```ts
|
|
196
|
+
* argumentKind_get('cfsPath')?.path; // true
|
|
197
|
+
* ```
|
|
198
|
+
*/
|
|
199
|
+
export function argumentKind_get(name) {
|
|
200
|
+
const core = CORE_KINDS.get(name);
|
|
201
|
+
if (core !== undefined)
|
|
202
|
+
return core;
|
|
203
|
+
return backendInstalled_get()?.argumentKinds?.find((kind) => kind.name === name) ?? null;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Checks one word against its argument's kind.
|
|
207
|
+
*
|
|
208
|
+
* @param argument - The argument's grammar.
|
|
209
|
+
* @param word - The word.
|
|
210
|
+
* @returns The value, or why the word is not one (an unregistered kind says so).
|
|
211
|
+
*
|
|
212
|
+
* @example
|
|
213
|
+
* ```ts
|
|
214
|
+
* argumentWord_check({ kind: 'enum', values: ['a', 'b'] }, 'c'); // { ok: false, reason: 'valid: a, b' }
|
|
215
|
+
* ```
|
|
216
|
+
*/
|
|
217
|
+
export function argumentWord_check(argument, word) {
|
|
218
|
+
const kind = argumentKind_get(argument.kind);
|
|
219
|
+
if (kind === null)
|
|
220
|
+
return { ok: false, reason: `this session has no argument kind ${argument.kind}` };
|
|
221
|
+
return kind.word_read(word, argument);
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=argumentKinds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"argumentKinds.js","sourceRoot":"","sources":["../../src/core/argumentKinds.ts"],"names":[],"mappings":"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"}
|
package/dist/core/backend.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ import type { PromptContext, CubeTelemetry, JobsStateTelemetry, CommandEnvelope,
|
|
|
17
17
|
import type { ReferenceValue } from '../lib/parser.js';
|
|
18
18
|
import type { ListingLook, VFSDispatcher } from '@fnndsc/fond';
|
|
19
19
|
import type { ListingItem } from '@fnndsc/menu';
|
|
20
|
+
import type { ArgumentKind } from './argumentKinds.js';
|
|
20
21
|
/**
|
|
21
22
|
* Who a session is and where: the input a host keys the session by (calypso's
|
|
22
23
|
* berth name is `user@where`, normalised).
|
|
@@ -212,7 +213,7 @@ export interface BackendFilesystem {
|
|
|
212
213
|
* cleared): a listing that fails says the path was walked as written.
|
|
213
214
|
*/
|
|
214
215
|
readonly unreadLinks_take?: () => Promise<string[]>;
|
|
215
|
-
/** A
|
|
216
|
+
/** A store path with the store's own links followed, at any depth (ChRIS: `.chrislink`s); absent, the path as given. `storePath_resolve` asks it for every read and listing, and globbing for a folder. */
|
|
216
217
|
readonly path_physical?: (path: string) => Promise<string>;
|
|
217
218
|
/** Paths that are always folders, entered without asking (beside the mounts and the folders above them). */
|
|
218
219
|
readonly structural?: ReadonlyArray<string>;
|
|
@@ -321,6 +322,8 @@ export interface Backend {
|
|
|
321
322
|
readonly vfs?: BackendFilesystem;
|
|
322
323
|
/** What it adds to completion. */
|
|
323
324
|
readonly completion?: BackendCompletion;
|
|
325
|
+
/** The argument kinds its commands declare beside the core's (ChRIS: an anchor's name); a kind is found among the core's first. */
|
|
326
|
+
readonly argumentKinds?: ReadonlyArray<ArgumentKind>;
|
|
324
327
|
/** How its listings show: the kinds it lists beside the core's, and how a name is coloured. */
|
|
325
328
|
readonly listingLook?: ListingLook;
|
|
326
329
|
/** Whether the backend is debugging (error messages keep their function stamp), or null before it can say. */
|
package/dist/core/backend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/core/backend.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/core/backend.ts"],"names":[],"mappings":"AA+VA,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"}
|