@seamapi/cli 0.9.0 → 0.11.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 (87) hide show
  1. package/README.md +83 -6
  2. package/bin/cli.js +106 -31
  3. package/bin/cli.js.map +1 -1
  4. package/lib/get-response-key.d.ts +9 -0
  5. package/lib/get-response-key.js +21 -0
  6. package/lib/get-response-key.js.map +1 -0
  7. package/lib/interact-for-action-attempt-poll.js +4 -3
  8. package/lib/interact-for-action-attempt-poll.js.map +1 -1
  9. package/lib/interact-for-array.js +9 -7
  10. package/lib/interact-for-array.js.map +1 -1
  11. package/lib/interact-for-blueprint-object.js +21 -10
  12. package/lib/interact-for-blueprint-object.js.map +1 -1
  13. package/lib/interact-for-command-selection.js +17 -2
  14. package/lib/interact-for-command-selection.js.map +1 -1
  15. package/lib/interact-for-custom-metadata.js +10 -8
  16. package/lib/interact-for-custom-metadata.js.map +1 -1
  17. package/lib/interact-for-login.js +8 -6
  18. package/lib/interact-for-login.js.map +1 -1
  19. package/lib/interact-for-resource.js +2 -2
  20. package/lib/interact-for-resource.js.map +1 -1
  21. package/lib/interact-for-server-selection.js +7 -5
  22. package/lib/interact-for-server-selection.js.map +1 -1
  23. package/lib/interact-for-timestamp.js +2 -2
  24. package/lib/interact-for-timestamp.js.map +1 -1
  25. package/lib/interact-for-use-remote-api-defs.js +4 -3
  26. package/lib/interact-for-use-remote-api-defs.js.map +1 -1
  27. package/lib/interact-for-workspace-id.js +2 -2
  28. package/lib/interact-for-workspace-id.js.map +1 -1
  29. package/lib/output/create-memory-output.d.ts +13 -0
  30. package/lib/output/create-memory-output.js +22 -0
  31. package/lib/output/create-memory-output.js.map +1 -0
  32. package/lib/output/create-output.d.ts +50 -0
  33. package/lib/output/create-output.js +34 -0
  34. package/lib/output/create-output.js.map +1 -0
  35. package/lib/output/get-output.d.ts +12 -0
  36. package/lib/output/get-output.js +21 -0
  37. package/lib/output/get-output.js.map +1 -0
  38. package/lib/output/resolve-output-format.d.ts +16 -0
  39. package/lib/output/resolve-output-format.js +23 -0
  40. package/lib/output/resolve-output-format.js.map +1 -0
  41. package/lib/output/select-response-payload.d.ts +16 -0
  42. package/lib/output/select-response-payload.js +33 -0
  43. package/lib/output/select-response-payload.js.map +1 -0
  44. package/lib/types.d.ts +2 -1
  45. package/lib/util/cli-args.d.ts +45 -0
  46. package/lib/util/cli-args.js +58 -0
  47. package/lib/util/cli-args.js.map +1 -0
  48. package/lib/util/prompt.d.ts +17 -0
  49. package/lib/util/prompt.js +25 -0
  50. package/lib/util/prompt.js.map +1 -0
  51. package/lib/util/read-stdin-json.d.ts +22 -0
  52. package/lib/util/read-stdin-json.js +42 -0
  53. package/lib/util/read-stdin-json.js.map +1 -0
  54. package/lib/util/request-seam-api.d.ts +5 -2
  55. package/lib/util/request-seam-api.js +13 -15
  56. package/lib/util/request-seam-api.js.map +1 -1
  57. package/lib/util/with-loading.js +6 -1
  58. package/lib/util/with-loading.js.map +1 -1
  59. package/lib/version.d.ts +1 -1
  60. package/lib/version.js +1 -1
  61. package/lib/version.js.map +1 -1
  62. package/package.json +1 -1
  63. package/src/bin/cli.ts +139 -33
  64. package/src/lib/get-response-key.ts +25 -0
  65. package/src/lib/interact-for-action-attempt-poll.ts +4 -3
  66. package/src/lib/interact-for-array.ts +9 -7
  67. package/src/lib/interact-for-blueprint-object.ts +27 -10
  68. package/src/lib/interact-for-command-selection.ts +23 -3
  69. package/src/lib/interact-for-custom-metadata.ts +10 -8
  70. package/src/lib/interact-for-login.ts +8 -6
  71. package/src/lib/interact-for-resource.ts +2 -3
  72. package/src/lib/interact-for-server-selection.ts +7 -6
  73. package/src/lib/interact-for-timestamp.ts +2 -2
  74. package/src/lib/interact-for-use-remote-api-defs.ts +4 -4
  75. package/src/lib/interact-for-workspace-id.ts +2 -2
  76. package/src/lib/output/create-memory-output.ts +39 -0
  77. package/src/lib/output/create-output.ts +104 -0
  78. package/src/lib/output/get-output.ts +24 -0
  79. package/src/lib/output/resolve-output-format.ts +33 -0
  80. package/src/lib/output/select-response-payload.ts +56 -0
  81. package/src/lib/types.ts +2 -1
  82. package/src/lib/util/cli-args.ts +92 -0
  83. package/src/lib/util/prompt.ts +38 -0
  84. package/src/lib/util/read-stdin-json.ts +59 -0
  85. package/src/lib/util/request-seam-api.ts +24 -20
  86. package/src/lib/util/with-loading.ts +9 -1
  87. package/src/lib/version.ts +1 -1
