@vercel/board 0.29.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 (156) hide show
  1. package/README.md +8 -17
  2. package/dist/{a2-HUbQJ0RD.mjs → a2-DngWY2Eb.mjs} +741 -415
  3. package/dist/access-CY5xVMIK.mjs +242 -0
  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-DcJhFbwJ.mjs → actors-Bm-ojWWT.mjs} +2 -2
  8. package/dist/{auth-JO22iIwr.mjs → auth-CyO2aw5n.mjs} +126 -236
  9. package/dist/{auth-CU56Q2Xh.d.mts → auth-DLYSt_-A.d.mts} +32 -4
  10. package/dist/{backend-CPC_vyOo.d.mts → backend-Bob-5CM7.d.mts} +93 -42
  11. package/dist/backend-a2/blob-vercel.d.mts +1 -1
  12. package/dist/backend-a2/contract.d.mts +38 -98
  13. package/dist/backend-a2/contract.mjs +1 -1
  14. package/dist/backend-a2/scheduler-local.d.mts +1 -1
  15. package/dist/backend-a2/scheduler-local.mjs +1 -1
  16. package/dist/backend-a2/scheduler-qstash.d.mts +3 -3
  17. package/dist/backend-a2/scheduler-qstash.mjs +8 -8
  18. package/dist/backend-a2/scheduler-vercel.d.mts +3 -3
  19. package/dist/backend-a2/scheduler-vercel.mjs +6 -6
  20. package/dist/backend-a2/store-memory.d.mts +2 -2
  21. package/dist/backend-a2/store-memory.mjs +3 -3
  22. package/dist/backend-a2/store-postgres.d.mts +1 -1
  23. package/dist/backend-a2/store-postgres.mjs +34 -15
  24. package/dist/backend-a2/store-redis-http.d.mts +1 -1
  25. package/dist/backend-a2/store-redis-http.mjs +6 -6
  26. package/dist/backend-a2/store-redis.d.mts +2 -2
  27. package/dist/backend-a2/store-redis.mjs +5 -5
  28. package/dist/backend-a2/store-sqlite.d.mts +1 -1
  29. package/dist/backend-a2/store-sqlite.mjs +3 -3
  30. package/dist/backend-a2.d.mts +143 -242
  31. package/dist/backend-a2.mjs +2 -2
  32. package/dist/{backend-http-CqfKhrnn.d.mts → backend-http-BRrRbjRx.d.mts} +59 -45
  33. package/dist/{backend-http-CzIJMm58.mjs → backend-http-CvUKOn-m.mjs} +11 -10
  34. package/dist/{backend-http-Bmp0IgD3.mjs → backend-http-D8mUzuKQ.mjs} +2 -2
  35. package/dist/backend-http.d.mts +1 -1
  36. package/dist/backend-http.mjs +1 -1
  37. package/dist/backend-http.node.d.mts +1 -1
  38. package/dist/backend-http.node.mjs +1 -1
  39. package/dist/{backend-vercel-DQc_TaHp.mjs → backend-vercel-Ba8JDtqW.mjs} +3 -3
  40. package/dist/{backend-vercel-4tvcPKqX.d.mts → backend-vercel-BaSEUdwg.d.mts} +62 -47
  41. package/dist/{backend-vercel-BNauAs7w.mjs → backend-vercel-CmY9yZ9m.mjs} +279 -42
  42. package/dist/backend-vercel.d.mts +1 -1
  43. package/dist/backend-vercel.mjs +1 -1
  44. package/dist/backend-vercel.node.d.mts +1 -1
  45. package/dist/backend-vercel.node.mjs +1 -1
  46. package/dist/{blob-DmiQjrYy.d.mts → blob-Bx8QPWEd.d.mts} +2 -2
  47. package/dist/{blob-DdbpJqN1.mjs → blob-WbB2DJKn.mjs} +30 -11
  48. package/dist/{chat-provider-BWHbChcQ.d.mts → chat-provider-BChYrrA7.d.mts} +32 -28
  49. package/dist/{chat-provider-COtsU5jB.mjs → chat-provider-DkFp2hrh.mjs} +105 -60
  50. package/dist/cli-commands.d.mts +1 -1
  51. package/dist/cli-commands.mjs +1 -1
  52. package/dist/cli-embedded.d.mts +2 -2
  53. package/dist/cli-embedded.mjs +1 -1
  54. package/dist/cli.mjs +4 -4
  55. package/dist/{client-BqAjk0Q4.d.mts → client-COfYrgfV.d.mts} +240 -227
  56. package/dist/{commands-D6gvrOh3.d.mts → commands-DK4W3HCJ.d.mts} +47 -10
  57. package/dist/{commands-C3R1AWgm.mjs → commands-L1JSGz2Z.mjs} +212 -54
  58. package/dist/conformance-DK43HiHf.mjs +1000 -0
  59. package/dist/conformance.d.mts +8 -2
  60. package/dist/conformance.mjs +1 -1
  61. package/dist/{engine-DQxXk7dX.mjs → engine-DurYIRt8.mjs} +29 -210
  62. package/dist/{errors-DDktVeUa.d.mts → errors-2vGs49Db.d.mts} +1 -1
  63. package/dist/{client-D0Px7KzF.mjs → errors-CJXhhzvT.mjs} +132 -27
  64. package/dist/{provider-BaVmi4Hi.mjs → events-lujPA3gQ.mjs} +80 -17
  65. package/dist/{exports-BG-0Wyn-.mjs → exports-CWIdN0Ub.mjs} +195 -103
  66. package/dist/exports-FBOQWT7O.d.mts +5 -0
  67. package/dist/{folds-BDMSxBUf.mjs → folds-Cu9Q9zyQ.mjs} +3 -22
  68. package/dist/{folds-ZkHM4M-v.d.mts → folds-DLUzfibJ.d.mts} +15 -40
  69. package/dist/{index-D3VvNfh_.d.mts → index-Ho-ayyQL.d.mts} +2 -2
  70. package/dist/index.d.mts +7 -7
  71. package/dist/{index.default-rB8sJ9RX.mjs → index.default-BUcwDaAe.mjs} +1 -1
  72. package/dist/index.mjs +5 -6
  73. package/dist/index.node.d.mts +7 -7
  74. package/dist/index.node.mjs +3 -4
  75. package/dist/inspect/app.js +62 -61
  76. package/dist/inspect/engine.js +3 -3
  77. package/dist/{internal-CvsrprnU-CRY89I-b.mjs → internal-CvsrprnU-zZMpDiRY.mjs} +1 -1
  78. package/dist/{local-DhkrAqPP.mjs → local-C76Fy5ad.mjs} +1 -1
  79. package/dist/{main-CVBqe3VO.mjs → main-Dz-8komG.mjs} +251 -127
  80. package/dist/{middleware-CXjEeef4.mjs → middleware-BavYSDUa.mjs} +1 -1
  81. package/dist/{node-Zd_C-gxP.mjs → node-BgeGcwX0.mjs} +7 -3
  82. package/dist/{platform-B4TnJtWu-CwcTyKg2.mjs → platform-B4TnJtWu-Do3agKr5.mjs} +1 -1
  83. package/dist/{project-CBXlLftU.mjs → project-CQ4VUibA.mjs} +1 -1
  84. package/dist/{provider-DmSTp9lI.d.mts → provider-gynDUoyW.d.mts} +13 -43
  85. package/dist/{redis-tables-BJQVUspu.mjs → redis-tables-DHf85ixI.mjs} +40 -42
  86. package/dist/{reducer-CjmvZSAb-D_OSISmj.mjs → reducer-Bswr11ar-P324o9vn.mjs} +2 -2
  87. package/dist/{reducer-CYPHsSmd-BQIfozGi.d.mts → reducer-CYPHsSmd-BXjGiptm.d.mts} +1 -1
  88. package/dist/{reducers-DJzVpXwM.mjs → reducers-DcENwtwZ.mjs} +74 -77
  89. package/dist/{retryable-lazy-DZWmHpii-Bye-W8q7.mjs → retryable-lazy-DZWmHpii-DpTc5PIP.mjs} +1 -1
  90. package/dist/{scheduler-task-X1SToDjP-BVoWuInI.mjs → scheduler-task-X1SToDjP-D2Il2rln.mjs} +1 -1
  91. package/dist/{serve-G9RuaDSr.mjs → serve-CTmow-YH.mjs} +7 -7
  92. package/dist/{server-qgez0Xny-D5mLfqFQ.d.mts → server-B9gu0qi1-DI1WvcVK.d.mts} +10 -4
  93. package/dist/{server-BixV_byP.mjs → server-DG8D6VV0.mjs} +4 -4
  94. package/dist/{server-DtFrWxi3-Boa6gdWO.mjs → server-DX7mM6nm-D7N_7bug.mjs} +32 -23
  95. package/dist/{serving-B75Y4BF-.mjs → serving-DBFRo6U_.mjs} +1 -1
  96. package/dist/{session-clear-wHd5GCpZ-BnKSxReK.mjs → session-clear-XJYpmUpg-2q8l_FJR.mjs} +14 -2
  97. package/dist/{sql-D4Z_efJX.mjs → sql-CT5xVuGr.mjs} +2 -8
  98. package/dist/{sqlite-db-Bz2JkfCU.mjs → sqlite-db-0WeSOEZN.mjs} +1 -1
  99. package/dist/{store-D0MhBvg6-4Z2L0Kqd.d.mts → store-DEzcHZOA-B-5vhxef.d.mts} +12 -2
  100. package/dist/store-N8PXxDAS-DWWgv-Vz.mjs +5 -0
  101. package/dist/{store-codec-DwrWlgQx-CYxGW0aD.mjs → store-codec-pAG2oPgQ-SqDXlPBR.mjs} +4 -4
  102. package/dist/store-memory-4IBl0Ztu.mjs +2 -0
  103. package/dist/{store-memory-Bas9Uq5C.mjs → store-memory-B0PkVSuQ.mjs} +14 -7
  104. package/dist/{store-polling-BZt2Rf3D-BiEM6_HB.mjs → store-polling-BZt2Rf3D-Div-bJ_D.mjs} +2 -2
  105. package/dist/{store-presence-polling-JuAy2Ck2-CYpuK75X.mjs → store-presence-polling-JuAy2Ck2-Dh-g_KYM.mjs} +3 -3
  106. package/dist/{store-sqlite-CxxPCcCT.mjs → store-sqlite-D85t3tE7.mjs} +14 -7
  107. package/dist/store-sqlite-iBTYYKBj.mjs +2 -0
  108. package/dist/{stream-buffer-DrTyiIuo-BKy-vI14.mjs → stream-buffer-DrTyiIuo-Be10yOBR.mjs} +2 -2
  109. package/dist/{sync-kapso.d.mts → sync-chat-sdk.d.mts} +33 -37
  110. package/dist/sync-chat-sdk.mjs +44 -0
  111. package/dist/sync-github.d.mts +5 -18
  112. package/dist/sync-github.mjs +4 -70
  113. package/dist/sync-linear.d.mts +3 -3
  114. package/dist/sync-linear.mjs +6 -5
  115. package/dist/sync-slack.d.mts +7 -7
  116. package/dist/sync-slack.mjs +33 -54
  117. package/dist/sync.d.mts +3 -3
  118. package/dist/sync.mjs +2 -4
  119. package/dist/{tokens-CC3izSNr.mjs → tokens-Dnyd_y1n.mjs} +15 -6
  120. package/dist/{types-No0WdhE5.d.mts → types-CmrFjpml.d.mts} +2 -4
  121. package/dist/{watchers-hash-BDhLVkV5.mjs → watchers-hash-BjwlnGD9.mjs} +124 -115
  122. package/docs/01-board/01-mounting.md +2 -2
  123. package/docs/01-board/03-identity.md +5 -6
  124. package/docs/01-board/04-messages.md +96 -2
  125. package/docs/01-board/05-reading.md +2 -1
  126. package/docs/01-board/06-watchers.md +8 -6
  127. package/docs/01-board/08-middleware.md +6 -3
  128. package/docs/01-board/09-access.md +145 -14
  129. package/docs/02-sync/01-overview.md +19 -26
  130. package/docs/02-sync/02-functions.md +8 -9
  131. package/docs/02-sync/03-slack.md +5 -5
  132. package/docs/02-sync/04-github.md +2 -2
  133. package/docs/02-sync/06-providers.md +91 -62
  134. package/docs/03-guides/01-coding-agents.md +1 -1
  135. package/docs/03-guides/03-ci.md +7 -4
  136. package/docs/04-reference/01-cli.md +109 -51
  137. package/docs/04-reference/02-board.md +76 -28
  138. package/docs/04-reference/03-http.md +76 -38
  139. package/docs/04-reference/04-log.md +8 -11
  140. package/docs/04-reference/05-conformance.md +47 -7
  141. package/docs/index.md +2 -2
  142. package/package.json +7 -10
  143. package/sql/postgres/board.sql +1 -1
  144. package/sql/postgres/schema.sql +1 -1
  145. package/dist/conformance-DlnfuzEB.mjs +0 -556
  146. package/dist/errors-CusN4x2l.mjs +0 -88
  147. package/dist/events-qf5XG5VQ.mjs +0 -75
  148. package/dist/exports-mhAYiU4i.d.mts +0 -5
  149. package/dist/store-N8PXxDAS-BWBgzBHp.mjs +0 -5
  150. package/dist/store-memory-ZLiZbH3R.mjs +0 -2
  151. package/dist/store-sqlite-BmwL3pUR.mjs +0 -2
  152. package/dist/sync-kapso.mjs +0 -89
  153. package/dist/sync.chat.d.mts +0 -2
  154. package/dist/sync.chat.mjs +0 -2
  155. package/dist/users-yryHKFMo.mjs +0 -42
  156. package/docs/02-sync/05-whatsapp.md +0 -152
