@fnndsc/brasa 0.33.4 → 0.35.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.
- package/dist/api/models.d.ts +1 -2
- package/dist/api/models.js.map +1 -1
- package/dist/buildinfo.json +1 -1
- package/dist/builtins/debug.d.ts +1 -1
- package/dist/builtins/debug.js +12 -8
- package/dist/builtins/debug.js.map +1 -1
- package/dist/builtins/executable.d.ts +1 -1
- package/dist/builtins/executable.js +2 -1
- package/dist/builtins/executable.js.map +1 -1
- package/dist/builtins/fs/acl.d.ts +1 -16
- package/dist/builtins/fs/acl.js +3 -1
- package/dist/builtins/fs/acl.js.map +1 -1
- package/dist/builtins/fs/archive.js +1 -1
- package/dist/builtins/fs/archive.js.map +1 -1
- package/dist/builtins/fs/cat.d.ts +1 -1
- package/dist/builtins/fs/cat.js +47 -7
- package/dist/builtins/fs/cat.js.map +1 -1
- package/dist/builtins/fs/cd.d.ts +1 -19
- package/dist/builtins/fs/cd.js +45 -94
- package/dist/builtins/fs/cd.js.map +1 -1
- package/dist/builtins/fs/configWrite.d.ts +1 -1
- package/dist/builtins/fs/configWrite.js +1 -1
- package/dist/builtins/fs/configWrite.js.map +1 -1
- package/dist/builtins/fs/cp.d.ts +1 -1
- package/dist/builtins/fs/cp.js +19 -13
- package/dist/builtins/fs/cp.js.map +1 -1
- package/dist/builtins/fs/download.d.ts +1 -1
- package/dist/builtins/fs/download.js +2 -1
- package/dist/builtins/fs/download.js.map +1 -1
- package/dist/builtins/fs/du.d.ts +10 -1
- package/dist/builtins/fs/du.js +36 -2
- package/dist/builtins/fs/du.js.map +1 -1
- package/dist/builtins/fs/edit.d.ts +1 -1
- package/dist/builtins/fs/edit.js +10 -4
- package/dist/builtins/fs/edit.js.map +1 -1
- package/dist/builtins/fs/entries.d.ts +43 -0
- package/dist/builtins/fs/entries.js +81 -0
- package/dist/builtins/fs/entries.js.map +1 -0
- package/dist/builtins/fs/ls.d.ts +1 -2
- package/dist/builtins/fs/ls.js +70 -10
- package/dist/builtins/fs/ls.js.map +1 -1
- package/dist/builtins/fs/mkdir.d.ts +1 -1
- package/dist/builtins/fs/mkdir.js +29 -20
- package/dist/builtins/fs/mkdir.js.map +1 -1
- package/dist/builtins/fs/mv.d.ts +1 -1
- package/dist/builtins/fs/mv.js +40 -23
- package/dist/builtins/fs/mv.js.map +1 -1
- package/dist/builtins/fs/pull.d.ts +1 -1
- package/dist/builtins/fs/pull.js +2 -1
- package/dist/builtins/fs/pull.js.map +1 -1
- package/dist/builtins/fs/pwd.d.ts +1 -1
- package/dist/builtins/fs/pwd.js +9 -45
- package/dist/builtins/fs/pwd.js.map +1 -1
- package/dist/builtins/fs/rm.d.ts +1 -22
- package/dist/builtins/fs/rm.js +33 -58
- package/dist/builtins/fs/rm.js.map +1 -1
- package/dist/builtins/fs/rmdir.d.ts +1 -1
- package/dist/builtins/fs/rmdir.js +21 -40
- package/dist/builtins/fs/rmdir.js.map +1 -1
- package/dist/builtins/fs/touch.d.ts +1 -1
- package/dist/builtins/fs/touch.js +64 -25
- package/dist/builtins/fs/touch.js.map +1 -1
- package/dist/builtins/fs/tree.d.ts +1 -1
- package/dist/builtins/fs/tree.js +26 -3
- package/dist/builtins/fs/tree.js.map +1 -1
- package/dist/builtins/fs/upload.d.ts +1 -1
- package/dist/builtins/fs/upload.js +3 -1
- package/dist/builtins/fs/upload.js.map +1 -1
- package/dist/builtins/fs/xattr.d.ts +1 -10
- package/dist/builtins/fs/xattr.js +3 -1
- package/dist/builtins/fs/xattr.js.map +1 -1
- package/dist/builtins/games/bytes.d.ts +1 -1
- package/dist/builtins/games/bytes.js +2 -1
- package/dist/builtins/games/bytes.js.map +1 -1
- package/dist/builtins/games/chimes.d.ts +1 -13
- package/dist/builtins/games/chimes.js +1 -1
- package/dist/builtins/games/chimes.js.map +1 -1
- package/dist/builtins/games/chrislab.d.ts +33 -0
- package/dist/builtins/games/chrislab.js +117 -0
- package/dist/builtins/games/chrislab.js.map +1 -0
- package/dist/builtins/games/cowsay.d.ts +1 -11
- package/dist/builtins/games/cowsay.js +1 -1
- package/dist/builtins/games/cowsay.js.map +1 -1
- package/dist/builtins/games/figlet.d.ts +1 -11
- package/dist/builtins/games/figlet.js +1 -1
- package/dist/builtins/games/figlet.js.map +1 -1
- package/dist/builtins/games/lab.d.ts +1 -43
- package/dist/builtins/games/lab.js +7 -111
- package/dist/builtins/games/lab.js.map +1 -1
- package/dist/builtins/games/lolcat.d.ts +1 -11
- package/dist/builtins/games/lolcat.js +1 -1
- package/dist/builtins/games/lolcat.js.map +1 -1
- package/dist/builtins/games/morse.d.ts +1 -10
- package/dist/builtins/games/morse.js +1 -1
- package/dist/builtins/games/morse.js.map +1 -1
- package/dist/builtins/games/numbers.d.ts +1 -10
- package/dist/builtins/games/numbers.js +1 -1
- package/dist/builtins/games/numbers.js.map +1 -1
- package/dist/builtins/games/play.d.ts +1 -11
- package/dist/builtins/games/play.js +1 -1
- package/dist/builtins/games/play.js.map +1 -1
- package/dist/builtins/games/qr.d.ts +1 -12
- package/dist/builtins/games/qr.js +1 -1
- package/dist/builtins/games/qr.js.map +1 -1
- package/dist/builtins/games/show.d.ts +1 -12
- package/dist/builtins/games/show.js +1 -1
- package/dist/builtins/games/show.js.map +1 -1
- package/dist/builtins/games/sky.d.ts +1 -11
- package/dist/builtins/games/sky.js +1 -1
- package/dist/builtins/games/sky.js.map +1 -1
- package/dist/builtins/games/text.d.ts +1 -10
- package/dist/builtins/games/text.js +1 -1
- package/dist/builtins/games/text.js.map +1 -1
- package/dist/builtins/games/wtf.d.ts +1 -9
- package/dist/builtins/games/wtf.js +1 -1
- package/dist/builtins/games/wtf.js.map +1 -1
- package/dist/builtins/help.d.ts +18 -15
- package/dist/builtins/help.js +51 -1200
- package/dist/builtins/help.js.map +1 -1
- package/dist/builtins/net/connect.d.ts +1 -1
- package/dist/builtins/net/connect.js +2 -1
- package/dist/builtins/net/connect.js.map +1 -1
- package/dist/builtins/net/cubepath.d.ts +1 -1
- package/dist/builtins/net/cubepath.js +1 -1
- package/dist/builtins/net/cubepath.js.map +1 -1
- package/dist/builtins/net/logout.d.ts +1 -1
- package/dist/builtins/net/logout.js +1 -1
- package/dist/builtins/net/logout.js.map +1 -1
- package/dist/builtins/net/netstat.d.ts +1 -1
- package/dist/builtins/net/netstat.js +1 -2
- package/dist/builtins/net/netstat.js.map +1 -1
- package/dist/builtins/net/pacs.d.ts +1 -1
- package/dist/builtins/net/pacs.js +3 -2
- package/dist/builtins/net/pacs.js.map +1 -1
- package/dist/builtins/net/pacsUtils.js +2 -1
- package/dist/builtins/net/pacsUtils.js.map +1 -1
- package/dist/builtins/net/query.csv.js +1 -1
- package/dist/builtins/net/query.csv.js.map +1 -1
- package/dist/builtins/net/query.d.ts +2 -2
- package/dist/builtins/net/query.fanout.d.ts +1 -1
- package/dist/builtins/net/query.fanout.js +1 -1
- package/dist/builtins/net/query.fanout.js.map +1 -1
- package/dist/builtins/net/query.js +3 -2
- package/dist/builtins/net/query.js.map +1 -1
- package/dist/builtins/net/status.d.ts +1 -1
- package/dist/builtins/net/status.js +2 -1
- package/dist/builtins/net/status.js.map +1 -1
- package/dist/builtins/parametersofplugin.d.ts +1 -1
- package/dist/builtins/parametersofplugin.js +1 -1
- package/dist/builtins/parametersofplugin.js.map +1 -1
- package/dist/builtins/pluginExecute.d.ts +1 -1
- package/dist/builtins/pluginExecute.js +3 -1
- package/dist/builtins/pluginExecute.js.map +1 -1
- package/dist/builtins/proc.d.ts +1 -2
- package/dist/builtins/proc.js +4 -3
- package/dist/builtins/proc.js.map +1 -1
- package/dist/builtins/res/compute.d.ts +1 -1
- package/dist/builtins/res/compute.js +2 -1
- package/dist/builtins/res/compute.js.map +1 -1
- package/dist/builtins/res/dicom.d.ts +2 -2
- package/dist/builtins/res/dicom.js +1 -2
- package/dist/builtins/res/dicom.js.map +1 -1
- package/dist/builtins/res/expect.d.ts +1 -1
- package/dist/builtins/res/expect.js +2 -1
- package/dist/builtins/res/expect.js.map +1 -1
- package/dist/builtins/res/feed.d.ts +1 -1
- package/dist/builtins/res/feed.diagram.d.ts +1 -2
- package/dist/builtins/res/feed.diagram.js +2 -2
- package/dist/builtins/res/feed.diagram.js.map +1 -1
- package/dist/builtins/res/feed.js +3 -1
- package/dist/builtins/res/feed.js.map +1 -1
- package/dist/builtins/res/feed.tree.d.ts +1 -1
- package/dist/builtins/res/feed.tree.js +1 -1
- package/dist/builtins/res/feed.tree.js.map +1 -1
- package/dist/builtins/res/files.d.ts +1 -1
- package/dist/builtins/res/files.js +1 -1
- package/dist/builtins/res/files.js.map +1 -1
- package/dist/builtins/res/gather.d.ts +1 -1
- package/dist/builtins/res/gather.js +1 -1
- package/dist/builtins/res/gather.js.map +1 -1
- package/dist/builtins/res/gather.store.js.map +1 -1
- package/dist/builtins/res/group.d.ts +1 -1
- package/dist/builtins/res/group.js +1 -1
- package/dist/builtins/res/group.js.map +1 -1
- package/dist/builtins/res/image.d.ts +1 -20
- package/dist/builtins/res/image.js +1 -2
- package/dist/builtins/res/image.js.map +1 -1
- package/dist/builtins/res/pipeline.d.ts +1 -1
- package/dist/builtins/res/pipeline.diagram.d.ts +1 -1
- package/dist/builtins/res/pipeline.diagram.js +2 -2
- package/dist/builtins/res/pipeline.diagram.js.map +1 -1
- package/dist/builtins/res/pipeline.js +3 -1
- package/dist/builtins/res/pipeline.js.map +1 -1
- package/dist/builtins/res/play.d.ts +1 -1
- package/dist/builtins/res/play.js +2 -1
- package/dist/builtins/res/play.js.map +1 -1
- package/dist/builtins/res/plugin.d.ts +1 -1
- package/dist/builtins/res/plugin.info.d.ts +1 -1
- package/dist/builtins/res/plugin.info.js +2 -1
- package/dist/builtins/res/plugin.info.js.map +1 -1
- package/dist/builtins/res/plugin.js +2 -2
- package/dist/builtins/res/plugin.js.map +1 -1
- package/dist/builtins/res/plugininstance.d.ts +1 -1
- package/dist/builtins/res/plugininstance.js +1 -1
- package/dist/builtins/res/plugininstance.js.map +1 -1
- package/dist/builtins/res/pluginmeta.d.ts +1 -1
- package/dist/builtins/res/pluginmeta.js +1 -1
- package/dist/builtins/res/pluginmeta.js.map +1 -1
- package/dist/builtins/res/record.d.ts +1 -1
- package/dist/builtins/res/record.js +1 -1
- package/dist/builtins/res/record.js.map +1 -1
- package/dist/builtins/res/tag.d.ts +1 -1
- package/dist/builtins/res/tag.js +1 -1
- package/dist/builtins/res/tag.js.map +1 -1
- package/dist/builtins/res/user.d.ts +1 -1
- package/dist/builtins/res/user.js +2 -1
- package/dist/builtins/res/user.js.map +1 -1
- package/dist/builtins/res/workflow.d.ts +1 -1
- package/dist/builtins/res/workflow.js +1 -1
- package/dist/builtins/res/workflow.js.map +1 -1
- package/dist/builtins/store.d.ts +1 -1
- package/dist/builtins/store.js +2 -1
- package/dist/builtins/store.js.map +1 -1
- package/dist/builtins/sys/cal.d.ts +1 -12
- package/dist/builtins/sys/cal.js +1 -1
- package/dist/builtins/sys/cal.js.map +1 -1
- package/dist/builtins/sys/context.d.ts +1 -1
- package/dist/builtins/sys/context.js +1 -1
- package/dist/builtins/sys/context.js.map +1 -1
- package/dist/builtins/sys/date.d.ts +1 -12
- package/dist/builtins/sys/date.js +1 -1
- package/dist/builtins/sys/date.js.map +1 -1
- package/dist/builtins/sys/fortune.d.ts +1 -11
- package/dist/builtins/sys/fortune.js +1 -1
- package/dist/builtins/sys/fortune.js.map +1 -1
- package/dist/builtins/sys/motd.d.ts +1 -18
- package/dist/builtins/sys/motd.js +3 -3
- package/dist/builtins/sys/motd.js.map +1 -1
- package/dist/builtins/sys/notes.d.ts +1 -2
- package/dist/builtins/sys/notes.js +1 -2
- package/dist/builtins/sys/notes.js.map +1 -1
- package/dist/builtins/sys/physicalmode.d.ts +1 -1
- package/dist/builtins/sys/physicalmode.js +1 -1
- package/dist/builtins/sys/physicalmode.js.map +1 -1
- package/dist/builtins/sys/timing.d.ts +1 -1
- package/dist/builtins/sys/timing.js +1 -1
- package/dist/builtins/sys/timing.js.map +1 -1
- package/dist/builtins/sys/version.d.ts +1 -7
- package/dist/builtins/sys/version.js +1 -1
- package/dist/builtins/sys/version.js.map +1 -1
- package/dist/builtins/sys/weather.d.ts +1 -1
- package/dist/builtins/sys/weather.js +1 -1
- package/dist/builtins/sys/weather.js.map +1 -1
- package/dist/builtins/sys/whoami.d.ts +1 -1
- package/dist/builtins/sys/whoami.js +2 -1
- package/dist/builtins/sys/whoami.js.map +1 -1
- package/dist/builtins/utils.d.ts +2 -19
- package/dist/builtins/utils.js +5 -55
- package/dist/builtins/utils.js.map +1 -1
- package/dist/builtins/wildcard.d.ts +4 -53
- package/dist/builtins/wildcard.js +3 -177
- package/dist/builtins/wildcard.js.map +1 -1
- package/dist/chris/backend.d.ts +22 -0
- package/dist/chris/backend.js +102 -0
- package/dist/chris/backend.js.map +1 -0
- package/dist/chris/binEntry.js.map +1 -0
- package/dist/chris/binMount.d.ts +60 -0
- package/dist/chris/binMount.js +154 -0
- package/dist/chris/binMount.js.map +1 -0
- package/dist/{core → chris}/chiliDelegate.d.ts +1 -1
- package/dist/{core → chris}/chiliDelegate.js +1 -1
- package/dist/chris/chiliDelegate.js.map +1 -0
- package/dist/chris/chrisCommands.d.ts +14 -0
- package/dist/chris/chrisCommands.js +168 -0
- package/dist/chris/chrisCommands.js.map +1 -0
- package/dist/chris/commandFallback.d.ts +3 -0
- package/dist/chris/commandFallback.js +113 -0
- package/dist/chris/commandFallback.js.map +1 -0
- package/dist/chris/completion.d.ts +3 -0
- package/dist/chris/completion.js +100 -0
- package/dist/chris/completion.js.map +1 -0
- package/dist/chris/connect.js.map +1 -0
- package/dist/chris/debug.d.ts +10 -0
- package/dist/chris/debug.js +9 -0
- package/dist/chris/debug.js.map +1 -0
- package/dist/chris/files.d.ts +16 -0
- package/dist/chris/files.js +141 -0
- package/dist/chris/files.js.map +1 -0
- package/dist/chris/filesystem.d.ts +3 -0
- package/dist/chris/filesystem.js +57 -0
- package/dist/chris/filesystem.js.map +1 -0
- package/dist/chris/help.d.ts +16 -0
- package/dist/chris/help.js +1193 -0
- package/dist/chris/help.js.map +1 -0
- package/dist/chris/jobsState.js.map +1 -0
- package/dist/chris/mounts.d.ts +7 -0
- package/dist/chris/mounts.js +34 -0
- package/dist/chris/mounts.js.map +1 -0
- package/dist/chris/navigation.d.ts +40 -0
- package/dist/chris/navigation.js +160 -0
- package/dist/chris/navigation.js.map +1 -0
- package/dist/{core → chris}/promptContext.d.ts +2 -2
- package/dist/{core → chris}/promptContext.js +3 -3
- package/dist/chris/promptContext.js.map +1 -0
- package/dist/chris/references.d.ts +14 -0
- package/dist/chris/references.js +113 -0
- package/dist/chris/references.js.map +1 -0
- package/dist/chris/tasks.d.ts +31 -0
- package/dist/chris/tasks.js +55 -0
- package/dist/chris/tasks.js.map +1 -0
- package/dist/chris/universeLayout.js.map +1 -0
- package/dist/chris/watch.d.ts +3 -0
- package/dist/chris/watch.js +15 -0
- package/dist/chris/watch.js.map +1 -0
- package/dist/core/answerKinds.d.ts +32 -0
- package/dist/core/answerKinds.js +56 -0
- package/dist/core/answerKinds.js.map +1 -0
- package/dist/core/backend.d.ts +261 -0
- package/dist/core/backend.js +32 -0
- package/dist/core/backend.js.map +1 -0
- package/dist/core/commandOrder.d.ts +16 -0
- package/dist/core/commandOrder.js +17 -0
- package/dist/core/commandOrder.js.map +1 -0
- package/dist/core/commandRegistry.d.ts +120 -0
- package/dist/core/commandRegistry.js +124 -0
- package/dist/core/commandRegistry.js.map +1 -0
- package/dist/core/coreCommands.d.ts +16 -0
- package/dist/core/coreCommands.js +156 -0
- package/dist/core/coreCommands.js.map +1 -0
- package/dist/core/dispatch.d.ts +2 -19
- package/dist/core/dispatch.js +86 -447
- package/dist/core/dispatch.js.map +1 -1
- package/dist/core/elevation.d.ts +5 -5
- package/dist/core/elevation.js +12 -7
- package/dist/core/elevation.js.map +1 -1
- package/dist/core/engine.d.ts +28 -18
- package/dist/core/engine.js +44 -119
- package/dist/core/engine.js.map +1 -1
- package/dist/core/errorText.d.ts +14 -0
- package/dist/core/errorText.js +26 -0
- package/dist/core/errorText.js.map +1 -0
- package/dist/core/expansion.d.ts +0 -2
- package/dist/core/expansion.js +43 -101
- package/dist/core/expansion.js.map +1 -1
- package/dist/core/fileRefusal.d.ts +4 -15
- package/dist/core/fileRefusal.js +4 -26
- package/dist/core/fileRefusal.js.map +1 -1
- package/dist/core/filesystem.d.ts +27 -0
- package/dist/core/filesystem.js +45 -0
- package/dist/core/filesystem.js.map +1 -0
- package/dist/core/handlerRun.d.ts +30 -0
- package/dist/core/handlerRun.js +34 -0
- package/dist/core/handlerRun.js.map +1 -0
- package/dist/core/paths.d.ts +18 -0
- package/dist/core/paths.js +49 -0
- package/dist/core/paths.js.map +1 -0
- package/dist/core/preprocess.d.ts +1 -1
- package/dist/core/preprocess.js +1 -1
- package/dist/core/preprocess.js.map +1 -1
- package/dist/core/sink.d.ts +3 -25
- package/dist/core/sink.js +0 -8
- package/dist/core/sink.js.map +1 -1
- package/dist/core/surface.d.ts +3 -179
- package/dist/core/surface.js.map +1 -1
- package/dist/core/taskWatch.d.ts +42 -0
- package/dist/core/taskWatch.js +142 -0
- package/dist/core/taskWatch.js.map +1 -0
- package/dist/core/tasks.d.ts +46 -0
- package/dist/core/tasks.js +102 -0
- package/dist/core/tasks.js.map +1 -0
- package/dist/core.d.ts +22 -0
- package/dist/core.js +23 -0
- package/dist/core.js.map +1 -0
- package/dist/index.d.ts +8 -5
- package/dist/index.js +17 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/completer/index.js +41 -99
- package/dist/lib/completer/index.js.map +1 -1
- package/dist/lib/prefetch.js +2 -2
- package/dist/lib/prefetch.js.map +1 -1
- package/dist/lib/vfs/listing.d.ts +1 -1
- package/dist/lib/vfs/providers/static.d.ts +15 -6
- package/dist/lib/vfs/providers/static.js +20 -43
- package/dist/lib/vfs/providers/static.js.map +1 -1
- package/dist/lib/vfs/providers/static_content.d.ts +4 -4
- package/dist/lib/vfs/providers/static_content.js +4 -24
- package/dist/lib/vfs/providers/static_content.js.map +1 -1
- package/dist/lib/vfs/vfs.d.ts +11 -2
- package/dist/lib/vfs/vfs.js +90 -51
- package/dist/lib/vfs/vfs.js.map +1 -1
- package/dist/lib/wildcard.d.ts +57 -0
- package/dist/lib/wildcard.js +183 -0
- package/dist/lib/wildcard.js.map +1 -0
- package/dist/notes.json +1 -1
- package/dist/null/backend.d.ts +29 -0
- package/dist/null/backend.js +41 -0
- package/dist/null/backend.js.map +1 -0
- package/dist/session/answer.d.ts +4 -4
- package/dist/session/answer.js +0 -2
- package/dist/session/answer.js.map +1 -1
- package/dist/session/index.d.ts +12 -10
- package/dist/session/index.js +9 -38
- package/dist/session/index.js.map +1 -1
- package/package.json +12 -6
- package/dist/builtins/fs/folderExists.d.ts +0 -8
- package/dist/builtins/fs/folderExists.js +0 -67
- package/dist/builtins/fs/folderExists.js.map +0 -1
- package/dist/command-keys.d.ts +0 -8
- package/dist/command-keys.js +0 -37
- package/dist/command-keys.js.map +0 -1
- package/dist/core/chiliDelegate.js.map +0 -1
- package/dist/core/connect.js.map +0 -1
- package/dist/core/jobsState.js.map +0 -1
- package/dist/core/promptContext.js.map +0 -1
- package/dist/lib/vfs/providers/binEntry.js.map +0 -1
- package/dist/universe/universeLayout.js.map +0 -1
- /package/dist/{lib/vfs/providers → chris}/binEntry.d.ts +0 -0
- /package/dist/{lib/vfs/providers → chris}/binEntry.js +0 -0
- /package/dist/{core → chris}/connect.d.ts +0 -0
- /package/dist/{core → chris}/connect.js +0 -0
- /package/dist/{core → chris}/jobsState.d.ts +0 -0
- /package/dist/{core → chris}/jobsState.js +0 -0
- /package/dist/{universe → chris}/universeLayout.d.ts +0 -0
- /package/dist/{universe → chris}/universeLayout.js +0 -0
package/dist/builtins/utils.js
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* @file Builtin Utilities
|
|
3
|
-
* Pure functions for argument parsing and path resolution logic.
|
|
4
|
-
*/
|
|
5
|
-
import * as path from 'path';
|
|
6
|
-
import { context_getSingle } from '@fnndsc/salsa';
|
|
7
|
-
import { session } from '../session/index.js';
|
|
1
|
+
import { path_resolveFrom } from '../core/paths.js';
|
|
8
2
|
/**
|
|
9
3
|
* Bridges POSIX-parsed builtin arguments to chili's CLI option bag.
|
|
10
4
|
*
|
|
@@ -112,37 +106,10 @@ export function homePath_of(user) {
|
|
|
112
106
|
return user ? `/home/${user}` : '/';
|
|
113
107
|
}
|
|
114
108
|
export function path_resolvePure(inputPath, context) {
|
|
115
|
-
|
|
116
|
-
const { user, cwd } = context;
|
|
117
|
-
if (inputPath.startsWith('~')) {
|
|
118
|
-
const home = homePath_of(user);
|
|
119
|
-
if (inputPath === '~' || inputPath === '~/') {
|
|
120
|
-
resolved = home;
|
|
121
|
-
}
|
|
122
|
-
else if (inputPath.startsWith('~/')) {
|
|
123
|
-
resolved = path.posix.join(home, inputPath.substring(2));
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
if (!resolved.startsWith('/')) {
|
|
127
|
-
resolved = path.posix.resolve(cwd, resolved);
|
|
128
|
-
}
|
|
129
|
-
// Normalize
|
|
130
|
-
if (resolved.length > 1 && resolved.endsWith('/')) {
|
|
131
|
-
resolved = resolved.slice(0, -1);
|
|
132
|
-
}
|
|
133
|
-
return resolved;
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Resolves a path argument, handling `~` expansion and relative paths.
|
|
137
|
-
* @param inputPath - The path to resolve.
|
|
138
|
-
* @returns The absolute path.
|
|
139
|
-
*/
|
|
140
|
-
export async function path_resolve(inputPath) {
|
|
141
|
-
const context = await context_getSingle();
|
|
142
|
-
const user = context.user;
|
|
143
|
-
const cwd = await session.getCWD();
|
|
144
|
-
return path_resolvePure(inputPath, { user, cwd });
|
|
109
|
+
return path_resolveFrom(inputPath, homePath_of(context.user), context.cwd);
|
|
145
110
|
}
|
|
111
|
+
// A path argument as the session means it: `~` and relative paths resolved.
|
|
112
|
+
export { path_resolve } from '../core/paths.js';
|
|
146
113
|
/**
|
|
147
114
|
* Resolves links in a path without using PathMapper (for physical mode).
|
|
148
115
|
* Checks each component to see if it's a link and follows it.
|
|
@@ -183,22 +150,5 @@ export async function path_resolveLinks(targetPath) {
|
|
|
183
150
|
}
|
|
184
151
|
return currentPath || '/';
|
|
185
152
|
}
|
|
186
|
-
|
|
187
|
-
* Strips the function name padding prefix from an error message if debug mode is disabled.
|
|
188
|
-
*
|
|
189
|
-
* @param message - The raw/enhanced error message from the ErrorStack.
|
|
190
|
-
* @returns The cleaned or original error message based on the debug configuration.
|
|
191
|
-
*
|
|
192
|
-
* @example
|
|
193
|
-
* ```
|
|
194
|
-
* const cleaned = error_stripDebugPrefix("[PacsVfsProvider.list ] | ls: error");
|
|
195
|
-
* // cleaned will be "ls: error" if debug mode is disabled
|
|
196
|
-
* ```
|
|
197
|
-
*/
|
|
198
|
-
export function error_stripDebugPrefix(message) {
|
|
199
|
-
if (session.connection?.config?.debug) {
|
|
200
|
-
return message;
|
|
201
|
-
}
|
|
202
|
-
return message.replace(/^\[[^\]]+\]\s*\|\s*/, '');
|
|
203
|
-
}
|
|
153
|
+
export { error_stripDebugPrefix } from '../core/errorText.js';
|
|
204
154
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/builtins/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/builtins/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,57 +1,8 @@
|
|
|
1
|
-
import type { ListingItem } from '@fnndsc/menu';
|
|
2
|
-
import { Result } from '@fnndsc/cumin';
|
|
3
|
-
import { ShellWord } from '../lib/parser.js';
|
|
4
1
|
/**
|
|
5
|
-
*
|
|
2
|
+
* @file Shell wildcard expansion, for the builtins that expand their own operands.
|
|
6
3
|
*
|
|
7
|
-
*
|
|
8
|
-
* @returns True if the argument contains wildcards.
|
|
9
|
-
*/
|
|
10
|
-
export declare function string_checkHasWildcard(arg: string): boolean;
|
|
11
|
-
/** A VFS item selected by wildcard expansion. */
|
|
12
|
-
export interface WildcardMatch {
|
|
13
|
-
path: string;
|
|
14
|
-
type: ListingItem['type'];
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Expands one quote-aware shell word against the ChRIS filesystem.
|
|
18
|
-
*
|
|
19
|
-
* @param word - Parsed shell word.
|
|
20
|
-
* @returns Expanded words, or the original word when it has no match.
|
|
21
|
-
*/
|
|
22
|
-
export declare function shellWord_expand(word: ShellWord): Promise<Result<ShellWord[]>>;
|
|
23
|
-
/**
|
|
24
|
-
* Expands selected quote-aware shell words in argument order.
|
|
25
|
-
*
|
|
26
|
-
* @param words - Parsed shell words.
|
|
27
|
-
* @param eligible - Predicate that preserves explicit cross-realm operands.
|
|
28
|
-
* @returns Expanded words, retaining literal words when no path matches.
|
|
29
|
-
*/
|
|
30
|
-
export declare function shellWords_expand(words: readonly ShellWord[], eligible: (word: ShellWord, index: number) => boolean): Promise<Result<ShellWord[]>>;
|
|
31
|
-
/**
|
|
32
|
-
* Expands a wildcard pattern against the current directory with item type.
|
|
33
|
-
*
|
|
34
|
-
* @param pattern - The glob pattern (e.g., "*.ts", "test*.json").
|
|
35
|
-
* @returns A Promise resolving to Result<WildcardMatch[]>.
|
|
36
|
-
* Ok([]) = no matches (not an error).
|
|
37
|
-
* Err(...) = couldn't expand (API failure, permission denied, etc.).
|
|
38
|
-
*/
|
|
39
|
-
export declare function wildcard_expandMatches(pattern: string): Promise<Result<WildcardMatch[]>>;
|
|
40
|
-
/**
|
|
41
|
-
* Expands a wildcard pattern against the current directory.
|
|
42
|
-
*
|
|
43
|
-
* @param pattern - The glob pattern (e.g., "*.ts", "test*.json").
|
|
44
|
-
* @returns A Promise resolving to Result<string[]>.
|
|
45
|
-
* Ok([]) = no matches (not an error).
|
|
46
|
-
* Err(...) = couldn't expand (API failure, permission denied, etc.).
|
|
47
|
-
*/
|
|
48
|
-
export declare function wildcard_expand(pattern: string): Promise<Result<string[]>>;
|
|
49
|
-
/**
|
|
50
|
-
* Expands all wildcards in an argument list.
|
|
4
|
+
* The expansion is the core's (`lib/wildcard.ts`).
|
|
51
5
|
*
|
|
52
|
-
* @
|
|
53
|
-
* @returns A Promise resolving to Result<string[]>.
|
|
54
|
-
* On error expanding any pattern, returns the error.
|
|
55
|
-
* Empty matches return the original pattern.
|
|
6
|
+
* @module
|
|
56
7
|
*/
|
|
57
|
-
export
|
|
8
|
+
export * from '../lib/wildcard.js';
|
|
@@ -1,183 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @file
|
|
2
|
+
* @file Shell wildcard expansion, for the builtins that expand their own operands.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* The expansion is the core's (`lib/wildcard.ts`).
|
|
5
5
|
*
|
|
6
6
|
* @module
|
|
7
7
|
*/
|
|
8
|
-
|
|
9
|
-
import { listingItemsFromVfs_make } from '../lib/vfs/listing.js';
|
|
10
|
-
import { session } from '../session/index.js';
|
|
11
|
-
import { path_resolveChrisFs } from '@fnndsc/chili/utils/cli.js';
|
|
12
|
-
import { vfsDispatcher } from '@fnndsc/salsa';
|
|
13
|
-
import { listCache_get, Ok, Err, errorStack } from '@fnndsc/cumin';
|
|
14
|
-
import { shellWord_literal, shellWord_unquoted } from '../lib/parser.js';
|
|
15
|
-
import { path_resolve } from './utils.js';
|
|
16
|
-
/**
|
|
17
|
-
* Checks if a string contains wildcard characters.
|
|
18
|
-
*
|
|
19
|
-
* @param arg - The argument to check.
|
|
20
|
-
* @returns True if the argument contains wildcards.
|
|
21
|
-
*/
|
|
22
|
-
export function string_checkHasWildcard(arg) {
|
|
23
|
-
return /[*?[\]]/.test(arg);
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Expands a rendered pattern and its quote-aware minimatch pattern.
|
|
27
|
-
*
|
|
28
|
-
* @param value - Rendered shell-word value.
|
|
29
|
-
* @param globPattern - Quote-aware minimatch pattern.
|
|
30
|
-
* @returns A Promise resolving to Result<WildcardMatch[]>.
|
|
31
|
-
* Ok([]) = no matches (not an error).
|
|
32
|
-
* Err(...) = couldn't expand (API failure, permission denied, etc.).
|
|
33
|
-
*/
|
|
34
|
-
async function wildcardMatches_expand(value, globPattern) {
|
|
35
|
-
try {
|
|
36
|
-
// Get current directory
|
|
37
|
-
const cwd = await session.getCWD();
|
|
38
|
-
const resolvedValue = await path_resolve(value);
|
|
39
|
-
const resolvedPattern = await path_resolve(globPattern);
|
|
40
|
-
// Handle patterns with directory components (e.g., "data/*.txt")
|
|
41
|
-
let searchDir = cwd;
|
|
42
|
-
let physicalSearchDir = cwd;
|
|
43
|
-
let matchPattern = resolvedPattern;
|
|
44
|
-
// Resolve the non-wildcard parent directory before listing. This gives
|
|
45
|
-
// `~/...` its normal meaning and follows a CFS `.chrislink` parent while
|
|
46
|
-
// retaining the caller's logical spelling in the expanded result.
|
|
47
|
-
if (resolvedValue.includes('/')) {
|
|
48
|
-
const valueParts = resolvedValue.split('/');
|
|
49
|
-
const patternParts = resolvedPattern.split('/');
|
|
50
|
-
const lastPart = patternParts.pop() || '*';
|
|
51
|
-
valueParts.pop();
|
|
52
|
-
const dirPart = valueParts.join('/');
|
|
53
|
-
searchDir = dirPart || '/';
|
|
54
|
-
physicalSearchDir = await path_resolveChrisFs(searchDir, {});
|
|
55
|
-
matchPattern = lastPart;
|
|
56
|
-
}
|
|
57
|
-
// List files in the directory (check cache first)
|
|
58
|
-
let items = [];
|
|
59
|
-
const listCache = listCache_get();
|
|
60
|
-
const cached = listCache.cache_get(physicalSearchDir);
|
|
61
|
-
if (cached) {
|
|
62
|
-
items = cached.data;
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
const vfsResult = await vfsDispatcher.list(physicalSearchDir);
|
|
66
|
-
if (vfsResult.ok) {
|
|
67
|
-
items = listingItemsFromVfs_make(vfsResult.value);
|
|
68
|
-
listCache.cache_set(physicalSearchDir, items);
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
return Err();
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
// Filter items by pattern
|
|
75
|
-
const matches = items
|
|
76
|
-
.filter((item) => minimatch(item.name, matchPattern))
|
|
77
|
-
.map((item) => {
|
|
78
|
-
// Return a full path if we searched a different directory.
|
|
79
|
-
const itemPath = searchDir !== cwd
|
|
80
|
-
? `${searchDir}/${item.name}`.replace(/\/+/g, '/')
|
|
81
|
-
: item.name;
|
|
82
|
-
return {
|
|
83
|
-
path: itemPath,
|
|
84
|
-
type: item.type,
|
|
85
|
-
};
|
|
86
|
-
});
|
|
87
|
-
// Ok([]) for no matches (not an error)
|
|
88
|
-
return Ok(matches);
|
|
89
|
-
}
|
|
90
|
-
catch (error) {
|
|
91
|
-
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
92
|
-
errorStack.stack_push("error", `Failed to expand wildcard '${value}': ${errorMsg}`);
|
|
93
|
-
return Err();
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Expands one quote-aware shell word against the ChRIS filesystem.
|
|
98
|
-
*
|
|
99
|
-
* @param word - Parsed shell word.
|
|
100
|
-
* @returns Expanded words, or the original word when it has no match.
|
|
101
|
-
*/
|
|
102
|
-
export async function shellWord_expand(word) {
|
|
103
|
-
if (!word.pathnameExpansion)
|
|
104
|
-
return Ok([word]);
|
|
105
|
-
const result = await wildcardMatches_expand(word.value, word.globPattern);
|
|
106
|
-
if (!result.ok)
|
|
107
|
-
return result;
|
|
108
|
-
if (result.value.length === 0)
|
|
109
|
-
return Ok([word]);
|
|
110
|
-
return Ok(result.value.map((match) => ({
|
|
111
|
-
...shellWord_literal(match.path),
|
|
112
|
-
pathnameExpanded: true,
|
|
113
|
-
})));
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Expands selected quote-aware shell words in argument order.
|
|
117
|
-
*
|
|
118
|
-
* @param words - Parsed shell words.
|
|
119
|
-
* @param eligible - Predicate that preserves explicit cross-realm operands.
|
|
120
|
-
* @returns Expanded words, retaining literal words when no path matches.
|
|
121
|
-
*/
|
|
122
|
-
export async function shellWords_expand(words, eligible) {
|
|
123
|
-
const expanded = [];
|
|
124
|
-
for (const [index, word] of words.entries()) {
|
|
125
|
-
if (!eligible(word, index)) {
|
|
126
|
-
expanded.push(word);
|
|
127
|
-
continue;
|
|
128
|
-
}
|
|
129
|
-
const result = await shellWord_expand(word);
|
|
130
|
-
if (!result.ok)
|
|
131
|
-
return result;
|
|
132
|
-
expanded.push(...result.value);
|
|
133
|
-
}
|
|
134
|
-
return Ok(expanded);
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Expands a wildcard pattern against the current directory with item type.
|
|
138
|
-
*
|
|
139
|
-
* @param pattern - The glob pattern (e.g., "*.ts", "test*.json").
|
|
140
|
-
* @returns A Promise resolving to Result<WildcardMatch[]>.
|
|
141
|
-
* Ok([]) = no matches (not an error).
|
|
142
|
-
* Err(...) = couldn't expand (API failure, permission denied, etc.).
|
|
143
|
-
*/
|
|
144
|
-
export async function wildcard_expandMatches(pattern) {
|
|
145
|
-
if (!string_checkHasWildcard(pattern))
|
|
146
|
-
return Ok([{ path: pattern, type: 'file' }]);
|
|
147
|
-
return wildcardMatches_expand(pattern, pattern);
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Expands a wildcard pattern against the current directory.
|
|
151
|
-
*
|
|
152
|
-
* @param pattern - The glob pattern (e.g., "*.ts", "test*.json").
|
|
153
|
-
* @returns A Promise resolving to Result<string[]>.
|
|
154
|
-
* Ok([]) = no matches (not an error).
|
|
155
|
-
* Err(...) = couldn't expand (API failure, permission denied, etc.).
|
|
156
|
-
*/
|
|
157
|
-
export async function wildcard_expand(pattern) {
|
|
158
|
-
if (!string_checkHasWildcard(pattern))
|
|
159
|
-
return Ok([pattern]);
|
|
160
|
-
const word = shellWord_unquoted(pattern);
|
|
161
|
-
const result = await shellWord_expand(word);
|
|
162
|
-
if (!result.ok)
|
|
163
|
-
return result;
|
|
164
|
-
if (result.value.length === 1 && result.value[0] === word)
|
|
165
|
-
return Ok([]);
|
|
166
|
-
return Ok(result.value.map((match) => match.value));
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Expands all wildcards in an argument list.
|
|
170
|
-
*
|
|
171
|
-
* @param args - The argument list potentially containing wildcards.
|
|
172
|
-
* @returns A Promise resolving to Result<string[]>.
|
|
173
|
-
* On error expanding any pattern, returns the error.
|
|
174
|
-
* Empty matches return the original pattern.
|
|
175
|
-
*/
|
|
176
|
-
export async function wildcards_expandAll(args) {
|
|
177
|
-
const words = args.map((arg) => shellWord_unquoted(arg));
|
|
178
|
-
const result = await shellWords_expand(words, () => true);
|
|
179
|
-
if (!result.ok)
|
|
180
|
-
return result;
|
|
181
|
-
return Ok(result.value.map((word) => word.value));
|
|
182
|
-
}
|
|
8
|
+
export * from '../lib/wildcard.js';
|
|
183
9
|
//# sourceMappingURL=wildcard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wildcard.js","sourceRoot":"","sources":["../../src/builtins/wildcard.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,
|
|
1
|
+
{"version":3,"file":"wildcard.js","sourceRoot":"","sources":["../../src/builtins/wildcard.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file The ChRIS backend's descriptor: a session over a CUBE.
|
|
3
|
+
*
|
|
4
|
+
* The identity's context (cumin's per-user, per-CUBE configuration) names
|
|
5
|
+
* the session (the CUBE user and URL) and holds the working directory; the
|
|
6
|
+
* home is the CUBE user's home. The CUBE connection the ChRIS commands use is
|
|
7
|
+
* reached as `session.connection`, which this module adds to the session.
|
|
8
|
+
* The prompt and the daemon's heartbeat read the user, the CUBE, PACS and
|
|
9
|
+
* the /proc index (`promptContext.ts`).
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
13
|
+
import { chrisConnection } from '@fnndsc/cumin';
|
|
14
|
+
import type { Backend } from '../core/backend.js';
|
|
15
|
+
declare module '../session/index.js' {
|
|
16
|
+
interface Session {
|
|
17
|
+
/** The CUBE connection the ChRIS commands use. */
|
|
18
|
+
readonly connection: typeof chrisConnection;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/** The ChRIS backend: a session over a CUBE. */
|
|
22
|
+
export declare const chrisBackend: Backend;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file The ChRIS backend's descriptor: a session over a CUBE.
|
|
3
|
+
*
|
|
4
|
+
* The identity's context (cumin's per-user, per-CUBE configuration) names
|
|
5
|
+
* the session (the CUBE user and URL) and holds the working directory; the
|
|
6
|
+
* home is the CUBE user's home. The CUBE connection the ChRIS commands use is
|
|
7
|
+
* reached as `session.connection`, which this module adds to the session.
|
|
8
|
+
* The prompt and the daemon's heartbeat read the user, the CUBE, PACS and
|
|
9
|
+
* the /proc index (`promptContext.ts`).
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
13
|
+
import { chrisConnection, chrisConnection_init, NodeStorageProvider, chrisContext, Context } from '@fnndsc/cumin';
|
|
14
|
+
import { Session } from '../session/index.js';
|
|
15
|
+
import { homePath_of } from '../builtins/utils.js';
|
|
16
|
+
import { runtimeOutput_set } from '@fnndsc/cumin/runtime-output';
|
|
17
|
+
import { sink_get } from '../core/sink.js';
|
|
18
|
+
import { procIndex_snapshot, sessionPromptContext_build } from './promptContext.js';
|
|
19
|
+
import { chrisAnswerKinds, chrisReferences, chrisVerbTakes } from './references.js';
|
|
20
|
+
import { chrisFallback } from './commandFallback.js';
|
|
21
|
+
import { chrisFiles } from './files.js';
|
|
22
|
+
import { elevation_run } from '@fnndsc/chili/commands/connect/elevation.js';
|
|
23
|
+
import { chrisWatch } from './watch.js';
|
|
24
|
+
import { chrisJobsSource } from './tasks.js';
|
|
25
|
+
import { chrisListingLook } from '@fnndsc/chili/views/ls.js';
|
|
26
|
+
import { chrisFilesystem } from './filesystem.js';
|
|
27
|
+
import { chrisMounts_register } from './mounts.js';
|
|
28
|
+
import { chrisCompletion } from './completion.js';
|
|
29
|
+
import { chrisDebug_get, chrisDebug_set } from './debug.js';
|
|
30
|
+
let connection;
|
|
31
|
+
// cumin reports operational notices through a narrow port. The callback
|
|
32
|
+
// resolves the sink at write time, preserving each invocation's
|
|
33
|
+
// AsyncLocalStorage scope rather than pinning output to one terminal.
|
|
34
|
+
runtimeOutput_set({
|
|
35
|
+
data_write: (chunk) => { sink_get().data_write(chunk); },
|
|
36
|
+
err_write: (chunk) => { sink_get().err_write(chunk); },
|
|
37
|
+
});
|
|
38
|
+
Object.defineProperty(Session.prototype, 'connection', {
|
|
39
|
+
get() {
|
|
40
|
+
return connection || chrisConnection;
|
|
41
|
+
},
|
|
42
|
+
configurable: true,
|
|
43
|
+
});
|
|
44
|
+
/** A ChRIS session with no restored CUBE login: its berth name is `disconnected@no-cube`. */
|
|
45
|
+
const CHRIS_DISCONNECTED = { user: 'disconnected', where: 'no-cube', connected: false };
|
|
46
|
+
/** The ChRIS backend: a session over a CUBE. */
|
|
47
|
+
export const chrisBackend = {
|
|
48
|
+
id: 'chris',
|
|
49
|
+
session: {
|
|
50
|
+
async init() {
|
|
51
|
+
chrisMounts_register();
|
|
52
|
+
const nodeStorageProvider = new NodeStorageProvider();
|
|
53
|
+
// Initialize the connection singleton which also initializes config
|
|
54
|
+
connection = await chrisConnection_init(nodeStorageProvider);
|
|
55
|
+
try {
|
|
56
|
+
// Also initialize chili's duplicate copy of the connection singleton to align monorepo package boundaries
|
|
57
|
+
const { chrisConnection_init: chiliConnection_init } = await import('@fnndsc/chili/utils');
|
|
58
|
+
await chiliConnection_init(nodeStorageProvider);
|
|
59
|
+
}
|
|
60
|
+
catch (e) {
|
|
61
|
+
// Deliberate absorption, adjudicated 2026-08: chili's connection init
|
|
62
|
+
// is an optional secondary wiring (cumin's own init is the required
|
|
63
|
+
// one); when it is absent or fails, chili paths fall back to cumin's
|
|
64
|
+
// connection at call time.
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
async identity_get() {
|
|
68
|
+
const where = await chrisContext.ChRISURL_get();
|
|
69
|
+
const user = await chrisContext.ChRISuser_get();
|
|
70
|
+
return user && where ? { user, where, connected: true } : CHRIS_DISCONNECTED;
|
|
71
|
+
},
|
|
72
|
+
async user_get() {
|
|
73
|
+
return chrisContext.ChRISuser_get();
|
|
74
|
+
},
|
|
75
|
+
async home_get() {
|
|
76
|
+
return homePath_of(await chrisContext.current_get(Context.ChRISuser));
|
|
77
|
+
},
|
|
78
|
+
async cwd_load() {
|
|
79
|
+
return chrisContext.current_get(Context.ChRISfolder);
|
|
80
|
+
},
|
|
81
|
+
async cwd_save(path) {
|
|
82
|
+
// Cache invalidation is handled automatically by cumin's chrisContext.
|
|
83
|
+
await chrisContext.current_set(Context.ChRISfolder, path);
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
prompt: sessionPromptContext_build,
|
|
87
|
+
telemetry: procIndex_snapshot,
|
|
88
|
+
references: chrisReferences,
|
|
89
|
+
answerKinds: chrisAnswerKinds,
|
|
90
|
+
verbTakes: chrisVerbTakes,
|
|
91
|
+
fallback: chrisFallback,
|
|
92
|
+
elevate: elevation_run,
|
|
93
|
+
watch: chrisWatch,
|
|
94
|
+
tasks: [chrisJobsSource],
|
|
95
|
+
files: chrisFiles,
|
|
96
|
+
vfs: chrisFilesystem,
|
|
97
|
+
completion: chrisCompletion,
|
|
98
|
+
listingLook: chrisListingLook,
|
|
99
|
+
debug_get: chrisDebug_get,
|
|
100
|
+
debug_set: chrisDebug_set,
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/chris/backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binEntry.js","sourceRoot":"","sources":["../../src/chris/binEntry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,SAAS,CAAC;AAW3C;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,WAAmB;IACxD,MAAM,OAAO,GAA4B,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACxE,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAElC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC,SAAS,CAAmB,MAAM,CAAC,CAAC;IACnE,MAAM,KAAK,GAA+B,MAAM,EAAE,IAAI,CAAC,IAAI,CACzD,CAAC,SAAyB,EAAW,EAAE,CACrC,SAAS,CAAC,IAAI,KAAK,UAAU,IAAI,SAAS,CAAC,IAAI,KAAK,WAAW,CAClE,CAAC;IACF,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAExD,OAAO;QACL,OAAO,EAAE,WAAW;QACpB,UAAU,EAAE,KAAK,EAAE,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,EAAE,KAAK,EAAE,KAAK;KACnB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAA2B;IACnE,OAAO,QAAQ,CAAC;QACd,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,OAAO,CAAC,UAAU;QAC/B,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7D,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,qBAAqB,OAAO,CAAC,OAAO,EAAE;KACjD,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file `/bin` in a ChRIS session: CUBE's plugins and pipelines, as executables.
|
|
3
|
+
*
|
|
4
|
+
* Listing it reads the plugins and pipelines CUBE holds; reading an entry
|
|
5
|
+
* gives a plugin's manual or a pipeline's summary. Nothing here writes or
|
|
6
|
+
* copies.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
import { type VfsOutcome } from '@fnndsc/fond';
|
|
11
|
+
import { Result, type VFSProvider, type VFSItem, type CpOptions } from '@fnndsc/fond';
|
|
12
|
+
/** `/bin`: CUBE's plugins and pipelines. */
|
|
13
|
+
export declare class BinVfsProvider implements VFSProvider {
|
|
14
|
+
/** The prefix this provider handles. */
|
|
15
|
+
prefix: string;
|
|
16
|
+
/**
|
|
17
|
+
* Lists the plugins (as `name-vVERSION`) and the pipelines (by slug).
|
|
18
|
+
*
|
|
19
|
+
* @param pathStr - The absolute path.
|
|
20
|
+
* @param options - Sort controls.
|
|
21
|
+
* @returns The executables.
|
|
22
|
+
*/
|
|
23
|
+
list(pathStr: string, options?: {
|
|
24
|
+
sort?: "name" | "size" | "date" | "owner";
|
|
25
|
+
reverse?: boolean;
|
|
26
|
+
}): Promise<Result<VFSItem[]>>;
|
|
27
|
+
/** @inheritdoc */
|
|
28
|
+
cp(src: string, dest: string, options: CpOptions): Promise<VfsOutcome>;
|
|
29
|
+
/**
|
|
30
|
+
* Refuses to copy from `/bin`.
|
|
31
|
+
*
|
|
32
|
+
* @param src - Source path.
|
|
33
|
+
* @param dest - Destination path.
|
|
34
|
+
* @param options - Copy options.
|
|
35
|
+
* @returns False, always.
|
|
36
|
+
*/
|
|
37
|
+
private copy_run;
|
|
38
|
+
/** @inheritdoc */
|
|
39
|
+
rm(): Promise<VfsOutcome>;
|
|
40
|
+
/** @inheritdoc */
|
|
41
|
+
rmTree(): Promise<VfsOutcome>;
|
|
42
|
+
/** @inheritdoc */
|
|
43
|
+
read(pathStr: string): Promise<VfsOutcome<string>>;
|
|
44
|
+
/**
|
|
45
|
+
* Reads an entry: a pipeline's summary, or a plugin's manual.
|
|
46
|
+
*
|
|
47
|
+
* @param pathStr - The absolute path of the entry.
|
|
48
|
+
* @returns The text.
|
|
49
|
+
*/
|
|
50
|
+
private text_read;
|
|
51
|
+
/** @inheritdoc */
|
|
52
|
+
readBinary(pathStr: string): Promise<VfsOutcome<Buffer>>;
|
|
53
|
+
/**
|
|
54
|
+
* Reads an entry as bytes.
|
|
55
|
+
*
|
|
56
|
+
* @param pathStr - The absolute path of the entry.
|
|
57
|
+
* @returns The text's bytes.
|
|
58
|
+
*/
|
|
59
|
+
private bytes_read;
|
|
60
|
+
}
|