@vercel/board 0.20.0 → 0.21.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 (31) hide show
  1. package/README.md +0 -25
  2. package/dist/{a2-D__qQpe7.mjs → a2-BgNAyr_f.mjs} +1 -1
  3. package/dist/backend-a2.mjs +1 -1
  4. package/dist/{backend-http-CG5y03UP.mjs → backend-http-CLcXkcAU.mjs} +190 -140
  5. package/dist/backend-http-Dzb4lpMG.mjs +18 -0
  6. package/dist/backend-http.mjs +1 -1
  7. package/dist/backend-http.node.mjs +1 -1
  8. package/dist/backend-vercel-BjUpoLR9.mjs +60 -0
  9. package/dist/backend-vercel-CYOqtLPc.d.mts +656 -0
  10. package/dist/backend-vercel-DjL8tYIF.mjs +1314 -0
  11. package/dist/backend-vercel.d.mts +9 -0
  12. package/dist/backend-vercel.mjs +11 -0
  13. package/dist/backend-vercel.node.d.mts +12 -0
  14. package/dist/backend-vercel.node.mjs +2 -0
  15. package/dist/cli-embedded.d.mts +5 -5
  16. package/dist/cli-embedded.mjs +6 -5
  17. package/dist/cli.mjs +3 -3
  18. package/dist/{exports-DqWJ7nzC.mjs → exports-DIivm0je.mjs} +1 -1
  19. package/dist/{index.default-C3luVnd-.mjs → index.default-DNKzR4md.mjs} +1 -1
  20. package/dist/index.mjs +2 -2
  21. package/dist/index.node.mjs +1 -1
  22. package/dist/inspect/app.js +29 -29
  23. package/dist/{main-wB-VfTCL.mjs → main-BZ7nOIhV.mjs} +75 -508
  24. package/dist/{backend-http-c-VHpUOs.mjs → node-BeKPcokJ.mjs} +15 -17
  25. package/dist/{serve-AnApUWOR.mjs → serve-8zkBGMmb.mjs} +3 -3
  26. package/dist/{server-BqVickb5.mjs → server-Du0rSpcW.mjs} +2 -2
  27. package/dist/{watchers-hash-DYwvkhdX.mjs → watchers-hash-9sxfL1Gd.mjs} +1 -1
  28. package/docs/03-guides/01-coding-agents.md +0 -94
  29. package/docs/04-reference/01-cli.md +26 -23
  30. package/docs/index.md +1 -2
  31. package/package.json +6 -1
