@seamapi/cli 0.24.1 → 0.26.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.
- package/README.md +8 -4
- package/bin/cli.js +8 -2
- package/bin/cli.js.map +1 -1
- package/lib/args/parse.js +1 -0
- package/lib/args/parse.js.map +1 -1
- package/lib/auth/validate-token.js +1 -1
- package/lib/auth/validate-token.js.map +1 -1
- package/lib/blueprint/source-remote.js +1 -1
- package/lib/blueprint/source-remote.js.map +1 -1
- package/lib/commands/local/wizard.d.ts +8 -2
- package/lib/commands/local/wizard.js +28 -9
- package/lib/commands/local/wizard.js.map +1 -1
- package/lib/commands/spec.js +8 -0
- package/lib/commands/spec.js.map +1 -1
- package/lib/http/api.d.ts +1 -1
- package/lib/http/api.js +1 -1
- package/lib/http/api.js.map +1 -1
- package/lib/http/client.d.ts +1 -1
- package/lib/http/client.js +1 -1
- package/lib/http/client.js.map +1 -1
- package/lib/http/memory-seam-api.js +1 -1
- package/lib/http/memory-seam-api.js.map +1 -1
- package/lib/http/request.js +1 -1
- package/lib/http/request.js.map +1 -1
- package/lib/interactions/access-code.d.ts +1 -1
- package/lib/interactions/access-code.js +2 -1
- package/lib/interactions/access-code.js.map +1 -1
- package/lib/interactions/acs-entrance.d.ts +1 -1
- package/lib/interactions/acs-entrance.js +2 -1
- package/lib/interactions/acs-entrance.js.map +1 -1
- package/lib/interactions/acs-system.d.ts +4 -1
- package/lib/interactions/acs-system.js +2 -1
- package/lib/interactions/acs-system.js.map +1 -1
- package/lib/interactions/acs-user.d.ts +1 -1
- package/lib/interactions/acs-user.js +5 -2
- package/lib/interactions/acs-user.js.map +1 -1
- package/lib/interactions/action-attempt-poll.d.ts +1 -1
- package/lib/interactions/blueprint-object.js +41 -13
- package/lib/interactions/blueprint-object.js.map +1 -1
- package/lib/interactions/connected-account.d.ts +1 -1
- package/lib/interactions/connected-account.js +2 -1
- package/lib/interactions/connected-account.js.map +1 -1
- package/lib/interactions/custom-metadata.js +4 -0
- package/lib/interactions/custom-metadata.js.map +1 -1
- package/lib/interactions/device.d.ts +1 -1
- package/lib/interactions/device.js +2 -1
- package/lib/interactions/device.js.map +1 -1
- package/lib/interactions/login.js +1 -1
- package/lib/interactions/login.js.map +1 -1
- package/lib/interactions/resource.d.ts +3 -1
- package/lib/interactions/resource.js +2 -1
- package/lib/interactions/resource.js.map +1 -1
- package/lib/interactions/timestamp.d.ts +1 -1
- package/lib/interactions/timestamp.js +4 -1
- package/lib/interactions/timestamp.js.map +1 -1
- package/lib/interactions/user-identity.d.ts +1 -1
- package/lib/interactions/user-identity.js +2 -1
- package/lib/interactions/user-identity.js.map +1 -1
- package/lib/interactions/workspace-id.js +1 -1
- package/lib/interactions/workspace-id.js.map +1 -1
- package/lib/memory-prompt.d.ts +10 -7
- package/lib/memory-prompt.js +12 -6
- package/lib/memory-prompt.js.map +1 -1
- package/lib/prompt.d.ts +27 -3
- package/lib/prompt.js +26 -1
- package/lib/prompt.js.map +1 -1
- package/lib/render/help.js +1 -1
- package/lib/render/help.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +11 -13
- package/src/bin/cli.ts +9 -2
- package/src/lib/args/parse.ts +1 -0
- package/src/lib/auth/validate-token.ts +1 -1
- package/src/lib/blueprint/source-remote.ts +1 -1
- package/src/lib/commands/local/wizard.ts +46 -4
- package/src/lib/commands/spec.ts +8 -0
- package/src/lib/http/api.ts +1 -1
- package/src/lib/http/client.ts +1 -1
- package/src/lib/http/memory-seam-api.ts +1 -4
- package/src/lib/http/request.ts +1 -4
- package/src/lib/interactions/access-code.ts +11 -7
- package/src/lib/interactions/acs-entrance.ts +2 -1
- package/src/lib/interactions/acs-system.ts +8 -1
- package/src/lib/interactions/acs-user.ts +5 -4
- package/src/lib/interactions/action-attempt-poll.ts +1 -1
- package/src/lib/interactions/blueprint-object.ts +62 -13
- package/src/lib/interactions/connected-account.ts +2 -1
- package/src/lib/interactions/custom-metadata.ts +6 -0
- package/src/lib/interactions/device.ts +2 -1
- package/src/lib/interactions/login.ts +1 -1
- package/src/lib/interactions/resource.ts +4 -0
- package/src/lib/interactions/timestamp.ts +4 -1
- package/src/lib/interactions/user-identity.ts +2 -1
- package/src/lib/interactions/workspace-id.ts +1 -1
- package/src/lib/memory-prompt.ts +31 -9
- package/src/lib/prompt.ts +65 -4
- package/src/lib/render/help.ts +1 -1
- package/src/lib/version.ts +1 -1
package/lib/prompt.js
CHANGED
|
@@ -60,6 +60,22 @@ const output = process.stderr;
|
|
|
60
60
|
const toOptions = (choices) => choices.map(({ label, value, hint }) => (hint === undefined
|
|
61
61
|
? { label, value }
|
|
62
62
|
: { label, value, hint }));
|
|
63
|
+
/**
|
|
64
|
+
* A value as the choice a list prompt opens on: the value when the list
|
|
65
|
+
* offers it, and otherwise nothing.
|
|
66
|
+
*
|
|
67
|
+
* A value the list does not offer, such as an id passed as an argument that
|
|
68
|
+
* is not among the resources fetched, would leave clack holding a selection
|
|
69
|
+
* with no choice behind it — so the prompt opens on its first choice, the
|
|
70
|
+
* same as one with no value to start from.
|
|
71
|
+
*/
|
|
72
|
+
export const offeredValue = (choices, value) => choices.some((choice) => choice.value === value) ? value : undefined;
|
|
73
|
+
/** Every one of the values a list prompt offers, in the order given. */
|
|
74
|
+
export const offeredValues = (choices, values) => (values ?? []).filter((value) => offeredValue(choices, value) !== undefined);
|
|
75
|
+
// Options a clack prompt is given cannot carry an explicit undefined: it
|
|
76
|
+
// declares each optional field without it, and the CLI type-checks with
|
|
77
|
+
// exactOptionalPropertyTypes.
|
|
78
|
+
const optional = (key, value) => value === undefined ? {} : { [key]: value };
|
|
63
79
|
export class TerminalPromptClient {
|
|
64
80
|
/**
|
|
65
81
|
* Prompts read raw keypresses and render an interface, so they need a
|
|
@@ -70,12 +86,18 @@ export class TerminalPromptClient {
|
|
|
70
86
|
canPrompt = () => process.stdin.isTTY === true && process.stderr.isTTY === true;
|
|
71
87
|
text = async (options) => {
|
|
72
88
|
installArrowKeyAliases();
|
|
73
|
-
|
|
89
|
+
const { initialValue, ...rest } = options;
|
|
90
|
+
return unwrap(await text({
|
|
91
|
+
...rest,
|
|
92
|
+
...optional('initialValue', initialValue),
|
|
93
|
+
output,
|
|
94
|
+
}));
|
|
74
95
|
};
|
|
75
96
|
number = async (options) => {
|
|
76
97
|
installArrowKeyAliases();
|
|
77
98
|
const value = unwrap(await text({
|
|
78
99
|
message: options.message,
|
|
100
|
+
...optional('initialValue', options.initialValue?.toString()),
|
|
79
101
|
validate: (value) => {
|
|
80
102
|
if (value == null || value.trim() === '')
|
|
81
103
|
return 'Enter a number';
|
|
@@ -97,6 +119,7 @@ export class TerminalPromptClient {
|
|
|
97
119
|
return unwrap(await select({
|
|
98
120
|
message: options.message,
|
|
99
121
|
options: toOptions(options.choices),
|
|
122
|
+
...optional('initialValue', offeredValue(options.choices, options.initialValue)),
|
|
100
123
|
output,
|
|
101
124
|
}));
|
|
102
125
|
};
|
|
@@ -105,6 +128,7 @@ export class TerminalPromptClient {
|
|
|
105
128
|
return unwrap(await autocomplete({
|
|
106
129
|
message: options.message,
|
|
107
130
|
options: toOptions(options.choices),
|
|
131
|
+
...optional('initialValue', offeredValue(options.choices, options.initialValue)),
|
|
108
132
|
// Search a list by any part of a name or hint, rather than only by
|
|
109
133
|
// the label, which is all clack matches for itself.
|
|
110
134
|
filter: searchChoices,
|
|
@@ -116,6 +140,7 @@ export class TerminalPromptClient {
|
|
|
116
140
|
return unwrap(await autocompleteMultiselect({
|
|
117
141
|
message: options.message,
|
|
118
142
|
options: toOptions(options.choices),
|
|
143
|
+
initialValues: offeredValues(options.choices, options.initialValues),
|
|
119
144
|
filter: searchChoices,
|
|
120
145
|
output,
|
|
121
146
|
}));
|
package/lib/prompt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/lib/prompt.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,OAAO,EACP,QAAQ,EAER,MAAM,EACN,IAAI,GACL,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/lib/prompt.ts"],"names":[],"mappings":"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"}
|
package/lib/render/help.js
CHANGED
|
@@ -21,7 +21,7 @@ const outputSection = {
|
|
|
21
21
|
content: [
|
|
22
22
|
'Only the response is written to stdout, so it is safe to pipe. Prompts, progress, and other information are written to stderr.',
|
|
23
23
|
'The response is trimmed to the response key and pagination.',
|
|
24
|
-
'Request params may be piped or redirected in as a JSON object. Params given as arguments win over
|
|
24
|
+
'Request params may be piped or redirected in as a JSON object, or passed inline with --raw. Params given as arguments win over raw or stdin params.',
|
|
25
25
|
],
|
|
26
26
|
};
|
|
27
27
|
const examples = [
|
package/lib/render/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/lib/render/help.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,EAAE,EAAgB,MAAM,oBAAoB,CAAA;AAEnE,OAAO,EAKL,WAAW,EACX,SAAS,GACV,MAAM,sBAAsB,CAAA;AAE7B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,IAAc,EACd,IAAiB,EACF,EAAE;IACjB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACnC,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,gBAAgB,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;IAEtE,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACvC,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,gBAAgB,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;IAE5E,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,QAAQ,GACZ,qNAAqN,CAAA;AAEvN,MAAM,aAAa,GAAG;IACpB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE;QACP,gIAAgI;QAChI,6DAA6D;QAC7D,
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/lib/render/help.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,EAAE,EAAgB,MAAM,oBAAoB,CAAA;AAEnE,OAAO,EAKL,WAAW,EACX,SAAS,GACV,MAAM,sBAAsB,CAAA;AAE7B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,IAAc,EACd,IAAiB,EACF,EAAE;IACjB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACnC,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,gBAAgB,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;IAEtE,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACvC,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,gBAAgB,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;IAE5E,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,QAAQ,GACZ,qNAAqN,CAAA;AAEvN,MAAM,aAAa,GAAG;IACpB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE;QACP,gIAAgI;QAChI,6DAA6D;QAC7D,qJAAqJ;KACtJ;CACF,CAAA;AAED,MAAM,QAAQ,GAAG;IACf,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,2CAA2C,EAAE;IACtE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,EAAE;IACjD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,qCAAqC,EAAE;IACvE,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,wBAAwB,EAAE;IACpE;QACE,IAAI,EAAE,8BAA8B;QACpC,OAAO,EAAE,8CAA8C;KACxD;IACD,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,iCAAiC,EAAE;IACzE;QACE,IAAI,EAAE,wCAAwC;QAC9C,OAAO,EAAE,iDAAiD;KAC3D;IACD;QACE,IAAI,EAAE,4CAA4C;QAClD,OAAO,EAAE,6CAA6C;KACvD;IACD;QACE,IAAI,EAAE,oDAAoD;QAC1D,OAAO,EAAE,gBAAgB;KAC1B;IACD;QACE,IAAI,EAAE,uEAAuE;QAC7E,OAAO,EAAE,wBAAwB;KAClC;IACD;QACE,IAAI,EAAE,0DAA0D;QAChE,OAAO,EAAE,gCAAgC;KAC1C;IACD;QACE,IAAI,EAAE,kCAAkC;QACxC,OAAO,EAAE,uCAAuC;KACjD;IACD;QACE,IAAI,EAAE,0CAA0C;QAChD,OAAO,EAAE,iCAAiC;KAC3C;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,yDAAyD;KACnE;CACF,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAE,IAAiB,EAAa,EAAE;IAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAE9C,OAAO;QACL,MAAM;YACJ,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE;YAC3C,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,kBAAkB,IAAI,GAAG,EAAE;QACxD,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,sBAAsB,EAAE;QAC3D,GAAG,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC;QACzC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;QAC/B,GAAG,CAAC,MAAM;YACR,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;YACzE,CAAC,CAAC,EAAE,CAAC;QACP,EAAE,OAAO,EAAE,QAAQ,IAAI,gDAAgD,EAAE;KAC1E,CAAA;AACH,CAAC,CAAA;AAED,MAAM,uBAAuB,GAAG,CAC9B,KAAmB,EACnB,MAAe,EACJ,EAAE;IACb,MAAM,OAAO,GAAG,CAAC,WAAwC,EAAE,EAAE,CAC3D,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;IAE9E,4EAA4E;IAC5E,0EAA0E;IAC1E,8BAA8B;IAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IACtE,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,CAAA;IAClE,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,CAAA;IAElE,OAAO;QACL,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;QAC7C,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;KAClD,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACnD,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,CACtB,OAA0B,EAC1B,IAAiB,EACN,EAAE;IACb,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;IACzC,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;IAE9B,OAAO;QACL;YACE,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAClD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CACtB;SACF;QACD;YACE,MAAM,EAAE,OAAO;YACf,OAAO,EACL,UAAU,IAAI,IAAI;gBAChB,CAAC,CAAC,GAAG,IAAI,YAAY;gBACrB,CAAC,CAAC,GAAG,IAAI,KAAK,UAAU,CAAC,IAAI,aAAa;SAC/C;QACD,GAAG,CAAC,UAAU,IAAI,IAAI;YACpB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE;oBACE,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,eAAe,UAAU,CAAC,IAAI,IAAI;4BACxC,OAAO,EAAE,UAAU,CAAC,WAAW;yBAChC;qBACF;iBACF;aACF,CAAC;QACN,wEAAwE;QACxE,wDAAwD;QACxD,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;QAC/B,GAAG,CAAC,QAAQ;YACV,CAAC,CAAC;gBACE;oBACE,OAAO,EACL,gEAAgE;iBACnE;aACF;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAA;AACH,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,KAAoB,EAAE,MAAM,GAAG,SAAS,EAAW,EAAE,CAAC,CAAC;IAC5E,MAAM;IACN,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC;CAC1C,CAAC,CAAA;AAEF,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAU7B,MAAM,kBAAkB,GAAG,CAAC,IAAiB,EAAoB,EAAE;IACjE,MAAM,WAAW,GAAG;QAClB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE;QAC1C,IAAI,CAAC,WAAW;QAChB,cAAc,CAAC,IAAI,CAAC;KACrB;SACE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;SAC7B,IAAI,CAAC,GAAG,CAAC,CAAA;IAEZ,OAAO;QACL,wEAAwE;QACxE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;QACrB,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QACpD,0EAA0E;QAC1E,sBAAsB;QACtB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;QACxC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,WAAW;KACZ,CAAA;AACH,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CAAC,IAAiB,EAAU,EAAE;IACnD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAEvC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,mBAAmB,CAAA;IAErD,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,WAAW,KAAK,GAAG,CAAA;AAC/E,CAAC,CAAA"}
|
package/lib/version.d.ts
CHANGED
package/lib/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seamapi/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.26.0",
|
|
4
4
|
"description": "A command-line interface (CLI) for interacting with the Seam API.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
7
7
|
"types": "index.d.ts",
|
|
8
8
|
"exports": {
|
|
9
9
|
".": {
|
|
10
|
-
"
|
|
11
|
-
|
|
12
|
-
"default": "./index.js"
|
|
13
|
-
}
|
|
10
|
+
"types": "./index.d.ts",
|
|
11
|
+
"default": "./index.js"
|
|
14
12
|
},
|
|
15
13
|
"./cli": {
|
|
16
|
-
"
|
|
17
|
-
|
|
18
|
-
"default": "./bin/cli.js"
|
|
19
|
-
}
|
|
14
|
+
"types": "./bin/cli.d.ts",
|
|
15
|
+
"default": "./bin/cli.js"
|
|
20
16
|
}
|
|
21
17
|
},
|
|
22
18
|
"module": "index.js",
|
|
@@ -76,13 +72,13 @@
|
|
|
76
72
|
"report": "vitest run --coverage"
|
|
77
73
|
},
|
|
78
74
|
"engines": {
|
|
79
|
-
"node": ">=22.
|
|
75
|
+
"node": ">=22.12.0",
|
|
80
76
|
"npm": ">=10.0.0"
|
|
81
77
|
},
|
|
82
78
|
"devEngines": {
|
|
83
79
|
"runtime": {
|
|
84
80
|
"name": "node",
|
|
85
|
-
"version": "^24.11.0 || ^22.
|
|
81
|
+
"version": "^24.11.0 || ^22.12.0",
|
|
86
82
|
"onFail": "warn"
|
|
87
83
|
},
|
|
88
84
|
"packageManager": {
|
|
@@ -91,11 +87,13 @@
|
|
|
91
87
|
"onFail": "warn"
|
|
92
88
|
}
|
|
93
89
|
},
|
|
90
|
+
"optionalDependencies": {
|
|
91
|
+
"@seamapi/wizard": "0.8.0"
|
|
92
|
+
},
|
|
94
93
|
"dependencies": {
|
|
95
94
|
"@clack/prompts": "^1.7.0",
|
|
96
95
|
"@seamapi/blueprint": "1.5.0",
|
|
97
|
-
"@seamapi/http": "2.
|
|
98
|
-
"@seamapi/wizard": "0.8.0",
|
|
96
|
+
"@seamapi/http": "2.3.0",
|
|
99
97
|
"chalk": "^6.0.0",
|
|
100
98
|
"command-line-usage": "^7.0.4",
|
|
101
99
|
"configstore": "^8.0.0",
|
package/src/bin/cli.ts
CHANGED
|
@@ -29,7 +29,7 @@ import { createSeamApi, type SeamApi } from 'lib/http/api.js'
|
|
|
29
29
|
import { interactForCommandSelection } from 'lib/interactions/index.js'
|
|
30
30
|
import { getOutput, setOutput } from 'lib/output/get-output.js'
|
|
31
31
|
import { createOutput } from 'lib/output/output.js'
|
|
32
|
-
import { readStdinJson } from 'lib/output/read-stdin-json.js'
|
|
32
|
+
import { parseJsonParams, readStdinJson } from 'lib/output/read-stdin-json.js'
|
|
33
33
|
import { resolveOutputFormat } from 'lib/output/resolve-output-format.js'
|
|
34
34
|
import { setAuthOverrides } from 'lib/overrides.js'
|
|
35
35
|
import { canPrompt } from 'lib/prompt.js'
|
|
@@ -168,7 +168,14 @@ async function cli(args: ParsedArgs, argv: string[]) {
|
|
|
168
168
|
|
|
169
169
|
// Params piped or redirected in, e.g., `seam devices list < params.json`.
|
|
170
170
|
const pipedParams = await readStdinJson()
|
|
171
|
-
const
|
|
171
|
+
const rawParams =
|
|
172
|
+
args['raw'] == null ? null : parseJsonParams(String(args['raw']), '--raw')
|
|
173
|
+
// Inline raw params take precedence over piped params, while ordinary
|
|
174
|
+
// command arguments still take precedence over both.
|
|
175
|
+
const stdinParams: Record<string, any> = {
|
|
176
|
+
...pipedParams,
|
|
177
|
+
...rawParams,
|
|
178
|
+
}
|
|
172
179
|
|
|
173
180
|
const auth = resolveAuth(config)
|
|
174
181
|
let seamApi: Promise<SeamApi> | null = null
|
package/src/lib/args/parse.ts
CHANGED
|
@@ -9,7 +9,7 @@ import { resolveAuth } from 'lib/context.js'
|
|
|
9
9
|
export const createRemoteBlueprint = async (): Promise<Blueprint> => {
|
|
10
10
|
const [{ createBlueprint }, { getOpenapiSchema }] = await Promise.all([
|
|
11
11
|
import('@seamapi/blueprint'),
|
|
12
|
-
import('@seamapi/http
|
|
12
|
+
import('@seamapi/http'),
|
|
13
13
|
])
|
|
14
14
|
const openapi = await getOpenapiSchema(resolveAuth().endpoint)
|
|
15
15
|
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import { join } from 'node:path'
|
|
2
2
|
|
|
3
|
-
import { isApiKey } from '@seamapi/http
|
|
4
|
-
import type {
|
|
3
|
+
import { isApiKey } from '@seamapi/http'
|
|
4
|
+
import type {
|
|
5
|
+
default as wizard,
|
|
6
|
+
StorageAdapter,
|
|
7
|
+
WizardAdapter,
|
|
8
|
+
WizardAuth,
|
|
9
|
+
} from '@seamapi/wizard'
|
|
5
10
|
import Configstore from 'configstore'
|
|
6
11
|
|
|
7
12
|
import type { Command } from 'lib/commands/registry.js'
|
|
8
13
|
import { type CliConfig, getConfig, rootPaths } from 'lib/config/index.js'
|
|
9
14
|
import { resolveAuth } from 'lib/context.js'
|
|
15
|
+
import { UsageError } from 'lib/errors.js'
|
|
10
16
|
|
|
11
17
|
/**
|
|
12
18
|
* Run the Seam setup wizard.
|
|
@@ -14,8 +20,37 @@ import { resolveAuth } from 'lib/context.js'
|
|
|
14
20
|
* Intercepted by the entry before argument parsing so the wizard owns its
|
|
15
21
|
* own argv; the registered executor covers selecting it interactively.
|
|
16
22
|
*/
|
|
17
|
-
|
|
18
|
-
|
|
23
|
+
type Wizard = typeof wizard
|
|
24
|
+
type WizardModule = { default: Wizard }
|
|
25
|
+
type LoadWizard = () => Promise<WizardModule>
|
|
26
|
+
|
|
27
|
+
const loadWizard: LoadWizard = async () => await import('@seamapi/wizard')
|
|
28
|
+
|
|
29
|
+
export const runWizard = async (
|
|
30
|
+
argv: string[],
|
|
31
|
+
load: LoadWizard = loadWizard,
|
|
32
|
+
): Promise<void> => {
|
|
33
|
+
let wizard: Wizard
|
|
34
|
+
try {
|
|
35
|
+
const module = await load()
|
|
36
|
+
wizard = module.default
|
|
37
|
+
} catch (error) {
|
|
38
|
+
if (isMissingWizard(error)) {
|
|
39
|
+
throw new UsageError(
|
|
40
|
+
[
|
|
41
|
+
'The Seam Wizard is not available in this installation.',
|
|
42
|
+
'',
|
|
43
|
+
'This is most likely because the packaging source does not allow software that includes dependencies with non-commercial licenses, including the Claude SDK used by the Wizard.',
|
|
44
|
+
'',
|
|
45
|
+
'To use the Wizard, install the Seam CLI from npm:',
|
|
46
|
+
'',
|
|
47
|
+
' npm i -g seam',
|
|
48
|
+
].join('\n'),
|
|
49
|
+
)
|
|
50
|
+
}
|
|
51
|
+
throw error
|
|
52
|
+
}
|
|
53
|
+
|
|
19
54
|
await wizard({
|
|
20
55
|
argv,
|
|
21
56
|
commandName: 'seam wizard',
|
|
@@ -39,6 +74,13 @@ export const wizardCommand: Command = {
|
|
|
39
74
|
},
|
|
40
75
|
}
|
|
41
76
|
|
|
77
|
+
const isMissingWizard = (error: unknown): boolean =>
|
|
78
|
+
error instanceof Error &&
|
|
79
|
+
'code' in error &&
|
|
80
|
+
(error.code === 'ERR_MODULE_NOT_FOUND' ||
|
|
81
|
+
error.code === 'MODULE_NOT_FOUND') &&
|
|
82
|
+
error.message.includes("'@seamapi/wizard'")
|
|
83
|
+
|
|
42
84
|
const wizardFileName = 'wizard.json'
|
|
43
85
|
|
|
44
86
|
export const createWizardAdapter = ({
|
package/src/lib/commands/spec.ts
CHANGED
|
@@ -104,6 +104,14 @@ export const globalFlags: CommandFlag[] = [
|
|
|
104
104
|
takesValue: false,
|
|
105
105
|
isRequired: false,
|
|
106
106
|
},
|
|
107
|
+
{
|
|
108
|
+
long: 'raw',
|
|
109
|
+
short: null,
|
|
110
|
+
description: 'Pass request parameters as an inline JSON object.',
|
|
111
|
+
values: [],
|
|
112
|
+
takesValue: true,
|
|
113
|
+
isRequired: false,
|
|
114
|
+
},
|
|
107
115
|
{
|
|
108
116
|
long: 'non-interactive',
|
|
109
117
|
short: 'y',
|
package/src/lib/http/api.ts
CHANGED
package/src/lib/http/client.ts
CHANGED
package/src/lib/http/request.ts
CHANGED
|
@@ -3,13 +3,16 @@ import { getSeam } from 'lib/http/client.js'
|
|
|
3
3
|
import { interactForDevice } from './device.js'
|
|
4
4
|
import { interactForResource } from './resource.js'
|
|
5
5
|
|
|
6
|
-
export const interactForAccessCode = async (
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
export const interactForAccessCode = async (
|
|
7
|
+
{
|
|
8
|
+
// The key is a Seam API parameter name: callers pass the blueprint params
|
|
9
|
+
// bag through as-is, so only the binding may be camelCase.
|
|
10
|
+
device_id: deviceId,
|
|
11
|
+
}: {
|
|
12
|
+
device_id?: string
|
|
13
|
+
},
|
|
14
|
+
initialValue?: string,
|
|
15
|
+
) => {
|
|
13
16
|
const seam = await getSeam()
|
|
14
17
|
|
|
15
18
|
if (!deviceId) {
|
|
@@ -19,6 +22,7 @@ export const interactForAccessCode = async ({
|
|
|
19
22
|
return interactForResource({
|
|
20
23
|
resourceName: 'access_code',
|
|
21
24
|
fetchResources: () => seam.accessCodes.list({ device_id: deviceId }),
|
|
25
|
+
initialValue,
|
|
22
26
|
toChoice: (accessCode) => ({
|
|
23
27
|
title: accessCode.name ?? '<No Name>',
|
|
24
28
|
value: accessCode.access_code_id,
|
|
@@ -2,12 +2,13 @@ import { getSeam } from 'lib/http/client.js'
|
|
|
2
2
|
|
|
3
3
|
import { interactForResource } from './resource.js'
|
|
4
4
|
|
|
5
|
-
export const interactForAcsEntrance = async () => {
|
|
5
|
+
export const interactForAcsEntrance = async (initialValue?: string) => {
|
|
6
6
|
const seam = await getSeam()
|
|
7
7
|
|
|
8
8
|
return interactForResource({
|
|
9
9
|
resourceName: 'ACS entrance',
|
|
10
10
|
fetchResources: () => seam.acs.entrances.list(),
|
|
11
|
+
initialValue,
|
|
11
12
|
toChoice: (entrance) => ({
|
|
12
13
|
title: entrance.display_name ?? '<No Name>',
|
|
13
14
|
value: entrance.acs_entrance_id,
|
|
@@ -2,13 +2,20 @@ import { getSeam } from 'lib/http/client.js'
|
|
|
2
2
|
|
|
3
3
|
import { interactForResource } from './resource.js'
|
|
4
4
|
|
|
5
|
-
export const interactForAcsSystem = async (
|
|
5
|
+
export const interactForAcsSystem = async ({
|
|
6
|
+
message,
|
|
7
|
+
initialValue,
|
|
8
|
+
}: {
|
|
9
|
+
message?: string | undefined
|
|
10
|
+
initialValue?: string | undefined
|
|
11
|
+
} = {}) => {
|
|
6
12
|
const seam = await getSeam()
|
|
7
13
|
|
|
8
14
|
return interactForResource({
|
|
9
15
|
resourceName: 'ACS system',
|
|
10
16
|
fetchResources: () => seam.acs.systems.list(),
|
|
11
17
|
message,
|
|
18
|
+
initialValue,
|
|
12
19
|
toChoice: (system) => ({
|
|
13
20
|
title: `${system.name} ${system.external_type_display_name}`,
|
|
14
21
|
value: system.acs_system_id,
|
|
@@ -3,16 +3,17 @@ import { getSeam } from 'lib/http/client.js'
|
|
|
3
3
|
import { interactForAcsSystem } from './acs-system.js'
|
|
4
4
|
import { interactForResource } from './resource.js'
|
|
5
5
|
|
|
6
|
-
export const interactForAcsUser = async () => {
|
|
6
|
+
export const interactForAcsUser = async (initialValue?: string) => {
|
|
7
7
|
const seam = await getSeam()
|
|
8
8
|
|
|
9
|
-
const acsSystemId = await interactForAcsSystem(
|
|
10
|
-
'What acs_system does the acs_user belong to?',
|
|
11
|
-
)
|
|
9
|
+
const acsSystemId = await interactForAcsSystem({
|
|
10
|
+
message: 'What acs_system does the acs_user belong to?',
|
|
11
|
+
})
|
|
12
12
|
|
|
13
13
|
return interactForResource({
|
|
14
14
|
resourceName: 'ACS user',
|
|
15
15
|
fetchResources: () => seam.acs.users.list({ acs_system_id: acsSystemId }),
|
|
16
|
+
initialValue,
|
|
16
17
|
toChoice: (user) => ({
|
|
17
18
|
title: `${user.display_name} ${user.email_address}`,
|
|
18
19
|
value: user.acs_user_id,
|