package/README.md CHANGED
@@ -9,9 +9,9 @@ A command line interface (CLI) for interacting with the Seam API.
9
9
 
10
10
  ## Description
11
11
 
12
- Every command is interactive: the CLI prompts for any missing required
13
- parameter with suggestions pulled from your workspace. Pass `-y` to take the
14
- first suggestion instead of being asked.
12
+ Commands run as soon as every required parameter is given. Anything missing is
13
+ prompted for, with suggestions pulled from your workspace. Pass
14
+ `--non-interactive` (or `-y`) to never be prompted: the command fails instead.
15
15
 
16
16
  ## Installation
17
17
 
@@ -37,9 +37,19 @@ $ paru -S seam-bin
37
37
 
38
38
  ## Usage
39
39
 
40
- Every `seam` command is interactive and will prompt you for any missing
41
- required properties with helpful suggestions. To avoid automatic behavior,
42
- pass `-y`.
40
+ Every `seam` command makes its request as soon as every required property is
41
+ given. When something is missing, the CLI prompts you for it with helpful
42
+ suggestions.
43
+
44
+ Pass `--interactive` (or `-i`) to always be prompted to review and edit
45
+ properties before the request is made. The prompt is prefilled with whatever
46
+ you passed as arguments, so this is the way to add optional properties, or to
47
+ check a request before making it.
48
+
49
+ For scripts and CI, pass `--non-interactive` (or `-y`) to never be prompted.
50
+ The command must then be complete: if the command itself is ambiguous, or any
51
+ required property is missing, the CLI exits with an error naming what is
52
+ missing instead of asking for it.
43
53
 
44
54
  To take a project from zero to a working Seam integration, run the
45
55
  [Seam Wizard] from the project's root:
@@ -66,6 +76,15 @@ seam connect-webviews create
66
76
  # List devices in your workspace
67
77
  seam devices list
68
78
 
79
+ # Review and edit filters before listing devices
80
+ seam devices list --interactive
81
+
82
+ # List devices, failing instead of prompting
83
+ seam devices list --non-interactive
84
+
85
+ # Fails with: Missing required parameter for /locks/unlock_door: --device-id
86
+ seam locks unlock-door --non-interactive
87
+
69
88
  MY_DOOR=$(seam devices get --name "Front Door" --id-only)
70
89
 
71
90
  # Unlock a lock
@@ -78,6 +97,64 @@ seam access-codes create --code "1234" --name "My Code"
78
97
  seam access-codes list --device-id $MY_DOOR
