@wirecat/cli-core 0.404.0 → 0.405.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/CHANGELOG.md CHANGED
@@ -7,6 +7,27 @@ shape of this file.
7
7
 
8
8
  ## Unreleased
9
9
 
10
+ ## 0.405.0 — 24.10.2026
11
+
12
+ ### Added
13
+
14
+ - **Messengers can opt in to `messages send --draft`.** Set the optional `drafts` trait and implement the optional
15
+ `saveDraft` port to save text for the owner to review and send. The write is guarded by `drafts`; empty drafts
16
+ and send-only options are refused. Existing adapters and command trees stay unchanged until they opt in.
17
+
18
+ ### Changed — may break callers
19
+
20
+ - **The first-run permission question is one switch: read only, or read and write.** It reads the same for a person, a script and an agent over MCP; "read and write" (was "as now") leaves each profile's own permissions in place. A stored `ask` answer is no longer accepted, and none was ever written.
21
+
22
+ - **Flag renames first shipped in 0.399.0 also affect callers upgrading directly from 0.398.0 or earlier.** Use
23
+ `--analysis-provider`, `--embedding-provider`, `--consent-provider`, `--claim`, `--answer-model`, `--template-mode`,
24
+ `--disappear-after` and `--text-file`; see the 0.399.0 notes for the retired spellings and query replacements.
25
+
26
+ ### Fixed
27
+
28
+ - WhatsApp parity allows hiding commands to end other sessions and remove contacts while it adopts
29
+ the linked-device capability declarations. Telegram and MAX still require both commands.
30
+
10
31
  ## 0.404.0 — 24.10.2026
11
32
 
12
33
  ### Added
@@ -155,13 +155,13 @@ const askTools = async (run) => {
155
155
  }
156
156
  };
157
157
  const PERMISSION_CHOICES = [
158
- { answer: "readonly", text: "read only — search and read; nothing sends or changes, bots and agents included" },
159
- { answer: "allow", text: "as now — each profile's own permissions" },
158
+ { answer: "readonly", text: "read only — search and read; nothing sends or changes" },
159
+ { answer: "allow", text: "read and write — as each profile's permissions allow" },
160
160
  ];