@@ -1,9 +1,9 @@
1
- import { t as Access } from "./access-CV96SYgr.mjs";
2
- import { m as RuleFunction, n as AccessRule, r as Authenticate, s as Granted, t as AccessFunction, u as Known } from "./auth-CU56Q2Xh.mjs";
3
- import { A as Labels, C as Author, t as Actor, u as ExternalEvent, x as Attachment } from "./folds-ZkHM4M-v.mjs";
4
- import { A as InboxItem, At as SyncRootsQuery, B as Me, C as EventsQuery, D as IdentityView, Et as SyncImportBody, Ft as ThreadView, H as MessagesPage, Ht as UploadTicket, I as LinkedAccount, It as ThreadsPage, K as PersonView, L as LinkedQuery, Lt as ThreadsQuery, M as InboxPushBody, Mt as SyncUnlinkBody, N as InboxQuery, Nt as SyncedView, O as InboxAckBody, Ot as SyncReceiptBody, P as LabelBody, Q as RegisterBody, R as MatchView, S as EventsPage, St as SyncCopiesView, Tt as SyncFindView, U as MessagesQuery, V as MessageView, Vt as UploadStartBody, X as ReactBody, _ as BoardEventView, b as Discovery, bt as SyncCodeView, dt as SourceJoin, et as RegistrationView, ft as SourceJoinBody, gt as SyncAccountBody, ht as SourceReadQuery, j as InboxNextQuery, jt as SyncThreadView, k as InboxEntry, m as AckBody, mt as SourceRead, o as ProfileOption, ot as ScheduleView, q as PostBody, rt as ScheduleBody, st as SchedulesQuery, t as BoardClient, v as ChannelView, wt as SyncFindQuery, x as EditBody, xt as SyncCopiesQuery, yt as SyncCodeBody, z as MatchesQuery, zt as TypingBody } from "./client-BqAjk0Q4.mjs";
5
- import { t as HttpError } from "./errors-DDktVeUa.mjs";
6
- import { p as SyncProvider } from "./provider-DmSTp9lI.mjs";
1
+ import { t as Access } from "./access-DPcrKIH_.mjs";
2
+ import { _ as StoredGrant, c as Granted, d as Known, g as RuleFunction, n as AccessRule, p as Pinned, r as Authenticate, t as AccessFunction } from "./auth-DLYSt_-A.mjs";
3
+ import { A as Labels, C as Author, t as Actor, u as ExternalEvent, x as Attachment } from "./folds-DLUzfibJ.mjs";
4
+ import { $ as RegisterBody, A as InboxAckBody, At as ThreadsPage, B as MatchView, C as EventsPage, D as GrantBody, Dt as SyncedView, Et as SyncThreadView, F as InboxQuery, Ft as TokenView, G as MessagesQuery, H as Me, It as TypingBody, J as PostBody, L as LabelBody, M as InboxItem, N as InboxNextQuery, Nt as TokenBody, P as InboxPushBody, Rt as UploadStartBody, S as EditBody, St as SyncImportBody, U as MessageView, V as MatchesQuery, W as MessagesPage, Z as ReactBody, _ as BoardEventView, _t as SyncCopiesQuery, b as DeleteBody, bt as SyncFindQuery, ct as SchedulesQuery, dt as SourceJoin, ft as SourceJoinBody, ht as SourceReadQuery, it as ScheduleBody, j as InboxEntry, jt as ThreadsQuery, k as GrantView, kt as ThreadView, m as AckBody, mt as SourceRead, o as ProfileOption, st as ScheduleView, t as BoardClient, tt as RegistrationView, v as ChannelView, vt as SyncCopiesView, w as EventsQuery, wt as SyncReceiptBody, x as Discovery, xt as SyncFindView, y as CreateChannelBody, z as LinkedQuery, zt as UploadTicket } from "./client-COfYrgfV.mjs";
5
+ import { t as HttpError } from "./errors-2vGs49Db.mjs";
6
+ import { p as SyncProvider } from "./provider-gynDUoyW.mjs";
7
7
  import { z } from "zod";
