@leemour/cli-messaging 0.76.0 → 0.78.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 (101) hide show
  1. package/README.md +1 -1
  2. package/dist/cli/app.d.ts +2 -0
  3. package/dist/cli/app.d.ts.map +1 -1
  4. package/dist/cli/app.js.map +1 -1
  5. package/dist/cli/messenger/archive-commands.js +1 -0
  6. package/dist/cli/messenger/archive-commands.js.map +1 -1
  7. package/dist/cli/messenger/guard-commands.js +2 -2
  8. package/dist/cli/messenger/guard-commands.js.map +1 -1
  9. package/dist/cli/messenger/hearing-command.d.ts +4 -1
  10. package/dist/cli/messenger/hearing-command.d.ts.map +1 -1
  11. package/dist/cli/messenger/hearing-command.js +14 -2
  12. package/dist/cli/messenger/hearing-command.js.map +1 -1
  13. package/dist/cli/messenger/inbox.d.ts.map +1 -1
  14. package/dist/cli/messenger/inbox.js +8 -4
  15. package/dist/cli/messenger/inbox.js.map +1 -1
  16. package/dist/cli/messenger/mcp-command.d.ts +3 -1
  17. package/dist/cli/messenger/mcp-command.d.ts.map +1 -1
  18. package/dist/cli/messenger/mcp-command.js +29 -19
  19. package/dist/cli/messenger/mcp-command.js.map +1 -1
  20. package/dist/cli/messenger/messages-command.d.ts.map +1 -1
  21. package/dist/cli/messenger/messages-command.js +33 -11
  22. package/dist/cli/messenger/messages-command.js.map +1 -1
  23. package/dist/cli/messenger/messages-scheduled-command.d.ts.map +1 -1
  24. package/dist/cli/messenger/messages-scheduled-command.js +1 -0
  25. package/dist/cli/messenger/messages-scheduled-command.js.map +1 -1
  26. package/dist/cli/messenger/review.d.ts.map +1 -1
  27. package/dist/cli/messenger/review.js +17 -4
  28. package/dist/cli/messenger/review.js.map +1 -1
  29. package/dist/cli/messenger/watch-command.d.ts.map +1 -1
  30. package/dist/cli/messenger/watch-command.js +1 -0
  31. package/dist/cli/messenger/watch-command.js.map +1 -1
  32. package/dist/cli/paging.d.ts +3 -1
  33. package/dist/cli/paging.d.ts.map +1 -1
  34. package/dist/cli/paging.js +9 -2
  35. package/dist/cli/paging.js.map +1 -1
  36. package/dist/cli/runs/command.js +2 -2
  37. package/dist/cli/runs/command.js.map +1 -1
  38. package/dist/mcp/instructions.d.ts +3 -6
  39. package/dist/mcp/instructions.d.ts.map +1 -1
  40. package/dist/mcp/instructions.js +10 -12
  41. package/dist/mcp/instructions.js.map +1 -1
  42. package/dist/mcp/server.d.ts +6 -4
  43. package/dist/mcp/server.d.ts.map +1 -1
  44. package/dist/mcp/server.js +41 -26
  45. package/dist/mcp/server.js.map +1 -1
  46. package/dist/mcp/tool.d.ts +9 -3
  47. package/dist/mcp/tool.d.ts.map +1 -1
  48. package/dist/mcp/tool.js +5 -2
  49. package/dist/mcp/tool.js.map +1 -1
  50. package/dist/mcp/tools/chats-read.d.ts.map +1 -1
  51. package/dist/mcp/tools/chats-read.js +1 -0
  52. package/dist/mcp/tools/chats-read.js.map +1 -1
  53. package/dist/mcp/tools/inbox.d.ts.map +1 -1
  54. package/dist/mcp/tools/inbox.js +3 -1
  55. package/dist/mcp/tools/inbox.js.map +1 -1
  56. package/dist/mcp/tools/messages-send.d.ts.map +1 -1
  57. package/dist/mcp/tools/messages-send.js +10 -5
  58. package/dist/mcp/tools/messages-send.js.map +1 -1
  59. package/dist/mcp/tools/messages.d.ts.map +1 -1
  60. package/dist/mcp/tools/messages.js +3 -1
  61. package/dist/mcp/tools/messages.js.map +1 -1
  62. package/dist/mcp/tools/review.d.ts.map +1 -1
  63. package/dist/mcp/tools/review.js +20 -6
  64. package/dist/mcp/tools/review.js.map +1 -1
  65. package/dist/render/messages.d.ts +1 -1
  66. package/dist/render/messages.d.ts.map +1 -1
  67. package/dist/render/messages.js +10 -8
  68. package/dist/render/messages.js.map +1 -1
  69. package/dist/sends/upload.d.ts +18 -1
  70. package/dist/sends/upload.d.ts.map +1 -1
  71. package/dist/sends/upload.js +22 -0
  72. package/dist/sends/upload.js.map +1 -1
  73. package/dist/speech/hearing.d.ts +1 -1
  74. package/dist/speech/hearing.d.ts.map +1 -1
  75. package/dist/speech/hearing.js +7 -2
  76. package/dist/speech/hearing.js.map +1 -1
  77. package/dist/store/sqlite/drizzle/bun.js +1 -1
  78. package/dist/store/sqlite/drizzle/core.d.ts +2 -2
  79. package/dist/store/sqlite/drizzle/core.d.ts.map +1 -1
  80. package/dist/store/sqlite/drizzle/core.js +12 -1
  81. package/dist/store/sqlite/drizzle/core.js.map +4 -4
  82. package/dist/store/sqlite/drizzle/node.js +1 -1
  83. package/dist/store/sqlite/drizzle/{shared-CH747VCJ.js → shared-JAIU3GYB.js} +4 -1
  84. package/dist/store/sqlite/messages.d.ts +1 -0
  85. package/dist/store/sqlite/messages.d.ts.map +1 -1
  86. package/dist/store/sqlite/messages.js +40 -2
  87. package/dist/store/sqlite/messages.js.map +1 -1
  88. package/dist/store/sqlite/reads.d.ts +751 -0
  89. package/dist/store/sqlite/reads.d.ts.map +1 -0
  90. package/dist/store/sqlite/reads.js +177 -0
  91. package/dist/store/sqlite/reads.js.map +1 -0
  92. package/dist/store/sqlite/search.d.ts +496 -0
  93. package/dist/store/sqlite/search.d.ts.map +1 -0
  94. package/dist/store/sqlite/search.js +131 -0
  95. package/dist/store/sqlite/search.js.map +1 -0
  96. package/dist/store/store.d.ts.map +1 -1
  97. package/dist/store/store.js +20 -271
  98. package/dist/store/store.js.map +1 -1
  99. package/package.json +1 -1
  100. package/parity.json +6 -18
  101. /package/dist/store/sqlite/drizzle/{shared-CH747VCJ.js.map → shared-JAIU3GYB.js.map} +0 -0
