@fnndsc/chell 4.2.8

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 (231) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +325 -0
  3. package/dist/builtins/debug.d.ts +6 -0
  4. package/dist/builtins/debug.js +47 -0
  5. package/dist/builtins/debug.js.map +1 -0
  6. package/dist/builtins/executable.d.ts +22 -0
  7. package/dist/builtins/executable.js +115 -0
  8. package/dist/builtins/executable.js.map +1 -0
  9. package/dist/builtins/fs/cat.d.ts +16 -0
  10. package/dist/builtins/fs/cat.js +249 -0
  11. package/dist/builtins/fs/cat.js.map +1 -0
  12. package/dist/builtins/fs/cd.d.ts +41 -0
  13. package/dist/builtins/fs/cd.js +178 -0
  14. package/dist/builtins/fs/cd.js.map +1 -0
  15. package/dist/builtins/fs/cp.d.ts +7 -0
  16. package/dist/builtins/fs/cp.js +73 -0
  17. package/dist/builtins/fs/cp.js.map +1 -0
  18. package/dist/builtins/fs/download.d.ts +6 -0
  19. package/dist/builtins/fs/download.js +41 -0
  20. package/dist/builtins/fs/download.js.map +1 -0
  21. package/dist/builtins/fs/du.d.ts +58 -0
  22. package/dist/builtins/fs/du.js +210 -0
  23. package/dist/builtins/fs/du.js.map +1 -0
  24. package/dist/builtins/fs/edit.d.ts +7 -0
  25. package/dist/builtins/fs/edit.js +86 -0
  26. package/dist/builtins/fs/edit.js.map +1 -0
  27. package/dist/builtins/fs/ls.d.ts +8 -0
  28. package/dist/builtins/fs/ls.js +68 -0
  29. package/dist/builtins/fs/ls.js.map +1 -0
  30. package/dist/builtins/fs/mkdir.d.ts +6 -0
  31. package/dist/builtins/fs/mkdir.js +38 -0
  32. package/dist/builtins/fs/mkdir.js.map +1 -0
  33. package/dist/builtins/fs/mv.d.ts +7 -0
  34. package/dist/builtins/fs/mv.js +75 -0
  35. package/dist/builtins/fs/mv.js.map +1 -0
  36. package/dist/builtins/fs/pull.args.d.ts +22 -0
  37. package/dist/builtins/fs/pull.args.js +30 -0
  38. package/dist/builtins/fs/pull.args.js.map +1 -0
  39. package/dist/builtins/fs/pull.d.ts +26 -0
  40. package/dist/builtins/fs/pull.js +413 -0
  41. package/dist/builtins/fs/pull.js.map +1 -0
  42. package/dist/builtins/fs/pwd.d.ts +7 -0
  43. package/dist/builtins/fs/pwd.js +75 -0
  44. package/dist/builtins/fs/pwd.js.map +1 -0
  45. package/dist/builtins/fs/rm.d.ts +31 -0
  46. package/dist/builtins/fs/rm.js +148 -0
  47. package/dist/builtins/fs/rm.js.map +1 -0
  48. package/dist/builtins/fs/touch.d.ts +6 -0
  49. package/dist/builtins/fs/touch.js +64 -0
  50. package/dist/builtins/fs/touch.js.map +1 -0
  51. package/dist/builtins/fs/tree.d.ts +15 -0
  52. package/dist/builtins/fs/tree.js +84 -0
  53. package/dist/builtins/fs/tree.js.map +1 -0
  54. package/dist/builtins/fs/upload.d.ts +6 -0
  55. package/dist/builtins/fs/upload.js +45 -0
  56. package/dist/builtins/fs/upload.js.map +1 -0
  57. package/dist/builtins/help.d.ts +74 -0
  58. package/dist/builtins/help.js +1217 -0
  59. package/dist/builtins/help.js.map +1 -0
  60. package/dist/builtins/index.d.ts +45 -0
  61. package/dist/builtins/index.js +45 -0
  62. package/dist/builtins/index.js.map +1 -0
  63. package/dist/builtins/net/connect.d.ts +7 -0
  64. package/dist/builtins/net/connect.js +42 -0
  65. package/dist/builtins/net/connect.js.map +1 -0
  66. package/dist/builtins/net/cubepath.d.ts +18 -0
  67. package/dist/builtins/net/cubepath.js +102 -0
  68. package/dist/builtins/net/cubepath.js.map +1 -0
  69. package/dist/builtins/net/logout.d.ts +6 -0
  70. package/dist/builtins/net/logout.js +24 -0
  71. package/dist/builtins/net/logout.js.map +1 -0
  72. package/dist/builtins/net/pacs.d.ts +24 -0
  73. package/dist/builtins/net/pacs.js +121 -0
  74. package/dist/builtins/net/pacs.js.map +1 -0
  75. package/dist/builtins/net/pacsUtils.d.ts +85 -0
  76. package/dist/builtins/net/pacsUtils.js +184 -0
  77. package/dist/builtins/net/pacsUtils.js.map +1 -0
  78. package/dist/builtins/net/query.d.ts +60 -0
  79. package/dist/builtins/net/query.js +304 -0
  80. package/dist/builtins/net/query.js.map +1 -0
  81. package/dist/builtins/parametersofplugin.d.ts +13 -0
  82. package/dist/builtins/parametersofplugin.js +43 -0
  83. package/dist/builtins/parametersofplugin.js.map +1 -0
  84. package/dist/builtins/pluginExecute.d.ts +27 -0
  85. package/dist/builtins/pluginExecute.js +165 -0
  86. package/dist/builtins/pluginExecute.js.map +1 -0
  87. package/dist/builtins/proc.d.ts +6 -0
  88. package/dist/builtins/proc.helpers.d.ts +68 -0
  89. package/dist/builtins/proc.helpers.js +102 -0
  90. package/dist/builtins/proc.helpers.js.map +1 -0
  91. package/dist/builtins/proc.js +289 -0
  92. package/dist/builtins/proc.js.map +1 -0
  93. package/dist/builtins/res/compute.d.ts +6 -0
  94. package/dist/builtins/res/compute.js +55 -0
  95. package/dist/builtins/res/compute.js.map +1 -0
  96. package/dist/builtins/res/feed.d.ts +6 -0
  97. package/dist/builtins/res/feed.js +244 -0
  98. package/dist/builtins/res/feed.js.map +1 -0
  99. package/dist/builtins/res/feed.notes.d.ts +28 -0
  100. package/dist/builtins/res/feed.notes.js +24 -0
  101. package/dist/builtins/res/feed.notes.js.map +1 -0
  102. package/dist/builtins/res/files.d.ts +18 -0
  103. package/dist/builtins/res/files.js +85 -0
  104. package/dist/builtins/res/files.js.map +1 -0
  105. package/dist/builtins/res/group.d.ts +6 -0
  106. package/dist/builtins/res/group.js +54 -0
  107. package/dist/builtins/res/group.js.map +1 -0
  108. package/dist/builtins/res/pipeline.args.d.ts +22 -0
  109. package/dist/builtins/res/pipeline.args.js +28 -0
  110. package/dist/builtins/res/pipeline.args.js.map +1 -0
  111. package/dist/builtins/res/pipeline.d.ts +20 -0
  112. package/dist/builtins/res/pipeline.js +252 -0
  113. package/dist/builtins/res/pipeline.js.map +1 -0
  114. package/dist/builtins/res/plugin.d.ts +13 -0
  115. package/dist/builtins/res/plugin.js +140 -0
  116. package/dist/builtins/res/plugin.js.map +1 -0
  117. package/dist/builtins/res/plugininstance.d.ts +6 -0
  118. package/dist/builtins/res/plugininstance.js +53 -0
  119. package/dist/builtins/res/plugininstance.js.map +1 -0
  120. package/dist/builtins/res/pluginmeta.d.ts +6 -0
  121. package/dist/builtins/res/pluginmeta.js +53 -0
  122. package/dist/builtins/res/pluginmeta.js.map +1 -0
  123. package/dist/builtins/res/tag.d.ts +6 -0
  124. package/dist/builtins/res/tag.js +53 -0
  125. package/dist/builtins/res/tag.js.map +1 -0
  126. package/dist/builtins/res/workflow.d.ts +6 -0
  127. package/dist/builtins/res/workflow.js +53 -0
  128. package/dist/builtins/res/workflow.js.map +1 -0
  129. package/dist/builtins/store.d.ts +6 -0
  130. package/dist/builtins/store.js +108 -0
  131. package/dist/builtins/store.js.map +1 -0
  132. package/dist/builtins/sys/context.d.ts +6 -0
  133. package/dist/builtins/sys/context.js +50 -0
  134. package/dist/builtins/sys/context.js.map +1 -0
  135. package/dist/builtins/sys/physicalmode.d.ts +6 -0
  136. package/dist/builtins/sys/physicalmode.js +41 -0
  137. package/dist/builtins/sys/physicalmode.js.map +1 -0
  138. package/dist/builtins/sys/prompt.d.ts +13 -0
  139. package/dist/builtins/sys/prompt.helpers.d.ts +31 -0
  140. package/dist/builtins/sys/prompt.helpers.js +36 -0
  141. package/dist/builtins/sys/prompt.helpers.js.map +1 -0
  142. package/dist/builtins/sys/prompt.js +182 -0
  143. package/dist/builtins/sys/prompt.js.map +1 -0
  144. package/dist/builtins/sys/timing.d.ts +6 -0
  145. package/dist/builtins/sys/timing.js +41 -0
  146. package/dist/builtins/sys/timing.js.map +1 -0
  147. package/dist/builtins/sys/whoami.d.ts +12 -0
  148. package/dist/builtins/sys/whoami.js +37 -0
  149. package/dist/builtins/sys/whoami.js.map +1 -0
  150. package/dist/builtins/utils.d.ts +55 -0
  151. package/dist/builtins/utils.js +145 -0
  152. package/dist/builtins/utils.js.map +1 -0
  153. package/dist/builtins/wildcard.d.ts +26 -0
  154. package/dist/builtins/wildcard.js +120 -0
  155. package/dist/builtins/wildcard.js.map +1 -0
  156. package/dist/chell.d.ts +16 -0
  157. package/dist/chell.js +1193 -0
  158. package/dist/chell.js.map +1 -0
  159. package/dist/command-keys.d.ts +8 -0
  160. package/dist/command-keys.js +32 -0
  161. package/dist/command-keys.js.map +1 -0
  162. package/dist/config/settings.d.ts +39 -0
  163. package/dist/config/settings.js +93 -0
  164. package/dist/config/settings.js.map +1 -0
  165. package/dist/core/bootFlags.d.ts +32 -0
  166. package/dist/core/bootFlags.js +25 -0
  167. package/dist/core/bootFlags.js.map +1 -0
  168. package/dist/core/cli.d.ts +58 -0
  169. package/dist/core/cli.js +251 -0
  170. package/dist/core/cli.js.map +1 -0
  171. package/dist/core/prompt/index.d.ts +80 -0
  172. package/dist/core/prompt/index.js +29 -0
  173. package/dist/core/prompt/index.js.map +1 -0
  174. package/dist/core/prompt/theme_default.d.ts +19 -0
  175. package/dist/core/prompt/theme_default.js +47 -0
  176. package/dist/core/prompt/theme_default.js.map +1 -0
  177. package/dist/core/prompt/theme_p10k.d.ts +22 -0
  178. package/dist/core/prompt/theme_p10k.js +164 -0
  179. package/dist/core/prompt/theme_p10k.js.map +1 -0
  180. package/dist/core/prompt/utils.d.ts +23 -0
  181. package/dist/core/prompt/utils.js +40 -0
  182. package/dist/core/prompt/utils.js.map +1 -0
  183. package/dist/core/question.d.ts +34 -0
  184. package/dist/core/question.js +76 -0
  185. package/dist/core/question.js.map +1 -0
  186. package/dist/core/repl.d.ts +31 -0
  187. package/dist/core/repl.js +146 -0
  188. package/dist/core/repl.js.map +1 -0
  189. package/dist/index.d.ts +7 -0
  190. package/dist/index.js +34 -0
  191. package/dist/index.js.map +1 -0
  192. package/dist/lib/bootsequence.d.ts +62 -0
  193. package/dist/lib/bootsequence.js +222 -0
  194. package/dist/lib/bootsequence.js.map +1 -0
  195. package/dist/lib/completer/index.d.ts +15 -0
  196. package/dist/lib/completer/index.js +212 -0
  197. package/dist/lib/completer/index.js.map +1 -0
  198. package/dist/lib/completer/pathComplete.helpers.d.ts +22 -0
  199. package/dist/lib/completer/pathComplete.helpers.js +49 -0
  200. package/dist/lib/completer/pathComplete.helpers.js.map +1 -0
  201. package/dist/lib/logo.d.ts +47 -0
  202. package/dist/lib/logo.js +313 -0
  203. package/dist/lib/logo.js.map +1 -0
  204. package/dist/lib/parser.d.ts +13 -0
  205. package/dist/lib/parser.js +52 -0
  206. package/dist/lib/parser.js.map +1 -0
  207. package/dist/lib/pipe.d.ts +11 -0
  208. package/dist/lib/pipe.js +90 -0
  209. package/dist/lib/pipe.js.map +1 -0
  210. package/dist/lib/prefetch.d.ts +25 -0
  211. package/dist/lib/prefetch.js +64 -0
  212. package/dist/lib/prefetch.js.map +1 -0
  213. package/dist/lib/semicolonParser.d.ts +22 -0
  214. package/dist/lib/semicolonParser.js +53 -0
  215. package/dist/lib/semicolonParser.js.map +1 -0
  216. package/dist/lib/spinner.d.ts +23 -0
  217. package/dist/lib/spinner.js +68 -0
  218. package/dist/lib/spinner.js.map +1 -0
  219. package/dist/lib/vfs/providers/static.d.ts +65 -0
  220. package/dist/lib/vfs/providers/static.js +164 -0
  221. package/dist/lib/vfs/providers/static.js.map +1 -0
  222. package/dist/lib/vfs/providers/static_content.d.ts +27 -0
  223. package/dist/lib/vfs/providers/static_content.js +180 -0
  224. package/dist/lib/vfs/providers/static_content.js.map +1 -0
  225. package/dist/lib/vfs/vfs.d.ts +59 -0
  226. package/dist/lib/vfs/vfs.js +198 -0
  227. package/dist/lib/vfs/vfs.js.map +1 -0
  228. package/dist/session/index.d.ts +76 -0
  229. package/dist/session/index.js +120 -0
  230. package/dist/session/index.js.map +1 -0
  231. package/package.json +65 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.args.js","sourceRoot":"","sources":["../../../src/builtins/res/pipeline.args.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAc;IAClD,IAAI,eAAmC,CAAC;IACxC,IAAI,gBAAoC,CAAC;IAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACnD,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3D,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @file Builtin pipeline command.
