@vercel/board 0.30.0 → 0.31.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 (125) hide show
  1. package/README.md +8 -17
  2. package/dist/{a2-D_28Pdip.mjs → a2-DngWY2Eb.mjs} +573 -361
  3. package/dist/{access-CQ39gqEV.mjs → access-CY5xVMIK.mjs} +19 -3
  4. package/dist/{access-CV96SYgr.d.mts → access-DPcrKIH_.d.mts} +6 -1
  5. package/dist/access.d.mts +4 -4
  6. package/dist/access.mjs +5 -4
  7. package/dist/{actors-xPiamLWk.mjs → actors-Bm-ojWWT.mjs} +2 -2
  8. package/dist/{auth-BPinwfN0.mjs → auth-CyO2aw5n.mjs} +127 -14
  9. package/dist/{auth-CU56Q2Xh.d.mts → auth-DLYSt_-A.d.mts} +32 -4
  10. package/dist/{backend-n3hajfrD.d.mts → backend-Bob-5CM7.d.mts} +86 -41
  11. package/dist/backend-a2/blob-vercel.d.mts +1 -1
  12. package/dist/backend-a2/contract.d.mts +37 -97
  13. package/dist/backend-a2/contract.mjs +1 -1
  14. package/dist/backend-a2/store-memory.d.mts +1 -1
  15. package/dist/backend-a2/store-memory.mjs +2 -2
  16. package/dist/backend-a2/store-postgres.d.mts +1 -1
  17. package/dist/backend-a2/store-postgres.mjs +1 -1
  18. package/dist/backend-a2/store-redis-http.d.mts +1 -1
  19. package/dist/backend-a2/store-redis-http.mjs +1 -1
  20. package/dist/backend-a2/store-redis.d.mts +1 -1
  21. package/dist/backend-a2/store-redis.mjs +1 -1
  22. package/dist/backend-a2/store-sqlite.d.mts +1 -1
  23. package/dist/backend-a2/store-sqlite.mjs +2 -2
  24. package/dist/backend-a2.d.mts +131 -240
  25. package/dist/backend-a2.mjs +2 -2
  26. package/dist/{backend-http-3PoBYQoo.d.mts → backend-http-BRrRbjRx.d.mts} +49 -45
  27. package/dist/{backend-http-BPaNYLWj.mjs → backend-http-CvUKOn-m.mjs} +11 -9
  28. package/dist/{backend-http-16SbvnAK.mjs → backend-http-D8mUzuKQ.mjs} +2 -2
  29. package/dist/backend-http.d.mts +1 -1
  30. package/dist/backend-http.mjs +1 -1
  31. package/dist/backend-http.node.d.mts +1 -1
  32. package/dist/backend-http.node.mjs +1 -1
  33. package/dist/{backend-vercel-Kd8nvW5A.mjs → backend-vercel-Ba8JDtqW.mjs} +3 -3
  34. package/dist/{backend-vercel-qznuDxnN.d.mts → backend-vercel-BaSEUdwg.d.mts} +49 -45
  35. package/dist/{backend-vercel-C4Kee2-K.mjs → backend-vercel-CmY9yZ9m.mjs} +80 -15
  36. package/dist/backend-vercel.d.mts +1 -1
  37. package/dist/backend-vercel.mjs +1 -1
  38. package/dist/backend-vercel.node.d.mts +1 -1
  39. package/dist/backend-vercel.node.mjs +1 -1
  40. package/dist/{blob-CqILvdmr.d.mts → blob-Bx8QPWEd.d.mts} +2 -2
  41. package/dist/{blob-DQK5prXT.mjs → blob-WbB2DJKn.mjs} +30 -11
  42. package/dist/{chat-provider-D6jVT4wS.d.mts → chat-provider-BChYrrA7.d.mts} +32 -28
  43. package/dist/{chat-provider-COtsU5jB.mjs → chat-provider-DkFp2hrh.mjs} +105 -60
  44. package/dist/cli-commands.d.mts +1 -1
  45. package/dist/cli-commands.mjs +1 -1
  46. package/dist/cli-embedded.d.mts +2 -2
  47. package/dist/cli-embedded.mjs +1 -1
  48. package/dist/cli.mjs +4 -4
  49. package/dist/{client-CjAatpV4.d.mts → client-COfYrgfV.d.mts} +184 -221
  50. package/dist/{commands-BtH69yqt.d.mts → commands-DK4W3HCJ.d.mts} +30 -10
  51. package/dist/{commands-B5DHjZKK.mjs → commands-L1JSGz2Z.mjs} +162 -45
  52. package/dist/{conformance-C7fwIvmN.mjs → conformance-DK43HiHf.mjs} +224 -20
  53. package/dist/conformance.d.mts +8 -2
  54. package/dist/conformance.mjs +1 -1
  55. package/dist/{engine-DkdkXQEy.mjs → engine-DurYIRt8.mjs} +29 -210
  56. package/dist/{errors-87TVtXeb.d.mts → errors-2vGs49Db.d.mts} +1 -1
  57. package/dist/{errors-C_5rB8Iz.mjs → errors-CJXhhzvT.mjs} +28 -23
  58. package/dist/{provider-BaVmi4Hi.mjs → events-lujPA3gQ.mjs} +80 -17
  59. package/dist/{exports-CG0P8Qi4.mjs → exports-CWIdN0Ub.mjs} +146 -80
  60. package/dist/exports-FBOQWT7O.d.mts +5 -0
  61. package/dist/{folds-DGYkMW19.mjs → folds-Cu9Q9zyQ.mjs} +2 -22
  62. package/dist/{folds-8wRRXjAt.d.mts → folds-DLUzfibJ.d.mts} +13 -40
  63. package/dist/{index-BygAXP7t.d.mts → index-Ho-ayyQL.d.mts} +2 -2
  64. package/dist/index.d.mts +7 -7
  65. package/dist/{index.default-DhkgpfR2.mjs → index.default-BUcwDaAe.mjs} +1 -1
  66. package/dist/index.mjs +5 -5
  67. package/dist/index.node.d.mts +7 -7
  68. package/dist/index.node.mjs +3 -3
  69. package/dist/inspect/app.js +62 -61
  70. package/dist/inspect/engine.js +3 -3
  71. package/dist/{main-D2s-QBOK.mjs → main-Dz-8komG.mjs} +189 -112
  72. package/dist/{middleware-DlJQYiwV.mjs → middleware-BavYSDUa.mjs} +1 -1
  73. package/dist/{node-D8Rtg1su.mjs → node-BgeGcwX0.mjs} +7 -3
  74. package/dist/{project-C_2xs57L.mjs → project-CQ4VUibA.mjs} +1 -1
  75. package/dist/{provider-Bm46LAdp.d.mts → provider-gynDUoyW.d.mts} +13 -43
  76. package/dist/{redis-tables-BWJZHUGg.mjs → redis-tables-DHf85ixI.mjs} +1 -19
  77. package/dist/{reducers-8jqLewgw.mjs → reducers-DcENwtwZ.mjs} +72 -75
  78. package/dist/{serve-lPoBDEds.mjs → serve-CTmow-YH.mjs} +6 -6
  79. package/dist/{server-D82a4uMe.mjs → server-DG8D6VV0.mjs} +4 -4
  80. package/dist/{serving-DKny38LK.mjs → serving-DBFRo6U_.mjs} +1 -1
  81. package/dist/{sql-Bj0fk6dn.mjs → sql-CT5xVuGr.mjs} +2 -8
  82. package/dist/{sqlite-db-Dc8G78XV.mjs → sqlite-db-0WeSOEZN.mjs} +1 -1
  83. package/dist/{sync-kapso.d.mts → sync-chat-sdk.d.mts} +33 -37
  84. package/dist/sync-chat-sdk.mjs +44 -0
  85. package/dist/sync-github.d.mts +5 -18
  86. package/dist/sync-github.mjs +4 -70
  87. package/dist/sync-linear.d.mts +3 -3
  88. package/dist/sync-linear.mjs +2 -3
  89. package/dist/sync-slack.d.mts +7 -7
  90. package/dist/sync-slack.mjs +33 -54
  91. package/dist/sync.d.mts +3 -3
  92. package/dist/sync.mjs +2 -4
  93. package/dist/{tokens-C5_yGRlL.mjs → tokens-Dnyd_y1n.mjs} +15 -6
  94. package/dist/{types-shZmGZ-q.d.mts → types-CmrFjpml.d.mts} +1 -3
  95. package/dist/{watchers-hash-B_5b0-ZG.mjs → watchers-hash-BjwlnGD9.mjs} +85 -105
  96. package/docs/01-board/01-mounting.md +2 -2
  97. package/docs/01-board/03-identity.md +5 -6
  98. package/docs/01-board/04-messages.md +3 -2
  99. package/docs/01-board/05-reading.md +2 -1
  100. package/docs/01-board/06-watchers.md +8 -6
  101. package/docs/01-board/08-middleware.md +1 -1
  102. package/docs/01-board/09-access.md +145 -14
  103. package/docs/02-sync/01-overview.md +19 -26
  104. package/docs/02-sync/02-functions.md +8 -9
  105. package/docs/02-sync/03-slack.md +5 -5
  106. package/docs/02-sync/04-github.md +2 -2
  107. package/docs/02-sync/06-providers.md +91 -62
  108. package/docs/03-guides/01-coding-agents.md +1 -1
  109. package/docs/03-guides/03-ci.md +7 -4
  110. package/docs/04-reference/01-cli.md +86 -41
  111. package/docs/04-reference/02-board.md +56 -23
  112. package/docs/04-reference/03-http.md +59 -32
  113. package/docs/04-reference/04-log.md +8 -11
  114. package/docs/04-reference/05-conformance.md +35 -6
  115. package/docs/index.md +2 -2
  116. package/package.json +6 -9
  117. package/sql/postgres/board.sql +1 -1
  118. package/sql/postgres/schema.sql +1 -1
  119. package/dist/events-qf5XG5VQ.mjs +0 -75
  120. package/dist/exports-CrGA5_yN.d.mts +0 -5
  121. package/dist/sync-kapso.mjs +0 -89
  122. package/dist/sync.chat.d.mts +0 -2
  123. package/dist/sync.chat.mjs +0 -2
  124. package/dist/users-yryHKFMo.mjs +0 -42
  125. package/docs/02-sync/05-whatsapp.md +0 -152
