@overlordai/server 1.0.155 → 1.0.156

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 (109) hide show
  1. package/dist/dispatcher/dedup.service.d.ts +1 -0
  2. package/dist/dispatcher/dedup.service.d.ts.map +1 -1
  3. package/dist/dispatcher/dedup.service.js +15 -2
  4. package/dist/dispatcher/dedup.service.js.map +1 -1
  5. package/package.json +4 -4
  6. package/public/assets/{AccessTokensPage-BXA1_VCq.js → AccessTokensPage-EcufMrqQ.js} +1 -1
  7. package/public/assets/{AdminPage-7yOqUUTe.js → AdminPage-CQJEunib.js} +1 -1
  8. package/public/assets/{AgentCliPage-Bm-F3jFK.js → AgentCliPage-CHXKAezy.js} +1 -1
  9. package/public/assets/{ApiReferencePage-C64FX9LI.js → ApiReferencePage-m8Y8Jmsp.js} +1 -1
  10. package/public/assets/{ArchitecturePage-Cnw1gdwf.js → ArchitecturePage-BJ6PBd-x.js} +1 -1
  11. package/public/assets/{AuditLogPage-4EIxv0de.js → AuditLogPage-CCL1RS9j.js} +1 -1
  12. package/public/assets/{AutomationCreatePage-BnNbgVLp.js → AutomationCreatePage-CErECT2L.js} +1 -1
  13. package/public/assets/{AutomationDetailPage-Cfh080WI.js → AutomationDetailPage-DIOtceFT.js} +1 -1
  14. package/public/assets/{AutomationEditPage-5x0iAqBw.js → AutomationEditPage-CzWiCiMb.js} +1 -1
  15. package/public/assets/{AutomationListPage-ClpMg9LH.js → AutomationListPage-DGhPivoQ.js} +1 -1
  16. package/public/assets/{AutomationRunDetailPage-kJFqJVup.js → AutomationRunDetailPage-JWEh3Dmw.js} +1 -1
  17. package/public/assets/{BindPlatformPage-Gyn6rEdN.js → BindPlatformPage-B7lTBiP1.js} +1 -1
  18. package/public/assets/{BotIntegrationPage-CR1En2mF.js → BotIntegrationPage-DM9tuM8c.js} +1 -1
  19. package/public/assets/{BotManage-CCKVNTiM.js → BotManage-DJUPDyQX.js} +1 -1
  20. package/public/assets/{BotSetupPage-DYXahL1K.js → BotSetupPage-DIwse0bQ.js} +1 -1
  21. package/public/assets/{ChangelogPage-B4y9PKNr.js → ChangelogPage-CNR3BRon.js} +1 -1
  22. package/public/assets/{CliReferencePage-DMn74aJi.js → CliReferencePage-Di_w2Vr7.js} +1 -1
  23. package/public/assets/{ConfirmStageDialog-JkHyx3fw.js → ConfirmStageDialog-CmoZUlat.js} +1 -1
  24. package/public/assets/{DeploymentPage-BryipyKH.js → DeploymentPage-Cak7ckNj.js} +1 -1
  25. package/public/assets/{DevWorkflowPage-BN4eNkZ-.js → DevWorkflowPage-3ad7P1Yf.js} +1 -1
  26. package/public/assets/{DeveloperManage-PQlwFLHp.js → DeveloperManage-CCi1fODM.js} +1 -1
  27. package/public/assets/{DeveloperSetupPage-FeS5IvR5.js → DeveloperSetupPage-DNZVMyVV.js} +1 -1
  28. package/public/assets/{DocsIndexPage-B5FOHFU8.js → DocsIndexPage-BlfaO_-d.js} +1 -1
  29. package/public/assets/{DocsLayout-CP3dgoNJ.js → DocsLayout-SX_0PRjZ.js} +1 -1
  30. package/public/assets/{DocsPrimitives-Bv7R1z-x.js → DocsPrimitives-D8VRK-kO.js} +1 -1
  31. package/public/assets/{EditProjectPage-BGQgUEMO.js → EditProjectPage-DjGSIgrd.js} +1 -1
  32. package/public/assets/{EmptyState-Dlw8DXoS.js → EmptyState-DfpjyUvi.js} +1 -1
  33. package/public/assets/{EnvVariablesPage-HQuALoL0.js → EnvVariablesPage-B3eYwD_j.js} +1 -1
  34. package/public/assets/{HomePage-E6R1UYzd.js → HomePage-C0HQQFes.js} +1 -1
  35. package/public/assets/{InfoRow-PAm6OD0r.js → InfoRow-Czt7UG6F.js} +1 -1
  36. package/public/assets/{InstallationPage-_TkNduF2.js → InstallationPage-CchbXhv7.js} +1 -1
  37. package/public/assets/{LandingPage-Du_zyv0G.js → LandingPage-1mLfr329.js} +1 -1
  38. package/public/assets/{LocalDevelopmentPage-BBylZjJl.js → LocalDevelopmentPage-2L-RG5HP.js} +1 -1
  39. package/public/assets/{LoginPage-BnCxxVUr.js → LoginPage-DpjMyWqA.js} +1 -1
  40. package/public/assets/{MetricBar-CEJOwoO6.js → MetricBar-8evw4w8G.js} +1 -1
  41. package/public/assets/{MultiSelect-BN3ZeneX.js → MultiSelect-DSTlA0Vg.js} +1 -1
  42. package/public/assets/{NotFoundPage-BPeTD-BH.js → NotFoundPage-BP5L7fcf.js} +1 -1
  43. package/public/assets/{OnboardingGuide-km4jEWoE.js → OnboardingGuide-P_OoFtBB.js} +1 -1
  44. package/public/assets/{PermissionsPage-D4KRpio2.js → PermissionsPage-D6Jom6dW.js} +1 -1
  45. package/public/assets/{PipelineConfigPage-BMJC5bBm.js → PipelineConfigPage-VnRP0w6T.js} +1 -1
  46. package/public/assets/{PipelineEditorPage-DuVVWFpY.js → PipelineEditorPage-C8sNHbO8.js} +1 -1
  47. package/public/assets/{PlanPage-C10eKc1o.js → PlanPage-BdWAVFdJ.js} +1 -1
  48. package/public/assets/{ProfilePage-CTwDz0iE.js → ProfilePage-CVd2fAku.js} +1 -1
  49. package/public/assets/{ProjectDetailPage-Bdh0Owyc.js → ProjectDetailPage-Dw-_MliO.js} +1 -1
  50. package/public/assets/{ProjectListPage-DOuKMd33.js → ProjectListPage-D6pQCP2I.js} +1 -1
  51. package/public/assets/{PtyTerminal-DR7t6lKq.js → PtyTerminal-Bm1ilY94.js} +1 -1
  52. package/public/assets/{QuickAuth-IGWNKr5J.js → QuickAuth-5w49sX_9.js} +1 -1
  53. package/public/assets/{RemoveMemberConfirmDialog-BjmljBNo.js → RemoveMemberConfirmDialog-CGrZxV6w.js} +1 -1
  54. package/public/assets/{ReviewAggregatePage-BulnH3e4.js → ReviewAggregatePage-C_pr-cTO.js} +1 -1
  55. package/public/assets/{ReviewPage-TUmUl54F.js → ReviewPage-ZTr6dy1H.js} +1 -1
  56. package/public/assets/{Select-ZRV-96wd.js → Select-C3Kl_xvq.js} +1 -1
  57. package/public/assets/{SettingsPage-CzDQBnnO.js → SettingsPage-Bg7ml4s_.js} +1 -1
  58. package/public/assets/{Skeleton-Ibfop_C_.js → Skeleton-D4hIl9Le.js} +1 -1
  59. package/public/assets/{SkillPage-CZHskqEL.js → SkillPage-8aoKox7Z.js} +1 -1
  60. package/public/assets/{TaskDetailPage-DEO3bKeb.js → TaskDetailPage-C5iTgTAq.js} +2 -2
  61. package/public/assets/{TaskGuidePage-DhHPc9rU.js → TaskGuidePage-CEt8MnwI.js} +1 -1
  62. package/public/assets/{TaskListPage-CsfovBa0.js → TaskListPage-Cxjb5OL5.js} +1 -1
  63. package/public/assets/{TaskStatusBadge-BEP7iIji.js → TaskStatusBadge-n1Lmch1t.js} +1 -1
  64. package/public/assets/TerminalHomePage-D0z7AQrJ.js +6 -0
  65. package/public/assets/{TokenManage-Bl2EDsUf.js → TokenManage-WCmQaUoy.js} +1 -1
  66. package/public/assets/{Tooltip-UN2a6oLr.js → Tooltip-BztbRI3_.js} +1 -1
  67. package/public/assets/{TotpSetupPage-Cd6vK9QH.js → TotpSetupPage-ff5437-N.js} +1 -1
  68. package/public/assets/{WorkerDetailPage-CfvhC7b1.js → WorkerDetailPage-owp96p2u.js} +1 -1
  69. package/public/assets/{WorkerListPage-CD6kiLqL.js → WorkerListPage-CoI6nhvb.js} +1 -1
  70. package/public/assets/{WorkerOperationsPage-SxSg0Trc.js → WorkerOperationsPage-SPY7c7XX.js} +1 -1
  71. package/public/assets/{WorkerSetupGuidePage-DEg3NRgy.js → WorkerSetupGuidePage-DDuxh9Sc.js} +1 -1
  72. package/public/assets/{WorkerSetupPage-D3TZfdgu.js → WorkerSetupPage-BDgTvKs2.js} +1 -1
  73. package/public/assets/{agent-type-options-D7fqFcGk.js → agent-type-options-p1tH-Kcc.js} +1 -1
  74. package/public/assets/{arrow-left-B1mCk_qj.js → arrow-left-IMmiqNmm.js} +1 -1
  75. package/public/assets/{arrow-right-C8s53CLG.js → arrow-right-BOZCuyZB.js} +1 -1
  76. package/public/assets/{bot-CzLFCLZZ.js → bot-C4hSv-gW.js} +1 -1
  77. package/public/assets/{chevron-down-D7BGO3m7.js → chevron-down-CbnHKl5e.js} +1 -1
  78. package/public/assets/{chevron-left-BE8Q-xOd.js → chevron-left-CPLnASn1.js} +1 -1
  79. package/public/assets/{chevron-right-DDD7tmjh.js → chevron-right-Dz6bwKdg.js} +1 -1
  80. package/public/assets/{chevron-up-OnanTZeg.js → chevron-up-D7WFayA3.js} +1 -1
  81. package/public/assets/{circle-alert-DUNqrccV.js → circle-alert-Bc0_GlfI.js} +1 -1
  82. package/public/assets/{clock-DbIwbPMD.js → clock-D1JApOFi.js} +1 -1
  83. package/public/assets/{copy-BEHh73E0.js → copy-BG1gOxig.js} +1 -1
  84. package/public/assets/{download-CCv-DQno.js → download-5p6GuALo.js} +1 -1
  85. package/public/assets/{external-link-iW49-1O8.js → external-link-Beu7KLy4.js} +1 -1
  86. package/public/assets/{git-fork-CPi2HXkl.js → git-fork-BQcDVpFH.js} +1 -1
  87. package/public/assets/{index-C55BV6IU.js → index-C7ov95n_.js} +2 -2
  88. package/public/assets/{key-C0eEzddZ.js → key-BE9Gsqm_.js} +1 -1
  89. package/public/assets/{loader-circle-C9W7Kkmp.js → loader-circle-yXvWCaBR.js} +1 -1
  90. package/public/assets/{pencil-DM4WiydP.js → pencil-DzahKM5O.js} +1 -1
  91. package/public/assets/{play-XIAOKPOe.js → play-8EsQZf8O.js} +1 -1
  92. package/public/assets/{plus-aPE7t69K.js → plus-mUwKUEYN.js} +1 -1
  93. package/public/assets/{rotate-ccw-B1NZ8hui.js → rotate-ccw-Da2N8-_y.js} +1 -1
  94. package/public/assets/{scroll-text-C6aPaLdU.js → scroll-text-DstzkbI6.js} +1 -1
  95. package/public/assets/{settings-DU4r9yO_.js → settings-D9sT0Wup.js} +1 -1
  96. package/public/assets/{skip-forward-BFFIAkmw.js → skip-forward-DP8t4aLx.js} +1 -1
  97. package/public/assets/{status-colors-CKaMKK3r.js → status-colors-CydKgJJI.js} +1 -1
  98. package/public/assets/{task-constants-iMyT85iC.js → task-constants-Bz3M3E7B.js} +1 -1
  99. package/public/assets/{task.store-BmQY3VtF.js → task.store-IrYERfeU.js} +1 -1
  100. package/public/assets/{timer-Y3xtDXXc.js → timer-DFL8-1C4.js} +1 -1
  101. package/public/assets/{trash-2-CqjHsIl5.js → trash-2-C_Q58aM2.js} +1 -1
  102. package/public/assets/{useFetch-D6eIscLa.js → useFetch-6TTZQjqE.js} +1 -1
  103. package/public/assets/{users-yPg1FtvE.js → users-2CfRzYZU.js} +1 -1
  104. package/public/assets/{wifi-NKRWjZy9.js → wifi-YQ5JgVLZ.js} +1 -1
  105. package/public/assets/{workflow-DesQkcwb.js → workflow-DstMM8ES.js} +1 -1
  106. package/public/assets/{zap-srWWfcFf.js → zap-Bq9h_pSQ.js} +1 -1
  107. package/public/index.html +1 -1
  108. package/public/sw.js +1 -1
  109. package/public/assets/TerminalHomePage-DTWM1EQJ.js +0 -6
