@overlordai/server 1.0.135 → 1.0.136

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 (102) hide show
  1. package/database/migrations/008-task-target-branch.sql +1 -0
  2. package/dist/database/repositories/task.repository.d.ts +1 -0
  3. package/dist/database/repositories/task.repository.d.ts.map +1 -1
  4. package/dist/database/repositories/task.repository.js +6 -2
  5. package/dist/database/repositories/task.repository.js.map +1 -1
  6. package/dist/dispatcher/scheduler.service.d.ts.map +1 -1
  7. package/dist/dispatcher/scheduler.service.js +24 -5
  8. package/dist/dispatcher/scheduler.service.js.map +1 -1
  9. package/dist/dispatcher/task-creation.service.d.ts.map +1 -1
  10. package/dist/dispatcher/task-creation.service.js +4 -0
  11. package/dist/dispatcher/task-creation.service.js.map +1 -1
  12. package/dist/web/task.controller.d.ts +1 -0
  13. package/dist/web/task.controller.d.ts.map +1 -1
  14. package/dist/web/task.controller.js +6 -0
  15. package/dist/web/task.controller.js.map +1 -1
  16. package/package.json +4 -4
  17. package/public/assets/{AccessTokensPage-B790MOSI.js → AccessTokensPage-DR-poRS4.js} +1 -1
  18. package/public/assets/{AdminPage-bj1Ceucs.js → AdminPage-BBswldyj.js} +1 -1
  19. package/public/assets/{AgentCliPage-C3m17Vxw.js → AgentCliPage-BjvJPqFg.js} +1 -1
  20. package/public/assets/{ApiReferencePage-CU5KWW5b.js → ApiReferencePage-DGncLrQ3.js} +1 -1
  21. package/public/assets/{ArchitecturePage-B3NO9ams.js → ArchitecturePage-Ce0QnFXC.js} +1 -1
  22. package/public/assets/{AuditLogPage-CSYmdRqM.js → AuditLogPage-w_7Nj4Rv.js} +1 -1
  23. package/public/assets/{BindPlatformPage-BhC8I1M6.js → BindPlatformPage-CaN-9QLb.js} +1 -1
  24. package/public/assets/{BotIntegrationPage-B4NhIhTq.js → BotIntegrationPage-SVH7cMHP.js} +1 -1
  25. package/public/assets/{BotManage-BVx8Zpyb.js → BotManage-D-lenZUf.js} +1 -1
  26. package/public/assets/{BotSetupPage-DVqBgyjG.js → BotSetupPage-DoLW98NA.js} +1 -1
  27. package/public/assets/{ChangelogPage-DgAkPSte.js → ChangelogPage-DuEv-8dO.js} +1 -1
  28. package/public/assets/{CliReferencePage-ChEAiOWL.js → CliReferencePage-BY4jRKIa.js} +1 -1
  29. package/public/assets/{DeploymentPage-DUlfbHwk.js → DeploymentPage-5MdRHTAa.js} +1 -1
  30. package/public/assets/{DevWorkflowPage-CHQifk0Y.js → DevWorkflowPage-O7m2Y5RK.js} +1 -1
  31. package/public/assets/{DeveloperManage-BOzhPppl.js → DeveloperManage-DvAPUGuF.js} +1 -1
  32. package/public/assets/{DeveloperSetupPage-rpsOayJX.js → DeveloperSetupPage-ZxzN_i4I.js} +1 -1
  33. package/public/assets/{DocsIndexPage-BMIn54Zl.js → DocsIndexPage-BQ1p1z73.js} +1 -1
  34. package/public/assets/{DocsLayout-FmrCA5RW.js → DocsLayout-C21J5c4W.js} +1 -1
  35. package/public/assets/{DocsPrimitives-ppeWCX0i.js → DocsPrimitives-C-MCNelj.js} +1 -1
  36. package/public/assets/{EditProjectPage-CLPYjvAQ.js → EditProjectPage-DtBVrVqX.js} +1 -1
  37. package/public/assets/{EmptyState-Q0YM1iFk.js → EmptyState-BwOJcw-7.js} +1 -1
  38. package/public/assets/{EnvVariablesPage-CLafcR2k.js → EnvVariablesPage-BO3O-emk.js} +1 -1
  39. package/public/assets/{HomePage-B-rfwBdn.js → HomePage-DGlnGz9w.js} +1 -1
  40. package/public/assets/{InfoRow-D8AsUcSn.js → InfoRow-CArRH_uK.js} +1 -1
  41. package/public/assets/{InstallationPage-BbXh-Y77.js → InstallationPage-DbN30z1N.js} +1 -1
  42. package/public/assets/{LandingPage-DqLbP1Ry.js → LandingPage-h4gKySBf.js} +1 -1
  43. package/public/assets/{LocalDevelopmentPage-CY7dB3hK.js → LocalDevelopmentPage-CzGh_CyA.js} +1 -1
  44. package/public/assets/{LoginPage-BoXUe_Xx.js → LoginPage-D0xxVRbd.js} +1 -1
  45. package/public/assets/{MetricBar-D9ZLrw38.js → MetricBar-CBh2ydOP.js} +1 -1
  46. package/public/assets/{NotFoundPage-4pE6QH1R.js → NotFoundPage-CTB5zYpq.js} +1 -1
  47. package/public/assets/{OnboardingGuide-Bo4Ljo4i.js → OnboardingGuide-j6HspxdC.js} +1 -1
  48. package/public/assets/{PermissionsPage-DvWGCh32.js → PermissionsPage-DhIPVozc.js} +1 -1
  49. package/public/assets/{PipelineConfigPage-CeU0o917.js → PipelineConfigPage-BPP3hqfX.js} +1 -1
  50. package/public/assets/{PipelineEditorPage-CdHuwLmJ.js → PipelineEditorPage-zNzVbcEY.js} +1 -1
  51. package/public/assets/{ProfilePage-8kc8fiZV.js → ProfilePage-By17-B9R.js} +1 -1
  52. package/public/assets/{ProjectDetailPage-CaASFvS0.js → ProjectDetailPage-D3tG00hE.js} +1 -1
  53. package/public/assets/{ProjectListPage-r28OozXz.js → ProjectListPage-yOkjg0aA.js} +2 -2
  54. package/public/assets/{PtyTerminal-DzMsSJAu.js → PtyTerminal-BCi4nF3w.js} +1 -1
  55. package/public/assets/{QuickAuth-Cds5x6Z3.js → QuickAuth-Dv8THFX-.js} +1 -1
  56. package/public/assets/{RemoveMemberConfirmDialog-Do2l0kib.js → RemoveMemberConfirmDialog-7CNTS9OT.js} +1 -1
  57. package/public/assets/{Select-DRCu2nu0.js → Select-C9mH7t3y.js} +1 -1
  58. package/public/assets/{SettingsPage-CZywaGc9.js → SettingsPage-CyrpPfpE.js} +1 -1
  59. package/public/assets/{Skeleton-BWkXyrSG.js → Skeleton-BSwNthrI.js} +1 -1
  60. package/public/assets/{SkillPage-Bn53Yjiu.js → SkillPage-x3K6pR1n.js} +1 -1
  61. package/public/assets/{TaskDetailPage-Bgd8Ogvq.js → TaskDetailPage-C4qj7_Be.js} +1 -1
  62. package/public/assets/TaskListPage-ChDkGoRG.js +1 -0
  63. package/public/assets/{TaskStatusBadge-fDYhxtHY.js → TaskStatusBadge-bgFlcooX.js} +1 -1
  64. package/public/assets/TerminalHomePage-DvUjZD9t.js +11 -0
  65. package/public/assets/{TokenManage-CL6Dgoac.js → TokenManage-BiFQC6sW.js} +1 -1
  66. package/public/assets/{Tooltip-CZtlcHYf.js → Tooltip-C8VKfixS.js} +1 -1
  67. package/public/assets/{TotpSetupPage-BeStxglO.js → TotpSetupPage-BBiIpwY3.js} +1 -1
  68. package/public/assets/{WorkerDetailPage-B5lirrH3.js → WorkerDetailPage-Du6ZEZAb.js} +1 -1
  69. package/public/assets/{WorkerListPage-DRx_FX1c.js → WorkerListPage-ByqfyN10.js} +1 -1
  70. package/public/assets/{WorkerOperationsPage-0fj-txrI.js → WorkerOperationsPage-DeqjI2So.js} +1 -1
  71. package/public/assets/{WorkerSetupGuidePage-CpWSvLWw.js → WorkerSetupGuidePage-BVJvCq1d.js} +1 -1
  72. package/public/assets/{WorkerSetupPage-CX2IKTBz.js → WorkerSetupPage-D3Jpi9tJ.js} +1 -1
  73. package/public/assets/{agent-type-options-BztKEaBi.js → agent-type-options-snmZcyAv.js} +1 -1
  74. package/public/assets/{arrow-left-CiH58ODj.js → arrow-left-CIwOL41D.js} +1 -1
  75. package/public/assets/{arrow-right-Dq2t8ts3.js → arrow-right-vAeX7cF5.js} +1 -1
  76. package/public/assets/{bot-C1cnPjRw.js → bot-CvhMANHw.js} +1 -1
  77. package/public/assets/{chevron-left-CM3Ljmsh.js → chevron-left-C6IUM-8d.js} +1 -1
  78. package/public/assets/{chevron-right-OQgRbmpb.js → chevron-right-CtCcIQB9.js} +1 -1
  79. package/public/assets/{copy-DO7PDfZF.js → copy-BsSvzuvN.js} +1 -1
  80. package/public/assets/{download-Cd-BBoI7.js → download-DziGmRwM.js} +1 -1
  81. package/public/assets/{external-link-COzchqIG.js → external-link-D4FpeC5t.js} +1 -1
  82. package/public/assets/{file-text-DTpqny43.js → file-text-DWEXk0wE.js} +1 -1
  83. package/public/assets/{git-fork-BWs-fYTb.js → git-fork-DWSuvIF4.js} +1 -1
  84. package/public/assets/{index-01l9VFB2.js → index-D_OrDcWf.js} +3 -3
  85. package/public/assets/{key-Chc2kr14.js → key-BpF_rjM9.js} +1 -1
  86. package/public/assets/{loader-circle-D5ClDQ9h.js → loader-circle-PQQXGtgi.js} +1 -1
  87. package/public/assets/{pencil-DBqi31EH.js → pencil-DvVrY4a_.js} +1 -1
  88. package/public/assets/{plus-ucRIgQZK.js → plus-DLpnTi95.js} +1 -1
  89. package/public/assets/{rotate-ccw-CHaUzlWE.js → rotate-ccw-CiTf48Td.js} +1 -1
  90. package/public/assets/{scroll-text-DBPeZU4l.js → scroll-text-cGPnQr3M.js} +1 -1
  91. package/public/assets/{settings-JXcSTf0A.js → settings--c2rvWEY.js} +1 -1
  92. package/public/assets/{status-colors-kQDPD0wO.js → status-colors-CYQlZjBF.js} +1 -1
  93. package/public/assets/{task-constants-DXxUAApA.js → task-constants-C28Dag_x.js} +1 -1
  94. package/public/assets/{trash-2-WA_mdBf9.js → trash-2-B5fxIpUx.js} +1 -1
  95. package/public/assets/{useFetch-DWa3GeJN.js → useFetch-_T-wW8J0.js} +1 -1
  96. package/public/assets/{users-CUx2h4Ml.js → users-cnF1W_5i.js} +1 -1
  97. package/public/assets/{wifi-DtCZMvdz.js → wifi-DyUmH42s.js} +1 -1
  98. package/public/assets/{workflow-DvpyWOk6.js → workflow-Br0aC6fc.js} +1 -1
  99. package/public/index.html +1 -1
  100. package/public/sw.js +1 -1
  101. package/public/assets/TaskListPage-Ca0mxJ_o.js +0 -1
  102. package/public/assets/TerminalHomePage-DE4Fra73.js +0 -11
