@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,14 +1,14 @@
1
- import { n as CLEAR_EVENT_TYPE, o as sessionClearedError, s as supersededAttemptError, t as A2Error } from "../session-clear-wHd5GCpZ-BnKSxReK.mjs";
2
- import { m as nullProtoRecord, n as NOTIFY_TIMINGS } from "../internal-CvsrprnU-CRY89I-b.mjs";
3
- import { n as defaultSleep, r as pollingStream } from "../store-polling-BZt2Rf3D-BiEM6_HB.mjs";
4
- import { r as platformWaitUntil } from "../platform-B4TnJtWu-CwcTyKg2.mjs";
5
- import { t as retryableLazy } from "../retryable-lazy-DZWmHpii-Bye-W8q7.mjs";
6
- import { r as sqlTables } from "../sql-D4Z_efJX.mjs";
7
- import { a as idleLogCursor, i as idempotentReplay, n as decodeCause, r as decodeReturnedEventIds, t as cursorKeyOf } from "../store-codec-DwrWlgQx-CYxGW0aD.mjs";
8
- import { n as SYSTEM_CLOCK, t as RANDOM_IDS } from "../store-N8PXxDAS-BWBgzBHp.mjs";
9
- import { t as pollPresence } from "../store-presence-polling-JuAy2Ck2-CYpuK75X.mjs";
1
+ import { a as duplicateBatchError, c as sessionClearedError, l as supersededAttemptError, n as CLEAR_EVENT_TYPE, s as lastIndexMismatchError, t as A2Error } from "../session-clear-XJYpmUpg-2q8l_FJR.mjs";
2
+ import { m as nullProtoRecord, n as NOTIFY_TIMINGS } from "../internal-CvsrprnU-zZMpDiRY.mjs";
3
+ import { n as defaultSleep, r as pollingStream } from "../store-polling-BZt2Rf3D-Div-bJ_D.mjs";
4
+ import { r as platformWaitUntil } from "../platform-B4TnJtWu-Do3agKr5.mjs";
5
+ import { t as retryableLazy } from "../retryable-lazy-DZWmHpii-DpTc5PIP.mjs";
6
+ import { r as sqlTables } from "../sql-CT5xVuGr.mjs";
7
+ import { a as idleLogCursor, i as idempotentReplay, n as decodeCause, r as decodeReturnedEventIds, t as cursorKeyOf } from "../store-codec-pAG2oPgQ-SqDXlPBR.mjs";
8
+ import { n as SYSTEM_CLOCK, t as RANDOM_IDS } from "../store-N8PXxDAS-DWWgv-Vz.mjs";
9
+ import { t as pollPresence } from "../store-presence-polling-JuAy2Ck2-Dh-g_KYM.mjs";
10
10
  import { createHash } from "node:crypto";
11
- //#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/store-postgres.js
11
+ //#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/store-postgres.js
12
12
  const postgresNotificationChannel = ({ kind, sessionId }) => `a2_${kind}_${createHash("md5").update(sessionId).digest("hex")}`;
