cognova 0.2.0 → 0.2.3

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 (548) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/-AsXrBBy.js +1 -0
  3. package/.output/public/_nuxt/2W1RPpXM.js +71 -0
  4. package/.output/public/_nuxt/{C4pxqdgg.js → 5UFq_rDn.js} +1 -1
  5. package/.output/public/_nuxt/5Zh-9l8_.js +1 -0
  6. package/.output/public/_nuxt/{DK9jxJ0g.js → 90UksHlj.js} +1 -1
  7. package/.output/public/_nuxt/{9IQmsEjr.js → 9QKmiSP_.js} +1 -1
  8. package/.output/public/_nuxt/{BOj6t-oo.js → ARbTpeGy.js} +1 -1
  9. package/.output/public/_nuxt/{DyRelyfs.js → ApfLnl06.js} +1 -1
  10. package/.output/public/_nuxt/{DznawRFW.js → B-2BuR5g.js} +1 -1
  11. package/.output/public/_nuxt/B4u7Mczo.js +1 -0
  12. package/.output/public/_nuxt/{DAQhmSv4.js → B5dI_yLq.js} +1 -1
  13. package/.output/public/_nuxt/{Bm9LyG4F.js → B6fnZcA6.js} +1 -1
  14. package/.output/public/_nuxt/{9QnH0xQM.js → B7uMSBlN.js} +1 -1
  15. package/.output/public/_nuxt/BBiRyPlN.js +1 -0
  16. package/.output/public/_nuxt/{iBGCpHdw.js → BF7413u4.js} +2 -2
  17. package/.output/public/_nuxt/{4MiwzAAt.js → BGtUoCgi.js} +2 -2
  18. package/.output/public/_nuxt/{CxuZBC8n.js → BHe4VLtR.js} +1 -1
  19. package/.output/public/_nuxt/{D3RiUGdz.js → BIMBp1Tj.js} +1 -1
  20. package/.output/public/_nuxt/{g20UHUCv.js → BIvPdoE3.js} +1 -1
  21. package/.output/public/_nuxt/BKaRtCjP.js +1 -0
  22. package/.output/public/_nuxt/BLmc9T7l.js +1 -0
  23. package/.output/public/_nuxt/BMdnU6BF.js +1 -0
  24. package/.output/public/_nuxt/{CKkC3Ptm.js → BOgdaA_8.js} +1 -1
  25. package/.output/public/_nuxt/{BffWCM73.js → BQZfTrUg.js} +1 -1
  26. package/.output/public/_nuxt/BQnublTW.js +1 -0
  27. package/.output/public/_nuxt/BSsvedap.js +1 -0
  28. package/.output/public/_nuxt/{Ci7UEZQh.js → BVypxKRT.js} +1 -1
  29. package/.output/public/_nuxt/{CYP_MLH8.js → BWqJFnZy.js} +1 -1
  30. package/.output/public/_nuxt/BXxYdXMr.js +1 -0
  31. package/.output/public/_nuxt/{D_3Rq1BS.js → B_17gAr_.js} +1 -1
  32. package/.output/public/_nuxt/B_qzFVK_.js +1 -0
  33. package/.output/public/_nuxt/{BqKFIuRj.js → BbRPwpIX.js} +1 -1
  34. package/.output/public/_nuxt/BhrzKbv9.js +1 -0
  35. package/.output/public/_nuxt/{Cqy_L_ip.js → Bl6LNGlA.js} +1 -1
  36. package/.output/public/_nuxt/{Fukkqjkf.js → BlPToGni.js} +1 -1
  37. package/.output/public/_nuxt/{DHKLCQRG.js → BlwHr46F.js} +1 -1
  38. package/.output/public/_nuxt/{C6aqGHu1.js → BnmwiZbF.js} +1 -1
  39. package/.output/public/_nuxt/BqtxLJaf.js +1 -0
  40. package/.output/public/_nuxt/{eko-0FUm.js → BrEXdify.js} +1 -1
  41. package/.output/public/_nuxt/{D3e44mCL.js → BtNnS4m3.js} +1 -1
  42. package/.output/public/_nuxt/{BCtfQCzC.js → BtVIBBUN.js} +1 -1
  43. package/.output/public/_nuxt/Bw5h4Jaf.js +1 -0
  44. package/.output/public/_nuxt/{FvlxxmNk.js → Bwcpy7gC.js} +2 -2
  45. package/.output/public/_nuxt/{Db2v8O7O.js → C0TUK31m.js} +1 -1
  46. package/.output/public/_nuxt/C1T4GK6c.js +1 -0
  47. package/.output/public/_nuxt/C2ANDZen.js +1 -0
  48. package/.output/public/_nuxt/{CqU2XbzO.js → C2RZSTuy.js} +1 -1
  49. package/.output/public/_nuxt/C3dYlP5x.js +1 -0
  50. package/.output/public/_nuxt/{m5kGCDpI.js → C3sh_tLi.js} +3 -3
  51. package/.output/public/_nuxt/{BjjCvHLT.js → C4zyxZG7.js} +1 -1
  52. package/.output/public/_nuxt/{C3FxIITy.js → C5I-XBZT.js} +1 -1
  53. package/.output/public/_nuxt/{yuf23kh9.js → CC4Goztu.js} +1 -1
  54. package/.output/public/_nuxt/CC77iplr.js +1 -0
  55. package/.output/public/_nuxt/{xuzLdW-o.js → CFyD2NHP.js} +1 -1
  56. package/.output/public/_nuxt/{CsJ9KhQ4.js → CGQDTeaO.js} +1 -1
  57. package/.output/public/_nuxt/{DnjGH3SQ.js → CHpwuMSk.js} +1 -1
  58. package/.output/public/_nuxt/CLzcRUcs.js +1 -0
  59. package/.output/public/_nuxt/CM2phu_3.js +1 -0
  60. package/.output/public/_nuxt/{Cr8ixbr1.js → CQpYRq61.js} +1 -1
  61. package/.output/public/_nuxt/{C0JKNMDO.js → CUN4bYcg.js} +1 -1
  62. package/.output/public/_nuxt/{CmzH6R-N.js → CXoITXft.js} +19 -19
  63. package/.output/public/_nuxt/CYjcQPl-.js +1 -0
  64. package/.output/public/_nuxt/{DGX0tzL8.js → CZ32KfaS.js} +1 -1
  65. package/.output/public/_nuxt/CclZMdca.js +1 -0
  66. package/.output/public/_nuxt/{C69W7k2j.js → CdpT_Vb6.js} +1 -1
  67. package/.output/public/_nuxt/CflRLvFC.js +1 -0
  68. package/.output/public/_nuxt/{gBC9k4Qj.js → CkqNv7sq.js} +2 -2
  69. package/.output/public/_nuxt/ClXDAYjE.js +1 -0
  70. package/.output/public/_nuxt/CrZGoMo_.js +1 -0
  71. package/.output/public/_nuxt/{BZXMQuYP.js → CvJtd2Af.js} +1 -1
  72. package/.output/public/_nuxt/{DKZxeXDQ.js → Cwtd8e-P.js} +1 -1
  73. package/.output/public/_nuxt/{nIU2F7ia.js → Cx44SSNp.js} +3 -3
  74. package/.output/public/_nuxt/{BzOqrmGa.js → CxEVzuCn.js} +3 -3
  75. package/.output/public/_nuxt/{Dy_Cq5LQ.js → CzIMQevQ.js} +1 -1
  76. package/.output/public/_nuxt/{D6t3dcTl.js → D0P9llU7.js} +1 -1
  77. package/.output/public/_nuxt/{JJ3634gV.js → D1DYuOOm.js} +1 -1
  78. package/.output/public/_nuxt/{BAIz-dEB.js → D1dDc8Vw.js} +1 -1
  79. package/.output/public/_nuxt/{DSRrg8JT.js → D1r0uqf3.js} +1 -1
  80. package/.output/public/_nuxt/{CNnJrDvu.js → D3a8R1T6.js} +1 -1
  81. package/.output/public/_nuxt/{B1X4Bzcy.js → D5EZbuub.js} +1 -1
  82. package/.output/public/_nuxt/D9V13KTK.js +1 -0
  83. package/.output/public/_nuxt/DAE2hbP7.js +1 -0
  84. package/.output/public/_nuxt/{Cvp7FI3T.js → DAIbdyS6.js} +1 -1
  85. package/.output/public/_nuxt/{EuOqK1A6.js → DAvlXjt0.js} +1 -1
  86. package/.output/public/_nuxt/DBKzwexZ.js +1 -0
  87. package/.output/public/_nuxt/{wCGVE8_e.js → DEATxnaF.js} +1 -1
  88. package/.output/public/_nuxt/{cABRLVee.js → DFg8PvHV.js} +1 -1
  89. package/.output/public/_nuxt/DM4MyqI-.js +1 -0
  90. package/.output/public/_nuxt/{Cdt3I3Go.js → DNE7kw9s.js} +1 -1
  91. package/.output/public/_nuxt/DO0oG4fG.js +1 -0
  92. package/.output/public/_nuxt/{B6S_ob86.js → DPFugPaB.js} +1 -1
  93. package/.output/public/_nuxt/{DJjDvbZE.js → DQlXU6_H.js} +1 -1
  94. package/.output/public/_nuxt/DQvuQpwh.js +1 -0
  95. package/.output/public/_nuxt/{sf57orEk.js → DRlG_bnX.js} +1 -1
  96. package/.output/public/_nuxt/{C6RC3lA1.js → DSQj-oMk.js} +1 -1
  97. package/.output/public/_nuxt/{CeIVm4A3.js → DU6ewLkE.js} +1 -1
  98. package/.output/public/_nuxt/{Cp2MA0cm.js → DWhzQg7B.js} +1 -1
  99. package/.output/public/_nuxt/{DJMS2og1.js → D_vK6VPK.js} +1 -1
  100. package/.output/public/_nuxt/{CihWZmJe.js → DaBp0Gba.js} +2 -2
  101. package/.output/public/_nuxt/DaH2FbAy.js +1 -0
  102. package/.output/public/_nuxt/{CtYFj7k1.js → DaJo0CeV.js} +1 -1
  103. package/.output/public/_nuxt/DauLdT7p.js +1 -0
  104. package/.output/public/_nuxt/{DG-T44jj.js → DdPA4eTX.js} +1 -1
  105. package/.output/public/_nuxt/{YuTZB7sD.js → DeAGWdWK.js} +1 -1
  106. package/.output/public/_nuxt/{CitkKxhw.js → DfF1qofg.js} +1 -1
  107. package/.output/public/_nuxt/{Daz4MeL6.js → DiGBA-aA.js} +1 -1
  108. package/.output/public/_nuxt/DiJxF69i.js +1 -0
  109. package/.output/public/_nuxt/{DIoI0uJm.js → DkBIU-1F.js} +1 -1
  110. package/.output/public/_nuxt/DmAM6bZ0.js +1 -0
  111. package/.output/public/_nuxt/DmeAKr3J.js +1 -0
  112. package/.output/public/_nuxt/DmmTnMzZ.js +1 -0
  113. package/.output/public/_nuxt/{Lwdv_RKd.js → DqsUSndS.js} +1 -1
  114. package/.output/public/_nuxt/Dvw-hR3Y.js +1 -0
  115. package/.output/public/_nuxt/{CVgTJeSq.js → Dz6sfh81.js} +1 -1
  116. package/.output/public/_nuxt/{BYjadNrw.js → FNhYm5FX.js} +1 -1
  117. package/.output/public/_nuxt/{Nb2jBtYT.js → HOeKUnra.js} +1 -1
  118. package/.output/public/_nuxt/{CtchsY6e.js → IR1jkN7B.js} +1 -1
  119. package/.output/public/_nuxt/{DCzfkCGa.js → MpTk6K7N.js} +1 -1
  120. package/.output/public/_nuxt/NZ7Wz6LP.js +1 -0
  121. package/.output/public/_nuxt/{DfQu3kEw.js → PqWbiAD2.js} +1 -1
  122. package/.output/public/_nuxt/{Jez9DHn7.js → Tu4FhMRc.js} +1 -1
  123. package/.output/public/_nuxt/{B3y_Qqox.js → UKPXYG4z.js} +1 -1
  124. package/.output/public/_nuxt/{BlAZO7nq.js → UO2Y9Nve.js} +1 -1
  125. package/.output/public/_nuxt/{KKK6HVeG.js → XHiJSquP.js} +1 -1
  126. package/.output/public/_nuxt/YGWAImQo.js +1 -0
  127. package/.output/public/_nuxt/{ghuJ76mD.js → ZR87XvwB.js} +1 -1
  128. package/.output/public/_nuxt/{yNrp2XvX.js → _E89BQAO.js} +1 -1
  129. package/.output/public/_nuxt/{C_BdYLzz.js → aiXk7zRt.js} +1 -1
  130. package/.output/public/_nuxt/builds/latest.json +1 -1
  131. package/.output/public/_nuxt/builds/meta/91727fcc-bf7f-407f-9b1e-092017fcfee0.json +1 -0
  132. package/.output/public/_nuxt/cL7whuPe.js +1 -0
  133. package/.output/public/_nuxt/{BasgsT_S.js → ct6_k5IW.js} +1 -1
  134. package/.output/public/_nuxt/entry._7ZkP07A.css +1 -0
  135. package/.output/public/_nuxt/{DTDgHTuh.js → fEUQvmn8.js} +2 -2
  136. package/.output/public/_nuxt/{FNC8XZTk.js → gGlaVUMD.js} +1 -1
  137. package/.output/public/_nuxt/gjmGkVlL.js +1 -0
  138. package/.output/public/_nuxt/{IRSbVPIu.js → m5001Uvl.js} +1 -1
  139. package/.output/public/_nuxt/{_CYZi8HN.js → mQkFCz_M.js} +1 -1
  140. package/.output/public/_nuxt/{BxXOsXrM.js → p9l1LjVc.js} +10 -10
  141. package/.output/public/_nuxt/{BsEZoHd1.js → qR_K5W8V.js} +1 -1
  142. package/.output/public/_nuxt/{BrNqhp1a.js → t_9QQ4MF.js} +7 -7
  143. package/.output/public/_nuxt/{pcUI-zuY.js → uc4c4mfb.js} +1 -1
  144. package/.output/public/_nuxt/{usage.vakN1lvi.css → usage.BDeyCZwW.css} +1 -1
  145. package/.output/public/_nuxt/wPSLEMBw.js +1 -0
  146. package/.output/public/_nuxt/xKRwul0f.js +1 -0
  147. package/.output/public/_nuxt/{BWhMnjID.js → xgpiGSxb.js} +1 -1
  148. package/.output/public/_nuxt/xxnk7j0F.js +1 -0
  149. package/.output/public/favicon.svg +1 -0
  150. package/.output/server/chunks/build/A-BWukSPjS.mjs +1 -0
  151. package/.output/server/chunks/build/Accordion-BaJYea6e.mjs +1 -0
  152. package/.output/server/chunks/build/AccordionItem-DdG2zgcN.mjs +1 -0
  153. package/.output/server/chunks/build/Badge-BrU9UkCv.mjs +1 -0
  154. package/.output/server/chunks/build/Blockquote-DND8wTkU.mjs +1 -0
  155. package/.output/server/chunks/build/Callout-1halpaEg.mjs +1 -0
  156. package/.output/server/chunks/build/Card-BHCSDKDt.mjs +1 -0
  157. package/.output/server/chunks/build/CardGroup-BOuJcNGp.mjs +1 -0
  158. package/.output/server/chunks/build/Caution-BP3y-TcC.mjs +1 -0
  159. package/.output/server/chunks/build/Code-B1xkAS5a.mjs +1 -0
  160. package/.output/server/chunks/build/CodeCollapse-BIhaNa22.mjs +1 -0
  161. package/.output/server/chunks/build/CodeGroup-BviYyCuo.mjs +1 -0
  162. package/.output/server/chunks/build/CodeIcon-CWD5HcV7.mjs +2 -1
  163. package/.output/server/chunks/build/CodePreview-D8PsCQ6m.mjs +1 -0
  164. package/.output/server/chunks/build/CodeTree-BUTLupmL.mjs +1 -0
  165. package/.output/server/chunks/build/Collapsible-BIvXNaSq.mjs +1 -0
  166. package/.output/server/chunks/build/DropdownMenu-BBrV9nXz.mjs +1 -1
  167. package/.output/server/chunks/build/EditorToolbar-DIfb5arC.mjs +1 -1
  168. package/.output/server/chunks/build/Em-DsIz_BnD.mjs +1 -0
  169. package/.output/server/chunks/build/Field-cwwmSQDT.mjs +1 -0
  170. package/.output/server/chunks/build/FieldGroup-CAIpQv8s.mjs +1 -0
  171. package/.output/server/chunks/build/H1-BbFNsPyP.mjs +1 -0
  172. package/.output/server/chunks/build/H2-vHTl_pWr.mjs +1 -0
  173. package/.output/server/chunks/build/H3-7eTcfO3s.mjs +1 -0
  174. package/.output/server/chunks/build/H4-C89p_PKO.mjs +1 -0
  175. package/.output/server/chunks/build/Hr-Bm8RlL3O.mjs +1 -0
  176. package/.output/server/chunks/build/Icon-Dp9iy0BI.mjs +1 -0
  177. package/.output/server/chunks/build/Img-CWLmvN1t.mjs +2 -1
  178. package/.output/server/chunks/build/Kbd-CQG6I_Ch.mjs +1 -0
  179. package/.output/server/chunks/build/Li-Bw1QUaGv.mjs +1 -0
  180. package/.output/server/chunks/build/MDC-Dx0YPDhe.mjs +1 -1
  181. package/.output/server/chunks/build/Note-CHkjm9jm.mjs +1 -0
  182. package/.output/server/chunks/build/Ol-D-fPnfFM.mjs +1 -0
  183. package/.output/server/chunks/build/P-B5YI1V9y.mjs +1 -0
  184. package/.output/server/chunks/build/Pre-ChiJcf3C.mjs +1 -0
  185. package/.output/server/chunks/build/ProseH5-DahJyv8h.mjs +1 -0
  186. package/.output/server/chunks/build/ProseH6-C4Is5h6c.mjs +1 -0
  187. package/.output/server/chunks/build/Select-BB1oLrCD.mjs +1 -1
  188. package/.output/server/chunks/build/SelectMenu-DPssg6zD.mjs +1 -1
  189. package/.output/server/chunks/build/Steps-BZpvXfzb.mjs +1 -0
  190. package/.output/server/chunks/build/Strong-DXJqOWL3.mjs +1 -0
  191. package/.output/server/chunks/build/Table-BSrLZ7dt.mjs +1 -0
  192. package/.output/server/chunks/build/Table-DCwTlhCj.mjs +1 -1
  193. package/.output/server/chunks/build/Tabs-Dk3nvOFF.mjs +1 -0
  194. package/.output/server/chunks/build/TabsItem-CDhyuBtJ.mjs +1 -0
  195. package/.output/server/chunks/build/Tbody-CjMT5oH-.mjs +1 -0
  196. package/.output/server/chunks/build/Td-ZBVaEjFN.mjs +1 -0
  197. package/.output/server/chunks/build/Th-D317icbd.mjs +1 -0
  198. package/.output/server/chunks/build/Thead-Ca_ZESTK.mjs +1 -0
  199. package/.output/server/chunks/build/Tip-CP3oTARR.mjs +1 -0
  200. package/.output/server/chunks/build/Tooltip-TRyl6dje.mjs +1 -1
  201. package/.output/server/chunks/build/Tr-6jI8j9gD.mjs +1 -0
  202. package/.output/server/chunks/build/{docs-Dk2JnYq3.mjs → Tree-DUhXKd8y.mjs} +46 -2235
  203. package/.output/server/chunks/build/Tree-DUhXKd8y.mjs.map +1 -0
  204. package/.output/server/chunks/build/Ul-BUGj_CPb.mjs +1 -0
  205. package/.output/server/chunks/build/Warning-BJ8G6cxC.mjs +1 -0
  206. package/.output/server/chunks/build/_id_-DN00UDdO.mjs +1 -0
  207. package/.output/server/chunks/build/_id_-DN00UDdO.mjs.map +1 -1
  208. package/.output/server/chunks/build/_name_-BnS_KEfX.mjs +1592 -0
  209. package/.output/server/chunks/build/_name_-BnS_KEfX.mjs.map +1 -0
  210. package/.output/server/chunks/build/{_uuid_-0UgdUhfY.mjs → _uuid_-DfJaumTE.mjs} +5 -4
  211. package/.output/server/chunks/build/{_uuid_-0UgdUhfY.mjs.map → _uuid_-DfJaumTE.mjs.map} +1 -1
  212. package/.output/server/chunks/build/auth-BGPNH2QJ.mjs +20 -0
  213. package/.output/server/chunks/build/auth-BGPNH2QJ.mjs.map +1 -0
  214. package/.output/server/chunks/build/auth-CvD7MqKW.mjs +1 -0
  215. package/.output/server/chunks/build/auth-CvD7MqKW.mjs.map +1 -1
  216. package/.output/server/chunks/build/chat-CZMiB68R.mjs +1 -0
  217. package/.output/server/chunks/build/chat-CZMiB68R.mjs.map +1 -1
  218. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  219. package/.output/server/chunks/build/cookie-C_iulBi6.mjs +1 -1
  220. package/.output/server/chunks/build/{dashboard-YEscLBQN.mjs → dashboard-CLk1NlbR.mjs} +15 -4
  221. package/.output/server/chunks/build/dashboard-CLk1NlbR.mjs.map +1 -0
  222. package/.output/server/chunks/build/{dashboard-CpMVYnDV.mjs → dashboard-CiVTAZuF.mjs} +12 -4
  223. package/.output/server/chunks/build/{dashboard-CpMVYnDV.mjs.map → dashboard-CiVTAZuF.mjs.map} +1 -1
  224. package/.output/server/chunks/build/docs-ChGwOPg5.mjs +2204 -0
  225. package/.output/server/chunks/build/docs-ChGwOPg5.mjs.map +1 -0
  226. package/.output/server/chunks/build/error-404-BzbcNcdU.mjs +1 -0
  227. package/.output/server/chunks/build/error-500-uCDjGRW8.mjs +1 -0
  228. package/.output/server/chunks/build/fetch-BB7Qzkwe.mjs +1 -1
  229. package/.output/server/chunks/build/{hooks-DP8WoUPS.mjs → hooks-D328DcO6.mjs} +3 -2
  230. package/.output/server/chunks/build/hooks-D328DcO6.mjs.map +1 -0
  231. package/.output/server/chunks/build/{index-DVx-QlhP.mjs → index-Byt-3Yq6.mjs} +3 -2
  232. package/.output/server/chunks/build/{index-DVx-QlhP.mjs.map → index-Byt-3Yq6.mjs.map} +1 -1
  233. package/.output/server/chunks/build/{index-Ba_bPJgk.mjs → index-C9PuieXh.mjs} +3 -2
  234. package/.output/server/chunks/build/index-C9PuieXh.mjs.map +1 -0
  235. package/.output/server/chunks/build/index-C_LcBBgO.mjs +1508 -0
  236. package/.output/server/chunks/build/index-C_LcBBgO.mjs.map +1 -0
  237. package/.output/server/chunks/build/index-CxDxc9fm.mjs +1 -1
  238. package/.output/server/chunks/build/index-DzdvIi8V.mjs +1 -0
  239. package/.output/server/chunks/build/library-CbWcF5wT.mjs +601 -0
  240. package/.output/server/chunks/build/library-CbWcF5wT.mjs.map +1 -0
  241. package/.output/server/chunks/build/{login-BAysbpyX.mjs → login-DnnElTl2.mjs} +15 -7
  242. package/.output/server/chunks/build/{login-BAysbpyX.mjs.map → login-DnnElTl2.mjs.map} +1 -1
  243. package/.output/server/chunks/build/memories-BqA719O1.mjs +1 -0
  244. package/.output/server/chunks/build/memories-BqA719O1.mjs.map +1 -1
  245. package/.output/server/chunks/build/server.mjs +62 -34
  246. package/.output/server/chunks/build/server.mjs.map +1 -1
  247. package/.output/server/chunks/build/settings-DdkKCJ00.mjs +1 -0
  248. package/.output/server/chunks/build/settings-DdkKCJ00.mjs.map +1 -1
  249. package/.output/server/chunks/build/styles.mjs +2 -2
  250. package/.output/server/chunks/build/{tasks-DiOi1HG_.mjs → tasks-DnAFqbtt.mjs} +3 -2
  251. package/.output/server/chunks/build/tasks-DnAFqbtt.mjs.map +1 -0
  252. package/.output/server/chunks/build/{usage-H_mcd_fz.mjs → usage-CSrBh4Or.mjs} +159 -44
  253. package/.output/server/chunks/build/{usage-H_mcd_fz.mjs.map → usage-CSrBh4Or.mjs.map} +1 -1
  254. package/.output/server/chunks/build/{usePreferences-CzC8fRzd.mjs → usePreferences-DH1QjxOj.mjs} +7 -1
  255. package/.output/server/chunks/build/usePreferences-DH1QjxOj.mjs.map +1 -0
  256. package/.output/server/chunks/build/{view-Dc8mvzCB.mjs → view-n2sYa4Zh.mjs} +4 -3
  257. package/.output/server/chunks/build/{view-Dc8mvzCB.mjs.map → view-n2sYa4Zh.mjs.map} +1 -1
  258. package/.output/server/chunks/build/virtual_nuxt__Users_tony_Documents_GitHub_second-brain_node_modules_.cache_nuxt_.nuxt_mdc-imports-PtwWlZ2H.mjs +1 -0
  259. package/.output/server/chunks/nitro/nitro.mjs +1247 -824
  260. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  261. package/.output/server/chunks/routes/_ws/chat.mjs +2 -1
  262. package/.output/server/chunks/routes/_ws/chat.mjs.map +1 -1
  263. package/.output/server/chunks/routes/api/agents/_id/cancel.post.mjs +1 -0
  264. package/.output/server/chunks/routes/api/agents/_id/cancel.post.mjs.map +1 -1
  265. package/.output/server/chunks/routes/api/agents/_id/run.post.mjs +1 -0
  266. package/.output/server/chunks/routes/api/agents/_id/run.post.mjs.map +1 -1
  267. package/.output/server/chunks/routes/api/agents/_id/runs.get.mjs +1 -0
  268. package/.output/server/chunks/routes/api/agents/_id/runs.get.mjs.map +1 -1
  269. package/.output/server/chunks/routes/api/agents/_id/stats.get.mjs +1 -0
  270. package/.output/server/chunks/routes/api/agents/_id/stats.get.mjs.map +1 -1
  271. package/.output/server/chunks/routes/api/agents/_id_.delete.mjs +1 -0
  272. package/.output/server/chunks/routes/api/agents/_id_.delete.mjs.map +1 -1
  273. package/.output/server/chunks/routes/api/agents/_id_.get.mjs +1 -0
  274. package/.output/server/chunks/routes/api/agents/_id_.get.mjs.map +1 -1
  275. package/.output/server/chunks/routes/api/agents/_id_.patch.mjs +1 -0
  276. package/.output/server/chunks/routes/api/agents/_id_.patch.mjs.map +1 -1
  277. package/.output/server/chunks/routes/api/agents/stats.get.mjs +1 -0
  278. package/.output/server/chunks/routes/api/agents/stats.get.mjs.map +1 -1
  279. package/.output/server/chunks/routes/api/auth/_...all_.mjs +1 -0
  280. package/.output/server/chunks/routes/api/auth/_...all_.mjs.map +1 -1
  281. package/.output/server/chunks/routes/api/conversations/_id_.delete.mjs +1 -0
  282. package/.output/server/chunks/routes/api/conversations/_id_.delete.mjs.map +1 -1
  283. package/.output/server/chunks/routes/api/conversations/_id_.get.mjs +1 -0
  284. package/.output/server/chunks/routes/api/conversations/_id_.get.mjs.map +1 -1
  285. package/.output/server/chunks/routes/api/dashboard/overview.get.mjs +1 -0
  286. package/.output/server/chunks/routes/api/dashboard/overview.get.mjs.map +1 -1
  287. package/.output/server/chunks/routes/api/documents/_id/public.get.mjs +1 -0
  288. package/.output/server/chunks/routes/api/documents/_id/public.get.mjs.map +1 -1
  289. package/.output/server/chunks/routes/api/documents/_id/restore.post.mjs +1 -0
  290. package/.output/server/chunks/routes/api/documents/_id/restore.post.mjs.map +1 -1
  291. package/.output/server/chunks/routes/api/documents/by-path.post.mjs +1 -0
  292. package/.output/server/chunks/routes/api/documents/by-path.post.mjs.map +1 -1
  293. package/.output/server/chunks/routes/api/documents/index.delete.mjs +1 -0
  294. package/.output/server/chunks/routes/api/documents/index.delete.mjs.map +1 -1
  295. package/.output/server/chunks/routes/api/documents/index.put.mjs +1 -0
  296. package/.output/server/chunks/routes/api/documents/index.put.mjs.map +1 -1
  297. package/.output/server/chunks/routes/api/fs/delete.post.mjs +1 -0
  298. package/.output/server/chunks/routes/api/fs/delete.post.mjs.map +1 -1
  299. package/.output/server/chunks/routes/api/fs/list.get.mjs +1 -0
  300. package/.output/server/chunks/routes/api/fs/list.get.mjs.map +1 -1
  301. package/.output/server/chunks/routes/api/fs/mkdir.post.mjs +1 -0
  302. package/.output/server/chunks/routes/api/fs/mkdir.post.mjs.map +1 -1
  303. package/.output/server/chunks/routes/api/fs/move.post.mjs +1 -0
  304. package/.output/server/chunks/routes/api/fs/move.post.mjs.map +1 -1
  305. package/.output/server/chunks/routes/api/fs/read.post.mjs +1 -0
  306. package/.output/server/chunks/routes/api/fs/read.post.mjs.map +1 -1
  307. package/.output/server/chunks/routes/api/fs/rename.post.mjs +1 -0
  308. package/.output/server/chunks/routes/api/fs/rename.post.mjs.map +1 -1
  309. package/.output/server/chunks/routes/api/fs/write.post.mjs +1 -0
  310. package/.output/server/chunks/routes/api/fs/write.post.mjs.map +1 -1
  311. package/.output/server/chunks/routes/api/health.get.mjs +1 -0
  312. package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
  313. package/.output/server/chunks/routes/api/home.get.mjs +1 -0
  314. package/.output/server/chunks/routes/api/home.get.mjs.map +1 -1
  315. package/.output/server/chunks/routes/api/hooks/index.get.mjs +1 -0
  316. package/.output/server/chunks/routes/api/hooks/index.get.mjs.map +1 -1
  317. package/.output/server/chunks/routes/api/hooks/index.post.mjs +1 -0
  318. package/.output/server/chunks/routes/api/hooks/index.post.mjs.map +1 -1
  319. package/.output/server/chunks/routes/api/hooks/stats.get.mjs +1 -0
  320. package/.output/server/chunks/routes/api/hooks/stats.get.mjs.map +1 -1
  321. package/.output/server/chunks/routes/api/index.get.mjs +1 -0
  322. package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
  323. package/.output/server/chunks/routes/api/index.get2.mjs +1 -0
  324. package/.output/server/chunks/routes/api/index.get2.mjs.map +1 -1
  325. package/.output/server/chunks/routes/api/index.get3.mjs +1 -0
  326. package/.output/server/chunks/routes/api/index.get3.mjs.map +1 -1
  327. package/.output/server/chunks/routes/api/index.get4.mjs +1 -0
  328. package/.output/server/chunks/routes/api/index.get4.mjs.map +1 -1
  329. package/.output/server/chunks/routes/api/index.get5.mjs +1 -0
  330. package/.output/server/chunks/routes/api/index.get5.mjs.map +1 -1
  331. package/.output/server/chunks/routes/api/index.get6.mjs +1 -0
  332. package/.output/server/chunks/routes/api/index.get6.mjs.map +1 -1
  333. package/.output/server/chunks/routes/api/index.get7.mjs +40 -38
  334. package/.output/server/chunks/routes/api/index.get7.mjs.map +1 -1
  335. package/.output/server/chunks/routes/api/index.get8.mjs +33 -38
  336. package/.output/server/chunks/routes/api/index.get8.mjs.map +1 -1
  337. package/.output/server/chunks/routes/api/index.get9.mjs +83 -0
  338. package/.output/server/chunks/routes/api/index.get9.mjs.map +1 -0
  339. package/.output/server/chunks/routes/api/index.post.mjs +1 -0
  340. package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
  341. package/.output/server/chunks/routes/api/index.post2.mjs +1 -0
  342. package/.output/server/chunks/routes/api/index.post2.mjs.map +1 -1
  343. package/.output/server/chunks/routes/api/index.post3.mjs +1 -0
  344. package/.output/server/chunks/routes/api/index.post3.mjs.map +1 -1
  345. package/.output/server/chunks/routes/api/index.post4.mjs +1 -0
  346. package/.output/server/chunks/routes/api/index.post4.mjs.map +1 -1
  347. package/.output/server/chunks/routes/api/index.put.mjs +1 -0
  348. package/.output/server/chunks/routes/api/index.put.mjs.map +1 -1
  349. package/.output/server/chunks/routes/api/memory/_id_.delete.mjs +1 -0
  350. package/.output/server/chunks/routes/api/memory/_id_.delete.mjs.map +1 -1
  351. package/.output/server/chunks/routes/api/memory/context.get.mjs +1 -0
  352. package/.output/server/chunks/routes/api/memory/context.get.mjs.map +1 -1
  353. package/.output/server/chunks/routes/api/memory/extract.post.mjs +2 -1
  354. package/.output/server/chunks/routes/api/memory/extract.post.mjs.map +1 -1
  355. package/.output/server/chunks/routes/api/memory/search.get.mjs +1 -0
  356. package/.output/server/chunks/routes/api/memory/search.get.mjs.map +1 -1
  357. package/.output/server/chunks/routes/api/memory/store.post.mjs +1 -0
  358. package/.output/server/chunks/routes/api/memory/store.post.mjs.map +1 -1
  359. package/.output/server/chunks/routes/api/projects/index.delete.mjs +1 -0
  360. package/.output/server/chunks/routes/api/projects/index.delete.mjs.map +1 -1
  361. package/.output/server/chunks/routes/api/projects/index.get.mjs +1 -0
  362. package/.output/server/chunks/routes/api/projects/index.get.mjs.map +1 -1
  363. package/.output/server/chunks/routes/api/projects/index.put.mjs +1 -0
  364. package/.output/server/chunks/routes/api/projects/index.put.mjs.map +1 -1
  365. package/.output/server/chunks/routes/api/secrets/_key_.delete.mjs +1 -0
  366. package/.output/server/chunks/routes/api/secrets/_key_.delete.mjs.map +1 -1
  367. package/.output/server/chunks/routes/api/secrets/_key_.get.mjs +1 -0
  368. package/.output/server/chunks/routes/api/secrets/_key_.get.mjs.map +1 -1
  369. package/.output/server/chunks/routes/api/secrets/_key_.put.mjs +1 -0
  370. package/.output/server/chunks/routes/api/secrets/_key_.put.mjs.map +1 -1
  371. package/.output/server/chunks/routes/api/skills/_name/export.get.mjs +72 -0
  372. package/.output/server/chunks/routes/api/skills/_name/export.get.mjs.map +1 -0
  373. package/.output/server/chunks/routes/api/skills/_name/files/create.post.mjs +73 -0
  374. package/.output/server/chunks/routes/api/skills/_name/files/create.post.mjs.map +1 -0
  375. package/.output/server/chunks/routes/api/skills/_name/files/delete.post.mjs +71 -0
  376. package/.output/server/chunks/routes/api/skills/_name/files/delete.post.mjs.map +1 -0
  377. package/.output/server/chunks/routes/api/skills/_name/files/read.post.mjs +69 -0
  378. package/.output/server/chunks/routes/api/skills/_name/files/read.post.mjs.map +1 -0
  379. package/.output/server/chunks/routes/api/skills/_name/files/write.post.mjs +69 -0
  380. package/.output/server/chunks/routes/api/skills/_name/files/write.post.mjs.map +1 -0
  381. package/.output/server/chunks/routes/api/skills/_name/index.get.mjs +60 -0
  382. package/.output/server/chunks/routes/api/skills/_name/index.get.mjs.map +1 -0
  383. package/.output/server/chunks/routes/api/skills/_name/rename.post.mjs +87 -0
  384. package/.output/server/chunks/routes/api/skills/_name/rename.post.mjs.map +1 -0
  385. package/.output/server/chunks/routes/api/skills/_name/toggle.post.mjs +62 -0
  386. package/.output/server/chunks/routes/api/skills/_name/toggle.post.mjs.map +1 -0
  387. package/.output/server/chunks/routes/api/skills/create.post.mjs +79 -0
  388. package/.output/server/chunks/routes/api/skills/create.post.mjs.map +1 -0
  389. package/.output/server/chunks/routes/api/skills/generate.post.mjs +143 -0
  390. package/.output/server/chunks/routes/api/skills/generate.post.mjs.map +1 -0
  391. package/.output/server/chunks/routes/api/skills/import.post.mjs +96 -0
  392. package/.output/server/chunks/routes/api/skills/import.post.mjs.map +1 -0
  393. package/.output/server/chunks/routes/api/skills/index.get.mjs +82 -0
  394. package/.output/server/chunks/routes/api/skills/index.get.mjs.map +1 -0
  395. package/.output/server/chunks/routes/api/skills/index.get2.mjs +83 -0
  396. package/.output/server/chunks/routes/api/skills/index.get2.mjs.map +1 -0
  397. package/.output/server/chunks/routes/api/skills/library/check-updates.get.mjs +72 -0
  398. package/.output/server/chunks/routes/api/skills/library/check-updates.get.mjs.map +1 -0
  399. package/.output/server/chunks/routes/api/skills/library/install.post.mjs +90 -0
  400. package/.output/server/chunks/routes/api/skills/library/install.post.mjs.map +1 -0
  401. package/.output/server/chunks/routes/api/tasks/_id/restore.post.mjs +1 -0
  402. package/.output/server/chunks/routes/api/tasks/_id/restore.post.mjs.map +1 -1
  403. package/.output/server/chunks/routes/api/tasks/index.delete.mjs +1 -0
  404. package/.output/server/chunks/routes/api/tasks/index.delete.mjs.map +1 -1
  405. package/.output/server/chunks/routes/api/tasks/index.get.mjs +1 -0
  406. package/.output/server/chunks/routes/api/tasks/index.get.mjs.map +1 -1
  407. package/.output/server/chunks/routes/api/tasks/index.put.mjs +1 -0
  408. package/.output/server/chunks/routes/api/tasks/index.put.mjs.map +1 -1
  409. package/.output/server/chunks/routes/api/tasks/tags.get.mjs +1 -0
  410. package/.output/server/chunks/routes/api/tasks/tags.get.mjs.map +1 -1
  411. package/.output/server/chunks/routes/api/usage/stats.get.mjs +4 -1
  412. package/.output/server/chunks/routes/api/usage/stats.get.mjs.map +1 -1
  413. package/.output/server/chunks/routes/api/user/email.patch.mjs +2 -1
  414. package/.output/server/chunks/routes/api/user/email.patch.mjs.map +1 -1
  415. package/.output/server/chunks/routes/notifications.mjs +2 -1
  416. package/.output/server/chunks/routes/notifications.mjs.map +1 -1
  417. package/.output/server/chunks/routes/renderer.mjs +2 -2
  418. package/.output/server/chunks/routes/terminal.mjs +2 -1
  419. package/.output/server/chunks/routes/terminal.mjs.map +1 -1
  420. package/.output/server/index.mjs +2 -1
  421. package/.output/server/index.mjs.map +1 -1
  422. package/.output/server/node_modules/adm-zip/adm-zip.js +949 -0
  423. package/.output/server/node_modules/adm-zip/headers/entryHeader.js +374 -0
  424. package/.output/server/node_modules/adm-zip/headers/index.js +2 -0
  425. package/.output/server/node_modules/adm-zip/headers/mainHeader.js +130 -0
  426. package/.output/server/node_modules/adm-zip/methods/deflater.js +33 -0
  427. package/.output/server/node_modules/adm-zip/methods/index.js +3 -0
  428. package/.output/server/node_modules/adm-zip/methods/inflater.js +34 -0
  429. package/.output/server/node_modules/adm-zip/methods/zipcrypto.js +175 -0
  430. package/.output/server/node_modules/adm-zip/package.json +49 -0
  431. package/.output/server/node_modules/adm-zip/util/constants.js +142 -0
  432. package/.output/server/node_modules/adm-zip/util/decoder.js +5 -0
  433. package/.output/server/node_modules/adm-zip/util/errors.js +63 -0
  434. package/.output/server/node_modules/adm-zip/util/fattr.js +76 -0
  435. package/.output/server/node_modules/adm-zip/util/index.js +5 -0
  436. package/.output/server/node_modules/adm-zip/util/utils.js +336 -0
  437. package/.output/server/node_modules/adm-zip/zipEntry.js +405 -0
  438. package/.output/server/node_modules/adm-zip/zipFile.js +446 -0
  439. package/.output/server/package.json +2 -1
  440. package/Claude/CLAUDE.md +9 -4
  441. package/Claude/skills/environment/SKILL.md +6 -0
  442. package/Claude/skills/memory/SKILL.md +6 -0
  443. package/Claude/skills/project/SKILL.md +6 -0
  444. package/Claude/skills/secret/SKILL.md +85 -0
  445. package/Claude/skills/secret/secret.py +146 -0
  446. package/Claude/skills/skill-creator/SKILL.md +30 -0
  447. package/Claude/skills/task/SKILL.md +6 -0
  448. package/README.md +3 -0
  449. package/app/app.vue +1 -1
  450. package/app/components/dashboard/StatCards.vue +21 -2
  451. package/app/components/skills/Card.vue +82 -0
  452. package/app/components/skills/CreateModal.vue +156 -0
  453. package/app/components/skills/Editor.vue +135 -0
  454. package/app/components/skills/FileTree.vue +336 -0
  455. package/app/components/skills/LibraryCard.vue +122 -0
  456. package/app/components/skills/RenameModal.vue +84 -0
  457. package/app/components/usage/UsageCostChart.client.vue +59 -23
  458. package/app/components/usage/UsageCostChart.server.vue +1 -0
  459. package/app/components/usage/UsageSourceDonut.client.vue +17 -5
  460. package/app/components/usage/UsageSourceDonut.server.vue +1 -0
  461. package/app/components/usage/UsageTopConsumers.vue +13 -3
  462. package/app/composables/usePreferences.ts +9 -1
  463. package/app/layouts/auth.vue +0 -10
  464. package/app/layouts/dashboard.vue +7 -0
  465. package/app/pages/login.vue +18 -8
  466. package/app/pages/skills/[name].vue +210 -0
  467. package/app/pages/skills/index.vue +204 -0
  468. package/app/pages/skills/library.vue +209 -0
  469. package/app/pages/usage.vue +43 -16
  470. package/dist/cli/index.js +35 -36
  471. package/nuxt.config.ts +9 -0
  472. package/package.json +5 -3
  473. package/server/api/skills/[name]/export.get.ts +45 -0
  474. package/server/api/skills/[name]/files/create.post.ts +45 -0
  475. package/server/api/skills/[name]/files/delete.post.ts +45 -0
  476. package/server/api/skills/[name]/files/index.get.ts +28 -0
  477. package/server/api/skills/[name]/files/read.post.ts +41 -0
  478. package/server/api/skills/[name]/files/write.post.ts +42 -0
  479. package/server/api/skills/[name]/index.get.ts +54 -0
  480. package/server/api/skills/[name]/rename.post.ts +64 -0
  481. package/server/api/skills/[name]/toggle.post.ts +32 -0
  482. package/server/api/skills/create.post.ts +51 -0
  483. package/server/api/skills/generate.post.ts +126 -0
  484. package/server/api/skills/import.post.ts +87 -0
  485. package/server/api/skills/index.get.ts +57 -0
  486. package/server/api/skills/library/check-updates.get.ts +46 -0
  487. package/server/api/skills/library/index.get.ts +56 -0
  488. package/server/api/skills/library/install.post.ts +73 -0
  489. package/server/api/usage/stats.get.ts +4 -2
  490. package/server/db/schema.ts +17 -0
  491. package/server/drizzle/migrations/0012_good_deadpool.sql +12 -0
  492. package/server/drizzle/migrations/0013_swift_snowbird.sql +1 -0
  493. package/server/drizzle/migrations/meta/0012_snapshot.json +1713 -0
  494. package/server/drizzle/migrations/meta/0013_snapshot.json +1720 -0
  495. package/server/drizzle/migrations/meta/_journal.json +14 -0
  496. package/server/middleware/auth.ts +0 -1
  497. package/server/plugins/05.skills-catalog.ts +105 -0
  498. package/server/utils/skills-path.ts +197 -0
  499. package/shared/types/index.ts +65 -1
  500. package/.output/public/_nuxt/5ZXA0Ckq.js +0 -1
  501. package/.output/public/_nuxt/BIIJhjQO.js +0 -1
  502. package/.output/public/_nuxt/BIckl6wA.js +0 -1
  503. package/.output/public/_nuxt/BJ3o57WW.js +0 -1
  504. package/.output/public/_nuxt/BNetzZzF.js +0 -1
  505. package/.output/public/_nuxt/BS0ofHJK.js +0 -1
  506. package/.output/public/_nuxt/B_3_hrpn.js +0 -1
  507. package/.output/public/_nuxt/BaBZjmMC.js +0 -1
  508. package/.output/public/_nuxt/BaMqDm5u.js +0 -1
  509. package/.output/public/_nuxt/BhzMoffi.js +0 -1
  510. package/.output/public/_nuxt/BlhFigLL.js +0 -1
  511. package/.output/public/_nuxt/BoIxv-gM.js +0 -1
  512. package/.output/public/_nuxt/Br19oYkq.js +0 -1
  513. package/.output/public/_nuxt/C0kh_F7v.js +0 -1
  514. package/.output/public/_nuxt/C61KgSco.js +0 -1
  515. package/.output/public/_nuxt/CJUdYEdO.js +0 -1
  516. package/.output/public/_nuxt/CVJQGP1Q.js +0 -1
  517. package/.output/public/_nuxt/CWMUi89H.js +0 -1
  518. package/.output/public/_nuxt/Cdu2qGgq.js +0 -1
  519. package/.output/public/_nuxt/CeIu7z4p.js +0 -1
  520. package/.output/public/_nuxt/D2689qk4.js +0 -1
  521. package/.output/public/_nuxt/D31L7Ks6.js +0 -1
  522. package/.output/public/_nuxt/DB359q8R.js +0 -1
  523. package/.output/public/_nuxt/DHG66LPS.js +0 -1
  524. package/.output/public/_nuxt/DJ5V-y_x.js +0 -1
  525. package/.output/public/_nuxt/DLETdGFL.js +0 -1
  526. package/.output/public/_nuxt/DOICd-Ld.js +0 -1
  527. package/.output/public/_nuxt/DPEcH-gi.js +0 -65
  528. package/.output/public/_nuxt/Db8-_gO7.js +0 -1
  529. package/.output/public/_nuxt/DgV-EDJ9.js +0 -1
  530. package/.output/public/_nuxt/Dp2X5R2m.js +0 -1
  531. package/.output/public/_nuxt/DqB723Z0.js +0 -1
  532. package/.output/public/_nuxt/Q8Ps7oN5.js +0 -1
  533. package/.output/public/_nuxt/SXTDhzp6.js +0 -1
  534. package/.output/public/_nuxt/Sg2Lwc46.js +0 -1
  535. package/.output/public/_nuxt/_J_7XIn-.js +0 -1
  536. package/.output/public/_nuxt/builds/meta/a1e9100c-1a4f-4f7e-bb53-9dbe0d07effb.json +0 -1
  537. package/.output/public/_nuxt/entry.CGxIBGAf.css +0 -1
  538. package/.output/public/_nuxt/inmzPrjz.js +0 -1
  539. package/.output/public/_nuxt/oIX-ZDN6.js +0 -1
  540. package/.output/server/chunks/build/auth-CDHRohj4.mjs +0 -77
  541. package/.output/server/chunks/build/auth-CDHRohj4.mjs.map +0 -1
  542. package/.output/server/chunks/build/dashboard-YEscLBQN.mjs.map +0 -1
  543. package/.output/server/chunks/build/docs-Dk2JnYq3.mjs.map +0 -1
  544. package/.output/server/chunks/build/hooks-DP8WoUPS.mjs.map +0 -1
  545. package/.output/server/chunks/build/index-Ba_bPJgk.mjs.map +0 -1
  546. package/.output/server/chunks/build/tasks-DiOi1HG_.mjs.map +0 -1
  547. package/.output/server/chunks/build/usePreferences-CzC8fRzd.mjs.map +0 -1
  548. /package/.output/public/_nuxt/{useCopyToClipboard.Be_IvFWy.css → CodeEditor.Be_IvFWy.css} +0 -0
