surface-cli 0.1.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.
Files changed (60) hide show
  1. package/README.md +307 -0
  2. package/dist/cli.js +521 -0
  3. package/dist/cli.js.map +1 -0
  4. package/dist/config.js +156 -0
  5. package/dist/config.js.map +1 -0
  6. package/dist/contracts/account.js +9 -0
  7. package/dist/contracts/account.js.map +1 -0
  8. package/dist/contracts/mail.js +2 -0
  9. package/dist/contracts/mail.js.map +1 -0
  10. package/dist/e2e/gmail-v1.js +247 -0
  11. package/dist/e2e/gmail-v1.js.map +1 -0
  12. package/dist/e2e/outlook-v1.js +179 -0
  13. package/dist/e2e/outlook-v1.js.map +1 -0
  14. package/dist/lib/errors.js +47 -0
  15. package/dist/lib/errors.js.map +1 -0
  16. package/dist/lib/json.js +4 -0
  17. package/dist/lib/json.js.map +1 -0
  18. package/dist/lib/public-mail.js +29 -0
  19. package/dist/lib/public-mail.js.map +1 -0
  20. package/dist/lib/remote-auth.js +407 -0
  21. package/dist/lib/remote-auth.js.map +1 -0
  22. package/dist/lib/time.js +4 -0
  23. package/dist/lib/time.js.map +1 -0
  24. package/dist/lib/write-safety.js +34 -0
  25. package/dist/lib/write-safety.js.map +1 -0
  26. package/dist/paths.js +29 -0
  27. package/dist/paths.js.map +1 -0
  28. package/dist/providers/gmail/adapter.js +1102 -0
  29. package/dist/providers/gmail/adapter.js.map +1 -0
  30. package/dist/providers/gmail/api.js +99 -0
  31. package/dist/providers/gmail/api.js.map +1 -0
  32. package/dist/providers/gmail/normalize.js +336 -0
  33. package/dist/providers/gmail/normalize.js.map +1 -0
  34. package/dist/providers/gmail/oauth.js +328 -0
  35. package/dist/providers/gmail/oauth.js.map +1 -0
  36. package/dist/providers/index.js +12 -0
  37. package/dist/providers/index.js.map +1 -0
  38. package/dist/providers/outlook/adapter.js +1443 -0
  39. package/dist/providers/outlook/adapter.js.map +1 -0
  40. package/dist/providers/outlook/extract.js +416 -0
  41. package/dist/providers/outlook/extract.js.map +1 -0
  42. package/dist/providers/outlook/normalize.js +126 -0
  43. package/dist/providers/outlook/normalize.js.map +1 -0
  44. package/dist/providers/outlook/session.js +178 -0
  45. package/dist/providers/outlook/session.js.map +1 -0
  46. package/dist/providers/shared/html.js +88 -0
  47. package/dist/providers/shared/html.js.map +1 -0
  48. package/dist/providers/shared/types.js +2 -0
  49. package/dist/providers/shared/types.js.map +1 -0
  50. package/dist/providers/types.js +2 -0
  51. package/dist/providers/types.js.map +1 -0
  52. package/dist/refs.js +18 -0
  53. package/dist/refs.js.map +1 -0
  54. package/dist/runtime.js +23 -0
  55. package/dist/runtime.js.map +1 -0
  56. package/dist/state/database.js +731 -0
  57. package/dist/state/database.js.map +1 -0
  58. package/dist/summarizer.js +217 -0
  59. package/dist/summarizer.js.map +1 -0
  60. package/package.json +55 -0
