@seamapi/cli 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/README.md +118 -0
  2. package/bin/cli.js +78 -100
  3. package/bin/cli.js.map +1 -1
  4. package/completions/seam.bash +11 -0
  5. package/completions/seam.fish +11 -0
  6. package/completions/seam.zsh +13 -0
  7. package/lib/command-spec.d.ts +53 -0
  8. package/lib/command-spec.js +290 -0
  9. package/lib/command-spec.js.map +1 -0
  10. package/lib/completion/describe.d.ts +10 -0
  11. package/lib/completion/describe.js +16 -0
  12. package/lib/completion/describe.js.map +1 -0
  13. package/lib/completion/index.d.ts +20 -0
  14. package/lib/completion/index.js +65 -0
  15. package/lib/completion/index.js.map +1 -0
  16. package/lib/completion/render-bash.d.ts +2 -0
  17. package/lib/completion/render-bash.js +98 -0
  18. package/lib/completion/render-bash.js.map +1 -0
  19. package/lib/completion/render-fish.d.ts +2 -0
  20. package/lib/completion/render-fish.js +58 -0
  21. package/lib/completion/render-fish.js.map +1 -0
  22. package/lib/completion/render-zsh.d.ts +2 -0
  23. package/lib/completion/render-zsh.js +121 -0
  24. package/lib/completion/render-zsh.js.map +1 -0
  25. package/lib/get-response-key.d.ts +9 -0
  26. package/lib/get-response-key.js +21 -0
  27. package/lib/get-response-key.js.map +1 -0
  28. package/lib/interact-for-action-attempt-poll.js +4 -3
  29. package/lib/interact-for-action-attempt-poll.js.map +1 -1
  30. package/lib/interact-for-array.js +9 -7
  31. package/lib/interact-for-array.js.map +1 -1
  32. package/lib/interact-for-blueprint-object.js +9 -8
  33. package/lib/interact-for-blueprint-object.js.map +1 -1
  34. package/lib/interact-for-command-selection.js +2 -2
  35. package/lib/interact-for-command-selection.js.map +1 -1
  36. package/lib/interact-for-custom-metadata.js +10 -8
  37. package/lib/interact-for-custom-metadata.js.map +1 -1
  38. package/lib/interact-for-login.js +8 -6
  39. package/lib/interact-for-login.js.map +1 -1
  40. package/lib/interact-for-resource.js +2 -2
  41. package/lib/interact-for-resource.js.map +1 -1
  42. package/lib/interact-for-server-selection.js +7 -5
  43. package/lib/interact-for-server-selection.js.map +1 -1
  44. package/lib/interact-for-timestamp.js +2 -2
  45. package/lib/interact-for-timestamp.js.map +1 -1
  46. package/lib/interact-for-use-remote-api-defs.js +4 -3
  47. package/lib/interact-for-use-remote-api-defs.js.map +1 -1
  48. package/lib/interact-for-workspace-id.js +2 -2
  49. package/lib/interact-for-workspace-id.js.map +1 -1
  50. package/lib/output/create-memory-output.d.ts +13 -0
  51. package/lib/output/create-memory-output.js +22 -0
  52. package/lib/output/create-memory-output.js.map +1 -0
  53. package/lib/output/create-output.d.ts +50 -0
  54. package/lib/output/create-output.js +34 -0
  55. package/lib/output/create-output.js.map +1 -0
  56. package/lib/output/get-output.d.ts +12 -0
  57. package/lib/output/get-output.js +21 -0
  58. package/lib/output/get-output.js.map +1 -0
  59. package/lib/output/resolve-output-format.d.ts +16 -0
  60. package/lib/output/resolve-output-format.js +23 -0
  61. package/lib/output/resolve-output-format.js.map +1 -0
  62. package/lib/output/select-response-payload.d.ts +16 -0
  63. package/lib/output/select-response-payload.js +33 -0
  64. package/lib/output/select-response-payload.js.map +1 -0
  65. package/lib/render-help.d.ts +8 -0
  66. package/lib/render-help.js +150 -0
  67. package/lib/render-help.js.map +1 -0
  68. package/lib/util/cli-args.d.ts +16 -1
  69. package/lib/util/cli-args.js +18 -2
  70. package/lib/util/cli-args.js.map +1 -1
  71. package/lib/util/prompt.d.ts +17 -0
  72. package/lib/util/prompt.js +25 -0
  73. package/lib/util/prompt.js.map +1 -0
  74. package/lib/util/read-stdin-json.d.ts +22 -0
  75. package/lib/util/read-stdin-json.js +42 -0
  76. package/lib/util/read-stdin-json.js.map +1 -0
  77. package/lib/util/request-seam-api.d.ts +5 -2
  78. package/lib/util/request-seam-api.js +13 -15
  79. package/lib/util/request-seam-api.js.map +1 -1
  80. package/lib/util/with-loading.js +6 -1
  81. package/lib/util/with-loading.js.map +1 -1
  82. package/lib/version.d.ts +1 -1
  83. package/lib/version.js +1 -1
  84. package/package.json +2 -1
  85. package/src/bin/cli.ts +100 -106
  86. package/src/lib/command-spec.ts +400 -0
  87. package/src/lib/completion/describe.ts +21 -0
  88. package/src/lib/completion/index.ts +82 -0
  89. package/src/lib/completion/render-bash.ts +125 -0
  90. package/src/lib/completion/render-fish.ts +80 -0
  91. package/src/lib/completion/render-zsh.ts +157 -0
  92. package/src/lib/get-response-key.ts +25 -0
  93. package/src/lib/interact-for-action-attempt-poll.ts +4 -3
  94. package/src/lib/interact-for-array.ts +9 -7
  95. package/src/lib/interact-for-blueprint-object.ts +9 -8
  96. package/src/lib/interact-for-command-selection.ts +2 -3
  97. package/src/lib/interact-for-custom-metadata.ts +10 -8
  98. package/src/lib/interact-for-login.ts +8 -6
  99. package/src/lib/interact-for-resource.ts +2 -3
  100. package/src/lib/interact-for-server-selection.ts +7 -6
  101. package/src/lib/interact-for-timestamp.ts +2 -2
  102. package/src/lib/interact-for-use-remote-api-defs.ts +4 -4
  103. package/src/lib/interact-for-workspace-id.ts +2 -2
  104. package/src/lib/output/create-memory-output.ts +39 -0
  105. package/src/lib/output/create-output.ts +104 -0
  106. package/src/lib/output/get-output.ts +24 -0
  107. package/src/lib/output/resolve-output-format.ts +33 -0
  108. package/src/lib/output/select-response-payload.ts +56 -0
  109. package/src/lib/render-help.ts +197 -0
  110. package/src/lib/util/cli-args.ts +32 -2
  111. package/src/lib/util/prompt.ts +38 -0
  112. package/src/lib/util/read-stdin-json.ts +59 -0
  113. package/src/lib/util/request-seam-api.ts +24 -20
  114. package/src/lib/util/with-loading.ts +9 -1
  115. package/src/lib/version.ts +1 -1