8
8
  //#region src/api/protocol.d.ts
9
9
  type Input<S extends z.ZodType> = NonNullable<z.output<S>>;
@@ -35,19 +35,21 @@ type Protocol = {
35
35
  cursor: string;
36
36
  };
37
37
  };
38
+ /** `created` is false for a channel that was there already, made by a post or another create. */
39
+ createChannel: {
40
+ input: Input<typeof CreateChannelBody>;
41
+ output: {
42
+ channel: ChannelView;
43
+ created: boolean;
44
+ };
45
+ };
38
46
  actors: {
39
47
  input: Nothing;
40
48
  output: {
41
- actors: (Actor & {
42
- person?: PersonView;
43
- })[];
49
+ actors: Actor[];
44
50
  cursor: string;
45
51
  };
46
52
  };
47
- identity: {
48
- input: Nothing;
49
- output: IdentityView;
50
- };
51
53
  messages: {
52
54
  input: Input<typeof MessagesQuery>;
53
55
  output: MessagesPage;
@@ -82,7 +84,7 @@ type Protocol = {
82
84
  };
83
85
  };
84
86
  delete: {
85
- input: Id;
87
+ input: Id & Input<typeof DeleteBody>;
86
88
  output: {
87
89
  ok: true;
88
90
  };
@@ -119,6 +121,50 @@ type Protocol = {
119
121
  canceled: boolean;
120
122
  };
121
123
  };