@@ -0,0 +1,656 @@
1
+ import { i as Attachment } from "./schemas-CWxs3ECJ.mjs";
2
+ import { t as Actor } from "./folds-CRYY14kc.mjs";
3
+ import { $ as Discovery, $t as SyncCodeView, Nt as RegistrationView, Tt as PersonView, Wt as SourceJoin, Z as ChannelView, _t as MatchView, bt as MessageView, ct as InboxEntry, fn as SyncedView, hn as ThreadsPage, ht as LinkedAccount, in as SyncFindView, lt as InboxItem, mn as ThreadView, ot as IdentityView, qt as SourceRead, tn as SyncCopiesView, tt as EventsPage, un as SyncThreadView, xn as UploadTicket, xt as MessagesPage, yt as Me, z as ProfileOption, zt as ScheduleView } from "./provider-D11Dfda0.mjs";
4
+ import { i as Caller, n as BackendRoute, r as BoardBinding } from "./backend-CWmd4UH-.mjs";
5
+ //#region src/server/backend-vercel.d.ts
6
+ type VercelOptions = {
7
+ /** The team whose board it is: its ID (`team_…`) or its slug. In Node, by default your deployment's, or `VERCEL_ORG_ID`. */
8
+ team?: string;
9
+ /** The board's ID. By default the team's board, which `GET /boards` names. */
10
+ board?: string;
11
+ /** Vercel's API, `https://api.vercel.com` by default. */
12
+ api?: string;
13
+ /**
14
+ * How requests reach the API, with credentials it takes. In Node it defaults to `VERCEL_TOKEN`,
15
+ * a deployment's OIDC token, or your `vercel login`. Elsewhere, pass one that sends them.
16
+ */
17
+ fetch?: typeof fetch;
18
+ };
19
+ /** What finds the API's credentials and the team, in the Node build. A browser has none. */
20
+ type VercelEnvironment = {
21
+ /** A fetch that adds the credentials. */
22
+ fetch(): typeof fetch;
23
+ /** The team, when the environment says which. */
24
+ team(): Promise<string | null>;
25
+ /** The profile the environment picks (`BOARD_AS`, or the coding agent it runs in), and that agent's session. */
26
+ profile(): {
27
+ profile: ProfileOption;
28
+ session: string | null;
29
+ };
30
+ };
31
+ /**
32
+ * Vercel's board for your team, in Vercel's API: this deployment keeps nothing and reads and writes
33
+ * it as itself, its people as themselves. Messages, threads, reactions, labels, and a channel's
34
+ * changes work; what the API keeps none of yet (schedules, files, watchers, sync) answers 501.
35
+ */
36
+ declare function createVercel(options: VercelOptions, environment: VercelEnvironment | null): {
37
+ discovery: (caller: Caller, input: {
38
+ [x: string]: never;
39
+ }, signal: AbortSignal) => Promise<Discovery>;
40
+ me: (caller: Caller, input: {
41
+ [x: string]: never;
42
+ }, signal: AbortSignal) => Promise<Me>;
43
+ channels: (caller: Caller, input: {
44
+ [x: string]: never;
45
+ }, signal: AbortSignal) => Promise<{
46
+ channels: ChannelView[];
47
+ cursor: string;
48
+ }>;
49
+ actors: (caller: Caller, input: {
50
+ [x: string]: never;
51
+ }, signal: AbortSignal) => Promise<{
52
+ actors: (Actor & {
53
+ person?: PersonView;
54
+ })[];
55
+ cursor: string;
56
+ }>;
57
+ identity: (caller: Caller, input: {
58
+ [x: string]: never;
59
+ }, signal: AbortSignal) => Promise<IdentityView>;
60
+ messages: (caller: Caller, input: {
61
+ channel?: string | undefined;
62
+ re?: string | undefined;
63
+ by?: string | undefined;
64
+ mentions?: string | undefined;
65
+ label?: (readonly [string, null] | readonly [string, string[]])[] | undefined;
66
+ from?: string | undefined;
67
+ text?: string | undefined;
68
+ after?: string | undefined;
69
+ before?: string | undefined;
70
+ limit?: number | undefined;
71
+ }, signal: AbortSignal) => Promise<MessagesPage>;
72
+ threads: (caller: Caller, input: {
73
+ channel?: string | undefined;
74
+ re?: string | undefined;
75
+ by?: string | undefined;
76
+ mentions?: string | undefined;
77
+ label?: (readonly [string, null] | readonly [string, string[]])[] | undefined;
78
+ from?: string | undefined;
79
+ text?: string | undefined;
80
+ after?: string | undefined;
81
+ limit?: number | undefined;
82
+ }, signal: AbortSignal) => Promise<ThreadsPage>;
83
+ message: (caller: Caller, input: {
84
+ id: string;
85
+ }, signal: AbortSignal) => Promise<ThreadView>;
86
+ post: (caller: Caller, input: {
87
+ channel?: string | undefined;
88
+ re?: string | undefined;
89
+ text: string;
90
+ labels?: Record<string, string> | undefined;
91
+ noSync?: boolean | undefined;
92
+ sync?: (string | {
93
+ target: string;
94
+ kind: "channel" | "thread";
95
+ })[] | undefined;
96
+ id?: string | undefined;
97
+ attachments?: string[] | undefined;
98
+ }, signal: AbortSignal) => Promise<{
99
+ message: MessageView;
100
+ unknownMentions?: string[];
101
+ }>;
102
+ posted: (caller: Caller, input: {
103
+ id: string;
104
+ }, signal: AbortSignal) => Promise<{
105
+ message: MessageView;
106
+ }>;
107
+ edit: (caller: Caller, input: {
108
+ id: string;
109
+ } & {
110
+ text: string;
111
+ }, signal: AbortSignal) => Promise<{
112
+ ok: true;
113
+ unknownMentions?: string[];
114
+ }>;
115
+ delete: (caller: Caller, input: {
116
+ id: string;
117
+ }, signal: AbortSignal) => Promise<{
118
+ ok: true;
119
+ }>;
120
+ react: (caller: Caller, input: {
121
+ id: string;
122
+ } & {
123
+ emoji: string;
124
+ remove?: boolean | undefined;
125
+ }, signal: AbortSignal) => Promise<{
126
+ ok: true;
127
+ }>;
128
+ label: (caller: Caller, input: {
129
+ id: string;
130
+ } & {
131
+ set?: Record<string, string> | undefined;
132
+ unset?: string[] | undefined;
133
+ }, signal: AbortSignal) => Promise<{
134
+ ok: true;
135
+ }>;
136
+ schedule: (caller: Caller, input: {
137
+ channel?: string | undefined;
138
+ re?: string | undefined;
139
+ text: string;
140
+ labels?: Record<string, string> | undefined;
141
+ noSync?: boolean | undefined;
142
+ attachments?: string[] | undefined;
143
+ in?: string | undefined;
144
+ at?: string | undefined;
145
+ every?: string | undefined;
146
+ until?: string | undefined;
147
+ for?: string | undefined;
148
+ times?: number | undefined;
149
+ }, signal: AbortSignal) => Promise<{
150
+ schedule: ScheduleView;
151
+ unknownMentions?: string[];
152
+ }>;
153
+ schedules: (caller: Caller, input: {
154
+ re?: string | undefined;
155
+ channel?: string | undefined;
156
+ by?: string | undefined;
157
+ all?: boolean | undefined;
158
+ }, signal: AbortSignal) => Promise<{
159
+ schedules: ScheduleView[];
160
+ }>;
161
+ cancelSchedule: (caller: Caller, input: {
162
+ id: string;
163
+ }, signal: AbortSignal) => Promise<{
164
+ schedule: ScheduleView;
165
+ canceled: boolean;
166
+ }>;
167
+ upload: (caller: Caller, input: {
168
+ data: Uint8Array;
169
+ name: string | null;
170
+ type: string | null;
171
+ }, signal: AbortSignal) => Promise<{
172
+ attachment: Attachment;
173
+ }>;
174
+ attachment: (caller: Caller, input: {
175
+ id: string;
176
+ }, signal: AbortSignal) => Promise<{
177
+ attachment: Attachment;
178
+ data: Uint8Array | ReadableStream<Uint8Array>;
179
+ }>;
180
+ uploadStart: (caller: Caller, input: {
181
+ name?: string | null | undefined;
182
+ type?: string | null | undefined;
183
+ size: number;
184
+ }, signal: AbortSignal) => Promise<UploadTicket>;
185
+ uploadFinish: (caller: Caller, input: {
186
+ id: string;
187
+ }, signal: AbortSignal) => Promise<{
188
+ attachment: Attachment;
189
+ }>;
190
+ watchers: (caller: Caller, input: {
191
+ [x: string]: never;
192
+ }, signal: AbortSignal) => Promise<{
193
+ watchers: RegistrationView[];
194
+ }>;
195
+ register: (caller: Caller, input: {
196
+ watch: Record<string, {
197
+ tail: string;
198
+ when: "enters" | "matches";
199
+ }>;
200
+ sync?: {
201
+ key: string;
202
+ platform: string;
203
+ signIn: boolean;
204
+ }[] | undefined;
205
+ url?: string | null | undefined;
206
+ path?: null | undefined;
207
+ branch?: null | undefined;
208
+ } | {
209
+ watch: Record<string, {
210
+ tail: string;
211
+ when: "enters" | "matches";
212
+ }>;
213
+ sync?: {
214
+ key: string;
215
+ platform: string;
216
+ signIn: boolean;
217
+ }[] | undefined;
218
+ url?: null | undefined;
219
+ path: string;
220
+ branch?: string | null | undefined;
221
+ }, signal: AbortSignal) => Promise<RegistrationView>;
222
+ matches: (caller: Caller, input: {
223
+ limit?: number | undefined;
224
+ wait?: number | undefined;
225
+ }, signal: AbortSignal) => Promise<{
226
+ matches: MatchView[];
227
+ }>;
228
+ ack: (caller: Caller, input: {
229
+ id: string;
230
+ } & {
231
+ lease: string;
232
+ error?: string | undefined;
233
+ skip?: boolean | undefined;
234
+ }, signal: AbortSignal) => Promise<{
235
+ ok: true;
236
+ }>;
237
+ events: (caller: Caller, input: {
238
+ channel?: string | undefined;
239
+ re?: string | undefined;
240
+ by?: string | undefined;
241
+ mentions?: string | undefined;
242
+ label?: (readonly [string, null] | readonly [string, string[]])[] | undefined;
243
+ from?: string | undefined;
244
+ text?: string | undefined;
245
+ after?: string | undefined;
246
+ wait?: number | undefined;
247
+ all?: boolean | undefined;
248
+ }, signal: AbortSignal) => Promise<EventsPage>;
249
+ typing: (caller: Caller, input: {
250
+ id: string;
251
+ } & {
252
+ status?: string | undefined;
253
+ }, signal: AbortSignal) => Promise<{
254
+ targets: string[];
255
+ }>;
256
+ readSource: (caller: Caller, input: {
257
+ key: string;
258
+ } & {
259
+ target: string;
260
+ limit?: number | undefined;
261
+ }, signal: AbortSignal) => Promise<SourceRead>;
262
+ joinSource: (caller: Caller, input: {
263
+ key: string;
264
+ } & {
265
+ target: string;
266
+ }, signal: AbortSignal) => Promise<SourceJoin>;
267
+ synced: (caller: Caller, input: {
268
+ id: string;
269
+ }, signal: AbortSignal) => Promise<SyncedView>;
270
+ linked: (caller: Caller, input: {
271
+ url: string;
272
+ }, signal: AbortSignal) => Promise<ThreadView>;
273
+ syncImport: (caller: Caller, input: {
274
+ author: {
275
+ id: string;
276
+ handle: string;
277
+ name: string;
278
+ isBot: boolean;
279
+ avatar: string | null;
280
+ };
281
+ from: string | null;
282
+ op: "post";
283
+ origin: {
284
+ channel?: string | undefined;
285
+ thread: string;
286
+ subthread: string | null;
287
+ message: string;
288
+ context: string | null;
289
+ } | null;
290
+ source?: {
291
+ key: string;
292
+ channel: string;
293
+ thread: string;
294
+ } | undefined;
295
+ channel?: string | undefined;
296
+ re?: string | undefined;
297
+ text: string;
298
+ labels?: Record<string, string> | undefined;
299
+ noSync?: boolean | undefined;
300
+ attachments?: string[] | undefined;
301
+ links?: {
302
+ url: string;
303
+ snapshot: {
304
+ author: string;
305
+ text: string;
306
+ createdAt: string | null;
307
+ files: {
308
+ name: string;
309
+ url: string | null;
310
+ }[];
311
+ } | null;
312
+ unavailable: string | null;
313
+ message: string | null;
314
+ }[] | undefined;
315
+ id?: string | undefined;
316
+ } | {
317
+ author: {
318
+ id: string;
319
+ handle: string;
320
+ name: string;
321
+ isBot: boolean;
322
+ avatar: string | null;
323
+ };
324
+ from: string | null;
325
+ origin?: {
326
+ thread: string;
327
+ message?: string | undefined;
328
+ } | undefined;
329
+ message?: string | undefined;
330
+ op: "edit";
331
+ text: string;
332
+ source?: {
333
+ key: string;
334
+ channel: string;
335
+ thread: string;
336
+ } | undefined;
337
+ } | {
338
+ author: {
339
+ id: string;
340
+ handle: string;
341
+ name: string;
342
+ isBot: boolean;
343
+ avatar: string | null;
344
+ };
345
+ from: string | null;
346
+ origin?: {
347
+ thread: string;
348
+ message?: string | undefined;
349
+ } | undefined;
350
+ message?: string | undefined;
351
+ op: "delete";
352
+ } | {
353
+ author: {
354
+ id: string;
355
+ handle: string;
356
+ name: string;
357
+ isBot: boolean;
358
+ avatar: string | null;
359
+ };
360
+ from: string | null;
361
+ origin?: {
362
+ thread: string;
363
+ message?: string | undefined;
364
+ } | undefined;
365
+ message?: string | undefined;
366
+ op: "react";
367
+ emoji: string;
368
+ remove?: boolean | undefined;
369
+ } | {
370
+ author: {
371
+ id: string;
372
+ handle: string;
373
+ name: string;
374
+ isBot: boolean;
375
+ avatar: string | null;
376
+ };
377
+ from: string | null;
378
+ origin?: {
379
+ thread: string;
380
+ message?: string | undefined;
381
+ } | undefined;
382
+ message?: string | undefined;
383
+ op: "labels";
384
+ set?: Record<string, string> | undefined;
385
+ unset?: string[] | undefined;
386
+ } | {
387
+ author: {
388
+ id: string;
389
+ handle: string;
390
+ name: string;
391
+ isBot: boolean;
392
+ avatar: string | null;
393
+ };
394
+ from: string | null;
395
+ origin?: {
396
+ thread: string;
397
+ message?: string | undefined;
398
+ } | undefined;
399
+ message?: string | undefined;
400
+ op: "links";
401
+ links: {
402
+ url: string;
403
+ snapshot: {
404
+ author: string;
405
+ text: string;
406
+ createdAt: string | null;
407
+ files: {
408
+ name: string;
409
+ url: string | null;
410
+ }[];
411
+ } | null;
412
+ unavailable: string | null;
413
+ message: string | null;
414
+ }[];
415
+ } | {
416
+ op: "seen";
417
+ author: {
418
+ id: string;
419
+ handle: string;
420
+ name: string;
421
+ isBot: boolean;
422
+ avatar: string | null;
423
+ };
424
+ }, signal: AbortSignal) => Promise<{
425
+ message: string | null;
426
+ dropped?: string[];
427
+ }>;
428
+ syncReceipt: (caller: Caller, input: {
429
+ kind: "message";
430
+ message: string;
431
+ target: string;
432
+ external: {
433
+ thread: string;
434
+ message: string;
435
+ asUser?: true | undefined;
436
+ };
437
+ files?: string[] | null | undefined;
438
+ } | {
439
+ kind: "files";
440
+ message: string;
441
+ target: string;
442
+ files: string[] | null;
443
+ } | {
444
+ kind: "failed";
445
+ message: string;
446
+ target: string;
447
+ error: string;
448
+ } | {
449
+ kind: "thread";
450
+ message: string;
451
+ target: string;
452
+ targetKind: "channel" | "thread";
453
+ cause: "config" | "request";
454
+ }, signal: AbortSignal) => Promise<{
455
+ ok: true;
456
+ attached?: boolean;
457
+ }>;
458
+ syncThread: (caller: Caller, input: {
459
+ thread: string;
460
+ }, signal: AbortSignal) => Promise<SyncThreadView>;
461
+ syncFind: (caller: Caller, input: {
462
+ code?: string | undefined;
463
+ post?: string | undefined;
464
+ thread?: string | undefined;
465
+ message?: string | undefined;
466
+ account?: string | undefined;
467
+ person?: string | undefined;
468
+ }, signal: AbortSignal) => Promise<SyncFindView>;
469
+ syncCopies: (caller: Caller, input: {
470
+ message: string[];
471
+ }, signal: AbortSignal) => Promise<SyncCopiesView>;
472
+ syncRoots: (caller: Caller, input: {
473
+ by: string;
474
+ since: number;
475
+ }, signal: AbortSignal) => Promise<{
476
+ roots: MessageView[];
477
+ }>;
478
+ inboxPush: (caller: Caller, input: {
479
+ key: string;
480
+ } & {
481
+ events: {
482
+ id: string;
483
+ event: {
484
+ channel: string;
485
+ thread: string;
486
+ subthread: string | null;
487
+ kind: "message";
488
+ message: string;
489
+ isRoot: boolean;
490
+ text: string;
491
+ context: string | null;
492
+ author: {
493
+ id: string;
494
+ handle: string;
495
+ name: string;
496
+ avatar: string | null;
497
+ isBot: boolean;
498
+ };
499
+ files?: {
500
+ type: "audio" | "file" | "image" | "video";
501
+ name?: string | undefined;
502
+ mimeType?: string | undefined;
503
+ size?: number | undefined;
504
+ url?: string | undefined;
505
+ fetchMetadata?: Record<string, string> | undefined;
506
+ }[] | undefined;
507
+ links?: {
508
+ url: string;
509
+ thread: string;
510
+ message: string;
511
+ snapshot: {
512
+ author: string;
513
+ text: string;
514
+ createdAt: string | null;
515
+ files: {
516
+ name: string;
517
+ url: string | null;
518
+ }[];
519
+ } | null;
520
+ }[] | undefined;
521
+ } | {
522
+ channel: string;
523
+ thread: string;
524
+ subthread: string | null;
525
+ kind: "edited";
526
+ message: string;
527
+ text: string;
528
+ author: {
529
+ id: string;
530
+ handle: string;
531
+ name: string;
532
+ avatar: string | null;
533
+ isBot: boolean;
534
+ };
535
+ links?: {
536
+ url: string;
537
+ thread: string;
538
+ message: string;
539
+ snapshot: {
540
+ author: string;
541
+ text: string;
542
+ createdAt: string | null;
543
+ files: {
544
+ name: string;
545
+ url: string | null;
546
+ }[];
547
+ } | null;
548
+ }[] | undefined;
549
+ linksOnly?: boolean | undefined;
550
+ } | {
551
+ channel: string;
552
+ thread: string;
553
+ subthread: string | null;
554
+ kind: "deleted";
555
+ message: string;
556
+ } | {
557
+ channel: string;
558
+ thread: string;
559
+ subthread: string | null;
560
+ kind: "reaction";
561
+ message: string;
562
+ emoji: string;
563
+ added: boolean;
564
+ author: {
565
+ id: string;
566
+ handle: string;
567
+ name: string;
568
+ avatar: string | null;
569
+ isBot: boolean;
570
+ };
571
+ } | {
572
+ channel: string;
573
+ thread: string;
574
+ kind: "lifecycle";
575
+ type: string;
576
+ title: string;
577
+ url: string | null;
578
+ labels: Record<string, string>;
579
+ unset: string[];
580
+ owns?: string[] | undefined;
581
+ reply: string | null;
582
+ createRoot: boolean;
583
+ retitled?: boolean | undefined;
584
+ author: {
585
+ id: string;
586
+ handle: string;
587
+ name: string;
588
+ avatar: string | null;
589
+ isBot: boolean;
590
+ };
591
+ };
592
+ raw: unknown;
593
+ }[];
594
+ }, signal: AbortSignal) => Promise<{
595
+ ok: true;
596
+ }>;
597
+ inboxNext: (caller: Caller, input: {
598
+ key: string;
599
+ } & {
600
+ limit?: number | undefined;
601
+ }, signal: AbortSignal) => Promise<{
602
+ items: InboxItem[];
603
+ }>;
604
+ inboxAck: (caller: Caller, input: {
605
+ key: string;
606
+ } & {
607
+ id: string;
608
+ } & {
609
+ lease: string;
610
+ error?: string | undefined;
611
+ }, signal: AbortSignal) => Promise<{
612
+ ok: true;
613
+ }>;
614
+ inbox: (caller: Caller, input: {
615
+ key: string;
616
+ } & {
617
+ channel?: string | undefined;
618
+ limit?: number | undefined;
619
+ }, signal: AbortSignal) => Promise<{
620
+ events: InboxEntry[];
621
+ }>;
622
+ syncCode: (caller: Caller, input: {
623
+ sync: string;
624
+ }, signal: AbortSignal) => Promise<SyncCodeView>;
625
+ syncAccount: (caller: Caller, input: {
626
+ sync: string;
627
+ account: {
628
+ id: string;
629
+ handle: string;
630
+ name: string;
631
+ isBot: boolean;
632
+ avatar: string | null;
633
+ };
634
+ code: string;
635
+ message?: string | undefined;
636
+ method?: "code" | "consent" | undefined;
637
+ }, signal: AbortSignal) => Promise<{
638
+ person: string;
639
+ link: LinkedAccount;
640
+ }>;
641
+ syncUnlink: (caller: Caller, input: {
642
+ account: string;
643
+ }, signal: AbortSignal) => Promise<{
644
+ ok: true;
645
+ }>;
646
+ routes: BackendRoute[];
647
+ keeps: boolean;
648
+ bind(next: BoardBinding): void;
649
+ /** Registers this board's watchers with Vercel's API now, as `POST /watchers` does. */
650
+ registerWatchers: () => Promise<RegistrationView>;
651
+ /** Stops pulling, for a board that pulls on its own. */
652
+ close: () => void;
653
+ };
654
+ type VercelBackend = ReturnType<typeof createVercel>;
655
+ //#endregion
656
+ export { VercelOptions as n, VercelBackend as t };