package/README.md CHANGED
@@ -97,6 +97,124 @@ seam access-codes create --code "1234" --name "My Code"
97
97
  seam access-codes list --device-id $MY_DOOR
98
98
  ```
99
99
 
100
+ ### Output
101
+
102
+ Only the response is written to stdout, so any command may be piped or
103
+ redirected. Prompts, progress, and other information are written to stderr.
104
+
105
+ The response is trimmed to the response key and pagination: no other top level
106
+ fields are reported.
107
+
108
+ ```bash
109
+ # The response, and nothing else, ends up in the file
110
+ seam devices list > devices.json
111
+
112
+ # Prompts and progress still show up in the terminal
113
+ seam devices list | jq '.devices[].device_id'
114
+ ```
115
+
116
+ ### JSON
117
+
118
+ Request params may be piped or redirected in as a JSON object. Params given as
119
+ arguments win over params read from stdin.
120
+
121
+ ```bash
122
+ # Read params from a file
123
+ seam locks unlock-door < params.json
124
+
125
+ # Or from another program
126
+ echo '{"device_id": "'"$MY_DOOR"'"}' | seam locks unlock-door
127
+
128
+ # --device-id wins over any device_id in params.json
129
+ seam devices list --limit 5 < params.json
130
+ ```
131
+
132
+ Pass `--json` to write the response as JSON. It is enabled automatically
133
+ whenever stdout is not a terminal, so piping and redirecting produce JSON
134
+ without passing anything. Pass `--no-json` to opt out and get the pretty
135
+ format instead.
136
+
137
+ ```bash
138
+ # Both write JSON
139
+ seam devices list --json
140
+ seam devices list | jq
141
+
142
+ # Pretty printed, even though it is piped
143
+ seam devices list --no-json | less
144
+ ```
145
+
146
+ Without a terminal to prompt on, the CLI behaves as though
147
+ `--non-interactive` was given: rather than waiting for an answer nobody can
148
+ give, it exits with an error naming what is missing.
149
+
150
+ ```bash
151
+ $ echo '{}' | seam locks unlock-door
152
+ Missing required parameter for /locks/unlock_door: --device-id
153
+ ```
154
+
155
+ An error exits non-zero. A request that fails reports its `error` on stdout,
156
+ so it can be inspected from a pipe; anything else is written to stderr only.
157
+
158
+ ## Help
159
+
160
+ Pass `--help` to any command to see what it accepts. Without a command, it
161
+ lists every top level command; with an incomplete command, it lists the
162
+ subcommands under it; with a full command, it documents that command's
163
+ options, marking the required ones.
164
+
165
+ ```bash
166
+ # Every top level command
167
+ seam --help
168
+
169
+ # The commands under seam devices
170
+ seam devices --help
171
+
172
+ # The options accepted by seam devices list
173
+ seam devices list --help
174
+ ```
175
+
176
+ ## Shell completion
177
+
178
+ The CLI can print a completion script for bash, fish, and zsh that completes
179
+ commands, flags, and flag values such as device types.
180
+
181
+ Load completions into the current shell with
182
+
183
+ ```bash
184
+ # bash
185
+ source <(seam completion bash)
186
+
187
+ # zsh
188
+ source <(seam completion zsh)
189
+ ```
190
+
191
+ Install them for every shell with
192
+
193
+ ```bash
194
+ # bash
195
+ seam completion bash > /usr/share/bash-completion/completions/seam
196
+
197
+ # fish
198
+ seam completion fish > ~/.config/fish/completions/seam.fish
199
+
200
+ # zsh
201
+ seam completion zsh > "${fpath[1]}/_seam"
202
+ ```
203
+
204
+ System packages install completion loaders instead: small scripts packaged
205
+ under `completions/` in the published package and attached to each
206
+ [GitHub release]. A loader runs `seam completion` the first time the shell
207
+ completes a seam command, so installed completions always match the CLI's
208
+ current Seam API definitions and never go stale between package updates. The
209
+ `seam-bin` AUR package installs the loaders for all three shells.
210
+
211
+ Completions are generated from the cached Seam API definitions, so they may
212
+ briefly lag a newly released API. Pass `--update` to refresh the cache first,
213
+ e.g., `seam completion bash --update`. They do not reflect definitions served
214
+ by another Seam API server when `seam config use-remote-api-defs` is enabled.
215
+
216
+ [GitHub release]: https://github.com/seamapi/cli/releases/latest
217
+
100
218
  ## Development and Testing
101
219
 
102
220
  ### Quickstart
package/bin/cli.js CHANGED
@@ -2,10 +2,11 @@
2
2
  import { randomBytes } from 'node:crypto';
3
3
  import { isDeepStrictEqual as isEqual } from 'node:util';
4
4
  import chalk from 'chalk';
5
- import commandLineUsage from 'command-line-usage';
6
- import prompts from 'prompts';
5
+ import { getCommandSpec } from '../lib/command-spec.js';
6
+ import { completionShells, isCompletionShell, renderCompletion, } from '../lib/completion/index.js';
7
7
  import { getConfigStore } from '../lib/config/index.js';
8
8
  import { getApiBlueprint } from '../lib/get-api-blueprint.js';
9
+ import { getResponseKey } from '../lib/get-response-key.js';
9
10
  import { getServer } from '../lib/get-server.js';
10
11
  import { interactForActionAttemptPoll } from '../lib/interact-for-action-attempt-poll.js';
11
12
  import { interactForCommandParams } from '../lib/interact-for-command-params.js';
@@ -14,91 +15,57 @@ import { interactForLogin } from '../lib/interact-for-login.js';
14
15
  import { interactForServerSelection } from '../lib/interact-for-server-selection.js';
15
16
  import { interactForUseRemoteApiDefs } from '../lib/interact-for-use-remote-api-defs.js';
16
17
  import { interactForWorkspaceId } from '../lib/interact-for-workspace-id.js';
17
- import { getInteractivity, interactivityFlags, NonInteractiveError, parseCliArgs, } from '../lib/util/cli-args.js';
18
+ import { createOutput } from '../lib/output/create-output.js';
19
+ import { getOutput, setOutput } from '../lib/output/get-output.js';
20
+ import { resolveOutputFormat } from '../lib/output/resolve-output-format.js';
21
+ import { renderHelp } from '../lib/render-help.js';
22
+ import { cliFlags, getInteractivity, NonInteractiveError, parseCliArgs, } from '../lib/util/cli-args.js';
23
+ import { canPrompt, prompt } from '../lib/util/prompt.js';
24
+ import { readStdinJson } from '../lib/util/read-stdin-json.js';
18
25
  import { RequestSeamApi } from '../lib/util/request-seam-api.js';
19
26
  import { validateToken } from '../lib/validate-token.js';
20
27
  import seamapiCliVersion from '../lib/version.js';
21
- const sections = [
22
- {
23
- header: 'Seam CLI',
24
- content: 'Every seam command runs as soon as every required property is given, and otherwise prompts you for what is missing with helpful suggestions. Pass -i to always review properties first, or -y to never be prompted. ',
25
- },
26
- {
27
- header: 'Options',
28
- optionList: [
29
- {
30
- name: 'help',
31
- description: 'Display this help guide.',
32
- alias: 'h',
33
- type: Boolean,
34
- },
35
- {
36
- name: 'interactive',
37
- description: 'Always prompt to review and edit properties, prefilled with the given arguments.',
38
- alias: 'i',
39
- type: Boolean,
40
- },
41
- {
42
- name: 'non-interactive',
43
- description: 'Never prompt: exit with an error if the command or any required property is missing.',
44
- alias: 'y',
45
- type: Boolean,
46
- },
47
- {
48
- name: 'update',
49
- description: 'Force an update of the cached Seam API definitions.',
50
- type: Boolean,
51
- },
52
- ],
53
- },
54
- {
55
- header: 'Command List Examples',
56
- content: [
57
- { name: 'seam', summary: 'Interactively select commands to execute.' },
58
- { name: 'seam login', summary: 'Login to Seam.' },
59
- {
60
- name: 'seam wizard',
61
- summary: 'Set up Seam in the current project.',
62
- },
63
- { name: 'seam select workspace', summary: 'Select your workspace.' },
64
- {
65
- name: 'seam connect-webviews create',
66
- summary: 'Create a connect webview to connect devices.',
67
- },
68
- { name: 'seam devices list', summary: 'List devices in your workspace.' },
69
- {
70
- name: 'seam devices list {bold --interactive}',
71
- summary: 'Review and edit filters before listing devices.',
72
- },
73
- {
74
- name: 'seam devices list {bold --non-interactive}',
75
- summary: 'List devices, failing instead of prompting.',
76
- },
77
- {
78
- name: 'seam locks unlock-door {bold --device-id} $MY_DOOR',
79
- summary: 'Unlock a lock.',
80
- },
81
- {
82
- name: "seam access-codes create {bold --code} '1234' {bold --name} 'My Code'",
83
- summary: 'Create an access code.',
84
- },
85
- {
86
- name: 'seam access-codes list {bold --device-id} $MY_DOOR',
87
- summary: 'List you access codes.',
88
- },
89
- ],
90
- },
91
- ];
92
28
  async function cli(args) {
93
29
  const config = getConfigStore();
94
- if (args['help'] || args['h']) {
95
- const usage = commandLineUsage(sections);
96
- console.log(usage);
30
+ const output = getOutput();
31
+ const update = args['update'] === true;
32
+ const helpFlag = args['help'] ?? args['h'];
33
+ if (helpFlag != null) {
34
+ // Help comes from the cached API definitions so that it works without
35
+ // logging in, and offline once the cache is warm.
36
+ const spec = getCommandSpec(await getApiBlueprint(false, { update }));
37
+ // minimist reads the word after --help as its value, so 'seam --help
38
+ // devices' asks about devices just as 'seam devices --help' does.
39
+ const commandPath = [
40
+ ...args._,
41
+ ...(typeof helpFlag === 'string' ? [helpFlag] : []),
42
+ ].map(toCommandWord);
43
+ const help = renderHelp(commandPath, spec);
44
+ if (help == null) {
45
+ output.error(chalk.red(`Unknown command: seam ${commandPath.join(' ')}`));
46
+ output.error(`Run 'seam --help' to see the available commands.`);
47
+ process.exitCode = 1;
48
+ return;
49
+ }
50
+ output.text(help);
97
51
  return;
98
52
  }
99
53
  if (args['version']) {
100
- console.log(seamapiCliVersion);
101
- process.exit(0);
54
+ output.text(seamapiCliVersion);
55
+ return;
56
+ }
57
+ if (args._[0] === 'completion') {
58
+ const shell = args._[1];
59
+ if (!isCompletionShell(shell)) {
60
+ output.error(`Usage: seam completion <${completionShells.join('|')}>`);
61
+ process.exitCode = 1;
62
+ return;
63
+ }
64
+ // Completions always come from the cached API definitions so that they
65
+ // can be generated without logging in. They may lag the definitions
66
+ // served by Seam when config use-remote-api-defs is enabled.
67
+ output.text(renderCompletion(shell, await getApiBlueprint(false, { update })));
68
+ return;
102
69
  }
103
70
  if (args._[0] === 'config' &&
104
71
  args._[1] === 'set' &&
@@ -106,31 +73,32 @@ async function cli(args) {
106
73
  const randomstring = randomBytes(5).toString('hex');
107
74
  const fakeApiUrl = `https://${randomstring}.fakeseamconnect.seam.vc`;
