@whooshbang/sdk 1.0.0-rc.21 → 1.0.0-rc.23
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/dist/cli/commands.d.ts +31 -0
- package/dist/cli/commands.js +342 -23
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/main.js +19 -1
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/selectors.d.ts +7 -2
- package/dist/cli/selectors.js +25 -13
- package/dist/cli/selectors.js.map +1 -1
- package/dist/cli/session.d.ts +19 -0
- package/dist/cli/session.js +22 -0
- package/dist/cli/session.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/commands.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { ConfirmInteractionRequest, InputInteractionRequest, InteractionSummary, SelectInteractionRequest } from "@whooshbang/contracts";
|
|
2
|
+
import type { WhooshBangClient } from "../client.js";
|
|
1
3
|
import { type ParsedArguments } from "./arguments.js";
|
|
2
4
|
import { type Writer } from "./output.js";
|
|
3
5
|
import { resolveOrigin } from "./session.js";
|
|
@@ -9,6 +11,35 @@ export interface CommandContext {
|
|
|
9
11
|
readonly readStdin: () => Promise<string>;
|
|
10
12
|
readonly credentialsFile?: string;
|
|
11
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Builds the question from what was asked for.
|
|
16
|
+
*
|
|
17
|
+
* Choices mean a single-select, `--free-text` means a typed reply, and a
|
|
18
|
+
* question with neither is a yes/no confirm — which is what most first
|
|
19
|
+
* questions are, and what someone following a quickstart gets for free.
|
|
20
|
+
*/
|
|
21
|
+
export declare function askedInteraction(parsed: ParsedArguments): ConfirmInteractionRequest | SelectInteractionRequest | InputInteractionRequest;
|
|
22
|
+
/**
|
|
23
|
+
* Waits for the question to reach a state that can no longer change.
|
|
24
|
+
*
|
|
25
|
+
* One request cannot wait longer than the service's own poll ceiling, so a
|
|
26
|
+
* longer wait is consecutive polls against a deadline. Each one returns the
|
|
27
|
+
* moment the answer lands, so this costs the wait it was given and no more.
|
|
28
|
+
*/
|
|
29
|
+
export interface EnvironmentScope {
|
|
30
|
+
readonly environmentId: string;
|
|
31
|
+
readonly projectId: string;
|
|
32
|
+
}
|
|
33
|
+
export declare function untilAnswered(api: WhooshBangClient, scope: EnvironmentScope | null, interactionId: string, waitFor: number): Promise<InteractionSummary>;
|
|
34
|
+
export declare function describeInteraction(summary: InteractionSummary, where: string): string[];
|
|
35
|
+
/**
|
|
36
|
+
* Words left over once the command itself is accounted for.
|
|
37
|
+
*
|
|
38
|
+
* `--shared-identity x` typed as `shared-identity x` produces two positional
|
|
39
|
+
* words and no option. Both the value and the intent are lost, and the command
|
|
40
|
+
* then fails for a reason that has nothing to do with what was mistyped.
|
|
41
|
+
*/
|
|
42
|
+
export declare function strayWords(words: readonly string[]): string[];
|
|
12
43
|
export declare function resolveCommand(words: readonly string[]): ((context: CommandContext) => Promise<void>) | null;
|
|
13
44
|
export declare const COMMAND_NAMES: string[];
|
|
14
45
|
export { resolveOrigin };
|
package/dist/cli/commands.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { confirmInteraction, inputInteraction, interactionAnswer, isInteractionTerminal, selectInteraction, } from "../interactions.js";
|
|
2
3
|
import { required, UsageError } from "./arguments.js";
|
|
3
4
|
import { emit, emitSecret, table } from "./output.js";
|
|
4
|
-
import { resolveEnvironment } from "./selectors.js";
|
|
5
|
-
import { authorizedClient, resolveOrigin, signIn, signOut } from "./session.js";
|
|
5
|
+
import { resolveDefaultNotifier, resolveEnvironment } from "./selectors.js";
|
|
6
|
+
import { authorizedClient, authorizedSession, resolveOrigin, signIn, signOut, } from "./session.js";
|
|
6
7
|
/**
|
|
7
8
|
* Every side-effecting call needs an idempotency key, and a person running a
|
|
8
9
|
* command by hand has no opinion about one. Generating it means a retried
|
|
@@ -14,13 +15,20 @@ function idempotency(parsed) {
|
|
|
14
15
|
return { idempotencyKey: parsed.options.get("key") ?? randomUUID() };
|
|
15
16
|
}
|
|
16
17
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
18
|
+
* Omitted unless asked for, which is the only way the reserved destinations
|
|
19
|
+
* work.
|
|
20
|
+
*
|
|
21
|
+
* This used to say `connection` on every send, on the reasoning that naming
|
|
22
|
+
* the transport kept a script auditable. It also overrode the service's own
|
|
23
|
+
* rule — a `test:` subscriber selects simulation precisely by leaving the
|
|
24
|
+
* target unset — so `--subscriber test:accepted` was refused as unbound, and
|
|
25
|
+
* the destinations that exist to make delivery testable without a phone could
|
|
26
|
+
* not be reached from the command line at all.
|
|
21
27
|
*/
|
|
22
28
|
function deliveryTarget(parsed) {
|
|
23
|
-
const value = parsed.options.get("target")
|
|
29
|
+
const value = parsed.options.get("target");
|
|
30
|
+
if (value === undefined)
|
|
31
|
+
return undefined;
|
|
24
32
|
if (value !== "connection" && value !== "simulator") {
|
|
25
33
|
throw new UsageError("--target must be connection or simulator.");
|
|
26
34
|
}
|
|
@@ -34,6 +42,219 @@ async function client(context) {
|
|
|
34
42
|
origin: context.origin,
|
|
35
43
|
});
|
|
36
44
|
}
|
|
45
|
+
/** Levenshtein distance, bounded by the short strings it is used on. */
|
|
46
|
+
function editDistance(a, b) {
|
|
47
|
+
const previous = Array.from({ length: b.length + 1 }, (_, index) => index);
|
|
48
|
+
for (let i = 1; i <= a.length; i += 1) {
|
|
49
|
+
let diagonal = previous[0];
|
|
50
|
+
previous[0] = i;
|
|
51
|
+
for (let j = 1; j <= b.length; j += 1) {
|
|
52
|
+
const candidate = Math.min(previous[j] + 1, previous[j - 1] + 1, diagonal + (a[i - 1] === b[j - 1] ? 0 : 1));
|
|
53
|
+
diagonal = previous[j];
|
|
54
|
+
previous[j] = candidate;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return previous[b.length];
|
|
58
|
+
}
|
|
59
|
+
const CONNECTION_MODES = [
|
|
60
|
+
"whooshbang_shared",
|
|
61
|
+
"customer_managed",
|
|
62
|
+
"customer_byok",
|
|
63
|
+
];
|
|
64
|
+
/**
|
|
65
|
+
* A mode the API will accept, refused here rather than there.
|
|
66
|
+
*
|
|
67
|
+
* A typo used to travel all the way to the service and come back as "The
|
|
68
|
+
* request does not match the WhooshBang contract" — true, unactionable, and
|
|
69
|
+
* indistinguishable from a dozen other malformed requests. The three modes are
|
|
70
|
+
* a closed set this program already knows.
|
|
71
|
+
*/
|
|
72
|
+
function connectionMode(parsed) {
|
|
73
|
+
const value = required(parsed, "mode", CONNECTION_MODES.join(", "));
|
|
74
|
+
const match = CONNECTION_MODES.find((mode) => mode === value);
|
|
75
|
+
if (!match) {
|
|
76
|
+
// Near-misses are the common case: one dropped or transposed letter in a
|
|
77
|
+
// long snake_case word. `wooshbang_shared` is exactly that, and a list of
|
|
78
|
+
// three valid values is a worse answer than naming the one they meant.
|
|
79
|
+
const near = CONNECTION_MODES.find((mode) => editDistance(mode, value.toLowerCase()) <= 2);
|
|
80
|
+
throw new UsageError(near
|
|
81
|
+
? `"${value}" is not a connection mode. Did you mean ${near}?`
|
|
82
|
+
: `"${value}" is not a connection mode. Use one of ${CONNECTION_MODES.join(", ")}.`);
|
|
83
|
+
}
|
|
84
|
+
return match;
|
|
85
|
+
}
|
|
86
|
+
const DEFAULT_EXPIRES_IN_SECONDS = 3_600;
|
|
87
|
+
/** The service caps one long poll at 30 seconds; longer waits are consecutive polls. */
|
|
88
|
+
const MAX_POLL_SECONDS = 30;
|
|
89
|
+
/**
|
|
90
|
+
* Reads `--choice` in either shape a person is likely to type.
|
|
91
|
+
*
|
|
92
|
+
* `--choice 'ship=Ship it,hold=Hold'` and `--choice ship='Ship it' --choice
|
|
93
|
+
* hold=Hold` produce the same two options, because both are natural and
|
|
94
|
+
* neither is worth a second flag to distinguish. A bare word with no `=` is
|
|
95
|
+
* its own label, so `--choice yes,no` asks the obvious question.
|
|
96
|
+
*/
|
|
97
|
+
function choices(parsed) {
|
|
98
|
+
return (parsed.repeated.get("choice") ?? [])
|
|
99
|
+
.flatMap((value) => value.split(","))
|
|
100
|
+
.map((entry) => entry.trim())
|
|
101
|
+
.filter((entry) => entry.length > 0)
|
|
102
|
+
.map((entry) => {
|
|
103
|
+
const equals = entry.indexOf("=");
|
|
104
|
+
if (equals === -1)
|
|
105
|
+
return { label: entry, value: entry };
|
|
106
|
+
return {
|
|
107
|
+
label: entry.slice(equals + 1).trim(),
|
|
108
|
+
value: entry.slice(0, equals).trim(),
|
|
109
|
+
};
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
function seconds(parsed, name) {
|
|
113
|
+
const raw = parsed.options.get(name);
|
|
114
|
+
if (raw === undefined)
|
|
115
|
+
return undefined;
|
|
116
|
+
const value = Number(raw);
|
|
117
|
+
if (!Number.isInteger(value) || value < 0) {
|
|
118
|
+
throw new UsageError(`--${name} must be a whole number of seconds.`);
|
|
119
|
+
}
|
|
120
|
+
return value;
|
|
121
|
+
}
|
|
122
|
+
function waitSeconds(parsed) {
|
|
123
|
+
// `--wait` with no value is the common intent: wait for a sensible while.
|
|
124
|
+
if (parsed.switches.has("wait"))
|
|
125
|
+
return MAX_POLL_SECONDS;
|
|
126
|
+
return seconds(parsed, "wait");
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Builds the question from what was asked for.
|
|
130
|
+
*
|
|
131
|
+
* Choices mean a single-select, `--free-text` means a typed reply, and a
|
|
132
|
+
* question with neither is a yes/no confirm — which is what most first
|
|
133
|
+
* questions are, and what someone following a quickstart gets for free.
|
|
134
|
+
*/
|
|
135
|
+
export function askedInteraction(parsed) {
|
|
136
|
+
const prompt = required(parsed, "text", "the question to ask");
|
|
137
|
+
const expiresInSeconds = seconds(parsed, "expires-in") ?? DEFAULT_EXPIRES_IN_SECONDS;
|
|
138
|
+
// The builders enforce this window too, but they report it as "the request
|
|
139
|
+
// is not valid", which names neither the field nor the bound it missed.
|
|
140
|
+
if (expiresInSeconds < 30 || expiresInSeconds > 86_400) {
|
|
141
|
+
throw new UsageError(`--expires-in must be 30 seconds through 86400 (24 hours); ${expiresInSeconds} given.`);
|
|
142
|
+
}
|
|
143
|
+
const correlationId = parsed.options.get("correlation");
|
|
144
|
+
const shared = {
|
|
145
|
+
...(correlationId === undefined ? {} : { correlationId }),
|
|
146
|
+
expiresInSeconds,
|
|
147
|
+
prompt,
|
|
148
|
+
};
|
|
149
|
+
const options = choices(parsed);
|
|
150
|
+
const freeText = parsed.switches.has("free-text") || parsed.options.has("free-text");
|
|
151
|
+
if (options.length > 0 && freeText) {
|
|
152
|
+
throw new UsageError("--free-text asks for a typed reply and --choice asks for a pick. Use one.");
|
|
153
|
+
}
|
|
154
|
+
if (options.length > 0) {
|
|
155
|
+
if (options.length < 2 || options.length > 6) {
|
|
156
|
+
throw new UsageError(`A choice question needs 2 to 6 options; ${options.length} given. ` +
|
|
157
|
+
"Separate them with commas: --choice 'ship=Ship it,hold=Hold'.");
|
|
158
|
+
}
|
|
159
|
+
return selectInteraction({ ...shared, options });
|
|
160
|
+
}
|
|
161
|
+
return freeText
|
|
162
|
+
? inputInteraction(shared)
|
|
163
|
+
: confirmInteraction({
|
|
164
|
+
...shared,
|
|
165
|
+
...(parsed.options.has("confirm-label")
|
|
166
|
+
? { confirmLabel: parsed.options.get("confirm-label") }
|
|
167
|
+
: {}),
|
|
168
|
+
...(parsed.options.has("deny-label")
|
|
169
|
+
? { denyLabel: parsed.options.get("deny-label") }
|
|
170
|
+
: {}),
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
/** Reads one interaction from whichever route the held credential can reach. */
|
|
174
|
+
function readInteraction(api, scope, interactionId, wait) {
|
|
175
|
+
const options = wait === undefined ? {} : { wait };
|
|
176
|
+
return scope === null
|
|
177
|
+
? api.getInteraction(interactionId, options)
|
|
178
|
+
: api.getInteractionInEnvironment(scope.projectId, scope.environmentId, interactionId, options);
|
|
179
|
+
}
|
|
180
|
+
export async function untilAnswered(api, scope, interactionId, waitFor) {
|
|
181
|
+
const deadline = Date.now() + waitFor * 1_000;
|
|
182
|
+
let summary = await readInteraction(api, scope, interactionId);
|
|
183
|
+
while (!isInteractionTerminal(summary)) {
|
|
184
|
+
const remaining = Math.ceil((deadline - Date.now()) / 1_000);
|
|
185
|
+
if (remaining <= 0)
|
|
186
|
+
break;
|
|
187
|
+
summary = await readInteraction(api, scope, interactionId, Math.min(MAX_POLL_SECONDS, remaining));
|
|
188
|
+
}
|
|
189
|
+
return summary;
|
|
190
|
+
}
|
|
191
|
+
/** How a confirm's boolean reads to somebody who asked a yes/no question. */
|
|
192
|
+
function answerText(summary) {
|
|
193
|
+
const answer = interactionAnswer(summary);
|
|
194
|
+
if (!answer)
|
|
195
|
+
return undefined;
|
|
196
|
+
return answer.type === "confirm"
|
|
197
|
+
? answer.value
|
|
198
|
+
? "yes"
|
|
199
|
+
: "no"
|
|
200
|
+
: answer.value;
|
|
201
|
+
}
|
|
202
|
+
export function describeInteraction(summary, where) {
|
|
203
|
+
if (summary.state === "answered") {
|
|
204
|
+
const answer = answerText(summary);
|
|
205
|
+
return [
|
|
206
|
+
// An answered question whose answer has aged out of its retention window
|
|
207
|
+
// is not a missing answer; saying "answered" and nothing else would look
|
|
208
|
+
// like one.
|
|
209
|
+
answer === undefined
|
|
210
|
+
? `${summary.id} answered${summary.answered_at ? ` at ${summary.answered_at}` : ""}, and the answer is past its retention window.`
|
|
211
|
+
: `answer: ${answer}`,
|
|
212
|
+
`${summary.id} ${summary.type} answered${summary.answered_at ? ` at ${summary.answered_at}` : ""}`,
|
|
213
|
+
];
|
|
214
|
+
}
|
|
215
|
+
if (summary.state === "open") {
|
|
216
|
+
return [
|
|
217
|
+
`${summary.id} is still open until ${summary.expires_at}.`,
|
|
218
|
+
`Check again with: wb interaction get ${summary.id}${where ? ` ${where}` : ""} --wait 30`,
|
|
219
|
+
];
|
|
220
|
+
}
|
|
221
|
+
return [`${summary.id} ${summary.type} ${summary.state}`];
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Where a message command should address itself.
|
|
225
|
+
*
|
|
226
|
+
* A project credential already names one project and one environment, so it
|
|
227
|
+
* authenticates the flat `/v1/messages` routes and is refused by the
|
|
228
|
+
* environment-scoped ones. An OAuth grant covers the account and must say
|
|
229
|
+
* which environment it means. Asking somebody holding a project credential to
|
|
230
|
+
* repeat what the credential already says — and then failing them for it —
|
|
231
|
+
* was the reason `wb credential create` produced something `wb` could not use.
|
|
232
|
+
*/
|
|
233
|
+
async function messageScope(context) {
|
|
234
|
+
const { client: api, projectScoped } = await authorizedSession({
|
|
235
|
+
...(context.credentialsFile === undefined
|
|
236
|
+
? {}
|
|
237
|
+
: { credentialsFile: context.credentialsFile }),
|
|
238
|
+
origin: context.origin,
|
|
239
|
+
});
|
|
240
|
+
if (projectScoped && !context.parsed.options.has("project")) {
|
|
241
|
+
return {
|
|
242
|
+
api,
|
|
243
|
+
environmentId: "",
|
|
244
|
+
flat: true,
|
|
245
|
+
projectId: "",
|
|
246
|
+
where: "",
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
const { environmentId, projectId } = await resolveEnvironment(api, context.parsed);
|
|
250
|
+
return {
|
|
251
|
+
api,
|
|
252
|
+
environmentId,
|
|
253
|
+
flat: projectScoped,
|
|
254
|
+
projectId,
|
|
255
|
+
where: `--project ${projectId} --environment ${environmentId}`,
|
|
256
|
+
};
|
|
257
|
+
}
|
|
37
258
|
const commands = {
|
|
38
259
|
async login(context) {
|
|
39
260
|
const scopes = context.parsed.repeated.get("scope");
|
|
@@ -155,16 +376,22 @@ const commands = {
|
|
|
155
376
|
]));
|
|
156
377
|
},
|
|
157
378
|
async "connection create"(context) {
|
|
379
|
+
// Everything this program can judge on its own, judged before anything is
|
|
380
|
+
// asked of the network. A mistyped mode should not cost a round trip, and
|
|
381
|
+
// should not be reported as whatever the *next* argument got wrong.
|
|
382
|
+
const mode = connectionMode(context.parsed);
|
|
383
|
+
const displayName = required(context.parsed, "name", "what to call this connection");
|
|
384
|
+
const sharedIdentity = mode === "whooshbang_shared"
|
|
385
|
+
? required(context.parsed, "shared-identity", "which shared identity to select — see wb connection providers")
|
|
386
|
+
: undefined;
|
|
158
387
|
const api = await client(context);
|
|
159
388
|
const { environmentId, projectId } = await resolveEnvironment(api, context.parsed);
|
|
160
|
-
const mode = required(context.parsed, "mode", "whooshbang_shared, customer_managed, or customer_byok");
|
|
161
|
-
const displayName = required(context.parsed, "name", "what to call this connection");
|
|
162
389
|
let request = {
|
|
163
390
|
display_name: displayName,
|
|
164
391
|
mode,
|
|
165
392
|
};
|
|
166
|
-
if (
|
|
167
|
-
request["shared_identity_id"] =
|
|
393
|
+
if (sharedIdentity !== undefined) {
|
|
394
|
+
request["shared_identity_id"] = sharedIdentity;
|
|
168
395
|
}
|
|
169
396
|
else if (mode === "customer_byok") {
|
|
170
397
|
if (!context.parsed.switches.has("credential-stdin")) {
|
|
@@ -191,13 +418,17 @@ const commands = {
|
|
|
191
418
|
},
|
|
192
419
|
async "connection route"(context) {
|
|
193
420
|
const api = await client(context);
|
|
194
|
-
const { environmentId,
|
|
421
|
+
const { environmentId, projectId } = await resolveEnvironment(api, context.parsed);
|
|
422
|
+
const named = context.parsed.options.get("notifier");
|
|
195
423
|
const routes = await api.attachNotifierConnection(projectId, environmentId, {
|
|
196
424
|
connection_id: required(context.parsed, "connection", "the connection to route through"),
|
|
197
425
|
// Defaulted to the environment's own default notifier, which is the only
|
|
198
426
|
// one a new project has. Requiring it meant copying an id out of the
|
|
199
|
-
// output of `project create` for the commonest possible case.
|
|
200
|
-
|
|
427
|
+
// output of `project create` for the commonest possible case. Looked up
|
|
428
|
+
// only when it was not named, so the one command that needs a project
|
|
429
|
+
// read is the only one that makes it.
|
|
430
|
+
notifier_id: named ??
|
|
431
|
+
(await resolveDefaultNotifier(api, projectId, environmentId)),
|
|
201
432
|
});
|
|
202
433
|
emit(context.writer, routes, table([
|
|
203
434
|
["NOTIFIER", "CONNECTION", "DEFAULT"],
|
|
@@ -228,30 +459,100 @@ const commands = {
|
|
|
228
459
|
]);
|
|
229
460
|
},
|
|
230
461
|
async "message send"(context) {
|
|
231
|
-
const api = await
|
|
232
|
-
const
|
|
233
|
-
const
|
|
462
|
+
const { api, environmentId, flat, projectId, where } = await messageScope(context);
|
|
463
|
+
const target = deliveryTarget(context.parsed);
|
|
464
|
+
const request = {
|
|
234
465
|
content: {
|
|
235
466
|
text: required(context.parsed, "text", "the message body"),
|
|
236
467
|
type: "text",
|
|
237
468
|
},
|
|
238
|
-
delivery_target:
|
|
469
|
+
...(target === undefined ? {} : { delivery_target: target }),
|
|
239
470
|
to: {
|
|
240
471
|
subscriber_id: required(context.parsed, "subscriber", "who to send to"),
|
|
241
472
|
},
|
|
242
|
-
}
|
|
473
|
+
};
|
|
474
|
+
const message = flat
|
|
475
|
+
? await api.createMessage(request, idempotency(context.parsed))
|
|
476
|
+
: await api.createMessageInEnvironment(projectId, environmentId, request, idempotency(context.parsed));
|
|
243
477
|
emit(context.writer, message, [
|
|
244
478
|
`Accepted ${message.id} (${message.state}).`,
|
|
245
|
-
`Read it with: wb message get ${message.id}
|
|
479
|
+
`Read it with: wb message get ${message.id}${where ? ` ${where}` : ""}`,
|
|
246
480
|
]);
|
|
247
481
|
},
|
|
482
|
+
/**
|
|
483
|
+
* Sends a message that carries a question.
|
|
484
|
+
*
|
|
485
|
+
* The question is typed once. `--text` is both the message body and the
|
|
486
|
+
* interaction prompt, because a person asking "Deploy build 41?" does not
|
|
487
|
+
* want to write it twice, and a subscriber who saw two different wordings
|
|
488
|
+
* would reasonably wonder which one they were answering.
|
|
489
|
+
*
|
|
490
|
+
* The kind of question follows from what was asked for rather than from a
|
|
491
|
+
* `--type` flag nobody would remember: choices make it a select, `--free-text`
|
|
492
|
+
* makes it an input, and a bare question is a confirm.
|
|
493
|
+
*/
|
|
494
|
+
async "message ask"(context) {
|
|
495
|
+
// Built before the network call so a malformed question fails in under a
|
|
496
|
+
// second, against the arguments in front of the person, rather than after
|
|
497
|
+
// a project lookup and a send.
|
|
498
|
+
const interaction = askedInteraction(context.parsed);
|
|
499
|
+
const wait = waitSeconds(context.parsed);
|
|
500
|
+
const { api, environmentId, flat, projectId, where } = await messageScope(context);
|
|
501
|
+
const target = deliveryTarget(context.parsed);
|
|
502
|
+
const request = {
|
|
503
|
+
content: { text: interaction.prompt, type: "text" },
|
|
504
|
+
...(target === undefined ? {} : { delivery_target: target }),
|
|
505
|
+
interaction,
|
|
506
|
+
to: {
|
|
507
|
+
subscriber_id: required(context.parsed, "subscriber", "who to ask"),
|
|
508
|
+
},
|
|
509
|
+
};
|
|
510
|
+
const message = flat
|
|
511
|
+
? await api.createMessage(request, idempotency(context.parsed))
|
|
512
|
+
: await api.createMessageInEnvironment(projectId, environmentId, request, idempotency(context.parsed));
|
|
513
|
+
const summary = message.interaction;
|
|
514
|
+
if (!summary) {
|
|
515
|
+
// Accepted without one means the send happened and the question did not.
|
|
516
|
+
// Reporting the message id alone would read as success.
|
|
517
|
+
emit(context.writer, message, [
|
|
518
|
+
`Accepted ${message.id} (${message.state}), but it carries no question.`,
|
|
519
|
+
`Read it with: wb message get ${message.id}${where ? ` ${where}` : ""}`,
|
|
520
|
+
]);
|
|
521
|
+
return;
|
|
522
|
+
}
|
|
523
|
+
if (wait === undefined) {
|
|
524
|
+
emit(context.writer, message, [
|
|
525
|
+
`Asked ${summary.id} — ${summary.type === "input" ? "an" : "a"} ${summary.type} question, open until ${summary.expires_at}.`,
|
|
526
|
+
`Sent as ${message.id} (${message.state}).`,
|
|
527
|
+
`Read the answer with: wb interaction get ${summary.id}${where ? ` ${where}` : ""} --wait 30`,
|
|
528
|
+
]);
|
|
529
|
+
return;
|
|
530
|
+
}
|
|
531
|
+
context.writer.err(`Waiting up to ${wait}s for an answer…`);
|
|
532
|
+
const settled = await untilAnswered(api, flat ? null : { environmentId, projectId }, summary.id, wait);
|
|
533
|
+
emit(context.writer, settled, describeInteraction(settled, where));
|
|
534
|
+
},
|
|
535
|
+
async "interaction get"(context) {
|
|
536
|
+
const interactionId = context.parsed.words[2];
|
|
537
|
+
if (!interactionId) {
|
|
538
|
+
throw new UsageError("wb interaction get <interaction-id>");
|
|
539
|
+
}
|
|
540
|
+
const wait = waitSeconds(context.parsed);
|
|
541
|
+
const { api, environmentId, flat, projectId, where } = await messageScope(context);
|
|
542
|
+
const scope = flat ? null : { environmentId, projectId };
|
|
543
|
+
const summary = wait === undefined
|
|
544
|
+
? await readInteraction(api, scope, interactionId)
|
|
545
|
+
: await untilAnswered(api, scope, interactionId, wait);
|
|
546
|
+
emit(context.writer, summary, describeInteraction(summary, where));
|
|
547
|
+
},
|
|
248
548
|
async "message get"(context) {
|
|
249
|
-
const api = await client(context);
|
|
250
|
-
const { environmentId, projectId } = await resolveEnvironment(api, context.parsed);
|
|
251
549
|
const messageId = context.parsed.words[2];
|
|
252
550
|
if (!messageId)
|
|
253
551
|
throw new UsageError("wb message get <message-id>");
|
|
254
|
-
const
|
|
552
|
+
const { api, environmentId, flat, projectId } = await messageScope(context);
|
|
553
|
+
const message = flat
|
|
554
|
+
? await api.getMessage(messageId)
|
|
555
|
+
: await api.getMessageInEnvironment(projectId, environmentId, messageId);
|
|
255
556
|
emit(context.writer, message, [
|
|
256
557
|
`${message.id} ${message.state}`,
|
|
257
558
|
`provider: ${message.delivery.highest_proven_provider_state}`,
|
|
@@ -259,6 +560,24 @@ const commands = {
|
|
|
259
560
|
]);
|
|
260
561
|
},
|
|
261
562
|
};
|
|
563
|
+
/**
|
|
564
|
+
* Words left over once the command itself is accounted for.
|
|
565
|
+
*
|
|
566
|
+
* `--shared-identity x` typed as `shared-identity x` produces two positional
|
|
567
|
+
* words and no option. Both the value and the intent are lost, and the command
|
|
568
|
+
* then fails for a reason that has nothing to do with what was mistyped.
|
|
569
|
+
*/
|
|
570
|
+
export function strayWords(words) {
|
|
571
|
+
const two = words.slice(0, 2).join(" ");
|
|
572
|
+
const consumed = commands[two] ? 2 : commands[words[0] ?? ""] ? 1 : 0;
|
|
573
|
+
if (consumed === 0)
|
|
574
|
+
return [];
|
|
575
|
+
// `project create <name>` and `message get <id>` each take one positional.
|
|
576
|
+
const takesPositional = two === "project create" ||
|
|
577
|
+
two === "message get" ||
|
|
578
|
+
two === "interaction get";
|
|
579
|
+
return words.slice(consumed + (takesPositional ? 1 : 0));
|
|
580
|
+
}
|
|
262
581
|
export function resolveCommand(words) {
|
|
263
582
|
const two = words.slice(0, 2).join(" ");
|
|
264
583
|
const one = words[0] ?? "";
|
package/dist/cli/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/main.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
2
|
import { WhooshBangProblemError } from "../errors.js";
|
|
3
3
|
import { parseArguments, UsageError } from "./arguments.js";
|
|
4
|
-
import { COMMAND_NAMES, resolveCommand } from "./commands.js";
|
|
4
|
+
import { COMMAND_NAMES, resolveCommand, strayWords } from "./commands.js";
|
|
5
5
|
import { consoleWriter } from "./output.js";
|
|
6
6
|
import { NotSignedInError, resolveOrigin } from "./session.js";
|
|
7
7
|
import { OAuthError } from "./oauth.js";
|
|
@@ -25,6 +25,14 @@ const USAGE = `wb — the WhooshBang command line
|
|
|
25
25
|
[--target connection|simulator]
|
|
26
26
|
wb message get <id> --project <project> --environment <env>
|
|
27
27
|
|
|
28
|
+
wb message ask --project <project> --environment <env> --subscriber <id> --text <question>
|
|
29
|
+
[--choice 'a=Label,b=Label'] ask them to pick one of 2-6
|
|
30
|
+
[--free-text] ask them to type a reply
|
|
31
|
+
[--confirm-label <t>] [--deny-label <t>]
|
|
32
|
+
[--expires-in <seconds>] default one hour
|
|
33
|
+
[--wait [seconds]] block until they answer
|
|
34
|
+
wb interaction get <id> --project <project> --environment <env> [--wait [seconds]]
|
|
35
|
+
|
|
28
36
|
A project is named by its id or its slug; an environment by its id or by
|
|
29
37
|
test or live — whichever the output in front of you shows.
|
|
30
38
|
|
|
@@ -82,6 +90,16 @@ export async function run(argv, overrides = {}) {
|
|
|
82
90
|
writer.out(process.env.npm_package_version ?? "unknown");
|
|
83
91
|
return 0;
|
|
84
92
|
}
|
|
93
|
+
// A flag typed without its dashes lands here as a bare word — `shared-identity
|
|
94
|
+
// prvinst_…` becomes two stray words and the option it was meant to be is
|
|
95
|
+
// simply absent. Saying so beats failing later for a reason that looks
|
|
96
|
+
// unrelated.
|
|
97
|
+
const stray = strayWords(parsed.words);
|
|
98
|
+
if (stray.length > 0) {
|
|
99
|
+
writer.err(`Unexpected ${stray.length === 1 ? "argument" : "arguments"}: ${stray.join(", ")}. ` +
|
|
100
|
+
`If you meant an option, it needs two dashes — --${stray[0]}.`);
|
|
101
|
+
return 2;
|
|
102
|
+
}
|
|
85
103
|
const command = resolveCommand(parsed.words);
|
|
86
104
|
if (!command) {
|
|
87
105
|
writer.err(`Unknown command: ${parsed.words.join(" ")}`);
|
package/dist/cli/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/selectors.d.ts
CHANGED
|
@@ -16,7 +16,12 @@ import { type ParsedArguments } from "./arguments.js";
|
|
|
16
16
|
export interface ResolvedEnvironment {
|
|
17
17
|
readonly projectId: string;
|
|
18
18
|
readonly environmentId: string;
|
|
19
|
-
/** The default notifier of that environment, which several commands need. */
|
|
20
|
-
readonly notifierId: string;
|
|
21
19
|
}
|
|
22
20
|
export declare function resolveEnvironment(client: WhooshBangClient, parsed: ParsedArguments): Promise<ResolvedEnvironment>;
|
|
21
|
+
/**
|
|
22
|
+
* The environment's default notifier, which only `link create` needs.
|
|
23
|
+
*
|
|
24
|
+
* Kept apart from `resolveEnvironment` so that everything which does not need
|
|
25
|
+
* it does not pay for the read that finds it.
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolveDefaultNotifier(client: WhooshBangClient, projectId: string, environmentId: string): Promise<string>;
|
package/dist/cli/selectors.js
CHANGED
|
@@ -9,21 +9,18 @@ function looksLikeEnvironmentId(value) {
|
|
|
9
9
|
export async function resolveEnvironment(client, parsed) {
|
|
10
10
|
const projectSelector = required(parsed, "project", "the project id or slug");
|
|
11
11
|
const environmentSelector = required(parsed, "environment", "the environment id, or test or live");
|
|
12
|
-
// The fast path: two ids and nothing to look up.
|
|
13
|
-
//
|
|
12
|
+
// The fast path: two ids and nothing to look up. This used to read the
|
|
13
|
+
// project anyway, purely to check the pair agreed — which cost a request on
|
|
14
|
+
// every command and, worse, put an account-scoped read in front of work that
|
|
15
|
+
// is entirely environment-scoped. A project credential authenticates the
|
|
16
|
+
// environment routes and nothing above them, so that check made the CLI
|
|
17
|
+
// unusable with exactly the credential the CLI issues. A mismatched pair now
|
|
18
|
+
// fails at the operation itself, which is where a wrong id belongs.
|
|
14
19
|
if (looksLikeProjectId(projectSelector) &&
|
|
15
20
|
looksLikeEnvironmentId(environmentSelector)) {
|
|
16
|
-
const project = await client.getProject(projectSelector);
|
|
17
|
-
const environment = project.environments.find((candidate) => candidate.id === environmentSelector);
|
|
18
|
-
if (!environment) {
|
|
19
|
-
throw new UsageError(`${projectSelector} has no environment ${environmentSelector}. Its environments are ${project.environments
|
|
20
|
-
.map((candidate) => `${candidate.kind} (${candidate.id})`)
|
|
21
|
-
.join(" and ")}.`);
|
|
22
|
-
}
|
|
23
21
|
return {
|
|
24
|
-
environmentId:
|
|
25
|
-
|
|
26
|
-
projectId: project.id,
|
|
22
|
+
environmentId: environmentSelector,
|
|
23
|
+
projectId: projectSelector,
|
|
27
24
|
};
|
|
28
25
|
}
|
|
29
26
|
const project = looksLikeProjectId(projectSelector)
|
|
@@ -42,10 +39,25 @@ export async function resolveEnvironment(client, parsed) {
|
|
|
42
39
|
}
|
|
43
40
|
return {
|
|
44
41
|
environmentId: environment.id,
|
|
45
|
-
notifierId: environment.default_notifier.id,
|
|
46
42
|
projectId: project.id,
|
|
47
43
|
};
|
|
48
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* The environment's default notifier, which only `link create` needs.
|
|
47
|
+
*
|
|
48
|
+
* Kept apart from `resolveEnvironment` so that everything which does not need
|
|
49
|
+
* it does not pay for the read that finds it.
|
|
50
|
+
*/
|
|
51
|
+
export async function resolveDefaultNotifier(client, projectId, environmentId) {
|
|
52
|
+
const project = await client.getProject(projectId);
|
|
53
|
+
const environment = project.environments.find((candidate) => candidate.id === environmentId);
|
|
54
|
+
if (!environment) {
|
|
55
|
+
throw new UsageError(`${projectId} has no environment ${environmentId}. Its environments are ${project.environments
|
|
56
|
+
.map((candidate) => `${candidate.kind} (${candidate.id})`)
|
|
57
|
+
.join(" and ")}.`);
|
|
58
|
+
}
|
|
59
|
+
return environment.default_notifier.id;
|
|
60
|
+
}
|
|
49
61
|
async function projectBySlug(client, slug) {
|
|
50
62
|
const projects = await client.listProjects();
|
|
51
63
|
const match = projects.items.find((candidate) => candidate.slug === slug);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectors.js","sourceRoot":"","sources":["../../src/cli/selectors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAwB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"selectors.js","sourceRoot":"","sources":["../../src/cli/selectors.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/session.d.ts
CHANGED
|
@@ -23,6 +23,25 @@ export declare function signOut(origin: string, credentialsFile?: string): Promi
|
|
|
23
23
|
* The client every command uses, with the stored token refreshed if it is
|
|
24
24
|
* close enough to expiry that a slow call could outlive it.
|
|
25
25
|
*/
|
|
26
|
+
/**
|
|
27
|
+
* Whether the stored authority is a project credential rather than an OAuth
|
|
28
|
+
* grant.
|
|
29
|
+
*
|
|
30
|
+
* The two reach different routes. A project credential already names one
|
|
31
|
+
* project and one environment, so it authenticates `/v1/messages` and is
|
|
32
|
+
* refused by the environment-scoped paths; an OAuth grant covers the whole
|
|
33
|
+
* account, so it must say which environment it means. The prefix is the
|
|
34
|
+
* service's own discriminator — `environmentAuthentication` switches on it —
|
|
35
|
+
* rather than something invented here.
|
|
36
|
+
*/
|
|
37
|
+
export declare function isProjectCredential(token: string): boolean;
|
|
38
|
+
export declare function authorizedSession(options: {
|
|
39
|
+
readonly origin: string;
|
|
40
|
+
readonly credentialsFile?: string;
|
|
41
|
+
}): Promise<{
|
|
42
|
+
readonly client: WhooshBangClient;
|
|
43
|
+
readonly projectScoped: boolean;
|
|
44
|
+
}>;
|
|
26
45
|
export declare function authorizedClient(options: {
|
|
27
46
|
readonly origin: string;
|
|
28
47
|
readonly credentialsFile?: string;
|
package/dist/cli/session.js
CHANGED
|
@@ -117,6 +117,28 @@ export async function signOut(origin, credentialsFile) {
|
|
|
117
117
|
* The client every command uses, with the stored token refreshed if it is
|
|
118
118
|
* close enough to expiry that a slow call could outlive it.
|
|
119
119
|
*/
|
|
120
|
+
/**
|
|
121
|
+
* Whether the stored authority is a project credential rather than an OAuth
|
|
122
|
+
* grant.
|
|
123
|
+
*
|
|
124
|
+
* The two reach different routes. A project credential already names one
|
|
125
|
+
* project and one environment, so it authenticates `/v1/messages` and is
|
|
126
|
+
* refused by the environment-scoped paths; an OAuth grant covers the whole
|
|
127
|
+
* account, so it must say which environment it means. The prefix is the
|
|
128
|
+
* service's own discriminator — `environmentAuthentication` switches on it —
|
|
129
|
+
* rather than something invented here.
|
|
130
|
+
*/
|
|
131
|
+
export function isProjectCredential(token) {
|
|
132
|
+
return token.startsWith("wb_pc1.");
|
|
133
|
+
}
|
|
134
|
+
export async function authorizedSession(options) {
|
|
135
|
+
const client = await authorizedClient(options);
|
|
136
|
+
const session = await loadSession(options.origin, options.credentialsFile);
|
|
137
|
+
return {
|
|
138
|
+
client,
|
|
139
|
+
projectScoped: session ? isProjectCredential(session.accessToken) : false,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
120
142
|
export async function authorizedClient(options) {
|
|
121
143
|
const session = await loadSession(options.origin, options.credentialsFile);
|
|
122
144
|
if (!session)
|
package/dist/cli/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/cli/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/cli/session.ts"],"names":[],"mappings":"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"}
|