161
161
  const askPermissions = async ({ io }, answers) => {
162
162
  const now = answers.permissions ?? "allow";
163
163
  const current = Math.max(1, PERMISSION_CHOICES.findIndex(({ answer }) => answer === now) + 1);
164
- io.say("What may commands and agents do, in every WireCat tool?");
164
+ io.say("Read only, or read and write? The same for you, scripts and agents over MCP, in every WireCat tool:");
165
165
  PERMISSION_CHOICES.forEach(({ text }, at) => {
166
166
  io.say(` ${at + 1}. ${text}`);
167
167
  });
@@ -6,7 +6,7 @@ import { threadIdOf } from "../../domain/thread.js";
6
6
  import { typedSendAs } from "../../sends/send-as.js";
7
7
  import { readAttachments, readStickerFile } from "../../sends/upload.js";
8
8
  import { ownerOnlyOption, REMOTE_WRITE } from "../effects.js";
9
- import { renderAnswer } from "../envelope.js";
9
+ import { itemOf, renderAnswer } from "../envelope.js";
10
10
  import { messengerContext } from "./context.js";
11
11
  import { afterWrite, writtenAnswer } from "./message-writes.js";
12
12
  import { readAll } from "./stdin.js";
@@ -22,7 +22,7 @@ export const sendCommand = (messenger) => {
22
22
  const send = annotate(new Command("send"), {
23
23
  examples: [`${messenger.app.command} personal messages send "Book club" "The meeting starts at 10."`],
24
24
  effects: REMOTE_WRITE,
25
- output: { entity: "message_write" },
25
+ output: { entity: messenger.drafts === true ? "message_send" : "message_write" },
26
26
  })
27
27
  .description("send a text message; without [text], the text is read from stdin")
28
28
  .argument("<chat>", messenger.chatArgument)
@@ -30,6 +30,8 @@ export const sendCommand = (messenger) => {
30
30
  // Offered only where the messenger has them, so a CLI never shows a flag it would refuse.
31
31
  if (messenger.topics !== false)
32
32
  send.option("--topic <id>", "send to this forum topic");
33
+ if (messenger.drafts === true)
34
+ send.option("--draft", "save the text as a draft for the owner to review and send");
33
35
  send.option("--reply-to <message>", "answer this message, by its id in the same chat");
34
36
  if (messenger.channelComments !== false)
35
37
  send.option("--comment-to <post>", "comment on this post of the channel; it goes to the post's discussion group");
@@ -67,7 +69,7 @@ export const sendCommand = (messenger) => {
67
69
  };
68
70
  const sendText = async (command, messenger, chat, text) => {
69
71
  const context = messengerContext(command, messenger);
70
- const { topic, replyTo: typedReplyTo, commentTo: typedCommentTo, sendAs: givenSendAs, operationId: sendId, silent, preview, md: markdown, html, atTime: at, file, photo, voice, asFile, filename, allowAnyFile, spoiler, captionAbove, sticker, stickerFile, } = command.opts();
72
+ const { draft, topic, replyTo: typedReplyTo, commentTo: typedCommentTo, sendAs: givenSendAs, operationId: sendId, silent, preview, md: markdown, html, atTime: at, file, photo, voice, asFile, filename, allowAnyFile, spoiler, captionAbove, sticker, stickerFile, } = command.opts();
71
73
  const threadId = threadIdOf(topic);
72
74
  const scheduledFor = at === undefined ? undefined : sendTime(at);
73
75
  const replyTo = typedReplyTo?.trim();
@@ -77,6 +79,45 @@ const sendText = async (command, messenger, chat, text) => {
77
79
  const commentTo = typedCommentTo?.trim();
78
80
  if (commentTo === "")
79
81
  throw new CliError("validation_error", "--comment-to needs the post's message id");
82
+ if (draft === true) {
83
+ const incompatible = [
84
+ ["--operation-id", sendId],
85
+ ["--at-time", at],
86
+ ["--send-as", givenSendAs],
87
+ ["--comment-to", typedCommentTo],
88
+ ["--silent", silent],
89
+ ["--file", file.length > 0],
90
+ ["--photo", photo.length > 0],
91
+ ["--voice", voice],
92
+ ["--as-file", asFile],
93
+ ["--filename", filename],
94
+ ["--allow-any-file", allowAnyFile],
95
+ ["--spoiler", spoiler],
96
+ ["--caption-above", captionAbove],
97
+ ["--sticker", sticker],
98
+ ["--sticker-file", stickerFile],
99
+ ].find(([, value]) => value !== undefined && value !== false);
100
+ if (incompatible)
101
+ throw new CliError("validation_error", `--draft cannot be combined with ${incompatible[0]}`);
102
+ const body = text ?? (await readAll(context.stdin));
103
+ if (body.trim() === "")
104
+ throw new CliError("validation_error", "a draft needs nonempty text; clearing a draft is not supported");
105
+ const saved = await context.withServices(async ({ messages }) => {
106
+ if (!messages.saveDraft)
107
+ throw new CliError("validation_error", "this messenger cannot save a draft");
108
+ return messages.saveDraft({
109
+ chat,
110
+ text: body,
111
+ ...(replyTo === undefined ? {} : { replyTo }),
112
+ ...(threadId === undefined ? {} : { threadId }),
113
+ ...(markdown === true ? { markdown } : {}),
114
+ ...(html === true ? { html } : {}),
115
+ ...(preview === false ? { noPreview: true } : {}),
116
+ });
117
+ });
118
+ await afterWrite(saved, () => renderAnswer(command, context, itemOf({ operation_id: saved.operationId, chat_id: saved.chatId, saved: saved.saved })));
119
+ return;
120
+ }
80
121
  const read = { app: messenger.app, env: context.env, anyFile: allowAnyFile === true };
81
122
  const attachments = await readAttachments({
82
123
  photo,
@@ -15,6 +15,7 @@ export declare const lentConnection: (connection: MessengerAdapter, watchers?: S
15
15
  */
16
16
  export declare const serveRelay: (command: Command, messenger: Messenger) => {
17
17
  messenger: {
18
+ drafts?: boolean;
18
19
  counterFields?: readonly import("../../index.js").CounterField[];
19
20
  app: import("../../ports/app.js").AppIdentity;
20
21
  provider: import("../../domain/models.js").Provider;
@@ -1,6 +1,6 @@
1
1
  import type { Level } from "../sends/permissions.js";
2
- /** "allow" leaves every profile as its own configuration says. */
3
- export declare const PERMISSION_ANSWERS: readonly ["readonly", "ask", "allow"];
2
+ /** One switch for every tool, the same on the command line and over MCP; "allow" leaves each profile as configured. */
3
+ export declare const PERMISSION_ANSWERS: readonly ["readonly", "allow"];
4
4
  export type PermissionAnswer = (typeof PERMISSION_ANSWERS)[number];
5
5
  /**
6
6
  * The first-run answers every WireCat CLI shares. Languages live in the store (`search_stemmers`), so only the
@@ -1,8 +1,8 @@
1
1
  import { CliError } from "@wirecat/cli-base";
2
2
  import { storePath } from "../store/path.js";
3
3
  import { readSharedSection, sharedConfigPath, writeSharedSection } from "../store/shared-config.js";
4
- /** "allow" leaves every profile as its own configuration says. */
5
- export const PERMISSION_ANSWERS = ["readonly", "ask", "allow"];
4
+ /** One switch for every tool, the same on the command line and over MCP; "allow" leaves each profile as configured. */
5
+ export const PERMISSION_ANSWERS = ["readonly", "allow"];
6
6
  export const QUESTIONS = ["languages", "tools", "permissions"];
7
7
  const SECTION = "setup";
8
8
  export const readSetupAnswers = (path) => {
@@ -2555,6 +2555,386 @@ export declare const ENTITIES: {
2555
2555
  }, undefined>, undefined>, undefined>;
2556
2556
  readonly scheduled_for: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time in UTC">, v.EndsWithAction<string, "Z", "an ISO 8601 time in UTC, ending in `Z`">]>, undefined>;
2557
2557
  }, undefined>;
2558
+ readonly message_send: v.UnionSchema<[v.StrictObjectSchema<{
2559
+ readonly operation_id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
2560
+ readonly message: v.StrictObjectSchema<{
2561
+ readonly ref: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>;
2562
+ readonly id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
2563
+ readonly provider: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2564
+ readonly account: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2565
+ readonly chat_id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
2566
+ readonly chat_title: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
2567
+ readonly sender_id: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
2568
+ readonly sender_name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2569
+ readonly sender_username: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2570
+ readonly sender_is_chat: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
2571
+ readonly mentions: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, undefined>;
2572
+ readonly timestamp: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time in UTC">, v.EndsWithAction<string, "Z", "an ISO 8601 time in UTC, ending in `Z`">]>;
2573
+ readonly edited_at: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time in UTC">, v.EndsWithAction<string, "Z", "an ISO 8601 time in UTC, ending in `Z`">]>, undefined>;
2574
+ readonly text: v.StringSchema<undefined>;
2575
+ readonly transcript: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2576
+ readonly anchor: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
2577
+ readonly excerpt: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2578
+ readonly matched_in: v.OptionalSchema<v.PicklistSchema<["text", "transcript", "filename", "file", "context", "picture"], undefined>, undefined>;
2579
+ readonly score: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
2580
+ readonly match: v.OptionalSchema<v.PicklistSchema<["words", "beginnings", "corrected"], undefined>, undefined>;
2581
+ readonly corrections: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
2582
+ readonly from: v.StringSchema<undefined>;
2583
+ readonly to: v.ArraySchema<v.StringSchema<undefined>, undefined>;
2584
+ }, undefined>, undefined>, undefined>;
2585
+ readonly found_in: v.OptionalSchema<v.PicklistSchema<["archive", "server", "both"], undefined>, undefined>;
2586
+ readonly discovery: v.OptionalSchema<v.StrictObjectSchema<{
2587
+ readonly coverage: v.NumberSchema<undefined>;
2588
+ readonly matched_terms: v.ArraySchema<v.StringSchema<undefined>, undefined>;
2589
+ readonly missing_terms: v.ArraySchema<v.StringSchema<undefined>, undefined>;
2590
+ readonly parent: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>, undefined>;
2591
+ }, undefined>, undefined>;
2592
+ readonly context: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
2593
+ readonly ref: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>;
2594
+ readonly timestamp: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time in UTC">, v.EndsWithAction<string, "Z", "an ISO 8601 time in UTC, ending in `Z`">]>;
2595
+ readonly sender_name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2596
+ readonly text: v.StringSchema<undefined>;
2597
+ }, undefined>, undefined>, undefined>;
2598
+ readonly outgoing: v.NullableSchema<v.BooleanSchema<undefined>, undefined>;
2599
+ readonly attachments: v.ArraySchema<v.StrictObjectSchema<{
2600
+ readonly message: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>, undefined>;
2601
+ readonly kind: v.StringSchema<undefined>;
2602
+ readonly position: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2603
+ readonly url: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2604
+ readonly name: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2605
+ readonly title: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2606
+ readonly mime: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2607
+ readonly size: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2608
+ readonly width: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2609
+ readonly height: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2610
+ readonly duration: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
2611
+ readonly text: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2612
+ readonly extraction: v.OptionalSchema<v.StrictObjectSchema<{
2613
+ readonly origin: v.StringSchema<undefined>;
2614
+ readonly extractor: v.StringSchema<undefined>;
2615
+ readonly chars: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
2616
+ readonly error: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2617
+ }, undefined>, undefined>;
2618
+ readonly local_path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2619
+ readonly buttons: v.OptionalSchema<v.ArraySchema<v.ArraySchema<v.StrictObjectSchema<{
2620
+ readonly kind: v.PicklistSchema<["callback", "link", "message", "chat", "contact", "location", "app", "clipboard", "other"], undefined>;
2621
+ readonly text: v.StringSchema<undefined>;
2622
+ readonly url: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2623
+ }, undefined>, undefined>, undefined>, undefined>;
2624
+ }, undefined>, undefined>;
2625
+ readonly reply_to: v.NullableSchema<v.StrictObjectSchema<{
2626
+ readonly id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
2627
+ readonly sender_id: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
2628
+ readonly sender_name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2629
+ readonly timestamp: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time in UTC">, v.EndsWithAction<string, "Z", "an ISO 8601 time in UTC, ending in `Z`">]>, undefined>;
2630
+ readonly text: v.StringSchema<undefined>;
2631
+ readonly attachments: v.ArraySchema<v.StrictObjectSchema<{
2632
+ readonly message: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>, undefined>;
2633
+ readonly kind: v.StringSchema<undefined>;
2634
+ readonly position: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2635
+ readonly url: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2636
+ readonly name: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2637
+ readonly title: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2638
+ readonly mime: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2639
+ readonly size: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2640
+ readonly width: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2641
+ readonly height: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2642
+ readonly duration: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
2643
+ readonly text: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2644
+ readonly extraction: v.OptionalSchema<v.StrictObjectSchema<{
2645
+ readonly origin: v.StringSchema<undefined>;
2646
+ readonly extractor: v.StringSchema<undefined>;
2647
+ readonly chars: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
2648
+ readonly error: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2649
+ }, undefined>, undefined>;
2650
+ readonly local_path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2651
+ readonly buttons: v.OptionalSchema<v.ArraySchema<v.ArraySchema<v.StrictObjectSchema<{
2652
+ readonly kind: v.PicklistSchema<["callback", "link", "message", "chat", "contact", "location", "app", "clipboard", "other"], undefined>;
2653
+ readonly text: v.StringSchema<undefined>;
2654
+ readonly url: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2655
+ }, undefined>, undefined>, undefined>, undefined>;
2656
+ }, undefined>, undefined>;
2657
+ readonly outgoing: v.NullableSchema<v.BooleanSchema<undefined>, undefined>;
2658
+ }, undefined>, undefined>;
2659
+ readonly reply_to_id: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
2660
+ readonly forwarded_from: v.NullableSchema<v.StrictObjectSchema<{
2661
+ readonly id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
2662
+ readonly sender_id: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
2663
+ readonly sender_name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2664
+ readonly timestamp: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time in UTC">, v.EndsWithAction<string, "Z", "an ISO 8601 time in UTC, ending in `Z`">]>, undefined>;
2665
+ readonly text: v.StringSchema<undefined>;
2666
+ readonly attachments: v.ArraySchema<v.StrictObjectSchema<{
2667
+ readonly message: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>, undefined>;
2668
+ readonly kind: v.StringSchema<undefined>;
2669
+ readonly position: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2670
+ readonly url: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2671
+ readonly name: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2672
+ readonly title: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2673
+ readonly mime: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2674
+ readonly size: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2675
+ readonly width: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2676
+ readonly height: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2677
+ readonly duration: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
2678
+ readonly text: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2679
+ readonly extraction: v.OptionalSchema<v.StrictObjectSchema<{
2680
+ readonly origin: v.StringSchema<undefined>;
2681
+ readonly extractor: v.StringSchema<undefined>;
2682
+ readonly chars: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
2683
+ readonly error: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2684
+ }, undefined>, undefined>;
2685
+ readonly local_path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2686
+ readonly buttons: v.OptionalSchema<v.ArraySchema<v.ArraySchema<v.StrictObjectSchema<{
2687
+ readonly kind: v.PicklistSchema<["callback", "link", "message", "chat", "contact", "location", "app", "clipboard", "other"], undefined>;
2688
+ readonly text: v.StringSchema<undefined>;
2689
+ readonly url: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2690
+ }, undefined>, undefined>, undefined>, undefined>;
2691
+ }, undefined>, undefined>;
2692
+ readonly outgoing: v.NullableSchema<v.BooleanSchema<undefined>, undefined>;
2693
+ }, undefined>, undefined>;
2694
+ readonly thread_id: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
2695
+ readonly thread_root_id: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
2696
+ readonly reactions: v.OptionalSchema<v.NullableSchema<v.StrictObjectSchema<{
2697
+ readonly counts: v.ArraySchema<v.StrictObjectSchema<{
2698
+ readonly reaction: v.StringSchema<undefined>;
2699
+ readonly count: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
2700
+ }, undefined>, undefined>;
2701
+ readonly mine: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2702
+ readonly total: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
2703
+ }, undefined>, undefined>, undefined>;
2704
+ readonly scheduled_for: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time in UTC">, v.EndsWithAction<string, "Z", "an ISO 8601 time in UTC, ending in `Z`">]>, undefined>;
2705
+ readonly starred: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
2706
+ readonly delivery: v.OptionalSchema<v.PicklistSchema<["delivered", "read"], undefined>, undefined>;
2707
+ readonly email: v.OptionalSchema<v.StrictObjectSchema<{
2708
+ readonly subject: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2709
+ readonly from: v.NullableSchema<v.StrictObjectSchema<{
2710
+ readonly name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2711
+ readonly address: v.StringSchema<undefined>;
2712
+ readonly ref: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>, undefined>;
2713
+ }, undefined>, undefined>;
2714
+ readonly to: v.ArraySchema<v.StrictObjectSchema<{
2715
+ readonly name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2716
+ readonly address: v.StringSchema<undefined>;
2717
+ readonly ref: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>, undefined>;
2718
+ }, undefined>, undefined>;
2719
+ readonly cc: v.ArraySchema<v.StrictObjectSchema<{
2720
+ readonly name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2721
+ readonly address: v.StringSchema<undefined>;
2722
+ readonly ref: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>, undefined>;
2723
+ }, undefined>, undefined>;
2724
+ readonly bcc: v.ArraySchema<v.StrictObjectSchema<{
2725
+ readonly name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2726
+ readonly address: v.StringSchema<undefined>;
2727
+ readonly ref: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>, undefined>;
2728
+ }, undefined>, undefined>;
2729
+ readonly reply_addresses: v.ArraySchema<v.StrictObjectSchema<{
2730
+ readonly name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2731
+ readonly address: v.StringSchema<undefined>;
2732
+ readonly ref: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>, undefined>;
2733
+ }, undefined>, undefined>;
2734
+ readonly labels: v.ArraySchema<v.StringSchema<undefined>, undefined>;
2735
+ readonly thread: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>;
2736
+ readonly read: v.NullableSchema<v.BooleanSchema<undefined>, undefined>;
2737
+ readonly flagged: v.NullableSchema<v.BooleanSchema<undefined>, undefined>;
2738
+ readonly sender_score: v.OptionalSchema<v.StrictObjectSchema<{
2739
+ readonly score: v.NumberSchema<undefined>;
2740
+ readonly signals: v.ArraySchema<v.StringSchema<undefined>, undefined>;
2741
+ readonly demoted: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
2742
+ }, undefined>, undefined>;
2743
+ }, undefined>, undefined>;
2744
+ readonly provider_metadata: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, undefined>;
2745
+ }, undefined>;
2746
+ readonly messages: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
2747
+ readonly ref: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>;
2748
+ readonly id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
2749
+ readonly provider: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2750
+ readonly account: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2751
+ readonly chat_id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
2752
+ readonly chat_title: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
2753
+ readonly sender_id: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
2754
+ readonly sender_name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2755
+ readonly sender_username: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2756
+ readonly sender_is_chat: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
2757
+ readonly mentions: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, undefined>;
2758
+ readonly timestamp: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time in UTC">, v.EndsWithAction<string, "Z", "an ISO 8601 time in UTC, ending in `Z`">]>;
2759
+ readonly edited_at: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time in UTC">, v.EndsWithAction<string, "Z", "an ISO 8601 time in UTC, ending in `Z`">]>, undefined>;
2760
+ readonly text: v.StringSchema<undefined>;
2761
+ readonly transcript: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2762
+ readonly anchor: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
2763
+ readonly excerpt: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2764
+ readonly matched_in: v.OptionalSchema<v.PicklistSchema<["text", "transcript", "filename", "file", "context", "picture"], undefined>, undefined>;
2765
+ readonly score: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
2766
+ readonly match: v.OptionalSchema<v.PicklistSchema<["words", "beginnings", "corrected"], undefined>, undefined>;
2767
+ readonly corrections: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
2768
+ readonly from: v.StringSchema<undefined>;
2769
+ readonly to: v.ArraySchema<v.StringSchema<undefined>, undefined>;
2770
+ }, undefined>, undefined>, undefined>;
2771
+ readonly found_in: v.OptionalSchema<v.PicklistSchema<["archive", "server", "both"], undefined>, undefined>;
2772
+ readonly discovery: v.OptionalSchema<v.StrictObjectSchema<{
2773
+ readonly coverage: v.NumberSchema<undefined>;
2774
+ readonly matched_terms: v.ArraySchema<v.StringSchema<undefined>, undefined>;
2775
+ readonly missing_terms: v.ArraySchema<v.StringSchema<undefined>, undefined>;
2776
+ readonly parent: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>, undefined>;
2777
+ }, undefined>, undefined>;
2778
+ readonly context: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
2779
+ readonly ref: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>;
2780
+ readonly timestamp: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time in UTC">, v.EndsWithAction<string, "Z", "an ISO 8601 time in UTC, ending in `Z`">]>;
2781
+ readonly sender_name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2782
+ readonly text: v.StringSchema<undefined>;
2783
+ }, undefined>, undefined>, undefined>;
2784
+ readonly outgoing: v.NullableSchema<v.BooleanSchema<undefined>, undefined>;
2785
+ readonly attachments: v.ArraySchema<v.StrictObjectSchema<{
2786
+ readonly message: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>, undefined>;
2787
+ readonly kind: v.StringSchema<undefined>;
2788
+ readonly position: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2789
+ readonly url: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2790
+ readonly name: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2791
+ readonly title: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2792
+ readonly mime: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2793
+ readonly size: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2794
+ readonly width: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2795
+ readonly height: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2796
+ readonly duration: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
2797
+ readonly text: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2798
+ readonly extraction: v.OptionalSchema<v.StrictObjectSchema<{
2799
+ readonly origin: v.StringSchema<undefined>;
2800
+ readonly extractor: v.StringSchema<undefined>;
2801
+ readonly chars: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
2802
+ readonly error: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2803
+ }, undefined>, undefined>;
2804
+ readonly local_path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2805
+ readonly buttons: v.OptionalSchema<v.ArraySchema<v.ArraySchema<v.StrictObjectSchema<{
2806
+ readonly kind: v.PicklistSchema<["callback", "link", "message", "chat", "contact", "location", "app", "clipboard", "other"], undefined>;
2807
+ readonly text: v.StringSchema<undefined>;
2808
+ readonly url: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2809
+ }, undefined>, undefined>, undefined>, undefined>;
2810
+ }, undefined>, undefined>;
2811
+ readonly reply_to: v.NullableSchema<v.StrictObjectSchema<{
2812
+ readonly id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
2813
+ readonly sender_id: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
2814
+ readonly sender_name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2815
+ readonly timestamp: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time in UTC">, v.EndsWithAction<string, "Z", "an ISO 8601 time in UTC, ending in `Z`">]>, undefined>;
2816
+ readonly text: v.StringSchema<undefined>;
2817
+ readonly attachments: v.ArraySchema<v.StrictObjectSchema<{
2818
+ readonly message: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>, undefined>;
2819
+ readonly kind: v.StringSchema<undefined>;
2820
+ readonly position: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2821
+ readonly url: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2822
+ readonly name: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2823
+ readonly title: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2824
+ readonly mime: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2825
+ readonly size: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2826
+ readonly width: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2827
+ readonly height: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2828
+ readonly duration: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
2829
+ readonly text: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2830
+ readonly extraction: v.OptionalSchema<v.StrictObjectSchema<{
2831
+ readonly origin: v.StringSchema<undefined>;
2832
+ readonly extractor: v.StringSchema<undefined>;
2833
+ readonly chars: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
2834
+ readonly error: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2835
+ }, undefined>, undefined>;
2836
+ readonly local_path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2837
+ readonly buttons: v.OptionalSchema<v.ArraySchema<v.ArraySchema<v.StrictObjectSchema<{
2838
+ readonly kind: v.PicklistSchema<["callback", "link", "message", "chat", "contact", "location", "app", "clipboard", "other"], undefined>;
2839
+ readonly text: v.StringSchema<undefined>;
2840
+ readonly url: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2841
+ }, undefined>, undefined>, undefined>, undefined>;
2842
+ }, undefined>, undefined>;
2843
+ readonly outgoing: v.NullableSchema<v.BooleanSchema<undefined>, undefined>;
2844
+ }, undefined>, undefined>;
2845
+ readonly reply_to_id: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
2846
+ readonly forwarded_from: v.NullableSchema<v.StrictObjectSchema<{
2847
+ readonly id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
2848
+ readonly sender_id: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
2849
+ readonly sender_name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2850
+ readonly timestamp: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time in UTC">, v.EndsWithAction<string, "Z", "an ISO 8601 time in UTC, ending in `Z`">]>, undefined>;
2851
+ readonly text: v.StringSchema<undefined>;
2852
+ readonly attachments: v.ArraySchema<v.StrictObjectSchema<{
2853
+ readonly message: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>, undefined>;
2854
+ readonly kind: v.StringSchema<undefined>;
2855
+ readonly position: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2856
+ readonly url: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2857
+ readonly name: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2858
+ readonly title: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2859
+ readonly mime: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2860
+ readonly size: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2861
+ readonly width: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2862
+ readonly height: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
2863
+ readonly duration: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
2864
+ readonly text: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2865
+ readonly extraction: v.OptionalSchema<v.StrictObjectSchema<{
2866
+ readonly origin: v.StringSchema<undefined>;
2867
+ readonly extractor: v.StringSchema<undefined>;
2868
+ readonly chars: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
2869
+ readonly error: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2870
+ }, undefined>, undefined>;
2871
+ readonly local_path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2872
+ readonly buttons: v.OptionalSchema<v.ArraySchema<v.ArraySchema<v.StrictObjectSchema<{
2873
+ readonly kind: v.PicklistSchema<["callback", "link", "message", "chat", "contact", "location", "app", "clipboard", "other"], undefined>;
2874
+ readonly text: v.StringSchema<undefined>;
2875
+ readonly url: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
2876
+ }, undefined>, undefined>, undefined>, undefined>;
2877
+ }, undefined>, undefined>;
2878
+ readonly outgoing: v.NullableSchema<v.BooleanSchema<undefined>, undefined>;
2879
+ }, undefined>, undefined>;
2880
+ readonly thread_id: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
2881
+ readonly thread_root_id: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
2882
+ readonly reactions: v.OptionalSchema<v.NullableSchema<v.StrictObjectSchema<{
2883
+ readonly counts: v.ArraySchema<v.StrictObjectSchema<{
2884
+ readonly reaction: v.StringSchema<undefined>;
2885
+ readonly count: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
2886
+ }, undefined>, undefined>;
2887
+ readonly mine: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2888
+ readonly total: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
2889
+ }, undefined>, undefined>, undefined>;
2890
+ readonly scheduled_for: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time in UTC">, v.EndsWithAction<string, "Z", "an ISO 8601 time in UTC, ending in `Z`">]>, undefined>;
2891
+ readonly starred: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
2892
+ readonly delivery: v.OptionalSchema<v.PicklistSchema<["delivered", "read"], undefined>, undefined>;
2893
+ readonly email: v.OptionalSchema<v.StrictObjectSchema<{
2894
+ readonly subject: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2895
+ readonly from: v.NullableSchema<v.StrictObjectSchema<{
2896
+ readonly name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2897
+ readonly address: v.StringSchema<undefined>;
2898
+ readonly ref: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>, undefined>;
2899
+ }, undefined>, undefined>;
2900
+ readonly to: v.ArraySchema<v.StrictObjectSchema<{
2901
+ readonly name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2902
+ readonly address: v.StringSchema<undefined>;
2903
+ readonly ref: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>, undefined>;
2904
+ }, undefined>, undefined>;
2905
+ readonly cc: v.ArraySchema<v.StrictObjectSchema<{
2906
+ readonly name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2907
+ readonly address: v.StringSchema<undefined>;
2908
+ readonly ref: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>, undefined>;
2909
+ }, undefined>, undefined>;
2910
+ readonly bcc: v.ArraySchema<v.StrictObjectSchema<{
2911
+ readonly name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2912
+ readonly address: v.StringSchema<undefined>;
2913
+ readonly ref: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>, undefined>;
2914
+ }, undefined>, undefined>;
2915
+ readonly reply_addresses: v.ArraySchema<v.StrictObjectSchema<{
2916
+ readonly name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2917
+ readonly address: v.StringSchema<undefined>;
2918
+ readonly ref: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>, undefined>;
2919
+ }, undefined>, undefined>;
2920
+ readonly labels: v.ArraySchema<v.StringSchema<undefined>, undefined>;
2921
+ readonly thread: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>;
2922
+ readonly read: v.NullableSchema<v.BooleanSchema<undefined>, undefined>;
2923
+ readonly flagged: v.NullableSchema<v.BooleanSchema<undefined>, undefined>;
2924
+ readonly sender_score: v.OptionalSchema<v.StrictObjectSchema<{
2925
+ readonly score: v.NumberSchema<undefined>;
2926
+ readonly signals: v.ArraySchema<v.StringSchema<undefined>, undefined>;
2927
+ readonly demoted: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
2928
+ }, undefined>, undefined>;
2929
+ }, undefined>, undefined>;
2930
+ readonly provider_metadata: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, undefined>;
2931
+ }, undefined>, undefined>, undefined>;
2932
+ readonly scheduled_for: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.IsoTimestampAction<string, "an ISO 8601 time in UTC">, v.EndsWithAction<string, "Z", "an ISO 8601 time in UTC, ending in `Z`">]>, undefined>;
2933
+ }, undefined>, v.StrictObjectSchema<{
2934
+ readonly operation_id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
2935
+ readonly chat_id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
2936
+ readonly saved: v.LiteralSchema<true, undefined>;
2937
+ }, undefined>], undefined>;
2558
2938
  readonly message_pin: v.StrictObjectSchema<{
2559
2939
  readonly operation_id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
2560
2940
  readonly chat_id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
@@ -59,7 +59,7 @@ import { messageCounts } from "./message-counts.js";
59
59
  import { messageLink } from "./message-link.js";
60
60
  import { evidencePacket, messageLinks, messageTranscript } from "./message-read.js";
61
61
  import { messageDownload, messageSync } from "./message-transfer.js";
62
- import { messageWrite } from "./message-write.js";
62
+ import { messageSend, messageWrite } from "./message-write.js";
63
63
  import { model } from "./model.js";
64
64
  import { modelKey, removedModelKey, storedModelKey } from "./model-key.js";
65
65
  import { note } from "./note.js";
@@ -123,6 +123,7 @@ export const ENTITIES = {
123
123
  ]),
124
124
  message_link: messageLink,
125
125
  message_write: messageWrite,
126
+ message_send: messageSend,
126
127
  message_pin: messagePin,
127
128
  message_star: messageStar,
128
129
  message_deletion: messageDeletion,