copilot-operator 0.1.43 → 0.1.44

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 (37) hide show
  1. package/dist/src/api/operator.controller.js +54 -0
  2. package/dist/src/api/operator.service.js +86 -0
  3. package/dist/src/plan/systemGuide.js +138 -2
  4. package/dist/src/session/workspace.js +71 -0
  5. package/dist/web/404.html +2 -2
  6. package/dist/web/_next/static/chunks/549-1fe42544e4b72942.js +1 -0
  7. package/dist/web/_next/static/chunks/867-0f0f8c3bd37be31e.js +1 -0
  8. package/dist/web/_next/static/chunks/app/layout-12f138ee04d33c1e.js +1 -0
  9. package/dist/web/_next/static/chunks/app/page-09c6e2d42098f8d4.js +1 -0
  10. package/dist/web/_next/static/css/{72c85e4322c21223.css → eaec9cc6fe8aceb7.css} +1 -1
  11. package/dist/web/appearance.html +2 -2
  12. package/dist/web/appearance.txt +10 -10
  13. package/dist/web/defaults.html +2 -2
  14. package/dist/web/defaults.txt +10 -10
  15. package/dist/web/history.html +2 -2
  16. package/dist/web/history.txt +10 -10
  17. package/dist/web/import.html +2 -2
  18. package/dist/web/import.txt +10 -10
  19. package/dist/web/index.html +2 -2
  20. package/dist/web/index.txt +10 -10
  21. package/dist/web/level1.html +2 -2
  22. package/dist/web/level1.txt +10 -10
  23. package/dist/web/presets.html +2 -2
  24. package/dist/web/presets.txt +10 -10
  25. package/dist/web/sessions/view.html +2 -2
  26. package/dist/web/sessions/view.txt +10 -10
  27. package/dist/web/sessions.html +2 -2
  28. package/dist/web/sessions.txt +10 -10
  29. package/dist/web/system.html +2 -2
  30. package/dist/web/system.txt +10 -10
  31. package/package.json +3 -2
  32. package/dist/web/_next/static/chunks/549-2415dd26f4e53d07.js +0 -1
  33. package/dist/web/_next/static/chunks/867-aea30f560bc18eaf.js +0 -1
  34. package/dist/web/_next/static/chunks/app/layout-dc602b727480a653.js +0 -1
  35. package/dist/web/_next/static/chunks/app/page-d73a8ff300862cd8.js +0 -1
  36. /package/dist/web/_next/static/{WmzBz4QN36pcz4PL_cfEW → BX8Nw248DTY9xAfUu2pOH}/_buildManifest.js +0 -0
  37. /package/dist/web/_next/static/{WmzBz4QN36pcz4PL_cfEW → BX8Nw248DTY9xAfUu2pOH}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{952:()=>{},966:(e,a,s)=>{"use strict";s.d(a,{Shell:()=>f});var r=s(3365),t=s(8197),n=s.n(t),l=s(1702),i=s(8214),o=s(1521),c=s(5549),d=s(867),h=s(1035),p=s(7527),m=s(9717);function u(){let{t:e}=(0,d.kj)(),[a,s]=(0,o.useState)([]),[t,n]=(0,o.useState)({}),l=(0,o.useRef)({}),i=(0,o.useRef)(""),h=(0,o.useCallback)(async()=>{try{let e=await c.FH.approvals();s(e);let a=[...new Set(e.map(e=>e.sessionId).filter(e=>!(e in l.current)))],r=a.sort().join(",");if(a.length>0&&r!==i.current){for(let e of(i.current=r,await c.FH.sessions().catch(()=>[])))l.current[e.id]=e.name;n({...l.current})}}catch(e){}},[]);return((0,p.z)(h,2e3),(0,o.useEffect)(()=>{let s="copilot-operator";document.title=a.length>0?"(".concat(a.length,") ").concat(e("approval.tabTitle")," — ").concat(s):s},[a.length,e]),0===a.length)?null:(0,r.jsxs)("section",{className:"approval-banner",role:"alert","aria-live":"assertive",children:[(0,r.jsx)("h2",{children:e("approval.waitingHere")}),(0,r.jsx)("p",{className:"small",children:e("approval.waitingHereWhy")}),a.map(e=>{var a;return(0,r.jsx)(v,{approval:e,sessionName:null!=(a=t[e.sessionId])?a:e.sessionId,onDecided:()=>void h()},e.id)})]})}function v(e){let{approval:a,sessionName:s,onDecided:t}=e,{t:l}=(0,d.kj)(),i=(0,d.W3)(),[p,m]=(0,o.useState)(!1),[u,v]=(0,o.useState)(""),j=(0,o.useRef)(!1),f=async e=>{if(!j.current&&("run-all"!==e||await (0,h.Z)(l("approval.runAllConfirm")))){j.current=!0,m(!0),v("");try{await c.FH.decide(a.id,e)}catch(e){v(e.message)}finally{j.current=!1,m(!1),t()}}};if(a.plan)return(0,r.jsx)(x,{approval:a,sessionName:s,onDecided:t});if(a.model){var k;let e=a.model;return(0,r.jsxs)("div",{className:"approval",children:[(0,r.jsxs)("div",{className:"row",children:[(0,r.jsx)("strong",{children:l(e.manual?"approval.manualTitle":"approval.modelTitle")}),(0,r.jsx)(n(),{href:(0,c.aT)(a.sessionId),children:s}),(0,r.jsx)("span",{className:"muted small",children:i(a.createdAt)})]}),(0,r.jsx)("p",{children:e.manual?e.asked?l("approval.manualAsk",{model:e.asked}):l("approval.manualAskAny"):l("approval.modelAsk",{model:e.asked})}),(0,r.jsx)("p",{className:"muted small",children:l("approval.modelShown",{shown:null!=(k=e.shown)?k:"—"})}),!e.manual&&(0,r.jsx)("p",{className:"reason small",children:l("approval.modelWhy",{why:e.why,tries:e.tries})}),u&&(0,r.jsx)("p",{className:"err",role:"alert",children:u}),(0,r.jsxs)("div",{className:"row",children:[(0,r.jsx)("button",{className:"primary",disabled:p,onClick:()=>void f("run"),children:l(e.manual?"approval.manualReady":"approval.modelChosen")}),(0,r.jsx)("button",{disabled:p,onClick:()=>void f("skip"),children:l("approval.modelAsItIs")}),(0,r.jsx)("button",{className:"danger",disabled:p,onClick:()=>void f("abort"),children:l("approval.modelStop")})]})]})}return(0,r.jsxs)("div",{className:"approval",children:[(0,r.jsxs)("div",{className:"row",children:[(0,r.jsx)("strong",{children:l("approval.title",{n:a.stepId})}),(0,r.jsx)(n(),{href:(0,c.aT)(a.sessionId),children:s}),(0,r.jsx)("span",{className:"muted small",children:i(a.createdAt)})]}),(0,r.jsx)("pre",{style:{margin:"8px 0"},children:a.description}),a.network&&(0,r.jsx)("p",{className:"reason small",children:l("approval.network")}),u&&(0,r.jsx)("p",{className:"err",role:"alert",children:u}),(0,r.jsxs)("div",{className:"row",children:[(0,r.jsx)("button",{className:"primary",disabled:p,onClick:()=>void f("run"),children:l("approval.run")}),!a.network&&(0,r.jsx)("button",{disabled:p,onClick:()=>void f("run-all"),title:l("approval.runAllWhy"),children:l("approval.runAll")}),(0,r.jsx)("button",{disabled:p,onClick:()=>void f("skip"),children:l("approval.skip")}),(0,r.jsx)("button",{className:"danger",disabled:p,onClick:()=>void f("abort"),children:l("approval.abort")})]})]})}function x(e){let{approval:a,sessionName:s,onDecided:t}=e,{t:l}=(0,d.kj)(),i=(0,d.W3)(),[p,u]=(0,o.useState)(""),[v,x]=(0,o.useState)(!1),[j,f]=(0,o.useState)(""),k=(0,o.useRef)(!1),w=a.plan,b=async e=>{if(!k.current){if("revise"===e&&!p.trim())return void f(l("pm.reviseNeedsNote"));if("stop"!==e||await (0,h.Z)(l("pm.stopConfirm"))){k.current=!0,x(!0),f("");try{await c.FH.decidePlan(a.id,e,p)}catch(e){f(e.message)}finally{k.current=!1,x(!1),t()}}}};return(0,r.jsxs)("div",{className:"approval",children:[(0,r.jsxs)("div",{className:"row",children:[(0,r.jsx)("strong",{children:l("pm.cardTitle",{title:w.title})}),(0,r.jsx)(n(),{href:(0,c.aT)(a.sessionId),children:s}),(0,r.jsx)("span",{className:"muted small",children:i(a.createdAt)})]}),(0,r.jsx)("p",{className:"small",children:l("pm.cardWhy")}),(0,r.jsx)(m.D,{plan:w.plan,showApproval:!1}),(0,r.jsx)("label",{htmlFor:"plan-note-".concat(a.id),children:l("pm.note")}),(0,r.jsx)("textarea",{id:"plan-note-".concat(a.id),className:"prose",value:p,onChange:e=>u(e.target.value),placeholder:l("pm.notePlaceholder"),style:{minHeight:70},disabled:v}),j&&(0,r.jsx)("p",{className:"err",role:"alert",children:j}),(0,r.jsxs)("div",{className:"row",children:[(0,r.jsx)("button",{className:"primary",disabled:v,onClick:()=>void b("approve"),children:l("pm.approve")}),(0,r.jsx)("button",{disabled:v,onClick:()=>void b("revise"),title:l("pm.reviseWhy"),children:l("pm.revise")}),(0,r.jsx)("button",{className:"danger",disabled:v,onClick:()=>void b("stop"),children:l("pm.stop")})]})]})}var j=s(3069);function f(e){let{children:a}=e;return"/"===(0,l.usePathname)()?(0,r.jsxs)("div",{className:"wb-root",children:[(0,r.jsx)(u,{}),(0,r.jsx)(j.$,{}),(0,r.jsx)("main",{id:"main",className:"wb-main",children:a})]}):(0,r.jsxs)("div",{className:"wrap",children:[(0,r.jsxs)("header",{className:"top",children:[(0,r.jsx)("h1",{children:(0,r.jsx)(n(),{href:"/",children:"copilot-operator"})}),(0,r.jsx)(i.s,{})]}),(0,r.jsx)(u,{}),(0,r.jsx)(j.$,{}),(0,r.jsx)("main",{id:"main",children:a})]})}},1702:(e,a,s)=>{"use strict";var r=s(9962);s.o(r,"usePathname")&&s.d(a,{usePathname:function(){return r.usePathname}}),s.o(r,"useRouter")&&s.d(a,{useRouter:function(){return r.useRouter}}),s.o(r,"useSearchParams")&&s.d(a,{useSearchParams:function(){return r.useSearchParams}})},7712:(e,a,s)=>{"use strict";s.d(a,{ScrollJump:()=>l});var r=s(3365),t=s(1521),n=s(867);function l(){let{t:e}=(0,n.kj)(),[a,s]=(0,t.useState)({long:!1,atTop:!0,atBottom:!1});return((0,t.useEffect)(()=>{let e=()=>{let e=document.documentElement;s({long:e.scrollHeight>2*window.innerHeight,atTop:window.scrollY<200,atBottom:window.innerHeight+window.scrollY>=e.scrollHeight-200})};e(),window.addEventListener("scroll",e,{passive:!0}),window.addEventListener("resize",e);let a=new ResizeObserver(e);return a.observe(document.body),()=>{window.removeEventListener("scroll",e),window.removeEventListener("resize",e),a.disconnect()}},[]),a.long)?(0,r.jsxs)("div",{className:"scroll-jump",children:[!a.atTop&&(0,r.jsx)("button",{type:"button","aria-label":e("scroll.top"),title:e("scroll.top"),onClick:()=>window.scrollTo({top:0,behavior:"smooth"}),children:"↑"}),!a.atBottom&&(0,r.jsx)("button",{type:"button","aria-label":e("scroll.bottom"),title:e("scroll.bottom"),onClick:()=>window.scrollTo({top:document.documentElement.scrollHeight,behavior:"smooth"}),children:"↓"})]}):null}},8078:(e,a,s)=>{"use strict";s.d(a,{AppearanceProvider:()=>d,KP:()=>h});var r=s(3365),t=s(1521);let n="cop.appearance",l=["small","normal","large","huge","giant"];"\n(function () {\n try {\n var d = document.documentElement;\n var raw = localStorage.getItem('".concat(n,"');\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(l),".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 i={theme:"light",textSize:"normal",highContrast:!1,reduceMotion:!1,underlineLinks:!1,strongFocus:!1};function o(e){let a=document.documentElement;a.dataset.theme=e.theme,a.dataset.textsize=e.textSize,a.dataset.contrast=e.highContrast?"high":"normal",a.dataset.motion=e.reduceMotion?"reduced":"normal",a.dataset.links=e.underlineLinks?"underline":"plain",a.dataset.focus=e.strongFocus?"strong":"normal"}let c=(0,t.createContext)({appearance:i,set:()=>void 0,reset:()=>void 0,loaded:!1});function d(e){let{children:a}=e,[s,d]=(0,t.useState)(i),[h,p]=(0,t.useState)(!1);(0,t.useEffect)(()=>{let e=i;try{let a=window.localStorage.getItem(n);a?e=function(e){let a=e&&"object"==typeof e?e:{},s=(e,a)=>"boolean"==typeof e?e:a;return{theme:"dark"===a.theme?"dark":"light"===a.theme?"light":i.theme,textSize:l.includes(a.textSize)?a.textSize:i.textSize,highContrast:s(a.highContrast,i.highContrast),reduceMotion:s(a.reduceMotion,i.reduceMotion),underlineLinks:s(a.underlineLinks,i.underlineLinks),strongFocus:s(a.strongFocus,i.strongFocus)}}(JSON.parse(a)):window.matchMedia("(prefers-color-scheme: dark)").matches&&(e={...e,theme:"dark"}),window.matchMedia("(prefers-reduced-motion: reduce)").matches&&!a&&(e={...e,reduceMotion:!0})}catch(e){}d(e),o(e),p(!0)},[]);let m=(0,t.useCallback)(e=>{d(a=>{let s={...a,...e};o(s);try{window.localStorage.setItem(n,JSON.stringify(s))}catch(e){}return s})},[]),u=(0,t.useCallback)(()=>{d(i),o(i);try{window.localStorage.removeItem(n)}catch(e){}},[]);return(0,r.jsx)(c.Provider,{value:{appearance:s,set:m,reset:u,loaded:h},children:a})}function h(){return(0,t.useContext)(c)}},8214:(e,a,s)=>{"use strict";s.d(a,{SkipLink:()=>m,s:()=>u});var r=s(3365),t=s(1521),n=s(8197),l=s.n(n),i=s(1702),o=s(5549),c=s(7527),d=s(867);let h={sessions:(0,r.jsx)("path",{d:"M4 5h16v4H4zM4 11h16v4H4zM4 17h10v2H4z"}),workbench:(0,r.jsx)("path",{d:"M3 4h18v16H3zM9 4v16M3 15h6",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinejoin:"round"}),defaults:(0,r.jsx)("path",{d:"M12 8a4 4 0 1 0 0 8 4 4 0 0 0 0-8zm8.5 4 1.5 1-1.6 2.8-1.8-.4a7 7 0 0 1-1.5 1.5l.4 1.8L14.7 21l-1-1.5a7 7 0 0 1-3.4 0l-1 1.5-2.8-1.6.4-1.8A7 7 0 0 1 5.4 16l-1.8.4L2 13.6 3.5 12.6V11.4L2 10.4l1.6-2.8 1.8.4A7 7 0 0 1 6.9 6.5l-.4-1.8L9.3 3l1 1.5a7 7 0 0 1 3.4 0l1-1.5 2.8 1.6-.4 1.8a7 7 0 0 1 1.5 1.5l1.8-.4L22 10.4l-1.5 1z"}),import:(0,r.jsx)("path",{d:"M12 3v10m0 0 4-4m-4 4-4-4M4 15v4a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-4",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),history:(0,r.jsx)("path",{d:"M12 3a9 9 0 1 0 8.5 6M12 7v5l3 2M3 4v5h5",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),level1:(0,r.jsx)("path",{d:"M6 3h9l5 5v13H6zM14 3v6h6M9 13h7M9 17h7",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinejoin:"round"}),presets:(0,r.jsx)("path",{d:"M5 4h14v4H5zM5 10h14v4H5zM5 16h9v4H5z",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinejoin:"round"}),appearance:(0,r.jsx)("path",{d:"M12 3a9 9 0 0 0 0 18c1.5 0 2-1 2-2s-1-1.5-1-2.5S14 15 15.5 15H17a4 4 0 0 0 4-4 8 8 0 0 0-9-8zM8 9a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm4-3a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm4 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"}),system:(0,r.jsx)("path",{d:"M4 5h16v10H4zM2 19h20M9 15v4M15 15v4",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinejoin:"round"})},p=[{href:"/",label:"nav.workbench",icon:"workbench"},{href:"/sessions",label:"nav.sessions",icon:"sessions"},{href:"/defaults",label:"nav.defaults",icon:"defaults"},{href:"/import",label:"nav.import",icon:"import"},{href:"/history",label:"nav.history",icon:"history"},{href:"/level1",label:"nav.level1",icon:"level1"},{href:"/presets",label:"nav.presets",icon:"presets"},{href:"/appearance",label:"nav.appearance",icon:"appearance"},{href:"/system",label:"nav.system",icon:"system"}];function m(){let{t:e}=(0,d.kj)();return(0,r.jsx)("a",{className:"skip-link",href:"#main",children:e("a11y.skip")})}function u(){let{t:e}=(0,d.kj)(),a=(0,i.usePathname)(),s=function(){let[e,a]=(0,t.useState)(0);return(0,c.z)(()=>o.FH.activity().then(e=>a(e.sessions)).catch(()=>void 0),4e3),e}();return(0,r.jsxs)("nav",{"aria-label":e("nav.label"),children:[p.map(t=>(0,r.jsxs)(l(),{href:t.href,"aria-current":a===t.href?"page":void 0,children:[(0,r.jsx)("svg",{className:"nav-icon",viewBox:"0 0 24 24",width:"16",height:"16",fill:"currentColor","aria-hidden":"true",children:h[t.icon]}),(0,r.jsx)("span",{children:e(t.label)}),"/history"===t.href&&s>0&&(0,r.jsxs)("span",{className:"live",title:e("nav.liveTitle",{n:s}),children:[(0,r.jsx)("span",{className:"dot","aria-hidden":"true"}),e("nav.live")]})]},t.href)),(0,r.jsx)(d.c5,{})]})}},8761:(e,a,s)=>{Promise.resolve().then(s.bind(s,1035)),Promise.resolve().then(s.t.bind(s,952,23)),Promise.resolve().then(s.bind(s,8214)),Promise.resolve().then(s.bind(s,7712)),Promise.resolve().then(s.bind(s,966)),Promise.resolve().then(s.bind(s,1701)),Promise.resolve().then(s.bind(s,8078)),Promise.resolve().then(s.bind(s,867))},9717:(e,a,s)=>{"use strict";s.d(a,{D:()=>n});var r=s(3365),t=s(867);function n(e){var a,s;let{plan:n,showApproval:l=!0}=e,{t:i}=(0,t.kj)(),o=(0,t.W3)(),c=n.approved;return(0,r.jsxs)("div",{className:"plan-view",children:[(0,r.jsx)("p",{className:"small muted",children:i("pm.version",{n:n.version,at:o(n.at)})}),l&&c&&(0,r.jsxs)("p",{className:"small",children:["operator"===c.by?i("pm.approvedByOperator",{at:o(c.at)}):i("pm.approvedAuto",{at:o(c.at)}),c.why&&" ".concat(c.why),c.note&&" ".concat(i("pm.approvedNote",{note:c.note}))]}),(0,r.jsx)("h4",{children:i("pm.existing")}),(0,r.jsx)("p",{className:"pre-wrap",children:n.existing}),(0,r.jsx)("h4",{children:i("pm.approach")}),(0,r.jsx)("p",{className:"pre-wrap",children:n.approach}),(0,r.jsx)("h4",{children:i("pm.steps")}),(0,r.jsx)("ol",{children:n.steps.map((e,a)=>(0,r.jsx)("li",{className:"pre-wrap",children:e},a))}),n.files.length>0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("h4",{children:i("pm.files")}),(0,r.jsx)("ul",{children:n.files.map(e=>(0,r.jsx)("li",{children:(0,r.jsx)("code",{children:e})},e))})]}),(0,r.jsx)("h4",{children:i("pm.verification")}),(0,r.jsx)("p",{className:"pre-wrap",children:n.verification}),n.risks&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("h4",{children:i("pm.risks")}),(0,r.jsx)("p",{className:"pre-wrap",children:n.risks})]}),(null!=(s=null==(a=n.revisions)?void 0:a.length)?s:0)>0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("h4",{children:i("pm.revisions")}),(0,r.jsx)("ul",{children:n.revisions.map(e=>(0,r.jsxs)("li",{className:"small",children:[i("pm.revision",{n:e.version,at:o(e.at)})," ",(0,r.jsx)("span",{className:"pre-wrap",children:e.comment})]},e.version))})]})]})}}},e=>{e.O(0,[353,197,867,549,499,347,131,358],()=>e(e.s=8761)),_N_E=e.O()}]);
@@ -1 +0,0 @@
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()}]);