@@ -0,0 +1,336 @@
1
+ <script setup lang="ts">
2
+ import type { TreeItem } from '~/composables/useFileTree'
3
+ import type { SkillFile } from '~~/shared/types'
4
+
5
+ const props = defineProps<{
6
+ skillName: string
7
+ files: SkillFile[]
8
+ selectedPath?: string
9
+ }>()
10
+
11
+ const emit = defineEmits<{
12
+ select: [path: string]
13
+ refresh: []
14
+ }>()
15
+
16
+ const toast = useToast()
17
+
18
+ // Convert SkillFile[] to TreeItem[] for UTree
19
+ function toTreeItems(files: SkillFile[], parentPath = ''): TreeItem[] {
20
+ return files.map((f) => {
21
+ const fullPath = parentPath ? `${parentPath}/${f.path}` : f.path
22
+ const item: TreeItem = {
23
+ id: fullPath,
24
+ label: f.name,
25
+ path: fullPath,
26
+ type: f.type,
27
+ defaultExpanded: true
28
+ }
29
+ if (f.type === 'directory') {
30
+ item.children = f.children ? toTreeItems(f.children, fullPath) : []
31
+ } else {
32
+ if (f.name.endsWith('.py')) item.icon = 'i-lucide-file-code'
33
+ else if (f.name.endsWith('.md')) item.icon = 'i-lucide-file-text'
34
+ else if (f.name.endsWith('.json')) item.icon = 'i-lucide-file-json'
35
+ else item.icon = 'i-lucide-file'
36
+ }
37
+ return item
38
+ })
39
+ }
40
+
41
+ const treeItems = computed(() => toTreeItems(props.files))
42
+
43
+ const contextMenuTarget = ref<TreeItem | null>(null)
44
+ const showNewFileModal = ref(false)
45
+ const showNewFolderModal = ref(false)
46
+ const showDeleteConfirm = ref(false)
47
+ const newItemName = ref('')
48
+
49
+ const contextMenuItems = computed(() => [
50
+ [{
51
+ label: 'New File',
52
+ icon: 'i-lucide-file-plus',
53
+ onSelect: () => {
54
+ newItemName.value = ''
55
+ showNewFileModal.value = true
56
+ }
57
+ }, {
58
+ label: 'New Folder',
59
+ icon: 'i-lucide-folder-plus',
60
+ onSelect: () => {
61
+ newItemName.value = ''
62
+ showNewFolderModal.value = true
63
+ }
64
+ }],
65
+ [{
66
+ label: 'Delete',
67
+ icon: 'i-lucide-trash-2',
68
+ color: 'error' as const,
69
+ onSelect: () => {
70
+ if (contextMenuTarget.value && contextMenuTarget.value.label !== 'SKILL.md')
71
+ showDeleteConfirm.value = true
72
+ }
73
+ }]
74
+ ])
75
+
76
+ function handleSelect(_e: unknown, item: TreeItem) {
77
+ if (item.type === 'file') {
78
+ emit('select', item.path)
79
+ }
80
+ }
81
+
82
+ async function handleCreateFile() {
83
+ if (!newItemName.value.trim()) return
84
+
85
+ let filename = newItemName.value.trim()
86
+ if (!filename.includes('.')) filename += '.py'
87
+
88
+ const parentPath = contextMenuTarget.value?.type === 'directory'
89
+ ? contextMenuTarget.value.path
90
+ : ''
91
+
92
+ const filePath = parentPath ? `${parentPath}/${filename}` : filename
93
+
94
+ try {
95
+ await $fetch(`/api/skills/${props.skillName}/files/create`, {
96
+ method: 'POST',
97
+ body: { path: filePath, type: 'file' }
98
+ })
99
+ emit('refresh')
100
+ emit('select', filePath)
101
+ toast.add({ title: `Created ${filename}`, color: 'success' })
102
+ } catch {
103
+ toast.add({ title: 'Failed to create file', color: 'error' })
104
+ }
105
+
106
+ showNewFileModal.value = false
107
+ newItemName.value = ''
108
+ }
109
+
110
+ async function handleCreateFolder() {
111
+ if (!newItemName.value.trim()) return
112
+
113
+ const folderName = newItemName.value.trim()
114
+ const parentPath = contextMenuTarget.value?.type === 'directory'
115
+ ? contextMenuTarget.value.path
116
+ : ''
117
+
118
+ const folderPath = parentPath ? `${parentPath}/${folderName}` : folderName
119
+
120
+ try {
121
+ await $fetch(`/api/skills/${props.skillName}/files/create`, {
122
+ method: 'POST',
123
+ body: { path: folderPath, type: 'directory' }
124
+ })
125
+ emit('refresh')
126
+ toast.add({ title: `Created ${folderName}/`, color: 'success' })
127
+ } catch {
128
+ toast.add({ title: 'Failed to create folder', color: 'error' })
129
+ }
130
+
131
+ showNewFolderModal.value = false
132
+ newItemName.value = ''
133
+ }
134
+
135
+ async function handleDelete() {
136
+ if (!contextMenuTarget.value) return
137
+
138
+ try {
139
+ await $fetch(`/api/skills/${props.skillName}/files/delete`, {
140
+ method: 'POST',
141
+ body: { path: contextMenuTarget.value.path }
142
+ })
143
+ emit('refresh')
144
+ toast.add({ title: `Deleted ${contextMenuTarget.value.label}`, color: 'success' })
145
+ } catch {
146
+ toast.add({ title: 'Failed to delete', color: 'error' })
147
+ }
148
+
149
+ showDeleteConfirm.value = false
150
+ }
151
+ </script>
152
+
153
+ <template>
154
+ <div class="h-full flex flex-col">
155
+ <UContextMenu
156
+ :items="contextMenuItems"
157
+ >
158
+ <div
159
+ class="flex-1 h-full overflow-auto p-2"
160
+ @contextmenu.self="contextMenuTarget = null"
161
+ >
162
+ <div
163
+ v-if="files.length === 0"
164
+ class="h-full min-h-32 flex flex-col items-center justify-center text-dimmed text-sm"
165
+ >
166
+ <UIcon
167
+ name="i-lucide-folder-open"
168
+ class="size-8 mx-auto mb-2 opacity-50"
169
+ />
170
+ <p>No files found</p>
171
+ <p class="text-xs mt-1">
172
+ Right-click to create a file
173
+ </p>
174
+ </div>
175
+
176
+ <UTree
177
+ v-else
178
+ :items="treeItems"
179
+ :get-key="(item: TreeItem) => item.id"
180
+ color="primary"
181
+ expanded-icon="i-lucide-folder-open"
182
+ collapsed-icon="i-lucide-folder"
183
+ @select="handleSelect"
184
+ >
185
+ <template #item="{ item, expanded }">
186
+ <div
187
+ class="flex items-center gap-2 w-full"
188
+ @contextmenu="contextMenuTarget = item"
189
+ >
190
+ <UIcon
191
+ v-if="item.children?.length"
192
+ :name="expanded ? 'i-lucide-folder-open' : 'i-lucide-folder'"
193
+ class="size-4 shrink-0 text-dimmed"
194
+ />
195
+ <UIcon
196
+ v-else-if="item.icon"
197
+ :name="item.icon"
198
+ class="size-4 shrink-0 text-dimmed"
199
+ />
200
+ <UIcon
201
+ v-else
202
+ name="i-lucide-file"
203
+ class="size-4 shrink-0 text-dimmed"
204
+ />
205
+ <span class="truncate">{{ item.label }}</span>
206
+ </div>
207
+ </template>
208
+ </UTree>
209
+ </div>
210
+ </UContextMenu>
211
+
212
+ <!-- New File Modal -->
213
+ <UModal v-model:open="showNewFileModal">
214
+ <template #content>
215
+ <UCard>
216
+ <template #header>
217
+ <div class="flex items-center gap-2">
218
+ <UIcon
219
+ name="i-lucide-file-plus"
220
+ class="size-5"
221
+ />
222
+ <span class="font-semibold">New File</span>
223
+ </div>
224
+ </template>
225
+
226
+ <UInput
227
+ v-model="newItemName"
228
+ placeholder="filename.py"
229
+ autofocus
230
+ @keyup.enter="handleCreateFile"
231
+ />
232
+
233
+ <template #footer>
234
+ <div class="flex justify-end gap-2">
235
+ <UButton
236
+ color="neutral"
237
+ variant="ghost"
238
+ @click="showNewFileModal = false"
239
+ >
240
+ Cancel
241
+ </UButton>
242
+ <UButton @click="handleCreateFile">
243
+ Create
244
+ </UButton>
245
+ </div>
246
+ </template>
247
+ </UCard>
248
+ </template>
249
+ </UModal>
250
+
251
+ <!-- New Folder Modal -->
252
+ <UModal v-model:open="showNewFolderModal">
253
+ <template #content>
254
+ <UCard>
255
+ <template #header>
256
+ <div class="flex items-center gap-2">
257
+ <UIcon
258
+ name="i-lucide-folder-plus"
259
+ class="size-5"
260
+ />
261
+ <span class="font-semibold">New Folder</span>
262
+ </div>
263
+ </template>
264
+
265
+ <UInput
266
+ v-model="newItemName"
267
+ placeholder="folder-name"
268
+ autofocus
269
+ @keyup.enter="handleCreateFolder"
270
+ />
271
+
272
+ <template #footer>
273
+ <div class="flex justify-end gap-2">
274
+ <UButton
275
+ color="neutral"
276
+ variant="ghost"
277
+ @click="showNewFolderModal = false"
278
+ >
279
+ Cancel
280
+ </UButton>
281
+ <UButton @click="handleCreateFolder">
282
+ Create
283
+ </UButton>
284
+ </div>
285
+ </template>
286
+ </UCard>
287
+ </template>
288
+ </UModal>
289
+
290
+ <!-- Delete Confirmation -->
291
+ <UModal v-model:open="showDeleteConfirm">
292
+ <template #content>
293
+ <UCard>
294
+ <template #header>
295
+ <div class="flex items-center gap-2 text-error">
296
+ <UIcon
297
+ name="i-lucide-trash-2"
298
+ class="size-5"
299
+ />
300
+ <span class="font-semibold">Delete</span>
301
+ </div>
302
+ </template>
303
+
304
+ <p>
305
+ Are you sure you want to delete
306
+ <strong>{{ contextMenuTarget?.label }}</strong>?
307
+ </p>
308
+ <p
309
+ v-if="contextMenuTarget?.type === 'directory'"
310
+ class="text-sm text-dimmed mt-1"
311
+ >
312
+ This will delete all files and folders inside.
313
+ </p>
314
+
315
+ <template #footer>
316
+ <div class="flex justify-end gap-2">
317
+ <UButton
318
+ color="neutral"
319
+ variant="ghost"
320
+ @click="showDeleteConfirm = false"
321
+ >
322
+ Cancel
323
+ </UButton>
324
+ <UButton
325
+ color="error"
326
+ @click="handleDelete"
327
+ >
328
+ Delete
329
+ </UButton>
330
+ </div>
331
+ </template>
332
+ </UCard>
333
+ </template>
334
+ </UModal>
335
+ </div>
336
+ </template>
@@ -0,0 +1,122 @@
1
+ <script setup lang="ts">
2
+ import type { SkillCatalogItem } from '~~/shared/types'
3
+
4
+ defineProps<{
5
+ skill: SkillCatalogItem
6
+ }>()
7
+
8
+ const emit = defineEmits<{
9
+ install: [name: string]
10
+ update: [name: string]
11
+ }>()
12
+ </script>
13
+
14
+ <template>
15
+ <div class="p-4 rounded-lg border border-default bg-elevated/50 hover:bg-elevated transition-colors">
16
+ <div class="flex items-start justify-between gap-2 mb-2">
17
+ <div class="flex items-center gap-2 min-w-0">
18
+ <UIcon
19
+ name="i-lucide-puzzle"
20
+ class="size-4 shrink-0 text-primary"
21
+ />
22
+ <span class="font-medium truncate">{{ skill.name }}</span>
23
+ </div>
24
+ <div class="flex items-center gap-1.5 shrink-0">
25
+ <UBadge
26
+ v-if="skill.installed && !skill.hasUpdate"
27
+ variant="subtle"
28
+ color="success"
29
+ size="xs"
30
+ >
31
+ Installed
32
+ </UBadge>
33
+ <UBadge
34
+ v-if="skill.hasUpdate"
35
+ variant="subtle"
36
+ color="warning"
37
+ size="xs"
38
+ >
39
+ Update available
40
+ </UBadge>
41
+ <UBadge
42
+ variant="subtle"
43
+ color="neutral"
44
+ size="xs"
45
+ >
46
+ v{{ skill.version }}
47
+ </UBadge>
48
+ </div>
49
+ </div>
50
+
51
+ <p class="text-sm text-muted line-clamp-2 mb-3">
52
+ {{ skill.description }}
53
+ </p>
54
+
55
+ <div
56
+ v-if="skill.tags.length > 0"
57
+ class="flex flex-wrap gap-1 mb-3"
58
+ >
59
+ <UBadge
60
+ v-for="tag in skill.tags"
61
+ :key="tag"
62
+ variant="subtle"
63
+ :color="tag === 'official' ? 'primary' : 'neutral'"
64
+ size="xs"
65
+ >
66
+ {{ tag }}
67
+ </UBadge>
68
+ </div>
69
+
70
+ <div
71
+ v-if="skill.requiresSecrets.length > 0"
72
+ class="flex items-center gap-1 mb-3 text-xs text-dimmed"
73
+ >
74
+ <UIcon
75
+ name="i-lucide-key-round"
76
+ class="size-3 shrink-0"
77
+ />
78
+ <span>Requires: {{ skill.requiresSecrets.join(', ') }}</span>
79
+ </div>
80
+
81
+ <div class="flex items-center justify-between">
82
+ <span
83
+ v-if="skill.author"
84
+ class="text-xs text-dimmed"
85
+ >
86
+ by {{ skill.author }}
87
+ </span>
88
+ <span v-else />
89
+
90
+ <div class="flex items-center gap-1.5">
91
+ <UButton
92
+ size="xs"
93
+ variant="ghost"
94
+ color="neutral"
95
+ icon="i-lucide-external-link"
96
+ :to="`https://github.com/Patrity/cognova-skills/tree/main/${skill.name}`"
97
+ target="_blank"
98
+ >
99
+ View
100
+ </UButton>
101
+ <UButton
102
+ v-if="!skill.installed"
103
+ size="xs"
104
+ icon="i-lucide-download"
105
+ @click="emit('install', skill.name)"
106
+ >
107
+ Install
108
+ </UButton>
109
+ <UButton
110
+ v-else-if="skill.hasUpdate"
111
+ size="xs"
112
+ color="warning"
113
+ variant="soft"
114
+ icon="i-lucide-refresh-cw"
115
+ @click="emit('update', skill.name)"
116
+ >
117
+ Update
118
+ </UButton>
119
+ </div>
120
+ </div>
121
+ </div>
122
+ </template>
@@ -0,0 +1,84 @@
1
+ <script setup lang="ts">
2
+ const props = defineProps<{
3
+ open: boolean
4
+ currentName: string
5
+ }>()
6
+
7
+ const emit = defineEmits<{
8
+ 'update:open': [value: boolean]
9
+ 'renamed': [newName: string]
10
+ }>()
11
+
12
+ const toast = useToast()
13
+ const newName = ref(props.currentName)
14
+ const loading = ref(false)
15
+
16
+ watch(() => props.currentName, (val) => {
17
+ newName.value = val
18
+ })
19
+
20
+ function close() {
21
+ emit('update:open', false)
22
+ }
23
+
24
+ async function handleRename() {
25
+ if (!newName.value.trim() || newName.value.trim() === props.currentName) return
26
+
27
+ loading.value = true
28
+ try {
29
+ await $fetch(`/api/skills/${props.currentName}/rename`, {
30
+ method: 'POST',
31
+ body: { newName: newName.value.trim() }
32
+ })
33
+ toast.add({ title: `Skill renamed to '${newName.value.trim()}'`, color: 'success' })
34
+ emit('renamed', newName.value.trim())
35
+ close()
36
+ } catch (e: unknown) {
37
+ const message = e instanceof Error ? e.message : 'Failed to rename skill'
38
+ toast.add({ title: message, color: 'error' })
39
+ } finally {
40
+ loading.value = false
41
+ }
42
+ }
43
+ </script>
44
+
45
+ <template>
46
+ <UModal
47
+ :open="props.open"
48
+ @update:open="emit('update:open', $event)"
49
+ >
50
+ <template #header>
51
+ <span class="font-semibold">Rename Skill</span>
52
+ </template>
53
+
54
+ <template #body>
55
+ <UFormField label="New Name">
56
+ <UInput
57
+ v-model="newName"
58
+ placeholder="my-skill"
59
+ :disabled="loading"
60
+ />
61
+ </UFormField>
62
+ </template>
63
+
64
+ <template #footer>
65
+ <div class="flex justify-end gap-2">
66
+ <UButton
67
+ variant="ghost"
68
+ color="neutral"
69
+ :disabled="loading"
70
+ @click="close"
71
+ >
72
+ Cancel
73
+ </UButton>
74
+ <UButton
75
+ :loading="loading"
76
+ :disabled="!newName.trim() || newName.trim() === currentName"
77
+ @click="handleRename"
78
+ >
79
+ Rename
80
+ </UButton>
81
+ </div>
82
+ </template>
83
+ </UModal>
84
+ </template>
@@ -2,12 +2,13 @@
2
2
  import { format } from 'date-fns'