108
75
  config.set('server', fakeApiUrl);
109
- console.log(`Server URL set to ${fakeApiUrl}`);
76
+ output.info(`Server URL set to ${fakeApiUrl}`);
110
77
  config.set(`${getServer()}.pat`, `seam_apikey1_token`);
111
- console.log(`PAT set to use fakeseamconnect with "seam_apikey1_token"`);
78
+ output.info(`PAT set to use fakeseamconnect with "seam_apikey1_token"`);
112
79
  return;
113
80
  }
114
81
  if (!config.get(`${getServer()}.pat`) &&
115
82
  args._[0] !== 'login' &&
116
83
  !isEqual(args._, ['select', 'server'])) {
117
- console.log(`Not logged in. Please run "seam login"`);
118
- process.exit(1);
84
+ output.error(`Not logged in. Please run "seam login"`);
85
+ process.exitCode = 1;
86
+ return;
119
87
  }
120
- args._ = args._.map((arg) => arg.toLowerCase().replace(/_/g, '-'));
88
+ args._ = args._.map(toCommandWord);
121
89
  for (const k in args) {
122
90
  args[k.toLowerCase().replace(/-/g, '_')] = args[k];
123
91
  }
124
92
  const use_remote_api_defs = args['remote_api_defs'] ?? config.get('use_remote_api_defs');
