@overlordai/server 1.0.33 → 1.0.35

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 (55) hide show
  1. package/dist/dispatcher/dispatcher.service.d.ts.map +1 -1
  2. package/dist/dispatcher/dispatcher.service.js +19 -9
  3. package/dist/dispatcher/dispatcher.service.js.map +1 -1
  4. package/package.json +2 -2
  5. package/public/assets/{AccessTokensPage-Beru3_uy.js → AccessTokensPage-DTrIditb.js} +1 -1
  6. package/public/assets/{AdminPage-C9GCTLmr.js → AdminPage-spE4NopL.js} +1 -1
  7. package/public/assets/{ApiReferencePage-D-Fjl8KM.js → ApiReferencePage-BQTlr1a3.js} +1 -1
  8. package/public/assets/{AuditLogPage-Bpgs5-4t.js → AuditLogPage-DpWVEOeD.js} +1 -1
  9. package/public/assets/{BotManage-ByFUoMlI.js → BotManage-BHIfrSQ9.js} +1 -1
  10. package/public/assets/{CliReferencePage-CkOKnvml.js → CliReferencePage-BpD75e6J.js} +1 -1
  11. package/public/assets/{DeveloperManage-DX12zFgn.js → DeveloperManage-w3ZCt_NM.js} +1 -1
  12. package/public/assets/{EditProjectPage-DlK_Ix-g.js → EditProjectPage-BWYk0T8l.js} +1 -1
  13. package/public/assets/{EmptyState-B5qaL1Ft.js → EmptyState-C9vei1H4.js} +1 -1
  14. package/public/assets/{HomePage-NfxPPkMz.js → HomePage-CPg4Qc6p.js} +1 -1
  15. package/public/assets/{LandingPage-DWdKl5kd.js → LandingPage-B6mDnkMI.js} +1 -1
  16. package/public/assets/{LoginPage-CjzZ3RX2.js → LoginPage-lTCE4PWV.js} +1 -1
  17. package/public/assets/{MachineDetailPage-2B713TKQ.js → MachineDetailPage-CVj-dTHS.js} +1 -1
  18. package/public/assets/MachineListPage-DQq5DZFL.js +6 -0
  19. package/public/assets/{NotFoundPage-CXxb3Nk1.js → NotFoundPage-COyyGIMN.js} +1 -1
  20. package/public/assets/{PipelineEditorPage-DzgL7Mbc.js → PipelineEditorPage-DEw5xksl.js} +1 -1
  21. package/public/assets/{ProfilePage-bdFIMKIC.js → ProfilePage-DjFeJa-r.js} +1 -1
  22. package/public/assets/{ProjectDetailPage-ngZeWsrI.js → ProjectDetailPage-Bi4r2iHL.js} +1 -1
  23. package/public/assets/{ProjectListPage-BQC9noAd.js → ProjectListPage-BKuhnPBI.js} +1 -1
  24. package/public/assets/{QuickAuth-BHBoThUh.js → QuickAuth-L60GzSOW.js} +1 -1
  25. package/public/assets/{RemoveMemberConfirmDialog-CGkSeDTJ.js → RemoveMemberConfirmDialog-2jr0B-lt.js} +1 -1
  26. package/public/assets/{Select-B2hs4bPZ.js → Select-DOPqCoVh.js} +1 -1
  27. package/public/assets/{SettingsPage-CXxoYjb1.js → SettingsPage-BPNWmxTz.js} +1 -1
  28. package/public/assets/{Skeleton-CyWhQxlf.js → Skeleton-DRiV4Mc_.js} +1 -1
  29. package/public/assets/{SkillPage-DlnLHNuI.js → SkillPage-CtW_Yh-Z.js} +1 -1
  30. package/public/assets/{TaskDetailPage-DUQWe5wB.js → TaskDetailPage-BONY8TYd.js} +1 -1
  31. package/public/assets/{TaskListPage-Cg1ETrwI.js → TaskListPage-D86Z1p5a.js} +1 -1
  32. package/public/assets/{TaskStatusBadge-D-fJDHQh.js → TaskStatusBadge-BOkVIY-S.js} +1 -1
  33. package/public/assets/TokenManage-DJ5FKh1g.js +1 -0
  34. package/public/assets/{TotpSetupPage-XZCrdH2V.js → TotpSetupPage-D4zL65kY.js} +1 -1
  35. package/public/assets/{WorkerSetupGuidePage-B0a3heGA.js → WorkerSetupGuidePage-DkERqTk-.js} +1 -1
  36. package/public/assets/{arrow-left-CxR172-I.js → arrow-left-rWVL-A4T.js} +1 -1
  37. package/public/assets/{arrow-right-Bxsjp0zK.js → arrow-right-DES2lofC.js} +1 -1
  38. package/public/assets/{bot-LvDZi4g_.js → bot-Bjj1z-2h.js} +1 -1
  39. package/public/assets/{chevron-right-CoYBbtaS.js → chevron-right-CNgok700.js} +1 -1
  40. package/public/assets/{copy-BOEo9gzs.js → copy-CpdsOI_O.js} +1 -1
  41. package/public/assets/{external-link-DEXczFxv.js → external-link-Cp9i7osW.js} +1 -1
  42. package/public/assets/{index-BiwmRYQP.js → index-BdEJ0aTM.js} +2 -2
  43. package/public/assets/{key-BKYKn-II.js → key-D6HzwwXl.js} +1 -1
  44. package/public/assets/{loader-circle-CGl2dNxT.js → loader-circle-CwvOmGaz.js} +1 -1
  45. package/public/assets/{pencil-DJx3NobK.js → pencil-D6ZHfLK_.js} +1 -1
  46. package/public/assets/{plus-B1evYZLw.js → plus-8YfTJ47b.js} +1 -1
  47. package/public/assets/{rotate-ccw-DIm7zEDs.js → rotate-ccw-CrJHxzN4.js} +1 -1
  48. package/public/assets/{scroll-text-DXm8XEUQ.js → scroll-text-dlAJEgcC.js} +1 -1
  49. package/public/assets/{settings-C0zveA0i.js → settings-B5JVwtOy.js} +1 -1
  50. package/public/assets/{task.store-BT1elMl0.js → task.store-CR5aAb6q.js} +1 -1
  51. package/public/assets/{trash-2-D_ao7mjo.js → trash-2-Dkm6k-XU.js} +1 -1
  52. package/public/assets/{users-DNGcsSkr.js → users-Bb4kMVG2.js} +1 -1
  53. package/public/index.html +1 -1
  54. package/public/assets/MachineListPage-DWiQXnAq.js +0 -6
  55. package/public/assets/TokenManage-Bcru_MF_.js +0 -1