3
3
  import { useElementSize } from '@vueuse/core'
4
4
  import { VisXYContainer, VisLine, VisArea, VisAxis, VisCrosshair, VisTooltip } from '@unovis/vue'
5
- import type { DailyUsageData } from '~~/shared/types'
5
+ import type { DailyUsageData, UsageDisplayMode } from '~~/shared/types'
6
6
 
7
7
  const props = defineProps<{
8
8
  data: DailyUsageData[]
9
9
  title?: string
10
10
  granularity: 'daily' | 'hourly'
11
+ displayMode?: UsageDisplayMode
11
12
  }>()
12
13
 
13
14
  const emit = defineEmits<{
@@ -17,9 +18,12 @@ const emit = defineEmits<{
17
18
  const cardRef = useTemplateRef<HTMLElement | null>('cardRef')
18
19
  const { width } = useElementSize(cardRef)
19
20
 
21
+ const isTokens = computed(() => props.displayMode === 'tokens')
22
+
20
23
  const x = (_: DailyUsageData, i: number) => i
21
24
 
22
- const yTotal = (d: DailyUsageData) => d.totalCost
25
+ const yTotal = (d: DailyUsageData) =>
26
+ isTokens.value ? d.inputTokens + d.outputTokens : d.totalCost
23
27
 
24
28
  // Parse "2026-02-18" as local date (not UTC) to avoid off-by-one in western timezones
25
29
  function parseLocalDate(dateStr: string): Date {
@@ -41,6 +45,12 @@ const xTicks = (i: number) => {
41
45
  return format(parseLocalDate(item.date), 'd MMM')
42
46
  }
43
47
 
48
+ function formatTokens(value: number): string {
49
+ if (value >= 1_000_000) return `${(value / 1_000_000).toFixed(1)}M`
50
+ if (value >= 1_000) return `${(value / 1_000).toFixed(1)}K`
51
+ return String(value)
52
+ }
53
+
44
54
  const template = (d: DailyUsageData) => {
45
55
  let label: string
46
56
  if (props.granularity === 'hourly') {
@@ -51,6 +61,14 @@ const template = (d: DailyUsageData) => {
51
61
  } else {
52
62
  label = format(parseLocalDate(d.date), 'MMM d, yyyy')
53
63
  }
64
+ if (isTokens.value)
65
+ return `<div class="p-2 text-sm">
66
+ <div class="font-medium">${label}</div>
67
+ <div style="color: var(--ui-primary)">Input: ${formatTokens(d.inputTokens)}</div>
68
+ <div style="color: var(--ui-warning)">Output: ${formatTokens(d.outputTokens)}</div>
69
+ <div class="text-muted mt-1">Total: ${formatTokens(d.inputTokens + d.outputTokens)}</div>
70
+ <div class="text-muted">${d.calls} calls</div>
71
+ </div>`
54
72
  return `<div class="p-2 text-sm">
55
73
  <div class="font-medium">${label}</div>
56
74
  <div style="color: var(--ui-primary)">Chat: $${d.chat.toFixed(4)}</div>
@@ -96,27 +114,45 @@ const template = (d: DailyUsageData) => {
96
114
  </UFieldGroup>
97
115
  </div>
98
116
  <div class="flex items-center gap-3 text-xs text-muted">
99
- <span class="flex items-center gap-1">
100
- <span
101
- class="inline-block size-2.5 rounded-full"
102
- style="background: var(--ui-primary)"
103
- />
104
- Chat
105
- </span>
106
- <span class="flex items-center gap-1">
107
- <span
108
- class="inline-block size-2.5 rounded-full"
109
- style="background: var(--ui-warning)"
110
- />
111
- Agents
112
- </span>
113
- <span class="flex items-center gap-1">
114
- <span
115
- class="inline-block size-2.5 rounded-full"
116
- style="background: var(--ui-info)"
117
- />
118
- Memory
119
- </span>
117
+ <template v-if="isTokens">
118
+ <span class="flex items-center gap-1">
119
+ <span
120
+ class="inline-block size-2.5 rounded-full"
121
+ style="background: var(--ui-primary)"
122
+ />
123
+ Input
124
+ </span>
125
+ <span class="flex items-center gap-1">
126
+ <span
127
+ class="inline-block size-2.5 rounded-full"
128
+ style="background: var(--ui-warning)"
129
+ />
130
+ Output
131
+ </span>
132
+ </template>
133
+ <template v-else>
134
+ <span class="flex items-center gap-1">
135
+ <span
136
+ class="inline-block size-2.5 rounded-full"
137
+ style="background: var(--ui-primary)"
138
+ />
139
+ Chat
140
+ </span>
141
+ <span class="flex items-center gap-1">
142
+ <span
143
+ class="inline-block size-2.5 rounded-full"
144
+ style="background: var(--ui-warning)"
145
+ />
146
+ Agents
147
+ </span>
148
+ <span class="flex items-center gap-1">
149
+ <span
150
+ class="inline-block size-2.5 rounded-full"
151
+ style="background: var(--ui-info)"
152
+ />
153
+ Memory
154
+ </span>
155
+ </template>
120
156
  </div>
121
157
  </div>
122
158
  </template>
@@ -3,6 +3,7 @@ defineProps<{
3
3
  data?: unknown[]
4
4
  title?: string
5
5
  granularity?: string
6
+ displayMode?: string
6
7
  }>()
7
8
  </script>
8
9