@@ -1,4 +1,4 @@
1
- import{c as e}from"./index-01l9VFB2.js";/**
1
+ import{c as e}from"./index-D_OrDcWf.js";/**
2
2
  * @license lucide-react v0.469.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c as e}from"./index-01l9VFB2.js";/**
1
+ import{c as e}from"./index-D_OrDcWf.js";/**
2
2
  * @license lucide-react v0.469.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c as a}from"./index-01l9VFB2.js";/**
1
+ import{c as a}from"./index-D_OrDcWf.js";/**
2
2
  * @license lucide-react v0.469.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c as e}from"./index-01l9VFB2.js";/**
1
+ import{c as e}from"./index-D_OrDcWf.js";/**
2
2
  * @license lucide-react v0.469.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c as t}from"./index-01l9VFB2.js";/**
1
+ import{c as t}from"./index-D_OrDcWf.js";/**
2
2
  * @license lucide-react v0.469.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c as a}from"./index-01l9VFB2.js";/**
1
+ import{c as a}from"./index-D_OrDcWf.js";/**
2
2
  * @license lucide-react v0.469.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c as a}from"./index-01l9VFB2.js";/**
1
+ import{c as a}from"./index-D_OrDcWf.js";/**
2
2
  * @license lucide-react v0.469.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1 +1 @@
1
- import{W as r,p as e,a2 as s,a3 as u,Z as a}from"./index-01l9VFB2.js";const n={[e.QUEUED]:"var(--text-muted)",[e.ASSIGNED]:"#60a5fa",[e.RUNNING]:"var(--accent)",[e.SUSPENDED]:"var(--warning)",[e.COMPLETED]:"var(--info)",[e.FAILED]:"var(--destructive)",[e.CANCELLED]:"var(--text-muted)"};function v(t){return n[t]??"var(--text-muted)"}const o={[r.ONLINE]:"var(--accent)",[r.OFFLINE]:"var(--destructive)",[r.DRAINING]:"var(--warning)",[r.DECOMMISSIONED]:"var(--text-muted)"};function E(t){return o[t]??"var(--text-muted)"}function x(t){switch(t){case s.ACTIVE:return"text-green-400";case s.DISABLED:return"text-red-400";default:return"text-[var(--text-muted)]"}}function S(t){switch(t){case a.ACTIVE:return"text-green-400";case a.USED:return"text-blue-400";case a.REVOKED:return"text-red-400";case a.EXPIRED:return"text-[var(--text-muted)]";default:return"text-[var(--text-muted)]"}}function d(t){switch(t){case u.ACTIVE:return"text-green-400";case"error":return"text-red-400";default:return"text-[var(--text-muted)]"}}function i(t){return t>.8?"var(--destructive)":t>.6?"var(--warning)":"var(--accent)"}export{v as a,i as b,x as c,d,S as e,E as g,n as t,o as w};
1
+ import{W as r,p as e,a2 as s,a3 as u,Z as a}from"./index-D_OrDcWf.js";const n={[e.QUEUED]:"var(--text-muted)",[e.ASSIGNED]:"#60a5fa",[e.RUNNING]:"var(--accent)",[e.SUSPENDED]:"var(--warning)",[e.COMPLETED]:"var(--info)",[e.FAILED]:"var(--destructive)",[e.CANCELLED]:"var(--text-muted)"};function v(t){return n[t]??"var(--text-muted)"}const o={[r.ONLINE]:"var(--accent)",[r.OFFLINE]:"var(--destructive)",[r.DRAINING]:"var(--warning)",[r.DECOMMISSIONED]:"var(--text-muted)"};function E(t){return o[t]??"var(--text-muted)"}function x(t){switch(t){case s.ACTIVE:return"text-green-400";case s.DISABLED:return"text-red-400";default:return"text-[var(--text-muted)]"}}function S(t){switch(t){case a.ACTIVE:return"text-green-400";case a.USED:return"text-blue-400";case a.REVOKED:return"text-red-400";case a.EXPIRED:return"text-[var(--text-muted)]";default:return"text-[var(--text-muted)]"}}function d(t){switch(t){case u.ACTIVE:return"text-green-400";case"error":return"text-red-400";default:return"text-[var(--text-muted)]"}}function i(t){return t>.8?"var(--destructive)":t>.6?"var(--warning)":"var(--accent)"}export{v as a,i as b,x as c,d,S as e,E as g,n as t,o as w};
@@ -1 +1 @@
1
- import{o as i,h as n,p as c,F as k}from"./index-01l9VFB2.js";import{g as T}from"./agent-type-options-BztKEaBi.js";const b=i((t,r)=>({tasks:[],currentTask:null,loading:!1,error:null,nextCursor:null,_fetchTasksAbort:null,_fetchTasksRequestId:0,fetchTasks:async a=>{const s=r()._fetchTasksAbort;s&&s.abort();const o=new AbortController,l=r()._fetchTasksRequestId+1;t({loading:!0,error:null,_fetchTasksAbort:o,_fetchTasksRequestId:l});try{const e={};a!=null&&a.status&&(e.status=a.status),a!=null&&a.projectKey&&(e.projectKey=a.projectKey),a!=null&&a.developerId&&(e.developerId=a.developerId),a!=null&&a.cursor&&(e.cursor=a.cursor),a!=null&&a.limit&&(e.limit=String(a.limit));const f=await n.get("web/tasks",{searchParams:e,signal:o.signal}).json();if(r()._fetchTasksRequestId!==l)return;t({tasks:f.data,nextCursor:f.nextCursor??null,_fetchTasksAbort:null})}catch(e){if(e instanceof DOMException&&e.name==="AbortError")return;r()._fetchTasksRequestId===l&&t({error:e instanceof Error?e.message:"Failed to fetch tasks"})}finally{r()._fetchTasksRequestId===l&&t({loading:!1,_fetchTasksAbort:null})}},fetchTask:async a=>{t({loading:!0,error:null});try{const s=await n.get(`web/tasks/${a}`).json();t({currentTask:s})}catch(s){t({error:s instanceof Error?s.message:"Failed to fetch task"})}finally{t({loading:!1})}},createTask:async a=>{t({error:null});try{const s=await n.post("web/tasks",{json:a}).json();return t(o=>({tasks:[s,...o.tasks]})),s}catch(s){throw t({error:s instanceof Error?s.message:"Failed to create task"}),s}},cancelTask:async a=>{t({error:null});try{await n.post(`web/tasks/${a}/cancel`);const{currentTask:s}=r();(s==null?void 0:s.id)===a&&await r().fetchTask(a)}catch(s){throw t({error:s instanceof Error?s.message:"Failed to cancel task"}),s}},reset:()=>{t({tasks:[],currentTask:null,loading:!1,error:null,nextCursor:null,_fetchTasksAbort:null,_fetchTasksRequestId:0})}})),p=[c.COMPLETED,c.FAILED,c.CANCELLED],E=[{value:"feat",label:"feat"},{value:"fix",label:"fix"},{value:"refactor",label:"refactor"},{value:"docs",label:"docs"},{value:"chore",label:"chore"}],d=T(t=>t);[...d];function _(t){return(t??k.CLAUDE).toLowerCase()}export{p as T,E as a,_ as g,b as u};
1
+ import{o as i,h as n,p as c,F as k}from"./index-D_OrDcWf.js";import{a as T}from"./agent-type-options-snmZcyAv.js";const b=i((t,r)=>({tasks:[],currentTask:null,loading:!1,error:null,nextCursor:null,_fetchTasksAbort:null,_fetchTasksRequestId:0,fetchTasks:async a=>{const s=r()._fetchTasksAbort;s&&s.abort();const o=new AbortController,l=r()._fetchTasksRequestId+1;t({loading:!0,error:null,_fetchTasksAbort:o,_fetchTasksRequestId:l});try{const e={};a!=null&&a.status&&(e.status=a.status),a!=null&&a.projectKey&&(e.projectKey=a.projectKey),a!=null&&a.developerId&&(e.developerId=a.developerId),a!=null&&a.cursor&&(e.cursor=a.cursor),a!=null&&a.limit&&(e.limit=String(a.limit));const f=await n.get("web/tasks",{searchParams:e,signal:o.signal}).json();if(r()._fetchTasksRequestId!==l)return;t({tasks:f.data,nextCursor:f.nextCursor??null,_fetchTasksAbort:null})}catch(e){if(e instanceof DOMException&&e.name==="AbortError")return;r()._fetchTasksRequestId===l&&t({error:e instanceof Error?e.message:"Failed to fetch tasks"})}finally{r()._fetchTasksRequestId===l&&t({loading:!1,_fetchTasksAbort:null})}},fetchTask:async a=>{t({loading:!0,error:null});try{const s=await n.get(`web/tasks/${a}`).json();t({currentTask:s})}catch(s){t({error:s instanceof Error?s.message:"Failed to fetch task"})}finally{t({loading:!1})}},createTask:async a=>{t({error:null});try{const s=await n.post("web/tasks",{json:a}).json();return t(o=>({tasks:[s,...o.tasks]})),s}catch(s){throw t({error:s instanceof Error?s.message:"Failed to create task"}),s}},cancelTask:async a=>{t({error:null});try{await n.post(`web/tasks/${a}/cancel`);const{currentTask:s}=r();(s==null?void 0:s.id)===a&&await r().fetchTask(a)}catch(s){throw t({error:s instanceof Error?s.message:"Failed to cancel task"}),s}},reset:()=>{t({tasks:[],currentTask:null,loading:!1,error:null,nextCursor:null,_fetchTasksAbort:null,_fetchTasksRequestId:0})}})),p=[c.COMPLETED,c.FAILED,c.CANCELLED],E=[{value:"feat",label:"feat"},{value:"fix",label:"fix"},{value:"refactor",label:"refactor"},{value:"docs",label:"docs"},{value:"chore",label:"chore"}],d=T(t=>t);[...d];function _(t){return(t??k.CLAUDE).toLowerCase()}export{p as T,E as a,_ as g,b as u};
@@ -1,4 +1,4 @@
1
- import{c as e}from"./index-01l9VFB2.js";/**
1
+ import{c as e}from"./index-D_OrDcWf.js";/**
2
2
  * @license lucide-react v0.469.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1 +1 @@
1
- import{r as e}from"./index-01l9VFB2.js";function p(s,l){const[i,d]=e.useState(null),[R,a]=e.useState(!0),[m,o]=e.useState(null),f=e.useRef(s);f.current=s;const r=e.useRef(0),t=e.useRef(!0),u=e.useCallback(async()=>{const c=++r.current;a(!0),o(null);try{const n=await f.current();t.current&&c===r.current&&d(n)}catch(n){if(t.current&&c===r.current){const E=n instanceof Error?n.message:"An unexpected error occurred";o(E)}}finally{t.current&&c===r.current&&a(!1)}},l);return e.useEffect(()=>{u()},[u]),e.useEffect(()=>()=>{t.current=!1,r.current+=1},[]),{data:i,loading:R,error:m,refetch:u}}export{p as u};
1
+ import{r as e}from"./index-D_OrDcWf.js";function p(s,l){const[i,d]=e.useState(null),[R,a]=e.useState(!0),[m,o]=e.useState(null),f=e.useRef(s);f.current=s;const r=e.useRef(0),t=e.useRef(!0),u=e.useCallback(async()=>{const c=++r.current;a(!0),o(null);try{const n=await f.current();t.current&&c===r.current&&d(n)}catch(n){if(t.current&&c===r.current){const E=n instanceof Error?n.message:"An unexpected error occurred";o(E)}}finally{t.current&&c===r.current&&a(!1)}},l);return e.useEffect(()=>{u()},[u]),e.useEffect(()=>()=>{t.current=!1,r.current+=1},[]),{data:i,loading:R,error:m,refetch:u}}export{p as u};
@@ -1,4 +1,4 @@
1
- import{c as e}from"./index-01l9VFB2.js";/**
1
+ import{c as e}from"./index-D_OrDcWf.js";/**
2
2
  * @license lucide-react v0.469.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c as e}from"./index-01l9VFB2.js";/**
1
+ import{c as e}from"./index-D_OrDcWf.js";/**
2
2
  * @license lucide-react v0.469.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c}from"./index-01l9VFB2.js";/**
1
+ import{c}from"./index-D_OrDcWf.js";/**
2
2
  * @license lucide-react v0.469.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
package/public/index.html CHANGED
@@ -28,7 +28,7 @@
28
28
  href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap"
29
29
  rel="stylesheet"
30
30
  />
31
- <script type="module" crossorigin src="/assets/index-01l9VFB2.js"></script>
31
+ <script type="module" crossorigin src="/assets/index-D_OrDcWf.js"></script>
32
32
  <link rel="stylesheet" crossorigin href="/assets/index-3ccyrL7z.css">
33
33
  <link rel="manifest" href="/manifest.webmanifest"><script id="vite-plugin-pwa:register-sw" src="/registerSW.js"></script></head>
34
34
  <body>
package/public/sw.js CHANGED
@@ -1 +1 @@
1
- if(!self.define){let s,e={};const l=(l,i)=>(l=new URL(l+".js",i).href,e[l]||new Promise(e=>{if("document"in self){const s=document.createElement("script");s.src=l,s.onload=e,document.head.appendChild(s)}else s=l,importScripts(l),e()}).then(()=>{let s=e[l];if(!s)throw new Error(`Module ${l} didn’t register its module`);return s}));self.define=(i,n)=>{const r=s||("document"in self?document.currentScript.src:"")||location.href;if(e[r])return;let a={};const o=s=>l(s,r),u={module:{uri:r},exports:a,require:o};e[r]=Promise.all(i.map(s=>u[s]||o(s))).then(s=>(n(...s),a))}}define(["./workbox-6e9b121d"],function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"og-image.png",revision:"f1563b4bdc7d1a4ab0aef864b0c2294e"},{url:"index.html",revision:"10ea06c02d6b37a10b9b85acae920760"},{url:"icon-maskable-512x512.png",revision:"69ada030d99c4a087bc309c00d716654"},{url:"icon-maskable-192x192.png",revision:"bf88226fe789dcb35bf89a307d3ba1af"},{url:"icon-512x512.png",revision:"74e561c3eb152bbb9cdcb333b5f1f3be"},{url:"icon-192x192.png",revision:"0bc2b74efb274c01d9eb50f717f4b7cf"},{url:"favicon.svg",revision:"e91ea32c7308cc2267ae15a5974a27f8"},{url:"apple-touch-icon-180x180.png",revision:"34c1b155ebc55bee221777f86f4612d8"},{url:"apple-touch-icon-152x152.png",revision:"8cc7ef3bc3aa19c3d8a29a58646d0636"},{url:"apple-touch-icon-120x120.png",revision:"7057fb6fb60df3fcf3cd49883db13be9"},{url:"assets/workflow-DvpyWOk6.js",revision:null},{url:"assets/wifi-DtCZMvdz.js",revision:null},{url:"assets/users-CUx2h4Ml.js",revision:null},{url:"assets/useFetch-DWa3GeJN.js",revision:null},{url:"assets/trash-2-WA_mdBf9.js",revision:null},{url:"assets/task-constants-DXxUAApA.js",revision:null},{url:"assets/status-colors-kQDPD0wO.js",revision:null},{url:"assets/settings-JXcSTf0A.js",revision:null},{url:"assets/scroll-text-DBPeZU4l.js",revision:null},{url:"assets/rotate-ccw-CHaUzlWE.js",revision:null},{url:"assets/plus-ucRIgQZK.js",revision:null},{url:"assets/pencil-DBqi31EH.js",revision:null},{url:"assets/password-CHk45-jw.js",revision:null},{url:"assets/loader-circle-D5ClDQ9h.js",revision:null},{url:"assets/key-Chc2kr14.js",revision:null},{url:"assets/index-3ccyrL7z.css",revision:null},{url:"assets/index-01l9VFB2.js",revision:null},{url:"assets/git-fork-BWs-fYTb.js",revision:null},{url:"assets/file-text-DTpqny43.js",revision:null},{url:"assets/external-link-COzchqIG.js",revision:null},{url:"assets/download-Cd-BBoI7.js",revision:null},{url:"assets/date-RFA7-ZGs.js",revision:null},{url:"assets/copy-DO7PDfZF.js",revision:null},{url:"assets/chevron-right-OQgRbmpb.js",revision:null},{url:"assets/chevron-left-CM3Ljmsh.js",revision:null},{url:"assets/bot-C1cnPjRw.js",revision:null},{url:"assets/arrow-right-Dq2t8ts3.js",revision:null},{url:"assets/arrow-left-CiH58ODj.js",revision:null},{url:"assets/agent-type-options-BztKEaBi.js",revision:null},{url:"assets/WorkerSetupPage-CX2IKTBz.js",revision:null},{url:"assets/WorkerSetupGuidePage-CpWSvLWw.js",revision:null},{url:"assets/WorkerOperationsPage-0fj-txrI.js",revision:null},{url:"assets/WorkerListPage-DRx_FX1c.js",revision:null},{url:"assets/WorkerDetailPage-B5lirrH3.js",revision:null},{url:"assets/TotpSetupPage-BeStxglO.js",revision:null},{url:"assets/Tooltip-CZtlcHYf.js",revision:null},{url:"assets/TokenManage-CL6Dgoac.js",revision:null},{url:"assets/TerminalHomePage-DE4Fra73.js",revision:null},{url:"assets/TaskStatusBadge-fDYhxtHY.js",revision:null},{url:"assets/TaskListPage-Ca0mxJ_o.js",revision:null},{url:"assets/TaskDetailPage-Bgd8Ogvq.js",revision:null},{url:"assets/SkillPage-Bn53Yjiu.js",revision:null},{url:"assets/Skeleton-BWkXyrSG.js",revision:null},{url:"assets/SettingsPage-CZywaGc9.js",revision:null},{url:"assets/Select-DRCu2nu0.js",revision:null},{url:"assets/RemoveMemberConfirmDialog-Do2l0kib.js",revision:null},{url:"assets/QuickAuth-Cds5x6Z3.js",revision:null},{url:"assets/PtyTerminal-DzMsSJAu.js",revision:null},{url:"assets/PtyTerminal-Beg8tuEN.css",revision:null},{url:"assets/ProjectListPage-r28OozXz.js",revision:null},{url:"assets/ProjectDetailPage-CaASFvS0.js",revision:null},{url:"assets/ProfilePage-8kc8fiZV.js",revision:null},{url:"assets/PipelineEditorPage-CdHuwLmJ.js",revision:null},{url:"assets/PipelineConfigPage-CeU0o917.js",revision:null},{url:"assets/PermissionsPage-DvWGCh32.js",revision:null},{url:"assets/OnboardingGuide-Bo4Ljo4i.js",revision:null},{url:"assets/NotFoundPage-4pE6QH1R.js",revision:null},{url:"assets/MetricBar-D9ZLrw38.js",revision:null},{url:"assets/LoginPage-BoXUe_Xx.js",revision:null},{url:"assets/LocalDevelopmentPage-CY7dB3hK.js",revision:null},{url:"assets/LandingPage-DqLbP1Ry.js",revision:null},{url:"assets/InstallationPage-BbXh-Y77.js",revision:null},{url:"assets/InfoRow-D8AsUcSn.js",revision:null},{url:"assets/HomePage-B-rfwBdn.js",revision:null},{url:"assets/EnvVariablesPage-CLafcR2k.js",revision:null},{url:"assets/EmptyState-Q0YM1iFk.js",revision:null},{url:"assets/EditProjectPage-CLPYjvAQ.js",revision:null},{url:"assets/DocsPrimitives-ppeWCX0i.js",revision:null},{url:"assets/DocsLayout-FmrCA5RW.js",revision:null},{url:"assets/DocsIndexPage-BMIn54Zl.js",revision:null},{url:"assets/DeveloperSetupPage-rpsOayJX.js",revision:null},{url:"assets/DeveloperManage-BOzhPppl.js",revision:null},{url:"assets/DevWorkflowPage-CHQifk0Y.js",revision:null},{url:"assets/DeploymentPage-DUlfbHwk.js",revision:null},{url:"assets/CliReferencePage-ChEAiOWL.js",revision:null},{url:"assets/ChangelogPage-DgAkPSte.js",revision:null},{url:"assets/BotSetupPage-DVqBgyjG.js",revision:null},{url:"assets/BotManage-BVx8Zpyb.js",revision:null},{url:"assets/BotIntegrationPage-B4NhIhTq.js",revision:null},{url:"assets/BindPlatformPage-BhC8I1M6.js",revision:null},{url:"assets/AuditLogPage-CSYmdRqM.js",revision:null},{url:"assets/ArchitecturePage-B3NO9ams.js",revision:null},{url:"assets/ApiReferencePage-CU5KWW5b.js",revision:null},{url:"assets/AgentCliPage-C3m17Vxw.js",revision:null},{url:"assets/AdminPage-bj1Ceucs.js",revision:null},{url:"assets/AccessTokensPage-B790MOSI.js",revision:null},{url:"apple-touch-icon-180x180.png",revision:"34c1b155ebc55bee221777f86f4612d8"},{url:"favicon.svg",revision:"e91ea32c7308cc2267ae15a5974a27f8"},{url:"icon-192x192.png",revision:"0bc2b74efb274c01d9eb50f717f4b7cf"},{url:"icon-512x512.png",revision:"74e561c3eb152bbb9cdcb333b5f1f3be"},{url:"icon-maskable-192x192.png",revision:"bf88226fe789dcb35bf89a307d3ba1af"},{url:"icon-maskable-512x512.png",revision:"69ada030d99c4a087bc309c00d716654"},{url:"manifest.webmanifest",revision:"e3100788a89f54481dbd663d57df57a6"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("/index.html"))),s.registerRoute(/^https:\/\/fonts\.googleapis\.com/,new s.CacheFirst({cacheName:"google-fonts-stylesheets",plugins:[]}),"GET"),s.registerRoute(/^https:\/\/fonts\.gstatic\.com/,new s.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new s.ExpirationPlugin({maxEntries:10,maxAgeSeconds:31536e3})]}),"GET")});
1
+ if(!self.define){let s,e={};const l=(l,i)=>(l=new URL(l+".js",i).href,e[l]||new Promise(e=>{if("document"in self){const s=document.createElement("script");s.src=l,s.onload=e,document.head.appendChild(s)}else s=l,importScripts(l),e()}).then(()=>{let s=e[l];if(!s)throw new Error(`Module ${l} didn’t register its module`);return s}));self.define=(i,n)=>{const r=s||("document"in self?document.currentScript.src:"")||location.href;if(e[r])return;let o={};const u=s=>l(s,r),a={module:{uri:r},exports:o,require:u};e[r]=Promise.all(i.map(s=>a[s]||u(s))).then(s=>(n(...s),o))}}define(["./workbox-6e9b121d"],function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"og-image.png",revision:"f1563b4bdc7d1a4ab0aef864b0c2294e"},{url:"index.html",revision:"588e112fc6d280fea595f4d6310282e6"},{url:"icon-maskable-512x512.png",revision:"69ada030d99c4a087bc309c00d716654"},{url:"icon-maskable-192x192.png",revision:"bf88226fe789dcb35bf89a307d3ba1af"},{url:"icon-512x512.png",revision:"74e561c3eb152bbb9cdcb333b5f1f3be"},{url:"icon-192x192.png",revision:"0bc2b74efb274c01d9eb50f717f4b7cf"},{url:"favicon.svg",revision:"e91ea32c7308cc2267ae15a5974a27f8"},{url:"apple-touch-icon-180x180.png",revision:"34c1b155ebc55bee221777f86f4612d8"},{url:"apple-touch-icon-152x152.png",revision:"8cc7ef3bc3aa19c3d8a29a58646d0636"},{url:"apple-touch-icon-120x120.png",revision:"7057fb6fb60df3fcf3cd49883db13be9"},{url:"assets/workflow-Br0aC6fc.js",revision:null},{url:"assets/wifi-DyUmH42s.js",revision:null},{url:"assets/users-cnF1W_5i.js",revision:null},{url:"assets/useFetch-_T-wW8J0.js",revision:null},{url:"assets/trash-2-B5fxIpUx.js",revision:null},{url:"assets/task-constants-C28Dag_x.js",revision:null},{url:"assets/status-colors-CYQlZjBF.js",revision:null},{url:"assets/settings--c2rvWEY.js",revision:null},{url:"assets/scroll-text-cGPnQr3M.js",revision:null},{url:"assets/rotate-ccw-CiTf48Td.js",revision:null},{url:"assets/plus-DLpnTi95.js",revision:null},{url:"assets/pencil-DvVrY4a_.js",revision:null},{url:"assets/password-CHk45-jw.js",revision:null},{url:"assets/loader-circle-PQQXGtgi.js",revision:null},{url:"assets/key-BpF_rjM9.js",revision:null},{url:"assets/index-D_OrDcWf.js",revision:null},{url:"assets/index-3ccyrL7z.css",revision:null},{url:"assets/git-fork-DWSuvIF4.js",revision:null},{url:"assets/file-text-DWEXk0wE.js",revision:null},{url:"assets/external-link-D4FpeC5t.js",revision:null},{url:"assets/download-DziGmRwM.js",revision:null},{url:"assets/date-RFA7-ZGs.js",revision:null},{url:"assets/copy-BsSvzuvN.js",revision:null},{url:"assets/chevron-right-CtCcIQB9.js",revision:null},{url:"assets/chevron-left-C6IUM-8d.js",revision:null},{url:"assets/bot-CvhMANHw.js",revision:null},{url:"assets/arrow-right-vAeX7cF5.js",revision:null},{url:"assets/arrow-left-CIwOL41D.js",revision:null},{url:"assets/agent-type-options-snmZcyAv.js",revision:null},{url:"assets/WorkerSetupPage-D3Jpi9tJ.js",revision:null},{url:"assets/WorkerSetupGuidePage-BVJvCq1d.js",revision:null},{url:"assets/WorkerOperationsPage-DeqjI2So.js",revision:null},{url:"assets/WorkerListPage-ByqfyN10.js",revision:null},{url:"assets/WorkerDetailPage-Du6ZEZAb.js",revision:null},{url:"assets/TotpSetupPage-BBiIpwY3.js",revision:null},{url:"assets/Tooltip-C8VKfixS.js",revision:null},{url:"assets/TokenManage-BiFQC6sW.js",revision:null},{url:"assets/TerminalHomePage-DvUjZD9t.js",revision:null},{url:"assets/TaskStatusBadge-bgFlcooX.js",revision:null},{url:"assets/TaskListPage-ChDkGoRG.js",revision:null},{url:"assets/TaskDetailPage-C4qj7_Be.js",revision:null},{url:"assets/SkillPage-x3K6pR1n.js",revision:null},{url:"assets/Skeleton-BSwNthrI.js",revision:null},{url:"assets/SettingsPage-CyrpPfpE.js",revision:null},{url:"assets/Select-C9mH7t3y.js",revision:null},{url:"assets/RemoveMemberConfirmDialog-7CNTS9OT.js",revision:null},{url:"assets/QuickAuth-Dv8THFX-.js",revision:null},{url:"assets/PtyTerminal-Beg8tuEN.css",revision:null},{url:"assets/PtyTerminal-BCi4nF3w.js",revision:null},{url:"assets/ProjectListPage-yOkjg0aA.js",revision:null},{url:"assets/ProjectDetailPage-D3tG00hE.js",revision:null},{url:"assets/ProfilePage-By17-B9R.js",revision:null},{url:"assets/PipelineEditorPage-zNzVbcEY.js",revision:null},{url:"assets/PipelineConfigPage-BPP3hqfX.js",revision:null},{url:"assets/PermissionsPage-DhIPVozc.js",revision:null},{url:"assets/OnboardingGuide-j6HspxdC.js",revision:null},{url:"assets/NotFoundPage-CTB5zYpq.js",revision:null},{url:"assets/MetricBar-CBh2ydOP.js",revision:null},{url:"assets/LoginPage-D0xxVRbd.js",revision:null},{url:"assets/LocalDevelopmentPage-CzGh_CyA.js",revision:null},{url:"assets/LandingPage-h4gKySBf.js",revision:null},{url:"assets/InstallationPage-DbN30z1N.js",revision:null},{url:"assets/InfoRow-CArRH_uK.js",revision:null},{url:"assets/HomePage-DGlnGz9w.js",revision:null},{url:"assets/EnvVariablesPage-BO3O-emk.js",revision:null},{url:"assets/EmptyState-BwOJcw-7.js",revision:null},{url:"assets/EditProjectPage-DtBVrVqX.js",revision:null},{url:"assets/DocsPrimitives-C-MCNelj.js",revision:null},{url:"assets/DocsLayout-C21J5c4W.js",revision:null},{url:"assets/DocsIndexPage-BQ1p1z73.js",revision:null},{url:"assets/DeveloperSetupPage-ZxzN_i4I.js",revision:null},{url:"assets/DeveloperManage-DvAPUGuF.js",revision:null},{url:"assets/DevWorkflowPage-O7m2Y5RK.js",revision:null},{url:"assets/DeploymentPage-5MdRHTAa.js",revision:null},{url:"assets/CliReferencePage-BY4jRKIa.js",revision:null},{url:"assets/ChangelogPage-DuEv-8dO.js",revision:null},{url:"assets/BotSetupPage-DoLW98NA.js",revision:null},{url:"assets/BotManage-D-lenZUf.js",revision:null},{url:"assets/BotIntegrationPage-SVH7cMHP.js",revision:null},{url:"assets/BindPlatformPage-CaN-9QLb.js",revision:null},{url:"assets/AuditLogPage-w_7Nj4Rv.js",revision:null},{url:"assets/ArchitecturePage-Ce0QnFXC.js",revision:null},{url:"assets/ApiReferencePage-DGncLrQ3.js",revision:null},{url:"assets/AgentCliPage-BjvJPqFg.js",revision:null},{url:"assets/AdminPage-BBswldyj.js",revision:null},{url:"assets/AccessTokensPage-DR-poRS4.js",revision:null},{url:"apple-touch-icon-180x180.png",revision:"34c1b155ebc55bee221777f86f4612d8"},{url:"favicon.svg",revision:"e91ea32c7308cc2267ae15a5974a27f8"},{url:"icon-192x192.png",revision:"0bc2b74efb274c01d9eb50f717f4b7cf"},{url:"icon-512x512.png",revision:"74e561c3eb152bbb9cdcb333b5f1f3be"},{url:"icon-maskable-192x192.png",revision:"bf88226fe789dcb35bf89a307d3ba1af"},{url:"icon-maskable-512x512.png",revision:"69ada030d99c4a087bc309c00d716654"},{url:"manifest.webmanifest",revision:"e3100788a89f54481dbd663d57df57a6"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("/index.html"))),s.registerRoute(/^https:\/\/fonts\.googleapis\.com/,new s.CacheFirst({cacheName:"google-fonts-stylesheets",plugins:[]}),"GET"),s.registerRoute(/^https:\/\/fonts\.gstatic\.com/,new s.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new s.ExpirationPlugin({maxEntries:10,maxAgeSeconds:31536e3})]}),"GET")});
@@ -1 +0,0 @@
1
- import{R as pe,f as H,a as z,p as u,j as e,l as Z,n as me,u as ue,i as be,r,h as D,X as ve,k as he,w as fe,H as ge,t as U,x as ye,y as W,m as je}from"./index-01l9VFB2.js";import{a as ke,u as V}from"./task-constants-DXxUAApA.js";import{T as ee}from"./TaskStatusBadge-fDYhxtHY.js";import{f as te}from"./date-RFA7-ZGs.js";import{T as Ne}from"./Tooltip-CZtlcHYf.js";import{G as se}from"./git-fork-BWs-fYTb.js";import{S as F}from"./Select-DRCu2nu0.js";import{a as Ce}from"./agent-type-options-BztKEaBi.js";import{C as we}from"./copy-DO7PDfZF.js";import{E as X}from"./EmptyState-Q0YM1iFk.js";import{T as Y}from"./Skeleton-BWkXyrSG.js";import{P as Se}from"./plus-ucRIgQZK.js";import{C as _e}from"./chevron-left-CM3Ljmsh.js";import{C as Te}from"./chevron-right-OQgRbmpb.js";import"./status-colors-kQDPD0wO.js";const Ee=pe.memo(function({task:s}){const d=H(),{t:i}=z(),x=(a,v)=>i(`common.${a}`,{n:v}),c=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(Ne,{content:me(s),children:Z(s)})}),e.jsx("td",{className:"py-3 pr-4",children:e.jsx(ee,{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:[te(s.createdAt,x),c&&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:i("tasks.fork_task"),children:e.jsx(se,{className:"h-3 w-3"})})]})})]})});function De({isOpen:n,onClose:s,projects:d,projectsLoading:i,onSubmit:x,isSubmitting:c}){const{t:a}=z();ue(o=>o.user);const v=be(),[p,L]=r.useState(""),[b,K]=r.useState(""),[m,P]=r.useState("feat"),[k,C]=r.useState(""),[w,S]=r.useState(""),[y,_]=r.useState(""),[h,j]=r.useState(""),[O,B]=r.useState([]),[A,N]=r.useState(""),I=d.find(o=>o.key===p),M=Ce(o=>o,I==null?void 0:I.agentType);r.useEffect(()=>{if(!n||(L(""),K(""),P("feat"),C(""),S(""),_(""),j(""),N(""),!v))return;const o=new AbortController;return D.get("admin/developers",{signal:o.signal}).json().then(B).catch(()=>{}),()=>o.abort()},[n,v]),r.useEffect(()=>{if(!n)return;function o(f){f.key==="Escape"&&s()}return document.addEventListener("keydown",o),()=>document.removeEventListener("keydown",o)},[n,s]);async function T(o){if(o.preventDefault(),N(""),!p||!b.trim()){N(a("tasks.project_and_description_required"));return}try{await x({projectKey:p,description:b.trim(),workerId:y||void 0,developerId:h?Number(h):void 0,taskType:m,branchSlug:w.trim()||void 0,agentType:k||void 0})}catch(f){const q=f instanceof Error?f.message:a("tasks.failed_to_create_task");N(q)}}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(ve,{className:"h-4 w-4"})})]}),e.jsxs("form",{onSubmit:T,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(F,{value:p,onChange:L,options:d.map(o=>({value:o.key,label:o.name})),placeholder:a(i?"common.loading":"tasks.select_project"),disabled:i})]}),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(F,{value:m,onChange:P,options:ke})]}),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(F,{value:k,onChange:C,options:M})]}),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:b,onChange:o=>K(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:y,onChange:o=>_(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)]"})]}),v&&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(F,{value:h,onChange:j,options:O.map(o=>({value:String(o.id),label:o.name})),placeholder:a("tasks.select_developer")})]}),A&&e.jsx("div",{className:"rounded-[4px] bg-[#2a1515] border border-[var(--destructive)]/30 px-3 py-2 text-xs text-[var(--destructive)]",children:A})]}),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:c||!p||!b.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(c?"common.creating":"tasks.create_task")})]})]})]})}):null}function Fe({isOpen:n,onClose:s,onForceCreate:d,onViewExisting:i,similarTask:x,isLoading:c}){const{t:a}=z();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:v=>v.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:c,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:c?"not-allowed":"pointer",opacity:c?.7:1,transition:"color 0.15s, border-color 0.15s"},children:a("common.cancel")}),e.jsx("button",{type:"button",onClick:()=>i(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:c,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:c?"not-allowed":"pointer",opacity:c?.7:1},children:a(c?"common.creating":"tasks.dedup_create_anyway")})]})]})})}function Pe({task:n}){const s=H(),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," ",Z(n)]}),e.jsxs("span",{className:"flex items-center gap-1.5 shrink-0",children:[d&&e.jsx("button",{onClick:i=>{i.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(se,{className:"h-3 w-3"})}),e.jsx(ee,{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:te(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 Ve(){const n=H(),{t:s}=z(),{tasks:d,loading:i,fetchTasks:x}=V(),c=he(t=>t.taskSeq),[a,v]=r.useState("all"),[p,L]=r.useState(""),[b,K]=r.useState(""),[m,P]=r.useState(""),[k,C]=r.useState(void 0),[w,S]=r.useState([]),y=V(t=>t.nextCursor),[_,h]=r.useState(!1);fe(r.useMemo(()=>e.jsxs("button",{onClick:()=>h(!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[j,O]=r.useState([]),[B,A]=r.useState(!1),[N,I]=r.useState([]),[M,T]=r.useState(!1),[o,f]=r.useState(!1),[q,re]=r.useState(null),[$,R]=r.useState(null),J=r.useCallback(t=>{const l={limit:String(Ie)};return a!=="all"&&(l.status=a),p&&(l.projectKey=p),b&&(l.developerId=b),t&&(l.cursor=t),l},[a,p,b]);r.useEffect(()=>{x(J(k))},[J,k,x,c]),r.useEffect(()=>{C(void 0),S([])},[a,p,b]),r.useEffect(()=>{let t=!1;return(async()=>{try{const[g,xe]=await Promise.all([D.get("web/projects").json(),D.get("web/projects/-/developers").json()]);if(t)return;O(g),I(xe)}catch{}})(),()=>{t=!0}},[]),r.useEffect(()=>{if(!_||j.length>0)return;A(!0);let t=!1;return(async()=>{try{const g=await D.get("web/projects").json();t||O(g)}catch{}finally{t||A(!1)}})(),()=>{t=!0}},[_,j.length]);const ae=r.useCallback(async t=>{T(!0);try{const l=await D.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}}).json();h(!1),n(`/tasks/${l.task.id}`)}catch(l){if(l instanceof ge&&l.response.status===409){try{const g=await l.response.json();if(g.confirmRequired){re({id:g.confirmRequired.taskId,description:g.confirmRequired.message,status:"active"}),R(t),h(!1),f(!0);return}}catch{}U.error(s("tasks.similar_task_exists"))}else{const g=l instanceof Error?l.message:String(l);U.error(g)}}finally{T(!1)}},[n]),oe=r.useCallback(async()=>{if($){T(!0);try{const t=await D.post("web/tasks",{json:{...$,force:!0}}).json();f(!1),R(null),n(`/tasks/${t.task.id}`)}finally{T(!1)}}},[$,n]),E=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(()=>{y&&(S(t=>[...t,k??""]),C(y))},[y,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})},[]),ie=w.length+1,ce=r.useMemo(()=>[{value:"",label:s("tasks.filter_project")},...j.map(t=>({value:t.key,label:t.name}))],[j,s]),de=r.useMemo(()=>[{value:"",label:s("tasks.filter_developer")},...N.map(t=>({value:String(t.id),label:t.name}))],[N,s]),G=s(m?"tasks.try_adjusting_search":"tasks.create_first_task"),Q=m?void 0:e.jsx("button",{onClick:()=>h(!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:()=>v(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=>P(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:()=>P(""),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(F,{value:p,onChange:L,options:ce,className:"md:w-40"}),e.jsx(F,{value:b,onChange:K,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:[i&&E.length===0&&e.jsx("tr",{children:e.jsx("td",{colSpan:7,className:"p-4",children:e.jsx(Y,{rows:5})})}),!i&&E.length===0&&e.jsx("tr",{children:e.jsx("td",{colSpan:7,className:"p-4",children:e.jsx(X,{icon:W,title:s("tasks.no_tasks_found"),description:G,action:Q})})}),E.map(t=>e.jsx(Ee,{task:t},t.id))]})]})}),e.jsxs("div",{className:"flex flex-col gap-2 md:hidden",children:[i&&E.length===0&&e.jsx("div",{className:"p-4",children:e.jsx(Y,{rows:5})}),!i&&E.length===0&&e.jsx(X,{icon:W,title:s("tasks.no_tasks_found"),description:G,action:Q}),E.map(t=>e.jsx(Pe,{task:t},t.id))]}),(w.length>0||y)&&e.jsxs("div",{className:"mt-6 flex items-center justify-between",children:[e.jsxs("span",{className:"text-xs text-[var(--text-muted)]",children:["// page ",ie]}),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:!y,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:()=>h(!1),projects:j,projectsLoading:B,onSubmit:ae,isSubmitting:M}),e.jsx(Fe,{isOpen:o,onClose:()=>{f(!1),R(null)},onForceCreate:oe,onViewExisting:t=>{f(!1),R(null),n(`/tasks/${t}`)},similarTask:q,isLoading:M})]})}export{Ve as default};
@@ -1,11 +0,0 @@
1
- import{c as Z,o as ce,h as A,p as N,a as M,r as c,k as z,q as oe,s as le,j as e,X as ee,v as de,f as xe,l as me,m as ue}from"./index-01l9VFB2.js";import{g as te,P as pe,H as he,C as fe}from"./PtyTerminal-DzMsSJAu.js";import{T as B,u as ve,a as G,g as ge}from"./task-constants-DXxUAApA.js";import{i as J,O as se}from"./OnboardingGuide-Bo4Ljo4i.js";import{S as C,C as be}from"./Select-DRCu2nu0.js";import{a as ae}from"./status-colors-kQDPD0wO.js";import{a as je}from"./date-RFA7-ZGs.js";import{g as ke}from"./agent-type-options-BztKEaBi.js";import{u as ne}from"./useFetch-DWa3GeJN.js";import{P as $}from"./plus-ucRIgQZK.js";import{R as ye}from"./rotate-ccw-CHaUzlWE.js";import{W as Ne}from"./wifi-DtCZMvdz.js";import"./chevron-right-OQgRbmpb.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=Z("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/**
7
- * @license lucide-react v0.469.0 - ISC
8
- *
9
- * This source code is licensed under the ISC license.
10
- * See the LICENSE file in the root directory of this source tree.
11
- */const we=Z("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"}]]),re="overlord_home_terminal";function Se(){try{const t=localStorage.getItem(re);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(re,a))}const V=Se(),Ce=new Set([N.QUEUED,N.ASSIGNED,N.RUNNING,N.SUSPENDED]);let H=!1;const _e=ce((t,a)=>({pinnedTaskIds:V.pinnedTaskIds,activeTaskId:V.activeTaskId,taskMetas:{},stageConfirm:null,loading:!1,setActiveTask:s=>{t({activeTaskId:s}),U({pinnedTaskIds:a().pinnedTaskIds,activeTaskId:s})},pinTask:s=>{const{pinnedTaskIds:n}=a();if(n.includes(s))return;const o=[...n,s];t({pinnedTaskIds:o}),U({pinnedTaskIds:o,activeTaskId:a().activeTaskId})},unpinTask:s=>{const{pinnedTaskIds:n,activeTaskId:o,taskMetas:m}=a(),r=n.filter(h=>h!==s),l=o===s?r[0]??null:o,{[s]:p,...i}=m;t({pinnedTaskIds:r,activeTaskId:l,taskMetas:i}),U({pinnedTaskIds:r,activeTaskId:l})},loadActiveTasks:async()=>{if(!H){H=!0,t({loading:!0});try{const n=(await A.get("web/tasks",{searchParams:{limit:"30"}}).json()).data.filter(i=>Ce.has(i.status)),o={};for(const i of n)o[i.id]={id:i.id,name:i.name,description:i.description,status:i.status,projectKey:i.projectKey,workerName:i.workerName??null,agentType:te(i),currentStage:i.currentStage,currentSessionId:i.currentSessionId,updatedAt:i.updatedAt};const r=[...n].sort((i,h)=>h.updatedAt.localeCompare(i.updatedAt)).map(i=>i.id),{activeTaskId:l}=a(),p=l&&r.includes(l)?l:r[0]??null;t({taskMetas:o,pinnedTaskIds:r,activeTaskId:p}),U({pinnedTaskIds:r,activeTaskId:p})}catch{}finally{H=!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:o}=a(),m=o[s];m&&t({taskMetas:{...o,[s]:{...m,...n}}})}}));function Ie(){const[t,a]=c.useState(()=>J());c.useEffect(()=>{const n=()=>a(!0),o=()=>a(J());return window.addEventListener("onboarding-dismissed",n),window.addEventListener("storage",o),()=>{window.removeEventListener("onboarding-dismissed",n),window.removeEventListener("storage",o)}},[]);const{data:s}=ne(()=>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 Ee({taskId:t,confirm:a,onSubmitted:s}){const{t:n}=M(),[o,m]=c.useState(a.timeout),[r,l]=c.useState(!1);c.useEffect(()=>{m(a.timeout);const i=setInterval(()=>{m(h=>h<=1?(clearInterval(i),0):h-1)},1e3);return()=>clearInterval(i)},[a.timeout,a.stageName]);const p=c.useCallback(async i=>{l(!0);try{await A.post(`web/tasks/${t}/confirm-stage`,{json:{stageName:a.stageName,approved:i}}),s()}catch{}finally{l(!1)}},[t,a.stageName,s]);return 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(fe,{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(o)})]}),e.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[e.jsx("button",{onClick:()=>p(!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:()=>p(!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")})]})]})}function Ae({projectKey:t,onProjectChange:a,onCreated:s}){const{t:n}=M(),o=ve(x=>x.createTask),[m,r]=c.useState(""),[l,p]=c.useState("feat"),[i,h]=c.useState(void 0),[f,_]=c.useState(!1),[I,E]=c.useState(!1),[F,D]=c.useState(!1),{data:T}=ne(()=>A.get("web/projects").json(),[]),b=c.useMemo(()=>{const x=(T??[]).map(R=>({value:R.key,label:R.key}));return[{value:"",label:n("terminal_home.all_projects")},...x]},[T,n]),v=c.useMemo(()=>(T??[]).find(x=>x.key===t)??null,[T,t]),k=c.useMemo(()=>ke(x=>x,v==null?void 0:v.agentType),[v==null?void 0:v.agentType]),w=c.useRef(!1);c.useEffect(()=>{if(!w.current){if(t){w.current=!0;return}b.length>1&&(a(b[1].value),w.current=!0)}},[t,b,a]),c.useEffect(()=>{h(void 0)},[t]);const u=i??(v==null?void 0:v.agentType)??"",O=c.useCallback(x=>{if(!v||x===v.agentType){h(void 0);return}h(x)},[v]),y=!!t&&!!m.trim();function g(){y&&E(!0)}async function S(){if(E(!1),!!y){_(!0);try{const x=await o({projectKey:t,description:m.trim(),taskType:l,agentType:i||void 0});r(""),s(x.id)}catch{}finally{_(!1)}}}const L=n("terminal_home.confirm_create_message").replace("{taskType}",l).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(C,{value:t,onChange:a,options:b,placeholder:n("terminal_home.select_project")})}),e.jsx("div",{className:"w-[100px]",children:e.jsx(C,{value:l,onChange:p,options:G})}),e.jsx("div",{className:"w-[120px]",children:e.jsx(C,{value:u,onChange:O,options:k,placeholder:n("tasks.form_agent_type"),disabled:f||!t})}),e.jsx("input",{type:"text",value:m,onChange:x=>r(x.target.value),onKeyDown:x=>x.key==="Enter"&&g(),placeholder:n("terminal_home.task_description_placeholder"),className:P,disabled:f}),e.jsxs("button",{onClick:g,disabled:f||!y,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(f?"common.creating":"terminal_home.new_task")]})]}),e.jsx("div",{className:"md:hidden border-b border-[var(--border)] bg-[var(--bg-card)]",children:F?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(C,{value:t,onChange:a,options:b,placeholder:n("terminal_home.select_project")})}),e.jsx("div",{className:"w-[100px]",children:e.jsx(C,{value:l,onChange:p,options:G})}),e.jsx("div",{className:"w-[120px]",children:e.jsx(C,{value:u,onChange:O,options:k,placeholder:n("tasks.form_agent_type"),disabled:f||!t})}),e.jsx("button",{onClick:()=>D(!1),className:"p-1 text-[var(--text-muted)]",children:e.jsx(ee,{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"&&g(),placeholder:n("terminal_home.task_description_placeholder"),className:P,disabled:f}),e.jsx("button",{onClick:g,disabled:f||!y,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:I,onClose:()=>E(!1),onConfirm:S,title:n("terminal_home.confirm_create_title"),message:L,confirmVariant:"accent",confirmLabel:n("terminal_home.new_task"),isLoading:f})]})}function Y({status:t,size:a}){const s=t===N.SUSPENDED,n=ae(t),o=a==="sm"?"h-1.5 w-1.5":"h-2 w-2";return e.jsx("span",{className:`${o} shrink-0 rounded-full ${s?"animate-pulse":""}`,style:{backgroundColor:s?"var(--warning)":n}})}function Me({tasks:t,activeId:a,onSelect:s,onUnpin:n,children:o}){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 l=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 ${l?"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:ue(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:p=>{p.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(ee,{className:"h-3 w-3"})}),e.jsx("button",{onClick:p=>{p.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 l=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 ${l?"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)})}),o]})]})}function De({task:t,takeoverState:a,onTakeover:s,onRelease:n}){const o=ae(t.status),m=ge(t.agentType),r=a==="manual",l=te(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:o},children:[t.status.toLowerCase()," / ",m]}),t.currentStage&&e.jsxs("span",{className:"text-[11px] text-[var(--text-muted)]",children:["// ",t.currentStage]}),e.jsxs("span",{className:"text-[11px] text-[var(--text-muted)]",children:["agent: ",l]}),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",children:!B.includes(t.status)&&(r?e.jsxs("button",{onClick:n,className:"flex items-center gap-1.5 rounded-[4px] px-2.5 py-0.5 text-[11px] font-medium text-[var(--accent)]",style:{backgroundColor:"rgba(34,197,94,0.12)"},children:[e.jsx(ye,{className:"h-3 w-3"}),e.jsx("span",{className:"hidden md:inline",children:"restore auto"})]}):e.jsxs("button",{onClick:s,disabled:a==="requesting",className:"flex items-center gap-1.5 rounded-[4px] px-2.5 py-0.5 text-[11px] font-medium text-[var(--warning)] disabled:opacity-50",style:{backgroundColor:"rgba(245,158,11,0.12)"},children:[e.jsx(he,{className:"h-3 w-3"}),e.jsx("span",{className:"hidden md:inline",children:"take over"})]}))})]})}function Oe({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(we,{className:"h-2.5 w-2.5"}),s?"connected":a]})]})}function K({onboardingData:t}){const[a,s]=c.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(Te,{className:"h-3 w-3 text-[var(--text-muted)]"})]}),e.jsx("div",{className:"max-h-[300px] overflow-y-auto",children:e.jsx(se,{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(be,{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(se,{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 Qe(){const{t}=M(),{pinnedTaskIds:a,activeTaskId:s,taskMetas:n,stageConfirm:o,loading:m,setActiveTask:r,pinTask:l,unpinTask:p,loadActiveTasks:i,fetchStageConfirm:h,clearStageConfirm:f,updateTaskMeta:_}=_e(),I=c.useRef(null),[E,F]=c.useState("disconnected"),[D,T]=c.useState("auto"),[b,v]=c.useState(""),k=z(d=>d.lastEvent),w=z(d=>d.status),u=s?n[s]??null:null,O=u?B.includes(u.status):!1,y=c.useRef(!1);c.useEffect(()=>{!y.current&&u&&(v(u.projectKey),y.current=!0)},[u]);const g=c.useMemo(()=>{const d=a.map(j=>n[j]).filter(Boolean);return b?d.filter(j=>j.projectKey===b):d},[a,n,b]);c.useEffect(()=>{g.length>0&&s&&!g.some(d=>d.id===s)&&r(g[0].id)},[g,s,r]);const S=Ie();oe(u?le(u):null),c.useEffect(()=>{i()},[i]),c.useEffect(()=>{s&&(u==null?void 0:u.status)===N.SUSPENDED?h(s):f()},[s,u==null?void 0:u.status,h,f]),c.useEffect(()=>{if(k){if(k.event==="task_status_changed"){const{taskId:d,status:j,currentStage:W}=k,q={status:j,updatedAt:new Date().toISOString()};W!==void 0&&(q.currentStage=W),_(d,q),j===N.SUSPENDED&&d===s&&h(d),B.includes(j)&&d===s&&f()}k.event==="task_created"&&i()}},[k,s,h,f,_,i]),c.useEffect(()=>{if(w==="connected")return;const j=setInterval(()=>{document.visibilityState!=="hidden"&&i()},15e3);return()=>clearInterval(j)},[w,i]);const L=c.useCallback(d=>{l(d),r(d),i()},[l,r,i]),P=c.useCallback(()=>{f(),i()},[f,i]),x=c.useCallback(()=>{var d;(d=I.current)==null||d.requestTakeover()},[]),R=c.useCallback(()=>{var d;(d=I.current)==null||d.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 ie=g.length>0;return e.jsxs("div",{className:"flex h-full flex-col overflow-hidden",children:[e.jsx(Ae,{projectKey:b,onProjectChange:v,onCreated:L}),e.jsx("div",{className:"flex flex-col md:flex-row flex-1 overflow-hidden",children:ie?e.jsxs(e.Fragment,{children:[e.jsx(Me,{tasks:g,activeId:s,onSelect:r,onUnpin:p,children:e.jsx("div",{className:"md:hidden",children:e.jsx(K,{onboardingData:S})})}),e.jsx("div",{className:"flex flex-1 flex-col overflow-hidden",children:u?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"hidden md:block",children:e.jsx(K,{onboardingData:S})}),e.jsx(De,{task:u,takeoverState:D,onTakeover:x,onRelease:R}),o&&s&&e.jsx(Ee,{taskId:s,confirm:o,onSubmitted:P}),e.jsx("div",{className:"flex-1 min-h-0 overflow-hidden",children:e.jsx(pe,{taskId:s,sessionId:u.currentSessionId??void 0,taskFinished:O,onStatusChange:F,onTakeoverChange:T,ref:I},s)}),e.jsx(Oe,{task:u,ptyStatus:E})]}):e.jsx(X,{onboardingData:S})})]}):e.jsx(X,{onboardingData:S})})]})}export{Qe as default};