@nocobase/app-cli-client 0.0.0-stage → 0.1.0-beta.1

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 (178) hide show
  1. package/README.md +24 -2
  2. package/dist/brand.d.ts +52 -0
  3. package/dist/brand.d.ts.map +1 -0
  4. package/dist/brand.js +61 -0
  5. package/dist/brand.js.map +1 -0
  6. package/dist/commands.d.ts +9 -0
  7. package/dist/commands.d.ts.map +1 -0
  8. package/dist/commands.js +30 -0
  9. package/dist/commands.js.map +1 -0
  10. package/dist/completion.d.ts +13 -0
  11. package/dist/completion.d.ts.map +1 -0
  12. package/dist/completion.js +157 -0
  13. package/dist/completion.js.map +1 -0
  14. package/dist/config.d.ts +100 -0
  15. package/dist/config.d.ts.map +1 -0
  16. package/dist/config.js +43 -0
  17. package/dist/config.js.map +1 -0
  18. package/dist/docs.d.ts +9 -0
  19. package/dist/docs.d.ts.map +1 -0
  20. package/dist/docs.js +146 -0
  21. package/dist/docs.js.map +1 -0
  22. package/dist/dynamic/execute.d.ts +24 -0
  23. package/dist/dynamic/execute.d.ts.map +1 -0
  24. package/dist/dynamic/execute.js +125 -0
  25. package/dist/dynamic/execute.js.map +1 -0
  26. package/dist/dynamic/files.d.ts +21 -0
  27. package/dist/dynamic/files.d.ts.map +1 -0
  28. package/dist/dynamic/files.js +79 -0
  29. package/dist/dynamic/files.js.map +1 -0
  30. package/dist/dynamic/help.d.ts +6 -0
  31. package/dist/dynamic/help.d.ts.map +1 -0
  32. package/dist/dynamic/help.js +42 -0
  33. package/dist/dynamic/help.js.map +1 -0
  34. package/dist/dynamic/index.d.ts +34 -0
  35. package/dist/dynamic/index.d.ts.map +1 -0
  36. package/dist/dynamic/index.js +197 -0
  37. package/dist/dynamic/index.js.map +1 -0
  38. package/dist/dynamic/manifest.d.ts +21 -0
  39. package/dist/dynamic/manifest.d.ts.map +1 -0
  40. package/dist/dynamic/manifest.js +175 -0
  41. package/dist/dynamic/manifest.js.map +1 -0
  42. package/dist/dynamic/output.d.ts +14 -0
  43. package/dist/dynamic/output.d.ts.map +1 -0
  44. package/dist/dynamic/output.js +103 -0
  45. package/dist/dynamic/output.js.map +1 -0
  46. package/dist/dynamic/parse.d.ts +3 -0
  47. package/dist/dynamic/parse.d.ts.map +1 -0
  48. package/dist/dynamic/parse.js +13 -0
  49. package/dist/dynamic/parse.js.map +1 -0
  50. package/dist/dynamic/rest.d.ts +29 -0
  51. package/dist/dynamic/rest.d.ts.map +1 -0
  52. package/dist/dynamic/rest.js +212 -0
  53. package/dist/dynamic/rest.js.map +1 -0
  54. package/dist/dynamic/session.d.ts +20 -0
  55. package/dist/dynamic/session.d.ts.map +1 -0
  56. package/dist/dynamic/session.js +70 -0
  57. package/dist/dynamic/session.js.map +1 -0
  58. package/dist/dynamic/ticket.d.ts +13 -0
  59. package/dist/dynamic/ticket.d.ts.map +1 -0
  60. package/dist/dynamic/ticket.js +40 -0
  61. package/dist/dynamic/ticket.js.map +1 -0
  62. package/dist/hooks/command-not-found.d.ts +4 -0
  63. package/dist/hooks/command-not-found.d.ts.map +1 -0
  64. package/dist/hooks/command-not-found.js +6 -0
  65. package/dist/hooks/command-not-found.js.map +1 -0
  66. package/dist/index.d.ts +8 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +14 -0
  69. package/dist/index.js.map +1 -0
  70. package/dist/install.d.ts +72 -0
  71. package/dist/install.d.ts.map +1 -0
  72. package/dist/install.js +148 -0
  73. package/dist/install.js.map +1 -0
  74. package/dist/lib/command.d.ts +35 -0
  75. package/dist/lib/command.d.ts.map +1 -0
  76. package/dist/lib/command.js +97 -0
  77. package/dist/lib/command.js.map +1 -0
  78. package/dist/lib/credentials.d.ts +110 -0
  79. package/dist/lib/credentials.d.ts.map +1 -0
  80. package/dist/lib/credentials.js +330 -0
  81. package/dist/lib/credentials.js.map +1 -0
  82. package/dist/lib/device.d.ts +48 -0
  83. package/dist/lib/device.d.ts.map +1 -0
  84. package/dist/lib/device.js +189 -0
  85. package/dist/lib/device.js.map +1 -0
  86. package/dist/lib/envelope.d.ts +21 -0
  87. package/dist/lib/envelope.d.ts.map +1 -0
  88. package/dist/lib/envelope.js +87 -0
  89. package/dist/lib/envelope.js.map +1 -0
  90. package/dist/lib/files.d.ts +4 -0
  91. package/dist/lib/files.d.ts.map +1 -0
  92. package/dist/lib/files.js +23 -0
  93. package/dist/lib/files.js.map +1 -0
  94. package/dist/lib/globals.d.ts +25 -0
  95. package/dist/lib/globals.d.ts.map +1 -0
  96. package/dist/lib/globals.js +77 -0
  97. package/dist/lib/globals.js.map +1 -0
  98. package/dist/lib/http.d.ts +45 -0
  99. package/dist/lib/http.d.ts.map +1 -0
  100. package/dist/lib/http.js +141 -0
  101. package/dist/lib/http.js.map +1 -0
  102. package/dist/lib/mime.d.ts +3 -0
  103. package/dist/lib/mime.d.ts.map +1 -0
  104. package/dist/lib/mime.js +38 -0
  105. package/dist/lib/mime.js.map +1 -0
  106. package/dist/lib/secrets/index.d.ts +18 -0
  107. package/dist/lib/secrets/index.d.ts.map +1 -0
  108. package/dist/lib/secrets/index.js +55 -0
  109. package/dist/lib/secrets/index.js.map +1 -0
  110. package/dist/lib/secrets/macos.d.ts +13 -0
  111. package/dist/lib/secrets/macos.d.ts.map +1 -0
  112. package/dist/lib/secrets/macos.js +61 -0
  113. package/dist/lib/secrets/macos.js.map +1 -0
  114. package/dist/lib/secrets/secret-service.d.ts +17 -0
  115. package/dist/lib/secrets/secret-service.d.ts.map +1 -0
  116. package/dist/lib/secrets/secret-service.js +81 -0
  117. package/dist/lib/secrets/secret-service.js.map +1 -0
  118. package/dist/lib/secrets/store.d.ts +28 -0
  119. package/dist/lib/secrets/store.d.ts.map +1 -0
  120. package/dist/lib/secrets/store.js +41 -0
  121. package/dist/lib/secrets/store.js.map +1 -0
  122. package/dist/lib/secrets/windows.d.ts +20 -0
  123. package/dist/lib/secrets/windows.d.ts.map +1 -0
  124. package/dist/lib/secrets/windows.js +155 -0
  125. package/dist/lib/secrets/windows.js.map +1 -0
  126. package/dist/lib/update-hint.d.ts +5 -0
  127. package/dist/lib/update-hint.d.ts.map +1 -0
  128. package/dist/lib/update-hint.js +26 -0
  129. package/dist/lib/update-hint.js.map +1 -0
  130. package/dist/login.d.ts +15 -0
  131. package/dist/login.d.ts.map +1 -0
  132. package/dist/login.js +232 -0
  133. package/dist/login.js.map +1 -0
  134. package/dist/logout.d.ts +13 -0
  135. package/dist/logout.d.ts.map +1 -0
  136. package/dist/logout.js +56 -0
  137. package/dist/logout.js.map +1 -0
  138. package/dist/parse/arguments.d.ts +84 -0
  139. package/dist/parse/arguments.d.ts.map +1 -0
  140. package/dist/parse/arguments.js +460 -0
  141. package/dist/parse/arguments.js.map +1 -0
  142. package/dist/parse/exit.d.ts +7 -0
  143. package/dist/parse/exit.d.ts.map +1 -0
  144. package/dist/parse/exit.js +24 -0
  145. package/dist/parse/exit.js.map +1 -0
  146. package/dist/parse/help.d.ts +22 -0
  147. package/dist/parse/help.d.ts.map +1 -0
  148. package/dist/parse/help.js +151 -0
  149. package/dist/parse/help.js.map +1 -0
  150. package/dist/parse/index.d.ts +5 -0
  151. package/dist/parse/index.d.ts.map +1 -0
  152. package/dist/parse/index.js +7 -0
  153. package/dist/parse/index.js.map +1 -0
  154. package/dist/parse/manifest.d.ts +97 -0
  155. package/dist/parse/manifest.d.ts.map +1 -0
  156. package/dist/parse/manifest.js +4 -0
  157. package/dist/parse/manifest.js.map +1 -0
  158. package/dist/profile.d.ts +4 -0
  159. package/dist/profile.d.ts.map +1 -0
  160. package/dist/profile.js +80 -0
  161. package/dist/profile.js.map +1 -0
  162. package/dist/request.d.ts +25 -0
  163. package/dist/request.d.ts.map +1 -0
  164. package/dist/request.js +35 -0
  165. package/dist/request.js.map +1 -0
  166. package/dist/run.d.ts +17 -0
  167. package/dist/run.d.ts.map +1 -0
  168. package/dist/run.js +88 -0
  169. package/dist/run.js.map +1 -0
  170. package/dist/update.d.ts +45 -0
  171. package/dist/update.d.ts.map +1 -0
  172. package/dist/update.js +177 -0
  173. package/dist/update.js.map +1 -0
  174. package/dist/whoami.d.ts +31 -0
  175. package/dist/whoami.d.ts.map +1 -0
  176. package/dist/whoami.js +118 -0
  177. package/dist/whoami.js.map +1 -0
  178. package/package.json +67 -3
