copilot-operator 0.1.41 → 0.1.43

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 (67) hide show
  1. package/dist/src/api/operator.controller.js +159 -6
  2. package/dist/src/api/operator.service.js +417 -10
  3. package/dist/src/api/server.js +16 -0
  4. package/dist/src/cli.js +12 -0
  5. package/dist/src/config/schema.js +17 -0
  6. package/dist/src/orchestrator/planMode.js +102 -0
  7. package/dist/src/orchestrator/review.js +8 -4
  8. package/dist/src/orchestrator/taskRunner.js +246 -40
  9. package/dist/src/plan/brief.js +69 -20
  10. package/dist/src/plan/changes.js +217 -0
  11. package/dist/src/plan/importPlan.js +2 -0
  12. package/dist/src/plan/schema.js +11 -1
  13. package/dist/src/plan/systemGuide.js +790 -14
  14. package/dist/src/protocol/parser.js +26 -2
  15. package/dist/src/protocol/replySchema.js +28 -4
  16. package/dist/src/session/compose.js +76 -7
  17. package/dist/src/session/exports.js +1 -0
  18. package/dist/src/session/model.js +38 -0
  19. package/dist/src/session/store.js +90 -3
  20. package/dist/src/vcs/startChoice.js +80 -8
  21. package/dist/src/vcs/taskVcs.js +126 -8
  22. package/dist/web/404.html +2 -2
  23. package/dist/web/_next/static/WmzBz4QN36pcz4PL_cfEW/_buildManifest.js +1 -0
  24. package/dist/web/_next/static/chunks/499-751e0be9d4f86e2d.js +1 -0
  25. package/dist/web/_next/static/chunks/549-2415dd26f4e53d07.js +1 -0
  26. package/dist/web/_next/static/chunks/699-9d031f8c145a0465.js +1 -0
  27. package/dist/web/_next/static/chunks/867-aea30f560bc18eaf.js +1 -0
  28. package/dist/web/_next/static/chunks/897-5a34109533c3da50.js +1 -0
  29. package/dist/web/_next/static/chunks/app/defaults/page-56134fbb8cc7554f.js +1 -0
  30. package/dist/web/_next/static/chunks/app/history/page-0bb537407fed5944.js +1 -0
  31. package/dist/web/_next/static/chunks/app/import/{page-999d6cd958989723.js → page-8ef75fc08638e75f.js} +1 -1
  32. package/dist/web/_next/static/chunks/app/layout-dc602b727480a653.js +1 -0
  33. package/dist/web/_next/static/chunks/app/page-d73a8ff300862cd8.js +1 -0
  34. package/dist/web/_next/static/chunks/app/{page-e557d58476ae6383.js → sessions/page-28376d2e4a9b4738.js} +1 -1
  35. package/dist/web/_next/static/chunks/app/sessions/view/page-afc235a9171535d8.js +1 -0
  36. package/dist/web/_next/static/css/{cea7913ba416dbb7.css → 72c85e4322c21223.css} +1 -1
  37. package/dist/web/appearance.html +2 -2
  38. package/dist/web/appearance.txt +25 -28
  39. package/dist/web/defaults.html +2 -2
  40. package/dist/web/defaults.txt +25 -28
  41. package/dist/web/history.html +2 -2
  42. package/dist/web/history.txt +25 -28
  43. package/dist/web/import.html +2 -2
  44. package/dist/web/import.txt +25 -28
  45. package/dist/web/index.html +2 -2
  46. package/dist/web/index.txt +25 -28
  47. package/dist/web/level1.html +2 -2
  48. package/dist/web/level1.txt +25 -28
  49. package/dist/web/presets.html +3 -3
  50. package/dist/web/presets.txt +25 -28
  51. package/dist/web/sessions/view.html +2 -2
  52. package/dist/web/sessions/view.txt +25 -28
  53. package/dist/web/sessions.html +16 -0
  54. package/dist/web/sessions.txt +26 -0
  55. package/dist/web/system.html +2 -2
  56. package/dist/web/system.txt +25 -28
  57. package/package.json +161 -158
  58. package/dist/web/_next/static/-htN5GTSrd3W3f5j_QC2y/_buildManifest.js +0 -1
  59. package/dist/web/_next/static/chunks/499-28e118e33ce07935.js +0 -1
  60. package/dist/web/_next/static/chunks/549-f295c8429e83b25b.js +0 -1
  61. package/dist/web/_next/static/chunks/584-578be94a0786334b.js +0 -1
  62. package/dist/web/_next/static/chunks/867-8dc5bbb092ca2c5c.js +0 -1
  63. package/dist/web/_next/static/chunks/app/defaults/page-879158e9e550eea7.js +0 -1
  64. package/dist/web/_next/static/chunks/app/history/page-9f69ccde726c9be2.js +0 -1
  65. package/dist/web/_next/static/chunks/app/layout-73f28bc065a46ed3.js +0 -1
  66. package/dist/web/_next/static/chunks/app/sessions/view/page-0485ee7f781156ec.js +0 -1
  67. /package/dist/web/_next/static/{-htN5GTSrd3W3f5j_QC2y → WmzBz4QN36pcz4PL_cfEW}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{1702:(e,s,a)=>{"use strict";var t=a(9962);a.o(t,"usePathname")&&a.d(s,{usePathname:function(){return t.usePathname}}),a.o(t,"useRouter")&&a.d(s,{useRouter:function(){return t.useRouter}}),a.o(t,"useSearchParams")&&a.d(s,{useSearchParams:function(){return t.useSearchParams}})},4455:(e,s,a)=>{"use strict";a.r(s),a.d(s,{default:()=>J});var t=a(3365),n=a(1521),l=a(8197),i=a.n(l),r=a(5549),c=a(7527),d=a(867);function o(e){let{view:s,sessions:a,selected:n,onOpen:l,onChange:i}=e;return"files"===s?(0,t.jsx)(b,{sessions:a,selected:n,onOpen:l}):"commits"===s?(0,t.jsx)(p,{sessions:a,selected:n,onOpen:l}):(0,t.jsx)(h,{sessions:a,selected:n,onOpen:l,onChange:i})}function u(e){let{title:s,children:a}=e;return(0,t.jsxs)("div",{className:"wb-side-head",children:[(0,t.jsx)("h2",{children:s}),(0,t.jsx)("span",{className:"grow"}),a]})}function h(e){let{sessions:s,selected:a,onOpen:l,onChange:r}=e,{t:c}=(0,d.kj)(),[o,h]=(0,n.useState)(new Set),[m,b]=(0,n.useState)(""),p=m.trim().toLowerCase();return(0,t.jsxs)("div",{className:"wb-tree",children:[(0,t.jsxs)(u,{title:c("wb.sessions"),children:[(0,t.jsx)(i(),{className:"wb-icon-btn",href:"/sessions#new-session",title:c("wb.newSession"),"aria-label":c("wb.newSession"),children:"+"}),(0,t.jsx)(i(),{className:"wb-icon-btn",href:"/import",title:c("wb.startPlan"),"aria-label":c("wb.startPlan"),children:"⇩"}),(0,t.jsx)("button",{type:"button",className:"wb-icon-btn",onClick:r,title:c("wb.refresh"),"aria-label":c("wb.refresh"),children:"↻"})]}),(0,t.jsx)("div",{className:"wb-filter",children:(0,t.jsx)("input",{type:"search","aria-label":c("wb.filter"),placeholder:c("wb.filter"),value:m,onChange:e=>b(e.target.value)})}),s?0===s.length?(0,t.jsxs)("p",{className:"muted small wb-pad",children:[c("wb.noSessions")," ",(0,t.jsx)(i(),{href:"/import",children:c("wb.startPlan")})]}):(0,t.jsx)("ul",{className:"wb-tree-list",role:"tree","aria-label":c("wb.sessions"),children:s.map(e=>{let s=e.tasks.filter(s=>!p||s.title.toLowerCase().includes(p)||e.name.toLowerCase().includes(p));if(p&&0===s.length)return null;let n=!o.has(e.id)||!!p,i=e.tasks.filter(e=>"done"===e.status).length;return(0,t.jsxs)("li",{role:"treeitem","aria-expanded":n,"aria-selected":a.sessionId===e.id&&!a.taskId,children:[(0,t.jsxs)("div",{className:"wb-row session".concat(a.sessionId!==e.id||a.taskId?"":" sel"),children:[(0,t.jsx)("button",{type:"button",className:"wb-chev","aria-label":n?c("wb.collapse",{name:e.name}):c("wb.expand",{name:e.name}),onClick:()=>h(s=>{let a=new Set(s);return a.has(e.id)?a.delete(e.id):a.add(e.id),a}),children:n?"▾":"▸"}),(0,t.jsxs)("button",{type:"button",className:"wb-row-main",onClick:()=>l({kind:"session",sessionId:e.id}),children:[(0,t.jsx)("span",{className:"wb-row-name",children:e.name}),e.running&&(0,t.jsx)("span",{className:"wb-live",title:c("wb.running"),"aria-label":c("wb.running")}),(0,t.jsxs)("span",{className:"wb-count",children:[i,"/",e.tasks.length]})]})]}),n&&(0,t.jsx)("ul",{role:"group",children:s.map(s=>{var n;let i=e.tasks.indexOf(s)+1,r=a.taskId===s.id;return(0,t.jsx)("li",{role:"treeitem","aria-selected":r,children:(0,t.jsxs)("button",{type:"button",className:"wb-row task".concat(r?" sel":""),onClick:()=>l({kind:"task",sessionId:e.id,taskId:s.id}),title:s.title,children:[(0,t.jsx)(Y,{status:s.status}),(0,t.jsxs)("span",{className:"wb-num",children:[i,"."]}),(0,t.jsx)("span",{className:"wb-row-name",children:s.title}),(null!=(n=s.attempt)?n:1)>1&&(0,t.jsxs)("span",{className:"wb-count",children:["a",s.attempt]})]})},s.id)})})]},e.id)})}):(0,t.jsx)("p",{className:"muted small wb-pad",children:c("wb.loading")})]})}function m(e,s){var a;return null!=(a=null==e?void 0:e.find(e=>e.id===s.sessionId))?a:null==e?void 0:e.find(e=>{var s;return(null==(s=e.vcs)?void 0:s.enabled)&&e.vcs.repoDir})}function b(e){let{sessions:s,selected:a,onOpen:l}=e,{t:i}=(0,d.kj)(),c=m(s,a),[o,h]=(0,n.useState)({}),[b,p]=(0,n.useState)(new Set([""])),w=a.sessionId===(null==c?void 0:c.id)?a.taskId:void 0,x=e=>{c&&(h(s=>({...s,[e]:"loading"})),r.FH.repoTree(c.id,e,w).then(s=>h(a=>({...a,[e]:s}))).catch(s=>h(a=>({...a,[e]:{error:s.message}}))))};(0,n.useEffect)(()=>{h({}),p(new Set([""])),c&&x("")},[null==c?void 0:c.id,w]);let j=o[""],k=j&&"object"==typeof j&&"label"in j?j.label:"",v=e=>{let s=o[e];return s&&"loading"!==s?"error"in s?(0,t.jsx)("li",{className:"err small wb-pad",children:s.error}):s.entries.map(e=>"dir"===e.type?(0,t.jsxs)("li",{role:"treeitem","aria-expanded":b.has(e.path),children:[(0,t.jsxs)("button",{type:"button",className:"wb-row",onClick:()=>{p(s=>{let a=new Set(s);return a.has(e.path)?a.delete(e.path):(a.add(e.path),o[e.path]||x(e.path)),a})},children:[(0,t.jsx)("span",{className:"wb-chev","aria-hidden":"true",children:b.has(e.path)?"▾":"▸"}),(0,t.jsx)("span",{className:"wb-row-name",children:e.name})]}),b.has(e.path)&&(0,t.jsx)("ul",{role:"group",children:v(e.path)})]},e.path):(0,t.jsx)("li",{role:"treeitem",children:(0,t.jsxs)("button",{type:"button",className:"wb-row file",onClick:()=>c&&l({kind:"file",sessionId:c.id,path:e.path,taskId:w}),children:[(0,t.jsx)("span",{className:"wb-ico","aria-hidden":"true",children:"≡"}),(0,t.jsx)("span",{className:"wb-row-name",children:e.name})]})},e.path)):(0,t.jsx)("li",{className:"muted small wb-pad",children:i("wb.loading")})};return(0,t.jsxs)("div",{className:"wb-tree",children:[(0,t.jsx)(u,{title:i("wb.files")}),c?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"muted small wb-pad",children:i("wb.filesOf",{name:c.name,ref:k})}),(0,t.jsx)("ul",{className:"wb-tree-list",role:"tree","aria-label":i("wb.files"),children:v("")})]}):(0,t.jsx)("p",{className:"muted small wb-pad",children:i("wb.noRepo")})]})}function p(e){let{sessions:s,selected:a,onOpen:l}=e,{t:i}=(0,d.kj)(),c=(0,d.W3)(),o=m(s,a),[h,b]=(0,n.useState)(null),[p,w]=(0,n.useState)("");return(0,n.useEffect)(()=>{b(null),w(""),o&&r.FH.repoLog(o.id).then(b).catch(e=>w(e.message))},[null==o?void 0:o.id,null==o?void 0:o.tasks.map(e=>{var s,a;return null!=(a=null==(s=e.vcs)?void 0:s.commit)?a:""}).join()]),(0,t.jsxs)("div",{className:"wb-tree",children:[(0,t.jsx)(u,{title:i("wb.commits")}),o?p?(0,t.jsx)("p",{className:"err small wb-pad",children:p}):h?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"muted small wb-pad",children:i("wb.commitsOf",{name:o.name,ref:h.label})}),(0,t.jsx)("ul",{className:"wb-commits",children:h.commits.map(e=>(0,t.jsxs)("li",{children:[e.taskId?(0,t.jsxs)("button",{type:"button",className:"wb-row",onClick:()=>l({kind:"task",sessionId:o.id,taskId:e.taskId}),title:e.subject,children:[(0,t.jsx)("code",{children:e.sha.slice(0,7)}),(0,t.jsx)("span",{className:"wb-row-name",children:e.subject})]}):(0,t.jsxs)("div",{className:"wb-row plain",title:e.subject,children:[(0,t.jsx)("code",{children:e.sha.slice(0,7)}),(0,t.jsx)("span",{className:"wb-row-name",children:e.subject})]}),(0,t.jsxs)("div",{className:"muted wb-commit-meta",children:[e.author," \xb7 ",c(e.at),e.taskTitle?" \xb7 ".concat(i("wb.byTask",{title:e.taskTitle})):""]})]},e.sha))})]}):(0,t.jsx)("p",{className:"muted small wb-pad",children:i("wb.loading")}):(0,t.jsx)("p",{className:"muted small wb-pad",children:i("wb.noRepo")})]})}var w=a(1035),x=a(8934),j=a(287),k=a(5132),v=a(9717);function N(e){var s,a,l,c,o,u,h,m,b,p,N,g,y,C,I,S,O,T,F,P,E,M,H,L,A,D,R,q;let{session:K,task:B,onChange:W,onCompose:U,onKerrigan:z,onOpenFile:Z}=e,{t:_}=(0,d.kj)(),G=(0,d.W3)(),[J,Q]=(0,n.useState)(""),[V,X]=(0,n.useState)(!1),[$,ee]=(0,n.useState)(!1),[es,ea]=(0,n.useState)(!1),et=K.tasks.findIndex(e=>e.id===B.id)+1,en="running"===B.status||"waiting-approval"===B.status,el="idle"!==K.status,ei=(0,r.Zm)(B),er=(0,r.Dh)(B)&&!ei,ec="contract-conflict"===B.stopCode,ed=!!B.startedAt,eo=null==(a=B.attempts)||null==(s=a.at(-1))?void 0:s.undone,eu=null!=(T=B.plan)?T:B.continuing?null==(l=[...null!=(O=B.attempts)?O:[]].reverse().find(e=>{var s;return null==(s=e.plan)?void 0:s.approved}))?void 0:l.plan:void 0;(0,n.useEffect)(()=>{Q(""),ee(!1),ea(!1),ew(!1),ej("")},[B.id]);let eh=async function(e,s){let a=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!V){X(!0),Q("");try{await e(),s&&Q(s),a&&ee(!0)}catch(e){Q(e.message)}finally{X(!1),W()}}},em=async()=>{await (0,w.Z)(_("wb.removeConfirm",{title:B.title}))&&await eh(()=>r.FH.deleteTask(K.id,B.id),_("wb.removed"))},eb=async()=>{await (0,w.Z)(_("wb.runAgainConfirm",{title:B.title}))&&await eh(()=>r.FH.rerunTask(K.id,B.id),_("wb.queuedAgain"),!0)},[ep,ew]=(0,n.useState)(!1),[ex,ej]=(0,n.useState)("");return(0,t.jsxs)("article",{className:"wb-task","aria-labelledby":"wb-task-".concat(B.id),children:[(0,t.jsxs)("header",{className:"wb-task-head",children:[(0,t.jsx)(Y,{status:B.status}),(0,t.jsxs)("div",{className:"grow",children:[(0,t.jsx)("h2",{id:"wb-task-".concat(B.id),children:B.title}),(0,t.jsxs)("p",{className:"muted small",children:[_("wb.taskOf",{n:et,session:K.name,status:_("status.".concat(B.status))}),(null!=(F=B.attempt)?F:1)>1?" \xb7 ".concat(_("wb.attempt",{n:null!=(P=B.attempt)?P:1})):"",(null==(c=B.vcs)?void 0:c.branch)?" \xb7 ".concat(B.vcs.branch).concat(B.vcs.commit?" @ ".concat(B.vcs.commit.slice(0,8)):""):""]})]}),(0,t.jsx)(i(),{className:"button-link plain small",href:(0,r.aT)(K.id,B.id),children:_("wb.onSessionPage")})]}),(0,t.jsxs)("div",{className:"wb-actions",role:"toolbar","aria-label":_("wb.waysOn"),children:["queued"===B.status&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{type:"button",className:"primary",disabled:V||el,onClick:()=>ee(!0),children:_("wb.runThis")}),(0,t.jsx)("button",{type:"button",onClick:U,children:_("wb.addNote")}),(0,t.jsx)(i(),{className:"button-link",href:(0,r.aT)(K.id,B.id),children:_("wb.editTask")}),(0,t.jsx)("button",{type:"button",className:"danger",disabled:V,onClick:()=>void em(),children:_("wb.remove")})]}),en&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{type:"button",className:"primary",onClick:U,children:_("wb.writeToChat")}),(0,t.jsx)("button",{type:"button",className:"danger",disabled:V,onClick:()=>void eh(()=>r.FH.stop(K.id),_("wb.stopping")),children:_("wb.stopSession")})]}),ec&&(0,t.jsx)(i(),{className:"button-link primary",href:(0,r.aT)(K.id,B.id),children:_("wb.fixContradiction")}),ei&&!en&&(0,t.jsx)("button",{type:"button",className:"primary",disabled:V||el,onClick:()=>void eh(()=>r.FH.continueTask(K.id,B.id),_("wb.queuedToContinue"),!0),children:_("wb.continue")}),(er||ei)&&!ec&&!en&&(0,t.jsx)("button",{type:"button",className:er?"primary":"",disabled:el,onClick:U,children:_("wb.continueWithPrompt")}),"done"===B.status&&(0,t.jsx)("button",{type:"button",className:"primary",disabled:el,onClick:U,children:_("wb.newPrompt")}),ed&&!en&&"queued"!==B.status&&(0,t.jsx)("button",{type:"button",disabled:V||el,onClick:()=>void eb(),children:_("wb.runAgain")}),["failed","blocked","limit-reached","aborted"].includes(B.status)&&(0,t.jsx)("button",{type:"button","aria-expanded":ep,disabled:V||el,onClick:()=>ew(e=>!e),children:_("wb.accept")}),ed&&!en&&"queued"!==B.status&&(0,t.jsx)("button",{type:"button","aria-expanded":es,disabled:el,onClick:()=>ea(e=>!e),children:_("wb.undo")}),(null!=(E=null==(u=B.vcs)||null==(o=u.files)?void 0:o.length)?E:0)>0&&(0,t.jsx)(x.C,{sessionId:K.id,taskId:B.id,runId:B.runId,title:B.title,files:null!=(M=null==(m=B.vcs)||null==(h=m.files)?void 0:h.length)?M:0}),(0,t.jsx)("button",{type:"button",onClick:z,children:_("wb.askKerrigan")})]}),J&&(0,t.jsx)("p",{className:"notice small",role:"status",children:J}),el&&!en&&(0,t.jsx)("p",{className:"muted small",children:_("wb.sessionBusy")}),ep&&(0,t.jsxs)("div",{className:"wb-inline-panel",role:"group","aria-label":_("wb.accept"),children:[(0,t.jsx)("label",{htmlFor:"wb-accept-".concat(B.id),children:_("wb.acceptNote")}),(0,t.jsx)("textarea",{id:"wb-accept-".concat(B.id),value:ex,onChange:e=>ej(e.target.value),style:{minHeight:60}}),(0,t.jsxs)("div",{className:"row",children:[(0,t.jsx)("button",{type:"button",className:"primary",disabled:V,onClick:()=>void eh(()=>r.FH.acceptTask(K.id,B.id,ex),_("wb.accepted")).then(()=>ew(!1)),children:_("wb.acceptGo")}),(0,t.jsx)("button",{type:"button",className:"quiet",onClick:()=>ew(!1),children:_("dialog.cancel")})]})]}),es&&(0,t.jsx)(f,{session:K,task:B,onDone:e=>{ea(!1),Q(e),ee(!0),W()}}),$&&"queued"===B.status&&(0,t.jsx)("div",{className:"wb-inline-panel",children:(0,t.jsx)(j.f,{target:{sessionId:K.id,taskId:B.id,title:B.title},intro:J||void 0,onClose:e=>{ee(!1),e&&Q(_("wb.started")),W()}})}),(0,t.jsxs)("section",{className:"wb-sec",children:[(0,t.jsx)("h3",{children:_("wb.result")}),B.accepted&&(0,t.jsxs)("p",{className:"notice calm small",children:[_("wb.acceptedWas",{was:_("status.".concat(B.accepted.was)),at:G(B.accepted.at)}),B.accepted.note?" ".concat(B.accepted.note):""]}),"queued"===B.status&&eo&&(0,t.jsx)("p",{className:"notice calm small",children:"this"===eo.how?_("wb.undoneThis",{commit:null!=(H=null==(b=eo.commit)?void 0:b.slice(0,8))?H:"—"}):_("wb.undoneBack")}),(null==(p=B.continuing)?void 0:p.instruction)&&"done"!==B.status&&(0,t.jsxs)("p",{className:"small",children:[(0,t.jsx)("strong",{children:_("task.continuedWith",{n:B.continuing.fromAttempt})})," ",B.continuing.instruction]}),B.summary?(0,t.jsx)(k.s,{text:B.summary}):"queued"===B.status?(0,t.jsx)("p",{className:"muted small",children:_("wb.notRunYet")}):null,B.reason&&B.reason!==B.summary&&"done"!==B.status&&(0,t.jsx)("p",{className:"reason small",children:B.reason})]}),(0,t.jsxs)("details",{className:"wb-sec",open:"queued"===B.status,children:[(0,t.jsx)("summary",{children:_("wb.prompt")}),(0,t.jsx)(k.s,{text:B.prompt})]}),eu&&(0,t.jsxs)("details",{className:"wb-sec",children:[(0,t.jsx)("summary",{children:_("wb.plan",{n:eu.version})}),(0,t.jsx)(v.D,{plan:eu})]}),(null!=(L=null==(N=B.checkResults)?void 0:N.length)?L:0)>0&&(0,t.jsxs)("section",{className:"wb-sec",children:[(0,t.jsx)("h3",{children:_("wb.checks")}),(0,t.jsx)("ul",{className:"wb-list",children:B.checkResults.map(e=>(0,t.jsxs)("li",{className:e.passed?"ok":"bad",children:[(0,t.jsx)("span",{"aria-hidden":"true",children:e.passed?"✓":"✗"})," ",(0,t.jsx)("strong",{children:e.name})," ",(0,t.jsx)("span",{className:"muted small",children:e.detail})]},e.name))})]}),B.review&&(0,t.jsxs)("section",{className:"wb-sec",children:[(0,t.jsx)("h3",{children:_("wb.review",{verdict:B.review.verdict})}),B.review.summary&&(0,t.jsx)("p",{className:"small",children:B.review.summary}),(null!=(A=null==(g=B.review.findings)?void 0:g.length)?A:0)>0&&(0,t.jsx)("ul",{className:"wb-list",children:B.review.findings.map((e,s)=>{var a;return(0,t.jsxs)("li",{className:"bad small",children:[e.id&&(0,t.jsx)("code",{children:e.id})," ",e.what,e.where?(0,t.jsxs)("span",{className:"muted",children:[" — ",e.where]}):null]},null!=(a=e.id)?a:s)})})]}),(null!=(D=null==(C=B.vcs)||null==(y=C.files)?void 0:y.length)?D:0)>0&&(0,t.jsxs)("section",{className:"wb-sec",children:[(0,t.jsx)("h3",{children:_("wb.changedFiles",{n:B.vcs.files.length})}),(0,t.jsx)("ul",{className:"wb-list",children:B.vcs.files.map(e=>(0,t.jsxs)("li",{children:[(0,t.jsx)("button",{type:"button",className:"linkish",onClick:()=>Z(e.path),children:e.path})," ",(0,t.jsx)("span",{className:"muted small",children:e.added>=0?"+".concat(e.added," −").concat(e.removed):_("wb.binary")})]},e.path))})]}),(null!=(R=null==(I=B.notes)?void 0:I.length)?R:0)>0&&(0,t.jsxs)("section",{className:"wb-sec",children:[(0,t.jsx)("h3",{children:_("wb.notes")}),(0,t.jsx)("ul",{className:"wb-list",children:B.notes.map(e=>(0,t.jsxs)("li",{className:"small",children:[e.text," ",(0,t.jsxs)("span",{className:"muted",children:["— ",e.sentAt?_("wb.noteSent",{at:G(e.sentAt)}):_("wb.noteWaiting")]})]},e.id))})]}),(null!=(q=null==(S=B.attempts)?void 0:S.length)?q:0)>0&&(0,t.jsxs)("details",{className:"wb-sec",children:[(0,t.jsx)("summary",{children:_("wb.attempts",{n:B.attempts.length})}),(0,t.jsx)("ol",{className:"wb-list",children:B.attempts.map((e,s)=>(0,t.jsxs)("li",{className:"small",children:[(0,t.jsx)(Y,{status:e.status})," ",_("wb.attemptLine",{n:s+1,status:_("status.".concat(e.status))}),e.undone?" \xb7 ".concat("this"===e.undone.how?_("wb.undoneShortThis"):_("wb.undoneShortBack")):"",e.reason?(0,t.jsxs)("span",{className:"muted",children:[" — ",e.reason.slice(0,200)]}):null]},s))})]})]})}function f(e){var s,a,l;let{session:i,task:c,onDone:o}=e,{t:u}=(0,d.kj)(),[h,m]=(0,n.useState)(null),[b,p]=(0,n.useState)(""),[x,j]=(0,n.useState)(!1);(0,n.useEffect)(()=>{r.FH.undoPreview(i.id,c.id).then(m).catch(e=>p(e.message))},[i.id,c.id]);let k=async e=>{if(await (0,w.Z)("this"===e?u("wb.undoThisConfirm",{title:c.title}):u("wb.undoBackConfirm",{title:c.title}))){j(!0);try{let s=await r.FH.undoTask(i.id,c.id,e);o(s.message)}catch(e){p(e.message)}finally{j(!1)}}};if(b&&!h)return(0,t.jsx)("p",{className:"err small",children:b});if(!h)return(0,t.jsx)("p",{className:"muted small",children:u("wb.loading")});let v=h.this,N=h.back;return(0,t.jsxs)("div",{className:"wb-inline-panel",role:"group","aria-label":u("wb.undo"),children:[(0,t.jsxs)("div",{className:"option",children:[(0,t.jsx)("strong",{children:u("wb.undoThis")}),(0,t.jsx)("p",{className:"small",children:v.ok?v.nothing?v.nothing:v.perTask?u("wb.undoThisPerTask",{base:(null!=(s=v.baseCommit)?s:"").slice(0,8),branch:null!=(a=v.branch)?a:"—"}):u("wb.undoThisWhat",{n:v.commits.length,branch:null!=(l=v.branch)?l:"",later:v.later.length}):v.problem}),(0,t.jsx)("button",{type:"button",className:"primary",disabled:x||!v.ok,onClick:()=>void k("this"),children:u("wb.undoThisGo")})]}),(0,t.jsxs)("div",{className:"option",children:[(0,t.jsx)("strong",{children:u("wb.undoBack")}),(0,t.jsx)("p",{className:"small",children:N.ok?u("wb.undoBackWhat",{tasks:N.tasks.map(e=>"“".concat(e.title,"”")).join(", ")}):N.problem}),(0,t.jsx)("button",{type:"button",disabled:x||!N.ok,onClick:()=>void k("back"),children:u("wb.undoBackGo")})]}),b&&(0,t.jsx)("p",{className:"err small",children:b}),(0,t.jsx)("p",{className:"muted small",children:u("wb.undoKept")})]})}var g=a(1701),y=a(4811);function C(e){var s,a;let{session:l,onOpen:c,onChange:o}=e,{t:u}=(0,d.kj)(),h=(0,y.p)(),[m,b]=(0,n.useState)(""),[p,x]=(0,n.useState)(!1),j=l.tasks.filter(e=>"queued"===e.status).length,k=l.tasks.filter(e=>"done"===e.status).length,v="idle"===l.status,N=async e=>{if("unattended"!==e||h||await (0,w.Z)(u("session.unattendedConfirm"))){x(!0),b("");try{var s;let a=await (0,g.L)({sessionIds:[l.id],mode:e,start:s=>r.FH.start(l.id,e,l.planName,s)});a.started?b(u("unattended"===e?"session.startedAuto":"session.startedStep")):a.reply&&b(u("session.notStarted",{reason:null!=(s=a.reply.reason)?s:""}))}catch(e){b(e.message)}finally{x(!1),o()}}};return(0,t.jsxs)("article",{className:"wb-task","aria-labelledby":"wb-s-".concat(l.id),children:[(0,t.jsxs)("header",{className:"wb-task-head",children:[(0,t.jsx)("span",{className:"wb-ico","aria-hidden":"true",children:"▤"}),(0,t.jsxs)("div",{className:"grow",children:[(0,t.jsx)("h2",{id:"wb-s-".concat(l.id),children:l.name}),(0,t.jsxs)("p",{className:"muted small",children:[u("wb.sessionLine",{done:k,all:l.tasks.length,queued:j}),(null==(s=l.vcs)?void 0:s.enabled)?" \xb7 ".concat("per-task"===l.vcs.branchMode?u("wb.perTask"):u("wb.perSession")):" \xb7 ".concat(u("wb.noVcs")),l.modelInUse||l.model?" \xb7 ".concat(null!=(a=l.modelInUse)?a:l.model):""]})]}),(0,t.jsx)(i(),{className:"button-link plain small",href:(0,r.aT)(l.id),children:u("wb.sessionSettings")})]}),(0,t.jsxs)("div",{className:"wb-actions",role:"toolbar","aria-label":u("wb.waysOn"),children:[v?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{type:"button",className:"primary",disabled:p||0===j,onClick:()=>void N("unattended"),children:u("session.run",{n:j})}),(0,t.jsx)("button",{type:"button",disabled:p||0===j,onClick:()=>void N("confirm"),children:u("session.runStep")})]}):(0,t.jsx)("button",{type:"button",className:"danger",disabled:p,onClick:()=>void r.FH.stop(l.id).then(()=>b(u("wb.stopping"))).catch(e=>b(e.message)).finally(o),children:u("wb.stopSession")}),(0,t.jsx)(i(),{className:"button-link",href:(0,r.aT)(l.id,"new-task"),children:u("wb.addTask")})]}),0===j&&v&&(0,t.jsx)("p",{className:"muted small",children:u("wb.nothingQueued")}),m&&(0,t.jsx)("p",{className:"notice small",role:"status",children:m}),(0,t.jsx)("ol",{className:"wb-list wb-session-tasks",children:l.tasks.map(e=>(0,t.jsxs)("li",{children:[(0,t.jsxs)("button",{type:"button",className:"linkish",onClick:()=>c({kind:"task",sessionId:l.id,taskId:e.id}),children:[(0,t.jsx)(Y,{status:e.status})," ",e.title]}),e.reason&&"done"!==e.status&&"queued"!==e.status?(0,t.jsxs)("span",{className:"muted small",children:[" — ",e.reason.slice(0,160)]}):null]},e.id))})]})}function I(e){var s;let{sessionId:a,path:l,taskId:i}=e,{t:c}=(0,d.kj)(),[o,u]=(0,n.useState)(null),[h,m]=(0,n.useState)("");if((0,n.useEffect)(()=>{u(null),m(""),r.FH.repoFile(a,l,i).then(u).catch(e=>m(e.message))},[a,l,i]),h)return(0,t.jsx)("p",{className:"err small",children:h});if(!o)return(0,t.jsx)("p",{className:"muted small",children:c("wb.loading")});let b=(null!=(s=o.text)?s:"").split("\n");return(0,t.jsxs)("div",{className:"wb-file",children:[(0,t.jsx)("p",{className:"muted small",children:c("wb.fileAt",{path:o.path,ref:o.label})}),o.binary?(0,t.jsx)("p",{className:"muted",children:c("wb.binary")}):o.tooLarge?(0,t.jsx)("p",{className:"muted",children:c("wb.tooLarge")}):(0,t.jsx)("pre",{className:"wb-code","aria-label":o.path,children:b.map((e,s)=>(0,t.jsxs)("span",{className:"wb-line",children:[(0,t.jsx)("span",{className:"wb-ln","aria-hidden":"true",children:s+1}),e,"\n"]},s))})]})}var S=a(7619);function O(e){let{session:s,task:a,sessions:l,onChange:c}=e,{t:o}=(0,d.kj)(),[u,h]=(0,n.useState)(""),[m,b]=(0,n.useState)(a?"task":s?"session":"all"),[p,w]=(0,n.useState)(""),[x,j]=(0,n.useState)(""),[k,v]=(0,n.useState)(null),[N,f]=(0,n.useState)(""),[g,y]=(0,n.useState)(!1),C="task"!==m||a?"session"!==m||s?m:"all":s?"session":"all",I=async()=>{try{let e="task"===C&&s&&a?{sessionIds:[s.id],taskIds:[a.id],note:u}:"session"===C&&s?{sessionIds:[s.id],note:u}:{sessionIds:l.map(e=>e.id),note:u};return(await r.FH.kerriganReport(e)).text}catch(e){return w(e.message),null}},S=async()=>{let e=await I();if(e)try{await navigator.clipboard.writeText(e),w(o("wb.kCopied",{n:e.length}))}catch(e){w(o("wb.kCopyFailed"))}},O=async()=>{let e=await I();if(!e)return;let s=URL.createObjectURL(new Blob([e],{type:"text/plain;charset=utf-8"})),a=document.createElement("a");a.href=s,a.download="what-happened-".concat(new Date().toISOString().slice(0,16).replace(/[:T]/g,"-"),".txt"),a.click(),URL.revokeObjectURL(s),w(o("wb.kSaved"))},T=async()=>{y(!0),f("");try{v(await r.FH.checkChanges(x))}catch(e){f(e.message)}finally{y(!1)}},F=async()=>{y(!0);try{var e;let s=await r.FH.applyChanges(x);s.ok?(f(o("wb.kApplied",{n:s.applied.length})),v(null),j("")):f(null!=(e=s.problem)?e:s.check&&!s.check.ok?s.check.issues.map(e=>e.message).join(" "):"")}catch(e){f(e.message)}finally{y(!1),c()}},P=!!k&&!k.ok&&/"sessions"\s*:/.test(x)&&!/"changes"\s*:/.test(x);return(0,t.jsxs)("div",{className:"wb-kerrigan",children:[(0,t.jsxs)("section",{children:[(0,t.jsx)("h3",{children:o("wb.kTell")}),(0,t.jsx)("p",{className:"muted small",children:o("wb.kTellWhy")}),(0,t.jsxs)("fieldset",{className:"wb-scope",children:[(0,t.jsx)("legend",{className:"sr-only",children:o("wb.kScope")}),a&&(0,t.jsxs)("label",{children:[(0,t.jsx)("input",{type:"radio",name:"wb-k-scope",checked:"task"===C,onChange:()=>b("task")})," ",o("wb.kScopeTask")]}),s&&(0,t.jsxs)("label",{children:[(0,t.jsx)("input",{type:"radio",name:"wb-k-scope",checked:"session"===C,onChange:()=>b("session")})," ",o("wb.kScopeSession")]}),(0,t.jsxs)("label",{children:[(0,t.jsx)("input",{type:"radio",name:"wb-k-scope",checked:"all"===C,onChange:()=>b("all")})," ",o("wb.kScopeAll")]})]}),(0,t.jsx)("label",{htmlFor:"wb-k-note",children:o("wb.kNote")}),(0,t.jsx)("textarea",{id:"wb-k-note",value:u,onChange:e=>h(e.target.value),placeholder:o("wb.kNotePlaceholder"),style:{minHeight:90}}),(0,t.jsxs)("div",{className:"row",children:[(0,t.jsx)("button",{type:"button",className:"primary",onClick:()=>void S(),children:o("wb.kCopy")}),(0,t.jsx)("button",{type:"button",onClick:()=>void O(),children:o("wb.kSave")}),(0,t.jsx)(i(),{className:"button-link plain small",href:"/import",children:o("wb.kBrief")})]}),p&&(0,t.jsx)("p",{className:"small",role:"status",children:p})]}),(0,t.jsxs)("section",{children:[(0,t.jsx)("h3",{children:o("wb.kAnswer")}),(0,t.jsx)("label",{htmlFor:"wb-k-answer",children:o("wb.kPaste")}),(0,t.jsx)("textarea",{id:"wb-k-answer",value:x,onChange:e=>{j(e.target.value),v(null)},style:{minHeight:110}}),(0,t.jsxs)("div",{className:"row",children:[(0,t.jsx)("button",{type:"button",disabled:g||!x.trim(),onClick:()=>void T(),children:o("wb.kCheck")}),(null==k?void 0:k.ok)&&(0,t.jsx)("button",{type:"button",className:"primary",disabled:g,onClick:()=>void F(),children:o("wb.kApply",{n:k.changes.length})})]}),(null==k?void 0:k.ok)&&(0,t.jsxs)(t.Fragment,{children:[k.notes&&(0,t.jsx)("p",{className:"small",children:k.notes}),(0,t.jsx)("ol",{className:"wb-list small",children:k.changes.map(e=>(0,t.jsx)("li",{children:e.says},e.index))}),k.warnings.map(e=>(0,t.jsx)("p",{className:"muted small",children:e},e))]}),k&&!k.ok&&(0,t.jsx)(t.Fragment,{children:P?(0,t.jsxs)("p",{className:"small",children:[o("wb.kIsPlan")," ",(0,t.jsx)(i(),{href:"/import",children:o("wb.kImportPage")})]}):(0,t.jsx)("ul",{className:"wb-list small",children:k.issues.map(e=>(0,t.jsxs)("li",{className:"bad",children:[e.path&&(0,t.jsx)("code",{children:e.path})," ",e.message]},"".concat(e.path).concat(e.message)))})}),N&&(0,t.jsx)("p",{className:"notice small",role:"status",children:N})]})]})}function T(e){let{tab:s,onTab:a,session:n,task:l,sessions:i,composeAsk:r,onChange:c,onClose:o}=e,{t:u}=(0,d.kj)();return(0,t.jsxs)("div",{className:"wb-chat-inner",children:[(0,t.jsxs)("div",{className:"wb-chat-tabs",role:"tablist","aria-label":u("wb.chatPanel"),children:[(0,t.jsx)("button",{type:"button",role:"tab","aria-selected":"chat"===s,className:"chat"===s?"on":"",onClick:()=>a("chat"),children:u("wb.chatTab")}),(0,t.jsx)("button",{type:"button",role:"tab","aria-selected":"kerrigan"===s,className:"kerrigan"===s?"on":"",onClick:()=>a("kerrigan"),children:u("wb.kerriganTab")}),(0,t.jsx)("span",{className:"grow"}),(0,t.jsx)("button",{type:"button",className:"wb-icon-btn","aria-label":u("wb.toggleChat"),title:u("wb.toggleChat"),onClick:o,children:"\xd7"})]}),"kerrigan"===s?(0,t.jsx)(O,{session:n,task:l,sessions:i,onChange:c}):(0,t.jsx)(F,{session:n,task:l,composeAsk:r,onChange:c})]})}function F(e){var s,a;let{session:l,task:i,composeAsk:c,onChange:o}=e,{t:u}=(0,d.kj)(),[h,m]=(0,n.useState)(""),[b,p]=(0,n.useState)(""),[w,x]=(0,n.useState)(!1),[k,v]=(0,n.useState)(!1),N=(0,n.useRef)(null),f=(null==l?void 0:l.status)==="idle",g=(a=!!f,i?"queued"===i.status||"running"===i.status||"waiting-approval"===i.status?"note":a&&"contract-conflict"!==i.stopCode?(0,r.Zm)(i)||(0,r.Dh)(i)?"continue":"done"===i.status?"newPrompt":"none":"none":"none"),y=(null==i?void 0:i.status)==="running"||(null==i?void 0:i.status)==="waiting-approval";(0,n.useEffect)(()=>{p(""),v(!1)},[null==i?void 0:i.id]),(0,n.useEffect)(()=>{var e;c>0&&(null==(e=N.current)||e.focus())},[c]);let C=async()=>{if(l&&i&&h.trim()&&!w&&"none"!==g){x(!0),p("");try{"note"===g?(await r.FH.addTaskNote(l.id,i.id,h),p(y?u("wb.noteSentSoon"):u("wb.noteKept"))):("continue"===g?(await r.FH.continueTask(l.id,i.id,h),p(u("wb.queuedToContinue"))):(await r.FH.rerunTask(l.id,i.id,{prompt:h},{buildOnFinished:!0}),p(u("wb.queuedNewPrompt"))),v(!0)),m("")}catch(e){p(e.message)}finally{x(!1),o()}}};if(!l||!i)return(0,t.jsx)("div",{className:"wb-chat-empty",children:(0,t.jsx)("p",{className:"muted",children:u("wb.chatEmpty")})});let I="note"===g?u("wb.sendNote"):"continue"===g?u("wb.sendContinue"):"newPrompt"===g?u("wb.sendNewPrompt"):u("wb.sendNone"),O="note"===g?y?u("wb.hintNoteLive"):u("wb.hintNoteQueued"):"continue"===g?u("wb.hintContinue"):"newPrompt"===g?u("wb.hintNewPrompt"):f?u("wb.hintNone"):u("wb.hintBusy");return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"wb-chat-head",children:[(0,t.jsx)("strong",{className:"wb-row-name",children:i.title}),(0,t.jsx)("span",{className:"muted small",children:l.name})]}),(0,t.jsx)("div",{className:"wb-chat-story",children:i.startedAt||y?(0,t.jsx)(S.P,{sessionId:l.id,taskId:i.id,runId:i.runId,live:y},"".concat(i.id,":").concat(null!=(s=i.runId)?s:"")):(0,t.jsx)("p",{className:"muted small",children:u("wb.notRunYet")})}),(0,t.jsxs)("div",{className:"wb-compose",children:[k&&"queued"===i.status&&(0,t.jsx)("div",{className:"wb-inline-panel",children:(0,t.jsx)(j.f,{target:{sessionId:l.id,taskId:i.id,title:i.title},onClose:e=>{v(!1),e&&p(u("wb.started")),o()}})}),b&&(0,t.jsx)("p",{className:"small",role:"status",children:b}),(0,t.jsx)("label",{htmlFor:"wb-compose",className:"sr-only",children:I}),(0,t.jsx)("textarea",{id:"wb-compose",ref:N,value:h,onChange:e=>m(e.target.value),placeholder:"Ctrl+Enter",disabled:"none"===g||w,onKeyDown:e=>{"Enter"===e.key&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),C())}}),(0,t.jsxs)("div",{className:"row",children:[(0,t.jsx)("span",{className:"muted small grow",children:O}),(0,t.jsx)("button",{type:"button",className:"primary",disabled:"none"===g||w||!h.trim(),onClick:()=>void C(),title:"Ctrl+Enter",children:I})]})]})]})}var P=a(7908);function E(e){let{open:s,onToggle:a,tab:n,onTab:l,session:i,task:r,onOpenTask:c}=e,{t:o}=(0,d.kj)(),u=i?function(e){let s=[];return e.tasks.forEach((a,t)=>{var n,l,i,r;let c="".concat(t+1,". ").concat(a.title);for(let t of null!=(i=a.checkResults)?i:[])t.passed||s.push({sessionId:e.id,taskId:a.id,kind:"error",text:"".concat(t.name,": ").concat(t.detail.slice(0,160)),where:c});if((null==(n=a.review)?void 0:n.verdict)==="fail")for(let t of null!=(r=a.review.findings)?r:[])s.push({sessionId:e.id,taskId:a.id,kind:"error",text:t.what.slice(0,200),where:t.where?"".concat(c," \xb7 ").concat(t.where):c});["failed","blocked","limit-reached","aborted"].includes(a.status)&&a.reason&&s.push({sessionId:e.id,taskId:a.id,kind:"warn",text:a.reason.slice(0,200),where:c}),(null==(l=a.vcs)?void 0:l.problem)&&s.push({sessionId:e.id,taskId:a.id,kind:"warn",text:a.vcs.problem.slice(0,200),where:c})}),s}(i):[];return(0,t.jsxs)("section",{className:"wb-bottom","aria-label":o("wb.panel"),children:[(0,t.jsxs)("div",{className:"wb-bottom-tabs",role:"tablist","aria-label":o("wb.panel"),children:[["terminal","problems","output"].map(e=>(0,t.jsxs)("button",{type:"button",role:"tab","aria-selected":s&&n===e,className:s&&n===e?"on":"",onClick:()=>l(e),children:[o("terminal"===e?"wb.terminal":"problems"===e?"wb.problems":"wb.output"),"problems"===e&&u.length>0&&(0,t.jsx)("span",{className:"wb-badge",children:u.length})]},e)),(0,t.jsx)("span",{className:"grow"}),(0,t.jsx)("button",{type:"button",className:"wb-icon-btn","aria-label":o("wb.cmdPanel"),title:"".concat(o("wb.cmdPanel")," (Ctrl+J)"),onClick:a,children:s?"▾":"▴"})]}),s&&(0,t.jsx)("div",{className:"wb-bottom-body",role:"tabpanel",children:"terminal"===n?(0,t.jsx)(M,{session:i,task:r}):"problems"===n?0===u.length?(0,t.jsx)("p",{className:"muted small wb-pad",children:i?o("wb.noProblems"):o("wb.pickSession")}):(0,t.jsx)("ul",{className:"wb-problems",children:u.map((e,s)=>(0,t.jsx)("li",{children:(0,t.jsxs)("button",{type:"button",className:"wb-row",onClick:()=>c(e.sessionId,e.taskId),children:[(0,t.jsx)("span",{className:"wb-sev ".concat(e.kind),"aria-hidden":"true",children:"error"===e.kind?"✗":"⚠"}),(0,t.jsx)("span",{className:"wb-row-name",children:e.text}),(0,t.jsx)("span",{className:"muted",children:e.where})]})},s))}):(0,t.jsx)(H,{session:i})})]})}function M(e){var s,a;let{session:l,task:i}=e,{t:o}=(0,d.kj)(),[u,h]=(0,n.useState)(null),m=(null==i?void 0:i.status)==="running"||(null==i?void 0:i.status)==="waiting-approval",{ref:b}=(0,P.U)(!!m,null!=(s=null==u?void 0:u.entries.length)?s:0),p=()=>l&&i&&(i.startedAt||m)?r.FH.taskStory(l.id,i.id,i.runId).then(h).catch(()=>void 0):Promise.resolve();if((0,n.useEffect)(()=>{h(null),p()},[null==i?void 0:i.id,null==i?void 0:i.runId]),(0,c.z)(p,m?2e3:15e3,!!l&&!!i),!i)return(0,t.jsx)("p",{className:"muted small wb-pad",children:o("wb.pickTask")});let w=[],x=e=>e.forEach(e=>"step"===e.kind?w.push(e):"review"===e.kind?x(e.entries):void 0);return(x(null!=(a=null==u?void 0:u.entries)?a:[]),0===w.length)?(0,t.jsx)("p",{className:"muted small wb-pad",children:u?o("wb.noSteps"):o("wb.loading")}):(0,t.jsx)("div",{ref:b,className:"wb-terminal","aria-live":"off",children:w.map((e,s)=>(0,t.jsxs)("div",{className:e.failed?"bad":"",children:[(0,t.jsxs)("div",{className:"wb-cmd",children:[(0,t.jsx)("span",{"aria-hidden":"true",children:"$ "}),e.command,(0,t.jsxs)("span",{className:"muted",children:[" ",e.outcome?"".concat(e.outcome).concat(void 0!==e.exitCode?" (".concat(e.exitCode,")"):""):o("wb.runningNow")]})]}),e.output&&(0,t.jsx)("pre",{children:e.output})]},s))})}function H(e){let{session:s}=e,{t:a}=(0,d.kj)(),l=(0,d.W3)(),[i,o]=(0,n.useState)([]),{ref:u}=(0,P.U)(!0,i.length),h=()=>s?r.FH.sessionEvents(s.id).then(o).catch(()=>void 0):Promise.resolve();return((0,n.useEffect)(()=>{o([]),h()},[null==s?void 0:s.id]),(0,c.z)(h,3e3,!!s),s)?(0,t.jsx)("div",{ref:u,className:"wb-terminal",children:0===i.length?(0,t.jsx)("p",{className:"muted small",children:a("wb.noEvents")}):i.map((e,s)=>{var a;return(0,t.jsxs)("div",{className:"error"===e.level?"bad":"warn"===e.level?"warnline":"",children:[(0,t.jsxs)("span",{className:"muted",children:[l(e.at)," "]}),null!=(a=e.message)?a:e.type]},s)})}):(0,t.jsx)("p",{className:"muted small wb-pad",children:a("wb.pickSession")})}var L=a(3374);function A(e){var s,a,l;let{sessions:i,session:o,task:u,onOpenTask:h}=e,{t:m}=(0,d.kj)(),b=(0,L.c)(!0,5e3),[p,w]=(0,n.useState)(""),[x,j]=(0,n.useState)(0),[k,v]=(0,n.useState)({iterations:60,minutes:240});(0,n.useEffect)(()=>{r.FH.settings().then(e=>{var s,a,t;let n=null!=(s=e.raw.limits)?s:{};v({iterations:null!=(a=n.maxIterations)?a:60,minutes:null!=(t=n.maxRunMinutes)?t:240})}).catch(()=>void 0)},[]),(0,n.useEffect)(()=>{var e;w(""),(null==o||null==(e=o.vcs)?void 0:e.enabled)&&r.FH.vcsStatus(o.id).then(e=>{var s;return w(null!=(s=e.branch)?s:"")}).catch(()=>void 0)},[null==o?void 0:o.id,null==o?void 0:o.status,null==u?void 0:u.status]),(0,c.z)(()=>r.FH.approvals().then(e=>j(e.length)).catch(()=>void 0),3e3);let N=i.find(e=>"idle"!==e.status),f=null==N?void 0:N.tasks.find(e=>"running"===e.status||"waiting-approval"===e.status),g=(null==f?void 0:f.startedAt)?Math.floor((b-Date.parse(f.startedAt))/6e4):0;return(0,t.jsxs)("footer",{className:"wb-statusbar","aria-label":m("wb.status"),children:[(null==o||null==(s=o.vcs)?void 0:s.enabled)&&(0,t.jsxs)("span",{title:m("wb.branchNow"),children:[(0,t.jsx)("span",{"aria-hidden":"true",children:"⎇ "}),p||"…"]}),N&&f?(0,t.jsxs)("button",{type:"button",className:"wb-status-btn",onClick:()=>h(N.id,f.id),title:m("wb.openRunning"),children:[(0,t.jsx)("span",{className:"wb-live","aria-hidden":"true"})," ",m("wb.runningLine",{session:N.name,task:f.title,n:f.iterations,max:k.iterations,m:g,maxm:k.minutes})]}):(0,t.jsx)("span",{children:m("wb.idle")}),(0,t.jsx)("span",{className:"grow"}),x>0&&(0,t.jsx)("button",{type:"button",className:"wb-status-btn warn",onClick:()=>{var e;return null==(e=document.querySelector(".approval-banner"))?void 0:e.scrollIntoView({block:"start"})},children:m("wb.waiting",{n:x})}),o&&(0,t.jsx)("span",{title:m("wb.modelNow"),children:null!=(l=null!=(a=o.modelInUse)?a:o.model)?l:m("wb.modelDefault")})]})}var D=a(1702);function R(e){let{commands:s,onClose:a}=e,{t:l}=(0,d.kj)(),i=(0,D.useRouter)(),[r,c]=(0,n.useState)(""),[o,u]=(0,n.useState)(0),h=(0,n.useRef)(null);(0,n.useEffect)(()=>{var e;return null==(e=h.current)?void 0:e.focus()},[]);let m=(0,n.useMemo)(()=>{let e=r.toLowerCase().split(/\s+/).filter(Boolean);return s.filter(s=>e.every(e=>{var a;return"".concat(s.label," ").concat(null!=(a=s.hint)?a:"").toLowerCase().includes(e)})).slice(0,60)},[r,s]),b=0===m.length?-1:Math.min(o,m.length-1),p=e=>{var s;e&&(a(),e.href?i.push(e.href):null==(s=e.run)||s.call(e))};return(0,t.jsx)("div",{className:"modal-backdrop",role:"presentation",onClick:a,children:(0,t.jsxs)("div",{className:"wb-palette",role:"dialog","aria-modal":"true","aria-label":l("wb.palette"),onClick:e=>e.stopPropagation(),children:[(0,t.jsx)("input",{ref:h,type:"text",role:"combobox","aria-expanded":"true","aria-controls":"wb-palette-list","aria-activedescendant":b>=0?"wb-cmd-".concat(b):void 0,"aria-label":l("wb.palette"),placeholder:l("wb.palettePlaceholder"),value:r,onChange:e=>{c(e.target.value),u(0)},onKeyDown:e=>{"Escape"===e.key?a():"ArrowDown"===e.key?(e.preventDefault(),u(Math.min(m.length-1,b+1))):"ArrowUp"===e.key?(e.preventDefault(),u(Math.max(0,b-1))):"Enter"===e.key&&(e.preventDefault(),p(m[b]))}}),(0,t.jsxs)("ul",{id:"wb-palette-list",role:"listbox","aria-label":l("wb.palette"),children:[0===m.length&&(0,t.jsx)("li",{className:"muted small",children:l("wb.paletteNone")}),m.map((e,s)=>(0,t.jsxs)("li",{id:"wb-cmd-".concat(s),role:"option","aria-selected":s===b,className:s===b?"on":"",onMouseEnter:()=>u(s),onClick:()=>p(e),children:[(0,t.jsx)("span",{className:"wb-row-name",children:e.label}),e.hint&&(0,t.jsx)("span",{className:"muted small",children:e.hint})]},e.id))]})]})})}let q=e=>"task"===e.kind?"t:".concat(e.taskId):"session"===e.kind?"s:".concat(e.sessionId):"f:".concat(e.sessionId,":").concat(e.path),K={side:290,chat:420,bottom:240,sideOpen:!0,chatOpen:!0,bottomOpen:!0},B="cop.workbench.layout";function W(){return(0,t.jsx)(n.Suspense,{fallback:null,children:(0,t.jsx)(U,{})})}function U(){let{t:e}=(0,d.kj)(),[s,a]=(0,n.useState)(null),[l,u]=(0,n.useState)(""),[h,m]=(0,n.useState)({}),[b,p]=(0,n.useState)([]),[w,x]=(0,n.useState)(""),[j,k]=(0,n.useState)("tasks"),[v,f]=(0,n.useState)("terminal"),[g,y]=(0,n.useState)("chat"),[S,O]=(0,n.useState)(K),[F,P]=(0,n.useState)(!1),[M,H]=(0,n.useState)(0),L=(0,n.useRef)(!1),D=(0,n.useCallback)(()=>r.FH.sessions().then(e=>{a(e),u("")}).catch(e=>u(e.message)),[]);(0,c.z)(D,3e3),(0,n.useEffect)(()=>{var e,s;O(function(){try{let e=window.localStorage.getItem(B);return e?{...K,...JSON.parse(e)}:K}catch(e){return K}}());let a=new URLSearchParams(window.location.search),t=null!=(e=a.get("s"))?e:void 0,n=null!=(s=a.get("t"))?s:void 0;t&&m({sessionId:t,taskId:n}),L.current=!0},[]),(0,n.useEffect)(()=>{try{window.localStorage.setItem(B,JSON.stringify(S))}catch(e){}},[S]),(0,n.useEffect)(()=>{if(!L.current)return;let e=new URLSearchParams;h.sessionId&&e.set("s",h.sessionId),h.taskId&&e.set("t",h.taskId);let s=e.toString()?"/?".concat(e.toString()):"/";"".concat(window.location.pathname).concat(window.location.search)!==s&&window.history.replaceState(null,"",s)},[h]);let W=(0,n.useCallback)(e=>{p(s=>s.some(s=>q(s)===q(e))?s:[...s,e]),x(q(e)),"task"===e.kind?m({sessionId:e.sessionId,taskId:e.taskId}):m(s=>({sessionId:e.sessionId,taskId:s.sessionId===e.sessionId?s.taskId:void 0}))},[]),U=(0,n.useRef)(!1);(0,n.useEffect)(()=>{if(U.current||!s||!h.sessionId)return;let e=s.find(e=>e.id===h.sessionId);e&&(U.current=!0,h.taskId&&e.tasks.some(e=>e.id===h.taskId)?W({kind:"task",sessionId:e.id,taskId:h.taskId}):W({kind:"session",sessionId:e.id}))},[s,h,W]);let J=null==s?void 0:s.find(e=>e.id===h.sessionId),Q=null==J?void 0:J.tasks.find(e=>e.id===h.taskId),V=b.find(e=>q(e)===w),X=e=>O(s=>({...s,...e}));(0,n.useEffect)(()=>{let e=e=>{if(!(e.ctrlKey||e.metaKey))return;let s=e.key.toLowerCase();"k"===s||"p"===s&&e.shiftKey?(e.preventDefault(),P(!0)):"b"!==s||e.shiftKey?"j"===s?(e.preventDefault(),X({bottomOpen:!S.bottomOpen})):"l"===s&&(e.preventDefault(),X({chatOpen:!0}),y("chat"),H(e=>e+1)):(e.preventDefault(),X({sideOpen:!S.sideOpen}))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[S]);let $=(0,n.useMemo)(()=>{let a=[{id:"kerrigan",label:e("wb.cmdKerrigan"),run:()=>{X({chatOpen:!0}),y("kerrigan")}},{id:"chat",label:e("wb.cmdChat"),hint:"Ctrl+L",run:()=>{X({chatOpen:!0}),y("chat"),H(e=>e+1)}},{id:"side",label:e("wb.cmdSide"),hint:"Ctrl+B",run:()=>X({sideOpen:!S.sideOpen})},{id:"panel",label:e("wb.cmdPanel"),hint:"Ctrl+J",run:()=>X({bottomOpen:!S.bottomOpen})},{id:"files",label:e("wb.cmdFiles"),run:()=>{X({sideOpen:!0}),k("files")}},{id:"commits",label:e("wb.cmdCommits"),run:()=>{X({sideOpen:!0}),k("commits")}},{id:"problems",label:e("wb.cmdProblems"),run:()=>{X({bottomOpen:!0}),f("problems")}},...[["/sessions","nav.sessions"],["/history","nav.history"],["/import","nav.import"],["/defaults","nav.defaults"],["/level1","nav.level1"],["/presets","nav.presets"],["/appearance","nav.appearance"],["/system","nav.system"]].map(s=>{let[a,t]=s;return{id:"go:".concat(a),label:e("wb.cmdGo",{page:e(t)}),href:a}})];for(let t of null!=s?s:[])a.push({id:"s:".concat(t.id),label:e("wb.cmdSession",{name:t.name}),run:()=>W({kind:"session",sessionId:t.id})}),t.tasks.forEach((s,n)=>a.push({id:"t:".concat(s.id),label:"".concat(t.name," › ").concat(n+1,". ").concat(s.title),hint:e("status.".concat(s.status)),run:()=>W({kind:"task",sessionId:t.id,taskId:s.id})}));return a},[s,e,S,W]),ee={"--wb-side":S.sideOpen?"".concat(S.side,"px"):"0px","--wb-chat":S.chatOpen?"".concat(S.chat,"px"):"0px","--wb-bottom":S.bottomOpen?"".concat(S.bottom,"px"):"34px"};return(0,t.jsxs)("div",{className:"wb",style:ee,children:[(0,t.jsxs)("header",{className:"wb-top",children:[(0,t.jsx)("span",{className:"wb-brand",children:"copilot-operator"}),(0,t.jsxs)("button",{type:"button",className:"wb-search",onClick:()=>P(!0),title:e("wb.paletteWhy"),children:[(0,t.jsx)("span",{children:e("wb.palette")}),(0,t.jsx)("kbd",{children:"Ctrl+K"})]}),(0,t.jsxs)("nav",{className:"wb-menu","aria-label":e("nav.label"),children:[(0,t.jsx)(i(),{href:"/sessions",children:e("nav.sessions")}),(0,t.jsx)(i(),{href:"/history",children:e("nav.history")}),(0,t.jsx)(i(),{href:"/import",children:e("nav.import")}),(0,t.jsx)(i(),{href:"/defaults",children:e("nav.defaults")}),(0,t.jsx)(d.c5,{})]})]}),(0,t.jsxs)("div",{className:"wb-body".concat(S.sideOpen?"":" no-side").concat(S.chatOpen?"":" no-chat"),children:[(0,t.jsx)(Z,{side:j,sideOpen:S.sideOpen,onSide:e=>{e===j&&S.sideOpen?X({sideOpen:!1}):(k(e),X({sideOpen:!0}))},chatOpen:S.chatOpen,onChat:()=>X({chatOpen:!S.chatOpen})}),(0,t.jsxs)("aside",{className:"wb-side","aria-label":e("wb.explorer"),hidden:!S.sideOpen,children:[l&&!s?(0,t.jsx)("p",{className:"err small",style:{padding:10},children:l}):null,(0,t.jsx)(o,{view:j,sessions:s,selected:h,onOpen:W,onChange:()=>void D()})]}),S.sideOpen&&(0,t.jsx)(_,{axis:"x",label:e("wb.resize"),onDrag:e=>X({side:z(S.side+e,180,560)})}),(0,t.jsxs)("section",{className:"wb-center","aria-label":e("wb.editor"),children:[(0,t.jsxs)("div",{className:"wb-tabs",role:"tablist","aria-label":e("wb.openTabs"),children:[0===b.length&&(0,t.jsx)("span",{className:"muted small wb-tabs-empty",children:e("wb.noTabs")}),b.map(a=>{var n,l;let i=q(a),r=null==s?void 0:s.find(e=>e.id===a.sessionId),c="task"===a.kind?null==r?void 0:r.tasks.find(e=>e.id===a.taskId):void 0,d="task"===a.kind?null!=(n=null==c?void 0:c.title)?n:e("wb.goneTask"):"session"===a.kind?null!=(l=null==r?void 0:r.name)?l:e("wb.goneSession"):a.path.split("/").pop();return(0,t.jsxs)("div",{className:"wb-tab".concat(i===w?" active":""),children:[(0,t.jsxs)("button",{type:"button",role:"tab","aria-selected":i===w,onClick:()=>"task"===a.kind?W(a):(x(i),m({sessionId:a.sessionId,taskId:"file"===a.kind?a.taskId:void 0})),title:"file"===a.kind?a.path:void 0,children:[c&&(0,t.jsx)(Y,{status:c.status}),"file"===a.kind&&(0,t.jsx)("span",{className:"wb-ico","aria-hidden":"true",children:"≡"}),"session"===a.kind&&(0,t.jsx)("span",{className:"wb-ico","aria-hidden":"true",children:"▤"}),(0,t.jsx)("span",{className:"wb-tab-label",children:d})]}),(0,t.jsx)("button",{type:"button",className:"wb-tab-close","aria-label":e("wb.closeTab",{name:null!=d?d:""}),onClick:()=>{p(e=>{let s=e.findIndex(e=>q(e)===i),a=e.filter(e=>q(e)!==i);return i===w&&x(a[Math.max(0,s-1)]?q(a[Math.max(0,s-1)]):""),a})},children:"\xd7"})]},i)})]}),(0,t.jsx)("div",{className:"wb-editor",role:"tabpanel",children:V?"task"===V.kind?J&&Q?(0,t.jsx)(N,{session:J,task:Q,onChange:()=>void D(),onCompose:()=>{X({chatOpen:!0}),y("chat"),H(e=>e+1)},onKerrigan:()=>{X({chatOpen:!0}),y("kerrigan")},onOpenFile:e=>W({kind:"file",sessionId:J.id,path:e,taskId:Q.id})}):(0,t.jsx)("p",{className:"muted",children:e("wb.goneTask")}):"session"===V.kind?(()=>{let a=null==s?void 0:s.find(e=>e.id===V.sessionId);return a?(0,t.jsx)(C,{session:a,onOpen:W,onChange:()=>void D()}):(0,t.jsx)("p",{className:"muted",children:e("wb.goneSession")})})():(0,t.jsx)(I,{sessionId:V.sessionId,path:V.path,taskId:V.taskId}):(0,t.jsx)(G,{sessions:s,onOpen:W,onKerrigan:()=>{X({chatOpen:!0}),y("kerrigan")}})}),S.bottomOpen&&(0,t.jsx)(_,{axis:"y",label:e("wb.resize"),onDrag:e=>X({bottom:z(S.bottom-e,90,700)})}),(0,t.jsx)(E,{open:S.bottomOpen,onToggle:()=>X({bottomOpen:!S.bottomOpen}),tab:v,onTab:e=>{f(e),X({bottomOpen:!0})},session:J,task:Q,onOpenTask:(e,s)=>W({kind:"task",sessionId:e,taskId:s})})]}),S.chatOpen&&(0,t.jsx)(_,{axis:"x",label:e("wb.resize"),onDrag:e=>X({chat:z(S.chat-e,300,820)})}),(0,t.jsx)("aside",{className:"wb-chat","aria-label":e("wb.chatPanel"),hidden:!S.chatOpen,children:(0,t.jsx)(T,{tab:g,onTab:y,session:J,task:Q,sessions:null!=s?s:[],composeAsk:M,onChange:()=>void D(),onClose:()=>X({chatOpen:!1})})})]}),(0,t.jsx)(A,{sessions:null!=s?s:[],session:J,task:Q,onOpenTask:(e,s)=>W({kind:"task",sessionId:e,taskId:s})}),F&&(0,t.jsx)(R,{commands:$,onClose:()=>P(!1)})]})}let z=(e,s,a)=>Math.max(s,Math.min(a,e));function Z(e){let{side:s,sideOpen:a,onSide:n,chatOpen:l,onChat:r}=e,{t:c}=(0,d.kj)(),o=(e,l,i)=>(0,t.jsx)("button",{type:"button",className:"wb-act".concat(a&&s===e?" on":""),"aria-pressed":a&&s===e,"aria-label":l,title:l,onClick:()=>n(e),children:(0,t.jsx)("svg",{viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:i})});return(0,t.jsxs)("nav",{className:"wb-activity","aria-label":c("wb.views"),children:[o("tasks",c("wb.viewTasks"),(0,t.jsx)("path",{d:"M4 6h16M4 12h16M4 18h10"})),o("files",c("wb.viewFiles"),(0,t.jsx)("path",{d:"M4 4h6l2 2h8v14H4z"})),o("commits",c("wb.viewCommits"),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("circle",{cx:"12",cy:"12",r:"3"}),(0,t.jsx)("path",{d:"M12 3v6M12 15v6"})]})),(0,t.jsx)("span",{className:"grow"}),(0,t.jsx)("button",{type:"button",className:"wb-act".concat(l?" on":""),"aria-pressed":l,"aria-label":c("wb.toggleChat"),title:"".concat(c("wb.toggleChat")," (Ctrl+L)"),onClick:r,children:(0,t.jsx)("svg",{viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinejoin:"round","aria-hidden":"true",children:(0,t.jsx)("path",{d:"M4 5h16v11H9l-5 4z"})})}),(0,t.jsx)(i(),{className:"wb-act",href:"/defaults","aria-label":c("nav.defaults"),title:c("nav.defaults"),children:(0,t.jsxs)("svg",{viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"currentColor",strokeWidth:"1.8","aria-hidden":"true",children:[(0,t.jsx)("circle",{cx:"12",cy:"12",r:"3"}),(0,t.jsx)("path",{d:"M12 2v3M12 19v3M2 12h3M19 12h3M5 5l2 2M17 17l2 2M5 19l2-2M17 7l2-2"})]})})]})}function _(e){let{axis:s,label:a,onDrag:l}=e,i=(0,n.useRef)(null);return(0,t.jsx)("div",{className:"wb-split ".concat(s),role:"separator","aria-orientation":"x"===s?"vertical":"horizontal","aria-label":a,tabIndex:0,onPointerDown:e=>{i.current="x"===s?e.clientX:e.clientY,e.target.setPointerCapture(e.pointerId)},onPointerMove:e=>{if(null===i.current)return;let a="x"===s?e.clientX:e.clientY;l(a-i.current),i.current=a},onPointerUp:()=>i.current=null,onKeyDown:e=>{let a=e.shiftKey?40:12;("x"===s&&"ArrowLeft"===e.key||"y"===s&&"ArrowUp"===e.key)&&l(-a),("x"===s&&"ArrowRight"===e.key||"y"===s&&"ArrowDown"===e.key)&&l(a)}})}function Y(e){var s;let{status:a}=e,{t:n}=(0,d.kj)();return(0,t.jsx)("span",{className:"wb-status s-".concat(a),title:n("status.".concat(a)),"aria-label":n("status.".concat(a)),role:"img",children:null!=(s=({done:"✓",failed:"✗",blocked:"⊘","limit-reached":"⏸",aborted:"■",queued:"○",running:"●","waiting-approval":"◐"})[a])?s:"\xb7"})}function G(e){let{sessions:s,onOpen:a,onKerrigan:n}=e,{t:l}=(0,d.kj)(),r=(null!=s?s:[]).flatMap(e=>e.tasks.filter(e=>["failed","blocked","limit-reached","aborted","waiting-approval"].includes(e.status)).map(s=>({s:e,x:s}))),c=(null!=s?s:[]).reduce((e,s)=>e+s.tasks.filter(e=>"queued"===e.status).length,0);return(0,t.jsxs)("div",{className:"wb-welcome",children:[(0,t.jsx)("h2",{children:l("wb.welcome")}),(0,t.jsx)("p",{className:"muted",children:l("wb.welcomeWhy")}),(0,t.jsxs)("div",{className:"row",children:[(0,t.jsx)(i(),{className:"button-link primary",href:"/import",children:l("wb.startPlan")}),(0,t.jsx)(i(),{className:"button-link",href:"/sessions#new-session",children:l("wb.newSession")}),(0,t.jsx)("button",{type:"button",onClick:n,children:l("wb.askKerrigan")})]}),r.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h3",{children:l("wb.needsYou",{n:r.length})}),(0,t.jsx)("ul",{className:"wb-list",children:r.slice(0,12).map(e=>{let{s,x:n}=e;return(0,t.jsx)("li",{children:(0,t.jsxs)("button",{type:"button",className:"linkish",onClick:()=>a({kind:"task",sessionId:s.id,taskId:n.id}),children:[(0,t.jsx)(Y,{status:n.status})," ",s.name," › ",n.title]})},n.id)})})]}),c>0&&(0,t.jsx)("p",{className:"small",children:l("wb.queuedCount",{n:c})}),(0,t.jsx)("p",{className:"muted small",children:l("wb.keys")})]})}function J(){return(0,t.jsx)(W,{})}},5704:(e,s,a)=>{Promise.resolve().then(a.bind(a,4455))},9717:(e,s,a)=>{"use strict";a.d(s,{D:()=>l});var t=a(3365),n=a(867);function l(e){var s,a;let{plan:l,showApproval:i=!0}=e,{t:r}=(0,n.kj)(),c=(0,n.W3)(),d=l.approved;return(0,t.jsxs)("div",{className:"plan-view",children:[(0,t.jsx)("p",{className:"small muted",children:r("pm.version",{n:l.version,at:c(l.at)})}),i&&d&&(0,t.jsxs)("p",{className:"small",children:["operator"===d.by?r("pm.approvedByOperator",{at:c(d.at)}):r("pm.approvedAuto",{at:c(d.at)}),d.why&&" ".concat(d.why),d.note&&" ".concat(r("pm.approvedNote",{note:d.note}))]}),(0,t.jsx)("h4",{children:r("pm.existing")}),(0,t.jsx)("p",{className:"pre-wrap",children:l.existing}),(0,t.jsx)("h4",{children:r("pm.approach")}),(0,t.jsx)("p",{className:"pre-wrap",children:l.approach}),(0,t.jsx)("h4",{children:r("pm.steps")}),(0,t.jsx)("ol",{children:l.steps.map((e,s)=>(0,t.jsx)("li",{className:"pre-wrap",children:e},s))}),l.files.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h4",{children:r("pm.files")}),(0,t.jsx)("ul",{children:l.files.map(e=>(0,t.jsx)("li",{children:(0,t.jsx)("code",{children:e})},e))})]}),(0,t.jsx)("h4",{children:r("pm.verification")}),(0,t.jsx)("p",{className:"pre-wrap",children:l.verification}),l.risks&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h4",{children:r("pm.risks")}),(0,t.jsx)("p",{className:"pre-wrap",children:l.risks})]}),(null!=(a=null==(s=l.revisions)?void 0:s.length)?a:0)>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h4",{children:r("pm.revisions")}),(0,t.jsx)("ul",{children:l.revisions.map(e=>(0,t.jsxs)("li",{className:"small",children:[r("pm.revision",{n:e.version,at:c(e.at)})," ",(0,t.jsx)("span",{className:"pre-wrap",children:e.comment})]},e.version))})]})]})}}},e=>{e.O(0,[197,867,549,499,897,347,131,358],()=>e(e.s=5704)),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{2114:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>x});var a=n(3365),l=n(1521),s=n(8197),i=n.n(s),d=n(5549),r=n(7527),c=n(867),h=n(1035),o=n(4811),m=n(8848),u=n(3486),p=n(1701),g=n(3069);function x(){let{t:e}=(0,c.kj)(),t=(0,c.W3)(),[n,s]=(0,l.useState)(null),[o,m]=(0,l.useState)(null),[u,p]=(0,l.useState)([]),[g,x]=(0,l.useState)([]),[b,v]=(0,l.useState)([]),[f,N]=(0,l.useState)("stop"),[w,y]=(0,l.useState)(!1),[k,S]=(0,l.useState)(""),[C,F]=(0,l.useState)(""),[I,H]=(0,l.useState)(""),[W,D]=(0,l.useState)(null),[T,R]=(0,l.useState)(!1),U=(0,l.useCallback)(async()=>{try{let[e,t,n]=await Promise.all([d.FH.sessions(),d.FH.batch().catch(()=>null),d.FH.approvals().catch(()=>[])]);s(e),m(t),p(n),x(t=>t.filter(t=>e.some(e=>e.id===t))),D(!0),R(!1),H("")}catch(e){R(!(0,d.AV)()),D(!1),H(e.message)}},[]);(0,r.z)(U,3e3),(0,l.useEffect)(()=>{var e;let t=new URLSearchParams(window.location.search),n=(null!=(e=t.get("run"))?e:"").split(",").map(e=>e.trim()).filter(Boolean);0!==n.length&&(x(n),N("continue"===t.get("fail")?"continue":"stop"),y(!0),window.history.replaceState(null,"",window.location.pathname))},[]);let[O,E]=(0,l.useState)(!1),B=(0,l.useRef)(!1),M=async()=>{if(!B.current){B.current=!0,E(!0);try{let e=await d.FH.createSession(k||"session");S(""),window.location.href=(0,d.aT)(e.id)}catch(e){H(e.message),B.current=!1,E(!1)}}},q=async t=>{if(t.running)return void F(e("home.deleteRunning"));if(await (0,h.Z)(e("home.deleteConfirm",{name:t.name,n:t.tasks.length})))try{await d.FH.deleteSession(t.id),F(e("home.deleted",{name:t.name})),x(e=>e.filter(e=>e!==t.id)),await U()}catch(e){F(e.message)}},A=async()=>{let t=(null!=n?n:[]).filter(e=>b.includes(e.id)&&!e.running);if(0===t.length)return;let a=t.map(e=>"• ".concat(e.name," (").concat(e.tasks.length,")")).join("\n");if(!await (0,h.Z)(e("home.deleteSelectedConfirm",{n:t.length,names:a})))return;let l=0,s=[];for(let e of t)try{await d.FH.deleteSession(e.id),l+=1}catch(t){s.push("".concat(e.name,": ").concat(t.message))}F(0===s.length?e("home.deletedMany",{n:l}):e("home.deleteSomeFailed",{n:l,m:s.length,why:s.join("; ")})),x(e=>e.filter(e=>!t.some(t=>t.id===e))),v([]),await U()},L=async t=>{let a=(null!=n?n:[]).filter(e=>b.includes(e.id)&&!e.running);if(0===a.length)return;let l=[];for(let e of a)try{await d.FH.updateSession(e.id,{active:t})}catch(t){l.push("".concat(e.name,": ").concat(t.message))}F(0===l.length?e(t?"home.madeActive":"home.madeInactive",{n:a.length}):e("home.statusSomeFailed",{n:a.length-l.length,m:l.length,why:l.join("; ")})),t||x(e=>e.filter(e=>!a.some(t=>t.id===e))),v([]),await U()},P=t=>{if(t.running)return{label:e("state.running"),badge:"running"};let n=t.tasks.some(e=>"queued"===e.status||"running"===e.status);if("idle"!==t.status||n||0===t.tasks.length)return{label:e("state.".concat(t.status)),badge:""};let a=t.tasks.filter(e=>"done"!==e.status).length;return 0===a?{label:e("state.completed"),badge:"done",title:e("state.completedTitle")}:{label:e("state.ended"),badge:"failed",title:e("state.endedTitle",{n:a})}},_=async e=>{if(!n)return;let t=new Map(n.map(e=>[e.id,e]));s(e.map(e=>t.get(e)).filter(e=>!!e));try{s(await d.FH.reorderSessions(e)),H("")}catch(e){H(e.message),U()}},K=(e,t)=>{let a=(null!=n?n:[]).map(e=>e.id),l=a.indexOf(e),s=l+t;l<0||s<0||s>=a.length||([a[l],a[s]]=[a[s],a[l]],_(a))},[Z,z]=(0,l.useState)(null),[V,Q]=(0,l.useState)(null),X=(null!=n?n:[]).filter(e=>!e.running),G=X.filter(e=>b.includes(e.id));return(0,a.jsxs)(a.Fragment,{children:[T&&(0,a.jsxs)("div",{className:"panel",children:[(0,a.jsx)("strong",{children:e("home.noToken")}),(0,a.jsx)("div",{className:"muted small",children:e("home.noTokenHint",{cmd:"npm start"})})]}),!1===W&&!T&&(0,a.jsxs)("div",{className:"panel",children:[(0,a.jsx)("strong",{children:e("home.apiDown")}),(0,a.jsx)("div",{className:"muted small",children:e("home.apiHint",{cmd:"npm start",url:"/api"})}),I&&(0,a.jsx)("div",{className:"err",children:I})]}),(0,a.jsxs)("div",{className:"panel",id:"new-session",children:[(0,a.jsx)("h2",{children:e("home.new")}),(0,a.jsx)("p",{className:"muted small",children:e("home.newHint")}),(0,a.jsxs)("div",{className:"row",children:[(0,a.jsx)("input",{type:"text",className:"grow","aria-label":e("home.col.name"),placeholder:e("home.namePlaceholder"),value:k,onChange:e=>S(e.target.value),onKeyDown:e=>{"Enter"===e.key&&M()}}),(0,a.jsx)("button",{className:"primary",onClick:()=>void M(),disabled:O||!1===W,children:e("home.create")})]})]}),n&&n.length>0&&(0,a.jsx)(j,{sessions:n,selected:g,setSelected:x,onFailure:f,setOnFailure:N,fromPlan:w,batch:o,approvals:u,onChange:U,move:(e,t)=>{x(n=>{let a=n.indexOf(e),l=a+t;if(a<0||l<0||l>=n.length)return n;let s=[...n];return[s[a],s[l]]=[s[l],s[a]],s})}}),(0,a.jsxs)("div",{className:"panel",children:[(0,a.jsx)("h2",{children:e("home.sessions")}),null===n&&(0,a.jsx)("div",{className:"muted",children:e("home.loading")}),n&&0===n.length&&(0,a.jsx)("div",{className:"muted",children:e("home.none")}),n&&n.length>0&&(0,a.jsxs)("div",{className:"row",style:{marginBottom:10},children:[(0,a.jsx)("strong",{className:"small",children:e("home.managed",{n:G.length})}),(0,a.jsx)("button",{onClick:()=>void L(!0),disabled:0===G.length,children:e("home.makeActive")}),(0,a.jsx)("button",{onClick:()=>void L(!1),disabled:0===G.length,children:e("home.makeInactive")}),(0,a.jsx)("button",{className:"danger",onClick:()=>void A(),disabled:0===G.length,children:e("home.deleteSelected",{n:G.length})}),(0,a.jsx)("span",{className:"muted small",children:e("home.tickForBoth")})]}),n&&n.length>0&&(0,a.jsx)("p",{className:"muted small",children:e("home.deleteWhy")}),n&&n.length>1&&(0,a.jsx)("p",{className:"muted small",children:e("home.orderWhy")}),C&&(0,a.jsx)("div",{className:"muted small",role:"status",children:C}),n&&n.length>0&&(0,a.jsxs)("table",{children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{children:(0,a.jsx)("input",{type:"checkbox","aria-label":e("home.manageAll"),title:e("home.manageAll"),checked:X.length>0&&X.every(e=>b.includes(e.id)),onChange:e=>v(e.target.checked?X.map(e=>e.id):[]),disabled:0===X.length})}),(0,a.jsx)("th",{children:(0,a.jsx)("input",{type:"checkbox","aria-label":e("home.selectAll"),checked:n.length>0&&g.length===n.filter(e=>!1!==e.active).length,onChange:e=>x(e.target.checked?n.filter(e=>!1!==e.active).map(e=>e.id):[]),disabled:(null==o?void 0:o.running)===!0})}),(0,a.jsx)("th",{children:e("home.col.order")}),(0,a.jsx)("th",{children:e("home.col.name")}),(0,a.jsx)("th",{children:e("home.col.tasks")}),(0,a.jsx)("th",{children:e("home.col.state")}),(0,a.jsx)("th",{children:e("home.col.chat")}),(0,a.jsx)("th",{children:e("home.col.created")}),(0,a.jsx)("th",{children:(0,a.jsx)("span",{className:"visually-hidden",children:e("home.col.remove")})})]})}),(0,a.jsx)("tbody",{children:n.map((l,s)=>{let r=l.tasks.filter(e=>"done"===e.status).length,c=l.tasks.filter(e=>"queued"===e.status).length,h=[!1===l.active?"inactive":"",Z===l.id?"dragging":"",V===l.id&&Z!==l.id?"drop-target":""].filter(Boolean).join(" ");return(0,a.jsxs)("tr",{className:h||void 0,draggable:!0,onDragStart:e=>{e.dataTransfer.setData("text/plain",l.id),e.dataTransfer.effectAllowed="move",z(l.id)},onDragOver:e=>{Z&&(e.preventDefault(),e.dataTransfer.dropEffect="move",V!==l.id&&Q(l.id))},onDrop:e=>{e.preventDefault();let t=e.dataTransfer.getData("text/plain")||Z;z(null),Q(null),t&&((e,t)=>{let a=(null!=n?n:[]).map(e=>e.id),l=a.indexOf(e),s=a.indexOf(t);l<0||s<0||l===s||(a.splice(l,1),a.splice(s,0,e),_(a))})(t,l.id)},onDragEnd:()=>{z(null),Q(null)},children:[(0,a.jsx)("td",{children:(0,a.jsx)("input",{type:"checkbox",checked:b.includes(l.id),onChange:()=>v(e=>e.includes(l.id)?e.filter(e=>e!==l.id):[...e,l.id]),disabled:!!l.running,"aria-label":e("home.manageRow",{name:l.name}),title:l.running?e("home.manageRunning"):e("home.manageRow",{name:l.name})})}),(0,a.jsx)("td",{children:(0,a.jsx)("input",{type:"checkbox",checked:g.includes(l.id),onChange:()=>{var e;return e=l.id,void x(t=>{if(t.includes(e))return t.filter(t=>t!==e);let a=(null!=n?n:[]).map(e=>e.id);return[...t,e].sort((e,t)=>a.indexOf(e)-a.indexOf(t))})},disabled:(null==o?void 0:o.running)===!0||!1===l.active,"aria-label":l.name,title:!1===l.active?e("home.inactiveWhy"):void 0})}),(0,a.jsxs)("td",{className:"order-cell",children:[(0,a.jsx)("span",{className:"drag-handle","aria-hidden":"true",title:e("home.dragHint"),children:"⠿"}),(0,a.jsx)("button",{className:"quiet small",onClick:()=>K(l.id,-1),disabled:0===s,"aria-label":e("home.moveUp",{name:l.name}),title:e("home.moveUp",{name:l.name}),children:"↑"}),(0,a.jsx)("button",{className:"quiet small",onClick:()=>K(l.id,1),disabled:s===n.length-1,"aria-label":e("home.moveDown",{name:l.name}),title:e("home.moveDown",{name:l.name}),children:"↓"})]}),(0,a.jsx)("td",{children:(0,a.jsx)(i(),{href:(0,d.aT)(l.id),children:l.name})}),(0,a.jsxs)("td",{children:[l.tasks.length," ",(0,a.jsx)("span",{className:"muted small",children:e("home.tasksDetail",{done:r,queued:c})})]}),(0,a.jsxs)("td",{children:[(0,a.jsx)("span",{className:"badge ".concat(P(l).badge),title:P(l).title,children:P(l).label})," ",(0,a.jsx)("span",{className:"chip".concat(!1===l.active?" inactive":""),title:e(!1===l.active?"home.inactiveWhy":"home.activeWhy"),children:e(!1===l.active?"home.statusInactive":"home.statusActive")})]}),(0,a.jsx)("td",{children:l.chat?(0,a.jsx)("a",{href:l.chat.url,target:"_blank",rel:"noreferrer",children:l.chat.name}):(0,a.jsx)("span",{className:"muted",children:e("home.notOpened")})}),(0,a.jsx)("td",{className:"muted small",children:t(l.createdAt)}),(0,a.jsx)("td",{children:(0,a.jsx)("button",{className:"quiet",onClick:()=>void q(l),disabled:!!l.running,title:e("home.delete"),children:e("home.delete")})})]},l.id)})})]})]})]})}function j(e){var t,n,s,r,x,j,b;let{sessions:v,selected:f,setSelected:N,onFailure:w,setOnFailure:y,fromPlan:k,batch:S,approvals:C,onChange:F,move:I}=e,{t:H}=(0,c.kj)(),[W,D]=(0,l.useState)(""),[T,R]=(0,l.useState)(""),[U,O]=(0,l.useState)(void 0),[E,B]=(0,l.useState)(""),[M,q]=(0,l.useState)(""),[A,L]=(0,l.useState)(""),[P,_]=(0,l.useState)(null),[K,Z]=(0,l.useState)([]),[z,V]=(0,l.useState)(0);(0,l.useEffect)(()=>{d.FH.models().then(e=>{_(e),B(t=>t||e.defaultModel),q(t=>t||e.defaultReviewModel)}).catch(()=>void 0)},[]);let Q=f.join(",");(0,l.useEffect)(()=>{let e=!1,t=Q.split(",").filter(Boolean);if(0===t.length)return void Z([]);let n=async()=>{let n=await d.FH.runVcs(t).catch(()=>[]);e||Z(n)};n();let a=setInterval(()=>void n(),1e4);return()=>{e=!0,clearInterval(a)}},[Q,z]);let X=new Map(v.map(e=>[e.id,e])),G=e=>e.tasks.filter(e=>"queued"===e.status).length,J=f.map(e=>X.get(e)).filter(e=>!!e),Y=J.filter(e=>G(e)>0&&!1!==e.active),$=Y.reduce((e,t)=>e+G(t),0),ee=(null==S?void 0:S.running)===!0,et=v.some(e=>e.running),en=K.some(e=>!e.ready&&!e.startChoiceCanFix),ea=ee||0===Y.length||et||en,el=et?{title:"batch.oneRunning",why:"batch.oneRunningWhy"}:0===J.length?{title:"batch.pickFirst",why:"batch.pickFirstWhy"}:0===Y.length?{title:"batch.nothingRunnable",why:"batch.nothingRunnableWhy"}:null,es=(0,o.p)(),[ei,ed]=(0,l.useState)(!1),er=(0,l.useRef)(!1),ec=async e=>{if(!er.current){er.current=!0,ed(!0);try{await e()}catch(e){R(e.message)}finally{er.current=!1,ed(!1),F()}}},eh=async e=>{("unattended"!==e||es||await (0,h.Z)(H("batch.unattendedConfirm",{n:Y.length})))&&await ec(async()=>{var t,n,a;let l=Y.map(e=>e.id),s=await (0,p.L)({sessionIds:l,mode:e,start:t=>d.FH.startBatch(l,e,w,E||void 0,M||void 0,A.trim()||Y.map(e=>e.planName).find(Boolean)||void 0,void 0,t)});D(""),R(s.started?"":null!=(a=null==(t=s.reply)?void 0:t.reason)?a:""),O(s.started||null==(n=s.reply)?void 0:n.failure),V(e=>e+1)})},eo=J.filter(e=>{var t;return(null!=(t=e.model)?t:"")!==E}).length,em=J.filter(e=>{var t;return(null==(t=e.review)?void 0:t.enabled)===!1}).length,eu=null!=(s=null==P?void 0:P.options)?s:[],ep=eu.filter(e=>!e.group),eg=new Map;for(let e of eu)e.group&&eg.set(e.group,[...null!=(r=eg.get(e.group))?r:[],e]);let ex=S?{done:S.sessions.filter(e=>"done"===e.state).length,failed:S.sessions.filter(e=>"failed"===e.state).length,skipped:S.sessions.filter(e=>"skipped"===e.state||"stopped"===e.state).length}:null,ej=null==S?void 0:S.sessions.find(e=>"running"===e.state);return(0,a.jsxs)("div",{className:"panel",children:[(0,a.jsx)("h2",{children:H("batch.title")}),(0,a.jsx)("p",{className:"muted small",children:H("batch.hint")}),!ee&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"row",children:[(0,a.jsx)("strong",{className:"small",children:H("batch.selected",{n:Y.length,tasks:$})}),(0,a.jsx)("button",{className:"quiet",onClick:()=>N(v.filter(e=>G(e)>0).map(e=>e.id)),children:H("batch.selectQueued")}),(0,a.jsx)("button",{className:"quiet",onClick:()=>N([]),disabled:0===J.length,children:H("batch.selectNone")})]}),k&&(0,a.jsx)("p",{className:"muted small",children:H("batch.fromPlan")}),J.length>Y.length&&(0,a.jsx)("p",{className:"muted small",children:H("batch.notRunnable",{n:J.length-Y.length})}),Y.length>0&&(0,a.jsx)("ol",{className:"run-order",children:Y.map((e,t)=>(0,a.jsxs)("li",{children:[(0,a.jsxs)("span",{children:[e.name," ",(0,a.jsxs)("span",{className:"muted small",children:["(",G(e),")"]})]}),(0,a.jsxs)("span",{children:[(0,a.jsx)("button",{className:"quiet",onClick:()=>I(e.id,-1),disabled:0===t,"aria-label":H("batch.moveUp",{name:e.name}),children:"↑"}),(0,a.jsx)("button",{className:"quiet",onClick:()=>I(e.id,1),disabled:t===Y.length-1,"aria-label":H("batch.moveDown",{name:e.name}),children:"↓"})]})]},e.id))}),(0,a.jsx)("label",{htmlFor:"batch-run-name",children:H("batch.runName")}),(0,a.jsx)("input",{id:"batch-run-name",type:"text",value:A,onChange:e=>L(e.target.value),placeholder:null!=(x=Y.map(e=>e.planName).find(Boolean))?x:H("batch.runNamePlaceholder")}),(0,a.jsx)("p",{className:"why",children:H("batch.runNameWhy")}),(0,a.jsx)("label",{htmlFor:"batch-model",children:H("batch.model")}),(0,a.jsxs)("div",{className:"row",children:[(0,a.jsxs)("select",{id:"batch-model",value:E,onChange:e=>B(e.target.value),style:{width:"auto",minWidth:260},children:[(0,a.jsx)("option",{value:"",children:H("batch.modelKeep")}),ep.map(e=>(0,a.jsx)("option",{value:e.name,disabled:e.disabled,children:e.name},e.name)),[...eg.entries()].map(e=>{let[t,n]=e;return(0,a.jsx)("optgroup",{label:t,children:n.map(e=>(0,a.jsx)("option",{value:e.name,disabled:e.disabled,children:e.name},e.name))},t)})]}),(null!=(j=null==P?void 0:P.options.length)?j:0)===0&&(0,a.jsx)("span",{className:"muted small",children:H("batch.modelNone")})]}),(0,a.jsx)("p",{className:"why",children:H("batch.modelWhy")}),(0,a.jsx)(m.L,{current:E,onUse:e=>B(e)}),E&&eo>0&&(0,a.jsx)("p",{className:"why",style:{color:"var(--warn)"},children:H("batch.modelOverrides",{n:eo})}),(0,a.jsx)("label",{htmlFor:"batch-review-model",children:H("batch.reviewModel")}),(0,a.jsx)("div",{className:"row",children:(0,a.jsxs)("select",{id:"batch-review-model",value:M,onChange:e=>q(e.target.value),style:{width:"auto",minWidth:260},children:[(0,a.jsx)("option",{value:"",children:H("batch.reviewModelKeep")}),ep.map(e=>(0,a.jsx)("option",{value:e.name,disabled:e.disabled,children:e.name},e.name)),[...eg.entries()].map(e=>{let[t,n]=e;return(0,a.jsx)("optgroup",{label:t,children:n.map(e=>(0,a.jsx)("option",{value:e.name,disabled:e.disabled,children:e.name},e.name))},t)})]})}),(0,a.jsx)("p",{className:"why",children:H("batch.reviewModelWhy")}),""!==M&&M===E&&(0,a.jsx)("p",{className:"why",style:{color:"var(--warn)"},children:H("batch.reviewSame")}),em>0&&(0,a.jsx)("p",{className:"why",children:H("batch.reviewOffIn",{n:em})}),(0,a.jsxs)("fieldset",{style:{border:0,padding:0,margin:"10px 0 14px"},children:[(0,a.jsx)("legend",{className:"muted small",style:{padding:0},children:H("batch.onFailure")}),(0,a.jsxs)("div",{className:"option",children:[(0,a.jsxs)("label",{children:[(0,a.jsx)("input",{type:"radio",name:"batch-fail",checked:"stop"===w,onChange:()=>y("stop")}),(0,a.jsx)("span",{children:H("batch.chain")})]}),(0,a.jsx)("p",{className:"why",children:H("batch.chainWhy")})]}),(0,a.jsxs)("div",{className:"option",children:[(0,a.jsxs)("label",{children:[(0,a.jsx)("input",{type:"radio",name:"batch-fail",checked:"continue"===w,onChange:()=>y("continue")}),(0,a.jsx)("span",{children:H("batch.independent")})]}),(0,a.jsx)("p",{className:"why",children:H("batch.independentWhy")})]})]}),el&&(0,a.jsxs)("div",{className:"notice caution",children:[(0,a.jsx)("strong",{children:H(el.title)}),(0,a.jsx)("div",{className:"small",style:{marginTop:4},children:H(el.why)})]}),(0,a.jsx)(u.w,{groups:K,sessionIds:Y.map(e=>e.id),onChange:()=>V(e=>e+1)}),T&&(0,a.jsx)(g.X,{failure:U,reason:T,children:/execution\.isolation/.test(T)&&(0,a.jsx)("div",{className:"small",style:{marginTop:4},children:(0,a.jsx)(i(),{href:"/defaults",children:H("batch.notStartedIsolation")})})}),!en&&(0,a.jsxs)("div",{className:"run-choice",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("button",{className:"primary",onClick:()=>void eh("unattended"),disabled:ei||ea,children:H("batch.run",{n:Y.length})}),(0,a.jsx)("p",{className:"why",children:H("batch.runWhy")})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("button",{onClick:()=>void eh("confirm"),disabled:ei||ea,children:H("batch.runStep")}),(0,a.jsx)("p",{className:"why",children:H("batch.runStepWhy")})]})]})]}),ee&&(0,a.jsxs)("div",{className:"row",children:[(null==S?void 0:S.pausing)?(0,a.jsx)("button",{className:"primary",onClick:()=>void ec(async()=>{await d.FH.resumeBatch(),D("")}),disabled:ei||(null==S?void 0:S.stopping),title:H("batch.resumeWhy"),children:H("batch.resume")}):(0,a.jsx)("button",{onClick:()=>void ec(async()=>{await d.FH.pauseBatch(),D(H("batch.pausing"))}),disabled:ei||(null==S?void 0:S.stopping),title:H("batch.pauseWhy"),children:H("batch.pause")}),(0,a.jsx)("button",{onClick:()=>void ec(async()=>{await d.FH.stopBatch(),D(H("batch.stopping"))}),disabled:ei||(null==S?void 0:S.stopping),title:H("batch.stopWhy"),children:H("batch.stop")}),(null==S?void 0:S.pausing)&&!(null==S?void 0:S.stopping)&&(0,a.jsx)("span",{className:"muted small",children:H("batch.pausing")}),(0,a.jsx)("span",{className:"badge",children:H("batch.modelRunning",{name:(ej?(null==(t=X.get(ej.sessionId))?void 0:t.modelInUse)||(null==(n=X.get(ej.sessionId))?void 0:n.model):"")||H("model.default")})}),C.length>0&&(0,a.jsx)("span",{className:"badge waiting-approval",children:H("batch.waiting",{n:C.length})}),ej&&(0,a.jsx)("span",{className:"small",children:H("batch.progress",{name:ej.name,done:S.sessions.filter(e=>"waiting"!==e.state&&"running"!==e.state).length,total:S.sessions.length})})]}),ee&&(0,a.jsx)("p",{className:"muted small",children:H("batch.hiddenWhileRunning")}),W&&(0,a.jsx)("div",{className:"muted small",role:"status",children:W}),(J.length>0||S)&&(0,a.jsxs)("div",{className:"row",style:{marginTop:12},children:[(0,a.jsx)("a",{className:"button-link",href:d.FH.debugExportUrl(J.length>0?J.map(e=>e.id):(null!=(b=null==S?void 0:S.sessions)?b:[]).map(e=>e.sessionId)),children:H("batch.debug")}),(0,a.jsx)("span",{className:"muted small",children:J.length>0?H("batch.debugSelected",{n:J.length}):H("batch.debugLast")})]}),(J.length>0||S)&&(0,a.jsx)("p",{className:"why",children:H("batch.debugWhy")}),S&&(0,a.jsxs)(a.Fragment,{children:[!ee&&ex&&(0,a.jsx)("div",{className:"notice calm",style:{marginTop:12},children:(0,a.jsx)("strong",{children:H("batch.finished",ex)})}),(0,a.jsxs)("table",{style:{marginTop:10},children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{children:H("batch.col.session")}),(0,a.jsx)("th",{children:H("batch.col.state")}),(0,a.jsx)("th",{children:H("batch.col.ran")}),(0,a.jsx)("th",{children:H("batch.col.why")})]})}),(0,a.jsx)("tbody",{children:S.sessions.map(e=>{var t,n;return(0,a.jsxs)("tr",{className:"batch-row ".concat(e.state),children:[(0,a.jsx)("td",{children:(0,a.jsx)(i(),{href:(0,d.aT)(e.sessionId),children:e.name})}),(0,a.jsx)("td",{children:(0,a.jsx)("span",{className:"badge ".concat("running"===(n=e.state)?"running":"done"===n?"done":"failed"===n?"failed":"stopped"===n?"aborted":""),children:H("batch.state.".concat(e.state))})}),(0,a.jsx)("td",{className:"small",children:H("batch.ranOf",{ran:e.ran,failed:e.failed})}),(0,a.jsx)("td",{className:"muted small",children:null!=(t=e.reason)?t:""})]},e.sessionId)})})]})]})]})}},4811:(e,t,n)=>{"use strict";n.d(t,{p:()=>s});var a=n(1521),l=n(5549);function s(){let[e,t]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{let e=!0;return l.FH.settings().then(n=>{var a;let l=null!=(a=n.raw.execution)?a:{};e&&t("unattended"===l.mode)}).catch(()=>void 0),()=>{e=!1}},[]),e}},5704:(e,t,n)=>{Promise.resolve().then(n.bind(n,2114))},8848:(e,t,n)=>{"use strict";n.d(t,{H4:()=>c,L:()=>h,z4:()=>o});var a=n(3365),l=n(8197),s=n.n(l),i=n(1521),d=n(5549),r=n(867);function c(e){let{current:t,onUse:n}=e,{t:l}=(0,r.kj)(),[s,c]=(0,i.useState)(null);if((0,i.useEffect)(()=>{let e=!1;return d.FH.project().then(t=>{e||c(t)}).catch(()=>void 0),()=>{e=!0}},[]),!s)return null;let h=s.rootDir.trim(),o=t.trim().toLowerCase(),m=n?s.others.filter(e=>e.rootDir.trim().toLowerCase()!==o):[];return(0,a.jsx)(u,{label:h?l("proj.defaultIs",{dir:h}):l("proj.noneShort"),offer:h&&n&&o!==h.toLowerCase()?{text:l("proj.useIt"),onUse:()=>n(h)}:void 0,more:m.map(e=>({text:l("proj.otherUse",{name:e.name}),title:e.rootDir,onUse:()=>null==n?void 0:n(e.rootDir)})),link:h?l("proj.change"):l("proj.setIt"),anchor:"project"})}function h(e){let{current:t,onUse:n}=e,l=m(),{t:s}=(0,r.kj)();if(!l)return null;let i=l.defaultModel.trim();return(0,a.jsx)(u,{label:i?s("def.modelDefaultIs",{name:i}):s("def.modelNoneShort"),offer:i&&n&&t.trim()!==i?{text:s("def.modelUseIt"),onUse:()=>n(i)}:void 0,link:s(i?"proj.change":"proj.setIt"),anchor:"model"})}function o(e){let{current:t,onUse:n}=e,l=m(),{t:s}=(0,r.kj)();if(!l)return null;let i=l.defaultReviewModel.trim();return(0,a.jsx)(u,{label:i?s("def.reviewDefaultIs",{name:i}):s("def.reviewNoneShort"),offer:i&&n&&t.trim()!==i?{text:s("def.modelUseIt"),onUse:()=>n(i)}:void 0,link:s(i?"proj.change":"proj.setIt"),anchor:"review"})}function m(){let[e,t]=(0,i.useState)(null);return(0,i.useEffect)(()=>{let e=!1;return d.FH.models().then(n=>{e||t(n)}).catch(()=>void 0),()=>{e=!0}},[]),e}function u(e){let{label:t,offer:n,more:l=[],link:i,anchor:d}=e;return(0,a.jsxs)("p",{className:"muted small",style:{marginTop:4},children:[t," ",n&&(0,a.jsxs)(a.Fragment,{children:["\xb7"," ",(0,a.jsx)("button",{type:"button",className:"linkish",onClick:n.onUse,children:n.text})," "]}),l.map(e=>(0,a.jsxs)("span",{children:["\xb7"," ",(0,a.jsx)("button",{type:"button",className:"linkish",onClick:e.onUse,title:e.title,children:e.text})," "]},e.text)),"\xb7 ",(0,a.jsx)(s(),{href:"/defaults#".concat(d),children:i})]})}}},e=>{e.O(0,[197,867,549,499,347,131,358],()=>e(e.s=5704)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[898],{4350:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>x});var a=n(3365),l=n(1521),s=n(8197),i=n.n(s),d=n(5549),r=n(7527),c=n(867),h=n(1035),o=n(4811),m=n(8848),u=n(3486),p=n(1701),g=n(3069);function x(){let{t:e}=(0,c.kj)(),t=(0,c.W3)(),[n,s]=(0,l.useState)(null),[o,m]=(0,l.useState)(null),[u,p]=(0,l.useState)([]),[g,x]=(0,l.useState)([]),[b,v]=(0,l.useState)([]),[f,N]=(0,l.useState)("stop"),[w,y]=(0,l.useState)(!1),[k,S]=(0,l.useState)(""),[C,F]=(0,l.useState)(""),[I,H]=(0,l.useState)(""),[W,D]=(0,l.useState)(null),[T,R]=(0,l.useState)(!1),U=(0,l.useCallback)(async()=>{try{let[e,t,n]=await Promise.all([d.FH.sessions(),d.FH.batch().catch(()=>null),d.FH.approvals().catch(()=>[])]);s(e),m(t),p(n),x(t=>t.filter(t=>e.some(e=>e.id===t))),D(!0),R(!1),H("")}catch(e){R(!(0,d.AV)()),D(!1),H(e.message)}},[]);(0,r.z)(U,3e3),(0,l.useEffect)(()=>{var e;let t=new URLSearchParams(window.location.search),n=(null!=(e=t.get("run"))?e:"").split(",").map(e=>e.trim()).filter(Boolean);0!==n.length&&(x(n),N("continue"===t.get("fail")?"continue":"stop"),y(!0),window.history.replaceState(null,"",window.location.pathname))},[]);let[O,E]=(0,l.useState)(!1),B=(0,l.useRef)(!1),M=async()=>{if(!B.current){B.current=!0,E(!0);try{let e=await d.FH.createSession(k||"session");S(""),window.location.href=(0,d.aT)(e.id)}catch(e){H(e.message),B.current=!1,E(!1)}}},q=async t=>{if(t.running)return void F(e("home.deleteRunning"));if(await (0,h.Z)(e("home.deleteConfirm",{name:t.name,n:t.tasks.length})))try{await d.FH.deleteSession(t.id),F(e("home.deleted",{name:t.name})),x(e=>e.filter(e=>e!==t.id)),await U()}catch(e){F(e.message)}},A=async()=>{let t=(null!=n?n:[]).filter(e=>b.includes(e.id)&&!e.running);if(0===t.length)return;let a=t.map(e=>"• ".concat(e.name," (").concat(e.tasks.length,")")).join("\n");if(!await (0,h.Z)(e("home.deleteSelectedConfirm",{n:t.length,names:a})))return;let l=0,s=[];for(let e of t)try{await d.FH.deleteSession(e.id),l+=1}catch(t){s.push("".concat(e.name,": ").concat(t.message))}F(0===s.length?e("home.deletedMany",{n:l}):e("home.deleteSomeFailed",{n:l,m:s.length,why:s.join("; ")})),x(e=>e.filter(e=>!t.some(t=>t.id===e))),v([]),await U()},L=async t=>{let a=(null!=n?n:[]).filter(e=>b.includes(e.id)&&!e.running);if(0===a.length)return;let l=[];for(let e of a)try{await d.FH.updateSession(e.id,{active:t})}catch(t){l.push("".concat(e.name,": ").concat(t.message))}F(0===l.length?e(t?"home.madeActive":"home.madeInactive",{n:a.length}):e("home.statusSomeFailed",{n:a.length-l.length,m:l.length,why:l.join("; ")})),t||x(e=>e.filter(e=>!a.some(t=>t.id===e))),v([]),await U()},P=t=>{if(t.running)return{label:e("state.running"),badge:"running"};let n=t.tasks.some(e=>"queued"===e.status||"running"===e.status);if("idle"!==t.status||n||0===t.tasks.length)return{label:e("state.".concat(t.status)),badge:""};let a=t.tasks.filter(e=>"done"!==e.status).length;return 0===a?{label:e("state.completed"),badge:"done",title:e("state.completedTitle")}:{label:e("state.ended"),badge:"failed",title:e("state.endedTitle",{n:a})}},_=async e=>{if(!n)return;let t=new Map(n.map(e=>[e.id,e]));s(e.map(e=>t.get(e)).filter(e=>!!e));try{s(await d.FH.reorderSessions(e)),H("")}catch(e){H(e.message),U()}},K=(e,t)=>{let a=(null!=n?n:[]).map(e=>e.id),l=a.indexOf(e),s=l+t;l<0||s<0||s>=a.length||([a[l],a[s]]=[a[s],a[l]],_(a))},[Z,z]=(0,l.useState)(null),[V,Q]=(0,l.useState)(null),X=(null!=n?n:[]).filter(e=>!e.running),G=X.filter(e=>b.includes(e.id));return(0,a.jsxs)(a.Fragment,{children:[T&&(0,a.jsxs)("div",{className:"panel",children:[(0,a.jsx)("strong",{children:e("home.noToken")}),(0,a.jsx)("div",{className:"muted small",children:e("home.noTokenHint",{cmd:"npm start"})})]}),!1===W&&!T&&(0,a.jsxs)("div",{className:"panel",children:[(0,a.jsx)("strong",{children:e("home.apiDown")}),(0,a.jsx)("div",{className:"muted small",children:e("home.apiHint",{cmd:"npm start",url:"/api"})}),I&&(0,a.jsx)("div",{className:"err",children:I})]}),(0,a.jsxs)("div",{className:"panel",id:"new-session",children:[(0,a.jsx)("h2",{children:e("home.new")}),(0,a.jsx)("p",{className:"muted small",children:e("home.newHint")}),(0,a.jsxs)("div",{className:"row",children:[(0,a.jsx)("input",{type:"text",className:"grow","aria-label":e("home.col.name"),placeholder:e("home.namePlaceholder"),value:k,onChange:e=>S(e.target.value),onKeyDown:e=>{"Enter"===e.key&&M()}}),(0,a.jsx)("button",{className:"primary",onClick:()=>void M(),disabled:O||!1===W,children:e("home.create")})]})]}),n&&n.length>0&&(0,a.jsx)(j,{sessions:n,selected:g,setSelected:x,onFailure:f,setOnFailure:N,fromPlan:w,batch:o,approvals:u,onChange:U,move:(e,t)=>{x(n=>{let a=n.indexOf(e),l=a+t;if(a<0||l<0||l>=n.length)return n;let s=[...n];return[s[a],s[l]]=[s[l],s[a]],s})}}),(0,a.jsxs)("div",{className:"panel",children:[(0,a.jsx)("h2",{children:e("home.sessions")}),null===n&&(0,a.jsx)("div",{className:"muted",children:e("home.loading")}),n&&0===n.length&&(0,a.jsx)("div",{className:"muted",children:e("home.none")}),n&&n.length>0&&(0,a.jsxs)("div",{className:"row",style:{marginBottom:10},children:[(0,a.jsx)("strong",{className:"small",children:e("home.managed",{n:G.length})}),(0,a.jsx)("button",{onClick:()=>void L(!0),disabled:0===G.length,children:e("home.makeActive")}),(0,a.jsx)("button",{onClick:()=>void L(!1),disabled:0===G.length,children:e("home.makeInactive")}),(0,a.jsx)("button",{className:"danger",onClick:()=>void A(),disabled:0===G.length,children:e("home.deleteSelected",{n:G.length})}),(0,a.jsx)("span",{className:"muted small",children:e("home.tickForBoth")})]}),n&&n.length>0&&(0,a.jsx)("p",{className:"muted small",children:e("home.deleteWhy")}),n&&n.length>1&&(0,a.jsx)("p",{className:"muted small",children:e("home.orderWhy")}),C&&(0,a.jsx)("div",{className:"muted small",role:"status",children:C}),n&&n.length>0&&(0,a.jsxs)("table",{children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{children:(0,a.jsx)("input",{type:"checkbox","aria-label":e("home.manageAll"),title:e("home.manageAll"),checked:X.length>0&&X.every(e=>b.includes(e.id)),onChange:e=>v(e.target.checked?X.map(e=>e.id):[]),disabled:0===X.length})}),(0,a.jsx)("th",{children:(0,a.jsx)("input",{type:"checkbox","aria-label":e("home.selectAll"),checked:n.length>0&&g.length===n.filter(e=>!1!==e.active).length,onChange:e=>x(e.target.checked?n.filter(e=>!1!==e.active).map(e=>e.id):[]),disabled:(null==o?void 0:o.running)===!0})}),(0,a.jsx)("th",{children:e("home.col.order")}),(0,a.jsx)("th",{children:e("home.col.name")}),(0,a.jsx)("th",{children:e("home.col.tasks")}),(0,a.jsx)("th",{children:e("home.col.state")}),(0,a.jsx)("th",{children:e("home.col.chat")}),(0,a.jsx)("th",{children:e("home.col.created")}),(0,a.jsx)("th",{children:(0,a.jsx)("span",{className:"visually-hidden",children:e("home.col.remove")})})]})}),(0,a.jsx)("tbody",{children:n.map((l,s)=>{let r=l.tasks.filter(e=>"done"===e.status).length,c=l.tasks.filter(e=>"queued"===e.status).length,h=[!1===l.active?"inactive":"",Z===l.id?"dragging":"",V===l.id&&Z!==l.id?"drop-target":""].filter(Boolean).join(" ");return(0,a.jsxs)("tr",{className:h||void 0,draggable:!0,onDragStart:e=>{e.dataTransfer.setData("text/plain",l.id),e.dataTransfer.effectAllowed="move",z(l.id)},onDragOver:e=>{Z&&(e.preventDefault(),e.dataTransfer.dropEffect="move",V!==l.id&&Q(l.id))},onDrop:e=>{e.preventDefault();let t=e.dataTransfer.getData("text/plain")||Z;z(null),Q(null),t&&((e,t)=>{let a=(null!=n?n:[]).map(e=>e.id),l=a.indexOf(e),s=a.indexOf(t);l<0||s<0||l===s||(a.splice(l,1),a.splice(s,0,e),_(a))})(t,l.id)},onDragEnd:()=>{z(null),Q(null)},children:[(0,a.jsx)("td",{children:(0,a.jsx)("input",{type:"checkbox",checked:b.includes(l.id),onChange:()=>v(e=>e.includes(l.id)?e.filter(e=>e!==l.id):[...e,l.id]),disabled:!!l.running,"aria-label":e("home.manageRow",{name:l.name}),title:l.running?e("home.manageRunning"):e("home.manageRow",{name:l.name})})}),(0,a.jsx)("td",{children:(0,a.jsx)("input",{type:"checkbox",checked:g.includes(l.id),onChange:()=>{var e;return e=l.id,void x(t=>{if(t.includes(e))return t.filter(t=>t!==e);let a=(null!=n?n:[]).map(e=>e.id);return[...t,e].sort((e,t)=>a.indexOf(e)-a.indexOf(t))})},disabled:(null==o?void 0:o.running)===!0||!1===l.active,"aria-label":l.name,title:!1===l.active?e("home.inactiveWhy"):void 0})}),(0,a.jsxs)("td",{className:"order-cell",children:[(0,a.jsx)("span",{className:"drag-handle","aria-hidden":"true",title:e("home.dragHint"),children:"⠿"}),(0,a.jsx)("button",{className:"quiet small",onClick:()=>K(l.id,-1),disabled:0===s,"aria-label":e("home.moveUp",{name:l.name}),title:e("home.moveUp",{name:l.name}),children:"↑"}),(0,a.jsx)("button",{className:"quiet small",onClick:()=>K(l.id,1),disabled:s===n.length-1,"aria-label":e("home.moveDown",{name:l.name}),title:e("home.moveDown",{name:l.name}),children:"↓"})]}),(0,a.jsx)("td",{children:(0,a.jsx)(i(),{href:(0,d.aT)(l.id),children:l.name})}),(0,a.jsxs)("td",{children:[l.tasks.length," ",(0,a.jsx)("span",{className:"muted small",children:e("home.tasksDetail",{done:r,queued:c})})]}),(0,a.jsxs)("td",{children:[(0,a.jsx)("span",{className:"badge ".concat(P(l).badge),title:P(l).title,children:P(l).label})," ",(0,a.jsx)("span",{className:"chip".concat(!1===l.active?" inactive":""),title:e(!1===l.active?"home.inactiveWhy":"home.activeWhy"),children:e(!1===l.active?"home.statusInactive":"home.statusActive")})]}),(0,a.jsx)("td",{children:l.chat?(0,a.jsx)("a",{href:l.chat.url,target:"_blank",rel:"noreferrer",children:l.chat.name}):(0,a.jsx)("span",{className:"muted",children:e("home.notOpened")})}),(0,a.jsx)("td",{className:"muted small",children:t(l.createdAt)}),(0,a.jsx)("td",{children:(0,a.jsx)("button",{className:"quiet",onClick:()=>void q(l),disabled:!!l.running,title:e("home.delete"),children:e("home.delete")})})]},l.id)})})]})]})]})}function j(e){var t,n,s,r,x,j,b;let{sessions:v,selected:f,setSelected:N,onFailure:w,setOnFailure:y,fromPlan:k,batch:S,approvals:C,onChange:F,move:I}=e,{t:H}=(0,c.kj)(),[W,D]=(0,l.useState)(""),[T,R]=(0,l.useState)(""),[U,O]=(0,l.useState)(void 0),[E,B]=(0,l.useState)(""),[M,q]=(0,l.useState)(""),[A,L]=(0,l.useState)(""),[P,_]=(0,l.useState)(null),[K,Z]=(0,l.useState)([]),[z,V]=(0,l.useState)(0);(0,l.useEffect)(()=>{d.FH.models().then(e=>{_(e),B(t=>t||e.defaultModel),q(t=>t||e.defaultReviewModel)}).catch(()=>void 0)},[]);let Q=f.join(",");(0,l.useEffect)(()=>{let e=!1,t=Q.split(",").filter(Boolean);if(0===t.length)return void Z([]);let n=async()=>{let n=await d.FH.runVcs(t).catch(()=>[]);e||Z(n)};n();let a=setInterval(()=>void n(),1e4);return()=>{e=!0,clearInterval(a)}},[Q,z]);let X=new Map(v.map(e=>[e.id,e])),G=e=>e.tasks.filter(e=>"queued"===e.status).length,J=f.map(e=>X.get(e)).filter(e=>!!e),Y=J.filter(e=>G(e)>0&&!1!==e.active),$=Y.reduce((e,t)=>e+G(t),0),ee=(null==S?void 0:S.running)===!0,et=v.some(e=>e.running),en=K.some(e=>!e.ready&&!e.startChoiceCanFix),ea=ee||0===Y.length||et||en,el=et?{title:"batch.oneRunning",why:"batch.oneRunningWhy"}:0===J.length?{title:"batch.pickFirst",why:"batch.pickFirstWhy"}:0===Y.length?{title:"batch.nothingRunnable",why:"batch.nothingRunnableWhy"}:null,es=(0,o.p)(),[ei,ed]=(0,l.useState)(!1),er=(0,l.useRef)(!1),ec=async e=>{if(!er.current){er.current=!0,ed(!0);try{await e()}catch(e){R(e.message)}finally{er.current=!1,ed(!1),F()}}},eh=async e=>{("unattended"!==e||es||await (0,h.Z)(H("batch.unattendedConfirm",{n:Y.length})))&&await ec(async()=>{var t,n,a;let l=Y.map(e=>e.id),s=await (0,p.L)({sessionIds:l,mode:e,start:t=>d.FH.startBatch(l,e,w,E||void 0,M||void 0,A.trim()||Y.map(e=>e.planName).find(Boolean)||void 0,void 0,t)});D(""),R(s.started?"":null!=(a=null==(t=s.reply)?void 0:t.reason)?a:""),O(s.started||null==(n=s.reply)?void 0:n.failure),V(e=>e+1)})},eo=J.filter(e=>{var t;return(null!=(t=e.model)?t:"")!==E}).length,em=J.filter(e=>{var t;return(null==(t=e.review)?void 0:t.enabled)===!1}).length,eu=null!=(s=null==P?void 0:P.options)?s:[],ep=eu.filter(e=>!e.group),eg=new Map;for(let e of eu)e.group&&eg.set(e.group,[...null!=(r=eg.get(e.group))?r:[],e]);let ex=S?{done:S.sessions.filter(e=>"done"===e.state).length,failed:S.sessions.filter(e=>"failed"===e.state).length,skipped:S.sessions.filter(e=>"skipped"===e.state||"stopped"===e.state).length}:null,ej=null==S?void 0:S.sessions.find(e=>"running"===e.state);return(0,a.jsxs)("div",{className:"panel",children:[(0,a.jsx)("h2",{children:H("batch.title")}),(0,a.jsx)("p",{className:"muted small",children:H("batch.hint")}),!ee&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"row",children:[(0,a.jsx)("strong",{className:"small",children:H("batch.selected",{n:Y.length,tasks:$})}),(0,a.jsx)("button",{className:"quiet",onClick:()=>N(v.filter(e=>G(e)>0).map(e=>e.id)),children:H("batch.selectQueued")}),(0,a.jsx)("button",{className:"quiet",onClick:()=>N([]),disabled:0===J.length,children:H("batch.selectNone")})]}),k&&(0,a.jsx)("p",{className:"muted small",children:H("batch.fromPlan")}),J.length>Y.length&&(0,a.jsx)("p",{className:"muted small",children:H("batch.notRunnable",{n:J.length-Y.length})}),Y.length>0&&(0,a.jsx)("ol",{className:"run-order",children:Y.map((e,t)=>(0,a.jsxs)("li",{children:[(0,a.jsxs)("span",{children:[e.name," ",(0,a.jsxs)("span",{className:"muted small",children:["(",G(e),")"]})]}),(0,a.jsxs)("span",{children:[(0,a.jsx)("button",{className:"quiet",onClick:()=>I(e.id,-1),disabled:0===t,"aria-label":H("batch.moveUp",{name:e.name}),children:"↑"}),(0,a.jsx)("button",{className:"quiet",onClick:()=>I(e.id,1),disabled:t===Y.length-1,"aria-label":H("batch.moveDown",{name:e.name}),children:"↓"})]})]},e.id))}),(0,a.jsx)("label",{htmlFor:"batch-run-name",children:H("batch.runName")}),(0,a.jsx)("input",{id:"batch-run-name",type:"text",value:A,onChange:e=>L(e.target.value),placeholder:null!=(x=Y.map(e=>e.planName).find(Boolean))?x:H("batch.runNamePlaceholder")}),(0,a.jsx)("p",{className:"why",children:H("batch.runNameWhy")}),(0,a.jsx)("label",{htmlFor:"batch-model",children:H("batch.model")}),(0,a.jsxs)("div",{className:"row",children:[(0,a.jsxs)("select",{id:"batch-model",value:E,onChange:e=>B(e.target.value),style:{width:"auto",minWidth:260},children:[(0,a.jsx)("option",{value:"",children:H("batch.modelKeep")}),ep.map(e=>(0,a.jsx)("option",{value:e.name,disabled:e.disabled,children:e.name},e.name)),[...eg.entries()].map(e=>{let[t,n]=e;return(0,a.jsx)("optgroup",{label:t,children:n.map(e=>(0,a.jsx)("option",{value:e.name,disabled:e.disabled,children:e.name},e.name))},t)})]}),(null!=(j=null==P?void 0:P.options.length)?j:0)===0&&(0,a.jsx)("span",{className:"muted small",children:H("batch.modelNone")})]}),(0,a.jsx)("p",{className:"why",children:H("batch.modelWhy")}),(0,a.jsx)(m.L,{current:E,onUse:e=>B(e)}),E&&eo>0&&(0,a.jsx)("p",{className:"why",style:{color:"var(--warn)"},children:H("batch.modelOverrides",{n:eo})}),(0,a.jsx)("label",{htmlFor:"batch-review-model",children:H("batch.reviewModel")}),(0,a.jsx)("div",{className:"row",children:(0,a.jsxs)("select",{id:"batch-review-model",value:M,onChange:e=>q(e.target.value),style:{width:"auto",minWidth:260},children:[(0,a.jsx)("option",{value:"",children:H("batch.reviewModelKeep")}),ep.map(e=>(0,a.jsx)("option",{value:e.name,disabled:e.disabled,children:e.name},e.name)),[...eg.entries()].map(e=>{let[t,n]=e;return(0,a.jsx)("optgroup",{label:t,children:n.map(e=>(0,a.jsx)("option",{value:e.name,disabled:e.disabled,children:e.name},e.name))},t)})]})}),(0,a.jsx)("p",{className:"why",children:H("batch.reviewModelWhy")}),""!==M&&M===E&&(0,a.jsx)("p",{className:"why",style:{color:"var(--warn)"},children:H("batch.reviewSame")}),em>0&&(0,a.jsx)("p",{className:"why",children:H("batch.reviewOffIn",{n:em})}),(0,a.jsxs)("fieldset",{style:{border:0,padding:0,margin:"10px 0 14px"},children:[(0,a.jsx)("legend",{className:"muted small",style:{padding:0},children:H("batch.onFailure")}),(0,a.jsxs)("div",{className:"option",children:[(0,a.jsxs)("label",{children:[(0,a.jsx)("input",{type:"radio",name:"batch-fail",checked:"stop"===w,onChange:()=>y("stop")}),(0,a.jsx)("span",{children:H("batch.chain")})]}),(0,a.jsx)("p",{className:"why",children:H("batch.chainWhy")})]}),(0,a.jsxs)("div",{className:"option",children:[(0,a.jsxs)("label",{children:[(0,a.jsx)("input",{type:"radio",name:"batch-fail",checked:"continue"===w,onChange:()=>y("continue")}),(0,a.jsx)("span",{children:H("batch.independent")})]}),(0,a.jsx)("p",{className:"why",children:H("batch.independentWhy")})]})]}),el&&(0,a.jsxs)("div",{className:"notice caution",children:[(0,a.jsx)("strong",{children:H(el.title)}),(0,a.jsx)("div",{className:"small",style:{marginTop:4},children:H(el.why)})]}),(0,a.jsx)(u.w,{groups:K,sessionIds:Y.map(e=>e.id),onChange:()=>V(e=>e+1)}),T&&(0,a.jsx)(g.X,{failure:U,reason:T,children:/execution\.isolation/.test(T)&&(0,a.jsx)("div",{className:"small",style:{marginTop:4},children:(0,a.jsx)(i(),{href:"/defaults",children:H("batch.notStartedIsolation")})})}),!en&&(0,a.jsxs)("div",{className:"run-choice",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("button",{className:"primary",onClick:()=>void eh("unattended"),disabled:ei||ea,children:H("batch.run",{n:Y.length})}),(0,a.jsx)("p",{className:"why",children:H("batch.runWhy")})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("button",{onClick:()=>void eh("confirm"),disabled:ei||ea,children:H("batch.runStep")}),(0,a.jsx)("p",{className:"why",children:H("batch.runStepWhy")})]})]})]}),ee&&(0,a.jsxs)("div",{className:"row",children:[(null==S?void 0:S.pausing)?(0,a.jsx)("button",{className:"primary",onClick:()=>void ec(async()=>{await d.FH.resumeBatch(),D("")}),disabled:ei||(null==S?void 0:S.stopping),title:H("batch.resumeWhy"),children:H("batch.resume")}):(0,a.jsx)("button",{onClick:()=>void ec(async()=>{await d.FH.pauseBatch(),D(H("batch.pausing"))}),disabled:ei||(null==S?void 0:S.stopping),title:H("batch.pauseWhy"),children:H("batch.pause")}),(0,a.jsx)("button",{onClick:()=>void ec(async()=>{await d.FH.stopBatch(),D(H("batch.stopping"))}),disabled:ei||(null==S?void 0:S.stopping),title:H("batch.stopWhy"),children:H("batch.stop")}),(null==S?void 0:S.pausing)&&!(null==S?void 0:S.stopping)&&(0,a.jsx)("span",{className:"muted small",children:H("batch.pausing")}),(0,a.jsx)("span",{className:"badge",children:H("batch.modelRunning",{name:(ej?(null==(t=X.get(ej.sessionId))?void 0:t.modelInUse)||(null==(n=X.get(ej.sessionId))?void 0:n.model):"")||H("model.default")})}),C.length>0&&(0,a.jsx)("span",{className:"badge waiting-approval",children:H("batch.waiting",{n:C.length})}),ej&&(0,a.jsx)("span",{className:"small",children:H("batch.progress",{name:ej.name,done:S.sessions.filter(e=>"waiting"!==e.state&&"running"!==e.state).length,total:S.sessions.length})})]}),ee&&(0,a.jsx)("p",{className:"muted small",children:H("batch.hiddenWhileRunning")}),W&&(0,a.jsx)("div",{className:"muted small",role:"status",children:W}),(J.length>0||S)&&(0,a.jsxs)("div",{className:"row",style:{marginTop:12},children:[(0,a.jsx)("a",{className:"button-link",href:d.FH.debugExportUrl(J.length>0?J.map(e=>e.id):(null!=(b=null==S?void 0:S.sessions)?b:[]).map(e=>e.sessionId)),children:H("batch.debug")}),(0,a.jsx)("span",{className:"muted small",children:J.length>0?H("batch.debugSelected",{n:J.length}):H("batch.debugLast")})]}),(J.length>0||S)&&(0,a.jsx)("p",{className:"why",children:H("batch.debugWhy")}),S&&(0,a.jsxs)(a.Fragment,{children:[!ee&&ex&&(0,a.jsx)("div",{className:"notice calm",style:{marginTop:12},children:(0,a.jsx)("strong",{children:H("batch.finished",ex)})}),(0,a.jsxs)("table",{style:{marginTop:10},children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{children:H("batch.col.session")}),(0,a.jsx)("th",{children:H("batch.col.state")}),(0,a.jsx)("th",{children:H("batch.col.ran")}),(0,a.jsx)("th",{children:H("batch.col.why")})]})}),(0,a.jsx)("tbody",{children:S.sessions.map(e=>{var t,n;return(0,a.jsxs)("tr",{className:"batch-row ".concat(e.state),children:[(0,a.jsx)("td",{children:(0,a.jsx)(i(),{href:(0,d.aT)(e.sessionId),children:e.name})}),(0,a.jsx)("td",{children:(0,a.jsx)("span",{className:"badge ".concat("running"===(n=e.state)?"running":"done"===n?"done":"failed"===n?"failed":"stopped"===n?"aborted":""),children:H("batch.state.".concat(e.state))})}),(0,a.jsx)("td",{className:"small",children:H("batch.ranOf",{ran:e.ran,failed:e.failed})}),(0,a.jsx)("td",{className:"muted small",children:null!=(t=e.reason)?t:""})]},e.sessionId)})})]})]})]})}},4779:(e,t,n)=>{Promise.resolve().then(n.bind(n,4350))},4811:(e,t,n)=>{"use strict";n.d(t,{p:()=>s});var a=n(1521),l=n(5549);function s(){let[e,t]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{let e=!0;return l.FH.settings().then(n=>{var a;let l=null!=(a=n.raw.execution)?a:{};e&&t("unattended"===l.mode)}).catch(()=>void 0),()=>{e=!1}},[]),e}},8848:(e,t,n)=>{"use strict";n.d(t,{H4:()=>c,L:()=>h,z4:()=>o});var a=n(3365),l=n(8197),s=n.n(l),i=n(1521),d=n(5549),r=n(867);function c(e){let{current:t,onUse:n}=e,{t:l}=(0,r.kj)(),[s,c]=(0,i.useState)(null);if((0,i.useEffect)(()=>{let e=!1;return d.FH.project().then(t=>{e||c(t)}).catch(()=>void 0),()=>{e=!0}},[]),!s)return null;let h=s.rootDir.trim(),o=t.trim().toLowerCase(),m=n?s.others.filter(e=>e.rootDir.trim().toLowerCase()!==o):[];return(0,a.jsx)(u,{label:h?l("proj.defaultIs",{dir:h}):l("proj.noneShort"),offer:h&&n&&o!==h.toLowerCase()?{text:l("proj.useIt"),onUse:()=>n(h)}:void 0,more:m.map(e=>({text:l("proj.otherUse",{name:e.name}),title:e.rootDir,onUse:()=>null==n?void 0:n(e.rootDir)})),link:h?l("proj.change"):l("proj.setIt"),anchor:"project"})}function h(e){let{current:t,onUse:n}=e,l=m(),{t:s}=(0,r.kj)();if(!l)return null;let i=l.defaultModel.trim();return(0,a.jsx)(u,{label:i?s("def.modelDefaultIs",{name:i}):s("def.modelNoneShort"),offer:i&&n&&t.trim()!==i?{text:s("def.modelUseIt"),onUse:()=>n(i)}:void 0,link:s(i?"proj.change":"proj.setIt"),anchor:"model"})}function o(e){let{current:t,onUse:n}=e,l=m(),{t:s}=(0,r.kj)();if(!l)return null;let i=l.defaultReviewModel.trim();return(0,a.jsx)(u,{label:i?s("def.reviewDefaultIs",{name:i}):s("def.reviewNoneShort"),offer:i&&n&&t.trim()!==i?{text:s("def.modelUseIt"),onUse:()=>n(i)}:void 0,link:s(i?"proj.change":"proj.setIt"),anchor:"review"})}function m(){let[e,t]=(0,i.useState)(null);return(0,i.useEffect)(()=>{let e=!1;return d.FH.models().then(n=>{e||t(n)}).catch(()=>void 0),()=>{e=!0}},[]),e}function u(e){let{label:t,offer:n,more:l=[],link:i,anchor:d}=e;return(0,a.jsxs)("p",{className:"muted small",style:{marginTop:4},children:[t," ",n&&(0,a.jsxs)(a.Fragment,{children:["\xb7"," ",(0,a.jsx)("button",{type:"button",className:"linkish",onClick:n.onUse,children:n.text})," "]}),l.map(e=>(0,a.jsxs)("span",{children:["\xb7"," ",(0,a.jsx)("button",{type:"button",className:"linkish",onClick:e.onUse,title:e.title,children:e.text})," "]},e.text)),"\xb7 ",(0,a.jsx)(s(),{href:"/defaults#".concat(d),children:i})]})}}},e=>{e.O(0,[197,867,549,499,347,131,358],()=>e(e.s=4779)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[66],{1702:(e,s,n)=>{"use strict";var a=n(9962);n.o(a,"usePathname")&&n.d(s,{usePathname:function(){return a.usePathname}}),n.o(a,"useRouter")&&n.d(s,{useRouter:function(){return a.useRouter}}),n.o(a,"useSearchParams")&&n.d(s,{useSearchParams:function(){return a.useSearchParams}})},1772:(e,s,n)=>{Promise.resolve().then(n.bind(n,2438))},2438:(e,s,n)=>{"use strict";n.r(s),n.d(s,{default:()=>W});var a=n(3365),t=n(1521),l=n(1702),i=n(8197),r=n.n(i),c=n(5549),d=n(867),o=n(1910),h=n(3523),u=n(3374),m=n(8078),p=n(8848),v=n(4784),x=n(7619),j=n(5132),g=n(1035),f=n(8934),y=n(4811),b=n(3041),k=n(7527),N=n(1366),w=n(8596),S=n(287),C=n(6983),F=n(1701),I=n(9717);function W(){return(0,a.jsx)(t.Suspense,{fallback:null,children:(0,a.jsx)(M,{})})}function M(){var e;let{t:s}=(0,d.kj)(),n=null!=(e=(0,l.useSearchParams)().get("id"))?e:"",[i,o]=(0,t.useState)(null),[h,u]=(0,t.useState)([]),[m,p]=(0,t.useState)([]),[v,x]=(0,t.useState)(null),[j,g]=(0,t.useState)(""),[f,y]=(0,t.useState)(!1),b=(0,t.useRef)(null),N=(0,t.useRef)(0),w=(0,t.useCallback)(async()=>{if(!n)return;let e=++N.current;try{let s=await c.FH.session(n);if(e!==N.current)return;o(s),g("")}catch(s){if(e!==N.current)return;g(s.message)}},[n]),S=(0,t.useCallback)(()=>{b.current||(b.current=window.setTimeout(()=>{b.current=null,w()},400))},[w]);if((0,t.useEffect)(()=>{if(!n)return;c.FH.presets().then(p).catch(()=>void 0),c.FH.level1().then(x).catch(()=>void 0);let e=new EventSource(c.FH.streamUrl(n));return e.onopen=()=>y(!1),e.onmessage=e=>{let s;try{s=JSON.parse(e.data)}catch(e){return}"ping"!==s.type&&(u(e=>[...e.slice(-400),s]),S())},e.onerror=()=>{e.readyState===EventSource.CLOSED&&y(!0)},()=>{e.close()}},[n,S]),(0,k.z)(w,8e3,!!n),!n)return(0,a.jsx)("div",{className:"panel err",children:s("session.noId")});if(j&&!i)return(0,a.jsx)("div",{className:"panel err",children:j});if(!i)return(0,a.jsx)("div",{className:"panel muted",children:s("home.loading")});let C=i.tasks.filter(e=>"queued"===e.status).length;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"crumbs",children:[(0,a.jsx)(r(),{href:"/sessions",children:s("session.crumb")})," / ",i.name]}),j&&(0,a.jsx)("div",{className:"panel err",role:"alert",children:s("session.stale",{err:j})}),f&&!j&&(0,a.jsx)("div",{className:"panel muted small",role:"status",children:s("session.streamClosed")}),(0,a.jsx)(T,{session:i,queued:C,onChange:w}),(0,a.jsx)(G,{tasks:i.tasks}),(0,a.jsx)(B,{session:i,onChange:w}),(0,a.jsx)(R,{level1:v,sent:i.contractSent}),(0,a.jsx)(P,{session:i,onChange:w}),(0,a.jsx)(O,{session:i,onChange:w}),(0,a.jsxs)("div",{className:"panel",children:[(0,a.jsx)("h2",{children:s("tasks.title")}),(0,a.jsx)("p",{className:"muted small",children:s("tasks.hint")}),(0,a.jsx)(D,{session:i,onChange:w}),0===i.tasks.length&&(0,a.jsx)("div",{className:"muted",children:s("tasks.none")}),i.tasks.map((e,s)=>(0,a.jsx)(U,{session:i,task:e,index:s+1,presets:m,onChange:w},e.id))]}),(0,a.jsx)(L,{session:i}),(0,a.jsx)(q,{session:i,presets:m,onAdded:w,onPresetsChanged:()=>c.FH.presets().then(p)}),(0,a.jsx)(J,{events:h})]})}function T(e){var s,n;let{session:l,queued:i,onChange:r}=e,{t:o}=(0,d.kj)(),[h,u]=(0,t.useState)(""),[m,p]=(0,t.useState)("");(0,t.useEffect)(()=>{c.FH.models().then(e=>{var s;return p(null!=(s=e.defaultModel)?s:"")}).catch(()=>void 0)},[]);let[v,x]=(0,t.useState)(l.name),[j,f]=(0,t.useState)(null!=(s=l.conversationGroup)?s:"");(0,t.useEffect)(()=>x(l.name),[l.name]),(0,t.useEffect)(()=>{var e;return f(null!=(e=l.conversationGroup)?e:"")},[l.conversationGroup]);let b=(0,y.p)(),[k,N]=(0,t.useState)(!1),w=(0,t.useRef)(!1),S=async e=>{if(!w.current){w.current=!0,N(!0);try{await e()}catch(e){u(e.message)}finally{w.current=!1,N(!1),r()}}},C=async e=>{("unattended"!==e||b||await (0,g.Z)(o("session.unattendedConfirm")))&&await S(async()=>{var s;let n=await (0,F.L)({sessionIds:[l.id],mode:e,start:s=>c.FH.start(l.id,e,l.planName,s)});n.started?u(o("unattended"===e?"session.startedAuto":"session.startedStep")):n.reply&&u(o("session.notStarted",{reason:null!=(s=n.reply.reason)?s:""}))})},I=async()=>{if(l.running)return void u(o("home.deleteRunning"));if(await (0,g.Z)(o("home.deleteConfirm",{name:l.name,n:l.tasks.length})))try{await c.FH.deleteSession(l.id),window.location.href="/"}catch(e){u(e.message)}},W=async()=>{var e;if(j.trim()!==(null!=(e=l.conversationGroup)?e:""))try{await c.FH.updateSession(l.id,{conversationGroup:j.trim()}),u(o("session.groupSaved")),r()}catch(e){u(e.message)}},M=l.running?o("state.running"):o("state.".concat(l.status));return(0,a.jsxs)("div",{className:"panel",children:[(0,a.jsxs)("div",{className:"row",children:[(0,a.jsx)("input",{type:"text",className:"grow","aria-label":o("home.col.name"),value:v,onChange:e=>x(e.target.value),onBlur:()=>void S(async()=>{v.trim()&&v!==l.name&&await c.FH.updateSession(l.id,{name:v})})}),(0,a.jsx)("span",{className:"badge ".concat(l.running?"running":""),children:M})]}),!l.running&&(0,a.jsxs)("div",{className:"run-choice",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("button",{className:"primary",onClick:()=>void C("unattended"),disabled:k||0===i,children:o("session.run",{n:i})}),(0,a.jsx)("p",{className:"why",children:o("session.runWhy")})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("button",{onClick:()=>void C("confirm"),disabled:k||0===i,children:o("session.runStep")}),(0,a.jsx)("p",{className:"why",children:o("session.runStepWhy")})]})]}),(0,a.jsxs)("div",{className:"row",style:{marginTop:10},children:[l.running&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("button",{className:"danger",onClick:()=>void S(async()=>{await c.FH.stop(l.id),u(o("session.stopping"))}),disabled:k,children:o("session.stop")}),"unattended"===l.runMode&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"badge waiting-approval",children:o("session.modeUnattended")}),(0,a.jsx)("button",{onClick:()=>void S(async()=>{await c.FH.setRunMode(l.id,"confirm"),u(o("session.askingAgain"))}),disabled:k,children:o("session.askAgain")})]})]}),(0,a.jsx)("span",{className:"muted small",children:h}),(0,a.jsx)("span",{className:"grow"}),(0,a.jsx)("button",{className:"quiet",onClick:()=>void I(),disabled:l.running,children:o("home.delete")}),l.chat?(0,a.jsx)("a",{href:l.chat.url,target:"_blank",rel:"noreferrer",className:"small",children:o("session.openChat",{name:l.chat.name})}):(0,a.jsx)("span",{className:"muted small",children:o("session.noChat")})]}),(0,a.jsx)("label",{htmlFor:"session-group",children:o("session.group")}),(0,a.jsx)("div",{className:"row",children:(0,a.jsx)("input",{id:"session-group",type:"text",className:"grow",value:j,placeholder:o("session.groupPlaceholder"),onChange:e=>f(e.target.value),onBlur:()=>void W(),disabled:l.running})}),(0,a.jsxs)("p",{className:"why",children:[o("session.groupWhy"),l.chat&&" ".concat(o("session.groupHasChat"))]}),(0,a.jsx)("label",{htmlFor:"session-plan-mode",children:o("pm.sessionSetting")}),(0,a.jsxs)("select",{id:"session-plan-mode",value:null!=(n=l.planMode)?n:"",onChange:e=>{let s=e.target.value;c.FH.updateSession(l.id,{planMode:s}).then(()=>{u(o("pm.saved")),r()}).catch(e=>u(e.message))},disabled:l.running,style:{width:"auto",maxWidth:"100%"},children:[(0,a.jsx)("option",{value:"",children:o("pm.followSettings")}),(0,a.jsx)("option",{value:"off",children:o("pm.off")}),(0,a.jsx)("option",{value:"auto",children:o("pm.auto")}),(0,a.jsx)("option",{value:"approve",children:o("pm.approveMode")})]}),(0,a.jsx)("p",{className:"why",children:o("pm.sessionWhy")}),(0,a.jsx)("div",{className:"muted small",style:{marginTop:10},children:o("session.willUseModel",{name:(l.model&&("operator"===l.modelSource||!m)?l.model:"")||(m?o("model.followsDefault",{name:m}):o("model.default"))})})]})}function R(e){var s;let{level1:n,sent:t}=e,{t:l}=(0,d.kj)();return(0,a.jsxs)("div",{className:"panel",children:[(0,a.jsxs)("div",{className:"row",children:[(0,a.jsx)("h2",{className:"grow",style:{margin:0},children:l("l1.title")}),(0,a.jsx)("span",{className:"badge",children:l(t?"l1.sent":"l1.notSent")}),(0,a.jsx)(r(),{href:"/level1",className:"small",children:l("l1.edit")})]}),(0,a.jsxs)("p",{className:"muted small",style:{marginBottom:6},children:[l("l1.hint"),(null==n?void 0:n.customised)?" ".concat(l("l1.customised")):""]}),(0,a.jsxs)("details",{children:[(0,a.jsx)("summary",{children:l("l1.show")}),(0,a.jsx)("pre",{className:"tall",children:null!=(s=null==n?void 0:n.content)?s:"…"})]})]})}function B(e){var s,n,l,i,r;let{session:o,onChange:h}=e,{t:u}=(0,d.kj)(),m=(0,d.W3)(),[v,x]=(0,t.useState)(null),[j,f]=(0,t.useState)(!1),[y,b]=(0,t.useState)("");(0,t.useEffect)(()=>{c.FH.models().then(x).catch(()=>void 0)},[]);let k=async e=>{try{await c.FH.updateSession(o.id,{model:e}),b(e?u("model.saved",{name:e}):u("model.savedDefault")),h()}catch(e){b(e.message)}},N=async()=>{try{let e=await c.FH.setDefaultModel(C);x(s=>s?{...s,defaultModel:e.defaultModel}:s),b(e.defaultModel?u("model.defaultSaved",{name:e.defaultModel}):u("model.defaultCleared"))}catch(e){b(e.message)}},w=async()=>{if(await (0,g.Z)(u("model.refreshConfirm"))){f(!0),b(u("model.refreshing"));try{var e;let s=await c.FH.refreshModels();x(s),b(0===s.options.length?null!=(e=s.note)?e:u("model.none"):u("model.refreshed",{n:s.options.length}))}catch(e){b(e.message)}finally{f(!1)}}},S=!!o.model&&"operator"!==o.modelSource&&!!(null==v?void 0:v.defaultModel),C=S?"":null!=(s=o.model)?s:"",F=null!=(n=null==v?void 0:v.options)?n:[],I=F.some(e=>e.name===C),W=F.filter(e=>!e.group),M=new Map;for(let e of F)e.group&&M.set(e.group,[...null!=(l=M.get(e.group))?l:[],e]);return(0,a.jsxs)("div",{className:"panel",children:[(0,a.jsxs)("div",{className:"row",children:[(0,a.jsx)("h2",{className:"grow",style:{margin:0},children:u("model.title")}),o.modelInUse&&(0,a.jsx)("span",{className:"chip",children:u("model.lastUsed",{name:o.modelInUse})}),S&&(0,a.jsx)("p",{className:"muted small",children:u("model.planOutranked",{name:null!=(i=o.model)?i:""})})]}),(0,a.jsx)("p",{className:"muted small",children:u("model.hint")}),(0,a.jsxs)("div",{className:"row",children:[(0,a.jsxs)("select",{"aria-label":u("model.title"),value:C,disabled:o.running,onChange:e=>void k(e.target.value),style:{width:"auto",minWidth:260},children:[(0,a.jsx)("option",{value:"",children:(null==v?void 0:v.defaultModel)?u("model.followsDefault",{name:v.defaultModel}):u("model.default")}),C&&!I&&(0,a.jsx)("option",{value:C,children:u("model.notInList",{name:C})}),W.map(e=>(0,a.jsxs)("option",{value:e.name,disabled:e.disabled,children:[e.name,e.disabled?" — ".concat(u("model.unavailable")):""]},e.name)),[...M.entries()].map(e=>{let[s,n]=e;return(0,a.jsx)("optgroup",{label:s,children:n.map(e=>(0,a.jsxs)("option",{value:e.name,disabled:e.disabled,children:[e.name,e.disabled?" — ".concat(u("model.unavailable")):""]},e.name))},s)})]}),(0,a.jsx)("button",{onClick:()=>void w(),disabled:j||o.running,children:u("model.refresh")}),(0,a.jsx)("span",{className:"muted small",role:"status",children:y})]}),(0,a.jsx)(p.L,{current:C,onUse:e=>void k(e)}),(0,a.jsxs)("div",{className:"row",style:{marginTop:8},children:[(0,a.jsx)("span",{className:"muted small",children:(null==v?void 0:v.defaultModel)?u("model.defaultIs",{name:v.defaultModel}):u("model.defaultIsNone")}),(0,a.jsx)("button",{onClick:()=>void N(),disabled:C===(null!=(r=null==v?void 0:v.defaultModel)?r:""),children:C?u("model.makeDefault",{name:C}):u("model.clearDefault")})]}),(null==v?void 0:v.readAt)?(0,a.jsxs)("p",{className:"muted small",style:{marginTop:8},children:[u("model.readAt",{t:m(v.readAt),n:v.options.length}),v.current?" ".concat(u("model.chatWasOn",{name:v.current})):"",v.note?" ".concat(v.note):""]}):(0,a.jsx)("p",{className:"muted small",style:{marginTop:8},children:u("model.neverRead")}),F.length>0&&(0,a.jsxs)("details",{children:[(0,a.jsx)("summary",{children:u("model.showDetails")}),(0,a.jsx)("pre",{className:"tall",children:F.map(e=>"".concat(e.selected?"*":" "," ").concat(e.group?"".concat(e.group," > "):"").concat(e.name)+"".concat(e.disabled?" [unavailable]":"","\n ").concat(e.raw.replace(/\n/g," | "))).join("\n")})]})]})}function O(e){var s,n;let{session:l,onChange:i}=e,{t:r}=(0,d.kj)(),o=null!=(s=l.review)?s:{enabled:!0,model:""},[h,u]=(0,t.useState)(o.enabled),[m,x]=(0,t.useState)(null!=(n=o.model)?n:""),[j,g]=(0,t.useState)(""),[f,y]=(0,t.useState)(!1),[b,k]=(0,t.useState)("");(0,t.useEffect)(()=>{c.FH.models().then(e=>{var s;k(null!=(s=e.defaultReviewModel)?s:""),e.defaultReviewModel&&"operator"!==l.reviewModelSource&&x("")}).catch(()=>void 0)},[l.reviewModelSource]);let N=async()=>{y(!0),g("");try{await c.FH.updateSession(l.id,{review:{enabled:h,model:m}}),g(r("review.saved")),i()}catch(e){g(e.message)}finally{y(!1)}};return(0,a.jsxs)("div",{className:"panel",children:[(0,a.jsxs)("div",{className:"row",children:[(0,a.jsx)("h2",{className:"grow",style:{margin:0},children:r("review.title")}),(0,a.jsx)("span",{className:"badge ".concat(h?"done":""),children:h?r("review.on"):r("review.off")})]}),(0,a.jsx)("p",{className:"muted small",children:r("review.hint")}),(0,a.jsxs)("div",{className:"option",children:[(0,a.jsxs)("label",{children:[(0,a.jsx)("input",{type:"checkbox",checked:h,onChange:e=>u(e.target.checked),disabled:l.running}),(0,a.jsx)("span",{children:r("review.enable")})]}),(0,a.jsx)("p",{className:"why",children:r("review.enableWhy")})]}),(0,a.jsx)("label",{htmlFor:"review-model",children:r("review.modelField")}),(0,a.jsx)("div",{className:"row",children:(0,a.jsx)(v.Y,{id:"review-model",chosen:m,onChange:x,none:b?r("model.followsDefault",{name:b}):r("review.modelSame"),disabled:l.running||!h})}),(0,a.jsx)("p",{className:"why",children:r("review.modelWhy")}),(0,a.jsx)(p.z4,{current:m,onUse:e=>x(e)}),(0,a.jsxs)("div",{className:"row",style:{marginTop:10},children:[(0,a.jsx)("button",{className:"primary",onClick:()=>void N(),disabled:f||l.running,children:r("review.save")}),j&&(0,a.jsx)("span",{className:"muted small",children:j})]})]})}function H(e){var s;let{session:n,plan:l,onDone:i}=e,{t:r}=(0,d.kj)(),o=()=>Object.fromEntries(l.entries.filter(e=>e.choice).map(e=>[e.path,e.choice])),h=JSON.stringify(l.entries.map(e=>[e.path,e.choice])),[u,m]=(0,t.useState)(o);(0,t.useEffect)(()=>m(o()),[h]);let[p,v]=(0,t.useState)(!1),[x,j]=(0,t.useState)(""),g=l.entries.filter(e=>"include"===u[e.path]).length,f=async()=>{v(!0),j("");try{var e,s,a;let t=await c.FH.vcsSnapshot(n.id,u);j(t.ok?r("vcs.snapshotTaken",{branch:null!=(e=t.branch)?e:"",commit:(null!=(s=t.commit)?s:"").slice(0,8)}):null!=(a=t.problem)?a:""),i()}catch(e){j(e.message)}finally{v(!1)}};return(0,a.jsxs)("div",{className:"option",children:[(0,a.jsx)("p",{className:"small",children:r("vcs.snapshotList",{n:l.entries.length,branch:null!=(s=l.baselineBranch)?s:"—"})}),(0,a.jsx)("ul",{style:{margin:"4px 0",paddingLeft:0,listStyle:"none"},children:l.entries.map(e=>{var s;return(0,a.jsxs)("li",{style:{marginBottom:4,overflowWrap:"anywhere"},children:[(0,a.jsx)("code",{children:e.path})," ",(0,a.jsxs)("span",{className:"muted small",children:["(",e.input?"".concat(r("vcs.snapshotInput"),", "):"",r("vcs.snapshotKind.".concat(e.kind)),void 0!==e.size?", ".concat((0,c.zi)(e.size)):"",")"]})," ",0===e.allowed.length?(0,a.jsx)("span",{className:"err small",children:r("vcs.snapshotBlocked")}):(0,a.jsx)("select",{"aria-label":e.path,value:null!=(s=u[e.path])?s:"",onChange:s=>m({...u,[e.path]:s.target.value}),disabled:p||n.running||e.allowed.length<2,children:e.allowed.map(e=>(0,a.jsx)("option",{value:e,children:r("include"===e?"vcs.snapshotInclude":"vcs.snapshotLeaveOut")},e))}),e.reason&&(0,a.jsx)("div",{className:"muted small",children:e.reason})]},e.path)})}),(0,a.jsx)("button",{className:"primary",onClick:()=>void f(),disabled:p||n.running||!l.ok||0===g,children:r("vcs.snapshotTake")}),(0,a.jsx)("p",{className:"why",children:r("vcs.snapshotCancelWhy")}),x&&(0,a.jsx)("p",{className:"small",role:"status",children:x})]})}function P(e){var s,n,l,i,r,o,h,u,m,v,x,j,g,f,y,b,k,N,S,C,F,I,W,M,T,R,B,O,P,D,A,L,E,q,U,J;let{session:z,onChange:G}=e,{t:Z}=(0,d.kj)(),K=null!=(g=z.vcs)?g:{enabled:!0,repoDir:"",branchMode:"per-task",commitOnFinish:!0,branchPrefix:"cop/"},[_,Y]=(0,t.useState)(K.repoDir),[Q,V]=(0,t.useState)(null),[X,$]=(0,t.useState)(""),[ee,es]=(0,t.useState)(!1),en=JSON.stringify(K),[ea,et]=(0,t.useState)(null),[el,ei]=(0,t.useState)(null!=(f=K.branchName)?f:"");(0,t.useEffect)(()=>{var e;return ei(null!=(e=JSON.parse(en).branchName)?e:"")},[en]);let[er,ec]=(0,t.useState)(null!=(y=K.baseBranch)?y:"");(0,t.useEffect)(()=>{var e;return ec(null!=(e=JSON.parse(en).baseBranch)?e:"")},[en]);let[ed,eo]=(0,t.useState)((null!=(b=null==(s=K.userInputs)?void 0:s.paths)?b:[]).join("\n"));(0,t.useEffect)(()=>{var e,s;return eo((null!=(s=null==(e=JSON.parse(en).userInputs)?void 0:e.paths)?s:[]).join("\n"))},[en]);let[eh,eu]=(0,t.useState)((null!=(k=null==(n=K.artifacts)?void 0:n.paths)?k:[]).join("\n"));(0,t.useEffect)(()=>{var e,s;return eu((null!=(s=null==(e=JSON.parse(en).artifacts)?void 0:e.paths)?s:[]).join("\n"))},[en]);let em=e=>e.split(/\r?\n/).map(e=>e.trim()).filter(Boolean),[ep,ev]=(0,t.useState)(null!=(N=K.existingBranch)?N:"");(0,t.useEffect)(()=>{var e;return ev(null!=(e=JSON.parse(en).existingBranch)?e:"")},[en]);let ex=null!=(S=K.startFrom)?S:"head";(0,t.useEffect)(()=>{Y(JSON.parse(en).repoDir)},[en]);let ej=JSON.parse(en).repoDir||z.projectDir||"";(0,t.useEffect)(()=>{let e=!1;return ej.trim()?(c.FH.repoCheck(ej).then(s=>{var n;e||et(s.ok?null:null!=(n=s.problem)?n:null)}).catch(()=>{e||et(null)}),()=>{e=!0}):void et(null)},[ej]);let eg=(0,t.useCallback)(()=>{c.FH.vcsStatus(z.id).then(V).catch(()=>V(null))},[z.id]);(0,t.useEffect)(eg,[eg,en]);let ef=async e=>{try{await c.FH.updateSession(z.id,{vcs:e}),$(Z("vcs.saved")),G(),eg()}catch(e){$(e.message)}},ey=async()=>{es(!0),$(Z("mirror.browsing"));try{let s=await c.FH.browseFolder(_.trim()||z.projectDir||void 0);if(s.ok)Y(s.path),await ef({repoDir:s.path});else{var e;$(s.cancelled?Z("mirror.browseCancelled"):null!=(e=s.reason)?e:"")}}catch(e){$(e.message)}finally{es(!1)}},eb=K.repoDir||z.projectDir||"",ek=""!==eb.trim()&&null===ea;return(0,a.jsxs)("div",{className:"panel",children:[(0,a.jsxs)("div",{className:"row",children:[(0,a.jsx)("h2",{className:"grow",style:{margin:0},children:Z("vcs.title")}),(0,a.jsx)("span",{className:"badge ".concat(K.enabled?"done":""),children:K.enabled?Z("vcs.on"):Z("vcs.off")})]}),(0,a.jsx)("p",{className:"muted small",children:Z("vcs.hint")}),(0,a.jsx)("label",{htmlFor:"vcs-root",children:Z("vcs.repoField")}),(0,a.jsxs)("div",{className:"row",children:[(0,a.jsx)("input",{id:"vcs-root",type:"text",className:"grow",value:_,onChange:e=>Y(e.target.value),onBlur:()=>_.trim()!==K.repoDir&&void ef({repoDir:_.trim()}),placeholder:z.projectDir||"C:\\Projects\\my-app",disabled:z.running}),(0,a.jsx)("button",{onClick:()=>void ey(),disabled:ee||z.running,children:Z("mirror.browse")})]}),(0,a.jsx)(p.H4,{current:_,onUse:e=>{Y(e),ef({repoDir:e})}}),ea&&(0,a.jsxs)("div",{className:"notice caution",style:{marginTop:8},children:[(0,a.jsx)("strong",{children:Z("vcs.noRepo")}),(0,a.jsx)("div",{className:"small",style:{marginTop:4},children:ea}),(0,a.jsx)("div",{className:"muted small",style:{marginTop:6},children:Z("vcs.noRepoHow")})]}),!ea&&""!==eb.trim()&&(0,a.jsx)("p",{className:"muted small",style:{marginTop:4},children:Z("vcs.repoOk")}),""===eb.trim()&&(0,a.jsx)("p",{className:"muted small",style:{marginTop:4},children:Z("vcs.pickFirst")}),(0,a.jsxs)("div",{className:"option".concat(ek||K.enabled?"":" warned"),children:[(0,a.jsxs)("label",{children:[(0,a.jsx)("input",{type:"checkbox",checked:K.enabled,onChange:e=>void ef({enabled:e.target.checked}),disabled:z.running||!ek&&!K.enabled}),(0,a.jsx)("span",{children:Z("vcs.enable")})]}),(0,a.jsx)("p",{className:"why",children:Z("vcs.enableWhy")})]}),K.enabled&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"muted small",style:{marginTop:4},children:eb?Z("vcs.repoIs",{dir:eb}):Z("vcs.repoNone")}),eb&&!ea&&(0,a.jsx)(w.E,{dir:eb}),(0,a.jsx)("h3",{children:Z("vcs.branches")}),"existing-branch"===ex&&(0,a.jsx)("p",{className:"muted small",children:Z("vcs.branchesExisting",{branch:K.existingBranch||"…"})}),(0,a.jsxs)("div",{className:"option",children:[(0,a.jsxs)("label",{children:[(0,a.jsx)("input",{type:"radio",name:"branchMode",checked:"per-task"===K.branchMode,onChange:()=>void ef({branchMode:"per-task"}),disabled:z.running}),(0,a.jsx)("span",{children:Z("vcs.perTask")})]}),(0,a.jsx)("p",{className:"why",children:Z("vcs.perTaskWhy")})]}),(0,a.jsxs)("div",{className:"option",children:[(0,a.jsxs)("label",{children:[(0,a.jsx)("input",{type:"radio",name:"branchMode",checked:"per-session"===K.branchMode,onChange:()=>void ef({branchMode:"per-session"}),disabled:z.running}),(0,a.jsx)("span",{children:Z("vcs.perSession")})]}),(0,a.jsx)("p",{className:"why",children:Z("vcs.perSessionWhy")})]}),"per-session"===K.branchMode&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("label",{htmlFor:"vcs-branch-name",children:Z("vcs.branchName")}),(0,a.jsx)("input",{id:"vcs-branch-name",type:"text",value:el,onChange:e=>ei(e.target.value),onBlur:()=>{var e;return el.trim()!==(null!=(e=K.branchName)?e:"")&&void ef({branchName:el.trim()})},placeholder:z.name,disabled:z.running}),(0,a.jsx)("p",{className:"why",children:Z("vcs.branchNameWhy")})]}),(0,a.jsx)("h3",{children:Z("vcs.startFrom")}),(0,a.jsx)("p",{className:"muted small",children:Z("vcs.startAsked")}),K.baseRemote&&("branch"===ex||"existing-branch"===ex)&&(0,a.jsx)("p",{className:"small",children:Z("vcs.fromRemote",{remote:K.baseRemote,branch:("existing-branch"===ex?K.existingBranch:K.baseBranch)||"main"})}),(0,a.jsxs)("div",{className:"option",children:[(0,a.jsxs)("label",{children:[(0,a.jsx)("input",{type:"radio",name:"startFrom",checked:"branch"===ex,onChange:()=>void ef({startFrom:"branch"}),disabled:z.running}),(0,a.jsx)("span",{children:Z("vcs.startBranch")})]}),(0,a.jsx)("p",{className:"why",children:Z("vcs.startBranchWhy")})]}),(0,a.jsxs)("div",{className:"option",children:[(0,a.jsxs)("label",{children:[(0,a.jsx)("input",{type:"radio",name:"startFrom",checked:"previous-session"===ex,onChange:()=>void ef({startFrom:"previous-session"}),disabled:z.running}),(0,a.jsx)("span",{children:Z("vcs.startPrevious")})]}),(0,a.jsx)("p",{className:"why",children:Z("vcs.startPreviousWhy")})]}),(0,a.jsxs)("div",{className:"option",children:[(0,a.jsxs)("label",{children:[(0,a.jsx)("input",{type:"radio",name:"startFrom",checked:"head"===ex,onChange:()=>void ef({startFrom:"head"}),disabled:z.running}),(0,a.jsx)("span",{children:Z("vcs.startHead")})]}),(0,a.jsx)("p",{className:"why",children:Z("vcs.startHeadWhy")})]}),(0,a.jsxs)("div",{className:"option",children:[(0,a.jsxs)("label",{children:[(0,a.jsx)("input",{type:"radio",name:"startFrom",checked:"existing-branch"===ex,onChange:()=>void ef({startFrom:"existing-branch"}),disabled:z.running}),(0,a.jsx)("span",{children:Z("vcs.startExisting")})]}),(0,a.jsx)("p",{className:"why",children:Z("vcs.startExistingWhy")})]}),"existing-branch"===ex&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("label",{htmlFor:"vcs-existing-branch",children:Z("vcs.existingBranch")}),(0,a.jsx)("input",{id:"vcs-existing-branch",type:"text",list:"vcs-local-branches",value:ep,onChange:e=>ev(e.target.value),onBlur:()=>{var e;return ep.trim()!==(null!=(e=K.existingBranch)?e:"")&&void ef({existingBranch:ep.trim()})},disabled:z.running}),(0,a.jsx)("datalist",{id:"vcs-local-branches",children:(null!=(C=null==Q?void 0:Q.branches)?C:[]).map(e=>(0,a.jsx)("option",{value:e},e))}),(0,a.jsx)("p",{className:"why",children:Z("vcs.existingBranchWhy")}),K.existingBranch&&(null==Q?void 0:Q.branches)&&!Q.branches.includes(K.existingBranch)&&(0,a.jsx)("p",{className:"err small",children:Z("vcs.existingBranchMissing",{branch:K.existingBranch})})]}),("branch"===ex||"previous-session"===ex)&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("label",{htmlFor:"vcs-base-branch",children:Z("vcs.baseBranch")}),(0,a.jsx)("input",{id:"vcs-base-branch",type:"text",value:er,onChange:e=>ec(e.target.value),onBlur:()=>{var e;return er.trim()!==(null!=(e=K.baseBranch)?e:"")&&void ef({baseBranch:er.trim()})},placeholder:"main",disabled:z.running}),(0,a.jsx)("p",{className:"why",children:Z("vcs.baseBranchWhy")})]}),z.vcsStart&&(0,a.jsxs)("p",{className:"muted small",children:["existing-branch"===z.vcsStart.kind?Z("vcs.startedExisting",{branch:null!=(F=z.vcsStart.branch)?F:"",commit:z.vcsStart.commit.slice(0,8)}):"previous-session"===z.vcsStart.kind?Z("vcs.startedPrevious",{name:null!=(I=null==(l=z.vcsStart.fromSession)?void 0:l.name)?I:"",branch:null!=(W=z.vcsStart.branch)?W:"",commit:z.vcsStart.commit.slice(0,8)}):"branch"===z.vcsStart.kind?Z(z.vcsStart.remote?"vcs.startedRemote":"vcs.startedBranch",{branch:null!=(M=z.vcsStart.branch)?M:"",commit:z.vcsStart.commit.slice(0,8)}):"snapshot"===z.vcsStart.kind?Z("vcs.startedSnapshot",{branch:null!=(T=z.vcsStart.branch)?T:"",commit:z.vcsStart.commit.slice(0,8),from:null!=(R=null==(i=z.vcsStart.snapshot)?void 0:i.fromBranch)?R:"HEAD",n:null!=(B=null==(r=z.vcsStart.snapshot)?void 0:r.included.length)?B:0,out:null!=(O=null==(o=z.vcsStart.snapshot)?void 0:o.leftOut.length)?O:0}):Z("vcs.startedHead",{commit:z.vcsStart.commit.slice(0,8)}),z.vcsStart.note?" — ".concat(z.vcsStart.note):"",z.vcsStart.update&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("br",{}),"updated"===z.vcsStart.update.outcome?Z("vcs.updated",{branch:z.vcsStart.update.branch,remote:null!=(P=z.vcsStart.update.remote)?P:"",from:(null!=(D=z.vcsStart.update.from)?D:"").slice(0,8),to:(null!=(A=z.vcsStart.update.to)?A:"").slice(0,8)}):"up-to-date"===z.vcsStart.update.outcome?Z("vcs.upToDate",{branch:z.vcsStart.update.branch,remote:null!=(L=z.vcsStart.update.remote)?L:""}):Z("vcs.notUpdated",{branch:z.vcsStart.update.branch,why:null!=(E=z.vcsStart.update.detail)?E:z.vcsStart.update.outcome})]})]}),"head"!==ex&&(0,a.jsxs)("div",{className:"option",children:[(0,a.jsxs)("label",{children:[(0,a.jsx)("input",{type:"checkbox",checked:!1!==K.updateFromRemote,onChange:e=>void ef({updateFromRemote:e.target.checked}),disabled:z.running}),(0,a.jsx)("span",{children:Z("vcs.updateFromRemote")})]}),(0,a.jsx)("p",{className:"why",children:Z("vcs.updateFromRemoteWhy")})]}),(0,a.jsxs)("div",{className:"option",children:[(0,a.jsxs)("label",{children:[(0,a.jsx)("input",{type:"checkbox",checked:K.commitOnFinish,onChange:e=>void ef({commitOnFinish:e.target.checked}),disabled:z.running}),(0,a.jsx)("span",{children:Z("vcs.commit")})]}),(0,a.jsx)("p",{className:"why",children:Z("vcs.commitWhy")})]}),"existing-branch"!==ex&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("h3",{children:Z("vcs.dirty")}),["reject","snapshot","tracked-only-snapshot"].map(e=>{var s,n;return(0,a.jsxs)("div",{className:"option",children:[(0,a.jsxs)("label",{children:[(0,a.jsx)("input",{type:"radio",name:"vcs-dirty-".concat(z.id),checked:(null!=(n=null==(s=K.dirtyWorktree)?void 0:s.policy)?n:"reject")===e,onChange:()=>{var s;ef({dirtyWorktree:{policy:e,requireApproval:null==(s=K.dirtyWorktree)?void 0:s.requireApproval}})},disabled:z.running}),(0,a.jsx)("span",{children:Z("reject"===e?"vcs.dirtyReject":"snapshot"===e?"vcs.dirtySnapshot":"vcs.dirtyTracked")})]}),(0,a.jsx)("p",{className:"why",children:Z("reject"===e?"vcs.dirtyRejectWhy":"snapshot"===e?"vcs.dirtySnapshotWhy":"vcs.dirtyTrackedWhy")})]},e)}),(null!=(q=null==(h=K.dirtyWorktree)?void 0:h.policy)?q:"reject")!=="reject"&&(0,a.jsxs)("div",{className:"option",children:[(0,a.jsxs)("label",{children:[(0,a.jsx)("input",{type:"checkbox",checked:(null==(u=K.dirtyWorktree)?void 0:u.requireApproval)!==!1,onChange:e=>{var s,n;ef({dirtyWorktree:{policy:null!=(n=null==(s=K.dirtyWorktree)?void 0:s.policy)?n:"snapshot",requireApproval:e.target.checked}})},disabled:z.running}),(0,a.jsx)("span",{children:Z("vcs.dirtyApproval")})]}),(0,a.jsx)("p",{className:"why",children:Z("vcs.dirtyApprovalWhy")})]})]}),(0,a.jsx)("h3",{children:Z("vcs.inputs")}),(0,a.jsx)("label",{htmlFor:"vcs-inputs-".concat(z.id),children:Z("vcs.inputsField")}),(0,a.jsx)("textarea",{id:"vcs-inputs-".concat(z.id),rows:3,value:ed,onChange:e=>eo(e.target.value),onBlur:()=>{var e,s;return JSON.stringify(em(ed))!==JSON.stringify(null!=(s=null==(e=K.userInputs)?void 0:e.paths)?s:[])&&void ef({userInputs:{...K.userInputs,paths:em(ed)}})},disabled:z.running,placeholder:"rules-engine/test-data/schemas/*.yaml",spellCheck:!1}),(0,a.jsx)("p",{className:"why",children:Z("vcs.inputsWhy")}),(null!=(U=null==(m=K.userInputs)?void 0:m.paths.length)?U:0)>0&&(0,a.jsxs)("div",{className:"option",children:[(0,a.jsxs)("label",{children:[(0,a.jsx)("input",{type:"checkbox",checked:(null==(v=K.userInputs)?void 0:v.readOnly)!==!1,onChange:e=>{var s,n,a;ef({userInputs:{paths:null!=(a=null==(s=K.userInputs)?void 0:s.paths)?a:[],requireApproval:null==(n=K.userInputs)?void 0:n.requireApproval,readOnly:e.target.checked}})},disabled:z.running}),(0,a.jsx)("span",{children:Z("vcs.inputsReadOnly")})]}),(0,a.jsx)("p",{className:"why",children:Z("vcs.inputsReadOnlyWhy")})]}),(null==(x=z.vcsStart)?void 0:x.inputs)&&(0,a.jsx)("p",{className:"muted small",children:z.vcsStart.inputs.carried?Z("vcs.inputsCarried",{n:z.vcsStart.inputs.files.length,branch:z.vcsStart.inputs.carried.branch,onto:z.vcsStart.inputs.carried.onto.slice(0,8)}):Z("vcs.inputsRecorded",{n:z.vcsStart.inputs.files.length,commit:z.vcsStart.commit.slice(0,8)})}),(0,a.jsx)("h3",{children:Z("vcs.artifacts")}),(0,a.jsx)("label",{htmlFor:"vcs-artifacts-".concat(z.id),children:Z("vcs.artifactsField")}),(0,a.jsx)("textarea",{id:"vcs-artifacts-".concat(z.id),rows:2,value:eh,onChange:e=>eu(e.target.value),onBlur:()=>{var e,s;return JSON.stringify(em(eh))!==JSON.stringify(null!=(s=null==(e=K.artifacts)?void 0:e.paths)?s:[])&&void ef({artifacts:{paths:em(eh)}})},disabled:z.running,placeholder:"rules-engine/test-results/**",spellCheck:!1}),(0,a.jsx)("p",{className:"why",children:Z("vcs.artifactsWhy")}),Q&&!Q.ok&&(0,a.jsxs)("div",{className:"notice caution",role:"status",children:[(0,a.jsx)("strong",{children:Z("vcs.notReady")})," ",Q.problem]}),(null==Q||null==(j=Q.snapshot)?void 0:j.needed)&&Q.snapshot.entries.length>0&&(0,a.jsx)(H,{session:z,plan:Q.snapshot,onDone:()=>{G(),eg()}}),(null==Q?void 0:Q.ok)&&(0,a.jsx)("div",{className:"muted small",children:Z("vcs.ready",{branch:null!=(J=Q.branch)?J:"—",dir:Q.repoDir})}),(null==Q?void 0:Q.ok)&&Q.work&&Q.work.branches.length>0&&(0,a.jsxs)("div",{className:"muted small",children:["per-session"===Q.work.mode&&Q.work.complete?Z("vcs.completeOn",{branch:Q.work.complete}):Z("vcs.noSingleBranch",{n:Q.work.branches.length}),"per-task"===Q.work.mode&&(0,a.jsx)("ul",{style:{margin:"4px 0",paddingLeft:20},children:Q.work.branches.map(e=>(0,a.jsxs)("li",{children:[(0,a.jsx)("code",{children:e.branch})," — ",e.title,e.commit?"":" (".concat(Z("vcs.taskNoFiles"),")")]},e.branch))})]}),(0,a.jsx)("p",{className:"muted small",children:Z("vcs.pushIsYours")})]}),(0,a.jsx)("div",{className:"muted small",role:"status",children:X})]})}function D(e){var s;let{session:n,onChange:l}=e,{t:i}=(0,d.kj)(),[r,o]=(0,t.useState)(""),h=null!=(s=n.onFailure)?s:"stop",u=async e=>{if(e!==h)try{await c.FH.updateSession(n.id,{onFailure:e}),o(i("stop"===e?"chain.savedStop":"chain.savedContinue")),l()}catch(e){o(e.message)}};return(0,a.jsxs)("fieldset",{style:{border:0,padding:0,margin:"10px 0 14px"},children:[(0,a.jsx)("legend",{className:"muted small",style:{padding:0},children:i("chain.title")}),(0,a.jsxs)("div",{className:"option",children:[(0,a.jsxs)("label",{children:[(0,a.jsx)("input",{type:"radio",name:"chain",checked:"stop"===h,onChange:()=>void u("stop"),disabled:n.running}),(0,a.jsx)("span",{children:i("chain.stop")})]}),(0,a.jsx)("p",{className:"why",children:i("chain.stopWhy")})]}),(0,a.jsxs)("div",{className:"option",children:[(0,a.jsxs)("label",{children:[(0,a.jsx)("input",{type:"radio",name:"chain",checked:"continue"===h,onChange:()=>void u("continue"),disabled:n.running}),(0,a.jsx)("span",{children:i("chain.continue")})]}),(0,a.jsx)("p",{className:"why",children:i("chain.continueWhy")})]}),r&&(0,a.jsx)("div",{className:"muted small",role:"status",children:r}),n.running&&(0,a.jsx)("div",{className:"muted small",children:i("chain.locked")})]})}function A(e){let{value:s,onChange:n,presets:l,onPresetsChanged:i}=e,{t:r}=(0,d.kj)(),o=(0,t.useId)(),[h,u]=(0,t.useState)(""),m=async()=>{let e=prompt(r("l2.saveAsPrompt"));if(e)try{await c.FH.savePreset(e,s),u(r("l2.savedAs",{name:e})),null==i||i()}catch(e){u(e.message)}};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"row",children:[(0,a.jsx)("label",{className:"grow",style:{margin:0},htmlFor:"".concat(o,"-text"),children:r("l2.label")}),(0,a.jsxs)("select",{value:"","aria-label":r("l2.loadPreset"),onChange:e=>{let s=l.find(s=>s.name===e.target.value);s&&n(s.content)},children:[(0,a.jsx)("option",{value:"",children:r("l2.loadPreset")}),l.map(e=>(0,a.jsx)("option",{value:e.name,children:e.name},e.name))]}),(0,a.jsx)("button",{onClick:()=>void m(),disabled:!s.trim(),children:r("l2.saveAs")})]}),(0,a.jsx)("textarea",{id:"".concat(o,"-text"),className:"prose",value:s,onChange:e=>n(e.target.value),placeholder:r("l2.placeholder"),style:{minHeight:140,marginTop:10}}),h&&(0,a.jsx)("div",{className:"muted small",children:h})]})}function L(e){let{session:s}=e,{t:n}=(0,d.kj)(),l=(0,d.W3)(),i=s.tasks.filter(e=>"queued"!==e.status),[r,o]=(0,t.useState)([]),h=r.length>0?r:i.map(e=>e.id),u=e=>(0,c.ub)("".concat(c.nC,"/sessions/").concat(s.id,"/export?variant=").concat(e)+(r.length>0?"&tasks=".concat(encodeURIComponent(r.join(","))):""));return(0,a.jsxs)("div",{className:"panel",children:[(0,a.jsx)("h2",{children:n("export.title")}),(0,a.jsx)("p",{className:"muted small",children:n("export.hint")}),0===i.length?(0,a.jsx)("div",{className:"empty",children:n("export.nothing")}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"row",style:{marginBottom:6},children:[(0,a.jsx)("button",{className:"quiet",onClick:()=>o(i.map(e=>e.id)),children:n("export.all")}),(0,a.jsx)("button",{className:"quiet",onClick:()=>o([]),children:n("export.none")}),(0,a.jsx)("span",{className:"muted small",children:r.length>0?n("export.selected",{n:r.length}):n("export.allOf",{n:i.length})})]}),i.map(e=>{var s,t,i,c,d;return(0,a.jsx)("div",{className:"option",style:{margin:"6px 0"},children:(0,a.jsxs)("label",{children:[(0,a.jsx)("input",{type:"checkbox",checked:r.includes(e.id),onChange:()=>{let s;return s=e.id,o(e=>e.includes(s)?e.filter(e=>e!==s):[...e,s])}}),(0,a.jsxs)("span",{children:[e.title," ",(0,a.jsx)("span",{className:"badge ".concat(e.status),children:n("status.".concat(e.status))})," ",e.readOnly&&(0,a.jsx)("span",{className:"chip",children:n("task.readOnly")})," ",(null!=(t=null==(s=e.scope)?void 0:s.length)?t:0)>0&&(0,a.jsx)("span",{className:"chip",children:n("task.scope",{paths:(null!=(i=e.scope)?i:[]).join(", ")})})," ",(0,a.jsx)("span",{className:"muted small",children:l(null!=(d=null!=(c=e.finishedAt)?c:e.startedAt)?d:e.createdAt)})]})]})},e.id)}),(0,a.jsxs)("div",{className:"row",style:{marginTop:10},children:[(0,a.jsx)("a",{className:"button-link",href:u("outcome"),download:!0,children:n("export.outcome",{n:h.length})}),(0,a.jsx)("a",{className:"button-link",href:u("full"),download:!0,children:n("export.full",{n:h.length})})]}),(0,a.jsx)("p",{className:"muted small",style:{marginTop:8},children:n("export.outcomeWhy")})]})]})}function E(e){let{handoff:s}=e,{t:n}=(0,d.kj)(),t=(e,s)=>(0,a.jsxs)("div",{className:"handoff-row",children:[(0,a.jsx)("strong",{children:n(e)})," ",s]}),l=e=>(0,a.jsx)("ul",{children:e.map((e,s)=>(0,a.jsx)("li",{children:e},s))}),i=s.validation.filter(e=>e.passed).length;return(0,a.jsxs)("div",{className:"summary handoff",children:[(0,a.jsx)("strong",{children:n("handoff.title")}),t("handoff.outcome",(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"badge ".concat(s.outcome.status),children:n("status.".concat(s.outcome.status))}),s.outcome.reason?" ".concat(s.outcome.reason):""]})),t("handoff.files",0===s.changedFiles.length?(0,a.jsx)("span",{className:"muted",children:n("handoff.noFiles")}):(0,a.jsx)("code",{children:s.changedFiles.map(e=>"".concat(e.path).concat(e.added>=0?" +".concat(e.added,"/-").concat(e.removed):"")).join(", ")})),s.validation.length>0&&t("handoff.validation",(0,a.jsxs)(a.Fragment,{children:[n("handoff.passed",{n:i,of:s.validation.length}),s.review?" \xb7 ".concat(n("handoff.review",{verdict:s.review.verdict,open:s.review.open})):""]})),t("handoff.issues",0===s.knownIssues.length?(0,a.jsx)("span",{className:"muted",children:n("handoff.noIssues")}):l(s.knownIssues)),s.evidence.runId&&t("handoff.evidence",(0,a.jsx)("code",{children:s.evidence.runId})),(s.vcs.branch||s.vcs.problem)&&t("handoff.vcs",(0,a.jsxs)(a.Fragment,{children:[s.vcs.branch&&(0,a.jsx)("code",{children:s.vcs.branch}),s.vcs.commit?" @ ".concat(s.vcs.commit.slice(0,8)," \xb7 ").concat(n("handoff.notPushed")):s.vcs.branch?" \xb7 ".concat(n("handoff.noCommit")):"",s.vcs.problem?" — ".concat(s.vcs.problem):""]})),s.manual.length>0&&t("handoff.manual",l(s.manual)),s.notExecuted.length>0&&t("handoff.notRun",l(s.notExecuted))]})}function q(e){var s;let{session:n,presets:l,onAdded:i,onPresetsChanged:r}=e,{t:o}=(0,d.kj)(),h=[...n.tasks].reverse()[0],[u,m]=(0,t.useState)(""),[p,v]=(0,t.useState)(null!=(s=null==h?void 0:h.level2)?s:""),[x,j]=(0,t.useState)(""),[g,f]=(0,t.useState)(""),[y,b]=(0,t.useState)(!1),k=(0,t.useRef)(!1),N=async()=>{if(!k.current){k.current=!0,b(!0);try{await c.FH.addTask(n.id,{title:u,level2:p,prompt:x}),m(""),j(""),f(o("form.queued")),i()}catch(e){f(e.message)}finally{k.current=!1,b(!1)}}};return(0,a.jsxs)("div",{className:"panel",id:"new-task",children:[(0,a.jsx)("h2",{children:o("form.title")}),(0,a.jsx)("p",{className:"muted small",children:o("form.hint")}),(0,a.jsx)("label",{htmlFor:"new-task-title",children:o("form.titleLabel")}),(0,a.jsx)("input",{id:"new-task-title",type:"text",value:u,onChange:e=>m(e.target.value),placeholder:o("form.titlePlaceholder")}),(0,a.jsx)("div",{style:{marginTop:10},children:(0,a.jsx)(A,{value:p,onChange:v,presets:l,onPresetsChanged:r})}),(0,a.jsx)("label",{htmlFor:"new-task-prompt",children:o("form.taskLabel")}),(0,a.jsx)("textarea",{id:"new-task-prompt",className:"prose",value:x,onChange:e=>j(e.target.value),placeholder:o("form.taskPlaceholder"),style:{minHeight:140}}),(0,a.jsxs)("div",{className:"row",style:{marginTop:10},children:[(0,a.jsx)("button",{className:"primary",onClick:()=>void N(),disabled:y||!x.trim(),children:o("form.add")}),(0,a.jsx)("span",{className:"muted small",children:g})]})]})}function U(e){var s,n,l,i,r,m,p,v,y,k,w,F,W,M,T,R,B,O,H,P,D,L,q,U,J,G,Y,Q,V,X,$,ee,es,en,ea,et,el,ei,er,ec,ed,eo,eh,eu,em,ep,ev,ex,ej,eg,ef,ey,eb,ek,eN,ew,eS,eC,eF,eI,eW,eM,eT,eR,eB,eO,eH,eP,eD,eA,eL,eE,eq,eU,eJ,ez,eG,eZ,eK,e_,eY,eQ,eV,eX,e$,e0,e1,e2;let{session:e8,task:e4,index:e6,presets:e3,onChange:e5}=e,{t:e7}=(0,d.kj)(),e9=(0,d.W3)(),[se,ss]=(0,t.useState)(!1),[sn,sa]=(0,t.useState)(!1),[st,sl]=(0,t.useState)(e4.title),[si,sr]=(0,t.useState)(e4.level2),[sc,sd]=(0,t.useState)(e4.prompt),[so,sh]=(0,t.useState)(null!=(ei=null==(s=e4.vcsPlan)?void 0:s.branch)?ei:""),[su,sm]=(0,t.useState)(null!=(er=null==(n=e4.vcsPlan)?void 0:n.commitMessage)?er:""),[sp,sv]=(0,t.useState)(null!=(ec=e4.checks)?ec:[]),[sx,sj]=(0,t.useState)(!!e4.readOnly),[sg,sf]=(0,t.useState)((null!=(ed=e4.scope)?ed:[]).join("\n")),sy={readOnly:sx,scope:sx?[]:(0,N.w)(sg)},sb=(0,u.c)((0,h.DG)(e4)),[sk,sN]=(0,t.useState)(null),[sw,sS]=(0,t.useState)(""),[sC,sF]=(0,t.useState)(null),[sI,sW]=(0,t.useState)(!1),[sM,sT]=(0,t.useState)(!1),sR=async()=>{try{await c.FH.updateTask(e8.id,e4.id,{title:st,level2:si,prompt:sc,vcsPlan:{branch:so,commitMessage:su},checks:sp,...sy}),ss(!1),e5()}catch(e){sS(e.message)}},sB="running"===e4.status||"waiting-approval"===e4.status,sO=!sB&&"queued"!==e4.status,sH=!sB&&"queued"!==e4.status,sP=!sB&&null!=(eo=null==(l=e8.vcs)?void 0:l.enabled)&&eo&&(!!(null==(i=e4.vcs)?void 0:i.baseCommit)||(null!=(eh=e4.attempts)?eh:[]).some(e=>{var s;return null==(s=e.vcs)?void 0:s.baseCommit})),sD=!sB&&(0,c.Zm)(e4),sA=!sB&&!sD&&(0,c.Dh)(e4)&&!e8.running,sL=async()=>{if(await (0,g.Z)(e7("task.continueConfirm",{title:e4.title})))try{await c.FH.continueTask(e8.id,e4.id),e5(),sF({intro:e7("runq.savedOffer")})}catch(e){sS(e.message)}},sE=async()=>{if(await (0,g.Z)(e7("task.rerunConfirm",{title:e4.title})))try{await c.FH.rerunTask(e8.id,e4.id),e5(),sF({intro:e7("runq.savedOffer")})}catch(e){sS(e.message)}},sq=async()=>{if(await (0,g.Z)(e7("task.editRanConfirm",{title:e4.title})))try{await c.FH.rerunTask(e8.id,e4.id,{title:st,level2:si,prompt:sc,vcsPlan:{branch:so,commitMessage:su},checks:sp,...sy},{buildOnFinished:"done"===e4.status}),ss(!1),e5(),sF({intro:e7("runq.savedOffer")})}catch(e){sS(e.message)}},sU=(0,b.e)(e5),sJ=async()=>{let e="queued"===e4.status?"task.deleteConfirm":"task.deleteConfirmRan";if(await (0,g.Z)(e7(e,{title:e4.title})))try{await c.FH.deleteTask(e8.id,e4.id),e5()}catch(e){sS(e.message)}},sz=null!=(em=e4.plan)?em:e4.continuing?null==(r=[...null!=(eu=e4.attempts)?eu:[]].reverse().find(e=>{var s;return null==(s=e.plan)?void 0:s.approved}))?void 0:r.plan:void 0,sG=async()=>{try{sN(await c.FH.taskFiles(e8.id,e4.id))}catch(e){sS(e.message)}},sZ=(e,s,n)=>n.length>0&&(0,a.jsxs)("div",{children:[(0,a.jsxs)("span",{className:"muted",children:[e7(e)," "]}),n.map(e=>(0,a.jsx)("span",{style:{marginRight:10},children:(0,a.jsx)(o.u,{label:e,save:()=>c.FH.saveTaskFile(e8.id,e4.id,s,e)})},e))]});return(0,a.jsxs)("div",{className:"task ".concat(e4.status),id:e4.id,children:[(0,a.jsxs)("div",{className:"row",children:[(0,a.jsxs)("h4",{className:"grow",children:[e6,". ",e4.title]}),(0,a.jsx)("span",{className:"badge ".concat(e4.status),children:e7("status.".concat(e4.status))}),e4.limit&&(0,a.jsx)("span",{className:"chip",title:e7("reg.limitChipWhy"),children:e7("reg.limitChip",{limit:e7("limit.".concat(e4.limit.setting),{n:e4.limit.value})})}),(null!=(ep=e4.attempt)?ep:1)>1&&(0,a.jsx)("span",{className:"chip",children:e7("task.attemptN",{n:null!=(ev=e4.attempt)?ev:1})}),e4.iterations>0&&(0,a.jsx)("span",{className:"muted small",children:e7("task.iterations",{n:e4.iterations})}),e4.runId&&(0,a.jsxs)("button",{className:sn?"":"quiet","aria-expanded":sn,onClick:()=>sa(e=>!e),title:(0,h.DG)(e4)?e7("story.showLiveWhy"):e7("story.why"),children:[(0,h.DG)(e4)&&!sn&&(0,a.jsx)("span",{className:"dot","aria-hidden":"true"}),sn?e7("story.hide"):(0,h.DG)(e4)?e7("story.showLive"):e7("story.show")]}),"queued"===e4.status&&!e8.running&&!1!==e8.active&&(0,a.jsx)("button",{className:sC?"":"primary","aria-expanded":!!sC,onClick:()=>{sW(!1),sF(sC?null:{})},title:e7("runq.buttonWhy"),children:e7("runq.button")}),(sI||"contract-conflict"===e4.stopCode&&!sB&&"queued"!==e4.status&&!e8.running)&&(0,a.jsx)("button",{className:sI?"":"primary","aria-expanded":sI,onClick:()=>sW(!sI),title:e7("cfix.buttonWhy"),children:e7("cfix.button")}),!sB&&(0,a.jsx)("button",{onClick:()=>{if(!se){var e,s,n,a,t,l;sl(e4.title),sr(e4.level2),sd(e4.prompt),sh(null!=(n=null==(e=e4.vcsPlan)?void 0:e.branch)?n:""),sm(null!=(a=null==(s=e4.vcsPlan)?void 0:s.commitMessage)?a:""),sv(null!=(t=e4.checks)?t:[]),sj(!!e4.readOnly),sf((null!=(l=e4.scope)?l:[]).join("\n"))}ss(!se)},title:e7("task.editAll"),children:se?e7("task.cancel"):e7("task.edit")}),sD&&(0,a.jsx)("button",{className:"primary",onClick:()=>void sL(),title:e7("task.continueWhy"),children:e7("task.continue")}),sA&&(0,a.jsx)("button",{className:"primary","aria-haspopup":"dialog",onClick:()=>sT(!0),title:e7("fup.buttonWhy"),children:e7("fup.button")}),sH&&(0,a.jsx)("button",{className:sD||sA?"":"primary",onClick:()=>void sE(),title:e7("task.rerunWhy"),children:e7("task.rerun")}),sP&&(0,a.jsx)("button",{onClick:()=>void sU.restore({sessionId:e8.id,taskId:e4.id,title:e4.title}),disabled:""!==sU.busy||e8.running,title:e7("restore.why"),children:"restore"===sU.busy?e7("restore.checking"):e7("restore.button")}),sO&&(0,a.jsx)("button",{onClick:()=>void sU.restartFrom({sessionId:e8.id,taskId:e4.id,title:e4.title}),disabled:""!==sU.busy||e8.running,title:e7("restart.why"),children:"restart"===sU.busy?e7("restart.checking"):e7("restart.button")}),!sB&&(0,a.jsx)("button",{className:"danger",onClick:()=>void sJ(),children:e7("task.delete")}),!se&&(sw||sU.message)&&(0,a.jsx)("span",{className:"err",role:"alert",children:sw||sU.message})]}),(0,a.jsxs)("div",{className:"muted small",children:[e4.startedAt?e7("task.started",{t:e9(e4.startedAt)}):e7("task.added",{t:e9(e4.createdAt)}),e4.finishedAt?" \xb7 ".concat(e7("task.finished",{t:e9(e4.finishedAt)})):"",e4.startedAt&&e4.finishedAt?" \xb7 ".concat(e7("task.took",{d:(0,c.c5)((0,h.d5)(e4.startedAt,e4.finishedAt))})):"",(0,h.DG)(e4)?" \xb7 ".concat(e7("task.runningFor",{d:(0,c.c5)((0,h.d5)(e4.startedAt,void 0,sb))})):""]}),"queued"!==e4.status&&(null==(m=e8.vcs)?void 0:m.enabled)&&e4.vcs&&(0,a.jsx)("div",{className:"muted small",children:e4.vcs.problem&&!e4.vcs.branch?(0,a.jsx)("span",{className:"reason",children:e7("vcs.taskProblem",{problem:e4.vcs.problem})}):(0,a.jsxs)(a.Fragment,{children:[e4.vcs.branch&&e7("vcs.taskBranch",{branch:e4.vcs.branch}),e4.vcs.baseCommit&&" \xb7 ".concat(e7("vcs.taskBase",{commit:e4.vcs.baseCommit.slice(0,8)})),e4.vcs.commit?" \xb7 ".concat(e7("vcs.taskCommit",{commit:e4.vcs.commit.slice(0,8)})):" \xb7 ".concat(e7("vcs.taskNoFiles")),(null!=(ex=null==(p=e4.vcs.files)?void 0:p.length)?ex:0)>0&&(0,a.jsxs)("details",{style:{display:"inline"},children:[(0,a.jsxs)("summary",{style:{display:"inline",cursor:"pointer"},children:[" \xb7 ",e7("vcs.taskFiles",{n:null!=(ej=null==(v=e4.vcs.files)?void 0:v.length)?ej:0})]}),(0,a.jsx)("ul",{style:{margin:"4px 0 4px 0",paddingLeft:20},children:(null!=(eg=e4.vcs.files)?eg:[]).map(e=>(0,a.jsxs)("li",{children:[(0,a.jsx)("code",{children:e.path})," ",e.added<0||e.removed<0?e7("vcs.taskBinary"):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("span",{style:{color:"var(--ok)"},children:["+",e.added]})," ",(0,a.jsxs)("span",{style:{color:"var(--bad)"},children:["-",e.removed]})]})]},e.path))})]}),e4.vcs.commit&&e4.vcs.baseCommit&&(0,a.jsxs)(a.Fragment,{children:[" \xb7 ",(0,a.jsx)(f.C,{sessionId:e8.id,taskId:e4.id,title:e4.title,files:null!=(ef=null==(y=e4.vcs.files)?void 0:y.length)?ef:0})]}),(null!=(ey=null==(k=e4.vcs.suspicious)?void 0:k.length)?ey:0)>0&&(0,a.jsxs)("div",{className:"err small",style:{marginTop:4},children:[e7("vcs.suspicious",{n:null!=(eb=null==(w=e4.vcs.suspicious)?void 0:w.length)?eb:0}),(0,a.jsx)("ul",{style:{margin:"4px 0",paddingLeft:20},children:(null!=(ek=e4.vcs.suspicious)?ek:[]).map(e=>(0,a.jsxs)("li",{children:[(0,a.jsx)("code",{children:e.path})," — ",e.reason]},e.path))})]}),(null!=(eN=null==(F=e4.scopeReverted)?void 0:F.length)?eN:0)>0&&(0,a.jsx)("div",{className:"small",style:{marginTop:4},children:e7(e4.readOnly?"task.readOnlyReverted":"task.scopeReverted",{n:null!=(ew=null==(W=e4.scopeReverted)?void 0:W.length)?ew:0,paths:(null!=(eS=e4.scopeReverted)?eS:[]).join(", ")})}),(null!=(eC=null==(M=e4.inputsRestored)?void 0:M.length)?eC:0)>0&&(0,a.jsx)("div",{className:"small",style:{marginTop:4},children:e7("task.inputsRestored",{n:null!=(eF=null==(T=e4.inputsRestored)?void 0:T.length)?eF:0,paths:(null!=(eI=e4.inputsRestored)?eI:[]).join(", ")})}),(null!=(eW=null==(R=e4.artifactsKept)?void 0:R.length)?eW:0)>0&&(0,a.jsx)("div",{className:"muted small",style:{marginTop:4,overflowWrap:"anywhere"},children:e7("task.artifactsKept",{n:null!=(eM=null==(B=e4.artifactsKept)?void 0:B.length)?eM:0,paths:(null!=(eT=e4.artifactsKept)?eT:[]).slice(0,10).map(e=>e.path).join(", ")})}),(null!=(eR=null==(O=e4.vcs.foreignCommits)?void 0:O.length)?eR:0)>0&&(0,a.jsxs)("div",{className:"err small",style:{marginTop:4},children:[e7("vcs.foreignCommits",{n:null!=(eB=null==(H=e4.vcs.foreignCommits)?void 0:H.length)?eB:0}),(0,a.jsx)("ul",{style:{margin:"4px 0",paddingLeft:20},children:(null!=(eO=e4.vcs.foreignCommits)?eO:[]).map(e=>(0,a.jsx)("li",{children:(0,a.jsx)("code",{children:e})},e))})]})]})}),"queued"===e4.status&&(null==(P=e8.vcs)?void 0:P.enabled)&&((null==(D=e4.vcsPlan)?void 0:D.branch)||(null==(L=e4.vcsPlan)?void 0:L.commitMessage))&&(0,a.jsx)("div",{className:"muted small",children:e4.vcsPlan.branch&&e4.vcsPlan.commitMessage?e7("task.gitNames",{branch:e4.vcsPlan.branch,subject:e4.vcsPlan.commitMessage.split("\n")[0]}):e4.vcsPlan.branch?e7("task.gitBranchOnly",{branch:e4.vcsPlan.branch}):e7("task.gitCommitOnly",{subject:(null!=(eH=e4.vcsPlan.commitMessage)?eH:"").split("\n")[0]})}),sM&&(0,a.jsx)(C.J,{sessionId:e8.id,taskId:e4.id,title:e4.title,onClose:e=>{sT(!1),e&&e5()}}),sI&&(0,a.jsx)(S.y,{target:{sessionId:e8.id,taskId:e4.id,title:e4.title},onApplied:(e,s)=>{e5(),0===e&&(sW(!1),sF({intro:"".concat(s," ").concat(e7("runq.savedOffer"))}))}}),sC&&"queued"===e4.status&&(0,a.jsx)(S.f,{target:{sessionId:e8.id,taskId:e4.id,title:e4.title},intro:sC.intro,checkContract:!sI,onClose:e=>{sF(null),e&&e5()}}),sn&&e4.runId&&(0,a.jsx)(x.P,{sessionId:e8.id,taskId:e4.id,live:"running"===e4.status||"waiting-approval"===e4.status}),se?(0,a.jsxs)("div",{style:{marginTop:8},children:[(0,a.jsx)("label",{children:e7("form.titleLabel")}),(0,a.jsx)("input",{type:"text",value:st,onChange:e=>sl(e.target.value)}),(0,a.jsx)("div",{style:{marginTop:8},children:(0,a.jsx)(A,{value:si,onChange:sr,presets:e3})}),(0,a.jsx)("label",{children:e7("form.taskLabel")}),(0,a.jsx)("textarea",{className:"prose",value:sc,onChange:e=>sd(e.target.value)}),(null==(q=e8.vcs)?void 0:q.enabled)&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("label",{htmlFor:"branch-".concat(e4.id),children:e7("task.branch")}),(0,a.jsx)("input",{id:"branch-".concat(e4.id),type:"text",value:so,onChange:e=>sh(e.target.value),placeholder:e8.vcs.branchPrefix,disabled:"per-session"===e8.vcs.branchMode}),(0,a.jsx)("p",{className:"why",children:"per-session"===e8.vcs.branchMode?e7("task.branchIgnored"):e7("task.branchWhy")}),(0,a.jsx)("label",{htmlFor:"commit-".concat(e4.id),children:e7("task.commitMessage")}),(0,a.jsx)("textarea",{id:"commit-".concat(e4.id),value:su,onChange:e=>sm(e.target.value),style:{minHeight:70}}),(0,a.jsx)("p",{className:"why",children:e7("task.commitWhy")})]}),(0,a.jsx)(z,{checks:sp,onChange:sv}),sc.trim()!==e4.prompt.trim()&&(0,a.jsx)("p",{className:"notice caution small",children:e7("task.newIntentNote")}),(0,a.jsx)(N.y,{readOnly:sx,scope:sg,onReadOnly:sj,onScope:sf}),(0,a.jsxs)("div",{className:"row",style:{marginTop:8},children:[(0,a.jsx)("button",{className:"primary",onClick:()=>void(sO?sq():sR()),children:sO?e7("task.saveAndRerun"):e7("task.save")}),(0,a.jsx)("span",{className:"err",children:sw})]}),sO&&(0,a.jsx)("p",{className:"muted small",children:e7("task.editRanWhy")})]}):(0,a.jsxs)(a.Fragment,{children:[(null!=(eP=null==(U=e4.checks)?void 0:U.length)?eP:0)>0&&(0,a.jsxs)("details",{className:"small",style:{margin:"6px 0"},children:[(0,a.jsxs)("summary",{children:[e7("checks.title")," — ",e7("checks.n",{n:null!=(eD=null==(J=e4.checks)?void 0:J.length)?eD:0}),(null!=(eA=null==(G=e4.checkResults)?void 0:G.length)?eA:0)>0&&" \xb7 ".concat((null!=(eL=e4.checkResults)?eL:[]).filter(e=>e.passed).length,"/").concat(null==(Y=e4.checkResults)?void 0:Y.length," ").concat(e7("checks.passed"))]}),(0,a.jsx)("ul",{style:{margin:"6px 0",paddingLeft:20},children:(null!=(eE=e4.checks)?eE:[]).map((e,s)=>{var n;let t=(null!=(n=e4.checkResults)?n:[]).find(s=>s.name===e.name);return(0,a.jsxs)("li",{children:[(0,a.jsx)("strong",{children:e.name}),(0,a.jsxs)("span",{className:"muted",children:[" — ",e7("checks.kind.".concat(e.expect)),e.value?' "'.concat(e.value,'"'):"",e.run?": ".concat(e.run):e.file?": ".concat(e.file):""]}),t&&(0,a.jsxs)("div",{className:t.passed?"muted":"reason",children:[t.passed?e7("checks.passed"):e7("checks.failed")," — ",t.detail]})]},"".concat(e.name,"-").concat(s))})})]}),(null!=(eq=null==(Q=e4.reviewChecks)?void 0:Q.length)?eq:0)>0&&(0,a.jsxs)("details",{className:"small",style:{margin:"6px 0"},children:[(0,a.jsx)("summary",{children:e7("checks.fromReview",{n:null!=(eU=null==(V=e4.reviewChecks)?void 0:V.length)?eU:0})}),(0,a.jsx)("p",{className:"why",children:e7("checks.fromReviewWhy")}),(0,a.jsx)("ul",{style:{margin:"6px 0",paddingLeft:20},children:(null!=(eJ=e4.reviewChecks)?eJ:[]).map(e=>{var s;let n=(null!=(s=e4.checkResults)?s:[]).find(s=>s.name===e.check.name);return(0,a.jsxs)("li",{children:[(0,a.jsx)("code",{children:e.findingId})," ",(0,a.jsx)("strong",{children:e.check.name}),"active"!==e.state&&(0,a.jsx)("span",{className:"chip",style:{marginLeft:6},children:e7("checks.state.".concat(e.state))}),(0,a.jsx)("div",{className:"muted",children:e.what}),n&&(0,a.jsxs)("div",{className:n.passed?"muted":"reason",children:[n.passed?e7("checks.passed"):e7("checks.failed")," — ",n.detail]})]},"".concat(e.attempt,":").concat(e.findingId,":").concat(e.check.name))})})]}),(0,a.jsx)(_,{review:e4.review}),e4.stopCode&&!(0,h.DG)(e4)&&(0,a.jsx)("p",{className:"small",children:(0,a.jsx)("span",{className:"chip",title:e7("stop.why"),children:e7("stop.".concat(e4.stopCode))})}),e4.handoff&&!(0,h.DG)(e4)&&(0,a.jsx)(E,{handoff:e4.handoff}),e4.summary&&(0,a.jsxs)("div",{className:"summary",children:[(0,a.jsx)("strong",{children:e7("task.whatWasDone")}),(0,a.jsx)(j.s,{text:e4.summary})]}),(null!=(ez=null==(X=e4.deviations)?void 0:X.length)?ez:0)>0&&(0,a.jsx)(Z,{items:null!=(eG=e4.deviations)?eG:[]}),(null!=(eZ=null==($=e4.disputes)?void 0:$.length)?eZ:0)>0&&(0,a.jsx)(K,{items:null!=(eK=e4.disputes)?eK:[]}),e4.environment&&(0,a.jsx)("div",{className:"muted small",style:{margin:"4px 0"},children:e7("task.ranWith",{node:e4.environment.node,npm:null!=(e_=e4.environment.npm)?e_:"—",git:null!=(eY=e4.environment.git)?eY:"—",pwsh:null!=(eV=null!=(eQ=e4.environment.pwsh)?eQ:e4.environment.powershell)?eV:"—"})}),(null!=(eX=null==(ee=e4.leftovers)?void 0:ee.length)?eX:0)>0&&(0,a.jsxs)("div",{className:"err small",style:{margin:"6px 0"},children:[e7("task.leftovers",{n:null!=(e$=null==(es=e4.leftovers)?void 0:es.length)?e$:0}),(0,a.jsx)("ul",{style:{margin:"4px 0",paddingLeft:20},children:(null!=(e0=e4.leftovers)?e0:[]).map(e=>(0,a.jsxs)("li",{children:[(0,a.jsx)("code",{children:e.name})," pid ",e.pid,e.ports.length>0?" \xb7 ".concat(e7("task.leftoverPorts",{ports:e.ports.join(", ")})):""," \xb7 ",e.by]},"".concat(e.by,"-").concat(e.pid)))})]}),e4.reason&&(0,a.jsx)("div",{className:"reason small",style:{margin:"6px 0"},children:e4.reason}),(null!=(e1=null==(en=e4.attempts)?void 0:en.length)?e1:0)>0&&(0,a.jsxs)("details",{children:[(0,a.jsx)("summary",{children:e7("task.attempts",{n:null!=(e2=null==(ea=e4.attempts)?void 0:ea.length)?e2:0})}),null==(et=e4.attempts)?void 0:et.map((e,s)=>{var n,t,l,i;return(0,a.jsxs)("div",{className:"small",style:{margin:"8px 0 12px"},children:[(0,a.jsxs)("div",{className:"row",children:[(0,a.jsx)("strong",{children:e7("task.attemptN",{n:s+1})}),(0,a.jsx)("span",{className:"badge ".concat(e.status),children:e7("status.".concat(e.status))}),e.iterations>0&&(0,a.jsx)("span",{className:"muted",children:e7("task.iterations",{n:e.iterations})}),e.runId&&(0,a.jsx)(o.u,{label:e7("save.attemptLog"),save:()=>c.FH.saveTaskLog(e8.id,e4.id,e.runId)}),e.runId&&(0,a.jsx)(o.H,{sessionId:e8.id,taskId:e4.id,attempt:s+1}),e.runId&&(null==(n=e.vcs)?void 0:n.commit)&&e.vcs.baseCommit&&(0,a.jsx)(f.C,{sessionId:e8.id,taskId:e4.id,runId:e.runId,title:"".concat(e4.title," — ").concat(e7("task.attemptN",{n:s+1})),files:null!=(l=null==(t=e.vcs.files)?void 0:t.length)?l:0})]}),(0,a.jsxs)("div",{className:"muted",children:[e.startedAt?e7("task.started",{t:e9(e.startedAt)}):"",e.finishedAt?" \xb7 ".concat(e7("task.finished",{t:e9(e.finishedAt)})):""]}),e.summary&&(0,a.jsx)("div",{children:e.summary}),e.reason&&(0,a.jsx)("div",{className:"err",children:e.reason}),e.prompt&&e.prompt!==e4.prompt&&(0,a.jsxs)("details",{children:[(0,a.jsx)("summary",{children:e7("task.attemptText")}),(0,a.jsx)("pre",{children:e.prompt})]})]},"".concat(null!=(i=e.runId)?i:s))})]}),"queued"===e4.status?(0,a.jsxs)("div",{style:{marginTop:8},children:[(0,a.jsx)("div",{className:"muted small",children:e7("task.prompt")}),(0,a.jsx)("pre",{children:e4.prompt}),e4.level2.trim()?(0,a.jsxs)("details",{children:[(0,a.jsx)("summary",{children:e7("task.l2Show",{n:e4.level2.trim().split("\n").length})}),(0,a.jsx)("pre",{children:e4.level2})]}):(0,a.jsx)("div",{className:"muted small",children:e7("task.noL2")})]}):(0,a.jsxs)("details",{children:[(0,a.jsx)("summary",{children:e7("task.promptAndL2")}),e4.level2.trim()&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"muted small",children:e7("task.l2")}),(0,a.jsx)("pre",{children:e4.level2})]}),(0,a.jsx)("div",{className:"muted small",children:e7("task.prompt")}),(0,a.jsx)("pre",{children:e4.prompt})]}),(null==(el=e4.continuing)?void 0:el.instruction)&&(0,a.jsxs)("div",{className:"notice calm small",style:{marginTop:6},children:[(0,a.jsx)("strong",{children:e7("task.continuedWith",{n:e4.continuing.fromAttempt})}),(0,a.jsx)("pre",{style:{margin:"4px 0 0",whiteSpace:"pre-wrap"},children:e4.continuing.instruction})]}),sz&&(0,a.jsxs)("details",{open:!sz.approved,children:[(0,a.jsx)("summary",{children:sz.approved?e7("pm.taskApproved",{n:sz.version}):e7("pm.taskWaiting",{n:sz.version})}),(0,a.jsx)(I.D,{plan:sz})]}),e4.firstMessage&&(0,a.jsxs)("details",{children:[(0,a.jsx)("summary",{children:e7("task.firstMessage")}),(0,a.jsx)("pre",{className:"tall",children:e4.firstMessage})]}),e4.runId&&(0,a.jsxs)("details",{onToggle:e=>e.currentTarget.open&&void sG(),children:[(0,a.jsx)("summary",{children:e7("task.files")}),(0,a.jsx)("div",{className:"row small",style:{margin:"6px 0"},children:(0,a.jsx)(o.u,{label:e7("save.log"),save:()=>c.FH.saveTaskLog(e8.id,e4.id)})}),sk&&(0,a.jsxs)("div",{className:"small",children:[sZ("task.reports","reports",sk.reports),sZ("task.artifacts","artifacts",sk.artifacts),sZ("task.replies","replies",sk.replies)]})]}),e4.finalReply&&(0,a.jsxs)("details",{children:[(0,a.jsx)("summary",{children:e7("task.finalReply")}),(0,a.jsx)("pre",{className:"tall",children:e4.finalReply})]})]})]})}function J(e){let{events:s}=e,{t:n}=(0,d.kj)(),{appearance:l}=(0,m.KP)(),i=(0,t.useRef)(null);return(0,t.useEffect)(()=>{!l.reduceMotion&&i.current&&(i.current.scrollTop=i.current.scrollHeight)},[s.length,l.reduceMotion]),(0,a.jsxs)("div",{className:"panel",children:[(0,a.jsx)("h2",{children:n("live.title")}),(0,a.jsxs)("div",{className:"log",ref:i,children:[0===s.length&&(0,a.jsx)("div",{className:"muted",children:n("live.none")}),s.map((e,s)=>{var n;return(0,a.jsxs)("div",{className:e.level,children:[(0,a.jsx)("span",{className:"time",children:new Date(e.at).toLocaleTimeString(void 0,{hour12:!1})}),null!=(n=e.message)?n:e.type]},s)})]})]})}function z(e){let{checks:s,onChange:n}=e,{t}=(0,d.kj)(),l=(e,a)=>n(s.map((s,n)=>e===n?{...s,...a}:s));return(0,a.jsxs)("div",{style:{marginTop:12},children:[(0,a.jsx)("label",{children:t("checks.title")}),(0,a.jsx)("p",{className:"why",style:{marginTop:0},children:t("checks.why")}),0===s.length&&(0,a.jsx)("p",{className:"muted small",children:t("checks.noneWhy")}),s.map((e,i)=>{var r,d,o,h;return(0,a.jsxs)("div",{className:"option",children:[(0,a.jsxs)("div",{className:"row",children:[(0,a.jsx)("input",{type:"text",className:"grow",value:e.name,placeholder:t("checks.namePlaceholder"),onChange:e=>l(i,{name:e.target.value}),"aria-label":t("checks.name")}),(0,a.jsx)("select",{value:e.expect,onChange:e=>l(i,{expect:e.target.value}),"aria-label":t("checks.kind"),style:{width:"auto"},children:c.FZ.map(e=>(0,a.jsx)("option",{value:e,children:t("checks.kind.".concat(e))},e))}),(0,a.jsx)("button",{className:"quiet",onClick:()=>n(s.filter((e,s)=>s!==i)),children:t("checks.remove")})]}),(0,a.jsxs)("div",{className:"row",style:{marginTop:6},children:[(0,c.rt)(e.expect)?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("input",{type:"text",className:"grow",value:null!=(r=e.run)?r:"",placeholder:t("checks.run"),onChange:e=>l(i,{run:e.target.value}),"aria-label":t("checks.run")}),(0,a.jsx)("input",{type:"text",value:null!=(d=e.cwd)?d:"",placeholder:t("checks.cwd"),onChange:e=>l(i,{cwd:e.target.value}),"aria-label":t("checks.cwd"),style:{width:220}})]}):(0,a.jsx)("input",{type:"text",className:"grow",value:null!=(o=e.file)?o:"",placeholder:t("checks.file"),onChange:e=>l(i,{file:e.target.value}),"aria-label":t("checks.file")}),(0,c.dK)(e.expect)&&(0,a.jsx)("input",{type:"text",value:null!=(h=e.value)?h:"",placeholder:"output-matches"===e.expect?t("checks.valueRegex"):t("checks.value"),onChange:e=>l(i,{value:e.target.value}),"aria-label":t("checks.value"),style:{width:240}})]})]},i)}),(0,a.jsx)("button",{onClick:()=>n([...s,{name:"",expect:"exit-zero",run:""}]),children:t("checks.add")})]})}function G(e){let{tasks:s}=e,{t:n}=(0,d.kj)(),t=(0,h.hH)(s),l=(0,u.c)(!!t&&t.tasks.some(h.DG));if(!t)return null;let i=(0,h.eZ)(t.run,t.tasks,l);return(0,a.jsx)("p",{className:"muted small",style:{margin:"4px 0 10px"},children:n(i.live?"session.runClockLive":"session.runClock",{n:i.tasks,d:(0,c.c5)(i.ms)})})}function Z(e){let{items:s}=e,{t:n}=(0,d.kj)();return(0,a.jsxs)("div",{className:"summary",children:[(0,a.jsx)("strong",{children:n("task.deviations",{n:s.length})}),(0,a.jsx)("ol",{style:{margin:"6px 0",paddingLeft:20},children:s.map((e,s)=>(0,a.jsxs)("li",{style:{marginBottom:6},children:[(0,a.jsx)("div",{children:e.instruction}),(0,a.jsxs)("div",{className:"muted",children:[n("task.deviationDid"),": ",e.did]}),(0,a.jsxs)("div",{className:"muted",children:[n("task.deviationWhy"),": ",e.why]})]},s))})]})}function K(e){let{items:s}=e,{t:n}=(0,d.kj)();return(0,a.jsxs)("div",{className:"summary",children:[(0,a.jsx)("strong",{children:n("task.disputes",{n:s.length})}),(0,a.jsx)("ol",{style:{margin:"6px 0",paddingLeft:20},children:s.map((e,s)=>(0,a.jsxs)("li",{style:{marginBottom:6},children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("code",{children:e.finding})," — ",e.why]}),(0,a.jsxs)("div",{className:"muted",children:[n("review.evidence"),": ",e.evidence]})]},s))})]})}function _(e){var s,n,t,l,i;let{review:r}=e,{t:c}=(0,d.kj)();if(!r)return null;if("skipped"===r.verdict)return r.skippedBecause?(0,a.jsx)("p",{className:"muted small",children:c("review.skippedWhy",{why:r.skippedBecause})}):null;let o="pass"===r.verdict?"done":"fail"===r.verdict?"blocked":"waiting-approval";return(0,a.jsxs)("div",{className:"small",style:{margin:"8px 0"},children:[(0,a.jsxs)("div",{className:"row",children:[(0,a.jsx)("span",{className:"badge ".concat(o),children:c("review.verdict.".concat(r.verdict))}),r.stepsRun>0&&(0,a.jsx)("span",{className:"muted",children:c("review.ran",{n:r.stepsRun})}),r.rounds>1&&(0,a.jsx)("span",{className:"muted",children:c("review.rounds",{n:r.rounds})}),r.model&&(0,a.jsx)("span",{className:"chip",children:c("review.onModel",{model:r.model})})]}),r.problem&&(0,a.jsx)("p",{className:"reason",children:c("review.problem",{problem:r.problem})}),r.summary&&(0,a.jsx)(j.s,{text:r.summary}),(null!=(t=null==(s=r.findings)?void 0:s.length)?t:0)>0&&(0,a.jsxs)("details",{style:{marginTop:4},children:[(0,a.jsx)("summary",{children:c("review.findings",{n:null!=(l=null==(n=r.findings)?void 0:n.length)?l:0})}),(0,a.jsx)("ol",{style:{margin:"6px 0",paddingLeft:20},children:(null!=(i=r.findings)?i:[]).map((e,s)=>(0,a.jsxs)("li",{style:{marginBottom:8},children:[(0,a.jsxs)("div",{children:[e.id&&(0,a.jsx)("code",{style:{marginRight:6},children:e.id}),e.what,"task"===e.about&&(0,a.jsx)("span",{className:"chip",style:{marginLeft:6},children:c("review.aboutTask")}),e.repeated&&(0,a.jsx)("span",{className:"chip",style:{marginLeft:6},children:c("review.repeated")})]}),e.where&&(0,a.jsx)("div",{className:"muted",children:e.where}),(0,a.jsxs)("div",{className:"muted",children:[c("review.evidence"),": ",e.evidence]})]},s))})]})]})}},4784:(e,s,n)=>{"use strict";n.d(s,{Y:()=>r});var a=n(3365),t=n(1521),l=n(5549),i=n(867);function r(e){var s,n,r;let{id:c,chosen:d,onChange:o,none:h,catalogue:u,disabled:m=!1,style:p}=e,{t:v}=(0,i.kj)(),x=function(e){let[s,n]=(0,t.useState)(null);return(0,t.useEffect)(()=>{if(void 0!==e)return;let s=!0;return l.FH.models().then(e=>{s&&n(e)}).catch(()=>void 0),()=>{s=!1}},[e]),void 0!==e?e:s}(u),j=null!=(s=null==x?void 0:x.options)?s:[],g=e=>e.toLowerCase().replace(/[-‐‑‒–—_]+/g," ").replace(/\s+/g," ").trim(),f=d?j.find(e=>g(e.name)===g(d)):void 0,y=null!=(n=null==f?void 0:f.name)?n:d,b=!!f,k=j.filter(e=>!e.group),N=new Map;for(let e of j)e.group&&N.set(e.group,[...null!=(r=N.get(e.group))?r:[],e]);return(0,a.jsxs)("select",{id:c,value:y,onChange:e=>o(e.target.value),disabled:m,style:{width:"auto",minWidth:280,...p},children:[(0,a.jsx)("option",{value:"",children:h}),d&&!b&&(0,a.jsx)("option",{value:d,children:v("model.notInList",{name:d})}),k.map(e=>(0,a.jsxs)("option",{value:e.name,disabled:e.disabled,children:[e.name,e.disabled?" — ".concat(v("model.unavailable")):""]},e.name)),[...N.entries()].map(e=>{let[s,n]=e;return(0,a.jsx)("optgroup",{label:s,children:n.map(e=>(0,a.jsxs)("option",{value:e.name,disabled:e.disabled,children:[e.name,e.disabled?" — ".concat(v("model.unavailable")):""]},e.name))},s)})]})}},8078:(e,s,n)=>{"use strict";n.d(s,{AppearanceProvider:()=>o,KP:()=>h});var a=n(3365),t=n(1521);let l="cop.appearance",i=["small","normal","large","huge","giant"];"\n(function () {\n try {\n var d = document.documentElement;\n var raw = localStorage.getItem('".concat(l,"');\n var a = raw ? JSON.parse(raw) : {};\n if (!a || typeof a !== 'object') a = {};\n d.dataset.theme = a.theme === 'dark' ? 'dark' : 'light';\n d.dataset.textsize = ").concat(JSON.stringify(i),".indexOf(a.textSize) >= 0 ? a.textSize : 'normal';\n d.dataset.contrast = a.highContrast ? 'high' : 'normal';\n d.dataset.motion = a.reduceMotion ? 'reduced' : 'normal';\n d.dataset.links = a.underlineLinks ? 'underline' : 'plain';\n d.dataset.focus = a.strongFocus ? 'strong' : 'normal';\n } catch (e) {}\n})();\n");let r={theme:"light",textSize:"normal",highContrast:!1,reduceMotion:!1,underlineLinks:!1,strongFocus:!1};function c(e){let s=document.documentElement;s.dataset.theme=e.theme,s.dataset.textsize=e.textSize,s.dataset.contrast=e.highContrast?"high":"normal",s.dataset.motion=e.reduceMotion?"reduced":"normal",s.dataset.links=e.underlineLinks?"underline":"plain",s.dataset.focus=e.strongFocus?"strong":"normal"}let d=(0,t.createContext)({appearance:r,set:()=>void 0,reset:()=>void 0,loaded:!1});function o(e){let{children:s}=e,[n,o]=(0,t.useState)(r),[h,u]=(0,t.useState)(!1);(0,t.useEffect)(()=>{let e=r;try{let s=window.localStorage.getItem(l);s?e=function(e){let s=e&&"object"==typeof e?e:{},n=(e,s)=>"boolean"==typeof e?e:s;return{theme:"dark"===s.theme?"dark":"light"===s.theme?"light":r.theme,textSize:i.includes(s.textSize)?s.textSize:r.textSize,highContrast:n(s.highContrast,r.highContrast),reduceMotion:n(s.reduceMotion,r.reduceMotion),underlineLinks:n(s.underlineLinks,r.underlineLinks),strongFocus:n(s.strongFocus,r.strongFocus)}}(JSON.parse(s)):window.matchMedia("(prefers-color-scheme: dark)").matches&&(e={...e,theme:"dark"}),window.matchMedia("(prefers-reduced-motion: reduce)").matches&&!s&&(e={...e,reduceMotion:!0})}catch(e){}o(e),c(e),u(!0)},[]);let m=(0,t.useCallback)(e=>{o(s=>{let n={...s,...e};c(n);try{window.localStorage.setItem(l,JSON.stringify(n))}catch(e){}return n})},[]),p=(0,t.useCallback)(()=>{o(r),c(r);try{window.localStorage.removeItem(l)}catch(e){}},[]);return(0,a.jsx)(d.Provider,{value:{appearance:n,set:m,reset:p,loaded:h},children:s})}function h(){return(0,t.useContext)(d)}},8596:(e,s,n)=>{"use strict";n.d(s,{E:()=>r});var a=n(3365),t=n(1521),l=n(5549),i=n(867);function r(e){var s,n,r,c,d,o,h;let{dir:u,onDone:m}=e,{t:p}=(0,i.kj)(),v=(0,i.W3)(),[x,j]=(0,t.useState)(null),[g,f]=(0,t.useState)(""),[y,b]=(0,t.useState)(""),[k,N]=(0,t.useState)(""),[w,S]=(0,t.useState)(!1),C=e=>(null!=e?e:"—").slice(0,8),F=async e=>{b(""),N(""),f(e?"fetch":"prepare");try{j(await l.FH.preparePreview(u,e))}catch(e){b(e.message)}finally{f("")}},I=async()=>{if(null==x?void 0:x.fingerprint){b(""),f("prepare");try{var e,s;let n=await l.FH.prepareProject(u,x.fingerprint,{savedBranch:x.savedBranch,savedMainBranch:x.savedMainBranch});n.ok?(N(null!=(s=n.result)?s:""),j(null),null==m||m()):b(null!=(e=n.problem)?e:"")}catch(e){b(e.message)}finally{f("")}}},W=async e=>{try{await navigator.clipboard.writeText(e),S(!0),window.setTimeout(()=>S(!1),2500)}catch(e){b(p("plan.copyFailed"))}},M=e=>(0,a.jsxs)("ul",{style:{margin:"2px 0 6px",paddingLeft:20},children:[e.slice(0,30).map(e=>(0,a.jsx)("li",{children:(0,a.jsx)("code",{children:e})},e)),e.length>30&&(0,a.jsx)("li",{className:"muted",children:p("prep.more",{n:e.length-30})})]}),T=x&&!x.ok&&x.fetched&&!x.fetched.ok;return(0,a.jsxs)("div",{className:"prepare-folder small",style:{marginTop:8,overflowWrap:"anywhere"},children:[(0,a.jsx)("button",{type:"button",onClick:()=>void F(!0),disabled:!!g,children:p("prep.show")}),(0,a.jsx)("p",{className:"why",children:p("prep.why")}),(0,a.jsx)("p",{className:"why",children:p("prep.password")}),"fetch"===g&&(0,a.jsx)("p",{role:"status",children:p("prep.fetching")}),y&&(0,a.jsx)("p",{className:"err",role:"alert",children:y}),k&&(0,a.jsx)("p",{className:"notice",role:"status",children:k}),x&&!x.ok&&!T&&(0,a.jsx)("p",{className:"err",children:x.problem}),T&&(0,a.jsxs)("div",{className:"notice caution",style:{marginTop:8},children:[(0,a.jsxs)("p",{children:[(0,a.jsx)("strong",{children:p("prep.fetchFailed")})," ",(0,a.jsx)("code",{children:null==(s=x.fetched)?void 0:s.detail})]}),(null==(n=x.fetched)?void 0:n.auth)&&(0,a.jsx)("p",{children:p("prep.fetchAuth")}),(0,a.jsx)("div",{className:"row",children:(0,a.jsx)("button",{type:"button",onClick:()=>void F(!0),disabled:!!g,children:p("prep.retry")})}),x.fetchCommand&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{style:{marginTop:8},children:p("prep.ownTerminal")}),(0,a.jsx)("pre",{className:"sync-cmd",children:x.fetchCommand}),(0,a.jsxs)("div",{className:"row",children:[(0,a.jsx)("button",{type:"button",onClick:()=>{var e;W(null!=(e=x.fetchCommand)?e:"")},children:p("prep.copyFetch")}),w&&(0,a.jsx)("span",{className:"badge done",children:p("prep.copied")}),(0,a.jsx)("button",{type:"button",onClick:()=>void F(!1),disabled:!!g,children:p("prep.useFetched")})]}),x.lastFetched&&(0,a.jsx)("p",{className:"muted",children:p("prep.lastFetched",{when:v(x.lastFetched)})})]})]}),(null==x?void 0:x.ok)&&(0,a.jsxs)("div",{className:"notice caution",style:{marginTop:8},children:[(0,a.jsx)("p",{children:p("prep.where",{target:null!=(r=x.target)?r:"",commit:C(x.targetCommit),branch:null!=(c=x.branch)?c:"HEAD",head:C(x.head)})}),!x.fetched&&(0,a.jsxs)("p",{className:"muted",children:[p("prep.notFetched")," ",x.lastFetched?p("prep.lastFetched",{when:v(x.lastFetched)}):p("prep.lastFetchedUnknown")]}),x.alreadyThere?(0,a.jsx)("p",{children:p("prep.already")}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("strong",{children:p("prep.willDo")}),(0,a.jsxs)("ol",{style:{margin:"4px 0",paddingLeft:20},children:[x.savedBranch&&(0,a.jsxs)("li",{children:[p("prep.keepChanges",{changed:x.changed.length,untracked:x.untracked.length,saved:x.savedBranch}),M([...x.changed,...x.untracked])]}),x.savedMainBranch&&(0,a.jsxs)("li",{children:[p("prep.keepMain",{n:x.mainOnlyCommits.length,branch:null!=(d=x.localBranch)?d:"",saved:x.savedMainBranch}),M(x.mainOnlyCommits)]}),(0,a.jsx)("li",{children:p("prep.moveTo",{branch:null!=(o=x.localBranch)?o:"",commit:C(x.targetCommit),target:null!=(h=x.target)?h:""})})]}),x.branchOnlyCommits.length>0&&x.branch&&(0,a.jsx)("p",{children:p("prep.branchStays",{branch:x.branch,n:x.branchOnlyCommits.length})}),(0,a.jsx)("p",{className:"muted",children:p("prep.ignored")}),(0,a.jsxs)("div",{className:"row",children:[(0,a.jsx)("button",{type:"button",className:"primary",onClick:()=>void I(),disabled:!!g,children:p("prep.confirm")}),(0,a.jsx)("button",{type:"button",className:"quiet",onClick:()=>j(null),disabled:!!g,children:p("prep.cancel")})]})]})]})]})}},8848:(e,s,n)=>{"use strict";n.d(s,{H4:()=>d,L:()=>o,z4:()=>h});var a=n(3365),t=n(8197),l=n.n(t),i=n(1521),r=n(5549),c=n(867);function d(e){let{current:s,onUse:n}=e,{t}=(0,c.kj)(),[l,d]=(0,i.useState)(null);if((0,i.useEffect)(()=>{let e=!1;return r.FH.project().then(s=>{e||d(s)}).catch(()=>void 0),()=>{e=!0}},[]),!l)return null;let o=l.rootDir.trim(),h=s.trim().toLowerCase(),u=n?l.others.filter(e=>e.rootDir.trim().toLowerCase()!==h):[];return(0,a.jsx)(m,{label:o?t("proj.defaultIs",{dir:o}):t("proj.noneShort"),offer:o&&n&&h!==o.toLowerCase()?{text:t("proj.useIt"),onUse:()=>n(o)}:void 0,more:u.map(e=>({text:t("proj.otherUse",{name:e.name}),title:e.rootDir,onUse:()=>null==n?void 0:n(e.rootDir)})),link:o?t("proj.change"):t("proj.setIt"),anchor:"project"})}function o(e){let{current:s,onUse:n}=e,t=u(),{t:l}=(0,c.kj)();if(!t)return null;let i=t.defaultModel.trim();return(0,a.jsx)(m,{label:i?l("def.modelDefaultIs",{name:i}):l("def.modelNoneShort"),offer:i&&n&&s.trim()!==i?{text:l("def.modelUseIt"),onUse:()=>n(i)}:void 0,link:l(i?"proj.change":"proj.setIt"),anchor:"model"})}function h(e){let{current:s,onUse:n}=e,t=u(),{t:l}=(0,c.kj)();if(!t)return null;let i=t.defaultReviewModel.trim();return(0,a.jsx)(m,{label:i?l("def.reviewDefaultIs",{name:i}):l("def.reviewNoneShort"),offer:i&&n&&s.trim()!==i?{text:l("def.modelUseIt"),onUse:()=>n(i)}:void 0,link:l(i?"proj.change":"proj.setIt"),anchor:"review"})}function u(){let[e,s]=(0,i.useState)(null);return(0,i.useEffect)(()=>{let e=!1;return r.FH.models().then(n=>{e||s(n)}).catch(()=>void 0),()=>{e=!0}},[]),e}function m(e){let{label:s,offer:n,more:t=[],link:i,anchor:r}=e;return(0,a.jsxs)("p",{className:"muted small",style:{marginTop:4},children:[s," ",n&&(0,a.jsxs)(a.Fragment,{children:["\xb7"," ",(0,a.jsx)("button",{type:"button",className:"linkish",onClick:n.onUse,children:n.text})," "]}),t.map(e=>(0,a.jsxs)("span",{children:["\xb7"," ",(0,a.jsx)("button",{type:"button",className:"linkish",onClick:e.onUse,title:e.title,children:e.text})," "]},e.text)),"\xb7 ",(0,a.jsx)(l(),{href:"/defaults#".concat(r),children:i})]})}},9717:(e,s,n)=>{"use strict";n.d(s,{D:()=>l});var a=n(3365),t=n(867);function l(e){var s,n;let{plan:l,showApproval:i=!0}=e,{t:r}=(0,t.kj)(),c=(0,t.W3)(),d=l.approved;return(0,a.jsxs)("div",{className:"plan-view",children:[(0,a.jsx)("p",{className:"small muted",children:r("pm.version",{n:l.version,at:c(l.at)})}),i&&d&&(0,a.jsxs)("p",{className:"small",children:["operator"===d.by?r("pm.approvedByOperator",{at:c(d.at)}):r("pm.approvedAuto",{at:c(d.at)}),d.why&&" ".concat(d.why),d.note&&" ".concat(r("pm.approvedNote",{note:d.note}))]}),(0,a.jsx)("h4",{children:r("pm.existing")}),(0,a.jsx)("p",{className:"pre-wrap",children:l.existing}),(0,a.jsx)("h4",{children:r("pm.approach")}),(0,a.jsx)("p",{className:"pre-wrap",children:l.approach}),(0,a.jsx)("h4",{children:r("pm.steps")}),(0,a.jsx)("ol",{children:l.steps.map((e,s)=>(0,a.jsx)("li",{className:"pre-wrap",children:e},s))}),l.files.length>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("h4",{children:r("pm.files")}),(0,a.jsx)("ul",{children:l.files.map(e=>(0,a.jsx)("li",{children:(0,a.jsx)("code",{children:e})},e))})]}),(0,a.jsx)("h4",{children:r("pm.verification")}),(0,a.jsx)("p",{className:"pre-wrap",children:l.verification}),l.risks&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("h4",{children:r("pm.risks")}),(0,a.jsx)("p",{className:"pre-wrap",children:l.risks})]}),(null!=(n=null==(s=l.revisions)?void 0:s.length)?n:0)>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("h4",{children:r("pm.revisions")}),(0,a.jsx)("ul",{children:l.revisions.map(e=>(0,a.jsxs)("li",{className:"small",children:[r("pm.revision",{n:e.version,at:c(e.at)})," ",(0,a.jsx)("span",{className:"pre-wrap",children:e.comment})]},e.version))})]})]})}}},e=>{e.O(0,[197,867,549,499,897,699,347,131,358],()=>e(e.s=1772)),_N_E=e.O()}]);