@vercel/board 0.15.0 → 0.17.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 (130) hide show
  1. package/README.md +27 -27
  2. package/dist/{a2-DYGYankn.mjs → a2-Bck5x1Kh.mjs} +969 -25
  3. package/dist/access.d.mts +5 -4
  4. package/dist/access.mjs +3 -3
  5. package/dist/{actors-rdN4dDTU.mjs → actors-BOamkEuz.mjs} +7 -76
  6. package/dist/attempts-CLG840Oj.mjs +20 -0
  7. package/dist/{auth-wHFcAte3.d.mts → auth-CU56Q2Xh.d.mts} +2 -1
  8. package/dist/{auth-COzc09sn.mjs → auth-Drg9FiC2.mjs} +225 -2
  9. package/dist/backend-B-SJ7p6p.d.mts +680 -0
  10. package/dist/backend-a2/contract.d.mts +873 -2
  11. package/dist/backend-a2/contract.mjs +2 -2
  12. package/dist/backend-a2/scheduler-local.d.mts +1 -1
  13. package/dist/backend-a2/scheduler-local.mjs +1 -1
  14. package/dist/backend-a2/scheduler-qstash.d.mts +78 -1
  15. package/dist/backend-a2/scheduler-qstash.mjs +521 -1
  16. package/dist/backend-a2/scheduler-vercel.d.mts +37 -1
  17. package/dist/backend-a2/scheduler-vercel.mjs +203 -1
  18. package/dist/backend-a2/store-memory.d.mts +2 -2
  19. package/dist/backend-a2/store-memory.mjs +3 -3
  20. package/dist/backend-a2/store-postgres.d.mts +1 -1
  21. package/dist/backend-a2/store-postgres.mjs +2850 -2
  22. package/dist/backend-a2/store-redis-http.d.mts +1 -1
  23. package/dist/backend-a2/store-redis-http.mjs +490 -2
  24. package/dist/backend-a2/store-redis.d.mts +10 -2
  25. package/dist/backend-a2/store-redis.mjs +51 -2
  26. package/dist/backend-a2/store-sqlite.d.mts +1 -1
  27. package/dist/backend-a2/store-sqlite.mjs +3 -3
  28. package/dist/backend-a2.d.mts +2706 -3
  29. package/dist/backend-a2.mjs +1 -1
  30. package/dist/{backend-http-8ex5g7Wv.d.mts → backend-http-7cNb8nJI.d.mts} +10 -3
  31. package/dist/{backend-http-BsDSgmeo.mjs → backend-http-C5I7Wfdw.mjs} +2 -2
  32. package/dist/{backend-http-Cv6xbEy9.mjs → backend-http-CuUIACCs.mjs} +32 -3
  33. package/dist/backend-http.d.mts +1 -1
  34. package/dist/backend-http.mjs +1 -1
  35. package/dist/backend-http.node.d.mts +1 -1
  36. package/dist/backend-http.node.mjs +1 -1
  37. package/dist/{chat-provider-XCnQlxq6.d.mts → chat-provider-DNJQyajS.d.mts} +16 -4
  38. package/dist/{chat-provider-jFSeyNmB.mjs → chat-provider-YHy-WbrB.mjs} +15 -9
  39. package/dist/cli.mjs +30 -10
  40. package/dist/{client-DGDPaN7U.mjs → client-BA-J7usH.mjs} +10 -2
  41. package/dist/{conformance-DRR23YNy.mjs → conformance-CT5EeHeC.mjs} +5 -2
  42. package/dist/conformance.d.mts +1 -1
  43. package/dist/conformance.mjs +1 -1
  44. package/dist/{engine-3EvQ8idk.mjs → engine-D0oBUBEK.mjs} +249 -163
  45. package/dist/events-CewD4kw7.mjs +75 -0
  46. package/dist/{exports-CyY3_FjZ.mjs → exports-DOdA7KhF.mjs} +35 -32
  47. package/dist/exports-ZsgjzEnM.d.mts +4 -0
  48. package/dist/external-BV_cUncs.mjs +151 -0
  49. package/dist/folds-CRYY14kc.d.mts +534 -0
  50. package/dist/{reducers-mUPFuFJV.mjs → folds-Dyjput8M.mjs} +6 -73
  51. package/dist/ids-C6AYo1bu.mjs +31 -0
  52. package/dist/index.d.mts +5 -5
  53. package/dist/{index.default-BZ3lItjH.mjs → index.default-n4qKN7EL.mjs} +1 -1
  54. package/dist/index.mjs +5 -5
  55. package/dist/index.node.d.mts +5 -5
  56. package/dist/index.node.mjs +3 -3
  57. package/dist/inspect/app.js +31 -31
  58. package/dist/inspect/engine.js +5 -5
  59. package/dist/internal-CvsrprnU-CRY89I-b.mjs +203 -0
  60. package/dist/{local-Cr_dSjvs.mjs → local-DhkrAqPP.mjs} +1 -1
  61. package/dist/mentions-CB6ShY4R.mjs +72 -0
  62. package/dist/{targets-ojFEXEyN.mjs → middleware-CqaCwucP.mjs} +1 -33
  63. package/dist/platform-B4TnJtWu-CwcTyKg2.mjs +32 -0
  64. package/dist/{project-CFiArraX.mjs → project-DMDST9kl.mjs} +1 -1
  65. package/dist/{provider-BGjz-mDa.d.mts → provider-B0b9Qxw4.d.mts} +170 -40
  66. package/dist/provider-B3DpYSDq.mjs +220 -0
  67. package/dist/redis-tables-DN9PfIDi.mjs +3897 -0
  68. package/dist/reducer-CYPHsSmd-BQIfozGi.d.mts +170 -0
  69. package/dist/reducer-CjmvZSAb-D_OSISmj.mjs +74 -0
  70. package/dist/{contract-CuJmlrhw.mjs → reducers-BFmIXilu.mjs} +260 -287
  71. package/dist/retryable-lazy-DZWmHpii-Bye-W8q7.mjs +19 -0
  72. package/dist/scheduler-task-X1SToDjP-BVoWuInI.mjs +69 -0
  73. package/dist/{serve-Ccbb2LSb.mjs → serve-CNYvA4pT.mjs} +5 -5
  74. package/dist/server-DtFrWxi3-Boa6gdWO.mjs +3602 -0
  75. package/dist/server-qgez0Xny-D5mLfqFQ.d.mts +385 -0
  76. package/dist/{server-Cxey38B-.mjs → server-snYFkITb.mjs} +4 -4
  77. package/dist/{serving-BNbzc96L.mjs → serving-CNkgUPW1.mjs} +1 -1
  78. package/dist/session-clear-wHd5GCpZ-BnKSxReK.mjs +51 -0
  79. package/dist/{sql-DbiEnqM0.mjs → sql-U9WTxrwJ.mjs} +2 -2
  80. package/dist/{sqlite-db-Cbj03vmp.mjs → sqlite-db-Ds4majtT.mjs} +1 -1
  81. package/dist/store-D0MhBvg6-4Z2L0Kqd.d.mts +530 -0
  82. package/dist/store-N8PXxDAS-BWBgzBHp.mjs +5 -0
  83. package/dist/store-codec-DwrWlgQx-CYxGW0aD.mjs +61 -0
  84. package/dist/store-memory-Bas9Uq5C.mjs +872 -0
  85. package/dist/store-memory-ZLiZbH3R.mjs +2 -0
  86. package/dist/store-polling-BZt2Rf3D-BiEM6_HB.mjs +148 -0
  87. package/dist/store-presence-polling-JuAy2Ck2-CYpuK75X.mjs +109 -0
  88. package/dist/store-sqlite-BmwL3pUR.mjs +2 -0
  89. package/dist/store-sqlite-CxxPCcCT.mjs +1053 -0
  90. package/dist/stream-buffer-DrTyiIuo-BKy-vI14.mjs +53 -0
  91. package/dist/sync-github.d.mts +24 -17
  92. package/dist/sync-github.mjs +89 -22
  93. package/dist/sync-kapso.d.mts +15 -13
  94. package/dist/sync-kapso.mjs +17 -14
  95. package/dist/sync-slack.d.mts +12 -17
  96. package/dist/sync-slack.mjs +54 -42
  97. package/dist/sync.chat.d.mts +1 -1
  98. package/dist/sync.chat.mjs +1 -1
  99. package/dist/sync.d.mts +3 -3
  100. package/dist/sync.mjs +5 -4
  101. package/dist/targets-C-wdR5wP.mjs +33 -0
  102. package/dist/{tokens-DKLn5P9B.mjs → tokens-DhuzKzAl.mjs} +1 -1
  103. package/dist/{types-BHCjTZdB.d.mts → types-8yq2VnKI.d.mts} +2 -2
  104. package/dist/{users-Dls7_ANV.mjs → users-yryHKFMo.mjs} +2 -2
  105. package/dist/{watch-spec-W0c7ypHJ.mjs → watchers-hash-DojIuoFg.mjs} +233 -28
  106. package/docs/01-board/01-mounting.md +1 -1
  107. package/docs/01-board/03-identity.md +3 -1
  108. package/docs/01-board/09-access.md +4 -2
  109. package/docs/02-sync/01-overview.md +69 -47
  110. package/docs/02-sync/02-functions.md +395 -0
  111. package/docs/02-sync/03-slack.md +30 -25
  112. package/docs/02-sync/04-github.md +62 -26
  113. package/docs/02-sync/05-whatsapp.md +23 -19
  114. package/docs/02-sync/06-providers.md +58 -26
  115. package/docs/03-guides/04-triage.md +1 -1
  116. package/docs/04-reference/01-cli.md +26 -6
  117. package/docs/04-reference/02-board.md +18 -5
  118. package/docs/04-reference/03-http.md +6 -3
  119. package/docs/04-reference/05-conformance.md +1 -1
  120. package/docs/index.md +5 -10
  121. package/package.json +22 -6
  122. package/dist/a2-5EG8FkZ8.d.mts +0 -3359
  123. package/dist/access-CJU2-vaa.mjs +0 -226
  124. package/dist/attempts-BQUp9MKO.mjs +0 -919
  125. package/dist/exports-BpgyEdh6.d.mts +0 -4
  126. package/dist/provider-CuewcDNZ.mjs +0 -205
  127. package/dist/redis-tables-B35vv4CZ.mjs +0 -842
  128. package/dist/reducers-B_vUGQRp.d.mts +0 -1172
  129. package/dist/watchers-hash-D9hbHLKB.mjs +0 -225
  130. package/docs/02-sync/02-callbacks.md +0 -265
