@seamapi/cli 0.8.0 → 0.10.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.
@@ -1,3 +1,6 @@
1
1
  import type { Blueprint } from '@seamapi/blueprint';
2
2
  export type ApiBlueprint = Blueprint;
3
- export declare const getApiBlueprint: (useRemoteDefinitions: boolean) => Promise<ApiBlueprint>;
3
+ export interface GetApiBlueprintOptions {
4
+ update?: boolean;
5
+ }
6
+ export declare const getApiBlueprint: (useRemoteDefinitions: boolean, options?: GetApiBlueprintOptions) => Promise<ApiBlueprint>;
@@ -1,12 +1,11 @@
1
1
  import getBlueprint from './blueprint.js';
2
2
  import { getServer } from './get-server.js';
3
- export const getApiBlueprint = async (useRemoteDefinitions) => {
3
+ export const getApiBlueprint = async (useRemoteDefinitions, options = {}) => {
4
4
  // Remote definitions describe whatever the server is currently running, so
5
- // build them directly from the server's OpenAPI document. This runtime path
6
- // does not load @seamapi/types.
5
+ // build them directly from the server's OpenAPI document.
7
6
  if (useRemoteDefinitions)
8
7
  return await createRemoteBlueprint();
9
- return await getBlueprint();
8
+ return await getBlueprint(options);
10
9
  };
11
10
  const createRemoteBlueprint = async () => {
12
11
  const [{ createBlueprint }, { getOpenapiSchema }] = await Promise.all([
@@ -1 +1 @@
1
- {"version":3,"file":"get-api-blueprint.js","sourceRoot":"","sources":["../src/lib/get-api-blueprint.ts"],"names":[],"mappings":"AAEA,OAAO,YAAY,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAI3C,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,oBAA6B,EACN,EAAE;IACzB,2EAA2E;IAC3E,4EAA4E;IAC5E,gCAAgC;IAChC,IAAI,oBAAoB;QAAE,OAAO,MAAM,qBAAqB,EAAE,CAAA;IAE9D,OAAO,MAAM,YAAY,EAAE,CAAA;AAC7B,CAAC,CAAA;AAED,MAAM,qBAAqB,GAAG,KAAK,IAAwB,EAAE;IAC3D,MAAM,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpE,MAAM,CAAC,oBAAoB,CAAC;QAC5B,MAAM,CAAC,uBAAuB,CAAC;KAChC,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAA;IAEnD,OAAO,MAAM,eAAe,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAA;AACvE,CAAC,CAAA"}
1
+ {"version":3,"file":"get-api-blueprint.js","sourceRoot":"","sources":["../src/lib/get-api-blueprint.ts"],"names":[],"mappings":"AAEA,OAAO,YAAY,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAQ3C,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,oBAA6B,EAC7B,UAAkC,EAAE,EACb,EAAE;IACzB,2EAA2E;IAC3E,0DAA0D;IAC1D,IAAI,oBAAoB;QAAE,OAAO,MAAM,qBAAqB,EAAE,CAAA;IAE9D,OAAO,MAAM,YAAY,CAAC,OAAO,CAAC,CAAA;AACpC,CAAC,CAAA;AAED,MAAM,qBAAqB,GAAG,KAAK,IAAwB,EAAE;IAC3D,MAAM,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpE,MAAM,CAAC,oBAAoB,CAAC;QAC5B,MAAM,CAAC,uBAAuB,CAAC;KAChC,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAA;IAEnD,OAAO,MAAM,eAAe,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAA;AACvE,CAAC,CAAA"}
@@ -9,6 +9,7 @@ import { interactForCustomMetadata } from './interact-for-custom-metadata.js';
9
9
  import { interactForDevice } from './interact-for-device.js';
10
10
  import { interactForTimestamp } from './interact-for-timestamp.js';
11
11
  import { interactForUserIdentity } from './interact-for-user-identity.js';
12
+ import { NonInteractiveError, toArgName } from './util/cli-args.js';
12
13
  import { ellipsis } from './util/ellipsis.js';
13
14
  const ergonomicPropOrder = [
14
15
  'name',
@@ -28,10 +29,20 @@ export const interactForBlueprintObject = async (args, ctx) => {
28
29
  .filter((parameter) => parameter.isRequired)
29
30
  .map((parameter) => parameter.name);
30
31
  const haveAllRequiredParams = required.every((k) => args.params[k]);
31
- const should_auto_submit = !ctx.is_interactive && haveAllRequiredParams && !args.isSubProperty;
32
+ const cmdPath = `/${args.command.join('/').replace(/-/g, '_')}`;
33
+ const should_auto_submit = ctx.interactivity !== 'interactive' &&
34
+ haveAllRequiredParams &&
35
+ !args.isSubProperty;
32
36
  if (should_auto_submit) {
33
37
  return args.params;
34
38
  }
39
+ if (ctx.interactivity === 'non-interactive') {
40
+ const missing = required.filter((k) => !args.params[k]);
41
+ const target = args.isSubProperty ? `"${args.subPropertyPath}"` : cmdPath;
42
+ throw new NonInteractiveError(missing.length > 0
43
+ ? `Missing required ${missing.length === 1 ? 'parameter' : 'parameters'} for ${target}: ${missing.map(toArgName).join(' ')}`
44
+ : `Cannot prompt for ${target} in non-interactive mode`);
45
+ }
35
46
  const propSortScore = (prop) => {
36
47
  if (required.includes(prop))
37
48
  return 100 - ergonomicPropOrder.indexOf(prop);
@@ -40,7 +51,6 @@ export const interactForBlueprintObject = async (args, ctx) => {
40
51
  }
41
52
  return ergonomicPropOrder.indexOf(prop);
42
53
  };
43
- const cmdPath = `/${args.command.join('/').replace(/-/g, '_')}`;
44
54
  const parameterSelectionMessage = args.isSubProperty
45
55
  ? `Editing "${args.subPropertyPath}"`
46
56
  : `[${cmdPath}] Parameters`;
@@ -1 +1 @@
1
- {"version":3,"file":"interact-for-blueprint-object.js","sourceRoot":"","sources":["../src/lib/interact-for-blueprint-object.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interact-for-blueprint-object.js","sourceRoot":"","sources":["../src/lib/interact-for-blueprint-object.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { isDeepStrictEqual as isEqual } from 'node:util';
2
2
  import prompts from 'prompts';
3
+ import { NonInteractiveError } from './util/cli-args.js';
3
4
  const uniqBy = (items, keyOf) => {
4
5
  const seen = new Set();
5
6
  return items.filter((item) => {
@@ -43,6 +44,20 @@ export async function interactForCommandSelection(commandPath, helpers) {
43
44
  possibleCommands[0]?.length === commandPath.length) {
44
45
  return commandPath;
45
46
  }
47
+ if (helpers.interactivity === 'non-interactive') {
48
+ // The command path is itself a command, so call it directly rather than
49
+ // prompting to select one of its sub-commands.
50
+ if (possibleCommands.some((cmd) => cmd.length === commandPath.length)) {
51
+ return commandPath;
52
+ }
53
+ const subcommands = possibleCommands
54
+ .map((cmd) => cmd[commandPath.length])
55
+ .filter((subcommand) => subcommand != null)
56
+ .sort(ergonomicSort);
57
+ throw new NonInteractiveError(`${commandPath.length === 0
58
+ ? 'Missing command'
59
+ : `Incomplete command "seam ${commandPath.join(' ')}"`}: expected one of ${subcommands.join(', ')}`);
60
+ }
46
61
  // Add dynamic 'back' command for sub-commands to allow returning
47
62
  // to previous level.
48
63
  if (commandPath.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"interact-for-command-selection.js","sourceRoot":"","sources":["../src/lib/interact-for-command-selection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interact-for-command-selection.js","sourceRoot":"","sources":["../src/lib/interact-for-command-selection.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { ApiBlueprint } from './get-api-blueprint.js';
2
+ import type { Interactivity } from './util/cli-args.js';
2
3
  export interface ContextHelpers {
3
4
  blueprint: ApiBlueprint;
4
- is_interactive: boolean;
5
+ interactivity: Interactivity;
5
6
  }
@@ -0,0 +1,30 @@
1
+ import { type ParsedArgs } from 'minimist';
2
+ /**
3
+ * How the CLI should behave when properties are not given as arguments.
4
+ *
5
+ * - `auto`: make the request as soon as every required property is given,
6
+ * otherwise prompt for what is missing. This is the default.
7
+ * - `interactive`: always prompt to review and edit properties, prefilled
8
+ * with the given arguments. Selected with `--interactive` or `-i`.
9
+ * - `non-interactive`: never prompt: anything missing is an error.
10
+ * Selected with `--non-interactive` or `-y`.
11
+ */
12
+ export type Interactivity = 'auto' | 'interactive' | 'non-interactive';
13
+ /**
14
+ * Argument keys that select the interactivity
15
+ * and are therefore not command parameters.
16
+ */
17
+ export declare const interactivityFlags: string[];
18
+ /**
19
+ * Thrown when the CLI needs input it cannot prompt for.
20
+ */
21
+ export declare class NonInteractiveError extends Error {
22
+ name: string;
23
+ }
24
+ export declare const parseCliArgs: (argv: string[]) => ParsedArgs;
25
+ export declare const getInteractivity: (args: ParsedArgs) => Interactivity;
26
+ /**
27
+ * Render a parameter name as the argument used to set it,
28
+ * e.g., `device_id` as `--device-id`.
29
+ */
30
+ export declare const toArgName: (parameterName: string) => string;
@@ -0,0 +1,42 @@
1
+ import parseArgs, {} from 'minimist';
2
+ /**
3
+ * Argument keys that select the interactivity
4
+ * and are therefore not command parameters.
5
+ */
6
+ export const interactivityFlags = [
7
+ 'non_interactive',
8
+ 'y',
9
+ 'interactive',
10
+ 'i',
11
+ ];
12
+ /**
13
+ * Thrown when the CLI needs input it cannot prompt for.
14
+ */
15
+ export class NonInteractiveError extends Error {
16
+ name = 'NonInteractiveError';
17
+ }
18
+ export const parseCliArgs = (argv) => parseArgs(argv, {
19
+ string: ['code'],
20
+ boolean: ['non-interactive', 'interactive'],
21
+ // Deliberately not aliased to -n, which is reserved for a future
22
+ // --dry-run flag.
23
+ alias: { 'non-interactive': 'y', interactive: 'i' },
24
+ });
25
+ export const getInteractivity = (args) => {
26
+ const isNonInteractive = args['non_interactive'] === true || args['y'] === true;
27
+ const isInteractive = args['interactive'] === true || args['i'] === true;
28
+ if (isNonInteractive && isInteractive) {
29
+ throw new Error('The --interactive and --non-interactive flags cannot be used together');
30
+ }
31
+ if (isNonInteractive)
32
+ return 'non-interactive';
33
+ if (isInteractive)
34
+ return 'interactive';
35
+ return 'auto';
36
+ };
37
+ /**
38
+ * Render a parameter name as the argument used to set it,
39
+ * e.g., `device_id` as `--device-id`.
40
+ */
41
+ export const toArgName = (parameterName) => `--${parameterName.replace(/_/g, '-')}`;
42
+ //# sourceMappingURL=cli-args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-args.js","sourceRoot":"","sources":["../../src/lib/util/cli-args.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAAmB,MAAM,UAAU,CAAA;AAcrD;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAa;IAC1C,iBAAiB;IACjB,GAAG;IACH,aAAa;IACb,GAAG;CACJ,CAAA;AAED;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACnC,IAAI,GAAG,qBAAqB,CAAA;CACtC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAc,EAAc,EAAE,CACzD,SAAS,CAAC,IAAI,EAAE;IACd,MAAM,EAAE,CAAC,MAAM,CAAC;IAChB,OAAO,EAAE,CAAC,iBAAiB,EAAE,aAAa,CAAC;IAC3C,iEAAiE;IACjE,kBAAkB;IAClB,KAAK,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE;CACpD,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAgB,EAAiB,EAAE;IAClE,MAAM,gBAAgB,GACpB,IAAI,CAAC,iBAAiB,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAA;IACxD,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAA;IAExE,IAAI,gBAAgB,IAAI,aAAa,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAA;IACH,CAAC;IACD,IAAI,gBAAgB;QAAE,OAAO,iBAAiB,CAAA;IAC9C,IAAI,aAAa;QAAE,OAAO,aAAa,CAAA;IACvC,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,aAAqB,EAAU,EAAE,CACzD,KAAK,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAA"}
package/lib/version.d.ts CHANGED
@@ -1,2 +1,4 @@
1
- declare const seamapiCliVersion = "0.8.0";
1
+ declare const seamapiCliVersion = "0.10.0";
2
+ declare const seamapiBlueprintVersion = "1.2.0";
3
+ export { seamapiBlueprintVersion };
2
4
  export default seamapiCliVersion;
package/lib/version.js CHANGED
@@ -1,3 +1,6 @@
1
- const seamapiCliVersion = '0.8.0';
1
+ // Versions are replaced with generated values when the package is packed.
2
+ const seamapiCliVersion = '0.10.0';
3
+ const seamapiBlueprintVersion = '1.2.0';
4
+ export { seamapiBlueprintVersion };
2
5
  export default seamapiCliVersion;
3
6
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/lib/version.ts"],"names":[],"mappings":"AAAA,MAAM,iBAAiB,GAAG,OAAO,CAAA;AAEjC,eAAe,iBAAiB,CAAA"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/lib/version.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,MAAM,iBAAiB,GAAG,QAAQ,CAAA;AAClC,MAAM,uBAAuB,GAAG,OAAO,CAAA;AAEvC,OAAO,EAAE,uBAAuB,EAAE,CAAA;AAClC,eAAe,iBAAiB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seamapi/cli",
3
- "version": "0.8.0",
3
+ "version": "0.10.0",
4
4
  "description": "A command line interface (CLI) for interacting with the Seam API.",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -89,7 +89,7 @@
89
89
  }
90
90
  },
91
91
  "dependencies": {
92
- "@seamapi/blueprint": "^1.1.0",
92
+ "@seamapi/blueprint": "1.2.0",
93
93
  "@seamapi/http": "2.2.0",
94
94
  "@seamapi/wizard": "0.5.2",
95
95
  "chalk": "^6.0.0",
@@ -99,7 +99,8 @@
99
99
  "minimist": "^1.2.8",
100
100
  "nanospinner": "^1.2.2",
101
101
  "open": "^11.0.0",
102
- "prompts": "^2.4.2"
102
+ "prompts": "^2.4.2",
103
+ "tar": "^7.5.22"
103
104
  },
104
105
  "devDependencies": {
105
106
  "@seamapi/types": "1.985.0",
package/src/bin/cli.ts CHANGED
@@ -4,7 +4,7 @@ import { isDeepStrictEqual as isEqual } from 'node:util'
4
4
 
5
5
  import chalk from 'chalk'
6
6
  import commandLineUsage from 'command-line-usage'
7
- import parseArgs, { type ParsedArgs } from 'minimist'
7
+ import type { ParsedArgs } from 'minimist'
8
8
  import prompts from 'prompts'
9
9
 
10
10
  import { getConfigStore } from 'lib/config/index.js'
@@ -18,6 +18,13 @@ import { interactForServerSelection } from 'lib/interact-for-server-selection.js
18
18
  import { interactForUseRemoteApiDefs } from 'lib/interact-for-use-remote-api-defs.js'
19
19
  import { interactForWorkspaceId } from 'lib/interact-for-workspace-id.js'
20
20
  import type { ContextHelpers } from 'lib/types.js'
21
+ import {
22
+ getInteractivity,
23
+ type Interactivity,
24
+ interactivityFlags,
25
+ NonInteractiveError,
26
+ parseCliArgs,
27
+ } from 'lib/util/cli-args.js'
21
28
  import { RequestSeamApi } from 'lib/util/request-seam-api.js'
22
29
  import { validateToken } from 'lib/validate-token.js'
23
30
  import seamapiCliVersion from 'lib/version.js'
@@ -26,7 +33,7 @@ const sections = [
26
33
  {
27
34
  header: 'Seam CLI',
28
35
  content:
29
- 'Every seam command is interactive and will prompt you for any missing required properties with helpful suggestions. To avoid automatic behavior, pass -y ',
36
+ '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. ',
30
37
  },
31
38
  {
32
39
  header: 'Options',
@@ -37,6 +44,25 @@ const sections = [
37
44
  alias: 'h',
38
45
  type: Boolean,
39
46
  },
47
+ {
48
+ name: 'interactive',
49
+ description:
50
+ 'Always prompt to review and edit properties, prefilled with the given arguments.',
51
+ alias: 'i',
52
+ type: Boolean,
53
+ },
54
+ {
55
+ name: 'non-interactive',
56
+ description:
57
+ 'Never prompt: exit with an error if the command or any required property is missing.',
58
+ alias: 'y',
59
+ type: Boolean,
60
+ },
61
+ {
62
+ name: 'update',
63
+ description: 'Force an update of the cached Seam API definitions.',
64
+ type: Boolean,
65
+ },
40
66
  ],
41
67
  },
42
68
  {
@@ -54,6 +80,14 @@ const sections = [
54
80
  summary: 'Create a connect webview to connect devices.',
55
81
  },
56
82
  { name: 'seam devices list', summary: 'List devices in your workspace.' },
83
+ {
84
+ name: 'seam devices list {bold --interactive}',
85
+ summary: 'Review and edit filters before listing devices.',
86
+ },
87
+ {
88
+ name: 'seam devices list {bold --non-interactive}',
89
+ summary: 'List devices, failing instead of prompting.',
90
+ },
57
91
  {
58
92
  name: 'seam locks unlock-door {bold --device-id} $MY_DOOR',
59
93
  summary: 'Unlock a lock.',
@@ -117,26 +151,30 @@ async function cli(args: ParsedArgs) {
117
151
  const use_remote_api_defs =
118
152
  args['remote_api_defs'] ?? config.get('use_remote_api_defs')
119
153
 
120
- const blueprint = await getApiBlueprint(use_remote_api_defs ?? false)
154
+ const update = args['update'] === true
155
+ delete args['update']
121
156
 
122
- const commandParams: Record<string, any> = {}
157
+ const blueprint = await getApiBlueprint(use_remote_api_defs ?? false, {
158
+ update,
159
+ })
123
160
 
124
- /**
125
- * Whether or not to auto-select first option
126
- */
127
- const is_interactive = args['y'] !== true
161
+ const commandParams: Record<string, any> = {}
128
162
 
129
163
  const ctx: ContextHelpers = {
130
164
  blueprint,
131
- is_interactive,
165
+ interactivity: getInteractivity(args),
132
166
  }
133
167
 
168
+ const isNonInteractive = ctx.interactivity === 'non-interactive'
169
+
134
170
  for (const k in args) {
135
171
  if (k === '_') continue
136
172
  const v = args[k]
137
173
  delete args[k]
138
- args[k.replace(/-/g, '_')] = v
139
- commandParams[k.replace(/-/g, '_')] = v
174
+ const key = k.replace(/-/g, '_')
175
+ args[key] = v
176
+ if (interactivityFlags.includes(key)) continue
177
+ commandParams[key] = v
140
178
  }
141
179
 
142
180
  const selectedCommand = await interactForCommandSelection(args._, ctx)
@@ -157,6 +195,11 @@ async function cli(args: ParsedArgs) {
157
195
  if (args['token'] || args['workspace_id'] || args['server']) {
158
196
  return
159
197
  }
198
+ if (isNonInteractive) {
199
+ throw new NonInteractiveError(
200
+ 'Missing required parameter for login: --token',
201
+ )
202
+ }
160
203
  await interactForLogin()
161
204
  return
162
205
  } else if (isEqual(selectedCommand, ['logout'])) {
@@ -167,9 +210,19 @@ async function cli(args: ParsedArgs) {
167
210
  console.log(config.path)
168
211
  return
169
212
  } else if (isEqual(selectedCommand, ['config', 'use-remote-api-defs'])) {
213
+ if (isNonInteractive) {
214
+ throw new NonInteractiveError(
215
+ 'Cannot select whether to use remote API definitions in non-interactive mode',
216
+ )
217
+ }
170
218
  await interactForUseRemoteApiDefs()
171
219
  return
172
220
  } else if (isEqual(selectedCommand, ['select', 'workspace'])) {
221
+ if (isNonInteractive) {
222
+ throw new NonInteractiveError(
223
+ 'Cannot select a workspace in non-interactive mode: pass --workspace-id to "seam login"',
224
+ )
225
+ }
173
226
  await interactForWorkspaceId()
174
227
  return
175
228
  } else if (isEqual(selectedCommand, ['events', 'list'])) {
@@ -184,6 +237,11 @@ async function cli(args: ParsedArgs) {
184
237
  config.delete('current_workspace_id')
185
238
  return
186
239
  }
240
+ if (isNonInteractive) {
241
+ throw new NonInteractiveError(
242
+ 'Missing required parameter for select server: --server',
243
+ )
244
+ }
187
245
  await interactForServerSelection()
188
246
  return
189
247
  } else if (isEqual(selectedCommand, ['health', 'get-health'])) {
@@ -236,18 +294,27 @@ async function cli(args: ParsedArgs) {
236
294
  })
237
295
 
238
296
  if (response.data?.connect_webview) {
239
- await handleConnectWebviewResponse(response.data.connect_webview)
297
+ await handleConnectWebviewResponse(
298
+ response.data.connect_webview,
299
+ ctx.interactivity,
300
+ )
240
301
  }
241
302
 
242
- if (response.data?.action_attempt) {
303
+ if (response.data?.action_attempt && !isNonInteractive) {
243
304
  interactForActionAttemptPoll(response.data.action_attempt)
244
305
  }
245
306
  }
246
307
 
247
- const handleConnectWebviewResponse = async (connect_webview: any) => {
308
+ const handleConnectWebviewResponse = async (
309
+ connect_webview: any,
310
+ interactivity: Interactivity,
311
+ ) => {
248
312
  const url = connect_webview.url
249
313
 
250
- if (process.env['INSIDE_WEB_BROWSER'] !== '1') {
314
+ if (
315
+ interactivity !== 'non-interactive' &&
316
+ process.env['INSIDE_WEB_BROWSER'] !== '1'
317
+ ) {
251
318
  const { action } = await prompts({
252
319
  type: 'confirm',
253
320
  name: 'action',
@@ -271,10 +338,15 @@ const run = async (argv: string[]) => {
271
338
  return
272
339
  }
273
340
 
274
- await cli(parseArgs(argv, { string: ['code'] }))
341
+ await cli(parseCliArgs(argv))
275
342
  }
276
343
 
277
344
  run(process.argv.slice(2)).catch((e) => {
345
+ if (e instanceof NonInteractiveError) {
346
+ console.log(chalk.red(e.message))
347
+ process.exit(1)
348
+ }
349
+
278
350
  console.log(chalk.red(`CLI Error: ${e.toString()}\n${e.stack}`))
279
351
  if (e.toString().includes('object Object')) {
280
352
  console.log(e)