125
- const update = args['update'] === true;
126
- delete args['update'];
127
93
  const blueprint = await getApiBlueprint(use_remote_api_defs ?? false, {
128
94
  update,
129
95
  });
130
- const commandParams = {};
96
+ // Params piped or redirected in, e.g., `seam devices list < params.json`.
97
+ // Params given as arguments take precedence over these.
98
+ const commandParams = { ...(await readStdinJson()) };
131
99
  const ctx = {
132
100
  blueprint,
133
- interactivity: getInteractivity(args),
101
+ interactivity: getInteractivity(args, { canPrompt: canPrompt() }),
134
102
  };
135
103
  const isNonInteractive = ctx.interactivity === 'non-interactive';
136
104
  for (const k in args) {
@@ -140,7 +108,7 @@ async function cli(args) {
140
108
  delete args[k];
141
109
  const key = k.replace(/-/g, '_');
142
110
  args[key] = v;
143
- if (interactivityFlags.includes(key))
111
+ if (cliFlags.includes(key))
144
112
  continue;
145
113
  commandParams[key] = v;
146
114
  }
@@ -170,11 +138,11 @@ async function cli(args) {
170
138
  }
171
139
  else if (isEqual(selectedCommand, ['logout'])) {
172
140
  config.delete('pat');
173
- console.log('Logged out!');
141
+ output.info('Logged out!');
174
142
  return;
175
143
  }
176
144
  else if (isEqual(selectedCommand, ['config', 'reveal-location'])) {
177
- console.log(config.path);
145
+ output.text(config.path);
178
146
  return;
179
147
  }
180
148
  else if (isEqual(selectedCommand, ['config', 'use-remote-api-defs'])) {
@@ -247,19 +215,21 @@ async function cli(args) {
247
215
  const response = await RequestSeamApi({
248
216
  path: apiPath,
249
217
  params,
218
+ responseKey: getResponseKey(selectedCommand, ctx),
250
219
  });
251
220
  if (response.data?.connect_webview) {
252
221
  await handleConnectWebviewResponse(response.data.connect_webview, ctx.interactivity);
253
222
  }
254
223
  if (response.data?.action_attempt && !isNonInteractive) {
255
- interactForActionAttemptPoll(response.data.action_attempt);
224
+ await interactForActionAttemptPoll(response.data.action_attempt);
256
225
  }
257
226
  }
227
+ const toCommandWord = (arg) => arg.toLowerCase().replace(/_/g, '-');
258
228
  const handleConnectWebviewResponse = async (connect_webview, interactivity) => {
259
229
  const url = connect_webview.url;
260
230
  if (interactivity !== 'non-interactive' &&
261
231
  process.env['INSIDE_WEB_BROWSER'] !== '1') {
262
- const { action } = await prompts({
232
+ const { action } = await prompt({
263
233
  type: 'confirm',
264
234
  name: 'action',
265
235
  message: 'Would you like to open the webview in your browser?',
@@ -279,16 +249,24 @@ const run = async (argv) => {
279
249
  });
280
250
  return;
281
251
  }
282
- await cli(parseCliArgs(argv));
252
+ const args = parseCliArgs(argv);
253
+ const isTty = process.stdout.isTTY === true;
254
+ setOutput(createOutput({
255
+ format: resolveOutputFormat(argv, { isTty }),
256
+ colors: isTty,
257
+ }));
258
+ await cli(args);
283
259
  };
284
260
  run(process.argv.slice(2)).catch((e) => {
261
+ const output = getOutput();
262
+ process.exitCode = 1;
285
263
  if (e instanceof NonInteractiveError) {
286
- console.log(chalk.red(e.message));
287
- process.exit(1);
288
- }
289
- console.log(chalk.red(`CLI Error: ${e.toString()}\n${e.stack}`));
290
- if (e.toString().includes('object Object')) {
291
- console.log(e);
264
+ output.error(chalk.red(e.message));
265
+ return;
292
266
  }
267
+ const error = e instanceof Error ? e : new Error(String(e));
268
+ output.error(chalk.red(`CLI Error: ${error.message}`));
269
+ if (error.stack != null)
270
+ output.error(chalk.gray(error.stack));
293
271
  });
294
272
  //# sourceMappingURL=cli.js.map
package/bin/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/bin/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/bin/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ # bash completion loader for the seam command.
2
+ #
3
+ # Generated by @seamapi/cli. Loads completions from the CLI on first use, so
4
+ # they always match the CLI's current Seam API definitions. Requires the seam
5
+ # command on PATH. Print the underlying script with 'seam completion bash'.
6
+ #
7
+ # Install to /usr/share/bash-completion/completions/seam
8
+
9
+ if command -v seam > /dev/null 2>&1; then
10
+ eval "$(seam completion bash 2> /dev/null)"
11
+ fi
@@ -0,0 +1,11 @@
1
+ # fish completion loader for the seam command.
2
+ #
3
+ # Generated by @seamapi/cli. Loads completions from the CLI on first use, so
4
+ # they always match the CLI's current Seam API definitions. Requires the seam
5
+ # command on PATH. Print the underlying script with 'seam completion fish'.
6
+ #
7
+ # Install to /usr/share/fish/vendor_completions.d/seam.fish
8
+
9
+ if command --query seam
10
+ seam completion fish 2> /dev/null | source
11
+ end
@@ -0,0 +1,13 @@
1
+ #compdef seam
2
+ # zsh completion loader for the seam command.
3
+ #
4
+ # Generated by @seamapi/cli. Loads completions from the CLI on first use, so
5
+ # they always match the CLI's current Seam API definitions. Requires the seam
6
+ # command on PATH. Print the underlying script with 'seam completion zsh'.
7
+ #
8
+ # Install to a directory in fpath as _seam
9
+
10
+ # The generated script ends by dispatching on funcstack, so evaluating it
11
+ # while this autoloaded _seam runs both redefines _seam and completes the
12
+ # in-flight request.
13
+ eval "$(seam completion zsh 2> /dev/null)"
@@ -0,0 +1,53 @@
1
+ import type { Blueprint } from '@seamapi/blueprint';
2
+ export interface CommandFlag {
3
+ /** Long form without the leading `--`, or `null` for short-only flags. */
4
+ long: string | null;
5
+ /** Short form without the leading `-`, or `null` when there is none. */
6
+ short: string | null;
7
+ description: string;
8
+ /** Known values for the flag, used to complete and document its argument. */
9
+ values: string[];
10
+ /** Whether the flag is followed by a value. */
11
+ takesValue: boolean;
12
+ isRequired: boolean;
13
+ }
14
+ /**
15
+ * Whether a command is part of the CLI itself or calls a Seam API endpoint.
16
+ */
17
+ export type CommandKind = 'cli' | 'api';
18
+ export interface CommandDefinition {
19
+ path: string[];
20
+ kind: CommandKind;
21
+ /** One line naming what the command does. */
22
+ title: string;
23
+ /** Longer prose about the command, empty when there is none to add. */
24
+ description: string;
25
+ flags: CommandFlag[];
26
+ }
27
+ export interface Subcommand {
28
+ name: string;
29
+ /** 'api' when the name holds any command that calls the Seam API. */
30
+ kind: CommandKind;
31
+ description: string;
32
+ }
33
+ export interface CommandGroup {
34
+ /** Command path completed by this group, empty for `seam` itself. */
35
+ path: string[];
36
+ subcommands: Subcommand[];
37
+ }
38
+ export interface CommandSpec {
39
+ /** Every invocable command, sorted by command path. */
40
+ commands: CommandDefinition[];
41
+ /** Every incomplete command path, sorted by command path. */
42
+ groups: CommandGroup[];
43
+ /** Flags accepted regardless of the command. */
44
+ globalFlags: CommandFlag[];
45
+ }
46
+ export declare const globalFlags: CommandFlag[];
47
+ export declare const flagTokens: (flag: CommandFlag) => string[];
48
+ export declare const getCommandSpec: (blueprint: Blueprint) => CommandSpec;
49
+ export declare const findCommand: (spec: CommandSpec, path: string[]) => CommandDefinition | undefined;
50
+ export declare const findGroup: (spec: CommandSpec, path: string[]) => CommandGroup | undefined;
51
+ /** Reduce documentation markdown to a single line of prose. */
52
+ export declare const toPlainText: (markdown: string) => string;
53
+ export declare const firstSentence: (text: string) => string;