@maudecode/kanvil 0.2.1 → 0.4.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 (301) hide show
  1. package/apps/server/.env.example +19 -0
  2. package/apps/server/dist/auth-Cuo7ECLh.mjs +7770 -0
  3. package/apps/server/dist/client.mjs +884 -0
  4. package/apps/server/dist/{config-CbNqtJEj.mjs → config-DtNfVSnB.mjs} +28 -133
  5. package/apps/server/dist/index.mjs +2503 -295
  6. package/apps/server/dist/instance-CCeXRJ6m.mjs +133 -0
  7. package/apps/server/dist/migrate.mjs +1 -1
  8. package/apps/server/dist/recover.mjs +5 -4
  9. package/apps/server/dist/src-tQ82UI8k.mjs +4818 -0
  10. package/apps/server/drizzle/0014_inbox_dismissal.sql +1 -0
  11. package/apps/server/drizzle/0015_notification_categories.sql +14 -0
  12. package/apps/server/drizzle/0016_ticket_resources.sql +19 -0
  13. package/apps/server/drizzle/0017_project_backgrounds.sql +3 -0
  14. package/apps/server/drizzle/0018_delivery_outbox.sql +65 -0
  15. package/apps/server/drizzle/0019_retire_push_deliveries.sql +1 -0
  16. package/apps/server/drizzle/0020_calendar_feeds.sql +16 -0
  17. package/apps/server/drizzle/0021_staged_uploads.sql +14 -0
  18. package/apps/server/drizzle/0022_manual_order.sql +6 -0
  19. package/apps/server/drizzle/0023_workspace_invitations.sql +22 -0
  20. package/apps/server/drizzle/0024_workflow_states.sql +39 -0
  21. package/apps/server/drizzle/0025_workspace_labels.sql +10 -0
  22. package/apps/server/drizzle/0026_public_read.sql +1 -0
  23. package/apps/server/drizzle/0027_custom_fields.sql +16 -0
  24. package/apps/server/drizzle/0028_project_lifecycle.sql +11 -0
  25. package/apps/server/drizzle/0029_ticket_relocation.sql +16 -0
  26. package/apps/server/drizzle/0030_repository_connections.sql +39 -0
  27. package/apps/server/drizzle/0031_repository_providers.sql +3 -0
  28. package/apps/server/drizzle/0032_workspace_ownership.sql +11 -0
  29. package/apps/server/drizzle/0033_import_runs.sql +38 -0
  30. package/apps/server/drizzle/0034_issue_sync.sql +38 -0
  31. package/apps/server/drizzle/0035_account_deletion.sql +9 -0
  32. package/apps/server/drizzle/0036_workspace_roles.sql +16 -0
  33. package/apps/server/drizzle/0037_email_code_owner.sql +14 -0
  34. package/apps/server/drizzle/0038_time_entries.sql +19 -0
  35. package/apps/server/drizzle/meta/0014_snapshot.json +4246 -0
  36. package/apps/server/drizzle/meta/0015_snapshot.json +4297 -0
  37. package/apps/server/drizzle/meta/0016_snapshot.json +4443 -0
  38. package/apps/server/drizzle/meta/0017_snapshot.json +4468 -0
  39. package/apps/server/drizzle/meta/0018_snapshot.json +4948 -0
  40. package/apps/server/drizzle/meta/0019_snapshot.json +4826 -0
  41. package/apps/server/drizzle/meta/0020_snapshot.json +4947 -0
  42. package/apps/server/drizzle/meta/0021_snapshot.json +5059 -0
  43. package/apps/server/drizzle/meta/0022_snapshot.json +5094 -0
  44. package/apps/server/drizzle/meta/0023_snapshot.json +5267 -0
  45. package/apps/server/drizzle/meta/0024_snapshot.json +5405 -0
  46. package/apps/server/drizzle/meta/0025_snapshot.json +5474 -0
  47. package/apps/server/drizzle/meta/0026_snapshot.json +5481 -0
  48. package/apps/server/drizzle/meta/0027_snapshot.json +5605 -0
  49. package/apps/server/drizzle/meta/0028_snapshot.json +5699 -0
  50. package/apps/server/drizzle/meta/0029_snapshot.json +5809 -0
  51. package/apps/server/drizzle/meta/0030_snapshot.json +6066 -0
  52. package/apps/server/drizzle/meta/0031_snapshot.json +6074 -0
  53. package/apps/server/drizzle/meta/0032_snapshot.json +6100 -0
  54. package/apps/server/drizzle/meta/0033_snapshot.json +6406 -0
  55. package/apps/server/drizzle/meta/0034_snapshot.json +6698 -0
  56. package/apps/server/drizzle/meta/0035_snapshot.json +6704 -0
  57. package/apps/server/drizzle/meta/0036_snapshot.json +6825 -0
  58. package/apps/server/drizzle/meta/0037_snapshot.json +6825 -0
  59. package/apps/server/drizzle/meta/0038_snapshot.json +6998 -0
  60. package/apps/server/drizzle/meta/_journal.json +175 -0
  61. package/apps/web/dist/assets/CompositeItem-DgnfVvrF.js +1 -0
  62. package/apps/web/dist/assets/Trans-f2VYVS9z.js +1 -0
  63. package/apps/web/dist/assets/abnfDiagram-WEYOIA3C-DTOx8N4B.js +1 -0
  64. package/apps/web/dist/assets/admin-settings-DBZL4siY.js +1 -0
  65. package/apps/web/dist/assets/arc-Y1ARJVZ4.js +1 -0
  66. package/apps/web/dist/assets/architecture-WOLXFQ4H-DlC3p5z3.js +1 -0
  67. package/apps/web/dist/assets/architectureDiagram-ZHVYKT53-DooN3Z58.js +36 -0
  68. package/apps/web/dist/assets/archive-restore-CGuLxoHC.js +1 -0
  69. package/apps/web/dist/assets/array-BifhSqXX.js +1 -0
  70. package/apps/web/dist/assets/az-AZ-DesqXNg5.js +1 -0
  71. package/apps/web/dist/assets/az-BE5iqNIE.js +1 -0
  72. package/apps/web/dist/assets/az-D-kj4lmf.js +1 -0
  73. package/apps/web/dist/assets/blockDiagram-RJAE7QA3-CD5AgY4U.js +140 -0
  74. package/apps/web/dist/assets/c4Diagram-XDPPPE54-CTDOcLuN.js +38 -0
  75. package/apps/web/dist/assets/channel-BhHvU4I-.js +1 -0
  76. package/apps/web/dist/assets/chunk-2E7WHVMD-D9qnBqTV.js +88 -0
  77. package/apps/web/dist/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  78. package/apps/web/dist/assets/chunk-4EMNKR2T-Kz5JiJ85.js +1 -0
  79. package/apps/web/dist/assets/chunk-55XCU76K-DnKiFpYM.js +1 -0
  80. package/apps/web/dist/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
  81. package/apps/web/dist/assets/chunk-7S6XSTFO-CpdNd6Ke.js +2 -0
  82. package/apps/web/dist/assets/chunk-AQDTSKZB-CpyuSWt8.js +72 -0
  83. package/apps/web/dist/assets/chunk-DSNLSHJZ-DTC3y9rb.js +129 -0
  84. package/apps/web/dist/assets/chunk-DUW6YSOI-Dgx8z5s3.js +1 -0
  85. package/apps/web/dist/assets/chunk-HAGFOTED-Bv8PrMYK.js +62 -0
  86. package/apps/web/dist/assets/chunk-HNE4Q36P-CDDJ_yRa.js +1 -0
  87. package/apps/web/dist/assets/chunk-J5ZVWO5B-oDCd-gWO.js +1 -0
  88. package/apps/web/dist/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  89. package/apps/web/dist/assets/chunk-NGNAAXSQ-C2Wy9Xmz.js +136 -0
  90. package/apps/web/dist/assets/chunk-NQOKRVIF-lNtnsWHS.js +213 -0
  91. package/apps/web/dist/assets/chunk-UHW7PFBP-D79ptlTN.js +1 -0
  92. package/apps/web/dist/assets/chunk-VQ5W62QI-B8hWFCiM.js +1 -0
  93. package/apps/web/dist/assets/chunk-WQQL4CDK-DAGuWzS3.js +10 -0
  94. package/apps/web/dist/assets/chunk-XXDRQBXY-CnbRkih_.js +1 -0
  95. package/apps/web/dist/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  96. package/apps/web/dist/assets/chunk-YZO67HFG-C0ptzlKO.js +1 -0
  97. package/apps/web/dist/assets/chunk-ZAUX2LTX-ah8U5xoJ.js +1 -0
  98. package/apps/web/dist/assets/chunk-ZCHMQSOR-DYqATOIZ.js +2 -0
  99. package/apps/web/dist/assets/classDiagram-v2-4MYWR3UA-DYytA-ua.js +217 -0
  100. package/apps/web/dist/assets/core-jXc03Sty.js +1 -0
  101. package/apps/web/dist/assets/corner-left-up-BCro--Gl.js +1 -0
  102. package/apps/web/dist/assets/cose-bilkent-JH36ORCC-lWVj4msc.js +1 -0
  103. package/apps/web/dist/assets/cynefin-EF2NZ3EQ-Xy6e6m1E.js +1 -0
  104. package/apps/web/dist/assets/cynefinDiagram-WF24UDRP-BYarZJSm.js +62 -0
  105. package/apps/web/dist/assets/cytoscape.esm-BegBNzOV.js +321 -0
  106. package/apps/web/dist/assets/dagre-NK4GIZVX-WLvvUY1o.js +4 -0
  107. package/apps/web/dist/assets/de-DAv77-wP.js +1 -0
  108. package/apps/web/dist/assets/de-DE-BIGY9SNm.js +1 -0
  109. package/apps/web/dist/assets/de-DLGjUGf_.js +1 -0
  110. package/apps/web/dist/assets/default-BgvtI7HK.js +56 -0
  111. package/apps/web/dist/assets/defaultLocale-BFoDCU3G.js +1 -0
  112. package/apps/web/dist/assets/delivery-settings-CZOtb4X8.js +1 -0
  113. package/apps/web/dist/assets/diagram-CBK3MWTC-D6PtxkLg.js +24 -0
  114. package/apps/web/dist/assets/diagram-I5XIIV2D-DTOKQwIY.js +24 -0
  115. package/apps/web/dist/assets/diagram-ODIL2UCW-BmERt0Xu.js +30 -0
  116. package/apps/web/dist/assets/diagram-PFBEJUXE-WDUe08eD.js +3 -0
  117. package/apps/web/dist/assets/diagram-RJA3I4VV-B2K-NLGG.js +41 -0
  118. package/apps/web/dist/assets/diagram-TYUNFSNR-BLf7PpV7.js +200 -0
  119. package/apps/web/dist/assets/dist-CumnGVmJ.js +1 -0
  120. package/apps/web/dist/assets/ebnfDiagram-V4P3TTPT-DwBUQs9p.js +1 -0
  121. package/apps/web/dist/assets/el-CG6Xy42v.js +1 -0
  122. package/apps/web/dist/assets/el-D2ypddWn.js +1 -0
  123. package/apps/web/dist/assets/el-GR-D2TjImt0.js +1 -0
  124. package/apps/web/dist/assets/elk-QONTBCTQ-AuT8PinL.js +27 -0
  125. package/apps/web/dist/assets/ellipsis-ZJM26JNS.js +1 -0
  126. package/apps/web/dist/assets/en-EnSRisMz.js +1 -0
  127. package/apps/web/dist/assets/en-US-DKYSujv3.js +1 -0
  128. package/apps/web/dist/assets/erDiagram-KYQIGQAA-h--u4Eo6.js +99 -0
  129. package/apps/web/dist/assets/es-B_49BMhR.js +1 -0
  130. package/apps/web/dist/assets/es-Bbj5WuMM.js +1 -0
  131. package/apps/web/dist/assets/es-ES-C_fRqLGU.js +1 -0
  132. package/apps/web/dist/assets/eventmodeling-K75KTNOO-CW4hDt1j.js +1 -0
  133. package/apps/web/dist/assets/flowDiagram-IUGLLWBU-BGUscnNP.js +1 -0
  134. package/apps/web/dist/assets/forms-C3pNy-qY.js +1 -0
  135. package/apps/web/dist/assets/fr-B-WmPGZD.js +1 -0
  136. package/apps/web/dist/assets/fr-CjuIKc1o.js +1 -0
  137. package/apps/web/dist/assets/fr-FR-_tnQsn4j.js +1 -0
  138. package/apps/web/dist/assets/ganttDiagram-R7GPNTJY-CB3lsQvj.js +292 -0
  139. package/apps/web/dist/assets/gitGraph-VSP46ZUC-Hu-kvdCR.js +1 -0
  140. package/apps/web/dist/assets/gitGraphDiagram-PDYL7XHY-DCuY3C1Q.js +106 -0
  141. package/apps/web/dist/assets/graphlib-DS17s2tU.js +1 -0
  142. package/apps/web/dist/assets/hi-BVVrZ-zZ.js +1 -0
  143. package/apps/web/dist/assets/hi-DvoDcUpL.js +1 -0
  144. package/apps/web/dist/assets/hi-IN-CcmFsZYy.js +1 -0
  145. package/apps/web/dist/assets/highlight-CKyEM4jx.js +5 -0
  146. package/apps/web/dist/assets/id-BhNWOQnp.js +1 -0
  147. package/apps/web/dist/assets/id-CPASBZ2r.js +1 -0
  148. package/apps/web/dist/assets/id-ID-C59tC61D.js +1 -0
  149. package/apps/web/dist/assets/index-BIuqxnJn.js +17 -0
  150. package/apps/web/dist/assets/index-DyQNFS69.css +2 -0
  151. package/apps/web/dist/assets/info-OHQRW6UA-Cc8VwTsk.js +1 -0
  152. package/apps/web/dist/assets/infoDiagram-MVDRKAX5-KIMOx55J.js +2 -0
  153. package/apps/web/dist/assets/init-C-OQMol4.js +1 -0
  154. package/apps/web/dist/assets/invitations-D5unaga2.js +1 -0
  155. package/apps/web/dist/assets/isSameWeek-2ftYGvBT.js +1 -0
  156. package/apps/web/dist/assets/ishikawaDiagram-HPEHV2GE-CAou726L.js +70 -0
  157. package/apps/web/dist/assets/it-Cav3_-xd.js +1 -0
  158. package/apps/web/dist/assets/it-Cd7u97Jd.js +1 -0
  159. package/apps/web/dist/assets/it-IT-BAP5O3gK.js +1 -0
  160. package/apps/web/dist/assets/item-Cj8xpMLk.js +1 -0
  161. package/apps/web/dist/assets/ja-DTmZE0Qe.js +1 -0
  162. package/apps/web/dist/assets/ja-JP-vQa7mEdh.js +1 -0
  163. package/apps/web/dist/assets/ja-LkOrjegp.js +1 -0
  164. package/apps/web/dist/assets/journeyDiagram-BOSHW7O7-YbJuPYDH.js +139 -0
  165. package/apps/web/dist/assets/kanban-definition-FNSA4HC5-nuRnm9y8.js +89 -0
  166. package/apps/web/dist/assets/katex-B_JcIwqj.js +257 -0
  167. package/apps/web/dist/assets/ko-BuYCMOUj.js +1 -0
  168. package/apps/web/dist/assets/ko-DPpXw683.js +1 -0
  169. package/apps/web/dist/assets/ko-KR-CXlpmX0-.js +1 -0
  170. package/apps/web/dist/assets/label-settings-B89Ehf78.js +1 -0
  171. package/apps/web/dist/assets/line-WsxZYwZr.js +1 -0
  172. package/apps/web/dist/assets/linear-C9iwaMOi.js +1 -0
  173. package/apps/web/dist/assets/lucide-DIlszs-T.js +1 -0
  174. package/apps/web/dist/assets/markdown-blocks-DSEA68s5.js +2 -0
  175. package/apps/web/dist/assets/member-directory-48yD01yN.js +1 -0
  176. package/apps/web/dist/assets/mermaid-parser.core-B5c-1CnP.js +7 -0
  177. package/apps/web/dist/assets/mermaid.core-vGVkgzA3.js +44 -0
  178. package/apps/web/dist/assets/mindmap-definition-6OY57UG3-uooJyUak.js +98 -0
  179. package/apps/web/dist/assets/mk-BZ2Rg2sU.js +1 -0
  180. package/apps/web/dist/assets/mk-CkaQRpqe.js +1 -0
  181. package/apps/web/dist/assets/mk-MK-BU5BLpXM.js +1 -0
  182. package/apps/web/dist/assets/nl-BtnPzRih.js +1 -0
  183. package/apps/web/dist/assets/nl-DiEjqOA8.js +1 -0
  184. package/apps/web/dist/assets/nl-NL-2aSpdZkg.js +1 -0
  185. package/apps/web/dist/assets/ordinal-BDEzSJ7C.js +1 -0
  186. package/apps/web/dist/assets/packet-JDAUHWVQ-WJpqlH1d.js +1 -0
  187. package/apps/web/dist/assets/path-fybaL0A-.js +1 -0
  188. package/apps/web/dist/assets/pegDiagram-ECIUJNBX-CUvajD93.js +1 -0
  189. package/apps/web/dist/assets/pie-XZMESJXO-DvandPby.js +1 -0
  190. package/apps/web/dist/assets/pieDiagram-GNMPY74T-CqxeyIaP.js +39 -0
  191. package/apps/web/dist/assets/pl-Beg8hEdK.js +1 -0
  192. package/apps/web/dist/assets/pl-CauoMfkf.js +1 -0
  193. package/apps/web/dist/assets/pl-PL-C5Wvnv7f.js +1 -0
  194. package/apps/web/dist/assets/preload-helper-BLdHbfdN.js +1 -0
  195. package/apps/web/dist/assets/project-lifecycle-CIAMJ-SX.js +1 -0
  196. package/apps/web/dist/assets/project-settings-C7lolDSl.js +1 -0
  197. package/apps/web/dist/assets/pt-BR-B4VZ35N_.js +1 -0
  198. package/apps/web/dist/assets/pt-BR-BpOhwoDW.js +1 -0
  199. package/apps/web/dist/assets/pt-BR-CVvI-ZB7.js +1 -0
  200. package/apps/web/dist/assets/public-project-DvvfaUd2.js +1 -0
  201. package/apps/web/dist/assets/quadrantDiagram-D57K4MC3-DFjNmaZc.js +7 -0
  202. package/apps/web/dist/assets/radar-ABXABTNO-CJhZF9j2.js +1 -0
  203. package/apps/web/dist/assets/railroad-I3PHUGI6-DZC10oBD.js +1 -0
  204. package/apps/web/dist/assets/railroad-abnf-LNEFI6M7-BUJF2n6u.js +1 -0
  205. package/apps/web/dist/assets/railroad-ebnf-DWYD2UWJ-CG7oB02K.js +1 -0
  206. package/apps/web/dist/assets/railroad-peg-JR7BVNR7-DBCZuZJY.js +1 -0
  207. package/apps/web/dist/assets/railroadDiagram-Y72NRBL7-CvN3poBq.js +1 -0
  208. package/apps/web/dist/assets/requirementDiagram-EQYSW5RA-BEItNirc.js +84 -0
  209. package/apps/web/dist/assets/rolldown-runtime-COiEfhsA.js +1 -0
  210. package/apps/web/dist/assets/rotate-ccw-GjVJPDML.js +1 -0
  211. package/apps/web/dist/assets/rough.esm-Dy-Kn_BL.js +1 -0
  212. package/apps/web/dist/assets/ru-DOaRp00B.js +1 -0
  213. package/apps/web/dist/assets/ru-DjVJVHzv.js +1 -0
  214. package/apps/web/dist/assets/ru-RU-C7UUdGIh.js +1 -0
  215. package/apps/web/dist/assets/sankeyDiagram-SY24JHO5-DluLIjax.js +40 -0
  216. package/apps/web/dist/assets/search-ZaQmVnj1.js +85 -0
  217. package/apps/web/dist/assets/send-Dr9bXHhf.js +1 -0
  218. package/apps/web/dist/assets/sequenceDiagram-BLEHNHQU-ZcwnsNxK.js +169 -0
  219. package/apps/web/dist/assets/settings-DXvrVvyS.js +1 -0
  220. package/apps/web/dist/assets/sizeCapture-INFHLROL-3uHXrFqA.js +1 -0
  221. package/apps/web/dist/assets/sliders-horizontal-C1t_zA7D.js +1 -0
  222. package/apps/web/dist/assets/src-BWF7jMDv.js +1 -0
  223. package/apps/web/dist/assets/stateDiagram-v2-A6IESKWZ-DD6vH3rM.js +291 -0
  224. package/apps/web/dist/assets/swimlanes-B3ENRKFQ-pX_qyO4X.js +1 -0
  225. package/apps/web/dist/assets/swimlanesDiagram-AYQRV4AK-CeVsLUsg.js +8 -0
  226. package/apps/web/dist/assets/switch-D-WTDajm.js +1 -0
  227. package/apps/web/dist/assets/table-BaRMFP84.js +1 -0
  228. package/apps/web/dist/assets/ticket-detail-CFJI4qoK.js +2 -0
  229. package/apps/web/dist/assets/ticket-editor-DL3nHG_q.js +2 -0
  230. package/apps/web/dist/assets/ticket-list-CDkweYGS.js +5 -0
  231. package/apps/web/dist/assets/ticket-list-controls-CmTgFQQ-.js +1 -0
  232. package/apps/web/dist/assets/timeline-definition-JXYKGLGB-DLBjAxKq.js +120 -0
  233. package/apps/web/dist/assets/toDate-B3HYxwtT.js +1 -0
  234. package/apps/web/dist/assets/tr-Ckc4TA71.js +1 -0
  235. package/apps/web/dist/assets/tr-DeYojjLx.js +1 -0
  236. package/apps/web/dist/assets/tr-TR-VVsL3uMp.js +1 -0
  237. package/apps/web/dist/assets/treeView-D4JQ5SDB-DsJ44q_q.js +1 -0
  238. package/apps/web/dist/assets/treemap-SAJKECNS-BmXoBpVL.js +1 -0
  239. package/apps/web/dist/assets/uk-B4ZvJ8xG.js +1 -0
  240. package/apps/web/dist/assets/uk-DACrfgCP.js +1 -0
  241. package/apps/web/dist/assets/uk-UA-DRpCbOps.js +1 -0
  242. package/apps/web/dist/assets/upload-BwGa8shS.js +1 -0
  243. package/apps/web/dist/assets/useQueries-sQEHjB0a.js +1 -0
  244. package/apps/web/dist/assets/usecaseDiagram-WPOLBNNX-eU2tr2si.js +328 -0
  245. package/apps/web/dist/assets/vennDiagram-Q3Y3IDCW-CoVTWGNg.js +34 -0
  246. package/apps/web/dist/assets/vi-CkqUo4w_.js +1 -0
  247. package/apps/web/dist/assets/vi-Dq2krfY8.js +1 -0
  248. package/apps/web/dist/assets/vi-VN-C0YFqq9j.js +1 -0
  249. package/apps/web/dist/assets/visual-editor-CBhwqTDu.js +208 -0
  250. package/apps/web/dist/assets/wardley-7MLQ67FV-C6mVVk98.js +1 -0
  251. package/apps/web/dist/assets/wardleyDiagram-IVAIDKWA-m3CeJc7a.js +78 -0
  252. package/apps/web/dist/assets/workspace-settings-DgLyieJN.js +1 -0
  253. package/apps/web/dist/assets/xychartDiagram-4URNHDU4-Dw6fLaip.js +7 -0
  254. package/apps/web/dist/assets/zh-CN-B7Rxc3Mp.js +1 -0
  255. package/apps/web/dist/assets/zh-CN-CC7ghLLr.js +1 -0
  256. package/apps/web/dist/assets/zh-CN-pcgTdR8c.js +1 -0
  257. package/apps/web/dist/assets/zh-TW-BlIRMi1C.js +1 -0
  258. package/apps/web/dist/assets/zh-TW-DymSXkFg.js +1 -0
  259. package/apps/web/dist/assets/zh-TW-awiwHjeM.js +1 -0
  260. package/apps/web/dist/index.html +14 -8
  261. package/bin/kanvil.mjs +3 -1
  262. package/compose.yml +12 -0
  263. package/docs/api.md +311 -10
  264. package/docs/cli.md +74 -0
  265. package/docs/infrastructure.md +2 -2
  266. package/docs/localization.md +25 -0
  267. package/docs/plan.md +34 -11
  268. package/docs/self-hosting.md +44 -5
  269. package/docs/themes.md +1 -1
  270. package/docs/verification.md +1 -1
  271. package/docs/workspaces.md +18 -2
  272. package/package.json +12 -8
  273. package/apps/server/dist/auth-I1XEr0d4.mjs +0 -2931
  274. package/apps/web/dist/assets/CompositeItem-BWPJ5Mol.js +0 -1
  275. package/apps/web/dist/assets/admin-settings-DZqkC6ju.js +0 -1
  276. package/apps/web/dist/assets/date-picker-6H_iwP6t.js +0 -1
  277. package/apps/web/dist/assets/ellipsis-BT172Uvu.js +0 -1
  278. package/apps/web/dist/assets/forms-B4Vg3CPz.js +0 -92
  279. package/apps/web/dist/assets/image-edit-trigger-DGmVtWLC.js +0 -1
  280. package/apps/web/dist/assets/index-C_a21taR.js +0 -50
  281. package/apps/web/dist/assets/index-DM-D_3Sv.css +0 -2
  282. package/apps/web/dist/assets/kbd-tTQGZxaK.js +0 -1
  283. package/apps/web/dist/assets/link-DoIP9KJ6.js +0 -2
  284. package/apps/web/dist/assets/list-order-Bzsrihyr.js +0 -1
  285. package/apps/web/dist/assets/lucide-U995NW8E.js +0 -1
  286. package/apps/web/dist/assets/member-directory-BiCE8DRq.js +0 -1
  287. package/apps/web/dist/assets/popover-BhzZ0U1d.js +0 -1
  288. package/apps/web/dist/assets/project-label-provider-9L7Uts3_.js +0 -1
  289. package/apps/web/dist/assets/project-settings-Q7Q9Reec.js +0 -1
  290. package/apps/web/dist/assets/rotate-ccw-sjyLwLLy.js +0 -1
  291. package/apps/web/dist/assets/settings-B6qD6q1J.js +0 -1
  292. package/apps/web/dist/assets/settings-layout-B-AwUIMu.js +0 -1
  293. package/apps/web/dist/assets/switch-D0nFHj6l.js +0 -1
  294. package/apps/web/dist/assets/table-CYZiwo9g.js +0 -1
  295. package/apps/web/dist/assets/ticket-detail-B-3vbHSB.js +0 -2
  296. package/apps/web/dist/assets/ticket-editor-C3d8TZIT.js +0 -1
  297. package/apps/web/dist/assets/ticket-list-LtGGOnwN.js +0 -5
  298. package/apps/web/dist/assets/ticket-tags-2rdmkcJV.js +0 -1
  299. package/apps/web/dist/assets/upload-DXPRzAaa.js +0 -1
  300. package/apps/web/dist/assets/useNavigate-DFohfUD3.js +0 -1
  301. package/apps/web/dist/assets/workspace-settings-D3tCm1vH.js +0 -1