13
13
  function postgresNotifications(createConnection) {
14
14
  const channels = /* @__PURE__ */ new Map();
@@ -858,7 +858,8 @@ const INSERTED_AFTER = `(
858
858
  * every event's id belongs to this session already, the batch is a retry: it
859
859
  * stops with the committed rows. Some owned aborts, as does scheduled work
860
860
  * from at or below the clear marker (`origin`). Rows below the marker own no
861
- * id.
861
+ * id. Both id outcomes carry the head, which a conditional append's conflict
862
+ * reports when it moved.
862
863
  */
863
864
  const APPEND_CHECKS = `
864
865
  with boundary as materialized (
@@ -876,12 +877,12 @@ const APPEND_CHECKS = `
876
877
  )
877
878
  select case
878
879
  when (select count(*) from owned) = ${param.bigint("count")} then
879
- jsonb_build_object('stop', 'replay',
880
+ jsonb_build_object('stop', 'replay', 'head', boundary.base,
880
881
  'has_pending', boundary.has_pending,
881
882
  'events', (select jsonb_agg(to_jsonb(owned) order by owned.idx)
882
883
  from owned))
883
884
  when exists (select 1 from owned) then
884
- jsonb_build_object('abort', 'mixed', 'owned',
885
+ jsonb_build_object('abort', 'mixed', 'head', boundary.base, 'owned',
885
886
  (select count(*) from owned))
886
887
  when ${param.bigint("origin")} <= boundary.clear_index then
887
888
  jsonb_build_object('abort', 'cleared')
@@ -913,6 +914,15 @@ const FENCE = `
913
914
  from cause where cause.ord not in (select ord from held)
914
915
  order by cause.ord limit 1`;
915
916
  /**
917
+ * A conditional append's head check, under the session lock and after the
918
+ * fences: it aborts with the head unless the head is `ifLastIndex`.
919
+ */
920
+ const IF_LAST_INDEX = `
921
+ select jsonb_build_object('abort', 'moved', 'index', head.idx)
922
+ from (select coalesce(max(idx), 0) as idx from a2_events
923
+ where session_id = ${SESSION}) head
924
+ where head.idx <> ${param.bigint("ifLastIndex")}`;
925
+ /**
916
926
  * Frees the `ids` this session's rows below its clear marker hold, so the
917
927
  * batch can take them. It never waits on a row: a reclaim deleting one may
918
928
  * hold it, and one it skips aborts.
@@ -1876,12 +1886,19 @@ function postgres$1(options = {}) {
1876
1886
  const causes = [...new Map(events.flatMap((event) => event.cause ? [[jsonb(event.cause), event.cause]] : [])).values()];
1877
1887
  const work = enqueue(events, consumers);
1878
1888
  const originIndex = appendOptions?.originIndex;
1889
+ const ifLastIndex = appendOptions?.ifLastIndex;
1890
+ const conditionalAt = (head) => ifLastIndex === void 0 ? void 0 : {
1891
+ sessionId,
1892
+ ifLastIndex,
1893
+ head: asNumber(head)
1894
+ };
1879
1895
  const checked = (await run({
1880
1896
  sessionId,
1881
1897
  statements: [
1882
1898
  LOCK_SESSION,
1883
1899
  APPEND_CHECKS,
1884
1900
  causes.length > 0 && FENCE,
1901
+ ifLastIndex !== void 0 && IF_LAST_INDEX,
1885
1902
  suppliedIds.length > 0 && REUSE_IDS,
1886
1903
  INSERT_EVENTS,
1887
1904
  ...work.statements
@@ -1892,6 +1909,7 @@ function postgres$1(options = {}) {
1892
1909
  ids: suppliedIds,
1893
1910
  count: events.length,
1894
1911
  origin: originIndex ?? null,
1912
+ ifLastIndex: ifLastIndex ?? null,
1895
1913
  causes: causes.map((cause, offset) => ({
1896
1914
  ord: offset + 1,
1897
1915
  consumer: cause.consumer,
@@ -1906,17 +1924,18 @@ function postgres$1(options = {}) {
1906
1924
  switch (reason["abort"]) {
1907
1925
  case "mixed": {
1908
1926
  const owned = asNumber(reason["owned"]);
1909
- return new A2Error("PARTIAL_DUPLICATE_BATCH", `batch mixes ${owned} already-appended and ${events.length - owned} fresh events`);
1927
+ return duplicateBatchError(`batch mixes ${owned} already-appended and ${events.length - owned} fresh events`, conditionalAt(reason["head"]));
1910
1928
  }
1911
1929
  case "cleared": return sessionClearedError(`scheduled work from event ${originIndex} was cleared in session '${sessionId}'`);
1912
1930
  case "superseded": return supersededAttemptError(sessionId, causes[asNumber(reason["ord"]) - 1]);
1931
+ case "moved": return lastIndexMismatchError(sessionId, ifLastIndex, asNumber(reason["index"]));
1913
1932
  case "held": return new A2Error("STORE_UNAVAILABLE", `an event id being reused is still held by cleared work in session '${sessionId}'`);
1914
1933
  default: return new A2Error("STORE_UNAVAILABLE", "postgres store operation failed");
1915
1934
  }
1916
1935
  }
1917
1936
  })).find((row) => row["stop"] === "replay" || "base" in row);
1918
1937
  if (checked["stop"] === "replay") return {
1919
- events: idempotentReplay(events, checked["events"].map(toStored)),
1938
+ events: idempotentReplay(events, checked["events"].map(toStored), conditionalAt(checked["head"])),
1920
1939
  hasPending: checked["has_pending"] === true
1921
1940
  };
1922
1941
  return {
@@ -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/redis-http.d.ts
3
3
  export type RedisHttpOptions = {
4
4
  /** The REST endpoint, e.g. `process.env.UPSTASH_REDIS_REST_URL`. */
@@ -1,9 +1,9 @@
1
- import { t as A2Error } from "../session-clear-wHd5GCpZ-BnKSxReK.mjs";
2
- import { n as NOTIFY_TIMINGS } from "../internal-CvsrprnU-CRY89I-b.mjs";
3
- import { n as defaultSleep } from "../store-polling-BZt2Rf3D-BiEM6_HB.mjs";
4
- import { n as SYSTEM_CLOCK, t as RANDOM_IDS } from "../store-N8PXxDAS-BWBgzBHp.mjs";
5
- import { n as createRedisNotifyStore, t as redisTables } from "../redis-tables-BJQVUspu.mjs";
6
- //#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/store-redis-http.js
1
+ import { t as A2Error } from "../session-clear-XJYpmUpg-2q8l_FJR.mjs";
2
+ import { n as NOTIFY_TIMINGS } from "../internal-CvsrprnU-zZMpDiRY.mjs";
3
+ import { n as defaultSleep } from "../store-polling-BZt2Rf3D-Div-bJ_D.mjs";
4
+ import { n as SYSTEM_CLOCK, t as RANDOM_IDS } from "../store-N8PXxDAS-DWWgv-Vz.mjs";
5
+ import { n as createRedisNotifyStore, t as redisTables } from "../redis-tables-DHf85ixI.mjs";
6
+ //#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/store-redis-http.js
7
7
  function redisHttpSubscriptions({ url, token, onReconnect, fallback }) {
8
8
  const subscriptions = /* @__PURE__ */ new Map();
9
9
  const listeners = /* @__PURE__ */ new Set();
@@ -1,5 +1,5 @@
1
- import { t as BoardStore } from "../types-No0WdhE5.mjs";
2
- //#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/store-redis.d.ts
1
+ import { t as BoardStore } from "../types-CmrFjpml.mjs";
2
+ //#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/store-redis.d.ts
3
3
  //#region src/store-redis-notify.d.ts
4
4
  type RedisConnection = {
5
5
  call(command: string, ...args: Array<string | number>): Promise<unknown>;
@@ -1,8 +1,8 @@
1
- import { t as A2Error } from "../session-clear-wHd5GCpZ-BnKSxReK.mjs";
2
- import { t as retryableLazy } from "../retryable-lazy-DZWmHpii-Bye-W8q7.mjs";
3
- import { n as SYSTEM_CLOCK, t as RANDOM_IDS } from "../store-N8PXxDAS-BWBgzBHp.mjs";
4
- import { n as createRedisNotifyStore, t as redisTables } from "../redis-tables-BJQVUspu.mjs";
5
- //#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/store-redis.js
1
+ import { t as A2Error } from "../session-clear-XJYpmUpg-2q8l_FJR.mjs";
2
+ import { t as retryableLazy } from "../retryable-lazy-DZWmHpii-DpTc5PIP.mjs";
3
+ import { n as SYSTEM_CLOCK, t as RANDOM_IDS } from "../store-N8PXxDAS-DWWgv-Vz.mjs";
4
+ import { n as createRedisNotifyStore, t as redisTables } from "../redis-tables-DHf85ixI.mjs";
5
+ //#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/store-redis.js
6
6
  /**
7
7
  * experimental-a2/store-redis — the Redis-protocol store backend, on Redis
8
8
  * Streams. The storage semantics live in store-redis-core.ts (shared
@@ -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/sqlite.d.ts
3
3
  /**
4
4
  * A board in one SQLite file, A2's log and board's tables side by side: `a2()`'s
@@ -1,6 +1,6 @@
1
- import { r as sqlTables } from "../sql-D4Z_efJX.mjs";
2
- import { t as sqlite$1 } from "../store-sqlite-CxxPCcCT.mjs";
3
- import { t as sqliteDb } from "../sqlite-db-Bz2JkfCU.mjs";
1
+ import { r as sqlTables } from "../sql-CT5xVuGr.mjs";
2
+ import { t as sqlite$1 } from "../store-sqlite-D85t3tE7.mjs";
3
+ import { t as sqliteDb } from "../sqlite-db-0WeSOEZN.mjs";
4
4
  //#region src/store/sqlite.ts
5
5
  /**
6
6
  * A board in one SQLite file, A2's log and board's tables side by side: `a2()`'s