cognova 0.1.9 → 0.2.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 (299) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{B4LjQa2N.js → 4MiwzAAt.js} +2 -2
  3. package/.output/public/_nuxt/{BZZeOWzQ.js → 5ZXA0Ckq.js} +1 -1
  4. package/.output/public/_nuxt/{B194okoV.js → 9IQmsEjr.js} +1 -1
  5. package/.output/public/_nuxt/{DQ_ZoW_9.js → 9QnH0xQM.js} +1 -1
  6. package/.output/public/_nuxt/{CF0HGIV6.js → B1X4Bzcy.js} +1 -1
  7. package/.output/public/_nuxt/{D9lowtoI.js → B3y_Qqox.js} +1 -1
  8. package/.output/public/_nuxt/{BB1R_SaV.js → B6S_ob86.js} +1 -1
  9. package/.output/public/_nuxt/{DVf1IpSh.js → BAIz-dEB.js} +1 -1
  10. package/.output/public/_nuxt/{CNFNMRY1.js → BCtfQCzC.js} +1 -1
  11. package/.output/public/_nuxt/BIIJhjQO.js +1 -0
  12. package/.output/public/_nuxt/BIckl6wA.js +1 -0
  13. package/.output/public/_nuxt/{Biy6boRV.js → BJ3o57WW.js} +1 -1
  14. package/.output/public/_nuxt/{B5rIsDOv.js → BNetzZzF.js} +1 -1
  15. package/.output/public/_nuxt/{DFXLcgxL.js → BOj6t-oo.js} +1 -1
  16. package/.output/public/_nuxt/{BDUpLPg_.js → BS0ofHJK.js} +1 -1
  17. package/.output/public/_nuxt/{DIdcflWi.js → BWhMnjID.js} +1 -1
  18. package/.output/public/_nuxt/{CExLOuIW.js → BYjadNrw.js} +1 -1
  19. package/.output/public/_nuxt/{C8ytOrRD.js → BZXMQuYP.js} +1 -1
  20. package/.output/public/_nuxt/{Ddih3UKd.js → B_3_hrpn.js} +1 -1
  21. package/.output/public/_nuxt/{CxSyRXlk.js → BaBZjmMC.js} +1 -1
  22. package/.output/public/_nuxt/BaMqDm5u.js +1 -0
  23. package/.output/public/_nuxt/BasgsT_S.js +1 -0
  24. package/.output/public/_nuxt/{Cehzuz52.js → BffWCM73.js} +1 -1
  25. package/.output/public/_nuxt/{Dh0BcDEI.js → BhzMoffi.js} +1 -1
  26. package/.output/public/_nuxt/{DmV68Eyp.js → BjjCvHLT.js} +1 -1
  27. package/.output/public/_nuxt/{nzAH3Wk0.js → BlAZO7nq.js} +1 -1
  28. package/.output/public/_nuxt/{BRPJdy3u.js → BlhFigLL.js} +1 -1
  29. package/.output/public/_nuxt/{CfTFjEuh.js → Bm9LyG4F.js} +1 -1
  30. package/.output/public/_nuxt/BoIxv-gM.js +1 -0
  31. package/.output/public/_nuxt/{BslL2E8V.js → BqKFIuRj.js} +1 -1
  32. package/.output/public/_nuxt/Br19oYkq.js +1 -0
  33. package/.output/public/_nuxt/{PtGESE-F.js → BrNqhp1a.js} +3 -3
  34. package/.output/public/_nuxt/{FvV9sv7q.js → BsEZoHd1.js} +1 -1
  35. package/.output/public/_nuxt/{BaPPQtFe.js → BxXOsXrM.js} +10 -10
  36. package/.output/public/_nuxt/BzOqrmGa.js +7 -0
  37. package/.output/public/_nuxt/{BNAsyazX.js → C0JKNMDO.js} +1 -1
  38. package/.output/public/_nuxt/C0kh_F7v.js +1 -0
  39. package/.output/public/_nuxt/{4Ew5YctE.js → C3FxIITy.js} +1 -1
  40. package/.output/public/_nuxt/{DnToOWVx.js → C4pxqdgg.js} +1 -1
  41. package/.output/public/_nuxt/{C5Ue4WbD.js → C61KgSco.js} +1 -1
  42. package/.output/public/_nuxt/{DcMvYcFq.js → C69W7k2j.js} +1 -1
  43. package/.output/public/_nuxt/{BnnFvWzv.js → C6RC3lA1.js} +1 -1
  44. package/.output/public/_nuxt/{DBENYi9d.js → C6aqGHu1.js} +1 -1
  45. package/.output/public/_nuxt/{YldWqMAh.js → CJUdYEdO.js} +1 -1
  46. package/.output/public/_nuxt/{BPAM-iC7.js → CKkC3Ptm.js} +1 -1
  47. package/.output/public/_nuxt/{CTXhFIUN.js → CNnJrDvu.js} +1 -1
  48. package/.output/public/_nuxt/{BwH2E0-a.js → CVJQGP1Q.js} +1 -1
  49. package/.output/public/_nuxt/{q0vhMpUB.js → CVgTJeSq.js} +1 -1
  50. package/.output/public/_nuxt/CWMUi89H.js +1 -0
  51. package/.output/public/_nuxt/{BU9VyOEC.js → CYP_MLH8.js} +1 -1
  52. package/.output/public/_nuxt/{76CHU1js.js → C_BdYLzz.js} +1 -1
  53. package/.output/public/_nuxt/{BQbnVFXA.js → Cdt3I3Go.js} +1 -1
  54. package/.output/public/_nuxt/Cdu2qGgq.js +1 -0
  55. package/.output/public/_nuxt/{ChMIRIq6.js → CeIVm4A3.js} +1 -1
  56. package/.output/public/_nuxt/CeIu7z4p.js +1 -0
  57. package/.output/public/_nuxt/{CZZw0T2a.js → Ci7UEZQh.js} +1 -1
  58. package/.output/public/_nuxt/{BP_jQhKs.js → CihWZmJe.js} +2 -2
  59. package/.output/public/_nuxt/{Bluqlt6l.js → CitkKxhw.js} +1 -1
  60. package/.output/public/_nuxt/{DIM73BjE.js → CmzH6R-N.js} +2 -2
  61. package/.output/public/_nuxt/{CD5hHJBM.js → Cp2MA0cm.js} +1 -1
  62. package/.output/public/_nuxt/{DflBkWfa.js → CqU2XbzO.js} +1 -1
  63. package/.output/public/_nuxt/{Ccc8OoR8.js → Cqy_L_ip.js} +1 -1
  64. package/.output/public/_nuxt/Cr8ixbr1.js +1 -0
  65. package/.output/public/_nuxt/{DdLGO0wP.js → CsJ9KhQ4.js} +1 -1
  66. package/.output/public/_nuxt/{mHNfVoS0.js → CtYFj7k1.js} +1 -1
  67. package/.output/public/_nuxt/{DIBimEIe.js → CtchsY6e.js} +1 -1
  68. package/.output/public/_nuxt/{BboG47Wz.js → Cvp7FI3T.js} +1 -1
  69. package/.output/public/_nuxt/CxuZBC8n.js +70 -0
  70. package/.output/public/_nuxt/D2689qk4.js +1 -0
  71. package/.output/public/_nuxt/{CWWmC6Y7.js → D31L7Ks6.js} +1 -1
  72. package/.output/public/_nuxt/{JxSV3wOO.js → D3RiUGdz.js} +1 -1
  73. package/.output/public/_nuxt/{C1tYtAeV.js → D3e44mCL.js} +1 -1
  74. package/.output/public/_nuxt/{BTWyDDBM.js → D6t3dcTl.js} +1 -1
  75. package/.output/public/_nuxt/{DpLjEbYb.js → DAQhmSv4.js} +1 -1
  76. package/.output/public/_nuxt/{BnwR3LQL.js → DB359q8R.js} +1 -1
  77. package/.output/public/_nuxt/{jCKYMNtT.js → DCzfkCGa.js} +1 -1
  78. package/.output/public/_nuxt/{BXWm1qrj.js → DG-T44jj.js} +1 -1
  79. package/.output/public/_nuxt/{BBygTbuF.js → DGX0tzL8.js} +1 -1
  80. package/.output/public/_nuxt/DHG66LPS.js +1 -0
  81. package/.output/public/_nuxt/{jBqB49XU.js → DHKLCQRG.js} +1 -1
  82. package/.output/public/_nuxt/{BDw-JoCx.js → DIoI0uJm.js} +1 -1
  83. package/.output/public/_nuxt/{DOQA5CEF.js → DJ5V-y_x.js} +1 -1
  84. package/.output/public/_nuxt/{BGaNWD0s.js → DJMS2og1.js} +1 -1
  85. package/.output/public/_nuxt/{UmgHYYVi.js → DJjDvbZE.js} +1 -1
  86. package/.output/public/_nuxt/{DdtX5kio.js → DK9jxJ0g.js} +1 -1
  87. package/.output/public/_nuxt/{Cc6GlQCO.js → DKZxeXDQ.js} +1 -1
  88. package/.output/public/_nuxt/{Tp-9mt9j.js → DLETdGFL.js} +1 -1
  89. package/.output/public/_nuxt/DOICd-Ld.js +1 -0
  90. package/.output/public/_nuxt/DPEcH-gi.js +65 -0
  91. package/.output/public/_nuxt/{CVNY6Bll.js → DSRrg8JT.js} +1 -1
  92. package/.output/public/_nuxt/{Sm7TJN7_.js → DTDgHTuh.js} +2 -2
  93. package/.output/public/_nuxt/{DeGKAWfY.js → D_3Rq1BS.js} +1 -1
  94. package/.output/public/_nuxt/{BvnL4Jyv.js → Daz4MeL6.js} +1 -1
  95. package/.output/public/_nuxt/{Dyd3g9po.js → Db2v8O7O.js} +1 -1
  96. package/.output/public/_nuxt/{D0FBwEzN.js → Db8-_gO7.js} +1 -1
  97. package/.output/public/_nuxt/{Cv4Qjbqk.js → DfQu3kEw.js} +1 -1
  98. package/.output/public/_nuxt/{c-RGQpsW.js → DgV-EDJ9.js} +1 -1
  99. package/.output/public/_nuxt/{CSF2cTe9.js → DnjGH3SQ.js} +1 -1
  100. package/.output/public/_nuxt/Dp2X5R2m.js +1 -0
  101. package/.output/public/_nuxt/DqB723Z0.js +1 -0
  102. package/.output/public/_nuxt/{DhRePYUI.js → DyRelyfs.js} +1 -1
  103. package/.output/public/_nuxt/{DZiAD6YN.js → Dy_Cq5LQ.js} +1 -1
  104. package/.output/public/_nuxt/{DWQMV4k2.js → DznawRFW.js} +1 -1
  105. package/.output/public/_nuxt/EuOqK1A6.js +1 -0
  106. package/.output/public/_nuxt/{BVZHIuu-.js → FNC8XZTk.js} +1 -1
  107. package/.output/public/_nuxt/{Dsk8JtTw.js → Fukkqjkf.js} +1 -1
  108. package/.output/public/_nuxt/{DNpdNXnv.js → FvlxxmNk.js} +2 -2
  109. package/.output/public/_nuxt/{zt0Txq93.js → IRSbVPIu.js} +1 -1
  110. package/.output/public/_nuxt/{T_w6A2Zo.js → JJ3634gV.js} +9 -9
  111. package/.output/public/_nuxt/{6Tt_Iaya.js → Jez9DHn7.js} +1 -1
  112. package/.output/public/_nuxt/{Cr7nQmYw.js → KKK6HVeG.js} +1 -1
  113. package/.output/public/_nuxt/{BJPw54Qz.js → Lwdv_RKd.js} +1 -1
  114. package/.output/public/_nuxt/{WqUIRM3G.js → Nb2jBtYT.js} +1 -1
  115. package/.output/public/_nuxt/Q8Ps7oN5.js +1 -0
  116. package/.output/public/_nuxt/SXTDhzp6.js +1 -0
  117. package/.output/public/_nuxt/{rfcePMfo.js → Sg2Lwc46.js} +1 -1
  118. package/.output/public/_nuxt/{gEpwc5gO.js → YuTZB7sD.js} +1 -1
  119. package/.output/public/_nuxt/{B2OKrc4G.js → _CYZi8HN.js} +1 -1
  120. package/.output/public/_nuxt/_J_7XIn-.js +1 -0
  121. package/.output/public/_nuxt/builds/latest.json +1 -1
  122. package/.output/public/_nuxt/builds/meta/a1e9100c-1a4f-4f7e-bb53-9dbe0d07effb.json +1 -0
  123. package/.output/public/_nuxt/{Bwx_Kl-4.js → cABRLVee.js} +1 -1
  124. package/.output/public/_nuxt/{DPuJYSUH.js → eko-0FUm.js} +1 -1
  125. package/.output/public/_nuxt/entry.CGxIBGAf.css +1 -0
  126. package/.output/public/_nuxt/{TQOIXkvr.js → g20UHUCv.js} +1 -1
  127. package/.output/public/_nuxt/{zOs8gUGl.js → gBC9k4Qj.js} +1 -1
  128. package/.output/public/_nuxt/{CJ3DQEW9.js → ghuJ76mD.js} +1 -1
  129. package/.output/public/_nuxt/{S6GTaxiQ.js → iBGCpHdw.js} +1 -1
  130. package/.output/public/_nuxt/{VGlRzjk3.js → inmzPrjz.js} +1 -1
  131. package/.output/public/_nuxt/{CCkumwhk.js → m5kGCDpI.js} +4 -4
  132. package/.output/public/_nuxt/{CXkbkhUa.js → nIU2F7ia.js} +3 -3
  133. package/.output/public/_nuxt/oIX-ZDN6.js +1 -0
  134. package/.output/public/_nuxt/{TsIha0iy.js → pcUI-zuY.js} +1 -1
  135. package/.output/public/_nuxt/{BN_2zhBR.js → sf57orEk.js} +1 -1
  136. package/.output/public/_nuxt/usage.vakN1lvi.css +1 -0
  137. package/.output/public/_nuxt/{DHYn0MnY.js → wCGVE8_e.js} +1 -1
  138. package/.output/public/_nuxt/{DMkXE4gH.js → xuzLdW-o.js} +1 -1
  139. package/.output/public/_nuxt/{DdoFnl6e.js → yNrp2XvX.js} +1 -1
  140. package/.output/public/_nuxt/{4hIPJQLp.js → yuf23kh9.js} +1 -1
  141. package/.output/server/chunks/build/CodeIcon-CWD5HcV7.mjs +1 -1
  142. package/.output/server/chunks/build/DropdownMenu-BBrV9nXz.mjs +1 -1
  143. package/.output/server/chunks/build/EditorToolbar-DIfb5arC.mjs +1 -1
  144. package/.output/server/chunks/build/Img-CWLmvN1t.mjs +1 -1
  145. package/.output/server/chunks/build/MDC-Dx0YPDhe.mjs +1 -1
  146. package/.output/server/chunks/build/Select-BB1oLrCD.mjs +1 -1
  147. package/.output/server/chunks/build/SelectMenu-DPssg6zD.mjs +1 -1
  148. package/.output/server/chunks/build/Table-DCwTlhCj.mjs +1 -1
  149. package/.output/server/chunks/build/Tooltip-TRyl6dje.mjs +1 -1
  150. package/.output/server/chunks/build/{_uuid_-CQEMsF1D.mjs → _uuid_-0UgdUhfY.mjs} +8 -7
  151. package/.output/server/chunks/build/{_uuid_-CQEMsF1D.mjs.map → _uuid_-0UgdUhfY.mjs.map} +1 -1
  152. package/.output/server/chunks/build/chat-CZMiB68R.mjs.map +1 -1
  153. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  154. package/.output/server/chunks/build/cookie-C_iulBi6.mjs +1 -1
  155. package/.output/server/chunks/build/{dashboard-24rCroiO.mjs → dashboard-CpMVYnDV.mjs} +13 -6
  156. package/.output/server/chunks/build/{dashboard-24rCroiO.mjs.map → dashboard-CpMVYnDV.mjs.map} +1 -1
  157. package/.output/server/chunks/build/dashboard-YEscLBQN.mjs +1109 -0
  158. package/.output/server/chunks/build/dashboard-YEscLBQN.mjs.map +1 -0
  159. package/.output/server/chunks/build/{docs-DOGZUctm.mjs → docs-Dk2JnYq3.mjs} +8 -7
  160. package/.output/server/chunks/build/{docs-DOGZUctm.mjs.map → docs-Dk2JnYq3.mjs.map} +1 -1
  161. package/.output/server/chunks/build/fetch-BB7Qzkwe.mjs +1 -1
  162. package/.output/server/chunks/build/{hooks-CuyNIRFI.mjs → hooks-DP8WoUPS.mjs} +2 -2
  163. package/.output/server/chunks/build/{hooks-CuyNIRFI.mjs.map → hooks-DP8WoUPS.mjs.map} +1 -1
  164. package/.output/server/chunks/build/{index-BZI-Mj1-.mjs → index-Ba_bPJgk.mjs} +2 -2
  165. package/.output/server/chunks/build/{index-BZI-Mj1-.mjs.map → index-Ba_bPJgk.mjs.map} +1 -1
  166. package/.output/server/chunks/build/index-CxDxc9fm.mjs +1 -1
  167. package/.output/server/chunks/build/server.mjs +26 -17
  168. package/.output/server/chunks/build/server.mjs.map +1 -1
  169. package/.output/server/chunks/build/settings-DdkKCJ00.mjs +1 -1
  170. package/.output/server/chunks/build/styles.mjs +2 -2
  171. package/.output/server/chunks/build/{tasks-DR55Wjpi.mjs → tasks-DiOi1HG_.mjs} +2 -2
  172. package/.output/server/chunks/build/{tasks-DR55Wjpi.mjs.map → tasks-DiOi1HG_.mjs.map} +1 -1
  173. package/.output/server/chunks/build/usage-H_mcd_fz.mjs +1578 -0
  174. package/.output/server/chunks/build/usage-H_mcd_fz.mjs.map +1 -0
  175. package/.output/server/chunks/build/{CodeEditorFallback-DfYly7f5.mjs → useCopyToClipboard-vi6FYyyZ.mjs} +29 -2
  176. package/.output/server/chunks/build/useCopyToClipboard-vi6FYyyZ.mjs.map +1 -0
  177. package/.output/server/chunks/build/useNotificationBus-BG5JNQf1.mjs +1 -1
  178. package/.output/server/chunks/build/{usePreferences-CUvZsOq5.mjs → usePreferences-CzC8fRzd.mjs} +7 -1
  179. package/.output/server/chunks/build/usePreferences-CzC8fRzd.mjs.map +1 -0
  180. package/.output/server/chunks/build/view-Dc8mvzCB.mjs +1 -1
  181. package/.output/server/chunks/nitro/nitro.mjs +884 -818
  182. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  183. package/.output/server/chunks/routes/_ws/chat.mjs +18 -4
  184. package/.output/server/chunks/routes/_ws/chat.mjs.map +1 -1
  185. package/.output/server/chunks/routes/api/dashboard/overview.get.mjs +149 -0
  186. package/.output/server/chunks/routes/api/dashboard/overview.get.mjs.map +1 -0
  187. package/.output/server/chunks/routes/api/documents/_id/public.get.mjs +1 -1
  188. package/.output/server/chunks/routes/api/documents/_id/restore.post.mjs +1 -1
  189. package/.output/server/chunks/routes/api/documents/by-path.post.mjs +1 -1
  190. package/.output/server/chunks/routes/api/documents/index.delete.mjs +1 -1
  191. package/.output/server/chunks/routes/api/documents/index.put.mjs +1 -1
  192. package/.output/server/chunks/routes/api/fs/delete.post.mjs +1 -1
  193. package/.output/server/chunks/routes/api/fs/list.get.mjs +1 -1
  194. package/.output/server/chunks/routes/api/fs/mkdir.post.mjs +1 -1
  195. package/.output/server/chunks/routes/api/fs/move.post.mjs +1 -1
  196. package/.output/server/chunks/routes/api/fs/read.post.mjs +1 -1
  197. package/.output/server/chunks/routes/api/fs/rename.post.mjs +1 -1
  198. package/.output/server/chunks/routes/api/fs/write.post.mjs +1 -1
  199. package/.output/server/chunks/routes/api/health.get.mjs +1 -1
  200. package/.output/server/chunks/routes/api/home.get.mjs +1 -1
  201. package/.output/server/chunks/routes/api/hooks/index.get.mjs +1 -1
  202. package/.output/server/chunks/routes/api/hooks/index.post.mjs +1 -1
  203. package/.output/server/chunks/routes/api/hooks/stats.get.mjs +1 -1
  204. package/.output/server/chunks/routes/api/index.get3.mjs +1 -1
  205. package/.output/server/chunks/routes/api/index.get4.mjs +1 -1
  206. package/.output/server/chunks/routes/api/index.get5.mjs +1 -1
  207. package/.output/server/chunks/routes/api/index.get6.mjs +1 -1
  208. package/.output/server/chunks/routes/api/index.get7.mjs +1 -1
  209. package/.output/server/chunks/routes/api/index.get8.mjs +82 -0
  210. package/.output/server/chunks/routes/api/index.get8.mjs.map +1 -0
  211. package/.output/server/chunks/routes/api/index.post2.mjs +1 -1
  212. package/.output/server/chunks/routes/api/index.post3.mjs +1 -1
  213. package/.output/server/chunks/routes/api/index.post4.mjs +1 -1
  214. package/.output/server/chunks/routes/api/index.put.mjs +1 -1
  215. package/.output/server/chunks/routes/api/memory/_id_.delete.mjs +1 -1
  216. package/.output/server/chunks/routes/api/memory/context.get.mjs +1 -1
  217. package/.output/server/chunks/routes/api/memory/extract.post.mjs +20 -1
  218. package/.output/server/chunks/routes/api/memory/extract.post.mjs.map +1 -1
  219. package/.output/server/chunks/routes/api/memory/search.get.mjs +1 -1
  220. package/.output/server/chunks/routes/api/memory/store.post.mjs +1 -1
  221. package/.output/server/chunks/routes/api/projects/index.delete.mjs +1 -1
  222. package/.output/server/chunks/routes/api/projects/index.get.mjs +1 -1
  223. package/.output/server/chunks/routes/api/projects/index.put.mjs +1 -1
  224. package/.output/server/chunks/routes/api/secrets/_key_.delete.mjs +1 -1
  225. package/.output/server/chunks/routes/api/secrets/_key_.get.mjs +1 -1
  226. package/.output/server/chunks/routes/api/secrets/_key_.put.mjs +1 -1
  227. package/.output/server/chunks/routes/api/tasks/_id/restore.post.mjs +1 -1
  228. package/.output/server/chunks/routes/api/tasks/index.delete.mjs +1 -1
  229. package/.output/server/chunks/routes/api/tasks/index.put.mjs +1 -1
  230. package/.output/server/chunks/routes/api/tasks/tags.get.mjs +1 -1
  231. package/.output/server/chunks/routes/api/usage/stats.get.mjs +130 -0
  232. package/.output/server/chunks/routes/api/usage/stats.get.mjs.map +1 -0
  233. package/.output/server/chunks/routes/api/user/email.patch.mjs +1 -1
  234. package/.output/server/chunks/routes/notifications.mjs +1 -1
  235. package/.output/server/chunks/routes/renderer.mjs +1 -1
  236. package/.output/server/chunks/routes/terminal.mjs +1 -1
  237. package/.output/server/index.mjs +1 -1
  238. package/.output/server/package.json +1 -1
  239. package/app/components/dashboard/RecentChats.vue +93 -0
  240. package/app/components/dashboard/RecentDocs.vue +108 -0
  241. package/app/components/dashboard/StatCards.vue +82 -0
  242. package/app/components/dashboard/UpcomingTasks.vue +119 -0
  243. package/app/components/dashboard/UsageSummary.vue +94 -0
  244. package/app/components/editor/DocumentEditor.vue +5 -3
  245. package/app/components/usage/UsageCostChart.client.vue +174 -0
  246. package/app/components/usage/UsageCostChart.server.vue +22 -0
  247. package/app/components/usage/UsageRecordsTable.vue +249 -0
  248. package/app/components/usage/UsageSourceDonut.client.vue +93 -0
  249. package/app/components/usage/UsageSourceDonut.server.vue +21 -0
  250. package/app/components/usage/UsageStatsCards.vue +101 -0
  251. package/app/components/usage/UsageTopConsumers.vue +89 -0
  252. package/app/composables/useCopyToClipboard.ts +37 -0
  253. package/app/composables/usePreferences.ts +10 -0
  254. package/app/layouts/dashboard.vue +8 -1
  255. package/app/pages/chat.vue +11 -1
  256. package/app/pages/dashboard.vue +65 -64
  257. package/app/pages/usage.vue +130 -0
  258. package/app/pages/view/[uuid].vue +4 -3
  259. package/package.json +1 -1
  260. package/server/api/dashboard/overview.get.ts +133 -0
  261. package/server/api/usage/index.get.ts +69 -0
  262. package/server/api/usage/stats.get.ts +127 -0
  263. package/server/db/schema.ts +17 -0
  264. package/server/drizzle/migrations/0011_tearful_johnny_storm.sql +12 -0
  265. package/server/drizzle/migrations/meta/0011_snapshot.json +1634 -0
  266. package/server/drizzle/migrations/meta/_journal.json +7 -0
  267. package/server/routes/_ws/chat.ts +29 -2
  268. package/server/services/agent-executor.ts +13 -0
  269. package/server/services/memory-extractor.ts +25 -0
  270. package/server/utils/log-token-usage.ts +22 -0
  271. package/shared/types/index.ts +81 -0
  272. package/.output/public/_nuxt/B34UfOg4.js +0 -1
  273. package/.output/public/_nuxt/B3DmiwBX.js +0 -1
  274. package/.output/public/_nuxt/BESViHC6.js +0 -1
  275. package/.output/public/_nuxt/BIm_buQF.js +0 -1
  276. package/.output/public/_nuxt/BMh-dHBK.js +0 -1
  277. package/.output/public/_nuxt/Bkv1Ouue.js +0 -1
  278. package/.output/public/_nuxt/C4i10ReQ.js +0 -1
  279. package/.output/public/_nuxt/C5euqjeX.js +0 -1
  280. package/.output/public/_nuxt/C9hy_rtV.js +0 -1
  281. package/.output/public/_nuxt/CWJhKIyp.js +0 -1
  282. package/.output/public/_nuxt/Ck24Z-8o.js +0 -1
  283. package/.output/public/_nuxt/D1JmZKz7.js +0 -1
  284. package/.output/public/_nuxt/D6xvQUYG.js +0 -1
  285. package/.output/public/_nuxt/DGTbw5AQ.js +0 -1
  286. package/.output/public/_nuxt/Da8Xd1w6.js +0 -1
  287. package/.output/public/_nuxt/DamUHI17.js +0 -1
  288. package/.output/public/_nuxt/DoIiMqKa.js +0 -76
  289. package/.output/public/_nuxt/builds/meta/75ff59f2-0860-4bfc-a288-c670397cae5c.json +0 -1
  290. package/.output/public/_nuxt/entry.tLLAvqs1.css +0 -1
  291. package/.output/public/_nuxt/iJ4KRInq.js +0 -1
  292. package/.output/public/_nuxt/mSr5c6cB.js +0 -1
  293. package/.output/public/_nuxt/r8g_V5AH.js +0 -1
  294. package/.output/public/_nuxt/rZmMQHiC.js +0 -1
  295. package/.output/server/chunks/build/CodeEditorFallback-DfYly7f5.mjs.map +0 -1
  296. package/.output/server/chunks/build/dashboard-DtbGchTa.mjs +0 -277
  297. package/.output/server/chunks/build/dashboard-DtbGchTa.mjs.map +0 -1
  298. package/.output/server/chunks/build/usePreferences-CUvZsOq5.mjs.map +0 -1
  299. /package/.output/public/_nuxt/{language-detection.Be_IvFWy.css → useCopyToClipboard.Be_IvFWy.css} +0 -0