@@ -1,5 +1,5 @@
1
- import { n as AccessSummary } from "./access-CV96SYgr.mjs";
2
- import { a as ExternalCopy, g as BoardEvent, o as Message, p as Link, r as Channel, t as Actor, u as ExternalEvent, x as Attachment } from "./folds-8wRRXjAt.mjs";
1
+ import { n as AccessSummary, r as Can } from "./access-DPcrKIH_.mjs";
2
+ import { a as ExternalCopy, g as BoardEvent, o as Message, p as Link, r as Channel, t as Actor, u as ExternalEvent, x as Attachment } from "./folds-DLUzfibJ.mjs";
3
3
  import { z } from "zod";
4
4
  //#region src/api/routes.d.ts
5
5
  /**
@@ -62,7 +62,12 @@ declare const EventsQuery: z.ZodObject<{
62
62
  text: z.ZodOptional<z.ZodString>;
63
63
  after: z.ZodOptional<z.ZodString>;
64
64
  wait: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
65
- all: z.ZodOptional<z.ZodCoercedBoolean<unknown>>;
65
+ all: z.ZodOptional<z.ZodPipe<z.ZodEnum<{
66
+ 0: "0";
67
+ 1: "1";
68
+ false: "false";
69
+ true: "true";
70
+ }>, z.ZodTransform<boolean, "0" | "1" | "false" | "true">>>;
66
71
  }, z.core.$strip>;
67
72
  declare const PostBody: z.ZodObject<{
68
73
  channel: z.ZodOptional<z.ZodString>;
@@ -105,7 +110,27 @@ declare const SchedulesQuery: z.ZodObject<{
105
110
  re: z.ZodOptional<z.ZodString>;
106
111
  channel: z.ZodOptional<z.ZodString>;
107
112
  by: z.ZodOptional<z.ZodString>;
108
- all: z.ZodOptional<z.ZodCoercedBoolean<unknown>>;
113
+ all: z.ZodOptional<z.ZodPipe<z.ZodEnum<{
114
+ 0: "0";
115
+ 1: "1";
116
+ false: "false";
117
+ true: "true";
118
+ }>, z.ZodTransform<boolean, "0" | "1" | "false" | "true">>>;
119
+ }, z.core.$strip>;
120
+ /** Who a grant lets in: an issuer (`vercel`, `github`, or an https URL) and the claims its tokens carry, exactly. */
121
+ declare const GrantBody: z.ZodObject<{
122
+ issuer: z.ZodString;
123
+ claims: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
124
+ can: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"all">, z.ZodArray<z.ZodString>]>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodLiteral<"all">, z.ZodArray<z.ZodString>]>>]>>;
125
+ }, z.core.$strip>;
126
+ /** A token acting as the caller: what it may do, and the profile and session every request with it writes as. */
127
+ declare const TokenBody: z.ZodObject<{
128
+ name: z.ZodString;
129
+ can: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"all">, z.ZodArray<z.ZodString>]>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodLiteral<"all">, z.ZodArray<z.ZodString>]>>]>>;
130
+ profile: z.ZodOptional<z.ZodString>;
131
+ avatar: z.ZodOptional<z.ZodString>;
132
+ session: z.ZodOptional<z.ZodString>;
133
+ expires: z.ZodOptional<z.ZodString>;
109
134
  }, z.core.$strip>;