package/dist/cli.js ADDED
@@ -0,0 +1,521 @@
1
+ #!/usr/bin/env node
2
+ import { Command, Option } from "commander";
3
+ import { statSync, existsSync, readdirSync, rmSync } from "node:fs";
4
+ import { join } from "node:path";
5
+ import { accountInputSchema } from "./contracts/account.js";
6
+ import { SurfaceError, errorToEnvelope } from "./lib/errors.js";
7
+ import { writeJson } from "./lib/json.js";
8
+ import { toPublicThread } from "./lib/public-mail.js";
9
+ import { runRemoteAuthLogin } from "./lib/remote-auth.js";
10
+ import { nowIsoUtc } from "./lib/time.js";
11
+ import { resolveProviderAdapter } from "./providers/index.js";
12
+ import { createAccountRuntimeContext, createRuntimeContext } from "./runtime.js";
13
+ function positiveInt(value) {
14
+ const parsed = Number.parseInt(value, 10);
15
+ if (!Number.isFinite(parsed) || parsed <= 0) {
16
+ throw new Error("Expected a positive integer.");
17
+ }
18
+ return parsed;
19
+ }
20
+ function collectStringOption(value, previous = []) {
21
+ return [...previous, value];
22
+ }
23
+ function directorySizeBytes(rootPath) {
24
+ if (!existsSync(rootPath)) {
25
+ return 0;
26
+ }
27
+ const stats = statSync(rootPath);
28
+ if (stats.isFile()) {
29
+ return stats.size;
30
+ }
31
+ let total = 0;
32
+ for (const entry of readdirSync(rootPath, { withFileTypes: true })) {
33
+ total += directorySizeBytes(join(rootPath, entry.name));
34
+ }
35
+ return total;
36
+ }
37
+ async function runAction(options, action) {
38
+ const context = createRuntimeContext(options.config ? { configPath: options.config } : {});
39
+ try {
40
+ await action(context);
41
+ }
42
+ finally {
43
+ context.db.close();
44
+ }
45
+ }
46
+ async function runAccountAction(options, accountName, action) {
47
+ await runAction(options, async (context) => {
48
+ const account = context.db.findAccountByName(accountName);
49
+ if (!account) {
50
+ throw new SurfaceError("not_found", `Account '${accountName}' was not found.`, {
51
+ account: accountName,
52
+ });
53
+ }
54
+ await action(createAccountRuntimeContext(context, account));
55
+ });
56
+ }
57
+ async function runMessageAction(options, messageRef, action) {
58
+ await runAction(options, async (context) => {
59
+ const resolved = context.db.findMessageByRef(messageRef);
60
+ if (!resolved) {
61
+ throw new SurfaceError("not_found", `Message '${messageRef}' was not found.`, {
62
+ messageRef,
63
+ });
64
+ }
65
+ const account = context.db.findAccountById(resolved.account_id);
66
+ if (!account) {
67
+ throw new SurfaceError("not_found", `Account for message '${messageRef}' was not found.`, {
68
+ messageRef,
69
+ });
70
+ }
71
+ await action(createAccountRuntimeContext(context, account), resolved);
72
+ });
73
+ }
74
+ async function runMessageBatchAction(options, messageRefs, action) {
75
+ await runAction(options, async (context) => {
76
+ if (messageRefs.length === 0) {
77
+ throw new SurfaceError("invalid_argument", "At least one message ref is required.");
78
+ }
79
+ const resolved = messageRefs.map((messageRef) => {
80
+ const record = context.db.findMessageByRef(messageRef);
81
+ if (!record) {
82
+ throw new SurfaceError("not_found", `Message '${messageRef}' was not found.`, {
83
+ messageRef,
84
+ });
85
+ }
86
+ return record;
87
+ });
88
+ const accountId = resolved[0].account_id;
89
+ if (resolved.some((record) => record.account_id !== accountId)) {
90
+ throw new SurfaceError("invalid_argument", "All message refs in one mark-read or mark-unread command must belong to the same account.");
91
+ }
92
+ const account = context.db.findAccountById(accountId);
93
+ if (!account) {
94
+ throw new SurfaceError("not_found", `Account for the provided message refs was not found.`);
95
+ }
96
+ await action(createAccountRuntimeContext(context, account), resolved);
97
+ });
98
+ }
99
+ const program = new Command();
100
+ program
101
+ .name("surface")
102
+ .description("Multi-provider mail CLI for Surface.")
103
+ .showHelpAfterError()
104
+ .addOption(new Option("--config <path>", "Config file path").env("SURFACE_CONFIG_PATH"));
105
+ const accountCommand = program.command("account").description("Manage Surface accounts.");
106
+ accountCommand
107
+ .command("add")
108
+ .argument("<name>", "Logical account name, for example work or personal")
109
+ .requiredOption("--provider <provider>", "Provider family, for example gmail or outlook")
110
+ .requiredOption("--transport <transport>", "Transport name, for example gmail-api")
111
+ .requiredOption("--email <email>", "Primary mailbox email address")
112
+ .action(async (name, options, command) => {
113
+ await runAction(command.optsWithGlobals(), (context) => {
114
+ const parsed = accountInputSchema.parse({
115
+ name,
116
+ provider: options.provider,
117
+ transport: options.transport,
118
+ email: options.email,
119
+ });
120
+ const account = context.db.upsertAccount(parsed);
121
+ writeJson({
122
+ schema_version: "1",
123
+ command: "account-add",
124
+ account,
125
+ });
126
+ });
127
+ });
128
+ accountCommand.command("list").action(async (_options, command) => {
129
+ await runAction(command.optsWithGlobals(), (context) => {
130
+ writeJson({
131
+ schema_version: "1",
132
+ command: "account-list",
133
+ accounts: context.db.listAccounts(),
134
+ });
135
+ });
136
+ });
137
+ accountCommand
138
+ .command("remove")
139
+ .argument("<name>", "Logical account name")
140
+ .action(async (name, _options, command) => {
141
+ await runAction(command.optsWithGlobals(), (context) => {
142
+ const removed = context.db.removeAccountByName(name);
143
+ if (!removed) {
144
+ throw new SurfaceError("not_found", `Account '${name}' was not found.`, {
145
+ account: name,
146
+ });
147
+ }
148
+ writeJson({
149
+ schema_version: "1",
150
+ command: "account-remove",
151
+ removed_account: removed.name,
152
+ });
153
+ });
154
+ });
155
+ const authCommand = program.command("auth").description("Manage provider authentication state.");
156
+ authCommand
157
+ .command("login")
158
+ .argument("<account>", "Logical account name")
159
+ .option("--remote-host <host>", "Run auth login against an existing Surface account on a remote host")
160
+ .action(async (accountName, options, command) => {
161
+ if (options.remoteHost) {
162
+ await runAction(command.optsWithGlobals(), async (context) => {
163
+ writeJson(await runRemoteAuthLogin(context, accountName, options.remoteHost));
164
+ });
165
+ return;
166
+ }
167
+ await runAccountAction(command.optsWithGlobals(), accountName, async (context) => {
168
+ const adapter = resolveProviderAdapter(context.account);
169
+ const status = await adapter.login(context.account, context);
170
+ writeJson({
171
+ schema_version: "1",
172
+ command: "auth-login",
173
+ account: context.account.name,
174
+ provider: context.account.provider,
175
+ transport: context.account.transport,
176
+ status,
177
+ });
178
+ });
179
+ });
180
+ authCommand
181
+ .command("status")
182
+ .argument("[account]", "Logical account name")
183
+ .action(async (accountName, _options, command) => {
184
+ const globalOptions = command.optsWithGlobals();
185
+ if (accountName) {
186
+ await runAccountAction(globalOptions, accountName, async (context) => {
187
+ const adapter = resolveProviderAdapter(context.account);
188
+ const status = await adapter.authStatus(context.account, context);
189
+ writeJson({
190
+ schema_version: "1",
191
+ command: "auth-status",
192
+ account: context.account.name,
193
+ provider: context.account.provider,
194
+ transport: context.account.transport,
195
+ status,
196
+ });
197
+ });
198
+ return;
199
+ }
200
+ await runAction(globalOptions, async (context) => {
201
+ const statuses = [];
202
+ for (const account of context.db.listAccounts()) {
203
+ const adapter = resolveProviderAdapter(account);
204
+ const accountContext = createAccountRuntimeContext(context, account);
205
+ const status = await adapter.authStatus(account, accountContext);
206
+ statuses.push({
207
+ account: account.name,
208
+ provider: account.provider,
209
+ transport: account.transport,
210
+ status,
211
+ });
212
+ }
213
+ writeJson({
214
+ schema_version: "1",
215
+ command: "auth-status",
216
+ accounts: statuses,
217
+ });
218
+ });
219
+ });
220
+ authCommand
221
+ .command("logout")
222
+ .argument("<account>", "Logical account name")
223
+ .action(async (accountName, _options, command) => {
224
+ await runAccountAction(command.optsWithGlobals(), accountName, async (context) => {
225
+ const adapter = resolveProviderAdapter(context.account);
226
+ const status = await adapter.logout(context.account, context);
227
+ writeJson({
228
+ schema_version: "1",
229
+ command: "auth-logout",
230
+ account: context.account.name,
231
+ status,
232
+ });
233
+ });
234
+ });
235
+ const mailCommand = program.command("mail").description("Search, fetch, and read mail.");
236
+ mailCommand
237
+ .command("search")
238
+ .requiredOption("--account <account>", "Logical account name")
239
+ .requiredOption("--text <query>", "Free-text search query")
240
+ .addOption(new Option("--limit <limit>", "Max results to return").argParser(positiveInt))
241
+ .action(async (options, command) => {
242
+ await runAccountAction(command.optsWithGlobals(), options.account, async (context) => {
243
+ const adapter = resolveProviderAdapter(context.account);
244
+ const threads = await adapter.search(context.account, {
245
+ text: options.text,
246
+ limit: options.limit ?? context.config.defaultResultLimit,
247
+ unread_only: false,
248
+ }, context);
249
+ writeJson({
250
+ schema_version: "1",
251
+ command: "search",
252
+ generated_at: nowIsoUtc(),
253
+ account: context.account.name,
254
+ query: {
255
+ text: options.text,
256
+ limit: options.limit ?? context.config.defaultResultLimit,
257
+ unread_only: false,
258
+ },
259
+ threads: threads.map(toPublicThread),
260
+ });
261
+ });
262
+ });
263
+ mailCommand
264
+ .command("fetch-unread")
265
+ .requiredOption("--account <account>", "Logical account name")
266
+ .addOption(new Option("--limit <limit>", "Max threads to return").argParser(positiveInt))
267
+ .action(async (options, command) => {
268
+ await runAccountAction(command.optsWithGlobals(), options.account, async (context) => {
269
+ const adapter = resolveProviderAdapter(context.account);
270
+ const threads = await adapter.fetchUnread(context.account, {
271
+ limit: options.limit ?? context.config.defaultResultLimit,
272
+ unread_only: true,
273
+ }, context);
274
+ writeJson({
275
+ schema_version: "1",
276
+ command: "fetch-unread",
277
+ generated_at: nowIsoUtc(),
278
+ account: context.account.name,
279
+ query: {
280
+ limit: options.limit ?? context.config.defaultResultLimit,
281
+ unread_only: true,
282
+ },
283
+ threads: threads.map(toPublicThread),
284
+ });
285
+ });
286
+ });
287
+ mailCommand
288
+ .command("read")
289
+ .argument("<message_ref>", "Stable message ref")
290
+ .option("--refresh", "Bypass local cache and fetch live", false)
291
+ .option("--mark-read", "Mark the message as read after resolving the ref", false)
292
+ .action(async (messageRef, options, command) => {
293
+ await runMessageAction(command.optsWithGlobals(), messageRef, async (context) => {
294
+ const adapter = resolveProviderAdapter(context.account);
295
+ if (Boolean(options.markRead)) {
296
+ await adapter.markRead(context.account, [messageRef], context);
297
+ }
298
+ writeJson(await adapter.readMessage(context.account, messageRef, Boolean(options.refresh), context));
299
+ });
300
+ });
301
+ mailCommand
302
+ .command("rsvp")
303
+ .argument("<message_ref>", "Stable message ref")
304
+ .requiredOption("--response <response>", "One of: accept, decline, tentative")
305
+ .action(async (messageRef, options, command) => {
306
+ const response = String(options.response).toLowerCase();
307
+ if (!["accept", "decline", "tentative"].includes(response)) {
308
+ throw new SurfaceError("invalid_argument", "RSVP response must be one of: accept, decline, tentative.", { messageRef });
309
+ }
310
+ await runMessageAction(command.optsWithGlobals(), messageRef, async (context) => {
311
+ const adapter = resolveProviderAdapter(context.account);
312
+ writeJson(await adapter.rsvp(context.account, messageRef, response, context));
313
+ });
314
+ });
315
+ mailCommand
316
+ .command("send")
317
+ .requiredOption("--account <account>", "Logical account name")
318
+ .requiredOption("--to <email>", "Recipient email address", collectStringOption, [])
319
+ .option("--cc <email>", "Cc recipient email address", collectStringOption, [])
320
+ .option("--bcc <email>", "Bcc recipient email address", collectStringOption, [])
321
+ .requiredOption("--subject <subject>", "Message subject")
322
+ .requiredOption("--body <body>", "Message body text")
323
+ .option("--draft", "Save to drafts instead of sending", false)
324
+ .action(async (options, command) => {
325
+ await runAccountAction(command.optsWithGlobals(), options.account, async (context) => {
326
+ const adapter = resolveProviderAdapter(context.account);
327
+ writeJson(await adapter.sendMessage(context.account, {
328
+ to: options.to,
329
+ cc: options.cc ?? [],
330
+ bcc: options.bcc ?? [],
331
+ subject: options.subject,
332
+ body: options.body,
333
+ draft: Boolean(options.draft),
334
+ }, context));
335
+ });
336
+ });
337
+ mailCommand
338
+ .command("reply")
339
+ .argument("<message_ref>", "Stable message ref")
340
+ .requiredOption("--body <body>", "Reply body text")
341
+ .option("--cc <email>", "Cc recipient email address", collectStringOption, [])
342
+ .option("--bcc <email>", "Bcc recipient email address", collectStringOption, [])
343
+ .option("--draft", "Save to drafts instead of sending", false)
344
+ .action(async (messageRef, options, command) => {
345
+ await runMessageAction(command.optsWithGlobals(), messageRef, async (context) => {
346
+ const adapter = resolveProviderAdapter(context.account);
347
+ writeJson(await adapter.reply(context.account, messageRef, {
348
+ cc: options.cc ?? [],
349
+ bcc: options.bcc ?? [],
350
+ body: options.body,
351
+ draft: Boolean(options.draft),
352
+ }, context));
353
+ });
354
+ });
355
+ mailCommand
356
+ .command("reply-all")
357
+ .argument("<message_ref>", "Stable message ref")
358
+ .requiredOption("--body <body>", "Reply body text")
359
+ .option("--cc <email>", "Cc recipient email address", collectStringOption, [])
360
+ .option("--bcc <email>", "Bcc recipient email address", collectStringOption, [])
361
+ .option("--draft", "Save to drafts instead of sending", false)
362
+ .action(async (messageRef, options, command) => {
363
+ await runMessageAction(command.optsWithGlobals(), messageRef, async (context) => {
364
+ const adapter = resolveProviderAdapter(context.account);
365
+ writeJson(await adapter.replyAll(context.account, messageRef, {
366
+ cc: options.cc ?? [],
367
+ bcc: options.bcc ?? [],
368
+ body: options.body,
369
+ draft: Boolean(options.draft),
370
+ }, context));
371
+ });
372
+ });
373
+ mailCommand
374
+ .command("forward")
375
+ .argument("<message_ref>", "Stable message ref")
376
+ .requiredOption("--to <email>", "Recipient email address", collectStringOption, [])
377
+ .option("--cc <email>", "Cc recipient email address", collectStringOption, [])
378
+ .option("--bcc <email>", "Bcc recipient email address", collectStringOption, [])
379
+ .requiredOption("--body <body>", "Forward body text")
380
+ .option("--draft", "Save to drafts instead of sending", false)
381
+ .action(async (messageRef, options, command) => {
382
+ await runMessageAction(command.optsWithGlobals(), messageRef, async (context) => {
383
+ const adapter = resolveProviderAdapter(context.account);
384
+ writeJson(await adapter.forward(context.account, messageRef, {
385
+ to: options.to,
386
+ cc: options.cc ?? [],
387
+ bcc: options.bcc ?? [],
388
+ body: options.body,
389
+ draft: Boolean(options.draft),
390
+ }, context));
391
+ });
392
+ });
393
+ mailCommand
394
+ .command("archive")
395
+ .argument("<message_ref>", "Stable message ref")
396
+ .action(async (messageRef, _options, command) => {
397
+ await runMessageAction(command.optsWithGlobals(), messageRef, async (context) => {
398
+ const adapter = resolveProviderAdapter(context.account);
399
+ writeJson(await adapter.archive(context.account, messageRef, context));
400
+ });
401
+ });
402
+ mailCommand
403
+ .command("mark-read")
404
+ .argument("<message_refs...>", "One or more stable message refs")
405
+ .action(async (messageRefs, _options, command) => {
406
+ await runMessageBatchAction(command.optsWithGlobals(), messageRefs, async (context) => {
407
+ const adapter = resolveProviderAdapter(context.account);
408
+ writeJson(await adapter.markRead(context.account, messageRefs, context));
409
+ });
410
+ });
411
+ mailCommand
412
+ .command("mark-unread")
413
+ .argument("<message_refs...>", "One or more stable message refs")
414
+ .action(async (messageRefs, _options, command) => {
415
+ await runMessageBatchAction(command.optsWithGlobals(), messageRefs, async (context) => {
416
+ const adapter = resolveProviderAdapter(context.account);
417
+ writeJson(await adapter.markUnread(context.account, messageRefs, context));
418
+ });
419
+ });
420
+ const attachmentCommand = program.command("attachment").description("Inspect and download attachments.");
421
+ attachmentCommand
422
+ .command("list")
423
+ .argument("<message_ref>", "Stable message ref")
424
+ .action(async (messageRef, options, command) => {
425
+ void options;
426
+ await runMessageAction(command.optsWithGlobals(), messageRef, async (context) => {
427
+ const adapter = resolveProviderAdapter(context.account);
428
+ writeJson(await adapter.listAttachments(context.account, messageRef, context));
429
+ });
430
+ });
431
+ attachmentCommand
432
+ .command("download")
433
+ .argument("<message_ref>", "Stable message ref")
434
+ .argument("<attachment_id>", "Stable attachment id")
435
+ .action(async (messageRef, attachmentId, options, command) => {
436
+ void options;
437
+ await runMessageAction(command.optsWithGlobals(), messageRef, async (context) => {
438
+ const adapter = resolveProviderAdapter(context.account);
439
+ writeJson(await adapter.downloadAttachment(context.account, messageRef, attachmentId, context));
440
+ });
441
+ });
442
+ const cacheCommand = program.command("cache").description("Inspect and manage cache state.");
443
+ cacheCommand.command("stats").action(async (_options, command) => {
444
+ await runAction(command.optsWithGlobals(), (context) => {
445
+ writeJson({
446
+ schema_version: "1",
447
+ command: "cache-stats",
448
+ cache_root: context.paths.rootDir,
449
+ sizes: {
450
+ state_db_bytes: existsSync(context.paths.stateDbPath) ? statSync(context.paths.stateDbPath).size : 0,
451
+ auth_bytes: directorySizeBytes(context.paths.authDir),
452
+ cache_bytes: directorySizeBytes(context.paths.cacheDir),
453
+ downloads_bytes: directorySizeBytes(context.paths.downloadsDir),
454
+ },
455
+ });
456
+ });
457
+ });
458
+ cacheCommand.command("prune").action(async (_options, command) => {
459
+ await runAction(command.optsWithGlobals(), (context) => {
460
+ writeJson({
461
+ schema_version: "1",
462
+ command: "cache-prune",
463
+ status: "noop",
464
+ cache_root: context.paths.cacheDir,
465
+ });
466
+ });
467
+ });
468
+ cacheCommand
469
+ .command("clear")
470
+ .option("--account <account>", "Clear cached bodies for one account")
471
+ .option("--message <message_ref>", "Clear cached bodies for one message ref")
472
+ .option("--all", "Clear all cached bodies", false)
473
+ .action(async (options, command) => {
474
+ await runAction(command.optsWithGlobals(), (context) => {
475
+ if (options.all) {
476
+ rmSync(context.paths.cacheDir, { recursive: true, force: true });
477
+ writeJson({
478
+ schema_version: "1",
479
+ command: "cache-clear",
480
+ cleared: "all",
481
+ });
482
+ return;
483
+ }
484
+ if (options.account) {
485
+ const account = context.db.findAccountByName(options.account);
486
+ if (!account) {
487
+ throw new SurfaceError("not_found", `Account '${options.account}' was not found.`, {
488
+ account: options.account,
489
+ });
490
+ }
491
+ const accountCacheDir = join(context.paths.cacheDir, account.account_id);
492
+ rmSync(accountCacheDir, { recursive: true, force: true });
493
+ writeJson({
494
+ schema_version: "1",
495
+ command: "cache-clear",
496
+ cleared: "account",
497
+ account: options.account,
498
+ });
499
+ return;
500
+ }
501
+ if (options.message) {
502
+ for (const account of context.db.listAccounts()) {
503
+ const messageCacheDir = join(context.paths.cacheDir, account.account_id, "messages", options.message);
504
+ rmSync(messageCacheDir, { recursive: true, force: true });
505
+ }
506
+ writeJson({
507
+ schema_version: "1",
508
+ command: "cache-clear",
509
+ cleared: "message",
510
+ message_ref: options.message,
511
+ });
512
+ return;
513
+ }
514
+ throw new SurfaceError("invalid_argument", "Specify one of --account, --message, or --all for cache clear.");
515
+ });
516
+ });
517
+ program.parseAsync(process.argv).catch((error) => {
518
+ writeJson(errorToEnvelope(error));
519
+ process.exitCode = 1;
520
+ });
521
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}