124
+ /** The board's grants: needs `manage` in every channel. 501 `no_grants` where the board keeps none. */
125
+ grants: {
126
+ input: Nothing;
127
+ output: {
128
+ grants: GrantView[];
129
+ };
130
+ };
131
+ /** Sets a grant, or the `can` of the one with its issuer and claims: `created` is false for that. */
132
+ createGrant: {
133
+ input: Input<typeof GrantBody>;
134
+ output: {
135
+ grant: GrantView;
136
+ created: boolean;
137
+ };
138
+ };
139
+ /** `revoked` is false when it was already gone. */
140
+ revokeGrant: {
141
+ input: Id;
142
+ output: {
143
+ revoked: boolean;
144
+ };
145
+ };
146
+ /** The caller's tokens, or every one with `manage` in every channel. 501 `no_tokens` where the board issues none. */
147
+ tokens: {
148
+ input: Nothing;
149
+ output: {
150
+ tokens: TokenView[];
151
+ };
152
+ };
153
+ /** A token acting as the caller, narrowed: the only time its secret shows. */
154
+ createToken: {
155
+ input: Input<typeof TokenBody>;
156
+ output: {
157
+ token: TokenView;
158
+ secret: string;
159
+ };
160
+ };
161
+ /** It and every token minted with it stop. `revoked` is false when it was already gone. */
162
+ revokeToken: {
163
+ input: Id;
164
+ output: {
165
+ revoked: boolean;
166
+ };
167
+ };
122
168
  upload: {
123
169
  input: {
124
170
  data: Uint8Array;
@@ -240,12 +286,6 @@ type Protocol = {
240
286
  input: Input<typeof SyncCopiesQuery>;
241
287
  output: SyncCopiesView;
242
288
  };
243
- syncRoots: {
244
- input: Input<typeof SyncRootsQuery>;
245
- output: {
246
- roots: MessageView[];
247
- };
248
- };
249
289
  /** Platform events into the caller's inbox, deduplicated by their platform IDs. */
250
290
  inboxPush: {
251
291
  input: Key & Input<typeof InboxPushBody>;
@@ -273,25 +313,6 @@ type Protocol = {
273
313
  events: InboxEntry[];
274
314
  };
275
315
  };
276
- /** A code for linking the caller's account, and the sign-in that carries it when the entry signs people in. */
277
- syncCode: {
278
- input: Input<typeof SyncCodeBody>;
279
- output: SyncCodeView;
280
- };
281
- /** 404 `bad_code` for a code that isn't live. */
282
- syncAccount: {
283
- input: Input<typeof SyncAccountBody>;
284
- output: {
285
- person: string;
286
- link: LinkedAccount;
287
- };
288
- };
289
- syncUnlink: {
290
- input: Input<typeof SyncUnlinkBody>;
291
- output: {
292
- ok: true;
293
- };
294
- };
295
316
  };
296
317
  type Method = keyof Protocol;
297
318
  //#endregion
@@ -575,11 +596,10 @@ type Subscription =
575
596
  {
576
597
  kind: 'sync';
577
598
  };
578
- /** One of board()'s sync entries: its key, its platform, and whether it can sign people in. */
599
+ /** One of board()'s sync entries: its key and its platform. */
579
600
  type SyncEntry = {
580
601
  key: string;
581
602
  platform: string;
582
- signIn: boolean;
583
603
  };
584
604
  /** A platform event sync pushed to an inbox, as the backend delivers it back. */
585
605
  type InboxDelivery = {
@@ -647,6 +667,8 @@ type BoardBinding = {
647
667
  id: string | null;
648
668
  teamId: string | null;
649
669
  }>;
670
+ /** The OIDC issuers board()'s rules name, which no grant's issuer may share principals with. */
671
+ issuers(): readonly string[];
650
672
  /**
651
673
  * A handle through board(), as `caller`: what a backend writes for someone outside a request
652
674
  * goes through it, so board()'s middleware sees it, a schedule's send as its creator, say. A
@@ -656,6 +678,27 @@ type BoardBinding = {
656
678
  /** The board's own URL, where a board elsewhere can wake it, once it's known. */
657
679
  url(): string | null;
658
680
  };
681
+ /** A token a backend issued, as board() checks a request that carries it. */
682
+ type StoredToken = {
683
+ id: string;
684
+ name: string;
685
+ /** Who minted it, as a schedule keeps its creator: what it may do is worked out again on every request, narrowed by its scope. */
686
+ minter: Known;
687
+ pinned: Pinned;
688
+ expiresAt: Date;
689
+ };
690
+ /**
691
+ * What a backend that keeps the board keeps of who it trusts: its grants, and the tokens it
692
+ * issued. board() reads them on the requests they decide, as they are then, so a revoke takes
693
+ * effect on the next request.
694
+ */
695
+ type Trust = {
696
+ grants(): Promise<readonly StoredGrant[]>;
697
+ /** The token whose secret hashes to `hash`, while it and every token it was minted with are live: null otherwise. */
698
+ token(hash: string): Promise<StoredToken | null>;
699
+ /** Whether token `id` and every token it was minted with are live: a schedule made with one stops when it doesn't. */
700
+ live(id: string): Promise<boolean>;
701
+ };
659
702
  /**
660
703
  * Where a board lives. board() serves the protocol over HTTP: it routes, validates, verifies each
661
704
  * caller, applies `access`, runs the middleware, watchers, and sync, and calls these with the caller
@@ -671,6 +714,14 @@ interface Backend extends ProtocolMethods {
671
714
  * project.
672
715
  */
673
716
  readonly keeps: boolean;
717
+ /**
718
+ * Whether a schedule's sends come back through board(), as a2()'s do, so its middleware screens
719
+ * each. A backend whose sends post elsewhere, as vercel()'s do from Vercel's API, says false, and
720
+ * board() screens a schedule's message once, when it's made. True when left out.
721
+ */
722
+ readonly sendsSchedulesHere?: boolean;
723
+ /** Its grants and tokens, for a backend that keeps them (`a2()`): board() checks requests against them. */
724
+ readonly trust?: Trust;
674
725
  /**
675
726
  * board() calls it once, when it's created, before any request: what background work needs
676
727
  * from the board (its subscriptions, its sync, its policy, a handle through it). It does no I/O.
@@ -678,4 +729,4 @@ interface Backend extends ProtocolMethods {
678
729
  bind(board: BoardBinding): void;
679
730
  }
680
731
  //#endregion
681
- export { Protocol as S, MiddlewareContext as _, Identity as a, WriteSource as b, SelfCaller as c, Board as d, BoardOptions as f, Middleware as g, DroppedError as h, Caller as i, Subscription as l, WatcherContext as m, BackendRoute as n, InboxDelivery as o, Watcher as p, BoardBinding as r, ProtocolMethods as s, Backend as t, VerifiedCaller as u, Write as v, Method as x, WritePatch as y };
732
+ export { Protocol as C, Method as S, Middleware as _, Identity as a, WritePatch as b, SelfCaller as c, VerifiedCaller as d, Board as f, DroppedError as g, WatcherContext as h, Caller as i, StoredToken as l, Watcher as m, BackendRoute as n, InboxDelivery as o, BoardOptions as p, BoardBinding as r, ProtocolMethods as s, Backend as t, Subscription as u, MiddlewareContext as v, WriteSource as x, Write as y };
@@ -1,4 +1,4 @@
1
- import { t as BlobStore } from "../blob-DmiQjrYy.mjs";
1
+ import { t as BlobStore } from "../blob-Bx8QPWEd.mjs";
2
2
  //#region src/blob/vercel.d.ts
3
3
  export declare function vercelBlob(options?: {
4
4
  token?: string;
@@ -1,5 +1,5 @@
1
- import { A as Labels, C as Author, D as Handle, E as Emoji, M as MessageId, N as MessageText, O as LabelKey, S as AttachmentId, T as ChannelPath, _ as BoardEvents, b as ActorKind, g as BoardEvent, h as BOARD_SESSION, i as ChannelsState, j as MESSAGE_TEXT_MAX, k as LabelValue, l as ExternalAuthor, m as Origin, n as ActorsState, o as Message, r as Channel, s as MessagesState, t as Actor, v as ATTACHMENTS_PER_MESSAGE_MAX, w as CHANNEL_PATH_MAX, x as Attachment, y as ActorId } from "../folds-ZkHM4M-v.mjs";
2
- import { l as Reducer, n as Contract } from "../reducer-CYPHsSmd-BQIfozGi.mjs";
1
+ import { A as Labels, C as Author, D as Handle, E as Emoji, M as MessageId, N as MessageText, O as LabelKey, S as AttachmentId, T as ChannelPath, _ as BoardEvents, b as ActorKind, g as BoardEvent, h as BOARD_SESSION, i as ChannelsState, j as MESSAGE_TEXT_MAX, k as LabelValue, l as ExternalAuthor, m as Origin, n as ActorsState, o as Message, r as Channel, s as MessagesState, t as Actor, v as ATTACHMENTS_PER_MESSAGE_MAX, w as CHANNEL_PATH_MAX, x as Attachment, y as ActorId } from "../folds-DLUzfibJ.mjs";
2
+ import { l as Reducer, n as Contract } from "../reducer-CYPHsSmd-BXjGiptm.mjs";
3
3
  import { z } from "zod";
4
4
  //#region src/contract/files.d.ts
5
5
  /** Under Vercel Functions' 4.5 MB request body limit, so an upload fits in one request. */
@@ -69,6 +69,15 @@ export declare const boardContract: Contract<{
69
69
  blind: z.ZodOptional<z.ZodLiteral<true>>;
70
70
  importedBy: z.ZodOptional<z.ZodString>;
71
71
  }, z.core.$strip>;
72
+ 'channel.created': z.ZodObject<{
73
+ channel: z.ZodString;
74
+ by: z.ZodObject<{
75
+ actor: z.ZodString;
76
+ principal: z.ZodString;
77
+ profile: z.ZodNullable<z.ZodString>;
78
+ session: z.ZodNullable<z.ZodString>;
79
+ }, z.core.$strip>;
80
+ }, z.core.$strip>;
72
81
  'message.linked': z.ZodObject<{
73
82
  id: z.ZodNumber;
74
83
  thread: z.ZodString;
@@ -179,7 +188,6 @@ export declare const boardContract: Contract<{
179
188
  external: z.ZodObject<{
180
189
  thread: z.ZodString;
181
190
  message: z.ZodString;
182
- asUser: z.ZodOptional<z.ZodLiteral<true>>;
183
191
  }, z.core.$strip>;
184
192
  syncedBy: z.ZodOptional<z.ZodString>;
185
193
  }, z.core.$strip>;
@@ -210,29 +218,6 @@ export declare const boardContract: Contract<{
210
218
  avatar: z.ZodNullable<z.ZodString>;
211
219
  host: z.ZodOptional<z.ZodLiteral<true>>;
212
220
  }, z.core.$strip>;
213
- 'actor.linked': z.ZodObject<{
214
- actor: z.ZodString;
215
- to: z.ZodString;
216
- method: z.ZodEnum<{
217
- code: "code";
218
- consent: "consent";
219
- }>;
220
- by: z.ZodObject<{
221
- actor: z.ZodString;
222
- principal: z.ZodString;
223
- profile: z.ZodNullable<z.ZodString>;
224
- session: z.ZodNullable<z.ZodString>;
225
- }, z.core.$strip>;
226
- }, z.core.$strip>;
227
- 'actor.unlinked': z.ZodObject<{
228
- actor: z.ZodString;
229
- by: z.ZodObject<{
230
- actor: z.ZodString;
231
- principal: z.ZodString;
232
- profile: z.ZodNullable<z.ZodString>;
233
- session: z.ZodNullable<z.ZodString>;
234
- }, z.core.$strip>;
235
- }, z.core.$strip>;
236
221
  }, Record<never, never>, undefined>;
237
222
  //#endregion
238
223
  //#region src/contract/reducers.d.ts
@@ -287,6 +272,15 @@ export declare const messagesReducer: Reducer<{
287
272
  blind: import("zod").ZodOptional<import("zod").ZodLiteral<true>>;
288
273
  importedBy: import("zod").ZodOptional<import("zod").ZodString>;
289
274
  }, import("zod/v4/core").$strip>;
275
+ 'channel.created': import("zod").ZodObject<{
276
+ channel: import("zod").ZodString;
277
+ by: import("zod").ZodObject<{
278
+ actor: import("zod").ZodString;
279
+ principal: import("zod").ZodString;
280
+ profile: import("zod").ZodNullable<import("zod").ZodString>;
281
+ session: import("zod").ZodNullable<import("zod").ZodString>;
282
+ }, import("zod/v4/core").$strip>;
283
+ }, import("zod/v4/core").$strip>;
290
284
  'message.linked': import("zod").ZodObject<{
291
285
  id: import("zod").ZodNumber;
292
286
  thread: import("zod").ZodString;
@@ -397,7 +391,6 @@ export declare const messagesReducer: Reducer<{
397
391
  external: import("zod").ZodObject<{
398
392
  thread: import("zod").ZodString;
399
393
  message: import("zod").ZodString;
400
- asUser: import("zod").ZodOptional<import("zod").ZodLiteral<true>>;
401
394
  }, import("zod/v4/core").$strip>;
402
395
  syncedBy: import("zod").ZodOptional<import("zod").ZodString>;
403
396
  }, import("zod/v4/core").$strip>;
@@ -428,29 +421,6 @@ export declare const messagesReducer: Reducer<{
428
421
  avatar: import("zod").ZodNullable<import("zod").ZodString>;
429
422
  host: import("zod").ZodOptional<import("zod").ZodLiteral<true>>;
430
423
  }, import("zod/v4/core").$strip>;
431
- 'actor.linked': import("zod").ZodObject<{
432
- actor: import("zod").ZodString;
433
- to: import("zod").ZodString;
434
- method: import("zod").ZodEnum<{
435
- code: "code";
436
- consent: "consent";
437
- }>;
438
- by: import("zod").ZodObject<{
439
- actor: import("zod").ZodString;
440
- principal: import("zod").ZodString;
441
- profile: import("zod").ZodNullable<import("zod").ZodString>;
442
- session: import("zod").ZodNullable<import("zod").ZodString>;
443
- }, import("zod/v4/core").$strip>;
444
- }, import("zod/v4/core").$strip>;
445
- 'actor.unlinked': import("zod").ZodObject<{
446
- actor: import("zod").ZodString;
447
- by: import("zod").ZodObject<{
448
- actor: import("zod").ZodString;
449
- principal: import("zod").ZodString;
450
- profile: import("zod").ZodNullable<import("zod").ZodString>;
451
- session: import("zod").ZodNullable<import("zod").ZodString>;
452
- }, import("zod/v4/core").$strip>;
453
- }, import("zod/v4/core").$strip>;
454
424
  }, MessagesState, Record<never, never>>;
455
425
  export declare const channelsReducer: Reducer<{
456
426
  'message.posted': import("zod").ZodObject<{
@@ -503,6 +473,15 @@ export declare const channelsReducer: Reducer<{
503
473
  blind: import("zod").ZodOptional<import("zod").ZodLiteral<true>>;
504
474
  importedBy: import("zod").ZodOptional<import("zod").ZodString>;
505
475
  }, import("zod/v4/core").$strip>;
476
+ 'channel.created': import("zod").ZodObject<{
477
+ channel: import("zod").ZodString;
478
+ by: import("zod").ZodObject<{
479
+ actor: import("zod").ZodString;
480
+ principal: import("zod").ZodString;
481
+ profile: import("zod").ZodNullable<import("zod").ZodString>;
482
+ session: import("zod").ZodNullable<import("zod").ZodString>;
483
+ }, import("zod/v4/core").$strip>;
484
+ }, import("zod/v4/core").$strip>;
506
485
  'message.linked': import("zod").ZodObject<{
507
486
  id: import("zod").ZodNumber;
508
487
  thread: import("zod").ZodString;
@@ -613,7 +592,6 @@ export declare const channelsReducer: Reducer<{
613
592
  external: import("zod").ZodObject<{
614
593
  thread: import("zod").ZodString;
615
594
  message: import("zod").ZodString;
616
- asUser: import("zod").ZodOptional<import("zod").ZodLiteral<true>>;
617
595
  }, import("zod/v4/core").$strip>;
618
596
  syncedBy: import("zod").ZodOptional<import("zod").ZodString>;
619
597
  }, import("zod/v4/core").$strip>;
@@ -644,29 +622,6 @@ export declare const channelsReducer: Reducer<{
644
622
  avatar: import("zod").ZodNullable<import("zod").ZodString>;
645
623
  host: import("zod").ZodOptional<import("zod").ZodLiteral<true>>;
646
624
  }, import("zod/v4/core").$strip>;
647
- 'actor.linked': import("zod").ZodObject<{
648
- actor: import("zod").ZodString;
649
- to: import("zod").ZodString;
650
- method: import("zod").ZodEnum<{
651
- code: "code";
652
- consent: "consent";
653
- }>;
654
- by: import("zod").ZodObject<{
655
- actor: import("zod").ZodString;
656
- principal: import("zod").ZodString;
657
- profile: import("zod").ZodNullable<import("zod").ZodString>;
658
- session: import("zod").ZodNullable<import("zod").ZodString>;
659
- }, import("zod/v4/core").$strip>;
660
- }, import("zod/v4/core").$strip>;
661
- 'actor.unlinked': import("zod").ZodObject<{
662
- actor: import("zod").ZodString;
663
- by: import("zod").ZodObject<{
664
- actor: import("zod").ZodString;
665
- principal: import("zod").ZodString;
666
- profile: import("zod").ZodNullable<import("zod").ZodString>;
667
- session: import("zod").ZodNullable<import("zod").ZodString>;
668
- }, import("zod/v4/core").$strip>;
669
- }, import("zod/v4/core").$strip>;
670
625
  }, ChannelsState, Record<never, never>>;
671
626
  export declare const actorsReducer: Reducer<{
672
627
  'message.posted': import("zod").ZodObject<{
@@ -719,6 +674,15 @@ export declare const actorsReducer: Reducer<{
719
674
  blind: import("zod").ZodOptional<import("zod").ZodLiteral<true>>;
720
675
  importedBy: import("zod").ZodOptional<import("zod").ZodString>;
721
676
  }, import("zod/v4/core").$strip>;
677
+ 'channel.created': import("zod").ZodObject<{
678
+ channel: import("zod").ZodString;
679
+ by: import("zod").ZodObject<{
680
+ actor: import("zod").ZodString;
681
+ principal: import("zod").ZodString;
682
+ profile: import("zod").ZodNullable<import("zod").ZodString>;
683
+ session: import("zod").ZodNullable<import("zod").ZodString>;
684
+ }, import("zod/v4/core").$strip>;
685
+ }, import("zod/v4/core").$strip>;
722
686
  'message.linked': import("zod").ZodObject<{
723
687
  id: import("zod").ZodNumber;
724
688
  thread: import("zod").ZodString;
@@ -829,7 +793,6 @@ export declare const actorsReducer: Reducer<{
829
793
  external: import("zod").ZodObject<{
830
794
  thread: import("zod").ZodString;
831
795
  message: import("zod").ZodString;
832
- asUser: import("zod").ZodOptional<import("zod").ZodLiteral<true>>;
833
796
  }, import("zod/v4/core").$strip>;
834
797
  syncedBy: import("zod").ZodOptional<import("zod").ZodString>;
835
798
  }, import("zod/v4/core").$strip>;
@@ -860,29 +823,6 @@ export declare const actorsReducer: Reducer<{
860
823
  avatar: import("zod").ZodNullable<import("zod").ZodString>;
861
824
  host: import("zod").ZodOptional<import("zod").ZodLiteral<true>>;
862
825
  }, import("zod/v4/core").$strip>;
863
- 'actor.linked': import("zod").ZodObject<{
864
- actor: import("zod").ZodString;
865
- to: import("zod").ZodString;
866
- method: import("zod").ZodEnum<{
867
- code: "code";
868
- consent: "consent";
869
- }>;
870
- by: import("zod").ZodObject<{
871
- actor: import("zod").ZodString;
872
- principal: import("zod").ZodString;
873
- profile: import("zod").ZodNullable<import("zod").ZodString>;
874
- session: import("zod").ZodNullable<import("zod").ZodString>;
875
- }, import("zod/v4/core").$strip>;
876
- }, import("zod/v4/core").$strip>;
877
- 'actor.unlinked': import("zod").ZodObject<{
878
- actor: import("zod").ZodString;
879
- by: import("zod").ZodObject<{
880
- actor: import("zod").ZodString;
881
- principal: import("zod").ZodString;
882
- profile: import("zod").ZodNullable<import("zod").ZodString>;
883
- session: import("zod").ZodNullable<import("zod").ZodString>;
884
- }, import("zod/v4/core").$strip>;
885
- }, import("zod/v4/core").$strip>;
886
826
  }, ActorsState, Record<never, never>>;
887
827
  //#endregion
888
828
  export { ATTACHMENTS_PER_MESSAGE_MAX, type Actor, ActorId, ActorKind, type ActorsState, Attachment, AttachmentId, Author, BOARD_SESSION, type BoardEvent, type BoardEvents, CHANNEL_PATH_MAX, type Channel, ChannelPath, type ChannelsState, Emoji, type ExternalAuthor, Handle, LabelKey, LabelValue, Labels, MESSAGE_TEXT_MAX, type Message, MessageId, MessageText, type MessagesState, Origin };
@@ -1,5 +1,5 @@
1
1
  import { n as DIRECT_UPLOAD_BYTES_MAX, r as IMPORT_BYTES_MAX, t as ATTACHMENT_BYTES_MAX } from "../files-SniSmeEr.mjs";
2
2
  import { a as AttachmentId, c as ChannelPath, d as LabelKey, f as LabelValue, g as MessageText, h as MessageId, i as Attachment, l as Emoji, m as MESSAGE_TEXT_MAX, n as ActorId, o as Author, p as Labels, r as ActorKind, s as CHANNEL_PATH_MAX, t as ATTACHMENTS_PER_MESSAGE_MAX, u as Handle } from "../schemas-DBmUO6pr.mjs";
3
3
  import { o as Origin } from "../external-D3p5T57R.mjs";
4
- import { _ as BOARD_SESSION, i as messagesReducer, l as boardContract, n as channelsReducer, t as actorsReducer } from "../reducers-DJzVpXwM.mjs";
4
+ import { g as BOARD_SESSION, l as boardContract, n as channelsReducer, r as messagesReducer, t as actorsReducer } from "../reducers-DcENwtwZ.mjs";
5
5
  export { ATTACHMENTS_PER_MESSAGE_MAX, ATTACHMENT_BYTES_MAX, ActorId, ActorKind, Attachment, AttachmentId, Author, BOARD_SESSION, CHANNEL_PATH_MAX, ChannelPath, DIRECT_UPLOAD_BYTES_MAX, Emoji, Handle, IMPORT_BYTES_MAX, LabelKey, LabelValue, Labels, MESSAGE_TEXT_MAX, MessageId, MessageText, Origin, actorsReducer, boardContract, channelsReducer, messagesReducer };
@@ -1,4 +1,4 @@
1
- import { t as A2Scheduler } from "../server-qgez0Xny-D5mLfqFQ.mjs";
1
+ import { t as A2Scheduler } from "../server-B9gu0qi1-DI1WvcVK.mjs";
2
2
  //#region src/scheduler/local.d.ts
3
3
  /**
4
4
  * A scheduler in this process (`@vercel/board/backend-a2/scheduler-local`): each task runs at its time on
@@ -1,2 +1,2 @@
1
- import { t as localScheduler } from "../local-DhkrAqPP.mjs";
1
+ import { t as localScheduler } from "../local-C76Fy5ad.mjs";
2
2
  export { localScheduler };
@@ -1,6 +1,6 @@
1
- import { n as Clock } from "../store-D0MhBvg6-4Z2L0Kqd.mjs";
2
- import { i as SchedulerTask, t as A2Scheduler } from "../server-qgez0Xny-D5mLfqFQ.mjs";
3
- //#region ../../node_modules/.pnpm/experimental-a2@0.22.0_@upstash+qstash@2.12.0_@vercel+queue@0.7.0_ai@7.0.130_zod@4.6.5__52060f00b21aecfab049c27fa3abd2f9/node_modules/experimental-a2/dist/scheduler-qstash.d.ts
1
+ import { n as Clock } from "../store-DEzcHZOA-B-5vhxef.mjs";
2
+ import { i as SchedulerTask, t as A2Scheduler } from "../server-B9gu0qi1-DI1WvcVK.mjs";
3
+ //#region ../../node_modules/.pnpm/experimental-a2@0.24.0_@upstash+qstash@2.12.0_@vercel+queue@0.7.0_ai@7.0.130_zod@4.6.5__b1e2c243a963f2620a5d202817417c26/node_modules/experimental-a2/dist/scheduler-qstash.d.ts
4
4
  //#region src/scheduler-qstash.d.ts
5
5
  type QStashStoreOutage = {
6
6
  version: 1;
@@ -1,11 +1,11 @@
1
- import { t as A2Error } from "../session-clear-wHd5GCpZ-BnKSxReK.mjs";
2
- import { i as deliverSchedulerClear, r as deliverSchedulerAppend } from "../server-DtFrWxi3-Boa6gdWO.mjs";
3
- import { _ as serverInternals, l as assertSchedulerTargets, t as DRAIN_TIMINGS, u as classifySchedulerSendFailure } from "../internal-CvsrprnU-CRY89I-b.mjs";
4
- import { n as platformVercelOidcToken } from "../platform-B4TnJtWu-CwcTyKg2.mjs";
5
- import { t as retryableLazy } from "../retryable-lazy-DZWmHpii-Bye-W8q7.mjs";
6
- import { n as SYSTEM_CLOCK } from "../store-N8PXxDAS-BWBgzBHp.mjs";
7
- import { t as normalizeSchedulerTask } from "../scheduler-task-X1SToDjP-BVoWuInI.mjs";
8
- //#region ../../node_modules/.pnpm/experimental-a2@0.22.0_@upstash+qstash@2.12.0_@vercel+queue@0.7.0_ai@7.0.130_zod@4.6.5__52060f00b21aecfab049c27fa3abd2f9/node_modules/experimental-a2/dist/scheduler-qstash.js
1
+ import { t as A2Error } from "../session-clear-XJYpmUpg-2q8l_FJR.mjs";
2
+ import { i as deliverSchedulerClear, r as deliverSchedulerAppend } from "../server-DX7mM6nm-D7N_7bug.mjs";
3
+ import { _ as serverInternals, l as assertSchedulerTargets, t as DRAIN_TIMINGS, u as classifySchedulerSendFailure } from "../internal-CvsrprnU-zZMpDiRY.mjs";
4
+ import { n as platformVercelOidcToken } from "../platform-B4TnJtWu-Do3agKr5.mjs";
5
+ import { t as retryableLazy } from "../retryable-lazy-DZWmHpii-DpTc5PIP.mjs";
6
+ import { n as SYSTEM_CLOCK } from "../store-N8PXxDAS-DWWgv-Vz.mjs";
7
+ import { t as normalizeSchedulerTask } from "../scheduler-task-X1SToDjP-D2Il2rln.mjs";
8
+ //#region ../../node_modules/.pnpm/experimental-a2@0.24.0_@upstash+qstash@2.12.0_@vercel+queue@0.7.0_ai@7.0.130_zod@4.6.5__b1e2c243a963f2620a5d202817417c26/node_modules/experimental-a2/dist/scheduler-qstash.js
9
9
  /**
10
10
  * experimental-a2/scheduler-qstash — HTTP scheduler over Upstash QStash.
11
11
  *
@@ -1,6 +1,6 @@
1
- import { n as Clock } from "../store-D0MhBvg6-4Z2L0Kqd.mjs";
2
- import { i as SchedulerTask, t as A2Scheduler } from "../server-qgez0Xny-D5mLfqFQ.mjs";
3
- //#region ../../node_modules/.pnpm/experimental-a2@0.22.0_@upstash+qstash@2.12.0_@vercel+queue@0.7.0_ai@7.0.130_zod@4.6.5__52060f00b21aecfab049c27fa3abd2f9/node_modules/experimental-a2/dist/scheduler-vercel.d.ts
1
+ import { n as Clock } from "../store-DEzcHZOA-B-5vhxef.mjs";
2
+ import { i as SchedulerTask, t as A2Scheduler } from "../server-B9gu0qi1-DI1WvcVK.mjs";
3
+ //#region ../../node_modules/.pnpm/experimental-a2@0.24.0_@upstash+qstash@2.12.0_@vercel+queue@0.7.0_ai@7.0.130_zod@4.6.5__b1e2c243a963f2620a5d202817417c26/node_modules/experimental-a2/dist/scheduler-vercel.d.ts
4
4
  type QueueDeliveryMetadata = {
5
5
  messageId: string;
6
6
  deliveryCount: number;
@@ -1,10 +1,10 @@
1
- import { i as deliverSchedulerClear, r as deliverSchedulerAppend } from "../server-DtFrWxi3-Boa6gdWO.mjs";
2
- import { _ as serverInternals, l as assertSchedulerTargets, t as DRAIN_TIMINGS, u as classifySchedulerSendFailure } from "../internal-CvsrprnU-CRY89I-b.mjs";
3
- import { t as retryableLazy } from "../retryable-lazy-DZWmHpii-Bye-W8q7.mjs";
4
- import { n as SYSTEM_CLOCK } from "../store-N8PXxDAS-BWBgzBHp.mjs";
5
- import { t as normalizeSchedulerTask } from "../scheduler-task-X1SToDjP-BVoWuInI.mjs";
1
+ import { i as deliverSchedulerClear, r as deliverSchedulerAppend } from "../server-DX7mM6nm-D7N_7bug.mjs";
2
+ import { _ as serverInternals, l as assertSchedulerTargets, t as DRAIN_TIMINGS, u as classifySchedulerSendFailure } from "../internal-CvsrprnU-zZMpDiRY.mjs";
3
+ import { t as retryableLazy } from "../retryable-lazy-DZWmHpii-DpTc5PIP.mjs";
4
+ import { n as SYSTEM_CLOCK } from "../store-N8PXxDAS-DWWgv-Vz.mjs";
5
+ import { t as normalizeSchedulerTask } from "../scheduler-task-X1SToDjP-D2Il2rln.mjs";
6
6
  import { createHash } from "node:crypto";
7
- //#region ../../node_modules/.pnpm/experimental-a2@0.22.0_@upstash+qstash@2.12.0_@vercel+queue@0.7.0_ai@7.0.130_zod@4.6.5__52060f00b21aecfab049c27fa3abd2f9/node_modules/experimental-a2/dist/scheduler-vercel.js
7
+ //#region ../../node_modules/.pnpm/experimental-a2@0.24.0_@upstash+qstash@2.12.0_@vercel+queue@0.7.0_ai@7.0.130_zod@4.6.5__b1e2c243a963f2620a5d202817417c26/node_modules/experimental-a2/dist/scheduler-vercel.js
8
8
  /**
9
9
  * experimental-a2/scheduler-vercel — queue-backed scheduler over Vercel Queues.
10
10
  *
@@ -1,5 +1,5 @@
1
- import { n as Clock } from "../store-D0MhBvg6-4Z2L0Kqd.mjs";
2
- import { t as BoardStore } from "../types-No0WdhE5.mjs";
1
+ import { n as Clock } from "../store-DEzcHZOA-B-5vhxef.mjs";
2
+ import { t as BoardStore } from "../types-CmrFjpml.mjs";
3
3
  //#region src/store/memory.d.ts
4
4
  /**
5
5
  * A board that lives in memory, for tests: its log in A2's memory store, its
@@ -1,6 +1,6 @@
1
- import { r as sqlTables } from "../sql-D4Z_efJX.mjs";
2
- import { t as sqliteDb } from "../sqlite-db-Bz2JkfCU.mjs";
3
- import { t as memory$1 } from "../store-memory-Bas9Uq5C.mjs";
1
+ import { r as sqlTables } from "../sql-CT5xVuGr.mjs";
2
+ import { t as sqliteDb } from "../sqlite-db-0WeSOEZN.mjs";
3
+ import { t as memory$1 } from "../store-memory-B0PkVSuQ.mjs";
4
4
  //#region src/store/memory.ts
5
5
  /**
6
6
  * A board that lives in memory, for tests: its log in A2's memory store, its
@@ -1,4 +1,4 @@
1
- import { t as BoardStore } from "../types-No0WdhE5.mjs";
1
+ import { t as BoardStore } from "../types-CmrFjpml.mjs";
2
2
  //#region src/store/postgres-db.d.ts
3
3
  /** What the tables need of a `pg` Pool, or of anything shaped like one. */
4
4
  type PgQueryable = {