@@ -1,6 +0,0 @@
1
- import{c as ce,n as le,h as O,o as S,a as A,r,k as z,p as de,q as xe,j as e,X as Z,s as me,f as pe,l as ue,m as he}from"./index-C55BV6IU.js";import{g as ee,H as ve,C as fe}from"./ConfirmStageDialog-JkHyx3fw.js";import{u as ge}from"./task.store-BmQY3VtF.js";import{P as be}from"./PtyTerminal-DR7t6lKq.js";import{i as G,O as te}from"./OnboardingGuide-km4jEWoE.js";import{S as E}from"./Select-ZRV-96wd.js";import{a as se}from"./status-colors-CKaMKK3r.js";import{a as je}from"./date-CmcdoD87.js";import{T as q,a as J,g as ke}from"./task-constants-iMyT85iC.js";import{g as ye}from"./agent-type-options-D7fqFcGk.js";import{u as ae}from"./useFetch-D6eIscLa.js";import{P as $}from"./plus-aPE7t69K.js";import{C as Ne}from"./chevron-down-D7BGO3m7.js";import{C as we}from"./chevron-up-OnanTZeg.js";import{R as Te}from"./rotate-ccw-B1NZ8hui.js";import{C as Se}from"./clock-DbIwbPMD.js";import{W as _e}from"./wifi-NKRWjZy9.js";import"./chevron-right-DDD7tmjh.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 Ce=ce("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 Ie(){try{const t=localStorage.getItem(ne);if(t)return JSON.parse(t)}catch{}return{pinnedTaskIds:[],activeTaskId:null}}let Q="";function U(t){const a=JSON.stringify(t);a!==Q&&(Q=a,localStorage.setItem(ne,a))}const V=Ie(),Ee=new Set([S.QUEUED,S.ASSIGNED,S.RUNNING,S.SUSPENDED]);let H=!1;const Ae=le((t,a)=>({pinnedTaskIds:V.pinnedTaskIds,activeTaskId:V.activeTaskId,taskMetas:{},stageConfirm:null,loading:!1,initialLoaded:!1,setActiveTask:s=>{t({activeTaskId:s}),U({pinnedTaskIds:a().pinnedTaskIds,activeTaskId:s})},pinTask:s=>{const{pinnedTaskIds:n}=a();if(n.includes(s))return;const l=[...n,s];t({pinnedTaskIds:l}),U({pinnedTaskIds:l,activeTaskId:a().activeTaskId})},unpinTask:s=>{const{pinnedTaskIds:n,activeTaskId:l,taskMetas:c}=a(),i=n.filter(o=>o!==s),d=l===s?i[0]??null:l,{[s]:u,...v}=c;t({pinnedTaskIds:i,activeTaskId:d,taskMetas:v}),U({pinnedTaskIds:i,activeTaskId:d})},loadActiveTasks:async()=>{if(H)return;H=!0;const s=!a().initialLoaded;s&&t({loading:!0});try{const l=(await O.get("web/tasks",{searchParams:{limit:"30"}}).json()).data.filter(o=>Ee.has(o.status)),c={};for(const o of l)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 d=[...l].sort((o,h)=>h.updatedAt.localeCompare(o.updatedAt)).map(o=>o.id),{activeTaskId:u}=a(),v=u&&d.includes(u)?u:d[0]??null;t({taskMetas:c,pinnedTaskIds:d,activeTaskId:v,initialLoaded:!0}),U({pinnedTaskIds:d,activeTaskId:v})}catch{}finally{H=!1,s&&t({loading:!1})}},fetchStageConfirm:async s=>{try{const n=await O.get(`web/tasks/${s}/pending-confirm`).json();t({stageConfirm:n.confirm})}catch{t({stageConfirm:null})}},clearStageConfirm:()=>t({stageConfirm:null}),updateTaskMeta:(s,n)=>{const{taskMetas:l}=a(),c=l[s];c&&t({taskMetas:{...l,[s]:{...c,...n}}})}}));function De(){const[t,a]=r.useState(()=>G());r.useEffect(()=>{const n=()=>a(!0),l=()=>a(G());return window.addEventListener("onboarding-dismissed",n),window.addEventListener("storage",l),()=>{window.removeEventListener("onboarding-dismissed",n),window.removeEventListener("storage",l)}},[]);const{data:s}=ae(()=>t?Promise.resolve(null):O.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 Me({taskId:t,confirm:a,onSubmitted:s}){const{t:n}=A(),[l,c]=r.useState(a.timeout),[i,d]=r.useState(!1),[u,v]=r.useState(!1),o=a.confirmType==="plan_review"||a.confirmType==="code_review",h=a.confirmType==="plan_decompose";r.useEffect(()=>{c(a.timeout);const j=setInterval(()=>{c(b=>b<=1?(clearInterval(j),0):b-1)},1e3);return()=>clearInterval(j)},[a.timeout,a.stageName]);const f=r.useCallback(async j=>{d(!0);try{await O.post(`web/tasks/${t}/confirm-stage`,{json:{stageName:a.stageName,approved:j}}),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(Se,{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:je(l)})]}),e.jsx("div",{className:"flex items-center gap-1.5 shrink-0",children:h?e.jsxs(e.Fragment,{children:[a.prompt==="SPEC_PUSH_FAILED"&&e.jsx("span",{className:"text-[11px] text-[var(--warning)] mr-1",children:n("tasks.plan_decompose_push_failed_message")}),e.jsx("button",{onClick:()=>f(!1),disabled:i,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:()=>f(!0),disabled:i,className:"rounded-[4px] bg-[var(--accent)] px-2 py-1 text-[11px] text-black hover:opacity-90 transition-opacity disabled:opacity-50",children:n(i?"tasks.stage_submitting":"tasks.approve_plan_decompose")})]}):o?e.jsx("button",{onClick:()=>v(!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:()=>f(!1),disabled:i,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:()=>f(!0),disabled:i,className:"rounded-[4px] bg-[var(--accent)] px-2 py-1 text-[11px] text-black hover:opacity-90 transition-opacity disabled:opacity-50",children:n(i?"tasks.stage_submitting":"tasks.confirm_and_proceed")})]})})]}),o&&e.jsx(fe,{isOpen:u,onClose:()=>v(!1),taskId:t,stageName:a.stageName,timeoutSeconds:Math.ceil(a.timeout/1e3),confirmType:a.confirmType,prompt:a.prompt,onSubmitted:s})]})}function Oe({projectKey:t,onProjectChange:a,onCreated:s}){const{t:n}=A(),l=ge(m=>m.createTask),[c,i]=r.useState(""),[d,u]=r.useState("feat"),[v,o]=r.useState(void 0),[h,f]=r.useState(!1),[j,b]=r.useState(!1),[P,F]=r.useState(!1),{data:_}=ae(()=>O.get("web/projects").json(),[]),w=r.useMemo(()=>{const m=(_??[]).map(R=>({value:R.key,label:R.key}));return[{value:"",label:n("terminal_home.all_projects")},...m]},[_,n]),g=r.useMemo(()=>(_??[]).find(m=>m.key===t)??null,[_,t]),D=r.useMemo(()=>ye(m=>m,g==null?void 0:g.agentType),[g==null?void 0:g.agentType]),k=r.useRef(!1);r.useEffect(()=>{if(!k.current){if(t){k.current=!0;return}w.length>1&&(a(w[1].value),k.current=!0)}},[t,w,a]),r.useEffect(()=>{o(void 0)},[t]);const M=v??"",p=r.useCallback(m=>{o(m||void 0)},[]),C=!!t&&!!c.trim();function T(){C&&b(!0)}async function N(){if(b(!1),!!C){f(!0);try{const m=await l({projectKey:t,description:c.trim(),taskType:d,agentType:v||void 0});i(""),s(m.id)}catch{}finally{f(!1)}}}const I=n("terminal_home.confirm_create_message").replace("{taskType}",d).replace("{projectKey}",t).replace("{description}",c.trim()),L="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:w,placeholder:n("terminal_home.select_project")})}),e.jsx("div",{className:"w-[100px]",children:e.jsx(E,{value:d,onChange:u,options:J})}),e.jsx("div",{className:"w-[120px]",children:e.jsx(E,{value:M,onChange:p,options:D,placeholder:n("tasks.form_agent_type"),disabled:h||!t})}),e.jsx("input",{type:"text",value:c,onChange:m=>i(m.target.value),onKeyDown:m=>m.key==="Enter"&&T(),placeholder:n("terminal_home.task_description_placeholder"),className:L,disabled:h}),e.jsxs("button",{onClick:T,disabled:h||!C,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(h?"common.creating":"terminal_home.new_task")]})]}),e.jsx("div",{className:"md:hidden border-b border-[var(--border)] bg-[var(--bg-card)]",children:P?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:w,placeholder:n("terminal_home.select_project")})}),e.jsx("div",{className:"w-[100px]",children:e.jsx(E,{value:d,onChange:u,options:J})}),e.jsx("div",{className:"w-[120px]",children:e.jsx(E,{value:M,onChange:p,options:D,placeholder:n("tasks.form_agent_type"),disabled:h||!t})}),e.jsx("button",{onClick:()=>F(!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:c,onChange:m=>i(m.target.value),onKeyDown:m=>m.key==="Enter"&&T(),placeholder:n("terminal_home.task_description_placeholder"),className:L,disabled:h}),e.jsx("button",{onClick:T,disabled:h||!C,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:()=>F(!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(me,{isOpen:j,onClose:()=>b(!1),onConfirm:N,title:n("terminal_home.confirm_create_title"),message:I,confirmVariant:"accent",confirmLabel:n("terminal_home.new_task"),isLoading:h})]})}function Y({status:t,size:a}){const s=t===S.SUSPENDED,n=se(t),l=a==="sm"?"h-1.5 w-1.5":"h-2 w-2";return e.jsx("span",{className:`${l} shrink-0 rounded-full ${s?"animate-pulse":""}`,style:{backgroundColor:s?"var(--warning)":n}})}function Pe({tasks:t,activeId:a,onSelect:s,onUnpin:n,children:l}){const c=pe();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(i=>{const d=i.id===a;return e.jsxs("div",{onClick:()=>s(i.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:i.status,size:"md"}),e.jsxs("div",{className:"flex-1 min-w-0",title:he(i),children:[e.jsxs("div",{className:"truncate text-xs preserve-case",children:["#",i.id," ",ue(i)]}),e.jsx("div",{className:"text-[10px] text-[var(--text-muted)]",children:i.projectKey})]}),e.jsx("button",{onClick:u=>{u.stopPropagation(),n(i.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:u=>{u.stopPropagation(),c(`/tasks/${i.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:"→"})})]},i.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(i=>{const d=i.id===a;return e.jsxs("button",{onClick:()=>s(i.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:i.status,size:"sm"}),e.jsxs("span",{className:"text-[11px] whitespace-nowrap",children:["#",i.id]})]},i.id)})}),l]})]})}function Fe({task:t,takeoverState:a,ptyConnected:s,onTakeover:n,onRelease:l}){const{t:c}=A(),i=se(t.status),d=ke(t.agentType),u=ee(t),v=q.includes(t.status);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:i},children:[t.status.toLowerCase()," / ",d]}),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: ",u]}),t.workerName&&e.jsxs("span",{className:"text-[11px] text-[var(--text-muted)]",children:["worker: ",t.workerName]})]}),e.jsxs("div",{className:"flex shrink-0 items-center gap-1.5",children:[!v&&a==="requesting"&&e.jsx("span",{className:"text-[10px] text-[var(--warning)]",children:c("tasks.requesting_takeover")}),!v&&(a==="auto"||a==="denied")&&e.jsxs("button",{type:"button",onClick:n,disabled:!s,"aria-label":c("tasks.take_over"),title:c("tasks.take_over"),className:"inline-flex items-center gap-1 rounded-[4px] border border-[var(--border)] px-2 py-1 text-[11px] text-[var(--warning)] hover:bg-white/5 disabled:opacity-50 disabled:cursor-not-allowed",children:[e.jsx(ve,{className:"h-3 w-3"}),e.jsx("span",{className:"hidden md:inline",children:c("tasks.take_over")})]}),!v&&a==="manual"&&e.jsxs("button",{type:"button",onClick:l,"aria-label":c("tasks.restore_auto"),title:c("tasks.restore_auto"),className:"inline-flex items-center gap-1 rounded-[4px] bg-[var(--accent)] px-2 py-1 text-[11px] text-black hover:opacity-90",children:[e.jsx(Te,{className:"h-3 w-3"}),e.jsx("span",{className:"hidden md:inline",children:c("tasks.restore_auto")})]})]})]})}function Le({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(_e,{className:"h-2.5 w-2.5"}):e.jsx(Ce,{className:"h-2.5 w-2.5"}),s?"connected":a]})]})}function K({onboardingData:t}){const[a,s]=r.useState(!1),{t:n}=A();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(we,{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(Ne,{className:"h-3 w-3 text-[var(--text-muted)]"})]}):null}function X({onboardingData:t}){const{t:a}=A();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 st(){const{t}=A(),{pinnedTaskIds:a,activeTaskId:s,taskMetas:n,stageConfirm:l,loading:c,initialLoaded:i,setActiveTask:d,pinTask:u,unpinTask:v,loadActiveTasks:o,fetchStageConfirm:h,clearStageConfirm:f,updateTaskMeta:j}=Ae(),b=r.useRef(null),[P,F]=r.useState("disconnected"),[_,w]=r.useState("auto"),[g,D]=r.useState(""),k=z(x=>x.lastEvent),M=z(x=>x.status),p=s?n[s]??null:null,C=p?q.includes(p.status):!1,T=r.useRef(!1);r.useEffect(()=>{!T.current&&p&&(D(p.projectKey),T.current=!0)},[p]);const N=r.useMemo(()=>{const x=a.map(y=>n[y]).filter(Boolean);return g?x.filter(y=>y.projectKey===g):x},[a,n,g]);r.useEffect(()=>{N.length>0&&s&&!N.some(x=>x.id===s)&&d(N[0].id)},[N,s,d]);const I=De();de(p?xe(p):null),r.useEffect(()=>{o()},[o]),r.useEffect(()=>{s&&(p==null?void 0:p.status)===S.SUSPENDED?h(s):f()},[s,p==null?void 0:p.status,h,f]),r.useEffect(()=>{if(k){if(k.event==="task_status_changed"){const{taskId:x,status:y,currentStage:B}=k,W={status:y,updatedAt:new Date().toISOString()};B!==void 0&&(W.currentStage=B),j(x,W),y===S.SUSPENDED&&x===s&&h(x),q.includes(y)&&x===s&&f()}k.event==="task_created"&&o()}},[k,s,h,f,j,o]),r.useEffect(()=>{if(M==="connected")return;const y=setInterval(()=>{document.visibilityState!=="hidden"&&o()},15e3);return()=>clearInterval(y)},[M,o]);const L=r.useCallback(x=>{u(x),d(x),o()},[u,d,o]),m=r.useCallback(()=>{f(),o()},[f,o]),R=r.useCallback(()=>{var x;(x=b.current)==null||x.requestTakeover()},[]),re=r.useCallback(()=>{var x;(x=b.current)==null||x.releaseTakeover()},[]),ie=N.length>0,oe=c&&!i;return e.jsxs("div",{className:"flex h-full flex-col overflow-hidden",children:[e.jsx(Oe,{projectKey:g,onProjectChange:D,onCreated:L}),oe?e.jsx("div",{className:"flex flex-1 items-center justify-center",children:e.jsx("p",{className:"text-sm text-[var(--text-muted)]",children:t("common.loading")})}):e.jsx("div",{className:"flex flex-col md:flex-row flex-1 overflow-hidden",children:ie?e.jsxs(e.Fragment,{children:[e.jsx(Pe,{tasks:N,activeId:s,onSelect:d,onUnpin:v,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(Fe,{task:p,takeoverState:_,ptyConnected:P==="connected",onTakeover:R,onRelease:re}),l&&s&&e.jsx(Me,{taskId:s,confirm:l,onSubmitted:m}),e.jsx("div",{className:"flex-1 min-h-0 overflow-hidden",children:e.jsx(be,{taskId:s,sessionId:p.currentSessionId??void 0,taskFinished:C,onStatusChange:F,onTakeoverChange:w,ref:b},s)}),e.jsx(Le,{task:p,ptyStatus:P})]}):e.jsx(X,{onboardingData:I})})]}):e.jsx(X,{onboardingData:I})})]})}export{st as default};