@@ -1,1172 +0,0 @@
1
- import { i as Attachment, o as Author, p as Labels, r as ActorKind } from "./schemas-CWxs3ECJ.mjs";
2
- import { z } from "zod";
3
- import { ContractEvent } from "experimental-a2";
4
- //#region src/contract/contract.d.ts
5
- /** Where a message came from on a platform. `thread` is grouped (GitHub review threads fold into their PR). */
6
- declare const Origin: z.ZodObject<{
7
- channel: z.ZodOptional<z.ZodString>;
8
- thread: z.ZodString;
9
- subthread: z.ZodNullable<z.ZodString>;
10
- message: z.ZodString;
11
- context: z.ZodNullable<z.ZodString>;
12
- }, z.core.$strip>;
13
- /**
14
- * A platform message linked from a message (a Slack permalink): the board message
15
- * it was synced to, if any, and a snapshot of it, or why the board couldn't read it.
16
- */
17
- declare const Link: z.ZodObject<{
18
- url: z.ZodString;
19
- message: z.ZodNullable<z.ZodNumber>;
20
- snapshot: z.ZodNullable<z.ZodObject<{
21
- author: z.ZodString;
22
- text: z.ZodString;
23
- createdAt: z.ZodNullable<z.ZodString>;
24
- files: z.ZodArray<z.ZodObject<{
25
- name: z.ZodString;
26
- url: z.ZodNullable<z.ZodString>;
27
- }, z.core.$strip>>;
28
- }, z.core.$strip>>;
29
- unavailable: z.ZodNullable<z.ZodString>;
30
- }, z.core.$strip>;
31
- type Link = z.infer<typeof Link>;
32
- /** The board's one log. Every board fact is an event in session `board`. */
33
- declare const boardContract: import("experimental-a2").Contract<{
34
- 'message.posted': z.ZodObject<{
35
- channel: z.ZodString;
36
- text: z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"">]>;
37
- re: z.ZodNullable<z.ZodNumber>;
38
- replyTo: z.ZodNullable<z.ZodNumber>;
39
- thread: z.ZodString;
40
- labels: z.ZodRecord<z.ZodString, z.ZodString>;
41
- noSync: z.ZodBoolean;
42
- mentions: z.ZodArray<z.ZodString>;
43
- by: z.ZodObject<{
44
- actor: z.ZodString;
45
- principal: z.ZodString;
46
- profile: z.ZodNullable<z.ZodString>;
47
- session: z.ZodNullable<z.ZodString>;
48
- }, z.core.$strip>;
49
- origin: z.ZodNullable<z.ZodObject<{
50
- channel: z.ZodOptional<z.ZodString>;
51
- thread: z.ZodString;
52
- subthread: z.ZodNullable<z.ZodString>;
53
- message: z.ZodString;
54
- context: z.ZodNullable<z.ZodString>;
55
- }, z.core.$strip>>;
56
- from: z.ZodNullable<z.ZodString>;
57
- attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
58
- id: z.ZodString;
59
- name: z.ZodString;
60
- type: z.ZodString;
61
- size: z.ZodNumber;
62
- }, z.core.$strip>>>;
63
- links: z.ZodOptional<z.ZodArray<z.ZodObject<{
64
- url: z.ZodString;
65
- message: z.ZodNullable<z.ZodNumber>;
66
- snapshot: z.ZodNullable<z.ZodObject<{
67
- author: z.ZodString;
68
- text: z.ZodString;
69
- createdAt: z.ZodNullable<z.ZodString>;
70
- files: z.ZodArray<z.ZodObject<{
71
- name: z.ZodString;
72
- url: z.ZodNullable<z.ZodString>;
73
- }, z.core.$strip>>;
74
- }, z.core.$strip>>;
75
- unavailable: z.ZodNullable<z.ZodString>;
76
- }, z.core.$strip>>>;
77
- schedule: z.ZodOptional<z.ZodObject<{
78
- id: z.ZodNumber;
79
- n: z.ZodNumber;
80
- }, z.core.$strip>>;
81
- blind: z.ZodOptional<z.ZodLiteral<true>>;
82
- importedBy: z.ZodOptional<z.ZodString>;
83
- }, z.core.$strip>;
84
- /** A message's links changed: an edit linked something new, or the platform sent what a link says. */
85
- 'message.linked': z.ZodObject<{
86
- id: z.ZodNumber;
87
- thread: z.ZodString;
88
- links: z.ZodArray<z.ZodObject<{
89
- url: z.ZodString;
90
- message: z.ZodNullable<z.ZodNumber>;
91
- snapshot: z.ZodNullable<z.ZodObject<{
92
- author: z.ZodString;
93
- text: z.ZodString;
94
- createdAt: z.ZodNullable<z.ZodString>;
95
- files: z.ZodArray<z.ZodObject<{
96
- name: z.ZodString;
97
- url: z.ZodNullable<z.ZodString>;
98
- }, z.core.$strip>>;
99
- }, z.core.$strip>>;
100
- unavailable: z.ZodNullable<z.ZodString>;
101
- }, z.core.$strip>>;
102
- by: z.ZodObject<{
103
- actor: z.ZodString;
104
- principal: z.ZodString;
105
- profile: z.ZodNullable<z.ZodString>;
106
- session: z.ZodNullable<z.ZodString>;
107
- }, z.core.$strip>;
108
- from: z.ZodNullable<z.ZodString>;
109
- }, z.core.$strip>;
110
- 'message.edited': z.ZodObject<{
111
- id: z.ZodNumber;
112
- thread: z.ZodString;
113
- text: z.ZodString;
114
- mentions: z.ZodArray<z.ZodString>;
115
- by: z.ZodObject<{
116
- actor: z.ZodString;
117
- principal: z.ZodString;
118
- profile: z.ZodNullable<z.ZodString>;
119
- session: z.ZodNullable<z.ZodString>;
120
- }, z.core.$strip>;
121
- from: z.ZodNullable<z.ZodString>;
122
- }, z.core.$strip>;
123
- 'message.deleted': z.ZodObject<{
124
- id: z.ZodNumber;
125
- thread: z.ZodString;
126
- by: z.ZodObject<{
127
- actor: z.ZodString;
128
- principal: z.ZodString;
129
- profile: z.ZodNullable<z.ZodString>;
130
- session: z.ZodNullable<z.ZodString>;
131
- }, z.core.$strip>;
132
- from: z.ZodNullable<z.ZodString>;
133
- }, z.core.$strip>;
134
- 'reaction.added': z.ZodObject<{
135
- id: z.ZodNumber;
136
- thread: z.ZodString;
137
- emoji: z.ZodString;
138
- by: z.ZodObject<{
139
- actor: z.ZodString;
140
- principal: z.ZodString;
141
- profile: z.ZodNullable<z.ZodString>;
142
- session: z.ZodNullable<z.ZodString>;
143
- }, z.core.$strip>;
144
- from: z.ZodNullable<z.ZodString>;
145
- }, z.core.$strip>;
146
- 'reaction.removed': z.ZodObject<{
147
- id: z.ZodNumber;
148
- thread: z.ZodString;
149
- emoji: z.ZodString;
150
- by: z.ZodObject<{
151
- actor: z.ZodString;
152
- principal: z.ZodString;
153
- profile: z.ZodNullable<z.ZodString>;
154
- session: z.ZodNullable<z.ZodString>;
155
- }, z.core.$strip>;
156
- from: z.ZodNullable<z.ZodString>;
157
- }, z.core.$strip>;
158
- 'labels.changed': z.ZodObject<{
159
- id: z.ZodNumber;
160
- thread: z.ZodString;
161
- set: z.ZodRecord<z.ZodString, z.ZodString>;
162
- unset: z.ZodArray<z.ZodString>;
163
- by: z.ZodObject<{
164
- actor: z.ZodString;
165
- principal: z.ZodString;
166
- profile: z.ZodNullable<z.ZodString>;
167
- session: z.ZodNullable<z.ZodString>;
168
- }, z.core.$strip>;
169
- }, z.core.$strip>;
170
- /** A thread is synced with an external channel (start a thread there) or thread (join it). */
171
- 'thread.synced': z.ZodObject<{
172
- thread: z.ZodString;
173
- target: z.ZodString;
174
- cause: z.ZodEnum<{
175
- config: "config";
176
- request: "request";
177
- }>;
178
- kind: z.ZodOptional<z.ZodEnum<{
179
- channel: "channel";
180
- thread: "thread";
181
- }>>;
182
- by: z.ZodObject<{
183
- actor: z.ZodString;
184
- principal: z.ZodString;
185
- profile: z.ZodNullable<z.ZodString>;
186
- session: z.ZodNullable<z.ZodString>;
187
- }, z.core.$strip>;
188
- }, z.core.$strip>;
189
- /** An outbound delivery receipt: board message `id` exists on the platform as `external`. */
190
- 'message.synced': z.ZodObject<{
191
- id: z.ZodNumber;
192
- thread: z.ZodString;
193
- target: z.ZodString;
194
- external: z.ZodObject<{
195
- thread: z.ZodString;
196
- message: z.ZodString;
197
- asUser: z.ZodOptional<z.ZodLiteral<true>>;
198
- }, z.core.$strip>;
199
- syncedBy: z.ZodOptional<z.ZodString>;
200
- }, z.core.$strip>;
201
- /**
202
- * Board message `id`'s files reached `target` after its text: `files` are the
203
- * platform's IDs for them, or null when the platform refused files and the
204
- * text got a line for each instead.
205
- */
206
- 'message.files_synced': z.ZodObject<{
207
- id: z.ZodNumber;
208
- thread: z.ZodString;
209
- target: z.ZodString;
210
- files: z.ZodNullable<z.ZodArray<z.ZodString>>;
211
- syncedBy: z.ZodOptional<z.ZodString>;
212
- }, z.core.$strip>;
213
- /** A delivery that gave up: board message `id` didn't reach `target`, and `error` says why. */
214
- 'message.sync_failed': z.ZodObject<{
215
- id: z.ZodNumber;
216
- thread: z.ZodString;
217
- target: z.ZodString;
218
- error: z.ZodString;
219
- }, z.core.$strip>;
220
- 'actor.seen': z.ZodObject<{
221
- actor: z.ZodString;
222
- kind: z.ZodUnion<readonly [z.ZodEnum<{
223
- agent: "agent";
224
- deployment: "deployment";
225
- external: "external";
226
- person: "person";
227
- workflow: "workflow";
228
- }>, z.ZodLiteral<"profile">]>;
229
- handle: z.ZodString;
230
- name: z.ZodString;
231
- avatar: z.ZodNullable<z.ZodString>;
232
- host: z.ZodOptional<z.ZodLiteral<true>>;
233
- }, z.core.$strip>;
234
- /**
235
- * A platform actor (`slack:user:U0456`) is the same person as a principal
236
- * (`vercel:user:…`): for display, `--by`, and mentions, never for permissions.
237
- * `method` says how it was proved: a one-time code posted from that account,
238
- * or the account's own sign-in (`consent`).
239
- */
240
- 'actor.linked': z.ZodObject<{
241
- actor: z.ZodString;
242
- to: z.ZodString;
243
- method: z.ZodEnum<{
244
- code: "code";
245
- consent: "consent";
246
- }>;
247
- by: z.ZodObject<{
248
- actor: z.ZodString;
249
- principal: z.ZodString;
250
- profile: z.ZodNullable<z.ZodString>;
251
- session: z.ZodNullable<z.ZodString>;
252
- }, z.core.$strip>;
253
- }, z.core.$strip>;
254
- 'actor.unlinked': z.ZodObject<{
255
- actor: z.ZodString;
256
- by: z.ZodObject<{
257
- actor: z.ZodString;
258
- principal: z.ZodString;
259
- profile: z.ZodNullable<z.ZodString>;
260
- session: z.ZodNullable<z.ZodString>;
261
- }, z.core.$strip>;
262
- }, z.core.$strip>;
263
- }, Record<never, never>, undefined>;
264
- declare const BOARD_SESSION = "board";
265
- type BoardEvents = typeof boardContract.events;
266
- type BoardEvent = ContractEvent<BoardEvents>;
267
- type Origin = z.infer<typeof Origin>;
268
- declare const ExternalAuthor: z.ZodObject<{
269
- id: z.ZodString;
270
- handle: z.ZodString;
271
- name: z.ZodString;
272
- avatar: z.ZodNullable<z.ZodString>;
273
- isBot: z.ZodBoolean;
274
- }, z.core.$strip>;
275
- /**
276
- * A file on a platform message, as Chat SDK describes it: enough for the
277
- * platform's adapter to fetch it later (`rehydrateAttachment`), never the bytes.
278
- */
279
- declare const ExternalFile: z.ZodObject<{
280
- type: z.ZodEnum<{
281
- audio: "audio";
282
- file: "file";
283
- image: "image";
284
- video: "video";
285
- }>;
286
- name: z.ZodOptional<z.ZodString>;
287
- mimeType: z.ZodOptional<z.ZodString>;
288
- size: z.ZodOptional<z.ZodNumber>;
289
- url: z.ZodOptional<z.ZodString>;
290
- fetchMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
291
- }, z.core.$strip>;
292
- type ExternalFile = z.infer<typeof ExternalFile>;
293
- /**
294
- * A platform message a platform message links to, at intake: where it lives
295
- * (`thread`, with the sync key prefix, and `message`), and what it said when the
296
- * platform sent that along (Slack's unfurl).
297
- */
298
- declare const ExternalLink: z.ZodObject<{
299
- url: z.ZodString;
300
- thread: z.ZodString;
301
- message: z.ZodString;
302
- snapshot: z.ZodNullable<z.ZodObject<{
303
- author: z.ZodString;
304
- text: z.ZodString;
305
- createdAt: z.ZodNullable<z.ZodString>;
306
- files: z.ZodArray<z.ZodObject<{
307
- name: z.ZodString;
308
- url: z.ZodNullable<z.ZodString>;
309
- }, z.core.$strip>>;
310
- }, z.core.$strip>>;
311
- }, z.core.$strip>;
312
- type ExternalLink = z.infer<typeof ExternalLink>;
313
- /** A platform event, normalized at intake. Thread IDs are external IDs with the sync key prefix. */
314
- declare const ExternalEvent: z.ZodDiscriminatedUnion<[z.ZodObject<{
315
- channel: z.ZodString;
316
- thread: z.ZodString;
317
- subthread: z.ZodNullable<z.ZodString>;
318
- kind: z.ZodLiteral<"message">;
319
- message: z.ZodString;
320
- isRoot: z.ZodBoolean;
321
- text: z.ZodString;
322
- context: z.ZodNullable<z.ZodString>;
323
- author: z.ZodObject<{
324
- id: z.ZodString;
325
- handle: z.ZodString;
326
- name: z.ZodString;
327
- avatar: z.ZodNullable<z.ZodString>;
328
- isBot: z.ZodBoolean;
329
- }, z.core.$strip>;
330
- files: z.ZodOptional<z.ZodArray<z.ZodObject<{
331
- type: z.ZodEnum<{
332
- audio: "audio";
333
- file: "file";
334
- image: "image";
335
- video: "video";
336
- }>;
337
- name: z.ZodOptional<z.ZodString>;
338
- mimeType: z.ZodOptional<z.ZodString>;
339
- size: z.ZodOptional<z.ZodNumber>;
340
- url: z.ZodOptional<z.ZodString>;
341
- fetchMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
342
- }, z.core.$strip>>>;
343
- links: z.ZodOptional<z.ZodArray<z.ZodObject<{
344
- url: z.ZodString;
345
- thread: z.ZodString;
346
- message: z.ZodString;
347
- snapshot: z.ZodNullable<z.ZodObject<{
348
- author: z.ZodString;
349
- text: z.ZodString;
350
- createdAt: z.ZodNullable<z.ZodString>;
351
- files: z.ZodArray<z.ZodObject<{
352
- name: z.ZodString;
353
- url: z.ZodNullable<z.ZodString>;
354
- }, z.core.$strip>>;
355
- }, z.core.$strip>>;
356
- }, z.core.$strip>>>;
357
- }, z.core.$strip>, z.ZodObject<{
358
- channel: z.ZodString;
359
- thread: z.ZodString;
360
- subthread: z.ZodNullable<z.ZodString>;
361
- kind: z.ZodLiteral<"edited">;
362
- message: z.ZodString;
363
- text: z.ZodString;
364
- author: z.ZodObject<{
365
- id: z.ZodString;
366
- handle: z.ZodString;
367
- name: z.ZodString;
368
- avatar: z.ZodNullable<z.ZodString>;
369
- isBot: z.ZodBoolean;
370
- }, z.core.$strip>;
371
- links: z.ZodOptional<z.ZodArray<z.ZodObject<{
372
- url: z.ZodString;
373
- thread: z.ZodString;
374
- message: z.ZodString;
375
- snapshot: z.ZodNullable<z.ZodObject<{
376
- author: z.ZodString;
377
- text: z.ZodString;
378
- createdAt: z.ZodNullable<z.ZodString>;
379
- files: z.ZodArray<z.ZodObject<{
380
- name: z.ZodString;
381
- url: z.ZodNullable<z.ZodString>;
382
- }, z.core.$strip>>;
383
- }, z.core.$strip>>;
384
- }, z.core.$strip>>>;
385
- linksOnly: z.ZodOptional<z.ZodBoolean>;
386
- }, z.core.$strip>, z.ZodObject<{
387
- channel: z.ZodString;
388
- thread: z.ZodString;
389
- subthread: z.ZodNullable<z.ZodString>;
390
- kind: z.ZodLiteral<"deleted">;
391
- message: z.ZodString;
392
- }, z.core.$strip>, z.ZodObject<{
393
- channel: z.ZodString;
394
- thread: z.ZodString;
395
- subthread: z.ZodNullable<z.ZodString>;
396
- kind: z.ZodLiteral<"reaction">;
397
- message: z.ZodString;
398
- emoji: z.ZodString;
399
- added: z.ZodBoolean;
400
- author: z.ZodObject<{
401
- id: z.ZodString;
402
- handle: z.ZodString;
403
- name: z.ZodString;
404
- avatar: z.ZodNullable<z.ZodString>;
405
- isBot: z.ZodBoolean;
406
- }, z.core.$strip>;
407
- }, z.core.$strip>, z.ZodObject<{
408
- channel: z.ZodString;
409
- thread: z.ZodString;
410
- kind: z.ZodLiteral<"lifecycle">;
411
- type: z.ZodString;
412
- title: z.ZodString;
413
- url: z.ZodNullable<z.ZodString>;
414
- labels: z.ZodRecord<z.ZodString, z.ZodString>;
415
- unset: z.ZodArray<z.ZodString>;
416
- owns: z.ZodOptional<z.ZodArray<z.ZodString>>;
417
- reply: z.ZodNullable<z.ZodString>;
418
- createRoot: z.ZodBoolean;
419
- author: z.ZodObject<{
420
- id: z.ZodString;
421
- handle: z.ZodString;
422
- name: z.ZodString;
423
- avatar: z.ZodNullable<z.ZodString>;
424
- isBot: z.ZodBoolean;
425
- }, z.core.$strip>;
426
- }, z.core.$strip>], "kind">;
427
- type ExternalEvent = z.infer<typeof ExternalEvent>;
428
- type ExternalAuthor = z.infer<typeof ExternalAuthor>;
429
- //#endregion
430
- //#region src/contract/reducers.d.ts
431
- type Message = {
432
- id: number;
433
- channel: string;
434
- text: string;
435
- re: number | null;
436
- replyTo: number | null;
437
- /** The thread key: the root's event ID. */
438
- thread: string;
439
- labels: Labels;
440
- reactions: Record<string, string[]>;
441
- mentions: string[];
442
- by: Author;
443
- noSync: boolean;
444
- /** Where it came from on a platform, if it did. */
445
- origin: Origin | null;
446
- /** The sync key it came from, or null when written on the board. */
447
- from: string | null;
448
- createdAt: string;
449
- editedAt: string | null;
450
- deleted: boolean;
451
- /** Sync targets this message didn't reach, with why. A later delivery clears its entry. */
452
- undelivered: Record<string, string>;
453
- attachments: Attachment[];
454
- /** Platform messages it links to (Slack permalinks), each with what it said. */
455
- links: Link[];
456
- /** Set when a schedule posted it: the schedule's ID and which send this was, from 0. */
457
- schedule?: {
458
- id: number;
459
- n: number;
460
- };
461
- /**
462
- * Set when its author couldn't read its channel, as `authorizeOwn` checks: where they can't read,
463
- * it's theirs to edit and delete only then. Its event's payload says so too.
464
- */
465
- blind?: true;
466
- /** The index of the last event that changed it. Folds from before it existed leave it out. */
467
- version?: number;
468
- };
469
- type MessagesState = {
470
- byId: Record<string, Message>;
471
- /** Thread root → reply IDs, in log order. */
472
- replies: Record<string, number[]>;
473
- };
474
- declare const messagesReducer: import("experimental-a2").Reducer<{
475
- 'message.posted': import("zod").ZodObject<{
476
- channel: import("zod").ZodString;
477
- text: import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodLiteral<"">]>;
478
- re: import("zod").ZodNullable<import("zod").ZodNumber>;
479
- replyTo: import("zod").ZodNullable<import("zod").ZodNumber>;
480
- thread: import("zod").ZodString;
481
- labels: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>;
482
- noSync: import("zod").ZodBoolean;
483
- mentions: import("zod").ZodArray<import("zod").ZodString>;
484
- by: import("zod").ZodObject<{
485
- actor: import("zod").ZodString;
486
- principal: import("zod").ZodString;
487
- profile: import("zod").ZodNullable<import("zod").ZodString>;
488
- session: import("zod").ZodNullable<import("zod").ZodString>;
489
- }, import("zod/v4/core").$strip>;
490
- origin: import("zod").ZodNullable<import("zod").ZodObject<{
491
- channel: import("zod").ZodOptional<import("zod").ZodString>;
492
- thread: import("zod").ZodString;
493
- subthread: import("zod").ZodNullable<import("zod").ZodString>;
494
- message: import("zod").ZodString;
495
- context: import("zod").ZodNullable<import("zod").ZodString>;
496
- }, import("zod/v4/core").$strip>>;
497
- from: import("zod").ZodNullable<import("zod").ZodString>;
498
- attachments: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
499
- id: import("zod").ZodString;
500
- name: import("zod").ZodString;
501
- type: import("zod").ZodString;
502
- size: import("zod").ZodNumber;
503
- }, import("zod/v4/core").$strip>>>;
504
- links: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
505
- url: import("zod").ZodString;
506
- message: import("zod").ZodNullable<import("zod").ZodNumber>;
507
- snapshot: import("zod").ZodNullable<import("zod").ZodObject<{
508
- author: import("zod").ZodString;
509
- text: import("zod").ZodString;
510
- createdAt: import("zod").ZodNullable<import("zod").ZodString>;
511
- files: import("zod").ZodArray<import("zod").ZodObject<{
512
- name: import("zod").ZodString;
513
- url: import("zod").ZodNullable<import("zod").ZodString>;
514
- }, import("zod/v4/core").$strip>>;
515
- }, import("zod/v4/core").$strip>>;
516
- unavailable: import("zod").ZodNullable<import("zod").ZodString>;
517
- }, import("zod/v4/core").$strip>>>;
518
- schedule: import("zod").ZodOptional<import("zod").ZodObject<{
519
- id: import("zod").ZodNumber;
520
- n: import("zod").ZodNumber;
521
- }, import("zod/v4/core").$strip>>;
522
- blind: import("zod").ZodOptional<import("zod").ZodLiteral<true>>;
523
- importedBy: import("zod").ZodOptional<import("zod").ZodString>;
524
- }, import("zod/v4/core").$strip>;
525
- 'message.linked': import("zod").ZodObject<{
526
- id: import("zod").ZodNumber;
527
- thread: import("zod").ZodString;
528
- links: import("zod").ZodArray<import("zod").ZodObject<{
529
- url: import("zod").ZodString;
530
- message: import("zod").ZodNullable<import("zod").ZodNumber>;
531
- snapshot: import("zod").ZodNullable<import("zod").ZodObject<{
532
- author: import("zod").ZodString;
533
- text: import("zod").ZodString;
534
- createdAt: import("zod").ZodNullable<import("zod").ZodString>;
535
- files: import("zod").ZodArray<import("zod").ZodObject<{
536
- name: import("zod").ZodString;
537
- url: import("zod").ZodNullable<import("zod").ZodString>;
538
- }, import("zod/v4/core").$strip>>;
539
- }, import("zod/v4/core").$strip>>;
540
- unavailable: import("zod").ZodNullable<import("zod").ZodString>;
541
- }, import("zod/v4/core").$strip>>;
542
- by: import("zod").ZodObject<{
543
- actor: import("zod").ZodString;
544
- principal: import("zod").ZodString;
545
- profile: import("zod").ZodNullable<import("zod").ZodString>;
546
- session: import("zod").ZodNullable<import("zod").ZodString>;
547
- }, import("zod/v4/core").$strip>;
548
- from: import("zod").ZodNullable<import("zod").ZodString>;
549
- }, import("zod/v4/core").$strip>;
550
- 'message.edited': import("zod").ZodObject<{
551
- id: import("zod").ZodNumber;
552
- thread: import("zod").ZodString;
553
- text: import("zod").ZodString;
554
- mentions: import("zod").ZodArray<import("zod").ZodString>;
555
- by: import("zod").ZodObject<{
556
- actor: import("zod").ZodString;
557
- principal: import("zod").ZodString;
558
- profile: import("zod").ZodNullable<import("zod").ZodString>;
559
- session: import("zod").ZodNullable<import("zod").ZodString>;
560
- }, import("zod/v4/core").$strip>;
561
- from: import("zod").ZodNullable<import("zod").ZodString>;
562
- }, import("zod/v4/core").$strip>;
563
- 'message.deleted': import("zod").ZodObject<{
564
- id: import("zod").ZodNumber;
565
- thread: import("zod").ZodString;
566
- by: import("zod").ZodObject<{
567
- actor: import("zod").ZodString;
568
- principal: import("zod").ZodString;
569
- profile: import("zod").ZodNullable<import("zod").ZodString>;
570
- session: import("zod").ZodNullable<import("zod").ZodString>;
571
- }, import("zod/v4/core").$strip>;
572
- from: import("zod").ZodNullable<import("zod").ZodString>;
573
- }, import("zod/v4/core").$strip>;
574
- 'reaction.added': import("zod").ZodObject<{
575
- id: import("zod").ZodNumber;
576
- thread: import("zod").ZodString;
577
- emoji: import("zod").ZodString;
578
- by: import("zod").ZodObject<{
579
- actor: import("zod").ZodString;
580
- principal: import("zod").ZodString;
581
- profile: import("zod").ZodNullable<import("zod").ZodString>;
582
- session: import("zod").ZodNullable<import("zod").ZodString>;
583
- }, import("zod/v4/core").$strip>;
584
- from: import("zod").ZodNullable<import("zod").ZodString>;
585
- }, import("zod/v4/core").$strip>;
586
- 'reaction.removed': import("zod").ZodObject<{
587
- id: import("zod").ZodNumber;
588
- thread: import("zod").ZodString;
589
- emoji: import("zod").ZodString;
590
- by: import("zod").ZodObject<{
591
- actor: import("zod").ZodString;
592
- principal: import("zod").ZodString;
593
- profile: import("zod").ZodNullable<import("zod").ZodString>;
594
- session: import("zod").ZodNullable<import("zod").ZodString>;
595
- }, import("zod/v4/core").$strip>;
596
- from: import("zod").ZodNullable<import("zod").ZodString>;
597
- }, import("zod/v4/core").$strip>;
598
- 'labels.changed': import("zod").ZodObject<{
599
- id: import("zod").ZodNumber;
600
- thread: import("zod").ZodString;
601
- set: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>;
602
- unset: import("zod").ZodArray<import("zod").ZodString>;
603
- by: import("zod").ZodObject<{
604
- actor: import("zod").ZodString;
605
- principal: import("zod").ZodString;
606
- profile: import("zod").ZodNullable<import("zod").ZodString>;
607
- session: import("zod").ZodNullable<import("zod").ZodString>;
608
- }, import("zod/v4/core").$strip>;
609
- }, import("zod/v4/core").$strip>;
610
- 'thread.synced': import("zod").ZodObject<{
611
- thread: import("zod").ZodString;
612
- target: import("zod").ZodString;
613
- cause: import("zod").ZodEnum<{
614
- config: "config";
615
- request: "request";
616
- }>;
617
- kind: import("zod").ZodOptional<import("zod").ZodEnum<{
618
- channel: "channel";
619
- thread: "thread";
620
- }>>;
621
- by: import("zod").ZodObject<{
622
- actor: import("zod").ZodString;
623
- principal: import("zod").ZodString;
624
- profile: import("zod").ZodNullable<import("zod").ZodString>;
625
- session: import("zod").ZodNullable<import("zod").ZodString>;
626
- }, import("zod/v4/core").$strip>;
627
- }, import("zod/v4/core").$strip>;
628
- 'message.synced': import("zod").ZodObject<{
629
- id: import("zod").ZodNumber;
630
- thread: import("zod").ZodString;
631
- target: import("zod").ZodString;
632
- external: import("zod").ZodObject<{
633
- thread: import("zod").ZodString;
634
- message: import("zod").ZodString;
635
- asUser: import("zod").ZodOptional<import("zod").ZodLiteral<true>>;
636
- }, import("zod/v4/core").$strip>;
637
- syncedBy: import("zod").ZodOptional<import("zod").ZodString>;
638
- }, import("zod/v4/core").$strip>;
639
- 'message.files_synced': import("zod").ZodObject<{
640
- id: import("zod").ZodNumber;
641
- thread: import("zod").ZodString;
642
- target: import("zod").ZodString;
643
- files: import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodString>>;
644
- syncedBy: import("zod").ZodOptional<import("zod").ZodString>;
645
- }, import("zod/v4/core").$strip>;
646
- 'message.sync_failed': import("zod").ZodObject<{
647
- id: import("zod").ZodNumber;
648
- thread: import("zod").ZodString;
649
- target: import("zod").ZodString;
650
- error: import("zod").ZodString;
651
- }, import("zod/v4/core").$strip>;
652
- 'actor.seen': import("zod").ZodObject<{
653
- actor: import("zod").ZodString;
654
- kind: import("zod").ZodUnion<readonly [import("zod").ZodEnum<{
655
- agent: "agent";
656
- deployment: "deployment";
657
- external: "external";
658
- person: "person";
659
- workflow: "workflow";
660
- }>, import("zod").ZodLiteral<"profile">]>;
661
- handle: import("zod").ZodString;
662
- name: import("zod").ZodString;
663
- avatar: import("zod").ZodNullable<import("zod").ZodString>;
664
- host: import("zod").ZodOptional<import("zod").ZodLiteral<true>>;
665
- }, import("zod/v4/core").$strip>;
666
- 'actor.linked': import("zod").ZodObject<{
667
- actor: import("zod").ZodString;
668
- to: import("zod").ZodString;
669
- method: import("zod").ZodEnum<{
670
- code: "code";
671
- consent: "consent";
672
- }>;
673
- by: import("zod").ZodObject<{
674
- actor: import("zod").ZodString;
675
- principal: import("zod").ZodString;
676
- profile: import("zod").ZodNullable<import("zod").ZodString>;
677
- session: import("zod").ZodNullable<import("zod").ZodString>;
678
- }, import("zod/v4/core").$strip>;
679
- }, import("zod/v4/core").$strip>;
680
- 'actor.unlinked': import("zod").ZodObject<{
681
- actor: import("zod").ZodString;
682
- by: import("zod").ZodObject<{
683
- actor: import("zod").ZodString;
684
- principal: import("zod").ZodString;
685
- profile: import("zod").ZodNullable<import("zod").ZodString>;
686
- session: import("zod").ZodNullable<import("zod").ZodString>;
687
- }, import("zod/v4/core").$strip>;
688
- }, import("zod/v4/core").$strip>;
689
- }, MessagesState, Record<never, never>>;
690
- type Channel = {
691
- path: string;
692
- lastIndex: number;
693
- messages: number;
694
- threads: number;
695
- };
696
- type ChannelsState = Record<string, Channel>;
697
- declare const channelsReducer: import("experimental-a2").Reducer<{
698
- 'message.posted': import("zod").ZodObject<{
699
- channel: import("zod").ZodString;
700
- text: import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodLiteral<"">]>;
701
- re: import("zod").ZodNullable<import("zod").ZodNumber>;
702
- replyTo: import("zod").ZodNullable<import("zod").ZodNumber>;
703
- thread: import("zod").ZodString;
704
- labels: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>;
705
- noSync: import("zod").ZodBoolean;
706
- mentions: import("zod").ZodArray<import("zod").ZodString>;
707
- by: import("zod").ZodObject<{
708
- actor: import("zod").ZodString;
709
- principal: import("zod").ZodString;
710
- profile: import("zod").ZodNullable<import("zod").ZodString>;
711
- session: import("zod").ZodNullable<import("zod").ZodString>;
712
- }, import("zod/v4/core").$strip>;
713
- origin: import("zod").ZodNullable<import("zod").ZodObject<{
714
- channel: import("zod").ZodOptional<import("zod").ZodString>;
715
- thread: import("zod").ZodString;
716
- subthread: import("zod").ZodNullable<import("zod").ZodString>;
717
- message: import("zod").ZodString;
718
- context: import("zod").ZodNullable<import("zod").ZodString>;
719
- }, import("zod/v4/core").$strip>>;
720
- from: import("zod").ZodNullable<import("zod").ZodString>;
721
- attachments: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
722
- id: import("zod").ZodString;
723
- name: import("zod").ZodString;
724
- type: import("zod").ZodString;
725
- size: import("zod").ZodNumber;
726
- }, import("zod/v4/core").$strip>>>;
727
- links: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
728
- url: import("zod").ZodString;
729
- message: import("zod").ZodNullable<import("zod").ZodNumber>;
730
- snapshot: import("zod").ZodNullable<import("zod").ZodObject<{
731
- author: import("zod").ZodString;
732
- text: import("zod").ZodString;
733
- createdAt: import("zod").ZodNullable<import("zod").ZodString>;
734
- files: import("zod").ZodArray<import("zod").ZodObject<{
735
- name: import("zod").ZodString;
736
- url: import("zod").ZodNullable<import("zod").ZodString>;
737
- }, import("zod/v4/core").$strip>>;
738
- }, import("zod/v4/core").$strip>>;
739
- unavailable: import("zod").ZodNullable<import("zod").ZodString>;
740
- }, import("zod/v4/core").$strip>>>;
741
- schedule: import("zod").ZodOptional<import("zod").ZodObject<{
742
- id: import("zod").ZodNumber;
743
- n: import("zod").ZodNumber;
744
- }, import("zod/v4/core").$strip>>;
745
- blind: import("zod").ZodOptional<import("zod").ZodLiteral<true>>;
746
- importedBy: import("zod").ZodOptional<import("zod").ZodString>;
747
- }, import("zod/v4/core").$strip>;
748
- 'message.linked': import("zod").ZodObject<{
749
- id: import("zod").ZodNumber;
750
- thread: import("zod").ZodString;
751
- links: import("zod").ZodArray<import("zod").ZodObject<{
752
- url: import("zod").ZodString;
753
- message: import("zod").ZodNullable<import("zod").ZodNumber>;
754
- snapshot: import("zod").ZodNullable<import("zod").ZodObject<{
755
- author: import("zod").ZodString;
756
- text: import("zod").ZodString;
757
- createdAt: import("zod").ZodNullable<import("zod").ZodString>;
758
- files: import("zod").ZodArray<import("zod").ZodObject<{
759
- name: import("zod").ZodString;
760
- url: import("zod").ZodNullable<import("zod").ZodString>;
761
- }, import("zod/v4/core").$strip>>;
762
- }, import("zod/v4/core").$strip>>;
763
- unavailable: import("zod").ZodNullable<import("zod").ZodString>;
764
- }, import("zod/v4/core").$strip>>;
765
- by: import("zod").ZodObject<{
766
- actor: import("zod").ZodString;
767
- principal: import("zod").ZodString;
768
- profile: import("zod").ZodNullable<import("zod").ZodString>;
769
- session: import("zod").ZodNullable<import("zod").ZodString>;
770
- }, import("zod/v4/core").$strip>;
771
- from: import("zod").ZodNullable<import("zod").ZodString>;
772
- }, import("zod/v4/core").$strip>;
773
- 'message.edited': import("zod").ZodObject<{
774
- id: import("zod").ZodNumber;
775
- thread: import("zod").ZodString;
776
- text: import("zod").ZodString;
777
- mentions: import("zod").ZodArray<import("zod").ZodString>;
778
- by: import("zod").ZodObject<{
779
- actor: import("zod").ZodString;
780
- principal: import("zod").ZodString;
781
- profile: import("zod").ZodNullable<import("zod").ZodString>;
782
- session: import("zod").ZodNullable<import("zod").ZodString>;
783
- }, import("zod/v4/core").$strip>;
784
- from: import("zod").ZodNullable<import("zod").ZodString>;
785
- }, import("zod/v4/core").$strip>;
786
- 'message.deleted': import("zod").ZodObject<{
787
- id: import("zod").ZodNumber;
788
- thread: import("zod").ZodString;
789
- by: import("zod").ZodObject<{
790
- actor: import("zod").ZodString;
791
- principal: import("zod").ZodString;
792
- profile: import("zod").ZodNullable<import("zod").ZodString>;
793
- session: import("zod").ZodNullable<import("zod").ZodString>;
794
- }, import("zod/v4/core").$strip>;
795
- from: import("zod").ZodNullable<import("zod").ZodString>;
796
- }, import("zod/v4/core").$strip>;
797
- 'reaction.added': import("zod").ZodObject<{
798
- id: import("zod").ZodNumber;
799
- thread: import("zod").ZodString;
800
- emoji: import("zod").ZodString;
801
- by: import("zod").ZodObject<{
802
- actor: import("zod").ZodString;
803
- principal: import("zod").ZodString;
804
- profile: import("zod").ZodNullable<import("zod").ZodString>;
805
- session: import("zod").ZodNullable<import("zod").ZodString>;
806
- }, import("zod/v4/core").$strip>;
807
- from: import("zod").ZodNullable<import("zod").ZodString>;
808
- }, import("zod/v4/core").$strip>;
809
- 'reaction.removed': import("zod").ZodObject<{
810
- id: import("zod").ZodNumber;
811
- thread: import("zod").ZodString;
812
- emoji: import("zod").ZodString;
813
- by: import("zod").ZodObject<{
814
- actor: import("zod").ZodString;
815
- principal: import("zod").ZodString;
816
- profile: import("zod").ZodNullable<import("zod").ZodString>;
817
- session: import("zod").ZodNullable<import("zod").ZodString>;
818
- }, import("zod/v4/core").$strip>;
819
- from: import("zod").ZodNullable<import("zod").ZodString>;
820
- }, import("zod/v4/core").$strip>;
821
- 'labels.changed': import("zod").ZodObject<{
822
- id: import("zod").ZodNumber;
823
- thread: import("zod").ZodString;
824
- set: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>;
825
- unset: import("zod").ZodArray<import("zod").ZodString>;
826
- by: import("zod").ZodObject<{
827
- actor: import("zod").ZodString;
828
- principal: import("zod").ZodString;
829
- profile: import("zod").ZodNullable<import("zod").ZodString>;
830
- session: import("zod").ZodNullable<import("zod").ZodString>;
831
- }, import("zod/v4/core").$strip>;
832
- }, import("zod/v4/core").$strip>;
833
- 'thread.synced': import("zod").ZodObject<{
834
- thread: import("zod").ZodString;
835
- target: import("zod").ZodString;
836
- cause: import("zod").ZodEnum<{
837
- config: "config";
838
- request: "request";
839
- }>;
840
- kind: import("zod").ZodOptional<import("zod").ZodEnum<{
841
- channel: "channel";
842
- thread: "thread";
843
- }>>;
844
- by: import("zod").ZodObject<{
845
- actor: import("zod").ZodString;
846
- principal: import("zod").ZodString;
847
- profile: import("zod").ZodNullable<import("zod").ZodString>;
848
- session: import("zod").ZodNullable<import("zod").ZodString>;
849
- }, import("zod/v4/core").$strip>;
850
- }, import("zod/v4/core").$strip>;
851
- 'message.synced': import("zod").ZodObject<{
852
- id: import("zod").ZodNumber;
853
- thread: import("zod").ZodString;
854
- target: import("zod").ZodString;
855
- external: import("zod").ZodObject<{
856
- thread: import("zod").ZodString;
857
- message: import("zod").ZodString;
858
- asUser: import("zod").ZodOptional<import("zod").ZodLiteral<true>>;
859
- }, import("zod/v4/core").$strip>;
860
- syncedBy: import("zod").ZodOptional<import("zod").ZodString>;
861
- }, import("zod/v4/core").$strip>;
862
- 'message.files_synced': import("zod").ZodObject<{
863
- id: import("zod").ZodNumber;
864
- thread: import("zod").ZodString;
865
- target: import("zod").ZodString;
866
- files: import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodString>>;
867
- syncedBy: import("zod").ZodOptional<import("zod").ZodString>;
868
- }, import("zod/v4/core").$strip>;
869
- 'message.sync_failed': import("zod").ZodObject<{
870
- id: import("zod").ZodNumber;
871
- thread: import("zod").ZodString;
872
- target: import("zod").ZodString;
873
- error: import("zod").ZodString;
874
- }, import("zod/v4/core").$strip>;
875
- 'actor.seen': import("zod").ZodObject<{
876
- actor: import("zod").ZodString;
877
- kind: import("zod").ZodUnion<readonly [import("zod").ZodEnum<{
878
- agent: "agent";
879
- deployment: "deployment";
880
- external: "external";
881
- person: "person";
882
- workflow: "workflow";
883
- }>, import("zod").ZodLiteral<"profile">]>;
884
- handle: import("zod").ZodString;
885
- name: import("zod").ZodString;
886
- avatar: import("zod").ZodNullable<import("zod").ZodString>;
887
- host: import("zod").ZodOptional<import("zod").ZodLiteral<true>>;
888
- }, import("zod/v4/core").$strip>;
889
- 'actor.linked': import("zod").ZodObject<{
890
- actor: import("zod").ZodString;
891
- to: import("zod").ZodString;
892
- method: import("zod").ZodEnum<{
893
- code: "code";
894
- consent: "consent";
895
- }>;
896
- by: import("zod").ZodObject<{
897
- actor: import("zod").ZodString;
898
- principal: import("zod").ZodString;
899
- profile: import("zod").ZodNullable<import("zod").ZodString>;
900
- session: import("zod").ZodNullable<import("zod").ZodString>;
901
- }, import("zod/v4/core").$strip>;
902
- }, import("zod/v4/core").$strip>;
903
- 'actor.unlinked': import("zod").ZodObject<{
904
- actor: import("zod").ZodString;
905
- by: import("zod").ZodObject<{
906
- actor: import("zod").ZodString;
907
- principal: import("zod").ZodString;
908
- profile: import("zod").ZodNullable<import("zod").ZodString>;
909
- session: import("zod").ZodNullable<import("zod").ZodString>;
910
- }, import("zod/v4/core").$strip>;
911
- }, import("zod/v4/core").$strip>;
912
- }, ChannelsState, Record<never, never>>;
913
- type Actor = {
914
- id: string;
915
- kind: ActorKind;
916
- handle: string;
917
- name: string;
918
- avatar: string | null;
919
- /** A host's principal, or one of its profiles: once it's seen as one, it stays one. Views leave it out. */
920
- host?: true;
921
- };
922
- /** A platform actor proved to be a principal (`actor.linked`). */
923
- type ActorLink = {
924
- to: string;
925
- method: 'code' | 'consent';
926
- at: string;
927
- };
928
- type ActorsState = {
929
- byId: Record<string, Actor>;
930
- /** Lowercased handle → actor IDs. Handles aren't reserved, so several can share one. */
931
- byHandle: Record<string, string[]>;
932
- /** Platform actor → the principal it's linked to. Display and filtering only, never permissions. */
933
- links: Record<string, ActorLink>;
934
- };
935
- declare const actorsReducer: import("experimental-a2").Reducer<{
936
- 'message.posted': import("zod").ZodObject<{
937
- channel: import("zod").ZodString;
938
- text: import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodLiteral<"">]>;
939
- re: import("zod").ZodNullable<import("zod").ZodNumber>;
940
- replyTo: import("zod").ZodNullable<import("zod").ZodNumber>;
941
- thread: import("zod").ZodString;
942
- labels: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>;
943
- noSync: import("zod").ZodBoolean;
944
- mentions: import("zod").ZodArray<import("zod").ZodString>;
945
- by: import("zod").ZodObject<{
946
- actor: import("zod").ZodString;
947
- principal: import("zod").ZodString;
948
- profile: import("zod").ZodNullable<import("zod").ZodString>;
949
- session: import("zod").ZodNullable<import("zod").ZodString>;
950
- }, import("zod/v4/core").$strip>;
951
- origin: import("zod").ZodNullable<import("zod").ZodObject<{
952
- channel: import("zod").ZodOptional<import("zod").ZodString>;
953
- thread: import("zod").ZodString;
954
- subthread: import("zod").ZodNullable<import("zod").ZodString>;
955
- message: import("zod").ZodString;
956
- context: import("zod").ZodNullable<import("zod").ZodString>;
957
- }, import("zod/v4/core").$strip>>;
958
- from: import("zod").ZodNullable<import("zod").ZodString>;
959
- attachments: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
960
- id: import("zod").ZodString;
961
- name: import("zod").ZodString;
962
- type: import("zod").ZodString;
963
- size: import("zod").ZodNumber;
964
- }, import("zod/v4/core").$strip>>>;
965
- links: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
966
- url: import("zod").ZodString;
967
- message: import("zod").ZodNullable<import("zod").ZodNumber>;
968
- snapshot: import("zod").ZodNullable<import("zod").ZodObject<{
969
- author: import("zod").ZodString;
970
- text: import("zod").ZodString;
971
- createdAt: import("zod").ZodNullable<import("zod").ZodString>;
972
- files: import("zod").ZodArray<import("zod").ZodObject<{
973
- name: import("zod").ZodString;
974
- url: import("zod").ZodNullable<import("zod").ZodString>;
975
- }, import("zod/v4/core").$strip>>;
976
- }, import("zod/v4/core").$strip>>;
977
- unavailable: import("zod").ZodNullable<import("zod").ZodString>;
978
- }, import("zod/v4/core").$strip>>>;
979
- schedule: import("zod").ZodOptional<import("zod").ZodObject<{
980
- id: import("zod").ZodNumber;
981
- n: import("zod").ZodNumber;
982
- }, import("zod/v4/core").$strip>>;
983
- blind: import("zod").ZodOptional<import("zod").ZodLiteral<true>>;
984
- importedBy: import("zod").ZodOptional<import("zod").ZodString>;
985
- }, import("zod/v4/core").$strip>;
986
- 'message.linked': import("zod").ZodObject<{
987
- id: import("zod").ZodNumber;
988
- thread: import("zod").ZodString;
989
- links: import("zod").ZodArray<import("zod").ZodObject<{
990
- url: import("zod").ZodString;
991
- message: import("zod").ZodNullable<import("zod").ZodNumber>;
992
- snapshot: import("zod").ZodNullable<import("zod").ZodObject<{
993
- author: import("zod").ZodString;
994
- text: import("zod").ZodString;
995
- createdAt: import("zod").ZodNullable<import("zod").ZodString>;
996
- files: import("zod").ZodArray<import("zod").ZodObject<{
997
- name: import("zod").ZodString;
998
- url: import("zod").ZodNullable<import("zod").ZodString>;
999
- }, import("zod/v4/core").$strip>>;
1000
- }, import("zod/v4/core").$strip>>;
1001
- unavailable: import("zod").ZodNullable<import("zod").ZodString>;
1002
- }, import("zod/v4/core").$strip>>;
1003
- by: import("zod").ZodObject<{
1004
- actor: import("zod").ZodString;
1005
- principal: import("zod").ZodString;
1006
- profile: import("zod").ZodNullable<import("zod").ZodString>;
1007
- session: import("zod").ZodNullable<import("zod").ZodString>;
1008
- }, import("zod/v4/core").$strip>;
1009
- from: import("zod").ZodNullable<import("zod").ZodString>;
1010
- }, import("zod/v4/core").$strip>;
1011
- 'message.edited': import("zod").ZodObject<{
1012
- id: import("zod").ZodNumber;
1013
- thread: import("zod").ZodString;
1014
- text: import("zod").ZodString;
1015
- mentions: import("zod").ZodArray<import("zod").ZodString>;
1016
- by: import("zod").ZodObject<{
1017
- actor: import("zod").ZodString;
1018
- principal: import("zod").ZodString;
1019
- profile: import("zod").ZodNullable<import("zod").ZodString>;
1020
- session: import("zod").ZodNullable<import("zod").ZodString>;
1021
- }, import("zod/v4/core").$strip>;
1022
- from: import("zod").ZodNullable<import("zod").ZodString>;
1023
- }, import("zod/v4/core").$strip>;
1024
- 'message.deleted': import("zod").ZodObject<{
1025
- id: import("zod").ZodNumber;
1026
- thread: import("zod").ZodString;
1027
- by: import("zod").ZodObject<{
1028
- actor: import("zod").ZodString;
1029
- principal: import("zod").ZodString;
1030
- profile: import("zod").ZodNullable<import("zod").ZodString>;
1031
- session: import("zod").ZodNullable<import("zod").ZodString>;
1032
- }, import("zod/v4/core").$strip>;
1033
- from: import("zod").ZodNullable<import("zod").ZodString>;
1034
- }, import("zod/v4/core").$strip>;
1035
- 'reaction.added': import("zod").ZodObject<{
1036
- id: import("zod").ZodNumber;
1037
- thread: import("zod").ZodString;
1038
- emoji: import("zod").ZodString;
1039
- by: import("zod").ZodObject<{
1040
- actor: import("zod").ZodString;
1041
- principal: import("zod").ZodString;
1042
- profile: import("zod").ZodNullable<import("zod").ZodString>;
1043
- session: import("zod").ZodNullable<import("zod").ZodString>;
1044
- }, import("zod/v4/core").$strip>;
1045
- from: import("zod").ZodNullable<import("zod").ZodString>;
1046
- }, import("zod/v4/core").$strip>;
1047
- 'reaction.removed': import("zod").ZodObject<{
1048
- id: import("zod").ZodNumber;
1049
- thread: import("zod").ZodString;
1050
- emoji: import("zod").ZodString;
1051
- by: import("zod").ZodObject<{
1052
- actor: import("zod").ZodString;
1053
- principal: import("zod").ZodString;
1054
- profile: import("zod").ZodNullable<import("zod").ZodString>;
1055
- session: import("zod").ZodNullable<import("zod").ZodString>;
1056
- }, import("zod/v4/core").$strip>;
1057
- from: import("zod").ZodNullable<import("zod").ZodString>;
1058
- }, import("zod/v4/core").$strip>;
1059
- 'labels.changed': import("zod").ZodObject<{
1060
- id: import("zod").ZodNumber;
1061
- thread: import("zod").ZodString;
1062
- set: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>;
1063
- unset: import("zod").ZodArray<import("zod").ZodString>;
1064
- by: import("zod").ZodObject<{
1065
- actor: import("zod").ZodString;
1066
- principal: import("zod").ZodString;
1067
- profile: import("zod").ZodNullable<import("zod").ZodString>;
1068
- session: import("zod").ZodNullable<import("zod").ZodString>;
1069
- }, import("zod/v4/core").$strip>;
1070
- }, import("zod/v4/core").$strip>;
1071
- 'thread.synced': import("zod").ZodObject<{
1072
- thread: import("zod").ZodString;
1073
- target: import("zod").ZodString;
1074
- cause: import("zod").ZodEnum<{
1075
- config: "config";
1076
- request: "request";
1077
- }>;
1078
- kind: import("zod").ZodOptional<import("zod").ZodEnum<{
1079
- channel: "channel";
1080
- thread: "thread";
1081
- }>>;
1082
- by: import("zod").ZodObject<{
1083
- actor: import("zod").ZodString;
1084
- principal: import("zod").ZodString;
1085
- profile: import("zod").ZodNullable<import("zod").ZodString>;
1086
- session: import("zod").ZodNullable<import("zod").ZodString>;
1087
- }, import("zod/v4/core").$strip>;
1088
- }, import("zod/v4/core").$strip>;
1089
- 'message.synced': import("zod").ZodObject<{
1090
- id: import("zod").ZodNumber;
1091
- thread: import("zod").ZodString;
1092
- target: import("zod").ZodString;
1093
- external: import("zod").ZodObject<{
1094
- thread: import("zod").ZodString;
1095
- message: import("zod").ZodString;
1096
- asUser: import("zod").ZodOptional<import("zod").ZodLiteral<true>>;
1097
- }, import("zod/v4/core").$strip>;
1098
- syncedBy: import("zod").ZodOptional<import("zod").ZodString>;
1099
- }, import("zod/v4/core").$strip>;
1100
- 'message.files_synced': import("zod").ZodObject<{
1101
- id: import("zod").ZodNumber;
1102
- thread: import("zod").ZodString;
1103
- target: import("zod").ZodString;
1104
- files: import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodString>>;
1105
- syncedBy: import("zod").ZodOptional<import("zod").ZodString>;
1106
- }, import("zod/v4/core").$strip>;
1107
- 'message.sync_failed': import("zod").ZodObject<{
1108
- id: import("zod").ZodNumber;
1109
- thread: import("zod").ZodString;
1110
- target: import("zod").ZodString;
1111
- error: import("zod").ZodString;
1112
- }, import("zod/v4/core").$strip>;
1113
- 'actor.seen': import("zod").ZodObject<{
1114
- actor: import("zod").ZodString;
1115
- kind: import("zod").ZodUnion<readonly [import("zod").ZodEnum<{
1116
- agent: "agent";
1117
- deployment: "deployment";
1118
- external: "external";
1119
- person: "person";
1120
- workflow: "workflow";
1121
- }>, import("zod").ZodLiteral<"profile">]>;
1122
- handle: import("zod").ZodString;
1123
- name: import("zod").ZodString;
1124
- avatar: import("zod").ZodNullable<import("zod").ZodString>;
1125
- host: import("zod").ZodOptional<import("zod").ZodLiteral<true>>;
1126
- }, import("zod/v4/core").$strip>;
1127
- 'actor.linked': import("zod").ZodObject<{
1128
- actor: import("zod").ZodString;
1129
- to: import("zod").ZodString;
1130
- method: import("zod").ZodEnum<{
1131
- code: "code";
1132
- consent: "consent";
1133
- }>;
1134
- by: import("zod").ZodObject<{
1135
- actor: import("zod").ZodString;
1136
- principal: import("zod").ZodString;
1137
- profile: import("zod").ZodNullable<import("zod").ZodString>;
1138
- session: import("zod").ZodNullable<import("zod").ZodString>;
1139
- }, import("zod/v4/core").$strip>;
1140
- }, import("zod/v4/core").$strip>;
1141
- 'actor.unlinked': import("zod").ZodObject<{
1142
- actor: import("zod").ZodString;
1143
- by: import("zod").ZodObject<{
1144
- actor: import("zod").ZodString;
1145
- principal: import("zod").ZodString;
1146
- profile: import("zod").ZodNullable<import("zod").ZodString>;
1147
- session: import("zod").ZodNullable<import("zod").ZodString>;
1148
- }, import("zod/v4/core").$strip>;
1149
- }, import("zod/v4/core").$strip>;
1150
- }, ActorsState, Record<never, never>>;
1151
- /** A copy of a board message on a platform. */
1152
- /** `files`: the platform's IDs for the message's files, or null when it refused them; unset until they're sent. */
1153
- /** `asUser`: posted with its author's own token, so editing or deleting it needs that token too. */
1154
- /** `by`: the principal of the sync elsewhere that recorded it, whose copy it is to change; none for the board's own sync's. */
1155
- type ExternalCopy = {
1156
- thread: string;
1157
- message: string;
1158
- files?: string[] | null;
1159
- asUser?: true;
1160
- by?: string;
1161
- };
1162
- type SyncedThread = {
1163
- root: number;
1164
- channel: string;
1165
- kinds?: Record<string, 'channel' | 'thread'>;
1166
- /** External channels (start a thread there) and threads (joined), in sync order. */
1167
- targets: string[];
1168
- /** Target → the external thread it resolved to. A thread target resolves to itself. */
1169
- external: Record<string, string>;
1170
- };
1171
- //#endregion
1172
- export { ExternalFile as _, ExternalCopy as a, Origin as b, SyncedThread as c, messagesReducer as d, BOARD_SESSION as f, ExternalEvent as g, ExternalAuthor as h, ChannelsState as i, actorsReducer as l, BoardEvents as m, ActorsState as n, Message as o, BoardEvent as p, Channel as r, MessagesState as s, Actor as t, channelsReducer as u, ExternalLink as v, boardContract as x, Link as y };