110
135
  declare const SyncBody: z.ZodObject<{
111
136
  target: z.ZodString;
@@ -131,7 +156,6 @@ declare const RegisterBody: z.ZodUnion<readonly [z.ZodObject<{
131
156
  sync: z.ZodOptional<z.ZodArray<z.ZodObject<{
132
157
  key: z.ZodString;
133
158
  platform: z.ZodString;
134
- signIn: z.ZodDefault<z.ZodBoolean>;
135
159
  }, z.core.$strip>>>;
136
160
  url: z.ZodOptional<z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>>;
137
161
  path: z.ZodOptional<z.ZodNull>;
@@ -147,7 +171,6 @@ declare const RegisterBody: z.ZodUnion<readonly [z.ZodObject<{
147
171
  sync: z.ZodOptional<z.ZodArray<z.ZodObject<{
148
172
  key: z.ZodString;
149
173
  platform: z.ZodString;
150
- signIn: z.ZodDefault<z.ZodBoolean>;
151
174
  }, z.core.$strip>>>;
152
175
  url: z.ZodOptional<z.ZodNull>;
153
176
  path: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
@@ -183,9 +206,6 @@ declare const SourceJoinBody: z.ZodObject<{
183
206
  declare const LinkedQuery: z.ZodObject<{
184
207
  url: z.ZodString;
185
208
  }, z.core.$strip>;
186
- declare const IdentityUnlinkBody: z.ZodObject<{
187
- actor: z.ZodString;
188
- }, z.core.$strip>;
189
209
  /**
190
210
  * A platform's write, as its platform author, with where it came from: only a caller with `sync` in
191
211
  * the channel it lands in may make one. Posts are idempotent by `id`, derived from the platform
@@ -355,7 +375,6 @@ declare const SyncReceiptBody: z.ZodDiscriminatedUnion<[z.ZodObject<{
355
375
  external: z.ZodObject<{
356
376
  thread: z.ZodString;
357
377
  message: z.ZodString;
358
- asUser: z.ZodOptional<z.ZodLiteral<true>>;
359
378
  }, z.core.$strip>;
360
379
  files: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
361
380
  }, z.core.$strip>, z.ZodObject<{
@@ -381,23 +400,15 @@ declare const SyncReceiptBody: z.ZodDiscriminatedUnion<[z.ZodObject<{
381
400
  request: "request";
382
401
  }>;
383
402
  }, z.core.$strip>], "kind">;
384
- /** What sync looks up by platform ID: a thread or message, who an account is, and a person's accounts. */
403
+ /** What sync looks up by platform ID: a thread or a message. */
385
404
  declare const SyncFindQuery: z.ZodObject<{
386
- code: z.ZodOptional<z.ZodString>;
387
405
  post: z.ZodOptional<z.ZodString>;
388
406
  thread: z.ZodOptional<z.ZodString>;
389
407
  message: z.ZodOptional<z.ZodString>;
390
- account: z.ZodOptional<z.ZodString>;
391
- person: z.ZodOptional<z.ZodString>;
392
408
  }, z.core.$strip>;
393
409
  declare const SyncCopiesQuery: z.ZodObject<{
394
410
  message: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>, z.ZodTransform<string[], string | string[]>>, z.ZodArray<z.ZodString>>;
395
411
  }, z.core.$strip>;
396
- /** A person's own roots since `since`, in epoch milliseconds. */
397
- declare const SyncRootsQuery: z.ZodObject<{
398
- by: z.ZodString;
399
- since: z.ZodCoercedNumber<unknown>;
400
- }, z.core.$strip>;
401
412
  /** Platform events for a sync key's inbox, each with the platform's own ID for it, which dedupes it. */
402
413
  declare const InboxPushBody: z.ZodObject<{
403
414
  events: z.ZodArray<z.ZodObject<{
@@ -527,38 +538,6 @@ declare const InboxAckBody: z.ZodObject<{
527
538
  lease: z.ZodString;
528
539
  error: z.ZodOptional<z.ZodString>;
529
540
  }, z.core.$strip>;
530
- /** A one-time code for linking an account on sync entry `sync`: a person's own, for themselves. */
531
- declare const SyncCodeBody: z.ZodObject<{
532
- sync: z.ZodString;
533
- }, z.core.$strip>;
534
- /**
535
- * A platform account, linked to whoever a code was issued to: one posted from the account, or
536
- * carried through its sign-in. `message` is the platform message that posted it.
537
- */
538
- declare const SyncAccountBody: z.ZodObject<{
539
- sync: z.ZodString;
540
- account: z.ZodObject<{
541
- id: z.ZodString;
542
- handle: z.ZodString;
543
- name: z.ZodString;
544
- isBot: z.ZodBoolean;
545
- avatar: z.ZodPipe<z.ZodNullable<z.ZodString>, z.ZodTransform<string | null, string | null>>;
546
- }, z.core.$strip>;
547
- code: z.ZodString;
548
- message: z.ZodOptional<z.ZodString>;
549
- method: z.ZodOptional<z.ZodEnum<{
550
- code: "code";
551
- consent: "consent";
552
- }>>;
553
- }, z.core.$strip>;
554
- /** A sign-in that carries a code, on the board whose sync runs the entry. */
555
- declare const SignInQuery: z.ZodObject<{
556
- sync: z.ZodString;
557
- code: z.ZodString;
558
- }, z.core.$strip>;
559
- declare const SyncUnlinkBody: z.ZodObject<{
560
- account: z.ZodString;
561
- }, z.core.$strip>;
562
541
  /**
563
542
  * A direct upload, before its bytes: what the file will be called, its type, its exact size, and
564
543
  * the SHA-256 of its bytes, in base64, for a store that signs its URL for them (Vercel's).
@@ -583,7 +562,7 @@ declare const EditBody: z.ZodObject<{
583
562
  declare const DeleteBody: z.ZodOptional<z.ZodObject<{
584
563
  revision: z.ZodOptional<z.ZodNumber>;
585
564
  }, z.core.$strip>>;
586
- /** `status`: what Slack shows in place of "Typing…" (WhatsApp and GitHub ignore it). */
565
+ /** `status`: what Slack shows in place of "Typing…" (other platforms ignore it). */
587
566
  declare const TypingBody: z.ZodOptional<z.ZodObject<{
588
567
  status: z.ZodOptional<z.ZodString>;
589
568
  }, z.core.$strip>>;
@@ -591,6 +570,10 @@ declare const ReactBody: z.ZodObject<{
591
570
  emoji: z.ZodString;
592
571
  remove: z.ZodOptional<z.ZodBoolean>;
593
572
  }, z.core.$strip>;
573
+ /** A channel to make before anything posts to it. */
574
+ declare const CreateChannelBody: z.ZodObject<{
575
+ path: z.ZodString;
576
+ }, z.core.$strip>;
594
577
  /** At most this many labels in a label write's `if`. */
595
578
  declare const LABEL_CONDITIONS_MAX = 16;
596
579
  declare const LabelBody: z.ZodObject<{
@@ -602,7 +585,6 @@ type FiltersInput = z.input<typeof Filters$1>;
602
585
  type SyncImportInput = z.input<typeof SyncImportBody>;
603
586
  type SyncReceiptInput = z.input<typeof SyncReceiptBody>;
604
587
  type SyncFindInput = z.input<typeof SyncFindQuery>;
605
- type SyncAccountInput = z.input<typeof SyncAccountBody>;
606
588
  type MessagesQueryInput = z.input<typeof MessagesQuery>;
607
589
  type ThreadsQueryInput = z.input<typeof ThreadsQuery>;
608
590
  type EventsQueryInput = z.input<typeof EventsQuery>;
@@ -610,6 +592,14 @@ type PostInput = z.input<typeof PostBody>;
610
592
  type ScheduleInput = z.input<typeof ScheduleBody>;
611
593
  type ScheduleBodyOutput = z.output<typeof ScheduleBody>;
612
594
  type SchedulesQueryInput = z.input<typeof SchedulesQuery>;
595
+ /** What `grant` takes: `can` as `access` writes it. */
596
+ type GrantInput = Omit<z.input<typeof GrantBody>, 'can'> & {
597
+ can?: Can;
598
+ };
599
+ /** What `token` takes: `can` as `access` writes it. */
600
+ type TokenInput = Omit<z.input<typeof TokenBody>, 'can'> & {
601
+ can?: Can;
602
+ };
613
603
  type SchedulesQueryOutput = z.output<typeof SchedulesQuery>;
614
604
  /** A scheduled message. It posts as `by`, its creator; each message it posts carries `schedule: { id, n }`. */
615
605
  type ScheduleView = {
@@ -656,20 +646,33 @@ type ScheduleView = {
656
646
  author: ActorView;
657
647
  createdAt: string;
658
648
  };
659
- /** The person a platform account is linked to (`actor.linked`). */
660
- type PersonView = {
649
+ /** A grant: who it lets in, what it lets them do, and who set it when. */
650
+ type GrantView = {
661
651
  id: string;
662
- handle: string;
663
- name: string;
664
- avatar: string | null;
652
+ issuer: string;
653
+ claims: Record<string, string | string[]>;
654
+ can: AccessSummary;
655
+ /** The actor that last set it. */
656
+ by: string;
657
+ at: string;
665
658
  };
666
- /**
667
- * `kind` says who wrote it: a `person` or a platform user (`external`), an agent (`profile`), or a deployment or workflow.
668
- * `person` is who a linked platform account belongs to.
669
- */
670
- type ActorView = Pick<Actor, 'kind' | 'handle' | 'name' | 'avatar'> & {
671
- person?: PersonView;
659
+ /** A token, as its minter and `manage` see it: never its secret. */
660
+ type TokenView = {
661
+ id: string;
662
+ name: string;
663
+ /** What it may do now: its minter's access, as the board's rules and grants give it, narrowed by the token's `can`. `{}` once its minter may do nothing. */
664
+ can: AccessSummary;
665
+ profile: string | null;
666
+ session: string | null;
667
+ /** The actor that minted it, and when. */
668
+ by: string;
669
+ at: string;
670
+ expiresAt: string;
671
+ /** The token it was minted with, which it stops with. */
672
+ parent: string | null;
672
673
  };
674
+ /** `kind` says who wrote it: a `person` or a platform user (`external`), an agent (`profile`), or a deployment or workflow. */
675
+ type ActorView = Pick<Actor, 'kind' | 'handle' | 'name' | 'avatar'>;
673
676
  /** A message as clients see it: its IDs are refs, and `version` says which of two views of it is newer. */
674
677
  type MessageView = Omit<Message, 'id' | 're' | 'replyTo' | 'links' | 'schedule' | 'version' | 'revision'> & {
675
678
  id: string;
@@ -750,7 +753,6 @@ type RegistrationView = {
750
753
  sync: {
751
754
  key: string;
752
755
  platform: string;
753
- signIn: boolean;
754
756
  }[];
755
757
  /** Every wake-up carries it, so the board can tell its registration is stale. */
756
758
  hash: string;
@@ -792,30 +794,6 @@ type Me = {
792
794
  /** What you may do in each channel pattern, implications included: `{ '*': [...every permission] }` is full access. */
793
795
  can: AccessSummary;
794
796
  };
795
- /** A platform account linked to you, as `GET /identity` lists it. */
796
- type LinkedAccount = {
797
- actor: string;
798
- handle: string | null;
799
- name: string | null;
800
- method: 'code' | 'consent';
801
- at: string;
802
- };
803
- type IdentityView = {
804
- principal: string;
805
- links: LinkedAccount[];
806
- /** The sync entries you haven't linked an account on. Boards older than it leave it out. */
807
- unlinked?: string[];
808
- cursor: string;
809
- };
810
- /**
811
- * How to prove an account is yours: post `code` from it anywhere the board syncs before
812
- * `expiresAt`, or, when the entry signs people in, open `signIn` and approve: it carries the code.
813
- */
814
- type SyncCodeView = {
815
- code: string;
816
- expiresAt: string;
817
- signIn?: string;
818
- };
819
797
  /** A thread's sync: its root, where it lives, its targets, and the platform thread it is on each. */
820
798
  type SyncThreadView = {
821
799
  thread: string;
@@ -830,18 +808,6 @@ type SyncFindView = {
830
808
  thread: string | null;
831
809
  /** The board message a platform message is a copy of, or came in as. */
832
810
  message: string | null;
833
- /** Who a platform account is linked to, and how. */
834
- person: {
835
- id: string;
836
- method: 'code' | 'consent';
837
- } | null;
838
- /** The platform accounts linked to a person, and how. */
839
- accounts: {
840
- id: string;
841
- method: 'code' | 'consent';
842
- }[];
843
- /** Who a live code was issued to. */
844
- holder: string | null;
845
811
  };
846
812
  /** A message's copies, by target: where it went, or came from, on each platform. */
847
813
  type SyncCopiesView = {
@@ -859,7 +825,13 @@ type InboxItem = {
859
825
  event: z.infer<typeof ExternalEvent>;
860
826
  raw: unknown;
861
827
  };
862
- type ChannelView = Channel;
828
+ /**
829
+ * A channel, and what its board counts in it: its threads, its messages, and its last message's
830
+ * position. `a2()` keeps all three; Vercel's API keeps none, so a board on it leaves them out.
831
+ */
832
+ type ChannelView = {
833
+ path: string;
834
+ } & Partial<Omit<Channel, 'path'>>;
863
835
  type MessagesPage = {
864
836
  messages: MessageView[];
865
837
  cursor: string;
@@ -966,7 +938,7 @@ type InboxEntry = {
966
938
  };
967
939
  /** The route table: method, path, and the schemas that validate input. */
968
940
  declare const routes: {
969
- /** Where the board is, its project, and the sync entries it links accounts on. No token. */
941
+ /** Where the board is, its project, and its sync entries. No token. */
970
942
  readonly discovery: {
971
943
  readonly method: 'GET';
972
944
  readonly path: '/';
@@ -979,6 +951,14 @@ declare const routes: {
979
951
  readonly method: 'GET';
980
952
  readonly path: '/channels';
981
953
  };
954
+ /** Makes a channel before anything posts to it: needs `read` and `post` there. One that's there already is left as it is. */
955
+ readonly createChannel: {
956
+ readonly method: 'POST';
957
+ readonly path: '/channels';
958
+ readonly body: z.ZodObject<{
959
+ path: z.ZodString;
960
+ }, z.core.$strip>;
961
+ };
982
962
  readonly actors: {
983
963
  readonly method: 'GET';
984
964
  readonly path: '/actors';
@@ -1127,7 +1107,12 @@ declare const routes: {
1127
1107
  re: z.ZodOptional<z.ZodString>;
1128
1108
  channel: z.ZodOptional<z.ZodString>;
1129
1109
  by: z.ZodOptional<z.ZodString>;
1130
- all: z.ZodOptional<z.ZodCoercedBoolean<unknown>>;
1110
+ all: z.ZodOptional<z.ZodPipe<z.ZodEnum<{
1111
+ 0: "0";
1112
+ 1: "1";
1113
+ false: "false";
1114
+ true: "true";
1115
+ }>, z.ZodTransform<boolean, "0" | "1" | "false" | "true">>>;
1131
1116
  }, z.core.$strip>;
1132
1117
  };
1133
1118
  /** Its creator, or manage in its channel, may cancel a schedule. Canceling one that's done is a no-op. */
@@ -1135,6 +1120,45 @@ declare const routes: {
1135
1120
  readonly method: 'POST';
1136
1121
  readonly path: '/schedules/:id/cancel';
1137
1122
  };
1123
+ /** Grants need manage in every channel. Setting one with the same issuer and claims changes its `can`. */
1124
+ readonly grants: {
1125
+ readonly method: 'GET';
1126
+ readonly path: '/grants';
1127
+ };
1128
+ readonly createGrant: {
1129
+ readonly method: 'POST';
1130
+ readonly path: '/grants';
1131
+ readonly body: z.ZodObject<{
1132
+ issuer: z.ZodString;
1133
+ claims: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
1134
+ can: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"all">, z.ZodArray<z.ZodString>]>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodLiteral<"all">, z.ZodArray<z.ZodString>]>>]>>;
1135
+ }, z.core.$strip>;
1136
+ };
1137
+ readonly revokeGrant: {
1138
+ readonly method: 'POST';
1139
+ readonly path: '/grants/:id/revoke';
1140
+ };
1141
+ /** Your tokens, or every one with manage in every channel. A token acts as whoever minted it. */
1142
+ readonly tokens: {
1143
+ readonly method: 'GET';
1144
+ readonly path: '/tokens';
1145
+ };
1146
+ readonly createToken: {
1147
+ readonly method: 'POST';
1148
+ readonly path: '/tokens';
1149
+ readonly body: z.ZodObject<{
1150
+ name: z.ZodString;
1151
+ can: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"all">, z.ZodArray<z.ZodString>]>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodLiteral<"all">, z.ZodArray<z.ZodString>]>>]>>;
1152
+ profile: z.ZodOptional<z.ZodString>;
1153
+ avatar: z.ZodOptional<z.ZodString>;
1154
+ session: z.ZodOptional<z.ZodString>;
1155
+ expires: z.ZodOptional<z.ZodString>;
1156
+ }, z.core.$strip>;
1157
+ };
1158
+ readonly revokeToken: {
1159
+ readonly method: 'POST';
1160
+ readonly path: '/tokens/:id/revoke';
1161
+ };
1138
1162
  /** The caller's own post with the client ID it gave: what `POST /messages` answered, for telling a retry before posting. */
1139
1163
  readonly posted: {
1140
1164
  readonly method: 'GET';
@@ -1464,7 +1488,6 @@ declare const routes: {
1464
1488
  external: z.ZodObject<{
1465
1489
  thread: z.ZodString;
1466
1490
  message: z.ZodString;
1467
- asUser: z.ZodOptional<z.ZodLiteral<true>>;
1468
1491
  }, z.core.$strip>;
1469
1492
  files: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
1470
1493
  }, z.core.$strip>, z.ZodObject<{
@@ -1501,12 +1524,9 @@ declare const routes: {
1501
1524
  readonly method: 'GET';
1502
1525
  readonly path: '/sync/find';
1503
1526
  readonly query: z.ZodObject<{
1504
- code: z.ZodOptional<z.ZodString>;
1505
1527
  post: z.ZodOptional<z.ZodString>;
1506
1528
  thread: z.ZodOptional<z.ZodString>;
1507
1529
  message: z.ZodOptional<z.ZodString>;
1508
- account: z.ZodOptional<z.ZodString>;
1509
- person: z.ZodOptional<z.ZodString>;
1510
1530
  }, z.core.$strip>;
1511
1531
  };
1512
1532
  /** Messages' copies on platforms. */
@@ -1517,52 +1537,6 @@ declare const routes: {
1517
1537
  message: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>, z.ZodTransform<string[], string | string[]>>, z.ZodArray<z.ZodString>>;
1518
1538
  }, z.core.$strip>;
1519
1539
  };
1520
- /** A person's recent roots, for telling their own platform copies from new messages. */
1521
- readonly syncRoots: {
1522
- readonly method: 'GET';
1523
- readonly path: '/sync/roots';
1524
- readonly query: z.ZodObject<{
1525
- by: z.ZodString;
1526
- since: z.ZodCoercedNumber<unknown>;
1527
- }, z.core.$strip>;
1528
- };
1529
- /** A one-time code for linking a platform account. */
1530
- readonly syncCode: {
1531
- readonly method: 'POST';
1532
- readonly path: '/sync/codes';
1533
- readonly body: z.ZodObject<{
1534
- sync: z.ZodString;
1535
- }, z.core.$strip>;
1536
- };
1537
- /** Links a platform account, by a code or for a person. */
1538
- readonly syncAccount: {
1539
- readonly method: 'POST';
1540
- readonly path: '/sync/accounts';
1541
- readonly body: z.ZodObject<{
1542
- sync: z.ZodString;
1543
- account: z.ZodObject<{
1544
- id: z.ZodString;
1545
- handle: z.ZodString;
1546
- name: z.ZodString;
1547
- isBot: z.ZodBoolean;
1548
- avatar: z.ZodPipe<z.ZodNullable<z.ZodString>, z.ZodTransform<string | null, string | null>>;
1549
- }, z.core.$strip>;
1550
- code: z.ZodString;
1551
- message: z.ZodOptional<z.ZodString>;
1552
- method: z.ZodOptional<z.ZodEnum<{
1553
- code: "code";
1554
- consent: "consent";
1555
- }>>;
1556
- }, z.core.$strip>;
1557
- };
1558
- /** Unlinks a platform account. */
1559
- readonly syncUnlink: {
1560
- readonly method: 'POST';
1561
- readonly path: '/sync/accounts/unlink';
1562
- readonly body: z.ZodObject<{
1563
- account: z.ZodString;
1564
- }, z.core.$strip>;
1565
- };
1566
1540
  /** Reads a platform channel or thread on demand, where that sync runs, without syncing or storing it. Full access only. */
1567
1541
  readonly readSource: {
1568
1542
  readonly method: 'GET';
@@ -1598,7 +1572,12 @@ declare const routes: {
1598
1572
  text: z.ZodOptional<z.ZodString>;
1599
1573
  after: z.ZodOptional<z.ZodString>;
1600
1574
  wait: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
1601
- all: z.ZodOptional<z.ZodCoercedBoolean<unknown>>;
1575
+ all: z.ZodOptional<z.ZodPipe<z.ZodEnum<{
1576
+ 0: "0";
1577
+ 1: "1";
1578
+ false: "false";
1579
+ true: "true";
1580
+ }>, z.ZodTransform<boolean, "0" | "1" | "false" | "true">>>;
1602
1581
  }, z.core.$strip>;
1603
1582
  };
1604
1583
  readonly avatar: {
@@ -1634,36 +1613,6 @@ declare const routes: {
1634
1613
  readonly method: 'GET';
1635
1614
  readonly path: '/openapi.json';
1636
1615
  };
1637
- /** Your linked platform accounts. */
1638
- readonly identity: {
1639
- readonly method: 'GET';
1640
- readonly path: '/identity';
1641
- };
1642
- /** Starts a sign-in that carries a code (no token), on the board that runs the entry's sync. */
1643
- readonly signIn: {
1644
- readonly method: 'GET';
1645
- readonly path: '/identity/sign-in';
1646
- readonly query: z.ZodObject<{
1647
- sync: z.ZodString;
1648
- code: z.ZodString;
1649
- }, z.core.$strip>;
1650
- };
1651
- /** Where a sign-in comes back (no token): links the account it authorized to the code's person. */
1652
- readonly signedIn: {
1653
- readonly method: 'GET';
1654
- readonly path: '/identity/signed-in';
1655
- readonly query: z.ZodObject<{
1656
- sync: z.ZodString;
1657
- code: z.ZodString;
1658
- }, z.core.$strip>;
1659
- };
1660
- readonly identityUnlink: {
1661
- readonly method: 'POST';
1662
- readonly path: '/identity/unlink';
1663
- readonly body: z.ZodObject<{
1664
- actor: z.ZodString;
1665
- }, z.core.$strip>;
1666
- };
1667
1616
  /** Watchers registered by boards on `http()`: every one to `manage` everywhere, the caller's own to anyone else. */
1668
1617
  readonly watchers: {
1669
1618
  readonly method: 'GET';
@@ -1684,7 +1633,6 @@ declare const routes: {
1684
1633
  sync: z.ZodOptional<z.ZodArray<z.ZodObject<{
1685
1634
  key: z.ZodString;
1686
1635
  platform: z.ZodString;
1687
- signIn: z.ZodDefault<z.ZodBoolean>;
1688
1636
  }, z.core.$strip>>>;
1689
1637
  url: z.ZodOptional<z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>>;
1690
1638
  path: z.ZodOptional<z.ZodNull>;
@@ -1700,7 +1648,6 @@ declare const routes: {
1700
1648
  sync: z.ZodOptional<z.ZodArray<z.ZodObject<{
1701
1649
  key: z.ZodString;
1702
1650
  platform: z.ZodString;
1703
- signIn: z.ZodDefault<z.ZodBoolean>;
1704
1651
  }, z.core.$strip>>>;
1705
1652
  url: z.ZodOptional<z.ZodNull>;
1706
1653
  path: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
@@ -1857,17 +1804,16 @@ declare function createBoardClient(options: ClientOptions): {
1857
1804
  }) => Promise<Response>;
1858
1805
  discovery: () => Promise<Discovery>;
1859
1806
  me: () => Promise<Me>;
1860
- channels: () => Promise<Channel[]>;
1861
- actors: () => Promise<(Actor & {
1862
- person?: ActorView['person'];
1863
- })[]>;
1864
- /** Your linked platform accounts, and the sync entries you haven't linked (`unlinked`). */
1865
- identity: () => Promise<IdentityView>;
1866
- /** Unlinks one of your accounts, by actor ID or handle. History keeps its messages as they were. */
1867
- unlinkAccount: (account: string) => Promise<{
1868
- ok: true;
1869
- actor: string;
1807
+ channels: () => Promise<ChannelView[]>;
1808
+ /**
1809
+ * Makes a channel before anything posts to it, as a first post would. Needs `read` and `post`
1810
+ * there. `created` is false when it was there already; it's left as it is.
1811
+ */
1812
+ createChannel: (path: string) => Promise<{
1813
+ channel: ChannelView;
1814
+ created: boolean;
1870
1815
  }>;
1816
+ actors: () => Promise<Actor[]>;
1871
1817
  messages: (query?: Filters & Omit<MessagesQueryInput, keyof FiltersInput>) => Promise<MessagesPage>;
1872
1818
  thread: (id: string) => Promise<ThreadView>;
1873
1819
  /** Your own post with the client ID you gave it, as posting it answered: 404 `post_not_found` when there's none. */
@@ -1886,12 +1832,44 @@ declare function createBoardClient(options: ClientOptions): {
1886
1832
  re: string;
1887
1833
  }, input: ScheduleOptions): Promise<Written<ScheduleView>>;
1888
1834
  /** Pending schedules (`all` for done and canceled too), oldest first. `re` is any message in a thread. */
1889
- schedules: (query?: SchedulesQueryInput) => Promise<ScheduleView[]>;
1835
+ schedules: (query?: Omit<SchedulesQueryInput, 'all'> & {
1836
+ all?: boolean;
1837
+ }) => Promise<ScheduleView[]>;
1890
1838
  /** Stops a schedule: yours, or any with manage in its channel. `canceled` is false when it was already done or canceled. */
1891
1839
  cancelSchedule: (id: string) => Promise<{
1892
1840
  schedule: ScheduleView;
1893
1841
  canceled: boolean;
1894
1842
  }>;
1843
+ /**
1844
+ * Lets in callers with an OIDC token from `issuer` that carries every one of `claims`, to do
1845
+ * what `can` says (read, post, react, and label everywhere when left out). Setting the same
1846
+ * issuer and claims again changes its `can`: `created` says which. Needs manage in every channel.
1847
+ */
1848
+ createGrant: (input: GrantInput) => Promise<{
1849
+ grant: GrantView;
1850
+ created: boolean;
1851
+ }>;
1852
+ /** The board's grants. Needs manage in every channel. */
1853
+ grants: () => Promise<GrantView[]>;
1854
+ /** `revoked` is false when it was already gone. Its principals' next requests are refused. */
1855
+ revokeGrant: (id: string) => Promise<{
1856
+ revoked: boolean;
1857
+ }>;
1858
+ /**
1859
+ * A token that acts as you, narrowed to `can`, writing as `profile` and `session` when they're
1860
+ * given: for a widget, a sandbox, a script. `secret` shows only here. It lives 30 days, or
1861
+ * `expires`, at most 90.
1862
+ */
1863
+ createToken: (input: TokenInput) => Promise<{
1864
+ token: TokenView;
1865
+ secret: string;
1866
+ }>;
1867
+ /** Your live tokens, or everyone's with manage in every channel. Never their secrets. */
1868
+ tokens: () => Promise<TokenView[]>;
1869
+ /** It and every token minted with it stop. `revoked` is false when it was already revoked. */
1870
+ revokeToken: (id: string) => Promise<{
1871
+ revoked: boolean;
1872
+ }>;
1895
1873
  /**
1896
1874
  * Stores a file on the board, for a post or reply's `attachments`. Up to 4 MB goes in one
1897
1875
  * request; bigger, up to 100 MB, goes straight to the board's blob store on a URL the board
@@ -1935,9 +1913,8 @@ declare function createBoardClient(options: ClientOptions): {
1935
1913
  ok: true;
1936
1914
  }>;
1937
1915
  /**
1938
- * Shows typing in the platform threads the message's thread is synced to
1939
- * (on WhatsApp, also marking the latest inbound message read). Ephemeral:
1940
- * nothing goes in the log. Answers the external threads that took it.
1916
+ * Shows typing in the platform threads the message's thread is synced to.
1917
+ * Ephemeral: nothing goes in the log. Answers the external threads that took it.
1941
1918
  * `status` replaces "Typing…" on Slack ("running tests…").
1942
1919
  */
1943
1920
  typing: (id: string, status?: string) => Promise<string[]>;
@@ -2007,14 +1984,12 @@ declare function createBoardClient(options: ClientOptions): {
2007
1984
  }>;
2008
1985
  /** A board thread's sync, by its key. */
2009
1986
  syncThread: (thread: string) => Promise<SyncThreadView>;
2010
- /** What platform IDs are on the board: a thread, a message, who an account is, a person's accounts. */
1987
+ /** What platform IDs are on the board: a thread, or a message. */
2011
1988
  syncFind: (query: SyncFindInput, opts?: {
2012
1989
  signal?: AbortSignal;
2013
1990
  }) => Promise<SyncFindView>;
2014
1991
  /** Messages' copies on platforms, by message and target. */
2015
1992
  syncCopies: (messages: string[]) => Promise<Record<string, Record<string, ExternalCopy>>>;
2016
- /** A person's roots since `since`. */
2017
- syncRoots: (by: string, since: Date | number) => Promise<MessageView[]>;
2018
1993
  /** Pushes platform events into your inbox for sync key `key`; each platform ID lands once. */
2019
1994
  inboxPush: (key: string, events: {
2020
1995
  id: string;
@@ -2034,23 +2009,11 @@ declare function createBoardClient(options: ClientOptions): {
2034
2009
  }) => Promise<{
2035
2010
  ok: true;
2036
2011
  }>;
2037
- /**
2038
- * A one-time code for linking your account on sync entry `sync`, to post from that account where
2039
- * the board syncs, and `signIn` when the entry signs people in: open it (only you) and approve.
2040
- * Only people get one, each for themselves. `identity()` shows the link once it's made.
2041
- */
2042
- syncCode: (sync: string) => Promise<SyncCodeView>;
2043
- /** Links a platform account to whoever a code was issued to: one posted from it, or carried through its sign-in. */
2044
- syncAccount: (body: SyncAccountInput) => Promise<{
2045
- person: string;
2046
- link: LinkedAccount;
2047
- }>;
2048
- /** Unlinks a platform account: your own, or anyone's with `sync`. */
2049
- syncUnlink: (account: string) => Promise<{
2050
- ok: true;
2051
- }>;
2052
2012
  /** Live events. Reconnects from the last seen index whenever the stream closes. */
2053
- events(query?: Filters & Pick<EventsQueryInput, 'after' | 'all'>, opts?: {
2013
+ events(query?: Filters & {
2014
+ after?: string;
2015
+ all?: boolean;
2016
+ }, opts?: {
2054
2017
  signal?: AbortSignal;
2055
2018
  }): AsyncGenerator<BoardEventView>;
2056
2019
  /** The next matching event after `after` (default: now), or null on timeout. */
@@ -2059,4 +2022,4 @@ declare function createBoardClient(options: ClientOptions): {
2059
2022
  }, opts?: WaitOptions): Promise<BoardEventView | null>;
2060
2023
  };
2061
2024
  //#endregion
2062
- export { RegisterBody as $, InboxItem as A, SyncReceiptInput as At, MatchesQuery as B, TypingBody as Bt, EventsQuery as C, SyncCopiesView as Ct, IdentityView as D, SyncImportBody as Dt, IdentityUnlinkBody as E, SyncFindView as Et, LabelBody as F, ThreadSummaryView as Ft, MessagesQueryInput as G, MessageView as H, UploadStartBody as Ht, LinkView as I, ThreadView as It, PostBody as J, ParsedFilters as K, LinkedAccount as L, ThreadsPage as Lt, InboxPushBody as M, SyncThreadView as Mt, InboxQuery as N, SyncUnlinkBody as Nt, InboxAckBody as O, SyncImportInput as Ot, LABEL_CONDITIONS_MAX as P, SyncedView as Pt, Ref as Q, LinkedQuery as R, ThreadsQuery as Rt, EventsPage as S, SyncCopiesQuery as St, FiltersInput as T, SyncFindQuery as Tt, MessagesPage as U, UploadTicket as Ut, Me as V, TypingResult as Vt, MessagesQuery as W, routes as Wt, REGISTERED_WATCHERS_MAX as X, PostInput as Y, ReactBody as Z, BoardEventView as _, SyncAccountBody as _t, PostOptions as a, ScheduleBodyOutput as at, Discovery as b, SyncCodeBody as bt, ScheduleOptions as c, SchedulesQuery as ct, WaitOptions as d, SignInQuery as dt, RegisterInput as et, Written as f, SourceJoin as ft, ApiError as g, SourceReadQuery as gt, ActorView as h, SourceRead as ht, Filters as i, ScheduleBody as it, InboxNextQuery as j, SyncRootsQuery as jt, InboxEntry as k, SyncReceiptBody as kt, ScheduleTiming as l, SchedulesQueryInput as lt, AckBody as m, SourceMessage as mt, BoardError as n, ResolvedSyncTarget as nt, ProfileOption as o, ScheduleInput as ot, duration as p, SourceJoinBody as pt, PersonView as q, ErrorOrigin as r, RouteName as rt, ReplyOptions as s, ScheduleView as st, BoardClient as t, RegistrationView as tt, UploadInput as u, SchedulesQueryOutput as ut, ChannelView as v, SyncAccountInput as vt, EventsQueryInput as w, SyncFindInput as wt, EditBody as x, SyncCodeView as xt, DeleteBody as y, SyncBody as yt, MatchView as z, ThreadsQueryInput as zt };
2025
+ export { RegisterBody as $, InboxAckBody as A, ThreadsPage as At, MatchView as B, routes as Bt, EventsPage as C, SyncImportInput as Ct, GrantBody as D, SyncedView as Dt, FiltersInput as E, SyncThreadView as Et, InboxQuery as F, TokenView as Ft, MessagesQuery as G, Me as H, LABEL_CONDITIONS_MAX as I, TypingBody as It, PostBody as J, MessagesQueryInput as K, LabelBody as L, TypingResult as Lt, InboxItem as M, ThreadsQueryInput as Mt, InboxNextQuery as N, TokenBody as Nt, GrantInput as O, ThreadSummaryView as Ot, InboxPushBody as P, TokenInput as Pt, Ref as Q, LinkView as R, UploadStartBody as Rt, EditBody as S, SyncImportBody as St, EventsQueryInput as T, SyncReceiptInput as Tt, MessageView as U, MatchesQuery as V, MessagesPage as W, REGISTERED_WATCHERS_MAX as X, PostInput as Y, ReactBody as Z, BoardEventView as _, SyncCopiesQuery as _t, PostOptions as a, ScheduleBodyOutput as at, DeleteBody as b, SyncFindQuery as bt, ScheduleOptions as c, SchedulesQuery as ct, WaitOptions as d, SourceJoin as dt, RegisterInput as et, Written as f, SourceJoinBody as ft, ApiError as g, SyncBody as gt, ActorView as h, SourceReadQuery as ht, Filters as i, ScheduleBody as it, InboxEntry as j, ThreadsQuery as jt, GrantView as k, ThreadView as kt, ScheduleTiming as l, SchedulesQueryInput as lt, AckBody as m, SourceRead as mt, BoardError as n, ResolvedSyncTarget as nt, ProfileOption as o, ScheduleInput as ot, duration as p, SourceMessage as pt, ParsedFilters as q, ErrorOrigin as r, RouteName as rt, ReplyOptions as s, ScheduleView as st, BoardClient as t, RegistrationView as tt, UploadInput as u, SchedulesQueryOutput as ut, ChannelView as v, SyncCopiesView as vt, EventsQuery as w, SyncReceiptBody as wt, Discovery as x, SyncFindView as xt, CreateChannelBody as y, SyncFindInput as yt, LinkedQuery as z, UploadTicket as zt };