experimental-a2 0.20.0 → 0.22.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 (309) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +1 -1
  3. package/dist/{actor-C7b-1arn.d.ts → actor-CqibLgjQ.d.ts} +15 -7
  4. package/dist/actor-CqibLgjQ.d.ts.map +1 -0
  5. package/dist/actor-client.d.ts +1 -1
  6. package/dist/actor-client.js +2 -2
  7. package/dist/actor-react.d.ts +3 -3
  8. package/dist/actor-react.js +5 -5
  9. package/dist/{actor-shared-t7w8xIKP.js → actor-shared-DFET5q16.js} +3 -3
  10. package/dist/actor-shared-DFET5q16.js.map +1 -0
  11. package/dist/actor.d.ts +1 -1
  12. package/dist/actor.js +54 -43
  13. package/dist/actor.js.map +1 -1
  14. package/dist/{ai-Cz3hqVhk.d.ts → ai-DAu77CDr.d.ts} +8 -8
  15. package/dist/{ai-Cz3hqVhk.d.ts.map → ai-DAu77CDr.d.ts.map} +1 -1
  16. package/dist/{ai-mMiWul1T.js → ai-EEfKyc-z.js} +9 -9
  17. package/dist/ai-EEfKyc-z.js.map +1 -0
  18. package/dist/ai-client.d.ts +2 -2
  19. package/dist/ai-client.js +2 -2
  20. package/dist/ai-fx.d.ts +4 -2
  21. package/dist/ai-fx.d.ts.map +1 -1
  22. package/dist/ai-fx.js +214 -67
  23. package/dist/ai-fx.js.map +1 -1
  24. package/dist/{ai-harness-CV6rXbB3.d.ts → ai-harness-DTjkAr2T.d.ts} +2 -2
  25. package/dist/{ai-harness-CV6rXbB3.d.ts.map → ai-harness-DTjkAr2T.d.ts.map} +1 -1
  26. package/dist/{ai-harness-Clbg5ei7.js → ai-harness-dQeJaR1t.js} +7 -3
  27. package/dist/ai-harness-dQeJaR1t.js.map +1 -0
  28. package/dist/ai-pi.d.ts +1 -1
  29. package/dist/ai-pi.js +3 -3
  30. package/dist/ai-pi.js.map +1 -1
  31. package/dist/ai-react.d.ts +5 -5
  32. package/dist/ai-react.js +2 -2
  33. package/dist/ai-server.d.ts +14 -17
  34. package/dist/ai-server.d.ts.map +1 -1
  35. package/dist/ai-server.js +86 -73
  36. package/dist/ai-server.js.map +1 -1
  37. package/dist/ai.d.ts +2 -2
  38. package/dist/ai.js +2 -2
  39. package/dist/{client-BhHLoNKF.js → client-BQS4i_V9.js} +29 -6
  40. package/dist/client-BQS4i_V9.js.map +1 -0
  41. package/dist/{client-h_DKFAjj.d.ts → client-CUMbS_38.d.ts} +3 -3
  42. package/dist/{client-h_DKFAjj.d.ts.map → client-CUMbS_38.d.ts.map} +1 -1
  43. package/dist/client.d.ts +3 -3
  44. package/dist/client.js +1 -1
  45. package/dist/{contract-BYKASlCV.js → contract-CWukt01d.js} +2 -2
  46. package/dist/contract-CWukt01d.js.map +1 -0
  47. package/dist/index.d.ts +5 -5
  48. package/dist/index.js +3 -3
  49. package/dist/{initial-snapshot-Bx-c0pDP.d.ts → initial-snapshot-D3Lve43o.d.ts} +4 -4
  50. package/dist/initial-snapshot-D3Lve43o.d.ts.map +1 -0
  51. package/dist/{internal-CscSY7K_.js → internal-CvsrprnU.js} +40 -16
  52. package/dist/internal-CvsrprnU.js.map +1 -0
  53. package/dist/otel.d.ts +1 -1
  54. package/dist/otel.js +1 -1
  55. package/dist/otel.js.map +1 -1
  56. package/dist/{react-BBXgHWFc.d.ts → react-BoHvC3v9.d.ts} +4 -4
  57. package/dist/{react-BBXgHWFc.d.ts.map → react-BoHvC3v9.d.ts.map} +1 -1
  58. package/dist/react.d.ts +1 -1
  59. package/dist/react.js +1 -1
  60. package/dist/{reducer-CqA59Q6U.d.ts → reducer-CYPHsSmd.d.ts} +2 -2
  61. package/dist/{reducer-CqA59Q6U.d.ts.map → reducer-CYPHsSmd.d.ts.map} +1 -1
  62. package/dist/{reducer-BAXc8JyF.js → reducer-CjmvZSAb.js} +2 -2
  63. package/dist/{reducer-BAXc8JyF.js.map → reducer-CjmvZSAb.js.map} +1 -1
  64. package/dist/runtime-consumer-CIeL33wj.js +12 -0
  65. package/dist/runtime-consumer-CIeL33wj.js.map +1 -0
  66. package/dist/scheduler-qstash.d.ts +2 -2
  67. package/dist/scheduler-qstash.js +3 -3
  68. package/dist/scheduler-task-X1SToDjP.js.map +1 -1
  69. package/dist/scheduler-vercel.d.ts +2 -2
  70. package/dist/scheduler-vercel.js +3 -3
  71. package/dist/scheduler-vercel.js.map +1 -1
  72. package/dist/{server-qyb5aJJG.js → server-DtFrWxi3.js} +412 -116
  73. package/dist/server-DtFrWxi3.js.map +1 -0
  74. package/dist/{server-DYAATFuT.d.ts → server-qgez0Xny.d.ts} +108 -41
  75. package/dist/server-qgez0Xny.d.ts.map +1 -0
  76. package/dist/server.browser.js +1 -1
  77. package/dist/server.browser.js.map +1 -1
  78. package/dist/server.d.ts +4 -4
  79. package/dist/server.js +2 -2
  80. package/dist/{session-clear-C-QwTXV1.d.ts → session-clear-D1PFe7xl.d.ts} +2 -2
  81. package/dist/session-clear-D1PFe7xl.d.ts.map +1 -0
  82. package/dist/{session-clear-DGI4jTQ5.js → session-clear-wHd5GCpZ.js} +5 -4
  83. package/dist/session-clear-wHd5GCpZ.js.map +1 -0
  84. package/dist/store-D0MhBvg6.d.ts +532 -0
  85. package/dist/store-D0MhBvg6.d.ts.map +1 -0
  86. package/dist/store-N8PXxDAS.js.map +1 -1
  87. package/dist/store-codec-DwrWlgQx.js +65 -0
  88. package/dist/store-codec-DwrWlgQx.js.map +1 -0
  89. package/dist/store-memory.d.ts +1 -1
  90. package/dist/store-memory.d.ts.map +1 -1
  91. package/dist/store-memory.js +406 -225
  92. package/dist/store-memory.js.map +1 -1
  93. package/dist/{store-polling-7WJV0YWP.js → store-polling-BZt2Rf3D.js} +2 -2
  94. package/dist/{store-polling-7WJV0YWP.js.map → store-polling-BZt2Rf3D.js.map} +1 -1
  95. package/dist/store-postgres.d.ts +1 -1
  96. package/dist/store-postgres.d.ts.map +1 -1
  97. package/dist/store-postgres.js +1598 -587
  98. package/dist/store-postgres.js.map +1 -1
  99. package/dist/store-presence-polling-JuAy2Ck2.js +111 -0
  100. package/dist/store-presence-polling-JuAy2Ck2.js.map +1 -0
  101. package/dist/store-redis-http.d.ts +1 -1
  102. package/dist/store-redis-http.js +4 -4
  103. package/dist/store-redis-notify-CsJw_hfD.js +3060 -0
  104. package/dist/store-redis-notify-CsJw_hfD.js.map +1 -0
  105. package/dist/store-redis.d.ts +1 -1
  106. package/dist/store-redis.d.ts.map +1 -1
  107. package/dist/store-redis.js +4 -5
  108. package/dist/store-redis.js.map +1 -1
  109. package/dist/store-sqlite.d.ts +1 -1
  110. package/dist/store-sqlite.d.ts.map +1 -1
  111. package/dist/store-sqlite.js +527 -299
  112. package/dist/store-sqlite.js.map +1 -1
  113. package/dist/stream-buffer-DrTyiIuo.js +57 -0
  114. package/dist/stream-buffer-DrTyiIuo.js.map +1 -0
  115. package/dist/{telemetry-Cyfqo6Qt.d.ts → telemetry-CWwsh-Gx.d.ts} +3 -3
  116. package/dist/telemetry-CWwsh-Gx.d.ts.map +1 -0
  117. package/dist/{wire-BKxH1vbP.js → wire-CV-Z7wz-.js} +6 -5
  118. package/dist/wire-CV-Z7wz-.js.map +1 -0
  119. package/docs/01-quickstart.mdx +21 -15
  120. package/docs/02-examples.mdx +1 -1
  121. package/docs/actors/01-introduction.mdx +13 -2
  122. package/docs/actors/02-concurrency.mdx +1 -1
  123. package/docs/agents/01-introduction.mdx +1 -1
  124. package/docs/agents/02-tools.mdx +12 -11
  125. package/docs/agents/03-conversations.mdx +36 -25
  126. package/docs/agents/04-harnesses.mdx +14 -7
  127. package/docs/client/03-presence.mdx +18 -14
  128. package/docs/contract/01-events.mdx +2 -2
  129. package/docs/contract/02-state.mdx +18 -14
  130. package/docs/contract/03-sessions.mdx +32 -25
  131. package/docs/index.mdx +29 -24
  132. package/docs/reference/01-core.mdx +7 -6
  133. package/docs/reference/02-server.mdx +250 -191
  134. package/docs/reference/04-ai.mdx +33 -23
  135. package/docs/reference/05-telemetry.mdx +27 -13
  136. package/docs/reference/06-errors.mdx +25 -19
  137. package/docs/reference/meta.ts +1 -1
  138. package/docs/schedulers/01-overview.mdx +8 -8
  139. package/docs/schedulers/02-vercel-queues.mdx +2 -2
  140. package/docs/schedulers/03-qstash.mdx +4 -4
  141. package/docs/server/01-consumers.mdx +418 -0
  142. package/docs/server/02-timers.mdx +31 -21
  143. package/docs/server/03-cancellation.mdx +52 -44
  144. package/docs/server/04-routes.mdx +4 -1
  145. package/docs/server/05-sql-projections.mdx +391 -0
  146. package/docs/server/06-guarantees.mdx +61 -51
  147. package/docs/stores/01-overview.mdx +3 -3
  148. package/docs/stores/02-redis.mdx +24 -10
  149. package/docs/stores/03-redis-http.mdx +8 -6
  150. package/docs/stores/04-postgres.mdx +65 -14
  151. package/docs/stores/05-sqlite.mdx +5 -3
  152. package/docs/upgrades/01-overview.mdx +31 -0
  153. package/docs/upgrades/78-0-22.mdx +115 -0
  154. package/docs/upgrades/79-0-21.mdx +165 -0
  155. package/docs/upgrades/80-0-20.mdx +43 -0
  156. package/docs/upgrades/81-0-19.mdx +33 -0
  157. package/docs/upgrades/82-0-18.mdx +33 -0
  158. package/docs/upgrades/83-0-17.mdx +69 -0
  159. package/docs/upgrades/meta.ts +3 -0
  160. package/examples/playground/DEPLOY.md +39 -7
  161. package/examples/playground/app/a0/chat.test.tsx +2 -2
  162. package/examples/playground/app/a0/sandbox-log.ts +17 -15
  163. package/examples/playground/app/a0/sandbox.ts +58 -13
  164. package/examples/playground/app/a0/server.ts +4 -4
  165. package/examples/playground/app/a2slack/a2slack.css +1067 -0
  166. package/examples/playground/app/a2slack/c/[channel]/page.tsx +20 -0
  167. package/examples/playground/app/a2slack/consumers/agent.ts +63 -0
  168. package/examples/playground/app/a2slack/consumers/feed.ts +164 -0
  169. package/examples/playground/app/a2slack/consumers/notify.ts +116 -0
  170. package/examples/playground/app/a2slack/consumers/search.ts +37 -0
  171. package/examples/playground/app/a2slack/consumers/triage.ts +31 -0
  172. package/examples/playground/app/a2slack/consumers/welcome.ts +25 -0
  173. package/examples/playground/app/a2slack/db/a2.ts +209 -0
  174. package/examples/playground/app/a2slack/db/index.ts +73 -0
  175. package/examples/playground/app/a2slack/db/migrations/0000_extensions.sql +4 -0
  176. package/examples/playground/app/a2slack/db/migrations/0001_workspace.sql +74 -0
  177. package/examples/playground/app/a2slack/db/migrations/0002_a2.sql +215 -0
  178. package/examples/playground/app/a2slack/db/migrations/0003_a2_batch.sql +67 -0
  179. package/examples/playground/app/a2slack/db/migrations/0004_a2_session_event_ids.sql +2 -0
  180. package/examples/playground/app/a2slack/db/migrations/meta/0000_snapshot.json +18 -0
  181. package/examples/playground/app/a2slack/db/migrations/meta/0001_snapshot.json +500 -0
  182. package/examples/playground/app/a2slack/db/migrations/meta/0002_snapshot.json +1159 -0
  183. package/examples/playground/app/a2slack/db/migrations/meta/0003_snapshot.json +1159 -0
  184. package/examples/playground/app/a2slack/db/migrations/meta/0004_snapshot.json +1165 -0
  185. package/examples/playground/app/a2slack/db/migrations/meta/_journal.json +41 -0
  186. package/examples/playground/app/a2slack/db/queries.ts +263 -0
  187. package/examples/playground/app/a2slack/db/schema.ts +145 -0
  188. package/examples/playground/app/a2slack/drills/a2slack.drill.ts +708 -0
  189. package/examples/playground/app/a2slack/drills/harness.ts +244 -0
  190. package/examples/playground/app/a2slack/events/route.ts +36 -0
  191. package/examples/playground/app/a2slack/identity.ts +44 -0
  192. package/examples/playground/app/a2slack/inbox/route.ts +8 -0
  193. package/examples/playground/app/a2slack/lag/data/route.ts +8 -0
  194. package/examples/playground/app/a2slack/lag/page.tsx +101 -0
  195. package/examples/playground/app/a2slack/lag.ts +73 -0
  196. package/examples/playground/app/a2slack/layout.tsx +43 -0
  197. package/examples/playground/app/a2slack/messages/route.ts +17 -0
  198. package/examples/playground/app/a2slack/model.test.ts +208 -0
  199. package/examples/playground/app/a2slack/model.ts +369 -0
  200. package/examples/playground/app/a2slack/models.test.ts +72 -0
  201. package/examples/playground/app/a2slack/page.tsx +10 -0
  202. package/examples/playground/app/a2slack/scheduler/route.ts +5 -0
  203. package/examples/playground/app/a2slack/search/route.ts +40 -0
  204. package/examples/playground/app/a2slack/search-index.ts +108 -0
  205. package/examples/playground/app/a2slack/server.test.ts +315 -0
  206. package/examples/playground/app/a2slack/server.ts +55 -0
  207. package/examples/playground/app/a2slack/sessions.ts +50 -0
  208. package/examples/playground/app/a2slack/thread/route.ts +8 -0
  209. package/examples/playground/app/a2slack/ui/ChannelView.tsx +87 -0
  210. package/examples/playground/app/a2slack/ui/Composer.tsx +117 -0
  211. package/examples/playground/app/a2slack/ui/DotsShadow.tsx +42 -0
  212. package/examples/playground/app/a2slack/ui/Feed.tsx +157 -0
  213. package/examples/playground/app/a2slack/ui/InboxContext.tsx +63 -0
  214. package/examples/playground/app/a2slack/ui/InboxView.tsx +82 -0
  215. package/examples/playground/app/a2slack/ui/Menu.tsx +128 -0
  216. package/examples/playground/app/a2slack/ui/MessageRow.tsx +314 -0
  217. package/examples/playground/app/a2slack/ui/NameGate.tsx +35 -0
  218. package/examples/playground/app/a2slack/ui/SearchContext.tsx +146 -0
  219. package/examples/playground/app/a2slack/ui/SearchResults.tsx +97 -0
  220. package/examples/playground/app/a2slack/ui/Shell.tsx +34 -0
  221. package/examples/playground/app/a2slack/ui/Sidebar.tsx +199 -0
  222. package/examples/playground/app/a2slack/ui/ThreadPanel.tsx +134 -0
  223. package/examples/playground/app/a2slack/ui/useInbox.ts +71 -0
  224. package/examples/playground/app/agent/server.ts +3 -3
  225. package/examples/playground/app/chat/[chatId]/chat-client.tsx +1 -1
  226. package/examples/playground/app/chat/server.ts +45 -35
  227. package/examples/playground/app/components/demo-icons.tsx +7 -0
  228. package/examples/playground/app/components/demos.tsx +7 -0
  229. package/examples/playground/app/orders/[orderId]/order-client.tsx +2 -2
  230. package/examples/playground/app/orders/page.tsx +1 -1
  231. package/examples/playground/app/orders/server.ts +49 -30
  232. package/examples/playground/app/recovery/[recoveryId]/recovery-client.tsx +14 -15
  233. package/examples/playground/app/recovery/page.tsx +4 -4
  234. package/examples/playground/app/recovery/server.ts +23 -32
  235. package/examples/playground/drizzle.config.ts +14 -0
  236. package/examples/playground/lib/store.ts +1 -1
  237. package/examples/playground/next.config.ts +6 -1
  238. package/examples/playground/package.json +12 -1
  239. package/examples/playground/scripts/migrate.mjs +31 -0
  240. package/examples/playground/vercel.json +9 -0
  241. package/examples/playground/vitest.drills.config.ts +32 -0
  242. package/package.json +5 -2
  243. package/sql/postgres/drizzle-schema.ts +209 -0
  244. package/sql/postgres/schema.sql +227 -67
  245. package/src/actor-shared.ts +10 -2
  246. package/src/actor.ts +101 -71
  247. package/src/ai-agent.ts +162 -111
  248. package/src/ai-control-server.ts +8 -8
  249. package/src/ai-fx.ts +324 -82
  250. package/src/ai-harness.ts +17 -2
  251. package/src/ai-pi.ts +2 -2
  252. package/src/ai-server.ts +2 -2
  253. package/src/ai.ts +7 -7
  254. package/src/client.ts +19 -2
  255. package/src/contract.ts +1 -1
  256. package/src/deterministic-id.ts +27 -4
  257. package/src/errors.ts +8 -5
  258. package/src/idempotent-replay.ts +0 -1
  259. package/src/index.ts +1 -1
  260. package/src/internal.ts +57 -16
  261. package/src/otel.ts +1 -1
  262. package/src/postgres-schema.ts +98 -57
  263. package/src/presence-recovery.ts +18 -11
  264. package/src/presence-tombstones.ts +52 -0
  265. package/src/push-envelope.ts +20 -0
  266. package/src/runtime-consumer.ts +10 -0
  267. package/src/scheduler-task.ts +2 -2
  268. package/src/scheduler-vercel.ts +1 -1
  269. package/src/server.browser.ts +1 -1
  270. package/src/server.ts +819 -218
  271. package/src/session-socket.ts +1 -1
  272. package/src/store-codec.ts +66 -0
  273. package/src/store-memory.ts +604 -286
  274. package/src/store-postgres.ts +2006 -857
  275. package/src/store-presence-polling.ts +59 -34
  276. package/src/store-redis-core.ts +1961 -1333
  277. package/src/store-redis-notify.ts +76 -26
  278. package/src/store-redis.ts +2 -3
  279. package/src/store-sqlite.ts +915 -516
  280. package/src/store.ts +241 -102
  281. package/src/telemetry.ts +2 -1
  282. package/src/wire.ts +1 -0
  283. package/dist/actor-C7b-1arn.d.ts.map +0 -1
  284. package/dist/actor-shared-t7w8xIKP.js.map +0 -1
  285. package/dist/ai-harness-Clbg5ei7.js.map +0 -1
  286. package/dist/ai-mMiWul1T.js.map +0 -1
  287. package/dist/client-BhHLoNKF.js.map +0 -1
  288. package/dist/contract-BYKASlCV.js.map +0 -1
  289. package/dist/idempotent-replay-JdgMQRRm.js +0 -21
  290. package/dist/idempotent-replay-JdgMQRRm.js.map +0 -1
  291. package/dist/initial-snapshot-Bx-c0pDP.d.ts.map +0 -1
  292. package/dist/internal-CscSY7K_.js.map +0 -1
  293. package/dist/server-DYAATFuT.d.ts.map +0 -1
  294. package/dist/server-qyb5aJJG.js.map +0 -1
  295. package/dist/session-clear-C-QwTXV1.d.ts.map +0 -1
  296. package/dist/session-clear-DGI4jTQ5.js.map +0 -1
  297. package/dist/store-CyLUy86v.d.ts +0 -404
  298. package/dist/store-CyLUy86v.d.ts.map +0 -1
  299. package/dist/store-codec-DTG0Ftek.js +0 -10
  300. package/dist/store-codec-DTG0Ftek.js.map +0 -1
  301. package/dist/store-presence-polling-B1ixeqIS.js +0 -94
  302. package/dist/store-presence-polling-B1ixeqIS.js.map +0 -1
  303. package/dist/store-redis-notify-CM0AfLY0.js +0 -2544
  304. package/dist/store-redis-notify-CM0AfLY0.js.map +0 -1
  305. package/dist/stream-buffer-Cx7AAPGq.js +0 -23
  306. package/dist/stream-buffer-Cx7AAPGq.js.map +0 -1
  307. package/dist/telemetry-Cyfqo6Qt.d.ts.map +0 -1
  308. package/dist/wire-BKxH1vbP.js.map +0 -1
  309. package/docs/server/01-handlers.mdx +0 -227
