@indigoai-us/hq-cli 5.119.7 → 5.119.8

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/CHANGELOG.md CHANGED
@@ -2,6 +2,15 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [5.119.8] — 2026-09-17
6
+
7
+ ### Fixed
8
+
9
+ - Channel posts that mention people by full name no longer show the parsing
10
+ quotes in the room. `@"Jacob Posel"` is still how a multi-word name is
11
+ typed, but the message is posted as `@Jacob Posel`, the way a person would
12
+ have written it. The structured mention itself is unchanged.
13
+
5
14
  ## [5.119.7] — 2026-09-17
6
15
 
7
16
  ### Fixed
@@ -97,6 +97,13 @@ export declare function mentionParticipantType(uid: string): "agent" | "human";
97
97
  * Trailing punctuation is trimmed ("@Izzy," → "Izzy"), so a name is never
98
98
  * polluted by the sentence around it.
99
99
  */
100
+ /**
101
+ * Once a quoted token has resolved to a real mention, the quotes have done
102
+ * their job (they only exist so a multi-word name parses as one token). Post
103
+ * the body with `@"Jacob Posel"` rewritten to `@Jacob Posel`, which is how a
104
+ * person would have typed it and how the room should read it. Pure.
105
+ */
106
+ export declare function stripMentionQuotes(body: string): string;
100
107
  export declare function parseMentionTokens(body: string): string[];
101
108
  /**
102
109
  * The names one roster row answers to, lowercased: its display name, the slug of
@@ -138,6 +138,15 @@ export function mentionParticipantType(uid) {
138
138
  * Trailing punctuation is trimmed ("@Izzy," → "Izzy"), so a name is never
139
139
  * polluted by the sentence around it.
140
140
  */
141
+ /**
142
+ * Once a quoted token has resolved to a real mention, the quotes have done
143
+ * their job (they only exist so a multi-word name parses as one token). Post
144
+ * the body with `@"Jacob Posel"` rewritten to `@Jacob Posel`, which is how a
145
+ * person would have typed it and how the room should read it. Pure.
146
+ */
147
+ export function stripMentionQuotes(body) {
148
+ return body.replace(/(^|[\s([{<])@"([^"\n]{1,80})"/g, "$1@$2");
149
+ }
141
150
  export function parseMentionTokens(body) {
142
151
  const pattern = /(^|[\s([{<])@(?:"([^"\n]{1,80})"|([A-Za-z0-9][A-Za-z0-9._-]*))/g;
143
152
  const names = [];
@@ -515,7 +524,7 @@ async function fetchChannelMembers(token, channelId) {
515
524
  */
516
525
  async function runChannelSend(channelName, message, opts) {
517
526
  try {
518
- const body = (message ?? "").trim();
527
+ let body = (message ?? "").trim();
519
528
  if (!body) {
520
529
  console.error(chalk.red(`A message body is required: hq dm ${channelName} "<message>" (or hq dm --channel ${channelName} "<message>").`));
521
530
  process.exit(1);
@@ -560,6 +569,9 @@ async function runChannelSend(channelName, message, opts) {
560
569
  mentions = resolved.mentions;
561
570
  }
562
571
  }
572
+ // Send the human-readable form: the quotes only existed for parsing.
573
+ if (mentions.length > 0)
574
+ body = stripMentionQuotes(body);
563
575
  const sendRes = await vaultApiFetch({
564
576
  token,
565
577
  path: `/v1/notify/channels/${encodeURIComponent(channel.channelId)}/messages`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@indigoai-us/hq-cli",
3
- "version": "5.119.7",
3
+ "version": "5.119.8",
4
4
  "description": "HQ by Indigo management CLI \u2014 modules and cloud sync",
5
5
  "main": "dist/index.js",
6
6
  "bin": {