3
+ *
4
+ * Manages registered ChRIS pipelines. Subcommands:
5
+ * - `list` — list all registered pipelines
6
+ * - `info` — show a pipeline's nodes and default parameters
7
+ * - `run` — instantiate a pipeline as a workflow on the current context node
8
+ * - `source` — display the pipeline's YAML source file
9
+ *
10
+ * Pipelines also appear as executables in `/bin` (colored distinctly from plugins)
11
+ * and can be invoked directly by name. `cat /bin/<name>` returns the YAML source.
12
+ *
13
+ * @module
14
+ */
15
+ /**
16
+ * Manages ChRIS pipeline registration, inspection, and execution.
17
+ *
18
+ * @param args - Command arguments.
19
+ */
20
+ export declare function builtin_pipeline(args: string[]): Promise<void>;
@@ -0,0 +1,252 @@
1
+ /**
2
+ * @file Builtin pipeline command.
3
+ *
4
+ * Manages registered ChRIS pipelines. Subcommands:
5
+ * - `list` — list all registered pipelines
6
+ * - `info` — show a pipeline's nodes and default parameters
7
+ * - `run` — instantiate a pipeline as a workflow on the current context node
8
+ * - `source` — display the pipeline's YAML source file
9
+ *
10
+ * Pipelines also appear as executables in `/bin` (colored distinctly from plugins)
11
+ * and can be invoked directly by name. `cat /bin/<name>` returns the YAML source.
12
+ *
13
+ * @module
14
+ */
15
+ import chalk from 'chalk';
16
+ import { chrisContext, errorStack, pipeline_resolve, } from '@fnndsc/cumin';
17
+ import { pipelines_list, pipeline_run, pipeline_sourceGet, } from '@fnndsc/salsa';
18
+ import { pipelineFields_fetch } from '@fnndsc/chili/commands/pipeline/fields.js';
19
+ import { table_display } from '@fnndsc/chili/screen/screen.js';
20
+ import { args_checkHasHelpFlag, help_show } from '../help.js';
21
+ import { pipelineRunArgs_parse } from './pipeline.args.js';
22
+ import { session } from '../../session/index.js';
23
+ /**
24
+ * Renders a pipeline's node structure by fetching its piping definitions.
25
+ *
26
+ * @param pipelineId - Numeric pipeline ID.
27
+ */
28
+ async function pipelineNodes_print(pipelineId) {
29
+ const client = await session.connection.client_get();
30
+ if (!client) {
31
+ console.error(chalk.red('pipeline info: not connected to ChRIS'));
32
+ return;
33
+ }
34
+ try {
35
+ const pipelineObj = await client.getPipeline(pipelineId);
36
+ if (!pipelineObj) {
37
+ console.error(chalk.red(`pipeline info: pipeline ${pipelineId} not found`));
38
+ return;
39
+ }
40
+ const pipingsResponse = await pipelineObj.getPluginPipings({ limit: 1000 });
41
+ const pipings = pipingsResponse.getItems();
42
+ console.log(chalk.bold.blue('\nNodes:\n'));
43
+ console.log(` ${chalk.bold('ID'.padEnd(6))}${chalk.bold('Title'.padEnd(30))}${chalk.bold('Plugin')}`);
44
+ console.log(` ${chalk.gray('─'.repeat(70))}`);
45
+ for (const piping of pipings) {
46
+ const d = piping.data;
47
+ const id = String(d.id ?? '').padEnd(6);
48
+ const title = String(d.title ?? '(untitled)').padEnd(30);
49
+ const plugin = String(d.plugin_name ?? '') + ' v' + String(d.plugin_version ?? '');
50
+ const previous = d.previous_id ? chalk.gray(` ← node ${d.previous_id}`) : chalk.gray(' (root)');
51
+ console.log(` ${chalk.cyan(id)}${chalk.white(title)}${chalk.yellow(plugin)}${previous}`);
52
+ }
53
+ console.log('');
54
+ }
55
+ catch (error) {
56
+ const msg = error instanceof Error ? error.message : String(error);
57
+ console.error(chalk.red(`pipeline info: ${msg}`));
58
+ }
59
+ }
60
+ /**
61
+ * Handles `pipeline list [search]`.
62
+ *
63
+ * @param args - Command arguments.
64
+ */
65
+ async function pipelineList_handle(args) {
66
+ const search = args[1];
67
+ const data = await pipelines_list(search);
68
+ if (!data || data.tableData.length === 0) {
69
+ console.log(chalk.yellow('No pipelines registered.'));
70
+ return;
71
+ }
72
+ console.log('');
73
+ console.log(` ${chalk.bold('ID'.padEnd(6))}${chalk.bold('Name'.padEnd(40))}${chalk.bold('Category'.padEnd(16))}${chalk.bold('Authors')}`);
74
+ console.log(` ${chalk.gray('─'.repeat(80))}`);
75
+ for (const row of data.tableData) {
76
+ const id = String(row.id ?? '').padEnd(6);
77
+ const name = String(row.name ?? '').padEnd(40);
78
+ const cat = String(row.category ?? '').padEnd(16);
79
+ const authors = String(row.authors ?? '');
80
+ console.log(` ${chalk.cyan(id)}${chalk.magenta(name)}${chalk.gray(cat)}${chalk.gray(authors)}`);
81
+ }
82
+ console.log('');
83
+ }
84
+ /**
85
+ * Handles `pipeline info <name|id>`.
86
+ *
87
+ * @param args - Command arguments.
88
+ */
89
+ async function pipelineInfo_handle(args) {
90
+ const nameOrId = args[1];
91
+ if (!nameOrId) {
92
+ console.error(chalk.red('Usage: pipeline info <name|id>'));
93
+ process.exitCode = 1;
94
+ return;
95
+ }
96
+ const result = await pipeline_resolve(nameOrId);
97
+ if (!result.ok) {
98
+ const err = errorStack.stack_pop();
99
+ console.error(chalk.red(`pipeline info: ${err?.message ?? 'not found'}`));
100
+ process.exitCode = 1;
101
+ return;
102
+ }
103
+ const p = result.value;
104
+ console.log('');
105
+ console.log(`${chalk.bold.magenta(p.name)} ${chalk.gray(`[id: ${p.id}]`)}`);
106
+ if (p.description)
107
+ console.log(chalk.white(` ${p.description}`));
108
+ if (p.authors)
109
+ console.log(chalk.gray(` Authors: ${p.authors}`));
110
+ if (p.category)
111
+ console.log(chalk.gray(` Category: ${p.category}`));
112
+ console.log(chalk.gray(` Locked: ${p.locked ? 'yes' : 'no'}`));
113
+ await pipelineNodes_print(p.id);
114
+ }
115
+ /**
116
+ * Resolves the "previous" plugin-instance id for `pipeline run`, from the
117
+ * explicit override or the current plugin context.
118
+ *
119
+ * @param previousOverride - Explicit `--previous` value, if any.
120
+ * @returns The instance id, or null if it could not be resolved (error printed).
121
+ */
122
+ async function pipelineRun_previousInstId(previousOverride) {
123
+ if (previousOverride !== undefined)
124
+ return previousOverride;
125
+ const contextStr = await chrisContext.ChRISplugin_get();
126
+ if (!contextStr) {
127
+ console.error(chalk.red('pipeline run: no plugin instance in context.'));
128
+ console.error(chalk.gray(' Navigate to a feed node first, or use --previous <id>'));
129
+ process.exitCode = 1;
130
+ return null;
131
+ }
132
+ const previousInstId = parseInt(contextStr, 10);
133
+ if (isNaN(previousInstId)) {
134
+ console.error(chalk.red(`pipeline run: invalid context instance '${contextStr}'`));
135
+ process.exitCode = 1;
136
+ return null;
137
+ }
138
+ return previousInstId;
139
+ }
140
+ /**
141
+ * Handles `pipeline run <name|id> [--compute <r>] [--previous <id>]`.
142
+ *
143
+ * @param args - Command arguments.
144
+ */
145
+ async function pipelineRun_handle(args) {
146
+ const nameOrId = args[1];
147
+ if (!nameOrId) {
148
+ console.error(chalk.red('Usage: pipeline run <name|id> [--compute <resource>] [--previous <inst_id>]'));
149
+ process.exitCode = 1;
150
+ return;
151
+ }
152
+ const { computeOverride, previousOverride } = pipelineRunArgs_parse(args);
153
+ const previousInstId = await pipelineRun_previousInstId(previousOverride);
154
+ if (previousInstId === null)
155
+ return;
156
+ const pipelineResult = await pipeline_resolve(nameOrId);
157
+ if (!pipelineResult.ok) {
158
+ const err = errorStack.stack_pop();
159
+ console.error(chalk.red(`pipeline run: ${err?.message ?? 'pipeline not found'}`));
160
+ process.exitCode = 1;
161
+ return;
162
+ }
163
+ console.log(chalk.gray(`Running pipeline '${pipelineResult.value.name}' on instance ${previousInstId}...`));
164
+ const runResult = await pipeline_run(nameOrId, previousInstId, computeOverride);
165
+ if (!runResult.ok) {
166
+ const err = errorStack.stack_pop();
167
+ console.error(chalk.red(`pipeline run: ${err?.message ?? 'workflow creation failed'}`));
168
+ process.exitCode = 1;
169
+ return;
170
+ }
171
+ const { workflowId, pluginInstanceIds } = runResult.value;
172
+ console.log(chalk.green(`✓ Workflow ${workflowId} created — ${pluginInstanceIds.length} node(s) queued`));
173
+ console.log(chalk.gray(` Instance IDs: ${pluginInstanceIds.join(', ')}`));
174
+ }
175
+ /**
176
+ * Handles `pipeline source <name|id>`.
177
+ *
178
+ * @param args - Command arguments.
179
+ */
180
+ async function pipelineSource_handle(args) {
181
+ const nameOrId = args[1];
182
+ if (!nameOrId) {
183
+ console.error(chalk.red('Usage: pipeline source <name|id>'));
184
+ process.exitCode = 1;
185
+ return;
186
+ }
187
+ const sourceResult = await pipeline_sourceGet(nameOrId);
188
+ if (!sourceResult.ok) {
189
+ const err = errorStack.stack_pop();
190
+ console.error(chalk.red(`pipeline source: ${err?.message ?? 'source not found'}`));
191
+ process.exitCode = 1;
192
+ return;
193
+ }
194
+ console.log(sourceResult.value);
195
+ }
196
+ /**
197
+ * Handles `pipeline inspect`: lists available pipeline fields.
198
+ */
199
+ async function pipelineInspect_handle() {
200
+ const fields = await pipelineFields_fetch();
201
+ if (fields && fields.length > 0) {
202
+ table_display(fields.map((f) => ({ field: f })), ['field'], { title: { title: 'Pipeline fields', justification: 'center' } });
203
+ }
204
+ else {
205
+ console.log(chalk.gray('No fields found.'));
206
+ }
207
+ }
208
+ /**
209
+ * Manages ChRIS pipeline registration, inspection, and execution.
210
+ *
211
+ * @param args - Command arguments.
212
+ */
213
+ export async function builtin_pipeline(args) {
214
+ if (args_checkHasHelpFlag(args, 'pipeline')) {
215
+ help_show('pipeline');
216
+ return;
217
+ }
218
+ const subcommand = args[0];
219
+ if (!subcommand) {
220
+ const current = await chrisContext.ChRISplugin_get();
221
+ console.log(chalk.gray('Usage: pipeline <list|info|run|source> [args]'));
222
+ if (current) {
223
+ console.log(chalk.gray(` Current context node: instance ${current}`));
224
+ }
225
+ return;
226
+ }
227
+ switch (subcommand) {
228
+ case 'list':
229
+ await pipelineList_handle(args);
230
+ return;
231
+ case 'info':
232
+ await pipelineInfo_handle(args);
233
+ return;
234
+ case 'run':
235
+ await pipelineRun_handle(args);
236
+ return;
237
+ case 'source':
238
+ await pipelineSource_handle(args);
239
+ return;
240
+ case 'inspect':
241
+ await pipelineInspect_handle();
242
+ return;
243
+ case 'search':
244
+ await builtin_pipeline(['list', args[1] ?? '']);
245
+ return;
246
+ default:
247
+ console.error(chalk.red(`pipeline: unknown subcommand '${subcommand}'`));
248
+ console.log(chalk.gray(' Subcommands: list, search, inspect, info, run, source'));
249
+ process.exitCode = 1;
250
+ }
251
+ }
252
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/builtins/res/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,YAAY,EACZ,UAAU,EACV,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,cAAc,EACd,YAAY,EACZ,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAA6B,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD;;;;GAIG;AACH,KAAK,UAAU,mBAAmB,CAAC,UAAkB;IACnD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;IACrD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAClE,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAO,MAOzB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAE3B,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,UAAU,YAAY,CAAC,CAAC,CAAC;YAC5E,OAAO;QACT,CAAC;QAED,MAAM,eAAe,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAC;QAE3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAC1F,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAE/C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,GAA4B,MAAM,CAAC,IAAI,CAAC;YAC/C,MAAM,EAAE,GAAW,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAChD,MAAM,KAAK,GAAW,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjE,MAAM,MAAM,GAAW,MAAM,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;YAC3F,MAAM,QAAQ,GAAW,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxG,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,GAAG,GAAW,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,mBAAmB,CAAC,IAAc;IAC/C,MAAM,MAAM,GAAuB,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAC9H,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACjC,MAAM,EAAE,GAAW,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,IAAI,GAAW,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,GAAG,GAAW,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAW,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnG,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,mBAAmB,CAAC,IAAc;IAC/C,MAAM,QAAQ,GAAuB,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,GAAG,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;IACvB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7E,IAAI,CAAC,CAAC,WAAW;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC,CAAC,OAAO;QAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACtE,IAAI,CAAC,CAAC,QAAQ;QAAK,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAChE,MAAM,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,0BAA0B,CAAC,gBAAoC;IAC5E,IAAI,gBAAgB,KAAK,SAAS;QAAE,OAAO,gBAAgB,CAAC;IAE5D,MAAM,UAAU,GAAkB,MAAM,YAAY,CAAC,eAAe,EAAE,CAAC;IACvE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,cAAc,GAAW,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACxD,IAAI,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,2CAA2C,UAAU,GAAG,CAAC,CAAC,CAAC;QACnF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,kBAAkB,CAAC,IAAc;IAC9C,MAAM,QAAQ,GAAuB,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC,CAAC;QACxG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAAyB,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAEhG,MAAM,cAAc,GAAkB,MAAM,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;IACzF,IAAI,cAAc,KAAK,IAAI;QAAE,OAAO;IAEpC,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACxD,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,GAAG,EAAE,OAAO,IAAI,oBAAoB,EAAE,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,cAAc,CAAC,KAAK,CAAC,IAAI,iBAAiB,cAAc,KAAK,CAAC,CAAC,CAAC;IAE5G,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;IAChF,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,GAAG,EAAE,OAAO,IAAI,0BAA0B,EAAE,CAAC,CAAC,CAAC;QACxF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,UAAU,cAAc,iBAAiB,CAAC,MAAM,iBAAiB,CAAC,CAAC,CAAC;IAC1G,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,qBAAqB,CAAC,IAAc;IACjD,MAAM,QAAQ,GAAuB,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACxD,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,GAAG,EAAE,OAAO,IAAI,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACnF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,sBAAsB;IACnC,MAAM,MAAM,GAAoB,MAAM,oBAAoB,EAAE,CAAC;IAC7D,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IACxI,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAc;IACnD,IAAI,qBAAqB,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;QAC5C,SAAS,CAAC,UAAU,CAAC,CAAC;QACtB,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAuB,IAAI,CAAC,CAAC,CAAC,CAAC;IAE/C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,OAAO,GAAkB,MAAM,YAAY,CAAC,eAAe,EAAE,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC,CAAC;QACzE,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAC,CAAC;QACzE,CAAC;QACD,OAAO;IACT,CAAC;IAED,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,MAAM;YACT,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAChC,OAAO;QACT,KAAK,MAAM;YACT,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAChC,OAAO;QACT,KAAK,KAAK;YACR,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO;QACT,KAAK,QAAQ;YACX,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO;QACT,KAAK,SAAS;YACZ,MAAM,sBAAsB,EAAE,CAAC;YAC/B,OAAO;QACT,KAAK,QAAQ;YACX,MAAM,gBAAgB,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAChD,OAAO;QACT;YACE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,UAAU,GAAG,CAAC,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC,CAAC;YACnF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACzB,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { ParsedArgs } from '../utils.js';
2
+ /**
3
+ * Handles plugin commands.
4
+ *
5
+ * @param args - command arguments.
6
+ */
7
+ export declare function builtin_plugin(args: string[]): Promise<void>;
8
+ /**
9
+ * Interactive plugin add command with spinner and colored output.
10
+ *
11
+ * @param parsed - Parsed command arguments.
12
+ */
13
+ export declare function plugin_addInteractive(parsed: ParsedArgs): Promise<void>;
@@ -0,0 +1,140 @@
1
+ /**
2
+ * @file Builtin plugin/plugins command.
3
+ *
4
+ * Handles plugin management in chell. Subcommands:
5
+ * - `list` — fetch and render the plugin collection via chili
6
+ * - `run` — execute a plugin instance by searchable name/id
7
+ * - `add` — register a new plugin into CUBE (interactive, with spinner)
8
+ *
9
+ * Unknown subcommands fall through to a spawned chili process.
10
+ * `plugin` and `plugins` are both registered as aliases in COMMAND_HANDLERS.
11
+ *
12
+ * @module
13
+ */
14
+ import chalk from 'chalk';
15
+ import { commandArgs_process } from '../utils.js';
16
+ import { plugins_fetchList } from '@fnndsc/chili/commands/plugins/list.js';
17
+ import { pluginFields_fetch } from '@fnndsc/chili/commands/plugins/fields.js';
18
+ import { plugin_execute } from '@fnndsc/chili/commands/plugin/run.js';
19
+ import { plugin_add } from '@fnndsc/chili/commands/plugins/add.js';
20
+ import { pluginList_render, pluginRun_render } from '@fnndsc/chili/views/plugin.js';
21
+ import { table_display } from '@fnndsc/chili/screen/screen.js';
22
+ import { chiliCommand_run } from '../../chell.js';
23
+ import { spinner } from '../../lib/spinner.js';
24
+ import { errorStack } from '@fnndsc/cumin';
25
+ import { adminPrompt_register } from '@fnndsc/chili/utils/admin_prompt.js';
26
+ import { repl_question, repl_questionHidden } from '../../core/question.js';
27
+ /**
28
+ * Handles plugin commands.
29
+ *
30
+ * @param args - command arguments.
31
+ */
32
+ export async function builtin_plugin(args) {
33
+ const parsed = commandArgs_process(args);
34
+ const subcommand = parsed._[0];
35
+ if (!subcommand) {
36
+ console.log(chalk.red("Usage: plugin <list|run|add> ..."));
37
+ return;
38
+ }
39
+ try {
40
+ if (subcommand === 'list') {
41
+ const { plugins, selectedFields, totalCount } = await plugins_fetchList(parsed);
42
+ console.log(pluginList_render(plugins, selectedFields, { table: !!parsed.table, csv: !!parsed.csv }));
43
+ if (totalCount !== undefined && plugins.length < totalCount) {
44
+ console.log(chalk.dim(` ↓ showing ${plugins.length} of ${totalCount} · --all to fetch all · --limit <n> for page size`));
45
+ }
46
+ }
47
+ else if (subcommand === 'run') {
48
+ const searchable = parsed._[1];
49
+ if (!searchable) {
50
+ console.log(chalk.red("Usage: plugin run <plugin> [args...]"));
51
+ return;
52
+ }
53
+ const params = args.slice(2).join(' ');
54
+ const instance = await plugin_execute(searchable, params);
55
+ if (instance) {
56
+ console.log(pluginRun_render(instance));
57
+ }
58
+ else {
59
+ console.error(chalk.red("Plugin execution failed."));
60
+ }
61
+ }
62
+ else if (subcommand === 'add') {
63
+ await plugin_addInteractive(parsed);
64
+ }
65
+ else if (subcommand === 'inspect') {
66
+ const fields = await pluginFields_fetch();
67
+ if (fields && fields.length > 0) {
68
+ table_display(fields.map((f) => ({ field: f })), ['field'], { title: { title: 'Plugin fields', justification: 'center' } });
69
+ }
70
+ else {
71
+ console.log(chalk.gray('No fields found.'));
72
+ }
73
+ }
74
+ else if (subcommand === 'search') {
75
+ const query = parsed._[1] ?? '';
76
+ await builtin_plugin(['list', `--search`, query]);
77
+ }
78
+ else {
79
+ console.log(chalk.yellow('Directive not handled by chell... spawning chili directly'));
80
+ await chiliCommand_run('plugins', ['-s', ...args]);
81
+ }
82
+ }
83
+ catch (e) {
84
+ const msg = e instanceof Error ? e.message : String(e);
85
+ console.error(chalk.red(`Plugin error: ${msg}`));
86
+ }
87
+ }
88
+ /**
89
+ * Interactive plugin add command with spinner and colored output.
90
+ *
91
+ * @param parsed - Parsed command arguments.
92
+ */
93
+ export async function plugin_addInteractive(parsed) {
94
+ const pluginInput = parsed._[1];
95
+ if (!pluginInput) {
96
+ console.log(chalk.red('Usage: plugin add <name|image|url> [--compute <resources>] [--store <url>]'));
97
+ return;
98
+ }
99
+ const options = {
100
+ compute: parsed.compute,
101
+ store: parsed.store,
102
+ adminUser: parsed.adminUser,
103
+ adminPassword: parsed.adminPassword,
104
+ public_repo: parsed.publicRepo,
105
+ };
106
+ errorStack.stack_clear();
107
+ adminPrompt_register(repl_question, repl_questionHidden);
108
+ console.log(chalk.cyan(`\nAdding plugin: ${pluginInput}\n`));
109
+ const outcome = await plugin_add(pluginInput, options);
110
+ spinner.stop();
111
+ if (outcome === 'installed') {
112
+ console.log(chalk.green('\n[SUCCESS] Plugin added successfully!\n'));
113
+ }
114
+ else if (outcome === 'already_exists') {
115
+ console.log(chalk.yellow(`\n[INFO] '${pluginInput}' is already registered in this CUBE.\n`));
116
+ }
117
+ else {
118
+ process.exitCode = 1;
119
+ console.log(chalk.red('\n[FAILED] Failed to add plugin.\n'));
120
+ const errors = errorStack.allOfType_get('error');
121
+ if (errors.length > 0) {
122
+ console.log(chalk.red('Errors:'));
123
+ errors.forEach((error) => {
124
+ const cleanError = error.replace(/^\[.*?\]\s+\|\s+/, '');
125
+ console.log(chalk.red(` - ${cleanError}`));
126
+ });
127
+ console.log('');
128
+ }
129
+ const warnings = errorStack.allOfType_get('warning');
130
+ if (warnings.length > 0) {
131
+ console.log(chalk.yellow('Warnings:'));
132
+ warnings.forEach((warning) => {
133
+ const cleanWarning = warning.replace(/^\[.*?\]\s+\|\s+/, '');
134
+ console.log(chalk.yellow(` [WARNING] ${cleanWarning}`));
135
+ });
136
+ console.log('');
137
+ }
138
+ }
139
+ }
140
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/builtins/res/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Builtin handler for the `plugininstance` command.
3
+ *
4
+ * @param args - Parsed command arguments for the plugin-instance command.
5
+ */
6
+ export declare function builtin_plugininstance(args: string[]): Promise<void>;
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @file Builtin plugininstance command.
3
+ *
4
+ * Subcommands: list, search, inspect
5
+ * Aliases: plugininstance / plugininstances / instance / instances / job / jobs
6
+ */
7
+ import chalk from 'chalk';
8
+ import { commandArgs_process } from '../utils.js';
9
+ import { pluginInstances_fetchList } from '@fnndsc/chili/commands/plugininstances/list.js';
10
+ import { pluginInstanceFields_fetch } from '@fnndsc/chili/commands/plugininstances/fields.js';
11
+ import { table_display } from '@fnndsc/chili/screen/screen.js';
12
+ /**
13
+ * Builtin handler for the `plugininstance` command.
14
+ *
15
+ * @param args - Parsed command arguments for the plugin-instance command.
16
+ */
17
+ export async function builtin_plugininstance(args) {
18
+ const parsed = commandArgs_process(args);
19
+ const subcommand = parsed._[0];
20
+ if (!subcommand || subcommand === 'list') {
21
+ try {
22
+ const { pluginInstances, selectedFields, totalCount } = await pluginInstances_fetchList(parsed);
23
+ if (pluginInstances.length === 0) {
24
+ console.log(chalk.gray('No plugin instances found.'));
25
+ return;
26
+ }
27
+ table_display(pluginInstances, selectedFields, { title: { title: 'Plugin Instances', justification: 'center' }, pagination: totalCount !== undefined ? { shown: pluginInstances.length, total: totalCount } : undefined });
28
+ }
29
+ catch (e) {
30
+ process.exitCode = 1;
31
+ console.error(chalk.red(`plugininstance error: ${e instanceof Error ? e.message : String(e)}`));
32
+ }
33
+ return;
34
+ }
35
+ if (subcommand === 'search') {
36
+ const query = parsed._[1] ?? '';
37
+ await builtin_plugininstance([...args.filter((a) => a !== subcommand), `--search`, query]);
38
+ return;
39
+ }
40
+ if (subcommand === 'inspect') {
41
+ const fields = await pluginInstanceFields_fetch();
42
+ if (fields && fields.length > 0) {
43
+ table_display(fields.map((f) => ({ field: f })), ['field'], { title: { title: 'Plugin Instance fields', justification: 'center' } });
44
+ }
45
+ else {
46
+ console.log(chalk.gray('No fields found for plugin instances.'));
47
+ }
48
+ return;
49
+ }
50
+ process.exitCode = 1;
51
+ console.log(chalk.red(`Unknown subcommand: ${subcommand}. Usage: plugininstances <list|search|inspect>`));
52
+ }
53
+ //# sourceMappingURL=plugininstance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugininstance.js","sourceRoot":"","sources":["../../../src/builtins/res/plugininstance.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAc,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAA4B,MAAM,gDAAgD,CAAC;AACrH,OAAO,EAAE,0BAA0B,EAAE,MAAM,kDAAkD,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAG/D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAc;IACzD,MAAM,MAAM,GAAe,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,UAAU,GAAuB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnD,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,GAA6B,MAAM,yBAAyB,CAAC,MAA+B,CAAC,CAAC;YACnJ,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YACpG,aAAa,CAAC,eAAe,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7N,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClG,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,sBAAsB,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;QACnG,OAAO;IACT,CAAC;IAED,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAoB,MAAM,0BAA0B,EAAE,CAAC;QACnE,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC/I,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,UAAU,gDAAgD,CAAC,CAAC,CAAC;AAC5G,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Builtin handler for the `pluginmeta` command.
3
+ *
4
+ * @param args - Parsed command arguments for the plugin-meta command.
5
+ */
6
+ export declare function builtin_pluginmeta(args: string[]): Promise<void>;
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @file Builtin pluginmeta command.
3
+ *
4
+ * Subcommands: list, search, inspect
5
+ * Aliases: pluginmeta / pluginmetas / meta / metas
6
+ */
7
+ import chalk from 'chalk';
8
+ import { commandArgs_process } from '../utils.js';
9
+ import { pluginMetas_fetchList } from '@fnndsc/chili/commands/pluginmetas/list.js';
10
+ import { pluginMetaFields_fetch } from '@fnndsc/chili/commands/pluginmetas/fields.js';
11
+ import { table_display } from '@fnndsc/chili/screen/screen.js';
12
+ /**
13
+ * Builtin handler for the `pluginmeta` command.
14
+ *
15
+ * @param args - Parsed command arguments for the plugin-meta command.
16
+ */
17
+ export async function builtin_pluginmeta(args) {
18
+ const parsed = commandArgs_process(args);
19
+ const subcommand = parsed._[0];
20
+ if (!subcommand || subcommand === 'list') {
21
+ try {
22
+ const { pluginMetas, selectedFields, totalCount } = await pluginMetas_fetchList(parsed);
23
+ if (pluginMetas.length === 0) {
24
+ console.log(chalk.gray('No plugin metas found.'));
25
+ return;
26
+ }
27
+ table_display(pluginMetas, selectedFields, { title: { title: 'Plugin Metas', justification: 'center' }, pagination: totalCount !== undefined ? { shown: pluginMetas.length, total: totalCount } : undefined });
28
+ }
29
+ catch (e) {
30
+ process.exitCode = 1;
31
+ console.error(chalk.red(`pluginmeta error: ${e instanceof Error ? e.message : String(e)}`));
32
+ }
33
+ return;
34
+ }
35
+ if (subcommand === 'search') {
36
+ const query = parsed._[1] ?? '';
37
+ await builtin_pluginmeta([...args.filter((a) => a !== subcommand), `--search`, query]);
38
+ return;
39
+ }
40
+ if (subcommand === 'inspect') {
41
+ const fields = await pluginMetaFields_fetch();
42
+ if (fields && fields.length > 0) {
43
+ table_display(fields.map((f) => ({ field: f })), ['field'], { title: { title: 'Plugin Meta fields', justification: 'center' } });
44
+ }
45
+ else {
46
+ console.log(chalk.gray('No fields found for plugin metas.'));
47
+ }
48
+ return;
49
+ }
50
+ process.exitCode = 1;
51
+ console.log(chalk.red(`Unknown subcommand: ${subcommand}. Usage: pluginmetas <list|search|inspect>`));
52
+ }
53
+ //# sourceMappingURL=pluginmeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginmeta.js","sourceRoot":"","sources":["../../../src/builtins/res/pluginmeta.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAc,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAwB,MAAM,4CAA4C,CAAC;AACzG,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAG/D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAc;IACrD,MAAM,MAAM,GAAe,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,UAAU,GAAuB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnD,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,GAAyB,MAAM,qBAAqB,CAAC,MAA+B,CAAC,CAAC;YACvI,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YAC5F,aAAa,CAAC,WAAW,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QACjN,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9F,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,kBAAkB,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;QAC/F,OAAO;IACT,CAAC;IAED,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAoB,MAAM,sBAAsB,EAAE,CAAC;QAC/D,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC3I,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,UAAU,4CAA4C,CAAC,CAAC,CAAC;AACxG,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Builtin handler for the `tag` command.
3
+ *
4
+ * @param args - Parsed command arguments for the tag command.
5
+ */
6
+ export declare function builtin_tag(args: string[]): Promise<void>;
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @file Builtin tag command.
3
+ *
4
+ * Subcommands: list, search, inspect
5
+ * Singular/plural aliases: tag / tags
6
+ */
7
+ import chalk from 'chalk';
8
+ import { commandArgs_process } from '../utils.js';
9
+ import { tags_fetchList } from '@fnndsc/chili/commands/tags/list.js';
10
+ import { tagFields_fetch } from '@fnndsc/chili/commands/tags/fields.js';
11
+ import { table_display } from '@fnndsc/chili/screen/screen.js';
12
+ /**
13
+ * Builtin handler for the `tag` command.
14
+ *
15
+ * @param args - Parsed command arguments for the tag command.
16
+ */
17
+ export async function builtin_tag(args) {
18
+ const parsed = commandArgs_process(args);
19
+ const subcommand = parsed._[0];
20
+ if (!subcommand || subcommand === 'list') {
21
+ try {
22
+ const { tags, selectedFields, totalCount } = await tags_fetchList(parsed);
23
+ if (tags.length === 0) {
24
+ console.log(chalk.gray('No tags found.'));
25
+ return;
26
+ }
27
+ table_display(tags, selectedFields, { title: { title: 'Tags', justification: 'center' }, pagination: totalCount !== undefined ? { shown: tags.length, total: totalCount } : undefined });
28
+ }
29
+ catch (e) {
30
+ process.exitCode = 1;
31
+ console.error(chalk.red(`tag error: ${e instanceof Error ? e.message : String(e)}`));
32
+ }
33
+ return;
34
+ }
35
+ if (subcommand === 'search') {
36
+ const query = parsed._[1] ?? '';
37
+ await builtin_tag([...args.filter((a) => a !== subcommand), `--search`, query]);
38
+ return;
39
+ }
40
+ if (subcommand === 'inspect') {
41
+ const fields = await tagFields_fetch();
42
+ if (fields && fields.length > 0) {
43
+ table_display(fields.map((f) => ({ field: f })), ['field'], { title: { title: 'Tag fields', justification: 'center' } });
44
+ }
45
+ else {
46
+ console.log(chalk.gray('No fields found for tags.'));
47
+ }
48
+ return;
49
+ }
50
+ process.exitCode = 1;
51
+ console.log(chalk.red(`Unknown subcommand: ${subcommand}. Usage: tags <list|search|inspect>`));
52
+ }
53
+ //# sourceMappingURL=tag.js.map