happy2 0.0.5

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 (373) hide show
  1. package/README.md +82 -0
  2. package/package.json +74 -0
  3. package/packages/happy2-server/Dockerfile +18 -0
  4. package/packages/happy2-server/README.md +418 -0
  5. package/packages/happy2-server/bin/happy2.js +3 -0
  6. package/packages/happy2-server/dist/cli.d.ts +3 -0
  7. package/packages/happy2-server/dist/cli.d.ts.map +1 -0
  8. package/packages/happy2-server/dist/cli.js +44 -0
  9. package/packages/happy2-server/dist/cli.js.map +1 -0
  10. package/packages/happy2-server/dist/index.d.ts +24 -0
  11. package/packages/happy2-server/dist/index.d.ts.map +1 -0
  12. package/packages/happy2-server/dist/index.js +22 -0
  13. package/packages/happy2-server/dist/index.js.map +1 -0
  14. package/packages/happy2-server/dist/modules/agents/builtin-images.d.ts +8 -0
  15. package/packages/happy2-server/dist/modules/agents/builtin-images.d.ts.map +1 -0
  16. package/packages/happy2-server/dist/modules/agents/builtin-images.js +283 -0
  17. package/packages/happy2-server/dist/modules/agents/builtin-images.js.map +1 -0
  18. package/packages/happy2-server/dist/modules/agents/command.d.ts +3 -0
  19. package/packages/happy2-server/dist/modules/agents/command.d.ts.map +1 -0
  20. package/packages/happy2-server/dist/modules/agents/command.js +7 -0
  21. package/packages/happy2-server/dist/modules/agents/command.js.map +1 -0
  22. package/packages/happy2-server/dist/modules/agents/daemon.d.ts +106 -0
  23. package/packages/happy2-server/dist/modules/agents/daemon.d.ts.map +1 -0
  24. package/packages/happy2-server/dist/modules/agents/daemon.js +522 -0
  25. package/packages/happy2-server/dist/modules/agents/daemon.js.map +1 -0
  26. package/packages/happy2-server/dist/modules/agents/docker.d.ts +51 -0
  27. package/packages/happy2-server/dist/modules/agents/docker.d.ts.map +1 -0
  28. package/packages/happy2-server/dist/modules/agents/docker.js +256 -0
  29. package/packages/happy2-server/dist/modules/agents/docker.js.map +1 -0
  30. package/packages/happy2-server/dist/modules/agents/docker.test.d.ts +2 -0
  31. package/packages/happy2-server/dist/modules/agents/docker.test.d.ts.map +1 -0
  32. package/packages/happy2-server/dist/modules/agents/docker.test.js +155 -0
  33. package/packages/happy2-server/dist/modules/agents/docker.test.js.map +1 -0
  34. package/packages/happy2-server/dist/modules/agents/index.d.ts +5 -0
  35. package/packages/happy2-server/dist/modules/agents/index.d.ts.map +1 -0
  36. package/packages/happy2-server/dist/modules/agents/index.js +4 -0
  37. package/packages/happy2-server/dist/modules/agents/index.js.map +1 -0
  38. package/packages/happy2-server/dist/modules/agents/service.d.ts +140 -0
  39. package/packages/happy2-server/dist/modules/agents/service.d.ts.map +1 -0
  40. package/packages/happy2-server/dist/modules/agents/service.js +1283 -0
  41. package/packages/happy2-server/dist/modules/agents/service.js.map +1 -0
  42. package/packages/happy2-server/dist/modules/auth/cloudflare-access.d.ts +15 -0
  43. package/packages/happy2-server/dist/modules/auth/cloudflare-access.d.ts.map +1 -0
  44. package/packages/happy2-server/dist/modules/auth/cloudflare-access.js +49 -0
  45. package/packages/happy2-server/dist/modules/auth/cloudflare-access.js.map +1 -0
  46. package/packages/happy2-server/dist/modules/auth/crypto.d.ts +4 -0
  47. package/packages/happy2-server/dist/modules/auth/crypto.d.ts.map +1 -0
  48. package/packages/happy2-server/dist/modules/auth/crypto.js +31 -0
  49. package/packages/happy2-server/dist/modules/auth/crypto.js.map +1 -0
  50. package/packages/happy2-server/dist/modules/auth/crypto.test.d.ts +2 -0
  51. package/packages/happy2-server/dist/modules/auth/crypto.test.d.ts.map +1 -0
  52. package/packages/happy2-server/dist/modules/auth/crypto.test.js +11 -0
  53. package/packages/happy2-server/dist/modules/auth/crypto.test.js.map +1 -0
  54. package/packages/happy2-server/dist/modules/auth/email.d.ts +3 -0
  55. package/packages/happy2-server/dist/modules/auth/email.d.ts.map +1 -0
  56. package/packages/happy2-server/dist/modules/auth/email.js +22 -0
  57. package/packages/happy2-server/dist/modules/auth/email.js.map +1 -0
  58. package/packages/happy2-server/dist/modules/auth/metadata.d.ts +5 -0
  59. package/packages/happy2-server/dist/modules/auth/metadata.d.ts.map +1 -0
  60. package/packages/happy2-server/dist/modules/auth/metadata.js +28 -0
  61. package/packages/happy2-server/dist/modules/auth/metadata.js.map +1 -0
  62. package/packages/happy2-server/dist/modules/auth/metadata.test.d.ts +2 -0
  63. package/packages/happy2-server/dist/modules/auth/metadata.test.d.ts.map +1 -0
  64. package/packages/happy2-server/dist/modules/auth/metadata.test.js +10 -0
  65. package/packages/happy2-server/dist/modules/auth/metadata.test.js.map +1 -0
  66. package/packages/happy2-server/dist/modules/auth/methods.d.ts +10 -0
  67. package/packages/happy2-server/dist/modules/auth/methods.d.ts.map +1 -0
  68. package/packages/happy2-server/dist/modules/auth/methods.js +21 -0
  69. package/packages/happy2-server/dist/modules/auth/methods.js.map +1 -0
  70. package/packages/happy2-server/dist/modules/auth/methods.test.d.ts +2 -0
  71. package/packages/happy2-server/dist/modules/auth/methods.test.d.ts.map +1 -0
  72. package/packages/happy2-server/dist/modules/auth/methods.test.js +16 -0
  73. package/packages/happy2-server/dist/modules/auth/methods.test.js.map +1 -0
  74. package/packages/happy2-server/dist/modules/auth/oidc.d.ts +9 -0
  75. package/packages/happy2-server/dist/modules/auth/oidc.d.ts.map +1 -0
  76. package/packages/happy2-server/dist/modules/auth/oidc.js +68 -0
  77. package/packages/happy2-server/dist/modules/auth/oidc.js.map +1 -0
  78. package/packages/happy2-server/dist/modules/auth/service.d.ts +44 -0
  79. package/packages/happy2-server/dist/modules/auth/service.d.ts.map +1 -0
  80. package/packages/happy2-server/dist/modules/auth/service.js +208 -0
  81. package/packages/happy2-server/dist/modules/auth/service.js.map +1 -0
  82. package/packages/happy2-server/dist/modules/auth/tokens.d.ts +21 -0
  83. package/packages/happy2-server/dist/modules/auth/tokens.d.ts.map +1 -0
  84. package/packages/happy2-server/dist/modules/auth/tokens.js +79 -0
  85. package/packages/happy2-server/dist/modules/auth/tokens.js.map +1 -0
  86. package/packages/happy2-server/dist/modules/automation/repository.d.ts +127 -0
  87. package/packages/happy2-server/dist/modules/automation/repository.d.ts.map +1 -0
  88. package/packages/happy2-server/dist/modules/automation/repository.js +821 -0
  89. package/packages/happy2-server/dist/modules/automation/repository.js.map +1 -0
  90. package/packages/happy2-server/dist/modules/collaboration/repository.d.ts +839 -0
  91. package/packages/happy2-server/dist/modules/collaboration/repository.d.ts.map +1 -0
  92. package/packages/happy2-server/dist/modules/collaboration/repository.js +5795 -0
  93. package/packages/happy2-server/dist/modules/collaboration/repository.js.map +1 -0
  94. package/packages/happy2-server/dist/modules/collaboration/repository.test.d.ts +2 -0
  95. package/packages/happy2-server/dist/modules/collaboration/repository.test.d.ts.map +1 -0
  96. package/packages/happy2-server/dist/modules/collaboration/repository.test.js +620 -0
  97. package/packages/happy2-server/dist/modules/collaboration/repository.test.js.map +1 -0
  98. package/packages/happy2-server/dist/modules/collaboration/types.d.ts +243 -0
  99. package/packages/happy2-server/dist/modules/collaboration/types.d.ts.map +1 -0
  100. package/packages/happy2-server/dist/modules/collaboration/types.js +8 -0
  101. package/packages/happy2-server/dist/modules/collaboration/types.js.map +1 -0
  102. package/packages/happy2-server/dist/modules/config/defaults.d.ts +8 -0
  103. package/packages/happy2-server/dist/modules/config/defaults.d.ts.map +1 -0
  104. package/packages/happy2-server/dist/modules/config/defaults.js +70 -0
  105. package/packages/happy2-server/dist/modules/config/defaults.js.map +1 -0
  106. package/packages/happy2-server/dist/modules/config/defaults.test.d.ts +2 -0
  107. package/packages/happy2-server/dist/modules/config/defaults.test.d.ts.map +1 -0
  108. package/packages/happy2-server/dist/modules/config/defaults.test.js +27 -0
  109. package/packages/happy2-server/dist/modules/config/defaults.test.js.map +1 -0
  110. package/packages/happy2-server/dist/modules/config/environment.d.ts +4 -0
  111. package/packages/happy2-server/dist/modules/config/environment.d.ts.map +1 -0
  112. package/packages/happy2-server/dist/modules/config/environment.js +92 -0
  113. package/packages/happy2-server/dist/modules/config/environment.js.map +1 -0
  114. package/packages/happy2-server/dist/modules/config/loader.d.ts +5 -0
  115. package/packages/happy2-server/dist/modules/config/loader.d.ts.map +1 -0
  116. package/packages/happy2-server/dist/modules/config/loader.js +251 -0
  117. package/packages/happy2-server/dist/modules/config/loader.js.map +1 -0
  118. package/packages/happy2-server/dist/modules/config/loader.test.d.ts +2 -0
  119. package/packages/happy2-server/dist/modules/config/loader.test.d.ts.map +1 -0
  120. package/packages/happy2-server/dist/modules/config/loader.test.js +108 -0
  121. package/packages/happy2-server/dist/modules/config/loader.test.js.map +1 -0
  122. package/packages/happy2-server/dist/modules/config/paths.d.ts +7 -0
  123. package/packages/happy2-server/dist/modules/config/paths.d.ts.map +1 -0
  124. package/packages/happy2-server/dist/modules/config/paths.js +15 -0
  125. package/packages/happy2-server/dist/modules/config/paths.js.map +1 -0
  126. package/packages/happy2-server/dist/modules/config/paths.test.d.ts +2 -0
  127. package/packages/happy2-server/dist/modules/config/paths.test.d.ts.map +1 -0
  128. package/packages/happy2-server/dist/modules/config/paths.test.js +22 -0
  129. package/packages/happy2-server/dist/modules/config/paths.test.js.map +1 -0
  130. package/packages/happy2-server/dist/modules/config/runtime.d.ts +6 -0
  131. package/packages/happy2-server/dist/modules/config/runtime.d.ts.map +1 -0
  132. package/packages/happy2-server/dist/modules/config/runtime.js +14 -0
  133. package/packages/happy2-server/dist/modules/config/runtime.js.map +1 -0
  134. package/packages/happy2-server/dist/modules/config/type.d.ts +88 -0
  135. package/packages/happy2-server/dist/modules/config/type.d.ts.map +1 -0
  136. package/packages/happy2-server/dist/modules/config/type.js +2 -0
  137. package/packages/happy2-server/dist/modules/config/type.js.map +1 -0
  138. package/packages/happy2-server/dist/modules/database.d.ts +105 -0
  139. package/packages/happy2-server/dist/modules/database.d.ts.map +1 -0
  140. package/packages/happy2-server/dist/modules/database.js +583 -0
  141. package/packages/happy2-server/dist/modules/database.js.map +1 -0
  142. package/packages/happy2-server/dist/modules/drizzle.d.ts +11 -0
  143. package/packages/happy2-server/dist/modules/drizzle.d.ts.map +1 -0
  144. package/packages/happy2-server/dist/modules/drizzle.js +31 -0
  145. package/packages/happy2-server/dist/modules/drizzle.js.map +1 -0
  146. package/packages/happy2-server/dist/modules/files/lock.d.ts +3 -0
  147. package/packages/happy2-server/dist/modules/files/lock.d.ts.map +1 -0
  148. package/packages/happy2-server/dist/modules/files/lock.js +83 -0
  149. package/packages/happy2-server/dist/modules/files/lock.js.map +1 -0
  150. package/packages/happy2-server/dist/modules/files/media.d.ts +18 -0
  151. package/packages/happy2-server/dist/modules/files/media.d.ts.map +1 -0
  152. package/packages/happy2-server/dist/modules/files/media.js +352 -0
  153. package/packages/happy2-server/dist/modules/files/media.js.map +1 -0
  154. package/packages/happy2-server/dist/modules/files/provider.d.ts +130 -0
  155. package/packages/happy2-server/dist/modules/files/provider.d.ts.map +1 -0
  156. package/packages/happy2-server/dist/modules/files/provider.js +448 -0
  157. package/packages/happy2-server/dist/modules/files/provider.js.map +1 -0
  158. package/packages/happy2-server/dist/modules/files/quota.d.ts +58 -0
  159. package/packages/happy2-server/dist/modules/files/quota.d.ts.map +1 -0
  160. package/packages/happy2-server/dist/modules/files/quota.js +180 -0
  161. package/packages/happy2-server/dist/modules/files/quota.js.map +1 -0
  162. package/packages/happy2-server/dist/modules/files/routes.test.d.ts +2 -0
  163. package/packages/happy2-server/dist/modules/files/routes.test.d.ts.map +1 -0
  164. package/packages/happy2-server/dist/modules/files/routes.test.js +163 -0
  165. package/packages/happy2-server/dist/modules/files/routes.test.js.map +1 -0
  166. package/packages/happy2-server/dist/modules/files/scanner.d.ts +27 -0
  167. package/packages/happy2-server/dist/modules/files/scanner.d.ts.map +1 -0
  168. package/packages/happy2-server/dist/modules/files/scanner.js +66 -0
  169. package/packages/happy2-server/dist/modules/files/scanner.js.map +1 -0
  170. package/packages/happy2-server/dist/modules/files/storage.d.ts +95 -0
  171. package/packages/happy2-server/dist/modules/files/storage.d.ts.map +1 -0
  172. package/packages/happy2-server/dist/modules/files/storage.js +855 -0
  173. package/packages/happy2-server/dist/modules/files/storage.js.map +1 -0
  174. package/packages/happy2-server/dist/modules/files/storage.test.d.ts +2 -0
  175. package/packages/happy2-server/dist/modules/files/storage.test.d.ts.map +1 -0
  176. package/packages/happy2-server/dist/modules/files/storage.test.js +170 -0
  177. package/packages/happy2-server/dist/modules/files/storage.test.js.map +1 -0
  178. package/packages/happy2-server/dist/modules/integrations/index.d.ts +6 -0
  179. package/packages/happy2-server/dist/modules/integrations/index.d.ts.map +1 -0
  180. package/packages/happy2-server/dist/modules/integrations/index.js +6 -0
  181. package/packages/happy2-server/dist/modules/integrations/index.js.map +1 -0
  182. package/packages/happy2-server/dist/modules/integrations/repository.d.ts +136 -0
  183. package/packages/happy2-server/dist/modules/integrations/repository.d.ts.map +1 -0
  184. package/packages/happy2-server/dist/modules/integrations/repository.js +1229 -0
  185. package/packages/happy2-server/dist/modules/integrations/repository.js.map +1 -0
  186. package/packages/happy2-server/dist/modules/integrations/repository.test.d.ts +2 -0
  187. package/packages/happy2-server/dist/modules/integrations/repository.test.d.ts.map +1 -0
  188. package/packages/happy2-server/dist/modules/integrations/repository.test.js +345 -0
  189. package/packages/happy2-server/dist/modules/integrations/repository.test.js.map +1 -0
  190. package/packages/happy2-server/dist/modules/integrations/routes.test.d.ts +2 -0
  191. package/packages/happy2-server/dist/modules/integrations/routes.test.d.ts.map +1 -0
  192. package/packages/happy2-server/dist/modules/integrations/routes.test.js +161 -0
  193. package/packages/happy2-server/dist/modules/integrations/routes.test.js.map +1 -0
  194. package/packages/happy2-server/dist/modules/integrations/secrets.d.ts +19 -0
  195. package/packages/happy2-server/dist/modules/integrations/secrets.d.ts.map +1 -0
  196. package/packages/happy2-server/dist/modules/integrations/secrets.js +69 -0
  197. package/packages/happy2-server/dist/modules/integrations/secrets.js.map +1 -0
  198. package/packages/happy2-server/dist/modules/integrations/ssrf.d.ts +32 -0
  199. package/packages/happy2-server/dist/modules/integrations/ssrf.d.ts.map +1 -0
  200. package/packages/happy2-server/dist/modules/integrations/ssrf.js +185 -0
  201. package/packages/happy2-server/dist/modules/integrations/ssrf.js.map +1 -0
  202. package/packages/happy2-server/dist/modules/integrations/ssrf.test.d.ts +2 -0
  203. package/packages/happy2-server/dist/modules/integrations/ssrf.test.d.ts.map +1 -0
  204. package/packages/happy2-server/dist/modules/integrations/ssrf.test.js +56 -0
  205. package/packages/happy2-server/dist/modules/integrations/ssrf.test.js.map +1 -0
  206. package/packages/happy2-server/dist/modules/integrations/transport.d.ts +21 -0
  207. package/packages/happy2-server/dist/modules/integrations/transport.d.ts.map +1 -0
  208. package/packages/happy2-server/dist/modules/integrations/transport.js +108 -0
  209. package/packages/happy2-server/dist/modules/integrations/transport.js.map +1 -0
  210. package/packages/happy2-server/dist/modules/integrations/transport.test.d.ts +2 -0
  211. package/packages/happy2-server/dist/modules/integrations/transport.test.d.ts.map +1 -0
  212. package/packages/happy2-server/dist/modules/integrations/transport.test.js +66 -0
  213. package/packages/happy2-server/dist/modules/integrations/transport.test.js.map +1 -0
  214. package/packages/happy2-server/dist/modules/integrations/types.d.ts +155 -0
  215. package/packages/happy2-server/dist/modules/integrations/types.d.ts.map +1 -0
  216. package/packages/happy2-server/dist/modules/integrations/types.js +26 -0
  217. package/packages/happy2-server/dist/modules/integrations/types.js.map +1 -0
  218. package/packages/happy2-server/dist/modules/operations/export-worker.d.ts +16 -0
  219. package/packages/happy2-server/dist/modules/operations/export-worker.d.ts.map +1 -0
  220. package/packages/happy2-server/dist/modules/operations/export-worker.js +56 -0
  221. package/packages/happy2-server/dist/modules/operations/export-worker.js.map +1 -0
  222. package/packages/happy2-server/dist/modules/operations/repository.d.ts +215 -0
  223. package/packages/happy2-server/dist/modules/operations/repository.d.ts.map +1 -0
  224. package/packages/happy2-server/dist/modules/operations/repository.js +2011 -0
  225. package/packages/happy2-server/dist/modules/operations/repository.js.map +1 -0
  226. package/packages/happy2-server/dist/modules/operations/repository.test.d.ts +2 -0
  227. package/packages/happy2-server/dist/modules/operations/repository.test.d.ts.map +1 -0
  228. package/packages/happy2-server/dist/modules/operations/repository.test.js +610 -0
  229. package/packages/happy2-server/dist/modules/operations/repository.test.js.map +1 -0
  230. package/packages/happy2-server/dist/modules/operations/types.d.ts +144 -0
  231. package/packages/happy2-server/dist/modules/operations/types.d.ts.map +1 -0
  232. package/packages/happy2-server/dist/modules/operations/types.js +9 -0
  233. package/packages/happy2-server/dist/modules/operations/types.js.map +1 -0
  234. package/packages/happy2-server/dist/modules/realtime/events.d.ts +99 -0
  235. package/packages/happy2-server/dist/modules/realtime/events.d.ts.map +1 -0
  236. package/packages/happy2-server/dist/modules/realtime/events.js +173 -0
  237. package/packages/happy2-server/dist/modules/realtime/events.js.map +1 -0
  238. package/packages/happy2-server/dist/modules/realtime/index.d.ts +4 -0
  239. package/packages/happy2-server/dist/modules/realtime/index.d.ts.map +1 -0
  240. package/packages/happy2-server/dist/modules/realtime/index.js +4 -0
  241. package/packages/happy2-server/dist/modules/realtime/index.js.map +1 -0
  242. package/packages/happy2-server/dist/modules/realtime/local.d.ts +37 -0
  243. package/packages/happy2-server/dist/modules/realtime/local.d.ts.map +1 -0
  244. package/packages/happy2-server/dist/modules/realtime/local.js +181 -0
  245. package/packages/happy2-server/dist/modules/realtime/local.js.map +1 -0
  246. package/packages/happy2-server/dist/modules/realtime/local.test.d.ts +2 -0
  247. package/packages/happy2-server/dist/modules/realtime/local.test.d.ts.map +1 -0
  248. package/packages/happy2-server/dist/modules/realtime/local.test.js +186 -0
  249. package/packages/happy2-server/dist/modules/realtime/local.test.js.map +1 -0
  250. package/packages/happy2-server/dist/modules/realtime/pubsub.d.ts +26 -0
  251. package/packages/happy2-server/dist/modules/realtime/pubsub.d.ts.map +1 -0
  252. package/packages/happy2-server/dist/modules/realtime/pubsub.js +7 -0
  253. package/packages/happy2-server/dist/modules/realtime/pubsub.js.map +1 -0
  254. package/packages/happy2-server/dist/modules/request/database-idempotency.d.ts +15 -0
  255. package/packages/happy2-server/dist/modules/request/database-idempotency.d.ts.map +1 -0
  256. package/packages/happy2-server/dist/modules/request/database-idempotency.js +141 -0
  257. package/packages/happy2-server/dist/modules/request/database-idempotency.js.map +1 -0
  258. package/packages/happy2-server/dist/modules/request/idempotency-hook.d.ts +12 -0
  259. package/packages/happy2-server/dist/modules/request/idempotency-hook.d.ts.map +1 -0
  260. package/packages/happy2-server/dist/modules/request/idempotency-hook.js +98 -0
  261. package/packages/happy2-server/dist/modules/request/idempotency-hook.js.map +1 -0
  262. package/packages/happy2-server/dist/modules/request/idempotency.d.ts +146 -0
  263. package/packages/happy2-server/dist/modules/request/idempotency.d.ts.map +1 -0
  264. package/packages/happy2-server/dist/modules/request/idempotency.js +312 -0
  265. package/packages/happy2-server/dist/modules/request/idempotency.js.map +1 -0
  266. package/packages/happy2-server/dist/modules/request/idempotency.test.d.ts +2 -0
  267. package/packages/happy2-server/dist/modules/request/idempotency.test.d.ts.map +1 -0
  268. package/packages/happy2-server/dist/modules/request/idempotency.test.js +191 -0
  269. package/packages/happy2-server/dist/modules/request/idempotency.test.js.map +1 -0
  270. package/packages/happy2-server/dist/modules/request/index.d.ts +5 -0
  271. package/packages/happy2-server/dist/modules/request/index.d.ts.map +1 -0
  272. package/packages/happy2-server/dist/modules/request/index.js +5 -0
  273. package/packages/happy2-server/dist/modules/request/index.js.map +1 -0
  274. package/packages/happy2-server/dist/modules/request/rate-limit.d.ts +100 -0
  275. package/packages/happy2-server/dist/modules/request/rate-limit.d.ts.map +1 -0
  276. package/packages/happy2-server/dist/modules/request/rate-limit.js +239 -0
  277. package/packages/happy2-server/dist/modules/request/rate-limit.js.map +1 -0
  278. package/packages/happy2-server/dist/modules/request/rate-limit.test.d.ts +2 -0
  279. package/packages/happy2-server/dist/modules/request/rate-limit.test.d.ts.map +1 -0
  280. package/packages/happy2-server/dist/modules/request/rate-limit.test.js +123 -0
  281. package/packages/happy2-server/dist/modules/request/rate-limit.test.js.map +1 -0
  282. package/packages/happy2-server/dist/modules/schema.d.ts +31454 -0
  283. package/packages/happy2-server/dist/modules/schema.d.ts.map +1 -0
  284. package/packages/happy2-server/dist/modules/schema.js +1081 -0
  285. package/packages/happy2-server/dist/modules/schema.js.map +1 -0
  286. package/packages/happy2-server/dist/modules/workspace/index.d.ts +3 -0
  287. package/packages/happy2-server/dist/modules/workspace/index.d.ts.map +1 -0
  288. package/packages/happy2-server/dist/modules/workspace/index.js +3 -0
  289. package/packages/happy2-server/dist/modules/workspace/index.js.map +1 -0
  290. package/packages/happy2-server/dist/modules/workspace/service.d.ts +54 -0
  291. package/packages/happy2-server/dist/modules/workspace/service.d.ts.map +1 -0
  292. package/packages/happy2-server/dist/modules/workspace/service.js +997 -0
  293. package/packages/happy2-server/dist/modules/workspace/service.js.map +1 -0
  294. package/packages/happy2-server/dist/modules/workspace/types.d.ts +58 -0
  295. package/packages/happy2-server/dist/modules/workspace/types.d.ts.map +1 -0
  296. package/packages/happy2-server/dist/modules/workspace/types.js +11 -0
  297. package/packages/happy2-server/dist/modules/workspace/types.js.map +1 -0
  298. package/packages/happy2-server/dist/routes/agents.d.ts +5 -0
  299. package/packages/happy2-server/dist/routes/agents.d.ts.map +1 -0
  300. package/packages/happy2-server/dist/routes/agents.js +225 -0
  301. package/packages/happy2-server/dist/routes/agents.js.map +1 -0
  302. package/packages/happy2-server/dist/routes/auth.d.ts +5 -0
  303. package/packages/happy2-server/dist/routes/auth.d.ts.map +1 -0
  304. package/packages/happy2-server/dist/routes/auth.js +128 -0
  305. package/packages/happy2-server/dist/routes/auth.js.map +1 -0
  306. package/packages/happy2-server/dist/routes/automation.d.ts +6 -0
  307. package/packages/happy2-server/dist/routes/automation.d.ts.map +1 -0
  308. package/packages/happy2-server/dist/routes/automation.js +315 -0
  309. package/packages/happy2-server/dist/routes/automation.js.map +1 -0
  310. package/packages/happy2-server/dist/routes/basic.d.ts +3 -0
  311. package/packages/happy2-server/dist/routes/basic.d.ts.map +1 -0
  312. package/packages/happy2-server/dist/routes/basic.js +5 -0
  313. package/packages/happy2-server/dist/routes/basic.js.map +1 -0
  314. package/packages/happy2-server/dist/routes/collaboration.d.ts +7 -0
  315. package/packages/happy2-server/dist/routes/collaboration.d.ts.map +1 -0
  316. package/packages/happy2-server/dist/routes/collaboration.js +1285 -0
  317. package/packages/happy2-server/dist/routes/collaboration.js.map +1 -0
  318. package/packages/happy2-server/dist/routes/files.d.ts +9 -0
  319. package/packages/happy2-server/dist/routes/files.d.ts.map +1 -0
  320. package/packages/happy2-server/dist/routes/files.js +397 -0
  321. package/packages/happy2-server/dist/routes/files.js.map +1 -0
  322. package/packages/happy2-server/dist/routes/integrations.d.ts +6 -0
  323. package/packages/happy2-server/dist/routes/integrations.d.ts.map +1 -0
  324. package/packages/happy2-server/dist/routes/integrations.js +486 -0
  325. package/packages/happy2-server/dist/routes/integrations.js.map +1 -0
  326. package/packages/happy2-server/dist/routes/operations.d.ts +5 -0
  327. package/packages/happy2-server/dist/routes/operations.d.ts.map +1 -0
  328. package/packages/happy2-server/dist/routes/operations.js +588 -0
  329. package/packages/happy2-server/dist/routes/operations.js.map +1 -0
  330. package/packages/happy2-server/dist/routes/operations.test.d.ts +2 -0
  331. package/packages/happy2-server/dist/routes/operations.test.d.ts.map +1 -0
  332. package/packages/happy2-server/dist/routes/operations.test.js +106 -0
  333. package/packages/happy2-server/dist/routes/operations.test.js.map +1 -0
  334. package/packages/happy2-server/dist/routes/sync.d.ts +6 -0
  335. package/packages/happy2-server/dist/routes/sync.d.ts.map +1 -0
  336. package/packages/happy2-server/dist/routes/sync.js +549 -0
  337. package/packages/happy2-server/dist/routes/sync.js.map +1 -0
  338. package/packages/happy2-server/dist/routes/workspace.d.ts +5 -0
  339. package/packages/happy2-server/dist/routes/workspace.d.ts.map +1 -0
  340. package/packages/happy2-server/dist/routes/workspace.js +240 -0
  341. package/packages/happy2-server/dist/routes/workspace.js.map +1 -0
  342. package/packages/happy2-server/dist/runner.d.ts +3 -0
  343. package/packages/happy2-server/dist/runner.d.ts.map +1 -0
  344. package/packages/happy2-server/dist/runner.js +30 -0
  345. package/packages/happy2-server/dist/runner.js.map +1 -0
  346. package/packages/happy2-server/dist/server.d.ts +32 -0
  347. package/packages/happy2-server/dist/server.d.ts.map +1 -0
  348. package/packages/happy2-server/dist/server.js +284 -0
  349. package/packages/happy2-server/dist/server.js.map +1 -0
  350. package/packages/happy2-server/dist/standalone.d.ts +13 -0
  351. package/packages/happy2-server/dist/standalone.d.ts.map +1 -0
  352. package/packages/happy2-server/dist/standalone.js +99 -0
  353. package/packages/happy2-server/dist/standalone.js.map +1 -0
  354. package/packages/happy2-server/dist/web/assets/figtree-latin-wght-normal-D_ZTVpCC.woff2 +0 -0
  355. package/packages/happy2-server/dist/web/assets/happy-otter-Q2O_g-DT.png +0 -0
  356. package/packages/happy2-server/dist/web/assets/index-COvbX8JP.css +2 -0
  357. package/packages/happy2-server/dist/web/assets/index-DdpugxMO.js +57 -0
  358. package/packages/happy2-server/dist/web/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  359. package/packages/happy2-server/dist/web/assets/onboarding-CRUpq9xl.png +0 -0
  360. package/packages/happy2-server/dist/web/index.html +13 -0
  361. package/packages/happy2-server/drizzle/0000_initial.sql +13 -0
  362. package/packages/happy2-server/drizzle/0001_accounts_profiles_files.sql +42 -0
  363. package/packages/happy2-server/drizzle/0002_file_visibility_and_uploader.sql +5 -0
  364. package/packages/happy2-server/drizzle/0003_collaboration.sql +565 -0
  365. package/packages/happy2-server/drizzle/0004_collaboration_expansion.sql +1099 -0
  366. package/packages/happy2-server/drizzle/0005_ai_agents.sql +85 -0
  367. package/packages/happy2-server/drizzle/0006_rig_global_event_queue.sql +10 -0
  368. package/packages/happy2-server/drizzle/0007_rename_server_identity.sql +3 -0
  369. package/packages/happy2-server/drizzle/0008_agent_message_streaming.sql +47 -0
  370. package/packages/happy2-server/drizzle/0009_chat_workspace_binding_lookup.sql +2 -0
  371. package/packages/happy2-server/drizzle/0010_rig_secret_assignments.sql +21 -0
  372. package/packages/happy2-server/drizzle/meta/_journal.json +83 -0
  373. package/packages/happy2-server/happy2.example.toml +104 -0
