gws-axi 0.24.0 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -16,7 +16,7 @@ Read coverage is complete across all seven services; write coverage is rolling o
16
16
  | **Drive** | ✅ ls · get · search · permissions · download · revisions · activity | 🟡 upload · mkdir  ·  🚧 create · copy · move · rename · delete |
17
17
  | **Slides** | ✅ get · page · summarize · comments | 🚧 create · update |
18
18
  | **Sheets** | ✅ read · comments | 🚧 update · append · clear · create · add-tab |
19
- | **Chat** | ✅ spaces · messages · search · members | ✅ send · mark-read · mark-unread |
19
+ | **Chat** | ✅ spaces · messages · search · members · download | ✅ send · react · unreact · mark-read · mark-unread |
20
20
 
21
21
  <sub>✅ shipped · 🟡 partial · 🚧 planned · ✋ out of scope by design</sub>
22
22
 
@@ -280,17 +280,19 @@ gws-axi chat messages <space> --fields attachments,reactions
280
280
  gws-axi chat search budget --since -7d # across every conversation
281
281
  gws-axi chat search --mentions-me --unread
282
282
  gws-axi chat members <space>
283
+ gws-axi chat download <space> <messageId> # save a message's attachments
283
284
 
284
285
  gws-axi chat send <space> --text "Feed is back up" --account you@example.com # SENDS — no draft step
285
286
  gws-axi chat send <space> --thread <id> --body-file reply.md --account you@example.com
286
287
  gws-axi chat send <space> - --request-id deploy-4821 --account you@example.com # stdin; safe to retry
288
+ gws-axi chat react <space> <messageId> --emoji 👍 --account you@example.com # unreact takes it back
287
289
  gws-axi chat mark-read <space> --account you@example.com
288
290
  gws-axi chat mark-unread <space> --from <messageId> --account you@example.com
