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,1508 @@
1
+ import { _ as _sfc_main$1$1, a as _sfc_main$5 } from './DashboardNavbar-Cpq8yKA0.mjs';
2
+ import { _ as _sfc_main$6 } from './Input-CV2hlBHo.mjs';
3
+ import { i as useToast, g as _sfc_main$d, l as __nuxt_component_0$1, _ as _sfc_main$8, n as navigateTo, A as useRouter, e as useAppConfig, o as useFormField, q as useComponentIcons, t as tv, v as _sfc_main$b$1, x as looseToNumber } from './server.mjs';
4
+ import { _ as _sfc_main$4 } from './Skeleton-DZqsQzFi.mjs';
5
+ import { _ as _sfc_main$7 } from './Badge-C1RKkIgG.mjs';
6
+ import { _ as _sfc_main$9 } from './Switch-GWdksmY6.mjs';
7
+ import { defineComponent, ref, computed, mergeProps, withCtx, unref, createVNode, createBlock, openBlock, Fragment, renderList, toDisplayString, isRef, createTextVNode, createCommentVNode, withModifiers, useSlots, useTemplateRef, watch, nextTick, renderSlot, useSSRContext } from 'vue';
8
+ import { ssrRenderAttrs, ssrRenderComponent, ssrRenderList, ssrInterpolate, ssrRenderSlot, ssrRenderClass } from 'vue/server-renderer';
9
+ import { _ as _sfc_main$a } from './Modal-Z_SoWhh-.mjs';
10
+ import { _ as _sfc_main$b } from './FormField-Caux_FCv.mjs';
11
+ import { Primitive } from 'reka-ui';
12
+ import { useVModel } from '@vueuse/core';
13
+ import './DashboardSidebarToggle-Chnqv04k.mjs';
14
+ import './cookie-C_iulBi6.mjs';
15
+ import '../nitro/nitro.mjs';
16
+ import '@anthropic-ai/claude-agent-sdk';
17
+ import 'crypto';
18
+ import 'module';
19
+ import 'path';
20
+ import 'os';
21
+ import 'node:http';
22
+ import 'node:https';
23
+ import 'node:crypto';
24
+ import 'stream';
25
+ import 'events';
26
+ import 'http';
27
+ import 'buffer';
28
+ import 'zlib';
29
+ import 'https';
30
+ import 'net';
31
+ import 'tls';
32
+ import 'url';
33
+ import 'node:events';
34
+ import 'node:buffer';
35
+ import 'node:fs';
36
+ import 'node:path';
37
+ import 'fs';
38
+ import 'drizzle-orm/postgres-js/migrator';
39
+ import 'drizzle-orm';
40
+ import 'drizzle-orm/postgres-js';
41
+ import 'postgres';
42
+ import 'drizzle-orm/pg-core';
43
+ import 'better-auth';
44
+ import 'better-auth/adapters/drizzle';
45
+ import 'chokidar';
46
+ import 'fs/promises';
47
+ import 'gray-matter';
48
+ import 'cron';
49
+ import 'node:url';
50
+ import '@iconify/utils';
51
+ import 'consola';
52
+ import './ssr-Bqnw2a-w.mjs';
53
+ import 'vue-router';
54
+ import 'tailwindcss/colors';
55
+ import '@iconify/vue';
56
+ import 'tailwind-variants';
57
+ import '@iconify/utils/lib/css/icon';
58
+ import 'perfect-debounce';
59
+ import '../routes/renderer.mjs';
60
+ import 'vue-bundle-renderer/runtime';
61
+ import 'unhead/server';
62
+ import 'devalue';
63
+ import 'unhead/plugins';
64
+ import 'unhead/utils';
65
+
66
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
67
+ __name: "Card",
68
+ __ssrInlineRender: true,
69
+ props: {
70
+ skill: {}
71
+ },
72
+ emits: ["toggle"],
73
+ setup(__props, { emit: __emit }) {
74
+ const props = __props;
75
+ const emit = __emit;
76
+ const toggling = ref(false);
77
+ async function handleToggle() {
78
+ toggling.value = true;
79
+ emit("toggle", props.skill.name);
80
+ toggling.value = false;
81
+ }
82
+ return (_ctx, _push, _parent, _attrs) => {
83
+ const _component_NuxtLink = __nuxt_component_0$1;
84
+ const _component_UBadge = _sfc_main$7;
85
+ const _component_USwitch = _sfc_main$9;
86
+ _push(ssrRenderComponent(_component_NuxtLink, mergeProps({
87
+ to: `/skills/${__props.skill.name}`,
88
+ class: "block p-4 rounded-lg border border-default bg-elevated/50 hover:bg-elevated transition-colors"
89
+ }, _attrs), {
90
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
91
+ if (_push2) {
92
+ _push2(`<div class="flex items-start justify-between gap-3"${_scopeId}><div class="flex-1 min-w-0"${_scopeId}><div class="flex items-center gap-2 mb-1"${_scopeId}><span class="font-medium text-sm truncate"${_scopeId}>${ssrInterpolate(__props.skill.name)}</span>`);
93
+ if (__props.skill.core) {
94
+ _push2(ssrRenderComponent(_component_UBadge, {
95
+ variant: "subtle",
96
+ color: "primary",
97
+ size: "xs"
98
+ }, {
99
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
100
+ if (_push3) {
101
+ _push3(` Core `);
102
+ } else {
103
+ return [
104
+ createTextVNode(" Core ")
105
+ ];
106
+ }
107
+ }),
108
+ _: 1
109
+ }, _parent2, _scopeId));
110
+ } else {
111
+ _push2(`<!---->`);
112
+ }
113
+ if (!__props.skill.active) {
114
+ _push2(ssrRenderComponent(_component_UBadge, {
115
+ variant: "subtle",
116
+ color: "neutral",
117
+ size: "xs"
118
+ }, {
119
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
120
+ if (_push3) {
121
+ _push3(` Disabled `);
122
+ } else {
123
+ return [
124
+ createTextVNode(" Disabled ")
125
+ ];
126
+ }
127
+ }),
128
+ _: 1
129
+ }, _parent2, _scopeId));
130
+ } else {
131
+ _push2(`<!---->`);
132
+ }
133
+ _push2(`</div><p class="text-xs text-muted line-clamp-2"${_scopeId}>${ssrInterpolate(__props.skill.description)}</p></div>`);
134
+ if (!__props.skill.core) {
135
+ _push2(ssrRenderComponent(_component_USwitch, {
136
+ "model-value": __props.skill.active,
137
+ size: "sm",
138
+ loading: unref(toggling),
139
+ "onUpdate:modelValue": handleToggle,
140
+ onClick: () => {
141
+ }
142
+ }, null, _parent2, _scopeId));
143
+ } else {
144
+ _push2(`<!---->`);
145
+ }
146
+ _push2(`</div><div class="flex items-center gap-2 mt-3"${_scopeId}>`);
147
+ if (__props.skill.version) {
148
+ _push2(ssrRenderComponent(_component_UBadge, {
149
+ variant: "soft",
150
+ color: "neutral",
151
+ size: "xs"
152
+ }, {
153
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
154
+ if (_push3) {
155
+ _push3(` v${ssrInterpolate(__props.skill.version)}`);
156
+ } else {
157
+ return [
158
+ createTextVNode(" v" + toDisplayString(__props.skill.version), 1)
159
+ ];
160
+ }
161
+ }),
162
+ _: 1
163
+ }, _parent2, _scopeId));
164
+ } else {
165
+ _push2(`<!---->`);
166
+ }
167
+ if (__props.skill.author) {
168
+ _push2(ssrRenderComponent(_component_UBadge, {
169
+ variant: "soft",
170
+ color: "neutral",
171
+ size: "xs"
172
+ }, {
173
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
174
+ if (_push3) {
175
+ _push3(`${ssrInterpolate(__props.skill.author)}`);
176
+ } else {
177
+ return [
178
+ createTextVNode(toDisplayString(__props.skill.author), 1)
179
+ ];
180
+ }
181
+ }),
182
+ _: 1
183
+ }, _parent2, _scopeId));
184
+ } else {
185
+ _push2(`<!---->`);
186
+ }
187
+ _push2(`<span class="text-xs text-dimmed ml-auto"${_scopeId}>${ssrInterpolate(__props.skill.fileCount)} file${ssrInterpolate(__props.skill.fileCount !== 1 ? "s" : "")}</span></div>`);
188
+ } else {
189
+ return [
190
+ createVNode("div", { class: "flex items-start justify-between gap-3" }, [
191
+ createVNode("div", { class: "flex-1 min-w-0" }, [
192
+ createVNode("div", { class: "flex items-center gap-2 mb-1" }, [
193
+ createVNode("span", { class: "font-medium text-sm truncate" }, toDisplayString(__props.skill.name), 1),
194
+ __props.skill.core ? (openBlock(), createBlock(_component_UBadge, {
195
+ key: 0,
196
+ variant: "subtle",
197
+ color: "primary",
198
+ size: "xs"
199
+ }, {
200
+ default: withCtx(() => [
201
+ createTextVNode(" Core ")
202
+ ]),
203
+ _: 1
204
+ })) : createCommentVNode("", true),
205
+ !__props.skill.active ? (openBlock(), createBlock(_component_UBadge, {
206
+ key: 1,
207
+ variant: "subtle",
208
+ color: "neutral",
209
+ size: "xs"
210
+ }, {
211
+ default: withCtx(() => [
212
+ createTextVNode(" Disabled ")
213
+ ]),
214
+ _: 1
215
+ })) : createCommentVNode("", true)
216
+ ]),
217
+ createVNode("p", { class: "text-xs text-muted line-clamp-2" }, toDisplayString(__props.skill.description), 1)
218
+ ]),
219
+ !__props.skill.core ? (openBlock(), createBlock(_component_USwitch, {
220
+ key: 0,
221
+ "model-value": __props.skill.active,
222
+ size: "sm",
223
+ loading: unref(toggling),
224
+ "onUpdate:modelValue": handleToggle,
225
+ onClick: withModifiers(() => {
226
+ }, ["prevent", "stop"])
227
+ }, null, 8, ["model-value", "loading", "onClick"])) : createCommentVNode("", true)
228
+ ]),
229
+ createVNode("div", { class: "flex items-center gap-2 mt-3" }, [
230
+ __props.skill.version ? (openBlock(), createBlock(_component_UBadge, {
231
+ key: 0,
232
+ variant: "soft",
233
+ color: "neutral",
234
+ size: "xs"
235
+ }, {
236
+ default: withCtx(() => [
237
+ createTextVNode(" v" + toDisplayString(__props.skill.version), 1)
238
+ ]),
239
+ _: 1
240
+ })) : createCommentVNode("", true),
241
+ __props.skill.author ? (openBlock(), createBlock(_component_UBadge, {
242
+ key: 1,
243
+ variant: "soft",
244
+ color: "neutral",
245
+ size: "xs"
246
+ }, {
247
+ default: withCtx(() => [
248
+ createTextVNode(toDisplayString(__props.skill.author), 1)
249
+ ]),
250
+ _: 1
251
+ })) : createCommentVNode("", true),
252
+ createVNode("span", { class: "text-xs text-dimmed ml-auto" }, toDisplayString(__props.skill.fileCount) + " file" + toDisplayString(__props.skill.fileCount !== 1 ? "s" : ""), 1)
253
+ ])
254
+ ];
255
+ }
256
+ }),
257
+ _: 1
258
+ }, _parent));
259
+ };
260
+ }
261
+ });
262
+ const _sfc_setup$3 = _sfc_main$3.setup;
263
+ _sfc_main$3.setup = (props, ctx) => {
264
+ const ssrContext = useSSRContext();
265
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/skills/Card.vue");
266
+ return _sfc_setup$3 ? _sfc_setup$3(props, ctx) : void 0;
267
+ };
268
+ const __nuxt_component_7 = Object.assign(_sfc_main$3, { __name: "SkillsCard" });
269
+ const theme = {
270
+ "slots": {
271
+ "root": "relative inline-flex items-center",
272
+ "base": [
273
+ "w-full rounded-md border-0 appearance-none placeholder:text-dimmed focus:outline-none disabled:cursor-not-allowed disabled:opacity-75",
274
+ "transition-colors"
275
+ ],
276
+ "leading": "absolute start-0 flex items-start",
277
+ "leadingIcon": "shrink-0 text-dimmed",
278
+ "leadingAvatar": "shrink-0",
279
+ "leadingAvatarSize": "",
280
+ "trailing": "absolute end-0 flex items-start",
281
+ "trailingIcon": "shrink-0 text-dimmed"
282
+ },
283
+ "variants": {
284
+ "fieldGroup": {
285
+ "horizontal": {
286
+ "root": "group has-focus-visible:z-[1]",
287
+ "base": "group-not-only:group-first:rounded-e-none group-not-only:group-last:rounded-s-none group-not-last:group-not-first:rounded-none"
288
+ },
289
+ "vertical": {
290
+ "root": "group has-focus-visible:z-[1]",
291
+ "base": "group-not-only:group-first:rounded-b-none group-not-only:group-last:rounded-t-none group-not-last:group-not-first:rounded-none"
292
+ }
293
+ },
294
+ "size": {
295
+ "xs": {
296
+ "base": "px-2 py-1 text-xs gap-1",
297
+ "leading": "ps-2 inset-y-1",
298
+ "trailing": "pe-2 inset-y-1",
299
+ "leadingIcon": "size-4",
300
+ "leadingAvatarSize": "3xs",
301
+ "trailingIcon": "size-4"
302
+ },
303
+ "sm": {
304
+ "base": "px-2.5 py-1.5 text-xs gap-1.5",
305
+ "leading": "ps-2.5 inset-y-1.5",
306
+ "trailing": "pe-2.5 inset-y-1.5",
307
+ "leadingIcon": "size-4",
308
+ "leadingAvatarSize": "3xs",
309
+ "trailingIcon": "size-4"
310
+ },
311
+ "md": {
312
+ "base": "px-2.5 py-1.5 text-sm gap-1.5",
313
+ "leading": "ps-2.5 inset-y-1.5",
314
+ "trailing": "pe-2.5 inset-y-1.5",
315
+ "leadingIcon": "size-5",
316
+ "leadingAvatarSize": "2xs",
317
+ "trailingIcon": "size-5"
318
+ },
319
+ "lg": {
320
+ "base": "px-3 py-2 text-sm gap-2",
321
+ "leading": "ps-3 inset-y-2",
322
+ "trailing": "pe-3 inset-y-2",
323
+ "leadingIcon": "size-5",
324
+ "leadingAvatarSize": "2xs",
325
+ "trailingIcon": "size-5"
326
+ },
327
+ "xl": {
328
+ "base": "px-3 py-2 text-base gap-2",
329
+ "leading": "ps-3 inset-y-2",
330
+ "trailing": "pe-3 inset-y-2",
331
+ "leadingIcon": "size-6",
332
+ "leadingAvatarSize": "xs",
333
+ "trailingIcon": "size-6"
334
+ }
335
+ },
336
+ "variant": {
337
+ "outline": "text-highlighted bg-default ring ring-inset ring-accented",
338
+ "soft": "text-highlighted bg-elevated/50 hover:bg-elevated focus:bg-elevated disabled:bg-elevated/50",
339
+ "subtle": "text-highlighted bg-elevated ring ring-inset ring-accented",
340
+ "ghost": "text-highlighted bg-transparent hover:bg-elevated focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent",
341
+ "none": "text-highlighted bg-transparent"
342
+ },
343
+ "color": {
344
+ "primary": "",
345
+ "secondary": "",
346
+ "success": "",
347
+ "info": "",
348
+ "warning": "",
349
+ "error": "",
350
+ "neutral": ""
351
+ },
352
+ "leading": {
353
+ "true": ""
354
+ },
355
+ "trailing": {
356
+ "true": ""
357
+ },
358
+ "loading": {
359
+ "true": ""
360
+ },
361
+ "highlight": {
362
+ "true": ""
363
+ },
364
+ "type": {
365
+ "file": "file:me-1.5 file:font-medium file:text-muted file:outline-none"
366
+ },
367
+ "autoresize": {
368
+ "true": {
369
+ "base": "resize-none"
370
+ }
371
+ }
372
+ },
373
+ "compoundVariants": [
374
+ {
375
+ "color": "primary",
376
+ "variant": [
377
+ "outline",
378
+ "subtle"
379
+ ],
380
+ "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary"
381
+ },
382
+ {
383
+ "color": "secondary",
384
+ "variant": [
385
+ "outline",
386
+ "subtle"
387
+ ],
388
+ "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-secondary"
389
+ },
390
+ {
391
+ "color": "success",
392
+ "variant": [
393
+ "outline",
394
+ "subtle"
395
+ ],
396
+ "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-success"
397
+ },
398
+ {
399
+ "color": "info",
400
+ "variant": [
401
+ "outline",
402
+ "subtle"
403
+ ],
404
+ "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-info"
405
+ },
406
+ {
407
+ "color": "warning",
408
+ "variant": [
409
+ "outline",
410
+ "subtle"
411
+ ],
412
+ "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-warning"
413
+ },
414
+ {
415
+ "color": "error",
416
+ "variant": [
417
+ "outline",
418
+ "subtle"
419
+ ],
420
+ "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-error"
421
+ },
422
+ {
423
+ "color": "primary",
424
+ "highlight": true,
425
+ "class": "ring ring-inset ring-primary"
426
+ },
427
+ {
428
+ "color": "secondary",
429
+ "highlight": true,
430
+ "class": "ring ring-inset ring-secondary"
431
+ },
432
+ {
433
+ "color": "success",
434
+ "highlight": true,
435
+ "class": "ring ring-inset ring-success"
436
+ },
437
+ {
438
+ "color": "info",
439
+ "highlight": true,
440
+ "class": "ring ring-inset ring-info"
441
+ },
442
+ {
443
+ "color": "warning",
444
+ "highlight": true,
445
+ "class": "ring ring-inset ring-warning"
446
+ },
447
+ {
448
+ "color": "error",
449
+ "highlight": true,
450
+ "class": "ring ring-inset ring-error"
451
+ },
452
+ {
453
+ "color": "neutral",
454
+ "variant": [
455
+ "outline",
456
+ "subtle"
457
+ ],
458
+ "class": "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-inverted"
459
+ },
460
+ {
461
+ "color": "neutral",
462
+ "highlight": true,
463
+ "class": "ring ring-inset ring-inverted"
464
+ },
465
+ {
466
+ "leading": true,
467
+ "size": "xs",
468
+ "class": "ps-7"
469
+ },
470
+ {
471
+ "leading": true,
472
+ "size": "sm",
473
+ "class": "ps-8"
474
+ },
475
+ {
476
+ "leading": true,
477
+ "size": "md",
478
+ "class": "ps-9"
479
+ },
480
+ {
481
+ "leading": true,
482
+ "size": "lg",
483
+ "class": "ps-10"
484
+ },
485
+ {
486
+ "leading": true,
487
+ "size": "xl",
488
+ "class": "ps-11"
489
+ },
490
+ {
491
+ "trailing": true,
492
+ "size": "xs",
493
+ "class": "pe-7"
494
+ },
495
+ {
496
+ "trailing": true,
497
+ "size": "sm",
498
+ "class": "pe-8"
499
+ },
500
+ {
501
+ "trailing": true,
502
+ "size": "md",
503
+ "class": "pe-9"
504
+ },
505
+ {
506
+ "trailing": true,
507
+ "size": "lg",
508
+ "class": "pe-10"
509
+ },
510
+ {
511
+ "trailing": true,
512
+ "size": "xl",
513
+ "class": "pe-11"
514
+ },
515
+ {
516
+ "loading": true,
517
+ "leading": true,
518
+ "class": {
519
+ "leadingIcon": "animate-spin"
520
+ }
521
+ },
522
+ {
523
+ "loading": true,
524
+ "leading": false,
525
+ "trailing": true,
526
+ "class": {
527
+ "trailingIcon": "animate-spin"
528
+ }
529
+ }
530
+ ],
531
+ "defaultVariants": {
532
+ "size": "md",
533
+ "color": "primary",
534
+ "variant": "outline"
535
+ }
536
+ };
537
+ const _sfc_main$2 = /* @__PURE__ */ Object.assign({ inheritAttrs: false }, {
538
+ __name: "UTextarea",
539
+ __ssrInlineRender: true,
540
+ props: {
541
+ as: { type: null, required: false },
542
+ id: { type: String, required: false },
543
+ name: { type: String, required: false },
544
+ placeholder: { type: String, required: false },
545
+ color: { type: null, required: false },
546
+ variant: { type: null, required: false },
547
+ size: { type: null, required: false },
548
+ required: { type: Boolean, required: false },
549
+ autofocus: { type: Boolean, required: false },
550
+ autofocusDelay: { type: Number, required: false, default: 0 },
551
+ autoresize: { type: Boolean, required: false },
552
+ autoresizeDelay: { type: Number, required: false, default: 0 },
553
+ disabled: { type: Boolean, required: false },
554
+ rows: { type: Number, required: false, default: 3 },
555
+ maxrows: { type: Number, required: false, default: 0 },
556
+ highlight: { type: Boolean, required: false },
557
+ modelValue: { type: null, required: false },
558
+ defaultValue: { type: null, required: false },
559
+ modelModifiers: { type: Object, required: false },
560
+ class: { type: null, required: false },
561
+ ui: { type: null, required: false },
562
+ icon: { type: null, required: false },
563
+ avatar: { type: Object, required: false },
564
+ leading: { type: Boolean, required: false },
565
+ leadingIcon: { type: null, required: false },
566
+ trailing: { type: Boolean, required: false },
567
+ trailingIcon: { type: null, required: false },
568
+ loading: { type: Boolean, required: false },
569
+ loadingIcon: { type: null, required: false }
570
+ },
571
+ emits: ["update:modelValue", "blur", "change"],
572
+ setup(__props, { expose: __expose, emit: __emit }) {
573
+ const props = __props;
574
+ const emits = __emit;
575
+ const slots = useSlots();
576
+ const modelValue = useVModel(props, "modelValue", emits, { defaultValue: props.defaultValue });
577
+ const appConfig = useAppConfig();
578
+ const { emitFormFocus, emitFormBlur, emitFormInput, emitFormChange, size, color, id, name, highlight, disabled, ariaAttrs } = useFormField(props, { deferInputValidation: true });
579
+ const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(props);
580
+ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.textarea || {} })({
581
+ color: color.value,
582
+ variant: props.variant,
583
+ size: size?.value,
584
+ loading: props.loading,
585
+ highlight: highlight.value,
586
+ autoresize: props.autoresize,
587
+ leading: isLeading.value || !!props.avatar || !!slots.leading,
588
+ trailing: isTrailing.value || !!slots.trailing
589
+ }));
590
+ const textareaRef = useTemplateRef("textareaRef");
591
+ function updateInput(value) {
592
+ if (props.modelModifiers?.trim) {
593
+ value = value?.trim() ?? null;
594
+ }
595
+ if (props.modelModifiers?.number) {
596
+ value = looseToNumber(value);
597
+ }
598
+ if (props.modelModifiers?.nullable) {
599
+ value ||= null;
600
+ }
601
+ if (props.modelModifiers?.optional) {
602
+ value ||= void 0;
603
+ }
604
+ modelValue.value = value;
605
+ emitFormInput();
606
+ }
607
+ function onInput(event) {
608
+ autoResize();
609
+ if (!props.modelModifiers?.lazy) {
610
+ updateInput(event.target.value);
611
+ }
612
+ }
613
+ function onChange(event) {
614
+ const value = event.target.value;
615
+ if (props.modelModifiers?.lazy) {
616
+ updateInput(value);
617
+ }
618
+ if (props.modelModifiers?.trim) {
619
+ event.target.value = value.trim();
620
+ }
621
+ emitFormChange();
622
+ emits("change", event);
623
+ }
624
+ function onBlur(event) {
625
+ emitFormBlur();
626
+ emits("blur", event);
627
+ }
628
+ function autoResize() {
629
+ if (props.autoresize && textareaRef.value) {
630
+ textareaRef.value.rows = props.rows;
631
+ const overflow = textareaRef.value.style.overflow;
632
+ textareaRef.value.style.overflow = "hidden";
633
+ const styles = (void 0).getComputedStyle(textareaRef.value);
634
+ const paddingTop = Number.parseInt(styles.paddingTop);
635
+ const paddingBottom = Number.parseInt(styles.paddingBottom);
636
+ const padding = paddingTop + paddingBottom;
637
+ const lineHeight = Number.parseInt(styles.lineHeight);
638
+ const { scrollHeight } = textareaRef.value;
639
+ const newRows = (scrollHeight - padding) / lineHeight;
640
+ if (newRows > props.rows) {
641
+ textareaRef.value.rows = props.maxrows ? Math.min(newRows, props.maxrows) : newRows;
642
+ }
643
+ textareaRef.value.style.overflow = overflow;
644
+ }
645
+ }
646
+ watch(modelValue, () => {
647
+ nextTick(autoResize);
648
+ });
649
+ __expose({
650
+ textareaRef
651
+ });
652
+ return (_ctx, _push, _parent, _attrs) => {
653
+ let _temp0;
654
+ _push(ssrRenderComponent(unref(Primitive), mergeProps({
655
+ as: __props.as,
656
+ "data-slot": "root",
657
+ class: ui.value.root({ class: [props.ui?.root, props.class] })
658
+ }, _attrs), {
659
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
660
+ if (_push2) {
661
+ _push2(`<textarea${ssrRenderAttrs(_temp0 = mergeProps({
662
+ id: unref(id),
663
+ ref_key: "textareaRef",
664
+ ref: textareaRef,
665
+ value: unref(modelValue),
666
+ name: unref(name),
667
+ rows: __props.rows,
668
+ placeholder: __props.placeholder,
669
+ "data-slot": "base",
670
+ class: ui.value.base({ class: props.ui?.base }),
671
+ disabled: unref(disabled),
672
+ required: __props.required
673
+ }, { ..._ctx.$attrs, ...unref(ariaAttrs) }), "textarea")}${_scopeId}>${ssrInterpolate("value" in _temp0 ? _temp0.value : "")}</textarea>`);
674
+ ssrRenderSlot(_ctx.$slots, "default", { ui: ui.value }, null, _push2, _parent2, _scopeId);
675
+ if (unref(isLeading) || !!__props.avatar || !!slots.leading) {
676
+ _push2(`<span data-slot="leading" class="${ssrRenderClass(ui.value.leading({ class: props.ui?.leading }))}"${_scopeId}>`);
677
+ ssrRenderSlot(_ctx.$slots, "leading", { ui: ui.value }, () => {
678
+ if (unref(isLeading) && unref(leadingIconName)) {
679
+ _push2(ssrRenderComponent(_sfc_main$d, {
680
+ name: unref(leadingIconName),
681
+ "data-slot": "leadingIcon",
682
+ class: ui.value.leadingIcon({ class: props.ui?.leadingIcon })
683
+ }, null, _parent2, _scopeId));
684
+ } else if (!!__props.avatar) {
685
+ _push2(ssrRenderComponent(_sfc_main$b$1, mergeProps({
686
+ size: props.ui?.leadingAvatarSize || ui.value.leadingAvatarSize()
687
+ }, __props.avatar, {
688
+ "data-slot": "leadingAvatar",
689
+ class: ui.value.leadingAvatar({ class: props.ui?.leadingAvatar })
690
+ }), null, _parent2, _scopeId));
691
+ } else {
692
+ _push2(`<!---->`);
693
+ }
694
+ }, _push2, _parent2, _scopeId);
695
+ _push2(`</span>`);
696
+ } else {
697
+ _push2(`<!---->`);
698
+ }
699
+ if (unref(isTrailing) || !!slots.trailing) {
700
+ _push2(`<span data-slot="trailing" class="${ssrRenderClass(ui.value.trailing({ class: props.ui?.trailing }))}"${_scopeId}>`);
701
+ ssrRenderSlot(_ctx.$slots, "trailing", { ui: ui.value }, () => {
702
+ if (unref(trailingIconName)) {
703
+ _push2(ssrRenderComponent(_sfc_main$d, {
704
+ name: unref(trailingIconName),
705
+ "data-slot": "trailingIcon",
706
+ class: ui.value.trailingIcon({ class: props.ui?.trailingIcon })
707
+ }, null, _parent2, _scopeId));
708
+ } else {
709
+ _push2(`<!---->`);
710
+ }
711
+ }, _push2, _parent2, _scopeId);
712
+ _push2(`</span>`);
713
+ } else {
714
+ _push2(`<!---->`);
715
+ }
716
+ } else {
717
+ return [
718
+ createVNode("textarea", mergeProps({
719
+ id: unref(id),
720
+ ref_key: "textareaRef",
721
+ ref: textareaRef,
722
+ value: unref(modelValue),
723
+ name: unref(name),
724
+ rows: __props.rows,
725
+ placeholder: __props.placeholder,
726
+ "data-slot": "base",
727
+ class: ui.value.base({ class: props.ui?.base }),
728
+ disabled: unref(disabled),
729
+ required: __props.required
730
+ }, { ..._ctx.$attrs, ...unref(ariaAttrs) }, {
731
+ onInput,
732
+ onBlur,
733
+ onChange,
734
+ onFocus: unref(emitFormFocus)
735
+ }), null, 16, ["id", "value", "name", "rows", "placeholder", "disabled", "required", "onFocus"]),
736
+ renderSlot(_ctx.$slots, "default", { ui: ui.value }),
737
+ unref(isLeading) || !!__props.avatar || !!slots.leading ? (openBlock(), createBlock("span", {
738
+ key: 0,
739
+ "data-slot": "leading",
740
+ class: ui.value.leading({ class: props.ui?.leading })
741
+ }, [
742
+ renderSlot(_ctx.$slots, "leading", { ui: ui.value }, () => [
743
+ unref(isLeading) && unref(leadingIconName) ? (openBlock(), createBlock(_sfc_main$d, {
744
+ key: 0,
745
+ name: unref(leadingIconName),
746
+ "data-slot": "leadingIcon",
747
+ class: ui.value.leadingIcon({ class: props.ui?.leadingIcon })
748
+ }, null, 8, ["name", "class"])) : !!__props.avatar ? (openBlock(), createBlock(_sfc_main$b$1, mergeProps({
749
+ key: 1,
750
+ size: props.ui?.leadingAvatarSize || ui.value.leadingAvatarSize()
751
+ }, __props.avatar, {
752
+ "data-slot": "leadingAvatar",
753
+ class: ui.value.leadingAvatar({ class: props.ui?.leadingAvatar })
754
+ }), null, 16, ["size", "class"])) : createCommentVNode("", true)
755
+ ])
756
+ ], 2)) : createCommentVNode("", true),
757
+ unref(isTrailing) || !!slots.trailing ? (openBlock(), createBlock("span", {
758
+ key: 1,
759
+ "data-slot": "trailing",
760
+ class: ui.value.trailing({ class: props.ui?.trailing })
761
+ }, [
762
+ renderSlot(_ctx.$slots, "trailing", { ui: ui.value }, () => [
763
+ unref(trailingIconName) ? (openBlock(), createBlock(_sfc_main$d, {
764
+ key: 0,
765
+ name: unref(trailingIconName),
766
+ "data-slot": "trailingIcon",
767
+ class: ui.value.trailingIcon({ class: props.ui?.trailingIcon })
768
+ }, null, 8, ["name", "class"])) : createCommentVNode("", true)
769
+ ])
770
+ ], 2)) : createCommentVNode("", true)
771
+ ];
772
+ }
773
+ }),
774
+ _: 3
775
+ }, _parent));
776
+ };
777
+ }
778
+ });
779
+ const _sfc_setup$2 = _sfc_main$2.setup;
780
+ _sfc_main$2.setup = (props, ctx) => {
781
+ const ssrContext = useSSRContext();
782
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("../node_modules/.pnpm/@nuxt+ui@4.3.0_2329ed002e1dfb3a5ad728629f2842a0/node_modules/@nuxt/ui/dist/runtime/components/Textarea.vue");
783
+ return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
784
+ };
785
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
786
+ __name: "CreateModal",
787
+ __ssrInlineRender: true,
788
+ props: {
789
+ open: { type: Boolean }
790
+ },
791
+ emits: ["update:open", "created"],
792
+ setup(__props, { emit: __emit }) {
793
+ const props = __props;
794
+ const emit = __emit;
795
+ const router = useRouter();
796
+ const toast = useToast();
797
+ const mode = ref("blank");
798
+ const name = ref("");
799
+ const description = ref("");
800
+ const loading = ref(false);
801
+ function resetForm() {
802
+ mode.value = "blank";
803
+ name.value = "";
804
+ description.value = "";
805
+ loading.value = false;
806
+ }
807
+ function close() {
808
+ emit("update:open", false);
809
+ resetForm();
810
+ }
811
+ async function handleCreate() {
812
+ if (!name.value.trim()) return;
813
+ loading.value = true;
814
+ try {
815
+ if (mode.value === "blank") {
816
+ await $fetch("/api/skills/create", {
817
+ method: "POST",
818
+ body: { name: name.value.trim(), description: description.value.trim() || void 0 }
819
+ });
820
+ toast.add({ title: `Skill '${name.value}' created`, color: "success" });
821
+ emit("created", name.value.trim());
822
+ close();
823
+ router.push(`/skills/${name.value.trim()}`);
824
+ } else {
825
+ if (!description.value.trim()) {
826
+ toast.add({ title: "Description is required for AI generation", color: "warning" });
827
+ loading.value = false;
828
+ return;
829
+ }
830
+ const res = await $fetch("/api/skills/generate", {
831
+ method: "POST",
832
+ body: { name: name.value.trim(), description: description.value.trim() }
833
+ });
834
+ toast.add({
835
+ title: `Skill '${name.value}' generated`,
836
+ description: `Cost: $${res.data.costUsd.toFixed(4)} — created in inactive state for review`,
837
+ color: "success"
838
+ });
839
+ emit("created", name.value.trim());
840
+ close();
841
+ router.push(`/skills/${name.value.trim()}`);
842
+ }
843
+ } catch (e) {
844
+ const message = e instanceof Error ? e.message : "Failed to create skill";
845
+ toast.add({ title: message, color: "error" });
846
+ } finally {
847
+ loading.value = false;
848
+ }
849
+ }
850
+ return (_ctx, _push, _parent, _attrs) => {
851
+ const _component_UModal = _sfc_main$a;
852
+ const _component_UButton = _sfc_main$8;
853
+ const _component_UFormField = _sfc_main$b;
854
+ const _component_UInput = _sfc_main$6;
855
+ const _component_UTextarea = _sfc_main$2;
856
+ _push(ssrRenderComponent(_component_UModal, mergeProps({
857
+ open: props.open,
858
+ "onUpdate:open": ($event) => emit("update:open", $event)
859
+ }, _attrs), {
860
+ header: withCtx((_, _push2, _parent2, _scopeId) => {
861
+ if (_push2) {
862
+ _push2(`<span class="font-semibold"${_scopeId}>Create Skill</span>`);
863
+ } else {
864
+ return [
865
+ createVNode("span", { class: "font-semibold" }, "Create Skill")
866
+ ];
867
+ }
868
+ }),
869
+ body: withCtx((_, _push2, _parent2, _scopeId) => {
870
+ if (_push2) {
871
+ _push2(`<div class="space-y-4"${_scopeId}><div class="flex gap-2"${_scopeId}>`);
872
+ _push2(ssrRenderComponent(_component_UButton, {
873
+ variant: unref(mode) === "blank" ? "solid" : "outline",
874
+ color: "neutral",
875
+ size: "sm",
876
+ icon: "i-lucide-file-plus",
877
+ onClick: ($event) => mode.value = "blank"
878
+ }, {
879
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
880
+ if (_push3) {
881
+ _push3(` Blank Skill `);
882
+ } else {
883
+ return [
884
+ createTextVNode(" Blank Skill ")
885
+ ];
886
+ }
887
+ }),
888
+ _: 1
889
+ }, _parent2, _scopeId));
890
+ _push2(ssrRenderComponent(_component_UButton, {
891
+ variant: unref(mode) === "generate" ? "solid" : "outline",
892
+ color: "neutral",
893
+ size: "sm",
894
+ icon: "i-lucide-sparkles",
895
+ onClick: ($event) => mode.value = "generate"
896
+ }, {
897
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
898
+ if (_push3) {
899
+ _push3(` AI Generate `);
900
+ } else {
901
+ return [
902
+ createTextVNode(" AI Generate ")
903
+ ];
904
+ }
905
+ }),
906
+ _: 1
907
+ }, _parent2, _scopeId));
908
+ _push2(`</div>`);
909
+ _push2(ssrRenderComponent(_component_UFormField, { label: "Name" }, {
910
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
911
+ if (_push3) {
912
+ _push3(ssrRenderComponent(_component_UInput, {
913
+ modelValue: unref(name),
914
+ "onUpdate:modelValue": ($event) => isRef(name) ? name.value = $event : null,
915
+ placeholder: "my-skill",
916
+ disabled: unref(loading),
917
+ class: "w-full"
918
+ }, null, _parent3, _scopeId2));
919
+ } else {
920
+ return [
921
+ createVNode(_component_UInput, {
922
+ modelValue: unref(name),
923
+ "onUpdate:modelValue": ($event) => isRef(name) ? name.value = $event : null,
924
+ placeholder: "my-skill",
925
+ disabled: unref(loading),
926
+ class: "w-full"
927
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
928
+ ];
929
+ }
930
+ }),
931
+ _: 1
932
+ }, _parent2, _scopeId));
933
+ _push2(ssrRenderComponent(_component_UFormField, {
934
+ label: "Description",
935
+ required: unref(mode) === "generate"
936
+ }, {
937
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
938
+ if (_push3) {
939
+ _push3(ssrRenderComponent(_component_UTextarea, {
940
+ modelValue: unref(description),
941
+ "onUpdate:modelValue": ($event) => isRef(description) ? description.value = $event : null,
942
+ placeholder: unref(mode) === "generate" ? "Describe what this skill should do..." : "Optional description",
943
+ rows: 3,
944
+ disabled: unref(loading),
945
+ class: "w-full"
946
+ }, null, _parent3, _scopeId2));
947
+ } else {
948
+ return [
949
+ createVNode(_component_UTextarea, {
950
+ modelValue: unref(description),
951
+ "onUpdate:modelValue": ($event) => isRef(description) ? description.value = $event : null,
952
+ placeholder: unref(mode) === "generate" ? "Describe what this skill should do..." : "Optional description",
953
+ rows: 3,
954
+ disabled: unref(loading),
955
+ class: "w-full"
956
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "placeholder", "disabled"])
957
+ ];
958
+ }
959
+ }),
960
+ _: 1
961
+ }, _parent2, _scopeId));
962
+ if (unref(mode) === "generate") {
963
+ _push2(`<p class="text-xs text-muted"${_scopeId}> AI-generated skills are created in an inactive state so you can review them before enabling. </p>`);
964
+ } else {
965
+ _push2(`<!---->`);
966
+ }
967
+ _push2(`</div>`);
968
+ } else {
969
+ return [
970
+ createVNode("div", { class: "space-y-4" }, [
971
+ createVNode("div", { class: "flex gap-2" }, [
972
+ createVNode(_component_UButton, {
973
+ variant: unref(mode) === "blank" ? "solid" : "outline",
974
+ color: "neutral",
975
+ size: "sm",
976
+ icon: "i-lucide-file-plus",
977
+ onClick: ($event) => mode.value = "blank"
978
+ }, {
979
+ default: withCtx(() => [
980
+ createTextVNode(" Blank Skill ")
981
+ ]),
982
+ _: 1
983
+ }, 8, ["variant", "onClick"]),
984
+ createVNode(_component_UButton, {
985
+ variant: unref(mode) === "generate" ? "solid" : "outline",
986
+ color: "neutral",
987
+ size: "sm",
988
+ icon: "i-lucide-sparkles",
989
+ onClick: ($event) => mode.value = "generate"
990
+ }, {
991
+ default: withCtx(() => [
992
+ createTextVNode(" AI Generate ")
993
+ ]),
994
+ _: 1
995
+ }, 8, ["variant", "onClick"])
996
+ ]),
997
+ createVNode(_component_UFormField, { label: "Name" }, {
998
+ default: withCtx(() => [
999
+ createVNode(_component_UInput, {
1000
+ modelValue: unref(name),
1001
+ "onUpdate:modelValue": ($event) => isRef(name) ? name.value = $event : null,
1002
+ placeholder: "my-skill",
1003
+ disabled: unref(loading),
1004
+ class: "w-full"
1005
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
1006
+ ]),
1007
+ _: 1
1008
+ }),
1009
+ createVNode(_component_UFormField, {
1010
+ label: "Description",
1011
+ required: unref(mode) === "generate"
1012
+ }, {
1013
+ default: withCtx(() => [
1014
+ createVNode(_component_UTextarea, {
1015
+ modelValue: unref(description),
1016
+ "onUpdate:modelValue": ($event) => isRef(description) ? description.value = $event : null,
1017
+ placeholder: unref(mode) === "generate" ? "Describe what this skill should do..." : "Optional description",
1018
+ rows: 3,
1019
+ disabled: unref(loading),
1020
+ class: "w-full"
1021
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "placeholder", "disabled"])
1022
+ ]),
1023
+ _: 1
1024
+ }, 8, ["required"]),
1025
+ unref(mode) === "generate" ? (openBlock(), createBlock("p", {
1026
+ key: 0,
1027
+ class: "text-xs text-muted"
1028
+ }, " AI-generated skills are created in an inactive state so you can review them before enabling. ")) : createCommentVNode("", true)
1029
+ ])
1030
+ ];
1031
+ }
1032
+ }),
1033
+ footer: withCtx((_, _push2, _parent2, _scopeId) => {
1034
+ if (_push2) {
1035
+ _push2(`<div class="flex justify-end gap-2"${_scopeId}>`);
1036
+ _push2(ssrRenderComponent(_component_UButton, {
1037
+ variant: "ghost",
1038
+ color: "neutral",
1039
+ disabled: unref(loading),
1040
+ onClick: close
1041
+ }, {
1042
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
1043
+ if (_push3) {
1044
+ _push3(` Cancel `);
1045
+ } else {
1046
+ return [
1047
+ createTextVNode(" Cancel ")
1048
+ ];
1049
+ }
1050
+ }),
1051
+ _: 1
1052
+ }, _parent2, _scopeId));
1053
+ _push2(ssrRenderComponent(_component_UButton, {
1054
+ loading: unref(loading),
1055
+ disabled: !unref(name).trim(),
1056
+ onClick: handleCreate
1057
+ }, {
1058
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
1059
+ if (_push3) {
1060
+ _push3(`${ssrInterpolate(unref(mode) === "generate" ? "Generate" : "Create")}`);
1061
+ } else {
1062
+ return [
1063
+ createTextVNode(toDisplayString(unref(mode) === "generate" ? "Generate" : "Create"), 1)
1064
+ ];
1065
+ }
1066
+ }),
1067
+ _: 1
1068
+ }, _parent2, _scopeId));
1069
+ _push2(`</div>`);
1070
+ } else {
1071
+ return [
1072
+ createVNode("div", { class: "flex justify-end gap-2" }, [
1073
+ createVNode(_component_UButton, {
1074
+ variant: "ghost",
1075
+ color: "neutral",
1076
+ disabled: unref(loading),
1077
+ onClick: close
1078
+ }, {
1079
+ default: withCtx(() => [
1080
+ createTextVNode(" Cancel ")
1081
+ ]),
1082
+ _: 1
1083
+ }, 8, ["disabled"]),
1084
+ createVNode(_component_UButton, {
1085
+ loading: unref(loading),
1086
+ disabled: !unref(name).trim(),
1087
+ onClick: handleCreate
1088
+ }, {
1089
+ default: withCtx(() => [
1090
+ createTextVNode(toDisplayString(unref(mode) === "generate" ? "Generate" : "Create"), 1)
1091
+ ]),
1092
+ _: 1
1093
+ }, 8, ["loading", "disabled"])
1094
+ ])
1095
+ ];
1096
+ }
1097
+ }),
1098
+ _: 1
1099
+ }, _parent));
1100
+ };
1101
+ }
1102
+ });
1103
+ const _sfc_setup$1 = _sfc_main$1.setup;
1104
+ _sfc_main$1.setup = (props, ctx) => {
1105
+ const ssrContext = useSSRContext();
1106
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/skills/CreateModal.vue");
1107
+ return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
1108
+ };
1109
+ const __nuxt_component_8 = Object.assign(_sfc_main$1, { __name: "SkillsCreateModal" });
1110
+ const _sfc_main = /* @__PURE__ */ defineComponent({
1111
+ __name: "index",
1112
+ __ssrInlineRender: true,
1113
+ setup(__props) {
1114
+ const toast = useToast();
1115
+ const skills = ref([]);
1116
+ const loading = ref(true);
1117
+ const search = ref("");
1118
+ const createOpen = ref(false);
1119
+ const importing = ref(false);
1120
+ const fileInput = ref(null);
1121
+ const filteredSkills = computed(() => {
1122
+ if (!search.value.trim()) return skills.value;
1123
+ const q = search.value.toLowerCase();
1124
+ return skills.value.filter(
1125
+ (s) => s.name.toLowerCase().includes(q) || s.description.toLowerCase().includes(q)
1126
+ );
1127
+ });
1128
+ async function loadSkills() {
1129
+ loading.value = true;
1130
+ try {
1131
+ const res = await $fetch("/api/skills");
1132
+ skills.value = res.data;
1133
+ } catch {
1134
+ toast.add({ title: "Failed to load skills", color: "error" });
1135
+ } finally {
1136
+ loading.value = false;
1137
+ }
1138
+ }
1139
+ async function handleImport(event) {
1140
+ const input = event.target;
1141
+ const file = input.files?.[0];
1142
+ if (!file) return;
1143
+ importing.value = true;
1144
+ try {
1145
+ const formData = new FormData();
1146
+ formData.append("file", file);
1147
+ const res = await $fetch("/api/skills/import", {
1148
+ method: "POST",
1149
+ body: formData
1150
+ });
1151
+ toast.add({
1152
+ title: `Imported ${res.data.name}`,
1153
+ description: `${res.data.fileCount} file${res.data.fileCount === 1 ? "" : "s"}`,
1154
+ color: "success"
1155
+ });
1156
+ navigateTo(`/skills/${res.data.name}`);
1157
+ } catch (err) {
1158
+ const message = err instanceof Error ? err.message : "Import failed";
1159
+ toast.add({ title: "Import failed", description: message, color: "error" });
1160
+ } finally {
1161
+ importing.value = false;
1162
+ input.value = "";
1163
+ }
1164
+ }
1165
+ async function handleToggle(name) {
1166
+ try {
1167
+ const res = await $fetch(`/api/skills/${name}/toggle`, {
1168
+ method: "POST"
1169
+ });
1170
+ const skill = skills.value.find((s) => s.name === name);
1171
+ if (skill) skill.active = res.data.active;
1172
+ toast.add({
1173
+ title: `${name} ${res.data.active ? "enabled" : "disabled"}`,
1174
+ color: "success"
1175
+ });
1176
+ } catch {
1177
+ toast.add({ title: `Failed to toggle ${name}`, color: "error" });
1178
+ }
1179
+ }
1180
+ return (_ctx, _push, _parent, _attrs) => {
1181
+ const _component_UDashboardPanel = _sfc_main$1$1;
1182
+ const _component_UDashboardNavbar = _sfc_main$5;
1183
+ const _component_UInput = _sfc_main$6;
1184
+ const _component_NuxtLink = __nuxt_component_0$1;
1185
+ const _component_UButton = _sfc_main$8;
1186
+ const _component_USkeleton = _sfc_main$4;
1187
+ const _component_UIcon = _sfc_main$d;
1188
+ const _component_SkillsCard = __nuxt_component_7;
1189
+ const _component_SkillsCreateModal = __nuxt_component_8;
1190
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "flex flex-1 min-w-0" }, _attrs))}>`);
1191
+ _push(ssrRenderComponent(_component_UDashboardPanel, {
1192
+ id: "skills-main",
1193
+ grow: ""
1194
+ }, {
1195
+ header: withCtx((_, _push2, _parent2, _scopeId) => {
1196
+ if (_push2) {
1197
+ _push2(ssrRenderComponent(_component_UDashboardNavbar, { title: "Skills" }, {
1198
+ right: withCtx((_2, _push3, _parent3, _scopeId2) => {
1199
+ if (_push3) {
1200
+ _push3(ssrRenderComponent(_component_UInput, {
1201
+ modelValue: unref(search),
1202
+ "onUpdate:modelValue": ($event) => isRef(search) ? search.value = $event : null,
1203
+ icon: "i-lucide-search",
1204
+ placeholder: "Search skills...",
1205
+ size: "sm",
1206
+ class: "w-48"
1207
+ }, null, _parent3, _scopeId2));
1208
+ _push3(ssrRenderComponent(_component_NuxtLink, { to: "/skills/library" }, {
1209
+ default: withCtx((_3, _push4, _parent4, _scopeId3) => {
1210
+ if (_push4) {
1211
+ _push4(ssrRenderComponent(_component_UButton, {
1212
+ icon: "i-lucide-library",
1213
+ variant: "ghost",
1214
+ color: "neutral",
1215
+ size: "sm"
1216
+ }, {
1217
+ default: withCtx((_4, _push5, _parent5, _scopeId4) => {
1218
+ if (_push5) {
1219
+ _push5(` Library `);
1220
+ } else {
1221
+ return [
1222
+ createTextVNode(" Library ")
1223
+ ];
1224
+ }
1225
+ }),
1226
+ _: 1
1227
+ }, _parent4, _scopeId3));
1228
+ } else {
1229
+ return [
1230
+ createVNode(_component_UButton, {
1231
+ icon: "i-lucide-library",
1232
+ variant: "ghost",
1233
+ color: "neutral",
1234
+ size: "sm"
1235
+ }, {
1236
+ default: withCtx(() => [
1237
+ createTextVNode(" Library ")
1238
+ ]),
1239
+ _: 1
1240
+ })
1241
+ ];
1242
+ }
1243
+ }),
1244
+ _: 1
1245
+ }, _parent3, _scopeId2));
1246
+ _push3(ssrRenderComponent(_component_UButton, {
1247
+ icon: "i-lucide-upload",
1248
+ variant: "ghost",
1249
+ color: "neutral",
1250
+ size: "sm",
1251
+ loading: unref(importing),
1252
+ onClick: ($event) => unref(fileInput)?.click()
1253
+ }, {
1254
+ default: withCtx((_3, _push4, _parent4, _scopeId3) => {
1255
+ if (_push4) {
1256
+ _push4(` Import `);
1257
+ } else {
1258
+ return [
1259
+ createTextVNode(" Import ")
1260
+ ];
1261
+ }
1262
+ }),
1263
+ _: 1
1264
+ }, _parent3, _scopeId2));
1265
+ _push3(`<input type="file" accept=".zip" class="hidden"${_scopeId2}>`);
1266
+ _push3(ssrRenderComponent(_component_UButton, {
1267
+ icon: "i-lucide-plus",
1268
+ size: "sm",
1269
+ onClick: ($event) => createOpen.value = true
1270
+ }, {
1271
+ default: withCtx((_3, _push4, _parent4, _scopeId3) => {
1272
+ if (_push4) {
1273
+ _push4(` Create Skill `);
1274
+ } else {
1275
+ return [
1276
+ createTextVNode(" Create Skill ")
1277
+ ];
1278
+ }
1279
+ }),
1280
+ _: 1
1281
+ }, _parent3, _scopeId2));
1282
+ } else {
1283
+ return [
1284
+ createVNode(_component_UInput, {
1285
+ modelValue: unref(search),
1286
+ "onUpdate:modelValue": ($event) => isRef(search) ? search.value = $event : null,
1287
+ icon: "i-lucide-search",
1288
+ placeholder: "Search skills...",
1289
+ size: "sm",
1290
+ class: "w-48"
1291
+ }, null, 8, ["modelValue", "onUpdate:modelValue"]),
1292
+ createVNode(_component_NuxtLink, { to: "/skills/library" }, {
1293
+ default: withCtx(() => [
1294
+ createVNode(_component_UButton, {
1295
+ icon: "i-lucide-library",
1296
+ variant: "ghost",
1297
+ color: "neutral",
1298
+ size: "sm"
1299
+ }, {
1300
+ default: withCtx(() => [
1301
+ createTextVNode(" Library ")
1302
+ ]),
1303
+ _: 1
1304
+ })
1305
+ ]),
1306
+ _: 1
1307
+ }),
1308
+ createVNode(_component_UButton, {
1309
+ icon: "i-lucide-upload",
1310
+ variant: "ghost",
1311
+ color: "neutral",
1312
+ size: "sm",
1313
+ loading: unref(importing),
1314
+ onClick: ($event) => unref(fileInput)?.click()
1315
+ }, {
1316
+ default: withCtx(() => [
1317
+ createTextVNode(" Import ")
1318
+ ]),
1319
+ _: 1
1320
+ }, 8, ["loading", "onClick"]),
1321
+ createVNode("input", {
1322
+ ref_key: "fileInput",
1323
+ ref: fileInput,
1324
+ type: "file",
1325
+ accept: ".zip",
1326
+ class: "hidden",
1327
+ onChange: handleImport
1328
+ }, null, 544),
1329
+ createVNode(_component_UButton, {
1330
+ icon: "i-lucide-plus",
1331
+ size: "sm",
1332
+ onClick: ($event) => createOpen.value = true
1333
+ }, {
1334
+ default: withCtx(() => [
1335
+ createTextVNode(" Create Skill ")
1336
+ ]),
1337
+ _: 1
1338
+ }, 8, ["onClick"])
1339
+ ];
1340
+ }
1341
+ }),
1342
+ _: 1
1343
+ }, _parent2, _scopeId));
1344
+ } else {
1345
+ return [
1346
+ createVNode(_component_UDashboardNavbar, { title: "Skills" }, {
1347
+ right: withCtx(() => [
1348
+ createVNode(_component_UInput, {
1349
+ modelValue: unref(search),
1350
+ "onUpdate:modelValue": ($event) => isRef(search) ? search.value = $event : null,
1351
+ icon: "i-lucide-search",
1352
+ placeholder: "Search skills...",
1353
+ size: "sm",
1354
+ class: "w-48"
1355
+ }, null, 8, ["modelValue", "onUpdate:modelValue"]),
1356
+ createVNode(_component_NuxtLink, { to: "/skills/library" }, {
1357
+ default: withCtx(() => [
1358
+ createVNode(_component_UButton, {
1359
+ icon: "i-lucide-library",
1360
+ variant: "ghost",
1361
+ color: "neutral",
1362
+ size: "sm"
1363
+ }, {
1364
+ default: withCtx(() => [
1365
+ createTextVNode(" Library ")
1366
+ ]),
1367
+ _: 1
1368
+ })
1369
+ ]),
1370
+ _: 1
1371
+ }),
1372
+ createVNode(_component_UButton, {
1373
+ icon: "i-lucide-upload",
1374
+ variant: "ghost",
1375
+ color: "neutral",
1376
+ size: "sm",
1377
+ loading: unref(importing),
1378
+ onClick: ($event) => unref(fileInput)?.click()
1379
+ }, {
1380
+ default: withCtx(() => [
1381
+ createTextVNode(" Import ")
1382
+ ]),
1383
+ _: 1
1384
+ }, 8, ["loading", "onClick"]),
1385
+ createVNode("input", {
1386
+ ref_key: "fileInput",
1387
+ ref: fileInput,
1388
+ type: "file",
1389
+ accept: ".zip",
1390
+ class: "hidden",
1391
+ onChange: handleImport
1392
+ }, null, 544),
1393
+ createVNode(_component_UButton, {
1394
+ icon: "i-lucide-plus",
1395
+ size: "sm",
1396
+ onClick: ($event) => createOpen.value = true
1397
+ }, {
1398
+ default: withCtx(() => [
1399
+ createTextVNode(" Create Skill ")
1400
+ ]),
1401
+ _: 1
1402
+ }, 8, ["onClick"])
1403
+ ]),
1404
+ _: 1
1405
+ })
1406
+ ];
1407
+ }
1408
+ }),
1409
+ body: withCtx((_, _push2, _parent2, _scopeId) => {
1410
+ if (_push2) {
1411
+ _push2(`<div class="p-4"${_scopeId}>`);
1412
+ if (unref(loading)) {
1413
+ _push2(`<div class="grid gap-4 sm:grid-cols-2 lg:grid-cols-3"${_scopeId}><!--[-->`);
1414
+ ssrRenderList(6, (i) => {
1415
+ _push2(`<div class="p-4 rounded-lg border border-default bg-elevated/50"${_scopeId}>`);
1416
+ _push2(ssrRenderComponent(_component_USkeleton, { class: "h-4 w-24 mb-2" }, null, _parent2, _scopeId));
1417
+ _push2(ssrRenderComponent(_component_USkeleton, { class: "h-3 w-full mb-1" }, null, _parent2, _scopeId));
1418
+ _push2(ssrRenderComponent(_component_USkeleton, { class: "h-3 w-2/3" }, null, _parent2, _scopeId));
1419
+ _push2(`</div>`);
1420
+ });
1421
+ _push2(`<!--]--></div>`);
1422
+ } else if (unref(skills).length === 0) {
1423
+ _push2(`<div class="flex flex-col items-center justify-center py-16 text-dimmed"${_scopeId}>`);
1424
+ _push2(ssrRenderComponent(_component_UIcon, {
1425
+ name: "i-lucide-puzzle",
1426
+ class: "size-12 mb-4"
1427
+ }, null, _parent2, _scopeId));
1428
+ _push2(`<p class="text-lg font-medium"${_scopeId}> No skills found </p><p class="text-sm mt-1"${_scopeId}> Skills are loaded from ~/.claude/skills/ </p></div>`);
1429
+ } else if (unref(filteredSkills).length === 0) {
1430
+ _push2(`<div class="text-center py-12 text-muted text-sm"${_scopeId}> No skills matching &quot;${ssrInterpolate(unref(search))}&quot; </div>`);
1431
+ } else {
1432
+ _push2(`<div class="grid gap-4 sm:grid-cols-2 lg:grid-cols-3"${_scopeId}><!--[-->`);
1433
+ ssrRenderList(unref(filteredSkills), (skill) => {
1434
+ _push2(ssrRenderComponent(_component_SkillsCard, {
1435
+ key: skill.name,
1436
+ skill,
1437
+ onToggle: handleToggle
1438
+ }, null, _parent2, _scopeId));
1439
+ });
1440
+ _push2(`<!--]--></div>`);
1441
+ }
1442
+ _push2(`</div>`);
1443
+ } else {
1444
+ return [
1445
+ createVNode("div", { class: "p-4" }, [
1446
+ unref(loading) ? (openBlock(), createBlock("div", {
1447
+ key: 0,
1448
+ class: "grid gap-4 sm:grid-cols-2 lg:grid-cols-3"
1449
+ }, [
1450
+ (openBlock(), createBlock(Fragment, null, renderList(6, (i) => {
1451
+ return createVNode("div", {
1452
+ key: i,
1453
+ class: "p-4 rounded-lg border border-default bg-elevated/50"
1454
+ }, [
1455
+ createVNode(_component_USkeleton, { class: "h-4 w-24 mb-2" }),
1456
+ createVNode(_component_USkeleton, { class: "h-3 w-full mb-1" }),
1457
+ createVNode(_component_USkeleton, { class: "h-3 w-2/3" })
1458
+ ]);
1459
+ }), 64))
1460
+ ])) : unref(skills).length === 0 ? (openBlock(), createBlock("div", {
1461
+ key: 1,
1462
+ class: "flex flex-col items-center justify-center py-16 text-dimmed"
1463
+ }, [
1464
+ createVNode(_component_UIcon, {
1465
+ name: "i-lucide-puzzle",
1466
+ class: "size-12 mb-4"
1467
+ }),
1468
+ createVNode("p", { class: "text-lg font-medium" }, " No skills found "),
1469
+ createVNode("p", { class: "text-sm mt-1" }, " Skills are loaded from ~/.claude/skills/ ")
1470
+ ])) : unref(filteredSkills).length === 0 ? (openBlock(), createBlock("div", {
1471
+ key: 2,
1472
+ class: "text-center py-12 text-muted text-sm"
1473
+ }, ' No skills matching "' + toDisplayString(unref(search)) + '" ', 1)) : (openBlock(), createBlock("div", {
1474
+ key: 3,
1475
+ class: "grid gap-4 sm:grid-cols-2 lg:grid-cols-3"
1476
+ }, [
1477
+ (openBlock(true), createBlock(Fragment, null, renderList(unref(filteredSkills), (skill) => {
1478
+ return openBlock(), createBlock(_component_SkillsCard, {
1479
+ key: skill.name,
1480
+ skill,
1481
+ onToggle: handleToggle
1482
+ }, null, 8, ["skill"]);
1483
+ }), 128))
1484
+ ]))
1485
+ ])
1486
+ ];
1487
+ }
1488
+ }),
1489
+ _: 1
1490
+ }, _parent));
1491
+ _push(ssrRenderComponent(_component_SkillsCreateModal, {
1492
+ open: unref(createOpen),
1493
+ "onUpdate:open": ($event) => createOpen.value = $event,
1494
+ onCreated: loadSkills
1495
+ }, null, _parent));
1496
+ _push(`</div>`);
1497
+ };
1498
+ }
1499
+ });
1500
+ const _sfc_setup = _sfc_main.setup;
1501
+ _sfc_main.setup = (props, ctx) => {
1502
+ const ssrContext = useSSRContext();
1503
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/skills/index.vue");
1504
+ return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
1505
+ };
1506
+
1507
+ export { _sfc_main as default };
1508
+ //# sourceMappingURL=index-C_LcBBgO.mjs.map