@@ -1,3 +1,4 @@
1
+ import { l as searchSettingsSchema, r as brokerSettingsSchema, s as s3SettingsSchema } from "./instance-CCeXRJ6m.mjs";
1
2
  import pg from "pg";
2
3
  import { drizzle } from "drizzle-orm/node-postgres";
3
4
  import { relations } from "drizzle-orm";
@@ -51,7 +52,8 @@ const user = pgTable("user", {
51
52
  role: text("role"),
52
53
  banned: boolean("banned").default(false),
53
54
  banReason: text("ban_reason"),
54
- banExpires: timestamp("ban_expires")
55
+ banExpires: timestamp("ban_expires"),
56
+ deletedAt: timestamp("deleted_at")
55
57
  });
56
58
  const session = pgTable("session", {
57
59
  id: text("id").primaryKey(),
@@ -354,137 +356,6 @@ function createDatabase(url) {
354
356
  };
355
357
  }
356
358
  //#endregion
357
- //#region ../../packages/contracts/src/instance.ts
358
- const endpoint = z.url({ protocol: /^https?$/ }).refine((value) => !/^https?:\/\/[^/]*@/.test(value) && !/[?#]/.test(value), "Use an HTTP(S) endpoint without embedded credentials");
359
- const s3SettingsSchema = z.object({
360
- endpoint: z.union([endpoint, z.literal("")]).default(""),
361
- region: z.string().min(1).max(100).default("us-east-1"),
362
- bucket: z.string().min(3).max(255),
363
- prefix: z.string().max(200).regex(/^[a-zA-Z0-9/_-]*$/).default("kanvil/"),
364
- forcePathStyle: z.boolean().default(true),
365
- accessKeyId: z.string().max(500).default(""),
366
- secretAccessKey: z.string().max(2e3).optional()
367
- }).strict();
368
- const searchAuthenticationSchema = z.enum([
369
- "none",
370
- "apiKey",
371
- "basic"
372
- ]);
373
- const searchSettingsSchema = z.object({
374
- url: endpoint,
375
- auth: searchAuthenticationSchema.optional(),
376
- index: z.string().regex(/^[a-z0-9][a-z0-9_-]{0,100}$/),
377
- apiKey: z.string().max(4e3).optional(),
378
- username: z.string().max(500).default(""),
379
- password: z.string().max(2e3).optional()
380
- }).strict();
381
- const storageSettingsSchema = z.discriminatedUnion("provider", [z.object({ provider: z.literal("local") }).strict(), s3SettingsSchema.extend({ provider: z.literal("s3") })]);
382
- const externalSearchSettingsSchema = z.discriminatedUnion("provider", [z.object({ provider: z.literal("postgres") }).strict(), searchSettingsSchema.extend({ provider: z.literal("elasticsearch") })]);
383
- const brokerSettingsSchema = z.object({
384
- url: z.url({ protocol: /^amqps?$/ }).max(4e3).optional(),
385
- exchange: z.string().min(1).max(200).regex(/^[a-zA-Z0-9_.-]+$/).refine((value) => !value.startsWith("amq."), "Use an application exchange").default("kanvil.events")
386
- }).strict();
387
- const eventDeliverySettingsSchema = z.discriminatedUnion("provider", [z.object({ provider: z.literal("postgres") }).strict(), brokerSettingsSchema.extend({ provider: z.literal("rabbitmq") })]);
388
- const authenticationPolicySchema = z.object({
389
- emailPasswordEnabled: z.boolean().default(true),
390
- ssoAutoProvision: z.boolean().default(false)
391
- }).strict();
392
- const instanceUpdateSchema = z.object({
393
- expectedVersion: z.number().int().positive(),
394
- name: z.string().trim().min(1).max(100),
395
- description: z.string().max(500),
396
- storage: storageSettingsSchema,
397
- search: externalSearchSettingsSchema,
398
- broker: eventDeliverySettingsSchema.optional(),
399
- authentication: authenticationPolicySchema.optional()
400
- }).strict();
401
- z.object({
402
- name: z.string(),
403
- description: z.string()
404
- });
405
- const adminInstanceSchema = z.object({
406
- id: z.uuid(),
407
- version: z.number().int(),
408
- name: z.string(),
409
- description: z.string(),
410
- authentication: authenticationPolicySchema.default(() => authenticationPolicySchema.parse({})),
411
- storage: z.object({
412
- provider: z.enum(["local", "s3"]),
413
- source: z.enum(["deployment", "admin"]),
414
- settings: s3SettingsSchema.omit({ secretAccessKey: true }).nullable(),
415
- secretConfigured: z.boolean(),
416
- pending: z.number().int(),
417
- status: z.enum([
418
- "ready",
419
- "transferring",
420
- "unavailable"
421
- ]),
422
- error: z.string().nullable()
423
- }),
424
- search: z.object({
425
- provider: z.enum(["postgres", "elasticsearch"]),
426
- source: z.enum(["deployment", "admin"]),
427
- settings: searchSettingsSchema.omit({
428
- apiKey: true,
429
- password: true
430
- }).nullable(),
431
- secretConfigured: z.boolean(),
432
- status: z.enum([
433
- "builtin",
434
- "indexing",
435
- "ready",
436
- "unavailable"
437
- ]),
438
- cursor: z.string(),
439
- error: z.string().nullable()
440
- }),
441
- broker: z.object({
442
- provider: z.enum(["postgres", "rabbitmq"]),
443
- source: z.enum(["deployment", "admin"]),
444
- settings: z.object({
445
- endpoint: z.string(),
446
- exchange: z.string()
447
- }).nullable(),
448
- secretConfigured: z.boolean(),
449
- status: z.enum([
450
- "builtin",
451
- "connecting",
452
- "ready",
453
- "unavailable"
454
- ]),
455
- error: z.string().nullable()
456
- }),
457
- deployment: z.object({
458
- url: z.string(),
459
- oidc: z.object({
460
- name: z.string(),
461
- discoveryUrl: z.string(),
462
- clientId: z.string()
463
- }).nullable(),
464
- push: z.boolean(),
465
- version: z.string()
466
- }),
467
- locations: z.array(z.object({
468
- id: z.uuid(),
469
- bucket: z.string(),
470
- endpoint: z.string(),
471
- prefix: z.string(),
472
- objects: z.number().int()
473
- }))
474
- });
475
- const photoInputSchema = z.object({
476
- data: z.string().max(7e5),
477
- contentType: z.enum([
478
- "image/png",
479
- "image/jpeg",
480
- "image/webp"
481
- ])
482
- }).strict();
483
- const photoResultSchema = z.object({ image: z.string().nullable() });
484
- function searchAuthentication(settings) {
485
- return settings.auth ?? (settings.apiKey ? "apiKey" : settings.username && settings.password ? "basic" : "none");
486
- }
487
- //#endregion
488
359
  //#region src/config.ts
489
360
  const optionalEnv = (schema) => z.preprocess((value) => value === "" ? void 0 : value, schema.optional());
490
361
  const envSchema = z.object({
@@ -517,9 +388,21 @@ const envSchema = z.object({
517
388
  OIDC_CLIENT_ID: optionalEnv(z.string().min(1)),
518
389
  OIDC_CLIENT_SECRET: optionalEnv(z.string().min(1)),
519
390
  OIDC_NAME: z.string().default("PocketID"),
391
+ GITHUB_CLIENT_ID: optionalEnv(z.string().min(1)),
392
+ GITHUB_CLIENT_SECRET: optionalEnv(z.string().min(1)),
393
+ GOOGLE_CLIENT_ID: optionalEnv(z.string().min(1)),
394
+ GOOGLE_CLIENT_SECRET: optionalEnv(z.string().min(1)),
395
+ DISCORD_CLIENT_ID: optionalEnv(z.string().min(1)),
396
+ DISCORD_CLIENT_SECRET: optionalEnv(z.string().min(1)),
520
397
  KANVIL_SESSION_WRITE_LIMIT: z.coerce.number().int().min(1).max(1e5).default(120),
521
398
  KANVIL_PUSH_ENABLED: z.enum(["true", "false"]).default("false").transform((value) => value === "true"),
522
399
  EXPO_ACCESS_TOKEN: optionalEnv(z.string().min(1)),
400
+ SMTP_URL: optionalEnv(z.url({ protocol: /^smtps?$/ })),
401
+ SMTP_FROM: optionalEnv(z.string().min(3)),
402
+ KANVIL_DELIVERY_ALLOW_PRIVATE: z.enum(["true", "false"]).default("false").transform((value) => value === "true"),
403
+ KANVIL_GITHUB_API_URL: z.url({ protocol: /^https?$/ }).default("https://api.github.com"),
404
+ KANVIL_LINEAR_API_URL: z.url({ protocol: /^https?$/ }).default("https://api.linear.app/graphql"),
405
+ KANVIL_TRELLO_API_URL: z.url({ protocol: /^https?$/ }).default("https://api.trello.com").transform((value) => value.replace(/\/+$/, "")),
523
406
  NODE_ENV: z.enum([
524
407
  "development",
525
408
  "test",
@@ -557,6 +440,18 @@ const envSchema = z.object({
557
440
  code: "custom",
558
441
  message: "Configure all three OIDC settings together"
559
442
  });
443
+ for (const name of [
444
+ "GITHUB",
445
+ "GOOGLE",
446
+ "DISCORD"
447
+ ]) if (!value[`${name}_CLIENT_ID`] !== !value[`${name}_CLIENT_SECRET`]) ctx.addIssue({
448
+ code: "custom",
449
+ message: `Configure ${name}_CLIENT_ID and ${name}_CLIENT_SECRET together`
450
+ });
451
+ if (value.SMTP_URL && !value.SMTP_FROM) ctx.addIssue({
452
+ code: "custom",
453
+ message: "SMTP_FROM is required with SMTP_URL"
454
+ });
560
455
  if (!new URL(value.DATABASE_URL).protocol.startsWith("postgres")) ctx.addIssue({
561
456
  code: "custom",
562
457
  message: "DATABASE_URL must be PostgreSQL"
@@ -578,4 +473,4 @@ function readConfig(env = process.env) {
578
473
  };
579
474
  }
580
475
  //#endregion
581
- export { instanceUpdateSchema as a, s3SettingsSchema as c, createDatabase as d, account as f, user as g, session as h, brokerSettingsSchema as i, searchAuthentication as l, auth_schema_exports as m, adminInstanceSchema as n, photoInputSchema as o, apikey as p, authenticationPolicySchema as r, photoResultSchema as s, readConfig as t, searchSettingsSchema as u };
476
+ export { auth_schema_exports as a, oauthConsent as c, user as d, apikey as i, oauthRefreshToken as l, createDatabase as n, oauthAccessToken as o, account as r, oauthClient as s, readConfig as t, session as u };