cognova 0.2.2 → 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.
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/-AsXrBBy.js +1 -0
- package/.output/public/_nuxt/2W1RPpXM.js +71 -0
- package/.output/public/_nuxt/{C4pxqdgg.js → 5UFq_rDn.js} +1 -1
- package/.output/public/_nuxt/5Zh-9l8_.js +1 -0
- package/.output/public/_nuxt/{DK9jxJ0g.js → 90UksHlj.js} +1 -1
- package/.output/public/_nuxt/{9IQmsEjr.js → 9QKmiSP_.js} +1 -1
- package/.output/public/_nuxt/{BOj6t-oo.js → ARbTpeGy.js} +1 -1
- package/.output/public/_nuxt/{DyRelyfs.js → ApfLnl06.js} +1 -1
- package/.output/public/_nuxt/{DznawRFW.js → B-2BuR5g.js} +1 -1
- package/.output/public/_nuxt/B4u7Mczo.js +1 -0
- package/.output/public/_nuxt/{DAQhmSv4.js → B5dI_yLq.js} +1 -1
- package/.output/public/_nuxt/{Bm9LyG4F.js → B6fnZcA6.js} +1 -1
- package/.output/public/_nuxt/{9QnH0xQM.js → B7uMSBlN.js} +1 -1
- package/.output/public/_nuxt/BBiRyPlN.js +1 -0
- package/.output/public/_nuxt/{iBGCpHdw.js → BF7413u4.js} +2 -2
- package/.output/public/_nuxt/{4MiwzAAt.js → BGtUoCgi.js} +2 -2
- package/.output/public/_nuxt/{CxuZBC8n.js → BHe4VLtR.js} +1 -1
- package/.output/public/_nuxt/{D3RiUGdz.js → BIMBp1Tj.js} +1 -1
- package/.output/public/_nuxt/{g20UHUCv.js → BIvPdoE3.js} +1 -1
- package/.output/public/_nuxt/BKaRtCjP.js +1 -0
- package/.output/public/_nuxt/BLmc9T7l.js +1 -0
- package/.output/public/_nuxt/BMdnU6BF.js +1 -0
- package/.output/public/_nuxt/{CKkC3Ptm.js → BOgdaA_8.js} +1 -1
- package/.output/public/_nuxt/{BffWCM73.js → BQZfTrUg.js} +1 -1
- package/.output/public/_nuxt/BQnublTW.js +1 -0
- package/.output/public/_nuxt/BSsvedap.js +1 -0
- package/.output/public/_nuxt/{Ci7UEZQh.js → BVypxKRT.js} +1 -1
- package/.output/public/_nuxt/{CYP_MLH8.js → BWqJFnZy.js} +1 -1
- package/.output/public/_nuxt/BXxYdXMr.js +1 -0
- package/.output/public/_nuxt/{D_3Rq1BS.js → B_17gAr_.js} +1 -1
- package/.output/public/_nuxt/B_qzFVK_.js +1 -0
- package/.output/public/_nuxt/{BqKFIuRj.js → BbRPwpIX.js} +1 -1
- package/.output/public/_nuxt/BhrzKbv9.js +1 -0
- package/.output/public/_nuxt/{Cqy_L_ip.js → Bl6LNGlA.js} +1 -1
- package/.output/public/_nuxt/{Fukkqjkf.js → BlPToGni.js} +1 -1
- package/.output/public/_nuxt/{DHKLCQRG.js → BlwHr46F.js} +1 -1
- package/.output/public/_nuxt/{C6aqGHu1.js → BnmwiZbF.js} +1 -1
- package/.output/public/_nuxt/BqtxLJaf.js +1 -0
- package/.output/public/_nuxt/{eko-0FUm.js → BrEXdify.js} +1 -1
- package/.output/public/_nuxt/{D3e44mCL.js → BtNnS4m3.js} +1 -1
- package/.output/public/_nuxt/{BCtfQCzC.js → BtVIBBUN.js} +1 -1
- package/.output/public/_nuxt/Bw5h4Jaf.js +1 -0
- package/.output/public/_nuxt/{FvlxxmNk.js → Bwcpy7gC.js} +2 -2
- package/.output/public/_nuxt/{Db2v8O7O.js → C0TUK31m.js} +1 -1
- package/.output/public/_nuxt/C1T4GK6c.js +1 -0
- package/.output/public/_nuxt/C2ANDZen.js +1 -0
- package/.output/public/_nuxt/{CqU2XbzO.js → C2RZSTuy.js} +1 -1
- package/.output/public/_nuxt/C3dYlP5x.js +1 -0
- package/.output/public/_nuxt/{m5kGCDpI.js → C3sh_tLi.js} +3 -3
- package/.output/public/_nuxt/{BjjCvHLT.js → C4zyxZG7.js} +1 -1
- package/.output/public/_nuxt/{C3FxIITy.js → C5I-XBZT.js} +1 -1
- package/.output/public/_nuxt/{yuf23kh9.js → CC4Goztu.js} +1 -1
- package/.output/public/_nuxt/CC77iplr.js +1 -0
- package/.output/public/_nuxt/{xuzLdW-o.js → CFyD2NHP.js} +1 -1
- package/.output/public/_nuxt/{CsJ9KhQ4.js → CGQDTeaO.js} +1 -1
- package/.output/public/_nuxt/{DnjGH3SQ.js → CHpwuMSk.js} +1 -1
- package/.output/public/_nuxt/CLzcRUcs.js +1 -0
- package/.output/public/_nuxt/CM2phu_3.js +1 -0
- package/.output/public/_nuxt/{Cr8ixbr1.js → CQpYRq61.js} +1 -1
- package/.output/public/_nuxt/{C0JKNMDO.js → CUN4bYcg.js} +1 -1
- package/.output/public/_nuxt/{CmzH6R-N.js → CXoITXft.js} +19 -19
- package/.output/public/_nuxt/CYjcQPl-.js +1 -0
- package/.output/public/_nuxt/{DGX0tzL8.js → CZ32KfaS.js} +1 -1
- package/.output/public/_nuxt/CclZMdca.js +1 -0
- package/.output/public/_nuxt/{C69W7k2j.js → CdpT_Vb6.js} +1 -1
- package/.output/public/_nuxt/CflRLvFC.js +1 -0
- package/.output/public/_nuxt/{gBC9k4Qj.js → CkqNv7sq.js} +2 -2
- package/.output/public/_nuxt/ClXDAYjE.js +1 -0
- package/.output/public/_nuxt/CrZGoMo_.js +1 -0
- package/.output/public/_nuxt/{BZXMQuYP.js → CvJtd2Af.js} +1 -1
- package/.output/public/_nuxt/{DKZxeXDQ.js → Cwtd8e-P.js} +1 -1
- package/.output/public/_nuxt/{nIU2F7ia.js → Cx44SSNp.js} +3 -3
- package/.output/public/_nuxt/{BzOqrmGa.js → CxEVzuCn.js} +3 -3
- package/.output/public/_nuxt/{Dy_Cq5LQ.js → CzIMQevQ.js} +1 -1
- package/.output/public/_nuxt/{D6t3dcTl.js → D0P9llU7.js} +1 -1
- package/.output/public/_nuxt/{JJ3634gV.js → D1DYuOOm.js} +1 -1
- package/.output/public/_nuxt/{BAIz-dEB.js → D1dDc8Vw.js} +1 -1
- package/.output/public/_nuxt/{DSRrg8JT.js → D1r0uqf3.js} +1 -1
- package/.output/public/_nuxt/{CNnJrDvu.js → D3a8R1T6.js} +1 -1
- package/.output/public/_nuxt/{B1X4Bzcy.js → D5EZbuub.js} +1 -1
- package/.output/public/_nuxt/D9V13KTK.js +1 -0
- package/.output/public/_nuxt/DAE2hbP7.js +1 -0
- package/.output/public/_nuxt/{Cvp7FI3T.js → DAIbdyS6.js} +1 -1
- package/.output/public/_nuxt/{EuOqK1A6.js → DAvlXjt0.js} +1 -1
- package/.output/public/_nuxt/DBKzwexZ.js +1 -0
- package/.output/public/_nuxt/{wCGVE8_e.js → DEATxnaF.js} +1 -1
- package/.output/public/_nuxt/{cABRLVee.js → DFg8PvHV.js} +1 -1
- package/.output/public/_nuxt/DM4MyqI-.js +1 -0
- package/.output/public/_nuxt/{Cdt3I3Go.js → DNE7kw9s.js} +1 -1
- package/.output/public/_nuxt/DO0oG4fG.js +1 -0
- package/.output/public/_nuxt/{B6S_ob86.js → DPFugPaB.js} +1 -1
- package/.output/public/_nuxt/{DJjDvbZE.js → DQlXU6_H.js} +1 -1
- package/.output/public/_nuxt/DQvuQpwh.js +1 -0
- package/.output/public/_nuxt/{sf57orEk.js → DRlG_bnX.js} +1 -1
- package/.output/public/_nuxt/{C6RC3lA1.js → DSQj-oMk.js} +1 -1
- package/.output/public/_nuxt/{CeIVm4A3.js → DU6ewLkE.js} +1 -1
- package/.output/public/_nuxt/{Cp2MA0cm.js → DWhzQg7B.js} +1 -1
- package/.output/public/_nuxt/{DJMS2og1.js → D_vK6VPK.js} +1 -1
- package/.output/public/_nuxt/{CihWZmJe.js → DaBp0Gba.js} +2 -2
- package/.output/public/_nuxt/DaH2FbAy.js +1 -0
- package/.output/public/_nuxt/{CtYFj7k1.js → DaJo0CeV.js} +1 -1
- package/.output/public/_nuxt/DauLdT7p.js +1 -0
- package/.output/public/_nuxt/{DG-T44jj.js → DdPA4eTX.js} +1 -1
- package/.output/public/_nuxt/{YuTZB7sD.js → DeAGWdWK.js} +1 -1
- package/.output/public/_nuxt/{CitkKxhw.js → DfF1qofg.js} +1 -1
- package/.output/public/_nuxt/{Daz4MeL6.js → DiGBA-aA.js} +1 -1
- package/.output/public/_nuxt/DiJxF69i.js +1 -0
- package/.output/public/_nuxt/{DIoI0uJm.js → DkBIU-1F.js} +1 -1
- package/.output/public/_nuxt/DmAM6bZ0.js +1 -0
- package/.output/public/_nuxt/DmeAKr3J.js +1 -0
- package/.output/public/_nuxt/DmmTnMzZ.js +1 -0
- package/.output/public/_nuxt/{Lwdv_RKd.js → DqsUSndS.js} +1 -1
- package/.output/public/_nuxt/Dvw-hR3Y.js +1 -0
- package/.output/public/_nuxt/{CVgTJeSq.js → Dz6sfh81.js} +1 -1
- package/.output/public/_nuxt/{BYjadNrw.js → FNhYm5FX.js} +1 -1
- package/.output/public/_nuxt/{Nb2jBtYT.js → HOeKUnra.js} +1 -1
- package/.output/public/_nuxt/{CtchsY6e.js → IR1jkN7B.js} +1 -1
- package/.output/public/_nuxt/{DCzfkCGa.js → MpTk6K7N.js} +1 -1
- package/.output/public/_nuxt/NZ7Wz6LP.js +1 -0
- package/.output/public/_nuxt/{DfQu3kEw.js → PqWbiAD2.js} +1 -1
- package/.output/public/_nuxt/{Jez9DHn7.js → Tu4FhMRc.js} +1 -1
- package/.output/public/_nuxt/{B3y_Qqox.js → UKPXYG4z.js} +1 -1
- package/.output/public/_nuxt/{BlAZO7nq.js → UO2Y9Nve.js} +1 -1
- package/.output/public/_nuxt/{KKK6HVeG.js → XHiJSquP.js} +1 -1
- package/.output/public/_nuxt/YGWAImQo.js +1 -0
- package/.output/public/_nuxt/{ghuJ76mD.js → ZR87XvwB.js} +1 -1
- package/.output/public/_nuxt/{yNrp2XvX.js → _E89BQAO.js} +1 -1
- package/.output/public/_nuxt/{C_BdYLzz.js → aiXk7zRt.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/91727fcc-bf7f-407f-9b1e-092017fcfee0.json +1 -0
- package/.output/public/_nuxt/cL7whuPe.js +1 -0
- package/.output/public/_nuxt/{BasgsT_S.js → ct6_k5IW.js} +1 -1
- package/.output/public/_nuxt/entry._7ZkP07A.css +1 -0
- package/.output/public/_nuxt/{DTDgHTuh.js → fEUQvmn8.js} +2 -2
- package/.output/public/_nuxt/{FNC8XZTk.js → gGlaVUMD.js} +1 -1
- package/.output/public/_nuxt/gjmGkVlL.js +1 -0
- package/.output/public/_nuxt/{IRSbVPIu.js → m5001Uvl.js} +1 -1
- package/.output/public/_nuxt/{_CYZi8HN.js → mQkFCz_M.js} +1 -1
- package/.output/public/_nuxt/{BxXOsXrM.js → p9l1LjVc.js} +10 -10
- package/.output/public/_nuxt/{BsEZoHd1.js → qR_K5W8V.js} +1 -1
- package/.output/public/_nuxt/{BrNqhp1a.js → t_9QQ4MF.js} +7 -7
- package/.output/public/_nuxt/{pcUI-zuY.js → uc4c4mfb.js} +1 -1
- package/.output/public/_nuxt/{usage.vakN1lvi.css → usage.BDeyCZwW.css} +1 -1
- package/.output/public/_nuxt/wPSLEMBw.js +1 -0
- package/.output/public/_nuxt/xKRwul0f.js +1 -0
- package/.output/public/_nuxt/{BWhMnjID.js → xgpiGSxb.js} +1 -1
- package/.output/public/_nuxt/xxnk7j0F.js +1 -0
- package/.output/public/favicon.svg +1 -0
- package/.output/server/chunks/build/A-BWukSPjS.mjs +1 -0
- package/.output/server/chunks/build/Accordion-BaJYea6e.mjs +1 -0
- package/.output/server/chunks/build/AccordionItem-DdG2zgcN.mjs +1 -0
- package/.output/server/chunks/build/Badge-BrU9UkCv.mjs +1 -0
- package/.output/server/chunks/build/Blockquote-DND8wTkU.mjs +1 -0
- package/.output/server/chunks/build/Callout-1halpaEg.mjs +1 -0
- package/.output/server/chunks/build/Card-BHCSDKDt.mjs +1 -0
- package/.output/server/chunks/build/CardGroup-BOuJcNGp.mjs +1 -0
- package/.output/server/chunks/build/Caution-BP3y-TcC.mjs +1 -0
- package/.output/server/chunks/build/Code-B1xkAS5a.mjs +1 -0
- package/.output/server/chunks/build/CodeCollapse-BIhaNa22.mjs +1 -0
- package/.output/server/chunks/build/CodeGroup-BviYyCuo.mjs +1 -0
- package/.output/server/chunks/build/CodeIcon-CWD5HcV7.mjs +2 -1
- package/.output/server/chunks/build/CodePreview-D8PsCQ6m.mjs +1 -0
- package/.output/server/chunks/build/CodeTree-BUTLupmL.mjs +1 -0
- package/.output/server/chunks/build/Collapsible-BIvXNaSq.mjs +1 -0
- package/.output/server/chunks/build/DropdownMenu-BBrV9nXz.mjs +1 -1
- package/.output/server/chunks/build/EditorToolbar-DIfb5arC.mjs +1 -1
- package/.output/server/chunks/build/Em-DsIz_BnD.mjs +1 -0
- package/.output/server/chunks/build/Field-cwwmSQDT.mjs +1 -0
- package/.output/server/chunks/build/FieldGroup-CAIpQv8s.mjs +1 -0
- package/.output/server/chunks/build/H1-BbFNsPyP.mjs +1 -0
- package/.output/server/chunks/build/H2-vHTl_pWr.mjs +1 -0
- package/.output/server/chunks/build/H3-7eTcfO3s.mjs +1 -0
- package/.output/server/chunks/build/H4-C89p_PKO.mjs +1 -0
- package/.output/server/chunks/build/Hr-Bm8RlL3O.mjs +1 -0
- package/.output/server/chunks/build/Icon-Dp9iy0BI.mjs +1 -0
- package/.output/server/chunks/build/Img-CWLmvN1t.mjs +2 -1
- package/.output/server/chunks/build/Kbd-CQG6I_Ch.mjs +1 -0
- package/.output/server/chunks/build/Li-Bw1QUaGv.mjs +1 -0
- package/.output/server/chunks/build/MDC-Dx0YPDhe.mjs +1 -1
- package/.output/server/chunks/build/Note-CHkjm9jm.mjs +1 -0
- package/.output/server/chunks/build/Ol-D-fPnfFM.mjs +1 -0
- package/.output/server/chunks/build/P-B5YI1V9y.mjs +1 -0
- package/.output/server/chunks/build/Pre-ChiJcf3C.mjs +1 -0
- package/.output/server/chunks/build/ProseH5-DahJyv8h.mjs +1 -0
- package/.output/server/chunks/build/ProseH6-C4Is5h6c.mjs +1 -0
- package/.output/server/chunks/build/Select-BB1oLrCD.mjs +1 -1
- package/.output/server/chunks/build/SelectMenu-DPssg6zD.mjs +1 -1
- package/.output/server/chunks/build/Steps-BZpvXfzb.mjs +1 -0
- package/.output/server/chunks/build/Strong-DXJqOWL3.mjs +1 -0
- package/.output/server/chunks/build/Table-BSrLZ7dt.mjs +1 -0
- package/.output/server/chunks/build/Table-DCwTlhCj.mjs +1 -1
- package/.output/server/chunks/build/Tabs-Dk3nvOFF.mjs +1 -0
- package/.output/server/chunks/build/TabsItem-CDhyuBtJ.mjs +1 -0
- package/.output/server/chunks/build/Tbody-CjMT5oH-.mjs +1 -0
- package/.output/server/chunks/build/Td-ZBVaEjFN.mjs +1 -0
- package/.output/server/chunks/build/Th-D317icbd.mjs +1 -0
- package/.output/server/chunks/build/Thead-Ca_ZESTK.mjs +1 -0
- package/.output/server/chunks/build/Tip-CP3oTARR.mjs +1 -0
- package/.output/server/chunks/build/Tooltip-TRyl6dje.mjs +1 -1
- package/.output/server/chunks/build/Tr-6jI8j9gD.mjs +1 -0
- package/.output/server/chunks/build/{docs-Dk2JnYq3.mjs → Tree-DUhXKd8y.mjs} +46 -2235
- package/.output/server/chunks/build/Tree-DUhXKd8y.mjs.map +1 -0
- package/.output/server/chunks/build/Ul-BUGj_CPb.mjs +1 -0
- package/.output/server/chunks/build/Warning-BJ8G6cxC.mjs +1 -0
- package/.output/server/chunks/build/_id_-DN00UDdO.mjs +1 -0
- package/.output/server/chunks/build/_id_-DN00UDdO.mjs.map +1 -1
- package/.output/server/chunks/build/_name_-BnS_KEfX.mjs +1592 -0
- package/.output/server/chunks/build/_name_-BnS_KEfX.mjs.map +1 -0
- package/.output/server/chunks/build/{_uuid_-0UgdUhfY.mjs → _uuid_-DfJaumTE.mjs} +5 -4
- package/.output/server/chunks/build/{_uuid_-0UgdUhfY.mjs.map → _uuid_-DfJaumTE.mjs.map} +1 -1
- package/.output/server/chunks/build/auth-BGPNH2QJ.mjs +20 -0
- package/.output/server/chunks/build/auth-BGPNH2QJ.mjs.map +1 -0
- package/.output/server/chunks/build/auth-CvD7MqKW.mjs +1 -0
- package/.output/server/chunks/build/auth-CvD7MqKW.mjs.map +1 -1
- package/.output/server/chunks/build/chat-CZMiB68R.mjs +1 -0
- package/.output/server/chunks/build/chat-CZMiB68R.mjs.map +1 -1
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/cookie-C_iulBi6.mjs +1 -1
- package/.output/server/chunks/build/{dashboard-YEscLBQN.mjs → dashboard-CLk1NlbR.mjs} +15 -4
- package/.output/server/chunks/build/dashboard-CLk1NlbR.mjs.map +1 -0
- package/.output/server/chunks/build/{dashboard-CpMVYnDV.mjs → dashboard-CiVTAZuF.mjs} +12 -4
- package/.output/server/chunks/build/{dashboard-CpMVYnDV.mjs.map → dashboard-CiVTAZuF.mjs.map} +1 -1
- package/.output/server/chunks/build/docs-ChGwOPg5.mjs +2204 -0
- package/.output/server/chunks/build/docs-ChGwOPg5.mjs.map +1 -0
- package/.output/server/chunks/build/error-404-BzbcNcdU.mjs +1 -0
- package/.output/server/chunks/build/error-500-uCDjGRW8.mjs +1 -0
- package/.output/server/chunks/build/fetch-BB7Qzkwe.mjs +1 -1
- package/.output/server/chunks/build/{hooks-DP8WoUPS.mjs → hooks-D328DcO6.mjs} +3 -2
- package/.output/server/chunks/build/hooks-D328DcO6.mjs.map +1 -0
- package/.output/server/chunks/build/{index-DVx-QlhP.mjs → index-Byt-3Yq6.mjs} +3 -2
- package/.output/server/chunks/build/{index-DVx-QlhP.mjs.map → index-Byt-3Yq6.mjs.map} +1 -1
- package/.output/server/chunks/build/{index-Ba_bPJgk.mjs → index-C9PuieXh.mjs} +3 -2
- package/.output/server/chunks/build/index-C9PuieXh.mjs.map +1 -0
- package/.output/server/chunks/build/index-C_LcBBgO.mjs +1508 -0
- package/.output/server/chunks/build/index-C_LcBBgO.mjs.map +1 -0
- package/.output/server/chunks/build/index-CxDxc9fm.mjs +1 -1
- package/.output/server/chunks/build/index-DzdvIi8V.mjs +1 -0
- package/.output/server/chunks/build/library-CbWcF5wT.mjs +601 -0
- package/.output/server/chunks/build/library-CbWcF5wT.mjs.map +1 -0
- package/.output/server/chunks/build/{login-BAysbpyX.mjs → login-DnnElTl2.mjs} +15 -7
- package/.output/server/chunks/build/{login-BAysbpyX.mjs.map → login-DnnElTl2.mjs.map} +1 -1
- package/.output/server/chunks/build/memories-BqA719O1.mjs +1 -0
- package/.output/server/chunks/build/memories-BqA719O1.mjs.map +1 -1
- package/.output/server/chunks/build/server.mjs +62 -34
- package/.output/server/chunks/build/server.mjs.map +1 -1
- package/.output/server/chunks/build/settings-DdkKCJ00.mjs +1 -0
- package/.output/server/chunks/build/settings-DdkKCJ00.mjs.map +1 -1
- package/.output/server/chunks/build/styles.mjs +2 -2
- package/.output/server/chunks/build/{tasks-DiOi1HG_.mjs → tasks-DnAFqbtt.mjs} +3 -2
- package/.output/server/chunks/build/tasks-DnAFqbtt.mjs.map +1 -0
- package/.output/server/chunks/build/{usage-H_mcd_fz.mjs → usage-CSrBh4Or.mjs} +159 -44
- package/.output/server/chunks/build/{usage-H_mcd_fz.mjs.map → usage-CSrBh4Or.mjs.map} +1 -1
- package/.output/server/chunks/build/{usePreferences-CzC8fRzd.mjs → usePreferences-DH1QjxOj.mjs} +7 -1
- package/.output/server/chunks/build/usePreferences-DH1QjxOj.mjs.map +1 -0
- package/.output/server/chunks/build/{view-Dc8mvzCB.mjs → view-n2sYa4Zh.mjs} +4 -3
- package/.output/server/chunks/build/{view-Dc8mvzCB.mjs.map → view-n2sYa4Zh.mjs.map} +1 -1
- package/.output/server/chunks/build/virtual_nuxt__Users_tony_Documents_GitHub_second-brain_node_modules_.cache_nuxt_.nuxt_mdc-imports-PtwWlZ2H.mjs +1 -0
- package/.output/server/chunks/nitro/nitro.mjs +1247 -824
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
- package/.output/server/chunks/routes/_ws/chat.mjs +2 -1
- package/.output/server/chunks/routes/_ws/chat.mjs.map +1 -1
- package/.output/server/chunks/routes/api/agents/_id/cancel.post.mjs +1 -0
- package/.output/server/chunks/routes/api/agents/_id/cancel.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/agents/_id/run.post.mjs +1 -0
- package/.output/server/chunks/routes/api/agents/_id/run.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/agents/_id/runs.get.mjs +1 -0
- package/.output/server/chunks/routes/api/agents/_id/runs.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/agents/_id/stats.get.mjs +1 -0
- package/.output/server/chunks/routes/api/agents/_id/stats.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/agents/_id_.delete.mjs +1 -0
- package/.output/server/chunks/routes/api/agents/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/agents/_id_.get.mjs +1 -0
- package/.output/server/chunks/routes/api/agents/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/agents/_id_.patch.mjs +1 -0
- package/.output/server/chunks/routes/api/agents/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/agents/stats.get.mjs +1 -0
- package/.output/server/chunks/routes/api/agents/stats.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/_...all_.mjs +1 -0
- package/.output/server/chunks/routes/api/auth/_...all_.mjs.map +1 -1
- package/.output/server/chunks/routes/api/conversations/_id_.delete.mjs +1 -0
- package/.output/server/chunks/routes/api/conversations/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/conversations/_id_.get.mjs +1 -0
- package/.output/server/chunks/routes/api/conversations/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/dashboard/overview.get.mjs +1 -0
- package/.output/server/chunks/routes/api/dashboard/overview.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/documents/_id/public.get.mjs +1 -0
- package/.output/server/chunks/routes/api/documents/_id/public.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/documents/_id/restore.post.mjs +1 -0
- package/.output/server/chunks/routes/api/documents/_id/restore.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/documents/by-path.post.mjs +1 -0
- package/.output/server/chunks/routes/api/documents/by-path.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/documents/index.delete.mjs +1 -0
- package/.output/server/chunks/routes/api/documents/index.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/documents/index.put.mjs +1 -0
- package/.output/server/chunks/routes/api/documents/index.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/fs/delete.post.mjs +1 -0
- package/.output/server/chunks/routes/api/fs/delete.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/fs/list.get.mjs +1 -0
- package/.output/server/chunks/routes/api/fs/list.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/fs/mkdir.post.mjs +1 -0
- package/.output/server/chunks/routes/api/fs/mkdir.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/fs/move.post.mjs +1 -0
- package/.output/server/chunks/routes/api/fs/move.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/fs/read.post.mjs +1 -0
- package/.output/server/chunks/routes/api/fs/read.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/fs/rename.post.mjs +1 -0
- package/.output/server/chunks/routes/api/fs/rename.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/fs/write.post.mjs +1 -0
- package/.output/server/chunks/routes/api/fs/write.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/health.get.mjs +1 -0
- package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/home.get.mjs +1 -0
- package/.output/server/chunks/routes/api/home.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/hooks/index.get.mjs +1 -0
- package/.output/server/chunks/routes/api/hooks/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/hooks/index.post.mjs +1 -0
- package/.output/server/chunks/routes/api/hooks/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/hooks/stats.get.mjs +1 -0
- package/.output/server/chunks/routes/api/hooks/stats.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get.mjs +1 -0
- package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get2.mjs +1 -0
- package/.output/server/chunks/routes/api/index.get2.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get3.mjs +1 -0
- package/.output/server/chunks/routes/api/index.get3.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get4.mjs +1 -0
- package/.output/server/chunks/routes/api/index.get4.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get5.mjs +1 -0
- package/.output/server/chunks/routes/api/index.get5.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get6.mjs +1 -0
- package/.output/server/chunks/routes/api/index.get6.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get7.mjs +40 -38
- package/.output/server/chunks/routes/api/index.get7.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get8.mjs +33 -38
- package/.output/server/chunks/routes/api/index.get8.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get9.mjs +83 -0
- package/.output/server/chunks/routes/api/index.get9.mjs.map +1 -0
- package/.output/server/chunks/routes/api/index.post.mjs +1 -0
- package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post2.mjs +1 -0
- package/.output/server/chunks/routes/api/index.post2.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post3.mjs +1 -0
- package/.output/server/chunks/routes/api/index.post3.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post4.mjs +1 -0
- package/.output/server/chunks/routes/api/index.post4.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.put.mjs +1 -0
- package/.output/server/chunks/routes/api/index.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/memory/_id_.delete.mjs +1 -0
- package/.output/server/chunks/routes/api/memory/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/memory/context.get.mjs +1 -0
- package/.output/server/chunks/routes/api/memory/context.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/memory/extract.post.mjs +2 -1
- package/.output/server/chunks/routes/api/memory/extract.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/memory/search.get.mjs +1 -0
- package/.output/server/chunks/routes/api/memory/search.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/memory/store.post.mjs +1 -0
- package/.output/server/chunks/routes/api/memory/store.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/index.delete.mjs +1 -0
- package/.output/server/chunks/routes/api/projects/index.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/index.get.mjs +1 -0
- package/.output/server/chunks/routes/api/projects/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/projects/index.put.mjs +1 -0
- package/.output/server/chunks/routes/api/projects/index.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/secrets/_key_.delete.mjs +1 -0
- package/.output/server/chunks/routes/api/secrets/_key_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/secrets/_key_.get.mjs +1 -0
- package/.output/server/chunks/routes/api/secrets/_key_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/secrets/_key_.put.mjs +1 -0
- package/.output/server/chunks/routes/api/secrets/_key_.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/skills/_name/export.get.mjs +72 -0
- package/.output/server/chunks/routes/api/skills/_name/export.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/skills/_name/files/create.post.mjs +73 -0
- package/.output/server/chunks/routes/api/skills/_name/files/create.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/skills/_name/files/delete.post.mjs +71 -0
- package/.output/server/chunks/routes/api/skills/_name/files/delete.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/skills/_name/files/read.post.mjs +69 -0
- package/.output/server/chunks/routes/api/skills/_name/files/read.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/skills/_name/files/write.post.mjs +69 -0
- package/.output/server/chunks/routes/api/skills/_name/files/write.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/skills/_name/index.get.mjs +60 -0
- package/.output/server/chunks/routes/api/skills/_name/index.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/skills/_name/rename.post.mjs +87 -0
- package/.output/server/chunks/routes/api/skills/_name/rename.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/skills/_name/toggle.post.mjs +62 -0
- package/.output/server/chunks/routes/api/skills/_name/toggle.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/skills/create.post.mjs +79 -0
- package/.output/server/chunks/routes/api/skills/create.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/skills/generate.post.mjs +143 -0
- package/.output/server/chunks/routes/api/skills/generate.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/skills/import.post.mjs +96 -0
- package/.output/server/chunks/routes/api/skills/import.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/skills/index.get.mjs +82 -0
- package/.output/server/chunks/routes/api/skills/index.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/skills/index.get2.mjs +83 -0
- package/.output/server/chunks/routes/api/skills/index.get2.mjs.map +1 -0
- package/.output/server/chunks/routes/api/skills/library/check-updates.get.mjs +72 -0
- package/.output/server/chunks/routes/api/skills/library/check-updates.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/skills/library/install.post.mjs +90 -0
- package/.output/server/chunks/routes/api/skills/library/install.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/tasks/_id/restore.post.mjs +1 -0
- package/.output/server/chunks/routes/api/tasks/_id/restore.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tasks/index.delete.mjs +1 -0
- package/.output/server/chunks/routes/api/tasks/index.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tasks/index.get.mjs +1 -0
- package/.output/server/chunks/routes/api/tasks/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tasks/index.put.mjs +1 -0
- package/.output/server/chunks/routes/api/tasks/index.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tasks/tags.get.mjs +1 -0
- package/.output/server/chunks/routes/api/tasks/tags.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/usage/stats.get.mjs +4 -1
- package/.output/server/chunks/routes/api/usage/stats.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/user/email.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/user/email.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/notifications.mjs +2 -1
- package/.output/server/chunks/routes/notifications.mjs.map +1 -1
- package/.output/server/chunks/routes/renderer.mjs +2 -2
- package/.output/server/chunks/routes/terminal.mjs +2 -1
- package/.output/server/chunks/routes/terminal.mjs.map +1 -1
- package/.output/server/index.mjs +2 -1
- package/.output/server/index.mjs.map +1 -1
- package/.output/server/node_modules/adm-zip/adm-zip.js +949 -0
- package/.output/server/node_modules/adm-zip/headers/entryHeader.js +374 -0
- package/.output/server/node_modules/adm-zip/headers/index.js +2 -0
- package/.output/server/node_modules/adm-zip/headers/mainHeader.js +130 -0
- package/.output/server/node_modules/adm-zip/methods/deflater.js +33 -0
- package/.output/server/node_modules/adm-zip/methods/index.js +3 -0
- package/.output/server/node_modules/adm-zip/methods/inflater.js +34 -0
- package/.output/server/node_modules/adm-zip/methods/zipcrypto.js +175 -0
- package/.output/server/node_modules/adm-zip/package.json +49 -0
- package/.output/server/node_modules/adm-zip/util/constants.js +142 -0
- package/.output/server/node_modules/adm-zip/util/decoder.js +5 -0
- package/.output/server/node_modules/adm-zip/util/errors.js +63 -0
- package/.output/server/node_modules/adm-zip/util/fattr.js +76 -0
- package/.output/server/node_modules/adm-zip/util/index.js +5 -0
- package/.output/server/node_modules/adm-zip/util/utils.js +336 -0
- package/.output/server/node_modules/adm-zip/zipEntry.js +405 -0
- package/.output/server/node_modules/adm-zip/zipFile.js +446 -0
- package/.output/server/package.json +2 -1
- package/README.md +3 -0
- package/app/app.vue +1 -1
- package/app/components/dashboard/StatCards.vue +21 -2
- package/app/components/usage/UsageCostChart.client.vue +59 -23
- package/app/components/usage/UsageCostChart.server.vue +1 -0
- package/app/components/usage/UsageSourceDonut.client.vue +17 -5
- package/app/components/usage/UsageSourceDonut.server.vue +1 -0
- package/app/components/usage/UsageTopConsumers.vue +13 -3
- package/app/composables/usePreferences.ts +9 -1
- package/app/layouts/auth.vue +0 -10
- package/app/pages/login.vue +18 -8
- package/app/pages/skills/[name].vue +12 -0
- package/app/pages/skills/index.vue +47 -0
- package/app/pages/usage.vue +43 -16
- package/dist/cli/index.js +12 -13
- package/package.json +5 -3
- package/server/api/skills/[name]/export.get.ts +45 -0
- package/server/api/skills/import.post.ts +87 -0
- package/server/api/usage/stats.get.ts +4 -2
- package/shared/types/index.ts +2 -1
- package/.output/public/_nuxt/5ZXA0Ckq.js +0 -1
- package/.output/public/_nuxt/BIIJhjQO.js +0 -1
- package/.output/public/_nuxt/BIckl6wA.js +0 -1
- package/.output/public/_nuxt/BJ3o57WW.js +0 -1
- package/.output/public/_nuxt/BNetzZzF.js +0 -1
- package/.output/public/_nuxt/BS0ofHJK.js +0 -1
- package/.output/public/_nuxt/B_3_hrpn.js +0 -1
- package/.output/public/_nuxt/BaBZjmMC.js +0 -1
- package/.output/public/_nuxt/BaMqDm5u.js +0 -1
- package/.output/public/_nuxt/BhzMoffi.js +0 -1
- package/.output/public/_nuxt/BlhFigLL.js +0 -1
- package/.output/public/_nuxt/BoIxv-gM.js +0 -1
- package/.output/public/_nuxt/Br19oYkq.js +0 -1
- package/.output/public/_nuxt/C0kh_F7v.js +0 -1
- package/.output/public/_nuxt/C61KgSco.js +0 -1
- package/.output/public/_nuxt/CJUdYEdO.js +0 -1
- package/.output/public/_nuxt/CVJQGP1Q.js +0 -1
- package/.output/public/_nuxt/CWMUi89H.js +0 -1
- package/.output/public/_nuxt/Cdu2qGgq.js +0 -1
- package/.output/public/_nuxt/CeIu7z4p.js +0 -1
- package/.output/public/_nuxt/D2689qk4.js +0 -1
- package/.output/public/_nuxt/D31L7Ks6.js +0 -1
- package/.output/public/_nuxt/DB359q8R.js +0 -1
- package/.output/public/_nuxt/DHG66LPS.js +0 -1
- package/.output/public/_nuxt/DJ5V-y_x.js +0 -1
- package/.output/public/_nuxt/DLETdGFL.js +0 -1
- package/.output/public/_nuxt/DOICd-Ld.js +0 -1
- package/.output/public/_nuxt/DPEcH-gi.js +0 -65
- package/.output/public/_nuxt/Db8-_gO7.js +0 -1
- package/.output/public/_nuxt/DgV-EDJ9.js +0 -1
- package/.output/public/_nuxt/Dp2X5R2m.js +0 -1
- package/.output/public/_nuxt/DqB723Z0.js +0 -1
- package/.output/public/_nuxt/Q8Ps7oN5.js +0 -1
- package/.output/public/_nuxt/SXTDhzp6.js +0 -1
- package/.output/public/_nuxt/Sg2Lwc46.js +0 -1
- package/.output/public/_nuxt/_J_7XIn-.js +0 -1
- package/.output/public/_nuxt/builds/meta/a1e9100c-1a4f-4f7e-bb53-9dbe0d07effb.json +0 -1
- package/.output/public/_nuxt/entry.CGxIBGAf.css +0 -1
- package/.output/public/_nuxt/inmzPrjz.js +0 -1
- package/.output/public/_nuxt/oIX-ZDN6.js +0 -1
- package/.output/server/chunks/build/auth-CDHRohj4.mjs +0 -77
- package/.output/server/chunks/build/auth-CDHRohj4.mjs.map +0 -1
- package/.output/server/chunks/build/dashboard-YEscLBQN.mjs.map +0 -1
- package/.output/server/chunks/build/docs-Dk2JnYq3.mjs.map +0 -1
- package/.output/server/chunks/build/hooks-DP8WoUPS.mjs.map +0 -1
- package/.output/server/chunks/build/index-Ba_bPJgk.mjs.map +0 -1
- package/.output/server/chunks/build/tasks-DiOi1HG_.mjs.map +0 -1
- package/.output/server/chunks/build/usePreferences-CzC8fRzd.mjs.map +0 -1
- /package/.output/public/_nuxt/{useCopyToClipboard.Be_IvFWy.css → CodeEditor.Be_IvFWy.css} +0 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { d as defineEventHandler, g as getRouterParam, c as createError, e as readBody, Q as getSkillsDir, R as getInactiveSkillsDir } from '../../../../../nitro/nitro.mjs';
|
|
2
|
+
import { mkdir, writeFile, stat } from 'fs/promises';
|
|
3
|
+
import { normalize, join, dirname } from 'path';
|
|
4
|
+
import '@anthropic-ai/claude-agent-sdk';
|
|
5
|
+
import 'crypto';
|
|
6
|
+
import 'module';
|
|
7
|
+
import 'os';
|
|
8
|
+
import 'node:http';
|
|
9
|
+
import 'node:https';
|
|
10
|
+
import 'node:crypto';
|
|
11
|
+
import 'stream';
|
|
12
|
+
import 'events';
|
|
13
|
+
import 'http';
|
|
14
|
+
import 'buffer';
|
|
15
|
+
import 'zlib';
|
|
16
|
+
import 'https';
|
|
17
|
+
import 'net';
|
|
18
|
+
import 'tls';
|
|
19
|
+
import 'url';
|
|
20
|
+
import 'node:events';
|
|
21
|
+
import 'node:buffer';
|
|
22
|
+
import 'node:fs';
|
|
23
|
+
import 'node:path';
|
|
24
|
+
import 'fs';
|
|
25
|
+
import 'drizzle-orm/postgres-js/migrator';
|
|
26
|
+
import 'drizzle-orm';
|
|
27
|
+
import 'drizzle-orm/postgres-js';
|
|
28
|
+
import 'postgres';
|
|
29
|
+
import 'drizzle-orm/pg-core';
|
|
30
|
+
import 'better-auth';
|
|
31
|
+
import 'better-auth/adapters/drizzle';
|
|
32
|
+
import 'chokidar';
|
|
33
|
+
import 'gray-matter';
|
|
34
|
+
import 'cron';
|
|
35
|
+
import 'node:url';
|
|
36
|
+
import '@iconify/utils';
|
|
37
|
+
import 'consola';
|
|
38
|
+
|
|
39
|
+
const write_post = defineEventHandler(async (event) => {
|
|
40
|
+
const name = getRouterParam(event, "name");
|
|
41
|
+
if (!name)
|
|
42
|
+
throw createError({ statusCode: 400, message: "Skill name required" });
|
|
43
|
+
const body = await readBody(event);
|
|
44
|
+
if (!(body == null ? void 0 : body.path))
|
|
45
|
+
throw createError({ statusCode: 400, message: "File path is required" });
|
|
46
|
+
if (typeof body.content !== "string")
|
|
47
|
+
throw createError({ statusCode: 400, message: "Content is required" });
|
|
48
|
+
const skillDir = await findSkillDir(name);
|
|
49
|
+
if (!skillDir)
|
|
50
|
+
throw createError({ statusCode: 404, message: `Skill '${name}' not found` });
|
|
51
|
+
const filePath = normalize(join(skillDir, body.path));
|
|
52
|
+
if (!filePath.startsWith(skillDir))
|
|
53
|
+
throw createError({ statusCode: 403, message: "Path traversal not allowed" });
|
|
54
|
+
await mkdir(dirname(filePath), { recursive: true });
|
|
55
|
+
await writeFile(filePath, body.content, "utf-8");
|
|
56
|
+
return { data: { path: body.path, saved: true } };
|
|
57
|
+
});
|
|
58
|
+
async function findSkillDir(name) {
|
|
59
|
+
const activeDir = join(getSkillsDir(), name);
|
|
60
|
+
const activeStat = await stat(activeDir).catch(() => null);
|
|
61
|
+
if (activeStat == null ? void 0 : activeStat.isDirectory()) return activeDir;
|
|
62
|
+
const inactiveDir = join(getInactiveSkillsDir(), name);
|
|
63
|
+
const inactiveStat = await stat(inactiveDir).catch(() => null);
|
|
64
|
+
if (inactiveStat == null ? void 0 : inactiveStat.isDirectory()) return inactiveDir;
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export { write_post as default };
|
|
69
|
+
//# sourceMappingURL=write.post.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write.post.mjs","sources":["../../../../../../../../server/api/skills/[name]/files/write.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,MAAA,IAAA,GAAA,cAAA,CAAA,KAAA,EAAA,MAAA,CAAA;AACA,EAAA,IAAA,CAAA,IAAA;AACA,IAAA,MAAA,YAAA,EAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,uBAAA,CAAA;AAEA,EAAA,MAAA,IAAA,GAAA,MAAA,QAAA,CAAA,KAAA,CAAA;AACA,EAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA,IAAA,CAAA;AACA,IAAA,MAAA,YAAA,EAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,yBAAA,CAAA;AACA,EAAA,IAAA,OAAA,KAAA,OAAA,KAAA,QAAA;AACA,IAAA,MAAA,YAAA,EAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,uBAAA,CAAA;AAEA,EAAA,MAAA,QAAA,GAAA,MAAA,YAAA,CAAA,IAAA,CAAA;AACA,EAAA,IAAA,CAAA,QAAA;AACA,IAAA,MAAA,WAAA,CAAA,EAAA,UAAA,EAAA,GAAA,EAAA,SAAA,CAAA,OAAA,EAAA,IAAA,eAAA,CAAA;AAGA,EAAA,MAAA,WAAA,SAAA,CAAA,IAAA,CAAA,QAAA,EAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AACA,EAAA,IAAA,CAAA,QAAA,CAAA,UAAA,CAAA,QAAA,CAAA;AACA,IAAA,MAAA,YAAA,EAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,8BAAA,CAAA;AAGA,EAAA,MAAA,MAAA,OAAA,CAAA,QAAA,GAAA,EAAA,SAAA,EAAA,MAAA,CAAA;AACA,EAAA,MAAA,SAAA,CAAA,QAAA,EAAA,IAAA,CAAA,OAAA,EAAA,OAAA,CAAA;AAEA,EAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,KAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA;AACA,CAAA,CAAA;AAEA,eAAA,aAAA,IAAA,EAAA;AACA,EAAA,MAAA,SAAA,GAAA,IAAA,CAAA,YAAA,EAAA,EAAA,IAAA,CAAA;AACA,EAAA,MAAA,aAAA,MAAA,IAAA,CAAA,SAAA,CAAA,CAAA,KAAA,CAAA,MAAA,IAAA,CAAA;AACA,EAAA,IAAA,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAA,eAAA,OAAA,SAAA;AAEA,EAAA,MAAA,WAAA,GAAA,IAAA,CAAA,oBAAA,EAAA,EAAA,IAAA,CAAA;AACA,EAAA,MAAA,eAAA,MAAA,IAAA,CAAA,WAAA,CAAA,CAAA,KAAA,CAAA,MAAA,IAAA,CAAA;AACA,EAAA,IAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAA,eAAA,OAAA,WAAA;AAEA,EAAA,OAAA,IAAA;AACA;;;;"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { d as defineEventHandler, g as getRouterParam, c as createError, U as buildSkillFileTree, Q as getSkillsDir, R as getInactiveSkillsDir } from '../../../../nitro/nitro.mjs';
|
|
2
|
+
import { stat } from 'fs/promises';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import '@anthropic-ai/claude-agent-sdk';
|
|
5
|
+
import 'crypto';
|
|
6
|
+
import 'module';
|
|
7
|
+
import 'os';
|
|
8
|
+
import 'node:http';
|
|
9
|
+
import 'node:https';
|
|
10
|
+
import 'node:crypto';
|
|
11
|
+
import 'stream';
|
|
12
|
+
import 'events';
|
|
13
|
+
import 'http';
|
|
14
|
+
import 'buffer';
|
|
15
|
+
import 'zlib';
|
|
16
|
+
import 'https';
|
|
17
|
+
import 'net';
|
|
18
|
+
import 'tls';
|
|
19
|
+
import 'url';
|
|
20
|
+
import 'node:events';
|
|
21
|
+
import 'node:buffer';
|
|
22
|
+
import 'node:fs';
|
|
23
|
+
import 'node:path';
|
|
24
|
+
import 'fs';
|
|
25
|
+
import 'drizzle-orm/postgres-js/migrator';
|
|
26
|
+
import 'drizzle-orm';
|
|
27
|
+
import 'drizzle-orm/postgres-js';
|
|
28
|
+
import 'postgres';
|
|
29
|
+
import 'drizzle-orm/pg-core';
|
|
30
|
+
import 'better-auth';
|
|
31
|
+
import 'better-auth/adapters/drizzle';
|
|
32
|
+
import 'chokidar';
|
|
33
|
+
import 'gray-matter';
|
|
34
|
+
import 'cron';
|
|
35
|
+
import 'node:url';
|
|
36
|
+
import '@iconify/utils';
|
|
37
|
+
import 'consola';
|
|
38
|
+
|
|
39
|
+
const index_get = defineEventHandler(async (event) => {
|
|
40
|
+
const name = getRouterParam(event, "name");
|
|
41
|
+
if (!name)
|
|
42
|
+
throw createError({ statusCode: 400, message: "Skill name required" });
|
|
43
|
+
const skillDir = await findSkillDir(name);
|
|
44
|
+
if (!skillDir)
|
|
45
|
+
throw createError({ statusCode: 404, message: `Skill '${name}' not found` });
|
|
46
|
+
const files = await buildSkillFileTree(skillDir);
|
|
47
|
+
return { data: files };
|
|
48
|
+
});
|
|
49
|
+
async function findSkillDir(name) {
|
|
50
|
+
const activeDir = join(getSkillsDir(), name);
|
|
51
|
+
const activeStat = await stat(activeDir).catch(() => null);
|
|
52
|
+
if (activeStat == null ? void 0 : activeStat.isDirectory()) return activeDir;
|
|
53
|
+
const inactiveDir = join(getInactiveSkillsDir(), name);
|
|
54
|
+
const inactiveStat = await stat(inactiveDir).catch(() => null);
|
|
55
|
+
if (inactiveStat == null ? void 0 : inactiveStat.isDirectory()) return inactiveDir;
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export { index_get as default };
|
|
60
|
+
//# sourceMappingURL=index.get.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.get.mjs","sources":["../../../../../../../server/api/skills/[name]/files/index.get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,kBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,MAAA,IAAA,GAAA,cAAA,CAAA,KAAA,EAAA,MAAA,CAAA;AACA,EAAA,IAAA,CAAA,IAAA;AACA,IAAA,MAAA,YAAA,EAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,uBAAA,CAAA;AAEA,EAAA,MAAA,QAAA,GAAA,MAAA,YAAA,CAAA,IAAA,CAAA;AACA,EAAA,IAAA,CAAA,QAAA;AACA,IAAA,MAAA,WAAA,CAAA,EAAA,UAAA,EAAA,GAAA,EAAA,SAAA,CAAA,OAAA,EAAA,IAAA,eAAA,CAAA;AAEA,EAAA,MAAA,KAAA,GAAA,MAAA,kBAAA,CAAA,QAAA,CAAA;AACA,EAAA,OAAA,EAAA,MAAA,KAAA,EAAA;AACA,CAAA,CAAA;AAEA,eAAA,aAAA,IAAA,EAAA;AACA,EAAA,MAAA,SAAA,GAAA,IAAA,CAAA,YAAA,EAAA,EAAA,IAAA,CAAA;AACA,EAAA,MAAA,aAAA,MAAA,IAAA,CAAA,SAAA,CAAA,CAAA,KAAA,CAAA,MAAA,IAAA,CAAA;AACA,EAAA,IAAA,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAA,eAAA,OAAA,SAAA;AAEA,EAAA,MAAA,WAAA,GAAA,IAAA,CAAA,oBAAA,EAAA,EAAA,IAAA,CAAA;AACA,EAAA,MAAA,eAAA,MAAA,IAAA,CAAA,WAAA,CAAA,CAAA,KAAA,CAAA,MAAA,IAAA,CAAA;AACA,EAAA,IAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAA,eAAA,OAAA,WAAA;AAEA,EAAA,OAAA,IAAA;AACA;;;;"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { d as defineEventHandler, g as getRouterParam, c as createError, W as isCoreSkill, e as readBody, P as validateSkillName, Q as getSkillsDir, R as getInactiveSkillsDir } from '../../../../nitro/nitro.mjs';
|
|
2
|
+
import { stat, rename, readFile, writeFile } from 'fs/promises';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import '@anthropic-ai/claude-agent-sdk';
|
|
5
|
+
import 'crypto';
|
|
6
|
+
import 'module';
|
|
7
|
+
import 'os';
|
|
8
|
+
import 'node:http';
|
|
9
|
+
import 'node:https';
|
|
10
|
+
import 'node:crypto';
|
|
11
|
+
import 'stream';
|
|
12
|
+
import 'events';
|
|
13
|
+
import 'http';
|
|
14
|
+
import 'buffer';
|
|
15
|
+
import 'zlib';
|
|
16
|
+
import 'https';
|
|
17
|
+
import 'net';
|
|
18
|
+
import 'tls';
|
|
19
|
+
import 'url';
|
|
20
|
+
import 'node:events';
|
|
21
|
+
import 'node:buffer';
|
|
22
|
+
import 'node:fs';
|
|
23
|
+
import 'node:path';
|
|
24
|
+
import 'fs';
|
|
25
|
+
import 'drizzle-orm/postgres-js/migrator';
|
|
26
|
+
import 'drizzle-orm';
|
|
27
|
+
import 'drizzle-orm/postgres-js';
|
|
28
|
+
import 'postgres';
|
|
29
|
+
import 'drizzle-orm/pg-core';
|
|
30
|
+
import 'better-auth';
|
|
31
|
+
import 'better-auth/adapters/drizzle';
|
|
32
|
+
import 'chokidar';
|
|
33
|
+
import 'gray-matter';
|
|
34
|
+
import 'cron';
|
|
35
|
+
import 'node:url';
|
|
36
|
+
import '@iconify/utils';
|
|
37
|
+
import 'consola';
|
|
38
|
+
|
|
39
|
+
const rename_post = defineEventHandler(async (event) => {
|
|
40
|
+
const name = getRouterParam(event, "name");
|
|
41
|
+
if (!name)
|
|
42
|
+
throw createError({ statusCode: 400, message: "Skill name required" });
|
|
43
|
+
if (isCoreSkill(name))
|
|
44
|
+
throw createError({ statusCode: 403, message: `'${name}' is a core skill and cannot be renamed` });
|
|
45
|
+
const body = await readBody(event);
|
|
46
|
+
if (!(body == null ? void 0 : body.newName))
|
|
47
|
+
throw createError({ statusCode: 400, message: "newName is required" });
|
|
48
|
+
const nameError = validateSkillName(body.newName);
|
|
49
|
+
if (nameError)
|
|
50
|
+
throw createError({ statusCode: 400, message: nameError });
|
|
51
|
+
const activeDir = join(getSkillsDir(), name);
|
|
52
|
+
const inactiveDir = join(getInactiveSkillsDir(), name);
|
|
53
|
+
let currentDir = "";
|
|
54
|
+
let baseDir = "";
|
|
55
|
+
const activeStat = await stat(activeDir).catch(() => null);
|
|
56
|
+
if (activeStat == null ? void 0 : activeStat.isDirectory()) {
|
|
57
|
+
currentDir = activeDir;
|
|
58
|
+
baseDir = getSkillsDir();
|
|
59
|
+
} else {
|
|
60
|
+
const inactiveStat = await stat(inactiveDir).catch(() => null);
|
|
61
|
+
if (inactiveStat == null ? void 0 : inactiveStat.isDirectory()) {
|
|
62
|
+
currentDir = inactiveDir;
|
|
63
|
+
baseDir = getInactiveSkillsDir();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (!currentDir)
|
|
67
|
+
throw createError({ statusCode: 404, message: `Skill '${name}' not found` });
|
|
68
|
+
const newDir = join(baseDir, body.newName);
|
|
69
|
+
const newDirStat = await stat(newDir).catch(() => null);
|
|
70
|
+
if (newDirStat)
|
|
71
|
+
throw createError({ statusCode: 409, message: `Skill '${body.newName}' already exists` });
|
|
72
|
+
await rename(currentDir, newDir);
|
|
73
|
+
const skillMdPath = join(newDir, "SKILL.md");
|
|
74
|
+
const content = await readFile(skillMdPath, "utf-8").catch(() => "");
|
|
75
|
+
if (content) {
|
|
76
|
+
const updated = content.replace(
|
|
77
|
+
/^(name:\s*).+$/m,
|
|
78
|
+
`$1${body.newName}`
|
|
79
|
+
);
|
|
80
|
+
if (updated !== content)
|
|
81
|
+
await writeFile(skillMdPath, updated, "utf-8");
|
|
82
|
+
}
|
|
83
|
+
return { data: { name: body.newName } };
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
export { rename_post as default };
|
|
87
|
+
//# sourceMappingURL=rename.post.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rename.post.mjs","sources":["../../../../../../../server/api/skills/[name]/rename.post.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { d as defineEventHandler, g as getRouterParam, c as createError, W as isCoreSkill, Q as getSkillsDir, R as getInactiveSkillsDir } from '../../../../nitro/nitro.mjs';
|
|
2
|
+
import { stat, mkdir, rename } from 'fs/promises';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import '@anthropic-ai/claude-agent-sdk';
|
|
5
|
+
import 'crypto';
|
|
6
|
+
import 'module';
|
|
7
|
+
import 'os';
|
|
8
|
+
import 'node:http';
|
|
9
|
+
import 'node:https';
|
|
10
|
+
import 'node:crypto';
|
|
11
|
+
import 'stream';
|
|
12
|
+
import 'events';
|
|
13
|
+
import 'http';
|
|
14
|
+
import 'buffer';
|
|
15
|
+
import 'zlib';
|
|
16
|
+
import 'https';
|
|
17
|
+
import 'net';
|
|
18
|
+
import 'tls';
|
|
19
|
+
import 'url';
|
|
20
|
+
import 'node:events';
|
|
21
|
+
import 'node:buffer';
|
|
22
|
+
import 'node:fs';
|
|
23
|
+
import 'node:path';
|
|
24
|
+
import 'fs';
|
|
25
|
+
import 'drizzle-orm/postgres-js/migrator';
|
|
26
|
+
import 'drizzle-orm';
|
|
27
|
+
import 'drizzle-orm/postgres-js';
|
|
28
|
+
import 'postgres';
|
|
29
|
+
import 'drizzle-orm/pg-core';
|
|
30
|
+
import 'better-auth';
|
|
31
|
+
import 'better-auth/adapters/drizzle';
|
|
32
|
+
import 'chokidar';
|
|
33
|
+
import 'gray-matter';
|
|
34
|
+
import 'cron';
|
|
35
|
+
import 'node:url';
|
|
36
|
+
import '@iconify/utils';
|
|
37
|
+
import 'consola';
|
|
38
|
+
|
|
39
|
+
const toggle_post = defineEventHandler(async (event) => {
|
|
40
|
+
const name = getRouterParam(event, "name");
|
|
41
|
+
if (!name)
|
|
42
|
+
throw createError({ statusCode: 400, message: "Skill name required" });
|
|
43
|
+
if (isCoreSkill(name))
|
|
44
|
+
throw createError({ statusCode: 403, message: `'${name}' is a core skill and cannot be disabled` });
|
|
45
|
+
const activeDir = join(getSkillsDir(), name);
|
|
46
|
+
const inactiveDir = join(getInactiveSkillsDir(), name);
|
|
47
|
+
const activeStat = await stat(activeDir).catch(() => null);
|
|
48
|
+
if (activeStat == null ? void 0 : activeStat.isDirectory()) {
|
|
49
|
+
await mkdir(getInactiveSkillsDir(), { recursive: true });
|
|
50
|
+
await rename(activeDir, inactiveDir);
|
|
51
|
+
return { data: { name, active: false } };
|
|
52
|
+
}
|
|
53
|
+
const inactiveStat = await stat(inactiveDir).catch(() => null);
|
|
54
|
+
if (inactiveStat == null ? void 0 : inactiveStat.isDirectory()) {
|
|
55
|
+
await rename(inactiveDir, activeDir);
|
|
56
|
+
return { data: { name, active: true } };
|
|
57
|
+
}
|
|
58
|
+
throw createError({ statusCode: 404, message: `Skill '${name}' not found` });
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
export { toggle_post as default };
|
|
62
|
+
//# sourceMappingURL=toggle.post.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toggle.post.mjs","sources":["../../../../../../../server/api/skills/[name]/toggle.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,oBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,MAAA,IAAA,GAAA,cAAA,CAAA,KAAA,EAAA,MAAA,CAAA;AACA,EAAA,IAAA,CAAA,IAAA;AACA,IAAA,MAAA,YAAA,EAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,uBAAA,CAAA;AAEA,EAAA,IAAA,YAAA,IAAA,CAAA;AACA,IAAA,MAAA,WAAA,CAAA,EAAA,UAAA,EAAA,GAAA,EAAA,SAAA,CAAA,CAAA,EAAA,IAAA,4CAAA,CAAA;AAEA,EAAA,MAAA,SAAA,GAAA,IAAA,CAAA,YAAA,EAAA,EAAA,IAAA,CAAA;AACA,EAAA,MAAA,WAAA,GAAA,IAAA,CAAA,oBAAA,EAAA,EAAA,IAAA,CAAA;AAEA,EAAA,MAAA,aAAA,MAAA,IAAA,CAAA,SAAA,CAAA,CAAA,KAAA,CAAA,MAAA,IAAA,CAAA;AACA,EAAA,IAAA,yCAAA,WAAA,EAAA,EAAA;AAEA,IAAA,MAAA,MAAA,oBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,MAAA,CAAA;AACA,IAAA,MAAA,MAAA,CAAA,WAAA,WAAA,CAAA;AACA,IAAA,OAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA;AAAA,EACA;AAEA,EAAA,MAAA,eAAA,MAAA,IAAA,CAAA,WAAA,CAAA,CAAA,KAAA,CAAA,MAAA,IAAA,CAAA;AACA,EAAA,IAAA,6CAAA,WAAA,EAAA,EAAA;AAEA,IAAA,MAAA,MAAA,CAAA,aAAA,SAAA,CAAA;AACA,IAAA,OAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA;AAAA,EACA;AAEA,EAAA,MAAA,WAAA,CAAA,EAAA,UAAA,EAAA,GAAA,EAAA,SAAA,CAAA,OAAA,EAAA,IAAA,eAAA,CAAA;AACA,CAAA,CAAA;;;;"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { d as defineEventHandler, e as readBody, c as createError, P as validateSkillName, Q as getSkillsDir } from '../../../nitro/nitro.mjs';
|
|
2
|
+
import { stat, mkdir, writeFile } from 'fs/promises';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import '@anthropic-ai/claude-agent-sdk';
|
|
5
|
+
import 'crypto';
|
|
6
|
+
import 'module';
|
|
7
|
+
import 'os';
|
|
8
|
+
import 'node:http';
|
|
9
|
+
import 'node:https';
|
|
10
|
+
import 'node:crypto';
|
|
11
|
+
import 'stream';
|
|
12
|
+
import 'events';
|
|
13
|
+
import 'http';
|
|
14
|
+
import 'buffer';
|
|
15
|
+
import 'zlib';
|
|
16
|
+
import 'https';
|
|
17
|
+
import 'net';
|
|
18
|
+
import 'tls';
|
|
19
|
+
import 'url';
|
|
20
|
+
import 'node:events';
|
|
21
|
+
import 'node:buffer';
|
|
22
|
+
import 'node:fs';
|
|
23
|
+
import 'node:path';
|
|
24
|
+
import 'fs';
|
|
25
|
+
import 'drizzle-orm/postgres-js/migrator';
|
|
26
|
+
import 'drizzle-orm';
|
|
27
|
+
import 'drizzle-orm/postgres-js';
|
|
28
|
+
import 'postgres';
|
|
29
|
+
import 'drizzle-orm/pg-core';
|
|
30
|
+
import 'better-auth';
|
|
31
|
+
import 'better-auth/adapters/drizzle';
|
|
32
|
+
import 'chokidar';
|
|
33
|
+
import 'gray-matter';
|
|
34
|
+
import 'cron';
|
|
35
|
+
import 'node:url';
|
|
36
|
+
import '@iconify/utils';
|
|
37
|
+
import 'consola';
|
|
38
|
+
|
|
39
|
+
const create_post = defineEventHandler(async (event) => {
|
|
40
|
+
const body = await readBody(event);
|
|
41
|
+
if (!(body == null ? void 0 : body.name))
|
|
42
|
+
throw createError({ statusCode: 400, message: "Skill name is required" });
|
|
43
|
+
const nameError = validateSkillName(body.name);
|
|
44
|
+
if (nameError)
|
|
45
|
+
throw createError({ statusCode: 400, message: nameError });
|
|
46
|
+
const skillDir = join(getSkillsDir(), body.name);
|
|
47
|
+
const existing = await stat(skillDir).catch(() => null);
|
|
48
|
+
if (existing)
|
|
49
|
+
throw createError({ statusCode: 409, message: `Skill '${body.name}' already exists` });
|
|
50
|
+
await mkdir(skillDir, { recursive: true });
|
|
51
|
+
const description = body.description || `Description for ${body.name}`;
|
|
52
|
+
const skillMd = `---
|
|
53
|
+
name: ${body.name}
|
|
54
|
+
description: ${description}
|
|
55
|
+
allowed-tools: Bash, Read
|
|
56
|
+
metadata:
|
|
57
|
+
version: "1.0.0"
|
|
58
|
+
requires-secrets: []
|
|
59
|
+
author: ""
|
|
60
|
+
repository: ""
|
|
61
|
+
installed-from: ""
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
# ${body.name}
|
|
65
|
+
|
|
66
|
+
${description}
|
|
67
|
+
|
|
68
|
+
## Commands
|
|
69
|
+
|
|
70
|
+
\`\`\`bash
|
|
71
|
+
python3 ~/.claude/skills/${body.name}/${body.name}.py <command>
|
|
72
|
+
\`\`\`
|
|
73
|
+
`;
|
|
74
|
+
await writeFile(join(skillDir, "SKILL.md"), skillMd, "utf-8");
|
|
75
|
+
return { data: { name: body.name, path: skillDir } };
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
export { create_post as default };
|
|
79
|
+
//# sourceMappingURL=create.post.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.post.mjs","sources":["../../../../../../server/api/skills/create.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,oBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,MAAA,IAAA,GAAA,MAAA,QAAA,CAAA,KAAA,CAAA;AACA,EAAA,IAAA,EAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA,IAAA,CAAA;AACA,IAAA,MAAA,YAAA,EAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,0BAAA,CAAA;AAEA,EAAA,MAAA,SAAA,GAAA,iBAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AACA,EAAA,IAAA,SAAA;AACA,IAAA,MAAA,YAAA,EAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,WAAA,CAAA;AAEA,EAAA,MAAA,QAAA,GAAA,IAAA,CAAA,YAAA,EAAA,EAAA,KAAA,IAAA,CAAA;AAGA,EAAA,MAAA,WAAA,MAAA,IAAA,CAAA,QAAA,CAAA,CAAA,KAAA,CAAA,MAAA,IAAA,CAAA;AACA,EAAA,IAAA,QAAA;AACA,IAAA,MAAA,WAAA,CAAA,EAAA,UAAA,EAAA,GAAA,EAAA,SAAA,CAAA,OAAA,EAAA,IAAA,CAAA,IAAA,CAAA,gBAAA,CAAA,EAAA,CAAA;AAEA,EAAA,MAAA,KAAA,CAAA,QAAA,EAAA,EAAA,SAAA,EAAA,MAAA,CAAA;AAEA,EAAA,MAAA,WAAA,GAAA,IAAA,CAAA,WAAA,IAAA,CAAA,gBAAA,EAAA,KAAA,IAAA,CAAA,CAAA;AAEA,EAAA,MAAA,OAAA,GAAA,CAAA;AAAA,MAAA,EACA,KAAA,IAAA;AAAA,aAAA,EACA,WAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA,EAAA,EAUA,KAAA,IAAA;;AAAA,EAEA,WAAA;;AAAA;;AAAA;AAAA,yBAAA,EAKA,IAAA,CAAA,IAAA,CAAA,CAAA,EAAA,IAAA,CAAA,IAAA,CAAA;AAAA;AAAA,CAAA;AAIA,EAAA,MAAA,UAAA,IAAA,CAAA,QAAA,EAAA,UAAA,CAAA,EAAA,SAAA,OAAA,CAAA;AAEA,EAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,KAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA;AACA,CAAA,CAAA;;;;"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { d as defineEventHandler, e as readBody, c as createError, P as validateSkillName, R as getInactiveSkillsDir, X as logTokenUsage } from '../../../nitro/nitro.mjs';
|
|
2
|
+
import { stat, mkdir, rm, readdir } from 'fs/promises';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import { query } from '@anthropic-ai/claude-agent-sdk';
|
|
5
|
+
import 'crypto';
|
|
6
|
+
import 'module';
|
|
7
|
+
import 'os';
|
|
8
|
+
import 'node:http';
|
|
9
|
+
import 'node:https';
|
|
10
|
+
import 'node:crypto';
|
|
11
|
+
import 'stream';
|
|
12
|
+
import 'events';
|
|
13
|
+
import 'http';
|
|
14
|
+
import 'buffer';
|
|
15
|
+
import 'zlib';
|
|
16
|
+
import 'https';
|
|
17
|
+
import 'net';
|
|
18
|
+
import 'tls';
|
|
19
|
+
import 'url';
|
|
20
|
+
import 'node:events';
|
|
21
|
+
import 'node:buffer';
|
|
22
|
+
import 'node:fs';
|
|
23
|
+
import 'node:path';
|
|
24
|
+
import 'fs';
|
|
25
|
+
import 'drizzle-orm/postgres-js/migrator';
|
|
26
|
+
import 'drizzle-orm';
|
|
27
|
+
import 'drizzle-orm/postgres-js';
|
|
28
|
+
import 'postgres';
|
|
29
|
+
import 'drizzle-orm/pg-core';
|
|
30
|
+
import 'better-auth';
|
|
31
|
+
import 'better-auth/adapters/drizzle';
|
|
32
|
+
import 'chokidar';
|
|
33
|
+
import 'gray-matter';
|
|
34
|
+
import 'cron';
|
|
35
|
+
import 'node:url';
|
|
36
|
+
import '@iconify/utils';
|
|
37
|
+
import 'consola';
|
|
38
|
+
|
|
39
|
+
const generate_post = defineEventHandler(async (event) => {
|
|
40
|
+
var _a, _b;
|
|
41
|
+
const body = await readBody(event);
|
|
42
|
+
if (!(body == null ? void 0 : body.name) || !(body == null ? void 0 : body.description))
|
|
43
|
+
throw createError({ statusCode: 400, message: "name and description are required" });
|
|
44
|
+
const nameError = validateSkillName(body.name);
|
|
45
|
+
if (nameError)
|
|
46
|
+
throw createError({ statusCode: 400, message: nameError });
|
|
47
|
+
const skillDir = join(getInactiveSkillsDir(), body.name);
|
|
48
|
+
const existing = await stat(skillDir).catch(() => null);
|
|
49
|
+
if (existing)
|
|
50
|
+
throw createError({ statusCode: 409, message: `Skill '${body.name}' already exists` });
|
|
51
|
+
await mkdir(skillDir, { recursive: true });
|
|
52
|
+
const appendInstructions = `You are creating a Claude Code skill called "${body.name}".
|
|
53
|
+
Description: ${body.description}
|
|
54
|
+
|
|
55
|
+
Use the Write tool to create files in the current directory. You MUST create:
|
|
56
|
+
1. SKILL.md with proper frontmatter (name, description, allowed-tools, metadata with version/requires-secrets/author)
|
|
57
|
+
2. A Python script if the skill needs to call APIs or run logic
|
|
58
|
+
|
|
59
|
+
CRITICAL RULES:
|
|
60
|
+
- Use the Write tool to create each file
|
|
61
|
+
- NEVER hardcode API keys, tokens, or secrets. Use get_secret() from the shared library.
|
|
62
|
+
- If the skill needs external API keys, list them in metadata.requires-secrets
|
|
63
|
+
- Import the shared client: sys.path.insert(0, str(Path(__file__).parent.parent)); from _lib.api import get, post, get_secret
|
|
64
|
+
- Use argparse for CLI interface
|
|
65
|
+
- Follow existing skill patterns (task.py, memory.py, etc.)
|
|
66
|
+
|
|
67
|
+
SKILL.md frontmatter format:
|
|
68
|
+
---
|
|
69
|
+
name: ${body.name}
|
|
70
|
+
description: ${body.description}
|
|
71
|
+
allowed-tools: Bash, Read
|
|
72
|
+
metadata:
|
|
73
|
+
version: "1.0.0"
|
|
74
|
+
requires-secrets: []
|
|
75
|
+
author: ""
|
|
76
|
+
repository: ""
|
|
77
|
+
installed-from: ""
|
|
78
|
+
---`;
|
|
79
|
+
const startTime = Date.now();
|
|
80
|
+
let totalInput = 0;
|
|
81
|
+
let totalOutput = 0;
|
|
82
|
+
let totalCost = 0;
|
|
83
|
+
let turns = 0;
|
|
84
|
+
try {
|
|
85
|
+
const conversation = query({
|
|
86
|
+
prompt: `Create the "${body.name}" skill: ${body.description}`,
|
|
87
|
+
options: {
|
|
88
|
+
systemPrompt: {
|
|
89
|
+
type: "preset",
|
|
90
|
+
preset: "claude_code",
|
|
91
|
+
append: appendInstructions
|
|
92
|
+
},
|
|
93
|
+
cwd: skillDir,
|
|
94
|
+
settingSources: ["user"],
|
|
95
|
+
permissionMode: "bypassPermissions",
|
|
96
|
+
allowDangerouslySkipPermissions: true,
|
|
97
|
+
maxTurns: 30
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
for await (const event2 of conversation) {
|
|
101
|
+
if (event2.type === "result") {
|
|
102
|
+
const msg = event2;
|
|
103
|
+
totalInput = ((_a = msg.usage) == null ? void 0 : _a.input_tokens) || 0;
|
|
104
|
+
totalOutput = ((_b = msg.usage) == null ? void 0 : _b.output_tokens) || 0;
|
|
105
|
+
totalCost = msg.total_cost_usd || 0;
|
|
106
|
+
turns = msg.num_turns || 0;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
} catch (e) {
|
|
110
|
+
console.error("[skills/generate] SDK error:", e);
|
|
111
|
+
await rm(skillDir, { recursive: true }).catch(() => {
|
|
112
|
+
});
|
|
113
|
+
throw createError({ statusCode: 500, message: "Skill generation failed" });
|
|
114
|
+
}
|
|
115
|
+
const files = await readdir(skillDir).catch(() => []);
|
|
116
|
+
if (files.length === 0) {
|
|
117
|
+
await rm(skillDir, { recursive: true }).catch(() => {
|
|
118
|
+
});
|
|
119
|
+
throw createError({ statusCode: 500, message: "Skill generation produced no files" });
|
|
120
|
+
}
|
|
121
|
+
const durationMs = Date.now() - startTime;
|
|
122
|
+
await logTokenUsage({
|
|
123
|
+
source: "agent",
|
|
124
|
+
sourceName: "Skill Generator",
|
|
125
|
+
inputTokens: totalInput,
|
|
126
|
+
outputTokens: totalOutput,
|
|
127
|
+
costUsd: totalCost,
|
|
128
|
+
durationMs,
|
|
129
|
+
numTurns: turns
|
|
130
|
+
});
|
|
131
|
+
return {
|
|
132
|
+
data: {
|
|
133
|
+
name: body.name,
|
|
134
|
+
path: skillDir,
|
|
135
|
+
active: false,
|
|
136
|
+
costUsd: totalCost,
|
|
137
|
+
durationMs
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
export { generate_post as default };
|
|
143
|
+
//# sourceMappingURL=generate.post.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.post.mjs","sources":["../../../../../../server/api/skills/generate.post.ts"],"names":["event"],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { d as defineEventHandler, Y as readMultipartFormData, c as createError, P as validateSkillName, Q as getSkillsDir, R as getInactiveSkillsDir } from '../../../nitro/nitro.mjs';
|
|
2
|
+
import { stat, mkdir, writeFile } from 'fs/promises';
|
|
3
|
+
import { join, normalize } from 'path';
|
|
4
|
+
import AdmZip from 'adm-zip';
|
|
5
|
+
import '@anthropic-ai/claude-agent-sdk';
|
|
6
|
+
import 'crypto';
|
|
7
|
+
import 'module';
|
|
8
|
+
import 'os';
|
|
9
|
+
import 'node:http';
|
|
10
|
+
import 'node:https';
|
|
11
|
+
import 'node:crypto';
|
|
12
|
+
import 'stream';
|
|
13
|
+
import 'events';
|
|
14
|
+
import 'http';
|
|
15
|
+
import 'buffer';
|
|
16
|
+
import 'zlib';
|
|
17
|
+
import 'https';
|
|
18
|
+
import 'net';
|
|
19
|
+
import 'tls';
|
|
20
|
+
import 'url';
|
|
21
|
+
import 'node:events';
|
|
22
|
+
import 'node:buffer';
|
|
23
|
+
import 'node:fs';
|
|
24
|
+
import 'node:path';
|
|
25
|
+
import 'fs';
|
|
26
|
+
import 'drizzle-orm/postgres-js/migrator';
|
|
27
|
+
import 'drizzle-orm';
|
|
28
|
+
import 'drizzle-orm/postgres-js';
|
|
29
|
+
import 'postgres';
|
|
30
|
+
import 'drizzle-orm/pg-core';
|
|
31
|
+
import 'better-auth';
|
|
32
|
+
import 'better-auth/adapters/drizzle';
|
|
33
|
+
import 'chokidar';
|
|
34
|
+
import 'gray-matter';
|
|
35
|
+
import 'cron';
|
|
36
|
+
import 'node:url';
|
|
37
|
+
import '@iconify/utils';
|
|
38
|
+
import 'consola';
|
|
39
|
+
|
|
40
|
+
const import_post = defineEventHandler(async (event) => {
|
|
41
|
+
var _a;
|
|
42
|
+
const form = await readMultipartFormData(event);
|
|
43
|
+
if (!form)
|
|
44
|
+
throw createError({ statusCode: 400, message: "Multipart form data required" });
|
|
45
|
+
const fileField = form.find((f) => f.name === "file");
|
|
46
|
+
if (!(fileField == null ? void 0 : fileField.data))
|
|
47
|
+
throw createError({ statusCode: 400, message: "No file uploaded" });
|
|
48
|
+
const zip = new AdmZip(Buffer.from(fileField.data));
|
|
49
|
+
const entries = zip.getEntries();
|
|
50
|
+
if (entries.length === 0)
|
|
51
|
+
throw createError({ statusCode: 400, message: "Zip file is empty" });
|
|
52
|
+
const firstEntry = entries[0].entryName;
|
|
53
|
+
const rootFolder = firstEntry.includes("/") ? firstEntry.split("/")[0] : null;
|
|
54
|
+
const fileName = ((_a = fileField.filename) == null ? void 0 : _a.replace(/\.zip$/i, "")) || "";
|
|
55
|
+
const skillName = rootFolder || fileName;
|
|
56
|
+
if (!skillName)
|
|
57
|
+
throw createError({ statusCode: 400, message: "Could not determine skill name from zip" });
|
|
58
|
+
const nameError = validateSkillName(skillName);
|
|
59
|
+
if (nameError)
|
|
60
|
+
throw createError({ statusCode: 400, message: `Invalid skill name: ${nameError}` });
|
|
61
|
+
const activeDir = join(getSkillsDir(), skillName);
|
|
62
|
+
const inactiveDir = join(getInactiveSkillsDir(), skillName);
|
|
63
|
+
const activeExists = await stat(activeDir).catch(() => null);
|
|
64
|
+
const inactiveExists = await stat(inactiveDir).catch(() => null);
|
|
65
|
+
if (activeExists || inactiveExists)
|
|
66
|
+
throw createError({ statusCode: 409, message: `Skill '${skillName}' already exists` });
|
|
67
|
+
const hasSkillMd = entries.some((e) => {
|
|
68
|
+
const parts = e.entryName.split("/");
|
|
69
|
+
return parts[parts.length - 1] === "SKILL.md" || parts.length === 2 && parts[1] === "SKILL.md";
|
|
70
|
+
});
|
|
71
|
+
if (!hasSkillMd)
|
|
72
|
+
throw createError({ statusCode: 400, message: "Zip must contain a SKILL.md file" });
|
|
73
|
+
const targetDir = activeDir;
|
|
74
|
+
await mkdir(targetDir, { recursive: true });
|
|
75
|
+
let fileCount = 0;
|
|
76
|
+
for (const entry of entries) {
|
|
77
|
+
if (entry.isDirectory) continue;
|
|
78
|
+
let relativePath = entry.entryName;
|
|
79
|
+
if (rootFolder && relativePath.startsWith(rootFolder + "/"))
|
|
80
|
+
relativePath = relativePath.slice(rootFolder.length + 1);
|
|
81
|
+
if (!relativePath) continue;
|
|
82
|
+
if (relativePath.includes("__pycache__") || relativePath.endsWith(".pyc"))
|
|
83
|
+
continue;
|
|
84
|
+
const fullPath = normalize(join(targetDir, relativePath));
|
|
85
|
+
if (!fullPath.startsWith(targetDir))
|
|
86
|
+
throw createError({ statusCode: 400, message: "Path traversal detected in zip entry" });
|
|
87
|
+
const parentDir = join(fullPath, "..");
|
|
88
|
+
await mkdir(parentDir, { recursive: true });
|
|
89
|
+
await writeFile(fullPath, entry.getData());
|
|
90
|
+
fileCount++;
|
|
91
|
+
}
|
|
92
|
+
return { data: { name: skillName, fileCount } };
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
export { import_post as default };
|
|
96
|
+
//# sourceMappingURL=import.post.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import.post.mjs","sources":["../../../../../../server/api/skills/import.post.ts"],"names":[],"mappings":"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"}
|