@whooshbang/sdk 1.0.0-rc.23 → 1.0.0-rc.24

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.
@@ -4,7 +4,41 @@ const SWITCHES = new Set([
4
4
  "version",
5
5
  "credential-stdin",
6
6
  "yes",
7
+ "free-text",
8
+ "no-connection",
9
+ "no-route",
10
+ "invite",
11
+ "no-invite",
12
+ "send",
13
+ "no-send",
14
+ "ask",
7
15
  ]);
16
+ /**
17
+ * Short and shortened spellings, resolved here so no command ever sees one.
18
+ *
19
+ * A short form that some commands understand and others do not is worse than
20
+ * none: the failure is silent, because an unrecognised flag is read as a
21
+ * switch and the value it carried disappears. Normalising at the door means
22
+ * `-p` is the same argument as `--project` everywhere, including in the error
23
+ * messages, which always name the long form so nothing has to be memorised to
24
+ * recover from a mistake.
25
+ */
26
+ const ALIASES = new Map([
27
+ ["c", "connection"],
28
+ ["e", "environment"],
29
+ ["env", "environment"],
30
+ ["k", "key"],
31
+ ["m", "mode"],
32
+ ["n", "name"],
33
+ ["p", "project"],
34
+ ["s", "subscriber"],
35
+ ["t", "text"],
36
+ ["w", "wait"],
37
+ ["y", "yes"],
38
+ ]);
39
+ function canonical(name) {
40
+ return ALIASES.get(name) ?? name;
41
+ }
8
42
  export function parseArguments(argv) {
9
43
  const words = [];
10
44
  const options = new Map();
@@ -12,13 +46,20 @@ export function parseArguments(argv) {
12
46
  const repeated = new Map();
13
47
  for (let index = 0; index < argv.length; index += 1) {
14
48
  const token = argv[index];
15
- if (!token.startsWith("--")) {
49
+ // A single dash introduces a short form; `-` alone and a negative number
50
+ // are ordinary words, because both are things somebody might legitimately
51
+ // pass as a value.
52
+ const short = token.length > 1 &&
53
+ token.startsWith("-") &&
54
+ !token.startsWith("--") &&
55
+ !/^-\d/u.test(token);
56
+ if (!token.startsWith("--") && !short) {
16
57
  words.push(token);
17
58
  continue;
18
59
  }
19
- const body = token.slice(2);
60
+ const body = short ? token.slice(1) : token.slice(2);
20
61
  const equals = body.indexOf("=");
21
- const name = equals === -1 ? body : body.slice(0, equals);
62
+ const name = canonical(equals === -1 ? body : body.slice(0, equals));
22
63
  if (equals !== -1) {
23
64
  const value = body.slice(equals + 1);
24
65
  options.set(name, value);
@@ -30,7 +71,7 @@ export function parseArguments(argv) {
30
71
  continue;
31
72
  }
32
73
  const next = argv[index + 1];
33
- if (next === undefined || next.startsWith("--")) {
74
+ if (next === undefined || next.startsWith("-")) {
34
75
  // A bare unknown flag is a switch rather than an error: the command
35
76
  // decides what it does and does not understand, and it can say so in its
36
77
  // own words.
@@ -1 +1 @@
1
- {"version":3,"file":"arguments.js","sourceRoot":"","sources":["../../src/cli/arguments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arguments.js","sourceRoot":"","sources":["../../src/cli/arguments.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,11 @@ export interface CommandContext {
10
10
  readonly openUrl: (url: string) => Promise<void>;
11
11
  readonly readStdin: () => Promise<string>;
12
12
  readonly credentialsFile?: string;
13
+ readonly contextFile?: string;
14
+ /** Asks a question when there is a person to ask. Absent means non-interactive. */
15
+ readonly prompt?: (question: string, fallback?: string) => Promise<string>;
13
16
  }
17
+ declare const CONNECTION_MODES: readonly ["whooshbang_shared", "customer_managed", "customer_byok"];
14
18
  /**
15
19
  * Builds the question from what was asked for.
16
20
  *
@@ -32,6 +36,37 @@ export interface EnvironmentScope {
32
36
  }
33
37
  export declare function untilAnswered(api: WhooshBangClient, scope: EnvironmentScope | null, interactionId: string, waitFor: number): Promise<InteractionSummary>;
34
38
  export declare function describeInteraction(summary: InteractionSummary, where: string): string[];
39
+ /**
40
+ * Asks for something that was not given, when there is somebody to ask.
41
+ *
42
+ * Every question is also an argument. Supply them all and nothing is asked, so
43
+ * the same command works unchanged in a script — which is the rule that keeps
44
+ * a guided path from quietly becoming a second, divergent product.
45
+ *
46
+ * With no terminal attached there is nobody to answer, so this refuses in the
47
+ * same words the argument would have: a cron job should be told which flag it
48
+ * forgot, not left waiting on a prompt nothing will ever read.
49
+ */
50
+ export declare function ask(context: CommandContext, question: string, option: string, fallback?: string): Promise<string>;
51
+ /**
52
+ * A yes-or-no step that can be answered in advance.
53
+ *
54
+ * `--invite` and `--no-invite` decide it without asking, which is what lets
55
+ * `wb init` run in a script. With no terminal and no flag the answer is no:
56
+ * an unattended run should do less rather than guess.
57
+ */
58
+ export declare function confirmed(context: CommandContext, option: string, question: string): Promise<boolean>;
59
+ /** What to call a connection nobody bothered to name. */
60
+ export declare function defaultConnectionName(mode: (typeof CONNECTION_MODES)[number]): string;
61
+ /**
62
+ * The shared identity to connect through, chosen rather than demanded.
63
+ *
64
+ * A provider offering exactly one is not a choice, and making somebody run a
65
+ * lookup command to copy an opaque id out of it was the single largest piece of
66
+ * the getting-started path. When there is more than one the choice is real, so
67
+ * it is named along with what the alternatives are.
68
+ */
69
+ export declare function sharedIdentityFor(api: WhooshBangClient, projectId: string, environmentId: string, parsed: ParsedArguments): Promise<string>;
35
70
  /**
36
71
  * Words left over once the command itself is accounted for.
37
72
  *
@@ -1,6 +1,7 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { confirmInteraction, inputInteraction, interactionAnswer, isInteractionTerminal, selectInteraction, } from "../interactions.js";
3
3
  import { required, UsageError } from "./arguments.js";
4
+ import { loadContext, storeContext } from "./config.js";
4
5
  import { emit, emitSecret, table } from "./output.js";
5
6
  import { resolveDefaultNotifier, resolveEnvironment } from "./selectors.js";
6
7
  import { authorizedClient, authorizedSession, resolveOrigin, signIn, signOut, } from "./session.js";
@@ -34,6 +35,21 @@ function deliveryTarget(parsed) {
34
35
  }
35
36
  return value;
36
37
  }
38
+ /**
39
+ * Where resolved ids should be remembered, and in which file.
40
+ *
41
+ * The file is threaded rather than defaulted so a test can point it somewhere
42
+ * disposable; nothing in the CLI should be able to write to a developer's real
43
+ * configuration while a suite is running.
44
+ */
45
+ function resolveOptions(context) {
46
+ return {
47
+ ...(context.contextFile === undefined
48
+ ? {}
49
+ : { contextFile: context.contextFile }),
50
+ origin: context.origin,
51
+ };
52
+ }
37
53
  async function client(context) {
38
54
  return authorizedClient({
39
55
  ...(context.credentialsFile === undefined
@@ -246,7 +262,7 @@ async function messageScope(context) {
246
262
  where: "",
247
263
  };
248
264
  }
249
- const { environmentId, projectId } = await resolveEnvironment(api, context.parsed);
265
+ const { environmentId, projectId } = await resolveEnvironment(api, context.parsed, resolveOptions(context));
250
266
  return {
251
267
  api,
252
268
  environmentId,
@@ -255,6 +271,122 @@ async function messageScope(context) {
255
271
  where: `--project ${projectId} --environment ${environmentId}`,
256
272
  };
257
273
  }
274
+ /**
275
+ * Asks for something that was not given, when there is somebody to ask.
276
+ *
277
+ * Every question is also an argument. Supply them all and nothing is asked, so
278
+ * the same command works unchanged in a script — which is the rule that keeps
279
+ * a guided path from quietly becoming a second, divergent product.
280
+ *
281
+ * With no terminal attached there is nobody to answer, so this refuses in the
282
+ * same words the argument would have: a cron job should be told which flag it
283
+ * forgot, not left waiting on a prompt nothing will ever read.
284
+ */
285
+ export async function ask(context, question, option, fallback) {
286
+ const given = context.parsed.options.get(option);
287
+ if (given)
288
+ return given;
289
+ if (!context.prompt) {
290
+ throw new UsageError(`--${option} is required: ${question.toLowerCase()}.`);
291
+ }
292
+ const answer = (await context.prompt(question, fallback)).trim();
293
+ if (answer.length > 0)
294
+ return answer;
295
+ if (fallback !== undefined)
296
+ return fallback;
297
+ throw new UsageError(`--${option} is required: ${question.toLowerCase()}.`);
298
+ }
299
+ /**
300
+ * A yes-or-no step that can be answered in advance.
301
+ *
302
+ * `--invite` and `--no-invite` decide it without asking, which is what lets
303
+ * `wb init` run in a script. With no terminal and no flag the answer is no:
304
+ * an unattended run should do less rather than guess.
305
+ */
306
+ export async function confirmed(context, option, question) {
307
+ if (context.parsed.switches.has(`no-${option}`))
308
+ return false;
309
+ if (context.parsed.switches.has(option))
310
+ return true;
311
+ if (!context.prompt)
312
+ return false;
313
+ return confirm(context, question);
314
+ }
315
+ /** A yes-or-no question, defaulting to yes, and skipped entirely by --yes. */
316
+ async function confirm(context, question) {
317
+ if (context.parsed.switches.has("yes") || !context.prompt)
318
+ return true;
319
+ const answer = (await context.prompt(`${question} (Y/n)`, "y"))
320
+ .trim()
321
+ .toLowerCase();
322
+ return answer !== "n" && answer !== "no";
323
+ }
324
+ /** What to call a connection nobody bothered to name. */
325
+ export function defaultConnectionName(mode) {
326
+ return mode === "whooshbang_shared"
327
+ ? "Telegram via WhooshBang"
328
+ : mode === "customer_byok"
329
+ ? "Telegram via your own bot"
330
+ : "Telegram via a managed bot";
331
+ }
332
+ /**
333
+ * The shared identity to connect through, chosen rather than demanded.
334
+ *
335
+ * A provider offering exactly one is not a choice, and making somebody run a
336
+ * lookup command to copy an opaque id out of it was the single largest piece of
337
+ * the getting-started path. When there is more than one the choice is real, so
338
+ * it is named along with what the alternatives are.
339
+ */
340
+ export async function sharedIdentityFor(api, projectId, environmentId, parsed) {
341
+ const named = parsed.options.get("shared-identity");
342
+ if (named)
343
+ return named;
344
+ const providers = await api.listConnectionProviders(projectId, environmentId);
345
+ const identities = providers.items.flatMap((provider) => provider.shared_identities.map((identity) => ({
346
+ display: identity.display_name,
347
+ id: identity.id,
348
+ })));
349
+ if (identities.length === 1)
350
+ return identities[0].id;
351
+ if (identities.length === 0) {
352
+ throw new UsageError("This environment offers no shared identity to connect through. Bring your own bot with --mode customer_byok.");
353
+ }
354
+ throw new UsageError(`More than one shared identity is offered; name one with --shared-identity. They are ${identities
355
+ .map((identity) => `${identity.id} (${identity.display})`)
356
+ .join(", ")}.`);
357
+ }
358
+ /**
359
+ * Attaches a connection to the environment's default notifier.
360
+ *
361
+ * The first connection in an environment routes itself, so this only ever has
362
+ * work to do for the second and later ones. Somebody who has just created a
363
+ * connection means to use it; an unrouted one that silently delivers nothing is
364
+ * the shape of the bug this removes.
365
+ */
366
+ async function routeConnection(api, projectId, environmentId, connectionId) {
367
+ const notifierId = await resolveDefaultNotifier(api, projectId, environmentId);
368
+ await api.attachNotifierConnection(projectId, environmentId, {
369
+ connection_id: connectionId,
370
+ notifier_id: notifierId,
371
+ });
372
+ }
373
+ /**
374
+ * `wb send me "text"` and `wb message send --subscriber me --text "text"`.
375
+ *
376
+ * The long spelling stays because it is what a script should read like and
377
+ * what every error message names. The short one exists because the everyday
378
+ * command should be typeable from memory, and two positionals in a fixed order
379
+ * cannot be misread when the command itself says which is which.
380
+ */
381
+ function positional(context, names) {
382
+ const options = new Map(context.parsed.options);
383
+ names.forEach((name, index) => {
384
+ const word = context.parsed.words[index + 1];
385
+ if (word !== undefined && !options.has(name))
386
+ options.set(name, word);
387
+ });
388
+ return { ...context, parsed: { ...context.parsed, options } };
389
+ }
258
390
  const commands = {
259
391
  async login(context) {
260
392
  const scopes = context.parsed.repeated.get("scope");
@@ -313,7 +445,40 @@ const commands = {
313
445
  .replace(/^-+|-+$/gu, "");
314
446
  const api = await client(context);
315
447
  const project = await api.createProject({ name, slug }, idempotency(context.parsed));
316
- emit(context.writer, project, [
448
+ const test = project.environments.find((environment) => environment.kind === "test");
449
+ // A project with no way to send is not a thing anybody wanted, so the
450
+ // happy path builds one. `--no-connection` exists because a project is
451
+ // also a legitimate thing to create on its own, before anybody knows which
452
+ // channel it will use — and the granular commands remain for that.
453
+ const wanted = !context.parsed.switches.has("no-connection") && test;
454
+ let connection = null;
455
+ let failure = null;
456
+ if (wanted) {
457
+ try {
458
+ const sharedIdentity = await sharedIdentityFor(api, project.id, test.id, context.parsed);
459
+ connection = await api.createChannelConnection(project.id, test.id, {
460
+ display_name: defaultConnectionName("whooshbang_shared"),
461
+ mode: "whooshbang_shared",
462
+ shared_identity_id: sharedIdentity,
463
+ }, { idempotencyKey: randomUUID() });
464
+ }
465
+ catch (error) {
466
+ // The project exists and is the thing that was asked for. Failing the
467
+ // whole command here would leave one behind while reporting only that
468
+ // nothing worked, and the connection is recoverable with one command.
469
+ failure =
470
+ error instanceof Error ? error.message : "the connection was refused";
471
+ }
472
+ }
473
+ if (test) {
474
+ await storeContext(context.origin, {
475
+ environmentId: test.id,
476
+ environmentKind: "test",
477
+ projectId: project.id,
478
+ projectSlug: project.slug,
479
+ }, context.contextFile).catch(() => undefined);
480
+ }
481
+ emit(context.writer, { ...project, connection }, [
317
482
  `Created project ${project.id} (${project.slug}).`,
318
483
  ...table([
319
484
  ["ENVIRONMENT", "KIND", "DEFAULT NOTIFIER"],
@@ -323,11 +488,30 @@ const commands = {
323
488
  environment.default_notifier.id,
324
489
  ]),
325
490
  ]),
491
+ ...(connection
492
+ ? [
493
+ "",
494
+ `Connected and routed ${connection.id} in test.`,
495
+ "Invite somebody with: wb subscriber create <your-id-for-them>",
496
+ ]
497
+ : failure
498
+ ? [
499
+ "",
500
+ `No connection was made: ${failure}`,
501
+ "Try again with: wb connection create",
502
+ ]
503
+ : []),
504
+ ...(context.parsed.switches.has("no-connection")
505
+ ? [
506
+ "",
507
+ "No connection was made, as asked. Add one with: wb connection create",
508
+ ]
509
+ : []),
326
510
  ]);
327
511
  },
328
512
  async "credential create"(context) {
329
513
  const api = await client(context);
330
- const { environmentId, projectId } = await resolveEnvironment(api, context.parsed);
514
+ const { environmentId, projectId } = await resolveEnvironment(api, context.parsed, resolveOptions(context));
331
515
  const label = required(context.parsed, "label", "what this credential is for");
332
516
  // The contract types the scope list as a bounded tuple, so a plain
333
517
  // string[] cannot be passed. The values are validated by the API either
@@ -350,7 +534,7 @@ const commands = {
350
534
  },
351
535
  async "connection list"(context) {
352
536
  const api = await client(context);
353
- const { environmentId, projectId } = await resolveEnvironment(api, context.parsed);
537
+ const { environmentId, projectId } = await resolveEnvironment(api, context.parsed, resolveOptions(context));
354
538
  const connections = await api.listChannelConnections(projectId, environmentId);
355
539
  emit(context.writer, connections, table([
356
540
  ["ID", "MODE", "STATUS", "NAME"],
@@ -364,7 +548,7 @@ const commands = {
364
548
  },
365
549
  async "connection providers"(context) {
366
550
  const api = await client(context);
367
- const { environmentId, projectId } = await resolveEnvironment(api, context.parsed);
551
+ const { environmentId, projectId } = await resolveEnvironment(api, context.parsed, resolveOptions(context));
368
552
  const providers = await api.listConnectionProviders(projectId, environmentId);
369
553
  emit(context.writer, providers, table([
370
554
  ["PROVIDER", "SHARED IDENTITY", "DISPLAY NAME"],
@@ -380,14 +564,14 @@ const commands = {
380
564
  // asked of the network. A mistyped mode should not cost a round trip, and
381
565
  // should not be reported as whatever the *next* argument got wrong.
382
566
  const mode = connectionMode(context.parsed);
383
- const displayName = required(context.parsed, "name", "what to call this connection");
567
+ const displayName = context.parsed.options.get("name");
568
+ const api = await client(context);
569
+ const { environmentId, projectId } = await resolveEnvironment(api, context.parsed, resolveOptions(context));
384
570
  const sharedIdentity = mode === "whooshbang_shared"
385
- ? required(context.parsed, "shared-identity", "which shared identity to select — see wb connection providers")
571
+ ? await sharedIdentityFor(api, projectId, environmentId, context.parsed)
386
572
  : undefined;
387
- const api = await client(context);
388
- const { environmentId, projectId } = await resolveEnvironment(api, context.parsed);
389
573
  let request = {
390
- display_name: displayName,
574
+ display_name: displayName ?? defaultConnectionName(mode),
391
575
  mode,
392
576
  };
393
577
  if (sharedIdentity !== undefined) {
@@ -409,8 +593,20 @@ const commands = {
409
593
  request["suggested_username"] = username;
410
594
  }
411
595
  const connection = await api.createChannelConnection(projectId, environmentId, request, idempotency(context.parsed));
596
+ // Creating a connection is somebody saying they intend to send through it.
597
+ // Leaving it unattached means the next send goes nowhere and says nothing
598
+ // about why, which is the failure this default exists to remove.
599
+ const routed = !context.parsed.switches.has("no-route");
600
+ if (routed) {
601
+ await routeConnection(api, projectId, environmentId, connection.id);
602
+ }
412
603
  emit(context.writer, connection, [
413
604
  `Created connection ${connection.id} (${connection.status}).`,
605
+ ...(routed
606
+ ? ["Routed as this environment's default destination."]
607
+ : [
608
+ "Not routed — attach it with `wb connection route` before sending.",
609
+ ]),
414
610
  ...(connection.setup?.handoff_url
415
611
  ? [`Finish setup in Telegram: ${connection.setup.handoff_url}`]
416
612
  : []),
@@ -418,7 +614,7 @@ const commands = {
418
614
  },
419
615
  async "connection route"(context) {
420
616
  const api = await client(context);
421
- const { environmentId, projectId } = await resolveEnvironment(api, context.parsed);
617
+ const { environmentId, projectId } = await resolveEnvironment(api, context.parsed, resolveOptions(context));
422
618
  const named = context.parsed.options.get("notifier");
423
619
  const routes = await api.attachNotifierConnection(projectId, environmentId, {
424
620
  connection_id: required(context.parsed, "connection", "the connection to route through"),
@@ -440,14 +636,16 @@ const commands = {
440
636
  ]));
441
637
  },
442
638
  async "link create"(context) {
443
- const api = await client(context);
444
- const { environmentId, projectId } = await resolveEnvironment(api, context.parsed);
639
+ const { api, environmentId, flat, projectId } = await messageScope(context);
445
640
  const connectionId = context.parsed.options.get("connection");
446
- const link = await api.createSubscriptionLinkInEnvironment(projectId, environmentId, {
641
+ const request = {
447
642
  channels: ["telegram"],
448
643
  ...(connectionId === undefined ? {} : { connection_id: connectionId }),
449
644
  subscriber_id: required(context.parsed, "subscriber", "your own identifier for this subscriber"),
450
- }, idempotency(context.parsed));
645
+ };
646
+ const link = flat
647
+ ? await api.createSubscriptionLink(request, idempotency(context.parsed))
648
+ : await api.createSubscriptionLinkInEnvironment(projectId, environmentId, request, idempotency(context.parsed));
451
649
  emit(context.writer, link, [
452
650
  `Link ${link.id} (${link.status}).`,
453
651
  // A link carries no authorization URL once it has been used, and an
@@ -458,6 +656,147 @@ const commands = {
458
656
  : ["This link has already been used; issue another to invite again."]),
459
657
  ]);
460
658
  },
659
+ /**
660
+ * The guided path, in the shape of `npm init`.
661
+ *
662
+ * Every question is also an argument, so supplying them all asks nothing and
663
+ * the command works unchanged in a script. That rule is the whole design:
664
+ * without it a guided path becomes a second product with its own behaviour,
665
+ * and the two drift until one of them is wrong.
666
+ *
667
+ * It composes the ordinary commands rather than reimplementing them, so
668
+ * there is one definition of what creating a project means and `init` cannot
669
+ * quietly disagree with `project create`.
670
+ */
671
+ async init(context) {
672
+ const w = context.writer;
673
+ const name = await ask(context, "Project name", "name", "My App");
674
+ const slug = context.parsed.options.get("slug");
675
+ await commands["project create"]?.({
676
+ ...context,
677
+ parsed: {
678
+ ...context.parsed,
679
+ options: new Map([
680
+ ...context.parsed.options,
681
+ ...(slug ? [["slug", slug]] : []),
682
+ ]),
683
+ // `project create` reads its name positionally, and this is the one
684
+ // place a caller's answer has to be handed over as one.
685
+ words: ["project", "create", name],
686
+ },
687
+ });
688
+ const subscriber = context.parsed.options.get("subscriber");
689
+ const inviting = subscriber !== undefined ||
690
+ (await confirmed(context, "invite", "Invite somebody now?"));
691
+ if (!inviting) {
692
+ emit(w, null, [
693
+ "",
694
+ "Invite somebody later with: wb subscriber create <id>",
695
+ ]);
696
+ return;
697
+ }
698
+ const who = await ask(context, "Your own identifier for them", "subscriber", "me");
699
+ await commands["subscriber create"]?.({
700
+ ...context,
701
+ parsed: {
702
+ ...context.parsed,
703
+ options: new Map([...context.parsed.options, ["subscriber", who]]),
704
+ words: ["subscriber", "create", who],
705
+ },
706
+ });
707
+ const text = context.parsed.options.get("text");
708
+ const sending = text !== undefined ||
709
+ (await confirmed(context, "send", "Send them something once they accept?"));
710
+ if (!sending) {
711
+ emit(w, null, ["", `Send later with: wb send ${who} "Hello"`]);
712
+ return;
713
+ }
714
+ const body = await ask(context, "What to say", "text", "Hello from WhooshBang.");
715
+ const asking = context.parsed.switches.has("ask");
716
+ emit(w, null, [
717
+ "",
718
+ asking
719
+ ? "They must accept the invitation before a question can reach them."
720
+ : "They must accept the invitation before this can reach them.",
721
+ ]);
722
+ await commands[asking ? "message ask" : "message send"]?.({
723
+ ...context,
724
+ parsed: {
725
+ ...context.parsed,
726
+ options: new Map([
727
+ ...context.parsed.options,
728
+ ["subscriber", who],
729
+ ["text", body],
730
+ ]),
731
+ words: ["message", asking ? "ask" : "send"],
732
+ },
733
+ });
734
+ },
735
+ /**
736
+ * Invites somebody, under the name the caller already uses for them.
737
+ *
738
+ * `subscriber` rather than `link` because the link is the mechanism and the
739
+ * subscriber is the point — and because on channels where a permissioned bot
740
+ * can address a directory directly, creating one will not involve a link at
741
+ * all.
742
+ */
743
+ async "subscriber create"(context) {
744
+ const { api, environmentId, flat, projectId } = await messageScope(context);
745
+ const subscriberId = context.parsed.words[2] ??
746
+ context.parsed.options.get("subscriber") ??
747
+ (await ask(context, "Your own identifier for this subscriber", "subscriber"));
748
+ const connectionId = context.parsed.options.get("connection");
749
+ const request = {
750
+ channels: ["telegram"],
751
+ ...(connectionId === undefined ? {} : { connection_id: connectionId }),
752
+ subscriber_id: subscriberId,
753
+ };
754
+ const link = flat
755
+ ? await api.createSubscriptionLink(request, idempotency(context.parsed))
756
+ : await api.createSubscriptionLinkInEnvironment(projectId, environmentId, request, idempotency(context.parsed));
757
+ emit(context.writer, link, [
758
+ `Subscriber ${subscriberId} invited (${link.status}).`,
759
+ ...(link.authorization_url
760
+ ? ["Open this where they are:", link.authorization_url]
761
+ : [
762
+ "This invitation has already been accepted; issue another to invite again.",
763
+ ]),
764
+ ]);
765
+ },
766
+ async use(context) {
767
+ const api = await client(context);
768
+ const selector = context.parsed.words[1];
769
+ if (!selector)
770
+ throw new UsageError("wb use <project> [test|live]");
771
+ const kind = context.parsed.words[2];
772
+ const parsed = {
773
+ ...context.parsed,
774
+ options: new Map([
775
+ ...context.parsed.options,
776
+ ["project", selector],
777
+ ...(kind ? [["environment", kind]] : []),
778
+ ]),
779
+ };
780
+ const resolved = await resolveEnvironment(api, parsed, resolveOptions(context));
781
+ emit(context.writer, resolved, [
782
+ `Now using ${resolved.projectId} / ${resolved.environmentId}.`,
783
+ ]);
784
+ },
785
+ async where(context) {
786
+ const remembered = await loadContext(context.origin, context.contextFile);
787
+ if (!remembered) {
788
+ emit(context.writer, null, [
789
+ `Nothing used against ${context.origin} yet.`,
790
+ "Name a project once with --project, or pick one with: wb use <project>",
791
+ ]);
792
+ return;
793
+ }
794
+ emit(context.writer, remembered, [
795
+ context.origin,
796
+ ` project ${remembered.projectSlug ?? remembered.projectId}`,
797
+ ` environment ${remembered.environmentKind ?? remembered.environmentId}`,
798
+ ]);
799
+ },
461
800
  async "message send"(context) {
462
801
  const { api, environmentId, flat, projectId, where } = await messageScope(context);
463
802
  const target = deliveryTarget(context.parsed);
@@ -560,6 +899,11 @@ const commands = {
560
899
  ]);
561
900
  },
562
901
  };
902
+ // `send` and `ask` are the everyday spellings of the two message commands.
903
+ // Defined after the table so they can delegate to entries in it rather than
904
+ // duplicate them — one implementation, two ways to reach it.
905
+ commands["send"] = (context) => commands["message send"](positional(context, ["subscriber", "text"]));
906
+ commands["ask"] = (context) => commands["message ask"](positional(context, ["subscriber", "text"]));
563
907
  /**
564
908
  * Words left over once the command itself is accounted for.
565
909
  *
@@ -569,13 +913,19 @@ const commands = {
569
913
  */
570
914
  export function strayWords(words) {
571
915
  const two = words.slice(0, 2).join(" ");
572
- const consumed = commands[two] ? 2 : commands[words[0] ?? ""] ? 1 : 0;
916
+ const one = words[0] ?? "";
917
+ const consumed = commands[two] ? 2 : commands[one] ? 1 : 0;
573
918
  if (consumed === 0)
574
919
  return [];
575
920
  // `project create <name>` and `message get <id>` each take one positional.
576
921
  const takesPositional = two === "project create" ||
577
922
  two === "message get" ||
578
- two === "interaction get";
923
+ two === "interaction get" ||
924
+ two === "subscriber create";
925
+ // `use`, `send` and `ask` read every remaining word as a value rather than
926
+ // as a mistake, so nothing after them can be a stray.
927
+ if (one === "use" || one === "send" || one === "ask")
928
+ return [];
579
929
  return words.slice(consumed + (takesPositional ? 1 : 0));
580
930
  }
581
931
  export function resolveCommand(words) {
@@ -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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"}
@@ -43,3 +43,31 @@ export declare function writeCredentials(credentials: StoredCredentials, file?:
43
43
  export declare function storeSession(origin: string, session: StoredSession, file?: string): Promise<void>;
44
44
  export declare function forgetSession(origin: string, file?: string): Promise<StoredSession | null>;
45
45
  export declare function loadSession(origin: string, file?: string): Promise<StoredSession | null>;
46
+ /**
47
+ * Where the last project and environment used against a deployment are kept.
48
+ *
49
+ * A separate file from the credentials, for two reasons. Signing out should
50
+ * forget the token and not where somebody was working — they will sign back in
51
+ * and expect to be where they left off. And a file that holds a bearer
52
+ * credential should hold as little else as possible, so that "delete this and
53
+ * nothing is leaked" stays a true and simple statement.
54
+ *
55
+ * Keyed by origin like the credentials are, because a project id from staging
56
+ * means nothing on production and silently sending there would be the worst
57
+ * possible convenience.
58
+ */
59
+ export interface StoredContext {
60
+ readonly projectId: string;
61
+ readonly environmentId: string;
62
+ /** Carried so `wb where` can answer without a request. */
63
+ readonly projectSlug?: string;
64
+ readonly environmentKind?: string;
65
+ }
66
+ export interface StoredContexts {
67
+ readonly version: 1;
68
+ readonly origins: Record<string, StoredContext>;
69
+ }
70
+ export declare function contextPath(environment?: NodeJS.ProcessEnv): string;
71
+ export declare function readContexts(file?: string): Promise<StoredContexts>;
72
+ export declare function loadContext(origin: string, file?: string): Promise<StoredContext | null>;
73
+ export declare function storeContext(origin: string, context: StoredContext, file?: string): Promise<void>;
@@ -82,4 +82,42 @@ export async function loadSession(origin, file = credentialsPath()) {
82
82
  const current = await readCredentials(file);
83
83
  return current.origins[origin] ?? null;
84
84
  }
85
+ const NO_CONTEXT = { origins: {}, version: 1 };
86
+ export function contextPath(environment = process.env) {
87
+ return path.join(credentialsDirectory(environment), "context.json");
88
+ }
89
+ export async function readContexts(file = contextPath()) {
90
+ try {
91
+ const parsed = JSON.parse(await readFile(file, "utf8"));
92
+ if (typeof parsed !== "object" ||
93
+ parsed === null ||
94
+ parsed.version !== 1 ||
95
+ typeof parsed.origins !== "object" ||
96
+ parsed.origins === null) {
97
+ return NO_CONTEXT;
98
+ }
99
+ return parsed;
100
+ }
101
+ catch {
102
+ // Nothing remembered yet is the ordinary first state, and a damaged file
103
+ // should cost somebody an argument rather than an explanation.
104
+ return NO_CONTEXT;
105
+ }
106
+ }
107
+ export async function loadContext(origin, file = contextPath()) {
108
+ return (await readContexts(file)).origins[origin] ?? null;
109
+ }
110
+ export async function storeContext(origin, context, file = contextPath()) {
111
+ const current = await readContexts(file);
112
+ const existing = current.origins[origin];
113
+ // Rewriting an unchanged file on every command would touch the disk for
114
+ // nothing and make its timestamp meaningless as a record of when somebody
115
+ // last switched.
116
+ if (existing?.projectId === context.projectId &&
117
+ existing.environmentId === context.environmentId) {
118
+ return;
119
+ }
120
+ await mkdir(path.dirname(file), { mode: 0o700, recursive: true });
121
+ await writeFile(file, `${JSON.stringify({ origins: { ...current.origins, [origin]: context }, version: 1 }, null, 2)}\n`, { mode: 0o600 });
122
+ }
85
123
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
1
  export declare function run(argv: readonly string[], overrides?: {
2
2
  readonly credentialsFile?: string;
3
+ readonly contextFile?: string;
3
4
  readonly openUrl?: (url: string) => Promise<void>;
5
+ /** Supplied by tests; a real run reads the terminal, or refuses. */
6
+ readonly prompt?: (question: string, fallback?: string) => Promise<string>;
4
7
  }): Promise<number>;
package/dist/cli/main.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { spawn } from "node:child_process";
2
+ import { createInterface } from "node:readline/promises";
2
3
  import { WhooshBangProblemError } from "../errors.js";
3
4
  import { parseArguments, UsageError } from "./arguments.js";
4
5
  import { COMMAND_NAMES, resolveCommand, strayWords } from "./commands.js";
@@ -7,20 +8,31 @@ import { NotSignedInError, resolveOrigin } from "./session.js";
7
8
  import { OAuthError } from "./oauth.js";
8
9
  const USAGE = `wb — the WhooshBang command line
9
10
 
11
+ The short path — three commands from nothing to a message on a phone:
12
+
13
+ wb project create "My App" project, connection and route
14
+ wb subscriber create me prints an invitation to open on a phone
15
+ wb send me "Hello" …or: wb ask me "Deploy build 41?" --wait
16
+
17
+ wb init the same three, asked one at a time
18
+
19
+ Session:
10
20
  wb login [--scope <scope>]… sign in through your browser
11
21
  wb logout end this session and forget the token
12
22
  wb whoami show the signed-in account
23
+ wb where the project and environment in use
24
+ wb use <project> [test|live] point at a different one
13
25
 
14
- wb project create <name> [--slug] create a project and its environments
26
+ wb project create <name> [--slug] [--no-connection]
15
27
  wb project list
16
28
 
17
29
  wb credential create --project <project> --environment <env> --label <text> [--scope <scope>]…
18
30
  wb connection providers --project <project> --environment <env>
19
- wb connection create --project <project> --environment <env> --mode <mode> --name <text>
20
- [--shared-identity <id>] [--credential-stdin] [--username <name>]
31
+ wb connection create [--mode <mode>] [--name <text>] [--shared-identity <id>]
32
+ [--credential-stdin] [--username <name>] [--no-route]
21
33
  wb connection list --project <project> --environment <env>
22
34
  wb connection route --project <project> --environment <env> --connection <id> [--notifier <id>]
23
- wb link create --project <project> --environment <env> --subscriber <id> [--connection <id>]
35
+ wb subscriber create <id> [--connection <id>]
24
36
  wb message send --project <project> --environment <env> --subscriber <id> --text <text>
25
37
  [--target connection|simulator]
26
38
  wb message get <id> --project <project> --environment <env>
@@ -34,7 +46,12 @@ const USAGE = `wb — the WhooshBang command line
34
46
  wb interaction get <id> --project <project> --environment <env> [--wait [seconds]]
35
47
 
36
48
  A project is named by its id or its slug; an environment by its id or by
37
- test or live — whichever the output in front of you shows.
49
+ test or live — whichever the output in front of you shows. Both are
50
+ remembered per deployment after the first use, so --project and --environment
51
+ are overrides rather than things to retype.
52
+
53
+ Short forms: -p project, -e environment (--env), -s subscriber, -t text.
54
+ Every one has the long form above, and errors always name the long one.
38
55
 
39
56
  Global:
40
57
  --api-url <origin> which deployment to talk to (default https://api.whooshbang.com,
@@ -43,6 +60,31 @@ Global:
43
60
  --key <value> the idempotency key for a side-effecting command
44
61
  --help, --version
45
62
  `;
63
+ /**
64
+ * Asks a question, when there is somebody at a keyboard to answer it.
65
+ *
66
+ * Returned as `undefined` with no terminal attached, so the commands refuse in
67
+ * the words the argument would have used rather than blocking forever on a
68
+ * prompt that nothing will ever read. A cron job should be told which flag it
69
+ * forgot; it should not hang.
70
+ */
71
+ function terminalPrompt() {
72
+ if (!process.stdin.isTTY || !process.stdout.isTTY)
73
+ return undefined;
74
+ return async (question, fallback) => {
75
+ const rl = createInterface({
76
+ input: process.stdin,
77
+ output: process.stdout,
78
+ });
79
+ try {
80
+ const suffix = fallback === undefined ? "" : ` (${fallback})`;
81
+ return await rl.question(`${question}${suffix}: `);
82
+ }
83
+ finally {
84
+ rl.close();
85
+ }
86
+ };
87
+ }
46
88
  /**
47
89
  * Opens the sign-in page.
48
90
  *
@@ -111,10 +153,15 @@ export async function run(argv, overrides = {}) {
111
153
  // A command either completes or throws. There is one way to fail, and
112
154
  // the exit code is decided here from the kind of failure rather than by
113
155
  // each command inventing its own.
156
+ const prompt = overrides.prompt ?? terminalPrompt();
114
157
  await command({
115
158
  ...(overrides.credentialsFile === undefined
116
159
  ? {}
117
160
  : { credentialsFile: overrides.credentialsFile }),
161
+ ...(overrides.contextFile === undefined
162
+ ? {}
163
+ : { contextFile: overrides.contextFile }),
164
+ ...(prompt === undefined ? {} : { prompt }),
118
165
  openUrl: overrides.openUrl ??
119
166
  ((url) => {
120
167
  openBrowser(url, (line) => writer.err(line));
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,24 @@ export interface ResolvedEnvironment {
17
17
  readonly projectId: string;
18
18
  readonly environmentId: string;
19
19
  }
20
- export declare function resolveEnvironment(client: WhooshBangClient, parsed: ParsedArguments): Promise<ResolvedEnvironment>;
20
+ export interface ResolveOptions {
21
+ /** Where these ids belong. Remembering is skipped when absent. */
22
+ readonly origin?: string;
23
+ readonly contextFile?: string;
24
+ }
25
+ /**
26
+ * Turning arguments plus what was last used into the ids the API wants.
27
+ *
28
+ * `--project` is required only when nothing has been used yet. Once a project
29
+ * has been resolved against a deployment it is remembered for that deployment,
30
+ * so the argument that never varied between commands stops being typed. It
31
+ * still overrides when given, and it is still the only thing consulted the
32
+ * first time.
33
+ *
34
+ * The environment falls back to `test`, which is where somebody trying the
35
+ * product belongs and the only default under which a mistake is harmless.
36
+ */
37
+ export declare function resolveEnvironment(client: WhooshBangClient, parsed: ParsedArguments, options?: ResolveOptions): Promise<ResolvedEnvironment>;
21
38
  /**
22
39
  * The environment's default notifier, which only `link create` needs.
23
40
  *
@@ -1,4 +1,5 @@
1
1
  import { required, UsageError } from "./arguments.js";
2
+ import { loadContext, storeContext } from "./config.js";
2
3
  const ENVIRONMENT_KINDS = new Set(["test", "live"]);
3
4
  function looksLikeProjectId(value) {
4
5
  return value.startsWith("project_");
@@ -6,9 +7,33 @@ function looksLikeProjectId(value) {
6
7
  function looksLikeEnvironmentId(value) {
7
8
  return value.startsWith("environment_");
8
9
  }
9
- export async function resolveEnvironment(client, parsed) {
10
- const projectSelector = required(parsed, "project", "the project id or slug");
11
- const environmentSelector = required(parsed, "environment", "the environment id, or test or live");
10
+ /**
11
+ * Turning arguments plus what was last used into the ids the API wants.
12
+ *
13
+ * `--project` is required only when nothing has been used yet. Once a project
14
+ * has been resolved against a deployment it is remembered for that deployment,
15
+ * so the argument that never varied between commands stops being typed. It
16
+ * still overrides when given, and it is still the only thing consulted the
17
+ * first time.
18
+ *
19
+ * The environment falls back to `test`, which is where somebody trying the
20
+ * product belongs and the only default under which a mistake is harmless.
21
+ */
22
+ export async function resolveEnvironment(client, parsed, options = {}) {
23
+ const remembered = options.origin
24
+ ? await loadContext(options.origin, options.contextFile)
25
+ : null;
26
+ const projectSelector = parsed.options.get("project") ??
27
+ remembered?.projectId ??
28
+ required(parsed, "project", remembered
29
+ ? "the project id or slug"
30
+ : "the project id or slug — nothing has been used against this deployment yet");
31
+ const environmentSelector = parsed.options.get("environment") ??
32
+ // Only inherited alongside its project: an environment id from one project
33
+ // names nothing in another, and `test` is the safe answer when they differ.
34
+ (parsed.options.has("project")
35
+ ? "test"
36
+ : (remembered?.environmentId ?? "test"));
12
37
  // The fast path: two ids and nothing to look up. This used to read the
13
38
  // project anyway, purely to check the pair agreed — which cost a request on
14
39
  // every command and, worse, put an account-scoped read in front of work that
@@ -18,10 +43,10 @@ export async function resolveEnvironment(client, parsed) {
18
43
  // fails at the operation itself, which is where a wrong id belongs.
19
44
  if (looksLikeProjectId(projectSelector) &&
20
45
  looksLikeEnvironmentId(environmentSelector)) {
21
- return {
46
+ return remember(options, {
22
47
  environmentId: environmentSelector,
23
48
  projectId: projectSelector,
24
- };
49
+ });
25
50
  }
26
51
  const project = looksLikeProjectId(projectSelector)
27
52
  ? await client.getProject(projectSelector)
@@ -37,10 +62,27 @@ export async function resolveEnvironment(client, parsed) {
37
62
  }
38
63
  throw new UsageError(`${project.slug} has no ${environmentSelector} environment.`);
39
64
  }
40
- return {
41
- environmentId: environment.id,
42
- projectId: project.id,
43
- };
65
+ return remember(options, { environmentId: environment.id, projectId: project.id }, { environmentKind: environment.kind, projectSlug: project.slug });
66
+ }
67
+ /**
68
+ * Records what was resolved, and never fails the command for it.
69
+ *
70
+ * A read-only home directory should cost somebody the convenience of not
71
+ * retyping an argument, not the operation they actually asked for.
72
+ */
73
+ async function remember(options, resolved, labels = {}) {
74
+ if (options.origin) {
75
+ await storeContext(options.origin, {
76
+ ...resolved,
77
+ ...(labels.environmentKind === undefined
78
+ ? {}
79
+ : { environmentKind: labels.environmentKind }),
80
+ ...(labels.projectSlug === undefined
81
+ ? {}
82
+ : { projectSlug: labels.projectSlug }),
83
+ }, options.contextFile).catch(() => undefined);
84
+ }
85
+ return resolved;
44
86
  }
45
87
  /**
46
88
  * The environment's default notifier, which only `link create` needs.
@@ -1 +1 @@
1
- {"version":3,"file":"selectors.js","sourceRoot":"","sources":["../../src/cli/selectors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"selectors.js","sourceRoot":"","sources":["../../src/cli/selectors.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whooshbang/sdk",
3
- "version": "1.0.0-rc.23",
3
+ "version": "1.0.0-rc.24",
4
4
  "description": "Fetch-injected JavaScript client for WhooshBang V1",
5
5
  "private": false,
6
6
  "license": "MIT",