@@ -78,6 +78,13 @@
78
78
  "when": 1771353929831,
79
79
  "tag": "0010_condemned_skrulls",
80
80
  "breakpoints": true
81
+ },
82
+ {
83
+ "idx": 11,
84
+ "version": "7",
85
+ "when": 1771384095170,
86
+ "tag": "0011_tearful_johnny_storm",
87
+ "breakpoints": true
81
88
  }
82
89
  ]
83
90
  }
@@ -3,6 +3,7 @@ import { eq } from 'drizzle-orm'
3
3
  import { chatSessionManager } from '~~/server/utils/chat-session-manager'
4
4
  import { getDb } from '~~/server/db'
5
5
  import * as schema from '~~/server/db/schema'
6
+ import { logTokenUsage } from '~~/server/utils/log-token-usage'
6
7
  import type { ChatClientMessage, ChatContentBlock } from '~~/shared/types'
7
8
 
8
9
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -201,8 +202,17 @@ async function streamSDKResponse(peer: any, session: any, conversationId: string
201
202
  }
202
203
  }
203
204
  } else if (message.type === 'result') {
204
- const costUsd = message.total_cost_usd || 0
205
- const durationMs = message.duration_ms || 0
205
+ // Cast to access usage fields the SDK provides but aren't in the TS types
206
+ const msg = message as unknown as {
207
+ total_cost_usd: number
208
+ duration_ms: number
209
+ num_turns: number
210
+ usage: { input_tokens: number, output_tokens: number }
211
+ }
212
+ const costUsd = msg.total_cost_usd || 0
213
+ const durationMs = msg.duration_ms || 0
214
+ const inputTokens = msg.usage?.input_tokens || 0
215
+ const outputTokens = msg.usage?.output_tokens || 0
206
216
 
207
217
  // Persist assistant message
208
218
  if (contentBlocks.length > 0) {
@@ -230,6 +240,23 @@ async function streamSDKResponse(peer: any, session: any, conversationId: string
230
240
  })
231
241
  .where(eq(schema.conversations.id, conversationId))
232
242
 
243
+ // Log token usage
244
+ const [conv] = await db.select({ title: schema.conversations.title })
245
+ .from(schema.conversations)
246
+ .where(eq(schema.conversations.id, conversationId))
247
+ .limit(1)
248
+
249
+ logTokenUsage({
250
+ source: 'chat',
251
+ sourceId: conversationId,
252
+ sourceName: conv?.title || 'Chat',
253
+ inputTokens,
254
+ outputTokens,
255
+ costUsd,
256
+ durationMs,
257
+ numTurns: msg.num_turns || 1
258
+ })
259
+
233
260
  send(peer, {
234
261
  type: 'chat:stream_end',
235
262
  conversationId,
@@ -4,6 +4,7 @@ import { getDb } from '../db'
4
4
  import * as schema from '../db/schema'
5
5
  import { agentRegistry } from '../utils/agent-registry'
6
6
  import { notifyResourceChange } from '../utils/notify-resource'
7
+ import { logTokenUsage } from '../utils/log-token-usage'
7
8
 
8
9
  // Custom error for cancellation
9
10
  export class AgentCancelledError extends Error {
@@ -88,6 +89,18 @@ export async function executeAgent(config: AgentConfig): Promise<void> {
88
89
  .set({ lastRunAt: new Date(), lastStatus: status })
89
90
  .where(eq(schema.cronAgents.id, config.id))
90
91
 
92
+ // Log token usage
93
+ logTokenUsage({
94
+ source: 'agent',
95
+ sourceId: runId,
96
+ sourceName: config.name,
97
+ inputTokens: result.usage.input_tokens,
98
+ outputTokens: result.usage.output_tokens,
99
+ costUsd: result.total_cost_usd,
100
+ durationMs,
101
+ numTurns: result.num_turns
102
+ })
103
+
91
104
  console.log(`[agent] ${config.name} completed: ${status} (${durationMs}ms, $${result.total_cost_usd.toFixed(4)})`)
92
105
 
93
106
  // Notify: agent completed
@@ -1,5 +1,6 @@
1
1
  import { query } from '@anthropic-ai/claude-agent-sdk'
2
2
  import type { ExtractedMemory, MemoryChunkType } from '~~/shared/types'
3
+ import { logTokenUsage } from '../utils/log-token-usage'
3
4
 
4
5
  const EXTRACTION_PROMPT = `You are a memory extraction assistant. Analyze this conversation excerpt and extract key memories worth preserving for future reference.
5
6
 
@@ -41,6 +42,10 @@ export async function extractMemories(transcript: string): Promise<ExtractedMemo
41
42
  })
42
43
 
43
44
  let result = ''
45
+ let costUsd = 0
46
+ let durationMs = 0
47
+ let inputTokens = 0
48
+ let outputTokens = 0
44
49
 
45
50
  // Stream through messages and get the result
46
51
  for await (const message of conversation) {
@@ -48,12 +53,32 @@ export async function extractMemories(transcript: string): Promise<ExtractedMemo
48
53
  const msg = message as unknown as {
49
54
  subtype: string
50
55
  result?: string
56
+ total_cost_usd: number
57
+ duration_ms: number
58
+ usage: { input_tokens: number, output_tokens: number }
51
59
  }
52
60
  if (msg.subtype === 'success' && msg.result)
53
61
  result = msg.result
62
+
63
+ costUsd = msg.total_cost_usd || 0
64
+ durationMs = msg.duration_ms || 0
65
+ inputTokens = msg.usage?.input_tokens || 0
66
+ outputTokens = msg.usage?.output_tokens || 0
54
67
  }
55
68
  }
56
69
 
70
+ // Log token usage for memory extraction
71
+ if (costUsd > 0 || inputTokens > 0)
72
+ logTokenUsage({
73
+ source: 'memory_extraction',
74
+ sourceName: 'Memory Extraction',
75
+ inputTokens,
76
+ outputTokens,
77
+ costUsd,
78
+ durationMs,
79
+ numTurns: 1
80
+ })
81
+
57
82
  if (!result)
58
83
  return []
59
84
 
@@ -0,0 +1,22 @@
1
+ import { getDb } from '~~/server/db'
2
+ import * as schema from '~~/server/db/schema'
3
+
4
+ interface TokenUsageEntry {
5
+ source: 'chat' | 'agent' | 'memory_extraction'
6
+ sourceId?: string
7
+ sourceName?: string
8
+ inputTokens: number
9
+ outputTokens: number
10
+ costUsd: number
11
+ durationMs?: number
12
+ numTurns?: number
13
+ }
14
+
15
+ export async function logTokenUsage(entry: TokenUsageEntry) {
16
+ try {
17
+ const db = getDb()
18
+ await db.insert(schema.tokenUsage).values(entry)
19
+ } catch (e) {
20
+ console.error('[token-usage] Failed to log:', e)
21
+ }
22
+ }
@@ -373,6 +373,87 @@ export interface AgentDetailStats {
373
373
  dailyRuns: DailyRunData[]
374
374
  }
375
375
 
376
+ // === Token Usage ===
377
+
378
+ export type TokenUsageSource
379
+ = | 'chat'
380
+ | 'agent'
381
+ | 'memory_extraction'
382
+
383
+ export interface TokenUsageRecord {
384
+ id: string
385
+ source: TokenUsageSource
386
+ sourceId?: string
387
+ sourceName?: string
388
+ inputTokens: number
389
+ outputTokens: number
390
+ costUsd: number
391
+ durationMs?: number
392
+ numTurns?: number
393
+ createdAt: Date
394
+ }
395
+
396
+ export interface DailyUsageData {
397
+ date: string
398
+ chat: number
399
+ agent: number
400
+ memory: number
401
+ totalCost: number
402
+ inputTokens: number
403
+ outputTokens: number
404
+ calls: number
405
+ }
406
+
407
+ export interface UsageStats {
408
+ totalCostUsd: number
409
+ totalInputTokens: number
410
+ totalOutputTokens: number
411
+ totalCalls: number
412
+ avgCostPerCall: number
413
+ dailyUsage: DailyUsageData[]
414
+ bySource: { source: TokenUsageSource, cost: number, calls: number, tokens: number }[]
415
+ topConsumers: { name: string, source: TokenUsageSource, cost: number, calls: number }[]
416
+ }
417
+
418
+ // === Dashboard ===
419
+
420
+ export interface DashboardOverview {
421
+ tasks: {
422
+ todoCount: number
423
+ inProgressCount: number
424
+ upcoming: Array<{
425
+ id: string
426
+ title: string
427
+ status: TaskStatus
428
+ priority: number
429
+ dueDate: string | null
430
+ projectName: string | null
431
+ projectColor: string | null
432
+ }>
433
+ }
434
+ conversations: Array<{
435
+ id: string
436
+ sessionId: string
437
+ title: string | null
438
+ messageCount: number
439
+ startedAt: string
440
+ }>
441
+ documents: Array<{
442
+ id: string
443
+ title: string
444
+ path: string
445
+ modifiedAt: string | null
446
+ projectName: string | null
447
+ projectColor: string | null
448
+ }>
449
+ usage: {
450
+ totalCost7d: number
451
+ totalCalls7d: number
452
+ totalInputTokens7d: number
453
+ totalOutputTokens7d: number
454
+ }
455
+ }
456
+
376
457
  // === Hook Events ===
377
458
 
378
459
  export type HookEventType
@@ -1 +0,0 @@
1
- import{N as ne,c as I,aj as z,X as se,ay as L,e as j,q as P,k as ie,r as O,a1 as oe,af as R,K as E,bb as ue,bc as le,Q as ce,R as fe,S as de,a3 as me,al as pe,U as ye,C as Q,as as ve,bd as X,be as G,a$ as he,b0 as be}from"./BaPPQtFe.js";import{b as Ee}from"./BBygTbuF.js";function ge(n){return"schema"in n&&typeof n.coercer=="function"&&typeof n.validator=="function"&&typeof n.refiner=="function"}function we(n){return"~standard"in n}async function Se(n,i){const l=await i["~standard"].validate(n);return l.issues?{errors:l.issues?.map(a=>({name:a.path?.map(o=>typeof o=="object"?o.key:o).join(".")||"",message:a.message}))||[],result:null}:{errors:null,result:l.value}}async function Fe(n,i){const[l,a]=i.validate(n);return l?{errors:l.failures().map(h=>({message:h.message,name:h.path.join(".")})),result:null}:{errors:null,result:a}}function Ie(n,i){if(we(i))return Se(n,i);if(ge(i))return Fe(n,i);throw new Error("Form validation failed: Unsupported form schema")}function je(n,i){return i?i.split(".").reduce((a,o)=>a?.[o],n):n}function qe(n,i,l){if(!i)return Object.assign(n,l);if(!n)return n;const a=i.split(".");let o=n;for(let y=0;y<a.length-1;y++){const c=a[y];(o[c]===void 0||o[c]===null)&&(y+1<a.length&&!Number.isNaN(Number(a[y+1]))?o[c]=[]:o[c]={}),o=o[c]}const h=a[a.length-1];return o[h]=l,n}class q extends Error{formId;errors;constructor(i,l){super("Form validation exception"),this.formId=i,this.errors=l,Object.setPrototypeOf(this,q.prototype)}}const xe={base:""},Oe={__name:"UForm",props:{id:{type:[String,Number],required:!1},schema:{type:null,required:!1},state:{type:null,required:!1},validate:{type:Function,required:!1},validateOn:{type:Array,required:!1,default(){return["input","blur","change"]}},disabled:{type:Boolean,required:!1},name:{type:null,required:!1},validateOnInputDelay:{type:Number,required:!1,default:300},transform:{type:null,required:!1,default:()=>!0},nested:{type:Boolean,required:!1},loadingAuto:{type:Boolean,required:!1,default:!0},class:{type:null,required:!1},onSubmit:{type:Function,required:!1}},emits:["submit","error"],setup(n,{expose:i,emit:l}){const a=n,o=l,h=ne(),y=I(()=>z({extend:z(xe),...h.ui?.form||{}})),c=a.id??se(),k=Ee(`form-${c}`),g=a.nested===!0&&L(G,void 0),A=a.nested===!0?L(X,void 0):void 0,w=I(()=>A?.value?a.name?je(A.value,a.name):A.value:a.state);E(G,k),E(X,w);const S=j(new Map);P(async()=>{g&&(await ie(),g.emit({type:"attach",validate:F,formId:c,name:a.name,api:$}))}),oe(()=>{k.reset(),g&&g.emit({type:"detach",formId:c})}),P(async()=>{k.on(async e=>{e.type==="attach"?S.value.set(e.formId,{validate:e.validate,name:e.name,api:e.api}):e.type==="detach"?S.value.delete(e.formId):a.validateOn?.includes(e.type)&&!v.value&&(e.type!=="input"?await F({name:e.name,silent:!0,nested:!1}):(e.eager||K.has(e.name))&&await F({name:e.name,silent:!0,nested:!1})),e.type==="blur"&&K.add(e.name),(e.type==="change"||e.type==="input"||e.type==="blur"||e.type==="focus")&&_.add(e.name),(e.type==="change"||e.type==="input")&&B.add(e.name)})});const u=j([]);E(he,u);const x=j({});E(be,x);const B=R(new Set),_=R(new Set),K=R(new Set);function C(e){return e.map(t=>({...t,id:t?.name?x.value[t.name]?.id:void 0}))}const N=j(null);async function H(){let e=a.validate?await a.validate(w.value)??[]:[];if(a.schema){const{errors:t,result:r}=await Ie(w.value,a.schema);t?e=e.concat(t):N.value=r}return C(e)}async function F(e={silent:!1,nested:!1,transform:!1}){const t=e.name&&!Array.isArray(e.name)?[e.name]:e.name;let r=[],s=[];if(!t&&e.nested){const p=Array.from(S.value.values()).map(m=>J(m,e)),d=await Promise.all(p);s=d.filter(m=>m.error).flatMap(m=>m.error.errors.map(ae=>V(ae,m.name))),r=d.filter(m=>m.output!==void 0)}const b=[...await H(),...s];if(t?u.value=te(b,t):u.value=b,u.value?.length){if(e.silent)return!1;throw new q(c,u.value)}return e.transform?(r.forEach(p=>{p.name?qe(N.value,p.name,p.output):Object.assign(N.value,p.output)}),N.value??w.value):w.value}const v=j(!1);E(ue,O(v));async function W(e){v.value=a.loadingAuto&&!0;const t=e;try{t.data=await F({nested:!0,transform:a.transform}),await a.onSubmit?.(t),B.clear()}catch(r){if(!(r instanceof q))throw r;const s={...t,errors:r.errors};o("error",s)}finally{v.value=!1}}const D=I(()=>a.disabled||v.value);E(le,I(()=>({disabled:D.value,validateOnInputDelay:a.validateOnInputDelay})));async function J(e,t){try{const r=await e.validate({...t,silent:!1});return{name:e.name,output:r}}catch(r){if(!(r instanceof q))throw r;return{name:e.name,error:r}}}function V(e,t){return!t||!e.name?e:{...e,name:t+"."+e.name}}function Y(e,t){const r=t+".",s=e?.name?.startsWith(r)?e.name.substring(r.length):e.name;return{...e,name:s}}function Z(e,t){return t?e.filter(r=>r?.name?.startsWith(t+".")).map(r=>Y(r,t)):e}function M(e){return e.api.getErrors().map(t=>e.name?{...t,name:e.name+"."+t.name}:t)}function T(e,t){return!e||!t?!0:e instanceof RegExp?e.test(t):t===e||typeof e=="string"&&e.startsWith(t+".")}function ee(e,t){if(!e||e instanceof RegExp)return e;if(t!==e)return typeof e=="string"&&e.startsWith(t+".")?e.substring(t.length+1):e}function te(e,t){const r=new Set(t),s=t.map(d=>x.value?.[d]?.pattern).filter(Boolean),f=d=>d.name?r.has(d.name)?!0:s.some(m=>m.test(d.name)):!1,b=u.value.filter(d=>!f(d)),p=e.filter(f);return[...b,...p]}function re(e,t){return e.filter(r=>t instanceof RegExp?!(r.name&&t.test(r.name)):!r.name||r.name!==t)}function U(e){return!e.name||!!x.value[e.name]}const $={validate:F,errors:u,setErrors(e,t){const r=C(e.filter(U)),s=[];for(const f of S.value.values())if(T(t,f.name)){const b=Z(e,f.name);f.api.setErrors(b,ee(t,f.name||"")),s.push(...M(f))}if(t){const f=re(u.value,t);u.value=[...f,...r,...s]}else u.value=[...r,...s]},async submit(){await W(new Event("submit"))},getErrors(e){return e?u.value.filter(t=>e instanceof RegExp?t.name&&e.test(t.name):t.name===e):u.value},clear(e){const t=e?u.value.filter(s=>U(s)&&(e instanceof RegExp?!(s.name&&e.test(s.name)):s.name!==e)):[],r=[];for(const s of S.value.values())T(e,s.name)&&s.api.clear(),r.push(...M(s));u.value=[...t,...r]},disabled:D,loading:v,dirty:I(()=>!!B.size),dirtyFields:O(B),blurredFields:O(K),touchedFields:O(_)};return i($),(e,t)=>(fe(),ce(ve(Q(g)?"div":"form"),{id:Q(c),class:ye(y.value({class:a.class})),onSubmit:pe(W,["prevent"])},{default:de(()=>[me(e.$slots,"default",{errors:u.value,loading:v.value})]),_:3},40,["id","class"]))}};export{Oe as _};
@@ -1 +0,0 @@
1
- import{_ as m}from"./JxSV3wOO.js";import{_ as c,a as _}from"./Ddih3UKd.js";import{a as p,Q as u,S as e,R as f,T as o,a9 as s,_ as x}from"./BaPPQtFe.js";import{_ as g}from"./ChMIRIq6.js";import{_ as b}from"./DamUHI17.js";import"./4Ew5YctE.js";import"./BBygTbuF.js";import"./nzAH3Wk0.js";const v={class:"p-6 overflow-auto"},h={class:"space-y-6"},y={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},k={class:"flex items-center gap-2"},C={class:"flex items-center gap-2"},N={class:"flex items-center gap-2"},V=p({__name:"dashboard",setup(U){return($,t)=>{const i=m,l=_,a=x,n=g,d=b,r=c;return f(),u(r,{id:"dashboard",grow:""},{default:e(()=>[o(l,{title:"Dashboard"},{actions:e(()=>[o(i)]),_:1}),s("div",v,[s("div",h,[t[5]||(t[5]=s("div",null,[s("h1",{class:"text-2xl font-bold"}," Welcome to Cognova "),s("p",{class:"text-muted mt-1"}," Your personal knowledge management system. ")],-1)),s("div",y,[o(n,null,{header:e(()=>[s("div",k,[o(a,{name:"i-lucide-check-square",class:"size-5 text-primary"}),t[0]||(t[0]=s("span",{class:"font-semibold"},"Tasks Due Today",-1))])]),default:e(()=>[t[1]||(t[1]=s("p",{class:"text-muted text-sm"}," No tasks due today. ",-1))]),_:1}),o(n,null,{header:e(()=>[s("div",C,[o(a,{name:"i-lucide-file-text",class:"size-5 text-primary"}),t[2]||(t[2]=s("span",{class:"font-semibold"},"Recent Notes",-1))])]),default:e(()=>[t[3]||(t[3]=s("p",{class:"text-muted text-sm"}," No recent notes. ",-1))]),_:1}),o(n,null,{header:e(()=>[s("div",N,[o(a,{name:"i-lucide-inbox",class:"size-5 text-primary"}),t[4]||(t[4]=s("span",{class:"font-semibold"},"Quick Capture",-1))])]),default:e(()=>[o(d,{placeholder:"What's on your mind?",class:"mt-2"})]),_:1})])])])]),_:1})}}});export{V as default};
@@ -1 +0,0 @@
1
- import{a as T,G as i,R as s,a9 as n,T as a,W as U,a7 as u,ag as B,ah as D,U as W,ac as v,al as J,ba as K,ak as X,e as Y,q as Z,f as N,c as tt,S as f,C as e,Q as k,_ as et,a8 as st,k as w}from"./BaPPQtFe.js";import{_ as ot,a as nt}from"./Ddih3UKd.js";import{_ as at}from"./BXWm1qrj.js";import{u as it,_ as rt,a as lt,b as ct}from"./zOs8gUGl.js";import"./4Ew5YctE.js";import"./BBygTbuF.js";import"./nzAH3Wk0.js";import"./BP_jQhKs.js";import"./88opOQSr.js";import"./iik6CYzq.js";import"./C8ytOrRD.js";import"./DdoFnl6e.js";import"./Da8Xd1w6.js";const ut={class:"flex flex-col h-full"},dt={class:"p-3 border-b border-default"},mt={class:"flex-1 overflow-y-auto"},_t={key:0,class:"p-4 text-sm text-dimmed text-center"},ft=["onClick"],pt={class:"flex items-start justify-between gap-2"},gt={class:"truncate text-sm font-medium"},ht={class:"flex items-center gap-2 mt-1 text-xs text-dimmed"},vt={key:0},xt={key:1},Ct=T({__name:"ConversationList",props:{conversations:{},activeId:{}},emits:["select","delete","new"],setup(p,{emit:g}){const r=g;function d(m){const l=new Date(m),t=new Date().getTime()-l.getTime();return t<6e4?"just now":t<36e5?`${Math.floor(t/6e4)}m ago`:t<864e5?`${Math.floor(t/36e5)}h ago`:l.toLocaleDateString()}return(m,l)=>{const c=U;return s(),i("div",ut,[n("div",dt,[a(c,{label:"New Chat",icon:"i-lucide-plus",color:"primary",variant:"soft",block:"",onClick:l[0]||(l[0]=t=>r("new"))})]),n("div",mt,[p.conversations.length===0?(s(),i("div",_t," No conversations yet ")):u("",!0),(s(!0),i(B,null,D(p.conversations,t=>(s(),i("button",{key:t.id,class:W(["w-full p-3 text-left border-b border-default hover:bg-elevated/50 transition-colors group",{"bg-elevated/50":p.activeId===t.id}]),onClick:x=>r("select",t.id)},[n("div",pt,[n("div",gt,v(t.title||"Untitled"),1),a(c,{icon:"i-lucide-trash-2",variant:"ghost",color:"error",size:"xs",class:"opacity-0 group-hover:opacity-100 shrink-0",onClick:J(x=>r("delete",t.id),["stop"])},null,8,["onClick"])]),n("div",ht,[n("span",null,v(d(t.startedAt)),1),t.messageCount?(s(),i("span",vt,v(t.messageCount)+" msgs",1)):u("",!0),t.totalCostUsd>0?(s(),i("span",xt,"$"+v(t.totalCostUsd.toFixed(4)),1)):u("",!0)])],10,ft))),128))])])}}}),bt=Object.assign(Ct,{__name:"ChatConversationList"}),kt={class:"flex flex-1 min-w-0"},wt={class:"flex flex-col h-full"},yt={key:0,class:"flex flex-col items-center justify-center h-full text-dimmed"},Vt=T({__name:"chat",setup(p){const{connectionStatus:g,sessionStatus:r,activeConversationId:d,messages:m,conversations:l,streamingText:c,streamingToolCalls:t,connect:x,sendMessage:y,interrupt:z,startNewConversation:C,loadConversation:I,loadConversations:M,deleteConversation:L}=it(),j=K(),q=X(),h=Y(null);Z(()=>{if(x(),M(),j.query.onboarding){const _=N(g,o=>{o==="connected"&&(_(),C(),y("Hello!"),w(b),q.replace({query:{}}))},{immediate:!0})}});function V(_){y(_),w(b)}function b(){h.value&&(h.value.scrollTop=h.value.scrollHeight)}N(c,()=>w(b));const R=tt(()=>d.value?l.value.find(o=>o.id===d.value)?.title||"Chat":"New Chat");return(_,o)=>{const F=bt,$=ot,H=at,A=U,E=nt,G=et,O=rt,P=lt,Q=ct;return s(),i("div",kt,[a($,{id:"chat-sidebar","default-size":20,"min-size":15,"max-size":30,collapsible:"",resizable:"",class:"hidden lg:flex"},{default:f(()=>[a(F,{conversations:e(l),"active-id":e(d),onSelect:e(I),onDelete:e(L),onNew:e(C)},null,8,["conversations","active-id","onSelect","onDelete","onNew"])]),_:1}),a($,{id:"chat-main",grow:""},{header:f(()=>[a(E,{title:e(R)},{right:f(()=>[e(r)==="streaming"?(s(),k(H,{key:0,color:"warning",variant:"subtle"},{default:f(()=>[...o[0]||(o[0]=[st(" Streaming ",-1)])]),_:1})):u("",!0),a(A,{icon:"i-lucide-plus",variant:"ghost",color:"neutral",class:"lg:hidden",onClick:e(C)},null,8,["onClick"])]),_:1},8,["title"])]),default:f(()=>[n("div",wt,[n("div",{ref_key:"messagesContainer",ref:h,class:"flex-1 overflow-y-auto p-4 space-y-4"},[e(m).length===0&&e(r)!=="streaming"?(s(),i("div",yt,[a(G,{name:"i-lucide-message-square",class:"size-12 mb-4"}),o[1]||(o[1]=n("p",{class:"text-lg font-medium"}," Start a conversation ",-1)),o[2]||(o[2]=n("p",{class:"text-sm mt-1"}," Send a message to start chatting with Claude ",-1))])):u("",!0),(s(!0),i(B,null,D(e(m),S=>(s(),k(O,{key:S.id,message:S},null,8,["message"]))),128)),e(r)==="streaming"?(s(),k(P,{key:1,text:e(c),"tool-calls":e(t)},null,8,["text","tool-calls"])):u("",!0)],512),a(Q,{"session-status":e(r),"connection-status":e(g),onSend:V,onInterrupt:e(z)},null,8,["session-status","connection-status","onInterrupt"])])]),_:1})])}}});export{Vt as default};
@@ -1 +0,0 @@
1
- import{c as L,C as t,a as V,aZ as oe,Q as _,R as c,S as h,T as F,a2 as W,V as T,a3 as S,a5 as ct,aP as Se,aN as je,a0 as $e,aQ as Fe,e as H,aO as Le,f as Ge,bh as Ke,a7 as N,k as ce,Z as tt,bg as qe,al as Ae,b_ as ft,q as ve,a1 as Re,b$ as vt,bi as mt,am as at,bP as gt,ag as ie,E as ht,$ as bt,G,ah as Pe,as as lt,aU as yt,h as _t,ai as it,O as xt,bC as Ct,aL as _e,aH as ot,b9 as qt,a8 as ye,ac as de,aM as Ee,b5 as St,aR as pe,ao as We,ap as It,L as wt,N as kt,aG as zt,aI as Lt,aA as be,aS as Ve,aD as Et,at as Ft,au as At,aj as Ye,bQ as Bt,c0 as Tt,aE as Vt,U as z,a9 as ze,_ as Oe,av as Qe,bV as Ot,bW as Ze,D as Kt,aF as Pt}from"./BaPPQtFe.js";import{a as Dt,u as $t,F as Rt}from"./BZZeOWzQ.js";import{c as Nt,a as Mt,b as Ht,P as Gt}from"./WqUIRM3G.js";import{u as rt}from"./BboG47Wz.js";import{f as De}from"./B2OKrc4G.js";import{u as jt}from"./BMh-dHBK.js";import{u as Ut,g as Wt}from"./Biy6boRV.js";import{g as Yt,M as Qt}from"./BnwR3LQL.js";import{V as Zt}from"./BGaNWD0s.js";import{u as Ie}from"./D1JmZKz7.js";import{u as Xt}from"./S6GTaxiQ.js";import{c as Xe}from"./BBygTbuF.js";import{_ as Jt}from"./DamUHI17.js";function st(s){const o=L(()=>t(s)),a=L(()=>new Intl.Collator("en",{usage:"search",...o.value}));return{startsWith:(u,p)=>p.length===0?!0:(u=u.normalize("NFC"),p=p.normalize("NFC"),a.value.compare(u.slice(0,p.length),p)===0),endsWith:(u,p)=>p.length===0?!0:(u=u.normalize("NFC"),p=p.normalize("NFC"),a.value.compare(u.slice(-p.length),p)===0),contains:(u,p)=>{if(p.length===0)return!0;u=u.normalize("NFC"),p=p.normalize("NFC");let v=0;const k=p.length;for(;v+k<=u.length;v++){const C=u.slice(v,v+k);if(a.value.compare(p,C)===0)return!0}return!1}}}function ea(){return{ALT:"Alt",ARROW_DOWN:"ArrowDown",ARROW_LEFT:"ArrowLeft",ARROW_RIGHT:"ArrowRight",ARROW_UP:"ArrowUp",BACKSPACE:"Backspace",CAPS_LOCK:"CapsLock",CONTROL:"Control",DELETE:"Delete",END:"End",ENTER:"Enter",ESCAPE:"Escape",F1:"F1",F10:"F10",F11:"F11",F12:"F12",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",HOME:"Home",META:"Meta",PAGE_DOWN:"PageDown",PAGE_UP:"PageUp",SHIFT:"Shift",SPACE:" ",TAB:"Tab",CTRL:"Control",ASTERISK:"*",SPACE_CODE:"Space"}}var ta=V({__name:"ComboboxAnchor",props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(s){const{forwardRef:o}=oe();return(a,e)=>(c(),_(t(Nt),{"as-child":"",reference:a.reference},{default:h(()=>[F(t(W),T({ref:t(o),"as-child":a.asChild,as:a.as},a.$attrs),{default:h(()=>[S(a.$slots,"default")]),_:3},16,["as-child","as"])]),_:3},8,["reference"]))}}),aa=ta;function Je(s){return s?.querySelector("[data-state=checked]")}function la(s,o,a){return s===void 0?!1:Array.isArray(s)?s.some(e=>fe(e,o,a)):fe(s,o,a)}function fe(s,o,a){return s===void 0||o===void 0?!1:typeof s=="string"?s===o:typeof a=="function"?a(s,o):typeof a=="string"?s?.[a]===o?.[a]:ct(s,o)}const[Be,ia]=Se("ListboxRoot");var oa=V({__name:"ListboxRoot",props:{modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},multiple:{type:Boolean,required:!1},orientation:{type:String,required:!1,default:"vertical"},dir:{type:String,required:!1},disabled:{type:Boolean,required:!1},selectionBehavior:{type:String,required:!1,default:"toggle"},highlightOnHover:{type:Boolean,required:!1},by:{type:[String,Function],required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","highlight","entryFocus","leave"],setup(s,{expose:o,emit:a}){const e=s,l=a,{multiple:i,highlightOnHover:u,orientation:p,disabled:v,selectionBehavior:k,dir:C}=je(e),{getItems:I}=$e({isProvider:!0}),{handleTypeaheadSearch:f}=Ut(),{primitiveElement:m,currentElement:n}=Fe(),q=ea(),$=rt(C),P=jt(n),M=H(),Y=H(!1),j=H(!0),w=Le(e,"modelValue",l,{defaultValue:e.defaultValue??(i.value?[]:void 0),passive:e.modelValue===void 0,deep:!0});function xe(d){if(Y.value=!0,e.multiple){const y=Array.isArray(w.value)?[...w.value]:[],x=y.findIndex(E=>fe(E,d,e.by));e.selectionBehavior==="toggle"?(x===-1?y.push(d):y.splice(x,1),w.value=y):(w.value=[d],M.value=d)}else e.selectionBehavior==="toggle"&&fe(w.value,d,e.by)?w.value=void 0:w.value=d;setTimeout(()=>{Y.value=!1},1)}const O=H(null),se=H(null),Q=H(!1),ee=H(!1),ne=Ke(),me=Ke(),Z=Ke();function te(){return I().map(d=>d.ref).filter(d=>d.dataset.disabled!=="")}function R(d,y=!0){if(!d)return;O.value=d,j.value&&O.value.focus(),y&&O.value.scrollIntoView({block:"nearest"});const x=I().find(E=>E.ref===d);l("highlight",x)}function A(d){if(Q.value)Z.trigger(d);else{const y=I().find(x=>fe(x.value,d,e.by));y&&(O.value=y.ref,R(y.ref))}}function X(d){O.value&&O.value.isConnected&&(d.preventDefault(),d.stopPropagation(),ee.value||O.value.click())}function J(d){if(j.value){if(Y.value=!0,Q.value)me.trigger(d);else{const y=d.altKey||d.ctrlKey||d.metaKey;if(y&&d.key==="a"&&i.value){const x=I(),E=x.map(ue=>ue.value);w.value=[...E],d.preventDefault(),R(x[x.length-1].ref)}else if(!y){const x=f(d.key,I());x&&R(x)}}setTimeout(()=>{Y.value=!1},1)}}function ae(){ee.value=!0}function ge(){ce(()=>{ee.value=!1})}function le(){ce(()=>{const d=new KeyboardEvent("keydown",{key:"PageUp"});Ce(d)})}function g(d){const y=O.value;y?.isConnected&&(se.value=y),O.value=null,l("leave",d)}function Ne(d){const y=new CustomEvent("listbox.entryFocus",{bubbles:!1,cancelable:!0});if(d.currentTarget?.dispatchEvent(y),l("entryFocus",y),!y.defaultPrevented)if(se.value)R(se.value);else{const x=te()?.[0];R(x)}}function Ce(d){const y=Yt(d,p.value,$.value);if(!y)return;let x=te();if(O.value){if(y==="last")x.reverse();else if(y==="prev"||y==="next"){y==="prev"&&x.reverse();const E=x.indexOf(O.value);x=x.slice(E+1)}we(d,x[0])}if(x.length){const E=!O.value&&y==="prev"?x.length-1:0;R(x[E])}if(Q.value)return me.trigger(d)}function we(d,y){if(!(Q.value||e.selectionBehavior!=="replace"||!i.value||!Array.isArray(w.value)||(d.altKey||d.ctrlKey||d.metaKey)&&!d.shiftKey)&&d.shiftKey){const E=I().filter(he=>he.ref.dataset.disabled!=="");let ue=E.find(he=>he.ref===y)?.value;if(d.key===q.END?ue=E[E.length-1].value:d.key===q.HOME&&(ue=E[0].value),!ue||!M.value)return;const Me=De(E.map(he=>he.value),M.value,ue);w.value=Me}}async function ke(d){if(await ce(),Q.value)ne.trigger(d);else{const y=te(),x=y.find(E=>E.dataset.state==="checked");x?R(x):y.length&&R(y[0])}}return Ge(w,()=>{Y.value||ce(()=>{ke()})},{immediate:!0,deep:!0}),o({highlightedElement:O,highlightItem:A,highlightFirstItem:le,highlightSelected:ke,getItems:I}),ia({modelValue:w,onValueChange:xe,multiple:i,orientation:p,dir:$,disabled:v,highlightOnHover:u,highlightedElement:O,isVirtual:Q,virtualFocusHook:ne,virtualKeydownHook:me,virtualHighlightHook:Z,by:e.by,firstValue:M,selectionBehavior:k,focusable:j,onLeave:g,onEnter:Ne,changeHighlight:R,onKeydownEnter:X,onKeydownNavigation:Ce,onKeydownTypeAhead:J,onCompositionStart:ae,onCompositionEnd:ge,highlightFirstItem:le}),(d,y)=>(c(),_(t(W),{ref_key:"primitiveElement",ref:m,as:d.as,"as-child":d.asChild,dir:t($),"data-disabled":t(v)?"":void 0,onPointerleave:g,onFocusout:y[0]||(y[0]=async x=>{const E=x.relatedTarget||x.target;await ce(),O.value&&t(n)&&!t(n).contains(E)&&g(x)})},{default:h(()=>[S(d.$slots,"default",{modelValue:t(w)}),t(P)&&d.name?(c(),_(t(Zt),{key:0,name:d.name,value:t(w),disabled:t(v),required:d.required},null,8,["name","value","disabled","required"])):N("v-if",!0)]),_:3},8,["as","as-child","dir","data-disabled"]))}}),ra=oa,sa=V({__name:"ListboxContent",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(s){const{CollectionSlot:o}=$e(),a=Be(),e=tt(!1,10);return(l,i)=>(c(),_(t(o),null,{default:h(()=>[F(t(W),{role:"listbox",as:l.as,"as-child":l.asChild,tabindex:t(a).focusable.value?t(a).highlightedElement.value?"-1":"0":"-1","aria-orientation":t(a).orientation.value,"aria-multiselectable":!!t(a).multiple.value,"data-orientation":t(a).orientation.value,onMousedown:i[0]||(i[0]=Ae(u=>e.value=!0,["left"])),onFocus:i[1]||(i[1]=u=>{t(e)||t(a).onEnter(u)}),onKeydown:[i[2]||(i[2]=qe(u=>{t(a).orientation.value==="vertical"&&(u.key==="ArrowLeft"||u.key==="ArrowRight")||t(a).orientation.value==="horizontal"&&(u.key==="ArrowUp"||u.key==="ArrowDown")||(u.preventDefault(),t(a).focusable.value&&t(a).onKeydownNavigation(u))},["down","up","left","right","home","end"])),qe(t(a).onKeydownEnter,["enter"]),t(a).onKeydownTypeAhead]},{default:h(()=>[S(l.$slots,"default")]),_:3},8,["as","as-child","tabindex","aria-orientation","aria-multiselectable","data-orientation","onKeydown"])]),_:3}))}}),na=sa,ua=V({__name:"ListboxFilter",props:{modelValue:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"input"}},emits:["update:modelValue"],setup(s,{emit:o}){const a=s,l=Le(a,"modelValue",o,{defaultValue:"",passive:a.modelValue===void 0}),i=Be(),{primitiveElement:u,currentElement:p}=Fe(),v=L(()=>a.disabled||i.disabled.value||!1),k=H();return ft(()=>k.value=i.highlightedElement.value?.id),ve(()=>{i.focusable.value=!1,setTimeout(()=>{a.autoFocus&&p.value?.focus()},1)}),Re(()=>{i.focusable.value=!0}),(C,I)=>(c(),_(t(W),{ref_key:"primitiveElement",ref:u,as:C.as,"as-child":C.asChild,value:t(l),disabled:v.value?"":void 0,"data-disabled":v.value?"":void 0,"aria-disabled":v.value??void 0,"aria-activedescendant":k.value,type:"text",onKeydown:[qe(Ae(t(i).onKeydownNavigation,["prevent"]),["down","up","home","end"]),qe(t(i).onKeydownEnter,["enter"])],onInput:I[0]||(I[0]=f=>{l.value=f.target.value,t(i).highlightFirstItem()}),onCompositionstart:t(i).onCompositionStart,onCompositionend:t(i).onCompositionEnd},{default:h(()=>[S(C.$slots,"default",{modelValue:t(l)})]),_:3},8,["as","as-child","value","disabled","data-disabled","aria-disabled","aria-activedescendant","onKeydown","onCompositionstart","onCompositionend"]))}}),da=ua;const[gl,pa]=Se("ListboxGroup");var ca=V({__name:"ListboxGroup",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(s){const o=s,a=Ie(void 0,"reka-listbox-group");return pa({id:a}),(e,l)=>(c(),_(t(W),T({role:"group"},o,{"aria-labelledby":t(a)}),{default:h(()=>[S(e.$slots,"default")]),_:3},16,["aria-labelledby"]))}}),fa=ca;const va="listbox.select",[ma,ga]=Se("ListboxItem");var ha=V({__name:"ListboxItem",props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},emits:["select"],setup(s,{emit:o}){const a=s,e=o,l=Ie(void 0,"reka-listbox-item"),{CollectionItem:i}=$e(),{forwardRef:u,currentElement:p}=oe(),v=Be(),k=L(()=>p.value===v.highlightedElement.value),C=L(()=>la(v.modelValue.value,a.value,v.by)),I=L(()=>v.disabled.value||a.disabled);async function f(n){e("select",n),!n?.defaultPrevented&&!I.value&&n&&(v.onValueChange(a.value),v.changeHighlight(p.value))}function m(n){const q={originalEvent:n,value:a.value};mt(va,f,q)}return ga({isSelected:C}),(n,q)=>(c(),_(t(i),{value:n.value},{default:h(()=>[vt([k.value,C.value],()=>F(t(W),T({id:t(l)},n.$attrs,{ref:t(u),role:"option",tabindex:t(v).focusable.value?k.value?"0":"-1":-1,"aria-selected":C.value,as:n.as,"as-child":n.asChild,disabled:I.value?"":void 0,"data-disabled":I.value?"":void 0,"data-highlighted":k.value?"":void 0,"data-state":C.value?"checked":"unchecked",onClick:m,onKeydown:qe(Ae(m,["prevent"]),["space"]),onPointermove:q[0]||(q[0]=()=>{t(v).highlightedElement.value!==t(p)&&t(v).highlightOnHover.value&&!t(v).focusable.value&&t(v).changeHighlight(t(p),!1)})}),{default:h(()=>[S(n.$slots,"default")]),_:3},16,["id","tabindex","aria-selected","as","as-child","disabled","data-disabled","data-highlighted","data-state","onKeydown"]),q,1)]),_:3},8,["value"]))}}),ba=ha,ya=V({__name:"ListboxItemIndicator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(s){const o=s;oe();const a=ma();return(e,l)=>t(a).isSelected.value?(c(),_(t(W),T({key:0,"aria-hidden":"true"},o),{default:h(()=>[S(e.$slots,"default")]),_:3},16)):N("v-if",!0)}}),_a=ya,xa=V({__name:"ListboxVirtualizer",props:{options:{type:Array,required:!0},overscan:{type:Number,required:!1},estimateSize:{type:Number,required:!1},textContent:{type:Function,required:!1}},setup(s){const o=s,a=at(),e=Be(),l=gt(),{getItems:i}=$e();e.isVirtual.value=!0;const u=L(()=>{const f=l.value;if(f){const m=window.getComputedStyle(f);return{start:Number.parseFloat(m.paddingBlockStart||m.paddingTop),end:Number.parseFloat(m.paddingBlockEnd||m.paddingBottom)}}else return{start:0,end:0}}),p=Xt({get scrollPaddingStart(){return u.value.start},get scrollPaddingEnd(){return u.value.end},get count(){return o.options.length},get horizontal(){return e.orientation.value==="horizontal"},estimateSize(){return o.estimateSize??28},getScrollElement(){return l.value},overscan:o.overscan??12}),v=L(()=>p.value.getVirtualItems().map(f=>{const m=a.default({option:o.options[f.index],virtualizer:p.value,virtualItem:f})[0],n=m.type===ie&&Array.isArray(m.children)?m.children[0]:m;return{item:f,is:ht(n,{key:`${f.key}`,"data-index":f.index,"aria-setsize":o.options.length,"aria-posinset":f.index+1,style:{position:"absolute",top:0,left:0,transform:`translateY(${f.start}px)`,overflowAnchor:"none"}})}}));e.virtualFocusHook.on(f=>{const m=o.options.findIndex(n=>Array.isArray(e.modelValue.value)?fe(n,e.modelValue.value[0],e.by):fe(n,e.modelValue.value,e.by));m!==-1?(f?.preventDefault(),p.value.scrollToIndex(m,{align:"start"}),requestAnimationFrame(()=>{const n=Je(l.value);n&&(e.changeHighlight(n),f&&n?.focus())})):e.highlightFirstItem()}),e.virtualHighlightHook.on(f=>{const m=o.options.findIndex(n=>fe(n,f,e.by));p.value.scrollToIndex(m,{align:"start"}),requestAnimationFrame(()=>{const n=Je(l.value);n&&e.changeHighlight(n)})});const k=tt("",1e3),C=L(()=>{const f=m=>o.textContent?o.textContent(m):m?.toString().toLowerCase();return o.options.map((m,n)=>({index:n,textContent:f(m)}))});function I(f,m){if(!e.firstValue?.value||!e.multiple.value||!Array.isArray(e.modelValue.value))return;const q=i().filter(P=>P.ref.dataset.disabled!=="").find(P=>P.ref===e.highlightedElement.value)?.value;if(!q)return;let $=null;switch(m){case"prev":case"next":{$=De(o.options,e.firstValue.value,q);break}case"first":{$=De(o.options,e.firstValue.value,o.options?.[0]);break}case"last":{$=De(o.options,e.firstValue.value,o.options?.[o.options.length-1]);break}}e.modelValue.value=$}return e.virtualKeydownHook.on(f=>{const m=f.altKey||f.ctrlKey||f.metaKey;if(f.key==="Tab"&&!m)return;let q=Qt[f.key];if(m&&f.key==="a"&&e.multiple.value?(f.preventDefault(),e.modelValue.value=[...o.options],q="last"):f.shiftKey&&q&&I(f,q),["first","last"].includes(q)){f.preventDefault();const $=q==="first"?0:o.options.length-1;p.value.scrollToIndex($),requestAnimationFrame(()=>{const P=i(),M=q==="first"?P[0]:P[P.length-1];M&&e.changeHighlight(M.ref)})}else if(!q&&!m){k.value+=f.key;const $=Number(bt()?.getAttribute("data-index")),P=C.value[$].textContent,M=C.value.map(w=>w.textContent??""),Y=Wt(M,k.value,P),j=C.value.find(w=>w.textContent===Y);j&&(p.value.scrollToIndex(j.index,{align:"start"}),requestAnimationFrame(()=>{const w=l.value.querySelector(`[data-index="${j.index}"]`);w instanceof HTMLElement&&e.changeHighlight(w)}))}}),(f,m)=>(c(),G("div",{"data-reka-virtualizer":"",style:yt({position:"relative",width:"100%",height:`${t(p).getTotalSize()}px`})},[(c(!0),G(ie,null,Pe(v.value,({is:n,item:q})=>(c(),_(lt(n),{key:q.index}))),128))],4))}}),Ca=xa;const[re,qa]=Se("ComboboxRoot");var Sa=V({__name:"ComboboxRoot",props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1},resetSearchTermOnBlur:{type:Boolean,required:!1,default:!0},resetSearchTermOnSelect:{type:Boolean,required:!1,default:!0},openOnFocus:{type:Boolean,required:!1,default:!1},openOnClick:{type:Boolean,required:!1,default:!1},ignoreFilter:{type:Boolean,required:!1},resetModelValueOnClear:{type:Boolean,required:!1,default:!1},modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},multiple:{type:Boolean,required:!1},dir:{type:String,required:!1},disabled:{type:Boolean,required:!1},highlightOnHover:{type:Boolean,required:!1,default:!0},by:{type:[String,Function],required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","highlight","update:open"],setup(s,{expose:o,emit:a}){const e=s,l=a,{primitiveElement:i,currentElement:u}=Fe(),{multiple:p,disabled:v,ignoreFilter:k,resetSearchTermOnSelect:C,openOnFocus:I,openOnClick:f,dir:m,resetModelValueOnClear:n,highlightOnHover:q}=je(e),$=rt(m),P=Le(e,"modelValue",l,{defaultValue:e.defaultValue??(p.value?[]:void 0),passive:e.modelValue===void 0,deep:!0}),M=Le(e,"open",l,{defaultValue:e.defaultOpen,passive:e.open===void 0});async function Y(A){M.value=A,Z.value="",A?(await ce(),i.value?.highlightSelected(),w.value=!0,O.value?.focus()):(w.value=!1,setTimeout(()=>{!A&&e.resetSearchTermOnBlur&&j.trigger()},1))}const j=Ke(),w=H(!1),xe=H(!1),O=H(),se=H(),Q=L(()=>i.value?.highlightedElement??void 0),ee=H(new Map),ne=H(new Map),{contains:me}=st({sensitivity:"base"}),Z=H(""),te=L(A=>{if(!Z.value||e.ignoreFilter||xe.value)return{count:ee.value.size,items:A?.items??new Map,groups:A?.groups??new Set(ne.value.keys())};let X=0;const J=new Map,ae=new Set;for(const[ge,le]of ee.value){const g=me(le,Z.value);J.set(ge,g?1:0),g&&X++}for(const[ge,le]of ne.value)for(const g of le)if(J.get(g)>0){ae.add(ge);break}return{count:X,items:J,groups:ae}}),R=_t();return ve(()=>{R?.exposed&&(R.exposed.highlightItem=i.value?.highlightItem,R.exposed.highlightFirstItem=i.value?.highlightFirstItem,R.exposed.highlightSelected=i.value?.highlightSelected)}),o({filtered:te,highlightedElement:Q,highlightItem:i.value?.highlightItem,highlightFirstItem:i.value?.highlightFirstItem,highlightSelected:i.value?.highlightSelected}),qa({modelValue:P,multiple:p,disabled:v,open:M,onOpenChange:Y,contentId:"",isUserInputted:w,isVirtual:xe,inputElement:O,highlightedElement:Q,onInputElementChange:A=>O.value=A,triggerElement:se,onTriggerElementChange:A=>se.value=A,parentElement:u,resetSearchTermOnSelect:C,onResetSearchTerm:j.on,allItems:ee,allGroups:ne,filterSearch:Z,filterState:te,ignoreFilter:k,openOnFocus:I,openOnClick:f,resetModelValueOnClear:n}),(A,X)=>(c(),_(t(Mt),null,{default:h(()=>[F(t(ra),T({ref_key:"primitiveElement",ref:i},A.$attrs,{modelValue:t(P),"onUpdate:modelValue":X[0]||(X[0]=J=>it(P)?P.value=J:null),style:{pointerEvents:t(M)?"auto":void 0},as:A.as,"as-child":A.asChild,dir:t($),multiple:t(p),name:A.name,required:A.required,disabled:t(v),"highlight-on-hover":t(q),by:e.by,onHighlight:X[1]||(X[1]=J=>l("highlight",J))}),{default:h(()=>[S(A.$slots,"default",{open:t(M),modelValue:t(P)})]),_:3},16,["modelValue","style","as","as-child","dir","multiple","name","required","disabled","highlight-on-hover","by"])]),_:3}))}}),Ia=Sa;const[wa,ka]=Se("ComboboxContent");var za=V({__name:"ComboboxContentImpl",props:{position:{type:String,required:!1,default:"inline"},bodyLock:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside"],setup(s,{emit:o}){const a=s,e=o,{position:l}=je(a),i=re(),{forwardRef:u,currentElement:p}=oe();Dt(a.bodyLock),$t(i.parentElement);const v=L(()=>a.position==="popper"?a:{}),k=xt(v.value),C={boxSizing:"border-box","--reka-combobox-content-transform-origin":"var(--reka-popper-transform-origin)","--reka-combobox-content-available-width":"var(--reka-popper-available-width)","--reka-combobox-content-available-height":"var(--reka-popper-available-height)","--reka-combobox-trigger-width":"var(--reka-popper-anchor-width)","--reka-combobox-trigger-height":"var(--reka-popper-anchor-height)"};ka({position:l});const I=H(!1);return ve(()=>{i.inputElement.value&&(I.value=p.value.contains(i.inputElement.value),I.value&&i.inputElement.value.focus())}),Re(()=>{I.value&&i.triggerElement.value?.focus()}),(f,m)=>(c(),_(t(na),{"as-child":""},{default:h(()=>[F(t(Ct),{"as-child":"","disable-outside-pointer-events":f.disableOutsidePointerEvents,onDismiss:m[0]||(m[0]=n=>t(i).onOpenChange(!1)),onFocusOutside:m[1]||(m[1]=n=>{t(i).parentElement.value?.contains(n.target)&&n.preventDefault(),e("focusOutside",n)}),onInteractOutside:m[2]||(m[2]=n=>e("interactOutside",n)),onEscapeKeyDown:m[3]||(m[3]=n=>e("escapeKeyDown",n)),onPointerDownOutside:m[4]||(m[4]=n=>{t(i).parentElement.value?.contains(n.target)&&n.preventDefault(),e("pointerDownOutside",n)})},{default:h(()=>[(c(),_(lt(t(l)==="popper"?t(Ht):t(W)),T({...f.$attrs,...t(k)},{id:t(i).contentId,ref:t(u),"data-state":t(i).open.value?"open":"closed",style:{display:"flex",flexDirection:"column",outline:"none",...t(l)==="popper"?C:{}}}),{default:h(()=>[S(f.$slots,"default")]),_:3},16,["id","data-state","style"]))]),_:3},8,["disable-outside-pointer-events"])]),_:3}))}}),La=za,Ea=V({__name:"ComboboxArrow",props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"svg"}},setup(s){const o=s,a=re(),e=wa();return oe(),(l,i)=>t(a).open.value&&t(e).position.value==="popper"?(c(),_(t(Gt),_e(T({key:0},o)),{default:h(()=>[S(l.$slots,"default")]),_:3},16)):N("v-if",!0)}}),Fa=Ea,Aa=V({__name:"ComboboxContent",props:{forceMount:{type:Boolean,required:!1},position:{type:String,required:!1},bodyLock:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside"],setup(s,{emit:o}){const l=ot(s,o),{forwardRef:i}=oe(),u=re();return u.contentId||=Ie(void 0,"reka-combobox-content"),(p,v)=>(c(),_(t(qt),{present:p.forceMount||t(u).open.value},{default:h(()=>[F(La,T({...t(l),...p.$attrs},{ref:t(i)}),{default:h(()=>[S(p.$slots,"default")]),_:3},16)]),_:3},8,["present"]))}}),Ba=Aa,Ta=V({__name:"ComboboxEmpty",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(s){const o=s,a=re(),e=L(()=>a.ignoreFilter.value?a.allItems.value.size===0:a.filterState.value.count===0);return(l,i)=>e.value?(c(),_(t(W),_e(T({key:0},o)),{default:h(()=>[S(l.$slots,"default",{},()=>[i[0]||(i[0]=ye("No options"))])]),_:3},16)):N("v-if",!0)}}),Va=Ta;const[nt,Oa]=Se("ComboboxGroup");var Ka=V({__name:"ComboboxGroup",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(s){const o=s,a=Ie(void 0,"reka-combobox-group"),e=re(),l=L(()=>e.ignoreFilter.value?!0:e.filterSearch.value?e.filterState.value.groups.has(a):!0),i=Oa({id:a,labelId:""});return ve(()=>{e.allGroups.value.has(a)||e.allGroups.value.set(a,new Set)}),Re(()=>{e.allGroups.value.delete(a)}),(u,p)=>(c(),_(t(fa),T({id:t(a),"aria-labelledby":t(i).labelId},o,{hidden:l.value?void 0:!0}),{default:h(()=>[S(u.$slots,"default")]),_:3},16,["id","aria-labelledby","hidden"]))}}),He=Ka,Pa=V({__name:"ComboboxInput",props:{displayValue:{type:Function,required:!1},modelValue:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"input"}},emits:["update:modelValue"],setup(s,{emit:o}){const a=s,e=o,l=re(),i=Be(),{primitiveElement:u,currentElement:p}=Fe(),v=Le(a,"modelValue",e,{passive:a.modelValue===void 0});ve(()=>{p.value&&l.onInputElementChange(p.value)});function k(n){l.open.value||l.onOpenChange(!0)}function C(n){const q=n.target;l.open.value?l.filterSearch.value=q.value:(l.onOpenChange(!0),ce(()=>{q.value&&(l.filterSearch.value=q.value,i.highlightFirstItem())}))}function I(){l.openOnFocus.value&&!l.open.value&&l.onOpenChange(!0)}function f(){l.openOnClick.value&&!l.open.value&&l.onOpenChange(!0)}function m(){const n=l.modelValue.value;a.displayValue?v.value=a.displayValue(n):!l.multiple.value&&n&&!Array.isArray(n)&&typeof n!="object"?v.value=n.toString():v.value="",ce(()=>{v.value=v.value})}return l.onResetSearchTerm(()=>{m()}),Ge(l.modelValue,async()=>{!l.isUserInputted.value&&l.resetSearchTermOnSelect.value&&m()},{immediate:!0,deep:!0}),Ge(l.filterState,(n,q)=>{!l.isVirtual.value&&q.count===0&&i.highlightFirstItem()}),(n,q)=>(c(),_(t(da),{ref_key:"primitiveElement",ref:u,modelValue:t(v),"onUpdate:modelValue":q[0]||(q[0]=$=>it(v)?v.value=$:null),as:n.as,"as-child":n.asChild,"auto-focus":n.autoFocus,disabled:n.disabled,"aria-expanded":t(l).open.value,"aria-controls":t(l).contentId,"aria-autocomplete":"list",role:"combobox",autocomplete:"off",onClick:f,onInput:C,onKeydown:qe(Ae(k,["prevent"]),["down","up"]),onFocus:I},{default:h(()=>[S(n.$slots,"default")]),_:3},8,["modelValue","as","as-child","auto-focus","disabled","aria-expanded","aria-controls","onKeydown"]))}}),Da=Pa,$a=V({__name:"ComboboxItem",props:{textValue:{type:String,required:!1},value:{type:null,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["select"],setup(s,{emit:o}){const a=s,e=o,l=Ie(void 0,"reka-combobox-item"),i=re(),u=nt(null),{primitiveElement:p,currentElement:v}=Fe();if(a.value==="")throw new Error("A <ComboboxItem /> must have a value prop that is not an empty string. This is because the Combobox value can be set to an empty string to clear the selection and show the placeholder.");const k=L(()=>{if(i.isVirtual.value||i.ignoreFilter.value||!i.filterSearch.value)return!0;{const C=i.filterState.value.items.get(l);return C===void 0?!0:C>0}});return ve(()=>{i.allItems.value.set(l,a.textValue||v.value.textContent||v.value.innerText);const C=u?.id;C&&(i.allGroups.value.has(C)?i.allGroups.value.get(C)?.add(l):i.allGroups.value.set(C,new Set([l])))}),Re(()=>{i.allItems.value.delete(l)}),(C,I)=>k.value?(c(),_(t(ba),T({key:0},a,{id:t(l),ref_key:"primitiveElement",ref:p,disabled:t(i).disabled.value||C.disabled,onSelect:I[0]||(I[0]=f=>{e("select",f),!f.defaultPrevented&&!t(i).multiple.value&&!C.disabled&&!t(i).disabled.value&&(f.preventDefault(),t(i).onOpenChange(!1),t(i).modelValue.value=a.value)})}),{default:h(()=>[S(C.$slots,"default",{},()=>[ye(de(C.value),1)])]),_:3},16,["id","disabled"])):N("v-if",!0)}}),et=$a,Ra=V({__name:"ComboboxItemIndicator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(s){const o=s;return(a,e)=>(c(),_(t(_a),_e(Ee(o)),{default:h(()=>[S(a.$slots,"default")]),_:3},16))}}),Na=Ra,Ma=V({__name:"ComboboxLabel",props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(s){const o=s;oe();const a=nt({id:"",labelId:""});return a.labelId||=Ie(void 0,"reka-combobox-group-label"),(e,l)=>(c(),_(t(W),T(o,{id:t(a).labelId}),{default:h(()=>[S(e.$slots,"default")]),_:3},16,["id"]))}}),Ha=Ma,Ga=V({__name:"ComboboxPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(s){const o=s;return(a,e)=>(c(),_(t(St),_e(Ee(o)),{default:h(()=>[S(a.$slots,"default")]),_:3},16))}}),ja=Ga,Ua=V({__name:"ComboboxSeparator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(s){const o=s;return oe(),(a,e)=>(c(),_(t(W),T(o,{"aria-hidden":"true"}),{default:h(()=>[S(a.$slots,"default")]),_:3},16))}}),Wa=Ua,Ya=V({__name:"ComboboxTrigger",props:{disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(s){const o=s,{forwardRef:a,currentElement:e}=oe(),l=re(),i=L(()=>o.disabled||l.disabled.value||!1);return ve(()=>{e.value&&l.onTriggerElementChange(e.value)}),(u,p)=>(c(),_(t(W),T(o,{ref:t(a),type:u.as==="button"?"button":void 0,tabindex:"-1","aria-label":"Show popup","aria-haspopup":"listbox","aria-expanded":t(l).open.value,"aria-controls":t(l).contentId,"data-state":t(l).open.value?"open":"closed",disabled:i.value,"data-disabled":i.value?"":void 0,"aria-disabled":i.value??void 0,onClick:p[0]||(p[0]=v=>t(l).onOpenChange(!t(l).open.value))}),{default:h(()=>[S(u.$slots,"default")]),_:3},16,["type","aria-expanded","aria-controls","data-state","disabled","data-disabled","aria-disabled"]))}}),Qa=Ya,Za=V({__name:"ComboboxVirtualizer",props:{options:{type:Array,required:!0},overscan:{type:Number,required:!1},estimateSize:{type:Number,required:!1},textContent:{type:Function,required:!1}},setup(s){const o=s,a=re();return a.isVirtual.value=!0,(e,l)=>(c(),_(Ca,_e(Ee(o)),{default:h(i=>[S(e.$slots,"default",_e(Ee(i)))]),_:3},16))}}),Xa=Za;function Ja(s,o){if(typeof s!="object"||s===null)return!1;const a=pe(s,o);return a!=null&&a!==""}function el(s,o){return o?{xs:44,sm:48,md:52,lg:56,xl:60}[s]:{xs:24,sm:28,md:32,lg:36,xl:40}[s]}function tl(s,o,a){const e=a?s.some(l=>Ja(l,a)):!1;return el(o,e)}const al={slots:{base:["relative group rounded-md inline-flex items-center focus:outline-none disabled:cursor-not-allowed disabled:opacity-75","transition-colors"],leading:"absolute inset-y-0 start-0 flex items-center",leadingIcon:"shrink-0 text-dimmed",leadingAvatar:"shrink-0",leadingAvatarSize:"",trailing:"absolute inset-y-0 end-0 flex items-center",trailingIcon:"shrink-0 text-dimmed",value:"truncate pointer-events-none",placeholder:"truncate text-dimmed",arrow:"fill-default",content:["max-h-60 w-(--reka-select-trigger-width) bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-select-content-transform-origin) pointer-events-auto flex flex-col","origin-(--reka-combobox-content-transform-origin) w-(--reka-combobox-trigger-width)"],viewport:"relative scroll-py-1 overflow-y-auto flex-1",group:"p-1 isolate",empty:"text-center text-muted",label:"font-semibold text-highlighted",separator:"-mx-1 my-1 h-px bg-border",item:["group relative w-full flex items-start select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75 text-default data-highlighted:not-data-disabled:text-highlighted data-highlighted:not-data-disabled:before:bg-elevated/50","transition-colors before:transition-colors"],itemLeadingIcon:["shrink-0 text-dimmed group-data-highlighted:not-group-data-disabled:text-default","transition-colors"],itemLeadingAvatar:"shrink-0",itemLeadingAvatarSize:"",itemLeadingChip:"shrink-0",itemLeadingChipSize:"",itemTrailing:"ms-auto inline-flex gap-1.5 items-center",itemTrailingIcon:"shrink-0",itemWrapper:"flex-1 flex flex-col min-w-0",itemLabel:"truncate",itemDescription:"truncate text-muted",input:"border-b border-default",focusScope:"flex flex-col min-h-0"},variants:{fieldGroup:{horizontal:"not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none focus-visible:z-[1]",vertical:"not-only:first:rounded-b-none not-only:last:rounded-t-none not-last:not-first:rounded-none focus-visible:z-[1]"},size:{xs:{base:"px-2 py-1 text-xs gap-1",leading:"ps-2",trailing:"pe-2",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4",label:"p-1 text-[10px]/3 gap-1",item:"p-1 text-xs gap-1",itemLeadingIcon:"size-4",itemLeadingAvatarSize:"3xs",itemLeadingChip:"size-4",itemLeadingChipSize:"sm",itemTrailingIcon:"size-4",empty:"p-1 text-xs"},sm:{base:"px-2.5 py-1.5 text-xs gap-1.5",leading:"ps-2.5",trailing:"pe-2.5",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4",label:"p-1.5 text-[10px]/3 gap-1.5",item:"p-1.5 text-xs gap-1.5",itemLeadingIcon:"size-4",itemLeadingAvatarSize:"3xs",itemLeadingChip:"size-4",itemLeadingChipSize:"sm",itemTrailingIcon:"size-4",empty:"p-1.5 text-xs"},md:{base:"px-2.5 py-1.5 text-sm gap-1.5",leading:"ps-2.5",trailing:"pe-2.5",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5",label:"p-1.5 text-xs gap-1.5",item:"p-1.5 text-sm gap-1.5",itemLeadingIcon:"size-5",itemLeadingAvatarSize:"2xs",itemLeadingChip:"size-5",itemLeadingChipSize:"md",itemTrailingIcon:"size-5",empty:"p-1.5 text-sm"},lg:{base:"px-3 py-2 text-sm gap-2",leading:"ps-3",trailing:"pe-3",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5",label:"p-2 text-xs gap-2",item:"p-2 text-sm gap-2",itemLeadingIcon:"size-5",itemLeadingAvatarSize:"2xs",itemLeadingChip:"size-5",itemLeadingChipSize:"md",itemTrailingIcon:"size-5",empty:"p-2 text-sm"},xl:{base:"px-3 py-2 text-base gap-2",leading:"ps-3",trailing:"pe-3",leadingIcon:"size-6",leadingAvatarSize:"xs",trailingIcon:"size-6",label:"p-2 text-sm gap-2",item:"p-2 text-base gap-2",itemLeadingIcon:"size-6",itemLeadingAvatarSize:"xs",itemLeadingChip:"size-6",itemLeadingChipSize:"lg",itemTrailingIcon:"size-6",empty:"p-2 text-base"}},variant:{outline:"text-highlighted bg-default ring ring-inset ring-accented",soft:"text-highlighted bg-elevated/50 hover:bg-elevated focus:bg-elevated disabled:bg-elevated/50",subtle:"text-highlighted bg-elevated ring ring-inset ring-accented",ghost:"text-highlighted bg-transparent hover:bg-elevated focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent",none:"text-highlighted bg-transparent"},color:{primary:"",secondary:"",success:"",info:"",warning:"",error:"",neutral:""},leading:{true:""},trailing:{true:""},loading:{true:""},highlight:{true:""},type:{file:"file:me-1.5 file:font-medium file:text-muted file:outline-none"},virtualize:{true:{viewport:"p-1 isolate"},false:{viewport:"divide-y divide-default"}}},compoundVariants:[{color:"primary",variant:["outline","subtle"],class:"focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary"},{color:"secondary",variant:["outline","subtle"],class:"focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-secondary"},{color:"success",variant:["outline","subtle"],class:"focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-success"},{color:"info",variant:["outline","subtle"],class:"focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-info"},{color:"warning",variant:["outline","subtle"],class:"focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-warning"},{color:"error",variant:["outline","subtle"],class:"focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-error"},{color:"primary",highlight:!0,class:"ring ring-inset ring-primary"},{color:"secondary",highlight:!0,class:"ring ring-inset ring-secondary"},{color:"success",highlight:!0,class:"ring ring-inset ring-success"},{color:"info",highlight:!0,class:"ring ring-inset ring-info"},{color:"warning",highlight:!0,class:"ring ring-inset ring-warning"},{color:"error",highlight:!0,class:"ring ring-inset ring-error"},{color:"neutral",variant:["outline","subtle"],class:"focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-inverted"},{color:"neutral",highlight:!0,class:"ring ring-inset ring-inverted"},{leading:!0,size:"xs",class:"ps-7"},{leading:!0,size:"sm",class:"ps-8"},{leading:!0,size:"md",class:"ps-9"},{leading:!0,size:"lg",class:"ps-10"},{leading:!0,size:"xl",class:"ps-11"},{trailing:!0,size:"xs",class:"pe-7"},{trailing:!0,size:"sm",class:"pe-8"},{trailing:!0,size:"md",class:"pe-9"},{trailing:!0,size:"lg",class:"pe-10"},{trailing:!0,size:"xl",class:"pe-11"},{loading:!0,leading:!0,class:{leadingIcon:"animate-spin"}},{loading:!0,leading:!1,trailing:!0,class:{trailingIcon:"animate-spin"}}],defaultVariants:{size:"md",color:"primary",variant:"outline"}},hl=Object.assign({inheritAttrs:!1},{__name:"USelectMenu",props:We({id:{type:String,required:!1},placeholder:{type:String,required:!1},searchInput:{type:[Boolean,Object],required:!1,default:!0},color:{type:null,required:!1},variant:{type:null,required:!1},size:{type:null,required:!1},required:{type:Boolean,required:!1},trailingIcon:{type:null,required:!1},selectedIcon:{type:null,required:!1},content:{type:Object,required:!1},arrow:{type:[Boolean,Object],required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},virtualize:{type:[Boolean,Object],required:!1,default:!1},valueKey:{type:null,required:!1},labelKey:{type:null,required:!1,default:"label"},descriptionKey:{type:null,required:!1,default:"description"},items:{type:null,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1},modelModifiers:{type:Object,required:!1},multiple:{type:Boolean,required:!1},highlight:{type:Boolean,required:!1},createItem:{type:[Boolean,String,Object],required:!1},filterFields:{type:Array,required:!1},ignoreFilter:{type:Boolean,required:!1},autofocus:{type:Boolean,required:!1},autofocusDelay:{type:Number,required:!1,default:0},class:{type:null,required:!1},ui:{type:null,required:!1},open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},resetSearchTermOnBlur:{type:Boolean,required:!1,default:!0},resetSearchTermOnSelect:{type:Boolean,required:!1,default:!0},highlightOnHover:{type:Boolean,required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},leading:{type:Boolean,required:!1},leadingIcon:{type:null,required:!1},trailing:{type:Boolean,required:!1},loading:{type:Boolean,required:!1},loadingIcon:{type:null,required:!1}},{searchTerm:{type:String,default:""},searchTermModifiers:{}}),emits:We(["update:open","change","blur","focus","create","highlight","update:modelValue"],["update:searchTerm"]),setup(s,{expose:o,emit:a}){const e=s,l=a,i=at(),u=It(s,"searchTerm",{type:String,default:""}),{t:p}=wt(),v=kt(),{contains:k}=st({sensitivity:"base"}),C=ot(zt(e,"modelValue","defaultValue","open","defaultOpen","required","multiple","resetSearchTermOnBlur","resetSearchTermOnSelect","highlightOnHover"),l),I=Lt(be(()=>e.portal)),f=be(()=>Ve(e.content,{side:"bottom",sideOffset:8,collisionPadding:8,position:"popper"})),m=be(()=>e.arrow),n=be(()=>e.virtualize?Ve(typeof e.virtualize=="boolean"?{}:e.virtualize,{estimateSize:tl(we.value,e.size||"md",e.descriptionKey)}):!1),q=be(()=>Ve(e.searchInput,{placeholder:p("selectMenu.search"),variant:"none"})),{emitFormBlur:$,emitFormFocus:P,emitFormInput:M,emitFormChange:Y,size:j,color:w,id:xe,name:O,highlight:se,disabled:Q,ariaAttrs:ee}=Et(e),{orientation:ne,size:me}=Ft(e),{isLeading:Z,isTrailing:te,leadingIconName:R,trailingIconName:A}=At(be(()=>Ve(e,{trailingIcon:v.ui.icons.chevronDown}))),X=L(()=>me.value||j.value),[J,ae]=Xe(),[ge,le]=Xe({props:{item:{type:[Object,String,Number,Boolean],required:!0},index:{type:Number,required:!1}}}),g=L(()=>Ye({extend:Ye(al),...v.ui?.selectMenu||{}})({color:w.value,variant:e.variant,size:X?.value,loading:e.loading,highlight:se.value,leading:Z.value||!!e.avatar||!!i.leading,trailing:te.value||!!i.trailing,fieldGroup:ne.value,virtualize:!!e.virtualize}));function Ne(b){if(e.multiple&&Array.isArray(b)){const B=b.map(r=>Ze(we.value,r,{labelKey:e.labelKey,valueKey:e.valueKey})).filter(r=>r!=null&&r!=="");return B.length>0?B.join(", "):void 0}return Ze(we.value,b,{labelKey:e.labelKey,valueKey:e.valueKey})}const Ce=L(()=>e.items?.length?Bt(e.items)?e.items:[e.items]:[]),we=L(()=>Ce.value.flatMap(b=>b)),ke=L(()=>{if(e.ignoreFilter||!u.value)return Ce.value;const b=Array.isArray(e.filterFields)?e.filterFields:[e.labelKey];return Ce.value.map(B=>B.filter(r=>r==null?!1:typeof r!="object"?k(String(r),u.value):r.type&&["label","separator"].includes(r.type)?!0:b.some(U=>{const K=pe(r,U);return K!=null&&k(String(K),u.value)}))).filter(B=>B.filter(r=>!D(r)||!r.type||!["label","separator"].includes(r.type)).length>0)}),d=L(()=>ke.value.flatMap(b=>b)),y=L(()=>{if(!e.createItem||!u.value)return!1;const b=e.valueKey?{[e.valueKey]:u.value}:u.value;return typeof e.createItem=="object"&&e.createItem.when==="always"||e.createItem==="always"?!d.value.find(B=>Tt(B,b,e.valueKey)):!d.value.length}),x=L(()=>typeof e.createItem=="object"?e.createItem.position:"bottom"),E=Vt("triggerRef");function ue(){e.autofocus&&E.value?.$el?.focus({focusVisible:!0})}ve(()=>{setTimeout(()=>{ue()},e.autofocusDelay)});function Me(b){if(Kt(e.modelValue)===b)return;e.modelModifiers?.trim&&(b=b?.trim()??null),e.modelModifiers?.number&&(b=Pt(b)),e.modelModifiers?.nullable&&(b??=null),e.modelModifiers?.optional&&(b??=void 0);const B=new Event("change",{target:{value:b}});l("change",B),Y(),M(),e.resetSearchTermOnSelect&&(u.value="")}function he(b){let B;if(b){const r=new FocusEvent("focus");l("focus",r),P(),clearTimeout(B)}else{const r=new FocusEvent("blur");l("blur",r),$(),e.resetSearchTermOnBlur&&(B=setTimeout(()=>{u.value=""},100))}}function ut(b){b.preventDefault(),b.stopPropagation(),l("create",u.value)}function dt(b,B){if(D(B)){if(B.disabled){b.preventDefault();return}B.onSelect?.(b)}}function D(b){return typeof b=="object"&&b!==null}return o({triggerRef:be(()=>E.value?.$el)}),(b,B)=>(c(),G(ie,null,[F(t(J),null,{default:h(()=>[F(t(et),{"data-slot":"item",class:z(g.value.item({class:e.ui?.item})),value:u.value,onSelect:ut},{default:h(()=>[ze("span",{"data-slot":"itemLabel",class:z(g.value.itemLabel({class:e.ui?.itemLabel}))},[S(b.$slots,"create-item-label",{item:u.value},()=>[ye(de(t(p)("selectMenu.create",{label:u.value})),1)])],2)]),_:3},8,["class","value"])]),_:3}),F(t(ge),null,{default:h(({item:r,index:U})=>[D(r)&&r.type==="label"?(c(),_(t(Ha),{key:0,"data-slot":"label",class:z(g.value.label({class:[e.ui?.label,r.ui?.label,r.class]}))},{default:h(()=>[ye(de(t(pe)(r,e.labelKey)),1)]),_:2},1032,["class"])):D(r)&&r.type==="separator"?(c(),_(t(Wa),{key:1,"data-slot":"separator",class:z(g.value.separator({class:[e.ui?.separator,r.ui?.separator,r.class]}))},null,8,["class"])):(c(),_(t(et),{key:2,"data-slot":"item",class:z(g.value.item({class:[e.ui?.item,D(r)&&r.ui?.item,D(r)&&r.class]})),disabled:D(r)&&r.disabled,value:e.valueKey&&D(r)?t(pe)(r,e.valueKey):r,onSelect:K=>dt(K,r)},{default:h(()=>[S(b.$slots,"item",{item:r,index:U,ui:g.value},()=>[S(b.$slots,"item-leading",{item:r,index:U,ui:g.value},()=>[D(r)&&r.icon?(c(),_(Oe,{key:0,name:r.icon,"data-slot":"itemLeadingIcon",class:z(g.value.itemLeadingIcon({class:[e.ui?.itemLeadingIcon,r.ui?.itemLeadingIcon]}))},null,8,["name","class"])):D(r)&&r.avatar?(c(),_(Qe,T({key:1,size:r.ui?.itemLeadingAvatarSize||e.ui?.itemLeadingAvatarSize||g.value.itemLeadingAvatarSize()},r.avatar,{"data-slot":"itemLeadingAvatar",class:g.value.itemLeadingAvatar({class:[e.ui?.itemLeadingAvatar,r.ui?.itemLeadingAvatar]})}),null,16,["size","class"])):D(r)&&r.chip?(c(),_(Ot,T({key:2,size:e.ui?.itemLeadingChipSize||g.value.itemLeadingChipSize(),inset:"",standalone:""},r.chip,{"data-slot":"itemLeadingChip",class:g.value.itemLeadingChip({class:[e.ui?.itemLeadingChip,r.ui?.itemLeadingChip]})}),null,16,["size","class"])):N("",!0)]),ze("span",{"data-slot":"itemWrapper",class:z(g.value.itemWrapper({class:[e.ui?.itemWrapper,D(r)&&r.ui?.itemWrapper]}))},[ze("span",{"data-slot":"itemLabel",class:z(g.value.itemLabel({class:[e.ui?.itemLabel,D(r)&&r.ui?.itemLabel]}))},[S(b.$slots,"item-label",{item:r,index:U},()=>[ye(de(D(r)?t(pe)(r,e.labelKey):r),1)])],2),D(r)&&(t(pe)(r,e.descriptionKey)||i["item-description"])?(c(),G("span",{key:0,"data-slot":"itemDescription",class:z(g.value.itemDescription({class:[e.ui?.itemDescription,D(r)&&r.ui?.itemDescription]}))},[S(b.$slots,"item-description",{item:r,index:U},()=>[ye(de(t(pe)(r,e.descriptionKey)),1)])],2)):N("",!0)],2),ze("span",{"data-slot":"itemTrailing",class:z(g.value.itemTrailing({class:[e.ui?.itemTrailing,D(r)&&r.ui?.itemTrailing]}))},[S(b.$slots,"item-trailing",{item:r,index:U,ui:g.value}),F(t(Na),{"as-child":""},{default:h(()=>[F(Oe,{name:s.selectedIcon||t(v).ui.icons.check,"data-slot":"itemTrailingIcon",class:z(g.value.itemTrailingIcon({class:[e.ui?.itemTrailingIcon,D(r)&&r.ui?.itemTrailingIcon]}))},null,8,["name","class"])]),_:2},1024)],2)])]),_:2},1032,["class","disabled","value","onSelect"]))]),_:3}),F(t(Ia),T({id:t(xe)},{...t(C),...b.$attrs,...t(ee)},{"ignore-filter":"","as-child":"",name:t(O),disabled:t(Q),"onUpdate:modelValue":Me,"onUpdate:open":he}),{default:h(({modelValue:r,open:U})=>[F(t(aa),{"as-child":""},{default:h(()=>[F(t(Qa),{ref_key:"triggerRef",ref:E,"data-slot":"base",class:z(g.value.base({class:[e.ui?.base,e.class]})),tabindex:"0"},{default:h(()=>[t(Z)||s.avatar||i.leading?(c(),G("span",{key:0,"data-slot":"leading",class:z(g.value.leading({class:e.ui?.leading}))},[S(b.$slots,"leading",{modelValue:r,open:U,ui:g.value},()=>[t(Z)&&t(R)?(c(),_(Oe,{key:0,name:t(R),"data-slot":"leadingIcon",class:z(g.value.leadingIcon({class:e.ui?.leadingIcon}))},null,8,["name","class"])):s.avatar?(c(),_(Qe,T({key:1,size:e.ui?.itemLeadingAvatarSize||g.value.itemLeadingAvatarSize()},s.avatar,{"data-slot":"itemLeadingAvatar",class:g.value.itemLeadingAvatar({class:e.ui?.itemLeadingAvatar})}),null,16,["size","class"])):N("",!0)])],2)):N("",!0),S(b.$slots,"default",{modelValue:r,open:U,ui:g.value},()=>[(c(!0),G(ie,null,Pe([Ne(r)],K=>(c(),G(ie,{key:K},[K!=null?(c(),G("span",{key:0,"data-slot":"value",class:z(g.value.value({class:e.ui?.value}))},de(K),3)):(c(),G("span",{key:1,"data-slot":"placeholder",class:z(g.value.placeholder({class:e.ui?.placeholder}))},de(s.placeholder??" "),3))],64))),128))]),t(te)||i.trailing?(c(),G("span",{key:1,"data-slot":"trailing",class:z(g.value.trailing({class:e.ui?.trailing}))},[S(b.$slots,"trailing",{modelValue:r,open:U,ui:g.value},()=>[t(A)?(c(),_(Oe,{key:0,name:t(A),"data-slot":"trailingIcon",class:z(g.value.trailingIcon({class:e.ui?.trailingIcon}))},null,8,["name","class"])):N("",!0)])],2)):N("",!0)]),_:2},1032,["class"])]),_:2},1024),F(t(ja),_e(Ee(t(I))),{default:h(()=>[F(t(Ba),T({"data-slot":"content",class:g.value.content({class:e.ui?.content})},f.value),{default:h(()=>[F(t(Rt),{trapped:"","data-slot":"focusScope",class:z(g.value.focusScope({class:e.ui?.focusScope}))},{default:h(()=>[S(b.$slots,"content-top"),s.searchInput?(c(),_(t(Da),{key:0,modelValue:u.value,"onUpdate:modelValue":B[1]||(B[1]=K=>u.value=K),"display-value":()=>u.value,"as-child":""},{default:h(()=>[F(Jt,T({autofocus:"",autocomplete:"off",size:s.size},q.value,{"data-slot":"input",class:g.value.input({class:e.ui?.input}),onChange:B[0]||(B[0]=Ae(()=>{},["stop"]))}),null,16,["size","class"])]),_:1},8,["modelValue","display-value"])):N("",!0),F(t(Va),{"data-slot":"empty",class:z(g.value.empty({class:e.ui?.empty}))},{default:h(()=>[S(b.$slots,"empty",{searchTerm:u.value},()=>[ye(de(u.value?t(p)("selectMenu.noMatch",{searchTerm:u.value}):t(p)("selectMenu.noData")),1)])]),_:3},8,["class"]),ze("div",{role:"presentation","data-slot":"viewport",class:z(g.value.viewport({class:e.ui?.viewport}))},[s.virtualize?(c(),G(ie,{key:0},[y.value&&x.value==="top"?(c(),_(t(ae),{key:0})):N("",!0),F(t(Xa),T({options:d.value,"text-content":K=>D(K)?t(pe)(K,e.labelKey):String(K)},n.value),{default:h(({option:K,virtualItem:Te})=>[F(t(le),{item:K,index:Te.index},null,8,["item","index"])]),_:1},16,["options","text-content"]),y.value&&x.value==="bottom"?(c(),_(t(ae),{key:1})):N("",!0)],64)):(c(),G(ie,{key:1},[y.value&&x.value==="top"?(c(),_(t(He),{key:0,"data-slot":"group",class:z(g.value.group({class:e.ui?.group}))},{default:h(()=>[F(t(ae))]),_:1},8,["class"])):N("",!0),(c(!0),G(ie,null,Pe(ke.value,(K,Te)=>(c(),_(t(He),{key:`group-${Te}`,"data-slot":"group",class:z(g.value.group({class:e.ui?.group}))},{default:h(()=>[(c(!0),G(ie,null,Pe(K,(pt,Ue)=>(c(),_(t(le),{key:`group-${Te}-${Ue}`,item:pt,index:Ue},null,8,["item","index"]))),128))]),_:2},1032,["class"]))),128)),y.value&&x.value==="bottom"?(c(),_(t(He),{key:1,"data-slot":"group",class:z(g.value.group({class:e.ui?.group}))},{default:h(()=>[F(t(ae))]),_:1},8,["class"])):N("",!0)],64))],2),S(b.$slots,"content-bottom")]),_:3},8,["class"]),s.arrow?(c(),_(t(Fa),T({key:0},m.value,{"data-slot":"arrow",class:g.value.arrow({class:e.ui?.arrow})}),null,16,["class"])):N("",!0)]),_:3},16,["class"])]),_:3},16)]),_:3},16,["id","name","disabled"])],64))}});export{ba as L,hl as _,_a as a,da as b,na as c,Ca as d,fa as e,ra as f,tl as g,gl as i};
@@ -1 +0,0 @@
1
- import{c as e,b as r,a4 as t}from"./BaPPQtFe.js";function a(o){return e(()=>r(o)?!!t(o)?.closest("form"):!0)}export{a as u};
@@ -1 +0,0 @@
1
- import{_ as oe}from"./BXWm1qrj.js";import{a as Q,c as C,G as F,R as v,a9 as k,T as l,U as Z,C as s,_ as se,al as $e,Q as B,a7 as E,ac as j,S as m,a8 as S,aU as ue,ag as ae,ah as le,W as J,ai as z,e as b,f as q,af as De,ba as Ue,ae as Ce,q as Ve,n as ce}from"./BaPPQtFe.js";import{_ as Fe}from"./JxSV3wOO.js";import{_ as Se,a as Ie}from"./Ddih3UKd.js";import{_ as ne}from"./CExLOuIW.js";import{_ as de}from"./DamUHI17.js";import{_ as Pe}from"./C1tYtAeV.js";import{_ as me}from"./ChMIRIq6.js";import{_ as Ee}from"./rZmMQHiC.js";import{_ as Ae}from"./BDUpLPg_.js";import{_ as ze,a as Be}from"./BPAM-iC7.js";import{_ as Le}from"./BDw-JoCx.js";import{_ as Oe}from"./CJ3DQEW9.js";import{_ as Me}from"./BP_jQhKs.js";import{_ as Ne}from"./DhRePYUI.js";import{_ as qe}from"./DmV68Eyp.js";import{u as He}from"./iJ4KRInq.js";import"./4Ew5YctE.js";import"./BBygTbuF.js";import"./nzAH3Wk0.js";import"./BboG47Wz.js";import"./BMh-dHBK.js";import"./WqUIRM3G.js";import"./BZZeOWzQ.js";import"./Biy6boRV.js";import"./DGTbw5AQ.js";import"./Dsk8JtTw.js";import"./D1JmZKz7.js";import"./C6Y-ieo6.js";import"./BnwR3LQL.js";import"./q0vhMpUB.js";import"./BQbnVFXA.js";import"./DWQMV4k2.js";import"./Vcq4gwWv.js";import"./BGaNWD0s.js";import"./88opOQSr.js";import"./iik6CYzq.js";import"./C8ytOrRD.js";import"./DdoFnl6e.js";const Re={class:"flex items-center gap-2"},Qe={class:"flex items-center flex-wrap gap-2 mt-2"},Ge={key:4,class:"text-xs text-dimmed"},We=Q({__name:"TaskCard",props:{task:{}},emits:["toggle","edit","delete","view"],setup(e,{emit:w}){const r=e,h=w,i={1:{label:"Low",color:"neutral",icon:"i-lucide-arrow-down"},2:{label:"Medium",color:"warning",icon:"i-lucide-minus"},3:{label:"High",color:"error",icon:"i-lucide-arrow-up"}},U={todo:{label:"Todo",color:"neutral",icon:"i-lucide-circle"},in_progress:{label:"In Progress",color:"info",icon:"i-lucide-clock"},done:{label:"Done",color:"success",icon:"i-lucide-check-circle"},blocked:{label:"Blocked",color:"error",icon:"i-lucide-alert-circle"}},u=C(()=>i[r.task.priority]||i[2]),g=C(()=>U[r.task.status]),_=C(()=>r.task.status==="done"),c=C(()=>!!r.task.description?.trim()),a=C(()=>!r.task.dueDate||_.value?!1:new Date(r.task.dueDate)<new Date);function p(I){return I?new Date(I).toLocaleDateString("en-US",{month:"short",day:"numeric"}):null}const $=C(()=>[[{label:"Edit",icon:"i-lucide-pencil",onSelect:()=>h("edit",r.task)},{label:"Delete",icon:"i-lucide-trash-2",color:"error",onSelect:()=>h("delete",r.task.id)}]]);return(I,A)=>{const o=se,t=oe,n=J,T=Ee;return v(),F("div",{class:Z(["group flex items-start gap-3 p-3 rounded-lg border border-default hover:bg-elevated transition-colors",{"opacity-60":s(_)}])},[k("button",{class:"mt-0.5 shrink-0",onClick:A[0]||(A[0]=$e(V=>h("toggle",e.task.id),["stop"]))},[l(o,{name:s(_)?"i-lucide-check-circle-2":"i-lucide-circle",class:Z(["size-5",s(_)?"text-success":"text-dimmed hover:text-default"])},null,8,["name","class"])]),k("button",{class:"flex-1 min-w-0 text-left",onClick:A[1]||(A[1]=V=>h("view",e.task))},[k("div",Re,[k("span",{class:Z(["font-medium",{"line-through text-dimmed":s(_)}])},j(e.task.title),3),s(c)?(v(),B(o,{key:0,name:"i-lucide-file-text",class:"size-3.5 text-dimmed shrink-0"})):E("",!0)]),k("div",Qe,[e.task.project?(v(),B(t,{key:0,variant:"subtle",color:"neutral",size:"xs"},{default:m(()=>[k("span",{class:"size-2 rounded-full mr-1",style:ue({backgroundColor:e.task.project.color})},null,4),S(" "+j(e.task.project.name),1)]),_:1})):E("",!0),e.task.priority!==2?(v(),B(t,{key:1,color:s(u).color,variant:"subtle",size:"xs"},{default:m(()=>[l(o,{name:s(u).icon,class:"size-3 mr-1"},null,8,["name"]),S(" "+j(s(u).label),1)]),_:1},8,["color"])):E("",!0),e.task.status==="in_progress"||e.task.status==="blocked"?(v(),B(t,{key:2,color:s(g).color,variant:"subtle",size:"xs"},{default:m(()=>[l(o,{name:s(g).icon,class:"size-3 mr-1"},null,8,["name"]),S(" "+j(s(g).label),1)]),_:1},8,["color"])):E("",!0),e.task.dueDate?(v(),F("span",{key:3,class:Z(["text-xs flex items-center gap-1",s(a)?"text-error":"text-dimmed"])},[l(o,{name:"i-lucide-calendar",class:"size-3"}),S(" "+j(p(e.task.dueDate)),1)],2)):E("",!0),(v(!0),F(ae,null,le(e.task.tags?.slice(0,3),V=>(v(),B(t,{key:V,variant:"subtle",color:"neutral",size:"xs"},{default:m(()=>[S(j(V),1)]),_:2},1024))),128)),e.task.tags&&e.task.tags.length>3?(v(),F("span",Ge," +"+j(e.task.tags.length-3),1)):E("",!0)])]),l(T,{items:s($)},{default:m(()=>[l(n,{icon:"i-lucide-more-vertical",color:"neutral",variant:"ghost",size:"xs",class:"opacity-0 group-hover:opacity-100 transition-opacity"})]),_:1},8,["items"])],2)}}}),Je=Object.assign(We,{__name:"TasksTaskCard"}),Ke={key:0,class:"flex items-center justify-center py-12"},Xe={class:"text-center py-8 text-dimmed"},Ye={key:2,class:"space-y-2"},Ze=Q({__name:"TaskList",props:{tasks:{},loading:{type:Boolean}},emits:["toggle","edit","delete","create","view"],setup(e,{emit:w}){const r=w;return(h,i)=>{const U=se,u=J,g=me,_=Je;return v(),F("div",null,[e.loading?(v(),F("div",Ke,[l(U,{name:"i-lucide-loader-2",class:"size-8 animate-spin text-dimmed"})])):e.tasks.length===0?(v(),B(g,{key:1},{default:m(()=>[k("div",Xe,[l(U,{name:"i-lucide-check-square",class:"size-12 mx-auto mb-2 opacity-50"}),i[5]||(i[5]=k("p",{class:"font-medium"}," No tasks yet ",-1)),i[6]||(i[6]=k("p",{class:"text-sm mt-1"}," Create your first task to get started. ",-1)),l(u,{class:"mt-4",icon:"i-lucide-plus",label:"Add Task",onClick:i[0]||(i[0]=c=>r("create"))})])]),_:1})):(v(),F("div",Ye,[(v(!0),F(ae,null,le(e.tasks,c=>(v(),B(_,{key:c.id,task:c,onToggle:i[1]||(i[1]=a=>r("toggle",a)),onEdit:i[2]||(i[2]=a=>r("edit",a)),onDelete:i[3]||(i[3]=a=>r("delete",a)),onView:i[4]||(i[4]=a=>r("view",a))},null,8,["task"]))),128))]))])}}}),et=Object.assign(Ze,{__name:"TasksTaskList"}),te="__none__",tt=Q({__name:"ProjectSelect",props:{modelValue:{},projects:{}},emits:["update:modelValue"],setup(e,{emit:w}){const r=e,h=w,i=C({get:()=>r.modelValue||te,set:u=>h("update:modelValue",u===te?null:u)}),U=C(()=>[{value:te,label:"No Project"},...r.projects.filter(u=>!u.deletedAt).map(u=>({value:u.id,label:u.name}))]);return(u,g)=>{const _=ne;return v(),B(_,{modelValue:s(i),"onUpdate:modelValue":g[0]||(g[0]=c=>z(i)?i.value=c:null),items:s(U),"value-key":"value",class:"w-full"},null,8,["modelValue","items"])}}}),ot=Object.assign(tt,{__name:"TasksProjectSelect"}),st={class:"task-form-body"},at={class:"task-form-description"},lt={class:"task-form-fields"},nt={class:"grid grid-cols-2 gap-4"},it={class:"flex justify-end gap-2 w-full"},rt=Q({__name:"TaskForm",props:{open:{type:Boolean},task:{},projects:{}},emits:["update:open","submit"],setup(e,{emit:w}){const r=e,h=w,i=C(()=>!!r.task?.id),U=C(()=>i.value?"Edit Task":"Create Task"),u=b(""),g=b(""),_=b("todo"),c=b(2),a=b(null),p=b(""),$=b([]),I=[{value:"todo",label:"Todo"},{value:"in_progress",label:"In Progress"},{value:"done",label:"Done"},{value:"blocked",label:"Blocked"}],A=[{value:1,label:"Low"},{value:2,label:"Medium"},{value:3,label:"High"}],o=[[{kind:"mark",mark:"bold",icon:"i-lucide-bold"},{kind:"mark",mark:"italic",icon:"i-lucide-italic"},{kind:"mark",mark:"code",icon:"i-lucide-code"}],[{kind:"bulletList",icon:"i-lucide-list"},{kind:"orderedList",icon:"i-lucide-list-ordered"}],[{kind:"link",icon:"i-lucide-link"}]],t=C(()=>g.value||void 0);q(()=>r.task,x=>{x?(u.value=x.title,g.value=x.description||"",_.value=x.status,c.value=x.priority,a.value=x.projectId||null,p.value=x.dueDate&&new Date(x.dueDate).toISOString().split("T")[0]||"",$.value=x.tags||[]):n()},{immediate:!0}),q(()=>r.open,x=>{x||n()});function n(){u.value="",g.value="",_.value="todo",c.value=2,a.value=null,p.value="",$.value=[]}function T(){h("update:open",!1)}function V(){if(!u.value.trim())return;const x={title:u.value.trim(),description:g.value.trim()||void 0,status:_.value,priority:c.value,projectId:a.value,dueDate:p.value||void 0,tags:$.value};h("submit",x),T()}return(x,y)=>{const K=de,M=Ae,G=ze,X=Be,O=ne,N=ot,H=Le,R=J,Y=Oe;return v(),B(Y,{open:e.open,title:s(U),"onUpdate:open":y[7]||(y[7]=D=>h("update:open",D))},{body:m(()=>[k("div",st,[l(M,{label:"Title",required:""},{default:m(()=>[l(K,{modelValue:s(u),"onUpdate:modelValue":y[0]||(y[0]=D=>z(u)?u.value=D:null),placeholder:"Task title...",autofocus:"",class:"w-full"},null,8,["modelValue"])]),_:1}),k("div",at,[y[8]||(y[8]=k("label",{class:"block text-sm font-medium text-default mb-1.5"},"Description",-1)),l(X,{"model-value":s(t),"content-type":"markdown",placeholder:"Add a description...",class:"task-editor","onUpdate:modelValue":y[1]||(y[1]=D=>g.value=D)},{default:m(({editor:D})=>[l(G,{editor:D,items:o,class:"border-b border-default"},null,8,["editor"])]),_:1},8,["model-value"])]),k("div",lt,[k("div",nt,[l(M,{label:"Status"},{default:m(()=>[l(O,{modelValue:s(_),"onUpdate:modelValue":y[2]||(y[2]=D=>z(_)?_.value=D:null),items:I,"value-key":"value",class:"w-full"},null,8,["modelValue"])]),_:1}),l(M,{label:"Priority"},{default:m(()=>[l(O,{modelValue:s(c),"onUpdate:modelValue":y[3]||(y[3]=D=>z(c)?c.value=D:null),items:A,"value-key":"value",class:"w-full"},null,8,["modelValue"])]),_:1})]),l(M,{label:"Project"},{default:m(()=>[l(N,{modelValue:s(a),"onUpdate:modelValue":y[4]||(y[4]=D=>z(a)?a.value=D:null),projects:e.projects,class:"w-full"},null,8,["modelValue","projects"])]),_:1}),l(M,{label:"Due Date"},{default:m(()=>[l(K,{modelValue:s(p),"onUpdate:modelValue":y[5]||(y[5]=D=>z(p)?p.value=D:null),type:"date",class:"w-full"},null,8,["modelValue"])]),_:1}),l(M,{label:"Tags"},{default:m(()=>[l(H,{modelValue:s($),"onUpdate:modelValue":y[6]||(y[6]=D=>z($)?$.value=D:null),placeholder:"Add tags...",class:"w-full"},null,8,["modelValue"])]),_:1})])])]),footer:m(()=>[k("div",it,[l(R,{color:"neutral",variant:"ghost",onClick:T},{default:m(()=>[...y[9]||(y[9]=[S(" Cancel ",-1)])]),_:1}),l(R,{disabled:!s(u).trim(),onClick:V},{default:m(()=>[S(j(s(i)?"Save Changes":"Create Task"),1)]),_:1},8,["disabled"])])]),_:1},8,["open","title"])}}}),ct=Object.assign(rt,{__name:"TasksTaskForm"}),ut={class:"flex items-start justify-between gap-4"},dt={class:"text-lg font-semibold"},mt={class:"space-y-4"},pt={class:"flex flex-wrap items-center gap-3 text-sm"},ft={key:0,class:"flex items-center gap-1.5"},kt={class:"text-dimmed"},vt={class:"flex items-center gap-1.5"},_t={key:1,class:"flex items-center gap-1.5"},gt={class:"text-dimmed"},yt={key:0,class:"flex flex-wrap gap-1.5"},bt={key:1,class:"pt-2 border-t border-default"},ht={class:"prose prose-sm dark:prose-invert max-w-none"},wt={class:"pt-2 border-t border-default text-xs text-dimmed space-y-1"},Tt={key:0},xt={key:0},jt={class:"flex justify-between"},$t={class:"flex gap-2"},Dt=Q({__name:"TaskDetail",props:{task:{}},emits:["edit","close","toggle"],setup(e,{emit:w}){const r=e,h=w,i={1:{label:"Low",color:"neutral"},2:{label:"Medium",color:"warning"},3:{label:"High",color:"error"}},U={todo:{label:"Todo",color:"neutral"},in_progress:{label:"In Progress",color:"info"},done:{label:"Done",color:"success"},blocked:{label:"Blocked",color:"error"}},u=C(()=>i[r.task.priority]||i[2]),g=C(()=>U[r.task.status]),_=C(()=>r.task.status==="done");function c(a){return a?new Date(a).toLocaleDateString("en-US",{weekday:"short",month:"short",day:"numeric",year:"numeric"}):null}return(a,p)=>{const $=oe,I=se,A=Me,o=J,t=me;return v(),B(t,null,{header:m(()=>[k("div",ut,[k("h3",dt,j(e.task.title),1),l($,{color:s(g).color,variant:"subtle"},{default:m(()=>[S(j(s(g).label),1)]),_:1},8,["color"])])]),footer:m(()=>[k("div",jt,[l(o,{icon:s(_)?"i-lucide-rotate-ccw":"i-lucide-check",color:s(_)?"neutral":"success",variant:s(_)?"ghost":"soft",onClick:p[0]||(p[0]=n=>h("toggle"))},{default:m(()=>[S(j(s(_)?"Mark Incomplete":"Mark Complete"),1)]),_:1},8,["icon","color","variant"]),k("div",$t,[l(o,{color:"neutral",variant:"ghost",onClick:p[1]||(p[1]=n=>h("close"))},{default:m(()=>[...p[3]||(p[3]=[S(" Close ",-1)])]),_:1}),l(o,{icon:"i-lucide-pencil",onClick:p[2]||(p[2]=n=>h("edit"))},{default:m(()=>[...p[4]||(p[4]=[S(" Edit ",-1)])]),_:1})])])]),default:m(()=>[k("div",mt,[k("div",pt,[e.task.project?(v(),F("div",ft,[k("span",{class:"size-2.5 rounded-full",style:ue({backgroundColor:e.task.project.color})},null,4),k("span",kt,j(e.task.project.name),1)])):E("",!0),k("div",vt,[l(I,{name:"i-lucide-flag",class:"size-4 text-dimmed"}),l($,{color:s(u).color,variant:"subtle",size:"xs"},{default:m(()=>[S(j(s(u).label),1)]),_:1},8,["color"])]),e.task.dueDate?(v(),F("div",_t,[l(I,{name:"i-lucide-calendar",class:"size-4 text-dimmed"}),k("span",gt,j(c(e.task.dueDate)),1)])):E("",!0)]),e.task.tags&&e.task.tags.length>0?(v(),F("div",yt,[(v(!0),F(ae,null,le(e.task.tags,n=>(v(),B($,{key:n,variant:"subtle",color:"neutral",size:"sm"},{default:m(()=>[S(j(n),1)]),_:2},1024))),128))])):E("",!0),e.task.description?(v(),F("div",bt,[k("div",ht,[l(A,{value:e.task.description},null,8,["value"])])])):E("",!0),k("div",wt,[k("p",null,[S(" Created: "+j(c(e.task.createdAt))+" ",1),e.task.creator?(v(),F("span",Tt," by "+j(e.task.creator.name),1)):E("",!0)]),e.task.completedAt?(v(),F("p",xt," Completed: "+j(c(e.task.completedAt)),1)):E("",!0)])])]),_:1})}}}),Ut=Object.assign(Dt,{__name:"TasksTaskDetail"});function Ct(){const e=b([]),w=b(!1),r=b(null),h=b([]),i=De({status:void 0,projectId:void 0,search:void 0,includeDeleted:!1});async function U(o){w.value=!0,r.value=null;const t=o||i;try{const n={};t.status&&(Array.isArray(t.status)?t.status.forEach(V=>n.status=V):n.status=t.status),t.projectId&&(n.projectId=t.projectId),t.search&&(n.search=t.search),t.includeDeleted&&(n.includeDeleted="true");const T=await $fetch("/api/tasks",{query:n});return e.value=T.data,T.data}catch(n){throw r.value="Failed to load tasks",console.error("Failed to load tasks:",n),n}finally{w.value=!1}}async function u(){try{const o=await $fetch("/api/tasks/tags");return h.value=o.data,o.data}catch(o){throw console.error("Failed to fetch tags:",o),o}}async function g(o){try{return(await $fetch(`/api/tasks/${o}`)).data}catch(t){throw console.error("Failed to get task:",t),t}}async function _(o){try{const t=await $fetch("/api/tasks",{method:"POST",body:o});return e.value=[t.data,...e.value],t.data}catch(t){throw console.error("Failed to create task:",t),t}}async function c(o,t){try{const n=await $fetch(`/api/tasks/${o}`,{method:"PUT",body:t}),T=e.value.findIndex(V=>V.id===o);return T!==-1&&(e.value[T]=n.data),n.data}catch(n){throw console.error("Failed to update task:",n),n}}async function a(o){try{const t=await $fetch(`/api/tasks/${o}`,{method:"DELETE"});return e.value=e.value.filter(n=>n.id!==o),t.data}catch(t){throw console.error("Failed to delete task:",t),t}}async function p(o){try{const t=await $fetch(`/api/tasks/${o}/restore`,{method:"POST"});return await U(),t.data}catch(t){throw console.error("Failed to restore task:",t),t}}async function $(o){const t=e.value.find(T=>T.id===o);if(!t)return;const n=t.status==="done"?"todo":"done";return c(o,{status:n})}const I=C(()=>{let o=[...e.value];if(i.status){const t=Array.isArray(i.status)?i.status:[i.status];o=o.filter(n=>t.includes(n.status))}if(i.projectId&&(o=o.filter(t=>t.projectId===i.projectId)),i.search){const t=i.search.toLowerCase();o=o.filter(n=>n.title.toLowerCase().includes(t)||n.description?.toLowerCase().includes(t))}return i.includeDeleted||(o=o.filter(t=>!t.deletedAt)),o}),A=C(()=>{const o={todo:0,in_progress:0,done:0,blocked:0,total:0};return e.value.forEach(t=>{t.deletedAt||(o[t.status]++,o.total++)}),o});return{tasks:e,filteredTasks:I,loading:w,error:r,tags:h,filters:i,taskCounts:A,fetchTasks:U,fetchTags:u,getTask:g,createTask:_,updateTask:c,deleteTask:a,restoreTask:p,toggleComplete:$}}function Vt(){const e=b([]),w=b(!1),r=b(null);async function h(c=!1){w.value=!0,r.value=null;try{const a=await $fetch("/api/projects",{query:{includeDeleted:c.toString()}});return e.value=a.data,a.data}catch(a){throw r.value="Failed to load projects",console.error("Failed to load projects:",a),a}finally{w.value=!1}}async function i(c){try{return(await $fetch(`/api/projects/${c}`)).data}catch(a){throw console.error("Failed to get project:",a),a}}async function U(c){try{const a=await $fetch("/api/projects",{method:"POST",body:c});return e.value=[...e.value,a.data],a.data}catch(a){throw console.error("Failed to create project:",a),a}}async function u(c,a){try{const p=await $fetch(`/api/projects/${c}`,{method:"PUT",body:a}),$=e.value.findIndex(I=>I.id===c);return $!==-1&&(e.value[$]=p.data),p.data}catch(p){throw console.error("Failed to update project:",p),p}}async function g(c){try{const a=await $fetch(`/api/projects/${c}`,{method:"DELETE"});return e.value=e.value.filter(p=>p.id!==c),a.data}catch(a){throw console.error("Failed to delete project:",a),a}}function _(c){if(c)return e.value.find(a=>a.id===c)}return{projects:e,loading:w,error:r,fetchProjects:h,getProject:i,createProject:U,updateProject:u,deleteProject:g,getProjectById:_}}const Ft={class:"contents"},St={class:"flex items-center gap-2 text-sm"},L="__all__",yo=Q({__name:"tasks",setup(e){const w=Ue(),r=Ce(),{filteredTasks:h,tasks:i,loading:U,filters:u,taskCounts:g,fetchTasks:_,createTask:c,updateTask:a,deleteTask:p,toggleComplete:$}=Ct(),{projects:I,fetchProjects:A}=Vt(),o=b(!1),t=b(null),n=b(!1),T=b(null),V=b(!1),x=b(null),y=b(!1),K=[{value:L,label:"All Status"},{value:"todo",label:"Todo"},{value:"in_progress",label:"In Progress"},{value:"done",label:"Done"},{value:"blocked",label:"Blocked"}],M=C(()=>[{value:L,label:"All Projects"},...I.value.filter(d=>!d.deletedAt).map(d=>({value:d.id,label:d.name}))]),{taskStatusFilter:G,taskProjectFilter:X}=He(),O=b(G.value==="all"?L:G.value),N=b(X.value||L),H=b("");q(O,d=>{u.status=d===L?void 0:d,G.value=d===L?"all":d}),q(N,d=>{u.projectId=d===L?void 0:d,X.value=d===L?null:d}),q(H,d=>{u.search=d||void 0}),O.value!==L&&(u.status=O.value),N.value!==L&&(u.projectId=N.value);function R(){t.value=null,o.value=!0}function Y(d){t.value=d,o.value=!0}function D(d){T.value=d,n.value=!0}async function pe(d){try{t.value?(await a(t.value.id,d),r.add({title:"Task updated",color:"success",icon:"i-lucide-check"})):(await c(d),r.add({title:"Task created",color:"success",icon:"i-lucide-check"})),t.value=null}catch(f){r.add({title:"Failed to save task",description:f instanceof Error?f.message:"An unexpected error occurred",color:"error",icon:"i-lucide-alert-circle"})}}function fe(d){x.value=d,V.value=!0}async function ke(){if(x.value){y.value=!0;try{await p(x.value),r.add({title:"Task deleted",color:"success",icon:"i-lucide-trash"}),V.value=!1,x.value=null}catch(d){r.add({title:"Failed to delete task",description:d instanceof Error?d.message:"An unexpected error occurred",color:"error",icon:"i-lucide-alert-circle"})}finally{y.value=!1}}}async function ie(d){try{await $(d)}catch(f){r.add({title:"Failed to update task",description:f instanceof Error?f.message:"An unexpected error occurred",color:"error",icon:"i-lucide-alert-circle"})}}return q([()=>w.query.selected,i],([d,f])=>{if(d&&f.length>0){const W=f.find(ee=>ee.id===d);W&&(T.value=W,n.value=!0,ce("/tasks",{replace:!0}))}},{immediate:!0}),q(()=>w.query.action,d=>{d==="new"&&(R(),ce("/tasks",{replace:!0}))},{immediate:!0}),Ve(async()=>{await Promise.all([_(),A()])}),(d,f)=>{const W=oe,ee=J,ve=Fe,_e=Ie,re=ne,ge=de,ye=Pe,be=et,he=Se,we=ct,Te=Ut,xe=Ne,je=qe;return v(),F("div",Ft,[l(he,{id:"tasks",grow:""},{header:m(()=>[l(_e,{title:"Tasks"},{left:m(()=>[k("div",St,[l(W,{color:"neutral",variant:"subtle"},{default:m(()=>[S(j(s(g).total)+" total ",1)]),_:1}),s(g).done>0?(v(),B(W,{key:0,color:"success",variant:"subtle"},{default:m(()=>[S(j(s(g).done)+" done ",1)]),_:1})):E("",!0)])]),right:m(()=>[l(ee,{icon:"i-lucide-plus",label:"Add Task",onClick:R}),l(ve)]),_:1}),l(ye,null,{left:m(()=>[l(re,{modelValue:s(O),"onUpdate:modelValue":f[0]||(f[0]=P=>z(O)?O.value=P:null),items:K,"value-key":"value",class:"w-36"},null,8,["modelValue"]),l(re,{modelValue:s(N),"onUpdate:modelValue":f[1]||(f[1]=P=>z(N)?N.value=P:null),items:s(M),"value-key":"value",class:"w-40"},null,8,["modelValue","items"])]),right:m(()=>[l(ge,{modelValue:s(H),"onUpdate:modelValue":f[2]||(f[2]=P=>z(H)?H.value=P:null),placeholder:"Search tasks...",icon:"i-lucide-search",class:"w-64"},null,8,["modelValue"])]),_:1})]),body:m(()=>[l(be,{tasks:s(h),loading:s(U),onToggle:ie,onEdit:Y,onDelete:fe,onCreate:R,onView:D},null,8,["tasks","loading"])]),_:1}),l(we,{open:s(o),"onUpdate:open":f[3]||(f[3]=P=>z(o)?o.value=P:null),task:s(t),projects:s(I),onSubmit:pe},null,8,["open","task","projects"]),l(xe,{open:s(n),"onUpdate:open":f[7]||(f[7]=P=>z(n)?n.value=P:null),title:s(T)?.title},{content:m(()=>[s(T)?(v(),B(Te,{key:0,task:s(T),onEdit:f[4]||(f[4]=P=>{Y(s(T)),n.value=!1}),onClose:f[5]||(f[5]=P=>n.value=!1),onToggle:f[6]||(f[6]=P=>{ie(s(T).id),n.value=!1})},null,8,["task"])):E("",!0)]),_:1},8,["open","title"]),l(je,{open:s(V),"onUpdate:open":f[8]||(f[8]=P=>z(V)?V.value=P:null),title:"Delete Task",description:"Are you sure you want to delete this task? This action cannot be undone.","confirm-label":"Delete","confirm-color":"error",icon:"i-lucide-trash-2",loading:s(y),onConfirm:ke,onCancel:f[9]||(f[9]=P=>x.value=null)},null,8,["open","loading"])])}}});export{yo as default};
@@ -1 +0,0 @@
1
- import{d as a,n as i}from"./BaPPQtFe.js";import{u}from"./DpLjEbYb.js";const r=a(()=>{const{isAuthenticated:e,isPending:t}=u();if(!t.value&&!e.value)return i("/login")});export{r as default};
@@ -1 +0,0 @@
1
- import{a as j,e as S,q as lt,a1 as it,G as c,R as s,a9 as a,ag as U,ah as A,a7 as h,ac as k,U as p,C as o,am as G,N as q,c as x,aj as T,Q as b,S as l,a3 as w,a2 as D,bA as H,ba as dt,bf as ct,f as M,bB as rt,ae as ut,T as n,_ as mt,W as pt,a8 as g}from"./BaPPQtFe.js";import{_ as ft,c as _t}from"./DdoFnl6e.js";import{d as vt,_ as gt,a as yt}from"./DIM73BjE.js";import{_ as xt}from"./BXWm1qrj.js";import{_ as ht}from"./BP_jQhKs.js";import{_ as bt}from"./VGlRzjk3.js";import{p as kt}from"./CXkbkhUa.js";import{u as wt}from"./DHYn0MnY.js";import{u as Ct}from"./DpLjEbYb.js";import{u as $t}from"./iJ4KRInq.js";import"./Vcq4gwWv.js";import"./88opOQSr.js";import"./iik6CYzq.js";import"./C8ytOrRD.js";import"./CqkleIqs.js";import"./nzAH3Wk0.js";const Ut={key:0,class:"space-y-1"},Tt=["onClick"],zt=["onClick"],Bt={key:1,class:"text-sm text-dimmed italic"},Ft=j({__name:"ViewToc",props:{links:{}},setup(f){const i=S(null);function u(_){const d=document.getElementById(_);d&&d.scrollIntoView({behavior:"smooth",block:"start"})}return lt(()=>{const _=document.querySelectorAll("h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]"),d=new IntersectionObserver(t=>{for(const m of t)if(m.isIntersecting){i.value=m.target.id;break}},{rootMargin:"-80px 0px -80% 0px"});_.forEach(t=>d.observe(t)),it(()=>d.disconnect())}),(_,d)=>f.links.length?(s(),c("nav",Ut,[d[0]||(d[0]=a("p",{class:"text-sm font-semibold text-muted mb-3"}," On this page ",-1)),(s(!0),c(U,null,A(f.links,t=>(s(),c(U,{key:t.id},[a("button",{type:"button",class:p(["block w-full text-left text-sm py-1 hover:text-primary transition-colors",[o(i)===t.id?"text-primary font-medium":"text-dimmed",t.depth===2&&"pl-0",t.depth===3&&"pl-4",t.depth>=4&&"pl-8"]]),onClick:m=>u(t.id)},k(t.text),11,Tt),t.children?.length?(s(!0),c(U,{key:0},A(t.children,m=>(s(),c("button",{key:m.id,type:"button",class:p(["block w-full text-left text-sm py-1 hover:text-primary transition-colors pl-4",o(i)===m.id?"text-primary font-medium":"text-dimmed"]),onClick:E=>u(m.id)},k(m.text),11,zt))),128)):h("",!0)],64))),128))])):(s(),c("div",Bt," No headings found "))}}),St=Object.assign(Ft,{__name:"ViewToc"}),At={slots:{root:"hidden overflow-y-auto lg:block lg:max-h-[calc(100vh-var(--ui-header-height))] lg:sticky lg:top-(--ui-header-height) py-8 lg:ps-4 lg:-ms-4 lg:pe-6.5",container:"relative",top:"sticky -top-8 -mt-8 pointer-events-none z-[1]",topHeader:"h-8 bg-default -mx-4 px-4",topBody:"bg-default relative pointer-events-auto flex flex-col -mx-4 px-4",topFooter:"h-8 bg-gradient-to-b from-default -mx-4 px-4"}},qt={__name:"UPageAside",props:{as:{type:null,required:!1,default:"aside"},class:{type:null,required:!1},ui:{type:null,required:!1}},setup(f){const i=f,u=G(),_=q(),d=x(()=>T({extend:T(At),..._.ui?.pageAside||{}})());return(t,m)=>(s(),b(o(D),{as:f.as,"data-slot":"root",class:p(d.value.root({class:[i.ui?.root,i.class]}))},{default:l(()=>[a("div",{"data-slot":"container",class:p(d.value.container({class:i.ui?.container}))},[u.top?(s(),c("div",{key:0,"data-slot":"top",class:p(d.value.top({class:i.ui?.top}))},[a("div",{"data-slot":"topHeader",class:p(d.value.topHeader({class:i.ui?.topHeader}))},null,2),a("div",{"data-slot":"topBody",class:p(d.value.topBody({class:i.ui?.topBody}))},[w(t.$slots,"top")],2),a("div",{"data-slot":"topFooter",class:p(d.value.topFooter({class:i.ui?.topFooter}))},null,2)],2)):h("",!0),w(t.$slots,"default"),w(t.$slots,"bottom")],2)]),_:3},8,["as","class"]))}},Dt={base:"mt-8 pb-24 space-y-12"},Et={__name:"UPageBody",props:{as:{type:null,required:!1},class:{type:null,required:!1}},setup(f){const i=f,u=q(),_=x(()=>T({extend:T(Dt),...u.ui?.pageBody||{}}));return(d,t)=>(s(),b(o(D),{as:f.as,class:p(_.value({class:i.class}))},{default:l(()=>[w(d.$slots,"default")]),_:3},8,["as","class"]))}},Pt={slots:{root:"flex flex-col lg:grid lg:grid-cols-10 lg:gap-10",left:"lg:col-span-2",center:"lg:col-span-8",right:"lg:col-span-2 order-first lg:order-last"},variants:{left:{true:""},right:{true:""}},compoundVariants:[{left:!0,right:!0,class:{center:"lg:col-span-6"}},{left:!1,right:!1,class:{center:"lg:col-span-10"}}]},It={__name:"UPage",props:{as:{type:null,required:!1},class:{type:null,required:!1},ui:{type:null,required:!1}},setup(f){const i=f,u=G(),_=q(),d=x(()=>T({extend:T(Pt),..._.ui?.page||{}})({left:!!u.left,right:!!u.right}));return(t,m)=>(s(),b(o(D),{as:f.as,"data-slot":"root",class:p(d.value.root({class:[i.ui?.root,i.class]}))},{default:l(()=>[u.left?(s(),b(o(H),{key:0,"data-slot":"left",class:p(d.value.left({class:i.ui?.left}))},{default:l(()=>[w(t.$slots,"left")]),_:3},8,["class"])):h("",!0),a("div",{"data-slot":"center",class:p(d.value.center({class:i.ui?.center}))},[w(t.$slots,"default")],2),u.right?(s(),b(o(H),{key:1,"data-slot":"right",class:p(d.value.right({class:i.ui?.right}))},{default:l(()=>[w(t.$slots,"right")]),_:3},8,["class"])):h("",!0)]),_:3},8,["as","class"]))}},Lt=_t(yt),Nt={key:0,class:"py-24 text-center"},Vt={key:1,class:"py-24 text-center"},Ot={key:2,class:"py-24 text-center"},Rt={key:3,class:"py-24 text-center"},Ht={class:"flex items-center justify-between mb-4"},Mt={class:"text-2xl font-bold"},jt={class:"flex items-center gap-2"},Gt={class:"border border-default rounded-lg overflow-hidden"},Qt={class:"flex items-center justify-between mb-4"},Wt={class:"text-2xl font-bold"},Jt={class:"flex items-center gap-2"},Kt={class:"flex flex-wrap items-center gap-4 text-sm text-dimmed mb-6"},Xt={key:0,class:"flex items-center gap-1.5"},Yt={class:"flex items-center gap-1.5"},Zt={key:1,class:"flex items-center gap-1.5"},te={key:2,class:"flex items-center gap-1.5"},ee={class:"flex gap-1"},oe={key:0,class:"border border-default rounded-lg overflow-hidden"},se={class:"prose prose-primary dark:prose-invert max-w-none"},he=j({__name:"[uuid]",async setup(f){let i,u;const _=dt(),d=x(()=>_.params.uuid),{data:t,error:m,status:E}=([i,u]=ct(()=>wt(`/api/documents/${d.value}/public`,"$x-U1b672rk")),i=await i,u(),i),B=S([]);M(()=>t.value?.data?.content,async r=>{if(r)try{const e=await kt(r);B.value=e.toc?.links||[]}catch(e){console.error("Failed to parse markdown for TOC:",e),B.value=[]}},{immediate:!0});const Q=x(()=>m.value?.statusCode===404),W=x(()=>m.value?.statusCode===403),J=x(()=>t.value?.data?.document?.fileType==="markdown"),K=x(()=>t.value?.data?.document?.fileType==="text"),X=x(()=>t.value?.data?.document?.fileType==="binary"),Y=x(()=>vt(t.value?.data?.document?.path||""));rt({title:()=>t.value?.data?.document?.title||"Document",description:"Shared document from Cognova",robots:()=>t.value?.data?.document?.shareType==="public"?"index, follow":"noindex, nofollow"});const{isAuthenticated:P}=Ct(),{viewSourceMode:I}=$t(),C=S(I.value);M(C,r=>I.value=r);const L=ut();async function N(){const r=t.value?.data?.content;if(r)try{await navigator.clipboard.writeText(r),L.add({title:"Copied to clipboard",icon:"i-lucide-check",color:"success"})}catch{L.add({title:"Failed to copy",icon:"i-lucide-x",color:"error"})}}function V(){const r=t.value?.data?.content,e=t.value?.data?.document?.path;if(!r||!e)return;const y=e.split("/").pop()||"document.txt",v=new Blob([r],{type:"text/plain;charset=utf-8"}),z=URL.createObjectURL(v),$=document.createElement("a");$.href=z,$.download=y,$.click(),URL.revokeObjectURL(z)}function O(r){return r?new Date(r).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}):""}return(r,e)=>{const y=mt,v=pt,z=Lt,$=gt,R=ft,Z=xt,tt=St,et=qt,ot=ht,st=Et,at=It,nt=bt;return s(),b(nt,{class:"py-8"},{default:l(()=>[o(Q)?(s(),c("div",Nt,[n(y,{name:"i-lucide-file-x",class:"size-16 mx-auto mb-4 text-dimmed"}),e[2]||(e[2]=a("h1",{class:"text-2xl font-bold mb-2"}," Document Not Found ",-1)),e[3]||(e[3]=a("p",{class:"text-dimmed mb-6"}," This document doesn't exist or has been deleted. ",-1)),n(v,{to:"/",variant:"soft"},{default:l(()=>[...e[1]||(e[1]=[g(" Go Home ",-1)])]),_:1})])):o(W)?(s(),c("div",Vt,[n(y,{name:"i-lucide-lock",class:"size-16 mx-auto mb-4 text-dimmed"}),e[5]||(e[5]=a("h1",{class:"text-2xl font-bold mb-2"}," Access Denied ",-1)),e[6]||(e[6]=a("p",{class:"text-dimmed mb-6"}," This document is not publicly shared. ",-1)),n(v,{to:"/login",variant:"soft"},{default:l(()=>[...e[4]||(e[4]=[g(" Sign In ",-1)])]),_:1})])):o(X)&&o(t)?.data?(s(),c("div",Ot,[n(y,{name:"i-lucide-file-warning",class:"size-16 mx-auto mb-4 text-dimmed"}),e[8]||(e[8]=a("h1",{class:"text-2xl font-bold mb-2"}," Cannot Preview This File ",-1)),e[9]||(e[9]=a("p",{class:"text-dimmed mb-6"}," Binary files cannot be previewed. ",-1)),n(v,{to:"/",variant:"soft"},{default:l(()=>[...e[7]||(e[7]=[g(" Go Home ",-1)])]),_:1})])):o(E)==="pending"?(s(),c("div",Rt,[n(y,{name:"i-lucide-loader-2",class:"size-8 mx-auto animate-spin text-dimmed"})])):o(K)&&o(t)?.data?.content?(s(),c(U,{key:4},[a("div",Ht,[a("h1",Mt,k(o(t).data.document.title),1),a("div",jt,[n(v,{icon:"i-lucide-copy",variant:"ghost",size:"sm",onClick:N},{default:l(()=>[...e[10]||(e[10]=[g(" Copy ",-1)])]),_:1}),n(v,{icon:"i-lucide-download",variant:"ghost",size:"sm",onClick:V},{default:l(()=>[...e[11]||(e[11]=[g(" Download ",-1)])]),_:1}),o(P)?(s(),b(v,{key:0,icon:"i-lucide-pencil",variant:"soft",size:"sm",to:`/docs?path=${encodeURIComponent(o(t).data.document.path)}`},{default:l(()=>[...e[12]||(e[12]=[g(" Edit ",-1)])]),_:1},8,["to"])):h("",!0)])]),a("div",Gt,[n(R,null,{fallback:l(()=>[n($,{class:"h-96"})]),default:l(()=>[n(z,{"model-value":o(t).data.content,language:o(Y),"read-only":!0,class:"max-h-[80vh]"},null,8,["model-value","language"])]),_:1})])],64)):o(J)&&o(t)?.data?.content?(s(),c(U,{key:5},[a("div",Qt,[a("h1",Wt,k(o(t).data.document.title),1),a("div",Jt,[n(v,{icon:o(C)?"i-lucide-eye":"i-lucide-code",variant:"ghost",size:"sm",onClick:e[0]||(e[0]=F=>C.value=!o(C))},{default:l(()=>[g(k(o(C)?"Preview":"Source"),1)]),_:1},8,["icon"]),n(v,{icon:"i-lucide-copy",variant:"ghost",size:"sm",onClick:N},{default:l(()=>[...e[13]||(e[13]=[g(" Copy ",-1)])]),_:1}),n(v,{icon:"i-lucide-download",variant:"ghost",size:"sm",onClick:V},{default:l(()=>[...e[14]||(e[14]=[g(" Download ",-1)])]),_:1}),o(P)?(s(),b(v,{key:0,icon:"i-lucide-pencil",variant:"soft",size:"sm",to:`/docs?path=${encodeURIComponent(o(t).data.document.path)}`},{default:l(()=>[...e[15]||(e[15]=[g(" Edit ",-1)])]),_:1},8,["to"])):h("",!0)])]),a("div",Kt,[o(t).data.document.creatorName?(s(),c("div",Xt,[n(y,{name:"i-lucide-user",class:"size-4"}),a("span",null,k(o(t).data.document.creatorName),1)])):h("",!0),a("div",Yt,[n(y,{name:"i-lucide-calendar",class:"size-4"}),a("span",null,k(O(o(t).data.document.createdAt)),1)]),o(t).data.document.modifiedAt?(s(),c("div",Zt,[n(y,{name:"i-lucide-pencil",class:"size-4"}),a("span",null,"Updated "+k(O(o(t).data.document.modifiedAt)),1)])):h("",!0),o(t).data.document.tags?.length?(s(),c("div",te,[n(y,{name:"i-lucide-tags",class:"size-4"}),a("div",ee,[(s(!0),c(U,null,A(o(t).data.document.tags,F=>(s(),b(Z,{key:F,color:"neutral",variant:"subtle",size:"sm"},{default:l(()=>[g(k(F),1)]),_:2},1024))),128))])])):h("",!0)]),o(C)?(s(),c("div",oe,[n(R,null,{fallback:l(()=>[n($,{class:"h-96"})]),default:l(()=>[n(z,{"model-value":o(t).data.content,language:"markdown","read-only":!0,class:"max-h-[80vh]"},null,8,["model-value"])]),_:1})])):(s(),b(at,{key:1},{left:l(()=>[n(et,null,{default:l(()=>[n(tt,{links:o(B)},null,8,["links"])]),_:1})]),default:l(()=>[n(st,null,{default:l(()=>[a("div",se,[n(ot,{value:o(t).data.content},null,8,["value"])])]),_:1})]),_:1}))],64)):h("",!0)]),_:1})}}});export{he as default};
@@ -1 +0,0 @@
1
- import{a as Z,ao as Tt,ap as Ft,Q as y,S as u,R as s,a9 as e,T as i,a8 as v,W as tt,G as p,a7 as x,ac as c,_ as et,ba as Bt,ak as Et,ae as Nt,c as L,bf as Lt,aB as Ot,e as $,f as jt,q as zt,ai as H,C as n,ag as O,ah as Y}from"./BaPPQtFe.js";import{_ as nt}from"./BXWm1qrj.js";import{_ as It}from"./DPuJYSUH.js";import{_ as Vt}from"./DnToOWVx.js";import{_ as Gt,a as Wt}from"./Ddih3UKd.js";import{_ as qt}from"./T_w6A2Zo.js";import{_ as Ht}from"./C1tYtAeV.js";import{_ as Jt}from"./ChMIRIq6.js";import{u as Pt,_ as Qt,a as Kt,b as Xt}from"./DoIiMqKa.js";import{c as Yt}from"./DdoFnl6e.js";import{_ as Zt}from"./CJ3DQEW9.js";import{_ as ot}from"./DhRePYUI.js";import{u as te}from"./BN_2zhBR.js";import{u as ee}from"./DHYn0MnY.js";import"./BDUpLPg_.js";import"./BMh-dHBK.js";import"./BGaNWD0s.js";import"./4Ew5YctE.js";import"./BBygTbuF.js";import"./nzAH3Wk0.js";import"./C8ut0f5H.js";import"./CqkleIqs.js";import"./DlAUqK2U.js";import"./DamUHI17.js";import"./CExLOuIW.js";import"./BboG47Wz.js";import"./WqUIRM3G.js";import"./BZZeOWzQ.js";import"./rZmMQHiC.js";import"./D1JmZKz7.js";import"./DGTbw5AQ.js";import"./Dsk8JtTw.js";import"./C6Y-ieo6.js";import"./Biy6boRV.js";import"./BnwR3LQL.js";import"./q0vhMpUB.js";import"./BPAM-iC7.js";import"./BQbnVFXA.js";import"./DWQMV4k2.js";import"./Vcq4gwWv.js";import"./Da8Xd1w6.js";import"./C8ytOrRD.js";const ne={key:0,class:"p-4 space-y-4"},oe={class:"flex flex-wrap items-center gap-4"},se={class:"text-sm text-muted"},ae={key:0,class:"text-sm text-muted"},re={class:"grid grid-cols-2 sm:grid-cols-4 gap-4 p-4 rounded-lg bg-muted/5"},ie={class:"font-medium"},le={class:"font-medium"},ue={class:"font-medium"},ce={class:"font-medium"},de={key:0,class:"p-4 rounded-lg bg-error-500/10 border border-error-500/20"},me={class:"text-sm text-error-400 whitespace-pre-wrap font-mono overflow-x-auto"},pe={key:1},fe={class:"max-h-96 overflow-auto rounded-lg bg-muted/5 border border-default"},ge={class:"p-4 text-sm whitespace-pre-wrap font-mono"},_e={key:2,class:"text-center text-muted py-8"},ve={key:1,class:"p-4 text-center text-muted"},xe={class:"flex justify-end"},ye=Z({__name:"AgentRunModal",props:Tt({run:{}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:["update:open"],setup(d){const k=Ft(d,"open");function U(m){return m?m<1e3?`${m}ms`:m<6e4?`${(m/1e3).toFixed(1)}s`:`${(m/6e4).toFixed(1)}m`:"-"}function D(m){return m?new Date(m).toLocaleString():"-"}function S(m){switch(m){case"success":return"success";case"error":return"error";case"budget_exceeded":return"warning";case"running":return"info";case"cancelled":return"neutral";default:return"neutral"}}return(m,l)=>{const j=nt,z=et,I=tt,V=ot;return s(),y(V,{open:k.value,"onUpdate:open":l[1]||(l[1]=M=>k.value=M),title:(d.run,"Run Details"),ui:{content:"sm:max-w-3xl"}},{content:u(()=>[d.run?(s(),p("div",ne,[e("div",oe,[i(j,{color:S(d.run.status),size:"lg"},{default:u(()=>[v(c(d.run.status),1)]),_:1},8,["color"]),e("span",se," Started: "+c(D(d.run.startedAt)),1),d.run.completedAt?(s(),p("span",ae," Completed: "+c(D(d.run.completedAt)),1)):x("",!0)]),e("div",re,[e("div",null,[l[2]||(l[2]=e("p",{class:"text-xs text-muted uppercase"}," Duration ",-1)),e("p",ie,c(U(d.run.durationMs)),1)]),e("div",null,[l[3]||(l[3]=e("p",{class:"text-xs text-muted uppercase"}," Cost ",-1)),e("p",le,c(d.run.costUsd?`$${d.run.costUsd.toFixed(4)}`:"-"),1)]),e("div",null,[l[4]||(l[4]=e("p",{class:"text-xs text-muted uppercase"}," Input Tokens ",-1)),e("p",ue,c(d.run.inputTokens?.toLocaleString()||"-"),1)]),e("div",null,[l[5]||(l[5]=e("p",{class:"text-xs text-muted uppercase"}," Output Tokens ",-1)),e("p",ce,c(d.run.outputTokens?.toLocaleString()||"-"),1)])]),d.run.error?(s(),p("div",de,[l[6]||(l[6]=e("p",{class:"text-sm font-medium text-error-500 mb-2"}," Error ",-1)),e("pre",me,c(d.run.error),1)])):x("",!0),d.run.output?(s(),p("div",pe,[l[7]||(l[7]=e("p",{class:"text-sm font-medium mb-2"}," Output ",-1)),e("div",fe,[e("pre",ge,c(d.run.output),1)])])):x("",!0),!d.run.output&&!d.run.error&&d.run.status==="running"?(s(),p("div",_e,[i(z,{name:"i-lucide-loader-2",class:"size-8 animate-spin mb-2"}),l[8]||(l[8]=e("p",null,"Agent is currently running...",-1))])):x("",!0)])):(s(),p("div",ve," No run selected "))]),footer:u(()=>[e("div",xe,[i(I,{color:"neutral",variant:"ghost",onClick:l[0]||(l[0]=M=>k.value=!1)},{default:u(()=>[...l[9]||(l[9]=[v(" Close ",-1)])]),_:1})])]),_:1},8,["open","title"])}}}),he=Object.assign(ye,{__name:"AgentsAgentRunModal"}),$e=Yt(Xt),ke={class:"contents"},be={class:"flex items-center gap-3"},we={class:"font-semibold text-lg truncate"},Ae={key:0,class:"flex items-center justify-center h-64"},Ce={key:1,class:"p-4 space-y-6"},Re={class:"space-y-3"},Ue={key:0},De={class:"flex flex-wrap gap-6"},Se={class:"flex items-center gap-2"},Me={class:"text-sm text-muted"},Te={key:0},Fe={class:"flex items-center gap-2"},Be={key:1},Ee={class:"flex items-center gap-2"},Ne={class:"space-y-4"},Le={key:0,class:"flex items-center justify-center h-32"},Oe={key:1,class:"flex flex-col items-center justify-center h-32 text-neutral-500"},je={key:2,class:"space-y-2"},ze={class:"flex items-start justify-between gap-4"},Ie={class:"flex-1 min-w-0"},Ve={class:"flex items-center gap-2 mb-1"},Ge={class:"text-sm text-muted"},We={class:"text-sm text-muted truncate"},qe={class:"text-right text-sm text-muted shrink-0"},He={key:0},Je={class:"p-4 space-y-4"},Pe={class:"flex items-center gap-3"},Qe={class:"p-2 rounded-full bg-error-500/10"},Ke={class:"text-sm text-muted"},Xe={class:"flex justify-end gap-2"},In=Z({__name:"[id]",async setup(d){let k,U;const D=Bt(),S=Et(),m=Nt(),{fetchAgentStats:l,fetchRuns:j,updateAgent:z,deleteAgent:I,toggleEnabled:V,runAgent:M,cancelAgent:st}=Pt(),{isAgentRunning:at}=te(),T=L(()=>D.params.id),{data:rt,status:it,error:G,refresh:J}=([k,U]=Lt(()=>ee(()=>`/api/agents/${T.value}`,{key:`agent-${T.value}`},"$aMAiG7xhIp")),k=await k,U(),k),a=L(()=>rt.value?.data??null),lt=L(()=>it.value==="pending");if(G.value)throw Ot({statusCode:G.value.statusCode||404,message:G.value.message||"Agent not found"});const C=$(null),F=$([]),W=$(!1),q=$(!1),P=L(()=>a.value?at(a.value.id)?!0:F.value.some(o=>o.status==="running"):!1),w=$("7d"),ut=[{label:"24h",value:"24h"},{label:"7d",value:"7d"},{label:"30d",value:"30d"}],A=$(!1),R=$(!1),Q=$(null),B=$(!1);function ct(o){const t=o.split(" ");if(t.length!==5)return o;const g=t[0],f=t[1],_=t[2],h=t[3],b=t[4];return g==="0"&&f==="*"&&_==="*"&&h==="*"&&b==="*"?"Every hour":g==="*/5"&&f==="*"&&_==="*"&&h==="*"&&b==="*"?"Every 5 minutes":_==="*"&&h==="*"&&b==="*"&&f!=="*"?`Daily at ${f}:${g.padStart(2,"0")}`:b==="0"&&_==="*"&&h==="*"?`Weekly on Sunday at ${f}:${g.padStart(2,"0")}`:o}function dt(o){if(!o)return"Never";const t=new Date(o),f=new Date().getTime()-t.getTime(),_=Math.floor(f/6e4),h=Math.floor(f/36e5),b=Math.floor(f/864e5);return _<1?"Just now":_<60?`${_}m ago`:h<24?`${h}h ago`:`${b}d ago`}function mt(o){return o?o<1e3?`${o}ms`:o<6e4?`${(o/1e3).toFixed(1)}s`:`${(o/6e4).toFixed(1)}m`:"-"}function pt(o){return o?new Date(o).toLocaleString():"-"}function ft(o){switch(o){case"success":return"success";case"error":return"error";case"budget_exceeded":return"warning";case"running":return"info";case"cancelled":return"neutral";default:return"neutral"}}async function E(){W.value=!0;try{C.value=await l(T.value,w.value)}catch{}finally{W.value=!1}}async function N(){q.value=!0;try{F.value=await j(T.value,w.value)}catch{}finally{q.value=!1}}async function gt(){if(a.value)try{await V(a.value.id),await J()}catch{m.add({title:"Failed to toggle agent",color:"error",icon:"i-lucide-alert-circle"})}}async function _t(){if(a.value)try{await M(a.value.id),setTimeout(N,1e3)}catch{m.add({title:"Failed to run agent",color:"error",icon:"i-lucide-alert-circle"})}}async function vt(){if(a.value)try{await st(a.value.id),m.add({title:"Agent cancelled",color:"warning",icon:"i-lucide-x-circle"}),setTimeout(()=>{N(),E()},1e3)}catch{m.add({title:"Failed to cancel agent",description:"No running execution found",color:"error",icon:"i-lucide-alert-circle"})}}async function xt(o){if(a.value)try{await z(a.value.id,o),m.add({title:"Agent updated",color:"success",icon:"i-lucide-check"}),A.value=!1,J(),E()}catch(t){m.add({title:"Failed to update agent",description:t instanceof Error?t.message:"An unexpected error occurred",color:"error",icon:"i-lucide-alert-circle"})}}async function yt(){if(a.value)try{await I(a.value.id),m.add({title:"Agent deleted",color:"success",icon:"i-lucide-check"}),S.push("/agents")}catch{m.add({title:"Failed to delete agent",color:"error",icon:"i-lucide-alert-circle"})}}function ht(o){Q.value=o,B.value=!0}function K(o,t=100){return o?o.length<=t?o:o.substring(0,t)+"...":"-"}return jt(w,()=>{E(),N()}),zt(()=>{E(),N()}),(o,t)=>{const g=tt,f=et,_=nt,h=It,b=Vt,$t=Wt,kt=qt,bt=Ht,X=Jt,wt=Qt,At=$e,Ct=Gt,Rt=Kt,Ut=Zt,Dt=ot,St=he;return s(),p("div",ke,[i(Ct,{id:"agent-detail",grow:""},{header:u(()=>[i($t,null,{left:u(()=>[e("div",be,[i(g,{icon:"i-lucide-arrow-left",variant:"ghost",size:"sm",onClick:t[0]||(t[0]=r=>n(S).push("/agents"))}),n(a)?(s(),p(O,{key:0},[e("h1",we,c(n(a).name),1),n(P)?(s(),y(_,{key:0,color:"info",variant:"subtle"},{default:u(()=>[i(f,{name:"i-lucide-loader-2",class:"w-3 h-3 animate-spin mr-1"}),t[8]||(t[8]=v(" Running ",-1))]),_:1})):n(a).enabled?x("",!0):(s(),y(_,{key:1,color:"neutral",variant:"subtle"},{default:u(()=>[...t[9]||(t[9]=[v(" Disabled ",-1)])]),_:1}))],64)):(s(),y(h,{key:1,class:"h-6 w-32"}))])]),right:u(()=>[n(a)?(s(),p(O,{key:0},[i(b,{"model-value":n(a).enabled,"onUpdate:modelValue":gt},null,8,["model-value"]),n(P)?(s(),y(g,{key:0,icon:"i-lucide-square",variant:"ghost",color:"error",onClick:vt})):(s(),y(g,{key:1,icon:"i-lucide-play",variant:"ghost",disabled:!n(a).enabled,onClick:_t},null,8,["disabled"])),i(g,{icon:"i-lucide-pencil",variant:"ghost",onClick:t[1]||(t[1]=r=>A.value=!0)}),i(g,{icon:"i-lucide-trash-2",variant:"ghost",color:"error",onClick:t[2]||(t[2]=r=>R.value=!0)})],64)):x("",!0)]),_:1}),i(bt,null,{left:u(()=>[i(kt,null,{default:u(()=>[(s(),p(O,null,Y(ut,r=>i(g,{key:r.value,color:n(w)===r.value?"primary":"neutral",variant:n(w)===r.value?"solid":"ghost",size:"sm",onClick:Mt=>w.value=r.value},{default:u(()=>[v(c(r.label),1)]),_:2},1032,["color","variant","onClick"])),64))]),_:1})]),_:1})]),body:u(()=>[n(lt)?(s(),p("div",Ae,[i(f,{name:"i-lucide-loader-2",class:"w-8 h-8 animate-spin text-neutral-400"})])):n(a)?(s(),p("div",Ce,[i(X,null,{default:u(()=>[e("div",Re,[n(a).description?(s(),p("div",Ue,[t[10]||(t[10]=e("p",{class:"text-sm text-muted uppercase mb-1"}," Description ",-1)),e("p",null,c(n(a).description),1)])):x("",!0),e("div",De,[e("div",null,[t[11]||(t[11]=e("p",{class:"text-sm text-muted uppercase mb-1"}," Schedule ",-1)),e("p",Se,[i(f,{name:"i-lucide-clock"}),v(" "+c(ct(n(a).schedule))+" ",1),e("span",Me,"("+c(n(a).schedule)+")",1)])]),n(a).maxBudgetUsd?(s(),p("div",Te,[t[12]||(t[12]=e("p",{class:"text-sm text-muted uppercase mb-1"}," Budget Limit ",-1)),e("p",Fe,[i(f,{name:"i-lucide-dollar-sign"}),v(" $"+c(n(a).maxBudgetUsd)+" per run ",1)])])):x("",!0),n(a).lastRunAt?(s(),p("div",Be,[t[13]||(t[13]=e("p",{class:"text-sm text-muted uppercase mb-1"}," Last Run ",-1)),e("p",Ee,[i(f,{name:"i-lucide-activity"}),v(" "+c(dt(n(a).lastRunAt)),1)])])):x("",!0)])])]),_:1}),i(wt,{stats:n(C),loading:n(W),variant:"detail"},null,8,["stats","loading"]),n(C)&&n(C).dailyRuns.length>0?(s(),y(At,{key:0,data:n(C).dailyRuns,title:"Run Activity"},null,8,["data"])):x("",!0),e("div",Ne,[t[16]||(t[16]=e("h2",{class:"text-lg font-semibold"}," Run History ",-1)),n(q)?(s(),p("div",Le,[i(f,{name:"i-lucide-loader-2",class:"w-6 h-6 animate-spin text-neutral-400"})])):n(F).length===0?(s(),p("div",Oe,[i(f,{name:"i-lucide-history",class:"w-8 h-8 mb-2"}),t[14]||(t[14]=e("p",null,"No runs yet",-1))])):(s(),p("div",je,[(s(!0),p(O,null,Y(n(F),r=>(s(),y(X,{key:r.id,class:"cursor-pointer transition-all hover:ring-2 hover:ring-primary/50",onClick:Mt=>ht(r)},{default:u(()=>[e("div",ze,[e("div",Ie,[e("div",Ve,[r.status==="running"?(s(),y(_,{key:0,color:"info",variant:"subtle",size:"sm"},{default:u(()=>[i(f,{name:"i-lucide-loader-2",class:"w-3 h-3 animate-spin mr-1"}),t[15]||(t[15]=v(" Running ",-1))]),_:1})):(s(),y(_,{key:1,color:ft(r.status),size:"sm"},{default:u(()=>[v(c(r.status),1)]),_:2},1032,["color"])),e("span",Ge,c(pt(r.startedAt)),1)]),e("p",We,c(r.error?K(r.error):K(r.output)),1)]),e("div",qe,[e("p",null,c(mt(r.durationMs)),1),r.costUsd?(s(),p("p",He," $"+c(r.costUsd.toFixed(4)),1)):x("",!0)])])]),_:2},1032,["onClick"]))),128))]))])])):x("",!0)]),_:1}),i(Ut,{open:n(A),"onUpdate:open":t[4]||(t[4]=r=>H(A)?A.value=r:null)},{title:u(()=>[...t[17]||(t[17]=[v(" Edit Agent ",-1)])]),body:u(()=>[i(Rt,{agent:n(a),onSubmit:xt,onCancel:t[3]||(t[3]=r=>A.value=!1)},null,8,["agent"])]),_:1},8,["open"]),i(Dt,{open:n(R),"onUpdate:open":t[6]||(t[6]=r=>H(R)?R.value=r:null)},{content:u(()=>[e("div",Je,[e("div",Pe,[e("div",Qe,[i(f,{name:"i-lucide-alert-triangle",class:"w-6 h-6 text-error-500"})]),e("div",null,[t[18]||(t[18]=e("h3",{class:"font-semibold"}," Delete Agent ",-1)),e("p",Ke,' Are you sure you want to delete "'+c(n(a)?.name)+'"? This action cannot be undone. ',1)])])])]),footer:u(()=>[e("div",Xe,[i(g,{color:"neutral",variant:"ghost",onClick:t[5]||(t[5]=r=>R.value=!1)},{default:u(()=>[...t[19]||(t[19]=[v(" Cancel ",-1)])]),_:1}),i(g,{color:"error",onClick:yt},{default:u(()=>[...t[20]||(t[20]=[v(" Delete ",-1)])]),_:1})])]),_:1},8,["open"]),i(St,{open:n(B),"onUpdate:open":t[7]||(t[7]=r=>H(B)?B.value=r:null),run:n(Q)},null,8,["open","run"])])}}});export{In as default};
@@ -1 +0,0 @@
1
- import{a as lt,ae as rt,ak as ct,e as b,f as ut,q as dt,G as m,T as o,S as u,ai as mt,C as s,R as a,a9 as r,Q as A,a7 as C,_ as pt,W as _t,ag as E,ah as z,ac as f,a8 as y,al as $}from"./BaPPQtFe.js";import{_ as ft}from"./T_w6A2Zo.js";import{_ as gt,a as vt}from"./Ddih3UKd.js";import{u as ht,_ as yt,a as kt,b as xt}from"./DoIiMqKa.js";import{c as At}from"./DdoFnl6e.js";import{_ as wt}from"./BXWm1qrj.js";import{_ as bt}from"./DnToOWVx.js";import{_ as Ct}from"./ChMIRIq6.js";import{_ as $t}from"./CJ3DQEW9.js";import{u as St}from"./BN_2zhBR.js";import{u as Ut}from"./iJ4KRInq.js";import"./C8ut0f5H.js";import"./CqkleIqs.js";import"./4Ew5YctE.js";import"./BBygTbuF.js";import"./nzAH3Wk0.js";import"./DPuJYSUH.js";import"./DlAUqK2U.js";import"./DamUHI17.js";import"./BDUpLPg_.js";import"./CExLOuIW.js";import"./BboG47Wz.js";import"./BMh-dHBK.js";import"./WqUIRM3G.js";import"./BZZeOWzQ.js";import"./rZmMQHiC.js";import"./D1JmZKz7.js";import"./DGTbw5AQ.js";import"./Dsk8JtTw.js";import"./C6Y-ieo6.js";import"./Biy6boRV.js";import"./BnwR3LQL.js";import"./q0vhMpUB.js";import"./BPAM-iC7.js";import"./BQbnVFXA.js";import"./DWQMV4k2.js";import"./Vcq4gwWv.js";import"./BGaNWD0s.js";import"./Da8Xd1w6.js";const Rt=At(xt),Nt={class:"contents"},Ft={class:"p-4 space-y-6"},Bt={key:1,class:"flex items-center justify-center h-64"},Tt={key:2,class:"flex flex-col items-center justify-center h-64 text-neutral-500"},Et={key:3,class:"space-y-4"},zt={class:"flex items-start justify-between gap-4"},Dt={class:"flex-1 min-w-0"},Mt={class:"flex items-center gap-2"},Pt={class:"font-medium truncate"},Vt={key:0,class:"text-sm text-muted truncate mt-1"},Ot={class:"flex items-center gap-4 mt-2 text-sm text-muted"},jt={class:"flex items-center gap-1"},Gt={key:0,class:"flex items-center gap-1"},Wt={key:1,class:"flex items-center gap-1"},qt={class:"flex items-center gap-2"},Fe=lt({__name:"index",setup(Lt){const g=rt(),D=ct(),{agents:R,loading:M,fetchAgents:P,createAgent:V,updateAgent:O,toggleEnabled:j,runAgent:G,cancelAgent:W,fetchGlobalStats:q}=ht(),{isAgentRunning:L}=St(),{agentStatsPeriod:N}=Ut(),w=b(N.value),k=b(null),S=b(!1);function F(n){return L(n)?!0:k.value?.runningAgentIds?.includes(n)??!1}const v=b(!1),h=b(null),I=[{label:"24h",value:"24h"},{label:"7d",value:"7d"},{label:"30d",value:"30d"}];function J(n){const t=n.split(" ");if(t.length!==5)return n;const i=t[0],l=t[1],c=t[2],d=t[3],p=t[4];return i==="0"&&l==="*"&&c==="*"&&d==="*"&&p==="*"?"Every hour":i==="*/5"&&l==="*"&&c==="*"&&d==="*"&&p==="*"?"Every 5 minutes":c==="*"&&d==="*"&&p==="*"&&l!=="*"?`Daily at ${l}:${i.padStart(2,"0")}`:p==="0"&&c==="*"&&d==="*"?`Weekly on Sunday at ${l}:${i.padStart(2,"0")}`:n}function Q(n){if(!n)return"Never";const t=new Date(n),l=new Date().getTime()-t.getTime(),c=Math.floor(l/6e4),d=Math.floor(l/36e5),p=Math.floor(l/864e5);return c<1?"Just now":c<60?`${c}m ago`:d<24?`${d}h ago`:`${p}d ago`}function B(){h.value=null,v.value=!0}function H(n,t){t.stopPropagation(),h.value=n,v.value=!0}function K(n){D.push(`/agents/${n.id}`)}async function X(n){try{h.value?(await O(h.value.id,n),g.add({title:"Agent updated",color:"success",icon:"i-lucide-check"})):(await V(n),g.add({title:"Agent created",color:"success",icon:"i-lucide-check"}),U()),v.value=!1,h.value=null}catch(t){g.add({title:"Failed to save agent",description:t instanceof Error?t.message:"An unexpected error occurred",color:"error",icon:"i-lucide-alert-circle"})}}async function Y(n){try{await j(n)}catch{g.add({title:"Failed to toggle agent",color:"error",icon:"i-lucide-alert-circle"})}}async function Z(n,t){t.stopPropagation();try{await G(n)}catch{g.add({title:"Failed to run agent",color:"error",icon:"i-lucide-alert-circle"})}}async function tt(n,t){t.stopPropagation();try{await W(n),g.add({title:"Agent cancelled",color:"warning",icon:"i-lucide-x-circle"})}catch{g.add({title:"Failed to cancel agent",color:"error",icon:"i-lucide-alert-circle"})}}function et(n){switch(n){case"success":return"success";case"error":return"error";case"budget_exceeded":return"warning";case"running":return"info";case"cancelled":return"neutral";default:return"neutral"}}async function U(){S.value=!0;try{k.value=await q(w.value)}catch{}finally{S.value=!1}}return ut(w,n=>{N.value=n,U()}),dt(async()=>{await P(),U()}),(n,t)=>{const i=_t,l=ft,c=vt,d=yt,p=Rt,x=pt,T=wt,nt=bt,ot=Ct,at=gt,st=kt,it=$t;return a(),m("div",Nt,[o(at,{id:"agents",grow:""},{header:u(()=>[o(c,{title:"Scheduled Agents"},{right:u(()=>[o(l,null,{default:u(()=>[(a(),m(E,null,z(I,e=>o(i,{key:e.value,color:s(w)===e.value?"primary":"neutral",variant:s(w)===e.value?"solid":"ghost",size:"sm",onClick:_=>w.value=e.value},{default:u(()=>[y(f(e.label),1)]),_:2},1032,["color","variant","onClick"])),64))]),_:1}),o(i,{icon:"i-lucide-plus",label:"New Agent",onClick:B})]),_:1})]),body:u(()=>[r("div",Ft,[o(d,{stats:s(k),loading:s(S),variant:"global"},null,8,["stats","loading"]),s(k)&&s(k).dailyRuns.length>0?(a(),A(p,{key:0,data:s(k).dailyRuns,title:"Run Activity"},null,8,["data"])):C("",!0),s(M)?(a(),m("div",Bt,[o(x,{name:"i-lucide-loader-2",class:"w-8 h-8 animate-spin text-neutral-400"})])):s(R).length===0?(a(),m("div",Tt,[o(x,{name:"i-lucide-bot",class:"w-12 h-12 mb-4"}),t[3]||(t[3]=r("p",{class:"text-lg font-medium"}," No agents yet ",-1)),t[4]||(t[4]=r("p",{class:"text-sm"}," Create your first scheduled agent to automate tasks ",-1)),o(i,{class:"mt-4",icon:"i-lucide-plus",label:"Create Agent",onClick:B})])):(a(),m("div",Et,[t[6]||(t[6]=r("h2",{class:"text-lg font-semibold"}," Agents ",-1)),(a(!0),m(E,null,z(s(R),e=>(a(),A(ot,{key:e.id,class:"cursor-pointer transition-all hover:ring-2 hover:ring-primary/50",onClick:_=>K(e)},{default:u(()=>[r("div",zt,[r("div",Dt,[r("div",Mt,[r("h3",Pt,f(e.name),1),F(e.id)?(a(),A(T,{key:0,color:"info",variant:"subtle",size:"sm"},{default:u(()=>[o(x,{name:"i-lucide-loader-2",class:"w-3 h-3 animate-spin mr-1"}),t[5]||(t[5]=y(" Running ",-1))]),_:1})):e.lastStatus?(a(),A(T,{key:1,color:et(e.lastStatus),size:"sm"},{default:u(()=>[y(f(e.lastStatus),1)]),_:2},1032,["color"])):C("",!0)]),e.description?(a(),m("p",Vt,f(e.description),1)):C("",!0),r("div",Ot,[r("span",jt,[o(x,{name:"i-lucide-clock"}),y(" "+f(J(e.schedule)),1)]),e.lastRunAt?(a(),m("span",Gt,[o(x,{name:"i-lucide-activity"}),y(" "+f(Q(e.lastRunAt)),1)])):C("",!0),e.maxBudgetUsd?(a(),m("span",Wt,[o(x,{name:"i-lucide-dollar-sign"}),y(" $"+f(e.maxBudgetUsd)+" limit ",1)])):C("",!0)])]),r("div",qt,[o(nt,{"model-value":e.enabled,onClick:t[0]||(t[0]=$(()=>{},["stop"])),"onUpdate:modelValue":_=>Y(e.id)},null,8,["model-value","onUpdate:modelValue"]),F(e.id)?(a(),A(i,{key:0,icon:"i-lucide-square",variant:"ghost",size:"sm",color:"error",onClick:$(_=>tt(e.id,_),["stop"])},null,8,["onClick"])):(a(),A(i,{key:1,icon:"i-lucide-play",variant:"ghost",size:"sm",disabled:!e.enabled,onClick:$(_=>Z(e.id,_),["stop"])},null,8,["disabled","onClick"])),o(i,{icon:"i-lucide-pencil",variant:"ghost",size:"sm",onClick:$(_=>H(e,_),["stop"])},null,8,["onClick"])])])]),_:2},1032,["onClick"]))),128))]))])]),_:1}),o(it,{open:s(v),"onUpdate:open":t[2]||(t[2]=e=>mt(v)?v.value=e:null)},{title:u(()=>[y(f(s(h)?"Edit Agent":"New Agent"),1)]),body:u(()=>[o(st,{agent:s(h),onSubmit:X,onCancel:t[1]||(t[1]=e=>v.value=!1)},null,8,["agent"])]),_:1},8,["open"])])}}});export{Fe as default};