289
291
  ```
290
292
 
291
293
  Conversations are addressed by id (from `chat spaces`) or by `--with <email>` — never by name, since names aren't unique and direct messages have none. Direct messages and unnamed group chats are listed under a name derived from their members.
292
294
 
293
- <sub>Message text is Markdown, with mentions as `@Name`. Reading never changes what is marked read. Search has gaps — it omits app messages, muted conversations, and has been seen to miss recent direct messages — and says so on every response. Attachments are listed but can't be downloaded. The new Chat scopes mean existing accounts must `gws-axi auth login` once.</sub>
295
+ <sub>Message text is Markdown, with mentions as `@Name`. Reading never changes what is marked read. Search has gaps — it omits app messages, muted conversations, and has been seen to miss recent direct messages — and says so on every response. Uploaded attachments save with `chat download`; Drive-file ones point at `docs download`. The new Chat scopes mean existing accounts must `gws-axi auth login` once.</sub>
294
296
 
295
297
  <sub>`chat send` posts immediately to **one** conversation and can't be undone from gws-axi. The body is Markdown. Pass `--request-id` to make a send safe to retry — a second send with the same id posts nothing. Sending needs a Chat app configured on your Google Cloud project (Chat API → Configuration); its name appears beside each message. Marking read is conversation-level only: Google's API can't mark a thread read.</sub>
296
298
 
@@ -27,3 +27,13 @@ export declare function resolveSpaceTarget(input: {
27
27
  positional?: string;
28
28
  withEmail?: string;
29
29
  }, usage: string): SpaceTarget;
30
+ /**
31
+ * Resolve a command that names one message: `<space> <message>`, a full
32
+ * `spaces/…/messages/…` resource name alone, or `--with <email>` plus a
33
+ * message. The message id may be a client-assigned `client-…` id; callers
34
+ * that need the system id fetch the message.
35
+ */
36
+ export declare function parseMessageTarget(positionals: string[], withEmail: string | undefined, usage: string): {
37
+ target: SpaceTarget;
38
+ message: string;
39
+ };
@@ -63,4 +63,35 @@ export function resolveSpaceTarget(input, usage) {
63
63
  }
64
64
  return { kind: "space", id: parseSpaceId(positional) };
65
65
  }
66
+ const MESSAGE_NAME = /^spaces\/([A-Za-z0-9_-]+)\/messages\/([A-Za-z0-9_.-]+)$/;
67
+ /**
68
+ * Resolve a command that names one message: `<space> <message>`, a full
69
+ * `spaces/…/messages/…` resource name alone, or `--with <email>` plus a
70
+ * message. The message id may be a client-assigned `client-…` id; callers
71
+ * that need the system id fetch the message.
72
+ */
73
+ export function parseMessageTarget(positionals, withEmail, usage) {
74
+ const full = positionals.length === 1 && withEmail === undefined ? MESSAGE_NAME.exec(positionals[0]) : null;
75
+ if (full)
76
+ return { target: { kind: "space", id: full[1] }, message: full[2] };
77
+ const expected = withEmail === undefined ? 2 : 1;
78
+ if (positionals.length !== expected) {
79
+ throw new AxiError(positionals.length < expected
80
+ ? "Missing conversation or message"
81
+ : `Too many arguments: ${positionals.join(" ")}`, "VALIDATION_ERROR", [usage, "Get message ids from `gws-axi chat messages <space>`"]);
82
+ }
83
+ const target = resolveSpaceTarget({ positional: withEmail === undefined ? positionals[0] : undefined, withEmail }, usage);
84
+ const raw = positionals[positionals.length - 1];
85
+ const nested = MESSAGE_NAME.exec(raw);
86
+ if (nested && target.kind === "space" && nested[1] !== target.id) {
87
+ throw new AxiError(`Message ${raw} is not in conversation ${target.id}`, "VALIDATION_ERROR", [
88
+ usage,
89
+ ]);
90
+ }
91
+ const message = nested ? nested[2] : (raw.split("/").pop() ?? "");
92
+ if (!/^[A-Za-z0-9_.-]+$/.test(message)) {
93
+ throw new AxiError(`Not a message id: ${raw}`, "VALIDATION_ERROR", [usage]);
94
+ }
95
+ return { target, message };
96
+ }
66
97
  //# sourceMappingURL=address.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"address.js","sourceRoot":"","sources":["../../../../src/commands/chat/address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAgBtC,MAAM,EAAE,GAAG,kBAAkB,CAAC;AAC9B,8EAA8E;AAC9E,sFAAsF;AACtF,MAAM,MAAM,GAAG,uCAAuC,CAAC;AACvD,MAAM,KAAK,GAAG,4BAA4B,CAAC;AAE3C,MAAM,MAAM,GAAG,qEAAqE,CAAC;AAErF,qEAAqE;AACrE,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,QAAQ,CAAC,yBAAyB,EAAE,kBAAkB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,IAAI,QAAQ,CAAC,oCAAoC,KAAK,EAAE,EAAE,kBAAkB,EAAE;YAClF,2EAA2E;YAC3E,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACjF,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/B,0EAA0E;IAC1E,iCAAiC;IACjC,MAAM,IAAI,QAAQ,CAAC,0BAA0B,KAAK,EAAE,EAAE,kBAAkB,EAAE;QACxE,oGAAoG;QACpG,MAAM;QACN,wEAAwE;KACzE,CAAC,CAAC;AACL,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,OAAO,UAAU,EAAE,EAAE,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAkD,EAClD,KAAa;IAEb,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IACxC,IAAI,UAAU,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACxD,MAAM,IAAI,QAAQ,CAAC,oDAAoD,EAAE,kBAAkB,EAAE;YAC3F,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,QAAQ,CAAC,yCAAyC,SAAS,EAAE,EAAE,kBAAkB,EAAE;gBAC3F,KAAK;aACN,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC/B,CAAC;IACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,QAAQ,CAAC,oDAAoD,EAAE,kBAAkB,EAAE;YAC3F,KAAK;YACL,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;AACzD,CAAC"}
1
+ {"version":3,"file":"address.js","sourceRoot":"","sources":["../../../../src/commands/chat/address.ts"],"names":[],"mappings":"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"}
@@ -158,7 +158,10 @@ describe("message rows", () => {
158
158
  createTime: "2026-09-25T17:24:15.000Z",
159
159
  formattedText: "hello",
160
160
  attachment: [{ contentName: "a.pdf" }, { contentName: "b.pdf" }],
161
- emojiReactionSummaries: [{ reactionCount: 2 }, { reactionCount: 1 }],
161
+ emojiReactionSummaries: [
162
+ { emoji: { unicode: "👍" }, reactionCount: 2 },
163
+ { emoji: { unicode: "🎉" }, reactionCount: 1 },
164
+ ],
162
165
  }, ledger, { full: false });
163
166
  expect(row).toMatchObject({
164
167
  space: "AAAA",
@@ -167,7 +170,7 @@ describe("message rows", () => {
167
170
  sender: "Bob Tran",
168
171
  text: "hello",
169
172
  attachments: 2,
170
- reactions: 3,
173
+ reactions: "👍 2 · 🎉 1",
171
174
  time: toLocalOffsetISO("2026-09-25T17:24:15.000Z"),
172
175
  });
173
176
  });
@@ -1 +1 @@
1
- {"version":3,"file":"commands.test.js","sourceRoot":"","sources":["../../../../src/commands/chat/commands.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.test.js","sourceRoot":"","sources":["../../../../src/commands/chat/commands.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { chat_v1 } from "googleapis";
2
+ export declare const DOWNLOAD_HELP = "usage: gws-axi chat download <space> <message> [flags]\n gws-axi chat download spaces/<space>/messages/<id> [flags]\nargs[2]:\n <space> A conversation id (AAAA\u2026 or spaces/AAAA\u2026) or a Chat URL\n <message> A message id as `chat messages` prints it, or a\n client-assigned id (client-\u2026)\nflags[4]:\n --attachment <n|name> Only this attachment: its 1-based position in the\n message, or its exact file name. Default: all.\n --out <path> A directory to save into (default: the current one),\n or \u2014 for a single attachment \u2014 a file path\n --with <email> Use the 1:1 direct message with this person as <space>\n --account <email> Account override when 2+ are configured\nexamples:\n gws-axi chat download AAAAxyz Hk2.Hk2\n gws-axi chat download AAAAxyz Hk2.Hk2 --attachment 2 --out ./report.pdf\n gws-axi chat download AAAAxyz Hk2.Hk2 --out ./chat-files/\noutput:\n A `saved[N]{name,type,bytes,path}` table, and a `drive_files[N]` block for\n attachments that are Drive files.\nnotes:\n Find messages with attachments via `gws-axi chat messages <space> --fields attachments`.\n Drive-file attachments aren't fetched here: use `gws-axi docs download <id>`,\n which handles every Drive type and its export formats.\n An existing file at the destination is overwritten.\n";
3
+ type Attachment = chat_v1.Schema$Attachment;
4
+ interface Flags {
5
+ positionals: string[];
6
+ withEmail: string | undefined;
7
+ attachment: string | undefined;
8
+ out: string | undefined;
9
+ }
10
+ export declare function parseDownloadFlags(args: string[]): Flags;
11
+ export declare const isDriveFile: (a: Attachment) => boolean;
12
+ /** Pick attachments by 1-based position or exact file name; all when unspecified. */
13
+ export declare function selectAttachments(all: Attachment[], which: string | undefined): Attachment[];
14
+ /** Safe, distinct file names for one message's attachments: `a.pdf`, `a (2).pdf`. */
15
+ export declare function distinctNames(names: string[]): string[];
16
+ export declare function chatDownloadCommand(account: string, args: string[]): Promise<string>;
17
+ export {};
@@ -0,0 +1,164 @@
1
+ import { mkdir, writeFile } from "node:fs/promises";
2
+ import { basename, dirname, extname } from "node:path";
3
+ import { AxiError } from "axi-sdk-js";
4
+ import { chatClient } from "../../google/client.js";
5
+ import { field, joinBlocks, renderHelp, renderList, renderObject } from "../../output/index.js";
6
+ import { resolveOutputPath, sanitizeFileName } from "../../util/paths.js";
7
+ import { parseMessageTarget, spaceResourceName } from "./address.js";
8
+ import { parseArgs } from "./flags.js";
9
+ import { fetchMessage } from "./react.js";
10
+ import { bareId, chatError, resolveSpace, retryingChat } from "./shared.js";
11
+ export const DOWNLOAD_HELP = `usage: gws-axi chat download <space> <message> [flags]
12
+ gws-axi chat download spaces/<space>/messages/<id> [flags]
13
+ args[2]:
14
+ <space> A conversation id (AAAA… or spaces/AAAA…) or a Chat URL
15
+ <message> A message id as \`chat messages\` prints it, or a
16
+ client-assigned id (client-…)
17
+ flags[4]:
18
+ --attachment <n|name> Only this attachment: its 1-based position in the
19
+ message, or its exact file name. Default: all.
20
+ --out <path> A directory to save into (default: the current one),
21
+ or — for a single attachment — a file path
22
+ --with <email> Use the 1:1 direct message with this person as <space>
23
+ --account <email> Account override when 2+ are configured
24
+ examples:
25
+ gws-axi chat download AAAAxyz Hk2.Hk2
26
+ gws-axi chat download AAAAxyz Hk2.Hk2 --attachment 2 --out ./report.pdf
27
+ gws-axi chat download AAAAxyz Hk2.Hk2 --out ./chat-files/
28
+ output:
29
+ A \`saved[N]{name,type,bytes,path}\` table, and a \`drive_files[N]\` block for
30
+ attachments that are Drive files.
31
+ notes:
32
+ Find messages with attachments via \`gws-axi chat messages <space> --fields attachments\`.
33
+ Drive-file attachments aren't fetched here: use \`gws-axi docs download <id>\`,
34
+ which handles every Drive type and its export formats.
35
+ An existing file at the destination is overwritten.
36
+ `;
37
+ const COMMAND = "chat download";
38
+ const USAGE = "Usage: gws-axi chat download <space> <message> [--attachment <n|name>] [--out <path>]";
39
+ export function parseDownloadFlags(args) {
40
+ const parsed = parseArgs(args, { value: ["--attachment", "--out", "--with"] }, COMMAND);
41
+ // Validated here so a bad address fails before anything is fetched.
42
+ parseMessageTarget(parsed.positionals, parsed.values["--with"], USAGE);
43
+ return {
44
+ positionals: parsed.positionals,
45
+ withEmail: parsed.values["--with"],
46
+ attachment: parsed.values["--attachment"],
47
+ out: parsed.values["--out"],
48
+ };
49
+ }
50
+ export const isDriveFile = (a) => Boolean(a.driveDataRef?.driveFileId) || a.source === "DRIVE_FILE";
51
+ /** Pick attachments by 1-based position or exact file name; all when unspecified. */
52
+ export function selectAttachments(all, which) {
53
+ if (which === undefined)
54
+ return all;
55
+ const index = /^\d+$/.test(which) ? Number(which) : undefined;
56
+ const picked = index !== undefined ? all[index - 1] : all.find((a) => a.contentName === which);
57
+ if (!picked) {
58
+ throw new AxiError(`No attachment ${which} on this message`, "ATTACHMENT_NOT_FOUND", [
59
+ `It has ${all.length}: ${all.map((a, i) => `${i + 1}. ${a.contentName ?? "(unnamed)"}`).join(", ")}`,
60
+ ]);
61
+ }
62
+ return [picked];
63
+ }
64
+ /** Safe, distinct file names for one message's attachments: `a.pdf`, `a (2).pdf`. */
65
+ export function distinctNames(names) {
66
+ const seen = new Map();
67
+ return names.map((raw) => {
68
+ const name = sanitizeFileName(raw || "attachment");
69
+ const count = (seen.get(name) ?? 0) + 1;
70
+ seen.set(name, count);
71
+ if (count === 1)
72
+ return name;
73
+ const ext = extname(name);
74
+ return `${name.slice(0, name.length - ext.length)} (${count})${ext}`;
75
+ });
76
+ }
77
+ function nextStep(type, path) {
78
+ if (type === "application/pdf")
79
+ return `PDF saved — \`pdftotext "${basename(path)}" -\` to extract text`;
80
+ if (type.startsWith("image/"))
81
+ return `Image saved — \`open "${path}"\` to view`;
82
+ if (type.startsWith("text/"))
83
+ return `Text saved — \`cat "${path}"\``;
84
+ return `Inspect with \`file "${path}"\``;
85
+ }
86
+ export async function chatDownloadCommand(account, args) {
87
+ const flags = parseDownloadFlags(args);
88
+ const { target, message: messageRef } = parseMessageTarget(flags.positionals, flags.withEmail, USAGE);
89
+ const api = await chatClient(account);
90
+ const space = await resolveSpace(api, account, target);
91
+ const spaceName = space.name ?? spaceResourceName(target.kind === "space" ? target.id : "");
92
+ const message = await fetchMessage(api, account, spaceName, messageRef);
93
+ const spaceId = bareId(spaceName);
94
+ const messageId = bareId(message.name);
95
+ const all = message.attachment ?? [];
96
+ if (all.length === 0) {
97
+ throw new AxiError(`Message ${messageId} has no attachments`, "NO_ATTACHMENTS", [
98
+ `Run \`gws-axi chat messages ${spaceId} --fields attachments\` to find messages that have some`,
99
+ ]);
100
+ }
101
+ const selected = selectAttachments(all, flags.attachment);
102
+ const uploads = selected.filter((a) => !isDriveFile(a));
103
+ const driveFiles = selected.filter(isDriveFile);
104
+ const outIsDirectory = flags.out === undefined || flags.out.endsWith("/") || flags.out.endsWith("\\");
105
+ if (uploads.length > 1 && !outIsDirectory) {
106
+ // resolveOutputPath would also accept an existing directory; only a path
107
+ // that can't be one is refused here, before anything is fetched.
108
+ const { stat } = await import("node:fs/promises");
109
+ const isDir = await stat(flags.out).then((s) => s.isDirectory(), () => false);
110
+ if (!isDir) {
111
+ throw new AxiError(`--out ${flags.out} names one file, but ${uploads.length} attachments are selected`, "VALIDATION_ERROR", ["Pass a directory (ending in /), or pick one with --attachment <n|name>"]);
112
+ }
113
+ }
114
+ const names = distinctNames(uploads.map((a) => a.contentName ?? ""));
115
+ const saved = [];
116
+ for (const [i, attachment] of uploads.entries()) {
117
+ const resourceName = attachment.attachmentDataRef?.resourceName;
118
+ if (!resourceName)
119
+ continue;
120
+ let bytes;
121
+ try {
122
+ const res = await retryingChat(() => api.media.download({ resourceName, alt: "media" }, { responseType: "arraybuffer" }));
123
+ bytes = Buffer.from(res.data);
124
+ }
125
+ catch (err) {
126
+ throw chatError(err, { account, operation: "chat.media.download", space: spaceId });
127
+ }
128
+ const path = await resolveOutputPath(flags.out, names[i]);
129
+ await mkdir(dirname(path), { recursive: true });
130
+ await writeFile(path, bytes);
131
+ saved.push({
132
+ name: attachment.contentName ?? names[i],
133
+ type: attachment.contentType ?? "",
134
+ bytes: bytes.length,
135
+ path,
136
+ });
137
+ }
138
+ const blocks = [
139
+ renderObject({ account }),
140
+ renderObject({ message: { space: spaceId, id: messageId } }),
141
+ ];
142
+ if (saved.length > 0) {
143
+ blocks.push(renderList("saved", saved, [field("name"), field("type"), field("bytes"), field("path")]));
144
+ }
145
+ else {
146
+ blocks.push(renderObject({ saved: "nothing saved — the selected attachments are all Drive files" }));
147
+ }
148
+ const help = saved.map((s) => nextStep(String(s.type), String(s.path))).slice(0, 3);
149
+ if (driveFiles.length > 0) {
150
+ blocks.push(renderList("drive_files", driveFiles.map((a) => ({
151
+ name: a.contentName ?? "",
152
+ type: a.contentType ?? "",
153
+ drive_file: a.driveDataRef?.driveFileId ?? "",
154
+ })), [field("name"), field("type"), field("drive_file")]));
155
+ for (const a of driveFiles.slice(0, 3)) {
156
+ const id = a.driveDataRef?.driveFileId;
157
+ if (id)
158
+ help.push(`Drive file — \`gws-axi docs download ${id}\` to save it`);
159
+ }
160
+ }
161
+ blocks.push(renderHelp(help));
162
+ return joinBlocks(...blocks);
163
+ }
164
+ //# sourceMappingURL=download.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../../../../src/commands/chat/download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE5E,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyB5B,CAAC;AAEF,MAAM,OAAO,GAAG,eAAe,CAAC;AAChC,MAAM,KAAK,GACT,uFAAuF,CAAC;AAW1F,MAAM,UAAU,kBAAkB,CAAC,IAAc;IAC/C,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACxF,oEAAoE;IACpE,kBAAkB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;IACvE,OAAO;QACL,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QAClC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;QACzC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAa,EAAW,EAAE,CACpD,OAAO,CAAC,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC;AAEpE,qFAAqF;AACrF,MAAM,UAAU,iBAAiB,CAAC,GAAiB,EAAE,KAAyB;IAC5E,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC;IAC/F,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,QAAQ,CAAC,iBAAiB,KAAK,kBAAkB,EAAE,sBAAsB,EAAE;YACnF,UAAU,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,WAAW,IAAI,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACrG,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,aAAa,CAAC,KAAe;IAC3C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACvB,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACtB,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,GAAG,EAAE,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,IAAY;IAC1C,IAAI,IAAI,KAAK,iBAAiB;QAC5B,OAAO,4BAA4B,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC;IAC3E,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,yBAAyB,IAAI,aAAa,CAAC;IACjF,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,uBAAuB,IAAI,KAAK,CAAC;IACtE,OAAO,wBAAwB,IAAI,KAAK,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAe,EAAE,IAAc;IACvE,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,kBAAkB,CACxD,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,SAAS,EACf,KAAK,CACN,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5F,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;IACrC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,QAAQ,CAAC,WAAW,SAAS,qBAAqB,EAAE,gBAAgB,EAAE;YAC9E,+BAA+B,OAAO,yDAAyD;SAChG,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAEhD,MAAM,cAAc,GAClB,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,yEAAyE;QACzE,iEAAiE;QACjE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAa,CAAC,CAAC,IAAI,CAChD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,EACtB,GAAG,EAAE,CAAC,KAAK,CACZ,CAAC;QACF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,QAAQ,CAChB,SAAS,KAAK,CAAC,GAAG,wBAAwB,OAAO,CAAC,MAAM,2BAA2B,EACnF,kBAAkB,EAClB,CAAC,wEAAwE,CAAC,CAC3E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC;IACrE,MAAM,KAAK,GAAmC,EAAE,CAAC;IACjD,KAAK,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAChD,MAAM,YAAY,GAAG,UAAU,CAAC,iBAAiB,EAAE,YAAY,CAAC;QAChE,IAAI,CAAC,YAAY;YAAE,SAAS;QAC5B,IAAI,KAAa,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,CAClC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC,CACpF,CAAC;YACF,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAA8B,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,UAAU,CAAC,WAAW,IAAI,KAAK,CAAC,CAAC,CAAC;YACxC,IAAI,EAAE,UAAU,CAAC,WAAW,IAAI,EAAE;YAClC,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG;QACb,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC;QACzB,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC;KAC7D,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CACT,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAC1F,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CACT,YAAY,CAAC,EAAE,KAAK,EAAE,8DAA8D,EAAE,CAAC,CACxF,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAa,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9F,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CACT,UAAU,CACR,aAAa,EACb,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrB,IAAI,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;YACzB,IAAI,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;YACzB,UAAU,EAAE,CAAC,CAAC,YAAY,EAAE,WAAW,IAAI,EAAE;SAC9C,CAAC,CAAC,EACH,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CACpD,CACF,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACvC,MAAM,EAAE,GAAG,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC;YACvC,IAAI,EAAE;gBAAE,IAAI,CAAC,IAAI,CAAC,wCAAwC,EAAE,eAAe,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9B,OAAO,UAAU,CAAC,GAAG,MAAM,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,67 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { AxiError } from "axi-sdk-js";
3
+ import { distinctNames, isDriveFile, parseDownloadFlags, selectAttachments } from "./download.js";
4
+ function errorFrom(fn) {
5
+ try {
6
+ fn();
7
+ }
8
+ catch (err) {
9
+ expect(err).toBeInstanceOf(AxiError);
10
+ return err;
11
+ }
12
+ throw new Error("expected a throw");
13
+ }
14
+ const pdf = {
15
+ contentName: "report.pdf",
16
+ contentType: "application/pdf",
17
+ source: "UPLOADED_CONTENT",
18
+ };
19
+ const gif = { contentName: "cat.gif", contentType: "image/gif", source: "UPLOADED_CONTENT" };
20
+ const doc = { contentName: "Plan", source: "DRIVE_FILE", driveDataRef: { driveFileId: "1AbC" } };
21
+ describe("selectAttachments", () => {
22
+ it("takes all by default", () => {
23
+ expect(selectAttachments([pdf, gif], undefined)).toEqual([pdf, gif]);
24
+ });
25
+ it("picks by 1-based position and by exact name", () => {
26
+ expect(selectAttachments([pdf, gif], "2")).toEqual([gif]);
27
+ expect(selectAttachments([pdf, gif], "report.pdf")).toEqual([pdf]);
28
+ });
29
+ it("refuses one that isn't there, listing what is", () => {
30
+ for (const which of ["3", "0", "nope.txt"]) {
31
+ const err = errorFrom(() => selectAttachments([pdf, gif], which));
32
+ expect(err.code).toBe("ATTACHMENT_NOT_FOUND");
33
+ expect(err.suggestions[0]).toBe("It has 2: 1. report.pdf, 2. cat.gif");
34
+ }
35
+ });
36
+ });
37
+ describe("distinctNames", () => {
38
+ it("keeps distinct names and numbers repeats before the extension", () => {
39
+ expect(distinctNames(["a.pdf", "b.pdf", "a.pdf", "a.pdf"])).toEqual([
40
+ "a.pdf",
41
+ "b.pdf",
42
+ "a (2).pdf",
43
+ "a (3).pdf",
44
+ ]);
45
+ });
46
+ it("makes names safe for the filesystem and never blank", () => {
47
+ expect(distinctNames(["../../etc/passwd", ""])).toEqual([".._.._etc_passwd", "attachment"]);
48
+ });
49
+ });
50
+ describe("isDriveFile", () => {
51
+ it("tells Drive files from uploads", () => {
52
+ expect(isDriveFile(doc)).toBe(true);
53
+ expect(isDriveFile(pdf)).toBe(false);
54
+ });
55
+ });
56
+ describe("parseDownloadFlags", () => {
57
+ it("accepts the three ways to name a message", () => {
58
+ expect(() => parseDownloadFlags(["AAAA", "Hk2.Hk2"])).not.toThrow();
59
+ expect(() => parseDownloadFlags(["spaces/AAAA/messages/Hk2.Hk2"])).not.toThrow();
60
+ expect(() => parseDownloadFlags(["Hk2.Hk2", "--with", "bob@example.com"])).not.toThrow();
61
+ });
62
+ it("refuses a missing message and an unknown flag before any call", () => {
63
+ expect(errorFrom(() => parseDownloadFlags(["AAAA"])).code).toBe("VALIDATION_ERROR");
64
+ expect(errorFrom(() => parseDownloadFlags(["AAAA", "m", "--output", "x"])).message).toContain("--output");
65
+ });
66
+ });
67
+ //# sourceMappingURL=download.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download.test.js","sourceRoot":"","sources":["../../../../src/commands/chat/download.test.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,8 @@ export interface MessageRow {
17
17
  thread: string;