@@ -0,0 +1,13 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Happy (2)</title>
7
+ <script type="module" crossorigin src="/assets/index-DdpugxMO.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/assets/index-COvbX8JP.css">
9
+ </head>
10
+ <body>
11
+ <div id="root"></div>
12
+ </body>
13
+ </html>
@@ -0,0 +1,13 @@
1
+ CREATE TABLE `users` (`id` TEXT PRIMARY KEY NOT NULL, `email` TEXT NOT NULL UNIQUE, `password_hash` TEXT, `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP);
2
+ --> statement-breakpoint
3
+ CREATE TABLE `oidc_identities` (`provider` TEXT NOT NULL, `subject` TEXT NOT NULL, `user_id` TEXT NOT NULL REFERENCES `users`(`id`) ON DELETE CASCADE, `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`provider`, `subject`));
4
+ --> statement-breakpoint
5
+ CREATE TABLE `auth_sessions` (`id` TEXT PRIMARY KEY NOT NULL, `user_id` TEXT NOT NULL REFERENCES `users`(`id`) ON DELETE CASCADE, `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, `expires_at` TEXT NOT NULL, `last_seen_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, `revoked_at` TEXT);
6
+ --> statement-breakpoint
7
+ CREATE INDEX `auth_sessions_active_user_idx` ON `auth_sessions` (`user_id`, `expires_at`);
8
+ --> statement-breakpoint
9
+ CREATE TABLE `auth_session_events` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `session_id` TEXT NOT NULL REFERENCES `auth_sessions`(`id`) ON DELETE CASCADE, `event_type` TEXT NOT NULL, `ip` TEXT, `forwarded_for` TEXT, `location` TEXT, `device` TEXT, `app_version` TEXT, `user_agent` TEXT, `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP);
10
+ --> statement-breakpoint
11
+ CREATE TABLE `auth_magic_links` (`token_hash` TEXT PRIMARY KEY NOT NULL, `user_id` TEXT NOT NULL REFERENCES `users`(`id`) ON DELETE CASCADE, `expires_at` TEXT NOT NULL, `consumed_at` TEXT, `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP);
12
+ --> statement-breakpoint
13
+ CREATE TABLE `auth_oidc_states` (`state` TEXT PRIMARY KEY NOT NULL, `provider` TEXT NOT NULL, `code_verifier` TEXT NOT NULL, `nonce` TEXT NOT NULL, `redirect_uri` TEXT NOT NULL, `expires_at` TEXT NOT NULL, `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP);
@@ -0,0 +1,42 @@
1
+ ALTER TABLE `users` RENAME TO `accounts`;
2
+ --> statement-breakpoint
3
+ ALTER TABLE `accounts` ADD COLUMN `active` INTEGER NOT NULL DEFAULT 0;
4
+ --> statement-breakpoint
5
+ ALTER TABLE `oidc_identities` RENAME COLUMN `user_id` TO `account_id`;
6
+ --> statement-breakpoint
7
+ ALTER TABLE `auth_sessions` RENAME COLUMN `user_id` TO `account_id`;
8
+ --> statement-breakpoint
9
+ ALTER TABLE `auth_magic_links` RENAME COLUMN `user_id` TO `account_id`;
10
+ --> statement-breakpoint
11
+ CREATE TABLE `users` (
12
+ `id` TEXT PRIMARY KEY NOT NULL,
13
+ `account_id` TEXT UNIQUE REFERENCES `accounts`(`id`) ON DELETE CASCADE,
14
+ `kind` TEXT NOT NULL DEFAULT 'human' CHECK (`kind` IN ('human', 'agent')),
15
+ `agent_image_id` TEXT REFERENCES `agent_images`(`id`) ON DELETE RESTRICT,
16
+ `created_by_user_id` TEXT REFERENCES `users`(`id`) ON DELETE SET NULL,
17
+ `first_name` TEXT NOT NULL,
18
+ `last_name` TEXT,
19
+ `username` TEXT NOT NULL UNIQUE,
20
+ `email` TEXT,
21
+ `phone` TEXT,
22
+ `photo_file_id` TEXT,
23
+ `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
24
+ CHECK (
25
+ (`kind` = 'human' AND `account_id` IS NOT NULL AND `agent_image_id` IS NULL)
26
+ OR (`kind` = 'agent' AND `account_id` IS NULL AND `agent_image_id` IS NOT NULL)
27
+ )
28
+ );
29
+ --> statement-breakpoint
30
+ CREATE TABLE `files` (
31
+ `id` TEXT PRIMARY KEY NOT NULL,
32
+ `user_id` TEXT NOT NULL REFERENCES `users`(`id`) ON DELETE CASCADE,
33
+ `storage_name` TEXT NOT NULL UNIQUE,
34
+ `content_type` TEXT NOT NULL,
35
+ `size` INTEGER NOT NULL,
36
+ `width` INTEGER NOT NULL,
37
+ `height` INTEGER NOT NULL,
38
+ `thumbhash` TEXT NOT NULL,
39
+ `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
40
+ );
41
+ --> statement-breakpoint
42
+ CREATE INDEX `files_user_idx` ON `files` (`user_id`);
@@ -0,0 +1,5 @@
1
+ ALTER TABLE `files` ADD COLUMN `uploaded_by_user_id` TEXT;
2
+ --> statement-breakpoint
3
+ UPDATE `files` SET `uploaded_by_user_id` = `user_id` WHERE `uploaded_by_user_id` IS NULL;
4
+ --> statement-breakpoint
5
+ ALTER TABLE `files` ADD COLUMN `is_public` INTEGER NOT NULL DEFAULT 0;
@@ -0,0 +1,565 @@
1
+ ALTER TABLE `accounts` ADD COLUMN `banned_at` TEXT;
2
+ --> statement-breakpoint
3
+ ALTER TABLE `accounts` ADD COLUMN `deleted_at` TEXT;
4
+ --> statement-breakpoint
5
+ ALTER TABLE `users` ADD COLUMN `title` TEXT;
6
+ --> statement-breakpoint
7
+ ALTER TABLE `users` ADD COLUMN `role` TEXT NOT NULL DEFAULT 'member' CHECK (`role` IN ('member', 'admin'));
8
+ --> statement-breakpoint
9
+ ALTER TABLE `users` ADD COLUMN `deleted_at` TEXT;
10
+ --> statement-breakpoint
11
+ ALTER TABLE `users` ADD COLUMN `last_access_at` TEXT;
12
+ --> statement-breakpoint
13
+ ALTER TABLE `users` ADD COLUMN `sync_sequence` INTEGER NOT NULL DEFAULT 0 CHECK (`sync_sequence` >= 0);
14
+ --> statement-breakpoint
15
+ ALTER TABLE `files` ADD COLUMN `kind` TEXT NOT NULL DEFAULT 'file' CHECK (`kind` IN ('file', 'photo', 'video', 'gif'));
16
+ --> statement-breakpoint
17
+ ALTER TABLE `files` ADD COLUMN `original_name` TEXT;
18
+ --> statement-breakpoint
19
+ ALTER TABLE `files` ADD COLUMN `duration_ms` INTEGER CHECK (`duration_ms` IS NULL OR `duration_ms` >= 0);
20
+ --> statement-breakpoint
21
+ UPDATE `files`
22
+ SET `kind` = CASE
23
+ WHEN `content_type` = 'image/gif' THEN 'gif'
24
+ WHEN `content_type` LIKE 'image/%' THEN 'photo'
25
+ WHEN `content_type` LIKE 'video/%' THEN 'video'
26
+ ELSE 'file'
27
+ END;
28
+ --> statement-breakpoint
29
+ CREATE TABLE `server_settings` (
30
+ `id` INTEGER PRIMARY KEY NOT NULL CHECK (`id` = 1),
31
+ `name` TEXT NOT NULL,
32
+ `title` TEXT,
33
+ `photo_file_id` TEXT REFERENCES `files`(`id`) ON DELETE SET NULL,
34
+ `sync_sequence` INTEGER NOT NULL DEFAULT 0 CHECK (`sync_sequence` >= 0),
35
+ `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
36
+ `updated_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
37
+ );
38
+ --> statement-breakpoint
39
+ CREATE TABLE `chats` (
40
+ `id` TEXT PRIMARY KEY NOT NULL,
41
+ `kind` TEXT NOT NULL CHECK (`kind` IN ('dm', 'public_channel', 'private_channel')),
42
+ `name` TEXT,
43
+ `slug` TEXT COLLATE NOCASE,
44
+ `topic` TEXT,
45
+ `created_by_user_id` TEXT REFERENCES `users`(`id`) ON DELETE SET NULL,
46
+ `dm_key` TEXT UNIQUE,
47
+ `pts` INTEGER NOT NULL DEFAULT 0 CHECK (`pts` >= 0),
48
+ `min_recoverable_pts` INTEGER NOT NULL DEFAULT 0 CHECK (`min_recoverable_pts` >= 0),
49
+ `last_message_sequence` INTEGER NOT NULL DEFAULT 0 CHECK (`last_message_sequence` >= 0),
50
+ `last_change_sequence` INTEGER NOT NULL DEFAULT 0 CHECK (`last_change_sequence` >= 0),
51
+ `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
52
+ `updated_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
53
+ `deleted_at` TEXT,
54
+ CHECK (
55
+ (`kind` = 'dm' AND `dm_key` IS NOT NULL)
56
+ OR (`kind` != 'dm' AND `dm_key` IS NULL)
57
+ ),
58
+ CHECK (
59
+ `kind` = 'dm'
60
+ OR (`name` IS NOT NULL AND length(trim(`name`)) > 0)
61
+ ),
62
+ CHECK (`min_recoverable_pts` <= `pts`)
63
+ );
64
+ --> statement-breakpoint
65
+ CREATE UNIQUE INDEX `chats_active_slug_unique_idx`
66
+ ON `chats` (`slug`)
67
+ WHERE `slug` IS NOT NULL AND `deleted_at` IS NULL;
68
+ --> statement-breakpoint
69
+ CREATE INDEX `chats_kind_deleted_idx` ON `chats` (`kind`, `deleted_at`);
70
+ --> statement-breakpoint
71
+ CREATE INDEX `chats_creator_idx` ON `chats` (`created_by_user_id`);
72
+ --> statement-breakpoint
73
+ CREATE INDEX `chats_last_change_sequence_idx` ON `chats` (`last_change_sequence`);
74
+ --> statement-breakpoint
75
+ CREATE TABLE `chat_members` (
76
+ `chat_id` TEXT NOT NULL REFERENCES `chats`(`id`) ON DELETE CASCADE,
77
+ `user_id` TEXT NOT NULL REFERENCES `users`(`id`) ON DELETE CASCADE,
78
+ `role` TEXT NOT NULL DEFAULT 'member' CHECK (`role` IN ('owner', 'admin', 'member')),
79
+ `membership_epoch` TEXT NOT NULL CHECK (length(`membership_epoch`) > 0),
80
+ `sync_sequence` INTEGER NOT NULL DEFAULT 0 CHECK (`sync_sequence` >= 0),
81
+ `joined_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
82
+ `updated_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
83
+ `left_at` TEXT,
84
+ PRIMARY KEY (`chat_id`, `user_id`)
85
+ );
86
+ --> statement-breakpoint
87
+ CREATE INDEX `chat_members_active_user_idx` ON `chat_members` (`user_id`, `left_at`, `chat_id`);
88
+ --> statement-breakpoint
89
+ CREATE INDEX `chat_members_chat_active_idx` ON `chat_members` (`chat_id`, `left_at`, `user_id`);
90
+ --> statement-breakpoint
91
+ CREATE INDEX `chat_members_sync_sequence_idx` ON `chat_members` (`sync_sequence`);
92
+ --> statement-breakpoint
93
+ CREATE TABLE `messages` (
94
+ `id` TEXT PRIMARY KEY NOT NULL,
95
+ `chat_id` TEXT NOT NULL REFERENCES `chats`(`id`) ON DELETE CASCADE,
96
+ `sequence` INTEGER NOT NULL CHECK (`sequence` > 0),
97
+ `change_pts` INTEGER NOT NULL CHECK (`change_pts` > 0),
98
+ `sender_user_id` TEXT REFERENCES `users`(`id`) ON DELETE SET NULL,
99
+ `kind` TEXT NOT NULL DEFAULT 'user' CHECK (`kind` IN ('user', 'automated')),
100
+ `text` TEXT NOT NULL DEFAULT '',
101
+ `quoted_message_id` TEXT REFERENCES `messages`(`id`) ON DELETE SET NULL,
102
+ `thread_root_message_id` TEXT REFERENCES `messages`(`id`) ON DELETE SET NULL,
103
+ `forwarded_from_message_id` TEXT REFERENCES `messages`(`id`) ON DELETE SET NULL,
104
+ `expires_at` TEXT,
105
+ `edited_at` TEXT,
106
+ `deleted_at` TEXT,
107
+ `deleted_by_user_id` TEXT REFERENCES `users`(`id`) ON DELETE SET NULL,
108
+ `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
109
+ `updated_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
110
+ UNIQUE (`chat_id`, `sequence`)
111
+ );
112
+ --> statement-breakpoint
113
+ CREATE INDEX `messages_chat_sequence_idx` ON `messages` (`chat_id`, `sequence`);
114
+ --> statement-breakpoint
115
+ CREATE INDEX `messages_chat_change_pts_idx` ON `messages` (`chat_id`, `change_pts`);
116
+ --> statement-breakpoint
117
+ CREATE INDEX `messages_sender_idx` ON `messages` (`sender_user_id`, `created_at`);
118
+ --> statement-breakpoint
119
+ CREATE INDEX `messages_quoted_idx` ON `messages` (`quoted_message_id`);
120
+ --> statement-breakpoint
121
+ CREATE INDEX `messages_thread_root_idx` ON `messages` (`thread_root_message_id`, `sequence`);
122
+ --> statement-breakpoint
123
+ CREATE INDEX `messages_forwarded_from_idx` ON `messages` (`forwarded_from_message_id`);
124
+ --> statement-breakpoint
125
+ CREATE INDEX `messages_expiry_idx` ON `messages` (`expires_at`) WHERE `expires_at` IS NOT NULL AND `deleted_at` IS NULL;
126
+ --> statement-breakpoint
127
+ CREATE TABLE `threads` (
128
+ `root_message_id` TEXT PRIMARY KEY NOT NULL REFERENCES `messages`(`id`) ON DELETE CASCADE,
129
+ `chat_id` TEXT NOT NULL REFERENCES `chats`(`id`) ON DELETE CASCADE,
130
+ `created_by_user_id` TEXT REFERENCES `users`(`id`) ON DELETE SET NULL,
131
+ `reply_count` INTEGER NOT NULL DEFAULT 0 CHECK (`reply_count` >= 0),
132
+ `last_pts` INTEGER NOT NULL DEFAULT 0 CHECK (`last_pts` >= 0),
133
+ `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
134
+ `updated_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
135
+ );
136
+ --> statement-breakpoint
137
+ CREATE INDEX `threads_chat_updated_idx` ON `threads` (`chat_id`, `updated_at`);
138
+ --> statement-breakpoint
139
+ CREATE TABLE `message_attachments` (
140
+ `message_id` TEXT NOT NULL REFERENCES `messages`(`id`) ON DELETE CASCADE,
141
+ `file_id` TEXT NOT NULL REFERENCES `files`(`id`) ON DELETE CASCADE,
142
+ `position` INTEGER NOT NULL DEFAULT 0 CHECK (`position` >= 0),
143
+ `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
144
+ PRIMARY KEY (`message_id`, `file_id`),
145
+ UNIQUE (`message_id`, `position`)
146
+ );
147
+ --> statement-breakpoint
148
+ CREATE INDEX `message_attachments_file_idx` ON `message_attachments` (`file_id`, `message_id`);
149
+ --> statement-breakpoint
150
+ CREATE TABLE `custom_emojis` (
151
+ `id` TEXT PRIMARY KEY NOT NULL,
152
+ `name` TEXT NOT NULL COLLATE NOCASE CHECK (length(trim(`name`)) > 0),
153
+ `file_id` TEXT NOT NULL REFERENCES `files`(`id`) ON DELETE CASCADE,
154
+ `created_by_user_id` TEXT REFERENCES `users`(`id`) ON DELETE SET NULL,
155
+ `sync_sequence` INTEGER NOT NULL DEFAULT 0 CHECK (`sync_sequence` >= 0),
156
+ `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
157
+ `updated_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
158
+ `deleted_at` TEXT
159
+ );
160
+ --> statement-breakpoint
161
+ CREATE UNIQUE INDEX `custom_emojis_active_name_unique_idx`
162
+ ON `custom_emojis` (`name`)
163
+ WHERE `deleted_at` IS NULL;
164
+ --> statement-breakpoint
165
+ CREATE INDEX `custom_emojis_sync_sequence_idx` ON `custom_emojis` (`sync_sequence`);
166
+ --> statement-breakpoint
167
+ CREATE TABLE `reactions` (
168
+ `message_id` TEXT NOT NULL REFERENCES `messages`(`id`) ON DELETE CASCADE,
169
+ `user_id` TEXT NOT NULL REFERENCES `users`(`id`) ON DELETE CASCADE,
170
+ `reaction_key` TEXT NOT NULL CHECK (length(`reaction_key`) > 0),
171
+ `emoji` TEXT,
172
+ `custom_emoji_id` TEXT REFERENCES `custom_emojis`(`id`) ON DELETE CASCADE,
173
+ `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
174
+ PRIMARY KEY (`message_id`, `user_id`, `reaction_key`),
175
+ CHECK (
176
+ (`emoji` IS NOT NULL
177
+ AND length(`emoji`) > 0
178
+ AND `custom_emoji_id` IS NULL
179
+ AND `reaction_key` = 'unicode:' || `emoji`)
180
+ OR (`emoji` IS NULL
181
+ AND `custom_emoji_id` IS NOT NULL
182
+ AND `reaction_key` = 'custom:' || `custom_emoji_id`)
183
+ )
184
+ );
185
+ --> statement-breakpoint
186
+ CREATE INDEX `reactions_message_key_idx` ON `reactions` (`message_id`, `reaction_key`);
187
+ --> statement-breakpoint
188
+ CREATE INDEX `reactions_user_idx` ON `reactions` (`user_id`, `created_at`);
189
+ --> statement-breakpoint
190
+ CREATE TABLE `user_chat_preferences` (
191
+ `user_id` TEXT NOT NULL REFERENCES `users`(`id`) ON DELETE CASCADE,
192
+ `chat_id` TEXT NOT NULL REFERENCES `chats`(`id`) ON DELETE CASCADE,
193
+ `starred` INTEGER NOT NULL DEFAULT 0 CHECK (`starred` IN (0, 1)),
194
+ `sort_order` INTEGER NOT NULL DEFAULT 0,
195
+ `sync_sequence` INTEGER NOT NULL DEFAULT 0 CHECK (`sync_sequence` >= 0),
196
+ `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
197
+ `updated_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
198
+ PRIMARY KEY (`user_id`, `chat_id`)
199
+ );
200
+ --> statement-breakpoint
201
+ CREATE INDEX `user_chat_preferences_order_idx`
202
+ ON `user_chat_preferences` (`user_id`, `starred`, `sort_order`, `chat_id`);
203
+ --> statement-breakpoint
204
+ CREATE INDEX `user_chat_preferences_sync_sequence_idx`
205
+ ON `user_chat_preferences` (`sync_sequence`);
206
+ --> statement-breakpoint
207
+ CREATE TABLE `server_sync_state` (
208
+ `id` INTEGER PRIMARY KEY NOT NULL CHECK (`id` = 1),
209
+ `generation` TEXT NOT NULL CHECK (length(`generation`) > 0),
210
+ `sequence` INTEGER NOT NULL DEFAULT 0 CHECK (`sequence` >= 0),
211
+ `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
212
+ `updated_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
213
+ );
214
+ --> statement-breakpoint
215
+ CREATE TABLE `chat_updates` (
216
+ `chat_id` TEXT NOT NULL REFERENCES `chats`(`id`) ON DELETE CASCADE,
217
+ `pts` INTEGER NOT NULL CHECK (`pts` > 0),
218
+ `pts_count` INTEGER NOT NULL DEFAULT 1 CHECK (`pts_count` > 0),
219
+ `kind` TEXT NOT NULL,
220
+ `entity_id` TEXT,
221
+ `payload_json` TEXT,
222
+ `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
223
+ PRIMARY KEY (`chat_id`, `pts`)
224
+ );
225
+ --> statement-breakpoint
226
+ CREATE INDEX `chat_updates_created_idx` ON `chat_updates` (`created_at`);
227
+ --> statement-breakpoint
228
+ CREATE TABLE `client_mutations` (
229
+ `actor_user_id` TEXT NOT NULL REFERENCES `users`(`id`) ON DELETE CASCADE,
230
+ `scope` TEXT NOT NULL,
231
+ `client_mutation_id` TEXT NOT NULL,
232
+ `result_json` TEXT NOT NULL,
233
+ `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
234
+ PRIMARY KEY (`actor_user_id`, `scope`, `client_mutation_id`)
235
+ );
236
+ --> statement-breakpoint
237
+ CREATE INDEX `client_mutations_created_idx` ON `client_mutations` (`created_at`);
238
+ --> statement-breakpoint
239
+ CREATE TABLE `sync_events` (
240
+ `id` INTEGER PRIMARY KEY AUTOINCREMENT,
241
+ `sequence` INTEGER NOT NULL CHECK (`sequence` > 0),
242
+ `kind` TEXT NOT NULL,
243
+ `chat_id` TEXT REFERENCES `chats`(`id`) ON DELETE SET NULL,
244
+ `chat_pts` INTEGER CHECK (`chat_pts` IS NULL OR `chat_pts` >= 0),
245
+ `entity_id` TEXT,
246
+ `actor_user_id` TEXT REFERENCES `users`(`id`) ON DELETE SET NULL,
247
+ `target_user_id` TEXT REFERENCES `users`(`id`) ON DELETE SET NULL,
248
+ `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
249
+ );
250
+ --> statement-breakpoint
251
+ CREATE INDEX `sync_events_sequence_idx` ON `sync_events` (`sequence`, `id`);
252
+ --> statement-breakpoint
253
+ CREATE INDEX `sync_events_chat_idx` ON `sync_events` (`chat_id`, `chat_pts`, `id`);
254
+ --> statement-breakpoint
255
+ CREATE INDEX `sync_events_target_idx` ON `sync_events` (`target_user_id`, `sequence`, `id`);
256
+ --> statement-breakpoint
257
+ CREATE INDEX `sync_events_entity_idx` ON `sync_events` (`entity_id`, `sequence`);
258
+ --> statement-breakpoint
259
+ CREATE INDEX `users_sync_sequence_idx` ON `users` (`sync_sequence`);
260
+ --> statement-breakpoint
261
+ CREATE INDEX `users_last_access_idx` ON `users` (`last_access_at`);
262
+ --> statement-breakpoint
263
+ CREATE INDEX `accounts_status_idx` ON `accounts` (`active`, `banned_at`, `deleted_at`);
264
+ --> statement-breakpoint
265
+ INSERT OR IGNORE INTO `server_settings` (`id`, `name`) VALUES (1, 'Happy (2)');
266
+ --> statement-breakpoint
267
+ UPDATE `users`
268
+ SET `role` = 'admin'
269
+ WHERE `id` = (
270
+ SELECT `u`.`id`
271
+ FROM `users` AS `u`
272
+ INNER JOIN `accounts` AS `a` ON `a`.`id` = `u`.`account_id`
273
+ WHERE `a`.`active` = 1
274
+ AND `a`.`banned_at` IS NULL
275
+ AND `a`.`deleted_at` IS NULL
276
+ AND `u`.`deleted_at` IS NULL
277
+ ORDER BY `u`.`created_at`, `u`.`id`
278
+ LIMIT 1
279
+ );
280
+ --> statement-breakpoint
281
+ CREATE VIRTUAL TABLE `messages_fts` USING fts5(
282
+ `text`,
283
+ content = 'messages',
284
+ content_rowid = 'rowid',
285
+ tokenize = 'trigram'
286
+ );
287
+ --> statement-breakpoint
288
+ CREATE TRIGGER `messages_fts_ai`
289
+ AFTER INSERT ON `messages`
290
+ WHEN `new`.`deleted_at` IS NULL
291
+ BEGIN
292
+ INSERT INTO `messages_fts` (`rowid`, `text`)
293
+ VALUES (`new`.`rowid`, COALESCE(`new`.`text`, ''));
294
+ END;
295
+ --> statement-breakpoint
296
+ CREATE TRIGGER `messages_fts_ad`
297
+ AFTER DELETE ON `messages`
298
+ WHEN `old`.`deleted_at` IS NULL
299
+ BEGIN
300
+ INSERT INTO `messages_fts` (`messages_fts`, `rowid`, `text`)
301
+ VALUES ('delete', `old`.`rowid`, COALESCE(`old`.`text`, ''));
302
+ END;
303
+ --> statement-breakpoint
304
+ CREATE TRIGGER `messages_fts_au_delete`
305
+ AFTER UPDATE ON `messages`
306
+ WHEN `old`.`deleted_at` IS NULL
307
+ BEGIN
308
+ INSERT INTO `messages_fts` (`messages_fts`, `rowid`, `text`)
309
+ VALUES ('delete', `old`.`rowid`, COALESCE(`old`.`text`, ''));
310
+ END;
311
+ --> statement-breakpoint
312
+ CREATE TRIGGER `messages_fts_au_insert`
313
+ AFTER UPDATE ON `messages`
314
+ WHEN `new`.`deleted_at` IS NULL
315
+ BEGIN
316
+ INSERT INTO `messages_fts` (`rowid`, `text`)
317
+ VALUES (`new`.`rowid`, COALESCE(`new`.`text`, ''));
318
+ END;
319
+ --> statement-breakpoint
320
+ INSERT INTO `messages_fts` (`rowid`, `text`)
321
+ SELECT `rowid`, COALESCE(`text`, '')
322
+ FROM `messages`
323
+ WHERE `deleted_at` IS NULL;
324
+ --> statement-breakpoint
325
+ CREATE VIRTUAL TABLE `chats_fts` USING fts5(
326
+ `name`,
327
+ `slug`,
328
+ `topic`,
329
+ content = 'chats',
330
+ content_rowid = 'rowid',
331
+ tokenize = 'trigram'
332
+ );
333
+ --> statement-breakpoint
334
+ CREATE TRIGGER `chats_fts_ai`
335
+ AFTER INSERT ON `chats`
336
+ WHEN `new`.`deleted_at` IS NULL
337
+ BEGIN
338
+ INSERT INTO `chats_fts` (`rowid`, `name`, `slug`, `topic`)
339
+ VALUES (
340
+ `new`.`rowid`,
341
+ COALESCE(`new`.`name`, ''),
342
+ COALESCE(`new`.`slug`, ''),
343
+ COALESCE(`new`.`topic`, '')
344
+ );
345
+ END;
346
+ --> statement-breakpoint
347
+ CREATE TRIGGER `chats_fts_ad`
348
+ AFTER DELETE ON `chats`
349
+ WHEN `old`.`deleted_at` IS NULL
350
+ BEGIN
351
+ INSERT INTO `chats_fts` (`chats_fts`, `rowid`, `name`, `slug`, `topic`)
352
+ VALUES (
353
+ 'delete',
354
+ `old`.`rowid`,
355
+ COALESCE(`old`.`name`, ''),
356
+ COALESCE(`old`.`slug`, ''),
357
+ COALESCE(`old`.`topic`, '')
358
+ );
359
+ END;
360
+ --> statement-breakpoint
361
+ CREATE TRIGGER `chats_fts_au_delete`
362
+ AFTER UPDATE ON `chats`
363
+ WHEN `old`.`deleted_at` IS NULL
364
+ BEGIN
365
+ INSERT INTO `chats_fts` (`chats_fts`, `rowid`, `name`, `slug`, `topic`)
366
+ VALUES (
367
+ 'delete',
368
+ `old`.`rowid`,
369
+ COALESCE(`old`.`name`, ''),
370
+ COALESCE(`old`.`slug`, ''),
371
+ COALESCE(`old`.`topic`, '')
372
+ );
373
+ END;
374
+ --> statement-breakpoint
375
+ CREATE TRIGGER `chats_fts_au_insert`
376
+ AFTER UPDATE ON `chats`
377
+ WHEN `new`.`deleted_at` IS NULL
378
+ BEGIN
379
+ INSERT INTO `chats_fts` (`rowid`, `name`, `slug`, `topic`)
380
+ VALUES (
381
+ `new`.`rowid`,
382
+ COALESCE(`new`.`name`, ''),
383
+ COALESCE(`new`.`slug`, ''),
384
+ COALESCE(`new`.`topic`, '')
385
+ );
386
+ END;
387
+ --> statement-breakpoint
388
+ INSERT INTO `chats_fts` (`rowid`, `name`, `slug`, `topic`)
389
+ SELECT
390
+ `rowid`,
391
+ COALESCE(`name`, ''),
392
+ COALESCE(`slug`, ''),
393
+ COALESCE(`topic`, '')
394
+ FROM `chats`
395
+ WHERE `deleted_at` IS NULL;
396
+ --> statement-breakpoint
397
+ CREATE VIRTUAL TABLE `users_fts` USING fts5(
398
+ `first_name`,
399
+ `last_name`,
400
+ `username`,
401
+ `title`,
402
+ content = 'users',
403
+ content_rowid = 'rowid',
404
+ tokenize = 'trigram'
405
+ );
406
+ --> statement-breakpoint
407
+ CREATE TRIGGER `users_fts_ai`
408
+ AFTER INSERT ON `users`
409
+ WHEN `new`.`deleted_at` IS NULL
410
+ AND EXISTS (
411
+ SELECT 1
412
+ FROM `accounts`
413
+ WHERE `id` = `new`.`account_id`
414
+ AND `active` = 1
415
+ AND `banned_at` IS NULL
416
+ AND `deleted_at` IS NULL
417
+ )
418
+ BEGIN
419
+ INSERT INTO `users_fts` (`rowid`, `first_name`, `last_name`, `username`, `title`)
420
+ VALUES (
421
+ `new`.`rowid`,
422
+ COALESCE(`new`.`first_name`, ''),
423
+ COALESCE(`new`.`last_name`, ''),
424
+ COALESCE(`new`.`username`, ''),
425
+ COALESCE(`new`.`title`, '')
426
+ );
427
+ END;
428
+ --> statement-breakpoint
429
+ CREATE TRIGGER `users_fts_ad`
430
+ AFTER DELETE ON `users`
431
+ WHEN `old`.`deleted_at` IS NULL
432
+ AND EXISTS (
433
+ SELECT 1
434
+ FROM `accounts`
435
+ WHERE `id` = `old`.`account_id`
436
+ AND `active` = 1
437
+ AND `banned_at` IS NULL
438
+ AND `deleted_at` IS NULL
439
+ )
440
+ BEGIN
441
+ INSERT INTO `users_fts` (`users_fts`, `rowid`, `first_name`, `last_name`, `username`, `title`)
442
+ VALUES (
443
+ 'delete',
444
+ `old`.`rowid`,
445
+ COALESCE(`old`.`first_name`, ''),
446
+ COALESCE(`old`.`last_name`, ''),
447
+ COALESCE(`old`.`username`, ''),
448
+ COALESCE(`old`.`title`, '')
449
+ );
450
+ END;
451
+ --> statement-breakpoint
452
+ CREATE TRIGGER `users_fts_au_delete`
453
+ AFTER UPDATE ON `users`
454
+ WHEN `old`.`deleted_at` IS NULL
455
+ AND EXISTS (
456
+ SELECT 1
457
+ FROM `accounts`
458
+ WHERE `id` = `old`.`account_id`
459
+ AND `active` = 1
460
+ AND `banned_at` IS NULL
461
+ AND `deleted_at` IS NULL
462
+ )
463
+ BEGIN
464
+ INSERT INTO `users_fts` (`users_fts`, `rowid`, `first_name`, `last_name`, `username`, `title`)
465
+ VALUES (
466
+ 'delete',
467
+ `old`.`rowid`,
468
+ COALESCE(`old`.`first_name`, ''),
469
+ COALESCE(`old`.`last_name`, ''),
470
+ COALESCE(`old`.`username`, ''),
471
+ COALESCE(`old`.`title`, '')
472
+ );
473
+ END;
474
+ --> statement-breakpoint
475
+ CREATE TRIGGER `users_fts_au_insert`
476
+ AFTER UPDATE ON `users`
477
+ WHEN `new`.`deleted_at` IS NULL
478
+ AND EXISTS (
479
+ SELECT 1
480
+ FROM `accounts`
481
+ WHERE `id` = `new`.`account_id`
482
+ AND `active` = 1
483
+ AND `banned_at` IS NULL
484
+ AND `deleted_at` IS NULL
485
+ )
486
+ BEGIN
487
+ INSERT INTO `users_fts` (`rowid`, `first_name`, `last_name`, `username`, `title`)
488
+ VALUES (
489
+ `new`.`rowid`,
490
+ COALESCE(`new`.`first_name`, ''),
491
+ COALESCE(`new`.`last_name`, ''),
492
+ COALESCE(`new`.`username`, ''),
493
+ COALESCE(`new`.`title`, '')
494
+ );
495
+ END;
496
+ --> statement-breakpoint
497
+ CREATE TRIGGER `accounts_users_fts_bu`
498
+ BEFORE UPDATE OF `active`, `banned_at`, `deleted_at` ON `accounts`
499
+ WHEN `old`.`active` = 1
500
+ AND `old`.`banned_at` IS NULL
501
+ AND `old`.`deleted_at` IS NULL
502
+ BEGIN
503
+ INSERT INTO `users_fts` (`users_fts`, `rowid`, `first_name`, `last_name`, `username`, `title`)
504
+ SELECT
505
+ 'delete',
506
+ `u`.`rowid`,
507
+ COALESCE(`u`.`first_name`, ''),
508
+ COALESCE(`u`.`last_name`, ''),
509
+ COALESCE(`u`.`username`, ''),
510
+ COALESCE(`u`.`title`, '')
511
+ FROM `users` AS `u`
512
+ WHERE `u`.`account_id` = `old`.`id`
513
+ AND `u`.`deleted_at` IS NULL;
514
+ END;
515
+ --> statement-breakpoint
516
+ CREATE TRIGGER `accounts_users_fts_au`
517
+ AFTER UPDATE OF `active`, `banned_at`, `deleted_at` ON `accounts`
518
+ WHEN `new`.`active` = 1
519
+ AND `new`.`banned_at` IS NULL
520
+ AND `new`.`deleted_at` IS NULL
521
+ BEGIN
522
+ INSERT INTO `users_fts` (`rowid`, `first_name`, `last_name`, `username`, `title`)
523
+ SELECT
524
+ `u`.`rowid`,
525
+ COALESCE(`u`.`first_name`, ''),
526
+ COALESCE(`u`.`last_name`, ''),
527
+ COALESCE(`u`.`username`, ''),
528
+ COALESCE(`u`.`title`, '')
529
+ FROM `users` AS `u`
530
+ WHERE `u`.`account_id` = `new`.`id`
531
+ AND `u`.`deleted_at` IS NULL;
532
+ END;
533
+ --> statement-breakpoint
534
+ CREATE TRIGGER `accounts_users_fts_bd`
535
+ BEFORE DELETE ON `accounts`
536
+ WHEN `old`.`active` = 1
537
+ AND `old`.`banned_at` IS NULL
538
+ AND `old`.`deleted_at` IS NULL
539
+ BEGIN
540
+ INSERT INTO `users_fts` (`users_fts`, `rowid`, `first_name`, `last_name`, `username`, `title`)
541
+ SELECT
542
+ 'delete',
543
+ `u`.`rowid`,
544
+ COALESCE(`u`.`first_name`, ''),
545
+ COALESCE(`u`.`last_name`, ''),
546
+ COALESCE(`u`.`username`, ''),
547
+ COALESCE(`u`.`title`, '')
548
+ FROM `users` AS `u`
549
+ WHERE `u`.`account_id` = `old`.`id`
550
+ AND `u`.`deleted_at` IS NULL;
551
+ END;
552
+ --> statement-breakpoint
553
+ INSERT INTO `users_fts` (`rowid`, `first_name`, `last_name`, `username`, `title`)
554
+ SELECT
555
+ `u`.`rowid`,
556
+ COALESCE(`u`.`first_name`, ''),
557
+ COALESCE(`u`.`last_name`, ''),
558
+ COALESCE(`u`.`username`, ''),
559
+ COALESCE(`u`.`title`, '')
560
+ FROM `users` AS `u`
561
+ INNER JOIN `accounts` AS `a` ON `a`.`id` = `u`.`account_id`
562
+ WHERE `u`.`deleted_at` IS NULL
563
+ AND `a`.`active` = 1
564
+ AND `a`.`banned_at` IS NULL
565
+ AND `a`.`deleted_at` IS NULL;