@cosmicstack/mercury-agent 1.1.9 → 1.1.11

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 (114) hide show
  1. package/README.md +101 -1
  2. package/README.zh-CN.md +265 -140
  3. package/dist/index.js +4442 -1838
  4. package/dist/index.js.map +1 -1
  5. package/dist/web/ui/assets/{Chat-DCFkzIwn.js → Chat-DXSn2dY8.js} +2 -2
  6. package/dist/web/ui/assets/{Chat-DCFkzIwn.js.map → Chat-DXSn2dY8.js.map} +1 -1
  7. package/dist/web/ui/assets/{Dashboard-B81ollv8.js → Dashboard-1rlAqQ-Y.js} +2 -2
  8. package/dist/web/ui/assets/{Dashboard-B81ollv8.js.map → Dashboard-1rlAqQ-Y.js.map} +1 -1
  9. package/dist/web/ui/assets/{Goals-D0cR8yIP.js → Goals-CgSUAXLH.js} +2 -2
  10. package/dist/web/ui/assets/{Goals-D0cR8yIP.js.map → Goals-CgSUAXLH.js.map} +1 -1
  11. package/dist/web/ui/assets/{Graph-C3eHp3_J.js → Graph-DnlOWkay.js} +2 -2
  12. package/dist/web/ui/assets/{Graph-C3eHp3_J.js.map → Graph-DnlOWkay.js.map} +1 -1
  13. package/dist/web/ui/assets/{Kanban-DrkTRyni.js → Kanban-DRlNiNRF.js} +2 -2
  14. package/dist/web/ui/assets/{Kanban-DrkTRyni.js.map → Kanban-DRlNiNRF.js.map} +1 -1
  15. package/dist/web/ui/assets/{Login-GRQ-LjgN.js → Login-BP5524pC.js} +2 -2
  16. package/dist/web/ui/assets/{Login-GRQ-LjgN.js.map → Login-BP5524pC.js.map} +1 -1
  17. package/dist/web/ui/assets/{MarkdownRenderer-Dvh1jwyj.js → MarkdownRenderer-B9KGVD0X.js} +2 -2
  18. package/dist/web/ui/assets/{MarkdownRenderer-Dvh1jwyj.js.map → MarkdownRenderer-B9KGVD0X.js.map} +1 -1
  19. package/dist/web/ui/assets/{Memory-dAZsKmWz.js → Memory-BOQEY0H8.js} +2 -2
  20. package/dist/web/ui/assets/{Memory-dAZsKmWz.js.map → Memory-BOQEY0H8.js.map} +1 -1
  21. package/dist/web/ui/assets/{Permissions-DCiyUUfI.js → Permissions-jbFH-toa.js} +2 -2
  22. package/dist/web/ui/assets/{Permissions-DCiyUUfI.js.map → Permissions-jbFH-toa.js.map} +1 -1
  23. package/dist/web/ui/assets/{PersonDetail-iZgApJog.js → PersonDetail-Ca8B9io8.js} +2 -2
  24. package/dist/web/ui/assets/{PersonDetail-iZgApJog.js.map → PersonDetail-Ca8B9io8.js.map} +1 -1
  25. package/dist/web/ui/assets/{Persons-Bs_HhYjC.js → Persons-epdmUeBM.js} +2 -2
  26. package/dist/web/ui/assets/{Persons-Bs_HhYjC.js.map → Persons-epdmUeBM.js.map} +1 -1
  27. package/dist/web/ui/assets/{Providers-CL6wMWni.js → Providers-Bm8sZNZo.js} +2 -2
  28. package/dist/web/ui/assets/{Providers-CL6wMWni.js.map → Providers-Bm8sZNZo.js.map} +1 -1
  29. package/dist/web/ui/assets/{Schedules-BQwE1hP5.js → Schedules-BZKhm9R7.js} +2 -2
  30. package/dist/web/ui/assets/{Schedules-BQwE1hP5.js.map → Schedules-BZKhm9R7.js.map} +1 -1
  31. package/dist/web/ui/assets/{Settings-26SF-okR.js → Settings-Hii-5oku.js} +2 -2
  32. package/dist/web/ui/assets/{Settings-26SF-okR.js.map → Settings-Hii-5oku.js.map} +1 -1
  33. package/dist/web/ui/assets/Skills-BHJp2CgD.js +17 -0
  34. package/dist/web/ui/assets/Skills-BHJp2CgD.js.map +1 -0
  35. package/dist/web/ui/assets/{Tasks-DbwRozzx.js → Tasks-D36pqkro.js} +2 -2
  36. package/dist/web/ui/assets/{Tasks-DbwRozzx.js.map → Tasks-D36pqkro.js.map} +1 -1
  37. package/dist/web/ui/assets/{Usage-i_q6Ri4s.js → Usage-CmjaYrsT.js} +2 -2
  38. package/dist/web/ui/assets/{Usage-i_q6Ri4s.js.map → Usage-CmjaYrsT.js.map} +1 -1
  39. package/dist/web/ui/assets/{Workspace-ZR5syf-9.js → Workspace-BYLf-wTJ.js} +2 -2
  40. package/dist/web/ui/assets/{Workspace-ZR5syf-9.js.map → Workspace-BYLf-wTJ.js.map} +1 -1
  41. package/dist/web/ui/assets/{activity-CIP1IzSg.js → activity-MOTqH8zM.js} +2 -2
  42. package/dist/web/ui/assets/{activity-CIP1IzSg.js.map → activity-MOTqH8zM.js.map} +1 -1
  43. package/dist/web/ui/assets/{alert-dialog-CW-j2nG4.js → alert-dialog-MbYSbZx5.js} +2 -2
  44. package/dist/web/ui/assets/{alert-dialog-CW-j2nG4.js.map → alert-dialog-MbYSbZx5.js.map} +1 -1
  45. package/dist/web/ui/assets/{arrow-left-D2YO-iMS.js → arrow-left-CtqQsBC6.js} +2 -2
  46. package/dist/web/ui/assets/{arrow-left-D2YO-iMS.js.map → arrow-left-CtqQsBC6.js.map} +1 -1
  47. package/dist/web/ui/assets/{avatar-BLsf3GhK.js → avatar-BIYaY7pR.js} +2 -2
  48. package/dist/web/ui/assets/{avatar-BLsf3GhK.js.map → avatar-BIYaY7pR.js.map} +1 -1
  49. package/dist/web/ui/assets/{badge-DfDJNUtd.js → badge-CUJiWF1y.js} +2 -2
  50. package/dist/web/ui/assets/{badge-DfDJNUtd.js.map → badge-CUJiWF1y.js.map} +1 -1
  51. package/dist/web/ui/assets/{button-TaFPR-zy.js → button-CNasMlFE.js} +2 -2
  52. package/dist/web/ui/assets/{button-TaFPR-zy.js.map → button-CNasMlFE.js.map} +1 -1
  53. package/dist/web/ui/assets/{card-DAYo4Zl5.js → card-BdsEOP7t.js} +2 -2
  54. package/dist/web/ui/assets/{card-DAYo4Zl5.js.map → card-BdsEOP7t.js.map} +1 -1
  55. package/dist/web/ui/assets/{chevron-down-CQi0yuay.js → chevron-down-CB9J_vvZ.js} +2 -2
  56. package/dist/web/ui/assets/{chevron-down-CQi0yuay.js.map → chevron-down-CB9J_vvZ.js.map} +1 -1
  57. package/dist/web/ui/assets/{circle-check-DweDcOkA.js → circle-check-DvGSe1uZ.js} +2 -2
  58. package/dist/web/ui/assets/{circle-check-DweDcOkA.js.map → circle-check-DvGSe1uZ.js.map} +1 -1
  59. package/dist/web/ui/assets/{circle-x-BmL20etA.js → circle-x-CyaGJ_BM.js} +2 -2
  60. package/dist/web/ui/assets/{circle-x-BmL20etA.js.map → circle-x-CyaGJ_BM.js.map} +1 -1
  61. package/dist/web/ui/assets/{dialog-DovgkMhT.js → dialog-Bd1rELXb.js} +2 -2
  62. package/dist/web/ui/assets/{dialog-DovgkMhT.js.map → dialog-Bd1rELXb.js.map} +1 -1
  63. package/dist/web/ui/assets/{download-_QBatDio.js → download-C8RvlFqO.js} +2 -2
  64. package/dist/web/ui/assets/{download-_QBatDio.js.map → download-C8RvlFqO.js.map} +1 -1
  65. package/dist/web/ui/assets/{eye-Wpgtfmgw.js → eye-BJ0NucMz.js} +2 -2
  66. package/dist/web/ui/assets/{eye-Wpgtfmgw.js.map → eye-BJ0NucMz.js.map} +1 -1
  67. package/dist/web/ui/assets/{file-text-2EGFNyc1.js → file-text-BWWBuD_N.js} +2 -2
  68. package/dist/web/ui/assets/{file-text-2EGFNyc1.js.map → file-text-BWWBuD_N.js.map} +1 -1
  69. package/dist/web/ui/assets/{folder-open-C-OiZn9P.js → folder-open-BwjemFy7.js} +2 -2
  70. package/dist/web/ui/assets/{folder-open-C-OiZn9P.js.map → folder-open-BwjemFy7.js.map} +1 -1
  71. package/dist/web/ui/assets/{git-branch-BT9gCKgG.js → git-branch-D9JVASpC.js} +2 -2
  72. package/dist/web/ui/assets/{git-branch-BT9gCKgG.js.map → git-branch-D9JVASpC.js.map} +1 -1
  73. package/dist/web/ui/assets/{index-BhxU0YlT.js → index-C3YiF4qv.js} +6 -6
  74. package/dist/web/ui/assets/index-C3YiF4qv.js.map +1 -0
  75. package/dist/web/ui/assets/{index-CUT6Fr2C.js → index-CaqLZNof.js} +2 -2
  76. package/dist/web/ui/assets/{index-CUT6Fr2C.js.map → index-CaqLZNof.js.map} +1 -1
  77. package/dist/web/ui/assets/index-CuhiuVab.css +1 -0
  78. package/dist/web/ui/assets/{input-L1uz5xAQ.js → input-CH3dmo9r.js} +2 -2
  79. package/dist/web/ui/assets/{input-L1uz5xAQ.js.map → input-CH3dmo9r.js.map} +1 -1
  80. package/dist/web/ui/assets/{loader-circle-BTFgt3hG.js → loader-circle-DbYKk0_Q.js} +2 -2
  81. package/dist/web/ui/assets/{loader-circle-BTFgt3hG.js.map → loader-circle-DbYKk0_Q.js.map} +1 -1
  82. package/dist/web/ui/assets/{pencil-uxK07iYy.js → pencil-gNDEMhav.js} +2 -2
  83. package/dist/web/ui/assets/{pencil-uxK07iYy.js.map → pencil-gNDEMhav.js.map} +1 -1
  84. package/dist/web/ui/assets/{plus-DcWFYr4m.js → plus-7rbHkByr.js} +2 -2
  85. package/dist/web/ui/assets/{plus-DcWFYr4m.js.map → plus-7rbHkByr.js.map} +1 -1
  86. package/dist/web/ui/assets/{power-DVIqVIMj.js → power-BS7gCDWs.js} +2 -2
  87. package/dist/web/ui/assets/{power-DVIqVIMj.js.map → power-BS7gCDWs.js.map} +1 -1
  88. package/dist/web/ui/assets/{progress-DMwOdxli.js → progress-ZzhsBV2v.js} +2 -2
  89. package/dist/web/ui/assets/{progress-DMwOdxli.js.map → progress-ZzhsBV2v.js.map} +1 -1
  90. package/dist/web/ui/assets/{search-D1OOxb1X.js → search-BZsbhO0B.js} +2 -2
  91. package/dist/web/ui/assets/{search-D1OOxb1X.js.map → search-BZsbhO0B.js.map} +1 -1
  92. package/dist/web/ui/assets/{select-Dnx_bUgy.js → select-vRSgBrHz.js} +2 -2
  93. package/dist/web/ui/assets/{select-Dnx_bUgy.js.map → select-vRSgBrHz.js.map} +1 -1
  94. package/dist/web/ui/assets/{send-D4uxqmyH.js → send-BkyTIUtJ.js} +2 -2
  95. package/dist/web/ui/assets/{send-D4uxqmyH.js.map → send-BkyTIUtJ.js.map} +1 -1
  96. package/dist/web/ui/assets/{sparkles-DLSJA4xU.js → sparkles-DcP24GEL.js} +2 -2
  97. package/dist/web/ui/assets/{sparkles-DLSJA4xU.js.map → sparkles-DcP24GEL.js.map} +1 -1
  98. package/dist/web/ui/assets/{switch-CvDDbCUA.js → switch-LRN9wWy2.js} +2 -2
  99. package/dist/web/ui/assets/{switch-CvDDbCUA.js.map → switch-LRN9wWy2.js.map} +1 -1
  100. package/dist/web/ui/assets/{terminal-DI3J3W_z.js → terminal-CWG62zdD.js} +2 -2
  101. package/dist/web/ui/assets/{terminal-DI3J3W_z.js.map → terminal-CWG62zdD.js.map} +1 -1
  102. package/dist/web/ui/assets/{textarea-CXLsr8tf.js → textarea-CXh3tmJ1.js} +2 -2
  103. package/dist/web/ui/assets/{textarea-CXLsr8tf.js.map → textarea-CXh3tmJ1.js.map} +1 -1
  104. package/dist/web/ui/assets/{zap-C-0oH5gt.js → zap-BEfqVtvZ.js} +2 -2
  105. package/dist/web/ui/assets/{zap-C-0oH5gt.js.map → zap-BEfqVtvZ.js.map} +1 -1
  106. package/dist/web/ui/index.html +2 -2
  107. package/package.json +9 -4
  108. package/dist/web/ui/assets/Skills-DANyYK_d.js +0 -7
  109. package/dist/web/ui/assets/Skills-DANyYK_d.js.map +0 -1
  110. package/dist/web/ui/assets/index-BhxU0YlT.js.map +0 -1
  111. package/dist/web/ui/assets/index-DOw1nKre.css +0 -1
  112. package/dist/web/ui/sw.js.map +0 -1
  113. package/dist/web/ui/workbox-0bb07689.js +0 -3
  114. package/dist/web/ui/workbox-0bb07689.js.map +0 -1