79
98
  ```
80
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
+
81
158
  ## Development and Testing
82
159
 
83
160
  ### Quickstart
package/bin/cli.js CHANGED
@@ -3,10 +3,9 @@ import { randomBytes } from 'node:crypto';
3
3
  import { isDeepStrictEqual as isEqual } from 'node:util';
4
4
  import chalk from 'chalk';
5
5
  import commandLineUsage from 'command-line-usage';
6
- import parseArgs, {} from 'minimist';
7
- import prompts from 'prompts';
8
6
  import { getConfigStore } from '../lib/config/index.js';
9
7
  import { getApiBlueprint } from '../lib/get-api-blueprint.js';
8
+ import { getResponseKey } from '../lib/get-response-key.js';
10
9
  import { getServer } from '../lib/get-server.js';
11
10
  import { interactForActionAttemptPoll } from '../lib/interact-for-action-attempt-poll.js';
12
11
  import { interactForCommandParams } from '../lib/interact-for-command-params.js';
@@ -15,13 +14,19 @@ import { interactForLogin } from '../lib/interact-for-login.js';
15
14
  import { interactForServerSelection } from '../lib/interact-for-server-selection.js';
16
15
  import { interactForUseRemoteApiDefs } from '../lib/interact-for-use-remote-api-defs.js';
17
16
  import { interactForWorkspaceId } from '../lib/interact-for-workspace-id.js';
17
+ import { createOutput } from '../lib/output/create-output.js';
18
+ import { getOutput, setOutput } from '../lib/output/get-output.js';
19
+ import { resolveOutputFormat } from '../lib/output/resolve-output-format.js';
20
+ import { cliFlags, getInteractivity, NonInteractiveError, parseCliArgs, } from '../lib/util/cli-args.js';
21
+ import { canPrompt, prompt } from '../lib/util/prompt.js';
22
+ import { readStdinJson } from '../lib/util/read-stdin-json.js';
18
23
  import { RequestSeamApi } from '../lib/util/request-seam-api.js';
19
24
  import { validateToken } from '../lib/validate-token.js';
20
25
  import seamapiCliVersion from '../lib/version.js';
21
26
  const sections = [
22
27
  {
23
28
  header: 'Seam CLI',
24
- content: 'Every seam command is interactive and will prompt you for any missing required properties with helpful suggestions. To avoid automatic behavior, pass -y ',
29
+ 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
30
  },
26
31
  {
27
32
  header: 'Options',
@@ -32,6 +37,23 @@ const sections = [
32
37
  alias: 'h',
33
38
  type: Boolean,
34
39
  },
40
+ {
41
+ name: 'interactive',
42
+ description: 'Always prompt to review and edit properties, prefilled with the given arguments.',
43
+ alias: 'i',
44
+ type: Boolean,
45
+ },
46
+ {
47
+ name: 'non-interactive',
48
+ description: 'Never prompt: exit with an error if the command or any required property is missing.',
49
+ alias: 'y',
50
+ type: Boolean,
51
+ },
52
+ {
53
+ name: 'json',
54
+ description: 'Write the response to stdout as JSON. Enabled automatically when stdout is not a terminal, disable with {bold --no-json}.',
55
+ type: Boolean,
56
+ },
35
57
  {
36
58
  name: 'update',
37
59
  description: 'Force an update of the cached Seam API definitions.',
@@ -39,6 +61,14 @@ const sections = [
39
61
  },
40
62
  ],
41
63
  },
64
+ {
65
+ header: 'Output',
66
+ content: [
67
+ 'Only the response is written to stdout, so it is safe to pipe. Prompts, progress, and other information are written to stderr.',
68
+ 'The response is trimmed to the response key and pagination.',
69
+ 'Request params may be piped or redirected in as a JSON object. Params given as arguments win over params read from stdin.',
70
+ ],
71
+ },
42
72
  {
43
73
  header: 'Command List Examples',
44
74
  content: [
@@ -54,6 +84,14 @@ const sections = [
54
84
  summary: 'Create a connect webview to connect devices.',
55
85
  },
56
86
  { name: 'seam devices list', summary: 'List devices in your workspace.' },
87
+ {
88
+ name: 'seam devices list {bold --interactive}',
89
+ summary: 'Review and edit filters before listing devices.',
90
+ },
91
+ {
92
+ name: 'seam devices list {bold --non-interactive}',
93
+ summary: 'List devices, failing instead of prompting.',
94
+ },
57
95
  {
58
96
  name: 'seam locks unlock-door {bold --device-id} $MY_DOOR',
59
97
  summary: 'Unlock a lock.',
@@ -66,19 +104,27 @@ const sections = [
66
104
  name: 'seam access-codes list {bold --device-id} $MY_DOOR',
67
105
  summary: 'List you access codes.',
68
106
  },
107
+ {
108
+ name: 'seam devices list > devices.json',
109
+ summary: 'Write the response to a file as JSON.',
110
+ },
111
+ {
112
+ name: 'cat params.json | seam locks unlock-door',
113
+ summary: 'Pipe request params in as JSON.',
114
+ },
69
115
  ],
70
116
  },
71
117
  ];
72
118
  async function cli(args) {
73
119
  const config = getConfigStore();
120
+ const output = getOutput();
74
121
  if (args['help'] || args['h']) {
75
- const usage = commandLineUsage(sections);
76
- console.log(usage);
122
+ output.text(commandLineUsage(sections));
77
123
  return;
78
124
  }
79
125
  if (args['version']) {
80
- console.log(seamapiCliVersion);
81
- process.exit(0);
126
+ output.text(seamapiCliVersion);
127
+ return;
82
128
  }
83
129
  if (args._[0] === 'config' &&
84
130
  args._[1] === 'set' &&
@@ -86,16 +132,17 @@ async function cli(args) {
86
132
  const randomstring = randomBytes(5).toString('hex');
87
133
  const fakeApiUrl = `https://${randomstring}.fakeseamconnect.seam.vc`;
