@overlordai/server 1.0.142 → 1.0.144
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/database/migrations/012-schema-index-fixes.sql +1 -0
- package/database/migrations/013-review-status.sql +8 -0
- package/dist/adapters/command-parser.utils.d.ts +26 -1
- package/dist/adapters/command-parser.utils.d.ts.map +1 -1
- package/dist/adapters/command-parser.utils.js +112 -26
- package/dist/adapters/command-parser.utils.js.map +1 -1
- package/dist/adapters/help-text.d.ts.map +1 -1
- package/dist/adapters/help-text.js +5 -1
- package/dist/adapters/help-text.js.map +1 -1
- package/dist/adapters/lark/lark-message.parser.d.ts.map +1 -1
- package/dist/adapters/lark/lark-message.parser.js +3 -1
- package/dist/adapters/lark/lark-message.parser.js.map +1 -1
- package/dist/adapters/lark/lark.adapter.d.ts.map +1 -1
- package/dist/adapters/lark/lark.adapter.js +46 -9
- package/dist/adapters/lark/lark.adapter.js.map +1 -1
- package/dist/adapters/nlu-fallback.utils.d.ts +27 -0
- package/dist/adapters/nlu-fallback.utils.d.ts.map +1 -0
- package/dist/adapters/nlu-fallback.utils.js +57 -0
- package/dist/adapters/nlu-fallback.utils.js.map +1 -0
- package/dist/adapters/nlu.service.d.ts.map +1 -1
- package/dist/adapters/nlu.service.js +22 -6
- package/dist/adapters/nlu.service.js.map +1 -1
- package/dist/adapters/slack/slack-message.parser.d.ts.map +1 -1
- package/dist/adapters/slack/slack-message.parser.js +3 -1
- package/dist/adapters/slack/slack-message.parser.js.map +1 -1
- package/dist/adapters/slack/slack.adapter.d.ts.map +1 -1
- package/dist/adapters/slack/slack.adapter.js +31 -6
- package/dist/adapters/slack/slack.adapter.js.map +1 -1
- package/dist/database/repositories/project-member.repository.js +4 -4
- package/dist/database/repositories/project-member.repository.js.map +1 -1
- package/dist/database/repositories/project.repository.d.ts.map +1 -1
- package/dist/database/repositories/project.repository.js +9 -7
- package/dist/database/repositories/project.repository.js.map +1 -1
- package/dist/database/repositories/task.repository.d.ts +18 -0
- package/dist/database/repositories/task.repository.d.ts.map +1 -1
- package/dist/database/repositories/task.repository.js +104 -58
- package/dist/database/repositories/task.repository.js.map +1 -1
- package/dist/dispatcher/dispatcher.service.d.ts +24 -1
- package/dist/dispatcher/dispatcher.service.d.ts.map +1 -1
- package/dist/dispatcher/dispatcher.service.js +124 -113
- package/dist/dispatcher/dispatcher.service.js.map +1 -1
- package/dist/notifier/notification-consumer.d.ts.map +1 -1
- package/dist/notifier/notification-consumer.js +14 -9
- package/dist/notifier/notification-consumer.js.map +1 -1
- package/dist/web/frame-handlers/review-report.handler.d.ts.map +1 -1
- package/dist/web/frame-handlers/review-report.handler.js +15 -0
- package/dist/web/frame-handlers/review-report.handler.js.map +1 -1
- package/dist/web/task.controller.d.ts +11 -1
- package/dist/web/task.controller.d.ts.map +1 -1
- package/dist/web/task.controller.js +51 -6
- package/dist/web/task.controller.js.map +1 -1
- package/package.json +4 -4
- package/public/assets/{AccessTokensPage-DsNgVUdv.js → AccessTokensPage-zuZElOFy.js} +1 -1
- package/public/assets/{AdminPage-NZC6yOHW.js → AdminPage-OHTVG-ck.js} +1 -1
- package/public/assets/{AgentCliPage-Bp8tQiWl.js → AgentCliPage-BsZmnI3p.js} +1 -1
- package/public/assets/{ApiReferencePage-DXNSPdww.js → ApiReferencePage-8yiImnYs.js} +1 -1
- package/public/assets/{ArchitecturePage-DFUNHKTN.js → ArchitecturePage-Deswgqy2.js} +1 -1
- package/public/assets/{AuditLogPage-Wtpr8CDi.js → AuditLogPage-Hn4ivp8Y.js} +1 -1
- package/public/assets/{BindPlatformPage-Bp_NG22g.js → BindPlatformPage-DjGHKswB.js} +1 -1
- package/public/assets/{BotIntegrationPage-DuH_f_mp.js → BotIntegrationPage-58cLGS0T.js} +1 -1
- package/public/assets/{BotManage-CJ5GZ0HR.js → BotManage-Dss1Y_jv.js} +1 -1
- package/public/assets/{BotSetupPage-Ct_gjzJt.js → BotSetupPage-C_KKFdu3.js} +1 -1
- package/public/assets/{ChangelogPage-DrpgpyjK.js → ChangelogPage-5btaAfls.js} +1 -1
- package/public/assets/{CliReferencePage-BiUl0LtI.js → CliReferencePage--yAuXfNl.js} +1 -1
- package/public/assets/{ConfirmStageDialog-BsoAtSes.js → ConfirmStageDialog-BatYNr9r.js} +4 -4
- package/public/assets/{DeploymentPage-DtlH8d7p.js → DeploymentPage-Qi860C4T.js} +1 -1
- package/public/assets/{DevWorkflowPage-BoZm03L7.js → DevWorkflowPage-CZks72g2.js} +1 -1
- package/public/assets/{DeveloperManage-hoNX7J5P.js → DeveloperManage-7tpVdYUx.js} +1 -1
- package/public/assets/{DeveloperSetupPage-D3FDp-R7.js → DeveloperSetupPage-CSs2Mh7c.js} +1 -1
- package/public/assets/{DocsIndexPage-ZBDBTreg.js → DocsIndexPage-BmSMwLvO.js} +1 -1
- package/public/assets/{DocsLayout-CX3AKUlL.js → DocsLayout-CunlDzH9.js} +1 -1
- package/public/assets/{DocsPrimitives-B3qhkVFu.js → DocsPrimitives-Bqnk0mEW.js} +1 -1
- package/public/assets/{EditProjectPage-DKaSpnod.js → EditProjectPage-CJAdaxRE.js} +2 -2
- package/public/assets/{EmptyState-BKUHLcAb.js → EmptyState-DpRw-xch.js} +1 -1
- package/public/assets/{EnvVariablesPage-C2nu-wxe.js → EnvVariablesPage-DWD4RzmX.js} +1 -1
- package/public/assets/HomePage-oShWGYcN.js +1 -0
- package/public/assets/{InfoRow-CBKDMEtd.js → InfoRow-CTXIPrG6.js} +1 -1
- package/public/assets/{InstallationPage-0TO7IQzJ.js → InstallationPage-BgbU06Ei.js} +1 -1
- package/public/assets/{LandingPage-YcgE-OTL.js → LandingPage-C-s-hSgz.js} +1 -1
- package/public/assets/{LocalDevelopmentPage-BDpTHWAo.js → LocalDevelopmentPage-Cg4FYaCn.js} +1 -1
- package/public/assets/{LoginPage-F34Kt4ot.js → LoginPage-BhyQxY5d.js} +1 -1
- package/public/assets/{MetricBar-xV1juDz6.js → MetricBar-DZOZStDZ.js} +1 -1
- package/public/assets/{NotFoundPage-DPZDwk1M.js → NotFoundPage-DaeTOzAm.js} +1 -1
- package/public/assets/{OnboardingGuide-C8QTC3cZ.js → OnboardingGuide-DGH0Yfsj.js} +1 -1
- package/public/assets/{PermissionsPage-DsNmsUoe.js → PermissionsPage-D4Lqb40x.js} +1 -1
- package/public/assets/PipelineConfigPage-CAWpyPiY.js +22 -0
- package/public/assets/{PipelineEditorPage-18u7wxjE.js → PipelineEditorPage-BLDxO49P.js} +2 -2
- package/public/assets/PlanPage-UX5QUlvv.js +1 -0
- package/public/assets/{ProfilePage-D3YRdW9C.js → ProfilePage-B73YqnCd.js} +1 -1
- package/public/assets/ProjectDetailPage-eNAn85vT.js +7 -0
- package/public/assets/{ProjectListPage-D62NmkBp.js → ProjectListPage-61CMBaxl.js} +2 -2
- package/public/assets/{PtyTerminal-B3lRN-u1.js → PtyTerminal-DOgYXCFD.js} +1 -1
- package/public/assets/{QuickAuth-DzYrNwL-.js → QuickAuth-DSSMYJEC.js} +1 -1
- package/public/assets/{RemoveMemberConfirmDialog-svHE4uU4.js → RemoveMemberConfirmDialog-MiS_sqor.js} +1 -1
- package/public/assets/{ReviewAggregatePage-Dq3hl9db.js → ReviewAggregatePage-LBAVcz2T.js} +2 -2
- package/public/assets/ReviewPage-BNa6T3xv.js +1 -0
- package/public/assets/{Select-BMBYwPr-.js → Select-FmuTJbfh.js} +1 -1
- package/public/assets/{SettingsPage-Ml3L-j5R.js → SettingsPage-aSrpn6Ta.js} +1 -1
- package/public/assets/{Skeleton-9LGrFcdv.js → Skeleton-Bo0DEIHn.js} +1 -1
- package/public/assets/{SkillPage-BGYJMqPr.js → SkillPage-BjiQKd7n.js} +1 -1
- package/public/assets/TaskDetailPage-BLNjDqnY.js +21 -0
- package/public/assets/{TaskGuidePage-CKnugDRu.js → TaskGuidePage-C5o7i2D0.js} +1 -1
- package/public/assets/TaskListPage-26QNdjqP.js +1 -0
- package/public/assets/{TaskStatusBadge-B_S_xjEI.js → TaskStatusBadge-CD8sO9C_.js} +1 -1
- package/public/assets/TerminalHomePage-DBhs1WQJ.js +6 -0
- package/public/assets/{TokenManage-BqOEJDHV.js → TokenManage-BQ0e_d4e.js} +1 -1
- package/public/assets/{Tooltip-BFj-n88a.js → Tooltip-BKRBwA7o.js} +1 -1
- package/public/assets/{TotpSetupPage-CI411-Y7.js → TotpSetupPage-IVkRIgKh.js} +1 -1
- package/public/assets/WorkerDetailPage-nw_gzQ45.js +1 -0
- package/public/assets/{WorkerListPage-nPKvREXn.js → WorkerListPage-CF1x84G-.js} +2 -2
- package/public/assets/{WorkerOperationsPage-qgdLSK1X.js → WorkerOperationsPage-Clh8jDGG.js} +1 -1
- package/public/assets/{WorkerSetupGuidePage-DHbju_7j.js → WorkerSetupGuidePage-C1wXY1wd.js} +1 -1
- package/public/assets/{WorkerSetupPage-D0Cob5nl.js → WorkerSetupPage-CTCwHKaC.js} +1 -1
- package/public/assets/{agent-type-options-CdJpMswW.js → agent-type-options-5v4PgZnP.js} +1 -1
- package/public/assets/{arrow-left-BOJ_pZwC.js → arrow-left-CR_n40mK.js} +1 -1
- package/public/assets/{arrow-right-GWPYDcKr.js → arrow-right-D-j7nSgI.js} +1 -1
- package/public/assets/{bot-DZ_48uoa.js → bot--DUOKBmv.js} +1 -1
- package/public/assets/{chevron-down-DiFQzkq3.js → chevron-down-CDFiGGBG.js} +1 -1
- package/public/assets/{chevron-left-PB0m_3-R.js → chevron-left-C_lJcnCg.js} +1 -1
- package/public/assets/{chevron-right-Bsbm1nYp.js → chevron-right-IZlTWMcO.js} +1 -1
- package/public/assets/{chevron-up-CvYNL872.js → chevron-up-DSOCVgRW.js} +1 -1
- package/public/assets/{copy-DR5cQtVj.js → copy-2UMMaHKT.js} +1 -1
- package/public/assets/{download-FpaVrNQK.js → download-D2NyL1OR.js} +1 -1
- package/public/assets/{external-link-CiQhHCsl.js → external-link-B9CWNSMc.js} +1 -1
- package/public/assets/{file-text-Gk2VyRBd.js → file-text-COzaNu8e.js} +1 -1
- package/public/assets/{git-fork-CLaKXs0Y.js → git-fork-9KuFRmam.js} +1 -1
- package/public/assets/{index-CfvO5R0v.js → index-DvdpkDlU.js} +5 -5
- package/public/assets/{key-b2-JaSCL.js → key-DoJm5thS.js} +1 -1
- package/public/assets/{loader-circle-_Xw40aLD.js → loader-circle-B5SLmhRr.js} +1 -1
- package/public/assets/{pencil-z5Zqj0qg.js → pencil-C_niWuAb.js} +1 -1
- package/public/assets/{play-D2z1wzeo.js → play-Do-8kkck.js} +1 -1
- package/public/assets/{plus-DDEIETPT.js → plus-C8aSzgHN.js} +1 -1
- package/public/assets/{rotate-ccw-DryDtPrl.js → rotate-ccw-BSPzJeCn.js} +1 -1
- package/public/assets/{scroll-text-DdAPH940.js → scroll-text-DdqU_dT6.js} +1 -1
- package/public/assets/{settings-DLSb7OkM.js → settings-C8PB6BpE.js} +1 -1
- package/public/assets/{skip-forward-Dshgkb5J.js → skip-forward-CEuvYtQc.js} +1 -1
- package/public/assets/{status-colors-w6Ie5LWO.js → status-colors-0U8b2F2t.js} +1 -1
- package/public/assets/{task-constants-DpDhF7YW.js → task-constants-DTDx5Lfp.js} +1 -1
- package/public/assets/{task.store-QLdgw-z_.js → task.store-CGgehOLp.js} +1 -1
- package/public/assets/{trash-2-DN1oshyp.js → trash-2-tEkzRo6q.js} +1 -1
- package/public/assets/{useFetch-DpOLDSFc.js → useFetch-CJDmNhIT.js} +1 -1
- package/public/assets/{users-DrLwCx8Z.js → users-Cs2w_uVo.js} +1 -1
- package/public/assets/{wifi-B4XgJ6JW.js → wifi-BCoKY35p.js} +1 -1
- package/public/assets/{workflow-Cd6zqDgi.js → workflow-BLCy8gMf.js} +1 -1
- package/public/index.html +1 -1
- package/public/sw.js +1 -1
- package/public/assets/HomePage-CQ0Upd0D.js +0 -1
- package/public/assets/PipelineConfigPage-D5gx3bIv.js +0 -22
- package/public/assets/PlanPage-Dds_7koM.js +0 -1
- package/public/assets/ProjectDetailPage-1mftEUqP.js +0 -7
- package/public/assets/ReviewPage-CNeCz2eT.js +0 -1
- package/public/assets/TaskDetailPage-Beto_Zqp.js +0 -21
- package/public/assets/TaskListPage-CFri9wCk.js +0 -1
- package/public/assets/TerminalHomePage-CDr4Mq6o.js +0 -6
- package/public/assets/WorkerDetailPage-DcMycoTh.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{R as pe,f as J,a as $,p as u,j as e,l as ee,n as me,u as ue,i as he,r,h as P,X as be,k as ve,w as fe,H as ge,t as W,x as ye,y as V,m as je}from"./index-CfvO5R0v.js";import{u as X}from"./task.store-QLdgw-z_.js";import{T as te}from"./TaskStatusBadge-B_S_xjEI.js";import{f as se}from"./date-RFA7-ZGs.js";import{T as ke}from"./Tooltip-BFj-n88a.js";import{G as re}from"./git-fork-CLaKXs0Y.js";import{S as A}from"./Select-BMBYwPr-.js";import{a as Ne}from"./task-constants-DpDhF7YW.js";import{g as Ce}from"./agent-type-options-CdJpMswW.js";import{C as we}from"./copy-DR5cQtVj.js";import{E as Y}from"./EmptyState-BKUHLcAb.js";import{T as Z}from"./Skeleton-9LGrFcdv.js";import{P as Se}from"./plus-DDEIETPT.js";import{C as _e}from"./chevron-left-PB0m_3-R.js";import{C as Te}from"./chevron-right-Bsbm1nYp.js";import"./status-colors-w6Ie5LWO.js";import"./chevron-down-DiFQzkq3.js";const Ee=pe.memo(function({task:s}){const d=J(),{t:c}=$(),x=(a,b)=>c(`common.${a}`,{n:b}),i=s.status===u.COMPLETED||s.status===u.FAILED||s.status===u.CANCELLED;return e.jsxs("tr",{onClick:()=>d(`/tasks/${s.id}`),className:"cursor-pointer border-b border-[var(--border-row)] transition-colors hover:bg-[var(--bg-input)]",children:[e.jsxs("td",{className:"w-16 py-3 pr-4 font-mono text-xs font-medium text-[var(--text-secondary)] text-right tabular-nums",children:["#",s.id]}),e.jsx("td",{className:"py-3 pr-4 text-sm text-[var(--text-primary)]",children:e.jsx(ke,{content:me(s),children:ee(s)})}),e.jsx("td",{className:"py-3 pr-4",children:e.jsx(te,{status:s.status})}),e.jsx("td",{className:"py-3 pr-4 font-mono text-xs text-[var(--text-secondary)]",children:s.projectKey}),e.jsx("td",{className:"py-3 pr-4 font-mono text-xs text-[var(--text-secondary)]",children:s.developerName??s.creatorName??"-"}),e.jsx("td",{className:"py-3 pr-4 font-mono text-xs text-[var(--text-secondary)]",children:s.workerName??"—"}),e.jsx("td",{className:"py-3 font-mono text-xs text-[var(--text-muted)]",children:e.jsxs("span",{className:"flex items-center gap-2",children:[se(s.createdAt,x),i&&e.jsx("button",{onClick:a=>{a.stopPropagation(),d(`/tasks/${s.id}?action=fork`)},className:"shrink-0 rounded-[4px] p-1 text-[var(--text-muted)] hover:text-[var(--accent)] hover:bg-[var(--bg-input)] transition-colors",title:c("tasks.fork_task"),children:e.jsx(re,{className:"h-3 w-3"})})]})})]})});function De({isOpen:n,onClose:s,projects:d,projectsLoading:c,onSubmit:x,isSubmitting:i}){const{t:a}=$();ue(o=>o.user);const b=he(),[p,K]=r.useState(""),[h,B]=r.useState(""),[m,I]=r.useState("feat"),[k,C]=r.useState(""),[w,S]=r.useState(""),[f,_]=r.useState(""),[g,y]=r.useState(""),[T,O]=r.useState(""),[M,R]=r.useState([]),[z,N]=r.useState(""),j=d.find(o=>o.key===p),H=Ce(o=>o,j==null?void 0:j.agentType);r.useEffect(()=>{if(!n||(K(""),B(""),I("feat"),C(""),S(""),_(""),y(""),O(""),N(""),!b))return;const o=new AbortController;return P.get("admin/developers",{signal:o.signal}).json().then(R).catch(()=>{}),()=>o.abort()},[n,b]),r.useEffect(()=>{if(!n)return;function o(D){D.key==="Escape"&&s()}return document.addEventListener("keydown",o),()=>document.removeEventListener("keydown",o)},[n,s]);async function E(o){if(o.preventDefault(),N(""),!p||!h.trim()){N(a("tasks.project_and_description_required"));return}try{await x({projectKey:p,description:h.trim(),workerId:g||void 0,developerId:T?Number(T):void 0,taskType:m,branchSlug:w.trim()||void 0,agentType:k||void 0,targetBranch:f.trim()||void 0})}catch(D){const L=D instanceof Error?D.message:a("tasks.failed_to_create_task");N(L)}}return n?e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4 font-mono",style:{backgroundColor:"var(--modal-backdrop, rgba(12,12,12,0.6))"},onClick:o=>{o.target===o.currentTarget&&s()},children:e.jsxs("div",{className:"w-full max-w-[480px] rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)]",onClick:o=>o.stopPropagation(),children:[e.jsxs("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-6 py-4",children:[e.jsxs("h2",{className:"text-sm text-[var(--text-primary)]",children:["// ",a("tasks.new_task")]}),e.jsx("button",{onClick:s,className:"text-[var(--text-muted)] transition-colors hover:text-[var(--text-primary)]",children:e.jsx(be,{className:"h-4 w-4"})})]}),e.jsxs("form",{onSubmit:E,className:"px-6 py-5",children:[e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx("label",{className:"text-xs text-[var(--text-muted)]",children:a("tasks.project")}),e.jsx(A,{value:p,onChange:K,options:d.map(o=>({value:o.key,label:o.name})),placeholder:a(c?"common.loading":"tasks.select_project"),disabled:c})]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx("label",{className:"text-xs text-[var(--text-muted)]",children:a("tasks.task_type")}),e.jsx(A,{value:m,onChange:I,options:Ne})]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx("label",{className:"text-xs text-[var(--text-muted)]",children:a("tasks.form_agent_type")}),e.jsx(A,{value:k,onChange:C,options:H})]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx("label",{className:"text-xs text-[var(--text-muted)]",children:a("tasks.task_description")}),e.jsx("textarea",{value:h,onChange:o=>B(o.target.value),placeholder:a("tasks.describe_task_placeholder"),rows:4,className:"w-full resize-none rounded-[4px] border border-[var(--border)] bg-[var(--bg-input)] px-3 py-2.5 text-xs text-[var(--text-primary)] placeholder:text-[var(--text-muted)] outline-none focus:border-[var(--accent)]"})]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx("label",{className:"text-xs text-[var(--text-muted)]",children:a("tasks.target_worker")}),e.jsx("input",{type:"text",value:g,onChange:o=>y(o.target.value),placeholder:a("tasks.any_able"),className:"w-full rounded-[4px] border border-[var(--border)] bg-[var(--bg-input)] px-3 py-2.5 text-xs text-[var(--text-primary)] placeholder:text-[var(--text-muted)] outline-none focus:border-[var(--accent)]"})]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx("label",{className:"text-xs text-[var(--text-muted)]",children:a("tasks.branch_slug")}),e.jsx("input",{type:"text",value:w,onChange:o=>S(o.target.value),placeholder:a("tasks.branch_slug_placeholder"),className:"w-full rounded-[4px] border border-[var(--border)] bg-[var(--bg-input)] px-3 py-2.5 text-xs text-[var(--text-primary)] placeholder:text-[var(--text-muted)] outline-none focus:border-[var(--accent)]"})]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx("label",{className:"text-xs text-[var(--text-muted)]",children:a("tasks.target_branch")}),e.jsx("input",{type:"text",value:f,onChange:o=>_(o.target.value),placeholder:a("tasks.target_branch_placeholder"),className:"w-full rounded-[4px] border border-[var(--border)] bg-[var(--bg-input)] px-3 py-2.5 text-xs text-[var(--text-primary)] placeholder:text-[var(--text-muted)] outline-none focus:border-[var(--accent)]"})]}),b&&e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx("label",{className:"text-xs text-[var(--text-muted)]",children:a("tasks.assign_developer")}),e.jsx(A,{value:T,onChange:O,options:M.map(o=>({value:String(o.id),label:o.name})),placeholder:a("tasks.select_developer")})]}),z&&e.jsx("div",{className:"rounded-[4px] bg-[#2a1515] border border-[var(--destructive)]/30 px-3 py-2 text-xs text-[var(--destructive)]",children:z})]}),e.jsxs("div",{className:"mt-6 flex items-center justify-end gap-3",children:[e.jsx("button",{type:"button",onClick:s,className:"rounded-[4px] border border-[var(--border)] bg-transparent px-4 py-2 text-xs text-[var(--text-secondary)] transition-colors hover:text-[var(--text-primary)]",children:a("common.cancel")}),e.jsx("button",{type:"submit",disabled:i||!p||!h.trim(),className:"rounded-[4px] bg-[var(--accent)] px-4 py-2 text-xs text-black transition-opacity hover:opacity-90 disabled:opacity-40",children:a(i?"common.creating":"tasks.create_task")})]})]})]})}):null}function Fe({isOpen:n,onClose:s,onForceCreate:d,onViewExisting:c,similarTask:x,isLoading:i}){const{t:a}=$();return!x||!n?null:e.jsx("div",{onClick:s,style:{position:"fixed",inset:0,zIndex:50,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"var(--modal-backdrop, rgba(12,12,12,0.6))"},children:e.jsxs("div",{onClick:b=>b.stopPropagation(),style:{width:"100%",maxWidth:"480px",backgroundColor:"var(--bg-card)",border:"1px solid var(--border)",borderRadius:"4px",padding:"1.5rem",fontFamily:"'JetBrains Mono', monospace"},children:[e.jsxs("div",{style:{marginBottom:"1.25rem"},children:[e.jsxs("div",{style:{color:"var(--accent)",fontSize:"0.875rem",fontWeight:600,display:"flex",alignItems:"center",gap:"0.5rem"},children:[e.jsx(we,{style:{width:"1rem",height:"1rem"}}),a("tasks.dedup_title")]}),e.jsx("div",{style:{color:"var(--text-muted)",fontSize:"0.7rem",marginTop:"0.25rem"},children:a("tasks.dedup_description")})]}),e.jsxs("div",{style:{marginBottom:"1.25rem",padding:"0.75rem",border:"1px solid var(--border)",borderRadius:"4px",backgroundColor:"var(--bg-primary)"},children:[e.jsxs("div",{style:{color:"var(--text-muted)",fontSize:"0.65rem",fontFamily:"'JetBrains Mono', monospace"},children:["#",x.id," · ",x.status]}),e.jsx("div",{style:{color:"var(--text-primary)",fontSize:"0.75rem",marginTop:"0.375rem",lineHeight:"1.5"},children:x.description})]}),e.jsxs("div",{style:{display:"flex",gap:"0.75rem"},children:[e.jsx("button",{type:"button",onClick:s,disabled:i,className:"text-[var(--text-muted)] hover:text-[var(--text-primary)] hover:border-[var(--text-muted)]",style:{flex:1,padding:"0.5rem",backgroundColor:"transparent",border:"1px solid var(--border)",borderRadius:"4px",fontSize:"0.75rem",fontFamily:"'JetBrains Mono', monospace",cursor:i?"not-allowed":"pointer",opacity:i?.7:1,transition:"color 0.15s, border-color 0.15s"},children:a("common.cancel")}),e.jsx("button",{type:"button",onClick:()=>c(x.id),style:{flex:1,padding:"0.5rem",backgroundColor:"transparent",color:"var(--text-muted)",border:"1px solid var(--border)",borderRadius:"4px",fontSize:"0.75rem",fontFamily:"'JetBrains Mono', monospace",cursor:"pointer"},children:a("tasks.view_existing")}),e.jsx("button",{type:"button",onClick:d,disabled:i,style:{flex:1,padding:"0.5rem",backgroundColor:"var(--warning)",color:"#0C0C0C",border:"none",borderRadius:"4px",fontSize:"0.75rem",fontWeight:600,fontFamily:"'JetBrains Mono', monospace",cursor:i?"not-allowed":"pointer",opacity:i?.7:1},children:a(i?"common.creating":"tasks.dedup_create_anyway")})]})]})})}function Pe({task:n}){const s=J(),d=n.status===u.COMPLETED||n.status===u.FAILED||n.status===u.CANCELLED;return e.jsxs("div",{onClick:()=>s(`/tasks/${n.id}`),className:"cursor-pointer rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] p-3 transition-colors active:bg-[var(--bg-input)]",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("span",{className:"text-[11px] text-[var(--text-primary)] leading-tight line-clamp-2",title:je(n),children:["#",n.id," ",ee(n)]}),e.jsxs("span",{className:"flex items-center gap-1.5 shrink-0",children:[d&&e.jsx("button",{onClick:c=>{c.stopPropagation(),s(`/tasks/${n.id}?action=fork`)},className:"rounded-[4px] p-1 text-[var(--text-muted)] hover:text-[var(--accent)] transition-colors",children:e.jsx(re,{className:"h-3 w-3"})}),e.jsx(te,{status:n.status})]})]}),e.jsxs("div",{className:"mt-1.5 flex items-center gap-2 text-[11px] text-[var(--text-muted)]",children:[e.jsx("span",{children:se(n.createdAt)}),e.jsx("span",{children:"·"}),e.jsx("span",{children:n.projectKey}),n.workerName&&e.jsxs(e.Fragment,{children:[e.jsx("span",{children:"·"}),e.jsx("span",{children:n.workerName})]})]})]})}const Ae=[{key:"all",labelKey:"tasks.tab_all"},{key:u.RUNNING,labelKey:"tasks.tab_running"},{key:u.QUEUED,labelKey:"tasks.tab_queued"},{key:u.COMPLETED,labelKey:"tasks.tab_completed"},{key:u.FAILED,labelKey:"tasks.tab_failed"},{key:u.CANCELLED,labelKey:"tasks.tab_cancelled"}],Ie=20;function Ye(){const n=J(),{t:s}=$(),{tasks:d,loading:c,fetchTasks:x}=X(),i=ve(t=>t.taskSeq),[a,b]=r.useState("all"),[p,K]=r.useState(""),[h,B]=r.useState(""),[m,I]=r.useState(""),[k,C]=r.useState(void 0),[w,S]=r.useState([]),f=X(t=>t.nextCursor),[_,g]=r.useState(!1);fe(r.useMemo(()=>e.jsxs("button",{onClick:()=>g(!0),className:"flex items-center gap-1.5 rounded-[4px] bg-[var(--accent)] px-3 py-1.5 text-xs font-mono text-black transition-opacity hover:opacity-90",children:[e.jsx(Se,{className:"h-3.5 w-3.5"}),s("tasks.new_task")]}),[s]));const[y,T]=r.useState([]),[O,M]=r.useState(!1),[R,z]=r.useState([]),[N,j]=r.useState(!1),[H,E]=r.useState(!1),[o,D]=r.useState(null),[L,q]=r.useState(null),G=r.useCallback(t=>{const l={limit:String(Ie)};return a!=="all"&&(l.status=a),p&&(l.projectKey=p),h&&(l.developerId=h),t&&(l.cursor=t),l},[a,p,h]);r.useEffect(()=>{x(G(k))},[G,k,x,i]),r.useEffect(()=>{C(void 0),S([])},[a,p,h]),r.useEffect(()=>{let t=!1;return(async()=>{try{const[v,xe]=await Promise.all([P.get("web/projects").json(),P.get("web/projects/-/developers").json()]);if(t)return;T(v),z(xe)}catch{}})(),()=>{t=!0}},[]),r.useEffect(()=>{if(!_||y.length>0)return;M(!0);let t=!1;return(async()=>{try{const v=await P.get("web/projects").json();t||T(v)}catch{}finally{t||M(!1)}})(),()=>{t=!0}},[_,y.length]);const ae=r.useCallback(async t=>{j(!0);try{const l=await P.post("web/tasks",{json:{projectKey:t.projectKey,description:t.description,workerId:t.workerId,developerId:t.developerId,taskType:t.taskType,branchSlug:t.branchSlug,agentType:t.agentType,targetBranch:t.targetBranch}}).json();g(!1),n(`/tasks/${l.task.id}`)}catch(l){if(l instanceof ge&&l.response.status===409){try{const v=await l.response.json();if(v.confirmRequired){D({id:v.confirmRequired.taskId,description:v.confirmRequired.message,status:"active"}),q(t),g(!1),E(!0);return}}catch{}W.error(s("tasks.similar_task_exists"))}else{const v=l instanceof Error?l.message:String(l);W.error(v)}}finally{j(!1)}},[n]),oe=r.useCallback(async()=>{if(L){j(!0);try{const t=await P.post("web/tasks",{json:{...L,force:!0}}).json();E(!1),q(null),n(`/tasks/${t.task.id}`)}finally{j(!1)}}},[L,n]),F=r.useMemo(()=>{if(!m.trim())return d;const t=m.toLowerCase();return d.filter(l=>(l.name??"").toLowerCase().includes(t)||l.description.toLowerCase().includes(t)||String(l.id).includes(m))},[d,m]),ne=r.useCallback(()=>{f&&(S(t=>[...t,k??""]),C(f))},[f,k]),le=r.useCallback(()=>{S(t=>{if(t.length===0)return t;const l=t.slice(0,-1);return C(t.at(-1)||void 0),l})},[]),ce=w.length+1,ie=r.useMemo(()=>[{value:"",label:s("tasks.filter_project")},...y.map(t=>({value:t.key,label:t.name}))],[y,s]),de=r.useMemo(()=>[{value:"",label:s("tasks.filter_developer")},...R.map(t=>({value:String(t.id),label:t.name}))],[R,s]),Q=s(m?"tasks.try_adjusting_search":"tasks.create_first_task"),U=m?void 0:e.jsx("button",{onClick:()=>g(!0),className:"rounded-[4px] bg-[var(--accent)] px-5 py-2 text-[11px] font-bold text-black",children:s("tasks.create_task")});return e.jsxs("div",{className:"mx-auto max-w-6xl px-2 py-4 md:px-4 md:py-6 font-mono",children:[e.jsxs("div",{className:"mb-4 flex flex-col gap-3 md:gap-4 md:flex-row md:items-center",children:[e.jsx("div",{className:"flex items-center gap-1 overflow-x-auto pb-1 md:pb-0 no-scrollbar pr-4 md:pr-0",children:Ae.map(t=>e.jsx("button",{onClick:()=>b(t.key),className:`shrink-0 rounded-[4px] px-3 py-2 h-10 md:h-8 text-xs transition-colors ${a===t.key?"text-[var(--accent)] bg-[var(--bg-input)]":"text-[var(--text-muted)] bg-[var(--bg-card)] hover:text-[var(--text-secondary)]"}`,children:s(t.labelKey)},t.key))}),e.jsxs("div",{className:"flex flex-col gap-2 md:ml-auto md:flex-row md:items-center",children:[e.jsxs("div",{className:"relative md:w-52",children:[e.jsx(ye,{className:"absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-[var(--text-muted)]"}),e.jsx("input",{type:"text",placeholder:s("tasks.search_tasks"),value:m,onChange:t=>I(t.target.value),className:"w-full rounded-[4px] border border-[var(--border)] bg-[var(--bg-input)] py-1.5 pl-8 pr-3 text-xs text-[var(--text-primary)] placeholder:text-[var(--text-muted)] outline-none focus:border-[var(--accent)]"}),m&&e.jsx("button",{onClick:()=>I(""),className:"absolute right-2 top-1/2 -translate-y-1/2 text-xs text-[var(--text-muted)] hover:text-[var(--text-secondary)]",children:"x"})]}),e.jsx(A,{value:p,onChange:K,options:ie,className:"md:w-40"}),e.jsx(A,{value:h,onChange:B,options:de,className:"md:w-40"})]})]}),e.jsx("div",{className:"hidden md:block rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)]",children:e.jsxs("table",{className:"w-full text-left",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-[var(--border)] text-[11px] font-medium text-[#525252]",children:[e.jsx("th",{className:"w-16 px-4 py-2.5 text-right",children:s("tasks.id")}),e.jsx("th",{className:"px-4 py-2.5",children:s("tasks.description_col")}),e.jsx("th",{className:"px-4 py-2.5",children:s("tasks.status_col")}),e.jsx("th",{className:"px-4 py-2.5",children:s("tasks.project_col")}),e.jsx("th",{className:"px-4 py-2.5",children:s("tasks.assignee")}),e.jsx("th",{className:"px-4 py-2.5",children:s("tasks.worker")}),e.jsx("th",{className:"px-4 py-2.5",children:s("tasks.time")})]})}),e.jsxs("tbody",{children:[c&&F.length===0&&e.jsx("tr",{children:e.jsx("td",{colSpan:7,className:"p-4",children:e.jsx(Z,{rows:5})})}),!c&&F.length===0&&e.jsx("tr",{children:e.jsx("td",{colSpan:7,className:"p-4",children:e.jsx(Y,{icon:V,title:s("tasks.no_tasks_found"),description:Q,action:U})})}),F.map(t=>e.jsx(Ee,{task:t},t.id))]})]})}),e.jsxs("div",{className:"flex flex-col gap-2 md:hidden",children:[c&&F.length===0&&e.jsx("div",{className:"p-4",children:e.jsx(Z,{rows:5})}),!c&&F.length===0&&e.jsx(Y,{icon:V,title:s("tasks.no_tasks_found"),description:Q,action:U}),F.map(t=>e.jsx(Pe,{task:t},t.id))]}),(w.length>0||f)&&e.jsxs("div",{className:"mt-6 flex items-center justify-between",children:[e.jsxs("span",{className:"text-xs text-[var(--text-muted)]",children:["// page ",ce]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("button",{onClick:le,disabled:w.length===0,className:"flex items-center justify-center gap-1 rounded-[4px] border border-[var(--border)] px-2.5 py-1 min-h-[44px] min-w-[44px] md:min-h-0 md:min-w-0 text-xs text-[var(--text-secondary)] hover:text-[var(--text-primary)] hover:border-[var(--accent)] disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:[e.jsx(_e,{className:"h-3.5 w-3.5"}),s("tasks.prev")]}),e.jsxs("button",{onClick:ne,disabled:!f,className:"flex items-center justify-center gap-1 rounded-[4px] border border-[var(--border)] px-2.5 py-1 min-h-[44px] min-w-[44px] md:min-h-0 md:min-w-0 text-xs text-[var(--text-secondary)] hover:text-[var(--text-primary)] hover:border-[var(--accent)] disabled:opacity-30 disabled:cursor-not-allowed transition-colors",children:[s("common.next"),e.jsx(Te,{className:"h-3.5 w-3.5"})]})]})]}),e.jsx(De,{isOpen:_,onClose:()=>g(!1),projects:y,projectsLoading:O,onSubmit:ae,isSubmitting:N}),e.jsx(Fe,{isOpen:H,onClose:()=>{E(!1),q(null)},onForceCreate:oe,onViewExisting:t=>{E(!1),q(null),n(`/tasks/${t}`)},similarTask:o,isLoading:N})]})}export{Ye as default};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{c as ie,o as oe,h as A,p as S,a as M,r as i,k as q,q as ce,s as le,j as e,X as Z,v as de,f as xe,l as me,m as pe}from"./index-CfvO5R0v.js";import{g as ee,M as ue,C as he,a as ve}from"./ConfirmStageDialog-BsoAtSes.js";import{u as fe}from"./task.store-QLdgw-z_.js";import{i as z,O as te}from"./OnboardingGuide-C8QTC3cZ.js";import{S as E}from"./Select-BMBYwPr-.js";import{a as se}from"./status-colors-w6Ie5LWO.js";import{a as ge}from"./date-RFA7-ZGs.js";import{T as G,a as J,g as be}from"./task-constants-DpDhF7YW.js";import{g as je}from"./agent-type-options-CdJpMswW.js";import{u as ae}from"./useFetch-DpOLDSFc.js";import{P as $}from"./plus-DDEIETPT.js";import{C as ke}from"./chevron-down-DiFQzkq3.js";import{C as ye}from"./chevron-up-CvYNL872.js";import{W as Ne}from"./wifi-B4XgJ6JW.js";import"./loader-circle-_Xw40aLD.js";import"./rotate-ccw-DryDtPrl.js";import"./PtyTerminal-B3lRN-u1.js";import"./file-text-Gk2VyRBd.js";import"./chevron-right-Bsbm1nYp.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 Te=ie("WifiOff",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]),ne="overlord_home_terminal";function we(){try{const t=localStorage.getItem(ne);if(t)return JSON.parse(t)}catch{}return{pinnedTaskIds:[],activeTaskId:null}}let Q="";function R(t){const a=JSON.stringify(t);a!==Q&&(Q=a,localStorage.setItem(ne,a))}const V=we(),Se=new Set([S.QUEUED,S.ASSIGNED,S.RUNNING,S.SUSPENDED]);let B=!1;const Ce=oe((t,a)=>({pinnedTaskIds:V.pinnedTaskIds,activeTaskId:V.activeTaskId,taskMetas:{},stageConfirm:null,loading:!1,setActiveTask:s=>{t({activeTaskId:s}),R({pinnedTaskIds:a().pinnedTaskIds,activeTaskId:s})},pinTask:s=>{const{pinnedTaskIds:n}=a();if(n.includes(s))return;const c=[...n,s];t({pinnedTaskIds:c}),R({pinnedTaskIds:c,activeTaskId:a().activeTaskId})},unpinTask:s=>{const{pinnedTaskIds:n,activeTaskId:c,taskMetas:m}=a(),r=n.filter(v=>v!==s),d=c===s?r[0]??null:c,{[s]:h,...o}=m;t({pinnedTaskIds:r,activeTaskId:d,taskMetas:o}),R({pinnedTaskIds:r,activeTaskId:d})},loadActiveTasks:async()=>{if(!B){B=!0,t({loading:!0});try{const n=(await A.get("web/tasks",{searchParams:{limit:"30"}}).json()).data.filter(o=>Se.has(o.status)),c={};for(const o of n)c[o.id]={id:o.id,name:o.name,description:o.description,status:o.status,projectKey:o.projectKey,workerName:o.workerName??null,agentType:ee(o),currentStage:o.currentStage,currentSessionId:o.currentSessionId,updatedAt:o.updatedAt};const r=[...n].sort((o,v)=>v.updatedAt.localeCompare(o.updatedAt)).map(o=>o.id),{activeTaskId:d}=a(),h=d&&r.includes(d)?d:r[0]??null;t({taskMetas:c,pinnedTaskIds:r,activeTaskId:h}),R({pinnedTaskIds:r,activeTaskId:h})}catch{}finally{B=!1,t({loading:!1})}}},fetchStageConfirm:async s=>{try{const n=await A.get(`web/tasks/${s}/pending-confirm`).json();t({stageConfirm:n.confirm})}catch{t({stageConfirm:null})}},clearStageConfirm:()=>t({stageConfirm:null}),updateTaskMeta:(s,n)=>{const{taskMetas:c}=a(),m=c[s];m&&t({taskMetas:{...c,[s]:{...m,...n}}})}}));function _e(){const[t,a]=i.useState(()=>z());i.useEffect(()=>{const n=()=>a(!0),c=()=>a(z());return window.addEventListener("onboarding-dismissed",n),window.addEventListener("storage",c),()=>{window.removeEventListener("onboarding-dismissed",n),window.removeEventListener("storage",c)}},[]);const{data:s}=ae(()=>t?Promise.resolve(null):A.get("web/dashboard/stats").json(),[t]);return t||!s?null:{activeTasks:(s.active_tasks??0)+(s.queued_tasks??0),totalWorkers:s.online_workers??0,totalProjects:s.project_count??0,totalDevelopers:s.developer_count??0}}function Ie({taskId:t,confirm:a,onSubmitted:s}){const{t:n}=M(),[c,m]=i.useState(a.timeout),[r,d]=i.useState(!1),[h,o]=i.useState(!1),v=a.confirmType==="plan_review"||a.confirmType==="code_review",u=a.confirmType==="plan_decompose";i.useEffect(()=>{m(a.timeout);const b=setInterval(()=>{m(N=>N<=1?(clearInterval(b),0):N-1)},1e3);return()=>clearInterval(b)},[a.timeout,a.stageName]);const g=i.useCallback(async b=>{d(!0);try{await A.post(`web/tasks/${t}/confirm-stage`,{json:{stageName:a.stageName,approved:b}}),s()}catch{}finally{d(!1)}},[t,a.stageName,s]);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 border-b-2 border-[var(--warning)] bg-[var(--warning)]/10 px-3 py-2",children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx(he,{className:"h-3.5 w-3.5 shrink-0 text-[var(--warning)]"}),e.jsxs("span",{className:"truncate text-xs text-[var(--text-primary)]",children:["// stage: ",a.stageName]}),e.jsx("span",{className:"shrink-0 text-xs text-[var(--warning)]",children:ge(c)})]}),e.jsx("div",{className:"flex items-center gap-1.5 shrink-0",children:u?e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:()=>g(!1),disabled:r,className:"rounded-[4px] border border-[var(--border)] px-2 py-1 text-[11px] text-[var(--text-secondary)] hover:text-[var(--text-primary)] transition-colors disabled:opacity-50",children:n("tasks.reject_plan_decompose")}),e.jsx("button",{onClick:()=>g(!0),disabled:r,className:"rounded-[4px] bg-[var(--accent)] px-2 py-1 text-[11px] text-black hover:opacity-90 transition-opacity disabled:opacity-50",children:n(r?"tasks.stage_submitting":"tasks.approve_plan_decompose")})]}):v?e.jsx("button",{onClick:()=>o(!0),className:"rounded-[4px] bg-[var(--accent)] px-2 py-1 text-[11px] text-black hover:opacity-90 transition-opacity",children:a.confirmType==="plan_review"?n("tasks.approve_plan"):n("tasks.approve_review")}):e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:()=>g(!1),disabled:r,className:"rounded-[4px] border border-[var(--border)] px-2 py-1 text-[11px] text-[var(--text-secondary)] hover:text-[var(--text-primary)] transition-colors disabled:opacity-50",children:n("tasks.reject")}),e.jsx("button",{onClick:()=>g(!0),disabled:r,className:"rounded-[4px] bg-[var(--accent)] px-2 py-1 text-[11px] text-black hover:opacity-90 transition-opacity disabled:opacity-50",children:n(r?"tasks.stage_submitting":"tasks.confirm_and_proceed")})]})})]}),v&&e.jsx(ve,{isOpen:h,onClose:()=>o(!1),taskId:t,stageName:a.stageName,timeoutSeconds:Math.ceil(a.timeout/1e3),confirmType:a.confirmType,onSubmitted:s})]})}function Ee({projectKey:t,onProjectChange:a,onCreated:s}){const{t:n}=M(),c=fe(x=>x.createTask),[m,r]=i.useState(""),[d,h]=i.useState("feat"),[o,v]=i.useState(void 0),[u,g]=i.useState(!1),[b,N]=i.useState(!1),[L,D]=i.useState(!1),{data:C}=ae(()=>A.get("web/projects").json(),[]),j=i.useMemo(()=>{const x=(C??[]).map(F=>({value:F.key,label:F.key}));return[{value:"",label:n("terminal_home.all_projects")},...x]},[C,n]),k=i.useMemo(()=>(C??[]).find(x=>x.key===t)??null,[C,t]),T=i.useMemo(()=>je(x=>x,k==null?void 0:k.agentType),[k==null?void 0:k.agentType]),_=i.useRef(!1);i.useEffect(()=>{if(!_.current){if(t){_.current=!0;return}j.length>1&&(a(j[1].value),_.current=!0)}},[t,j,a]),i.useEffect(()=>{v(void 0)},[t]);const p=o??"",O=i.useCallback(x=>{v(x||void 0)},[]),w=!!t&&!!m.trim();function f(){w&&N(!0)}async function I(){if(N(!1),!!w){g(!0);try{const x=await c({projectKey:t,description:m.trim(),taskType:d,agentType:o||void 0});r(""),s(x.id)}catch{}finally{g(!1)}}}const U=n("terminal_home.confirm_create_message").replace("{taskType}",d).replace("{projectKey}",t).replace("{description}",m.trim()),P="flex-1 rounded-[4px] border border-[var(--border)] bg-[var(--bg-input)] px-2 py-1.5 text-xs text-[var(--text-primary)] placeholder:text-[var(--text-muted)] outline-none focus:border-[var(--accent)]";return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"hidden md:flex items-center gap-2 border-b border-[var(--border)] bg-[var(--bg-card)] px-3 py-2",children:[e.jsx("div",{className:"w-[140px]",children:e.jsx(E,{value:t,onChange:a,options:j,placeholder:n("terminal_home.select_project")})}),e.jsx("div",{className:"w-[100px]",children:e.jsx(E,{value:d,onChange:h,options:J})}),e.jsx("div",{className:"w-[120px]",children:e.jsx(E,{value:p,onChange:O,options:T,placeholder:n("tasks.form_agent_type"),disabled:u||!t})}),e.jsx("input",{type:"text",value:m,onChange:x=>r(x.target.value),onKeyDown:x=>x.key==="Enter"&&f(),placeholder:n("terminal_home.task_description_placeholder"),className:P,disabled:u}),e.jsxs("button",{onClick:f,disabled:u||!w,className:"flex items-center gap-1 rounded-[4px] bg-[var(--accent)] px-3 py-1.5 text-xs text-black hover:opacity-90 transition-opacity disabled:opacity-50",children:[e.jsx($,{className:"h-3 w-3"}),n(u?"common.creating":"terminal_home.new_task")]})]}),e.jsx("div",{className:"md:hidden border-b border-[var(--border)] bg-[var(--bg-card)]",children:L?e.jsxs("div",{className:"flex flex-col gap-2 p-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"flex-1",children:e.jsx(E,{value:t,onChange:a,options:j,placeholder:n("terminal_home.select_project")})}),e.jsx("div",{className:"w-[100px]",children:e.jsx(E,{value:d,onChange:h,options:J})}),e.jsx("div",{className:"w-[120px]",children:e.jsx(E,{value:p,onChange:O,options:T,placeholder:n("tasks.form_agent_type"),disabled:u||!t})}),e.jsx("button",{onClick:()=>D(!1),className:"p-1 text-[var(--text-muted)]",children:e.jsx(Z,{className:"h-3.5 w-3.5"})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("input",{type:"text",value:m,onChange:x=>r(x.target.value),onKeyDown:x=>x.key==="Enter"&&f(),placeholder:n("terminal_home.task_description_placeholder"),className:P,disabled:u}),e.jsx("button",{onClick:f,disabled:u||!w,className:"rounded-[4px] bg-[var(--accent)] px-3 py-1.5 text-xs text-black hover:opacity-90 transition-opacity disabled:opacity-50",children:e.jsx($,{className:"h-3 w-3"})})]})]}):e.jsxs("button",{onClick:()=>D(!0),className:"flex w-full items-center justify-center gap-1 py-2 text-xs text-[var(--accent)] hover:opacity-80",children:[e.jsx($,{className:"h-3.5 w-3.5"}),n("terminal_home.new_task")]})}),e.jsx(de,{isOpen:b,onClose:()=>N(!1),onConfirm:I,title:n("terminal_home.confirm_create_title"),message:U,confirmVariant:"accent",confirmLabel:n("terminal_home.new_task"),isLoading:u})]})}function Y({status:t,size:a}){const s=t===S.SUSPENDED,n=se(t),c=a==="sm"?"h-1.5 w-1.5":"h-2 w-2";return e.jsx("span",{className:`${c} shrink-0 rounded-full ${s?"animate-pulse":""}`,style:{backgroundColor:s?"var(--warning)":n}})}function Ae({tasks:t,activeId:a,onSelect:s,onUnpin:n,children:c}){const m=xe();return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"hidden md:flex flex-col border-r border-[var(--border)] bg-[var(--bg-card)] overflow-y-auto",style:{width:200,minWidth:200},children:[e.jsx("div",{className:"border-b border-[var(--border)] px-3 py-2",children:e.jsx("span",{className:"text-[11px] text-[var(--text-muted)]",children:"// active tasks"})}),t.length===0?e.jsx("div",{className:"flex-1 flex items-center justify-center p-4",children:e.jsx("span",{className:"text-[11px] text-[var(--text-muted)]",children:"no active tasks"})}):e.jsx("div",{className:"flex-1",children:t.map(r=>{const d=r.id===a;return e.jsxs("div",{onClick:()=>s(r.id),className:`group flex items-center gap-2 px-3 py-2 cursor-pointer transition-colors ${d?"bg-[var(--accent)]/10 text-[var(--text-primary)]":"text-[var(--text-secondary)] hover:bg-[var(--bg-input)] hover:text-[var(--text-primary)]"}`,children:[e.jsx(Y,{status:r.status,size:"md"}),e.jsxs("div",{className:"flex-1 min-w-0",title:pe(r),children:[e.jsxs("div",{className:"truncate text-xs",children:["#",r.id," ",me(r)]}),e.jsx("div",{className:"text-[10px] text-[var(--text-muted)]",children:r.projectKey})]}),e.jsx("button",{onClick:h=>{h.stopPropagation(),n(r.id)},className:"hidden group-hover:flex items-center justify-center shrink-0 w-5 h-5 text-[var(--text-muted)] hover:text-[var(--text-primary)]",title:"unpin",children:e.jsx(Z,{className:"h-3 w-3"})}),e.jsx("button",{onClick:h=>{h.stopPropagation(),m(`/tasks/${r.id}`)},className:"hidden group-hover:flex items-center justify-center shrink-0 w-5 h-5 text-[var(--text-muted)] hover:text-[var(--accent)]",title:"open detail",children:e.jsx("span",{className:"text-[10px] leading-none",children:"→"})})]},r.id)})})]}),e.jsxs("div",{className:"flex flex-col md:hidden",children:[e.jsx("div",{className:"flex items-center gap-1 overflow-x-auto no-scrollbar border-b border-[var(--border)] bg-[var(--bg-card)] px-2",style:{height:44},children:t.length===0?e.jsx("div",{className:"flex items-center justify-center w-full",children:e.jsx("span",{className:"text-[11px] text-[var(--text-muted)]",children:"no active tasks"})}):t.map(r=>{const d=r.id===a;return e.jsxs("button",{onClick:()=>s(r.id),className:`flex shrink-0 items-center gap-1.5 px-3 border-b-2 transition-colors ${d?"border-[var(--accent)] text-[var(--text-primary)]":"border-transparent text-[var(--text-secondary)]"}`,style:{height:44},children:[e.jsx(Y,{status:r.status,size:"sm"}),e.jsxs("span",{className:"text-[11px] whitespace-nowrap",children:["#",r.id]})]},r.id)})}),c]})]})}function Me({task:t,takeoverState:a,onTakeover:s,onRelease:n}){const c=se(t.status),m=be(t.agentType),r=ee(t);return e.jsxs("div",{className:"flex items-center justify-between border-b border-[var(--border)] bg-[var(--bg-card)] px-3",style:{height:36,minHeight:36},children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx("span",{className:"text-[11px] text-[var(--text-muted)]",children:t.projectKey}),e.jsxs("span",{className:"text-[11px]",style:{color:c},children:[t.status.toLowerCase()," / ",m]}),t.currentStage&&e.jsxs(e.Fragment,{children:[e.jsxs("span",{className:"hidden md:inline text-[11px] text-[var(--text-muted)]",children:["// stage: ",t.currentStage]}),e.jsxs("span",{className:"md:hidden text-[11px] text-[var(--text-muted)]",children:["stage: ",t.currentStage]})]}),e.jsxs("span",{className:"text-[11px] text-[var(--text-muted)]",children:["agent: ",r]}),t.workerName&&e.jsxs("span",{className:"text-[11px] text-[var(--text-muted)]",children:["worker: ",t.workerName]})]}),e.jsx("div",{className:"flex items-center gap-1"})]})}function De({task:t,ptyStatus:a}){const s=a==="connected";return e.jsxs("div",{className:"flex items-center justify-between border-t border-[var(--border)] bg-[var(--bg-card)] px-3",style:{height:28,minHeight:28},children:[e.jsx("span",{className:"text-[10px] text-[var(--text-muted)]",children:t.currentStage?`stage: ${t.currentStage}`:`task #${t.id}`}),e.jsxs("span",{className:`flex items-center gap-1 text-[10px] ${s?"text-[var(--accent)]":"text-[var(--text-muted)]"}`,children:[s?e.jsx(Ne,{className:"h-2.5 w-2.5"}):e.jsx(Te,{className:"h-2.5 w-2.5"}),s?"connected":a]})]})}function K({onboardingData:t}){const[a,s]=i.useState(!1),{t:n}=M();return t?a?e.jsxs("div",{className:"border-b border-[var(--accent)]/30",children:[e.jsxs("button",{onClick:()=>s(!1),className:"flex w-full items-center justify-between bg-[var(--bg-card)] px-3 py-1.5 transition-colors hover:bg-[var(--bg-input)]",children:[e.jsx("span",{className:"text-[11px] text-[var(--accent)]",children:n("onboarding.getting_started")}),e.jsx(ye,{className:"h-3 w-3 text-[var(--text-muted)]"})]}),e.jsx("div",{className:"max-h-[300px] overflow-y-auto",children:e.jsx(te,{data:t})})]}):e.jsxs("button",{onClick:()=>s(!0),className:"flex w-full items-center justify-between border-b border-[var(--accent)]/30 bg-[var(--bg-card)] px-3 py-1.5 transition-colors hover:bg-[var(--bg-input)]",style:{height:36},children:[e.jsx("span",{className:"text-[11px] text-[var(--accent)]",children:n("onboarding.getting_started")}),e.jsx(ke,{className:"h-3 w-3 text-[var(--text-muted)]"})]}):null}function X({onboardingData:t}){const{t:a}=M();return e.jsx("div",{className:`flex flex-1 flex-col items-center p-4 md:p-6 ${t?"overflow-auto":"justify-center"}`,children:t?e.jsx("div",{className:"w-full max-w-lg",children:e.jsx(te,{data:t})}):e.jsxs("div",{className:"text-center",children:[e.jsxs("div",{className:"mb-3 text-3xl text-[var(--border)]",children:[">","_"]}),e.jsx("p",{className:"text-sm text-[var(--text-muted)]",children:a("terminal_home.no_active_tasks")}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-muted)]",children:a("terminal_home.create_task_hint")})]})})}function Ze(){const{t}=M(),{pinnedTaskIds:a,activeTaskId:s,taskMetas:n,stageConfirm:c,loading:m,setActiveTask:r,pinTask:d,unpinTask:h,loadActiveTasks:o,fetchStageConfirm:v,clearStageConfirm:u,updateTaskMeta:g}=Ce(),b=i.useRef(null),[N,L]=i.useState("disconnected"),[D,C]=i.useState("auto"),[j,k]=i.useState(""),T=q(l=>l.lastEvent),_=q(l=>l.status),p=s?n[s]??null:null,O=p?G.includes(p.status):!1,w=i.useRef(!1);i.useEffect(()=>{!w.current&&p&&(k(p.projectKey),w.current=!0)},[p]);const f=i.useMemo(()=>{const l=a.map(y=>n[y]).filter(Boolean);return j?l.filter(y=>y.projectKey===j):l},[a,n,j]);i.useEffect(()=>{f.length>0&&s&&!f.some(l=>l.id===s)&&r(f[0].id)},[f,s,r]);const I=_e();ce(p?le(p):null),i.useEffect(()=>{o()},[o]),i.useEffect(()=>{s&&(p==null?void 0:p.status)===S.SUSPENDED?v(s):u()},[s,p==null?void 0:p.status,v,u]),i.useEffect(()=>{if(T){if(T.event==="task_status_changed"){const{taskId:l,status:y,currentStage:H}=T,W={status:y,updatedAt:new Date().toISOString()};H!==void 0&&(W.currentStage=H),g(l,W),y===S.SUSPENDED&&l===s&&v(l),G.includes(y)&&l===s&&u()}T.event==="task_created"&&o()}},[T,s,v,u,g,o]),i.useEffect(()=>{if(_==="connected")return;const y=setInterval(()=>{document.visibilityState!=="hidden"&&o()},15e3);return()=>clearInterval(y)},[_,o]);const U=i.useCallback(l=>{d(l),r(l),o()},[d,r,o]),P=i.useCallback(()=>{u(),o()},[u,o]),x=i.useCallback(()=>{var l;(l=b.current)==null||l.requestTakeover()},[]),F=i.useCallback(()=>{var l;(l=b.current)==null||l.releaseTakeover()},[]);if(m&&a.length===0)return e.jsx("div",{className:"flex h-full items-center justify-center",children:e.jsx("p",{className:"text-sm text-[var(--text-muted)]",children:t("common.loading")})});const re=f.length>0;return e.jsxs("div",{className:"flex h-full flex-col overflow-hidden",children:[e.jsx(Ee,{projectKey:j,onProjectChange:k,onCreated:U}),e.jsx("div",{className:"flex flex-col md:flex-row flex-1 overflow-hidden",children:re?e.jsxs(e.Fragment,{children:[e.jsx(Ae,{tasks:f,activeId:s,onSelect:r,onUnpin:h,children:e.jsx("div",{className:"md:hidden",children:e.jsx(K,{onboardingData:I})})}),e.jsx("div",{className:"flex flex-1 flex-col overflow-hidden",children:p?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"hidden md:block",children:e.jsx(K,{onboardingData:I})}),e.jsx(Me,{task:p,takeoverState:D,onTakeover:x,onRelease:F}),c&&s&&e.jsx(Ie,{taskId:s,confirm:c,onSubmitted:P}),e.jsx("div",{className:"flex-1 min-h-0 overflow-hidden",children:e.jsx(ue,{taskId:s,sessionId:p.currentSessionId??void 0,taskFinished:O,onStatusChange:L,onTakeoverChange:C,ref:b},s)}),e.jsx(De,{task:p,ptyStatus:N})]}):e.jsx(X,{onboardingData:I})})]}):e.jsx(X,{onboardingData:I})})]})}export{Ze as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as b,j as e,v as T,A as se,f as te,r as x,u as ae,k as R,w as ne,W as m,D as N,L as oe,V as F,h as g,l as ie,n as le}from"./index-CfvO5R0v.js";import{t as ce,c as G}from"./date-RFA7-ZGs.js";import{w as de,b as xe,t as me}from"./status-colors-w6Ie5LWO.js";import{I as l}from"./InfoRow-CBKDMEtd.js";import{M as D}from"./MetricBar-xV1juDz6.js";import{u as pe}from"./useFetch-DpOLDSFc.js";import{T as ue}from"./Tooltip-BFj-n88a.js";import{T as U}from"./trash-2-DN1oshyp.js";import{A as be}from"./arrow-left-BOJ_pZwC.js";function ve({isOpen:t,onClose:n,onConfirm:r,workerName:o,isDraining:i,loading:p}){const{t:c}=b();return e.jsx(T,{isOpen:t,onClose:n,onConfirm:r,title:c(i?"workers.undrain_worker_title":"workers.drain_worker_title"),message:i?c("workers.undrain_confirm",{name:o}):c("workers.drain_confirm",{name:o}),confirmLabel:c(i?"workers.undrain":"workers.drain"),confirmVariant:i?"accent":"warning",isLoading:p})}function H(t){return t==="rate_limit"?"rate limited":t}function he(t,n){return n(t==="binary_missing"?"workers.manual_restore_required":"workers.awaiting_auto_recovery")}function Se(){var $,A;const{id:t}=se(),n=te(),{t:r}=b(),[o,i]=x.useState(!1),[p,c]=x.useState(!1),[P,w]=x.useState(!1),[z,L]=x.useState(!1),[B,j]=x.useState(!1),[J,I]=x.useState(!1),[y,f]=x.useState(null),v=ae(a=>{var d;return(d=a.user)==null?void 0:d.role}),K=R(a=>a.workerSeq),Q=R(a=>a.taskSeq),{data:u,loading:X,error:M,refetch:_}=pe(async()=>{if(!t)throw new Error("Missing worker ID");const[a,d]=await Promise.all([g.get(`web/workers/${t}`).json(),g.get(`web/workers/${t}/tasks`).json().catch(()=>[])]);return{worker:a,tasks:d}},[t,K,Q]),s=(u==null?void 0:u.worker)??null,C=(u==null?void 0:u.tasks)??[],O=v===N.LEAD||v===N.ADMIN;ne(x.useMemo(()=>!s||s.status===m.DECOMMISSIONED?null:e.jsxs("div",{className:"flex items-center gap-2",children:[s.status===m.ONLINE&&e.jsxs("button",{onClick:()=>i(!0),className:"rounded-[4px] border border-[var(--warning)]/40 px-3 py-1.5 text-xs text-[var(--warning)] hover:bg-[var(--warning)]/10 transition-colors",children:["> ",r("workers.drain")]}),v===N.ADMIN&&e.jsxs("button",{onClick:()=>w(!0),className:"flex items-center gap-1 rounded-[4px] border border-[var(--destructive)]/40 px-3 py-1.5 text-xs text-[var(--destructive)] hover:bg-[var(--destructive)]/10 transition-colors",children:[e.jsx(U,{className:"h-3 w-3"}),r("workers.decommission")]})]}),[s,v,r]));async function Y(){if(s){c(!0);try{const a=s.status===m.DRAINING?"undrain":"drain";await g.post(`web/workers/${s.id}/${a}`),await _()}catch{}finally{c(!1),i(!1)}}}async function Z(){if(s){L(!0);try{await g.delete(`admin/workers/${s.id}`),n("/workers")}catch{}finally{L(!1),w(!1)}}}async function ee(){if(!(!s||!y)){I(!0);try{await g.post(`web/workers/${s.id}/capabilities/${encodeURIComponent(y)}/restore`),await _()}catch{}finally{I(!1),j(!1),f(null)}}}if(X)return e.jsx("div",{className:"mx-auto max-w-5xl px-4 md:px-6 py-8 font-mono",children:e.jsx("p",{className:"text-sm text-[var(--text-muted)]",children:r("workers.loading_worker")})});if(M)return e.jsxs("div",{className:"mx-auto max-w-5xl px-4 md:px-6 py-8 font-mono lowercase text-center",children:[e.jsx("p",{className:"text-sm text-[var(--destructive)]",children:M}),e.jsx("button",{onClick:()=>_(),className:"mt-4 rounded-[4px] border border-[var(--border)] px-3 py-1.5 text-xs text-[var(--text-secondary)] hover:text-[var(--text-primary)] transition-colors",children:r("common.retry")})]});if(!s)return e.jsxs("div",{className:"mx-auto max-w-5xl px-4 md:px-6 py-8 font-mono lowercase text-center",children:[e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:r("workers.worker_not_found")}),e.jsxs("button",{onClick:()=>n("/workers"),className:"mt-4 rounded-[4px] border border-[var(--border)] px-3 py-1.5 text-xs text-[var(--text-secondary)] hover:text-[var(--text-primary)] transition-colors",children:["< ",r("workers.back_to_workers")]})]});const k=s.status===m.DRAINING,h=s.status!==m.DECOMMISSIONED;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"mx-auto max-w-5xl font-mono lowercase",children:[e.jsxs("div",{className:"flex items-center justify-between border-b border-[var(--border)] bg-[var(--bg-primary)] px-4 shrink-0 md:hidden",style:{height:56},children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx("button",{onClick:()=>n("/workers"),className:"shrink-0 text-[var(--text-muted)]",children:e.jsx(be,{className:"h-4 w-4"})}),e.jsx("span",{className:"truncate text-sm font-medium text-[var(--text-primary)]",children:s.name})]}),!k&&s.status!==m.OFFLINE&&h&&e.jsxs("button",{onClick:()=>i(!0),className:"shrink-0 rounded-[4px] border border-[var(--warning)]/40 px-3 py-1.5 text-xs text-[var(--warning)] hover:bg-[var(--warning)]/10 transition-colors",children:["> ",r("workers.drain")]})]}),e.jsxs("div",{className:"px-4 md:px-6 py-8",children:[k?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx(oe,{to:"/workers",className:"text-[var(--text-muted)] hover:text-[var(--text-secondary)] transition-colors",children:r("workers.title")}),e.jsx("span",{className:"text-[var(--text-muted)]",children:"/"}),e.jsx("span",{className:"text-[var(--text-secondary)]",children:s.name})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[h&&e.jsxs("button",{onClick:()=>i(!0),className:"rounded-[4px] border border-[var(--accent)] px-4 py-1.5 text-xs text-[var(--accent)] hover:bg-[var(--accent)]/10 transition-colors",children:["> ",r("workers.undrain")]}),v===N.ADMIN&&h&&e.jsxs("button",{onClick:()=>w(!0),className:"flex items-center gap-1 rounded-[4px] border border-[var(--destructive)]/40 px-3 py-1.5 text-xs text-[var(--destructive)] hover:bg-[var(--destructive)]/10 transition-colors",children:[e.jsx(U,{className:"h-3 w-3"}),r("workers.decommission")]})]})]}),e.jsx("div",{className:"mb-4",children:e.jsx("span",{className:"rounded-[4px] bg-[var(--warning)]/20 px-2.5 py-1 text-xs font-medium text-[var(--warning)]",children:r("workers.draining")})}),e.jsxs("div",{className:"mb-6 rounded-[4px] border border-[var(--warning)]/40 bg-[var(--warning)]/10 p-4",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(F,{className:"h-3.5 w-3.5 text-[var(--warning)]"}),e.jsx("span",{className:"text-xs text-[var(--warning)]",children:r("workers.draining_warning")})]}),e.jsx("p",{className:"text-xs text-[var(--warning)]/70 ml-5.5",children:r("workers.draining_active_tasks")})]}),e.jsxs("div",{className:"mb-6 grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsx(S,{label:r("workers.cpu"),value:s.cpuUsage,unit:"%"}),e.jsx(S,{label:r("workers.memory"),value:s.memoryUsage,unit:"%"}),e.jsx(S,{label:r("workers.disk"),value:s.diskUsage,unit:"%"}),e.jsxs("div",{className:"rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] p-5",children:[e.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:r("workers.slots")}),e.jsxs("p",{className:"mt-2 text-lg font-semibold text-[var(--text-primary)]",children:[s.activeSlots,"/",s.maxSlots]})]})]})]}):e.jsxs(e.Fragment,{children:[e.jsxs("button",{onClick:()=>n("/workers"),className:"mb-4 text-xs text-[var(--text-muted)] hover:text-[var(--text-secondary)] transition-colors",children:["< ",r("workers.back_to_workers")]}),e.jsxs("h1",{className:"mb-2 text-lg font-bold text-[var(--text-primary)] flex items-center gap-2",children:[s.name,e.jsxs("span",{className:"flex items-center gap-1.5 text-sm font-normal",style:{color:de[s.status]},children:[e.jsx("span",{style:{fontSize:"0.5rem"},children:"●"}),s.status.toLowerCase()]})]}),e.jsx("p",{className:"mb-6 text-xs text-[var(--text-muted)]",children:r("workers.last_heartbeat",{time:ce(s.lastHeartbeat,"never")})}),s.status===m.DECOMMISSIONED&&e.jsx("div",{className:"mb-6 rounded-[4px] border border-[var(--text-muted)]/40 bg-[var(--text-muted)]/10 p-4",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(F,{className:"h-3.5 w-3.5 text-[var(--text-muted)]"}),e.jsxs("span",{className:"text-xs text-[var(--text-muted)]",children:["this worker has been decommissioned",s.decommissionedAt?` on ${G(s.decommissionedAt)}`:""," and can no longer accept tasks."]})]})}),e.jsxs("div",{className:"mb-6 grid gap-4 lg:grid-cols-2",children:[e.jsxs("div",{className:"rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] p-4",children:[e.jsx("h2",{className:"mb-3 text-xs text-[var(--text-muted)]",children:r("workers.resource_usage")}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsx(D,{label:r("workers.cpu"),value:s.cpuUsage}),e.jsx(D,{label:r("workers.mem"),value:s.memoryUsage}),e.jsx(D,{label:r("workers.disk"),value:s.diskUsage})]})]}),e.jsxs("div",{className:"rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] p-4",children:[e.jsx("h2",{className:"mb-3 text-xs text-[var(--text-muted)]",children:r("workers.connection_info")}),e.jsx(q,{worker:s})]})]})]}),k?e.jsxs(e.Fragment,{children:[e.jsx(V,{title:r("workers.active_tasks"),tasks:C,navigate:n}),e.jsxs("div",{className:"mb-6",children:[e.jsx("h2",{className:"mb-4 text-sm font-medium text-[var(--accent)]",children:r("workers.capabilities")}),s.capabilities.length>0?e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3",children:s.capabilities.map(a=>e.jsx("div",{className:"rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] p-4",children:e.jsx("p",{className:"text-xs text-[var(--text-primary)]",children:a})},a))}):e.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:r("workers.no_capabilities_short")}),((($=s.degradedCapabilities)==null?void 0:$.length)??0)>0&&e.jsx("div",{className:"mt-3 space-y-2",children:s.degradedCapabilities.map(a=>e.jsx(W,{agentType:a.agentType,failureType:a.failureType,failureCount:a.failureCount,showRestore:O&&h,onRestore:()=>{f(a.agentType),j(!0)}},a.agentType))})]}),e.jsxs("div",{className:"mb-6",children:[e.jsx("h2",{className:"mb-4 text-sm font-medium text-[var(--accent)]",children:r("workers.worker_info")}),e.jsx("div",{className:"rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] p-5",children:e.jsx(q,{worker:s,showExtended:!0})})]})]}):e.jsxs(e.Fragment,{children:[s.capabilities.length>0&&e.jsxs("div",{className:"mb-6 rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] p-4",children:[e.jsx("h2",{className:"mb-3 text-xs text-[var(--text-muted)]",children:r("workers.capabilities")}),e.jsx("div",{className:"flex flex-wrap gap-2",children:s.capabilities.map(a=>{var E;const d=(E=s.degradedCapabilities)==null?void 0:E.find(re=>re.agentType===a);return e.jsxs("span",{className:`rounded-[4px] border px-2.5 py-1 text-xs ${d?"border-[var(--warning)] text-[var(--warning)] bg-[var(--warning)]/5":"border-[var(--border)] text-[var(--text-secondary)]"}`,children:[a,d&&e.jsx("span",{className:"ml-1.5 text-[10px]",children:H(d.failureType)})]},a)})}),(((A=s.degradedCapabilities)==null?void 0:A.length)??0)>0&&e.jsx("div",{className:"mt-3 space-y-2",children:s.degradedCapabilities.map(a=>e.jsx(W,{agentType:a.agentType,failureType:a.failureType,failureCount:a.failureCount,showRestore:O&&h,onRestore:()=>{f(a.agentType),j(!0)}},a.agentType))})]}),e.jsx(V,{title:`${r("workers.current_tasks")} (${C.length})`,tasks:C,navigate:n})]})]})]}),e.jsx(ve,{isOpen:o,onClose:()=>i(!1),onConfirm:Y,workerName:s.name,isDraining:k,loading:p}),e.jsx(T,{isOpen:P,onClose:()=>w(!1),onConfirm:Z,title:r("workers.decommission_title"),message:r("workers.decommission_confirm",{name:s.name}),confirmLabel:r("workers.decommission"),confirmVariant:"danger",isLoading:z}),e.jsx(T,{isOpen:B,onClose:()=>{j(!1),f(null)},onConfirm:ee,title:r("workers.restore_capability_title"),message:r("workers.restore_capability_confirm",{capability:y??r("workers.unknown"),name:s.name}),confirmLabel:r("workers.restore_capability"),confirmVariant:"accent",isLoading:J})]})}function W({agentType:t,failureType:n,failureCount:r,showRestore:o,onRestore:i}){const{t:p}=b();return e.jsx("div",{className:"rounded-[4px] border border-[var(--warning)] bg-[var(--warning)]/5 p-3 text-sm",children:e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("span",{className:"font-medium",children:t}),e.jsxs("span",{className:"text-[var(--text-muted)] ml-2 text-xs",children:[H(n)," · ",r," consecutive failure",r!==1?"s":""," · ",he(n,p)]})]}),o&&e.jsx("button",{type:"button",onClick:i,className:"shrink-0 rounded-[4px] border border-[var(--accent)]/40 px-2.5 py-1 text-xs text-[var(--accent)] hover:bg-[var(--accent)]/10 transition-colors",children:p("workers.restore_capability")})]})})}function q({worker:t,showExtended:n=!1}){const{t:r}=b();return e.jsxs("div",{className:"flex flex-col gap-2 text-xs",children:[e.jsx(l,{label:r("workers.worker_id"),value:t.id}),e.jsx(l,{label:r("workers.host"),value:t.host}),e.jsx(l,{label:r("workers.os"),value:t.os??r("workers.unknown")}),e.jsx(l,{label:r("workers.cpu_model"),value:t.cpuModel??r("workers.n_a")}),e.jsx(l,{label:r("workers.cpu_cores"),value:t.cpuCores!=null?String(t.cpuCores):r("workers.n_a")}),e.jsx(l,{label:r("workers.memory"),value:t.memoryGb!=null?`${t.memoryGb} gb`:r("workers.n_a")}),e.jsx(l,{label:r("workers.last_heartbeat_label"),value:G(t.lastHeartbeat)}),e.jsx(l,{label:r("workers.slots"),value:`${t.activeSlots}/${t.maxSlots}`}),n&&e.jsxs(e.Fragment,{children:[e.jsx(l,{label:r("workers.status_label"),value:t.status.toLowerCase()}),e.jsx(l,{label:r("workers.worker_version"),value:t.workerVersion??r("workers.n_a")})]})]})}function V({title:t,tasks:n,navigate:r}){const{t:o}=b();return e.jsxs("div",{className:"mb-6 rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] p-4",children:[e.jsx("h2",{className:"mb-3 text-xs text-[var(--text-muted)]",children:t}),n.length===0?e.jsxs("div",{className:"flex flex-col items-center gap-3 py-6",children:[e.jsx("span",{className:"text-xl font-bold text-[var(--border)]",children:"[ ]"}),e.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:o("workers.no_active_tasks")})]}):e.jsx(ge,{tasks:n,navigate:r})]})}function ge({tasks:t,navigate:n}){const{t:r}=b();return 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-row)]",children:[e.jsx("th",{className:"py-2 pr-4 text-left font-normal text-[var(--text-muted)]",children:r("workers.id")}),e.jsx("th",{className:"py-2 pr-4 text-left font-normal text-[var(--text-muted)]",children:r("workers.description")}),e.jsx("th",{className:"py-2 pr-4 text-left font-normal text-[var(--text-muted)]",children:r("workers.status_label")}),e.jsx("th",{className:"py-2 text-left font-normal text-[var(--text-muted)]",children:r("workers.stage")})]})}),e.jsx("tbody",{children:t.map(o=>e.jsxs("tr",{onClick:()=>n(`/tasks/${o.id}`),className:"cursor-pointer border-b border-[var(--border-row)] hover:bg-[var(--bg-input)] transition-colors",children:[e.jsxs("td",{className:"py-2 pr-4 text-[var(--text-primary)]",children:["#",o.id]}),e.jsx("td",{className:"max-w-[120px] md:max-w-xs truncate py-2 pr-4 text-[var(--text-secondary)]",children:e.jsx(ue,{content:le(o),children:ie(o)})}),e.jsx("td",{className:"py-2 pr-4",children:e.jsxs("span",{style:{color:me[o.status]},children:["● ",o.status.toLowerCase()]})}),e.jsx("td",{className:"py-2 text-[var(--text-secondary)]",children:o.currentStage??"-"})]},o.id))})]})})}function S({label:t,value:n,unit:r}){const o=Math.round(n*100);return e.jsxs("div",{className:"rounded-[4px] border border-[var(--border)] bg-[var(--bg-card)] p-5",children:[e.jsx("p",{className:"text-xs text-[var(--text-muted)]",children:t}),e.jsxs("p",{className:"mt-2 text-lg font-semibold text-[var(--text-primary)]",children:[o,r]}),e.jsx("div",{className:"mt-3 h-1.5 w-full rounded-[2px] bg-[var(--bg-input)]",children:e.jsx("div",{className:"h-full rounded-[2px] transition-all",style:{width:`${o}%`,backgroundColor:xe(n)}})})]})}export{Se as default};
|