@@ -1,7 +0,0 @@
1
- import{j as e,m as c,A}from"./vendor-motion-Dwx3-JO5.js";import{r as i}from"./vendor-react-C7pctHW3.js";import{C as h,c as u}from"./card-DAYo4Zl5.js";import{B as j}from"./button-TaFPR-zy.js";import{I as F}from"./input-L1uz5xAQ.js";import{B as P}from"./badge-DfDJNUtd.js";import{A as B,h as z,T as M,a as U,b as $,c as O,d as _,e as R,f as V,g as q}from"./alert-dialog-CW-j2nG4.js";import{e as H,a as d,c as C}from"./index-BhxU0YlT.js";import{S as X}from"./sparkles-DLSJA4xU.js";import{D as G}from"./download-_QBatDio.js";import{L as b}from"./loader-circle-BTFgt3hG.js";import{F as J}from"./folder-open-C-OiZn9P.js";import{a as K,P as Q}from"./power-DVIqVIMj.js";import{C as W}from"./circle-check-DweDcOkA.js";import{C as Y}from"./circle-x-BmL20etA.js";import"./vendor-radix-3UdfCgs_.js";import"./index-CUT6Fr2C.js";import"./vendor-syntax-xZUI6Op9.js";/**
2
- * @license lucide-react v0.511.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */const Z=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],ee=H("package",Z),se={hidden:{opacity:0,y:12},visible:r=>({opacity:1,y:0,transition:{delay:r*.06,duration:.35,ease:"easeOut"}}),exit:{opacity:0,y:-8,transition:{duration:.2}}},ae={visible:{transition:{staggerChildren:.06}}};function te({toasts:r}){return e.jsx("div",{className:"fixed bottom-6 right-6 z-50 flex flex-col gap-2",children:e.jsx(A,{children:r.map(l=>e.jsxs(c.div,{initial:{opacity:0,x:40},animate:{opacity:1,x:0},exit:{opacity:0,x:40},className:C("flex items-center gap-2 rounded-lg border px-4 py-3 text-sm shadow-lg backdrop-blur-sm",l.type==="success"?"border-emerald-500/30 bg-emerald-500/10 text-emerald-400":"border-destructive/30 bg-destructive/10 text-destructive"),children:[l.type==="success"?e.jsx(W,{className:"h-4 w-4"}):e.jsx(Y,{className:"h-4 w-4"}),l.message]},l.id))})})}function n({className:r}){return e.jsx("div",{className:C("animate-pulse rounded-lg bg-muted",r)})}function ie(){return e.jsx(h,{children:e.jsxs(u,{className:"p-5 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(n,{className:"h-5 w-32"}),e.jsx(n,{className:"h-5 w-16 rounded-md"})]}),e.jsx(n,{className:"h-4 w-full"}),e.jsx(n,{className:"h-3 w-48"}),e.jsxs("div",{className:"flex gap-2 pt-1",children:[e.jsx(n,{className:"h-8 w-24"}),e.jsx(n,{className:"h-8 w-20"})]})]})})}function be(){const[r,l]=i.useState([]),[D,S]=i.useState(!0),[m,y]=i.useState(""),[f,v]=i.useState(!1),[g,x]=i.useState({}),[k,N]=i.useState([]),t=i.useCallback((s,a)=>{const w=Date.now();N(p=>[...p,{id:w,type:s,message:a}]),setTimeout(()=>{N(p=>p.filter(L=>L.id!==w))},3500)},[]),o=i.useCallback(async()=>{try{const s=await d.skills.list();l(s.skills)}catch(s){t("error",s instanceof Error?s.message:"Failed to load skills")}finally{S(!1)}},[t]);i.useEffect(()=>{o()},[o]);const I=async()=>{if(m.trim()){v(!0);try{const s=await d.skills.install(m.trim());t("success",`Installed "${s.name}" successfully`),y(""),await o()}catch(s){t("error",s instanceof Error?s.message:"Installation failed")}finally{v(!1)}}},T=async s=>{x(a=>({...a,[s.name]:!0}));try{s.active?(await d.skills.deactivate(s.name),t("success",`Deactivated "${s.name}"`)):(await d.skills.activate(s.name),t("success",`Activated "${s.name}"`)),await o()}catch(a){t("error",a instanceof Error?a.message:"Toggle failed")}finally{x(a=>({...a,[s.name]:!1}))}},E=async s=>{x(a=>({...a,[s]:!0}));try{await d.skills.delete(s),t("success",`Deleted "${s}"`),await o()}catch(a){t("error",a instanceof Error?a.message:"Delete failed")}finally{x(a=>({...a,[s]:!1}))}};return e.jsxs("div",{className:"space-y-6 p-6",children:[e.jsx(c.div,{initial:{opacity:0,y:-8},animate:{opacity:1,y:0},transition:{duration:.3},children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"flex h-10 w-10 items-center justify-center rounded-lg bg-[#00d4ff]/10",children:e.jsx(X,{className:"h-5 w-5 text-[#00d4ff]"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-semibold text-foreground",children:"Skills"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Extend Mercury with installable capabilities"})]})]})}),e.jsx(c.div,{initial:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{delay:.1,duration:.3},children:e.jsx(h,{children:e.jsxs(u,{className:"p-5",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx(G,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{className:"text-sm font-medium text-foreground",children:"Install a Skill"})]}),e.jsxs("form",{onSubmit:s=>{s.preventDefault(),I()},className:"flex gap-3",children:[e.jsx(F,{placeholder:"https://github.com/user/skill-package",value:m,onChange:s=>y(s.target.value),disabled:f,className:"flex-1"}),e.jsx(j,{type:"submit",disabled:f||!m.trim(),children:f?e.jsxs(e.Fragment,{children:[e.jsx(b,{className:"h-4 w-4 animate-spin"}),"Installing"]}):"Install"})]})]})})}),D?e.jsx("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:Array.from({length:3}).map((s,a)=>e.jsx(ie,{},a))}):r.length===0?e.jsx(c.div,{initial:{opacity:0},animate:{opacity:1},transition:{delay:.2},children:e.jsx(h,{children:e.jsxs(u,{className:"flex flex-col items-center justify-center py-16 text-center",children:[e.jsx("div",{className:"flex h-14 w-14 items-center justify-center rounded-full bg-muted mb-4",children:e.jsx(ee,{className:"h-7 w-7 text-muted-foreground"})}),e.jsx("h3",{className:"text-base font-medium text-foreground mb-1",children:"No skills installed"}),e.jsx("p",{className:"text-sm text-muted-foreground max-w-sm",children:"Install skills from a URL above to extend Mercury's capabilities with new tools, workflows, and integrations."})]})})}):e.jsx(c.div,{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",variants:ae,initial:"hidden",animate:"visible",children:e.jsx(A,{mode:"popLayout",children:r.map((s,a)=>e.jsx(c.div,{custom:a,variants:se,initial:"hidden",animate:"visible",exit:"exit",layout:!0,children:e.jsx(h,{className:"h-full",children:e.jsxs(u,{className:"p-5 flex flex-col gap-3 h-full",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsx("h3",{className:"text-sm font-semibold text-foreground leading-tight",children:s.name}),e.jsx(P,{variant:s.active?"success":"secondary",children:s.active?"Active":"Inactive"})]}),s.description&&e.jsx("p",{className:"text-sm text-muted-foreground leading-relaxed",children:s.description}),e.jsxs("div",{className:"flex items-center gap-1.5 mt-auto",children:[e.jsx(J,{className:"h-3 w-3 text-muted-foreground/60 shrink-0"}),e.jsx("span",{className:"text-xs text-muted-foreground/60 truncate font-mono",children:s.path})]}),e.jsxs("div",{className:"flex items-center gap-2 pt-1 border-t border-border",children:[e.jsx(j,{size:"sm",variant:s.active?"outline":"default",disabled:!!g[s.name],onClick:()=>T(s),className:"flex-1",children:g[s.name]?e.jsx(b,{className:"h-3.5 w-3.5 animate-spin"}):s.active?e.jsxs(e.Fragment,{children:[e.jsx(K,{className:"h-3.5 w-3.5"}),"Deactivate"]}):e.jsxs(e.Fragment,{children:[e.jsx(Q,{className:"h-3.5 w-3.5"}),"Activate"]})}),e.jsxs(B,{children:[e.jsx(z,{asChild:!0,children:e.jsx(j,{size:"sm",variant:"ghost",disabled:!!g[s.name],className:"text-muted-foreground hover:text-destructive",children:e.jsx(M,{className:"h-3.5 w-3.5"})})}),e.jsxs(U,{children:[e.jsxs($,{children:[e.jsx(O,{children:"Delete Skill"}),e.jsxs(_,{children:["Are you sure you want to delete “",s.name,"”? This will remove the skill and all its data permanently."]})]}),e.jsxs(R,{children:[e.jsx(V,{children:"Cancel"}),e.jsx(q,{onClick:()=>E(s.name),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"Delete"})]})]})]})]})]})})},s.name))})}),e.jsx(te,{toasts:k})]})}export{be as SkillsPage};
7
- //# sourceMappingURL=Skills-DANyYK_d.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Skills-DANyYK_d.js","sources":["../../node_modules/lucide-react/dist/esm/icons/package.js","../../src/pages/Skills.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.511.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z\",\n key: \"1a0edw\"\n }\n ],\n [\"path\", { d: \"M12 22V12\", key: \"d0xqtd\" }],\n [\"polyline\", { points: \"3.29 7 12 12 20.71 7\", key: \"ousv84\" }],\n [\"path\", { d: \"m7.5 4.27 9 5.15\", key: \"1c824w\" }]\n];\nconst Package = createLucideIcon(\"package\", __iconNode);\n\nexport { __iconNode, Package as default };\n//# sourceMappingURL=package.js.map\n","import { useEffect, useState, useCallback } from \"react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport {\n Sparkles,\n Download,\n Loader2,\n Trash2,\n Power,\n PowerOff,\n Package,\n FolderOpen,\n CheckCircle2,\n XCircle,\n} from \"lucide-react\";\nimport { Card, CardContent } from \"@/components/ui/card\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Badge } from \"@/components/ui/badge\";\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"@/components/ui/alert-dialog\";\nimport { cn } from \"@/lib/utils\";\nimport api, { type Skill } from \"@/lib/api\";\n\n/* ── Animations ─────────────────────────────────────────────── */\n\nconst fadeUp = {\n hidden: { opacity: 0, y: 12 },\n visible: (i: number) => ({\n opacity: 1,\n y: 0,\n transition: { delay: i * 0.06, duration: 0.35, ease: \"easeOut\" as const },\n }),\n exit: { opacity: 0, y: -8, transition: { duration: 0.2 } },\n};\n\nconst stagger = {\n visible: { transition: { staggerChildren: 0.06 } },\n};\n\n/* ── Toast-style Feedback ───────────────────────────────────── */\n\ninterface Toast {\n id: number;\n type: \"success\" | \"error\";\n message: string;\n}\n\nfunction ToastBar({ toasts }: { toasts: Toast[] }) {\n return (\n <div className=\"fixed bottom-6 right-6 z-50 flex flex-col gap-2\">\n <AnimatePresence>\n {toasts.map((t) => (\n <motion.div\n key={t.id}\n initial={{ opacity: 0, x: 40 }}\n animate={{ opacity: 1, x: 0 }}\n exit={{ opacity: 0, x: 40 }}\n className={cn(\n \"flex items-center gap-2 rounded-lg border px-4 py-3 text-sm shadow-lg backdrop-blur-sm\",\n t.type === \"success\"\n ? \"border-emerald-500/30 bg-emerald-500/10 text-emerald-400\"\n : \"border-destructive/30 bg-destructive/10 text-destructive\"\n )}\n >\n {t.type === \"success\" ? (\n <CheckCircle2 className=\"h-4 w-4\" />\n ) : (\n <XCircle className=\"h-4 w-4\" />\n )}\n {t.message}\n </motion.div>\n ))}\n </AnimatePresence>\n </div>\n );\n}\n\n/* ── Skeleton ───────────────────────────────────────────────── */\n\nfunction Skeleton({ className }: { className?: string }) {\n return (\n <div className={cn(\"animate-pulse rounded-lg bg-muted\", className)} />\n );\n}\n\nfunction SkillCardSkeleton() {\n return (\n <Card>\n <CardContent className=\"p-5 space-y-3\">\n <div className=\"flex items-center justify-between\">\n <Skeleton className=\"h-5 w-32\" />\n <Skeleton className=\"h-5 w-16 rounded-md\" />\n </div>\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-3 w-48\" />\n <div className=\"flex gap-2 pt-1\">\n <Skeleton className=\"h-8 w-24\" />\n <Skeleton className=\"h-8 w-20\" />\n </div>\n </CardContent>\n </Card>\n );\n}\n\n/* ── Main Page ──────────────────────────────────────────────── */\n\nexport function SkillsPage() {\n const [skills, setSkills] = useState<Skill[]>([]);\n const [loading, setLoading] = useState(true);\n const [installUrl, setInstallUrl] = useState(\"\");\n const [installing, setInstalling] = useState(false);\n const [actionLoading, setActionLoading] = useState<Record<string, boolean>>({});\n const [toasts, setToasts] = useState<Toast[]>([]);\n\n const toast = useCallback((type: \"success\" | \"error\", message: string) => {\n const id = Date.now();\n setToasts((prev) => [...prev, { id, type, message }]);\n setTimeout(() => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, 3500);\n }, []);\n\n const fetchSkills = useCallback(async () => {\n try {\n const res = await api.skills.list();\n setSkills(res.skills);\n } catch (err: unknown) {\n toast(\"error\", err instanceof Error ? err.message : \"Failed to load skills\");\n } finally {\n setLoading(false);\n }\n }, [toast]);\n\n useEffect(() => {\n fetchSkills();\n }, [fetchSkills]);\n\n const handleInstall = async () => {\n if (!installUrl.trim()) return;\n setInstalling(true);\n try {\n const res = await api.skills.install(installUrl.trim());\n toast(\"success\", `Installed \"${res.name}\" successfully`);\n setInstallUrl(\"\");\n await fetchSkills();\n } catch (err: unknown) {\n toast(\"error\", err instanceof Error ? err.message : \"Installation failed\");\n } finally {\n setInstalling(false);\n }\n };\n\n const handleToggle = async (skill: Skill) => {\n setActionLoading((prev) => ({ ...prev, [skill.name]: true }));\n try {\n if (skill.active) {\n await api.skills.deactivate(skill.name);\n toast(\"success\", `Deactivated \"${skill.name}\"`);\n } else {\n await api.skills.activate(skill.name);\n toast(\"success\", `Activated \"${skill.name}\"`);\n }\n await fetchSkills();\n } catch (err: unknown) {\n toast(\"error\", err instanceof Error ? err.message : \"Toggle failed\");\n } finally {\n setActionLoading((prev) => ({ ...prev, [skill.name]: false }));\n }\n };\n\n const handleDelete = async (name: string) => {\n setActionLoading((prev) => ({ ...prev, [name]: true }));\n try {\n await api.skills.delete(name);\n toast(\"success\", `Deleted \"${name}\"`);\n await fetchSkills();\n } catch (err: unknown) {\n toast(\"error\", err instanceof Error ? err.message : \"Delete failed\");\n } finally {\n setActionLoading((prev) => ({ ...prev, [name]: false }));\n }\n };\n\n return (\n <div className=\"space-y-6 p-6\">\n {/* Header */}\n <motion.div\n initial={{ opacity: 0, y: -8 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.3 }}\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-lg bg-[#00d4ff]/10\">\n <Sparkles className=\"h-5 w-5 text-[#00d4ff]\" />\n </div>\n <div>\n <h1 className=\"text-2xl font-semibold text-foreground\">Skills</h1>\n <p className=\"text-sm text-muted-foreground\">\n Extend Mercury with installable capabilities\n </p>\n </div>\n </div>\n </motion.div>\n\n {/* Install Section */}\n <motion.div\n initial={{ opacity: 0, y: 8 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.1, duration: 0.3 }}\n >\n <Card>\n <CardContent className=\"p-5\">\n <div className=\"flex items-center gap-2 mb-3\">\n <Download className=\"h-4 w-4 text-muted-foreground\" />\n <span className=\"text-sm font-medium text-foreground\">\n Install a Skill\n </span>\n </div>\n <form\n onSubmit={(e) => {\n e.preventDefault();\n handleInstall();\n }}\n className=\"flex gap-3\"\n >\n <Input\n placeholder=\"https://github.com/user/skill-package\"\n value={installUrl}\n onChange={(e) => setInstallUrl(e.target.value)}\n disabled={installing}\n className=\"flex-1\"\n />\n <Button type=\"submit\" disabled={installing || !installUrl.trim()}>\n {installing ? (\n <>\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n Installing\n </>\n ) : (\n \"Install\"\n )}\n </Button>\n </form>\n </CardContent>\n </Card>\n </motion.div>\n\n {/* Skills List */}\n {loading ? (\n <div className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {Array.from({ length: 3 }).map((_, i) => (\n <SkillCardSkeleton key={i} />\n ))}\n </div>\n ) : skills.length === 0 ? (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ delay: 0.2 }}\n >\n <Card>\n <CardContent className=\"flex flex-col items-center justify-center py-16 text-center\">\n <div className=\"flex h-14 w-14 items-center justify-center rounded-full bg-muted mb-4\">\n <Package className=\"h-7 w-7 text-muted-foreground\" />\n </div>\n <h3 className=\"text-base font-medium text-foreground mb-1\">\n No skills installed\n </h3>\n <p className=\"text-sm text-muted-foreground max-w-sm\">\n Install skills from a URL above to extend Mercury&apos;s capabilities\n with new tools, workflows, and integrations.\n </p>\n </CardContent>\n </Card>\n </motion.div>\n ) : (\n <motion.div\n className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\"\n variants={stagger}\n initial=\"hidden\"\n animate=\"visible\"\n >\n <AnimatePresence mode=\"popLayout\">\n {skills.map((skill, i) => (\n <motion.div\n key={skill.name}\n custom={i}\n variants={fadeUp}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n layout\n >\n <Card className=\"h-full\">\n <CardContent className=\"p-5 flex flex-col gap-3 h-full\">\n {/* Name + Status */}\n <div className=\"flex items-start justify-between gap-3\">\n <h3 className=\"text-sm font-semibold text-foreground leading-tight\">\n {skill.name}\n </h3>\n <Badge variant={skill.active ? \"success\" : \"secondary\"}>\n {skill.active ? \"Active\" : \"Inactive\"}\n </Badge>\n </div>\n\n {/* Description */}\n {skill.description && (\n <p className=\"text-sm text-muted-foreground leading-relaxed\">\n {skill.description}\n </p>\n )}\n\n {/* Path */}\n <div className=\"flex items-center gap-1.5 mt-auto\">\n <FolderOpen className=\"h-3 w-3 text-muted-foreground/60 shrink-0\" />\n <span className=\"text-xs text-muted-foreground/60 truncate font-mono\">\n {skill.path}\n </span>\n </div>\n\n {/* Actions */}\n <div className=\"flex items-center gap-2 pt-1 border-t border-border\">\n <Button\n size=\"sm\"\n variant={skill.active ? \"outline\" : \"default\"}\n disabled={!!actionLoading[skill.name]}\n onClick={() => handleToggle(skill)}\n className=\"flex-1\"\n >\n {actionLoading[skill.name] ? (\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" />\n ) : skill.active ? (\n <>\n <PowerOff className=\"h-3.5 w-3.5\" />\n Deactivate\n </>\n ) : (\n <>\n <Power className=\"h-3.5 w-3.5\" />\n Activate\n </>\n )}\n </Button>\n\n <AlertDialog>\n <AlertDialogTrigger asChild>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n disabled={!!actionLoading[skill.name]}\n className=\"text-muted-foreground hover:text-destructive\"\n >\n <Trash2 className=\"h-3.5 w-3.5\" />\n </Button>\n </AlertDialogTrigger>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Delete Skill</AlertDialogTitle>\n <AlertDialogDescription>\n Are you sure you want to delete &ldquo;{skill.name}&rdquo;?\n This will remove the skill and all its data permanently.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction\n onClick={() => handleDelete(skill.name)}\n className=\"bg-destructive text-destructive-foreground hover:bg-destructive/90\"\n >\n Delete\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n </div>\n </CardContent>\n </Card>\n </motion.div>\n ))}\n </AnimatePresence>\n </motion.div>\n )}\n\n <ToastBar toasts={toasts} />\n </div>\n );\n}\n"],"names":["__iconNode","Package","createLucideIcon","fadeUp","i","stagger","ToastBar","toasts","jsx","AnimatePresence","t","jsxs","motion","cn","CheckCircle2","XCircle","Skeleton","className","SkillCardSkeleton","Card","CardContent","SkillsPage","skills","setSkills","useState","loading","setLoading","installUrl","setInstallUrl","installing","setInstalling","actionLoading","setActionLoading","setToasts","toast","useCallback","type","message","id","prev","fetchSkills","res","api","err","useEffect","handleInstall","handleToggle","skill","handleDelete","name","Sparkles","Download","e","Input","Button","Fragment","Loader2","_","Badge","FolderOpen","PowerOff","Power","AlertDialog","AlertDialogTrigger","Trash2","AlertDialogContent","AlertDialogHeader","AlertDialogTitle","AlertDialogDescription","AlertDialogFooter","AlertDialogCancel","AlertDialogAction"],"mappings":"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","x_google_ignoreList":[0]}