@@ -0,0 +1,1159 @@
1
+ {
2
+ "id": "6fcfed5f-ce39-4f83-9b8e-adc62cf8d924",
3
+ "prevId": "bb6f2ec6-ee50-461b-84f7-5ac055a77726",
4
+ "version": "7",
5
+ "dialect": "postgresql",
6
+ "tables": {
7
+ "public.a2slack_channels": {
8
+ "name": "a2slack_channels",
9
+ "schema": "",
10
+ "columns": {
11
+ "id": {
12
+ "name": "id",
13
+ "type": "text",
14
+ "primaryKey": true,
15
+ "notNull": true
16
+ },
17
+ "created_by_name": {
18
+ "name": "created_by_name",
19
+ "type": "text",
20
+ "primaryKey": false,
21
+ "notNull": true
22
+ },
23
+ "created_at": {
24
+ "name": "created_at",
25
+ "type": "timestamp with time zone",
26
+ "primaryKey": false,
27
+ "notNull": true
28
+ },
29
+ "log_index": {
30
+ "name": "log_index",
31
+ "type": "bigint",
32
+ "primaryKey": false,
33
+ "notNull": true
34
+ }
35
+ },
36
+ "indexes": {},
37
+ "foreignKeys": {},
38
+ "compositePrimaryKeys": {},
39
+ "uniqueConstraints": {},
40
+ "policies": {},
41
+ "checkConstraints": {},
42
+ "isRLSEnabled": false
43
+ },
44
+ "public.a2slack_messages": {
45
+ "name": "a2slack_messages",
46
+ "schema": "",
47
+ "columns": {
48
+ "id": {
49
+ "name": "id",
50
+ "type": "text",
51
+ "primaryKey": true,
52
+ "notNull": true
53
+ },
54
+ "channel": {
55
+ "name": "channel",
56
+ "type": "text",
57
+ "primaryKey": false,
58
+ "notNull": true
59
+ },
60
+ "log_index": {
61
+ "name": "log_index",
62
+ "type": "bigint",
63
+ "primaryKey": false,
64
+ "notNull": true
65
+ },
66
+ "thread_id": {
67
+ "name": "thread_id",
68
+ "type": "text",
69
+ "primaryKey": false,
70
+ "notNull": false
71
+ },
72
+ "author_id": {
73
+ "name": "author_id",
74
+ "type": "text",
75
+ "primaryKey": false,
76
+ "notNull": true
77
+ },
78
+ "author_name": {
79
+ "name": "author_name",
80
+ "type": "text",
81
+ "primaryKey": false,
82
+ "notNull": true
83
+ },
84
+ "text": {
85
+ "name": "text",
86
+ "type": "text",
87
+ "primaryKey": false,
88
+ "notNull": true
89
+ },
90
+ "posted_at": {
91
+ "name": "posted_at",
92
+ "type": "timestamp with time zone",
93
+ "primaryKey": false,
94
+ "notNull": true
95
+ },
96
+ "edited_at": {
97
+ "name": "edited_at",
98
+ "type": "timestamp with time zone",
99
+ "primaryKey": false,
100
+ "notNull": false
101
+ },
102
+ "deleted": {
103
+ "name": "deleted",
104
+ "type": "boolean",
105
+ "primaryKey": false,
106
+ "notNull": true,
107
+ "default": false
108
+ },
109
+ "label": {
110
+ "name": "label",
111
+ "type": "text",
112
+ "primaryKey": false,
113
+ "notNull": false
114
+ }
115
+ },
116
+ "indexes": {
117
+ "a2slack_messages_feed": {
118
+ "name": "a2slack_messages_feed",
119
+ "columns": [
120
+ {
121
+ "expression": "channel",
122
+ "isExpression": false,
123
+ "asc": true,
124
+ "nulls": "last"
125
+ },
126
+ {
127
+ "expression": "thread_id",
128
+ "isExpression": false,
129
+ "asc": true,
130
+ "nulls": "last"
131
+ },
132
+ {
133
+ "expression": "log_index",
134
+ "isExpression": false,
135
+ "asc": true,
136
+ "nulls": "last"
137
+ }
138
+ ],
139
+ "isUnique": false,
140
+ "with": {},
141
+ "method": "btree",
142
+ "concurrently": false
143
+ },
144
+ "a2slack_messages_thread": {
145
+ "name": "a2slack_messages_thread",
146
+ "columns": [
147
+ {
148
+ "expression": "thread_id",
149
+ "isExpression": false,
150
+ "asc": true,
151
+ "nulls": "last"
152
+ },
153
+ {
154
+ "expression": "log_index",
155
+ "isExpression": false,
156
+ "asc": true,
157
+ "nulls": "last"
158
+ }
159
+ ],
160
+ "isUnique": false,
161
+ "with": {},
162
+ "method": "btree",
163
+ "concurrently": false
164
+ },
165
+ "a2slack_messages_text_trgm": {
166
+ "name": "a2slack_messages_text_trgm",
167
+ "columns": [
168
+ {
169
+ "expression": "text",
170
+ "isExpression": false,
171
+ "asc": true,
172
+ "nulls": "last",
173
+ "opclass": "gin_trgm_ops"
174
+ }
175
+ ],
176
+ "isUnique": false,
177
+ "with": {},
178
+ "method": "gin",
179
+ "concurrently": false
180
+ }
181
+ },
182
+ "foreignKeys": {},
183
+ "compositePrimaryKeys": {},
184
+ "uniqueConstraints": {},
185
+ "policies": {},
186
+ "checkConstraints": {},
187
+ "isRLSEnabled": false
188
+ },
189
+ "public.a2slack_notifications": {
190
+ "name": "a2slack_notifications",
191
+ "schema": "",
192
+ "columns": {
193
+ "id": {
194
+ "name": "id",
195
+ "type": "text",
196
+ "primaryKey": true,
197
+ "notNull": true
198
+ },
199
+ "user_id": {
200
+ "name": "user_id",
201
+ "type": "text",
202
+ "primaryKey": false,
203
+ "notNull": true
204
+ },
205
+ "thread_id": {
206
+ "name": "thread_id",
207
+ "type": "text",
208
+ "primaryKey": false,
209
+ "notNull": true
210
+ },
211
+ "channel": {
212
+ "name": "channel",
213
+ "type": "text",
214
+ "primaryKey": false,
215
+ "notNull": true
216
+ },
217
+ "reason": {
218
+ "name": "reason",
219
+ "type": "text",
220
+ "primaryKey": false,
221
+ "notNull": true
222
+ },
223
+ "message_id": {
224
+ "name": "message_id",
225
+ "type": "text",
226
+ "primaryKey": false,
227
+ "notNull": true
228
+ },
229
+ "from_id": {
230
+ "name": "from_id",
231
+ "type": "text",
232
+ "primaryKey": false,
233
+ "notNull": true
234
+ },
235
+ "from_name": {
236
+ "name": "from_name",
237
+ "type": "text",
238
+ "primaryKey": false,
239
+ "notNull": true
240
+ },
241
+ "text": {
242
+ "name": "text",
243
+ "type": "text",
244
+ "primaryKey": false,
245
+ "notNull": true
246
+ },
247
+ "log_index": {
248
+ "name": "log_index",
249
+ "type": "bigint",
250
+ "primaryKey": false,
251
+ "notNull": true
252
+ },
253
+ "sent_at": {
254
+ "name": "sent_at",
255
+ "type": "timestamp with time zone",
256
+ "primaryKey": false,
257
+ "notNull": true
258
+ }
259
+ },
260
+ "indexes": {
261
+ "a2slack_notifications_inbox": {
262
+ "name": "a2slack_notifications_inbox",
263
+ "columns": [
264
+ {
265
+ "expression": "user_id",
266
+ "isExpression": false,
267
+ "asc": true,
268
+ "nulls": "last"
269
+ },
270
+ {
271
+ "expression": "thread_id",
272
+ "isExpression": false,
273
+ "asc": true,
274
+ "nulls": "last"
275
+ },
276
+ {
277
+ "expression": "log_index",
278
+ "isExpression": false,
279
+ "asc": true,
280
+ "nulls": "last"
281
+ }
282
+ ],
283
+ "isUnique": false,
284
+ "with": {},
285
+ "method": "btree",
286
+ "concurrently": false
287
+ }
288
+ },
289
+ "foreignKeys": {},
290
+ "compositePrimaryKeys": {},
291
+ "uniqueConstraints": {},
292
+ "policies": {},
293
+ "checkConstraints": {},
294
+ "isRLSEnabled": false
295
+ },
296
+ "public.a2slack_people": {
297
+ "name": "a2slack_people",
298
+ "schema": "",
299
+ "columns": {
300
+ "id": {
301
+ "name": "id",
302
+ "type": "text",
303
+ "primaryKey": true,
304
+ "notNull": true
305
+ },
306
+ "name": {
307
+ "name": "name",
308
+ "type": "text",
309
+ "primaryKey": false,
310
+ "notNull": true
311
+ },
312
+ "log_index": {
313
+ "name": "log_index",
314
+ "type": "bigint",
315
+ "primaryKey": false,
316
+ "notNull": true
317
+ }
318
+ },
319
+ "indexes": {
320
+ "a2slack_people_name": {
321
+ "name": "a2slack_people_name",
322
+ "columns": [
323
+ {
324
+ "expression": "name",
325
+ "isExpression": false,
326
+ "asc": true,
327
+ "nulls": "last"
328
+ }
329
+ ],
330
+ "isUnique": false,
331
+ "with": {},
332
+ "method": "btree",
333
+ "concurrently": false
334
+ }
335
+ },
336
+ "foreignKeys": {},
337
+ "compositePrimaryKeys": {},
338
+ "uniqueConstraints": {},
339
+ "policies": {},
340
+ "checkConstraints": {},
341
+ "isRLSEnabled": false
342
+ },
343
+ "public.a2slack_positions": {
344
+ "name": "a2slack_positions",
345
+ "schema": "",
346
+ "columns": {
347
+ "consumer": {
348
+ "name": "consumer",
349
+ "type": "text",
350
+ "primaryKey": true,
351
+ "notNull": true
352
+ },
353
+ "log_index": {
354
+ "name": "log_index",
355
+ "type": "bigint",
356
+ "primaryKey": false,
357
+ "notNull": true
358
+ }
359
+ },
360
+ "indexes": {},
361
+ "foreignKeys": {},
362
+ "compositePrimaryKeys": {},
363
+ "uniqueConstraints": {},
364
+ "policies": {},
365
+ "checkConstraints": {},
366
+ "isRLSEnabled": false
367
+ },
368
+ "public.a2slack_reactions": {
369
+ "name": "a2slack_reactions",
370
+ "schema": "",
371
+ "columns": {
372
+ "message_id": {
373
+ "name": "message_id",
374
+ "type": "text",
375
+ "primaryKey": false,
376
+ "notNull": true
377
+ },
378
+ "emoji": {
379
+ "name": "emoji",
380
+ "type": "text",
381
+ "primaryKey": false,
382
+ "notNull": true
383
+ },
384
+ "author_id": {
385
+ "name": "author_id",
386
+ "type": "text",
387
+ "primaryKey": false,
388
+ "notNull": true
389
+ },
390
+ "author_name": {
391
+ "name": "author_name",
392
+ "type": "text",
393
+ "primaryKey": false,
394
+ "notNull": true
395
+ },
396
+ "log_index": {
397
+ "name": "log_index",
398
+ "type": "bigint",
399
+ "primaryKey": false,
400
+ "notNull": true
401
+ }
402
+ },
403
+ "indexes": {},
404
+ "foreignKeys": {},
405
+ "compositePrimaryKeys": {
406
+ "a2slack_reactions_message_id_emoji_author_id_pk": {
407
+ "name": "a2slack_reactions_message_id_emoji_author_id_pk",
408
+ "columns": [
409
+ "message_id",
410
+ "emoji",
411
+ "author_id"
412
+ ]
413
+ }
414
+ },
415
+ "uniqueConstraints": {},
416
+ "policies": {},
417
+ "checkConstraints": {},
418
+ "isRLSEnabled": false
419
+ },
420
+ "public.a2slack_reads": {
421
+ "name": "a2slack_reads",
422
+ "schema": "",
423
+ "columns": {
424
+ "user_id": {
425
+ "name": "user_id",
426
+ "type": "text",
427
+ "primaryKey": false,
428
+ "notNull": true
429
+ },
430
+ "thread_id": {
431
+ "name": "thread_id",
432
+ "type": "text",
433
+ "primaryKey": false,
434
+ "notNull": true
435
+ },
436
+ "through": {
437
+ "name": "through",
438
+ "type": "bigint",
439
+ "primaryKey": false,
440
+ "notNull": true
441
+ }
442
+ },
443
+ "indexes": {},
444
+ "foreignKeys": {},
445
+ "compositePrimaryKeys": {
446
+ "a2slack_reads_user_id_thread_id_pk": {
447
+ "name": "a2slack_reads_user_id_thread_id_pk",
448
+ "columns": [
449
+ "user_id",
450
+ "thread_id"
451
+ ]
452
+ }
453
+ },
454
+ "uniqueConstraints": {},
455
+ "policies": {},
456
+ "checkConstraints": {},
457
+ "isRLSEnabled": false
458
+ },
459
+ "public.a2slack_thread_members": {
460
+ "name": "a2slack_thread_members",
461
+ "schema": "",
462
+ "columns": {
463
+ "thread_id": {
464
+ "name": "thread_id",
465
+ "type": "text",
466
+ "primaryKey": false,
467
+ "notNull": true
468
+ },
469
+ "person_id": {
470
+ "name": "person_id",
471
+ "type": "text",
472
+ "primaryKey": false,
473
+ "notNull": true
474
+ },
475
+ "log_index": {
476
+ "name": "log_index",
477
+ "type": "bigint",
478
+ "primaryKey": false,
479
+ "notNull": true
480
+ }
481
+ },
482
+ "indexes": {},
483
+ "foreignKeys": {},
484
+ "compositePrimaryKeys": {
485
+ "a2slack_thread_members_thread_id_person_id_pk": {
486
+ "name": "a2slack_thread_members_thread_id_person_id_pk",
487
+ "columns": [
488
+ "thread_id",
489
+ "person_id"
490
+ ]
491
+ }
492
+ },
493
+ "uniqueConstraints": {},
494
+ "policies": {},
495
+ "checkConstraints": {},
496
+ "isRLSEnabled": false
497
+ },
498
+ "public.a2_clears": {
499
+ "name": "a2_clears",
500
+ "schema": "",
501
+ "columns": {
502
+ "session_id": {
503
+ "name": "session_id",
504
+ "type": "text",
505
+ "primaryKey": true,
506
+ "notNull": true
507
+ },
508
+ "clear_index": {
509
+ "name": "clear_index",
510
+ "type": "bigint",
511
+ "primaryKey": false,
512
+ "notNull": true
513
+ }
514
+ },
515
+ "indexes": {},
516
+ "foreignKeys": {},
517
+ "compositePrimaryKeys": {},
518
+ "uniqueConstraints": {},
519
+ "policies": {},
520
+ "checkConstraints": {},
521
+ "isRLSEnabled": false
522
+ },
523
+ "public.a2_cursors": {
524
+ "name": "a2_cursors",
525
+ "schema": "",
526
+ "columns": {
527
+ "session_id": {
528
+ "name": "session_id",
529
+ "type": "text",
530
+ "primaryKey": false,
531
+ "notNull": true
532
+ },
533
+ "consumer": {
534
+ "name": "consumer",
535
+ "type": "text",
536
+ "primaryKey": false,
537
+ "notNull": true
538
+ },
539
+ "cursor_key": {
540
+ "name": "cursor_key",
541
+ "type": "text",
542
+ "primaryKey": false,
543
+ "notNull": true
544
+ },
545
+ "epoch": {
546
+ "name": "epoch",
547
+ "type": "bigint",
548
+ "primaryKey": false,
549
+ "notNull": true
550
+ },
551
+ "lane": {
552
+ "name": "lane",
553
+ "type": "text",
554
+ "primaryKey": false,
555
+ "notNull": false
556
+ },
557
+ "kind": {
558
+ "name": "kind",
559
+ "type": "text",
560
+ "primaryKey": false,
561
+ "notNull": true
562
+ },
563
+ "position": {
564
+ "name": "position",
565
+ "type": "bigint",
566
+ "primaryKey": false,
567
+ "notNull": true
568
+ },
569
+ "head": {
570
+ "name": "head",
571
+ "type": "bigint",
572
+ "primaryKey": false,
573
+ "notNull": false
574
+ },
575
+ "types": {
576
+ "name": "types",
577
+ "type": "jsonb",
578
+ "primaryKey": false,
579
+ "notNull": false
580
+ },
581
+ "attempt_count": {
582
+ "name": "attempt_count",
583
+ "type": "integer",
584
+ "primaryKey": false,
585
+ "notNull": true,
586
+ "default": 0
587
+ },
588
+ "first_claimed_at": {
589
+ "name": "first_claimed_at",
590
+ "type": "bigint",
591
+ "primaryKey": false,
592
+ "notNull": false
593
+ },
594
+ "last_claimed_at": {
595
+ "name": "last_claimed_at",
596
+ "type": "bigint",
597
+ "primaryKey": false,
598
+ "notNull": false
599
+ },
600
+ "claim_holder": {
601
+ "name": "claim_holder",
602
+ "type": "text",
603
+ "primaryKey": false,
604
+ "notNull": false
605
+ },
606
+ "claim_expires_at": {
607
+ "name": "claim_expires_at",
608
+ "type": "bigint",
609
+ "primaryKey": false,
610
+ "notNull": false
611
+ },
612
+ "failure_count": {
613
+ "name": "failure_count",
614
+ "type": "integer",
615
+ "primaryKey": false,
616
+ "notNull": true,
617
+ "default": 0
618
+ },
619
+ "last_failed_at": {
620
+ "name": "last_failed_at",
621
+ "type": "bigint",
622
+ "primaryKey": false,
623
+ "notNull": false
624
+ },
625
+ "last_failed_attempt": {
626
+ "name": "last_failed_attempt",
627
+ "type": "integer",
628
+ "primaryKey": false,
629
+ "notNull": false
630
+ },
631
+ "last_error": {
632
+ "name": "last_error",
633
+ "type": "text",
634
+ "primaryKey": false,
635
+ "notNull": false
636
+ },
637
+ "failed_at": {
638
+ "name": "failed_at",
639
+ "type": "bigint",
640
+ "primaryKey": false,
641
+ "notNull": false
642
+ },
643
+ "completed_idx": {
644
+ "name": "completed_idx",
645
+ "type": "bigint",
646
+ "primaryKey": false,
647
+ "notNull": false
648
+ },
649
+ "completed_attempt": {
650
+ "name": "completed_attempt",
651
+ "type": "integer",
652
+ "primaryKey": false,
653
+ "notNull": false
654
+ },
655
+ "returned_event_ids": {
656
+ "name": "returned_event_ids",
657
+ "type": "jsonb",
658
+ "primaryKey": false,
659
+ "notNull": false
660
+ }
661
+ },
662
+ "indexes": {
663
+ "a2_cursors_heads": {
664
+ "name": "a2_cursors_heads",
665
+ "columns": [
666
+ {
667
+ "expression": "session_id",
668
+ "isExpression": false,
669
+ "asc": true,
670
+ "nulls": "last"
671
+ },
672
+ {
673
+ "expression": "head",
674
+ "isExpression": false,
675
+ "asc": true,
676
+ "nulls": "last"
677
+ }
678
+ ],
679
+ "isUnique": false,
680
+ "with": {},
681
+ "method": "btree",
682
+ "where": "head is not null",
683
+ "concurrently": false
684
+ },
685
+ "a2_cursors_lanes": {
686
+ "name": "a2_cursors_lanes",
687
+ "columns": [
688
+ {
689
+ "expression": "session_id",
690
+ "isExpression": false,
691
+ "asc": true,
692
+ "nulls": "last"
693
+ }
694
+ ],
695
+ "isUnique": false,
696
+ "with": {},
697
+ "method": "btree",
698
+ "where": "kind = 'lane'",
699
+ "concurrently": false
700
+ }
701
+ },
702
+ "foreignKeys": {},
703
+ "compositePrimaryKeys": {
704
+ "a2_cursors_pkey": {
705
+ "name": "a2_cursors_pkey",
706
+ "columns": [
707
+ "session_id",
708
+ "cursor_key",
709
+ "consumer",
710
+ "epoch"
711
+ ]
712
+ }
713
+ },
714
+ "uniqueConstraints": {},
715
+ "policies": {},
716
+ "checkConstraints": {},
717
+ "isRLSEnabled": false
718
+ },
719
+ "public.a2_events": {
720
+ "name": "a2_events",
721
+ "schema": "",
722
+ "columns": {
723
+ "session_id": {
724
+ "name": "session_id",
725
+ "type": "text",
726
+ "primaryKey": false,
727
+ "notNull": true
728
+ },
729
+ "idx": {
730
+ "name": "idx",
731
+ "type": "bigint",
732
+ "primaryKey": false,
733
+ "notNull": true
734
+ },
735
+ "event_type": {
736
+ "name": "event_type",
737
+ "type": "text",
738
+ "primaryKey": false,
739
+ "notNull": true
740
+ },
741
+ "payload": {
742
+ "name": "payload",
743
+ "type": "jsonb",
744
+ "primaryKey": false,
745
+ "notNull": true
746
+ },
747
+ "event_id": {
748
+ "name": "event_id",
749
+ "type": "text",
750
+ "primaryKey": false,
751
+ "notNull": true
752
+ },
753
+ "created_at": {
754
+ "name": "created_at",
755
+ "type": "bigint",
756
+ "primaryKey": false,
757
+ "notNull": true
758
+ },
759
+ "cause": {
760
+ "name": "cause",
761
+ "type": "jsonb",
762
+ "primaryKey": false,
763
+ "notNull": false
764
+ }
765
+ },
766
+ "indexes": {
767
+ "a2_events_event_id": {
768
+ "name": "a2_events_event_id",
769
+ "columns": [
770
+ {
771
+ "expression": "event_id",
772
+ "isExpression": false,
773
+ "asc": true,
774
+ "nulls": "last"
775
+ }
776
+ ],
777
+ "isUnique": true,
778
+ "with": {},
779
+ "method": "btree",
780
+ "concurrently": false
781
+ },
782
+ "a2_events_types": {
783
+ "name": "a2_events_types",
784
+ "columns": [
785
+ {
786
+ "expression": "session_id",
787
+ "isExpression": false,
788
+ "asc": true,
789
+ "nulls": "last"
790
+ },
791
+ {
792
+ "expression": "event_type",
793
+ "isExpression": false,
794
+ "asc": true,
795
+ "nulls": "last"
796
+ },
797
+ {
798
+ "expression": "idx",
799
+ "isExpression": false,
800
+ "asc": true,
801
+ "nulls": "last"
802
+ }
803
+ ],
804
+ "isUnique": false,
805
+ "with": {},
806
+ "method": "btree",
807
+ "concurrently": false
808
+ }
809
+ },
810
+ "foreignKeys": {},
811
+ "compositePrimaryKeys": {
812
+ "a2_events_pkey": {
813
+ "name": "a2_events_pkey",
814
+ "columns": [
815
+ "session_id",
816
+ "idx"
817
+ ]
818
+ }
819
+ },
820
+ "uniqueConstraints": {},
821
+ "policies": {},
822
+ "checkConstraints": {},
823
+ "isRLSEnabled": false
824
+ },
825
+ "public.a2_lane_events": {
826
+ "name": "a2_lane_events",
827
+ "schema": "",
828
+ "columns": {
829
+ "session_id": {
830
+ "name": "session_id",
831
+ "type": "text",
832
+ "primaryKey": false,
833
+ "notNull": true
834
+ },
835
+ "consumer": {
836
+ "name": "consumer",
837
+ "type": "text",
838
+ "primaryKey": false,
839
+ "notNull": true
840
+ },
841
+ "lane": {
842
+ "name": "lane",
843
+ "type": "text",
844
+ "primaryKey": false,
845
+ "notNull": true
846
+ },
847
+ "idx": {
848
+ "name": "idx",
849
+ "type": "bigint",
850
+ "primaryKey": false,
851
+ "notNull": true
852
+ },
853
+ "done": {
854
+ "name": "done",
855
+ "type": "boolean",
856
+ "primaryKey": false,
857
+ "notNull": true,
858
+ "default": false
859
+ },
860
+ "completed_attempt": {
861
+ "name": "completed_attempt",
862
+ "type": "integer",
863
+ "primaryKey": false,
864
+ "notNull": false
865
+ },
866
+ "returned_event_ids": {
867
+ "name": "returned_event_ids",
868
+ "type": "jsonb",
869
+ "primaryKey": false,
870
+ "notNull": false
871
+ }
872
+ },
873
+ "indexes": {},
874
+ "foreignKeys": {},
875
+ "compositePrimaryKeys": {
876
+ "a2_lane_events_pkey": {
877
+ "name": "a2_lane_events_pkey",
878
+ "columns": [
879
+ "session_id",
880
+ "consumer",
881
+ "lane",
882
+ "idx"
883
+ ]
884
+ }
885
+ },
886
+ "uniqueConstraints": {},
887
+ "policies": {},
888
+ "checkConstraints": {},
889
+ "isRLSEnabled": false
890
+ },
891
+ "public.a2_presence": {
892
+ "name": "a2_presence",
893
+ "schema": "",
894
+ "columns": {
895
+ "ns": {
896
+ "name": "ns",
897
+ "type": "text",
898
+ "primaryKey": false,
899
+ "notNull": true
900
+ },
901
+ "participant": {
902
+ "name": "participant",
903
+ "type": "text",
904
+ "primaryKey": false,
905
+ "notNull": true
906
+ },
907
+ "field": {
908
+ "name": "field",
909
+ "type": "text",
910
+ "primaryKey": false,
911
+ "notNull": true
912
+ },
913
+ "value": {
914
+ "name": "value",
915
+ "type": "jsonb",
916
+ "primaryKey": false,
917
+ "notNull": true
918
+ },
919
+ "seen": {
920
+ "name": "seen",
921
+ "type": "bigint",
922
+ "primaryKey": false,
923
+ "notNull": true
924
+ },
925
+ "at": {
926
+ "name": "at",
927
+ "type": "bigint",
928
+ "primaryKey": false,
929
+ "notNull": true
930
+ },
931
+ "expires_at": {
932
+ "name": "expires_at",
933
+ "type": "bigint",
934
+ "primaryKey": false,
935
+ "notNull": true
936
+ }
937
+ },
938
+ "indexes": {},
939
+ "foreignKeys": {},
940
+ "compositePrimaryKeys": {
941
+ "a2_presence_pkey": {
942
+ "name": "a2_presence_pkey",
943
+ "columns": [
944
+ "ns",
945
+ "participant",
946
+ "field"
947
+ ]
948
+ }
949
+ },
950
+ "uniqueConstraints": {},
951
+ "policies": {},
952
+ "checkConstraints": {},
953
+ "isRLSEnabled": false
954
+ },
955
+ "public.a2_snapshot_history": {
956
+ "name": "a2_snapshot_history",
957
+ "schema": "",
958
+ "columns": {
959
+ "session_id": {
960
+ "name": "session_id",
961
+ "type": "text",
962
+ "primaryKey": false,
963
+ "notNull": true
964
+ },
965
+ "reducer_name": {
966
+ "name": "reducer_name",
967
+ "type": "text",
968
+ "primaryKey": false,
969
+ "notNull": true
970
+ },
971
+ "up_to_index": {
972
+ "name": "up_to_index",
973
+ "type": "bigint",
974
+ "primaryKey": false,
975
+ "notNull": true
976
+ },
977
+ "state": {
978
+ "name": "state",
979
+ "type": "jsonb",
980
+ "primaryKey": false,
981
+ "notNull": true
982
+ },
983
+ "updated_at": {
984
+ "name": "updated_at",
985
+ "type": "bigint",
986
+ "primaryKey": false,
987
+ "notNull": true
988
+ }
989
+ },
990
+ "indexes": {},
991
+ "foreignKeys": {},
992
+ "compositePrimaryKeys": {
993
+ "a2_snapshot_history_pkey": {
994
+ "name": "a2_snapshot_history_pkey",
995
+ "columns": [
996
+ "session_id",
997
+ "reducer_name",
998
+ "up_to_index"
999
+ ]
1000
+ }
1001
+ },
1002
+ "uniqueConstraints": {},
1003
+ "policies": {},
1004
+ "checkConstraints": {},
1005
+ "isRLSEnabled": false
1006
+ },
1007
+ "public.a2_snapshot_pins": {
1008
+ "name": "a2_snapshot_pins",
1009
+ "schema": "",
1010
+ "columns": {
1011
+ "session_id": {
1012
+ "name": "session_id",
1013
+ "type": "text",
1014
+ "primaryKey": false,
1015
+ "notNull": true
1016
+ },
1017
+ "event_index": {
1018
+ "name": "event_index",
1019
+ "type": "bigint",
1020
+ "primaryKey": false,
1021
+ "notNull": true
1022
+ },
1023
+ "consumer": {
1024
+ "name": "consumer",
1025
+ "type": "text",
1026
+ "primaryKey": false,
1027
+ "notNull": true
1028
+ },
1029
+ "cursor_key": {
1030
+ "name": "cursor_key",
1031
+ "type": "text",
1032
+ "primaryKey": false,
1033
+ "notNull": true
1034
+ },
1035
+ "reducer_name": {
1036
+ "name": "reducer_name",
1037
+ "type": "text",
1038
+ "primaryKey": false,
1039
+ "notNull": true
1040
+ },
1041
+ "up_to_index": {
1042
+ "name": "up_to_index",
1043
+ "type": "bigint",
1044
+ "primaryKey": false,
1045
+ "notNull": true
1046
+ }
1047
+ },
1048
+ "indexes": {
1049
+ "a2_snapshot_pins_checkpoint": {
1050
+ "name": "a2_snapshot_pins_checkpoint",
1051
+ "columns": [
1052
+ {
1053
+ "expression": "session_id",
1054
+ "isExpression": false,
1055
+ "asc": true,
1056
+ "nulls": "last"
1057
+ },
1058
+ {
1059
+ "expression": "reducer_name",
1060
+ "isExpression": false,
1061
+ "asc": true,
1062
+ "nulls": "last"
1063
+ },
1064
+ {
1065
+ "expression": "up_to_index",
1066
+ "isExpression": false,
1067
+ "asc": true,
1068
+ "nulls": "last"
1069
+ }
1070
+ ],
1071
+ "isUnique": false,
1072
+ "with": {},
1073
+ "method": "btree",
1074
+ "concurrently": false
1075
+ }
1076
+ },
1077
+ "foreignKeys": {},
1078
+ "compositePrimaryKeys": {
1079
+ "a2_snapshot_pins_pkey": {
1080
+ "name": "a2_snapshot_pins_pkey",
1081
+ "columns": [
1082
+ "session_id",
1083
+ "event_index",
1084
+ "consumer",
1085
+ "cursor_key",
1086
+ "reducer_name",
1087
+ "up_to_index"
1088
+ ]
1089
+ }
1090
+ },
1091
+ "uniqueConstraints": {},
1092
+ "policies": {},
1093
+ "checkConstraints": {},
1094
+ "isRLSEnabled": false
1095
+ },
1096
+ "public.a2_snapshots": {
1097
+ "name": "a2_snapshots",
1098
+ "schema": "",
1099
+ "columns": {
1100
+ "session_id": {
1101
+ "name": "session_id",
1102
+ "type": "text",
1103
+ "primaryKey": false,
1104
+ "notNull": true
1105
+ },
1106
+ "reducer_name": {
1107
+ "name": "reducer_name",
1108
+ "type": "text",
1109
+ "primaryKey": false,
1110
+ "notNull": true
1111
+ },
1112
+ "up_to_index": {
1113
+ "name": "up_to_index",
1114
+ "type": "bigint",
1115
+ "primaryKey": false,
1116
+ "notNull": true
1117
+ },
1118
+ "state": {
1119
+ "name": "state",
1120
+ "type": "jsonb",
1121
+ "primaryKey": false,
1122
+ "notNull": true
1123
+ },
1124
+ "updated_at": {
1125
+ "name": "updated_at",
1126
+ "type": "bigint",
1127
+ "primaryKey": false,
1128
+ "notNull": true
1129
+ }
1130
+ },
1131
+ "indexes": {},
1132
+ "foreignKeys": {},
1133
+ "compositePrimaryKeys": {
1134
+ "a2_snapshots_pkey": {
1135
+ "name": "a2_snapshots_pkey",
1136
+ "columns": [
1137
+ "session_id",
1138
+ "reducer_name"
1139
+ ]
1140
+ }
1141
+ },
1142
+ "uniqueConstraints": {},
1143
+ "policies": {},
1144
+ "checkConstraints": {},
1145
+ "isRLSEnabled": false
1146
+ }
1147
+ },
1148
+ "enums": {},
1149
+ "schemas": {},
1150
+ "views": {},
1151
+ "sequences": {},
1152
+ "roles": {},
1153
+ "policies": {},
1154
+ "_meta": {
1155
+ "columns": {},
1156
+ "schemas": {},
1157
+ "tables": {}
1158
+ }
1159
+ }