18
18
  text: string;
19
19
  attachments: number;
20
- reactions: number;
20
+ /** Each emoji and its count, e.g. `👍 2 · 🎉 1`; empty when there are none. */
21
+ reactions: string;
21
22
  edited: string;
22
23
  quoted: string;
23
24
  }
@@ -29,6 +30,11 @@ export interface AttachmentRow {
29
30
  /** The Drive file id, for `drive get`. Empty for uploaded content. */
30
31
  drive_file: string;
31
32
  }
33
+ /**
34
+ * A message's reactions as `👍 2 · 🎉 1`. Custom emoji show by name, since they
35
+ * have no character.
36
+ */
37
+ export declare function reactionSummary(message: Message): string;
32
38
  /** Register everyone these messages involve, then name whoever Chat didn't. */
33
39
  export declare function identifyPeople(account: string, messages: Message[]): Promise<{
34
40
  ledger: IdentityLedger;
@@ -4,6 +4,19 @@ import { IdentityLedger } from "./identity.js";
4
4
  import { bareId, localTime } from "./shared.js";
5
5
  import { mentionedUsers, renderMessageText, TEXT_CAP, truncateKeepingLinks } from "./text.js";
6
6
  export const FIELD_CHOICES = ["thread", "attachments", "reactions", "edited", "quoted"];
7
+ /**
8
+ * A message's reactions as `👍 2 · 🎉 1`. Custom emoji show by name, since they
9
+ * have no character.
10
+ */
11
+ export function reactionSummary(message) {
12
+ return (message.emojiReactionSummaries ?? [])
13
+ .filter((r) => (r.reactionCount ?? 0) > 0)
14
+ .map((r) => {
15
+ const emoji = r.emoji?.unicode ?? `:${r.emoji?.customEmoji?.emojiName ?? "custom"}:`;
16
+ return `${emoji} ${r.reactionCount}`;
17
+ })
18
+ .join(" · ");
19
+ }
7
20
  /** Register everyone these messages involve, then name whoever Chat didn't. */
8
21
  export async function identifyPeople(account, messages) {
9
22
  const ledger = new IdentityLedger();
@@ -47,7 +60,6 @@ function quotedSummary(message, ledger) {
47
60
  }
48
61
  export function toRow(message, ledger, options) {
49
62
  const text = renderMessageText(message, (user) => ledger.label(user));
50
- const reactions = (message.emojiReactionSummaries ?? []).reduce((sum, r) => sum + (r.reactionCount ?? 0), 0);
51
63
  return {
52
64
  space: bareId(message.space?.name),
53
65
  id: bareId(message.name),
@@ -56,7 +68,7 @@ export function toRow(message, ledger, options) {
56
68
  thread: bareId(message.thread?.name),
57
69
  text: options.full ? text : truncateKeepingLinks(text, TEXT_CAP),
58
70
  attachments: message.attachment?.length ?? 0,
59
- reactions,
71
+ reactions: reactionSummary(message),
60
72
  edited: localTime(message.lastUpdateTime),
61
73
  quoted: quotedSummary(message, ledger),
62
74
  };
@@ -1 +1 @@
1
- {"version":3,"file":"message-rows.js","sourceRoot":"","sources":["../../../../src/commands/chat/message-rows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-rows.js","sourceRoot":"","sources":["../../../../src/commands/chat/message-rows.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { type SpaceTarget } from "./address.js";
2
2
  import { type OptionalField } from "./message-rows.js";
3
- export declare const MESSAGES_HELP = "usage: gws-axi chat messages <space> [flags]\n gws-axi chat messages --with <email> [flags]\nargs[1]:\n <space> A conversation id (AAAA\u2026 or spaces/AAAA\u2026) or a Chat URL.\n Get one from `gws-axi chat spaces`.\nflags[9]:\n --with <email> Read the 1:1 direct message with this person instead\n of naming a conversation\n --since <when> Only messages at/after this time. A date-only value\n opens at that day's local midnight.\n --until <when> Only messages before this time. A date-only value\n closes at the END of that day, so\n --since D --until D is all of day D. Both accept\n tokens: now, today, tomorrow, yesterday, +Nd/-Nd,\n +Nw/-Nw, +Nh/-Nh.\n --thread <id> Only this thread\n --limit <n> Max messages to return (default: 50, max: 1000)\n --page <token> Continue from a previous response's next_page \u2014 the\n next-OLDER messages. Keep the other flags the same.\n --fields <list> Extra columns, comma-separated: thread, attachments,\n reactions, edited, quoted\n --full Don't truncate message text (default cap: 500 chars)\n --account <email> Account override when 2+ are configured\nexamples:\n gws-axi chat messages AAAAxyz\n gws-axi chat messages --with bob@example.com --since today\n gws-axi chat messages AAAAxyz --since -7d --fields attachments,reactions\n gws-axi chat messages AAAAxyz --thread t8Q\u2026\noutput:\n A `space{id,type,name}` header, then `messages[N]{id,time,sender,text}`\n and a `senders[N]{id,name,email,type}` legend.\nnotes:\n The LATEST messages are selected, and shown oldest first so they read as\n a conversation. Text is Markdown; mentions read @Name.\n A `thread` column appears when messages in the result share a thread.\n Reading never changes what is marked read.\n Attachments can't be downloaded through gws-axi. Ones that are Drive\n files are listed with their file id under --fields attachments.\n";
3
+ export declare const MESSAGES_HELP = "usage: gws-axi chat messages <space> [flags]\n gws-axi chat messages --with <email> [flags]\nargs[1]:\n <space> A conversation id (AAAA\u2026 or spaces/AAAA\u2026) or a Chat URL.\n Get one from `gws-axi chat spaces`.\nflags[9]:\n --with <email> Read the 1:1 direct message with this person instead\n of naming a conversation\n --since <when> Only messages at/after this time. A date-only value\n opens at that day's local midnight.\n --until <when> Only messages before this time. A date-only value\n closes at the END of that day, so\n --since D --until D is all of day D. Both accept\n tokens: now, today, tomorrow, yesterday, +Nd/-Nd,\n +Nw/-Nw, +Nh/-Nh.\n --thread <id> Only this thread\n --limit <n> Max messages to return (default: 50, max: 1000)\n --page <token> Continue from a previous response's next_page \u2014 the\n next-OLDER messages. Keep the other flags the same.\n --fields <list> Extra columns, comma-separated: thread, attachments,\n reactions (each emoji + count), edited, quoted\n --full Don't truncate message text (default cap: 500 chars)\n --account <email> Account override when 2+ are configured\nexamples:\n gws-axi chat messages AAAAxyz\n gws-axi chat messages --with bob@example.com --since today\n gws-axi chat messages AAAAxyz --since -7d --fields attachments,reactions\n gws-axi chat messages AAAAxyz --thread t8Q\u2026\noutput:\n A `space{id,type,name}` header, then `messages[N]{id,time,sender,text}`\n and a `senders[N]{id,name,email,type}` legend.\nnotes:\n The LATEST messages are selected, and shown oldest first so they read as\n a conversation. Text is Markdown; mentions read @Name.\n A `thread` column appears when messages in the result share a thread.\n Reading never changes what is marked read.\n Download attachments with `gws-axi chat download <space> <messageId>`;\n Drive-file ones list their file id under --fields attachments.\n";
4
4
  interface Flags {
5
5
  target: SpaceTarget;
6
6
  since: string | undefined;
@@ -27,7 +27,7 @@ flags[9]:
27
27
  --page <token> Continue from a previous response's next_page — the
28
28
  next-OLDER messages. Keep the other flags the same.
29
29
  --fields <list> Extra columns, comma-separated: thread, attachments,
30
- reactions, edited, quoted
30
+ reactions (each emoji + count), edited, quoted
31
31
  --full Don't truncate message text (default cap: 500 chars)
32
32
  --account <email> Account override when 2+ are configured
33
33
  examples:
@@ -43,8 +43,8 @@ notes:
43
43
  a conversation. Text is Markdown; mentions read @Name.
44
44
  A \`thread\` column appears when messages in the result share a thread.
45
45
  Reading never changes what is marked read.
46
- Attachments can't be downloaded through gws-axi. Ones that are Drive
47
- files are listed with their file id under --fields attachments.
46
+ Download attachments with \`gws-axi chat download <space> <messageId>\`;
47
+ Drive-file ones list their file id under --fields attachments.
48
48
  `;
49
49
  const COMMAND = "chat messages";
50
50
  const USAGE = "Usage: gws-axi chat messages <space> | --with <email>";
@@ -192,9 +192,6 @@ export async function chatMessagesCommand(account, args) {
192
192
  notes.push(resolution.degraded);
193
193
  else if (unresolved > 0)
194
194
  notes.push(UNRESOLVED_NOTE);
195
- if (showAttachments && attachments.some((a) => a.source === "upload")) {
196
- notes.push("Uploaded attachments can't be retrieved through gws-axi; no command downloads them.");
197
- }
198
195
  if (notes.length > 0)
199
196
  blocks.push(renderObject({ note: notes.join(" ") }));
200
197
  const help = [];
@@ -209,6 +206,10 @@ export async function chatMessagesCommand(account, args) {
209
206
  const carrying = new Set(attachments.map((a) => a.message)).size;
210
207
  help.push(`${carrying} message(s) carry attachments — add \`--fields attachments\` to list them`);
211
208
  }
209
+ const upload = showAttachments ? attachments.find((a) => a.source === "upload") : undefined;
210
+ if (upload) {
211
+ help.push(`Run \`gws-axi chat download ${spaceId} ${upload.message}\` to save a message's attachments`);
212
+ }
212
213
  const driveFile = showAttachments ? attachments.find((a) => a.drive_file) : undefined;
213
214
  if (driveFile) {
214
215
  help.push(`Run \`gws-axi drive get ${driveFile.drive_file}\` for an attached Drive file's details`);
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../../src/commands/chat/messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../../src/commands/chat/messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { chat_v1 } from "googleapis";
2
+ import { type SpaceTarget } from "./address.js";
3
+ export declare const REACT_HELP: string;
4
+ export declare const UNREACT_HELP: string;
5
+ interface Flags {
6
+ target: SpaceTarget;
7
+ message: string;
8
+ emoji: string;
9
+ }
10
+ /**
11
+ * Refuse what is plainly not an emoji before asking Chat. Anything subtler is
12
+ * left to Chat, whose refusal becomes INVALID_EMOJI.
13
+ */
14
+ export declare function checkEmoji(raw: string | undefined, usage: string): string;
15
+ export declare function parseReactFlags(args: string[], verb: "react" | "unreact"): Flags;
16
+ type Chat = chat_v1.Chat;
17
+ /**
18
+ * The message, fetched by whatever id was given. Also turns a client-assigned
19
+ * id into the system id, which is the only form the reactions endpoint takes.
20
+ */
21
+ export declare function fetchMessage(api: Chat, account: string, spaceName: string, message: string): Promise<chat_v1.Schema$Message>;
22
+ export declare const chatReactCommand: (account: string, args: string[]) => Promise<string>;
23
+ export declare const chatUnreactCommand: (account: string, args: string[]) => Promise<string>;
24
+ export {};
@@ -0,0 +1,158 @@
1
+ import { AxiError } from "axi-sdk-js";
2
+ import { chatClient } from "../../google/client.js";
3
+ import { joinBlocks, renderHelp, renderObject } from "../../output/index.js";
4
+ import { parseMessageTarget, spaceResourceName } from "./address.js";
5
+ import { parseArgs } from "./flags.js";
6
+ import { reactionSummary } from "./message-rows.js";
7
+ import { bareId, chatError, resolveSpace, retryingChat, selfUserRef } from "./shared.js";
8
+ /**
9
+ * The account's own emoji reactions. Both commands are writes — a reaction is
10
+ * seen by everyone in the conversation — and both are idempotent.
11
+ *
12
+ * See specs/commands/chat-react.md.
13
+ */
14
+ const usageFor = (verb) => `Usage: gws-axi chat ${verb} <space> <message> --emoji <emoji>`;
15
+ const helpFor = (verb) => `usage: gws-axi chat ${verb} <space> <message> --emoji <emoji> [flags]
16
+ gws-axi chat ${verb} spaces/<space>/messages/<id> --emoji <emoji> [flags]
17
+ args[2]:
18
+ <space> A conversation id (AAAA… or spaces/AAAA…) or a Chat URL
19
+ <message> A message id as \`chat messages\` prints it, or a
20
+ client-assigned id (client-…) from \`chat send --request-id\`
21
+ flags[3]:
22
+ --emoji <emoji> One Unicode emoji, exactly as it should appear: 👍, 👍🏽, 🎉.
23
+ Skin tones are different emoji. No :shortcodes:.
24
+ --with <email> Use the 1:1 direct message with this person as <space>
25
+ --account <email> REQUIRED when 2+ accounts are authenticated
26
+ (or set GWS_AXI_ACCOUNT)
27
+ examples:
28
+ gws-axi chat ${verb} AAAAxyz Hk2.Hk2 --emoji 👍 --account you@example.com
29
+ output:
30
+ \`action\` (${verb === "react" ? "reacted | already_reacted" : "unreacted | not_reacted"}), the message, the emoji, and
31
+ \`reactions\` — the message's reaction summary after the change.
32
+ notes:
33
+ ${verb === "react" ? "Everyone in the conversation sees the reaction, and its author is notified.\n Reacting twice with the same emoji is a no-op." : "Removes only this account's reaction; others' stay.\n Removing a reaction that isn't there is a no-op."}
34
+ `;
35
+ export const REACT_HELP = helpFor("react");
36
+ export const UNREACT_HELP = helpFor("unreact");
37
+ /**
38
+ * Refuse what is plainly not an emoji before asking Chat. Anything subtler is
39
+ * left to Chat, whose refusal becomes INVALID_EMOJI.
40
+ */
41
+ export function checkEmoji(raw, usage) {
42
+ const emoji = raw?.trim() ?? "";
43
+ if (!emoji) {
44
+ throw new AxiError("Missing --emoji", "VALIDATION_ERROR", [usage]);
45
+ }
46
+ if (/^:[\w+-]+:$/.test(emoji)) {
47
+ throw new AxiError(`Shortcodes aren't supported: ${emoji}`, "VALIDATION_ERROR", [
48
+ "Pass the emoji character itself, e.g. --emoji 👍",
49
+ ]);
50
+ }
51
+ if (/^[\x20-\x7e]+$/.test(emoji) ||
52
+ !/\p{Extended_Pictographic}|\p{Regional_Indicator}/u.test(emoji)) {
53
+ throw new AxiError(`Not an emoji: ${emoji}`, "VALIDATION_ERROR", [
54
+ "Pass one Unicode emoji character, e.g. --emoji 👍",
55
+ ]);
56
+ }
57
+ return emoji;
58
+ }
59
+ export function parseReactFlags(args, verb) {
60
+ const usage = usageFor(verb);
61
+ const parsed = parseArgs(args, { value: ["--emoji", "--with"] }, `chat ${verb}`);
62
+ const withEmail = parsed.values["--with"];
63
+ const positionals = parsed.positionals;
64
+ const { target, message } = parseMessageTarget(positionals, withEmail, usage);
65
+ return { target, message, emoji: checkEmoji(parsed.values["--emoji"], usage) };
66
+ }
67
+ function statusOf(err) {
68
+ const shape = err;
69
+ return shape.response?.status ?? (typeof shape.code === "number" ? shape.code : undefined);
70
+ }
71
+ function messageOf(err) {
72
+ const shape = err;
73
+ return shape.response?.data?.error?.message ?? shape.message ?? "";
74
+ }
75
+ /**
76
+ * The message, fetched by whatever id was given. Also turns a client-assigned
77
+ * id into the system id, which is the only form the reactions endpoint takes.
78
+ */
79
+ export async function fetchMessage(api, account, spaceName, message) {
80
+ try {
81
+ const res = await retryingChat(() => api.spaces.messages.get({ name: `${spaceName}/messages/${message}` }));
82
+ return res.data;
83
+ }
84
+ catch (err) {
85
+ const status = statusOf(err);
86
+ if (status === 404 || status === 400 || status === 403) {
87
+ throw new AxiError(`No message ${message} in conversation ${bareId(spaceName)}`, "MESSAGE_NOT_FOUND", [`Run \`gws-axi chat messages ${bareId(spaceName)}\` to see message ids`]);
88
+ }
89
+ throw chatError(err, {
90
+ account,
91
+ operation: "chat.spaces.messages.get",
92
+ space: bareId(spaceName),
93
+ });
94
+ }
95
+ }
96
+ async function run(account, args, verb) {
97
+ const flags = parseReactFlags(args, verb);
98
+ const api = await chatClient(account);
99
+ const space = await resolveSpace(api, account, flags.target);
100
+ const spaceName = space.name ?? spaceResourceName(flags.target.kind === "space" ? flags.target.id : "");
101
+ const message = await fetchMessage(api, account, spaceName, flags.message);
102
+ const messageName = message.name ?? "";
103
+ const operation = `chat.spaces.messages.reactions.${verb === "react" ? "create" : "delete"}`;
104
+ let action;
105
+ try {
106
+ if (verb === "react") {
107
+ try {
108
+ await api.spaces.messages.reactions.create({
109
+ parent: messageName,
110
+ requestBody: { emoji: { unicode: flags.emoji } },
111
+ });
112
+ action = "reacted";
113
+ }
114
+ catch (err) {
115
+ if (statusOf(err) === 409)
116
+ action = "already_reacted";
117
+ else
118
+ throw err;
119
+ }
120
+ }
121
+ else {
122
+ const self = selfUserRef(account);
123
+ if (!self) {
124
+ throw new AxiError(`Can't tell which reactions are ${account}'s: its stored profile has no user id`, "PROFILE_INCOMPLETE", [`Re-authenticate to refresh it: \`gws-axi auth login --account ${account} --no-wait\``]);
125
+ }
126
+ // Filtering by users/me returns a 500, so the account's own id is used.
127
+ const res = await retryingChat(() => api.spaces.messages.reactions.list({
128
+ parent: messageName,
129
+ filter: `emoji.unicode = "${flags.emoji}" AND user.name = "${self}"`,
130
+ }));
131
+ const mine = (res.data.reactions ?? []).filter((r) => r.user?.name === self);
132
+ for (const reaction of mine) {
133
+ await api.spaces.messages.reactions.delete({ name: reaction.name ?? "" });
134
+ }
135
+ action = mine.length > 0 ? "unreacted" : "not_reacted";
136
+ }
137
+ }
138
+ catch (err) {
139
+ if (err instanceof AxiError)
140
+ throw err;
141
+ if (statusOf(err) === 400 && /emoji/i.test(messageOf(err))) {
142
+ throw new AxiError(`Chat doesn't accept ${flags.emoji} as an emoji`, "INVALID_EMOJI", [
143
+ "Pass one standard Unicode emoji; custom emoji aren't supported",
144
+ ]);
145
+ }
146
+ throw chatError(err, { account, operation, space: bareId(spaceName) });
147
+ }
148
+ const after = await fetchMessage(api, account, spaceName, bareId(messageName));
149
+ const spaceId = bareId(spaceName);
150
+ const messageId = bareId(messageName);
151
+ const reverse = verb === "react"
152
+ ? `Run \`gws-axi chat unreact ${spaceId} ${messageId} --emoji ${flags.emoji} --account ${account}\` to take it back`
153
+ : `Run \`gws-axi chat react ${spaceId} ${messageId} --emoji ${flags.emoji} --account ${account}\` to react again`;
154
+ return joinBlocks(renderObject({ account }), renderObject({ action }), renderObject({ message: { space: spaceId, id: messageId } }), renderObject({ emoji: flags.emoji }), renderObject({ reactions: reactionSummary(after) || "none" }), renderHelp([reverse]));
155
+ }
156
+ export const chatReactCommand = (account, args) => run(account, args, "react");
157
+ export const chatUnreactCommand = (account, args) => run(account, args, "unreact");
158
+ //# sourceMappingURL=react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../../../../src/commands/chat/react.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,65 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { AxiError } from "axi-sdk-js";
3
+ import { reactionSummary } from "./message-rows.js";
4
+ import { checkEmoji, parseReactFlags } from "./react.js";
5
+ function errorFrom(fn) {
6
+ try {
7
+ fn();
8
+ }
9
+ catch (err) {
10
+ expect(err).toBeInstanceOf(AxiError);
11
+ return err;
12
+ }
13
+ throw new Error("expected a throw");
14
+ }
15
+ describe("checkEmoji", () => {
16
+ it.each(["👍", "👍🏽", "🎉", "❤️", "🇺🇸", "👨‍👩‍👧"])("accepts %s", (emoji) => {
17
+ expect(checkEmoji(emoji, "usage")).toBe(emoji);
18
+ });
19
+ it("refuses a shortcode, naming the reason", () => {
20
+ expect(errorFrom(() => checkEmoji(":thumbsup:", "usage")).message).toContain("Shortcodes");
21
+ });
22
+ it.each(["hello", "+1", "", " ", "é"])("refuses %j", (raw) => {
23
+ expect(errorFrom(() => checkEmoji(raw, "usage")).code).toBe("VALIDATION_ERROR");
24
+ });
25
+ });
26
+ describe("parseReactFlags", () => {
27
+ it("takes a conversation and a message id", () => {
28
+ expect(parseReactFlags(["AAAA", "Hk2.Hk2", "--emoji", "👍"], "react")).toEqual({
29
+ target: { kind: "space", id: "AAAA" },
30
+ message: "Hk2.Hk2",
31
+ emoji: "👍",
32
+ });
33
+ });
34
+ it("takes a full message resource name on its own", () => {
35
+ expect(parseReactFlags(["spaces/AAAA/messages/Hk2.Hk2", "--emoji", "👍"], "react")).toMatchObject({ target: { kind: "space", id: "AAAA" }, message: "Hk2.Hk2" });
36
+ });
37
+ it("keeps a client-assigned id for resolution later", () => {
38
+ expect(parseReactFlags(["AAAA", "client-deploy-4821", "--emoji", "👍"], "react").message).toBe("client-deploy-4821");
39
+ });
40
+ it("takes --with in place of the conversation", () => {
41
+ expect(parseReactFlags(["Hk2.Hk2", "--with", "bob@example.com", "--emoji", "👍"], "unreact")).toMatchObject({ target: { kind: "dm", email: "bob@example.com" }, message: "Hk2.Hk2" });
42
+ });
43
+ it("refuses a message resource name from a different conversation", () => {
44
+ expect(errorFrom(() => parseReactFlags(["AAAA", "spaces/BBBB/messages/Hk2", "--emoji", "👍"], "react")).message).toContain("not in conversation AAAA");
45
+ });
46
+ it("refuses a missing message, a missing emoji, and extra arguments", () => {
47
+ expect(errorFrom(() => parseReactFlags(["AAAA", "--emoji", "👍"], "react")).code).toBe("VALIDATION_ERROR");
48
+ expect(errorFrom(() => parseReactFlags(["AAAA", "Hk2"], "react")).message).toContain("--emoji");
49
+ expect(errorFrom(() => parseReactFlags(["AAAA", "Hk2", "extra", "--emoji", "👍"], "react")).message).toContain("Too many");
50
+ });
51
+ });
52
+ describe("reactionSummary", () => {
53
+ it("lists each emoji with its count", () => {
54
+ expect(reactionSummary({
55
+ emojiReactionSummaries: [
56
+ { emoji: { unicode: "👍" }, reactionCount: 2 },
57
+ { emoji: { customEmoji: { emojiName: "partyparrot" } }, reactionCount: 1 },
58
+ ],
59
+ })).toBe("👍 2 · :partyparrot: 1");
60
+ });
61
+ it("is empty with no reactions", () => {
62
+ expect(reactionSummary({})).toBe("");
63
+ });
64
+ });
65
+ //# sourceMappingURL=react.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.test.js","sourceRoot":"","sources":["../../../../src/commands/chat/react.test.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
1
  import { AxiError } from "axi-sdk-js";
2
2
  import { resolveAccount, withAccountSource } from "../google/account.js";
3
+ import { chatDownloadCommand, DOWNLOAD_HELP } from "./chat/download.js";
3
4
  import { chatMembersCommand, MEMBERS_HELP } from "./chat/members.js";
4
5
  import { chatMessagesCommand, MESSAGES_HELP } from "./chat/messages.js";
5
6
  import { chatMarkReadCommand, chatMarkUnreadCommand, MARK_READ_HELP, MARK_UNREAD_HELP, } from "./chat/read-state.js";
6
7
  import { chatSearchCommand, SEARCH_HELP } from "./chat/search.js";
8
+ import { chatReactCommand, chatUnreactCommand, REACT_HELP, UNREACT_HELP } from "./chat/react.js";
7
9
  import { chatSendCommand, SEND_HELP } from "./chat/send.js";
8
10
  import { chatSpacesCommand, SPACES_HELP } from "./chat/spaces.js";
9
11
  import { notImplemented, renderAlternatives, withInstead } from "./stub-signposts.js";
@@ -12,7 +14,10 @@ const SUBCOMMANDS = [
12
14
  { name: "messages", mutation: false, help: MESSAGES_HELP, handler: chatMessagesCommand },
13
15
  { name: "search", mutation: false, help: SEARCH_HELP, handler: chatSearchCommand },
14
16
  { name: "members", mutation: false, help: MEMBERS_HELP, handler: chatMembersCommand },
17
+ { name: "download", mutation: false, help: DOWNLOAD_HELP, handler: chatDownloadCommand },
15
18
  { name: "send", mutation: true, help: SEND_HELP, handler: chatSendCommand },
19
+ { name: "react", mutation: true, help: REACT_HELP, handler: chatReactCommand },
20
+ { name: "unreact", mutation: true, help: UNREACT_HELP, handler: chatUnreactCommand },
16
21
  { name: "mark-read", mutation: true, help: MARK_READ_HELP, handler: chatMarkReadCommand },
17
22
  {
18
23
  name: "mark-unread",
@@ -56,7 +61,9 @@ ${renderAlternatives(SUBCOMMANDS)}subcommand help:
56
61
  gws-axi chat messages --help read one conversation
57
62
  gws-axi chat search --help search messages across conversations
58
63
  gws-axi chat members --help who is in a conversation
64
+ gws-axi chat download --help save a message's attachments
59
65
  gws-axi chat send --help post a message
66
+ gws-axi chat react --help add an emoji reaction (unreact removes it)
60
67
  gws-axi chat mark-read --help mark conversations read
61
68
  gws-axi chat mark-unread --help mark a conversation unread from a point
62
69
  examples:
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/commands/chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/commands/chat.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gws-axi",
3
- "version": "0.24.0",
3
+ "version": "0.25.0",
4
4
  "description": "AXI-compliant Google Workspace CLI — token-efficient TOON output, agent-guided auth setup, unified interface for Gmail, Calendar, Docs, Drive, Slides",
5
5
  "type": "module",
6
6
  "repository": {