@@ -0,0 +1,151 @@
1
+ // The help of a manifest command, and the list of an area's commands, as text: what the CLI on a machine and an online
2
+ // run's shell both print.
3
+ import { DOWNLOAD_OUT_FLAG } from '@nocobase/agent-protocol';
4
+ import { commandWords, parameterLabel, positionalOf } from "./arguments.js";
5
+ /** Rows as two aligned columns, indented. */
6
+ export function helpColumns(rows) {
7
+ const width = Math.max(...rows.map(([left]) => left.length));
8
+ return rows.map(([left, right]) => ` ${left.padEnd(width)} ${right}`.trimEnd());
9
+ }
10
+ /** Where a default comes from, as help names it: `$GITHUB_REPOSITORY or $CI_PROJECT_PATH`. */
11
+ function envLabel(sources) {
12
+ return sources
13
+ .map((source) => typeof source === 'string'
14
+ ? `$${source}`
15
+ : `${source.path} of $${source.file}`)
16
+ .join(' or ');
17
+ }
18
+ function valueHint(parameter) {
19
+ if (parameter.type === 'boolean')
20
+ return '';
21
+ if (parameter.in === 'file' || parameter.binary)
22
+ return ' <path>';
23
+ if (parameter.enum)
24
+ return ` <${parameter.enum.join('|')}>`;
25
+ if (parameter.type === 'string[]' || parameter.type === 'number[]')
26
+ return ' <value>…';
27
+ if (parameter.type === 'json')
28
+ return ' <json|key=value>';
29
+ return ` <${parameter.type}>`;
30
+ }
31
+ /** The FLAGS rows of a command. */
32
+ export function flagRows(command, localFiles = true) {
33
+ const lines = [];
34
+ for (const parameter of command.parameters) {
35
+ if (parameter.position !== undefined)
36
+ continue;
37
+ if (!localFiles && (parameter.in === 'file' || parameter.binary))
38
+ continue;
39
+ const notes = [
40
+ parameter.required ? 'required' : '',
41
+ parameter.default !== undefined
42
+ ? `default: ${JSON.stringify(parameter.default)}`
43
+ : '',
44
+ parameter.env?.length ? `default from ${envLabel(parameter.env)}` : '',
45
+ parameter.upload?.multiple ? 'repeat for more' : '',
46
+ parameter.ticket
47
+ ? `streamed; at most ${parameter.ticket.maxBytes} bytes`
48
+ : '',
49
+ parameter.changed
50
+ ? `sends the files changed in ${parameter.changed.dir}, at most ${parameter.changed.maxFiles}`
51
+ : '',
52
+ (parameter.type === 'string[]' || parameter.type === 'number[]') &&
53
+ !parameter.upload
54
+ ? 'repeat for more'
55
+ : '',
56
+ ].filter(Boolean);
57
+ lines.push([
58
+ `${parameter.alias ? `-${parameter.alias}, ` : ''}--${parameter.name}${valueHint(parameter)}`,
59
+ `${parameter.description ?? ''}${notes.length > 0 ? ` (${notes.join(', ')})` : ''}`.trim(),
60
+ ]);
61
+ if (parameter.contentFile)
62
+ lines.push([
63
+ `--${parameter.name}-file <path>`,
64
+ `Read --${parameter.name} from a file.`,
65
+ ]);
66
+ }
67
+ const fromEnv = command.parameters.find((parameter) => parameter.fromEnv !== undefined);
68
+ if (fromEnv) {
69
+ const source = command.parameters.find((parameter) => parameter.field === fromEnv.fromEnv);
70
+ lines.push([
71
+ '--from-env',
72
+ `Read ${parameterLabel(fromEnv)} from the environment variable named by ${source ? parameterLabel(source) : fromEnv.fromEnv}, keeping it off the command line.`,
73
+ ]);
74
+ }
75
+ if (command.body?.file)
76
+ lines.push([
77
+ `--${command.body.file} <file.json>`,
78
+ 'The request body as a JSON object; the flags override its fields.',
79
+ ]);
80
+ if (localFiles && command.output.kind === 'download')
81
+ lines.push([
82
+ `--${DOWNLOAD_OUT_FLAG} <path>`,
83
+ 'Where to save the file: a path, or a directory to save it into (default: the current directory, under its own name).',
84
+ ]);
85
+ return lines;
86
+ }
87
+ /** A command's help: usage, arguments, flags, description and examples. */
88
+ export function renderCommandHelp(command, options) {
89
+ const { bin } = options;
90
+ const positional = positionalOf(command);
91
+ const flags = flagRows(command, options.localFiles ?? true);
92
+ const globals = options.globalFlags ?? [];
93
+ const usage = [
94
+ bin,
95
+ commandWords(command),
96
+ ...positional.map((parameter) => parameter.required ? `<${parameter.name}>` : `[<${parameter.name}>]`),
97
+ '[flags]',
98
+ ].join(' ');
99
+ return [
100
+ command.summary,
101
+ '',
102
+ 'USAGE',
103
+ ` $ ${usage}`,
104
+ ...(positional.length > 0
105
+ ? [
106
+ '',
107
+ 'ARGUMENTS',
108
+ ...helpColumns(positional.map((parameter) => [
109
+ parameter.name,
110
+ `${parameter.description ?? ''}${parameter.required ? '' : ' (optional)'}`.trim(),
111
+ ])),
112
+ ]
113
+ : []),
114
+ ...(flags.length > 0 ? ['', 'FLAGS', ...helpColumns(flags)] : []),
115
+ ...(globals.length > 0
116
+ ? ['', 'GLOBAL FLAGS', ...helpColumns(globals)]
117
+ : []),
118
+ ...(command.description
119
+ ? ['', 'DESCRIPTION', ` ${command.description}`]
120
+ : []),
121
+ ...(command.examples?.length
122
+ ? [
123
+ '',
124
+ 'EXAMPLES',
125
+ ...command.examples.map((example) => ` $ ${bin} ${example}`),
126
+ ]
127
+ : []),
128
+ ].join('\n');
129
+ }
130
+ /** The commands under `prefix` (all with an empty prefix), one line each; undefined when there are none. */
131
+ export function renderCommandList(commands, prefix = []) {
132
+ const start = prefix.join(':');
133
+ const listed = commands.filter((command) => !start || command.id === start || command.id.startsWith(`${start}:`));
134
+ if (listed.length === 0)
135
+ return undefined;
136
+ return helpColumns(listed.map((command) => [commandWords(command), command.summary])).join('\n');
137
+ }
138
+ /** The help of the commands under `prefix`; undefined when there are none. */
139
+ export function renderTopicHelp(bin, commands, prefix) {
140
+ const list = renderCommandList(commands, prefix);
141
+ if (!list)
142
+ return undefined;
143
+ return [
144
+ 'USAGE',
145
+ ` $ ${[bin, ...prefix, 'COMMAND'].join(' ')}`,
146
+ '',
147
+ 'COMMANDS',
148
+ list,
149
+ ].join('\n');
150
+ }
151
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/parse/help.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { accepts, CliParseError, envDefaultOf, commandWords, missingArguments, needsLocalFiles, parameterLabel, parseCommandLine, positionalOf, type CliCall, type CliFileRef, type CliParseIo, type CliParseOptions, } from './arguments.ts';
2
+ export { apiExitCode } from './exit.ts';
3
+ export { flagRows, helpColumns, renderCommandHelp, renderCommandList, renderTopicHelp, type CommandHelpOptions, type HelpRow, } from './help.ts';
4
+ export type { CliCommand, CliEnvDefault, CliManifest, CliParameter, CliWithheldCommand, } from './manifest.ts';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parse/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,OAAO,EACP,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EACL,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,OAAO,GACb,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,UAAU,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACZ,kBAAkB,GACnB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,7 @@
1
+ // `@nocobase/app-cli-client/parse`: how a command line is read against a manifest command, and the help built from the
2
+ // manifest, with no file, environment or terminal of its own. The CLI reads its lines with it, and so does the `acme`
3
+ // command of an online run's shell, through a `CliParseIo` over that shell's files and environment.
4
+ export { accepts, CliParseError, envDefaultOf, commandWords, missingArguments, needsLocalFiles, parameterLabel, parseCommandLine, positionalOf, } from "./arguments.js";
5
+ export { apiExitCode } from "./exit.js";
6
+ export { flagRows, helpColumns, renderCommandHelp, renderCommandList, renderTopicHelp, } from "./help.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parse/index.ts"],"names":[],"mappings":"AAAA,uHAAuH;AACvH,sHAAsH;AACtH,oGAAoG;AACpG,OAAO,EACL,OAAO,EACP,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,YAAY,GAKb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EACL,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,GAGhB,MAAM,WAAW,CAAC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Where an input left off the line is read from: an environment variable, or a field (dot-separated `path`) of the
3
+ * JSON file the variable `file` names.
4
+ */
5
+ export type CliEnvDefault = string | {
6
+ readonly file: string;
7
+ readonly path: string;
8
+ };
9
+ /** One input of a command: an argument or a flag, and where it goes in the request. */
10
+ export interface CliParameter {
11
+ readonly name: string;
12
+ readonly field: string;
13
+ readonly in: 'path' | 'query' | 'body' | 'file';
14
+ readonly position?: number | undefined;
15
+ readonly type: 'string' | 'number' | 'integer' | 'boolean' | 'string[]' | 'number[]' | 'json';
16
+ readonly required: boolean;
17
+ readonly description?: string | undefined;
18
+ readonly enum?: readonly string[] | undefined;
19
+ readonly default?: unknown;
20
+ readonly alias?: string | undefined;
21
+ readonly contentFile?: boolean | undefined;
22
+ readonly prompt?: boolean | undefined;
23
+ /** `--from-env` fills it from the environment variable named by the value of this field. */
24
+ readonly fromEnv?: string | undefined;
25
+ /** Read from the environment when not given, the first found wins; a value given on the line always wins. */
26
+ readonly env?: readonly CliEnvDefault[] | undefined;
27
+ readonly upload?: {
28
+ readonly method: string;
29
+ readonly path: string;
30
+ readonly part: string;
31
+ readonly field: string;
32
+ readonly multiple: boolean;
33
+ readonly maxBytes?: number | undefined;
34
+ } | undefined;
35
+ readonly ticket?: {
36
+ readonly maxBytes: number;
37
+ readonly accept?: readonly string[] | undefined;
38
+ /** The file may be left out; when given, its name goes in the body field `field`. */
39
+ readonly optional?: boolean | undefined;
40
+ } | undefined;
41
+ readonly changed?: {
42
+ readonly dir: string;
43
+ readonly manifest: string;
44
+ readonly maxBytes: number;
45
+ readonly maxFiles: number;
46
+ readonly accept?: readonly string[] | undefined;
47
+ } | undefined;
48
+ readonly binary?: boolean | undefined;
49
+ readonly multiple?: boolean | undefined;
50
+ }
51
+ /** One command: a request to one API route. */
52
+ export interface CliCommand {
53
+ readonly id: string;
54
+ readonly summary: string;
55
+ readonly description?: string | undefined;
56
+ readonly operationId?: string | undefined;
57
+ readonly method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
58
+ readonly path: string;
59
+ readonly parameters: readonly CliParameter[];
60
+ readonly body?: {
61
+ readonly media: 'application/json' | 'multipart/form-data';
62
+ readonly file?: string | undefined;
63
+ readonly required?: boolean | undefined;
64
+ } | undefined;
65
+ readonly output: {
66
+ readonly kind: 'data' | 'list' | 'empty' | 'download';
67
+ readonly columns?: readonly string[] | undefined;
68
+ };
69
+ readonly confirm?: string | undefined;
70
+ readonly examples?: readonly string[] | undefined;
71
+ readonly identities: readonly ('person' | 'run')[];
72
+ readonly action?: string | undefined;
73
+ }
74
+ /** A command the caller is not offered, and why. */
75
+ export interface CliWithheldCommand {
76
+ readonly id: string;
77
+ readonly summary: string;
78
+ readonly reason: 'identity' | 'action';
79
+ readonly identities: readonly ('person' | 'run')[];
80
+ readonly action?: string | undefined;
81
+ }
82
+ export interface CliManifest {
83
+ readonly version: number;
84
+ readonly etag: string;
85
+ readonly identity: {
86
+ readonly kind: 'person' | 'run';
87
+ readonly userId: string;
88
+ readonly displayName: string;
89
+ readonly runId?: string | undefined;
90
+ /** Absent from a server older than manifest version 4. */
91
+ readonly actions?: readonly string[] | undefined;
92
+ };
93
+ readonly commands: readonly CliCommand[];
94
+ /** Absent from a server older than manifest version 4. */
95
+ readonly withheld?: readonly CliWithheldCommand[] | undefined;
96
+ }
97
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/parse/manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ // The command manifest as a CLI reads it (`GET /api/cli/manifest`): the commands the application's API document describes
2
+ // for the caller, each a request to one of its routes. Types only, so the parser beside it runs anywhere.
3
+ export {};
4
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/parse/manifest.ts"],"names":[],"mappings":"AAAA,0HAA0H;AAC1H,0GAA0G"}
@@ -0,0 +1,4 @@
1
+ import { type Command } from '@oclif/core';
2
+ import type { AppCliConfig } from './config.ts';
3
+ export declare function profileCommands(app: AppCliConfig): Record<string, Command.Class>;
4
+ //# sourceMappingURL=profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AAGA,OAAO,EAAQ,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAIjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAYhD,wBAAgB,eAAe,CAC7B,GAAG,EAAE,YAAY,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CA4F/B"}
@@ -0,0 +1,80 @@
1
+ // `<bin> profile list|use|remove`: the servers the CLI is signed in to, one profile each (`lib/credentials.ts`).
2
+ import { createInterface } from 'node:readline/promises';
3
+ import { Args } from '@oclif/core';
4
+ import { EXIT_CODES } from '@nocobase/agent-protocol';
5
+ import { AppCommand, UsageError } from "./lib/command.js";
6
+ import { checkProfileName, listProfiles, removeProfile, useProfile, } from "./lib/credentials.js";
7
+ import { CliCommandError } from "./lib/envelope.js";
8
+ import { describeStorage } from "./lib/secrets/index.js";
9
+ export function profileCommands(app) {
10
+ class List extends AppCommand {
11
+ static summary = 'List the profiles: one per server signed in to.';
12
+ async run() {
13
+ await this.parse(List);
14
+ const profiles = await listProfiles({ paths: this.paths, config: app });
15
+ if (profiles.length === 0)
16
+ this.log(`No profiles. Sign in with \`${app.bin} login\`.`);
17
+ for (const profile of profiles)
18
+ this.log(`${profile.current ? '*' : ' '} ${profile.name.padEnd(12)} ${profile.server} ${profile.keyName ? `"${profile.keyName}", ` : ''}${describeStorage(profile.storage, 'config.json')}`);
19
+ return { profiles };
20
+ }
21
+ }
22
+ class Use extends AppCommand {
23
+ static summary = 'Make a profile the current one.';
24
+ static args = {
25
+ name: Args.string({ description: 'The profile.', required: true }),
26
+ };
27
+ static examples = ['<%= config.bin %> profile use staging'];
28
+ async run() {
29
+ const { args } = await this.parse(Use);
30
+ await useProfile(checkProfileName(args.name), {
31
+ paths: this.paths,
32
+ config: app,
33
+ });
34
+ this.log(`Using profile ${args.name}.`);
35
+ return { current: args.name };
36
+ }
37
+ }
38
+ class Remove extends AppCommand {
39
+ static summary = 'Forget a profile and its key here, leaving the key valid on the server.';
40
+ static description = `To revoke the key too, run \`${app.bin} logout --profile <name>\` instead.`;
41
+ static supportsDryRun = true;
42
+ static args = {
43
+ name: Args.string({ description: 'The profile.', required: true }),
44
+ };
45
+ async run() {
46
+ const { args } = await this.parse(Remove);
47
+ const name = checkProfileName(args.name);
48
+ const known = (await listProfiles({ paths: this.paths, config: app })).find((profile) => profile.name === name);
49
+ if (!known)
50
+ throw new UsageError(`There is no profile ${name}.`, EXIT_CODES.notFound);
51
+ if (this.dryRun) {
52
+ this.log(`Would forget profile ${name} (${known.server}).`);
53
+ return { removed: name, server: known.server, dryRun: true };
54
+ }
55
+ if (!this.yes) {
56
+ if (!process.stdin.isTTY || !process.stderr.isTTY)
57
+ throw new CliCommandError('CONFIRMATION_REQUIRED', `Forget profile ${name} (${known.server})? Nothing was done without a terminal to ask in.`, {
58
+ exit: EXIT_CODES.validation,
59
+ suggestions: [
60
+ { message: 'Pass --yes to go ahead without asking.' },
61
+ ],
62
+ });
63
+ const lines = createInterface({
64
+ input: process.stdin,
65
+ output: process.stderr,
66
+ });
67
+ const answer = await lines
68
+ .question(`Forget profile ${name} (${known.server})? [y/N] `)
69
+ .finally(() => lines.close());
70
+ if (!/^y(es)?$/iu.test(answer.trim()))
71
+ throw new UsageError('Not done.', EXIT_CODES.general);
72
+ }
73
+ await removeProfile(name, { paths: this.paths, config: app });
74
+ this.log(`Forgot profile ${name}.`);
75
+ return { removed: name, server: known.server };
76
+ }
77
+ }
78
+ return { 'profile:list': List, 'profile:use': Use, 'profile:remove': Remove };
79
+ }
80
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /** The part of a manifest parameter the request needs. */
2
+ export interface RequestParameter {
3
+ readonly field: string;
4
+ readonly in: 'path' | 'query' | 'body' | 'file';
5
+ }
6
+ /** The part of a manifest command the request needs. */
7
+ export interface RequestCommand {
8
+ readonly method: string;
9
+ /** Below the server's origin, with `{field}` placeholders. */
10
+ readonly path: string;
11
+ }
12
+ /** A command's request: its method, its path with the query string, and its body's fields. */
13
+ export interface FilledRequest {
14
+ readonly method: string;
15
+ readonly path: string;
16
+ readonly fields: Record<string, unknown>;
17
+ }
18
+ /** A value as it goes into a path or a query string. */
19
+ export declare function requestText(value: unknown): string;
20
+ /**
21
+ * Fills `command`'s request with `values`, each a parameter and its value; `base` holds body fields the values then
22
+ * override, such as a body read from a file. `file` parameters are left to the caller.
23
+ */
24
+ export declare function fillRequest(command: RequestCommand, values: Iterable<readonly [RequestParameter, unknown]>, base?: Readonly<Record<string, unknown>>): FilledRequest;
25
+ //# sourceMappingURL=request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AAIA,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;CACjD;AAED,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,8FAA8F;AAC9F,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;AAED,wDAAwD;AACxD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAElD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,EACtD,IAAI,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM,GAC3C,aAAa,CAsBf"}
@@ -0,0 +1,35 @@
1
+ // The request a manifest command makes, from the values given for its parameters: path parameters fill the route's
2
+ // `{field}` placeholders, query parameters the query string (an array repeats), body parameters the body's fields. It
3
+ // imports nothing, so a server that calls its own routes the way the CLI does (an online agent's tools) shares it.
4
+ /** A value as it goes into a path or a query string. */
5
+ export function requestText(value) {
6
+ return typeof value === 'string' ? value : JSON.stringify(value);
7
+ }
8
+ /**
9
+ * Fills `command`'s request with `values`, each a parameter and its value; `base` holds body fields the values then
10
+ * override, such as a body read from a file. `file` parameters are left to the caller.
11
+ */
12
+ export function fillRequest(command, values, base = {}) {
13
+ let route = command.path;
14
+ const query = new URLSearchParams();
15
+ const fields = { ...base };
16
+ for (const [parameter, value] of values) {
17
+ if (value === undefined)
18
+ continue;
19
+ if (parameter.in === 'path')
20
+ route = route.replace(`{${parameter.field}}`, encodeURIComponent(requestText(value)));
21
+ else if (parameter.in === 'query') {
22
+ for (const item of Array.isArray(value) ? value : [value])
23
+ query.append(parameter.field, requestText(item));
24
+ }
25
+ else if (parameter.in === 'body')
26
+ fields[parameter.field] = value;
27
+ }
28
+ const search = query.toString();
29
+ return {
30
+ method: command.method,
31
+ path: search ? `${route}?${search}` : route,
32
+ fields,
33
+ };
34
+ }
35
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AAAA,mHAAmH;AACnH,sHAAsH;AACtH,mHAAmH;AAsBnH,wDAAwD;AACxD,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,OAAuB,EACvB,MAAsD,EACtD,OAA0C,EAAE;IAE5C,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IACzB,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;IACpC,MAAM,MAAM,GAA4B,EAAE,GAAG,IAAI,EAAE,CAAC;IACpD,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QACxC,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,IAAI,SAAS,CAAC,EAAE,KAAK,MAAM;YACzB,KAAK,GAAG,KAAK,CAAC,OAAO,CACnB,IAAI,SAAS,CAAC,KAAK,GAAG,EACtB,kBAAkB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CACvC,CAAC;aACC,IAAI,SAAS,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC;YAClC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACvD,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,SAAS,CAAC,EAAE,KAAK,MAAM;YAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IACtE,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IAChC,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK;QAC3C,MAAM;KACP,CAAC;AACJ,CAAC"}
package/dist/run.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ import { type Command } from '@oclif/core';
2
+ import { type AppCliConfig } from './config.ts';
3
+ export interface RunAppCliOptions {
4
+ /** Static commands the application adds, by oclif id (`topic:name`). */
5
+ readonly commands?: Readonly<Record<string, Command.Class>>;
6
+ readonly topics?: Readonly<Record<string, {
7
+ description: string;
8
+ }>>;
9
+ /**
10
+ * The first words of lines whose commands read every flag themselves, such as `runner`: the global flags stay on
11
+ * those lines, so `runner uninstall --dry-run` reaches its own `--dry-run`.
12
+ */
13
+ readonly ownFlags?: readonly string[];
14
+ }
15
+ /** Runs the CLI `config` describes with `argv`, and exits the way oclif does. */
16
+ export declare function runAppCli(config: AppCliConfig, argv?: string[], options?: RunAppCliOptions): Promise<void>;
17
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAEA,OAAO,EAA8B,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAMvE,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AA8BjE,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IACpE;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAqCD,iFAAiF;AACjF,wBAAsB,SAAS,CAC7B,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,MAAM,EAA0B,EACtC,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAkCf"}
package/dist/run.js ADDED
@@ -0,0 +1,88 @@
1
+ // Loads and runs the CLI. The oclif configuration is synthesized here rather than read from package.json, so the same
2
+ // code runs from `src/` (Node strips the types) and from the compiled `dist/`.
3
+ import { Config, Errors, flush, run } from '@oclif/core';
4
+ import { readFileSync } from 'node:fs';
5
+ import path from 'node:path';
6
+ import { defineCommands, STATIC_TOPICS } from "./commands.js";
7
+ import { configureAppCli } from "./config.js";
8
+ import { setOriginalArgv } from "./dynamic/index.js";
9
+ import { failureEnvelope } from "./lib/envelope.js";
10
+ import { extractGlobalFlags, globalFlags, setGlobalFlags, } from "./lib/globals.js";
11
+ import { UsageError } from "./lib/command.js";
12
+ /** A line whose global flags cannot be read: answered as any invalid usage is. */
13
+ async function refuseLine(config, argv, error) {
14
+ const failure = new UsageError(error instanceof Error ? error.message : String(error));
15
+ if (argv.includes('--json'))
16
+ process.stdout.write(`${JSON.stringify(failureEnvelope(argv.filter((word) => !word.startsWith('-')).join(' '), failure, [], config.bin), null, 2)}\n`);
17
+ else
18
+ process.stderr.write(` › Error: ${failure.message}\n`);
19
+ process.exitCode = failure.exit;
20
+ }
21
+ // src/run.ts and dist/run.js both sit one level below the package root.
22
+ const PACKAGE_ROOT = path.resolve(import.meta.dirname, '..');
23
+ function pjson(config, fromSource, topics) {
24
+ const manifest = JSON.parse(readFileSync(path.join(PACKAGE_ROOT, 'package.json'), 'utf8'));
25
+ const extension = fromSource ? 'ts' : 'js';
26
+ const root = fromSource ? './src' : './dist';
27
+ const description = config.description ?? manifest.description;
28
+ return {
29
+ // oclif's name heads `--version` (`acme/1.2.3 darwin-arm64 node-v24…`): the branded command, not this package.
30
+ name: config.bin,
31
+ version: config.version ?? manifest.version,
32
+ ...(description === undefined ? {} : { description }),
33
+ oclif: {
34
+ bin: config.bin,
35
+ dirname: config.bin,
36
+ topicSeparator: ' ',
37
+ additionalHelpFlags: ['-h'],
38
+ topics: { ...STATIC_TOPICS, ...topics },
39
+ commands: {
40
+ strategy: 'explicit',
41
+ target: `${root}/commands.${extension}`,
42
+ identifier: 'COMMANDS',
43
+ },
44
+ hooks: {
45
+ command_not_found: `${root}/hooks/command-not-found.${extension}`,
46
+ },
47
+ helpClass: `${root}/dynamic/help.${extension}`,
48
+ },
49
+ };
50
+ }
51
+ /** Runs the CLI `config` describes with `argv`, and exits the way oclif does. */
52
+ export async function runAppCli(config, argv = process.argv.slice(2), options = {}) {
53
+ const fromSource = import.meta.filename.endsWith('.ts');
54
+ configureAppCli(config);
55
+ let line;
56
+ try {
57
+ const own = options.ownFlags?.includes(argv[0] ?? '') ||
58
+ (argv[0] === 'help' && options.ownFlags?.includes(argv[1] ?? ''));
59
+ const extracted = own
60
+ ? { argv: [...argv], flags: extractGlobalFlags([]).flags }
61
+ : extractGlobalFlags(argv);
62
+ line = extracted.argv;
63
+ setGlobalFlags(extracted.flags);
64
+ }
65
+ catch (error) {
66
+ await refuseLine(config, argv, error);
67
+ return;
68
+ }
69
+ if (globalFlags().noColor || process.env.NO_COLOR) {
70
+ process.env.NO_COLOR = '1';
71
+ process.env.FORCE_COLOR = '0';
72
+ }
73
+ defineCommands(config, options.commands);
74
+ setOriginalArgv(line);
75
+ argv = line;
76
+ try {
77
+ const loaded = await Config.load({
78
+ root: PACKAGE_ROOT,
79
+ pjson: pjson(config, fromSource, options.topics ?? {}),
80
+ });
81
+ await run(argv, loaded);
82
+ await flush();
83
+ }
84
+ catch (error) {
85
+ await Errors.handle(error);
86
+ }
87
+ }
88
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}