@ghostlytools/cli 1.1.2 → 1.1.3

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.
@@ -6413,7 +6413,7 @@ var DataLink = class {
6413
6413
  //#endregion
6414
6414
  //#region ../core/src/groupCrypto.ts
6415
6415
  /**
6416
- * The cryptography of the `group-mesh/1` profile (WISP 900 / 9xx group mesh).
6416
+ * The cryptography of the `group-mesh/1` profile (WISP 900 / 902 group mesh).
6417
6417
  *
6418
6418
  * One random 32-byte **epoch secret** per membership state. It never travels in
6419
6419
  * the clear: the committer seals it to each member of the new roster with an
@@ -6555,7 +6555,7 @@ function edgeParams(groupId, mySeed, myZ32, peerZ32) {
6555
6555
  }
6556
6556
  /**
6557
6557
  * The cap the chain rules and the engine apply: `MAX_GROUP_MEMBERS`, always, in the apps. Only the scale harness raises
6558
- * it, to measure what hubs would cost past 32 (WISP 9xx · Group Mesh § Cost per member); an app never does.
6558
+ * it, to measure what hubs would cost past 32 (WISP 902 · Group Mesh § Cost per member); an app never does.
6559
6559
  */
6560
6560
  var GROUP_MEMBER_CAP = { max: 32 };
6561
6561
  var MAX_GROUP_CHAIN = 1024;
@@ -6689,7 +6689,7 @@ function verifyChain(raw, groupId) {
6689
6689
  */
6690
6690
  var OWN_FRAME_LIMIT = 2 ** 32 - 2 ** 23;
6691
6691
  /**
6692
- * Frames said again (WISP 9xx, both profiles): a member's own frames that no edge took when it said them are
6692
+ * Frames said again (WISP 902, both profiles): a member's own frames that no edge took when it said them are
6693
6693
  * remembered (`kept`, the latest) and, once the chain it follows is newer than such a frame's and has not moved for
6694
6694
  * `settledMs`, looked at once for saying again where the members let in while it was behind can read them. A catch-up
6695
6695
  * brings commits one by one, and a frame said again at the first of them would still miss those let in by the next.
@@ -6770,7 +6770,7 @@ var STATUS_CARD_LIMITS = {
6770
6770
  /** Labels on a task, and a label's length in characters. */
6771
6771
  tags: 3,
6772
6772
  tag: 24,
6773
- /** Buttons on a message (WISP 4xx · Message Buttons). */
6773
+ /** Buttons on a message (WISP 406 · Message Buttons). */
6774
6774
  buttons: 6,
6775
6775
  /** A button's id: what a press names. */
6776
6776
  buttonId: 32,
@@ -6831,7 +6831,7 @@ var ID$4 = /^[A-Za-z0-9_.:][A-Za-z0-9_.:-]{0,63}$/;
6831
6831
  var BUTTON_ID = /^[A-Za-z0-9_.:][A-Za-z0-9_.:-]{0,31}$/;
6832
6832
  var CRON = /^[0-9A-Za-z*,/?#\- ]{1,64}$/;
6833
6833
  /**
6834
- * Whether a typed answer is a button's label or id (WISP 4xx · Message Buttons): ignoring case and spaces at the ends.
6834
+ * Whether a typed answer is a button's label or id (WISP 406 · Message Buttons): ignoring case and spaces at the ends.
6835
6835
  * Not the device's locale's case: the presser's and the author's apps must agree ("I" is not "ı" anywhere).
6836
6836
  */
6837
6837
  var sameButtonText = (a, b) => a.trim().toLowerCase() === b.trim().toLowerCase();
@@ -7315,13 +7315,13 @@ var wireReply = (reply) => ({
7315
7315
  * {"t":"paired-reacted","n":1790000000000}
7316
7316
  *
7317
7317
  * Off the live session they ride on the DHT envelopes (WISP 403 § Reactions). Groups carry them in their own frames
7318
- * (WISP 9xx § Reactions). Older apps drop all of these: a `t` they do not know, or a trailing element they skip.
7318
+ * (WISP 902 § Reactions). Older apps drop all of these: a `t` they do not know, or a trailing element they skip.
7319
7319
  */
7320
7320
  var REACTION_FRAME = "paired-reaction";
7321
7321
  var REACTED_FRAME = "paired-reacted";
7322
- /** A reaction in a private group, over the edge from the member who reacts (WISP 9xx group mesh § Reactions). */
7322
+ /** A reaction in a private group, over the edge from the member who reacts (WISP 902 group mesh § Reactions). */
7323
7323
  var GROUP_REACTION_FRAME = "group-react";
7324
- /** A reaction in a community, as an application frame sealed to the group (WISP 9xx group community § Reactions). */
7324
+ /** A reaction in a community, as an application frame sealed to the group (WISP 903 group community § Reactions). */
7325
7325
  var COMMUNITY_REACTION_FRAME = "reaction";
7326
7326
  var REACTION_LIMITS = {
7327
7327
  /** UTF-8 bytes of one emoji: a family or a subdivision flag fits, a run of emoji does not. */
@@ -7679,7 +7679,7 @@ function parseLinkPreview(raw, text) {
7679
7679
  * side: the frame comes on the session authenticated with the pinned contact, and the receiver looks the id up among
7680
7680
  * that contact's messages only. The highest `e` wins, whatever order frames arrive in; an edit that is not newer is
7681
7681
  * confirmed and changes nothing. A preview (`pv`, WISP 401 § Link previews) may come with the new text, as with a
7682
- * message. A status card (`sc`, WISP 4xx · Status Cards) may come with it too; a card message takes up to
7682
+ * message. A status card (`sc`, WISP 405 · Status Cards) may come with it too; a card message takes up to
7683
7683
  * `STATUS_CARD_LIMITS.edits` edits, a number past `MAX_EDITS_PER_MESSAGE` holding only with a card. Older apps drop
7684
7684
  * both frames: they have an id, but a `t` they do not know.
7685
7685
  */
@@ -11717,7 +11717,7 @@ async function fitSignedPairedSignalWith(signal, signer, from, to, fits) {
11717
11717
  //#endregion
11718
11718
  //#region ../core/src/storeForward.ts
11719
11719
  /**
11720
- * Store-and-forward for an away contact (WISP 4xx draft, `hold/1`).
11720
+ * Store-and-forward for an away contact (WISP 404 draft, `hold/1`).
11721
11721
  *
11722
11722
  * What a person sends while the contact is away is sealed into a *bundle* (signed by the sender's
11723
11723
  * participation key, then encrypted to a key only the two of them can derive), put in the sender's
@@ -12440,12 +12440,12 @@ var WAKE_SESSION_CAPABILITY = "wake/1";
12440
12440
  var PIN_CAPABILITY = "pin/1";
12441
12441
  /**
12442
12442
  * Status cards: this app shows a message's card (`sc`) and takes a card message's edits past the text's 100, which an
12443
- * older app would drop (WISP 4xx · Status Cards, `statusCards.ts`). A card itself needs nothing: older apps show its text.
12443
+ * older app would drop (WISP 405 · Status Cards, `statusCards.ts`). A card itself needs nothing: older apps show its text.
12444
12444
  */
12445
12445
  var STATUS_CARD_CAPABILITY = "status-card/1";
12446
12446
  /**
12447
12447
  * Message buttons: this app shows a message's buttons (a card of kind `buttons`) and presses them with a reply naming
12448
- * the button (WISP 4xx · Message Buttons). Nothing is gated on it: an older app shows the text and sends replies, and
12448
+ * the button (WISP 406 · Message Buttons). Nothing is gated on it: an older app shows the text and sends replies, and
12449
12449
  * a press reads as an ordinary reply there. It tells a bot whether its contact can press at all.
12450
12450
  */
12451
12451
  var BUTTONS_CAPABILITY = "buttons/1";
@@ -14275,7 +14275,7 @@ var PairedCalls = class {
14275
14275
  //#endregion
14276
14276
  //#region ../core/src/communityRendezvous.ts
14277
14277
  /**
14278
- * Where the members of a `group-community/1` group find each other (WISP 9xx · Group Community §
14278
+ * Where the members of a `group-community/1` group find each other (WISP 903 · Group Community §
14279
14279
  * Topology): a **beacon** listing the current hubs, and a **lobby** per hub where a member asks
14280
14280
  * that hub for an edge. Both are Pkarr records under identities every member derives from the
14281
14281
  * group's rendezvous secret, sealed with a key from the same secret: relays see a key and an
@@ -14376,7 +14376,7 @@ function unpack(bytes, withLoad, max) {
14376
14376
  return out;
14377
14377
  }
14378
14378
  /**
14379
- * The hubs that take turns at the door (WISP 9xx § Admission): those that said so lately and have
14379
+ * The hubs that take turns at the door (WISP 903 § Admission): those that said so lately and have
14380
14380
  * been hubs for a minute, so that every hub, having read the beacon at least once since, agrees on
14381
14381
  * the same set. Only when there is none (a group's first minute), the one that has been a hub longest. And when none said so lately, a hub asking (`me`)
14382
14382
  * that sees no other fresh hub in the beacon is the door alone, listed or not: its own entry may not have reached the
@@ -14504,7 +14504,7 @@ function shouldBeHub(me, hubs, now = Date.now()) {
14504
14504
  //#endregion
14505
14505
  //#region ../core/src/groupHubs.ts
14506
14506
  /**
14507
- * Hubs in a private (mesh) group (WISP 9xx · Group Mesh § Hubs). Up to `threshold` members a group is a full mesh, as
14507
+ * Hubs in a private (mesh) group (WISP 902 · Group Mesh § Hubs). Up to `threshold` members a group is a full mesh, as
14508
14508
  * before. Past it, members that stay online (the Desktop app and the CLI, or members the admin pins) become **hubs**:
14509
14509
  * they keep edges with every other hub and with the members that ask them, and pass on every frame they take. The
14510
14510
  * other members keep edges with `hubsPerMember` hubs only. Frames are author-signed and sealed under the epoch key, and
@@ -15151,7 +15151,7 @@ var PONG_WAIT_MS = 4e3;
15151
15151
  * A `paired-message` frame. The preview (`pv`) is left out when the frame would pass `MAX_PAIRED_MESSAGE_FRAME`
15152
15152
  * with it: the text matters, the card does not. A reply (`r`, WISP 401 § Replies) is a few hundred bytes at most
15153
15153
  * and always goes, and so does a forwarded message's hop count (`fw`, WISP 401 § Forwards) and a status card (`sc`,
15154
- * WISP 4xx · Status Cards), whose 8 KiB with the text's 16 stay well inside the frame.
15154
+ * WISP 405 · Status Cards), whose 8 KiB with the text's 16 stay well inside the frame.
15155
15155
  */
15156
15156
  function pairedMessageFrame(id, ts, m, preview, reply, forwarded, card) {
15157
15157
  const r = {
@@ -16913,7 +16913,7 @@ var GhostLink = class {
16913
16913
  * the DHT has no room for one, and the text goes without it. A `reply` (WISP 401 § Replies) goes whole on the
16914
16914
  * session; on the DHT only its id does, which the contact looks up in its own history. `forwarded`: the hop count
16915
16915
  * of a forwarded message (WISP 401 § Forwards), on both paths (the DHT drops it when the packet has no room). `card`:
16916
- * a status card (WISP 4xx · Status Cards), on the live session only; on the DHT the text, its fallback, goes alone.
16916
+ * a status card (WISP 405 · Status Cards), on the live session only; on the DHT the text, its fallback, goes alone.
16917
16917
  */
16918
16918
  async sendMessage(text, timestamp = Date.now(), stableId, preview, reply, forwarded, card) {
16919
16919
  const trimmed = text.trim();
@@ -19849,7 +19849,7 @@ function validatePaymentTarget(value, now = Date.now()) {
19849
19849
  * did:dht (the DIF method, https://github.com/decentralized-identity/did-dht/blob/main/spec/spec.md): a W3C DID document written as DNS records into the
19850
19850
  * Pkarr packet of an Ed25519 key, the BEP44 mutable item Ghostly already publishes chats under. This
19851
19851
  * module maps a document to that packet and back (strictly: a malformed packet is an error, never a
19852
- * guess) and resolves a did:dht through Pkarr relays. WISP 3xx-did-dht describes Ghostly's use.
19852
+ * guess) and resolves a did:dht through Pkarr relays. WISP 310-did-dht describes Ghostly's use.
19853
19853
  */
19854
19854
  var DID_DHT_PREFIX = "did:dht:";
19855
19855
  /** The TTL the spec recommends: Mainline's default record lifetime. */
@@ -22598,7 +22598,7 @@ var wireMentions = (mentions) => mentions.map(({ k, o, l }) => ({
22598
22598
  //#endregion
22599
22599
  //#region ../core/src/groupEdits.ts
22600
22600
  /**
22601
- * Editing a sent text in a group (WISP 9xx § Edits, both profiles). As in a 1:1 chat (WISP 401 § Edits), the author says
22601
+ * Editing a sent text in a group (WISP 902 § Edits, both profiles). As in a 1:1 chat (WISP 401 § Edits), the author says
22602
22602
  * the whole new text of one of its own messages with an edit number of its own per message, and the highest number
22603
22603
  * wins whatever order edits arrive in. A group has no receipts: the author says an edit to every member it can, and
22604
22604
  * again later (a private group: when an edge opens; a community: its members catch up from each other).
@@ -22610,7 +22610,7 @@ var wireMentions = (mentions) => mentions.map(({ k, o, l }) => ({
22610
22610
  *
22611
22611
  * { "x": { "t": "edit", "id": <message id>, "v": 3, "ts": 1790000000000, "text": "Done: 12 of 12", "m"?: [mentions], "sc"?: {card} } }
22612
22612
  *
22613
- * `sc` is the status card of this version (WISP 4xx · Status Cards); an edit with one may be numbered up to
22613
+ * `sc` is the status card of this version (WISP 405 · Status Cards); an edit with one may be numbered up to
22614
22614
  * `STATUS_CARD_LIMITS.edits`, one without only up to `MAX_EDITS_PER_MESSAGE`.
22615
22615
  *
22616
22616
  * Older apps drop both: a mesh session ignores a `t` it does not know, a community app the `x` frames it does not know.
@@ -22740,7 +22740,7 @@ var GROUP_LIMITS = {
22740
22740
  */
22741
22741
  relay: 256,
22742
22742
  relayBytes: 262144,
22743
- /** Other members' edits kept to hand on, the latest per message (WISP 9xx § Edits): count and ciphertext bytes. */
22743
+ /** Other members' edits kept to hand on, the latest per message (WISP 902 § Edits): count and ciphertext bytes. */
22744
22744
  relayEdits: 64,
22745
22745
  relayEditBytes: 524288,
22746
22746
  /** Edits of one member handed on for one sync that asks for them: fewer than a receiver takes in a window. */
@@ -22867,7 +22867,7 @@ var editAad = (f) => JSON.stringify([
22867
22867
  f.v,
22868
22868
  f.ts
22869
22869
  ]);
22870
- /** What a member signs of its reaction, so that a hub can pass it on (WISP 9xx · Group Mesh § Hubs). */
22870
+ /** What a member signs of its reaction, so that a hub can pass it on (WISP 902 · Group Mesh § Hubs). */
22871
22871
  var reactionSigned = (g, r) => utf8Encode(JSON.stringify([
22872
22872
  "ghostly-group/1 react",
22873
22873
  g,
@@ -22880,7 +22880,7 @@ var reactionSigned = (g, r) => utf8Encode(JSON.stringify([
22880
22880
  * on vouches for. A frame of its own, which apps from before hubs drop: they would take it as the hub's reaction.
22881
22881
  */
22882
22882
  var GROUP_REACTED_FRAME = "group-reacted";
22883
- /** What a member signs of its pin: any member passes it on as it is (WISP 9xx · Group Mesh § Pinned message). */
22883
+ /** What a member signs of its pin: any member passes it on as it is (WISP 902 · Group Mesh § Pinned message). */
22884
22884
  var pinSigned = (g, p) => utf8Encode(JSON.stringify([
22885
22885
  "ghostly-group/1 pin",
22886
22886
  g,
@@ -23148,7 +23148,7 @@ var GroupSession = class {
23148
23148
  get id() {
23149
23149
  return this.state.id;
23150
23150
  }
23151
- /** The name the admin gave the group, else the one it had when I got in (WISP 9xx § Metadata). */
23151
+ /** The name the admin gave the group, else the one it had when I got in (WISP 902 § Metadata). */
23152
23152
  get name() {
23153
23153
  return groupDisplayName(this.state.meta, this.state.name);
23154
23154
  }
@@ -23184,7 +23184,7 @@ var GroupSession = class {
23184
23184
  get picture() {
23185
23185
  return groupMetaPicture(this.state.meta);
23186
23186
  }
23187
- /** Whom the admin pinned as hubs and excluded (WISP 9xx · Group Mesh § Hubs), from the group's metadata. */
23187
+ /** Whom the admin pinned as hubs and excluded (WISP 902 · Group Mesh § Hubs), from the group's metadata. */
23188
23188
  get hubPolicy() {
23189
23189
  const meta = this.state.meta;
23190
23190
  if (!this.policyOf || this.policyOf.sig !== meta?.sig) this.policyOf = {
@@ -23357,7 +23357,7 @@ var GroupSession = class {
23357
23357
  this.hooks.changed();
23358
23358
  return { secret };
23359
23359
  }
23360
- /** Someone out of the roster is not handed on any more, whatever they sent while in it (WISP 9xx § Catch-up). */
23360
+ /** Someone out of the roster is not handed on any more, whatever they sent while in it (WISP 902 § Catch-up). */
23361
23361
  pruneRelay() {
23362
23362
  if (this.state.relay?.length) this.state.relay = this.state.relay.filter((f) => rosterHas(this.roster, f.s));
23363
23363
  if (this.state.relayEdits?.length) this.state.relayEdits = this.state.relayEdits.filter((f) => rosterHas(this.roster, f.s));
@@ -23424,8 +23424,8 @@ var GroupSession = class {
23424
23424
  * Encrypts and signs a text, keeps it for catch-up and sends it to every other member. `mentions`: places of the
23425
23425
  * text that name members (everyone: the admin only); what does not hold is left out. `reply`: the message it
23426
23426
  * answers, sealed apart from the text (`r`) like the mentions, so an older app still reads the text. `forwarded`: the
23427
- * hop count of a forwarded text (`f`, WISP 9xx § Forwards). `card`: a status card, checked by the caller, sealed in a
23428
- * box of its own (`sc`, WISP 4xx · Status Cards); the text is its fallback.
23427
+ * hop count of a forwarded text (`f`, WISP 902 § Forwards). `card`: a status card, checked by the caller, sealed in a
23428
+ * box of its own (`sc`, WISP 405 · Status Cards); the text is its fallback.
23429
23429
  */
23430
23430
  sendText(text, now = Date.now(), mentions = [], reply, forwarded, card) {
23431
23431
  return this.serialize(async () => {
@@ -23609,7 +23609,7 @@ var GroupSession = class {
23609
23609
  return first ? groupMessageId(f.s, first.e, first.n) : groupMessageId(f.s, f.e, f.n);
23610
23610
  }
23611
23611
  /**
23612
- * Says an edit of one of my messages (WISP 9xx § Edits): edit `v`, the whole new text and its mentions, sealed under
23612
+ * Says an edit of one of my messages (WISP 902 § Edits): edit `v`, the whole new text and its mentions, sealed under
23613
23613
  * the key of the message's epoch and signed, to every member of that epoch still in the group, or to `to` alone (an
23614
23614
  * edge that just opened). Someone admitted after the message cannot open it and is not sent it. The message's
23615
23615
  * epoch key must still be here: past `GROUP_LIMITS.secrets` epochs a message cannot be edited.
@@ -23710,7 +23710,7 @@ var GroupSession = class {
23710
23710
  }
23711
23711
  /**
23712
23712
  * A frame from an authenticated member over the pairwise edge. Anything malformed or unauthorized is dropped.
23713
- * Resolves to what it took that a hub passes on to its other edges (WISP 9xx · Group Mesh § Hubs): each message,
23713
+ * Resolves to what it took that a hub passes on to its other edges (WISP 902 · Group Mesh § Hubs): each message,
23714
23714
  * edit, commit (without the secret sealed for me), metadata statement and signed leave, the first time only, so a
23715
23715
  * flood among hubs stops at every member that already has it. Only what its author still in the roster signed.
23716
23716
  */
@@ -24260,7 +24260,7 @@ var GroupSession = class {
24260
24260
  }
24261
24261
  /**
24262
24262
  * Pins a member as a hub, excludes one from being a hub, or leaves it to the member's app (`null`): only the admin,
24263
- * in the group's metadata beside the picture (WISP 9xx · Group Mesh § Hubs).
24263
+ * in the group's metadata beside the picture (WISP 902 · Group Mesh § Hubs).
24264
24264
  */
24265
24265
  setHub(key, role, now = Date.now()) {
24266
24266
  return this.serialize(async () => {
@@ -24372,7 +24372,7 @@ var GroupSession = class {
24372
24372
  //#endregion
24373
24373
  //#region ../core/src/groupWake.ts
24374
24374
  /**
24375
- * Wake-up push in a private group (WISP 9xx · Group Mesh § Wake-up push): a member whose web app is closed is woken
24375
+ * Wake-up push in a private group (WISP 902 · Group Mesh § Wake-up push): a member whose web app is closed is woken
24376
24376
  * when a message names it. `wake/1` as a 1:1 chat has it (WISP 401 § Wake-up push), carried on the group's edges: each
24377
24377
  * member shares its subscription with each other member on their own edge, under a token of that edge alone, and
24378
24378
  * only in a group it has not muted:
@@ -24537,7 +24537,7 @@ function entryParams(link, mySeed, myZ32, peerZ32) {
24537
24537
  //#endregion
24538
24538
  //#region ../core/src/groupCommunity.ts
24539
24539
  /**
24540
- * `group-community/1` (WISP 9xx · Group Community): a group whose link is the way in, for hundreds
24540
+ * `group-community/1` (WISP 903 · Group Community): a group whose link is the way in, for hundreds
24541
24541
  * of members, where the admin need not be online for anyone to join.
24542
24542
  *
24543
24543
  * What differs from `group-mesh/1`:
@@ -24833,7 +24833,7 @@ var seenKey = (e, h) => `${e}:${h}`;
24833
24833
  /** One of a member's frames, among its own. */
24834
24834
  var frameKey = (f) => `${f.e}:${f.h}:${f.n}`;
24835
24835
  /**
24836
- * Where a frame said again under a newer commit was first said (`o`, WISP 9xx § Messages and catch-up): its commit's
24836
+ * Where a frame said again under a newer commit was first said (`o`, WISP 903 § Messages and catch-up): its commit's
24837
24837
  * epoch and short hash and its number there. Never the frame's own place, nor a later epoch than its own.
24838
24838
  */
24839
24839
  function readOriginal(o, frame) {
@@ -24855,7 +24855,7 @@ function seenIn(seen, f) {
24855
24855
  return f.n === entry.high || entry.window.includes(f.n);
24856
24856
  }
24857
24857
  /**
24858
- * Whether a stored community state holds the frame a beacon's head names (WISP 9xx § Head), read without running
24858
+ * Whether a stored community state holds the frame a beacon's head names (WISP 903 § Head), read without running
24859
24859
  * the group: its own frame, one it took, or one of an epoch so far behind its own that it would not be taken now.
24860
24860
  */
24861
24861
  function communityHasFrame(state, f) {
@@ -25033,7 +25033,7 @@ var CommunitySession = class {
25033
25033
  get id() {
25034
25034
  return this.state.id;
25035
25035
  }
25036
- /** The name the admin gave the group, else the one it had when I got in (WISP 9xx § Metadata). */
25036
+ /** The name the admin gave the group, else the one it had when I got in (WISP 903 § Metadata). */
25037
25037
  get name() {
25038
25038
  return groupDisplayName(this.state.meta, this.state.name);
25039
25039
  }
@@ -25104,7 +25104,7 @@ var CommunitySession = class {
25104
25104
  return -1;
25105
25105
  }
25106
25106
  /**
25107
- * What someone the chain took out is told when it comes back (WISP 9xx § Leaving and removal): the commits from where
25107
+ * What someone the chain took out is told when it comes back (WISP 903 § Leaving and removal): the commits from where
25108
25108
  * it says it is (`sync`: its tip, or its locator) up to the one that took it out, and nothing after. Later commits
25109
25109
  * are not its business (a `link` commit names the new entry key); no secret, no stored frame, no seed goes with them.
25110
25110
  * Empty when it is a member, was never one, or already holds that commit.
@@ -25701,8 +25701,8 @@ var CommunitySession = class {
25701
25701
  /**
25702
25702
  * `mentions`: places of the text that name members, sealed with it (`m`). Never everyone in a community. They
25703
25703
  * count against the text's 16 KiB, so the box stays within what older apps accept. `reply`: the message it
25704
- * answers (`r`), counted the same way. `forwarded`: a forwarded text's hop count (`fw`, WISP 9xx § Forwards). `card`:
25705
- * a status card, checked by the caller (`sc`, WISP 4xx · Status Cards), counted the same way; the text is its fallback.
25704
+ * answers (`r`), counted the same way. `forwarded`: a forwarded text's hop count (`fw`, WISP 903 § Forwards). `card`:
25705
+ * a status card, checked by the caller (`sc`, WISP 405 · Status Cards), counted the same way; the text is its fallback.
25706
25706
  */
25707
25707
  sendText(text, nick, now = Date.now(), mentions = [], reply, forwarded, card) {
25708
25708
  return this.serialize(async () => {
@@ -25754,7 +25754,7 @@ var CommunitySession = class {
25754
25754
  });
25755
25755
  }
25756
25756
  /**
25757
- * An edit of one of my messages (WISP 9xx · Group Community § Edits): an application frame like `sendApp`'s, sealed
25757
+ * An edit of one of my messages (WISP 903 · Group Community § Edits): an application frame like `sendApp`'s, sealed
25758
25758
  * to the current epoch, but with a text's room rather than an application frame's, since it carries a whole text.
25759
25759
  * The nick is left out when the text leaves no room for it.
25760
25760
  */
@@ -26467,7 +26467,7 @@ function signCommunity(commit, seed) {
26467
26467
  //#endregion
26468
26468
  //#region ../core/src/groupTyping.ts
26469
26469
  /**
26470
- * The typing indicator of a private group (WISP 9xx · Group Mesh § Typing): "Ana is typing", said on the group's
26470
+ * The typing indicator of a private group (WISP 902 · Group Mesh § Typing): "Ana is typing", said on the group's
26471
26471
  * edges only, the way a 1:1 chat says it on its session (WISP 401 § Typing), with the same kinds, limits and wording.
26472
26472
  *
26473
26473
  * {"t":"group-typing","g":"<group>","e":3,"n":"<nonce>","c":"<sealed>"}
@@ -26573,4 +26573,4 @@ var GroupTypingBoard = class {
26573
26573
  //#endregion
26574
26574
  export { checkAtprotoProofRecord as $, filePartName as $a, BUTTON_ID as $i, freshHubs as $n, createChatInvite as $o, IdentityExchange as $r, randomBytes as $s, isPubkyKey as $t, GROUP_EDIT_TEXT_BYTES as A, RTC_CONFIG as Aa, voicePeaksOf as Ai, findEndpoint as An, readSetUpdate as Ao, newWakeToken as Ar, RelayTransport as As, encodeDidDhtPacket as At, sameSshKey as B, LEGACY_SERVICES as Ba, GROUP_REACTION_FRAME as Bi, SIGNAL_FRESH_MS as Bn, enrollCancelReason as Bo, HOLD_LIMITS as Br, createRelayPayload as Bs, USDT_PUBLIC_RPC as Bt, groupWakes as C, formatLocalTarget as Ca, sanitizeFileName as Ci, resolveLightningDestination as Cn, readHandoffHello as Co, nextPinNumber as Cr, nextTurnPosition as Cs, parseDidSignaturePaste as Ct, GroupSession as D, decodeControl as Da, baseMime as Di, ENDPOINT as Dn, sealHandoffPiece as Do, WAKE_CALL_INTERVAL_MS as Dr, turnKeys as Ds, didDhtDocument as Dt, GROUP_READ_NOTE as E, LIMITS as Ea, VOICE_LIMITS as Ei, decodeBolt11 as En, readHandoffVerified as Eo, readPin as Er, signTurnRelease as Es, strictBase64Url as Et, SSHSIG_MAX_ARMOR as F, extractParamsFromSdp as Fa, dhtEditId as Fi, INVITE_TAKEN as Fn, ENROLL_DONE as Fo, vapidKeysMatch as Fr, budgetRetryMs as Fs, ONCHAIN_PROVIDER as Ft, decodeAnyBitcoinAddress as G, HANDOFF_HAVE as Ga, reactionEmoji as Gi, MESH_HUBS as Gn, enrollProofFrame as Go, CapsExchange as Gr, identityFromSeed as Gs, validatePaymentTarget as Gt, verifySshSignature as H, HANDOFF_ACK as Ha, ReactionWindow as Hi, SIGNAL_REPLY_MS as Hn, enrollDoneFrame as Ho, HoldRefusedError as Hr, openRelayPayload as Hs, assertTokenUnits as Ht, SSHSIG_NAMESPACE as I, parseCallSignal as Ia, parseLinkPreview as Ii, LIVENESS_PING_MS as In, ENROLL_GRANT as Io, BUTTONS_CAPABILITY as Ir, isDiscoveryBudgetError as Is, PaymentPreflightError as It, ATPROTO_PROOF_COLLECTION as J, HANDOFF_PAKE as Ja, validReactionNumber as Ji, pickMeshHubs as Jn, verifyEnrollProof as Jo, dialDescriptors as Jr, verify as Js, SPARK_PROVIDER as Jt, ATPROTO_DECLARED_SCOPE as K, HANDOFF_HELLO as Ka, reactionIsNewer as Ki, mayBeHub as Kn, readEnrollGrant as Ko, DHT_TEXT_CAPABILITY as Kr, identityFromSeedB64 as Ks, walletNetworkOf as Kt, SshSigError as L, signalHasVideo as La, forwardedAgain as Li, pairedMessageFrame as Ln, ENROLL_HELLO as Lo, EDIT_CAPABILITY as Lr, withRequestOptions as Ls, SEPOLIA_TEST_USDT as Lt, parseCommunityEdit as M, buildSdpFromSignal as Ma, EDIT_BUFFER_MS as Mi, parseCashuRequestPayload as Mn, setUpdateFrame as Mo, relayRequest as Mr, normalizeRelayUrl as Ms, signDidDhtPacket as Mt, mentionsMember as N, callRtcConfig as Na, EDIT_RATE_WINDOW_MS as Ni, parseFedimintRequestPayload as Nn, signTombstone as No, wakeRequest as Nr, setLinkTraceSink as Ns, ETHEREUM_USDT as Nt, COMMUNITY_EDIT_FRAME as O, encodeControl as Oa, fileMessageText as Oi, cashuRequestPayload as On, SET_ACK as Oo, WakeLimiter as Or, turnName as Os, didDhtFromPublicKey as Ot, groupName as P, callSignalHeardAt as Pa, RateWindow as Pi, GhostLink as Pn, verifySetUpdate as Po, checkPushEndpoint as Pr, traceLink as Ps, EVM_TEST_CHAINS as Pt, atprotoProofRkey as Q, HANDOFF_VERIFIED as Qa, replySnippet as Qi, doorHubs as Qn, OwnInviteError as Qo, IdentityCheckUnavailable as Qr, fromBase64Url as Qs, PUBKY_PROOF_MAX_BYTES as Qt, parseSshPublicKey as R, emptyLinkRecords as Ra, readForwarded as Ri, CarriedTransport as Rn, ENROLL_PROOF as Ro, HOLD_CAPABILITY as Rr, PacketTooLargeError as Rs, SEPOLIA_TEST_USDT_FAUCET as Rt, groupWakeFrame as S, GhostlyHttpError as Sa, safeBlobType as Si, requestLnurlInvoice as Sn, readHandoffHave as So, mayPin as Sr, firstDeviceSetSecret as Ss, parseDidDocument as St, GROUP_REACTED_FRAME as T, webLocalFetch as Ta, PLAYABLE_AUDIO as Ti, engineText as Tn, readHandoffTurnFrame as To, pinNumberHolds as Tr, signTurnPacket as Ts, staticDidDocument as Tt, verifyBitcoinMessage as U, HANDOFF_CANCEL as Ua, nextReactionNumber as Ui, groupSignalFrame as Un, enrollGrantFrame as Uo, newMailbox as Ur, parseRelayPayload as Us, assertWholeSats as Ut, sshSignCommand as V, serviceIdFromName as Va, REACTION_LIMITS as Vi, SIGNAL_HOLD_MS as Vn, enrollDigits as Vo, HoldKeys as Vr, newerPacket as Vs, WALLET_NETWORKS as Vt, BitcoinAddressError as W, HANDOFF_DONE as Wa, queueReaction as Wi, readGroupSignal as Wn, enrollHelloFrame as Wo, readManifest as Wr, createIdentity as Ws, formatPaymentAmount as Wt, atprotoDidMethod as X, HANDOFF_REQUEST as Xa, pairedReplyAuthor as Xi, beaconKeys as Xn, deviceInviteJoinerParams as Xo, IDENTITY_MAX_VALIDITY as Xr, sanitizeAvatar as Xs, sparkInvoiceDetails as Xt, ATPROTO_PROOF_SCOPE as Y, HANDOFF_PIECE_BYTES as Ya, wireReaction as Yi, COMMUNITY_TOPOLOGY as Yn, createDeviceInvite as Yo, IDENTITY_MAX_EVIDENCE as Yr, MAX_AVATAR_LENGTH as Ys, sparkAddressKind as Yt, atprotoProofRecord as Z, HANDOFF_TIMINGS as Za, readReply as Zi, beaconRecords as Zn, readDeviceInvite as Zo, IDENTITY_REVOCATION_LABEL as Zr, bytesEqual as Zs, isBitcoinAddress as Zt, knockRecords as _, edgeParams as _a, peekDhtMailbox as _i, recordsFromTxt as _n, handoffVersions as _o, TypingSender as _r, TURN_SETTLE_MS as _s, didWebFileNames as _t, sealGroupTyping as a, sameButtonText as aa, receivedIdentityStatus as ai, pubkyProofPath as an, handoffContext as ao, pickHubs as ar, ENROLL_CAPABILITY as as, verifyAtprotoRecordProof as at, GROUP_WAKE_FRAME as b, RELAY_POLL_INTERVALS as ba, parseImageMeta as bi, txtValue as bn, readHandoffCancel as bo, GROUP_PIN_FRAME as br, TURN_LAST_SEQUENCE as bs, normalizeDid as bt, GROUP_READ_NOTE_COMMUNITY as c, claimedTime as ca, PeerProofs as ci, DOMAIN_FILE_MAX_BYTES as cn, handoffDigest as co, readBeaconHead as cr, deviceEchoNonce as cs, DID_JWS_MAX_LENGTH as ct, encodeCommunityLink as d, shownTime as da, TRANSPORTS as di, domainTxtRecord as dn, handoffManifestFrames as do, ChatFiles as dr, devicePingFrame as ds, checkDidSignature as dt, ITEM_STATES as ea, toBase64Url as ec, boundVerifiedIdentity as ei, isPubkyProofFolder as en, handoffAttemptAllowed as eo, lobbyKeys as er, decodeInviteCode as es, isAtprotoDid as et, KNOCK_TTL_MS as f, GROUP_MEMBER_CAP as fa, automaticTransport as fi, domainWellKnownFile as fn, handoffOfferFrame as fo, FILE_LIMITS as fr, newDeviceSetSecret as fs, didGhostlyServiceEntry as ft, knockIdentity as g, verifyCommitSignature as ga, DHT_MESSAGE_TTL as gi, normalizeDomain as gn, handoffStreamKey as go, TYPING_REFRESH_MS as gr, TURN_RAISE_READ_TIMEOUT_MS as gs, didWebFile as gt, entryParams as h, rosterHas as ha, DHT_FILE_TOO_LARGE as hi, nip05RootKey as hn, handoffRetryAfter as ho, TYPING_KINDS as hr, TURN_PUT_WINDOW_MS as hs, didWebDocumentUrl as ht, openGroupTyping as i, checkStatusCard as ia, newIdentityBinding as ii, pubkyProofFile as in, handoffCancelFrame as io, newerHead as ir, DEVICES_CAPABILITY as is, AtprotoProofError as it, carryMentions as j, answersOffer as ja, parseVideoMeta as ji, isFederationId as jn, setAckFrame as jo, parseWakeFrame as jr, currentRelays as js, resolveDidDht as jt, GROUP_EDIT_FRAME as k, CALL_SIGNAL_MAX_AGE_MS as ka, parseVoiceMeta as ki, fedimintRequestPayload as kn, SET_UPDATE as ko, deviceWakeRequest as kr, DEFAULT_RELAYS as ks, encodeDidDhtDeactivated as kt, communityHasFrame as l, heardTime as la, emptyProofLedger as li, decodeDnsResponse as ln, handoffEphemeral as lo, readLobby as lr, deviceKeyZ32 as ls, DidError as lt, encodeGroupEntryLink as m, MEMBER_KEY as ma, irohRelayUrl as mi, isPublicAddress as mn, handoffReleaseFrame as mo, transferStalled as mr, webCryptoSigner as ms, didSignedMessages as mt, GroupTypingBoard as n, STATUS_CARD_LIMITS as na, utf8Decode as nc, identityRevocationValue as ni, normalizePubkyKey as nn, handoffAttemptSucceeded as no, mergeBeacon as nr, inviteLink as ns, parseAtprotoDidDocument as nt, COMMUNITY_LIMITS as o, statusCardText as oa, revokesIdentity as oi, homeserverWebEndpoint as on, handoffContextProof as oo, rankHubs as or, HANDOFF_CAPABILITY as os, DID_DOCUMENT_MAX_BYTES as ot, decodeGroupEntryLink as p, MAX_GROUP_CHAIN as pa, irohDescriptor as pi, encodeDnsQuery as pn, handoffPakeFrame as po, transferEnded as pr, seedSigner as ps, didJwsAlg as pt, ATPROTO_FULL_SCOPE as q, HANDOFF_OFFER as qa, readReaction as qi, meshHubs as qn, readEnrollHello as qo, capsDescriptors as qr, publicKeyFromZ32 as qs, SPARK_NETWORKS as qt, groupTypingEpoch as r, buttonLabelClash as ra, utf8Encode as rc, identityStatement as ri, pubkyProofCapability as rn, handoffBusyFrame as ro, mergeLobby as rr, inviteOwnership as rs, shortAtprotoDid as rt, CommunitySession as s, arrivalKey as sa, lastSharedWithMe as si, pubkyHomeserverOf as sn, handoffDataFrame as so, readBeacon as sr, deviceEchoFrame as ss, DID_FILE_MAX_BYTES as st, GROUP_TYPING_FRAME as t, RUN_RESULTS as ta, toZ32 as tc, emptyIdentityLedger as ti, newPubkyProofFolder as tn, handoffAttemptFailed as to, lobbyRecords as tr, encodeInviteCode as ts, normalizeAtprotoHandle as tt, decodeCommunityLink as u, receivedTimestamp as ua, validExternalKey as ui, dnsProofName as un, handoffHelloFrame as uo, shouldBeHub as ur, deviceLinkPairing as us, checkDidJws as ut, mergeKnocks as v, DirectPathWatch as va, DHT_FILE_CAPABILITY as vi, recordsFromWellKnown as vn, newHandoffId as vo, sanitizeTypingStatus as vr, classifyTurnRead as vs, didWebFileUrl as vt, parseGroupWakeFrame as w, parseLocalTarget as wa, sanitizeMime as wi, engineError as wn, readHandoffPake as wo, pinIsNewer as wr, readTurnPacket as ws, signingKeys as wt, GroupWakeLimiter as x, presenceSeenAt as xa, readImageMeta as xi, wellKnownUrl as xn, readHandoffDone as xo, PIN_LIMITS as xr, TURN_MAX as xs, parseDid as xt, readKnocks as y, EXPECT_PEER_MS as ya, dhtFileId as yi, recordsName as yn, readHandoffAck as yo, typingActivity as yr, turnPutSummary as ys, didWebHost as yt, parseSshSignature as z, HTTP_SERVICE_PROTO as za, COMMUNITY_REACTION_FRAME as zi, GROUP_SIGNAL_FRAME as zn, enrollCancelFrame as zo, HOLD_DATED_BACK_MS as zr, RELAY_PAYLOAD_MAX_BYTES as zs, TEST_USDT_FAUCET_AMOUNT as zt };
26575
26575
 
26576
- //# sourceMappingURL=src-CJdPTl7Q.js.map
26576
+ //# sourceMappingURL=src-C_E99PGx.js.map