package/README.md CHANGED
@@ -20,7 +20,7 @@ provider has travels in `providerMetadata`.
20
20
  | `.` | `Chat`, `Message`, `Contact`, `Page`… · `formatLocator` / `parseLocator` · `renderMessages` · `pickChat` / `pickPerson` |
21
21
  | `./store` | `openCache` — `node:sqlite` under Node, `bun:sqlite` under Bun, WAL and a busy timeout on both · `openStore` — the shared message store, every method async: one file for every messenger (`MESSAGING_STORE` overrides where), forward-only migrations with `min_compatible`, every sender an identity with a person of their own, edits kept as revisions, a message by its id, deletions kept as tombstones, trigram search · `find` — by text, by sender, or both; `together` for the chats where every sender wrote, `perChat` to cap each chat · `savePeople` and `people` — usernames and bot flags, and a `PeopleLookup` for `pickPerson` |
22
22
  | `./sends` | the send guard: a level per command path (`permissions`: deny, readonly, ask, allow — `readOnly` and `allow` read as levels), a recipient list, an hourly limit, and a journal of every attempt that never holds the text; `newSendId` for a send's identity across retries |
23
- | `./cli` | the command skeleton: `run` (never throws, returns an exit code), the global flags, `settingsFor` (flag → environment → file → default, one strict file schema with each CLI's own fields), the profile as the first word, `--timeout` that closes what a command holds, paging, and run records: `--record` keeps a run's ids and timings (never content), a failure is kept unless `--no-record`, and `runsCommand` gives `runs list\|show\|path` · `configCommand(app, config)` shows and changes the settings with where each came from · `completeCommand(messenger, config)` gives shell completion, chat ids from the store and never a connection · `doctorCommand(messenger)` reports the installation's state from disk (the store, the account, sends, runs, the messenger's own checks), and connects only with `--online`; `doctor report create` writes that, the failed run and the recent sends to a file with every id a label · `skillCommand(app, url)` prints the CLI's own SKILL.md for an agent (`skill show`) · `commandsCommand(app)` describes every command as JSON, with `contract` (`CONTRACT`, the major version of the output types) and which commands write · the shared read commands: a CLI describes its messenger once (`Messenger`: its app, a `connect` that returns a `MessengerAdapter`, how `me` maps to a chat) and gets `accountCommand`, `chatsCommand` (`list`, `show`), `contactsCommand` (`list`, `show`) `recipientsCommand`, `sendsCommand`, `watchCommand` (new messages as they arrive, `--jsonl`, until Ctrl-C or `--timeout`; `--events` adds edits, deletions and reactions, each kept in the store), `storeCommand` (the local store: `store fetch` puts a chat's history into it, resumable, FloodWait-aware, `--since` to stop at a time, `--background` for a detached job that `store jobs list|show|cancel` follow, `--estimate` to only price what is left from the store alone; `store status` what it holds; `store export` a chat's messages out of it, as JSON or `--format markdown`; `store info`, `store check`, `store migrate`, `store backup` and `store restore` look after the file itself — its size and schema, whether it is healthy and which chats are behind, bringing it up to this build, and a copy to go back to), `inboxCommand` (other people's unread messages in every chat, or with `--new` what arrived since the last check — each message once, the point moved only by a run that printed; copied from max-cli), `serveCommand` (keeps the store current until stopped — one per profile by a lock file, catch-up on, started by a person, `server start` or a unit), `serverCommand` (`server start|stop|restart|status|logs`: `serve` in the background, as max-cli's `server`; `install|uninstall` add a systemd user unit or a launchd agent per profile, and `install` starts nothing), and `messagesCommand` (`list`, `show`, `context`, `search` over the store by any three letters inside a word, or `--regex`, `send` through the send guard (`--reply-to`, `--silent`, `--no-preview`, `--md`, `--file` and `--photo` with the text as the caption, and `--at` to send later, with `scheduled` listing the queue), `edit` of the owner's own message, `forward` to another chat and `pin`/`unpin` through it too (the adapter's optional `edit`, `forward`, `pin` and `unpin`), and `delete` — at most 10, for the owner unless `--for-everyone`; it asks first by default, and `--allow-dangerous` is the yes · `reactionsCommand` (`add`, `remove`: the owner's reaction on a message, through the guard; the adapter's optional `react`) · `pollsCommand` (`show` a poll with its answer ids, `vote` by id or `--retract`, `close` the owner's own, `create` one — a vote guarded as a reaction, closing as an edit, a new poll as a message with a send id); a `msg:` locator names a message) — every read saved to the store, `--offline` answered from it, each call a run event · `mcpCommand(messenger)` serves the profile to an agent over MCP on stdin and stdout (copied from max-cli: one connection held for minutes, one call at a time, read tools named `<cli>_<command words>` answering what `--json` prints, `<cli>_status` without connecting; `--allow-send` adds `<cli>_messages_send`, `_edit`, `_forward`, `_pin`, `_unpin`, `<cli>_reactions_add`, `_remove`, `<cli>_polls_vote`, `_close` and `_create` (and `<cli>_polls_show` is a read tool) through the same guard as their commands, `--allow-mark-read` adds `<cli>_chats_mark_read` (`chats mark-read`: the other side sees it, so `--allow-send` does not imply it), `--allow-delete` adds `<cli>_messages_delete` (the owner's copy only, never for everyone), and `--confirm-send` shows the owner every send in a form from the server first), and `mcp config` prints the entry for a desktop client |
23
+ | `./cli` | the command skeleton: `run` (never throws, returns an exit code), the global flags, `settingsFor` (flag → environment → file → default, one strict file schema with each CLI's own fields), the profile as the first word, `--timeout` that closes what a command holds, paging, and run records: `--record` keeps a run's ids and timings (never content), a failure is kept unless `--no-record`, and `runsCommand` gives `runs list\|show\|path` · `configCommand(app, config)` shows and changes the settings with where each came from · `completeCommand(messenger, config)` gives shell completion, chat ids from the store and never a connection · `doctorCommand(messenger)` reports the installation's state from disk (the store, the account, sends, runs, the messenger's own checks), and connects only with `--online`; `doctor report create` writes that, the failed run and the recent sends to a file with every id a label · `skillCommand(app, url)` prints the CLI's own SKILL.md for an agent (`skill show`) · `commandsCommand(app)` describes every command as JSON, with `contract` (`CONTRACT`, the major version of the output types) and which commands write · the shared read commands: a CLI describes its messenger once (`Messenger`: its app, a `connect` that returns a `MessengerAdapter`, how `me` maps to a chat) and gets `accountCommand`, `chatsCommand` (`list`, `show`), `contactsCommand` (`list`, `show`) `recipientsCommand`, `sendsCommand`, `watchCommand` (new messages as they arrive, `--jsonl`, until Ctrl-C or `--timeout`; `--events` adds edits, deletions and reactions, each kept in the store), `storeCommand` (the local store: `store fetch` puts a chat's history into it, resumable, FloodWait-aware, `--since` to stop at a time, `--background` for a detached job that `store jobs list|show|cancel` follow, `--estimate` to only price what is left from the store alone; `store status` what it holds; `store export` a chat's messages out of it, as JSON or `--format markdown`; `store info`, `store check`, `store migrate`, `store backup` and `store restore` look after the file itself — its size and schema, whether it is healthy and which chats are behind, bringing it up to this build, and a copy to go back to), `inboxCommand` (other people's unread messages in every chat, or with `--new` what arrived since the last check — each message once, the point moved only by a run that printed; copied from max-cli), `serveCommand` (keeps the store current until stopped — one per profile by a lock file, catch-up on, started by a person, `server start` or a unit), `serverCommand` (`server start|stop|restart|status|logs`: `serve` in the background, as max-cli's `server`; `install|uninstall` add a systemd user unit or a launchd agent per profile, and `install` starts nothing), and `messagesCommand` (`list`, `show`, `context`, `search` over the store by any three letters inside a word, or `--regex`, `send` through the send guard (`--reply-to`, `--silent`, `--no-preview`, `--md`, `--file` and `--photo` with the text as the caption, and `--at` to send later, with `scheduled` listing the queue), `edit` of the owner's own message, `forward` to another chat and `pin`/`unpin` through it too (the adapter's optional `edit`, `forward`, `pin` and `unpin`), and `delete` — at most 10, for the owner unless `--for-everyone`; it asks first by default, and `--allow-dangerous` is the yes · `reactionsCommand` (`add`, `remove`: the owner's reaction on a message, through the guard; the adapter's optional `react`) · `pollsCommand` (`show` a poll with its answer ids, `vote` by id or `--retract`, `close` the owner's own, `create` one — a vote guarded as a reaction, closing as an edit, a new poll as a message with a send id); a `msg:` locator names a message) — every read saved to the store, `--offline` answered from it, each call a run event · `mcpCommand(messenger)` serves the profile to an agent over MCP on stdin and stdout (copied from max-cli: one connection held for minutes, one call at a time, read tools named `<cli>_<command words>` answering what `--json` prints, `<cli>_status` without connecting; the write tools — `<cli>_messages_send`, `_edit`, `_forward`, `_pin`, `_unpin`, `_delete`, `<cli>_reactions_add`, `_remove`, `<cli>_chats_mark_read`, `<cli>_polls_vote`, `_close` and `_create` — are offered by the profile's `permissions` and run through the same guard as their commands; a write at level `ask` shows the owner a form first (`--allow-dangerous` or `--yes` skips it), `--confirm-send` puts every write through the form, and `messages_delete` never deletes for everyone), and `mcp config` prints the entry for a desktop client |
24
24
 
25
25
  ⚠ **Errors are recognised by shape, not by class** (`isCliFailure`). A package linked during
26
26
  development brings its own copy of cli-core, and an error built by one copy is not an `instanceof`
package/dist/cli/app.d.ts CHANGED
@@ -10,6 +10,8 @@ export interface AppIdentity {
10
10
  version: string;
11
11
  /** Where a problem report goes — a new-issue page. `doctor report create` names it. */
12
12
  issues?: string;
13
+ /** The language of the transcript a person reads: its day headings and the word for "you". `ru-RU` when unset. */
14
+ locale?: string;
13
15
  }
14
16
  export declare const envName: (app: AppIdentity, name: string) => string;
15
17
  //# sourceMappingURL=app.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/cli/app.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,MAAM,WAAW,WAAW;IAC1B,0FAA0F;IAC1F,OAAO,EAAE,MAAM,CAAA;IACf,uFAAuF;IACvF,OAAO,EAAE,MAAM,CAAA;IACf,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,eAAO,MAAM,OAAO,QAAS,WAAW,QAAQ,MAAM,KAAG,MAAoC,CAAA"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/cli/app.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,MAAM,WAAW,WAAW;IAC1B,0FAA0F;IAC1F,OAAO,EAAE,MAAM,CAAA;IACf,uFAAuF;IACvF,OAAO,EAAE,MAAM,CAAA;IACf,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,kHAAkH;IAClH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,eAAO,MAAM,OAAO,QAAS,WAAW,QAAQ,MAAM,KAAG,MAAoC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/cli/app.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAgB,EAAE,IAAY,EAAU,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,IAAI,IAAI,EAAE,CAAA"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/cli/app.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAgB,EAAE,IAAY,EAAU,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,IAAI,IAAI,EAAE,CAAA"}
@@ -82,6 +82,7 @@ const exportCommand = (messenger) => new Command("export")
82
82
  senderColors: context.settings.senderColors,
83
83
  profile: context.profile,
84
84
  provider: messenger.provider,
85
+ locale: messenger.app.locale,
85
86
  }));