@@ -1,6 +0,0 @@
1
- import{c as D,a as C,j as e,r as s,f as S,X as G,o as R,d as U,u as B,h as K,q as T}from"./index-BiwmRYQP.js";import{M as u}from"./protocol-C5uQmiiB.js";import q from"./WorkerSetupGuidePage-B0a3heGA.js";import{C as W}from"./copy-BOEo9gzs.js";import{L as H}from"./loader-circle-CGl2dNxT.js";import{S as V}from"./Select-B2hs4bPZ.js";import{E as X}from"./EmptyState-B5qaL1Ft.js";import{C as J}from"./Skeleton-CyWhQxlf.js";import{P as Q}from"./plus-B1evYZLw.js";import"./key-BKYKn-II.js";import"./settings-C0zveA0i.js";/**
2
- * @license lucide-react v0.469.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 Y=D("BookOpen",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]),O={[u.ONLINE]:"var(--accent)",[u.OFFLINE]:"var(--destructive)",[u.DRAINING]:"var(--warning)",[u.DECOMMISSIONED]:"var(--text-muted)"};function Z(r){return r>80?"var(--destructive)":r>60?"var(--warning)":"var(--accent)"}function ee({machine:r,onPress:a}){const{t:i}=C();return e.jsxs("div",{onClick:a,className:`rounded border border-[var(--border)] bg-[var(--bg-card)] p-4 font-mono lowercase transition-colors ${a?"cursor-pointer hover:border-[var(--accent)]/40 hover:bg-[var(--bg-input)]":""}`,children:[e.jsxs("div",{className:"mb-3 flex items-center justify-between",children:[e.jsxs("h3",{className:"truncate text-sm text-[var(--text-primary)]",children:[e.jsx("span",{style:{color:O[r.status],fontSize:"0.6rem"},children:"●"})," ",r.name]}),e.jsx("span",{className:"text-xs",style:{color:O[r.status]},children:r.status})]}),e.jsxs("div",{className:"mb-3 text-xs text-[var(--text-muted)]",children:[r.host,r.port?`:${r.port}`:""]}),e.jsxs("div",{className:"mb-3 flex flex-col gap-2",children:[e.jsx(w,{label:i("machines.cpu"),value:r.cpuUsage}),e.jsx(w,{label:i("machines.mem"),value:r.memoryUsage}),e.jsx(w,{label:i("machines.disk"),value:r.diskUsage})]}),e.jsx("div",{className:"flex items-center justify-between text-xs",children:e.jsx("span",{className:"text-[var(--text-secondary)]",children:i("machines.tasks_slots",{active:String(r.activeSlots),max:String(r.maxSlots)})})}),r.capabilities.length>0&&e.jsx("div",{className:"mt-2 flex flex-wrap gap-1",children:r.capabilities.map(t=>e.jsx("span",{className:"rounded border border-[var(--border)] px-1.5 py-0.5 text-[10px] text-[var(--text-muted)]",children:t},t))})]})}function w({label:r,value:a}){return e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"w-8 text-[var(--text-muted)]",children:r}),e.jsx("div",{className:"h-1.5 flex-1 rounded-sm bg-[var(--bg-input)]",children:e.jsx("div",{className:"h-full rounded-sm transition-all",style:{width:`${a}%`,backgroundColor:Z(a)}})}),e.jsxs("span",{className:"w-8 text-right text-[var(--text-secondary)]",children:[a,"%"]})]})}function te({isOpen:r,onClose:a,onRegistered:i}){const{t}=C(),[c,m]=s.useState(1),[d,h]=s.useState(!1),[o,v]=s.useState(""),[g,f]=s.useState(null),[y,b]=s.useState(""),[j,N]=s.useState(""),[l,x]=s.useState(!1),[k,I]=s.useState(""),[E,M]=s.useState(""),p=s.useRef(null),z={1:t("machines.reg_step_generate_token"),2:t("machines.reg_step_install_worker"),3:t("machines.reg_step_waiting_activation"),4:t("machines.reg_step_activated")};s.useEffect(()=>(r&&(m(1),v(""),f(null),b(""),N(""),x(!1),I(""),M(""),h(!1)),()=>{p.current&&clearInterval(p.current)}),[r]);const $=async()=>{const n=y.trim();if(!n){N(t("admin.pat_label_required"));return}N(""),h(!0);try{const _=await S.post("admin/worker-tokens",{json:{label:n}}).json();v(_.token),f(_.tokenId),m(2)}catch{}finally{h(!1)}},F=typeof window<"u"?window.location.origin:"https://overlord.example.com",L=o?`overlord setup worker --token ${o} --server ${F}`:"",P=()=>{navigator.clipboard.writeText(L),x(!0),setTimeout(()=>x(!1),2e3)},A=s.useCallback(()=>{g&&(m(3),p.current=setInterval(async()=>{try{const n=await S.get(`admin/worker-tokens/${g}/status`).json();n.used&&n.machineName&&(I(n.machineName),M(n.machineId??""),m(4),p.current&&clearInterval(p.current),i==null||i())}catch{}},3e3))},[g,i]);return s.useEffect(()=>()=>{p.current&&clearInterval(p.current)},[]),r?e.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center font-mono lowercase",children:[e.jsx("div",{className:"absolute inset-0 bg-[var(--bg-primary)]/60 backdrop-blur-sm",onClick:a}),e.jsxs("div",{className:"relative z-10 w-full max-w-[1080px] rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] p-8",children:[e.jsx("button",{type:"button",onClick:a,className:"absolute right-4 top-4 text-[var(--text-muted)] hover:text-[var(--text-primary)]",children:e.jsx(G,{className:"h-4 w-4"})}),e.jsx("h2",{className:"text-lg font-bold text-[var(--accent)]",children:t("machines.reg_title")}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-muted)]",children:t("machines.reg_subtitle")}),e.jsx("div",{className:"mt-6 flex items-center justify-center gap-2",children:[1,2,3,4].map((n,_)=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("span",{className:`rounded-[4px] px-3 py-1.5 text-[11px] font-bold ${n===c?"bg-[var(--accent)] text-black":n<c?"bg-[var(--accent)]/20 text-[var(--accent)]":"border border-[var(--border)] bg-[var(--bg-primary)] text-[var(--text-muted)]"}`,children:[n,". ",z[n]]}),_<3&&e.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"→"})]},n))}),e.jsxs("div",{className:"mt-6 grid grid-cols-1 gap-4 lg:grid-cols-2",children:[e.jsxs("div",{className:`rounded-[4px] border p-4 ${c===1?"border-[var(--accent)] bg-[var(--bg-primary)]":"border-[var(--border)] bg-[var(--bg-primary)]"}`,children:[e.jsxs("p",{className:"text-[13px] font-bold text-[var(--accent)]",children:["> ",t("machines.reg_step_generate_token")]}),c===1&&!o?e.jsxs("div",{className:"mt-3 space-y-3",children:[e.jsx("p",{className:"text-[11px] text-[var(--text-muted)]",children:t("machines.reg_click_to_generate")}),j&&e.jsx("p",{className:"text-[10px] text-red-400",children:j}),e.jsxs("div",{children:[e.jsx("label",{className:"mb-1 block text-[10px] text-[var(--text-muted)]",children:t("admin.label")}),e.jsx("input",{type:"text",placeholder:t("admin.pat_label_placeholder"),value:y,onChange:n=>b(n.target.value),onKeyDown:n=>{n.key==="Enter"&&$()},className:"w-full rounded-[4px] border border-[var(--border)] bg-[var(--bg-input)] px-3 py-1.5 text-[11px] text-[var(--text-primary)] placeholder:text-[var(--text-muted)] focus:border-[var(--accent)] focus:outline-none"})]}),e.jsx("button",{type:"button",onClick:$,disabled:d,className:"rounded-[4px] bg-[var(--accent)] px-4 py-1.5 text-xs font-bold text-black disabled:opacity-50",children:t(d?"admin.generating":"machines.reg_step_generate_token")})]}):o?e.jsxs("div",{className:"mt-3 space-y-3",children:[e.jsx("p",{className:"text-[11px] text-[var(--text-muted)]",children:t("machines.reg_token_generated")}),e.jsxs("p",{className:"text-[10px] text-[var(--text-muted)]",children:["1. ",t("machines.reg_install_command")]}),e.jsx("div",{className:"rounded-[4px] border border-[var(--border)] bg-[var(--bg-primary)] px-3 py-2",children:e.jsx("p",{className:"text-[10px] text-[var(--text-primary)]",children:"$ npm install -g @overlordai/cli @overlordai/worker"})}),e.jsxs("p",{className:"text-[10px] text-[var(--text-muted)]",children:["2. ",t("machines.reg_run_setup")]}),e.jsxs("div",{className:"relative rounded-[4px] border border-[var(--border)] bg-[var(--bg-primary)] px-3 py-2 pr-16",children:[e.jsxs("code",{className:"block break-all text-[10px] text-[var(--accent)]",children:["$ ",L]}),e.jsx("button",{type:"button",onClick:P,className:"absolute right-2 top-1.5 text-[10px] text-[var(--text-muted)] hover:text-[var(--text-primary)]",children:l?e.jsx("span",{className:"text-[var(--accent)]",children:t("common.copied")}):e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(W,{className:"h-3 w-3"})," ",t("common.copy")]})})]}),e.jsx("div",{className:"rounded-[4px] border border-yellow-500/30 bg-yellow-500/10 px-3 py-2 text-[10px] text-yellow-400",children:t("admin.token_shown_once")})]}):e.jsx("p",{className:"mt-2 text-[10px] text-[var(--text-muted)]",children:t("machines.reg_completed")})]}),e.jsxs("div",{className:`rounded-[4px] border p-4 ${c===2?"border-[var(--accent)] bg-[var(--bg-primary)]":"border-[var(--border)] bg-[var(--bg-primary)]"}`,children:[e.jsxs("p",{className:"text-[13px] font-bold text-[var(--text-primary)]",children:["> ",t("machines.reg_step_install_worker")]}),e.jsx("p",{className:"mt-2 text-[11px] text-[var(--text-muted)]",children:t("machines.reg_running_installation")}),c>=2&&e.jsxs("div",{className:"mt-3 space-y-1 rounded-[4px] border border-[var(--border)] bg-[var(--bg-primary)] p-3",children:[e.jsx("p",{className:"text-[10px] text-[var(--text-primary)]",children:"$ overlord setup worker"}),e.jsx("p",{className:"text-[10px] text-[var(--text-muted)]",children:"server url: https://..."}),e.jsx("p",{className:"text-[10px] text-[var(--text-muted)]",children:"worker token: ovw_..."}),e.jsx("p",{className:"text-[10px] text-[var(--text-muted)]",children:"machine name: my-worker"}),e.jsx("p",{className:"text-[10px] text-[var(--accent)]",children:"config written. starting worker..."}),c===2&&e.jsx("p",{className:"text-[10px] text-[var(--accent)] animate-pulse",children:"&block;"})]}),c===2&&e.jsx("button",{type:"button",onClick:A,className:"mt-3 rounded-[4px] bg-[var(--accent)] px-4 py-1.5 text-xs font-bold text-black",children:t("machines.reg_installed_wait")})]}),e.jsxs("div",{className:`rounded-[4px] border p-4 ${c===3?"border-amber-500 bg-[var(--bg-primary)]":"border-[var(--border)] bg-[var(--bg-primary)]"}`,children:[e.jsxs("p",{className:"text-[13px] font-bold text-[var(--text-primary)]",children:["> ",t("machines.reg_step_waiting_activation")]}),c>=3?e.jsx("div",{className:"mt-3 flex flex-col items-center justify-center gap-3 py-6",children:c===3?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"flex h-10 w-10 items-center justify-center rounded-full border-2 border-amber-500",children:e.jsx(H,{className:"h-5 w-5 animate-spin text-amber-500"})}),e.jsx("p",{className:"text-[11px] text-[var(--text-muted)]",children:t("machines.reg_listening_for_worker")})]}):e.jsx("p",{className:"text-[10px] text-[var(--accent)]",children:t("machines.reg_worker_connected")})}):e.jsx("p",{className:"mt-2 text-[11px] text-[var(--text-muted)]",children:t("machines.reg_waiting_for_worker")})]}),e.jsxs("div",{className:`rounded-[4px] border p-4 ${c===4?"border-[var(--accent)] bg-[var(--bg-primary)]":"border-[var(--border)] bg-[var(--bg-primary)]"}`,children:[e.jsxs("p",{className:"text-[13px] font-bold text-[var(--text-primary)]",children:["> ",t("machines.reg_step_activated")]}),c===4?e.jsxs("div",{className:"mt-3 flex flex-col items-center justify-center gap-3 py-6",children:[e.jsx("div",{className:"flex h-12 w-12 items-center justify-center rounded-full bg-[var(--accent)]/20",children:e.jsx(R,{className:"h-6 w-6 text-[var(--accent)]"})}),e.jsx("p",{className:"text-xs font-bold text-[var(--accent)]",children:t("machines.reg_worker_activated",{name:k})}),E&&e.jsxs("p",{className:"text-[10px] text-[var(--text-muted)]",children:["machine_id: ",E]})]}):e.jsx("p",{className:"mt-2 text-[11px] text-[var(--text-muted)]",children:t("machines.reg_worker_registered")})]})]}),c===4&&e.jsx("div",{className:"mt-6 flex justify-end",children:e.jsx("button",{type:"button",onClick:a,className:"rounded-[4px] bg-[var(--accent)] px-5 py-2 text-xs font-bold text-black",children:t("machines.reg_done")})})]})]}):null}function pe(){const r=U(),{t:a}=C(),[i,t]=s.useState([]),[c,m]=s.useState(!0),[d,h]=s.useState("all"),[o,v]=s.useState("fleet"),[g,f]=s.useState(!1),[y,b]=s.useState(0),j=B(l=>{var x;return(x=l.user)==null?void 0:x.role}),N=s.useMemo(()=>[{value:"all",label:a("machines.all_statuses")},{value:u.ONLINE,label:a("machines.online")},{value:u.OFFLINE,label:a("machines.offline")},{value:u.DRAINING,label:a("machines.draining")}],[a]);return K(s.useMemo(()=>j==="admin"?e.jsxs("button",{type:"button",onClick:()=>f(!0),className:"flex items-center gap-1.5 rounded-[4px] bg-[var(--accent)] px-3 py-1.5 text-xs text-black hover:opacity-90 transition-opacity",children:[e.jsx(Q,{size:14}),a("machines.register_worker")]}):null,[j,a])),s.useEffect(()=>{async function l(){m(!0);try{const x=new URLSearchParams;d!=="all"&&x.set("status",d);const k=await S.get("web/machines",{searchParams:x}).json();t(k)}catch{}finally{m(!1)}}l()},[d,y]),e.jsxs("div",{className:"mx-auto max-w-6xl px-6 py-8 font-mono lowercase",children:[e.jsxs("div",{className:"mb-6 flex items-center justify-between border-b border-[var(--border)]",children:[e.jsxs("div",{className:"flex",children:[e.jsxs("button",{type:"button",onClick:()=>{v("fleet"),b(l=>l+1)},className:`flex items-center gap-2 px-4 py-2.5 text-xs transition-colors ${o==="fleet"?"border-b-2 border-[var(--accent)] text-[var(--text-primary)]":"text-[var(--text-muted)] hover:text-[var(--text-secondary)]"}`,children:[e.jsx(T,{size:14}),a("machines.fleet")]}),e.jsxs("button",{type:"button",onClick:()=>v("setup_guide"),className:`flex items-center gap-2 px-4 py-2.5 text-xs transition-colors ${o==="setup_guide"?"border-b-2 border-[var(--accent)] text-[var(--text-primary)]":"text-[var(--text-muted)] hover:text-[var(--text-secondary)]"}`,children:[e.jsx(Y,{size:14}),a("machines.setup_guide")]})]}),o==="fleet"&&e.jsx(V,{value:d,onChange:h,options:N})]}),o==="fleet"?c?e.jsx(J,{cards:6}):i.length===0?e.jsx(X,{icon:T,title:a("machines.no_machines_found"),description:a(d!=="all"?"machines.try_changing_status_filter":"machines.no_machines_registered"),action:e.jsx("button",{type:"button",onClick:()=>v("setup_guide"),className:"rounded-[4px] bg-[var(--accent)] px-5 py-2 text-[11px] font-bold text-black",children:a("machines.view_setup_guide")})}):e.jsx("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:i.map(l=>e.jsx(ee,{machine:l,onPress:()=>r(`/machines/${l.id}`)},l.id))}):e.jsx(q,{}),e.jsx(te,{isOpen:g,onClose:()=>{f(!1),b(l=>l+1)},onRegistered:()=>{b(l=>l+1)}})]})}export{pe as default};
@@ -1 +0,0 @@
1
- import{a as S,r as s,j as e,f as k,d as T,o as L,K as E,x as M,l as D}from"./index-BiwmRYQP.js";import{K as R}from"./key-BKYKn-II.js";import{C as F}from"./copy-BOEo9gzs.js";import{E as A}from"./external-link-DEXczFxv.js";import{E as I}from"./EmptyState-B5qaL1Ft.js";import{T as O}from"./Skeleton-CyWhQxlf.js";import{P as $}from"./plus-B1evYZLw.js";function P({isOpen:a,onClose:v,onCreated:j}){const{t:n}=S(),[r,c]=s.useState(""),[i,x]=s.useState(!1),[m,p]=s.useState(""),u=()=>{c(""),p(""),v()},d=async()=>{if(p(""),!r.trim()){p(n("admin.pat_label_required"));return}try{x(!0);const o=await k.post("admin/worker-tokens",{json:{label:r.trim()}}).json();c(""),j({token:o.token,id:o.id})}catch(o){const l=o instanceof Error?o.message:n("admin.pat_failed_to_generate");p(l)}finally{x(!1)}};return a?e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center",style:{backgroundColor:"var(--modal-backdrop, rgba(12,12,12,0.6))"},onClick:o=>{o.target===o.currentTarget&&u()},children:e.jsxs("div",{className:"w-full border border-[var(--border)] bg-[var(--bg-card)]",style:{maxWidth:"480px",borderRadius:"4px",fontFamily:"'JetBrains Mono', monospace"},children:[e.jsxs("div",{className:"flex items-center gap-2 border-b border-[var(--border)] px-5 py-4",children:[e.jsx(R,{className:"h-4 w-4 text-[var(--accent)]"}),e.jsx("span",{className:"text-sm font-medium text-[var(--text-primary)]",children:n("admin.generate_worker_token_title")})]}),e.jsxs("div",{className:"space-y-4 px-5 py-4",children:[m&&e.jsx("div",{className:"border border-red-500/30 bg-red-500/10 px-3 py-2 text-xs text-red-400",style:{borderRadius:"4px"},children:m}),e.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:n("admin.create_one_time_token")}),e.jsxs("div",{children:[e.jsx("label",{className:"mb-1.5 block text-xs text-[var(--text-muted)]",children:n("admin.label")}),e.jsx("input",{type:"text",placeholder:n("admin.pat_label_placeholder"),value:r,onChange:o=>c(o.target.value),className:"w-full border border-[var(--border)] bg-[var(--bg-card)] px-3 py-2 text-sm text-[var(--text-primary)] placeholder:text-[var(--text-muted)] focus:border-[var(--accent)] focus:outline-none",style:{borderRadius:"4px",fontFamily:"'JetBrains Mono', monospace"},onKeyDown:o=>{o.key==="Enter"&&d()}}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-muted)]",children:n("admin.label_identifies_machine")})]})]}),e.jsxs("div",{className:"flex justify-end gap-2 border-t border-[var(--border)] px-5 py-3",children:[e.jsx("button",{onClick:u,className:"border border-[var(--border)] bg-transparent px-4 py-1.5 text-xs text-[var(--text-muted)] transition-colors hover:border-[var(--text-muted)] hover:text-[var(--text-primary)]",style:{borderRadius:"4px",fontFamily:"'JetBrains Mono', monospace"},children:n("common.cancel")}),e.jsx("button",{onClick:d,disabled:i,className:"bg-[var(--accent)] px-4 py-1.5 text-xs font-medium text-[#0C0C0C] transition-opacity hover:opacity-80 disabled:opacity-50",style:{borderRadius:"4px",fontFamily:"'JetBrains Mono', monospace"},children:n(i?"admin.generating":"admin.generate")})]})]})}):null}const B=3e3,J=600*1e3;function K({isOpen:a,token:v,tokenId:j,onClose:n}){const{t:r}=S(),[c,i]=s.useState("command"),[x,m]=s.useState(!1),[p,u]=s.useState(""),[d,o]=s.useState(null),l=s.useRef(void 0),g=s.useRef(Date.now()),h=T(),N=typeof window<"u"?window.location.origin:"https://overlord.example.com",y=`overlord setup worker --token ${v} --server ${N}`,w=async()=>{try{await navigator.clipboard.writeText(y),m(!0),setTimeout(()=>m(!1),2e3)}catch{}},_=s.useCallback(async()=>{try{const f=await k.get(`admin/worker-tokens/${j}/status`).json();f.status==="used"&&f.machine_name&&(i("success"),u(f.machine_name),o(f.machine_id??null),l.current&&clearInterval(l.current))}catch{}Date.now()-g.current>J&&(i("timeout"),l.current&&clearInterval(l.current))},[j]),C=()=>{i("waiting"),g.current=Date.now(),l.current=setInterval(_,B)};s.useEffect(()=>()=>{l.current&&clearInterval(l.current)},[]);const t=()=>{n(),d&&h(`/machines/${d}`)};if(!a)return null;const b={fontFamily:"'JetBrains Mono', monospace",borderRadius:"4px"};return e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center",style:{backgroundColor:"var(--modal-backdrop, rgba(12,12,12,0.6))"},onClick:f=>{f.target===f.currentTarget&&n()},children:e.jsxs("div",{className:"w-full border border-[var(--border)] bg-[var(--bg-card)]",style:{...b,maxWidth:"480px"},children:[e.jsx("div",{className:"flex items-center gap-2 border-b border-[var(--border)] px-5 py-4",children:c==="success"?e.jsxs(e.Fragment,{children:[e.jsx(L,{className:"h-4 w-4 text-[var(--accent)]"}),e.jsx("span",{className:"text-sm font-medium text-[var(--text-primary)]",children:r("admin.worker_registered")})]}):e.jsxs(e.Fragment,{children:[e.jsx(R,{className:"h-4 w-4 text-[var(--accent)]"}),e.jsx("span",{className:"text-sm font-medium text-[var(--text-primary)]",children:r("admin.worker_token_generated")})]})}),e.jsxs("div",{className:"space-y-4 px-5 py-4",children:[c!=="success"&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:r("admin.run_command_desc")}),e.jsxs("div",{className:"relative border border-[var(--border)] bg-[var(--bg-card)] p-4",style:{borderRadius:"4px"},children:[e.jsxs("code",{className:"block break-all pr-20 text-xs text-[var(--accent)]",children:["$ ",y]}),e.jsx("button",{onClick:w,className:"absolute right-2 top-2 flex items-center gap-1 border border-[var(--border)] bg-transparent px-2 py-1 text-xs text-[var(--text-muted)] transition-colors hover:border-[var(--text-muted)] hover:text-[var(--text-primary)]",style:b,children:x?e.jsx("span",{className:"text-[var(--accent)]",children:r("common.copied")}):e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(F,{className:"h-3 w-3"})," ",r("common.copy")]})})]}),e.jsx("div",{className:"border border-yellow-500/30 bg-yellow-500/10 px-3 py-2 text-xs text-yellow-400",style:{borderRadius:"4px"},children:r("admin.token_shown_once")})]}),c==="waiting"&&e.jsxs("div",{className:"flex items-center gap-3 border border-[var(--border)] bg-[var(--bg-card)] px-4 py-3",style:{borderRadius:"4px"},children:[e.jsx("div",{className:"h-4 w-4 animate-spin rounded-full border-2 border-[var(--accent)] border-t-transparent"}),e.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:r("admin.waiting_for_worker")})]}),c==="timeout"&&e.jsx("div",{className:"border border-[var(--border)] bg-[var(--bg-card)] px-4 py-3 text-xs text-[var(--text-muted)]",style:{borderRadius:"4px"},children:r("admin.token_not_yet_used")}),c==="success"&&e.jsxs("div",{className:"border border-[var(--accent)]/30 bg-[var(--accent)]/10 px-4 py-3",style:{borderRadius:"4px"},children:[e.jsx("p",{className:"text-xs text-[var(--accent)]",children:r("admin.worker_registered_success")}),e.jsxs("p",{className:"mt-1 text-xs text-[var(--text-primary)]",children:[r("admin.machine"),": ",e.jsx("span",{className:"text-[var(--accent)]",children:p})]})]})]}),e.jsxs("div",{className:"flex justify-end gap-2 border-t border-[var(--border)] px-5 py-3",children:[c==="command"&&e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:n,className:"border border-[var(--border)] bg-transparent px-4 py-1.5 text-xs text-[var(--text-muted)] transition-colors hover:border-[var(--text-muted)] hover:text-[var(--text-primary)]",style:b,children:r("common.close")}),e.jsx("button",{onClick:C,className:"bg-[var(--accent)] px-4 py-1.5 text-xs font-medium text-[#0C0C0C] transition-opacity hover:opacity-80",style:b,children:r("admin.copied_wait_for_worker")})]}),c==="waiting"&&e.jsx("button",{onClick:n,className:"border border-[var(--border)] bg-transparent px-4 py-1.5 text-xs text-[var(--text-muted)] transition-colors hover:border-[var(--text-muted)] hover:text-[var(--text-primary)]",style:b,children:r("admin.close_worker_can_register")}),c==="timeout"&&e.jsx("button",{onClick:n,className:"border border-[var(--border)] bg-transparent px-4 py-1.5 text-xs text-[var(--text-muted)] transition-colors hover:border-[var(--text-muted)] hover:text-[var(--text-primary)]",style:b,children:r("common.close")}),c==="success"&&e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:n,className:"border border-[var(--border)] bg-transparent px-4 py-1.5 text-xs text-[var(--text-muted)] transition-colors hover:border-[var(--text-muted)] hover:text-[var(--text-primary)]",style:b,children:r("common.close")}),e.jsxs("button",{onClick:t,className:"flex items-center gap-1.5 bg-[var(--accent)] px-4 py-1.5 text-xs font-medium text-[#0C0C0C] transition-opacity hover:opacity-80",style:b,children:[e.jsx(A,{className:"h-3 w-3"}),r("admin.view_machine")]})]})]})]})})}function H(){const{t:a}=S(),[v,j]=s.useState([]),[n,r]=s.useState(!0),[c,i]=s.useState(!1),[x,m]=s.useState(null),[p,u]=s.useState(!1),[d,o]=s.useState(null),[l,g]=s.useState(!1),[h,N]=s.useState(!1),y=s.useCallback(async()=>{try{r(!0);const t=await k.get("admin/worker-tokens").json();j(t)}catch{}finally{r(!1)}},[]);s.useEffect(()=>{y()},[y]);const w=async()=>{if(d){g(!0);try{await k.post(`admin/worker-tokens/${d.id}/revoke`),u(!1),o(null),y()}catch{}finally{g(!1)}}},_=t=>{i(!1),m(t),y()},C=t=>{switch(t){case"active":return"text-green-400";case"used":return"text-blue-400";case"revoked":return"text-red-400";case"expired":return"text-[var(--text-muted)]";default:return"text-[var(--text-muted)]"}};return e.jsxs("div",{className:"font-mono",children:[e.jsxs("div",{className:"mb-6 flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm text-[var(--text-primary)]",children:a("admin.tokens_title")}),e.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:a("admin.tokens_subtitle")})]}),e.jsxs("button",{type:"button",className:"flex items-center gap-1.5 rounded-[4px] bg-[var(--accent)] px-3 py-1.5 text-xs text-black hover:opacity-90 transition-opacity",onClick:()=>i(!0),children:[e.jsx($,{className:"h-3.5 w-3.5"}),a("admin.generate_token")]})]}),!n&&v.some(t=>t.status==="revoked")&&e.jsx("div",{className:"mb-4 flex items-center gap-2",children:e.jsx("button",{type:"button",onClick:()=>N(!h),className:`text-xs transition-colors ${h?"text-[var(--text-primary)]":"text-[var(--text-muted)] hover:text-[var(--text-secondary)]"}`,children:a(h?"admin.hide_revoked":"admin.show_revoked")})}),n?e.jsx("div",{className:"rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] p-4",children:e.jsx(O,{rows:3})}):v.filter(t=>h||t.status!=="revoked").length===0?e.jsx(I,{icon:E,title:a("admin.no_worker_tokens"),description:a("admin.generate_token_desc"),actionLabel:a("admin.generate_token"),onAction:()=>i(!0)}):e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-xs",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-[var(--border)] text-left text-[var(--text-muted)]",children:[e.jsx("th",{className:"pb-2 pr-4 font-normal",children:a("admin.label")}),e.jsx("th",{className:"pb-2 pr-4 font-normal",children:a("admin.purpose")}),e.jsx("th",{className:"pb-2 pr-4 font-normal",children:a("admin.status")}),e.jsx("th",{className:"pb-2 pr-4 font-normal",children:a("common.created_at")}),e.jsx("th",{className:"pb-2 pr-4 font-normal",children:a("admin.expires_at")}),e.jsx("th",{className:"pb-2 font-normal",children:a("common.actions")})]})}),e.jsx("tbody",{children:v.filter(t=>h||t.status!=="revoked").map(t=>e.jsxs("tr",{className:"border-b border-[var(--border-row)] hover:bg-white/[0.02] transition-colors",children:[e.jsx("td",{className:"py-2.5 pr-4 text-[var(--text-primary)]",children:t.label}),e.jsx("td",{className:"py-2.5 pr-4 text-[var(--text-secondary)]",children:t.purpose}),e.jsx("td",{className:"py-2.5 pr-4",children:e.jsx("span",{className:C(t.status),children:t.status})}),e.jsx("td",{className:"py-2.5 pr-4 text-[var(--text-muted)]",children:new Date(t.createdAt).toLocaleDateString()}),e.jsx("td",{className:"py-2.5 pr-4",children:t.expiresAt?e.jsx("span",{className:"text-[var(--text-secondary)]",children:new Date(t.expiresAt).toLocaleDateString()}):e.jsx("span",{className:"text-[var(--text-muted)]",children:"—"})}),e.jsx("td",{className:"py-2.5",children:t.status==="active"&&e.jsxs("button",{type:"button",className:"flex items-center gap-1 rounded-[4px] px-2 py-1 text-red-400 hover:text-red-300 hover:bg-white/[0.05] transition-colors",onClick:()=>{o(t),u(!0)},children:[e.jsx(M,{className:"h-3.5 w-3.5"}),a("admin.revoke")]})})]},t.id))})]})}),e.jsx(P,{isOpen:c,onClose:()=>i(!1),onCreated:_}),x&&e.jsx(K,{isOpen:!!x,token:x.token,tokenId:x.id,onClose:()=>m(null)}),e.jsx(D,{isOpen:p,onClose:()=>{u(!1),o(null)},onConfirm:w,title:a("admin.revoke_token"),message:a("admin.revoke_token_confirm",{label:(d==null?void 0:d.label)??""}),confirmLabel:a("admin.revoke"),confirmVariant:"danger",isLoading:l})]})}export{H as default};