@seamapi/cli 0.21.0 → 0.23.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 (80) hide show
  1. package/README.md +39 -4
  2. package/bin/cli.js +29 -9
  3. package/bin/cli.js.map +1 -1
  4. package/lib/args/parse.d.ts +9 -0
  5. package/lib/args/parse.js +42 -2
  6. package/lib/args/parse.js.map +1 -1
  7. package/lib/args/validate.d.ts +10 -0
  8. package/lib/args/validate.js +23 -0
  9. package/lib/args/validate.js.map +1 -1
  10. package/lib/auth/operations.d.ts +13 -15
  11. package/lib/auth/operations.js +25 -48
  12. package/lib/auth/operations.js.map +1 -1
  13. package/lib/blueprint/source-npm.js +2 -2
  14. package/lib/blueprint/source-npm.js.map +1 -1
  15. package/lib/commands/local/login.js +4 -12
  16. package/lib/commands/local/login.js.map +1 -1
  17. package/lib/commands/local/select-endpoint.js +10 -7
  18. package/lib/commands/local/select-endpoint.js.map +1 -1
  19. package/lib/commands/local/select-workspace.js +12 -4
  20. package/lib/commands/local/select-workspace.js.map +1 -1
  21. package/lib/commands/local/wizard.d.ts +7 -0
  22. package/lib/commands/local/wizard.js +31 -0
  23. package/lib/commands/local/wizard.js.map +1 -1
  24. package/lib/commands/registry.d.ts +11 -0
  25. package/lib/commands/registry.js +11 -0
  26. package/lib/commands/registry.js.map +1 -1
  27. package/lib/commands/spec.d.ts +12 -0
  28. package/lib/commands/spec.js +16 -0
  29. package/lib/commands/spec.js.map +1 -1
  30. package/lib/config/cli-config.d.ts +19 -0
  31. package/lib/config/cli-config.js +51 -0
  32. package/lib/config/cli-config.js.map +1 -0
  33. package/lib/config/config-store.d.ts +8 -5
  34. package/lib/config/config-store.js +15 -13
  35. package/lib/config/config-store.js.map +1 -1
  36. package/lib/config/index.d.ts +3 -2
  37. package/lib/config/index.js +3 -2
  38. package/lib/config/index.js.map +1 -1
  39. package/lib/config/memory-config-store.d.ts +6 -0
  40. package/lib/config/memory-config-store.js +6 -0
  41. package/lib/config/memory-config-store.js.map +1 -1
  42. package/lib/context.d.ts +8 -7
  43. package/lib/context.js +26 -21
  44. package/lib/context.js.map +1 -1
  45. package/lib/interactions/endpoint-selection.js +2 -2
  46. package/lib/interactions/endpoint-selection.js.map +1 -1
  47. package/lib/interactions/login.js +2 -2
  48. package/lib/interactions/login.js.map +1 -1
  49. package/lib/interactions/workspace-id.js +2 -2
  50. package/lib/interactions/workspace-id.js.map +1 -1
  51. package/lib/overrides.d.ts +20 -0
  52. package/lib/overrides.js +23 -0
  53. package/lib/overrides.js.map +1 -0
  54. package/lib/render/help.js +20 -1
  55. package/lib/render/help.js.map +1 -1
  56. package/lib/version.d.ts +1 -1
  57. package/lib/version.js +1 -1
  58. package/package.json +2 -2
  59. package/src/bin/cli.ts +34 -9
  60. package/src/lib/args/parse.ts +47 -2
  61. package/src/lib/args/validate.ts +37 -0
  62. package/src/lib/auth/operations.ts +26 -56
  63. package/src/lib/blueprint/source-npm.ts +2 -3
  64. package/src/lib/commands/local/login.ts +4 -15
  65. package/src/lib/commands/local/select-endpoint.ts +11 -7
  66. package/src/lib/commands/local/select-workspace.ts +13 -4
  67. package/src/lib/commands/local/wizard.ts +48 -0
  68. package/src/lib/commands/registry.ts +20 -0
  69. package/src/lib/commands/spec.ts +31 -0
  70. package/src/lib/config/cli-config.ts +83 -0
  71. package/src/lib/config/config-store.ts +16 -13
  72. package/src/lib/config/index.ts +9 -4
  73. package/src/lib/config/memory-config-store.ts +9 -0
  74. package/src/lib/context.ts +34 -33
  75. package/src/lib/interactions/endpoint-selection.ts +2 -2
  76. package/src/lib/interactions/login.ts +2 -2
  77. package/src/lib/interactions/workspace-id.ts +2 -2
  78. package/src/lib/overrides.ts +32 -0
  79. package/src/lib/render/help.ts +21 -1
  80. package/src/lib/version.ts +1 -1