86
87
  context.renderer.note(`${messages.length} messages`);
87
88
  });
@@ -1 +1 @@
1
- {"version":3,"file":"archive-commands.js","sourceRoot":"","sources":["../../../src/cli/messenger/archive-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"archive-commands.js","sourceRoot":"","sources":["../../../src/cli/messenger/archive-commands.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { annotate } from "@leemour/cli-core/commands";
3
3
  import { Command } from "commander";
4
4
  import { SendJournal, sendsPathFor } from "../../sends/journal.js";
5
5
  import { RecipientList, recipientsPathFor } from "../../sends/recipients.js";
6
- import { renderPage } from "../paging.js";
6
+ import { positiveCount, renderPage } from "../paging.js";
7
7
  import { messengerContext } from "./context.js";
8
8
  /**
9
9
  * The chats this profile may send to. Off until the first `add`; `clear` deletes it, which turns it off again. It stops
@@ -61,7 +61,7 @@ export const recipientsCommand = (messenger) => {
61
61
  /** Every attempt to send from this profile, kept whatever `--record` says. Never the text. */
62
62
  export const sendsCommand = (messenger) => new Command("sends").description("every attempt to send from this profile — never the text").addCommand(new Command("list")
63
63
  .description("attempts to send, newest first: sent, refused, failed, or not known")
64
- .option("--limit <n>", "how many to show", (value) => Number.parseInt(value, 10))
64
+ .option("--limit <n>", "how many to show", positiveCount("--limit"))
65
65
  .action(async function () {
66
66
  const context = messengerContext(this, messenger);
67
67
  const { settings, renderer, env } = context;
@@ -1 +1 @@
1
- {"version":3,"file":"guard-commands.js","sourceRoot":"","sources":["../../../src/cli/messenger/guard-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guard-commands.js","sourceRoot":"","sources":["../../../src/cli/messenger/guard-commands.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,14 @@ import type { Message } from "../../domain/models.js";
2
2
  import { type Hearing } from "../../speech/hearing.js";
3
3
  import type { Messenger, MessengerContext } from "./context.js";
4
4
  export declare const TRANSCRIBE_OPTION: readonly ["--transcribe", "turn voice messages not heard yet into text — by the messenger, or a model on this machine; can take minutes"];
5
+ export declare const MODEL_OPTION: readonly ["--model <id>", "which downloaded speech model hears them, with --transcribe; `models audio list` shows them"];
6
+ /** `--model` chooses who hears what `--transcribe` asks for; alone it would quietly do nothing. */
7
+ export declare const modelWith: (transcribe: boolean | undefined, model: string | undefined) => string | undefined;
5
8
  /**
6
9
  * Kept transcripts on every read; new ones with `--transcribe`, over a connection of their own once
7
10
  * the messages are read. `undefined` when there is no voice message, and then no file is opened.
8
11
  */
9
- export declare const hearForCommand: (context: MessengerContext, messenger: Messenger, messages: readonly Message[], transcribe: boolean) => Promise<Hearing | undefined>;
12
+ export declare const hearForCommand: (context: MessengerContext, messenger: Messenger, messages: readonly Message[], transcribe: boolean, model?: string) => Promise<Hearing | undefined>;
10
13
  export { heard as heardItems } from "../../speech/hearing.js";
11
14
  /** The messages as a person reads them: the transcript under the text. */
12
15
  export declare const spokenItems: <T extends Message>(messages: readonly T[], hearing: Hearing | undefined) => T[];
@@ -1 +1 @@
1
- {"version":3,"file":"hearing-command.d.ts","sourceRoot":"","sources":["../../../src/cli/messenger/hearing-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,KAAK,OAAO,EAAyD,MAAM,yBAAyB,CAAA;AAE7G,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/D,eAAO,MAAM,iBAAiB,YAC5B,cAAc,EACd,8GAA8G,CACtG,CAAA;AAEV;;;GAGG;AACH,eAAO,MAAM,cAAc,YAChB,gBAAgB,aACd,SAAS,YACV,SAAS,OAAO,EAAE,cAChB,OAAO,KAClB,OAAO,CAAC,OAAO,GAAG,SAAS,CAyB7B,CAAA;AAED,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAE7D,0EAA0E;AAC1E,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,OAAO,YAAY,SAAS,CAAC,EAAE,WAAW,OAAO,GAAG,SAAS,KAAG,CAAC,EACH,CAAA;AAEpG,gEAAgE;AAChE,eAAO,MAAM,aAAa,YAAa,OAAO,GAAG,SAAS,cAAc,OAAO;;;;CACxB,CAAA"}
1
+ {"version":3,"file":"hearing-command.d.ts","sourceRoot":"","sources":["../../../src/cli/messenger/hearing-command.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,KAAK,OAAO,EAAyD,MAAM,yBAAyB,CAAA;AAE7G,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/D,eAAO,MAAM,iBAAiB,YAC5B,cAAc,EACd,8GAA8G,CACtG,CAAA;AAEV,eAAO,MAAM,YAAY,YACvB,cAAc,EACd,6FAA6F,CACrF,CAAA;AAEV,mGAAmG;AACnG,eAAO,MAAM,SAAS,eAAgB,OAAO,GAAG,SAAS,SAAS,MAAM,GAAG,SAAS,KAAG,MAAM,GAAG,SAK/F,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,YAChB,gBAAgB,aACd,SAAS,YACV,SAAS,OAAO,EAAE,cAChB,OAAO,UACX,MAAM,KACb,OAAO,CAAC,OAAO,GAAG,SAAS,CAyB7B,CAAA;AAED,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAE7D,0EAA0E;AAC1E,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,OAAO,YAAY,SAAS,CAAC,EAAE,WAAW,OAAO,GAAG,SAAS,KAAG,CAAC,EACH,CAAA;AAEpG,gEAAgE;AAChE,eAAO,MAAM,aAAa,YAAa,OAAO,GAAG,SAAS,cAAc,OAAO;;;;CACxB,CAAA"}
@@ -1,14 +1,26 @@
1
+ import { CliError } from "@leemour/cli-core";
1
2
  import { hearVoices, isVoice, openKept, spoken, withTranscript } from "../../speech/hearing.js";
2
3
  import { choose } from "../../speech/transcribe.js";
3
4
  export const TRANSCRIBE_OPTION = [
4
5
  "--transcribe",
5
6
  "turn voice messages not heard yet into text — by the messenger, or a model on this machine; can take minutes",
6
7
  ];
8
+ export const MODEL_OPTION = [
9
+ "--model <id>",
10
+ "which downloaded speech model hears them, with --transcribe; `models audio list` shows them",
11
+ ];
12
+ /** `--model` chooses who hears what `--transcribe` asks for; alone it would quietly do nothing. */
13
+ export const modelWith = (transcribe, model) => {
14
+ if (model !== undefined && transcribe !== true) {
15
+ throw new CliError("validation_error", "--model picks who hears voice messages with --transcribe; add --transcribe");
16
+ }
17
+ return model;
18
+ };
7
19
  /**
8
20
  * Kept transcripts on every read; new ones with `--transcribe`, over a connection of their own once
9
21
  * the messages are read. `undefined` when there is no voice message, and then no file is opened.
10
22
  */
11
- export const hearForCommand = async (context, messenger, messages, transcribe) => {
23
+ export const hearForCommand = async (context, messenger, messages, transcribe, model) => {
12
24
  if (!messages.some(isVoice))
13
25
  return undefined;
14
26
  const offline = context.settings.offline;
@@ -18,7 +30,7 @@ export const hearForCommand = async (context, messenger, messages, transcribe) =
18
30
  try {
19
31
  const hearing = await hearVoices(messenger, messages, kept, transcribe && !offline
20
32
  ? {
21
- choice: choose(messenger, context.settings, {}, context.env),
33
+ choice: choose(messenger, context.settings, model === undefined ? {} : { model }, context.env),
22
34
  connect: (work) => context.withMessenger(work),
23
35
  }
24
36
  : undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"hearing-command.js","sourceRoot":"","sources":["../../../src/cli/messenger/hearing-command.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7G,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAGnD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,cAAc;IACd,8GAA8G;CACtG,CAAA;AAEV;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,OAAyB,EACzB,SAAoB,EACpB,QAA4B,EAC5B,UAAmB,EACW,EAAE;IAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAA;IAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAA;IACxC,IAAI,UAAU,IAAI,OAAO;QAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAA;IAC/G,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;IACpE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,UAAU,CAC9B,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,UAAU,IAAI,CAAC,OAAO;YACpB,CAAC,CAAC;gBACE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC;gBAC5D,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC;aAC/C;YACH,CAAC,CAAC,SAAS,CACd,CAAA;QACD,IAAI,UAAU,IAAI,OAAO,CAAC,OAAO;YAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;aAC1F,IAAI,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,mDAAmD,CAAC,CAAA;QACrG,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;YAAS,CAAC;QACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;AACH,CAAC,CAAA;AAED,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAE7D,0EAA0E;AAC1E,MAAM,CAAC,MAAM,WAAW,GAAG,CAAoB,QAAsB,EAAE,OAA4B,EAAO,EAAE,CAC1G,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAA;AAEpG,gEAAgE;AAChE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAA4B,EAAE,UAAmB,EAAE,EAAE,CACjF,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA"}
1
+ {"version":3,"file":"hearing-command.js","sourceRoot":"","sources":["../../../src/cli/messenger/hearing-command.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../../src/cli/messenger/inbox.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAyB,MAAM,wBAAwB,CAAA;AAGhF,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,cAAc,CAAA;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEjD;;;GAGG;AACH,eAAO,MAAM,WAAW,KAAK,CAAA;AAC7B,iGAAiG;AACjG,eAAO,MAAM,WAAW,MAAM,CAAA;AAG9B,eAAO,MAAM,SAAS,UAAW,IAAI,EAAE,KAAG,IAAI,EACmD,CAAA;AAMjG,eAAO,MAAM,KAAK,UAAW,IAAI,EAAE,OAAO,OAAO;;;CAG2C,CAAA;AAE5F,eAAO,MAAM,MAAM,UAAW,IAAI,EAAE,QAAQ,MAAM;IAChD,IAAI;IACJ,OAAO;;;;;CACP,CAAA;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,YACV,gBAAgB,kBACD;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,KACvD,OAAO,CAAC,KAAK,CAcf,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,YACP,gBAAgB,yBACM;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,KAC7E,OAAO,CAAC,KAAK,CAgCf,CAAA;AAKD;;;GAGG;AACH,eAAO,MAAM,QAAQ,cAAe,MAAM,kCAAuC,MAchF,CAAA;AAiBD;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,cAAe,SAAS,KAAG,OAyF9C,CAAA"}
1
+ {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../../src/cli/messenger/inbox.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAyB,MAAM,wBAAwB,CAAA;AAIhF,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,cAAc,CAAA;AAU/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEjD;;;GAGG;AACH,eAAO,MAAM,WAAW,KAAK,CAAA;AAC7B,iGAAiG;AACjG,eAAO,MAAM,WAAW,MAAM,CAAA;AAG9B,eAAO,MAAM,SAAS,UAAW,IAAI,EAAE,KAAG,IAAI,EACmD,CAAA;AAMjG,eAAO,MAAM,KAAK,UAAW,IAAI,EAAE,OAAO,OAAO;;;CAG2C,CAAA;AAE5F,eAAO,MAAM,MAAM,UAAW,IAAI,EAAE,QAAQ,MAAM;IAChD,IAAI;IACJ,OAAO;;;;;CACP,CAAA;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,YACV,gBAAgB,kBACD;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,KACvD,OAAO,CAAC,KAAK,CAcf,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,YACP,gBAAgB,yBACM;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,KAC7E,OAAO,CAAC,KAAK,CAgCf,CAAA;AAKD;;;GAGG;AACH,eAAO,MAAM,QAAQ,cAAe,MAAM,kCAAuC,MAchF,CAAA;AAiBD;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,cAAe,SAAS,KAAG,OA8F9C,CAAA"}
@@ -3,8 +3,9 @@ import { join } from "node:path";
3
3
  import { CliError, resolvePaths, writeSecurely } from "@leemour/cli-core";
4
4
  import { Command } from "commander";
5
5
  import { renderMessages } from "../../render/messages.js";
6
+ import { positiveCount } from "../paging.js";
6
7
  import { messengerContext } from "./context.js";
7
- import { heardItems, hearForCommand, hearingFields, spokenItems, TRANSCRIBE_OPTION } from "./hearing-command.js";
8
+ import { heardItems, hearForCommand, hearingFields, MODEL_OPTION, modelWith, spokenItems, TRANSCRIBE_OPTION, } from "./hearing-command.js";
8
9
  /**
9
10
  * **At most this many history reads per `inbox`**, as in max-cli: a person opening twenty chats in
10
11
  * one burst is already more than a person does, and the rest are named in `skipped`, not lost.
@@ -130,11 +131,13 @@ export const inboxCommand = (messenger) => new Command("inbox")
130
131
  .description("other people's unread messages in every chat; --new for what arrived since the last check")
131
132
  .option("--new", "what arrived since the last check, each message once — for scheduled runs")
132
133
  .option("--since <time>", "what arrived after this ISO 8601 time, or 2h / 1d ago; the saved point stays put")
133
- .option("--limit <n>", "at most this many per chat, the newest", (value) => Number.parseInt(value, 10))
134
+ .option("--limit <n>", "at most this many per chat, the newest", positiveCount("--limit"))
134
135
  .option("--all", "muted and archived chats too — left out unless they mention you or reply to you")
135
136
  .option(...TRANSCRIBE_OPTION)
137
+ .option(...MODEL_OPTION)
136
138
  .action(async function () {
137
- const { new: fresh, since, all, transcribe, } = this.opts();
139
+ const { new: fresh, since, all, transcribe, model, } = this.opts();
140
+ const hearWith = modelWith(transcribe, model);
138
141
  const context = messengerContext(this, messenger);
139
142
  const { app } = messenger;
140
143
  const { settings, renderer, format, streams, env } = context;
@@ -165,7 +168,7 @@ export const inboxCommand = (messenger) => new Command("inbox")
165
168
  if (inbox.partial)
166
169
  renderer.note(`only the ${CHAT_WINDOW} newest chats were looked at; an older one may have more`);
167
170
  const read = inbox.chats.flatMap((chat) => chat.messages.map((message) => ({ ...message, chatTitle: chat.title })));
168
- const hearing = await hearForCommand(context, messenger, read, transcribe === true);
171
+ const hearing = await hearForCommand(context, messenger, read, transcribe === true, hearWith);
169
172
  const messages = heardItems(read, hearing);
170
173
  if (format === "jsonl")
171
174
  renderer.stream(messages);
@@ -187,6 +190,7 @@ export const inboxCommand = (messenger) => new Command("inbox")
187
190
  senderColors: settings.senderColors,
188
191
  profile: context.profile,
189
192
  provider: messenger.provider,
193
+ locale: messenger.app.locale,
190
194
  }));
191
195
  }
192
196
  if (fresh && since === undefined && inbox.until !== undefined && inbox.until !== inbox.since) {
@@ -1 +1 @@
1
- {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../../src/cli/messenger/inbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../../src/cli/messenger/inbox.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,10 @@ export interface McpEnvironment extends BaseEnvironment {
10
10
  };
11
11
  }
12
12
  export interface McpFlags {
13
- allowSend?: boolean;
14
13
  confirmSend?: boolean;
14
+ allowDangerous?: boolean;
15
+ yes?: boolean;
16
+ allowSend?: boolean;
15
17
  allowMarkRead?: boolean;
16
18
  allowDelete?: boolean;
17
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-command.d.ts","sourceRoot":"","sources":["../../../src/cli/messenger/mcp-command.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,KAAK,WAAW,EAAW,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,eAAe,CAAA;AACnE,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,cAAc,CAAA;AAE/D,mEAAmE;AACnE,MAAM,WAAW,cAAe,SAAQ,eAAe;IACrD,GAAG,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACjD;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAmBD,eAAO,MAAM,UAAU,cAAe,SAAS,KAAG,OAyCjD,CAAA;AAID;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,QACjB,WAAW,kDAOb;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;CAAE,KACrG;IAAE,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAkCpE,CAAA"}
1
+ {"version":3,"file":"mcp-command.d.ts","sourceRoot":"","sources":["../../../src/cli/messenger/mcp-command.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,KAAK,WAAW,EAAW,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,eAAe,CAAA;AACnE,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,cAAc,CAAA;AAE/D,mEAAmE;AACnE,MAAM,WAAW,cAAe,SAAQ,eAAe;IACrD,GAAG,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACjD;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAuBD,eAAO,MAAM,UAAU,cAAe,SAAS,KAAG,OA6CjD,CAAA;AAID;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,QACjB,WAAW,kDAOb;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;CAAE,KACrG;IAAE,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAiCpE,CAAA"}
@@ -5,32 +5,40 @@ import { Command } from "commander";
5
5
  import { envName } from "../app.js";
6
6
  import { environmentOf } from "../context.js";
7
7
  import { messengerContext } from "./context.js";
8
+ /** They decided which tools were offered; the profile's permissions do now. Kept so a configured agent still starts. */
9
+ const RETIRED = ["allowSend", "allowMarkRead", "allowDelete"];
8
10
  const withFlags = (command) => command
9
- .option("--allow-send", "offer the send tool; without it the server can only read")
10
- .option("--confirm-send", "show the owner every send in a form from the server first")
11
- .option("--allow-mark-read", "offer the tool that marks a chat read; the other side sees it")
12
- .option("--allow-delete", "offer the tool that deletes the owner's own copy of messages; never for everyone");
13
- const checked = (flags) => {
14
- if (flags.confirmSend && !flags.allowSend && !flags.allowMarkRead && !flags.allowDelete) {
15
- throw new CliError("validation_error", "`--confirm-send` confirms writes, and without `--allow-send`, `--allow-mark-read` or `--allow-delete` there are none");
16
- }
17
- return flags;
11
+ .option("--confirm-send", "show the owner every write in a form from the server first")
12
+ .option("--allow-dangerous", "no form before a deletion whose permission level is ask")
13
+ .option("--allow-send", "no longer used — the profile's permissions decide; kept so an old setup still starts")
14
+ .option("--allow-mark-read", "no longer used — the profile's permissions decide")
15
+ .option("--allow-delete", "no longer used — the profile's permissions decide");
16
+ const retiredNote = (app, flags) => {
17
+ const given = RETIRED.filter((flag) => flags[flag] === true);
18
+ if (given.length === 0)
19
+ return undefined;
20
+ const names = given.map((flag) => `--${flag.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`)}`);
21
+ return (`${names.join(", ")} no longer decide${given.length === 1 ? "s" : ""} anything: the profile's permissions do — ` +
22
+ `\`${app.command} config show permissions\``);
18
23
  };
19
24
  export const mcpCommand = (messenger) => {
20
25
  const { app } = messenger;
21
26
  const command = withFlags(new Command("mcp").description(`serve this profile to an agent over MCP, on stdin and stdout — \`claude mcp add ${app.command} -- ${app.command} mcp\``)).action(async function () {
22
- const { allowSend, confirmSend, allowMarkRead, allowDelete } = checked(this.opts());
27
+ const flags = this.optsWithGlobals();
28
+ const context = messengerContext(this, messenger);
29
+ const note = retiredNote(app, flags);
30
+ if (note)
31
+ context.renderer.warn(note);
23
32
  // Loaded here, not at the top: every other command would otherwise pay for the SDK.
24
33
  const { serveOverStdio } = await import("../../mcp/server.js");
25
- await serveOverStdio(this, messengerContext(this, messenger), messenger, {
26
- allowSend: allowSend === true,
27
- confirmSend: confirmSend === true,
28
- allowMarkRead: allowMarkRead === true,
29
- allowDelete: allowDelete === true,
34
+ await serveOverStdio(this, context, messenger, {
35
+ confirmSend: flags.confirmSend === true,
36
+ yes: flags.yes === true,
37
+ allowDangerous: flags.allowDangerous === true,
30
38
  });
31
39
  });
32
40
  command.addCommand(withFlags(new Command("config").description("print the mcpServers entry for Claude Desktop, Cursor and others, with full paths; writes nothing")).action(async function () {
33
- const flags = checked(this.optsWithGlobals());
41
+ const flags = this.optsWithGlobals();
34
42
  const { renderer, settings, format, streams, env } = messengerContext(this, messenger);
35
43
  const given = environmentOf(this).mcp ?? {};
36
44
  const entry = serverEntry(app, {
@@ -47,6 +55,9 @@ export const mcpCommand = (messenger) => {
47
55
  renderer.result(entry.config);
48
56
  if (entry.warning)
49
57
  renderer.note(entry.warning);
58
+ const note = retiredNote(app, flags);
59
+ if (note)
60
+ renderer.warn(note);
50
61
  }));
51
62
  return command;
52
63
  };
@@ -77,10 +88,9 @@ export const serverEntry = (app, { profile, flags = {}, execPath, scriptPath, en
77
88
  scriptPath,
78
89
  ...(profile === "default" ? [] : [profile]),
79
90
  "mcp",
80
- ...(flags.allowSend ? ["--allow-send"] : []),
81
91
  ...(flags.confirmSend ? ["--confirm-send"] : []),
82
- ...(flags.allowMarkRead ? ["--allow-mark-read"] : []),
83
- ...(flags.allowDelete ? ["--allow-delete"] : []),
92
+ ...(flags.allowDangerous ? ["--allow-dangerous"] : []),
93
+ ...(flags.yes ? ["--yes"] : []),
84
94
  ],
85
95
  ...(Object.keys(directories).length > 0 ? { env: directories } : {}),
86
96
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-command.js","sourceRoot":"","sources":["../../../src/cli/messenger/mcp-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-command.js","sourceRoot":"","sources":["../../../src/cli/messenger/mcp-command.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"messages-command.d.ts","sourceRoot":"","sources":["../../../src/cli/messenger/messages-command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,cAAc,CAAA;AAW/D,6FAA6F;AAC7F,eAAO,MAAM,eAAe,cAAe,SAAS,KAAG,OAoJtD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,cAAe,SAAS,KAAG,OAmB7C,CAAA"}
1
+ {"version":3,"file":"messages-command.d.ts","sourceRoot":"","sources":["../../../src/cli/messenger/messages-command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOnC,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,cAAc,CAAA;AAmB/D,6FAA6F;AAC7F,eAAO,MAAM,eAAe,cAAe,SAAS,KAAG,OA0KtD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,cAAe,SAAS,KAAG,OAqB7C,CAAA"}
@@ -4,11 +4,12 @@ import { Command } from "commander";
4
4
  import { isLocator, parseLocator } from "../../domain/locator.js";
5
5
  import { sendTime } from "../../domain/send-time.js";
6
6
  import { renderMessages } from "../../render/messages.js";
7
- import { readUpload } from "../../sends/upload.js";
7
+ import { readAttachments } from "../../sends/upload.js";
8
+ import { positiveCount } from "../paging.js";
8
9
  import { afterOf, oneDirection } from "./after.js";
9
10
  import { messengerContext } from "./context.js";
10
11
  import { downloadSubcommand } from "./download-command.js";
11
- import { heardItems, hearForCommand, hearingFields, spokenItems, TRANSCRIBE_OPTION } from "./hearing-command.js";
12
+ import { heardItems, hearForCommand, hearingFields, MODEL_OPTION, modelWith, spokenItems, TRANSCRIBE_OPTION, } from "./hearing-command.js";
12
13
  import { deleteCommand } from "./messages-delete-command.js";
13
14
  import { editCommand } from "./messages-edit-command.js";
14
15
  import { forwardCommand } from "./messages-forward-command.js";
@@ -23,21 +24,33 @@ export const messagesCommand = (messenger) => {
23
24
  .command("list")
24
25
  .description("a chat's messages, oldest to newest")
25
26
  .argument("<chat>", messenger.chatArgument)
26
- .option("--limit <n>", "how many", (value) => Number.parseInt(value, 10))
27
+ .option("--limit <n>", "how many", positiveCount("--limit"))
27
28
  .option("--before <id>", "only messages older than this message id")
28
29
  .option("--after <id-or-time>", "only messages newer than this message id, ISO 8601 time, or 2h / 1d ago")
29
30
  .option(...TRANSCRIBE_OPTION)
31
+ .option(...MODEL_OPTION)
32
+ .option("--mark-read", "also mark the chat read up to the newest message shown; the other person sees it")
30
33
  .action(async function (chat) {
31
34
  const context = messengerContext(this, messenger);
32
- const { before, after, transcribe } = this.opts();
35
+ const { before, after, transcribe, model, markRead } = this.opts();
33
36
  oneDirection(before, after);
37
+ const hearWith = modelWith(transcribe, model);
38
+ if (markRead && context.settings.offline) {
39
+ throw new CliError("validation_error", "--mark-read tells the messenger; not with --offline");
40
+ }
34
41
  const { limit } = context.settings;
35
42
  const page = await context.withServices((services) => services.messages.list(chat, {
36
43
  limit,
37
44
  ...(before === undefined ? {} : { before }),
38
45
  ...(after === undefined ? {} : { after: afterOf(after) }),
39
46
  }));
40
- const hearing = await hearForCommand(context, messenger, page.items, transcribe === true);
47
+ const hearing = await hearForCommand(context, messenger, page.items, transcribe === true, hearWith);
48
+ const newest = page.items.at(-1);
49
+ const marked = markRead && newest
50
+ ? await context.withServices((services) => services.chats.markRead({ chat, until: newest.id }))
51
+ : undefined;
52
+ if (marked)
53
+ context.renderer.note(`marked read up to ${marked.until}`);
41
54
  const next = (items) => after === undefined ? `older messages: --before ${items[0]?.id}` : `newer messages: --after ${items.at(-1)?.id}`;
42
55
  if (context.format === "pretty") {
43
56
  // Straight to stdout: the pretty renderer keeps every string to one line, and a feed is many.
@@ -47,6 +60,7 @@ export const messagesCommand = (messenger) => {
47
60
  senderColors: context.settings.senderColors,
48
61
  profile: context.profile,
49
62
  provider: messenger.provider,
63
+ locale: messenger.app.locale,
50
64
  }));
51
65
  if (page.hasMore)
52
66
  context.renderer.note(next(page.items));
@@ -63,6 +77,7 @@ export const messagesCommand = (messenger) => {
63
77
  limit,
64
78
  hasMore: page.hasMore,
65
79
  ...hearingFields(hearing, transcribe === true),
80
+ ...(marked ? { markedRead: { operationId: marked.operationId, until: marked.until } } : {}),
66
81
  });
67
82
  });
68
83
  const readWindow = async (command, chat, message, window) => {
@@ -76,6 +91,7 @@ export const messagesCommand = (messenger) => {
76
91
  senderColors: context.settings.senderColors,
77
92
  profile: context.profile,
78
93
  provider: messenger.provider,
94
+ locale: messenger.app.locale,
79
95
  }));
80
96
  }
81
97
  else if (context.format === "jsonl")
@@ -88,7 +104,7 @@ export const messagesCommand = (messenger) => {
88
104
  .description("search the local store — what was read, fetched or kept by serve; never asks the messenger")
89
105
  .argument("<text...>", "every word must appear, as a word or the start of one: квартир finds квартира")
90
106
  .option("--chat <chat>", `only this chat: ${messenger.chatArgument}`)
91
- .option("--limit <n>", "how many", (value) => Number.parseInt(value, 10))
107
+ .option("--limit <n>", "how many", positiveCount("--limit"))
92
108
  .option("--regex", "the words are one regular expression, case-insensitive, tested against every stored text")
93
109
  .action(async function (words) {
94
110
  const context = messengerContext(this, messenger);
@@ -108,6 +124,7 @@ export const messagesCommand = (messenger) => {
108
124
  senderColors: context.settings.senderColors,
109
125
  profile: context.profile,
110
126
  provider: messenger.provider,
127
+ locale: messenger.app.locale,
111
128
  })}`)
112
129
  .join("\n"));
113
130
  if (page.items.length === 0)
@@ -164,6 +181,8 @@ export const sendCommand = (messenger) => annotate(new Command("send"), { mutate
164
181
  .option("--md, --markdown", "read **bold**, _italic_, ~~struck~~ and `code` in the text; \\ keeps a mark literal")
165
182
  .option("--file <path>", "attach a file; the text becomes its caption")
166
183
  .option("--photo <path>", "attach a .jpg, .png or .webp as a photo; the text becomes its caption")
184
+ .option("--as-file", "send the --file as a file to download, a video included")
185
+ .option("--voice <path>", "send an Ogg Opus file as a voice message, alone, with no text")
167
186
  .option("--allow-any-file", "send a file even from a hidden folder, ~/.ssh or this CLI's own folders")
168
187
  .option("--at <time>", "let the messenger send it later, even with this machine off: 2026-09-25T09:00 (local time), or 30m, 2h, 1d from now")
169
188
  .action(async function (chat, text) {
@@ -171,16 +190,19 @@ export const sendCommand = (messenger) => annotate(new Command("send"), { mutate
171
190
  });
172
191
  const sendText = async (command, messenger, chat, text) => {
173
192
  const context = messengerContext(command, messenger);
174
- const { replyTo: typedReplyTo, sendId, silent, preview, markdown, at, file, photo, allowAnyFile, } = command.opts();
193
+ const { replyTo: typedReplyTo, sendId, silent, preview, markdown, at, file, photo, voice, asFile, allowAnyFile, } = command.opts();
175
194
  const scheduledFor = at === undefined ? undefined : sendTime(at);
176
195
  const replyTo = typedReplyTo?.trim();
177
196
  if (replyTo === "")
178
197
  throw new CliError("validation_error", "--reply-to needs the id of the message to answer");
179
198
  const read = { app: messenger.app, env: context.env, anyFile: allowAnyFile === true };
180
- const attachments = [
181
- ...(photo === undefined ? [] : [await readUpload("photo", photo, read)]),
182
- ...(file === undefined ? [] : [await readUpload("file", file, read)]),
183
- ];
199
+ const attachments = await readAttachments({
200
+ ...(photo === undefined ? {} : { photo }),
201
+ ...(file === undefined ? {} : { file }),
202
+ ...(voice === undefined ? {} : { voice }),
203
+ ...(text === undefined ? {} : { text }),
204
+ asFile: asFile === true,
205
+ }, read);
184
206
  const body = text ?? (attachments.length > 0 ? "" : await readAll(context.stdin));
185
207
  if (body.trim() === "" && attachments.length === 0) {
186
208
  throw new CliError("validation_error", "nothing to send — give the text or pipe it in");