88
134
  config.set('server', fakeApiUrl);
89
- console.log(`Server URL set to ${fakeApiUrl}`);
135
+ output.info(`Server URL set to ${fakeApiUrl}`);
90
136
  config.set(`${getServer()}.pat`, `seam_apikey1_token`);
91
- console.log(`PAT set to use fakeseamconnect with "seam_apikey1_token"`);
137
+ output.info(`PAT set to use fakeseamconnect with "seam_apikey1_token"`);
92
138
  return;
93
139
  }
94
140
  if (!config.get(`${getServer()}.pat`) &&
95
141
  args._[0] !== 'login' &&
96
142
  !isEqual(args._, ['select', 'server'])) {
97
- console.log(`Not logged in. Please run "seam login"`);
98
- process.exit(1);
143
+ output.error(`Not logged in. Please run "seam login"`);
144
+ process.exitCode = 1;
145
+ return;
99
146
  }
100
147
  args._ = args._.map((arg) => arg.toLowerCase().replace(/_/g, '-'));
101
148
  for (const k in args) {
@@ -107,22 +154,24 @@ async function cli(args) {
107
154
  const blueprint = await getApiBlueprint(use_remote_api_defs ?? false, {
108
155
  update,
109
156
  });
110
- const commandParams = {};
111
- /**
112
- * Whether or not to auto-select first option
113
- */
114
- const is_interactive = args['y'] !== true;
157
+ // Params piped or redirected in, e.g., `seam devices list < params.json`.
158
+ // Params given as arguments take precedence over these.
159
+ const commandParams = { ...(await readStdinJson()) };
115
160
  const ctx = {
116
161
  blueprint,
117
- is_interactive,
162
+ interactivity: getInteractivity(args, { canPrompt: canPrompt() }),
118
163
  };
164
+ const isNonInteractive = ctx.interactivity === 'non-interactive';
119
165
  for (const k in args) {
120
166
  if (k === '_')
121
167
  continue;
122
168
  const v = args[k];
123
169
  delete args[k];
124
- args[k.replace(/-/g, '_')] = v;
125
- commandParams[k.replace(/-/g, '_')] = v;
170
+ const key = k.replace(/-/g, '_');
171
+ args[key] = v;
172
+ if (cliFlags.includes(key))
173
+ continue;
174
+ commandParams[key] = v;
126
175
  }
127
176
  const selectedCommand = await interactForCommandSelection(args._, ctx);
128
177
  if (isEqual(selectedCommand, ['login'])) {
@@ -142,23 +191,32 @@ async function cli(args) {
142
191
  if (args['token'] || args['workspace_id'] || args['server']) {
143
192
  return;
144
193
  }
194
+ if (isNonInteractive) {
195
+ throw new NonInteractiveError('Missing required parameter for login: --token');
196
+ }
145
197
  await interactForLogin();
146
198
  return;
147
199
  }
148
200
  else if (isEqual(selectedCommand, ['logout'])) {
149
201
  config.delete('pat');
150
- console.log('Logged out!');
202
+ output.info('Logged out!');
151
203
  return;
152
204
  }
153
205
  else if (isEqual(selectedCommand, ['config', 'reveal-location'])) {
154
- console.log(config.path);
206
+ output.text(config.path);
155
207
  return;
156
208
  }
157
209
  else if (isEqual(selectedCommand, ['config', 'use-remote-api-defs'])) {
210
+ if (isNonInteractive) {
211
+ throw new NonInteractiveError('Cannot select whether to use remote API definitions in non-interactive mode');
212
+ }
158
213
  await interactForUseRemoteApiDefs();
159
214
  return;
160
215
  }
161
216
  else if (isEqual(selectedCommand, ['select', 'workspace'])) {
217
+ if (isNonInteractive) {
218
+ throw new NonInteractiveError('Cannot select a workspace in non-interactive mode: pass --workspace-id to "seam login"');
219
+ }
162
220
  await interactForWorkspaceId();
163
221
  return;
164
222
  }
@@ -175,6 +233,9 @@ async function cli(args) {
175
233
  config.delete('current_workspace_id');
176
234
  return;
177
235
  }
236
+ if (isNonInteractive) {
237
+ throw new NonInteractiveError('Missing required parameter for select server: --server');
238
+ }
178
239
  await interactForServerSelection();
179
240
  return;
180
241
  }
@@ -215,18 +276,20 @@ async function cli(args) {
215
276
  const response = await RequestSeamApi({
216
277
  path: apiPath,
217
278
  params,
279
+ responseKey: getResponseKey(selectedCommand, ctx),
218
280
  });
219
281
  if (response.data?.connect_webview) {
220
- await handleConnectWebviewResponse(response.data.connect_webview);
282
+ await handleConnectWebviewResponse(response.data.connect_webview, ctx.interactivity);
221
283
  }
222
- if (response.data?.action_attempt) {
223
- interactForActionAttemptPoll(response.data.action_attempt);
284
+ if (response.data?.action_attempt && !isNonInteractive) {
285
+ await interactForActionAttemptPoll(response.data.action_attempt);
224
286
  }
225
287
  }
226
- const handleConnectWebviewResponse = async (connect_webview) => {
288
+ const handleConnectWebviewResponse = async (connect_webview, interactivity) => {
227
289
  const url = connect_webview.url;
228
- if (process.env['INSIDE_WEB_BROWSER'] !== '1') {
229
- const { action } = await prompts({
290
+ if (interactivity !== 'non-interactive' &&
291
+ process.env['INSIDE_WEB_BROWSER'] !== '1') {
292
+ const { action } = await prompt({
230
293
  type: 'confirm',
231
294
  name: 'action',
232
295
  message: 'Would you like to open the webview in your browser?',
@@ -246,12 +309,24 @@ const run = async (argv) => {
246
309
  });
247
310
  return;
248
311
  }
249
- await cli(parseArgs(argv, { string: ['code'] }));
312
+ const args = parseCliArgs(argv);
313
+ const isTty = process.stdout.isTTY === true;
314
+ setOutput(createOutput({
315
+ format: resolveOutputFormat(argv, { isTty }),
316
+ colors: isTty,
317
+ }));
318
+ await cli(args);
250
319
  };
251
320
  run(process.argv.slice(2)).catch((e) => {
252
- console.log(chalk.red(`CLI Error: ${e.toString()}\n${e.stack}`));
253
- if (e.toString().includes('object Object')) {
254
- console.log(e);
321
+ const output = getOutput();
322
+ process.exitCode = 1;
323
+ if (e instanceof NonInteractiveError) {
324
+ output.error(chalk.red(e.message));
325
+ return;
255
326
  }
327
+ const error = e instanceof Error ? e : new Error(String(e));
328
+ output.error(chalk.red(`CLI Error: ${error.message}`));
329
+ if (error.stack != null)
330
+ output.error(chalk.gray(error.stack));
256
331
  });
257
332
  //# 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,9 @@
1
+ import type { ContextHelpers } from './types.js';
2
+ /**
3
+ * The top level response key documented for a command,
4
+ * e.g., `devices` for `seam devices list`.
5
+ *
6
+ * Returns null when the command is not in the blueprint,
7
+ * or when it does not respond with a resource.
8
+ */
9
+ export declare const getResponseKey: (command: string[], ctx: ContextHelpers) => string | null;
@@ -0,0 +1,21 @@
1
+ import { getCommandBlueprintDef } from './get-command-blueprint-def.js';
2
+ /**
3
+ * The top level response key documented for a command,
4
+ * e.g., `devices` for `seam devices list`.
5
+ *
6
+ * Returns null when the command is not in the blueprint,
7
+ * or when it does not respond with a resource.
8
+ */
9
+ export const getResponseKey = (command, ctx) => {
10
+ let endpoint;
11
+ try {
12
+ endpoint = getCommandBlueprintDef(command, ctx);
13
+ }
14
+ catch {
15
+ return null;
16
+ }
17
+ if (endpoint.response.responseType === 'void')
18
+ return null;
19
+ return endpoint.response.responseKey;
20
+ };
21
+ //# sourceMappingURL=get-response-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-response-key.js","sourceRoot":"","sources":["../src/lib/get-response-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AAGvE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,OAAiB,EACjB,GAAmB,EACJ,EAAE;IACjB,IAAI,QAAQ,CAAA;IACZ,IAAI,CAAC;QACH,QAAQ,GAAG,sBAAsB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IAE1D,OAAO,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAA;AACtC,CAAC,CAAA"}
@@ -1,9 +1,10 @@
1
- import prompts from 'prompts';
2
1
  import { getSeam } from './get-seam.js';
2
+ import { getOutput } from './output/get-output.js';
3
+ import { prompt } from './util/prompt.js';
3
4
  import { withLoading } from './util/with-loading.js';
4
5
  export const interactForActionAttemptPoll = async (action_attempt) => {
5
6
  if (action_attempt.status === 'pending') {
6
- const { poll_for_action_attempt } = await prompts({
7
+ const { poll_for_action_attempt } = await prompt({
7
8
  name: 'poll_for_action_attempt',
8
9
  message: "Would you like to poll the action attempt until it's ready?",
9
10
  type: 'toggle',
@@ -15,7 +16,7 @@ export const interactForActionAttemptPoll = async (action_attempt) => {
15
16
  const seam = await getSeam();
16
17
  const { action_attempt_id } = action_attempt;
17
18
  const updated_action_attempt = await withLoading('Polling action attempt...', () => seam.actionAttempts.get({ action_attempt_id }, { waitForActionAttempt: { pollingInterval: 240, timeout: 10_000 } }));
18
- console.dir(updated_action_attempt, { depth: null });
19
+ getOutput().data({ action_attempt: updated_action_attempt });
19
20
  }
20
21
  }
21
22
  };
@@ -1 +1 @@
1
- {"version":3,"file":"interact-for-action-attempt-poll.js","sourceRoot":"","sources":["../src/lib/interact-for-action-attempt-poll.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,SAAS,CAAA;AAE7B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAC/C,cAA2D,EAC3D,EAAE;IACF,IAAI,cAAc,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACxC,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,OAAO,CAAC;YAChD,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,6DAA6D;YACtE,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,IAAI;SACf,CAAC,CAAA;QAEF,IAAI,uBAAuB,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAA;YAC5B,MAAM,EAAE,iBAAiB,EAAE,GAAG,cAAc,CAAA;YAE5C,MAAM,sBAAsB,GAAG,MAAM,WAAW,CAC9C,2BAA2B,EAC3B,GAAG,EAAE,CACH,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,EAAE,iBAAiB,EAAE,EACrB,EAAE,oBAAoB,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CACpE,CACJ,CAAA;YACD,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACtD,CAAC;IACH,CAAC;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"interact-for-action-attempt-poll.js","sourceRoot":"","sources":["../src/lib/interact-for-action-attempt-poll.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAC/C,cAA2D,EAC3D,EAAE;IACF,IAAI,cAAc,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACxC,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC;YAC/C,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,6DAA6D;YACtE,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,IAAI;SACf,CAAC,CAAA;QAEF,IAAI,uBAAuB,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAA;YAC5B,MAAM,EAAE,iBAAiB,EAAE,GAAG,cAAc,CAAA;YAE5C,MAAM,sBAAsB,GAAG,MAAM,WAAW,CAC9C,2BAA2B,EAC3B,GAAG,EAAE,CACH,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,EAAE,iBAAiB,EAAE,EACrB,EAAE,oBAAoB,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CACpE,CACJ,CAAA;YACD,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,sBAAsB,EAAE,CAAC,CAAA;QAC9D,CAAC;IACH,CAAC;AACH,CAAC,CAAA"}
@@ -1,21 +1,23 @@
1
- import prompts from 'prompts';
1
+ import { getOutput } from './output/get-output.js';
2
+ import { prompt } from './util/prompt.js';
2
3
  export const interactForArray = async (array, message) => {
3
4
  const updatedArray = [...array];
5
+ const output = getOutput();
4
6
  const displayList = () => {
5
- console.log(`${message} Current list:`);
7
+ output.info(`${message} Current list:`);
6
8
  if (updatedArray.length > 0) {
7
9
  updatedArray.forEach((item, index) => {
8
- console.log(`${index + 1}: ${item}`);
10
+ output.info(`${index + 1}: ${item}`);
9
11
  });
10
12
  }
11
13
  else {
12
- console.log('The list is currently empty.');
14
+ output.info('The list is currently empty.');
13
15
  }
14
16
  };
15
17
  let action;
16
18
  do {
17
19
  displayList();
18
- const response = await prompts({
20
+ const response = await prompt({
19
21
  type: 'select',
20
22
  name: 'action',
21
23
  message: 'Choose an action:',
@@ -27,7 +29,7 @@ export const interactForArray = async (array, message) => {
27
29
  });
28
30
  action = response.action;
29
31
  if (action === 'add') {
30
- const { newItem } = await prompts({
32
+ const { newItem } = await prompt({
31
33
  type: 'text',
32
34
  name: 'newItem',
33
35
  message: 'Enter the new item:',
@@ -37,7 +39,7 @@ export const interactForArray = async (array, message) => {
37
39
  }
38
40
  }
39
41
  else if (action === 'remove') {
40
- const { index } = await prompts({
42
+ const { index } = await prompt({
41
43
  type: 'number',
42
44
  name: 'index',
43
45
  message: 'Enter the index of the item to remove:',
@@ -1 +1 @@
1
- {"version":3,"file":"interact-for-array.js","sourceRoot":"","sources":["../src/lib/interact-for-array.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAE7B,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,KAAe,EACf,OAAe,EACI,EAAE;IACrB,MAAM,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA;IAE/B,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,gBAAgB,CAAC,CAAA;QACvC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACnC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;YACtC,CAAC,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC,CAAA;IAED,IAAI,MAAc,CAAA;IAClB,GAAG,CAAC;QACF,WAAW,EAAE,CAAA;QAEb,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;YAC7B,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,mBAAmB;YAC5B,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE;gBACtC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE;gBAC5C,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE;aAC3C;SACF,CAAC,CAAA;QAEF,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;QAExB,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC;gBAChC,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,qBAAqB;aAC/B,CAAC,CAAA;YACF,IAAI,OAAO,EAAE,CAAC;gBACZ,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC;gBAC9B,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,wCAAwC;gBACjD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe;aACrE,CAAC,CAAA;YACF,IAAI,KAAK,EAAE,CAAC;gBACV,YAAY,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC;QACH,CAAC;IACH,CAAC,QAAQ,MAAM,KAAK,MAAM,EAAC;IAE3B,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA"}
1
+ {"version":3,"file":"interact-for-array.js","sourceRoot":"","sources":["../src/lib/interact-for-array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,KAAe,EACf,OAAe,EACI,EAAE;IACrB,MAAM,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA;IAC/B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,gBAAgB,CAAC,CAAA;QACvC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACnC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;YACtC,CAAC,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC,CAAA;IAED,IAAI,MAAc,CAAA;IAClB,GAAG,CAAC;QACF,WAAW,EAAE,CAAA;QAEb,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC;YAC5B,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,mBAAmB;YAC5B,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE;gBACtC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE;gBAC5C,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE;aAC3C;SACF,CAAC,CAAA;QAEF,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;QAExB,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC;gBAC/B,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,qBAAqB;aAC/B,CAAC,CAAA;YACF,IAAI,OAAO,EAAE,CAAC;gBACZ,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC;gBAC7B,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,wCAAwC;gBACjD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe;aACrE,CAAC,CAAA;YACF,IAAI,KAAK,EAAE,CAAC;gBACV,YAAY,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC;QACH,CAAC;IACH,CAAC,QAAQ,MAAM,KAAK,MAAM,EAAC;IAE3B,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA"}
@@ -1,4 +1,3 @@
1
- import prompts from 'prompts';
2
1
  import { interactForAccessCode } from './interact-for-access-code.js';
3
2
  import { interactForAcsEntrance } from './interact-for-acs-entrance.js';
4
3
  import { interactForAcsSystem } from './interact-for-acs-system.js';
@@ -9,7 +8,10 @@ import { interactForCustomMetadata } from './interact-for-custom-metadata.js';
9
8
  import { interactForDevice } from './interact-for-device.js';
10
9
  import { interactForTimestamp } from './interact-for-timestamp.js';
11
10
  import { interactForUserIdentity } from './interact-for-user-identity.js';
11
+ import { getOutput } from './output/get-output.js';
12
+ import { NonInteractiveError, toArgName } from './util/cli-args.js';
12
13
  import { ellipsis } from './util/ellipsis.js';
14
+ import { prompt } from './util/prompt.js';
13
15
  const ergonomicPropOrder = [
14
16
  'name',
15
17
  'connected_account_id',
@@ -28,10 +30,20 @@ export const interactForBlueprintObject = async (args, ctx) => {
28
30
  .filter((parameter) => parameter.isRequired)
29
31
  .map((parameter) => parameter.name);
30
32
  const haveAllRequiredParams = required.every((k) => args.params[k]);
31
- const should_auto_submit = !ctx.is_interactive && haveAllRequiredParams && !args.isSubProperty;
33
+ const cmdPath = `/${args.command.join('/').replace(/-/g, '_')}`;
34
+ const should_auto_submit = ctx.interactivity !== 'interactive' &&
35
+ haveAllRequiredParams &&
36
+ !args.isSubProperty;
32
37
  if (should_auto_submit) {
33
38
  return args.params;
34
39
  }
40
+ if (ctx.interactivity === 'non-interactive') {
41
+ const missing = required.filter((k) => !args.params[k]);
42
+ const target = args.isSubProperty ? `"${args.subPropertyPath}"` : cmdPath;
43
+ throw new NonInteractiveError(missing.length > 0
44
+ ? `Missing required ${missing.length === 1 ? 'parameter' : 'parameters'} for ${target}: ${missing.map(toArgName).join(' ')}`
45
+ : `Cannot prompt for ${target} in non-interactive mode`);
46
+ }
35
47
  const propSortScore = (prop) => {
36
48
  if (required.includes(prop))
37
49
  return 100 - ergonomicPropOrder.indexOf(prop);
@@ -40,12 +52,11 @@ export const interactForBlueprintObject = async (args, ctx) => {
40
52
  }
41
53
  return ergonomicPropOrder.indexOf(prop);
42
54
  };
43
- const cmdPath = `/${args.command.join('/').replace(/-/g, '_')}`;
44
55
  const parameterSelectionMessage = args.isSubProperty
45
56
  ? `Editing "${args.subPropertyPath}"`
46
57
  : `[${cmdPath}] Parameters`;
47
- console.log('');
48
- const { paramToEdit } = await prompts({
58
+ getOutput().info();
59
+ const { paramToEdit } = await prompt({
49
60
  name: 'paramToEdit',
50
61
  message: parameterSelectionMessage,
51
62
  type: 'autocomplete',
@@ -159,7 +170,7 @@ export const interactForBlueprintObject = async (args, ctx) => {
159
170
  value = await interactForTimestamp();
160
171
  }
161
172
  else {
162
- value = (await prompts({
173
+ value = (await prompt({
163
174
  name: 'value',
164
175
  message: `${paramToEdit}:`,
165
176
  type: 'text',
@@ -169,7 +180,7 @@ export const interactForBlueprintObject = async (args, ctx) => {
169
180
  return interactForBlueprintObject(args, ctx);
170
181
  }
171
182
  else if (prop.format === 'enum') {
172
- const value = (await prompts({
183
+ const value = (await prompt({
173
184
  name: 'value',
174
185
  message: `${paramToEdit}:`,
175
186
  type: 'select',
@@ -182,7 +193,7 @@ export const interactForBlueprintObject = async (args, ctx) => {
182
193
  return interactForBlueprintObject(args, ctx);
183
194
  }
184
195
  else if (prop.format === 'boolean') {
185
- const { value } = await prompts({
196
+ const { value } = await prompt({
186
197
  name: 'value',
187
198
  message: `${paramToEdit}:`,
188
199
  type: 'toggle',
@@ -194,7 +205,7 @@ export const interactForBlueprintObject = async (args, ctx) => {
194
205
  return interactForBlueprintObject(args, ctx);
195
206
  }
196
207
  else if (prop.format === 'list' && prop.itemFormat === 'enum') {
197
- const value = (await prompts({
208
+ const value = (await prompt({
198
209
  name: 'value',
199
210
  message: `${paramToEdit}:`,
200
211
  type: 'autocompleteMultiselect',
@@ -221,7 +232,7 @@ export const interactForBlueprintObject = async (args, ctx) => {
221
232
  return interactForBlueprintObject(args, ctx);
222
233
  }
223
234
  else if (prop.format === 'number') {
224
- const { value } = await prompts({
235
+ const { value } = await prompt({
225
236
  name: 'value',
226
237
  message: `${paramToEdit}:`,
227
238
  type: 'number',