@@ -1,5 +1,4 @@
1
1
  import { assertMutable, selectEndpoint } from '../../auth/operations.js';
2
- import { stringFlag } from '../../commands/spec.js';
3
2
  import { NonInteractiveError } from '../../errors.js';
4
3
  import { interactForEndpointSelection } from '../../interactions/index.js';
5
4
  export const selectEndpointCommand = {
@@ -7,18 +6,22 @@ export const selectEndpointCommand = {
7
6
  path: ['select', 'endpoint'],
8
7
  kind: 'cli',
9
8
  title: 'Select the Seam API endpoint.',
10
- description: '',
11
- flags: [stringFlag('endpoint', 'Seam API endpoint to select.')],
9
+ description: 'Stores the endpoint every later command runs against. To use one for a single command instead, pass --endpoint to that command.',
10
+ flags: [],
11
+ positional: {
12
+ name: 'url',
13
+ description: 'Seam API endpoint to select.',
14
+ },
12
15
  },
13
16
  requiresAuth: false,
14
- execute: async ({ args }, ctx) => {
17
+ execute: async ({ positional }, ctx) => {
15
18
  assertMutable(ctx.auth, 'endpoint', 'select an endpoint');
16
- if (args['endpoint']) {
17
- selectEndpoint(args['endpoint'], ctx.config);
19
+ if (positional != null) {
20
+ selectEndpoint(positional, ctx.config);
18
21
  return { kind: 'done' };
19
22
  }
20
23
  if (ctx.interactivity === 'non-interactive') {
21
- throw new NonInteractiveError('Missing required parameter for select endpoint: --endpoint');
24
+ throw new NonInteractiveError('Missing required argument for select endpoint: <url>');
22
25
  }
23
26
  await interactForEndpointSelection();
24
27
  return { kind: 'done' };
@@ -1 +1 @@
1
- {"version":3,"file":"select-endpoint.js","sourceRoot":"","sources":["../../../src/lib/commands/local/select-endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEtE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AAExE,MAAM,CAAC,MAAM,qBAAqB,GAAY;IAC5C,UAAU,EAAE;QACV,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;QAC5B,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,+BAA+B;QACtC,WAAW,EAAE,EAAE;QACf,KAAK,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,8BAA8B,CAAC,CAAC;KAChE;IACD,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;QAC/B,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAA;QACzD,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACrB,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;YAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;QACzB,CAAC;QACD,IAAI,GAAG,CAAC,aAAa,KAAK,iBAAiB,EAAE,CAAC;YAC5C,MAAM,IAAI,mBAAmB,CAC3B,4DAA4D,CAC7D,CAAA;QACH,CAAC;QACD,MAAM,4BAA4B,EAAE,CAAA;QACpC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IACzB,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"select-endpoint.js","sourceRoot":"","sources":["../../../src/lib/commands/local/select-endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AAExE,MAAM,CAAC,MAAM,qBAAqB,GAAY;IAC5C,UAAU,EAAE;QACV,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;QAC5B,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,+BAA+B;QACtC,WAAW,EACT,iIAAiI;QACnI,KAAK,EAAE,EAAE;QACT,UAAU,EAAE;YACV,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,8BAA8B;SAC5C;KACF;IACD,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE;QACrC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAA;QACzD,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACvB,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;YACtC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;QACzB,CAAC;QACD,IAAI,GAAG,CAAC,aAAa,KAAK,iBAAiB,EAAE,CAAC;YAC5C,MAAM,IAAI,mBAAmB,CAC3B,sDAAsD,CACvD,CAAA;QACH,CAAC;QACD,MAAM,4BAA4B,EAAE,CAAA;QACpC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IACzB,CAAC;CACF,CAAA"}
@@ -1,4 +1,4 @@
1
- import { assertMutable } from '../../auth/operations.js';
1
+ import { assertMutable, selectWorkspace } from '../../auth/operations.js';
2
2
  import { NonInteractiveError } from '../../errors.js';
3
3
  import { interactForWorkspaceId } from '../../interactions/index.js';
4
4
  export const selectWorkspaceCommand = {
@@ -6,14 +6,22 @@ export const selectWorkspaceCommand = {
6
6
  path: ['select', 'workspace'],
7
7
  kind: 'cli',
8
8
  title: 'Select the current workspace.',
9
- description: '',
9
+ description: 'Stores the workspace every later command runs against. To use one for a single command instead, pass --workspace-id to that command.',
10
10
  flags: [],
11
+ positional: {
12
+ name: 'workspace-id',
13
+ description: 'Workspace to select.',
14
+ },
11
15
  },
12
16
  requiresAuth: true,
13
- execute: async (_invocation, ctx) => {
17
+ execute: async ({ positional }, ctx) => {
14
18
  assertMutable(ctx.auth, 'workspaceId', 'select a workspace');
19
+ if (positional != null) {
20
+ selectWorkspace(positional, ctx.config);
21
+ return { kind: 'done' };
22
+ }
15
23
  if (ctx.interactivity === 'non-interactive') {
16
- throw new NonInteractiveError('Cannot select a workspace in non-interactive mode: pass --workspace-id to "seam login"');
24
+ throw new NonInteractiveError('Missing required argument for select workspace: <workspace-id>');
17
25
  }
18
26
  await interactForWorkspaceId();
19
27
  return { kind: 'done' };
@@ -1 +1 @@
1
- {"version":3,"file":"select-workspace.js","sourceRoot":"","sources":["../../../src/lib/commands/local/select-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAEtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAElE,MAAM,CAAC,MAAM,sBAAsB,GAAY;IAC7C,UAAU,EAAE;QACV,IAAI,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;QAC7B,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,+BAA+B;QACtC,WAAW,EAAE,EAAE;QACf,KAAK,EAAE,EAAE;KACV;IACD,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE;QAClC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,oBAAoB,CAAC,CAAA;QAC5D,IAAI,GAAG,CAAC,aAAa,KAAK,iBAAiB,EAAE,CAAC;YAC5C,MAAM,IAAI,mBAAmB,CAC3B,wFAAwF,CACzF,CAAA;QACH,CAAC;QACD,MAAM,sBAAsB,EAAE,CAAA;QAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IACzB,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"select-workspace.js","sourceRoot":"","sources":["../../../src/lib/commands/local/select-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAElE,MAAM,CAAC,MAAM,sBAAsB,GAAY;IAC7C,UAAU,EAAE;QACV,IAAI,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;QAC7B,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,+BAA+B;QACtC,WAAW,EACT,sIAAsI;QACxI,KAAK,EAAE,EAAE;QACT,UAAU,EAAE;YACV,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,sBAAsB;SACpC;KACF;IACD,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE;QACrC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,oBAAoB,CAAC,CAAA;QAC5D,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACvB,eAAe,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;YACvC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;QACzB,CAAC;QACD,IAAI,GAAG,CAAC,aAAa,KAAK,iBAAiB,EAAE,CAAC;YAC5C,MAAM,IAAI,mBAAmB,CAC3B,gEAAgE,CACjE,CAAA;QACH,CAAC;QACD,MAAM,sBAAsB,EAAE,CAAA;QAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IACzB,CAAC;CACF,CAAA"}
@@ -1,4 +1,6 @@
1
+ import type { WizardAdapter } from '@seamapi/wizard';
1
2
  import type { Command } from '../../commands/registry.js';
3
+ import { type CliConfig } from '../../config/index.js';
2
4
  /**
3
5
  * Run the Seam setup wizard.
4
6
  *
@@ -7,3 +9,8 @@ import type { Command } from '../../commands/registry.js';
7
9
  */
8
10
  export declare const runWizard: (argv: string[]) => Promise<void>;
9
11
  export declare const wizardCommand: Command;
12
+ export declare const createWizardAdapter: ({ cliConfig, configPath, statePath, }?: {
13
+ cliConfig?: CliConfig;
14
+ configPath?: string;
15
+ statePath?: string;
16
+ }) => WizardAdapter;
@@ -1,3 +1,8 @@
1
+ import { join } from 'node:path';
2
+ import { isApiKey } from '@seamapi/http/connect';
3
+ import Configstore from 'configstore';
4
+ import { getConfig, rootPaths } from '../../config/index.js';
5
+ import { resolveAuth } from '../../context.js';
1
6
  /**
2
7
  * Run the Seam setup wizard.
3
8
  *
@@ -9,6 +14,7 @@ export const runWizard = async (argv) => {
9
14
  await wizard({
10
15
  argv,
11
16
  commandName: 'seam wizard',
17
+ adapter: createWizardAdapter(),
12
18
  });
13
19
  };
14
20
  export const wizardCommand = {
@@ -25,4 +31,29 @@ export const wizardCommand = {
25
31
  return { kind: 'done' };
26
32
  },
27
33
  };
34
+ const wizardFileName = 'wizard.json';
35
+ export const createWizardAdapter = ({ cliConfig = getConfig(), configPath = join(rootPaths.config, wizardFileName), statePath = join(rootPaths.log, wizardFileName), } = {}) => ({
36
+ getAuth: async () => toWizardAuth(cliConfig),
37
+ config: createStorage(configPath),
38
+ state: createStorage(statePath),
39
+ });
40
+ // Only a workspace-scoped key may go in a project, so a personal access
41
+ // token is not handed over at all.
42
+ const toWizardAuth = (cliConfig) => {
43
+ const { endpoint, token, workspaceId } = resolveAuth(cliConfig);
44
+ return {
45
+ endpoint,
46
+ apiKey: token != null && isApiKey(token) ? token : null,
47
+ workspaceId,
48
+ };
49
+ };
50
+ const createStorage = (path) => {
51
+ const store = new Configstore('seam-cli', undefined, { configPath: path });
52
+ return {
53
+ get: async (key) => store.get(key),
54
+ set: async (key, value) => {
55
+ store.set(key, value);
56
+ },
57
+ };
58
+ };
28
59
  //# sourceMappingURL=wizard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../../src/lib/commands/local/wizard.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,IAAc,EAAiB,EAAE;IAC/D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAC3D,MAAM,MAAM,CAAC;QACX,IAAI;QACJ,WAAW,EAAE,aAAa;KAC3B,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,UAAU,EAAE;QACV,IAAI,EAAE,CAAC,QAAQ,CAAC;QAChB,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,qCAAqC;QAC5C,WAAW,EACT,sGAAsG;QACxG,KAAK,EAAE,EAAE;KACV;IACD,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,SAAS,CAAC,EAAE,CAAC,CAAA;QACnB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IACzB,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../../src/lib/commands/local/wizard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD,OAAO,WAAW,MAAM,aAAa,CAAA;AAGrC,OAAO,EAAkB,SAAS,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,IAAc,EAAiB,EAAE;IAC/D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAC3D,MAAM,MAAM,CAAC;QACX,IAAI;QACJ,WAAW,EAAE,aAAa;QAC1B,OAAO,EAAE,mBAAmB,EAAE;KAC/B,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,UAAU,EAAE;QACV,IAAI,EAAE,CAAC,QAAQ,CAAC;QAChB,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,qCAAqC;QAC5C,WAAW,EACT,sGAAsG;QACxG,KAAK,EAAE,EAAE;KACV;IACD,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,SAAS,CAAC,EAAE,CAAC,CAAA;QACnB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IACzB,CAAC;CACF,CAAA;AAED,MAAM,cAAc,GAAG,aAAa,CAAA;AAEpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAClC,SAAS,GAAG,SAAS,EAAE,EACvB,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,EACnD,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,cAAc,CAAC,MAK7C,EAAE,EAAiB,EAAE,CAAC,CAAC;IACzB,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC;IAC5C,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC;IACjC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC;CAChC,CAAC,CAAA;AAEF,wEAAwE;AACxE,mCAAmC;AACnC,MAAM,YAAY,GAAG,CAAC,SAAoB,EAAc,EAAE;IACxD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,CAAA;IAE/D,OAAO;QACL,QAAQ;QACR,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;QACvD,WAAW;KACZ,CAAA;AACH,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,IAAY,EAAkB,EAAE;IACrD,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;IAE1E,OAAO;QACL,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;QAClC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;YACxB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACvB,CAAC;KACF,CAAA;AACH,CAAC,CAAA"}
@@ -18,6 +18,8 @@ export interface Command {
18
18
  /** Everything a single run of a command was given. */
19
19
  export interface Invocation {
20
20
  path: string[];
21
+ /** The value written after the command path, when the command takes one. */
22
+ positional?: string | undefined;
21
23
  /** Params given as arguments, held to what the command accepts. */
22
24
  argParams: Record<string, unknown>;
23
25
  /** Params piped in as JSON, passed through as given. */
@@ -49,6 +51,15 @@ export declare const localCommandDefinitions: CommandDefinition[];
49
51
  * commands before any definitions are loaded.
50
52
  */
51
53
  export declare const findLocalCommand: (path: string[]) => Command | undefined;
54
+ /**
55
+ * The local command the given words invoke with a value after its path, e.g.,
56
+ * `select endpoint` for `select endpoint https://connect.getseam.com`, or
57
+ * `undefined` when the words are not a command taking one.
58
+ *
59
+ * Only commands declaring a positional match, so a stray word after any other
60
+ * command stays what it has always been: no command at all.
61
+ */
62
+ export declare const findLocalCommandTakingPositional: (words: string[]) => Command | undefined;
52
63
  /** Parameter names a command accepts as arguments. */
53
64
  export declare const acceptedParamsOf: (definition: CommandDefinition) => Set<string>;
54
65
  export declare const buildRegistry: (blueprint: ApiBlueprint) => CommandRegistry;
@@ -37,6 +37,17 @@ export const localCommandDefinitions = localCommands
37
37
  * commands before any definitions are loaded.
38
38
  */
39
39
  export const findLocalCommand = (path) => localCommands.find((command) => isSamePath(command.definition.path, path));
40
+ /**
41
+ * The local command the given words invoke with a value after its path, e.g.,
42
+ * `select endpoint` for `select endpoint https://connect.getseam.com`, or
43
+ * `undefined` when the words are not a command taking one.
44
+ *
45
+ * Only commands declaring a positional match, so a stray word after any other
46
+ * command stays what it has always been: no command at all.
47
+ */
48
+ export const findLocalCommandTakingPositional = (words) => localCommands.find(({ definition }) => definition.positional != null &&
49
+ words.length === definition.path.length + 1 &&
50
+ isSamePath(definition.path, words.slice(0, -1)));
40
51
  /** Parameter names a command accepts as arguments. */
41
52
  export const acceptedParamsOf = (definition) => new Set(definition.flags.flatMap(({ long }) => long == null ? [] : [toParameterName(long)]));
42
53
  export const buildRegistry = (blueprint) => {
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/lib/commands/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/lib/commands/registry.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,16 @@ export interface CommandFlag {
15
15
  * Whether a command is part of the CLI itself or calls a Seam API endpoint.
16
16
  */
17
17
  export type CommandKind = 'cli' | 'api';
18
+ /**
19
+ * A value written after the command rather than behind a flag, e.g., the URL
20
+ * in `seam select endpoint <url>`. At most one, always required: it is the
21
+ * one thing the command is about.
22
+ */
23
+ export interface CommandPositional {
24
+ /** Name shown in the usage line, without the angle brackets. */
25
+ name: string;
26
+ description: string;
27
+ }
18
28
  export interface CommandDefinition {
19
29
  path: string[];
20
30
  kind: CommandKind;
@@ -23,6 +33,8 @@ export interface CommandDefinition {
23
33
  /** Longer prose about the command, empty when there is none to add. */
24
34
  description: string;
25
35
  flags: CommandFlag[];
36
+ /** The value the command takes after its path, when it takes one. */
37
+ positional?: CommandPositional;
26
38
  }
27
39
  export interface Subcommand {
28
40
  name: string;
@@ -1,5 +1,13 @@
1
1
  import { firstSentence, toPlainText } from '../render/text.js';
2
2
  export const globalFlags = [
3
+ {
4
+ long: 'endpoint',
5
+ short: null,
6
+ description: 'Seam API endpoint to run this one command against, instead of the selected one.',
7
+ values: [],
8
+ takesValue: true,
9
+ isRequired: false,
10
+ },
3
11
  {
4
12
  long: 'help',
5
13
  short: 'h',
@@ -56,6 +64,14 @@ export const globalFlags = [
56
64
  takesValue: false,
57
65
  isRequired: false,
58
66
  },
67
+ {
68
+ long: 'workspace-id',
69
+ short: null,
70
+ description: 'Workspace to run this one command against, instead of the selected one.',
71
+ values: [],
72
+ takesValue: true,
73
+ isRequired: false,
74
+ },
59
75
  ];
60
76
  export const flagTokens = (flag) => {
61
77
  const tokens = [];
@@ -1 +1 @@
1
- {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../src/lib/commands/spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../src/lib/commands/spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { ConfigStore } from './config-store.js';
2
+ /**
3
+ * The CLI's configuration, in the terms the CLI thinks in. Keys are named
4
+ * here alone: a caller says what it wants stored, not where it goes.
5
+ */
6
+ export interface CliConfig {
7
+ readonly path: string;
8
+ getEndpoint: () => string | null;
9
+ setEndpoint: (endpoint: string) => void;
10
+ getToken: (endpoint: string) => string | null;
11
+ setToken: (endpoint: string, token: string) => void;
12
+ unsetToken: (endpoint: string) => void;
13
+ getWorkspace: () => string | null;
14
+ setWorkspace: (workspaceId: string) => void;
15
+ unsetWorkspace: () => void;
16
+ getUseRemoteApiDefs: () => boolean | null;
17
+ setUseRemoteApiDefs: (useRemoteApiDefs: boolean) => void;
18
+ }
19
+ export declare const createCliConfig: (store: ConfigStore) => CliConfig;
@@ -0,0 +1,51 @@
1
+ /** Tokens are stored per endpoint, e.g. `https://connect.getseam.com.pat`. */
2
+ const tokenKey = (endpoint) => `${endpoint}.pat`;
3
+ export const createCliConfig = (store) => ({
4
+ get path() {
5
+ return store.path;
6
+ },
7
+ getEndpoint: () =>
8
+ // `server` is what an older CLI called the endpoint.
9
+ readString(store.get('endpoint')) ?? readString(store.get('server')),
10
+ /**
11
+ * Store the endpoint, dropping what belonged to the previous one: the
12
+ * workspace selection, and any value left under the legacy key that
13
+ * {@link CliConfig.getEndpoint} would otherwise still fall back to.
14
+ */
15
+ setEndpoint: (endpoint) => {
16
+ store.set('endpoint', endpoint);
17
+ store.delete('server');
18
+ store.delete('current_workspace_id');
19
+ },
20
+ getToken: (endpoint) => readString(store.get(tokenKey(endpoint))),
21
+ setToken: (endpoint, token) => {
22
+ store.set(tokenKey(endpoint), token);
23
+ },
24
+ unsetToken: (endpoint) => {
25
+ store.delete(tokenKey(endpoint));
26
+ // Configs written before tokens were stored per endpoint may still hold
27
+ // an un-namespaced one.
28
+ store.delete('pat');
29
+ },
30
+ getWorkspace: () => readString(store.get('current_workspace_id')),
31
+ setWorkspace: (workspaceId) => {
32
+ store.set('current_workspace_id', workspaceId);
33
+ },
34
+ unsetWorkspace: () => {
35
+ store.delete('current_workspace_id');
36
+ },
37
+ getUseRemoteApiDefs: () => {
38
+ const useRemoteApiDefs = store.get('use_remote_api_defs');
39
+ return typeof useRemoteApiDefs === 'boolean' ? useRemoteApiDefs : null;
40
+ },
41
+ setUseRemoteApiDefs: (useRemoteApiDefs) => {
42
+ store.set('use_remote_api_defs', useRemoteApiDefs);
43
+ },
44
+ });
45
+ const readString = (value) => {
46
+ if (typeof value !== 'string')
47
+ return null;
48
+ const trimmedValue = value.trim();
49
+ return trimmedValue === '' ? null : trimmedValue;
50
+ };
51
+ //# sourceMappingURL=cli-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-config.js","sourceRoot":"","sources":["../../src/lib/config/cli-config.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,MAAM,QAAQ,GAAG,CAAC,QAAgB,EAAmB,EAAE,CAAC,GAAG,QAAQ,MAAM,CAAA;AAoBzE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAkB,EAAa,EAAE,CAAC,CAAC;IACjE,IAAI,IAAI;QACN,OAAO,KAAK,CAAC,IAAI,CAAA;IACnB,CAAC;IAED,WAAW,EAAE,GAAG,EAAE;IAChB,qDAAqD;IACrD,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEtE;;;;OAIG;IACH,WAAW,EAAE,CAAC,QAAQ,EAAE,EAAE;QACxB,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAC/B,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACtB,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAA;IACtC,CAAC;IAED,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEjE,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;QAC5B,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAA;IACtC,CAAC;IAED,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;QACvB,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;QAChC,wEAAwE;QACxE,wBAAwB;QACxB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC;IAED,YAAY,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAEjE,YAAY,EAAE,CAAC,WAAW,EAAE,EAAE;QAC5B,KAAK,CAAC,GAAG,CAAC,sBAAsB,EAAE,WAAW,CAAC,CAAA;IAChD,CAAC;IAED,cAAc,EAAE,GAAG,EAAE;QACnB,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAA;IACtC,CAAC;IAED,mBAAmB,EAAE,GAAG,EAAE;QACxB,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;QACzD,OAAO,OAAO,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAA;IACxE,CAAC;IAED,mBAAmB,EAAE,CAAC,gBAAgB,EAAE,EAAE;QACxC,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAA;IACpD,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,UAAU,GAAG,CAAC,KAAc,EAAiB,EAAE;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IAE1C,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAEjC,OAAO,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAA;AAClD,CAAC,CAAA"}
@@ -1,4 +1,7 @@
1
1
  import Configstore from 'configstore';
2
+ import { type CliConfig } from './cli-config.js';
3
+ /** Every directory the CLI keeps files in, and what it mounts keeps its own. */
4
+ export declare const rootPaths: import("env-paths").Paths;
2
5
  /**
3
6
  * What a config store can do, regardless of where it keeps the values.
4
7
  *
@@ -16,11 +19,11 @@ export interface ConfigStore {
16
19
  delete: (key: string) => void;
17
20
  clear: () => void;
18
21
  }
19
- export declare const getConfigStore: () => ConfigStore;
20
- /** Replace the store, e.g., with an in-memory one for a test. */
21
- export declare const setConfigStore: (store: ConfigStore) => void;
22
- /** Drop the current store so the next read builds the real one. */
23
- export declare const resetConfigStore: () => void;
22
+ export declare const getConfig: () => CliConfig;
23
+ /** Replace the config, e.g., with an in-memory one for a test. */
24
+ export declare const setConfig: (nextConfig: CliConfig) => void;
25
+ /** Drop the current config so the next read builds the real one. */
26
+ export declare const resetConfig: () => void;
24
27
  export declare class PersistentConfigStore implements ConfigStore {
25
28
  private readonly settingsStore;
26
29
  private readonly stateStore;
@@ -1,23 +1,25 @@
1
1
  import { join } from 'node:path';
2
2
  import Configstore from 'configstore';
3
3
  import envPaths from 'env-paths';
4
+ import { createCliConfig } from './cli-config.js';
4
5
  import { migrateConfigStore } from './migrate.js';
5
6
  import { isStateKey, mergeConfig, splitConfig } from './values.js';
6
7
  const configFileName = 'cli.json';
7
8
  const legacyConfigStoreId = 'seam-cli';
8
- const paths = envPaths('seam', { suffix: '' });
9
- let configStore = null;
10
- export const getConfigStore = () => {
11
- configStore ??= createConfigStore();
12
- return configStore;
9
+ /** Every directory the CLI keeps files in, and what it mounts keeps its own. */
10
+ export const rootPaths = envPaths('seam', { suffix: '' });
11
+ let config = null;
12
+ export const getConfig = () => {
13
+ config ??= createCliConfig(createConfigStore());
14
+ return config;
13
15
  };
14
- /** Replace the store, e.g., with an in-memory one for a test. */
15
- export const setConfigStore = (store) => {
16
- configStore = store;
16
+ /** Replace the config, e.g., with an in-memory one for a test. */
17
+ export const setConfig = (nextConfig) => {
18
+ config = nextConfig;
17
19
  };
18
- /** Drop the current store so the next read builds the real one. */
19
- export const resetConfigStore = () => {
20
- configStore = null;
20
+ /** Drop the current config so the next read builds the real one. */
21
+ export const resetConfig = () => {
22
+ config = null;
21
23
  };
22
24
  const createConfigStore = () => {
23
25
  const settingsStore = new Configstore(legacyConfigStoreId, undefined, {
@@ -76,10 +78,10 @@ export class PersistentConfigStore {
76
78
  }
77
79
  }
78
80
  const getConfigPath = () => {
79
- return join(paths.config, configFileName);
81
+ return join(rootPaths.config, configFileName);
80
82
  };
81
83
  const getStateConfigPath = () => {
82
- return join(paths.log, configFileName);
84
+ return join(rootPaths.log, configFileName);
83
85
  };
84
86
  const isRecord = (value) => {
85
87
  return value != null && typeof value === 'object' && !Array.isArray(value);
@@ -1 +1 @@
1
- {"version":3,"file":"config-store.js","sourceRoot":"","sources":["../../src/lib/config/config-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-store.js","sourceRoot":"","sources":["../../src/lib/config/config-store.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
- export { type ConfigStore, getConfigStore, type PersistentConfigStore, resetConfigStore, setConfigStore, } from './config-store.js';
2
- export { createMemoryConfigStore } from './memory-config-store.js';
1
+ export { type CliConfig, createCliConfig } from './cli-config.js';
2
+ export { type ConfigStore, getConfig, type PersistentConfigStore, resetConfig, rootPaths, setConfig, } from './config-store.js';
3
+ export { createMemoryConfig, createMemoryConfigStore, } from './memory-config-store.js';
@@ -1,3 +1,4 @@
1
- export { getConfigStore, resetConfigStore, setConfigStore, } from './config-store.js';
2
- export { createMemoryConfigStore } from './memory-config-store.js';
1
+ export { createCliConfig } from './cli-config.js';
2
+ export { getConfig, resetConfig, rootPaths, setConfig, } from './config-store.js';
3
+ export { createMemoryConfig, createMemoryConfigStore, } from './memory-config-store.js';
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EAEd,gBAAgB,EAChB,cAAc,GACf,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,EAEL,SAAS,EAET,WAAW,EACX,SAAS,EACT,SAAS,GACV,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,0BAA0B,CAAA"}
@@ -1,3 +1,4 @@
1
+ import { type CliConfig } from './cli-config.js';
1
2
  import type { ConfigStore } from './config-store.js';
2
3
  /**
3
4
  * A real {@link ConfigStore} held in memory, for tests.
@@ -19,3 +20,8 @@ export declare class MemoryConfigStore implements ConfigStore {
19
20
  clear(): void;
20
21
  }
21
22
  export declare const createMemoryConfigStore: (initialValues?: Record<string, unknown>) => ConfigStore;
23
+ /**
24
+ * A config held in memory, for tests. Values may be seeded by key, e.g., to
25
+ * stand for a config an older CLI wrote.
26
+ */
27
+ export declare const createMemoryConfig: (initialValues?: Record<string, unknown>) => CliConfig;
@@ -1,3 +1,4 @@
1
+ import { createCliConfig } from './cli-config.js';
1
2
  /**
2
3
  * A real {@link ConfigStore} held in memory, for tests.
3
4
  *
@@ -45,4 +46,9 @@ export class MemoryConfigStore {
45
46
  }
46
47
  }
47
48
  export const createMemoryConfigStore = (initialValues = {}) => new MemoryConfigStore(initialValues);
49
+ /**
50
+ * A config held in memory, for tests. Values may be seeded by key, e.g., to
51
+ * stand for a config an older CLI wrote.
52
+ */
53
+ export const createMemoryConfig = (initialValues = {}) => createCliConfig(createMemoryConfigStore(initialValues));
48
54
  //# sourceMappingURL=memory-config-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory-config-store.js","sourceRoot":"","sources":["../../src/lib/config/memory-config-store.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,OAAO,iBAAiB;IACnB,IAAI,GAAG,kBAAkB,CAAA;IAEjB,MAAM,CAAsB;IAE7C,YAAY,gBAAyC,EAAE;QACrD,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAA;IACtD,CAAC;IAED,IAAI,GAAG;QACL,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,GAAG,CAAC,SAAkC;QACxC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QACnB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA;IACzB,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,GAAG,CAAC,GAAqC,EAAE,KAAe;QACxD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YAC3B,OAAM;QACR,CAAC;QACD,KAAK,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QACzC,CAAC;IACH,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,gBAAyC,EAAE,EAC9B,EAAE,CAAC,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAA"}
1
+ {"version":3,"file":"memory-config-store.js","sourceRoot":"","sources":["../../src/lib/config/memory-config-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAGjE;;;;;GAKG;AACH,MAAM,OAAO,iBAAiB;IACnB,IAAI,GAAG,kBAAkB,CAAA;IAEjB,MAAM,CAAsB;IAE7C,YAAY,gBAAyC,EAAE;QACrD,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAA;IACtD,CAAC;IAED,IAAI,GAAG;QACL,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,GAAG,CAAC,SAAkC;QACxC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QACnB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA;IACzB,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,GAAG,CAAC,GAAqC,EAAE,KAAe;QACxD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YAC3B,OAAM;QACR,CAAC;QACD,KAAK,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QACzC,CAAC;IACH,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,gBAAyC,EAAE,EAC9B,EAAE,CAAC,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAA;AAEtD;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,gBAAyC,EAAE,EAChC,EAAE,CAAC,eAAe,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAA"}
package/lib/context.d.ts CHANGED
@@ -1,17 +1,18 @@
1
1
  import type { Interactivity } from './args/parse.js';
2
2
  import type { ApiBlueprint } from './blueprint/index.js';
3
- import { type ConfigStore } from './config/index.js';
3
+ import { type CliConfig } from './config/index.js';
4
4
  import type { SeamApi } from './http/api.js';
5
5
  import type { Output } from './output/output.js';
6
6
  export declare const defaultEndpoint = "https://connect.getseam.com";
7
7
  /** Where a resolved value came from, e.g., to refuse writes the env shadows. */
8
- export type ValueSource = 'env' | 'config' | 'default';
8
+ export type ValueSource = 'flag' | 'env' | 'config' | 'default';
9
9
  /**
10
10
  * The endpoint, token, and workspace requests are made with.
11
11
  *
12
- * Resolved in one place so the precedence rule exists once: an environment
13
- * variable wins over the stored value, and the endpoint falls back to Seam.
14
- * The source tags say where each value came from.
12
+ * Resolved in one place so the precedence rule exists once: a flag given for
13
+ * the one command wins over an environment variable, which wins over the
14
+ * stored value, and the endpoint falls back to Seam. The source tags say
15
+ * where each value came from.
15
16
  */
16
17
  export interface AuthContext {
17
18
  endpoint: string;
@@ -21,13 +22,13 @@ export interface AuthContext {
21
22
  workspaceId: string | null;
22
23
  workspaceIdSource: Exclude<ValueSource, 'default'> | null;
23
24
  }
24
- export declare const resolveAuth: (config?: ConfigStore) => AuthContext;
25
+ export declare const resolveAuth: (config?: CliConfig) => AuthContext;
25
26
  /**
26
27
  * Everything a command runs with: the stores and auth it reads, the API
27
28
  * shape it acts on, and how it may interact with the user.
28
29
  */
29
30
  export interface CliContext {
30
- config: ConfigStore;
31
+ config: CliConfig;
31
32
  auth: AuthContext;
32
33
  output: Output;
33
34
  blueprint: ApiBlueprint;