@vinihcrosa/lumem-os 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/lumem.mjs +1 -1
- package/dist/server/main.mjs +1 -1
- package/dist/web/assets/{codemirror-setup-CHk_6JnB.js → codemirror-setup-CZZ5OaWR.js} +1 -1
- package/dist/web/assets/{index-Cft1ygtm.js → index-CQETGcam.js} +2 -2
- package/dist/web/assets/index-D_7OuYm9.css +32 -0
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/web/assets/index-C5PMQN0Q.css +0 -32
|
@@ -88,7 +88,7 @@ WARNING: This link could potentially be dangerous`)){let i=window.open();if(i){t
|
|
|
88
88
|
`)}function GD({scope:e,status:t,onAskAgent:i}){const n=We(),c=(Ne({queryKey:["agentConfig","list"],queryFn:()=>ie.agentConfig.list.query()}).data??[]).find(f=>f.transport==="acp")??null,h=He({mutationFn:async()=>{if(c===null)throw new Error("nenhum agente conectado");const f=await ie.session.createAgent.mutate({scopeType:e.scopeType,scopeId:e.scopeId,agentConfigId:c.id});return await n.invalidateQueries({queryKey:Hi(e.scopeType,e.scopeId)}),f.id},onSuccess:f=>i==null?void 0:i(f,YD(t.file))}),d=j.useMemo(()=>["# o id já está aqui; o que falta é o resto",'id = "prj_…"',"","[scripts]",'setup = "./scripts/setup.sh"','run = "pnpm dev"','test = "pnpm test"','teardown = "./scripts/teardown.sh"'].join(`
|
|
89
89
|
`),[]);return o.jsxs("div",{className:"noscripts",children:[o.jsx("span",{className:"noscripts__t",children:"Este projeto não diz como rodar."}),o.jsxs("p",{className:"noscripts__d",children:["O Lumem lê os comandos de um arquivo ",o.jsx("strong",{children:"do repositório"}),", versionado junto com o código: quem clonar depois herda o mesmo setup, com Lumem ou sem. Enquanto ele não existir, as abas ",o.jsx("code",{children:"Setup"})," e ",o.jsx("code",{children:"Run"})," ficam vazias — o ",o.jsx("code",{children:"Terminal"})," continua funcionando."]}),o.jsx("span",{className:"noscripts__where",children:t.file}),o.jsx("pre",{className:"toml",children:d}),o.jsxs("div",{className:"noscripts__acts",children:[o.jsx(de,{size:"sm",variant:"primary",disabled:c===null||i===void 0||h.isPending,onClick:()=>h.mutate(),children:h.isPending?"abrindo a conversa…":"pedir para o agente criar"}),o.jsx(de,{size:"sm",onClick:()=>{var f;return void((f=navigator.clipboard)==null?void 0:f.writeText(d))},children:"copiar o exemplo"}),c===null&&o.jsx("span",{className:"trust__note",children:"conecte um agente na barra da esquerda para pedir — ou escreva o arquivo à mão"}),h.isError&&o.jsx("span",{className:"trust__note",role:"alert",children:h.error.message})]})]})}function QD({status:e,phase:t,actions:i}){return o.jsxs("div",{className:"trust",children:[o.jsxs("div",{className:"trust__head",children:[o.jsx("span",{className:"trust__glyph",children:"⚠"}),"Este comando vem do repositório, não de você."]}),o.jsx("p",{className:"trust__why",children:"Este projeto foi clonado de uma URL. O que está abaixo estava dentro dele, e vai rodar na sua máquina com as suas permissões."}),o.jsx("div",{className:"trust__cmd",children:e[t].command}),o.jsxs("div",{className:"trust__acts",children:[o.jsx(de,{size:"sm",variant:"primary",disabled:i.trust.isPending,onClick:()=>i.trust.mutate(),children:"confiar neste projeto"}),o.jsx("span",{className:"trust__note",children:"Vale para este projeto nesta máquina — e volta a perguntar se o comando mudar."})]})]})}function ZD({scope:e}){const t=We(),i=x_(e),[n,a]=j.useState(null),c=(i.data??[]).filter(f=>f.kind==="shell"&&f.state==="running"),h=c.find(f=>f.id===n)??c[0]??null;async function d(){const f=await ie.session.createShell.mutate(e);a(f.id),await t.invalidateQueries({queryKey:Hi(e.scopeType,e.scopeId)})}return h==null?o.jsxs("div",{className:"dock__idle",children:[o.jsx("span",{children:"Nenhum terminal aberto neste checkout."}),o.jsx(de,{size:"sm",onClick:()=>void d(),children:"+ abrir terminal"})]}):o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"dock__state",children:[o.jsxs(as,{tone:"clean",dot:!0,children:[c.length," viva",c.length>1?"s":""]}),o.jsxs("span",{className:"dock__cmd dock__cmd--dim",children:["cwd ",h.cwd]}),o.jsx("span",{className:"dock__spacer"}),o.jsx("button",{type:"button",className:"dock__new",onClick:()=>void d(),children:"+ outro terminal"})]}),o.jsx("div",{className:"dock__out",children:o.jsx(Ah,{sessionId:h.id},h.id)})]})}function XD({scope:e,status:t,onOpen:i}){var c;const n=((c=t==null?void 0:t.run.last)==null?void 0:c.running)===!0,a=(t==null?void 0:t.port)??null;return o.jsx("div",{className:"dock dock--collapsed","data-testid":"run-dock-folded",children:o.jsxs("div",{className:"dock__folded",children:[o.jsx("button",{type:"button",className:"dock__fold","aria-label":"abrir o rodapé",onClick:i,children:"⌃"}),n?o.jsxs("span",{className:"runmark",children:[o.jsx("span",{className:"runmark__glyph",children:"▶"}),a===null?"run":`run · :${String(a.port)}`]}):o.jsx("span",{children:"setup, run e terminal"}),o.jsx("span",{className:"dock__spacer"}),o.jsx("span",{className:"dock__note",children:e.scopeType==="worktree"?"worktree":"projeto"})]})})}function JD({scope:e,onClose:t,onResize:i,dock:n,onAskAgent:a}){var I,ae,le,H;const c=We(),[h,d]=j.useState("files"),[f,m]=j.useState("worktree"),g=y_(),v=FO(e),b=Rw(e,"worktree"),S=g_("pending"),x=KO(e),C=e.scopeType==="worktree"?e.scopeId:null,k=DO(C,{panelOpen:!0}),N=zO(e),L=qO(x.projectId),D=k.data??null,M=(D==null?void 0:D.pull)??null,Y=D!==null&&C!==null&&!L.isDismissed,Z=h==="pr"&&M===null?"files":h,W=new Map((((I=b.data)==null?void 0:I.files)??[]).map(z=>[z.path,z.status])),ee=g.activeTab===null?null:g.fileFor(g.activeTab);return o.jsxs(CA,{tab:Z,onSelectTab:d,changeCount:((ae=b.data)==null?void 0:ae.files.length)??null,proposalCount:((le=S.data)==null?void 0:le.length)??null,prBar:Y&&C!==null?o.jsx(gA,{status:D,worktreeId:C,onRetry:()=>N.mutate(),onDismiss:L.dismiss}):void 0,prBadge:M===null?null:nA(M),actions:Z==="files"?o.jsx(lA,{edits:v}):void 0,onReload:()=>{c.invalidateQueries({queryKey:["files"]}),c.invalidateQueries({queryKey:["changes"]}),N.mutate()},onClose:t,onResize:i,dock:o.jsx(KD,{scope:e,dock:n,onAskAgent:a}),footLeft:b.isError?"não deu para ler o checkout":void 0,footRight:Z==="changes"?f==="worktree"?"árvore de trabalho vs HEAD":`vs ${((H=b.data)==null?void 0:H.baseBranch)??"base"}`:void 0,children:[Z==="files"&&o.jsx(aA,{scope:e,openPath:(ee==null?void 0:ee.view)==="file"?ee.path:null,onOpen:z=>g.open({path:z,view:"file"}),statusOf:z=>W.get(z),edits:v}),Z==="changes"&&o.jsx($O,{scope:e,openPath:(ee==null?void 0:ee.view)==="patch"?ee.path:null,onOpenPatch:(z,re)=>g.open({path:z,view:"patch",ref:re}),onRefChange:m}),Z==="pr"&&M!==null&&o.jsx(iA,{pull:M,readAt:(D==null?void 0:D.readAt)??null}),Z==="memory"&&o.jsx(Ew,{workspaceId:x.workspaceId,projectId:x.projectId})]})}function e3({projectId:e,projectName:t,open:i,onClose:n,onCreated:a,hasCommits:c=null}){const h=We(),[d,f]=j.useState(""),m=He({mutationFn:()=>ie.worktree.create.mutate({projectId:e,name:d.trim()}),onSuccess:async x=>{await h.invalidateQueries({queryKey:sa(e)}),a(x.id),g()}});function g(){f(""),m.reset(),n()}const v=x=>{x.preventDefault(),d.trim()!==""&&m.mutate()},b=c===!1,S=`worktree-name-${e}`;return o.jsx(dw,{open:i,title:"Nova worktree",where:o.jsxs(o.Fragment,{children:["em",o.jsx(Qe,{tone:"project",children:"■"}),o.jsx("b",{children:t})]}),onClose:g,footer:o.jsxs(o.Fragment,{children:[o.jsx(de,{type:"submit",form:FS,variant:"primary",disabled:m.isPending||d.trim()===""||b,children:m.isPending?"criando…":"criar"}),o.jsx(de,{variant:"ghost",onClick:g,children:b?"fechar":"cancelar"})]}),children:o.jsxs("form",{id:FS,onSubmit:v,children:[o.jsx(Xt,{id:S,label:"Nome da worktree",error:m.isError?m.error.message:void 0,children:o.jsx(cs,{id:S,value:d,onChange:x=>f(x.target.value),placeholder:"teste-prd",invalid:m.isError})}),b?o.jsx(Ae,{tone:"warning",children:"este repositório ainda não tem nenhum commit — faça o primeiro para poder cortar worktrees"}):o.jsx("p",{className:"create-worktree__hint",children:"A branch tem o mesmo nome. Barra vira diretório aninhado."}),m.isPending&&o.jsx(Ae,{tone:"info",children:"copiando o checkout — em repositório grande isto leva alguns segundos"})]})})}const FS="create-worktree",D1=j.createContext(null);function t3({children:e}){const[t,i]=j.useState(new Set),n=j.useCallback((c,h)=>{i(d=>{if(d.has(c)===h)return d;const f=new Set(d);return h?f.add(c):f.delete(c),f})},[]),a=j.useMemo(()=>({isWaiting:c=>t.has(c),countIn:c=>c.filter(h=>t.has(h)).length,setWaiting:n}),[t,n]);return o.jsx(D1.Provider,{value:a,children:e})}function D_(){return j.useContext(D1)??{isWaiting:()=>!1,countIn:()=>0,setWaiting:()=>{}}}function s3(e){const t=x_(e),i=We(),[n,a]=j.useState(null),[c,h]=j.useState(new Set),[d,f]=j.useState(new Set),m=j.useMemo(()=>t.data??[],[t.data]),g=j.useMemo(()=>{const k=m.filter(L=>!d.has(L.id)&&(L.state==="running"||c.has(L.id))),N=new Map;return k.map(L=>{const D=L.agentName??"shell",M=(N.get(D)??0)+1;return N.set(D,M),{sessionId:L.id,label:D,kind:L.kind,state:L.state,exitCode:L.exitCode,command:L.command,transport:L.transport==="acp"?"acp":"pty",agentConfigId:L.agentConfigId,...M>1?{ordinal:M}:{}}})},[m,c,d]);j.useEffect(()=>{n!==null&&!g.some(k=>k.sessionId===n)&&a(null)},[g,n]);const v=j.useCallback(k=>a(k),[]),b=j.useCallback(k=>{const N=m.find(L=>L.id===k);N===void 0||N.state==="running"||(f(L=>new Set(L).add(k)),h(L=>{const D=new Set(L);return D.delete(k),D}))},[m]),S=j.useCallback(k=>{f(N=>{const L=new Set(N);return L.delete(k),L}),h(N=>new Set(N).add(k)),a(k)},[]),x=He({mutationFn:k=>ie.session.resume.mutate({id:k}),onSuccess:async k=>{await i.invalidateQueries({queryKey:Hi(e.scopeType,e.scopeId)}),a(k.id)}}),C=j.useCallback(k=>x.mutate(k),[x]);return{tabs:g,activeId:n,select:v,close:b,reopen:S,resume:C,resuming:x.isPending?x.variables??null:null,sessions:t}}const i3=800;function KS(e,t){if(e===t)return{added:0,removed:0};const i=e.split(`
|
|
90
90
|
`),n=t.split(`
|
|
91
|
-
`);let a=0;for(;a<i.length&&a<n.length&&i[a]===n[a];)a++;let c=0;for(;c<i.length-a&&c<n.length-a&&i[i.length-1-c]===n[n.length-1-c];)c++;return{added:n.length-a-c,removed:i.length-a-c}}function Wu(e,t){return e.scopeType===t.scopeType&&e.scopeId===t.scopeId&&e.path===t.path}function r3(e){const t=e.lastIndexOf("/");return t===-1?"":e.slice(0,t)}function n3(e){return e instanceof Error?e.message:String(e)}function $S(e){return e===void 0||e.kind!=="text"?null:e}function a3({scope:e,path:t,active:i}){const n=We(),a=j.useRef(null),c=j.useRef(null),h=j.useRef({scopeType:e.scopeType,scopeId:e.scopeId,path:t}),d=j.useRef(null),f=j.useRef(0),m=j.useRef(0),g=j.useRef(null),v=j.useRef(!1),b=j.useRef(!1),S=j.useRef(null),x=j.useRef(null),C=j.useRef(!1),k=j.useRef([]),[N,L]=j.useState({kind:"clean"}),[D,M]=j.useState(!0),Y=j.useRef(!0),Z=Ou(e.scopeType,e.scopeId,t),W=Ne({queryKey:Z,queryFn:()=>{const $=n.getQueryData(Z);return!Y.current&&$!==void 0?(C.current=!0,$):ie.files.read.query({scopeType:e.scopeType,scopeId:e.scopeId,path:t})},refetchOnWindowFocus:D}),ee=$S(W.data),I=j.useRef(!1);I.current=ee===null||ee.readOnly!==null;const ae=j.useCallback($=>{Y.current=$,M($)},[]),le=j.useCallback(()=>{x.current!==null&&(window.clearTimeout(x.current),x.current=null)},[]),H=j.useCallback($=>{S.current=$,L({kind:"stale",...$})},[]),z=j.useCallback(()=>!v.current&&(g.current===null||b.current),[]),re=j.useCallback(()=>{if(!z())return;const $=k.current;if($.length!==0){k.current=[];for(const ue of $)ue()}},[z]),se=j.useCallback($=>{n.invalidateQueries({queryKey:["changes"]}),n.invalidateQueries({queryKey:a_($.scopeType,$.scopeId,r3($.path))})},[n]),A=j.useCallback(()=>{if(v.current||b.current)return;const $=g.current;$!==null&&(g.current=null,v.current=!0,L({kind:"saving"}),n.cancelQueries({queryKey:Ou($.target.scopeType,$.target.scopeId,$.target.path)}),ie.files.write.mutate({scopeType:$.target.scopeType,scopeId:$.target.scopeId,path:$.target.path,text:$.text,baseRevision:$.baseRevision}).then(ue=>{var _e,Ee;if(!ue.ok){if(!Wu($.target,h.current))return;b.current=!0,le(),H({revision:ue.revision,changedAt:ue.changedAt,base:((_e=c.current)==null?void 0:_e.text)??$.text,mine:((Ee=a.current)==null?void 0:Ee.getDoc())??$.text,disk:null}),ie.files.read.query($.target).then(kt=>{const Xe=$S(kt),Rs=S.current;Xe===null||Rs===null||H({...Rs,disk:Xe})}).catch(()=>{});return}Wu($.target,h.current)&&(c.current={text:$.text,revision:ue.revision},f.current===$.version&&(m.current=$.version,ae(!0)),L({kind:"saved",at:Date.now()})),g.current!==null&&Wu(g.current.target,$.target)&&(g.current={...g.current,baseRevision:ue.revision}),se($.target)}).catch(ue=>{Wu($.target,h.current)&&L({kind:"failed",why:n3(ue)})}).finally(()=>{v.current=!1,A(),re()}))},[le,se,n,re,ae,H]),F=j.useCallback(()=>{le();const $=a.current,ue=c.current,_e=d.current;$===null||ue===null||_e===null||f.current!==m.current&&(g.current={target:_e,text:$.getDoc(),baseRevision:ue.revision,version:f.current},A())},[le,A]),G=j.useCallback(()=>{if(b.current||(F(),z()))return Promise.resolve();const $=new Promise(ue=>{k.current.push(ue)});return HO($),$},[z,F]),Se=j.useCallback(()=>{if(f.current+=1,d.current=h.current,ae(!1),b.current){const $=S.current,ue=a.current;$!==null&&ue!==null&&H({...$,mine:ue.getDoc()});return}le(),x.current=window.setTimeout(()=>{x.current=null,F()},i3)},[le,F,ae,H]),ke=j.useCallback($=>{var ue;if($===null){G(),(ue=a.current)==null||ue.onChange(null),a.current=null;return}a.current=$,!I.current&&$.onChange(Se)},[Se,G]),T=j.useCallback(()=>{F()},[F]),K=j.useCallback(()=>{const $=S.current,ue=d.current;if($===null||ue===null)return;S.current=null,b.current=!1,m.current=f.current,ae(!0),L({kind:"clean"});const _e=Ou(ue.scopeType,ue.scopeId,ue.path);if($.disk===null){n.invalidateQueries({queryKey:_e});return}n.setQueryData(_e,$.disk)},[n,ae]),ne=j.useCallback(()=>{const $=S.current,ue=a.current,_e=d.current;$===null||ue===null||_e===null||(S.current=null,b.current=!1,g.current={target:_e,text:ue.getDoc(),baseRevision:$.revision,version:f.current},A())},[A]);return j.useEffect(()=>{h.current={scopeType:e.scopeType,scopeId:e.scopeId,path:t},d.current=null,m.current=f.current,b.current=!1,S.current=null,c.current=null,ae(!0),L({kind:"clean"})},[e.scopeType,e.scopeId,t,ae]),j.useEffect(()=>{var $;ee!==null&&Y.current&&(c.current={text:ee.text,revision:ee.revision},($=a.current)==null||$.setDoc(ee.text))},[ee]),j.useEffect(()=>{!D||!C.current||(C.current=!1,n.invalidateQueries({queryKey:Ou(e.scopeType,e.scopeId,t)}))},[D,n,e.scopeType,e.scopeId,t]),j.useEffect(()=>{i||G()},[i,G]),j.useEffect(()=>{const $=()=>void G();return window.addEventListener("blur",$),()=>window.removeEventListener("blur",$)},[G]),j.useEffect(()=>le,[le]),{content:W,state:N,attach:ke,retry:T,reload:K,overwrite:ne}}const B1="lumem",l3={name:B1,type:"dark",colors:{"editor.background":Bt["bg/inset"],"editor.foreground":Bt["text/code"]},settings:[{settings:{background:Bt["bg/inset"],foreground:Bt["text/code"]}},{scope:["comment","punctuation.definition.comment","string.comment"],settings:{foreground:Bt["syntax/comment"]}},{scope:["string","string.quoted","constant.other.symbol","meta.embedded.line"],settings:{foreground:Bt["syntax/string"]}},{scope:["constant.numeric","constant.language","constant.character","keyword.other.unit"],settings:{foreground:Bt["syntax/number"]}},{scope:["keyword","storage","storage.type","keyword.operator.new","keyword.control"],settings:{foreground:Bt["syntax/keyword"]}},{scope:["entity.name.function","support.function","meta.function-call","variable.function"],settings:{foreground:Bt["syntax/function"]}},{scope:["entity.name.type","entity.name.class","support.type","support.class","entity.other.inherited-class"],settings:{foreground:Bt["syntax/type"]}},{scope:["punctuation","meta.brace","keyword.operator"],settings:{foreground:Bt["syntax/punctuation"]}},{scope:["markup.heading","entity.name.section"],settings:{foreground:Bt["syntax/keyword"]}},{scope:["markup.inserted"],settings:{foreground:Bt["git/added"]}},{scope:["markup.deleted"],settings:{foreground:Bt["git/removed"]}}]},o3={ts:"typescript",tsx:"tsx",js:"javascript",jsx:"jsx",mjs:"javascript",cjs:"javascript",json:"json",md:"markdown",css:"css",html:"html",yml:"yaml",yaml:"yaml",sh:"shellscript",bash:"shellscript",zsh:"shellscript",py:"python",sql:"sql",toml:"toml",diff:"diff",patch:"diff"},c3={typescript:()=>Ut(()=>import("./typescript-BPQ3VLAy.js"),[]),tsx:()=>Ut(()=>import("./tsx-COt5Ahok.js"),[]),javascript:()=>Ut(()=>import("./javascript-wDzz0qaB.js"),[]),jsx:()=>Ut(()=>import("./jsx-g9-lgVsj.js"),[]),json:()=>Ut(()=>import("./json-Cp-IABpG.js"),[]),markdown:()=>Ut(()=>import("./markdown-Cvjx9yec.js"),[]),css:()=>Ut(()=>import("./css-CLj8gQPS.js"),[]),html:()=>Ut(()=>import("./html-pp8916En.js"),__vite__mapDeps([0,1,2])),yaml:()=>Ut(()=>import("./yaml-Buea-lGh.js"),[]),shellscript:()=>Ut(()=>import("./shellscript-Yzrsuije.js"),[]),python:()=>Ut(()=>import("./python-B6aJPvgy.js"),[]),sql:()=>Ut(()=>import("./sql-CRqJ_cUM.js"),[]),toml:()=>Ut(()=>import("./toml-vGWfd6FD.js"),[]),diff:()=>Ut(()=>import("./diff-D97Zzqfu.js"),[]),docker:()=>Ut(()=>import("./docker-BcOcwvcX.js"),[]),make:()=>Ut(()=>import("./make-CHLpvVh8.js"),[])},WS={dockerfile:"docker",makefile:"make"};function u3(e){const t=e.slice(e.lastIndexOf("/")+1).toLowerCase();if(t in WS)return WS[t];const i=t.lastIndexOf(".");return i<=0?null:o3[t.slice(i+1)]??null}let Vu=null,jm=null;const VS=new Set;async function h3(){if(Vu!==null)return Vu;jm??(jm=d3());try{return Vu=await jm,Vu}catch(e){throw jm=null,e}}async function d3(){const[{createHighlighterCore:e},{createJavaScriptRegexEngine:t}]=await Promise.all([Ut(()=>import("./core-rofTMs1b.js"),[]),Ut(()=>import("./engine-javascript-DBd1bXLz.js"),[])]);return e({themes:[l3],langs:[],engine:t()})}async function f3(e){try{const t=await h3();if(!VS.has(e)){const i=c3[e];if(i===void 0)return null;const n=await i();await t.loadLanguage(n.default),VS.add(e)}return t}catch{return null}}function L1({path:e,headExtra:t,wrap:i,onToggleWrap:n,onClose:a,footLeft:c,footRight:h,children:d}){const f=e.lastIndexOf("/"),m=f===-1?"":e.slice(0,f+1),g=e.slice(f+1);return o.jsxs("div",{className:"viewer",children:[o.jsxs("div",{className:"viewer__head",children:[o.jsxs("span",{className:"fpath",title:e,children:[o.jsx("span",{className:"fpath__dir",children:m}),o.jsx("span",{className:"fpath__name",children:g})]}),t,o.jsx("span",{className:"viewer__spacer"}),o.jsxs("button",{type:"button",className:`rp__icon${i?" rp__icon--on":""}`,"aria-pressed":i,onClick:n,title:"quebrar linhas longas",children:["⇄",o.jsx("span",{className:"sr-only",children:"quebrar linhas longas"})]}),o.jsxs("button",{type:"button",className:"rp__icon",onClick:a,title:"fechar",children:["✕",o.jsx("span",{className:"sr-only",children:"fechar"})]})]}),d,o.jsxs("div",{className:"viewer__foot",children:[c,h===void 0?null:o.jsxs(o.Fragment,{children:[o.jsx("span",{className:"viewer__spacer"}),h]})]})]})}const YS={"inside-git":{chip:"dentro de .git",why:o.jsxs(o.Fragment,{children:["está dentro de ",o.jsx("code",{children:".git"}),": reescrever aqui destrói a worktree e o que ainda não foi commitado."]})},"not-writable":{chip:"sem permissão de escrita",why:o.jsx(o.Fragment,{children:"o daemon não consegue gravar neste arquivo, e a gravação atômica não serve de atalho para o modo que alguém deixou aqui."})},"not-utf8":{chip:"não é UTF-8",why:o.jsx(o.Fragment,{children:"os bytes deste arquivo não voltam iguais depois de uma ida e volta em UTF-8, e gravar trocaria o que não for representável por outra coisa."})}};function m3({scope:e,path:t,active:i,onClose:n}){const[a,c]=j.useState(!0),h=a3({scope:e,path:t,active:i}),d=h.content,f=u3(t),m=d.data,g=m===void 0?null:m.kind==="binary"?"binário":m.kind==="too-large"?"acima do teto":m.readOnly===null?null:YS[m.readOnly].chip,v=g===null&&(h.state.kind==="failed"||h.state.kind==="stale");return o.jsx(L1,{path:t,onClose:n,wrap:a,onToggleWrap:()=>c(S=>!S),footLeft:g===null?o.jsx(g3,{state:h.state,onRetry:h.retry}):o.jsxs("span",{className:"save save--readonly",children:[o.jsx("span",{className:"save__mark","aria-hidden":"true",children:"⊘"}),"somente leitura · ",g]}),footRight:v||m===void 0?void 0:m.kind==="text"?`${Ao(m.bytes)} · ${m.lines} linhas · ${f??"texto"}`:Ao(m.bytes),children:b()});function b(){if(d.isPending)return o.jsx("div",{className:"code",children:"carregando…"});if(d.isError)return o.jsxs("div",{className:"refuse",role:"alert",children:[o.jsx("span",{className:"refuse__glyph","aria-hidden":"true",children:"⚠"}),o.jsx("span",{className:"refuse__title",children:"não deu para abrir"}),o.jsx("span",{className:"refuse__why",children:d.error.message})]});if(d.data.kind==="binary")return o.jsxs("div",{className:"refuse",children:[o.jsx("span",{className:"refuse__glyph","aria-hidden":"true",children:"▦"}),o.jsx("span",{className:"refuse__title",children:"arquivo binário"}),o.jsx("span",{className:"refuse__why",children:"tem bytes nulos nos primeiros KiB — o split não tenta desenhá-lo como texto, e não há buffer para editar."}),o.jsx("span",{className:"refuse__why",children:o.jsx("code",{children:t})})]});if(d.data.kind==="too-large")return o.jsxs("div",{className:"refuse",children:[o.jsx("span",{className:"refuse__glyph","aria-hidden":"true",children:"▤"}),o.jsxs("span",{className:"refuse__title",children:[Ao(d.data.bytes)," passa do teto de ",Ao(d.data.limit)]}),o.jsx("span",{className:"refuse__why",children:"o daemon não leu o arquivo — sem leitura não há revisão, e sem revisão não haveria contra o que gravar."}),o.jsx("span",{className:"refuse__why",children:o.jsx("code",{children:t})})]});const S=d.data.readOnly;return o.jsxs(o.Fragment,{children:[S!==null&&o.jsxs("div",{className:"robar",children:[o.jsx("span",{className:"robar__glyph","aria-hidden":"true",children:"⊘"}),o.jsx("span",{children:YS[S].why})]}),h.state.kind==="stale"&&o.jsx(p3,{conflict:h.state,onReload:h.reload,onOverwrite:h.overwrite}),o.jsx(v3,{path:t,text:d.data.text,language:f,readOnly:S!==null,wrap:a,onReady:h.attach})]})}}function p3({conflict:e,onReload:t,onOverwrite:i}){const n=KS(e.base,e.mine),a=e.disk===null?null:KS(e.base,e.disk.text);return o.jsxs("div",{className:"conflict",role:"alert",children:[o.jsxs("div",{className:"conflict__head",children:[o.jsx("span",{className:"conflict__glyph","aria-hidden":"true",children:"⚠"}),"o agente escreveu este arquivo há ",o.jsx(z1,{at:e.changedAt})]}),o.jsx("p",{className:"conflict__why",children:"O disco não é mais o que você abriu, e o que você digitou ainda não foi para lá."}),o.jsxs("div",{className:"conflict__exits",children:[o.jsxs("button",{type:"button",className:"exit",onClick:t,children:[o.jsx("span",{className:"exit__what",children:"recarregar do disco"}),o.jsxs("span",{className:"exit__cost",children:["perde ",_3(n)]})]}),o.jsxs("button",{type:"button",className:"exit",onClick:i,children:[o.jsx("span",{className:"exit__what",children:"sobrescrever"}),o.jsxs("span",{className:"exit__cost",children:["perde a edição do agente",a===null?"":` (+${a.added} −${a.removed})`]})]})]})]})}function _3(e){const t=e.added>0?"digitou":"apagou",i=e.added>0?e.added:e.removed;return i===0?"nada: o seu texto é igual ao que você abriu":i===1?`a linha que você ${t}`:`as ${i} linhas que você ${t}`}function g3({state:e,onRetry:t}){return e.kind==="clean"?null:e.kind==="saving"?o.jsx(Yu,{tone:"saving",children:"salvando…"}):e.kind==="saved"?o.jsxs(Yu,{tone:"saved",children:["salvo há ",o.jsx(z1,{at:e.at})]}):e.kind==="failed"?o.jsxs(o.Fragment,{children:[o.jsx(Yu,{tone:"failed",children:"não deu para salvar"}),o.jsx("span",{className:"save__why",title:e.why,children:e.why}),o.jsx("button",{type:"button",className:"save__act",onClick:t,children:"tentar de novo"})]}):o.jsxs(o.Fragment,{children:[o.jsx(Yu,{tone:"stale",children:"mudou no disco"}),o.jsx("span",{className:"save__why",children:"o autosave parou até você escolher"})]})}function Yu({tone:e,children:t}){return o.jsxs("span",{className:`save save--${e}`,children:[o.jsx("span",{className:"save__dot","aria-hidden":"true"}),t]})}function z1({at:e}){const[t,i]=j.useState(e);j.useEffect(()=>{i(Date.now());const a=window.setInterval(()=>i(Date.now()),1e3);return()=>window.clearInterval(a)},[e]);const n=Math.max(0,Math.round((t-e)/1e3));return o.jsx(o.Fragment,{children:n<60?`${n} s`:`${Math.floor(n/60)} min`})}function v3({path:e,text:t,language:i,readOnly:n,wrap:a,onReady:c}){const h=j.useRef(null),d=j.useRef(null),f=j.useRef(null),m=j.useRef({text:t,wrap:a});return j.useEffect(()=>{m.current.text=t},[t]),j.useEffect(()=>{var g;m.current.wrap=a,(g=d.current)==null||g.setWrap(a)},[a]),j.useEffect(()=>{const g=h.current;if(g===null)return;let v=!0;return Ut(async()=>{const{mountEditor:b}=await import("./codemirror-setup-CHk_6JnB.js");return{mountEditor:b}},[]).then(({mountEditor:b})=>{v&&(d.current=b(g,{doc:m.current.text,wrap:m.current.wrap,readOnly:n}),d.current.setHighlight(f.current),c(d.current))}),()=>{var b;v=!1,c(null),(b=d.current)==null||b.destroy(),d.current=null}},[e,n,c]),j.useEffect(()=>{var v;if(f.current=null,(v=d.current)==null||v.setHighlight(null),i===null)return;let g=!0;return f3(i).then(b=>{var S;!g||b===null||(f.current={highlighter:b,language:i,theme:B1},(S=d.current)==null||S.setHighlight(f.current))}),()=>{g=!1}},[i]),o.jsx("div",{className:"cmhost",ref:h,"data-testid":"editor"})}function y3({scopeType:e,scopeId:t,onCreated:i}){const n=We(),a=b_(),c=Ne({queryKey:["agentConfig","list"],queryFn:()=>ie.agentConfig.list.query()}),h=()=>n.invalidateQueries({queryKey:Hi(e,t)}),d=He({mutationFn:()=>ie.session.createShell.mutate({scopeType:e,scopeId:t}),onSuccess:async v=>{await h(),i(v.id)}}),f=He({mutationFn:v=>ie.session.createAgent.mutate({scopeType:e,scopeId:t,agentConfigId:v}),onSuccess:async v=>{a.close(),await h(),i(v.id)}}),m=d.error??f.error,g=c.data??[];return o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"new-session",children:[o.jsxs("button",{type:"button",ref:a.triggerRef,className:"tabs-new","aria-haspopup":"menu","aria-expanded":a.open,disabled:f.isPending||d.isPending,onClick:a.toggle,children:[o.jsx("span",{"aria-hidden":"true",children:"+"})," nova sessão"]}),a.open&&o.jsx("div",{className:"new-session__panel",ref:a.panelRef,children:o.jsxs(h_,{label:"nova sessão",children:[o.jsx(hn,{glyph:o.jsx(Qe,{tone:"shell",children:"●"}),hint:"shell de login",onSelect:()=>{a.close(),d.mutate()},children:"shell"}),g.map(v=>o.jsx(hn,{glyph:o.jsx(Qe,{tone:"agent",children:"◆"}),disabled:!v.available||f.isPending,hint:v.available?v.command:"fora do PATH",onSelect:()=>f.mutate(v.id),children:v.name},v.id))]})})]}),m&&o.jsx("div",{className:"new-session__error",children:o.jsx(Ae,{tone:"danger",children:m.message})})]})}function q1({lines:e,wrap:t=!0}){return o.jsx("div",{className:`patch${t?"":" patch--nowrap"}`,children:e.map((i,n)=>i.kind==="hunk"?o.jsx("div",{className:"hunk",children:i.text},n):o.jsxs("div",{className:`dl${i.kind==="add"?" dl--add":i.kind==="del"?" dl--del":""}`,children:[o.jsx("span",{className:"dl__sig","aria-hidden":"true",children:i.kind==="add"?"+":i.kind==="del"?"−":" "}),o.jsx("span",{className:"dl__t",children:i.text})]},n))})}function b3(e,t){const i=GS(e??""),n=GS(t);let a=0;for(;a<i.length&&a<n.length&&i[a]===n[a];)a+=1;let c=0;for(;c<i.length-a&&c<n.length-a&&i[i.length-1-c]===n[n.length-1-c];)c+=1;const h=i.slice(a,i.length-c),d=n.slice(a,n.length-c),f=[];a>0&&f.push({kind:"context",text:`… ${a} linha(s) acima, sem mudança`});for(const m of h)f.push({kind:"del",text:m});for(const m of d)f.push({kind:"add",text:m});return c>0&&f.push({kind:"context",text:`… ${c} linha(s) abaixo, sem mudança`}),f}function GS(e){if(e==="")return[];const t=e.split(`
|
|
91
|
+
`);let a=0;for(;a<i.length&&a<n.length&&i[a]===n[a];)a++;let c=0;for(;c<i.length-a&&c<n.length-a&&i[i.length-1-c]===n[n.length-1-c];)c++;return{added:n.length-a-c,removed:i.length-a-c}}function Wu(e,t){return e.scopeType===t.scopeType&&e.scopeId===t.scopeId&&e.path===t.path}function r3(e){const t=e.lastIndexOf("/");return t===-1?"":e.slice(0,t)}function n3(e){return e instanceof Error?e.message:String(e)}function $S(e){return e===void 0||e.kind!=="text"?null:e}function a3({scope:e,path:t,active:i}){const n=We(),a=j.useRef(null),c=j.useRef(null),h=j.useRef({scopeType:e.scopeType,scopeId:e.scopeId,path:t}),d=j.useRef(null),f=j.useRef(0),m=j.useRef(0),g=j.useRef(null),v=j.useRef(!1),b=j.useRef(!1),S=j.useRef(null),x=j.useRef(null),C=j.useRef(!1),k=j.useRef([]),[N,L]=j.useState({kind:"clean"}),[D,M]=j.useState(!0),Y=j.useRef(!0),Z=Ou(e.scopeType,e.scopeId,t),W=Ne({queryKey:Z,queryFn:()=>{const $=n.getQueryData(Z);return!Y.current&&$!==void 0?(C.current=!0,$):ie.files.read.query({scopeType:e.scopeType,scopeId:e.scopeId,path:t})},refetchOnWindowFocus:D}),ee=$S(W.data),I=j.useRef(!1);I.current=ee===null||ee.readOnly!==null;const ae=j.useCallback($=>{Y.current=$,M($)},[]),le=j.useCallback(()=>{x.current!==null&&(window.clearTimeout(x.current),x.current=null)},[]),H=j.useCallback($=>{S.current=$,L({kind:"stale",...$})},[]),z=j.useCallback(()=>!v.current&&(g.current===null||b.current),[]),re=j.useCallback(()=>{if(!z())return;const $=k.current;if($.length!==0){k.current=[];for(const ue of $)ue()}},[z]),se=j.useCallback($=>{n.invalidateQueries({queryKey:["changes"]}),n.invalidateQueries({queryKey:a_($.scopeType,$.scopeId,r3($.path))})},[n]),A=j.useCallback(()=>{if(v.current||b.current)return;const $=g.current;$!==null&&(g.current=null,v.current=!0,L({kind:"saving"}),n.cancelQueries({queryKey:Ou($.target.scopeType,$.target.scopeId,$.target.path)}),ie.files.write.mutate({scopeType:$.target.scopeType,scopeId:$.target.scopeId,path:$.target.path,text:$.text,baseRevision:$.baseRevision}).then(ue=>{var _e,Ee;if(!ue.ok){if(!Wu($.target,h.current))return;b.current=!0,le(),H({revision:ue.revision,changedAt:ue.changedAt,base:((_e=c.current)==null?void 0:_e.text)??$.text,mine:((Ee=a.current)==null?void 0:Ee.getDoc())??$.text,disk:null}),ie.files.read.query($.target).then(kt=>{const Xe=$S(kt),Rs=S.current;Xe===null||Rs===null||H({...Rs,disk:Xe})}).catch(()=>{});return}Wu($.target,h.current)&&(c.current={text:$.text,revision:ue.revision},f.current===$.version&&(m.current=$.version,ae(!0)),L({kind:"saved",at:Date.now()})),g.current!==null&&Wu(g.current.target,$.target)&&(g.current={...g.current,baseRevision:ue.revision}),se($.target)}).catch(ue=>{Wu($.target,h.current)&&L({kind:"failed",why:n3(ue)})}).finally(()=>{v.current=!1,A(),re()}))},[le,se,n,re,ae,H]),F=j.useCallback(()=>{le();const $=a.current,ue=c.current,_e=d.current;$===null||ue===null||_e===null||f.current!==m.current&&(g.current={target:_e,text:$.getDoc(),baseRevision:ue.revision,version:f.current},A())},[le,A]),G=j.useCallback(()=>{if(b.current||(F(),z()))return Promise.resolve();const $=new Promise(ue=>{k.current.push(ue)});return HO($),$},[z,F]),Se=j.useCallback(()=>{if(f.current+=1,d.current=h.current,ae(!1),b.current){const $=S.current,ue=a.current;$!==null&&ue!==null&&H({...$,mine:ue.getDoc()});return}le(),x.current=window.setTimeout(()=>{x.current=null,F()},i3)},[le,F,ae,H]),ke=j.useCallback($=>{var ue;if($===null){G(),(ue=a.current)==null||ue.onChange(null),a.current=null;return}a.current=$,!I.current&&$.onChange(Se)},[Se,G]),T=j.useCallback(()=>{F()},[F]),K=j.useCallback(()=>{const $=S.current,ue=d.current;if($===null||ue===null)return;S.current=null,b.current=!1,m.current=f.current,ae(!0),L({kind:"clean"});const _e=Ou(ue.scopeType,ue.scopeId,ue.path);if($.disk===null){n.invalidateQueries({queryKey:_e});return}n.setQueryData(_e,$.disk)},[n,ae]),ne=j.useCallback(()=>{const $=S.current,ue=a.current,_e=d.current;$===null||ue===null||_e===null||(S.current=null,b.current=!1,g.current={target:_e,text:ue.getDoc(),baseRevision:$.revision,version:f.current},A())},[A]);return j.useEffect(()=>{h.current={scopeType:e.scopeType,scopeId:e.scopeId,path:t},d.current=null,m.current=f.current,b.current=!1,S.current=null,c.current=null,ae(!0),L({kind:"clean"})},[e.scopeType,e.scopeId,t,ae]),j.useEffect(()=>{var $;ee!==null&&Y.current&&(c.current={text:ee.text,revision:ee.revision},($=a.current)==null||$.setDoc(ee.text))},[ee]),j.useEffect(()=>{!D||!C.current||(C.current=!1,n.invalidateQueries({queryKey:Ou(e.scopeType,e.scopeId,t)}))},[D,n,e.scopeType,e.scopeId,t]),j.useEffect(()=>{i||G()},[i,G]),j.useEffect(()=>{const $=()=>void G();return window.addEventListener("blur",$),()=>window.removeEventListener("blur",$)},[G]),j.useEffect(()=>le,[le]),{content:W,state:N,attach:ke,retry:T,reload:K,overwrite:ne}}const B1="lumem",l3={name:B1,type:"dark",colors:{"editor.background":Bt["bg/inset"],"editor.foreground":Bt["text/code"]},settings:[{settings:{background:Bt["bg/inset"],foreground:Bt["text/code"]}},{scope:["comment","punctuation.definition.comment","string.comment"],settings:{foreground:Bt["syntax/comment"]}},{scope:["string","string.quoted","constant.other.symbol","meta.embedded.line"],settings:{foreground:Bt["syntax/string"]}},{scope:["constant.numeric","constant.language","constant.character","keyword.other.unit"],settings:{foreground:Bt["syntax/number"]}},{scope:["keyword","storage","storage.type","keyword.operator.new","keyword.control"],settings:{foreground:Bt["syntax/keyword"]}},{scope:["entity.name.function","support.function","meta.function-call","variable.function"],settings:{foreground:Bt["syntax/function"]}},{scope:["entity.name.type","entity.name.class","support.type","support.class","entity.other.inherited-class"],settings:{foreground:Bt["syntax/type"]}},{scope:["punctuation","meta.brace","keyword.operator"],settings:{foreground:Bt["syntax/punctuation"]}},{scope:["markup.heading","entity.name.section"],settings:{foreground:Bt["syntax/keyword"]}},{scope:["markup.inserted"],settings:{foreground:Bt["git/added"]}},{scope:["markup.deleted"],settings:{foreground:Bt["git/removed"]}}]},o3={ts:"typescript",tsx:"tsx",js:"javascript",jsx:"jsx",mjs:"javascript",cjs:"javascript",json:"json",md:"markdown",css:"css",html:"html",yml:"yaml",yaml:"yaml",sh:"shellscript",bash:"shellscript",zsh:"shellscript",py:"python",sql:"sql",toml:"toml",diff:"diff",patch:"diff"},c3={typescript:()=>Ut(()=>import("./typescript-BPQ3VLAy.js"),[]),tsx:()=>Ut(()=>import("./tsx-COt5Ahok.js"),[]),javascript:()=>Ut(()=>import("./javascript-wDzz0qaB.js"),[]),jsx:()=>Ut(()=>import("./jsx-g9-lgVsj.js"),[]),json:()=>Ut(()=>import("./json-Cp-IABpG.js"),[]),markdown:()=>Ut(()=>import("./markdown-Cvjx9yec.js"),[]),css:()=>Ut(()=>import("./css-CLj8gQPS.js"),[]),html:()=>Ut(()=>import("./html-pp8916En.js"),__vite__mapDeps([0,1,2])),yaml:()=>Ut(()=>import("./yaml-Buea-lGh.js"),[]),shellscript:()=>Ut(()=>import("./shellscript-Yzrsuije.js"),[]),python:()=>Ut(()=>import("./python-B6aJPvgy.js"),[]),sql:()=>Ut(()=>import("./sql-CRqJ_cUM.js"),[]),toml:()=>Ut(()=>import("./toml-vGWfd6FD.js"),[]),diff:()=>Ut(()=>import("./diff-D97Zzqfu.js"),[]),docker:()=>Ut(()=>import("./docker-BcOcwvcX.js"),[]),make:()=>Ut(()=>import("./make-CHLpvVh8.js"),[])},WS={dockerfile:"docker",makefile:"make"};function u3(e){const t=e.slice(e.lastIndexOf("/")+1).toLowerCase();if(t in WS)return WS[t];const i=t.lastIndexOf(".");return i<=0?null:o3[t.slice(i+1)]??null}let Vu=null,jm=null;const VS=new Set;async function h3(){if(Vu!==null)return Vu;jm??(jm=d3());try{return Vu=await jm,Vu}catch(e){throw jm=null,e}}async function d3(){const[{createHighlighterCore:e},{createJavaScriptRegexEngine:t}]=await Promise.all([Ut(()=>import("./core-rofTMs1b.js"),[]),Ut(()=>import("./engine-javascript-DBd1bXLz.js"),[])]);return e({themes:[l3],langs:[],engine:t()})}async function f3(e){try{const t=await h3();if(!VS.has(e)){const i=c3[e];if(i===void 0)return null;const n=await i();await t.loadLanguage(n.default),VS.add(e)}return t}catch{return null}}function L1({path:e,headExtra:t,wrap:i,onToggleWrap:n,onClose:a,footLeft:c,footRight:h,children:d}){const f=e.lastIndexOf("/"),m=f===-1?"":e.slice(0,f+1),g=e.slice(f+1);return o.jsxs("div",{className:"viewer",children:[o.jsxs("div",{className:"viewer__head",children:[o.jsxs("span",{className:"fpath",title:e,children:[o.jsx("span",{className:"fpath__dir",children:m}),o.jsx("span",{className:"fpath__name",children:g})]}),t,o.jsx("span",{className:"viewer__spacer"}),o.jsxs("button",{type:"button",className:`rp__icon${i?" rp__icon--on":""}`,"aria-pressed":i,onClick:n,title:"quebrar linhas longas",children:["⇄",o.jsx("span",{className:"sr-only",children:"quebrar linhas longas"})]}),o.jsxs("button",{type:"button",className:"rp__icon",onClick:a,title:"fechar",children:["✕",o.jsx("span",{className:"sr-only",children:"fechar"})]})]}),d,o.jsxs("div",{className:"viewer__foot",children:[c,h===void 0?null:o.jsxs(o.Fragment,{children:[o.jsx("span",{className:"viewer__spacer"}),h]})]})]})}const YS={"inside-git":{chip:"dentro de .git",why:o.jsxs(o.Fragment,{children:["está dentro de ",o.jsx("code",{children:".git"}),": reescrever aqui destrói a worktree e o que ainda não foi commitado."]})},"not-writable":{chip:"sem permissão de escrita",why:o.jsx(o.Fragment,{children:"o daemon não consegue gravar neste arquivo, e a gravação atômica não serve de atalho para o modo que alguém deixou aqui."})},"not-utf8":{chip:"não é UTF-8",why:o.jsx(o.Fragment,{children:"os bytes deste arquivo não voltam iguais depois de uma ida e volta em UTF-8, e gravar trocaria o que não for representável por outra coisa."})}};function m3({scope:e,path:t,active:i,onClose:n}){const[a,c]=j.useState(!0),h=a3({scope:e,path:t,active:i}),d=h.content,f=u3(t),m=d.data,g=m===void 0?null:m.kind==="binary"?"binário":m.kind==="too-large"?"acima do teto":m.readOnly===null?null:YS[m.readOnly].chip,v=g===null&&(h.state.kind==="failed"||h.state.kind==="stale");return o.jsx(L1,{path:t,onClose:n,wrap:a,onToggleWrap:()=>c(S=>!S),footLeft:g===null?o.jsx(g3,{state:h.state,onRetry:h.retry}):o.jsxs("span",{className:"save save--readonly",children:[o.jsx("span",{className:"save__mark","aria-hidden":"true",children:"⊘"}),"somente leitura · ",g]}),footRight:v||m===void 0?void 0:m.kind==="text"?`${Ao(m.bytes)} · ${m.lines} linhas · ${f??"texto"}`:Ao(m.bytes),children:b()});function b(){if(d.isPending)return o.jsx("div",{className:"code",children:"carregando…"});if(d.isError)return o.jsxs("div",{className:"refuse",role:"alert",children:[o.jsx("span",{className:"refuse__glyph","aria-hidden":"true",children:"⚠"}),o.jsx("span",{className:"refuse__title",children:"não deu para abrir"}),o.jsx("span",{className:"refuse__why",children:d.error.message})]});if(d.data.kind==="binary")return o.jsxs("div",{className:"refuse",children:[o.jsx("span",{className:"refuse__glyph","aria-hidden":"true",children:"▦"}),o.jsx("span",{className:"refuse__title",children:"arquivo binário"}),o.jsx("span",{className:"refuse__why",children:"tem bytes nulos nos primeiros KiB — o split não tenta desenhá-lo como texto, e não há buffer para editar."}),o.jsx("span",{className:"refuse__why",children:o.jsx("code",{children:t})})]});if(d.data.kind==="too-large")return o.jsxs("div",{className:"refuse",children:[o.jsx("span",{className:"refuse__glyph","aria-hidden":"true",children:"▤"}),o.jsxs("span",{className:"refuse__title",children:[Ao(d.data.bytes)," passa do teto de ",Ao(d.data.limit)]}),o.jsx("span",{className:"refuse__why",children:"o daemon não leu o arquivo — sem leitura não há revisão, e sem revisão não haveria contra o que gravar."}),o.jsx("span",{className:"refuse__why",children:o.jsx("code",{children:t})})]});const S=d.data.readOnly;return o.jsxs(o.Fragment,{children:[S!==null&&o.jsxs("div",{className:"robar",children:[o.jsx("span",{className:"robar__glyph","aria-hidden":"true",children:"⊘"}),o.jsx("span",{children:YS[S].why})]}),h.state.kind==="stale"&&o.jsx(p3,{conflict:h.state,onReload:h.reload,onOverwrite:h.overwrite}),o.jsx(v3,{path:t,text:d.data.text,language:f,readOnly:S!==null,wrap:a,onReady:h.attach})]})}}function p3({conflict:e,onReload:t,onOverwrite:i}){const n=KS(e.base,e.mine),a=e.disk===null?null:KS(e.base,e.disk.text);return o.jsxs("div",{className:"conflict",role:"alert",children:[o.jsxs("div",{className:"conflict__head",children:[o.jsx("span",{className:"conflict__glyph","aria-hidden":"true",children:"⚠"}),"o agente escreveu este arquivo há ",o.jsx(z1,{at:e.changedAt})]}),o.jsx("p",{className:"conflict__why",children:"O disco não é mais o que você abriu, e o que você digitou ainda não foi para lá."}),o.jsxs("div",{className:"conflict__exits",children:[o.jsxs("button",{type:"button",className:"exit",onClick:t,children:[o.jsx("span",{className:"exit__what",children:"recarregar do disco"}),o.jsxs("span",{className:"exit__cost",children:["perde ",_3(n)]})]}),o.jsxs("button",{type:"button",className:"exit",onClick:i,children:[o.jsx("span",{className:"exit__what",children:"sobrescrever"}),o.jsxs("span",{className:"exit__cost",children:["perde a edição do agente",a===null?"":` (+${a.added} −${a.removed})`]})]})]})]})}function _3(e){const t=e.added>0?"digitou":"apagou",i=e.added>0?e.added:e.removed;return i===0?"nada: o seu texto é igual ao que você abriu":i===1?`a linha que você ${t}`:`as ${i} linhas que você ${t}`}function g3({state:e,onRetry:t}){return e.kind==="clean"?null:e.kind==="saving"?o.jsx(Yu,{tone:"saving",children:"salvando…"}):e.kind==="saved"?o.jsxs(Yu,{tone:"saved",children:["salvo há ",o.jsx(z1,{at:e.at})]}):e.kind==="failed"?o.jsxs(o.Fragment,{children:[o.jsx(Yu,{tone:"failed",children:"não deu para salvar"}),o.jsx("span",{className:"save__why",title:e.why,children:e.why}),o.jsx("button",{type:"button",className:"save__act",onClick:t,children:"tentar de novo"})]}):o.jsxs(o.Fragment,{children:[o.jsx(Yu,{tone:"stale",children:"mudou no disco"}),o.jsx("span",{className:"save__why",children:"o autosave parou até você escolher"})]})}function Yu({tone:e,children:t}){return o.jsxs("span",{className:`save save--${e}`,children:[o.jsx("span",{className:"save__dot","aria-hidden":"true"}),t]})}function z1({at:e}){const[t,i]=j.useState(e);j.useEffect(()=>{i(Date.now());const a=window.setInterval(()=>i(Date.now()),1e3);return()=>window.clearInterval(a)},[e]);const n=Math.max(0,Math.round((t-e)/1e3));return o.jsx(o.Fragment,{children:n<60?`${n} s`:`${Math.floor(n/60)} min`})}function v3({path:e,text:t,language:i,readOnly:n,wrap:a,onReady:c}){const h=j.useRef(null),d=j.useRef(null),f=j.useRef(null),m=j.useRef({text:t,wrap:a});return j.useEffect(()=>{m.current.text=t},[t]),j.useEffect(()=>{var g;m.current.wrap=a,(g=d.current)==null||g.setWrap(a)},[a]),j.useEffect(()=>{const g=h.current;if(g===null)return;let v=!0;return Ut(async()=>{const{mountEditor:b}=await import("./codemirror-setup-CZZ5OaWR.js");return{mountEditor:b}},[]).then(({mountEditor:b})=>{v&&(d.current=b(g,{doc:m.current.text,wrap:m.current.wrap,readOnly:n}),d.current.setHighlight(f.current),c(d.current))}),()=>{var b;v=!1,c(null),(b=d.current)==null||b.destroy(),d.current=null}},[e,n,c]),j.useEffect(()=>{var v;if(f.current=null,(v=d.current)==null||v.setHighlight(null),i===null)return;let g=!0;return f3(i).then(b=>{var S;!g||b===null||(f.current={highlighter:b,language:i,theme:B1},(S=d.current)==null||S.setHighlight(f.current))}),()=>{g=!1}},[i]),o.jsx("div",{className:"cmhost",ref:h,"data-testid":"editor"})}function y3({scopeType:e,scopeId:t,onCreated:i}){const n=We(),a=b_(),c=Ne({queryKey:["agentConfig","list"],queryFn:()=>ie.agentConfig.list.query()}),h=()=>n.invalidateQueries({queryKey:Hi(e,t)}),d=He({mutationFn:()=>ie.session.createShell.mutate({scopeType:e,scopeId:t}),onSuccess:async v=>{await h(),i(v.id)}}),f=He({mutationFn:v=>ie.session.createAgent.mutate({scopeType:e,scopeId:t,agentConfigId:v}),onSuccess:async v=>{a.close(),await h(),i(v.id)}}),m=d.error??f.error,g=c.data??[];return o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"new-session",children:[o.jsxs("button",{type:"button",ref:a.triggerRef,className:"tabs-new","aria-haspopup":"menu","aria-expanded":a.open,disabled:f.isPending||d.isPending,onClick:a.toggle,children:[o.jsx("span",{"aria-hidden":"true",children:"+"})," nova sessão"]}),a.open&&o.jsx("div",{className:"new-session__panel",ref:a.panelRef,children:o.jsxs(h_,{label:"nova sessão",children:[o.jsx(hn,{glyph:o.jsx(Qe,{tone:"shell",children:"●"}),hint:"shell de login",onSelect:()=>{a.close(),d.mutate()},children:"shell"}),g.map(v=>o.jsx(hn,{glyph:o.jsx(Qe,{tone:"agent",children:"◆"}),disabled:!v.available||f.isPending,hint:v.available?v.command:"fora do PATH",onSelect:()=>f.mutate(v.id),children:v.name},v.id))]})})]}),m&&o.jsx("div",{className:"new-session__error",children:o.jsx(Ae,{tone:"danger",children:m.message})})]})}function q1({lines:e,wrap:t=!0}){return o.jsx("div",{className:`patch${t?"":" patch--nowrap"}`,children:e.map((i,n)=>i.kind==="hunk"?o.jsx("div",{className:"hunk",children:i.text},n):o.jsxs("div",{className:`dl${i.kind==="add"?" dl--add":i.kind==="del"?" dl--del":""}`,children:[o.jsx("span",{className:"dl__sig","aria-hidden":"true",children:i.kind==="add"?"+":i.kind==="del"?"−":" "}),o.jsx("span",{className:"dl__t",children:i.text})]},n))})}function b3(e,t){const i=GS(e??""),n=GS(t);let a=0;for(;a<i.length&&a<n.length&&i[a]===n[a];)a+=1;let c=0;for(;c<i.length-a&&c<n.length-a&&i[i.length-1-c]===n[n.length-1-c];)c+=1;const h=i.slice(a,i.length-c),d=n.slice(a,n.length-c),f=[];a>0&&f.push({kind:"context",text:`… ${a} linha(s) acima, sem mudança`});for(const m of h)f.push({kind:"del",text:m});for(const m of d)f.push({kind:"add",text:m});return c>0&&f.push({kind:"context",text:`… ${c} linha(s) abaixo, sem mudança`}),f}function GS(e){if(e==="")return[];const t=e.split(`
|
|
92
92
|
`);return t.at(-1)===""&&t.pop(),t}function S3({scope:e,path:t,changeRef:i,onClose:n}){const[a,c]=j.useState(!0),h=Ne({queryKey:xE(e.scopeType,e.scopeId,i,t),queryFn:()=>ie.changes.patch.query({scopeType:e.scopeType,scopeId:e.scopeId,ref:i,path:t}),refetchOnWindowFocus:!0}),d=h.data===void 0?[]:x3(h.data.patch),f=d.filter(g=>g.kind==="hunk").length;return o.jsx(L1,{path:t,onClose:n,wrap:a,onToggleWrap:()=>c(g=>!g),footLeft:i==="worktree"?"não commitado · vs HEAD":"vs base",footRight:f===0?void 0:`${f} ${f===1?"hunk":"hunks"}`,children:m()});function m(){return h.isPending?o.jsx("div",{className:"patch",children:"carregando…"}):h.isError?o.jsxs("div",{className:"refuse",role:"alert",children:[o.jsx("span",{className:"refuse__glyph","aria-hidden":"true",children:"⚠"}),o.jsx("span",{className:"refuse__title",children:"não deu para ler o diff"}),o.jsx("span",{className:"refuse__why",children:h.error.message})]}):h.data.binary?o.jsxs("div",{className:"refuse",children:[o.jsx("span",{className:"refuse__glyph","aria-hidden":"true",children:"▦"}),o.jsx("span",{className:"refuse__title",children:"arquivo binário"}),o.jsx("span",{className:"refuse__why",children:"o git conta linhas, e aqui não há linhas para contar."})]}):d.length===0?o.jsxs("div",{className:"empty",children:[o.jsx("span",{className:"empty__glyph","aria-hidden":"true",children:"✓"}),o.jsx("span",{className:"empty__title",children:"sem diferenças neste arquivo"})]}):o.jsx(q1,{lines:d,wrap:a})}}function x3(e){var n,a;const t=[];let i=!1;for(const c of e.split(`
|
|
93
93
|
`)){if(c.startsWith("@@")){i=!0,t.push({kind:"hunk",text:c});continue}i&&(c.startsWith("\\")||(c.startsWith("+")?t.push({kind:"add",text:c.slice(1)}):c.startsWith("-")?t.push({kind:"del",text:c.slice(1)}):(c!==""||t.length>0)&&t.push({kind:"context",text:c.slice(1)})))}return((n=t.at(-1))==null?void 0:n.kind)==="context"&&((a=t.at(-1))==null?void 0:a.text)===""&&t.pop(),t}function P1(){return{turns:[],pendingPermission:null,streaming:!1,lastStopReason:null,orphanUpdates:0,plan:null,usage:null,mode:"",configOptions:[],modeOwner:"agent",lumemMode:"ask",lumemModeDefault:"ask",commands:[],terminals:[],turnTally:{auto:0,asked:0}}}function w3(e){return e.reduce(H1,P1())}function H1(e,{at:t,event:i}){var n,a,c,h,d;switch(i.type){case"message":return QS(i.role==="user"?C3(e):e,i.role,{kind:"message",messageId:i.messageId,text:i.text});case"thought":return QS(e,"agent",{kind:"thought",messageId:i.messageId,text:i.text});case"tool_call":return Gu(e,"agent",{kind:"tool",call:{toolCallId:i.toolCallId,title:i.title,name:i.name??null,kind:i.kind,status:i.status,locations:i.locations,content:[],elapsedMs:null,added:null,removed:null,verdict:null,verdictBy:"user",verdictReason:null,startedAt:t}});case"tool_call_update":return ZS(e,i.toolCallId,f=>({...f,...i.status?{status:i.status}:{},...i.title?{title:i.title}:{},...i.locations?{locations:i.locations}:{},...i.content?E3(f,i.content):{},elapsedMs:t-f.startedAt}));case"permission_request":{const f={requestId:i.requestId,toolCallId:i.toolCallId,title:i.title,command:i.command??null,cwd:i.cwd,options:i.options,policyReason:i.policyReason},m=Kp(e.turns,g=>g.kind==="permission"?null:g);return Gu({...e,turns:m,pendingPermission:f,turnTally:{...e.turnTally,asked:e.turnTally.asked+1}},"agent",{kind:"permission",request:f})}case"permission_resolved":{const f=k3(e.turns,i.requestId);if(!f)return{...e,orphanUpdates:e.orphanUpdates+1};const m=i.outcome==="cancelled"?null:i.outcome.optionId,g=m===null?null:f.options.find(S=>S.optionId===m)??null,v=Kp(e.turns,S=>S.kind==="permission"&&S.request.requestId===i.requestId?null:S),b={...e,turns:v,pendingPermission:((n=e.pendingPermission)==null?void 0:n.requestId)===i.requestId?null:e.pendingPermission,turnTally:i.by==="lumem"?{auto:e.turnTally.auto+1,asked:Math.max(0,e.turnTally.asked-1)}:e.turnTally};return g?ZS(b,f.toolCallId,S=>({...S,verdict:g,verdictBy:i.by,verdictReason:i.reason})):b}case"plan":return{...e,plan:i.entries};case"plan_removed":return{...e,plan:null};case"usage":{const f=((a=i.cost)==null?void 0:a.amount)??0;return{...e,usage:{used:i.used,size:i.size,cost:i.cost??null,rateLimit:i.rateLimit??null,totalCost:(((c=e.usage)==null?void 0:c.totalCost)??0)+f,currency:((h=i.cost)==null?void 0:h.currency)??((d=e.usage)==null?void 0:d.currency)??null}}}case"config":return{...e,mode:i.mode,configOptions:i.options,modeOwner:i.modeOwner,lumemMode:i.lumemMode,lumemModeDefault:i.lumemModeDefault};case"commands":return{...e,commands:i.commands};case"terminal":{const f=e.terminals.filter(m=>m.terminalId!==i.terminalId);return{...e,terminals:[...f,{terminalId:i.terminalId,ptySessionId:i.ptySessionId,command:i.command}]}}case"turn_end":{const f={...e,streaming:!1,lastStopReason:i.stopReason,turnTally:{auto:0,asked:0}};return e.turnTally.auto===0?f:Gu(f,"agent",{kind:"meta",text:j3(e.turnTally)})}case"resumed":return{...e,turns:[...e.turns,{role:"resumed",blocks:[],at:t,fromSessionId:i.fromSessionId}]};case"memory_core":return{...e,turns:[...e.turns,{role:"agent",blocks:[{kind:"meta",text:`memória do workspace: ${String(i.entries)} ${i.entries===1?"diretriz fixada":"diretrizes fixadas"} · ${i.chars.toLocaleString("pt-BR")} caracteres neste turno`}],at:t}]};case"unknown":return Gu(e,"agent",{kind:"note",text:`evento não reconhecido: ${i.sessionUpdate}`})}}function QS(e,t,i){const n=t==="user"?!0:e.streaming,a=[...e.turns],c=a.at(-1);if((c==null?void 0:c.role)===t){const h=[...c.blocks],d=h.at(-1);return(d==null?void 0:d.kind)===i.kind&&d.messageId===i.messageId?h[h.length-1]={...d,text:d.text+i.text}:h.push(i),a[a.length-1]={...c,blocks:h},{...e,turns:a,streaming:n}}return a.push({role:t,blocks:[i]}),{...e,turns:a,streaming:n}}function C3(e){return{...e,turns:Kp(e.turns,t=>t.kind==="meta"&&t.text.startsWith(I1)?null:t)}}const I1="◈ ";function j3({auto:e,asked:t}){const i=e===1?"1 pedido aprovado":`${e} pedidos aprovados`,n=t===1?"1 subiu para você":`${t} subiram para você`;return`${I1}${i} pelo Lumem, ${n} neste turno`}function Gu(e,t,i){const n=[...e.turns],a=n.at(-1);return(a==null?void 0:a.role)===t?n[n.length-1]={...a,blocks:[...a.blocks,i]}:n.push({role:t,blocks:[i]}),{...e,turns:n}}function ZS(e,t,i){let n=!1;const a=e.turns.map(c=>({...c,blocks:c.blocks.map(h=>h.kind!=="tool"||h.call.toolCallId!==t?h:(n=!0,{...h,call:i(h.call)}))}));return n?{...e,turns:a}:{...e,orphanUpdates:e.orphanUpdates+1}}function Kp(e,t){return e.map(i=>({...i,blocks:i.blocks.flatMap(n=>{const a=t(n);return a?[a]:[]})}))}function k3(e,t){for(const i of e)for(const n of i.blocks)if(n.kind==="permission"&&n.request.requestId===t)return n.request;return null}function E3(e,t){let i=0,n=0,a=!1;for(const c of t){if(c.type!=="diff")continue;a=!0;const h=XS(c.oldText??""),d=XS(c.newText),f=N3(h,d);i+=d.length-f,n+=h.length-f}return{content:t,added:a?i:e.added,removed:a?n:e.removed}}function XS(e){if(e==="")return[];const t=e.split(`
|
|
94
94
|
`);return t.at(-1)===""&&t.pop(),t}function N3(e,t){const i=new Map;for(const a of e)i.set(a,(i.get(a)??0)+1);let n=0;for(const a of t){const c=i.get(a)??0;c>0&&(i.set(a,c-1),n+=1)}return n}const T3=1;function O3(e,t){return`${t.protocol==="https:"?"wss:":"ws:"}//${t.host}${X2}?${J2}=${encodeURIComponent(e)}`}function A3(e,t,i={}){const{createWebSocket:n=h=>new WebSocket(h),origin:a=window.location}=i,c=n(O3(e,a));return c.onmessage=h=>{var f;const d=gT(String(h.data));d.ok?t.onMessage(d.message):(f=t.onDecodeError)==null||f.call(t,d.error)},c.onclose=h=>{var d;(d=t.onClose)==null||d.call(t,{code:h.code,clean:h.wasClean,refused:h.code===eT})},c.onerror=()=>{},{send(h){var f,m;const d=mT.safeParse(h);if(!d.success){(f=t.onSendRejected)==null||f.call(t,d.error.issues.map(g=>`${g.path.join(".")||"<root>"}: ${g.message}`).join("; "));return}if(c.readyState!==T3){(m=t.onSendRejected)==null||m.call(t,"o socket não está aberto");return}c.send(vT(d.data))},close(){c.onmessage=null,c.onclose=null,c.onopen=null,c.close()}}}const R3={auto:"auto",plan:"plan",bypassPermissions:"bypass"};function M3({mode:e,options:t,disabled:i=!1,onSwitch:n}){const[a,c]=j.useState(null);return o.jsx(o.Fragment,{children:t.map(h=>{const d=h.id==="mode"?e:h.currentValue,f=D3(h,d);return o.jsxs("span",{className:"config",children:[o.jsxs("button",{type:"button",className:`pill${B3(h,d)} focus-ring`,"aria-haspopup":"menu","aria-expanded":a===h.id,"aria-label":`${h.name}: ${f}`,disabled:i,title:i?"não dá para trocar no meio de um turno":`${h.name}: ${f}`,onClick:()=>c(a===h.id?null:h.id),children:[f,o.jsx("span",{className:"pill__caret","aria-hidden":"true",children:"▾"})]}),a===h.id&&o.jsx("div",{className:"slash",role:"menu","aria-label":h.name,children:h.choices.map(m=>o.jsxs("button",{type:"button",role:"menuitemradio","aria-checked":m.value===d,className:`slash__row focus-ring${m.value===d?" slash__row--on":""}${m.value==="bypassPermissions"?" slash__row--danger":""}`,onClick:()=>{c(null),n(h.id,m.value)},children:[o.jsx("span",{className:"slash__cmd",children:m.value}),o.jsx("span",{className:"slash__desc",children:m.description??""})]},m.value))})]},h.id)})})}function D3(e,t){var i;return((i=e.choices.find(n=>n.value===t))==null?void 0:i.name)||t||e.name}function B3(e,t){if(e.id==="mode"){const i=R3[t];return i?` pill--${i}`:""}return e.id==="model"?" pill--model":""}function L3({cwd:e,onCancel:t,onConfirm:i}){const n=j.useRef(null);return j.useEffect(()=>{var a;return(a=n.current)==null?void 0:a.focus()},[]),o.jsxs("div",{className:"gate",role:"dialog","aria-modal":"true","aria-label":"liberar esta sessão",onKeyDown:a=>{a.key==="Escape"&&(a.stopPropagation(),t())},children:[o.jsxs("div",{className:"gate__t",children:[o.jsx("span",{className:"gate__g","aria-hidden":"true",children:"⚠"}),"Liberar esta sessão?"]}),o.jsxs("div",{className:"gate__b",children:["O Lumem vai ",o.jsx("b",{children:"parar de perguntar"})," e responder ",o.jsx("b",{children:"sim"})," a tudo que este agente pedir, até o fim desta conversa."]}),o.jsxs("ul",{className:"gate__list",children:[o.jsx("li",{children:"escrever e apagar arquivos"}),o.jsx("li",{children:"rodar qualquer comando de shell"}),o.jsx("li",{children:o.jsxs("span",{children:["tudo isso dentro de ",o.jsx("span",{className:"gate__scope",children:e})]})})]}),o.jsxs("div",{className:"gate__acts",children:[o.jsxs("button",{type:"button",className:"btn btn--ghost btn--sm focus-ring",ref:n,onClick:t,children:["cancelar ",o.jsx("span",{className:"kbd",children:"esc"})]}),o.jsx("span",{className:"spacer"}),o.jsx("button",{type:"button",className:"btn btn--danger btn--sm focus-ring",onClick:i,children:"liberar esta sessão"})]}),o.jsx("div",{className:"gate__note",children:"Vale só para esta conversa. Uma sessão nova volta a perguntar tudo."})]})}const $p=[{value:"ask",label:"Perguntar tudo",description:"Todo pedido para e espera por você. É o padrão, e nenhuma sessão nasce em outro.",tone:"pill--ask"},{value:"auto",label:"Automático",description:"Leitura de arquivo com caminho dentro do checkout passa sozinha, e aparece na conversa. Escrita e comando ainda perguntam.",tone:"pill--auto"},{value:"free",label:"Liberado",description:"Nada é perguntado dentro da worktree. Pede confirmação antes de valer.",tone:"pill--bypass"}],U1=e=>$p.find(t=>t.value===e)??$p[0];function z3({mode:e,disabled:t=!1,readOnly:i=!1,open:n=!1,onToggle:a}){const c=U1(e);return i?o.jsxs("span",{className:`pill ${c.tone}`,title:"conversa encerrada — o modo em que ela esteve",children:[o.jsx("span",{className:"pill__own","aria-hidden":"true",children:"◈"}),o.jsx("span",{className:"sr-only",children:"regra do Lumem, e a conversa terminou: "}),c.label]}):o.jsxs("button",{type:"button",className:`pill ${c.tone} focus-ring`,"aria-haspopup":"menu","aria-expanded":n,"aria-label":`regra do Lumem: ${c.label}`,disabled:t,title:t?"não dá para trocar no meio de um turno":"regra do Lumem — este agente não oferece modos",onClick:a,children:[o.jsx("span",{className:"pill__own","aria-hidden":"true",children:"◈"}),c.label,o.jsx("span",{className:"pill__caret","aria-hidden":"true",children:"▾"})]})}function q3({mode:e,workspaceDefault:t,onSwitch:i,onFreeRequested:n}){return o.jsxs("div",{className:"mmenu",role:"menu","aria-label":"regra do Lumem",children:[o.jsxs("div",{className:"mmenu__head",children:[o.jsxs("div",{className:"mmenu__who",children:[o.jsx("span",{"aria-hidden":"true",children:"◈"}),"Regra do Lumem"]}),o.jsxs("div",{className:"mmenu__why",children:["este agente não relatou modos. O que muda aqui é ",o.jsx("b",{children:"o que o daemon responde"})," a um pedido de permissão — o agente não fica sabendo."]})]}),$p.map(a=>o.jsxs("button",{type:"button",role:"menuitemradio","aria-checked":a.value===e,className:`mopt focus-ring${a.value===e?" mopt--on":""}${a.value==="auto"?" mopt--auto":""}${a.value==="free"?" mopt--free":""}`,onClick:()=>{if(a.value==="free"){n();return}i(a.value)},children:[o.jsxs("span",{className:"mopt__t",children:[a.label,a.value===e&&o.jsx("span",{className:"mopt__mark","aria-hidden":"true",children:"✓"})]}),o.jsx("span",{className:"mopt__d",children:a.description})]},a.value)),o.jsxs("div",{className:"mmenu__foot",children:["padrão do workspace: ",o.jsx("b",{children:U1(t).label.toLowerCase()})]})]})}const Wp=/^\s{0,3}(?:```|~~~)\s*([\w+-]*)\s*$/,F1=/^\s{0,3}(#{1,6})\s+(.*)$/,K1=/^\s{0,3}(?:-{3,}|\*{3,}|_{3,})\s*$/,Vp=/^\s{0,3}>\s?(.*)$/,B_=/^(\s*)[-*+]\s+(.*)$/,Ch=/^(\s*)\d{1,9}[.)]\s+(.*)$/,jh=/^\s{0,3}\|(.+)\|\s*$/,P3=/^\s{0,3}\|[\s:|-]+\|\s*$/;function H3(e){const t=e.replace(/\r\n?/g,`
|
|
@@ -98,4 +98,4 @@ WARNING: This link could potentially be dangerous`)){let i=window.open();if(i){t
|
|
|
98
98
|
`))});continue}if(jh.test(a)&&n+1<t.length&&P3.test(t[n+1])){const f=JS(a);n+=2;const m=[];for(;n<t.length&&jh.test(t[n]);)m.push(JS(t[n])),n+=1;i.push({kind:"table",header:f,rows:m});continue}if(B_.test(a)||Ch.test(a)){const f=Ch.test(a),{items:m,next:g}=U3(t,n,f);i.push({kind:"list",ordered:f,items:m}),n=g;continue}const d=[t[n].trim()];for(n+=1;n<t.length;){const f=t[n];if(f.trim()===""||I3(f))break;d.push(f.trim()),n+=1}i.push({kind:"paragraph",content:Li(d.join(`
|
|
99
99
|
`))})}return i}function I3(e){return Wp.test(e)||F1.test(e)||K1.test(e)||Vp.test(e)||B_.test(e)||Ch.test(e)||jh.test(e)}function JS(e){return jh.exec(e)[1].split("|").map(i=>Li(i.trim()))}function U3(e,t,i){const n=[];let a=t,c=null;for(;a<e.length;){const h=e[a];if(h.trim()===""){if(a+1<e.length&&ex(e[a+1])!==null){a+=1;continue}break}const d=ex(h);if(d===null||d.ordered!==i&&d.indent===(c??d.indent))break;if(c??(c=d.indent),d.indent>c){const f=n[n.length-1];if(f===void 0)break;f.children.push({content:Li(d.text),children:[]})}else n.push({content:Li(d.text),children:[]});a+=1}return{items:n,next:a}}function ex(e){const t=B_.exec(e);if(t)return{indent:t[1].length,text:t[2],ordered:!1};const i=Ch.exec(e);return i?{indent:i[1].length,text:i[2],ordered:!0}:null}function Li(e){const t=[];let i="";const n=()=>{if(i!==""){for(const[c,h]of i.split(`
|
|
100
100
|
`).entries())c>0&&t.push({kind:"break"}),h!==""&&t.push({kind:"text",text:h});i=""}};let a=0;for(;a<e.length;){const c=e.slice(a),h=/^(`+)([\s\S]*?)\1(?!`)/.exec(c);if(h){n(),t.push({kind:"code",text:h[2].trim()}),a+=h[0].length;continue}const d=/^\[([^\]]*)\]\(([^\s)]+)\)/.exec(c);if(d){n(),t.push({kind:"link",href:d[2],children:Li(d[1])}),a+=d[0].length;continue}const f=/^(\*\*|__)(?=\S)([\s\S]*?\S)\1/.exec(c);if(f){n(),t.push({kind:"strong",children:Li(f[2])}),a+=f[0].length;continue}const m=/^~~(?=\S)([\s\S]*?\S)~~/.exec(c);if(m){n(),t.push({kind:"strike",children:Li(m[1])}),a+=m[0].length;continue}const g=/^(\*)(?=\S)([\s\S]*?\S)\1|^(_)(?=\S)([\s\S]*?\S)\3(?![\w])/.exec(c);if(g&&(g[1]==="*"||a===0||/[^\w]/.test(e[a-1]))){n(),t.push({kind:"em",children:Li(g[2]??g[4])}),a+=g[0].length;continue}i+=e[a],a+=1}return n(),t}function $1({text:e,streaming:t=!1}){const i=H3(e),n=i.length-1,a=o.jsx("span",{className:"mcaret","aria-hidden":"true"});return i.length===0?t?o.jsx("p",{children:a}):null:o.jsx(o.Fragment,{children:i.map((c,h)=>o.jsx(j.Fragment,{children:F3(c,t&&h===n?a:null)},h))})}function F3(e,t){switch(e.kind){case"paragraph":return o.jsxs("p",{children:[o.jsx(Di,{nodes:e.content}),t]});case"heading":{const i=`h${String(Math.min(e.level,6))}`;return o.jsxs(i,{children:[o.jsx(Di,{nodes:e.content}),t]})}case"code":return o.jsxs(o.Fragment,{children:[o.jsx("pre",{children:o.jsx("code",{...e.language===null?{}:{"data-language":e.language},children:e.text})}),t]});case"quote":return o.jsxs("blockquote",{children:[o.jsx(Di,{nodes:e.content}),t]});case"list":{const i=e.ordered?"ol":"ul";return o.jsxs(o.Fragment,{children:[o.jsx(i,{children:e.items.map((n,a)=>o.jsx(W1,{item:n,ordered:e.ordered},a))}),t]})}case"table":return o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"table-scroll",children:o.jsxs("table",{children:[o.jsx("thead",{children:o.jsx("tr",{children:e.header.map((i,n)=>o.jsx("th",{children:o.jsx(Di,{nodes:i})},n))})}),o.jsx("tbody",{children:e.rows.map((i,n)=>o.jsx("tr",{children:i.map((a,c)=>o.jsx("td",{children:o.jsx(Di,{nodes:a})},c))},n))})]})}),t]});case"rule":return o.jsxs(o.Fragment,{children:[o.jsx("hr",{}),t]})}}function W1({item:e,ordered:t}){const i=t?"ol":"ul";return o.jsxs("li",{children:[o.jsx(Di,{nodes:e.content}),e.children.length>0&&o.jsx(i,{children:e.children.map((n,a)=>o.jsx(W1,{item:n,ordered:t},a))})]})}function Di({nodes:e}){return o.jsx(o.Fragment,{children:e.map((t,i)=>o.jsx(j.Fragment,{children:K3(t)},i))})}function K3(e){switch(e.kind){case"text":return e.text;case"code":return o.jsx("code",{children:e.text});case"strong":return o.jsx("strong",{children:o.jsx(Di,{nodes:e.children})});case"em":return o.jsx("em",{children:o.jsx(Di,{nodes:e.children})});case"strike":return o.jsx("del",{children:o.jsx(Di,{nodes:e.children})});case"link":return o.jsx("a",{href:e.href,target:"_blank",rel:"noreferrer",children:o.jsx(Di,{nodes:e.children})});case"break":return o.jsx("br",{})}}function $3({role:e,children:t}){return o.jsxs("div",{className:`turn turn--${e}`,children:[o.jsx("span",{className:"turn__g",children:o.jsx(Qe,{tone:e==="agent"?"agent":"none",children:e==="agent"?"◆":"❯"})}),o.jsx("div",{className:"turn__b",children:t})]})}function W3({text:e,streaming:t=!1}){return o.jsx("div",{className:"msg",children:o.jsx($1,{text:e,streaming:t})})}function V3({text:e,open:t,onToggle:i,streaming:n=!1}){const a=n?"pensando…":"pensou";return o.jsxs(o.Fragment,{children:[o.jsxs("button",{type:"button",className:"thought focus-ring","aria-expanded":t,onClick:i,children:[o.jsx("span",{className:"thought__twist","aria-hidden":"true",children:t?"▾":"▸"}),a,!t&&e!==""&&o.jsxs("span",{className:"thought__peek",children:["· ",e]})]}),t&&o.jsx("div",{className:"thought__text",children:o.jsx($1,{text:e,streaming:n})})]})}function Y3({request:e,onRespond:t}){const[i,n]=j.useState(!1),a=j.useRef(null),c=km(e.options,"allow_once")??e.options[0],h=km(e.options,"reject_once"),d=km(e.options,"reject_always"),f=e.options.filter(g=>g!==c&&g!==h&&g!==d),m=g=>{i||(n(!0),t(g))};return j.useEffect(()=>{var g;(g=a.current)==null||g.focus()},[e.requestId]),j.useEffect(()=>{const g=v=>{if(v.key==="Enter"&&!v.shiftKey){v.preventDefault(),m(c.optionId);return}v.key==="Escape"&&h&&(v.preventDefault(),m(h.optionId))};return window.addEventListener("keydown",g),()=>window.removeEventListener("keydown",g)}),o.jsxs("div",{className:"perm",role:"group","aria-label":"pedido de permissão",children:[o.jsxs("div",{className:"perm__head",children:[o.jsx("span",{className:"perm__glyph","aria-hidden":"true",children:"⚠"}),"Permissão",o.jsx("span",{className:"spacer"}),o.jsx("span",{className:"kbd",children:i?"enviado":"o turno está parado aqui"})]}),o.jsxs("div",{className:"perm__body",children:[o.jsxs("div",{className:"perm__what",children:[o.jsx("div",{className:"perm__cmd",children:e.command??e.title}),o.jsxs("div",{className:"perm__where",children:["cwd ",e.cwd]})]}),e.policyReason!==null&&o.jsx("div",{className:"perm__why",children:e.policyReason}),o.jsxs("div",{className:"perm__opts",children:[o.jsxs(de,{ref:a,variant:"primary",size:"sm",disabled:i,onClick:()=>m(c.optionId),children:[c.name," ",o.jsx("span",{className:"kbd",children:"⏎"})]}),f.map(g=>o.jsx(de,{variant:"ghost",size:"sm",disabled:i,onClick:()=>m(g.optionId),children:g.name},g.optionId)),h&&o.jsxs(de,{variant:"ghost",size:"sm",disabled:i,onClick:()=>m(h.optionId),children:[h.name," ",o.jsx("span",{className:"kbd",children:"esc"})]}),d&&o.jsx(de,{variant:"danger",size:"sm",disabled:i,onClick:()=>m(d.optionId),children:d.name})]})]})]})}function km(e,t){return e.find(i=>i.kind===t)}const V1="lumem.coach.permission";function G3(){try{return window.localStorage.getItem(V1)==="seen"}catch{return!1}}function Q3(){try{window.localStorage.setItem(V1,"seen")}catch{}}function Z3(e){const[t,i]=j.useState(G3),[n,a]=j.useState(!1),c=j.useCallback(()=>a(!0),[]),h=j.useCallback(()=>{Q3(),i(!0)},[]);return{show:e&&!t&&!n,dismiss:c,never:h}}const X3={pending:"○",in_progress:"◐",completed:"✓"},J3={pending:"pending",in_progress:"active",completed:"done"};function e5({entries:e,defaultOpen:t=!1}){const i=e.filter(d=>d.status==="completed").length,n=e.length>0&&i===e.length,[a,c]=j.useState(t),h=!n||a;return o.jsxs("div",{className:"plan",children:[o.jsxs("div",{className:"plan__head",children:[o.jsx("span",{className:`plan__glyph${n?" plan__glyph--done":""}`,"aria-hidden":"true",children:n?"✓":"☰"}),"Plano",o.jsx("span",{className:"spacer"}),o.jsxs("span",{className:"plan__count",children:[i," de ",e.length]}),n&&o.jsx("button",{type:"button",className:"tc__twist focus-ring","aria-expanded":a,"aria-label":a?"esconder os passos":"mostrar os passos",onClick:()=>c(!a),children:a?"▾":"▸"})]}),h&&e.map((d,f)=>o.jsxs("div",{className:`plan__row plan__row--${J3[d.status]}`,children:[o.jsx("span",{className:"plan__mark","aria-hidden":"true",children:X3[d.status]}),o.jsx("span",{className:"plan__what",children:d.content}),d.status==="in_progress"&&o.jsxs(o.Fragment,{children:[o.jsx("span",{className:"spacer"}),o.jsx("span",{className:"plan__now",children:"agora"})]})]},f))]})}function t5(e){const t=/^\/([^\s]*)$/.exec(e);return t?t[1]:null}function Y1(e,t){if(t==="")return e;const i=t.toLowerCase();return e.filter(n=>n.name.toLowerCase().startsWith(i))}function s5({commands:e,query:t,onChoose:i,onDismiss:n}){const a=Y1(e,t),[c,h]=j.useState(0);j.useEffect(()=>h(0),[t,e]),j.useEffect(()=>{const f=m=>{if(a.length!==0){if(m.key==="ArrowDown"){m.preventDefault(),h(g=>(g+1)%a.length);return}if(m.key==="ArrowUp"){m.preventDefault(),h(g=>(g-1+a.length)%a.length);return}if(m.key==="Enter"&&!m.metaKey&&!m.ctrlKey){m.preventDefault(),m.stopPropagation(),d(a[c]);return}m.key==="Escape"&&(m.preventDefault(),n())}};return window.addEventListener("keydown",f,!0),()=>window.removeEventListener("keydown",f,!0)});function d(f){i(`/${f.name}${f.takesInput?" ":""}`)}return a.length===0?null:o.jsx("div",{className:"slash",role:"listbox","aria-label":"comandos do agente",children:a.map((f,m)=>o.jsxs("button",{type:"button",role:"option","aria-selected":m===c,className:`slash__row focus-ring${m===c?" slash__row--on":""}`,onMouseDown:g=>{g.preventDefault(),d(f)},children:[o.jsxs("span",{className:"slash__cmd",children:["/",f.name]}),o.jsx("span",{className:"slash__desc",children:f.description})]},f.name))})}const i5={read:"▤",search:"▤",edit:"▣",delete:"▣",move:"▣",execute:"❯",fetch:"↓",think:"◈",switch_mode:"◈",other:"◈"},r5={pending:"na fila",running:"rodando",ok:"ok",failed:"falhou",cancelled:"interrompido"},n5=12;function a5({call:e,terminals:t=[],defaultOpen:i=!1}){const[n,a]=j.useState(i),c=l5(e),h=c5(e),d=o5(e,t);return o.jsxs("div",{className:`tc tc--${e.status}`,children:[o.jsxs("div",{className:"tc__head",children:[o.jsx("span",{className:"tc__glyph","aria-hidden":"true",children:i5[e.kind]}),o.jsx("span",{className:"tc__verb",children:e.name??h5(e.title)}),h?o.jsxs("span",{className:"tc__target",title:h.full,children:[o.jsx("span",{className:"tc__dir",children:h.dir}),o.jsx("span",{className:"tc__name",children:h.name})]}):o.jsx("span",{className:"tc__arg",title:e.title,children:u5(e)}),e.verdict&&o.jsx("span",{className:`verdict verdict--${e.verdictBy==="lumem"?"lumem":e.verdict.kind.startsWith("allow")?"allowed":"denied"}`,children:e.verdictBy==="lumem"?o.jsxs(o.Fragment,{children:[o.jsx("span",{"aria-hidden":"true",children:"◈"})," o Lumem aprovou"]}):o.jsxs(o.Fragment,{children:[e.verdict.kind.startsWith("allow")?"✓":"✕"," ",e.verdict.name]})}),(e.added!==null||e.removed!==null)&&o.jsxs("span",{className:"tc__delta",children:[e.added?o.jsxs("span",{className:"plus",children:["+",e.added]}):null,e.added&&e.removed?" ":null,e.removed?o.jsxs("span",{className:"minus",children:["−",e.removed]}):null]}),e.elapsedMs!==null&&o.jsx("span",{className:"tc__time",children:d5(e.elapsedMs)}),o.jsxs("span",{className:"tc__st",children:[o.jsx("span",{className:"tc__dot","aria-hidden":"true"}),r5[e.status]]}),(c||d)&&o.jsx("button",{type:"button",className:"tc__twist focus-ring","aria-expanded":n,"aria-label":n?"esconder o resultado":"mostrar o resultado",onClick:()=>a(!n),children:n?"▾":"▸"})]}),e.verdictBy==="lumem"&&e.verdictReason!==null&&o.jsx("div",{className:"tc__why",children:e.verdictReason}),n&&d&&o.jsx("div",{className:"tc__body",children:o.jsx("div",{className:"tc__term",children:o.jsx(Ah,{sessionId:d.ptySessionId})})}),n&&!d&&c&&o.jsxs("div",{className:"tc__body",children:[c.kind==="diff"?o.jsx(q1,{lines:c.lines,wrap:!1}):o.jsx("div",{className:"out",children:c.lines.map((f,m)=>o.jsx("span",{className:"l",children:f},m))}),c.hidden>0&&o.jsxs("div",{className:"tc__more",children:["▾ mostrar as ",c.hidden.toLocaleString("pt-BR")," linhas"]})]})]})}function l5(e){const t=e.content.find(c=>c.type==="diff");if((t==null?void 0:t.type)==="diff")return{kind:"diff",lines:b3(t.oldText,t.newText),hidden:0};const i=e.content.filter(c=>c.type==="content").map(c=>c.text).join("");if(i==="")return null;const n=i.split(`
|
|
101
|
-
`),a=n.slice(Math.max(0,n.length-n5));return{kind:"text",lines:a,hidden:n.length-a.length}}function o5(e,t){const i=e.content.find(n=>n.type==="terminal");return(i==null?void 0:i.type)!=="terminal"?null:t.find(n=>n.terminalId===i.terminalId)??null}function c5(e){const t=e.locations[0];if(!t)return null;const i=t.path.lastIndexOf("/");return i===-1?{dir:"",name:t.path,full:t.path}:{dir:t.path.slice(0,i+1),name:t.path.slice(i+1),full:t.path}}function u5(e){const t=e.name;return t&&e.title.startsWith(`${t} `)?e.title.slice(t.length+1):e.title}function h5(e){const t=e.indexOf(" ");return t===-1?e:e.slice(0,t)}function d5(e){if(e<1e3)return`${e} ms`;const t=e/1e3;if(t<60)return`${t.toFixed(1).replace(".",",")} s`;const i=Math.floor(t/60),n=Math.round(t-i*60);return n===0?`${i} min`:`${i} min ${n} s`}const G1={conversation:P1(),session:null,failure:null};function f5(e,t){if(t.kind==="reset")return G1;const i=t.message;switch(i.type){case"attached":return{conversation:{...w3(i.transcript),mode:i.mode,configOptions:i.configOptions,modeOwner:i.modeOwner,lumemMode:i.lumemMode,lumemModeDefault:i.lumemModeDefault},session:{acpSessionId:i.acpSessionId,model:i.model,mode:i.mode,state:i.state,cwd:i.cwd},failure:null};case"event":return{...e,conversation:H1(e.conversation,{at:i.at,event:i.event})};case"error":return{...e,failure:{message:i.message,remedy:i.remedy??null,fatal:i.code==="ADAPTER_UNAVAILABLE"||i.code==="SESSION_NOT_FOUND"}}}}const m5=e=>ie.session.transcript.query({id:e});function p5({sessionId:e,agentName:t="agente",live:i=!0,connect:n=A3,load:a=m5,onResume:c,resuming:h=!1,active:d=!0,initialPrompt:f}){const[m,g]=j.useReducer(f5,G1),[v,b]=j.useState(""),[S,x]=j.useState(!1),[C,k]=j.useState(!1),[N,L]=j.useState(new Set),D=j.useRef(null),M=D_(),{conversation:Y,session:Z,failure:W}=m,ee=Y.pendingPermission,I=Z3(ee!==null),ae=!i||(Z==null?void 0:Z.state)==="exited";j.useEffect(()=>{if(g({kind:"reset"}),!i){let K=!0;return a(e).then(ne=>{K&&g({kind:"message",message:ne})}).catch(ne=>{K&&g({kind:"message",message:{type:"error",code:"INTERNAL",message:ne instanceof Error?ne.message:"não deu para ler a conversa"}})}),()=>{K=!1}}const T=n(e,{onMessage:K=>g({kind:"message",message:K})});return D.current=T,()=>{D.current=null,T.close()}},[e,i,n,a]),j.useEffect(()=>{M.setWaiting(e,ee!==null)},[M,e,ee]);const le=j.useRef(M.setWaiting);le.current=M.setWaiting,j.useEffect(()=>()=>{le.current(e,!1)},[e]);const H=Z!==null,z=!Y.streaming&&H;j.useEffect(()=>{z||(k(!1),x(!1))},[z]);const re=j.useCallback(()=>{var K;const T=v.trim();T===""||ee!==null||ae||!H||((K=D.current)==null||K.send({type:"prompt",text:T}),b(""))},[H,v,ee,ae]),se=j.useRef(!1);j.useEffect(()=>{var T;f===void 0||se.current||!H||ae||(se.current=!0,(T=D.current)==null||T.send({type:"prompt",text:f}))},[H,f,ae]);const A=t5(v),F=j.useCallback(()=>{var T;(T=D.current)==null||T.send({type:"cancel"})},[]),G=Y.streaming,Se=A!==null&&Y1(Y.commands,A).length>0;j.useEffect(()=>{if(!d||ae||!G||ee!==null||Se)return;const T=K=>{K.key==="Escape"&&(K.preventDefault(),F())};return window.addEventListener("keydown",T),()=>window.removeEventListener("keydown",T)},[d,ae,G,ee,Se,F]);const ke=b5([Y.turns.length,Y.streaming]);return o.jsxs("div",{className:"conv",children:[o.jsxs("div",{className:"conv__head",children:[o.jsxs("span",{className:"conv__who",children:[o.jsx(Qe,{tone:"agent",children:"◆"}),t]}),Z&&o.jsxs("span",{className:"conv__adapter",children:["sessão ",Z.acpSessionId.slice(0,8)," · ",Z.model," · ",Z.mode]}),o.jsx("span",{className:"spacer"}),ae&&c&&o.jsx(de,{variant:"primary",size:"sm",disabled:h,onClick:c,children:h?"retomando…":"↻ retomar"}),Y.streaming&&!ae&&o.jsxs(de,{variant:"ghost",size:"sm",onClick:F,children:["■ interromper ",o.jsx("span",{className:"kbd",children:"esc"})]})]}),o.jsxs("div",{className:"conv__scroll",ref:ke,children:[(W==null?void 0:W.fatal)&&o.jsxs("div",{className:"fail",children:[o.jsxs("div",{className:"fail__title",children:[o.jsx("span",{"aria-hidden":"true",children:"⚠"}),W.remedy?"o adaptador ACP não subiu":"a sessão não está disponível"]}),o.jsx("div",{className:"fail__body",children:W.message}),W.remedy&&o.jsx("div",{className:"fail__cmd",children:W.remedy})]}),W&&!W.fatal&&o.jsx(Ae,{tone:"danger",children:W.message}),Y.turns.length===0&&!W&&o.jsx(y5,{ready:Z!==null}),Y.plan&&o.jsx(e5,{entries:Y.plan}),Y.turns.map((T,K)=>T.role==="resumed"?o.jsx(_5,{at:T.at??null},K):o.jsx($3,{role:T.role,children:T.blocks.map((ne,$)=>o.jsx(v5,{block:ne,terminals:Y.terminals,streaming:Y.streaming&&K===Y.turns.length-1&&$===T.blocks.length-1,openThoughts:N,onToggleThought:ue=>L(_e=>{const Ee=new Set(_e);return Ee.has(ue)?Ee.delete(ue):Ee.add(ue),Ee}),onRespond:ue=>{var Ee;const _e=Y.pendingPermission;_e&&((Ee=D.current)==null||Ee.send({type:"permission_response",requestId:_e.requestId,optionId:ue}))},coach:I},$))},K)),ae&&Z&&o.jsx("div",{className:"daysep",children:"conversa encerrada"})]}),Y.usage&&o.jsx(kO,{usage:Y.usage}),o.jsxs("div",{className:"composer",children:[Y.modeOwner==="lumem"&&C&&z&&o.jsx(q3,{mode:Y.lumemMode,workspaceDefault:Y.lumemModeDefault,onSwitch:T=>{var K;k(!1),(K=D.current)==null||K.send({type:"set_lumem_mode",mode:T})},onFreeRequested:()=>{k(!1),x(!0)}}),S&&z&&o.jsx(L3,{cwd:(Z==null?void 0:Z.cwd)??"",onCancel:()=>x(!1),onConfirm:()=>{var T;x(!1),(T=D.current)==null||T.send({type:"set_lumem_mode",mode:"free"})}}),o.jsxs("div",{className:"composer__box",children:[A!==null&&o.jsx(s5,{commands:Y.commands,query:A,onChoose:b,onDismiss:()=>b("")}),o.jsx("textarea",{className:`composer__in${v===""?" composer__in--empty":""}`,value:v,disabled:ee!==null||ae,placeholder:ae?"esta conversa terminou — retome para continuar":ee!==null?"responda o pedido de permissão para continuar":"escreva, ou / para comandos","aria-label":"mensagem para o agente",onChange:T=>b(T.target.value),onKeyDown:T=>{T.key==="Enter"&&(T.shiftKey||T.nativeEvent.isComposing||(T.preventDefault(),re()))}}),o.jsxs("div",{className:"composer__bar",children:[Y.modeOwner==="lumem"&&o.jsx(z3,{mode:Y.lumemMode,disabled:!z,readOnly:ae,open:C,onToggle:()=>k(!C)}),o.jsx(M3,{mode:Y.mode,options:Y.configOptions,disabled:Y.streaming||ae,onSwitch:(T,K)=>{var ne;return(ne=D.current)==null?void 0:ne.send({type:"set_config",optionId:T,value:K})}}),o.jsx("span",{className:"spacer"}),o.jsxs(de,{variant:"primary",size:"sm",disabled:v.trim()===""||ee!==null||ae||!H,onClick:re,children:["enviar ",o.jsx("span",{className:"kbd",children:"⏎"})]})]})]})]})]})}function _5({at:e}){return o.jsxs("div",{className:"daysep",children:["retomada",e===null?"":` · ${g5(e)}`]})}function g5(e){return new Date(e).toLocaleString("pt-BR",{day:"2-digit",month:"short",hour:"2-digit",minute:"2-digit"})}function v5({block:e,terminals:t,streaming:i,openThoughts:n,onToggleThought:a,onRespond:c,coach:h}){switch(e.kind){case"message":return o.jsx(W3,{text:e.text,streaming:i});case"thought":return o.jsx(V3,{text:e.text,open:n.has(e.messageId),onToggle:()=>a(e.messageId),streaming:i});case"tool":return o.jsx(a5,{call:e.call,terminals:t});case"permission":return o.jsxs(o.Fragment,{children:[o.jsx(Y3,{request:e.request,onRespond:c}),h.show&&o.jsxs(f2,{title:"a primeira vez que isso aparece",onUnderstood:h.dismiss,onNever:h.never,children:["É assim que o Lumem te mantém no controle: o modo ",o.jsx("b",{children:"Auto"})," resolve sozinho o que é leitura e escrita dentro desta worktree, e para em tudo que sai disso — rede, comando global, arquivo fora dela. Para ver o plano antes de qualquer execução, troque para"," ",o.jsx("b",{children:"Plano"})," na barra acima."]})]});case"note":return o.jsx("div",{className:"unknown",children:e.text});case"meta":return o.jsx("div",{className:"meta",children:e.text})}}function y5({ready:e}){return o.jsxs("div",{className:"empty",children:[o.jsx("span",{className:"empty__glyph","aria-hidden":"true",children:"◆"}),o.jsx("span",{className:"empty__title",children:e?"sessão aberta, nada pedido ainda":"conectando…"}),e&&o.jsxs("span",{className:"empty__sub",children:["O adaptador subiu e o handshake passou sem consumir nada. O primeiro turno já entra com"," ",o.jsx("b",{children:"39,2k"})," de contexto — system prompt e ferramentas do próprio Claude Code, não do Lumem."]})]})}function b5(e){const t=j.useRef(null),i=j.useRef(!0),n=j.useCallback(a=>{if(t.current=a,!a)return;const c=()=>{i.current=a.scrollHeight-a.scrollTop-a.clientHeight<24};a.addEventListener("scroll",c)},[]);return j.useEffect(()=>{const a=t.current;a&&i.current&&(a.scrollTop=a.scrollHeight)},e),n}const S5=.2,x5=.8;function Q1({children:e,viewer:t}){const[i,n]=j.useState(.5),a=j.useRef(null),[c,h]=j.useState(!1),d=j.useCallback(f=>{var v;const m=(v=a.current)==null?void 0:v.getBoundingClientRect();if(m===void 0||m.width===0||!Number.isFinite(f))return;const g=(f-m.left)/m.width;n(Math.min(x5,Math.max(S5,g)))},[]);return j.useEffect(()=>{if(!c)return;const f=g=>{g.preventDefault(),d(g.clientX)},m=()=>h(!1);return window.addEventListener("pointermove",f),window.addEventListener("pointerup",m),()=>{window.removeEventListener("pointermove",f),window.removeEventListener("pointerup",m)}},[c,d]),t===null?o.jsx(o.Fragment,{children:e}):o.jsxs("div",{className:"split",ref:a,children:[o.jsx("div",{className:"split__side split__side--term",style:{flexGrow:i},children:e}),o.jsx("span",{className:"split__grip",role:"separator","aria-orientation":"vertical","aria-label":"largura do arquivo aberto",onPointerDown:f=>{f.preventDefault(),h(!0)}}),o.jsx("div",{className:"split__side split__side--viewer",style:{flexGrow:1-i},children:t})]})}function w5({tab:e,scope:t,cwd:i,active:n,viewer:a=null,onResume:c,resuming:h=!1,onStarted:d,initialPrompt:f}){const m=e.kind==="agent",g=e.transport==="acp",v=!g&&e.state!=="running";return o.jsx("div",{className:`pane ${g?"pane--conv":"pane--term"}`,role:"tabpanel",hidden:!n,"aria-label":v?`registro de ${e.label}`:`sessão ${e.label}`,children:o.jsxs(Q1,{viewer:a,children:[!g&&o.jsxs("div",{className:"term-head",children:[o.jsx(Qe,{tone:m?"agent":"shell",children:m?"◆":"●"}),o.jsxs("span",{className:"term-head__cmd",title:`${e.command} · cwd ${i}`,children:[e.command," ",o.jsxs("span",{className:"dim",children:["· cwd ",i]})]}),v?o.jsxs(o.Fragment,{children:[o.jsx(as,{tone:"neutral",children:"registro"}),o.jsxs(as,{tone:e.exitCode===0?"exited":"failed",dot:!0,children:["exited (",e.exitCode??"?",")"]})]}):o.jsx(as,{tone:"running",dot:!0,children:"running"})]}),v&&o.jsx(C5,{tab:e,scope:t,onStarted:d}),g?o.jsx(p5,{sessionId:e.sessionId,agentName:e.label,live:e.state==="running",active:n,...c?{onResume:c}:{},resuming:h,initialPrompt:f},e.sessionId):o.jsx(Ah,{sessionId:e.sessionId,readOnly:v},e.sessionId)]})})}function C5({tab:e,scope:t,onStarted:i}){const n=We(),a=He({mutationFn:()=>e.agentConfigId===null?ie.session.createShell.mutate(t):ie.session.createAgent.mutate({...t,agentConfigId:e.agentConfigId}),onSuccess:async c=>{await n.invalidateQueries({queryKey:Hi(t.scopeType,t.scopeId)}),i(c.id)}});return o.jsxs("div",{className:"term-note",children:[o.jsx(Ae,{tone:"info",actions:o.jsx(de,{size:"sm",variant:"default",disabled:a.isPending,onClick:()=>a.mutate(),children:"nova sessão igual"}),children:"Esta sessão encerrou. O que está abaixo é o registro do que ela imprimiu, somente leitura — o processo não existe mais e não há o que digitar."}),a.isError&&o.jsx(Ae,{tone:"danger",children:a.error.message})]})}function Yp({scope:e,crumb:t,checkout:i,context:n,filesPanel:a,cwd:c,openSessionId:h,initialPrompt:d}){const f=We(),{tabs:m,activeId:g,select:v,close:b,reopen:S,resume:x,resuming:C,sessions:k}=s3(e),N=D_(),L=y_(),D=j.useRef(!1);j.useEffect(()=>{h===void 0||D.current||m.some(I=>I.sessionId===h)&&(D.current=!0,v(h))},[h,m,v]);const M=K0(e.scopeType,e.scopeId,g);j.useEffect(()=>{L.setActiveTab(M)},[M,L.setActiveTab]);function Y(I){const ae=K0(e.scopeType,e.scopeId,I),le=L.fileFor(ae);return le===null?null:le.view==="patch"?o.jsx(S3,{scope:e,path:le.path,changeRef:le.ref??"worktree",onClose:()=>L.close(ae)}):o.jsx(m3,{scope:e,path:le.path,active:I===g,onClose:()=>L.close(ae)})}const Z=He({mutationFn:I=>ie.session.close.mutate({id:I}),onSuccess:()=>f.invalidateQueries({queryKey:Hi(e.scopeType,e.scopeId)})}),W=k.data??[],ee=new Set(m.map(I=>I.sessionId));return o.jsxs("section",{className:"scope",children:[o.jsx("div",{className:"scope__crumb",children:t}),o.jsx(p2,{label:`sessões de ${c}`,lead:o.jsx(y0,{label:i.name,glyph:i.glyph,active:g===null,onSelect:()=>v(null),...i.state!==void 0?{state:i.state}:{},...i.stateLabel!==void 0?{stateLabel:i.stateLabel}:{}}),action:o.jsx(y3,{scopeType:e.scopeType,scopeId:e.scopeId,onCreated:I=>v(I)}),end:o.jsx(_2,{label:"a coluna de arquivos",pressed:a.open,onToggle:a.toggle,children:"▤"}),children:m.map(I=>o.jsx(y0,{label:I.label,ordinal:I.ordinal,glyph:o.jsx(Qe,{tone:I.kind==="agent"?"agent":"shell",children:I.kind==="agent"?"◆":"●"}),state:N.isWaiting(I.sessionId)?"asking":I.state==="running"?"running":I.exitCode===0?"exited":"failed",note:I.state==="running"?void 0:"registro",active:g===I.sessionId,onSelect:()=>v(I.sessionId),onClose:()=>{I.state==="running"?Z.mutate(I.sessionId):b(I.sessionId)}},I.sessionId))}),o.jsx("div",{className:"pane",role:"tabpanel",hidden:g!==null,"aria-label":i.name,children:o.jsxs(Q1,{viewer:Y(null),children:[Z.isError&&o.jsx("div",{className:"detail__banner",children:o.jsx(Ae,{tone:"danger",children:Z.error.message})}),n,o.jsxs("section",{className:"section",children:[o.jsx(kh,{title:"Sessões",count:W.length===0?0:`${W.length} · ${W.filter(I=>I.state==="running").length} rodando`}),W.length===0?o.jsx("p",{className:"detail__hint",children:"nenhuma sessão aberta aqui"}):W.map(I=>{const ae=I.state==="running",le=ee.has(I.id);return o.jsx(hw,{name:I.agentName??I.scriptName??"shell",glyph:o.jsx(Qe,{tone:I.kind==="agent"?"agent":"shell",children:I.kind==="agent"?"◆":I.kind==="script"?"▶":"●"}),detail:I.command,state:ae?{label:"running",tone:"running"}:{label:`exited (${I.exitCode??"?"})`,tone:I.exitCode===0?"exited":"failed"},age:gh(I.createdAt),onSelect:le?()=>v(I.id):void 0,action:le?void 0:o.jsx(de,{size:"sm",variant:"ghost",onClick:()=>S(I.id),children:I.transport==="acp"?"reabrir":"ver registro"})},I.id)})]})]})}),m.map(I=>o.jsx(w5,{tab:I,scope:e,cwd:c,onStarted:v,active:g===I.sessionId,viewer:Y(I.sessionId),...I.transport==="acp"?{onResume:()=>x(I.sessionId)}:{},resuming:C===I.sessionId,initialPrompt:(d==null?void 0:d.sessionId)===I.sessionId?d.text:void 0},I.sessionId))]})}function j5({projectId:e}){var h,d;const[t,i]=j.useState("7d"),n=$T(e,t),a=[...(((h=n.data)==null?void 0:h.worktrees)??[]).map(f=>({id:f.worktreeId,name:f.name,tokens:f.tokens,cost:f.cost,currency:f.currency,turns:f.turns,kind:"worktree"}))],c=(d=n.data)==null?void 0:d.outside;return c!==void 0&&(c.turns>0||a.length>0)&&a.push({id:"__outside__",name:"direto no projeto",tokens:c.tokens,cost:c.cost,currency:c.currency,turns:c.turns,kind:"project",outside:!0}),o.jsxs("section",{className:"section",children:[o.jsx(kh,{title:"Consumo por worktree",aside:o.jsx("div",{className:"seg",role:"group","aria-label":"Janela de tempo do consumo do projeto",children:kw.map(f=>o.jsx("button",{type:"button",className:"seg__btn","aria-pressed":t===f.id,onClick:()=>i(f.id),children:f.label},f.id))})}),n.isError?o.jsx(Ae,{tone:"danger",children:n.error.message}):n.isPending?o.jsx("p",{className:"detail__hint",children:"somando o consumo…"}):a.length===0?o.jsx("p",{className:"detail__hint",children:"nada gasto ainda neste projeto"}):o.jsx(Aw,{rows:a})]})}function k5(e,t){if(t===null)return`remover ${e} da lista, e o registro das worktrees dele?`;if(t===0)return`remover ${e} da lista?`;const i=t===1?"1 worktree":`${t} worktrees`;return`remover ${e} da lista, e o registro de ${i}?`}function E5({projectId:e,workspaceId:t,workspaceName:i,onRemoved:n,onOpenWorkspace:a,onSelectWorktree:c,openSessionId:h,initialPrompt:d,filesPanel:f}){var Y,Z;const m=We(),g={scopeType:"project",scopeId:e},v=Ne({queryKey:["project","get",e],queryFn:()=>ie.project.get.query({id:e})}),b=Ne({queryKey:sa(e),queryFn:()=>ie.worktree.listByProject.query({projectId:e}),enabled:((Y=v.data)==null?void 0:Y.available)===!0}),[S,x]=j.useState(!1),C=He({mutationFn:()=>ie.project.remove.mutate({id:e}),onSuccess:async()=>{await m.invalidateQueries({queryKey:ta(t)}),n()}});if(S&&v.data)return o.jsx(N5,{project:v.data,worktrees:((Z=b.data)==null?void 0:Z.length)??null,pending:C.isPending,error:C.isError?C.error.message:null,onCancel:()=>{x(!1),C.reset()},onConfirm:()=>C.mutate()});if(v.isPending)return o.jsx("div",{className:"pane",children:o.jsx(di,{label:"carregando o projeto"})});if(!v.data)return o.jsx("div",{className:"pane",children:o.jsx("p",{role:"alert",children:"projeto não encontrado"})});const{name:k,path:N,defaultBranch:L,available:D}=v.data,M=b.data??[];return o.jsx(Yp,{scope:g,cwd:N,openSessionId:h,initialPrompt:d,filesPanel:f,crumb:o.jsxs("nav",{className:"crumb",children:[o.jsx("button",{type:"button",className:"crumb__up focus-ring",onClick:a,children:i}),o.jsx("span",{className:"crumb__sep","aria-hidden":"true",children:"/"}),k,o.jsx("span",{className:"crumb__sep","aria-hidden":"true",children:"/"}),o.jsx("span",{className:"crumb__here",children:"local"})]}),checkout:{name:"local",glyph:o.jsx(Qe,{tone:D?"project":"off",children:"▭"})},context:o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"detail__title",children:[o.jsxs("h2",{children:[o.jsx(Qe,{tone:D?"project":"off",children:"▭"})," local"]}),o.jsx("span",{className:"detail__kind",children:"checkout do projeto"}),o.jsx("span",{className:"actions__spacer"}),o.jsx(de,{variant:"ghost",size:"sm",onClick:()=>x(!0),disabled:C.isPending,children:C.isPending?"removendo…":"remover projeto"})]}),D?o.jsx("div",{className:"detail__banner",children:o.jsxs(Ae,{tone:"info",children:[o.jsx("strong",{children:"Este é o repositório em si, não uma worktree do Lumem."})," Remover o projeto tira o registro — o diretório e o que está dentro dele ficam no disco."]})}):o.jsx("div",{className:"detail__banner",children:o.jsxs(Ae,{tone:"danger",children:[o.jsxs("strong",{children:["O repositório não está mais em ",N,"."]})," As ações sobre ele ficam bloqueadas até que ele volte; o registro continua aqui."]})}),C.isError&&o.jsx("div",{className:"detail__banner",children:o.jsx(Ae,{tone:"danger",children:C.error.message})}),o.jsx(da,{entries:[{label:"branch base",value:o.jsxs(o.Fragment,{children:[o.jsx(as,{tone:"branch",dot:!0,children:L})," ",o.jsx("span",{className:"dim",children:"resolvida na adição"})]})},{label:"caminho",value:o.jsx(uw,{path:N})},...D?[{label:"worktrees",value:o.jsxs("span",{className:"dim",children:[M.length," ",M.length===1?"worktree":"worktrees"]})}]:[]]}),D&&o.jsxs(o.Fragment,{children:[o.jsx(j5,{projectId:e}),o.jsxs("section",{className:"section",children:[o.jsx(kh,{title:"Worktrees deste projeto",count:M.length}),M.length===0?o.jsx("p",{className:"detail__hint",children:"nenhuma worktree ainda"}):M.map(W=>o.jsx(hw,{name:W.name,glyph:o.jsx(Qe,{tone:W.state==="missing"?"warn":"worktree",children:W.state==="missing"?"⚠":"◇"}),detail:W.path,state:W.state==="missing"?{label:"ausente",tone:"missing"}:void 0,onSelect:()=>c(W.id)},W.id))]})]})]})})}function N5({project:e,worktrees:t,pending:i,error:n,onCancel:a,onConfirm:c}){return o.jsx("div",{className:"pane",children:o.jsxs("div",{className:"remove-confirm",role:"alertdialog","aria-label":"confirmar remoção",children:[e.managed?o.jsxs(o.Fragment,{children:[o.jsxs("h2",{className:"remove-confirm__title",children:["apagar ",e.name," do disco?"]}),o.jsxs("p",{className:"remove-confirm__body",children:["Este projeto foi clonado pelo Lumem. Remover tira do registro ",o.jsx("strong",{children:"e apaga o diretório"}),". Não dá para desfazer."]}),o.jsx("p",{className:"remove-confirm__path",children:e.path})]}):o.jsxs(o.Fragment,{children:[o.jsx("h2",{className:"remove-confirm__title",children:k5(e.name,t)}),o.jsxs("p",{className:"remove-confirm__body",children:["Este projeto aponta para um repositório ",o.jsx("strong",{children:"seu"}),". Sai da lista; o diretório fica exatamente onde está — o dele e o de cada worktree, com trabalho não commitado e tudo."]})]}),n!==null&&o.jsx(Ae,{tone:"danger",children:n}),o.jsxs("div",{className:"remove-confirm__actions",children:[o.jsx(de,{variant:e.managed?"danger":"primary",onClick:c,disabled:i,children:i?"removendo…":e.managed?"apagar":"remover"}),o.jsx(de,{variant:"ghost",onClick:a,children:"cancelar"})]})]})})}function T5(e){const t=Ne({queryKey:ta(e.workspaceId),queryFn:()=>ie.project.listByWorkspace.query({workspaceId:e.workspaceId})});return o.jsxs("div",{className:"tree","aria-label":"árvore de projetos",children:[o.jsxs("div",{className:"tree__head",children:[o.jsx("p",{className:"tree__label",children:"Projetos"}),o.jsx("button",{type:"button",className:"act","aria-label":"adicionar projeto",onClick:e.onAddProject,children:"+"})]}),i()]});function i(){if(t.isError)return o.jsx("p",{className:"tree__message",role:"alert",children:t.error.message});if(t.isPending)return o.jsx(di,{label:"carregando os projetos",widths:["80%","60%","70%"]});const n=t.data??[];return n.length===0?o.jsx(ms,{title:"Nenhum projeto aqui",children:"Aponte para a raiz de um repositório git no disco, ou cole uma URL para clonar."}):n.map(a=>o.jsx(O5,{project:a,...e},a.id))}}function O5({project:e,expansion:t,selection:i,onSelect:n,onCreateWorktree:a}){const c=t.isExpanded(e.id),h={scopeType:"project",scopeId:e.id},d=Ne({queryKey:sa(e.id),queryFn:()=>ie.worktree.listByProject.query({projectId:e.id}),enabled:e.available}),f=d.data??[],m=[h,...f.map(S=>({scopeType:"worktree",scopeId:S.id}))],g=w_(m),v=BO(e.available&&c?e.id:null),b=S=>(v.data??[]).find(x=>x.worktreeId===S);return o.jsxs(o.Fragment,{children:[o.jsx("div",{"data-kind":"project","data-state":e.available?"available":"missing",children:o.jsx(d_,{depth:0,emphasis:!0,label:e.name,glyph:o.jsx(Qe,{tone:e.available?"project":"off",children:"■"}),muted:!e.available,meta:e.available?void 0:"sem disco",count:!c&&g>0?g:void 0,expanded:c,onToggle:()=>t.toggle(e.id),reserveAction:!0,...e.available?{action:o.jsx("button",{type:"button",className:"row__act","aria-label":`nova worktree em ${e.name}`,onClick:()=>a(e),children:"+"})}:{},selected:!1,onSelect:()=>n(e.id,h)})}),c&&e.available&&o.jsxs(o.Fragment,{children:[o.jsx(A5,{projectId:e.id,selected:i.scopeType==="project"&&i.scopeId===e.id,onSelect:()=>n(e.id,h)}),d.isError&&o.jsx("p",{className:"tree__message",role:"alert",children:d.error.message}),f.map(S=>o.jsx(B5,{projectId:e.id,worktree:S,mark:b(S.id),selected:i.scopeType==="worktree"&&i.scopeId===S.id,onSelect:n},S.id))]})]})}function A5({projectId:e,selected:t,onSelect:i}){const n={scopeType:"project",scopeId:e},a=w_([n]);return o.jsx("div",{"data-kind":"local","data-state":"active",children:o.jsx(d_,{depth:1,label:"local",glyph:o.jsx(Qe,{tone:"project",children:"▭"}),meta:o.jsx(Z1,{scope:n}),count:a>0?a:void 0,selected:t,onSelect:i})})}function Z1({scope:e}){var a,c,h;const t=Uw(e),i=(a=t.data)==null?void 0:a.run.last,n=(c=t.data)==null?void 0:c.setup.last;if((i==null?void 0:i.running)===!0){const d=((h=t.data)==null?void 0:h.port)??null;return o.jsxs("span",{className:"runmark",children:[o.jsx("span",{className:"runmark__glyph",children:"▶"}),d===null?"run":`:${String(d.port)}`]})}return n&&!n.running&&n.exitCode!==0?o.jsx(o.Fragment,{children:"setup falhou"}):null}function R5(e){const t=[e.branch===e.name?null:e.branch,e.state==="missing"?"ausente":null].filter(i=>i!==null);return t.length===0?void 0:t.join(" · ")}function M5({mark:e}){return o.jsxs("span",{className:`prmark prmark--${e.verdict}`,children:[o.jsx("span",{className:"prmark__dot","aria-hidden":"true"}),"#",e.number,o.jsxs("span",{className:"sr-only",children:[" pull request ",D5[e.verdict]]})]})}const D5={ready:"pronta para merge",blocked:"bloqueada",pending:"verificando",draft:"em rascunho",merged:"mesclada",closed:"fechada sem merge"};function B5({projectId:e,worktree:t,mark:i,selected:n,onSelect:a}){const c=t.state==="missing",h={scopeType:"worktree",scopeId:t.id},d=w_([h]),f=D_(),m=x_(h),g=f.countIn((m.data??[]).map(v=>v.id));return o.jsx("div",{"data-kind":"worktree","data-state":t.state,children:o.jsx(d_,{depth:1,label:t.name,glyph:o.jsx(Qe,{tone:c?"warn":"worktree",children:c?"⚠":"◇"}),muted:c,meta:i!==void 0&&!c?o.jsx(M5,{mark:i}):R5(t)??(c?void 0:o.jsx(Z1,{scope:h}))??void 0,count:g>0?g:d>0?d:void 0,countTone:g>0?"asking":"running",selected:n,onSelect:()=>a(e,h)})})}function L5({workspaces:e,activeId:t,onSelect:i}){const n=We(),[a,c]=j.useState(!1),[h,d]=j.useState(""),f=He({mutationFn:g=>ie.workspace.create.mutate({name:g}),onSuccess:async g=>{await n.invalidateQueries({queryKey:mr}),i(g.id),c(!1),d("")}}),m=g=>{g.preventDefault(),h.trim()!==""&&f.mutate(h)};return o.jsxs("div",{className:"ws",children:[o.jsxs("div",{className:"ws__bar",children:[o.jsx("label",{className:"sr-only",htmlFor:"workspace-select",children:"Workspace"}),o.jsx("span",{className:"ws__glyph","aria-hidden":"true",children:"◈"}),o.jsx("select",{id:"workspace-select",className:"ws__select",value:t??"",onChange:g=>i(g.target.value),children:e.map(g=>o.jsx("option",{value:g.id,children:g.name},g.id))}),o.jsx("span",{className:"ws__caret","aria-hidden":"true",children:"▾"}),o.jsx(de,{size:"sm",variant:"ghost","aria-label":"novo workspace",title:"novo workspace",onClick:()=>c(!0),children:"+"})]}),a&&o.jsxs("form",{className:"ws__form",onSubmit:m,children:[o.jsx(Xt,{id:"new-workspace-name",label:"Nome do novo workspace",children:o.jsx(cs,{id:"new-workspace-name",value:h,onChange:g=>d(g.target.value),placeholder:"trabalho",autoFocus:!0})}),o.jsxs("div",{className:"ws__actions",children:[o.jsx(de,{type:"submit",variant:"primary",size:"sm",disabled:f.isPending||h.trim()==="",children:"criar"}),o.jsx(de,{size:"sm",variant:"ghost",onClick:()=>c(!1),children:"cancelar"})]})]}),f.isError&&o.jsx("p",{className:"ws__error",role:"alert",children:f.error.message})]})}function z5({worktreeId:e,projectId:t,workspaceName:i,onRemoved:n,onOpenWorkspace:a,onOpenProject:c,openSessionId:h,initialPrompt:d,filesPanel:f}){var z,re;const m=We(),[g,v]=j.useState(!1),b=Ne({queryKey:n_(e),queryFn:()=>ie.worktree.getDetail.query({id:e})}),S=(z=m.getQueryData(sa(t)))==null?void 0:z.find(se=>se.id===e),x=Ne({queryKey:["project","get",t],queryFn:()=>ie.project.get.query({id:t})}),C=He({mutationFn:se=>ie.worktree.remove.mutate({id:e,force:se}),onSuccess:async()=>{await m.invalidateQueries({queryKey:sa(t)}),n()}}),k={scopeType:"worktree",scopeId:e};function N(se,A){var F;return o.jsxs("nav",{className:"crumb",children:[o.jsx("button",{type:"button",className:"crumb__up focus-ring",onClick:a,children:i}),o.jsx("span",{className:"crumb__sep","aria-hidden":"true",children:"/"}),o.jsx("button",{type:"button",className:"crumb__up focus-ring",onClick:c,children:((F=x.data)==null?void 0:F.name)??"…"}),o.jsx("span",{className:"crumb__sep","aria-hidden":"true",children:"/"}),o.jsx("span",{className:"crumb__here",children:se}),A!==se&&o.jsx("span",{className:"crumb__branch",children:A})]})}if(b.isPending)return S===void 0?o.jsx("div",{className:"pane",children:o.jsx(di,{label:"carregando a worktree"})}):o.jsx(Yp,{scope:k,cwd:S.path,openSessionId:h,initialPrompt:d,filesPanel:f,crumb:N(S.name,S.branch),checkout:{name:S.name,glyph:o.jsx(Qe,{tone:"worktree",children:"◇"})},context:o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"detail__title",children:[o.jsxs("h2",{children:[o.jsx(Qe,{tone:"worktree",children:"◇"})," ",S.name]}),o.jsx("span",{className:"detail__kind",children:"worktree"})]}),o.jsx(di,{label:"carregando a worktree"})]})});if(b.isError)return o.jsx("div",{className:"pane",children:o.jsx(Ae,{tone:"danger",children:b.error.message})});const{name:L,branch:D,path:M,state:Y,present:Z,status:W,aheadBehind:ee,baseBranch:I,createdAt:ae}=b.data,le=!Z||Y==="missing",H=le||W===null||W.clean?null:W.changedFiles;return o.jsx(Yp,{scope:k,cwd:M,openSessionId:h,initialPrompt:d,filesPanel:f,crumb:N(L,D),checkout:{name:L,glyph:o.jsx(Qe,{tone:le?"warn":"worktree",children:le?"⚠":"◇"}),...H===null?{}:{state:"dirty",stateLabel:`árvore suja · ${H} ${H===1?"arquivo":"arquivos"}`}},context:o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"detail__title",children:[o.jsxs("h2",{children:[o.jsx(Qe,{tone:le?"warn":"worktree",children:le?"⚠":"◇"})," ",L]}),o.jsx("span",{className:"detail__kind",children:le?"worktree ausente":"worktree"}),o.jsx("span",{className:"actions__spacer"}),o.jsx(de,{variant:"ghost",size:"sm",onClick:()=>C.mutate(!1,{onError:()=>v(!0)}),disabled:C.isPending,children:C.isPending?"removendo…":"remover worktree"})]}),g&&o.jsx("div",{className:"detail__banner",children:o.jsx(Ae,{tone:"danger",actions:o.jsxs(o.Fragment,{children:[o.jsx(de,{size:"sm",variant:"danger",onClick:()=>C.mutate(!0),disabled:C.isPending,children:"remover mesmo assim"}),o.jsx(de,{size:"sm",variant:"ghost",onClick:()=>v(!1),children:"cancelar"})]}),children:((re=C.error)==null?void 0:re.message)??"isso descarta as alterações não salvas."})}),le&&o.jsx("div",{className:"detail__banner",children:o.jsxs(Ae,{tone:"warning",children:["O diretório não está em ",o.jsx("code",{children:M}),". Remover aqui só apaga o registro; a branch ",o.jsx("code",{children:D})," continua existindo."]})}),o.jsx(da,{entries:[{label:"branch",value:o.jsxs(o.Fragment,{children:[o.jsx(as,{tone:"branch",dot:!0,children:D})," ",o.jsxs("span",{className:"dim",children:["nasceu de ",I]})]})},...le?[]:[{label:`em relação a ${I}`,value:ee===null?"desconhecido":o.jsxs(o.Fragment,{children:[o.jsxs("span",{className:"ahead",children:["↑",ee.ahead]})," ",o.jsxs("span",{className:"behind",children:["↓",ee.behind]})," ",o.jsxs("span",{className:"dim",children:[ee.ahead," à frente, ",ee.behind," atrás"]})]})}],{label:"estado",value:le?o.jsx(as,{tone:"missing",dot:!0,children:"ausente do disco"}):W===null?o.jsx(as,{children:"estado desconhecido"}):W.clean?o.jsx(as,{tone:"clean",dot:!0,children:"limpa"}):o.jsxs(as,{tone:"dirty",dot:!0,children:["suja · ",W.changedFiles," ",W.changedFiles===1?"arquivo":"arquivos"]})},{label:"caminho",value:o.jsx(uw,{path:M})},...le?[]:[{label:"criada",value:o.jsx("span",{className:"dim",children:gh(ae)})}]]}),o.jsx("p",{className:"detail__hint",children:"a branch não é apagada"})]})})}const Gp="lumem.activeWorkspaceId";function q5(){try{return window.localStorage.getItem(Gp)}catch{return null}}function tx(e){try{e===null?window.localStorage.removeItem(Gp):window.localStorage.setItem(Gp,e)}catch{}}function P5(e){var c,h;const[t,i]=j.useState(q5),n=((c=e.find(d=>d.id===t))==null?void 0:c.id)??((h=e[0])==null?void 0:h.id)??null;j.useEffect(()=>{n!==t&&tx(n)},[n,t]);const a=j.useCallback(d=>{tx(d),i(d)},[]);return{activeId:n,select:a}}function H5(e,t){switch(t.type){case"workspace.changed":e.invalidateQueries({queryKey:mr});return;case"project.changed":e.invalidateQueries({queryKey:ta(t.workspaceId)}),e.invalidateQueries({queryKey:["project","get"]});return;case"worktree.changed":e.invalidateQueries({queryKey:sa(t.projectId)}),e.invalidateQueries({queryKey:["worktree"]}),e.invalidateQueries({queryKey:["files"]}),e.invalidateQueries({queryKey:["changes"]});return;case"pr.changed":e.invalidateQueries({queryKey:["pr"]});return;case"session.changed":e.invalidateQueries({queryKey:Hi(t.scopeType,t.scopeId)}),e.invalidateQueries({queryKey:["session"]});return}}function I5(){const e=We();j.useEffect(()=>{const t=ie.events.onChange.subscribe(void 0,{onData:i=>H5(e,i),onConnectionStateChange:i=>{i.state==="idle"&&e.invalidateQueries()}});return()=>t.unsubscribe()},[e])}const X1="lumem.runDock",J1=96;function U5(e=window.innerHeight){return L_(Math.round(e/2),e)}function F5(e=window.innerHeight){return Math.max(J1,e-160)}const sx=640;function L_(e,t=window.innerHeight){return Math.min(F5(t),Math.max(J1,Math.round(e)))}function K5(){const e={open:!0,height:U5()};try{const t=window.localStorage.getItem(X1);if(t===null)return e;const i=JSON.parse(t);if(typeof i!="object"||i===null)return e;const{open:n,height:a}=i;return{open:typeof n=="boolean"?n:e.open,height:typeof a=="number"?L_(a):e.height}}catch{return e}}function ix(e){try{window.localStorage.setItem(X1,JSON.stringify(e))}catch{}}function $5(e,t){return{...e,toggle:()=>{!e.open&&t.width<sx&&t.setWidth(sx),e.toggle()}}}function W5(){const[e,t]=j.useState(K5),[i,n]=j.useState(!1),a=j.useCallback(d=>{t(f=>{const m={...f,height:L_(d)};return ix(m),m})},[]),c=j.useCallback(()=>{t(d=>{const f={...d,open:!d.open};return ix(f),f})},[]);j.useEffect(()=>{if(!i)return;const d=m=>{m.preventDefault(),a(window.innerHeight-m.clientY)},f=()=>n(!1);return window.addEventListener("pointermove",d),window.addEventListener("pointerup",f),()=>{window.removeEventListener("pointermove",d),window.removeEventListener("pointerup",f)}},[i,a]);const h=j.useCallback(d=>{d.preventDefault(),n(!0)},[]);return{open:e.open,height:e.height,toggle:c,setHeight:a,beginResize:h}}const eC="lumem.collapsedNodes";function V5(){try{const e=window.localStorage.getItem(eC);if(e===null)return new Set;const t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(i=>typeof i=="string")):new Set}catch{return new Set}}function rx(e){try{window.localStorage.setItem(eC,JSON.stringify([...e]))}catch{}}function Y5(){const[e,t]=j.useState(V5),i=j.useCallback(c=>!e.has(c),[e]),n=j.useCallback(c=>{t(h=>{const d=new Set(h);return d.delete(c)||d.add(c),rx(d),d})},[]),a=j.useCallback(c=>{t(h=>{if(!h.has(c))return h;const d=new Set(h);return d.delete(c),rx(d),d})},[]);return{isExpanded:i,toggle:n,expand:a}}function G5({sidebar:e,children:t,fill:i=!1,right:n,rightWidth:a}){const c=n!==void 0&&a!==void 0?{"--right-width":`${a}px`}:void 0;return o.jsxs("div",{className:`app-shell${n!==void 0?" app-shell--right":""}`,style:c,children:[o.jsx("aside",{className:"app-shell__sidebar","aria-label":"navegação",children:e}),o.jsx("main",{className:`app-shell__main${i?" app-shell__main--fill":""}`,children:t}),n]})}function Q5({version:e,unreachable:t}){return o.jsxs("header",{className:"topbar",children:[o.jsxs("h1",{className:"wordmark",children:[o.jsx("span",{className:"wordmark__dot","aria-hidden":"true"}),"Lumem-OS"]}),o.jsx("span",{className:"topbar__spacer"}),t?o.jsxs("span",{className:"daemon daemon--off",role:"alert",children:[o.jsx("span",{className:"daemon__dot","aria-hidden":"true"}),"daemon inacessível"]}):e!==null&&o.jsxs("span",{className:"daemon",children:[o.jsx("span",{className:"daemon__dot","aria-hidden":"true"}),"daemon v",e]})]})}const tC=["máquina","agente","workspace","projeto","tarefa"],Z5={welcome:null,machine:0,agent:1,handshake:1,workspace:2,project:3,task:4,done:null};function sC(e){return Z5[e]}function El(e){const t=sC(e);return t===null?null:`passo ${t+1} de ${tC.length}`}function vn({eyebrow:e,title:t,lede:i,narrow:n,children:a,primary:c,onSubmit:h,onBack:d,onSkip:f,extra:m,hint:g}){const v=b=>{b.preventDefault(),!((c==null?void 0:c.disabled)===!0||(c==null?void 0:c.isPending)===!0)&&(h==null||h())};return o.jsx("form",{className:"wizard__form",onSubmit:v,children:o.jsx(g2,{...e===void 0?{}:{eyebrow:e},title:t,...i===void 0?{}:{lede:i},...n===void 0?{}:{narrow:n},footer:o.jsxs(o.Fragment,{children:[c!==void 0&&o.jsxs(de,{type:"submit",variant:"primary",disabled:c.disabled===!0||c.isPending===!0,children:[c.isPending===!0&&c.pending!==void 0?c.pending:c.label,c.isPending!==!0&&o.jsxs(o.Fragment,{children:[" ",o.jsx("span",{className:"kbd",children:"⏎"})]})]}),m,o.jsx("span",{className:"spacer"}),f!==void 0&&o.jsx(de,{variant:"ghost",onClick:f,children:"pular este passo"}),d!==void 0&&o.jsx(de,{variant:"ghost",onClick:d,children:"Voltar"}),g!==void 0&&o.jsx("span",{className:"hint",children:g})]}),children:a})})}const nx=["setup","agents"];function X5({onNext:e,onBack:t,onSkip:i}){var v;const n=We(),a=Ne({queryKey:nx,queryFn:()=>ie.setup.agents.query(),refetchOnWindowFocus:!1}),c=He({mutationFn:()=>ie.setup.installAdapter.mutate(),onSuccess:async()=>{await n.invalidateQueries({queryKey:nx})}}),h=(v=a.data)==null?void 0:v.adapters.find(b=>b.id===ST),d=h==null?void 0:h.adapter,f=(h==null?void 0:h.cli)??void 0,m=(h==null?void 0:h.apiKeyEnv)!==null&&(h==null?void 0:h.apiKeyEnv)!==void 0,g=(d==null?void 0:d.path)!=null;return o.jsxs(vn,{eyebrow:El("agent"),title:"Conecte o Claude Code",lede:o.jsxs(o.Fragment,{children:["O Lumem conversa com agentes por ",o.jsx("b",{children:"ACP"})," — o daemon sobe o adaptador como processo e troca mensagens por stdio. É o que faz ferramenta, plano e pedido de permissão chegarem como blocos, e não como texto rolando num terminal."]}),primary:{label:"Testar conexão",disabled:!g},onSubmit:e,onBack:t,onSkip:i,hint:g?void 0:o.jsx(o.Fragment,{children:"o botão libera quando o adaptador estiver no PATH"}),children:[a.isPending&&o.jsx(di,{label:"procurando os binários"}),a.isError&&o.jsxs(Ae,{tone:"danger",children:[o.jsx("strong",{children:"Não deu para procurar os binários."})," ",a.error.message]}),a.data!==void 0&&f!==void 0&&d!==void 0&&o.jsxs(o.Fragment,{children:[o.jsxs(ia,{title:"o que foi encontrado na sua máquina",children:[o.jsxs(Fo,{label:"binários",children:[o.jsx(Ys,{state:f.path===null?"warn":"ok",what:f.command,value:f.path===null?"não está no PATH — o adaptador precisa dele para trabalhar":`${f.version??f.versionNote??"versão não lida"} · ${f.path}`,status:f.path===null?"falta":"ok"}),o.jsx(Ys,{state:d.path===null?"fail":"ok",what:d.command,value:d.path===null?"adaptador ACP não está no PATH":`${d.version??d.versionNote??"versão não lida"} · ${d.path}`,status:d.path===null?"falta":"ok"})]}),d.path===null&&o.jsxs(o.Fragment,{children:[o.jsxs("span",{className:"field__help",children:["Nada para rodar no terminal: o Lumem instala o adaptador ",o.jsx("b",{children:"dentro da pasta dele"}),", numa versão fixa — nunca ",o.jsx("code",{children:"@latest"}),", para uma atualização de madrugada não mudar o comportamento do agente."]}),o.jsxs("div",{className:"wizard__acts",children:[o.jsx(de,{variant:"primary",size:"sm",disabled:c.isPending,onClick:()=>c.mutate(),children:c.isPending?"instalando…":"Instalar o adaptador"}),o.jsx(de,{variant:"ghost",size:"sm",disabled:a.isFetching,onClick:()=>void a.refetch(),children:a.isFetching?"verificando…":"Já instalei — verificar"})]}),c.isError&&o.jsxs(o.Fragment,{children:[o.jsx(Ae,{tone:"danger",children:c.error.message}),d.install!==null&&o.jsx(u_,{command:d.install})]})]}),d.managed&&o.jsxs("span",{className:"field__help",children:["Instalado pelo Lumem, na pasta dele — é esta cópia que o daemon executa, e não uma que esteja no seu ",o.jsx("code",{children:"PATH"}),"."]})]}),o.jsxs(ia,{title:"como o Claude vai se autenticar — o que foi encontrado",children:[o.jsx(Fo,{label:"credencial",children:o.jsx(Ys,{state:m?"ok":"warn",what:(h==null?void 0:h.apiKeyEnv)??__.apiKeyEnv[0]??"",value:m?"presente no ambiente do daemon — cobrança por token":"ausente — o adaptador vai usar a credencial local do Claude",status:m?"chave":"assinatura"})}),o.jsxs("span",{className:"field__help",children:["Não é escolha sua nem do Lumem: o adaptador usa a credencial que ",o.jsx("b",{children:"encontrar"}),". É o passo seguinte que confirma se ela vale — e ele confirma sem gastar token."]})]}),o.jsxs("div",{className:"adv",children:[o.jsx("span",{className:"adv__k",children:"avançado"}),o.jsxs("span",{className:"adv__v",children:["comando: ",d.command," · args: nenhum · env herdado do daemon"]})]}),o.jsxs(Ae,{tone:"info",children:["Qualquer agente que fale ACP entra depois em ",o.jsx("b",{children:"agentes"}),", no rodapé da sidebar — o Lumem não é preso ao Claude. Pular este passo também é legítimo: sem agente ACP, a sessão é um terminal."]})]})]})}const J5=["agentConfig","list"];function eB({result:e,skipped:t,onOpen:i,onReview:n}){var S,x,C;const[a,c,h,d,f]=Ix({queries:[{queryKey:mr,queryFn:()=>ie.workspace.list.query()},{queryKey:J5,queryFn:()=>ie.agentConfig.list.query(),enabled:e.agentConfigId!==void 0},{queryKey:["project","get",e.projectId??""],queryFn:()=>ie.project.get.query({id:e.projectId??""}),enabled:e.projectId!==void 0},{queryKey:n_(e.worktreeId??""),queryFn:()=>ie.worktree.getDetail.query({id:e.worktreeId??""}),enabled:e.worktreeId!==void 0},{queryKey:Hi("worktree",e.worktreeId??""),queryFn:()=>ie.session.listByScope.query({scopeType:"worktree",scopeId:e.worktreeId??""}),enabled:e.worktreeId!==void 0}]}),m=(S=a.data)==null?void 0:S.find(k=>k.id===e.workspaceId),g=(x=c.data)==null?void 0:x.find(k=>k.id===e.agentConfigId),v=(C=f.data)==null?void 0:C.find(k=>k.kind==="agent"),b=[{label:"workspace",value:(m==null?void 0:m.name)??o.jsx(tB,{})},{label:"agente",value:g===void 0?o.jsx(Em,{step:"agent",skipped:t,onReview:n}):o.jsxs(o.Fragment,{children:[g.command,g.adapterVersion!==null&&` @${g.adapterVersion}`," ",o.jsxs("span",{className:"dim",children:["— ",g.transport==="acp"?"conversa":"terminal",g.available?"":" · fora do PATH"]})]})},{label:"projeto",value:h.data==null?o.jsx(Em,{step:"project",skipped:t,onReview:n}):o.jsxs(o.Fragment,{children:[h.data.path,!h.data.available&&o.jsx("span",{className:"dim",children:" — não está no disco"})]})},{label:"worktree",value:d.data==null?o.jsx(Em,{step:"task",skipped:t,onReview:n}):o.jsxs(o.Fragment,{children:[d.data.path,!d.data.present&&o.jsx("span",{className:"dim",children:" — não está no disco"})]})},{label:"sessão",value:v===void 0?o.jsx("span",{className:"dim",children:"nenhuma — abra uma quando quiser"}):o.jsxs(o.Fragment,{children:[v.agentName??"agente"," ",o.jsxs("span",{className:"dim",children:["— ",v.state]})]})}];return o.jsxs(vn,{narrow:!0,eyebrow:"tudo configurado",title:"Pronto. O resto acontece dentro do produto.",lede:"Foi isto que passou a existir na sua máquina:",primary:{label:"Abrir o workspace"},onSubmit:i,extra:o.jsx(de,{variant:"ghost",onClick:n,children:"Revisar a configuração"}),children:[o.jsx(da,{variant:"recap",entries:b}),o.jsxs("div",{className:"keys",children:[o.jsxs("div",{className:"key",children:[o.jsx("span",{className:"key__k",children:"⏎"}),o.jsxs("span",{className:"key__d",children:["enviar o turno — ",o.jsx("span",{className:"dim",children:"⇧⏎ faz linha nova"})]})]}),o.jsxs("div",{className:"key",children:[o.jsx("span",{className:"key__k",children:"esquerda"}),o.jsx("span",{className:"key__d",children:"projetos e worktrees; o rodapé adiciona projeto e configura agente"})]}),o.jsxs("div",{className:"key",children:[o.jsx("span",{className:"key__k",children:"abas"}),o.jsxs("span",{className:"key__d",children:["uma por sessão viva, mais ",o.jsx("b",{children:"contexto"})," — a worktree em si"]})]}),o.jsxs("div",{className:"key",children:[o.jsx("span",{className:"key__k",children:"direita"}),o.jsx("span",{className:"key__d",children:"arquivos do checkout e o que mudou neles, ao lado da conversa"})]})]})]})}function tB(){return o.jsx("span",{className:"dim",children:"lendo do daemon…"})}function Em({step:e,skipped:t,onReview:i}){const n={agent:"no rodapé da sidebar, em agentes",project:"na sidebar, no + ao lado de Projetos",task:"na sidebar, no + da linha do projeto"};return t.includes(e)?o.jsxs("span",{className:"dim",children:["pulado — dá para fazer ",n[e],","," ",o.jsx("button",{type:"button",className:"key__link",onClick:i,children:"ou voltar ao fluxo"})]}):o.jsx("span",{className:"dim",children:"nada foi criado"})}const sB=["setup","probe"],ax=["agentConfig","list"],lx="claude";function iB({onNext:e,onBack:t,onSkip:i}){const n=We(),a=Ne({queryKey:sB,queryFn:()=>ie.setup.probe.query(),refetchOnWindowFocus:!1,retry:!1}),c=Ne({queryKey:ax,queryFn:()=>ie.agentConfig.list.query()}),h=a.data,d=He({mutationFn:async()=>{var g,v;if(h===void 0)throw new Error("sem handshake não há o que salvar");const m=(g=c.data)==null?void 0:g.find(b=>b.transport==="acp"&&b.command===h.command);return m!==void 0?m:ie.agentConfig.create.mutate({name:lx,command:h.command,args:[...h.args],transport:"acp",adapterVersion:((v=h.agentInfo)==null?void 0:v.version)??null})},onSuccess:async m=>{await n.invalidateQueries({queryKey:ax}),e({agentConfigId:m.id,agentName:m.name,...m.adapterVersion===null?{}:{adapterVersion:m.adapterVersion}})}}),f=h===void 0?"":h.authMethods.length===0?"o adaptador não pediu autenticação: usou a credencial local":`o adaptador pede autenticação: ${h.authMethods.map(m=>m.name??m.id).join(", ")}`;return o.jsxs(vn,{eyebrow:`${El("handshake")??""} · conexão`,title:a.isError?"O adaptador não conectou":"Claude Code conectado",lede:a.isError?o.jsx(o.Fragment,{children:"Isto é o que o daemon tentou, e o que voltou."}):o.jsxs(o.Fragment,{children:["O daemon subiu o adaptador, trocou o ",o.jsx("code",{children:"initialize"})," e abriu uma sessão de teste. Isto é o que ele respondeu."]}),primary:{label:"Continuar",disabled:h===void 0,isPending:d.isPending,pending:"salvando…"},onSubmit:()=>d.mutate(),onBack:t,onSkip:i,extra:o.jsx(de,{variant:"ghost",disabled:a.isFetching,onClick:()=>void a.refetch(),children:a.isFetching?"testando…":"Testar de novo"}),hint:o.jsxs(o.Fragment,{children:["salvo como ",o.jsx("b",{children:lx})]}),children:[a.isPending&&o.jsx(di,{label:"subindo o adaptador"}),a.isError&&o.jsxs(Ae,{tone:"danger",children:[o.jsx("strong",{children:"O handshake falhou."})," ",a.error.message]}),h!==void 0&&o.jsxs(o.Fragment,{children:[o.jsxs(Fo,{label:"o que o adaptador respondeu",children:[o.jsx(Ys,{state:"ok",what:"processo",value:`${h.command} · subiu em ${h.timings.spawnMs} ms`,status:"ok"}),o.jsx(Ys,{state:"ok",what:"protocolo",value:`ACP v${h.protocolVersion}${h.agentInfo===null?" · o adaptador não declarou nome nem versão":` · ${h.agentInfo.name} ${h.agentInfo.version}`}`,status:"ok"}),o.jsx(Ys,{state:h.authMethods.length===0?"ok":"warn",what:"autenticação",value:f,status:h.authMethods.length===0?"ok":"pede"}),o.jsx(Ys,{state:"ok",what:"capacidades",value:h.capabilities.length===0?"nenhuma declarada":h.capabilities.join(" · "),status:"ok"}),o.jsx(Ys,{state:"ok",what:"sessão",value:`session/new devolveu ${h.acpSessionId} em ${h.timings.sessionMs} ms`,status:"ok"})]}),o.jsx(ia,{title:"o que o daemon mandou e o que voltou",children:o.jsxs("div",{className:"wire",children:[o.jsxs("span",{className:"wire__l",children:[o.jsx("span",{className:"wire__d wire__d--out","aria-hidden":"true",children:"→"}),o.jsxs("span",{className:"wire__c",children:["initialize ","{"," protocolVersion: ",h.protocolVersion,", clientCapabilities:"," ","{"," fs: ","{"," readTextFile, writeTextFile ","}",", terminal ","}"," ","}"]})]}),o.jsxs("span",{className:"wire__l",children:[o.jsx("span",{className:"wire__d wire__d--in","aria-hidden":"true",children:"←"}),o.jsxs("span",{className:"wire__c",children:["{"," protocolVersion: ",h.protocolVersion,", agentInfo:"," ",h.agentInfo===null?"ausente":`${h.agentInfo.name}@${h.agentInfo.version}`,", authMethods: [",h.authMethods.map(m=>m.id).join(", "),"] ","}"]})]}),o.jsxs("span",{className:"wire__l",children:[o.jsx("span",{className:"wire__d wire__d--out","aria-hidden":"true",children:"→"}),o.jsxs("span",{className:"wire__c",children:["session/new ","{"," cwd: ~/.lumem/probe, mcpServers: [] ","}"]})]}),o.jsxs("span",{className:"wire__l",children:[o.jsx("span",{className:"wire__d wire__d--in","aria-hidden":"true",children:"←"}),o.jsxs("span",{className:"wire__c",children:["{"," sessionId: ",h.acpSessionId,", modes: [",h.modes.join(", "),"] ","}"]})]}),o.jsxs("span",{className:"wire__l",children:[o.jsx("span",{className:"wire__d","aria-hidden":"true",children:"·"}),o.jsx("span",{className:"wire__c",children:"sessão de teste encerrada. Nenhum token consumido — não houve session/prompt."})]})]})}),o.jsxs(ia,{title:"como as próximas sessões nascem",children:[o.jsx(da,{variant:"recap",entries:[{label:"modelo",value:o.jsxs(o.Fragment,{children:["o que o agente oferecer ",o.jsx("span",{className:"dim",children:"— trocável em cada conversa"})]})},{label:"modo",value:h.currentMode===null?o.jsx("span",{className:"dim",children:"o padrão do agente"}):o.jsxs(o.Fragment,{children:[h.currentMode," ",o.jsx("span",{className:"dim",children:"— trocável em cada conversa"})]})},{label:"versão",value:h.agentInfo===null?o.jsx("span",{className:"dim",children:"o adaptador não declarou — vai pedir para digitar"}):h.agentInfo.version}]}),o.jsx("span",{className:"field__help",children:"Leitura, não escolha: o Lumem não tem onde guardar um padrão seu, e a conversa já escolhe modelo e modo por sessão — com o agente como autoridade sobre a lista."})]}),d.isError&&o.jsx(Ae,{tone:"danger",children:d.error.message})]})]})}const iC=["setup","preflight"];function rB({onNext:e,onBack:t,onSkip:i}){var h;const n=Ne({queryKey:iC,queryFn:()=>ie.setup.preflight.query(),refetchOnWindowFocus:!1}),a=((h=n.data)==null?void 0:h.checks)??[],c=a.some(d=>d.id==="git"&&d.state==="fail");return o.jsxs(vn,{eyebrow:El("machine"),title:"O que o Lumem precisa da sua máquina",lede:"Cinco verificações, todas locais. Nenhuma delas instala nada.",primary:{label:"Continuar"},onSubmit:e,onBack:t,onSkip:i,extra:o.jsx(de,{variant:"ghost",disabled:n.isFetching,onClick:()=>void n.refetch(),children:n.isFetching?"verificando…":"Verificar de novo"}),hint:o.jsxs(o.Fragment,{children:[o.jsx("b",{children:"esc"})," volta"]}),children:[n.isPending&&o.jsx(di,{label:"lendo a máquina"}),n.isError&&o.jsxs(Ae,{tone:"danger",children:[o.jsx("strong",{children:"O daemon não respondeu ao pré-voo."})," ",n.error.message]}),a.length>0&&o.jsx(Fo,{label:"o que o Lumem encontrou nesta máquina",children:a.map(d=>o.jsx(Ys,{state:n.isFetching?"running":d.state,what:d.label,value:d.value,status:n.isFetching?"lendo":nB(d.state),...d.fix===null?{}:{action:o.jsx(u_,{command:d.fix})}},d.id))}),c&&o.jsxs(Ae,{tone:"warning",children:["Git abaixo de ",o.jsx("strong",{children:"2.30"})," não serve: o Lumem usa ",o.jsx("code",{children:"git worktree"})," com"," ",o.jsx("code",{children:"--orphan"}),", e o comportamento muda antes dessa versão. Dá para continuar — a falha aparece na primeira worktree, com esta mesma frase."]})]})}function nB(e){return e==="ok"?"ok":e==="warn"?"atenção":"falha"}function rC(e,t=400){const[i,n]=j.useState(e);return j.useEffect(()=>{const a=setTimeout(()=>n(e),t);return()=>clearTimeout(a)},[e,t]),i}function aB({workspaceId:e,onNext:t,onBack:i,onSkip:n}){const a=We(),[c,h]=j.useState(""),d=rC(c.trim()),f=Ne({queryKey:["project","inspect",d],queryFn:()=>ie.project.inspect.query({path:d}),enabled:d.startsWith("/")||d.startsWith("~"),retry:!1}),m=He({mutationFn:()=>{if(e===void 0)throw new Error("sem workspace não há onde adicionar");return ie.project.add.mutate({workspaceId:e,path:d})},onSuccess:async b=>{e!==void 0&&await a.invalidateQueries({queryKey:ta(e)}),t({projectId:b.id,projectPath:b.path})}}),g=f.data,v=(g==null?void 0:g.alreadyRegistered)??null;return o.jsxs(vn,{eyebrow:El("project"),title:"Adicione o primeiro projeto",lede:o.jsxs(o.Fragment,{children:["Projeto é um repositório git que ",o.jsx("b",{children:"já existe"})," na sua máquina. O Lumem não move nem reescreve nada dele — só passa a criar worktrees a partir dele. Clonar de uma URL é outra história: rede, credencial e progresso são feature, não um campo."]}),primary:{label:v===null?"Adicionar projeto":"Usar o que já está aqui",disabled:g===void 0,isPending:m.isPending,pending:"validando…"},onSubmit:()=>{if(v!==null){t({projectId:v.id,projectPath:d});return}m.mutate()},onBack:i,onSkip:n,children:[o.jsxs("div",{className:"wizard__body",children:[o.jsx(Xt,{id:"setup-project-path",label:"Pasta do projeto — caminho absoluto",error:m.isError?m.error.message:f.isError&&d!==""?f.error.message:void 0,children:o.jsx(cs,{id:"setup-project-path",value:c,onChange:b=>h(b.target.value),placeholder:"/Users/voce/Documents/GitHub/lorebase",invalid:m.isError||f.isError,autoFocus:!0})}),o.jsxs("span",{className:"field__help",children:["Digitado, não escolhido: o daemon pode estar em outra máquina, e o seletor de arquivo do navegador entrega arquivo, não caminho de servidor. Ele valida na hora e diz"," ",o.jsx("b",{children:"qual"})," verificação falhou."]})]}),f.isFetching&&o.jsx(di,{label:"lendo o repositório"}),g!==void 0&&o.jsxs(o.Fragment,{children:[o.jsxs(ia,{title:"o que o Lumem leu daí",children:[o.jsxs(Fo,{label:"o que o repositório é",children:[o.jsx(Ys,{state:"ok",what:"repositório",value:`git · ${g.commits} commit(s) · HEAD em ${g.head.branch??"HEAD destacado"}${g.head.shortSha===null?"":` · ${g.head.shortSha}`}`,status:"ok"}),o.jsx(Ys,{state:g.origin===null?"warn":"ok",what:"remoto",value:g.origin??"sem origin — worktree funciona igual, push é que não",status:g.origin===null?"sem":"ok"}),o.jsx(Ys,{state:g.clean?"ok":"warn",what:"árvore",value:g.clean?"limpa · nada por commitar":`${g.changedFiles} arquivo(s) por commitar — o Lumem não toca neles`,status:g.clean?"limpa":"suja"}),o.jsx(Ys,{state:g.worktrees.length===0?"ok":"warn",what:"worktrees",value:g.worktrees.length===0?"nenhuma além do checkout principal":`${g.worktrees.length} já registrada(s) neste repositório, criada(s) fora do Lumem`,status:g.worktrees.length===0?"ok":"atenção"})]}),g.worktrees.length>0&&o.jsx("span",{className:"field__help",children:"Elas continuam onde estão. O Lumem não mexe em nenhuma delas, e não passa a listá-las — ver e administrar worktree criada fora daqui é outra feature."})]}),v!==null&&o.jsxs(Ae,{tone:"info",children:["Este caminho já é o projeto ",o.jsx("strong",{children:v.name})," aqui. Nada será criado de novo — o fluxo segue com ele."]}),o.jsxs(Ae,{tone:"info",children:["Seu checkout em ",o.jsx("code",{children:g.root})," continua sendo seu. O agente trabalha nas worktrees irmãs, fora dele."]})]})]})}function lB({projectId:e,agentConfigId:t,onNext:i,onBack:n,onSkip:a}){const c=We(),[h,d]=j.useState("primeira-tarefa"),[f,m]=j.useState(!0),g=rC(h.trim()),v=Ne({queryKey:["worktree","plan",e??"",g],queryFn:()=>ie.worktree.plan.query({projectId:e??"",name:g}),enabled:e!==void 0&&g!=="",retry:!1}),b=He({mutationFn:async()=>{if(e===void 0)throw new Error("sem projeto não há de onde cortar worktree");const x=await ie.worktree.create.mutate({projectId:e,name:g});let C;return f&&t!==void 0&&(C=(await ie.session.createAgent.mutate({scopeType:"worktree",scopeId:x.id,agentConfigId:t})).id),{worktree:x,sessionId:C}},onSuccess:async({worktree:x,sessionId:C})=>{e!==void 0&&await c.invalidateQueries({queryKey:sa(e)}),await c.invalidateQueries({queryKey:Hi("worktree",x.id)}),i({worktreeId:x.id,worktreeName:x.name,sessionOpened:C!==void 0,...C===void 0?{}:{sessionId:C}})}}),S=v.data;return o.jsxs(vn,{eyebrow:El("task"),title:"Toda tarefa vira uma worktree",lede:"É a ideia central: em vez de trocar de branch no seu checkout, cada tarefa ganha uma branch e uma pasta próprias. Você pode ter três agentes trabalhando ao mesmo tempo e nenhum encosta no que o outro está fazendo.",primary:{label:f&&t!==void 0?"Criar e abrir a conversa":"Criar a worktree",disabled:S===void 0||S.refusal!==null,isPending:b.isPending,pending:"criando…"},onSubmit:()=>b.mutate(),onBack:n,onSkip:a,children:[o.jsxs("div",{className:"wizard__body",children:[o.jsx(Xt,{id:"setup-task-name",label:"Nome da tarefa",error:b.isError?b.error.message:v.isError?v.error.message:(S==null?void 0:S.refusal)??void 0,children:o.jsx(cs,{id:"setup-task-name",value:h,onChange:x=>d(x.target.value),placeholder:"primeira-tarefa",invalid:b.isError||v.isError||(S==null?void 0:S.refusal)!=null,autoFocus:!0})}),o.jsx("span",{className:"field__help",children:"Vira o nome da branch e o nome da pasta."}),S!==void 0&&o.jsx(da,{variant:"recap",entries:[{label:"branch",value:o.jsxs(o.Fragment,{children:[S.branch," ",o.jsxs("span",{className:"dim",children:["← ",S.baseBranch,S.baseSha===null?" · sem commit ainda":` · ${S.baseSha}`]})]})},{label:"pasta",value:S.path},{label:"comando",value:S.command}]})]}),o.jsx(ia,{title:"o que abre junto",children:o.jsxs(d2,{label:"o que abre junto",children:[o.jsx(g0,{title:"Uma sessão do Claude",description:t===void 0?"Precisa de um agente ACP configurado — o passo 2 foi pulado.":"Abre a conversa já dentro da worktree.",glyph:o.jsx(Qe,{tone:"agent",children:"◆"}),selected:f&&t!==void 0,onSelect:()=>m(!0),disabled:t===void 0}),o.jsx(g0,{title:"Só a worktree",description:"Cria a pasta e a branch. Você abre sessão quando quiser.",glyph:o.jsx(Qe,{tone:"shell",children:"●"}),selected:!f||t===void 0,onSelect:()=>m(!1)})]})}),e===void 0&&o.jsxs(Ae,{tone:"warning",children:["O passo do projeto foi pulado, então não há de onde cortar uma worktree. Pule este também — a linha do projeto na sidebar ganha um ",o.jsx("b",{children:"+"})," quando você adicionar um."]})]})}function oB({daemonVersion:e,daemonUnreachable:t,onStart:i}){return o.jsx(vn,{title:t?"O daemon não está respondendo.":"O daemon já está rodando. Falta dizer com o que ele trabalha.",lede:t?o.jsxs(o.Fragment,{children:["O Lumem roda inteiro na sua máquina, e o daemon é a parte que tem os processos. Sem ele nada aqui responde — nem este fluxo. Suba ",o.jsx("code",{children:"pnpm dev"})," e volte."]}):o.jsxs(o.Fragment,{children:["O Lumem roda inteiro na sua máquina: um daemon local",e!==null&&o.jsxs(o.Fragment,{children:[" (v",e,")"]}),", seus repositórios onde já estão, e agentes que você mesmo instalou. Nada sai daqui — o que vai para a Anthropic é o que você escrever para o Claude, pela sua própria conta."]}),primary:{label:"Configurar em 5 passos",disabled:t},onSubmit:i,hint:o.jsx(o.Fragment,{children:"leva ~2 min"}),children:o.jsxs("div",{className:"tri",children:[o.jsxs("div",{className:"tri__i",children:[o.jsx("span",{className:"tri__g glyph glyph--worktree","aria-hidden":"true",children:"◇"}),o.jsx("span",{className:"tri__t",children:"Uma tarefa, uma worktree"}),o.jsx("span",{className:"tri__d",children:"Cada tarefa ganha branch e pasta próprias. O agente trabalha lá; seu checkout não é tocado."})]}),o.jsxs("div",{className:"tri__i",children:[o.jsx("span",{className:"tri__g glyph glyph--agent","aria-hidden":"true",children:"◆"}),o.jsx("span",{className:"tri__t",children:"Agente por ACP"}),o.jsx("span",{className:"tri__d",children:"Claude Code entra por protocolo, não por terminal simulado. Ferramenta, plano e permissão viram blocos."})]}),o.jsxs("div",{className:"tri__i",children:[o.jsx("span",{className:"tri__g glyph glyph--project","aria-hidden":"true",children:"■"}),o.jsx("span",{className:"tri__t",children:"Vários ao mesmo tempo"}),o.jsx("span",{className:"tri__d",children:"Sessões paralelas em worktrees diferentes, sem uma pisar na outra."})]})]})})}function cB({onNext:e,onBack:t}){var f;const i=We(),[n,a]=j.useState("pessoal"),c=Ne({queryKey:iC,queryFn:()=>ie.setup.preflight.query(),refetchOnWindowFocus:!1}),h=He({mutationFn:()=>ie.workspace.create.mutate({name:n.trim()}),onSuccess:async m=>{await i.invalidateQueries({queryKey:mr}),e({workspaceId:m.id,workspaceName:m.name})}}),d=(f=c.data)==null?void 0:f.paths;return o.jsxs(vn,{eyebrow:El("workspace"),title:"Crie seu primeiro workspace",lede:"Um workspace agrupa projetos e guarda as worktrees deles num lugar só. Quem trabalha em coisas separadas — pessoal e cliente, por exemplo — mantém dois, e eles nunca se veem.",primary:{label:"Criar workspace",disabled:n.trim()==="",isPending:h.isPending,pending:"criando…"},onSubmit:()=>h.mutate(),onBack:t,children:[o.jsxs("div",{className:"wizard__body",children:[o.jsx(Xt,{id:"setup-workspace-name",label:"Nome",error:h.isError?h.error.message:void 0,children:o.jsx(cs,{id:"setup-workspace-name",value:n,onChange:m=>a(m.target.value),placeholder:"pessoal",invalid:h.isError,autoFocus:!0})}),o.jsx("span",{className:"field__help",children:"Aparece no topo da coluna da esquerda. Dá para renomear depois."}),d!==void 0&&o.jsx(Xt,{id:"setup-workspaces-dir",label:"Onde o Lumem escreve — leitura",children:o.jsx(cs,{id:"setup-workspaces-dir",value:d.workspacesDir,readOnly:!0})}),o.jsxs("span",{className:"field__help",children:["Uma árvore por workspace, com o clone e as worktrees de cada projeto debaixo dele. Fora dos seus repositórios, de propósito: worktree dentro do checkout suja"," ",o.jsx("code",{children:"git status"})," e acaba commitada por acidente. Quem muda o lugar é a variável"," ",o.jsx("code",{children:"LUMEM_STATE_DIR"})," do daemon."]})]}),d!==void 0&&o.jsx(ia,{title:"o que este passo escreve no disco",children:o.jsx(da,{variant:"recap",entries:[{label:"registro",value:d.databasePath},{label:"workspaces",value:d.workspacesDir},{label:"conversas",value:o.jsxs(o.Fragment,{children:[d.transcriptsDir," ",o.jsx("span",{className:"dim",children:"— só local"})]})}]})})]})}const Nm=["welcome","machine","agent","handshake","workspace","project","task","done"];function uB({daemonVersion:e,daemonUnreachable:t,onFinish:i}){const[n,a]=j.useState("welcome"),[c,h]=j.useState({}),[d,f]=j.useState([]),m=Nm.indexOf(n),g=j.useCallback(N=>{a(N),window.scrollTo(0,0)},[]),v=j.useCallback(N=>{N!==void 0&&h(D=>({...D,...N}));const L=Nm[m+1];L!==void 0&&g(L)},[g,m]),b=j.useCallback(()=>{const N=Nm[m-1];N!==void 0&&g(N)},[g,m]),S=j.useCallback(()=>{if(f(N=>N.includes(n)?N:[...N,n]),n==="agent"){f(N=>N.includes("handshake")?N:[...N,"handshake"]),g("workspace");return}v()},[v,g,n]);j.useEffect(()=>{const N=L=>{L.key==="Escape"&&b()};return window.addEventListener("keydown",N),()=>window.removeEventListener("keydown",N)},[b]);const x=sC(n),C=j.useMemo(()=>x===null?null:o.jsx(m2,{steps:tC,current:x}),[x]);return o.jsx("div",{className:"flow",children:o.jsxs("div",{className:"wizard",children:[C,k()]})});function k(){switch(n){case"welcome":return o.jsx(oB,{daemonVersion:e,daemonUnreachable:t,onStart:()=>v()});case"machine":return o.jsx(rB,{onNext:()=>v(),onBack:b,onSkip:S});case"agent":return o.jsx(X5,{onNext:()=>v(),onBack:b,onSkip:S});case"handshake":return o.jsx(iB,{onNext:N=>v(N),onBack:b,onSkip:S});case"workspace":return o.jsx(cB,{onNext:N=>v(N),onBack:b});case"project":return o.jsx(aB,{workspaceId:c.workspaceId,onNext:N=>v(N),onBack:b,onSkip:S});case"task":return o.jsx(lB,{projectId:c.projectId,agentConfigId:c.agentConfigId,onNext:N=>v(N),onBack:b,onSkip:S});case"done":return o.jsx(eB,{result:c,skipped:d,onOpen:()=>i(c),onReview:()=>g("welcome")})}}}function hB(){var W;const e=We(),[t,i]=j.useState(null),[n,a]=j.useState(null),[c,h]=j.useState(void 0),[d,f]=j.useState(null),[m,g]=j.useState(!1),[v,b]=j.useState(null),S=Y5(),x=wA(),C=W5(),k=Ne({queryKey:["health"],queryFn:()=>ie.health.query(),refetchInterval:5e3,retry:!1}),N=Ne({queryKey:mr,queryFn:()=>ie.workspace.list.query()}),{activeId:L,select:D}=P5(N.data??[]);return j.useEffect(()=>{n!==null||!N.isSuccess||a(N.data.length===0)},[n,N.isSuccess,N.data]),I5(),o.jsx(t3,{children:o.jsx(UO,{children:o.jsxs("div",{className:"app",children:[o.jsx(Q5,{version:((W=k.data)==null?void 0:W.version)??null,unreachable:k.isError}),k.isError&&o.jsx("div",{className:"app__banner",children:o.jsxs(Ae,{tone:"danger",children:[o.jsx("strong",{children:"Daemon inacessível."})," Nada aqui responde até ele voltar. As sessões continuam rodando no servidor — o que caiu é a conexão com ele."]})}),M()]})})});function M(){var ae,le;if(N.isPending)return o.jsx("div",{className:"pane",children:o.jsx(di,{label:"conectando ao daemon"})});if(N.isError)return o.jsx("div",{className:"pane",children:o.jsx("p",{role:"alert",children:N.error.message})});if(n===null)return o.jsx("div",{className:"pane",children:o.jsx(di,{label:"conectando ao daemon"})});if(n||N.data.length===0||L===null)return o.jsx(uB,{daemonVersion:((ae=k.data)==null?void 0:ae.version)??null,daemonUnreachable:k.isError,onFinish:async H=>{await e.invalidateQueries({queryKey:mr}),H.workspaceId!==void 0&&D(H.workspaceId),h(H.sessionId),H.projectId!==void 0&&i({projectId:H.projectId,scope:H.worktreeId===void 0?{scopeType:"project",scopeId:H.projectId}:{scopeType:"worktree",scopeId:H.worktreeId}}),a(!1)}});const ee=N.data,I=((le=ee.find(H=>H.id===L))==null?void 0:le.name)??"";return o.jsxs(o.Fragment,{children:[o.jsx(G5,{fill:!0,right:Y(),rightWidth:x.width,sidebar:o.jsxs(o.Fragment,{children:[o.jsx(L5,{workspaces:ee,activeId:L,onSelect:H=>{D(H),i(null)}}),o.jsx(T5,{workspaceId:L,expansion:S,selection:{scopeType:(t==null?void 0:t.scope.scopeType)??null,scopeId:(t==null?void 0:t.scope.scopeId)??null},onSelect:(H,z)=>i({projectId:H,scope:z}),onAddProject:()=>g(!0),onCreateWorktree:b}),o.jsx("div",{className:"sidebar__foot",children:o.jsx(DT,{})})]}),children:Z(L,I)}),o.jsx(w2,{workspaceId:L,workspaceName:I,open:m,onClose:()=>g(!1),onRequestOpen:()=>g(!0),onAdded:H=>i({projectId:H,scope:{scopeType:"project",scopeId:H}})}),v!==null&&o.jsx(e3,{projectId:v.id,projectName:v.name,hasCommits:v.hasCommits,open:!0,onClose:()=>b(null),onCreated:H=>{S.expand(v.id),i({projectId:v.id,scope:{scopeType:"worktree",scopeId:H}}),b(null)}},v.id)]})}function Y(){if(!(t===null||!x.open))return o.jsx(JD,{scope:t.scope,onClose:x.toggle,onResize:x.setWidth,onAskAgent:(ee,I)=>{f({sessionId:ee,text:I}),h(ee)},dock:$5(C,x)},`${t.scope.scopeType}:${t.scope.scopeId}`)}function Z(ee,I){if(t===null)return o.jsx(EO,{workspaceId:ee,workspaceName:I,onRemoved:async()=>{await e.invalidateQueries({queryKey:mr})}},ee);const{projectId:ae,scope:le}=t;return le.scopeType==="worktree"?o.jsx(z5,{worktreeId:le.scopeId,projectId:ae,openSessionId:c,initialPrompt:d??void 0,workspaceName:I,filesPanel:x,onRemoved:()=>i({projectId:ae,scope:{scopeType:"project",scopeId:ae}}),onOpenWorkspace:()=>i(null),onOpenProject:()=>i({projectId:ae,scope:{scopeType:"project",scopeId:ae}})},le.scopeId):o.jsx(E5,{projectId:ae,workspaceId:ee,workspaceName:I,openSessionId:c,initialPrompt:d??void 0,filesPanel:x,onRemoved:()=>i(null),onOpenWorkspace:()=>i(null),onSelectWorktree:H=>i({projectId:ae,scope:{scopeType:"worktree",scopeId:H}})},ae)}}const dB={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};async function fB(e=dB){}function mB(){return new nE({defaultOptions:{queries:{retry:!1,refetchOnWindowFocus:!1}}})}const nC=document.getElementById("root");if(!nC)throw new Error("#root not found in index.html");const pB=vE.createRoot(nC);pB.render(o.jsx(j.StrictMode,{children:o.jsx(lE,{client:mB(),children:o.jsx(hB,{})})}));fB();export{SB as a,Bt as c,bB as s};
|
|
101
|
+
`),a=n.slice(Math.max(0,n.length-n5));return{kind:"text",lines:a,hidden:n.length-a.length}}function o5(e,t){const i=e.content.find(n=>n.type==="terminal");return(i==null?void 0:i.type)!=="terminal"?null:t.find(n=>n.terminalId===i.terminalId)??null}function c5(e){const t=e.locations[0];if(!t)return null;const i=t.path.lastIndexOf("/");return i===-1?{dir:"",name:t.path,full:t.path}:{dir:t.path.slice(0,i+1),name:t.path.slice(i+1),full:t.path}}function u5(e){const t=e.name;return t&&e.title.startsWith(`${t} `)?e.title.slice(t.length+1):e.title}function h5(e){const t=e.indexOf(" ");return t===-1?e:e.slice(0,t)}function d5(e){if(e<1e3)return`${e} ms`;const t=e/1e3;if(t<60)return`${t.toFixed(1).replace(".",",")} s`;const i=Math.floor(t/60),n=Math.round(t-i*60);return n===0?`${i} min`:`${i} min ${n} s`}const G1={conversation:P1(),session:null,failure:null};function f5(e,t){if(t.kind==="reset")return G1;const i=t.message;switch(i.type){case"attached":return{conversation:{...w3(i.transcript),mode:i.mode,configOptions:i.configOptions,modeOwner:i.modeOwner,lumemMode:i.lumemMode,lumemModeDefault:i.lumemModeDefault},session:{acpSessionId:i.acpSessionId,model:i.model,mode:i.mode,state:i.state,cwd:i.cwd},failure:null};case"event":return{...e,conversation:H1(e.conversation,{at:i.at,event:i.event})};case"error":return{...e,failure:{message:i.message,remedy:i.remedy??null,fatal:i.code==="ADAPTER_UNAVAILABLE"||i.code==="SESSION_NOT_FOUND"}}}}const m5=e=>ie.session.transcript.query({id:e});function p5({sessionId:e,agentName:t="agente",live:i=!0,connect:n=A3,load:a=m5,onResume:c,resuming:h=!1,active:d=!0,initialPrompt:f}){const[m,g]=j.useReducer(f5,G1),[v,b]=j.useState(""),[S,x]=j.useState(!1),[C,k]=j.useState(!1),[N,L]=j.useState(new Set),D=j.useRef(null),M=D_(),{conversation:Y,session:Z,failure:W}=m,ee=Y.pendingPermission,I=Z3(ee!==null),ae=!i||(Z==null?void 0:Z.state)==="exited";j.useEffect(()=>{if(g({kind:"reset"}),!i){let K=!0;return a(e).then(ne=>{K&&g({kind:"message",message:ne})}).catch(ne=>{K&&g({kind:"message",message:{type:"error",code:"INTERNAL",message:ne instanceof Error?ne.message:"não deu para ler a conversa"}})}),()=>{K=!1}}const T=n(e,{onMessage:K=>g({kind:"message",message:K})});return D.current=T,()=>{D.current=null,T.close()}},[e,i,n,a]),j.useEffect(()=>{M.setWaiting(e,ee!==null)},[M,e,ee]);const le=j.useRef(M.setWaiting);le.current=M.setWaiting,j.useEffect(()=>()=>{le.current(e,!1)},[e]);const H=Z!==null,z=!Y.streaming&&H;j.useEffect(()=>{z||(k(!1),x(!1))},[z]);const re=j.useCallback(()=>{var K;const T=v.trim();T===""||ee!==null||ae||!H||((K=D.current)==null||K.send({type:"prompt",text:T}),b(""))},[H,v,ee,ae]),se=j.useRef(!1);j.useEffect(()=>{var T;f===void 0||se.current||!H||ae||(se.current=!0,(T=D.current)==null||T.send({type:"prompt",text:f}))},[H,f,ae]);const A=t5(v),F=j.useCallback(()=>{var T;(T=D.current)==null||T.send({type:"cancel"})},[]),G=Y.streaming,Se=A!==null&&Y1(Y.commands,A).length>0;j.useEffect(()=>{if(!d||ae||!G||ee!==null||Se)return;const T=K=>{K.key==="Escape"&&(K.preventDefault(),F())};return window.addEventListener("keydown",T),()=>window.removeEventListener("keydown",T)},[d,ae,G,ee,Se,F]);const ke=b5([Y.turns.length,Y.streaming]);return o.jsxs("div",{className:"conv",children:[o.jsxs("div",{className:"conv__head",children:[o.jsxs("span",{className:"conv__who",children:[o.jsx(Qe,{tone:"agent",children:"◆"}),t]}),Z&&o.jsxs("span",{className:"conv__adapter",children:["sessão ",Z.acpSessionId.slice(0,8)," · ",Z.model," · ",Z.mode]}),o.jsx("span",{className:"spacer"}),ae&&c&&o.jsx(de,{variant:"primary",size:"sm",disabled:h,onClick:c,children:h?"retomando…":"↻ retomar"}),Y.streaming&&!ae&&o.jsxs(de,{variant:"ghost",size:"sm",onClick:F,children:["■ interromper ",o.jsx("span",{className:"kbd",children:"esc"})]})]}),o.jsxs("div",{className:"conv__scroll",ref:ke,children:[(W==null?void 0:W.fatal)&&o.jsxs("div",{className:"fail",children:[o.jsxs("div",{className:"fail__title",children:[o.jsx("span",{"aria-hidden":"true",children:"⚠"}),W.remedy?"o adaptador ACP não subiu":"a sessão não está disponível"]}),o.jsx("div",{className:"fail__body",children:W.message}),W.remedy&&o.jsx("div",{className:"fail__cmd",children:W.remedy})]}),W&&!W.fatal&&o.jsx(Ae,{tone:"danger",children:W.message}),Y.turns.length===0&&!W&&o.jsx(y5,{ready:Z!==null}),Y.plan&&o.jsx(e5,{entries:Y.plan}),Y.turns.map((T,K)=>T.role==="resumed"?o.jsx(_5,{at:T.at??null},K):o.jsx($3,{role:T.role,children:T.blocks.map((ne,$)=>o.jsx(v5,{block:ne,terminals:Y.terminals,streaming:Y.streaming&&K===Y.turns.length-1&&$===T.blocks.length-1,openThoughts:N,onToggleThought:ue=>L(_e=>{const Ee=new Set(_e);return Ee.has(ue)?Ee.delete(ue):Ee.add(ue),Ee}),onRespond:ue=>{var Ee;const _e=Y.pendingPermission;_e&&((Ee=D.current)==null||Ee.send({type:"permission_response",requestId:_e.requestId,optionId:ue}))},coach:I},$))},K)),ae&&Z&&o.jsx("div",{className:"daysep",children:"conversa encerrada"})]}),Y.usage&&o.jsx(kO,{usage:Y.usage}),o.jsxs("div",{className:"composer",children:[S&&z&&o.jsx(L3,{cwd:(Z==null?void 0:Z.cwd)??"",onCancel:()=>x(!1),onConfirm:()=>{var T;x(!1),(T=D.current)==null||T.send({type:"set_lumem_mode",mode:"free"})}}),o.jsxs("div",{className:"composer__box",children:[A!==null&&o.jsx(s5,{commands:Y.commands,query:A,onChoose:b,onDismiss:()=>b("")}),o.jsx("textarea",{className:`composer__in${v===""?" composer__in--empty":""}`,value:v,disabled:ee!==null||ae,placeholder:ae?"esta conversa terminou — retome para continuar":ee!==null?"responda o pedido de permissão para continuar":"escreva, ou / para comandos","aria-label":"mensagem para o agente",onChange:T=>b(T.target.value),onKeyDown:T=>{T.key==="Enter"&&(T.shiftKey||T.nativeEvent.isComposing||(T.preventDefault(),re()))}}),o.jsxs("div",{className:"composer__bar",children:[Y.modeOwner==="lumem"&&o.jsxs("span",{className:"config",children:[o.jsx(z3,{mode:Y.lumemMode,disabled:!z,readOnly:ae,open:C,onToggle:()=>k(!C)}),C&&z&&o.jsx(q3,{mode:Y.lumemMode,workspaceDefault:Y.lumemModeDefault,onSwitch:T=>{var K;k(!1),(K=D.current)==null||K.send({type:"set_lumem_mode",mode:T})},onFreeRequested:()=>{k(!1),x(!0)}})]}),o.jsx(M3,{mode:Y.mode,options:Y.configOptions,disabled:Y.streaming||ae,onSwitch:(T,K)=>{var ne;return(ne=D.current)==null?void 0:ne.send({type:"set_config",optionId:T,value:K})}}),o.jsx("span",{className:"spacer"}),o.jsxs(de,{variant:"primary",size:"sm",disabled:v.trim()===""||ee!==null||ae||!H,onClick:re,children:["enviar ",o.jsx("span",{className:"kbd",children:"⏎"})]})]})]})]})]})}function _5({at:e}){return o.jsxs("div",{className:"daysep",children:["retomada",e===null?"":` · ${g5(e)}`]})}function g5(e){return new Date(e).toLocaleString("pt-BR",{day:"2-digit",month:"short",hour:"2-digit",minute:"2-digit"})}function v5({block:e,terminals:t,streaming:i,openThoughts:n,onToggleThought:a,onRespond:c,coach:h}){switch(e.kind){case"message":return o.jsx(W3,{text:e.text,streaming:i});case"thought":return o.jsx(V3,{text:e.text,open:n.has(e.messageId),onToggle:()=>a(e.messageId),streaming:i});case"tool":return o.jsx(a5,{call:e.call,terminals:t});case"permission":return o.jsxs(o.Fragment,{children:[o.jsx(Y3,{request:e.request,onRespond:c}),h.show&&o.jsxs(f2,{title:"a primeira vez que isso aparece",onUnderstood:h.dismiss,onNever:h.never,children:["É assim que o Lumem te mantém no controle: o modo ",o.jsx("b",{children:"Auto"})," resolve sozinho o que é leitura e escrita dentro desta worktree, e para em tudo que sai disso — rede, comando global, arquivo fora dela. Para ver o plano antes de qualquer execução, troque para"," ",o.jsx("b",{children:"Plano"})," na barra acima."]})]});case"note":return o.jsx("div",{className:"unknown",children:e.text});case"meta":return o.jsx("div",{className:"meta",children:e.text})}}function y5({ready:e}){return o.jsxs("div",{className:"empty",children:[o.jsx("span",{className:"empty__glyph","aria-hidden":"true",children:"◆"}),o.jsx("span",{className:"empty__title",children:e?"sessão aberta, nada pedido ainda":"conectando…"}),e&&o.jsxs("span",{className:"empty__sub",children:["O adaptador subiu e o handshake passou sem consumir nada. O primeiro turno já entra com"," ",o.jsx("b",{children:"39,2k"})," de contexto — system prompt e ferramentas do próprio Claude Code, não do Lumem."]})]})}function b5(e){const t=j.useRef(null),i=j.useRef(!0),n=j.useCallback(a=>{if(t.current=a,!a)return;const c=()=>{i.current=a.scrollHeight-a.scrollTop-a.clientHeight<24};a.addEventListener("scroll",c)},[]);return j.useEffect(()=>{const a=t.current;a&&i.current&&(a.scrollTop=a.scrollHeight)},e),n}const S5=.2,x5=.8;function Q1({children:e,viewer:t}){const[i,n]=j.useState(.5),a=j.useRef(null),[c,h]=j.useState(!1),d=j.useCallback(f=>{var v;const m=(v=a.current)==null?void 0:v.getBoundingClientRect();if(m===void 0||m.width===0||!Number.isFinite(f))return;const g=(f-m.left)/m.width;n(Math.min(x5,Math.max(S5,g)))},[]);return j.useEffect(()=>{if(!c)return;const f=g=>{g.preventDefault(),d(g.clientX)},m=()=>h(!1);return window.addEventListener("pointermove",f),window.addEventListener("pointerup",m),()=>{window.removeEventListener("pointermove",f),window.removeEventListener("pointerup",m)}},[c,d]),t===null?o.jsx(o.Fragment,{children:e}):o.jsxs("div",{className:"split",ref:a,children:[o.jsx("div",{className:"split__side split__side--term",style:{flexGrow:i},children:e}),o.jsx("span",{className:"split__grip",role:"separator","aria-orientation":"vertical","aria-label":"largura do arquivo aberto",onPointerDown:f=>{f.preventDefault(),h(!0)}}),o.jsx("div",{className:"split__side split__side--viewer",style:{flexGrow:1-i},children:t})]})}function w5({tab:e,scope:t,cwd:i,active:n,viewer:a=null,onResume:c,resuming:h=!1,onStarted:d,initialPrompt:f}){const m=e.kind==="agent",g=e.transport==="acp",v=!g&&e.state!=="running";return o.jsx("div",{className:`pane ${g?"pane--conv":"pane--term"}`,role:"tabpanel",hidden:!n,"aria-label":v?`registro de ${e.label}`:`sessão ${e.label}`,children:o.jsxs(Q1,{viewer:a,children:[!g&&o.jsxs("div",{className:"term-head",children:[o.jsx(Qe,{tone:m?"agent":"shell",children:m?"◆":"●"}),o.jsxs("span",{className:"term-head__cmd",title:`${e.command} · cwd ${i}`,children:[e.command," ",o.jsxs("span",{className:"dim",children:["· cwd ",i]})]}),v?o.jsxs(o.Fragment,{children:[o.jsx(as,{tone:"neutral",children:"registro"}),o.jsxs(as,{tone:e.exitCode===0?"exited":"failed",dot:!0,children:["exited (",e.exitCode??"?",")"]})]}):o.jsx(as,{tone:"running",dot:!0,children:"running"})]}),v&&o.jsx(C5,{tab:e,scope:t,onStarted:d}),g?o.jsx(p5,{sessionId:e.sessionId,agentName:e.label,live:e.state==="running",active:n,...c?{onResume:c}:{},resuming:h,initialPrompt:f},e.sessionId):o.jsx(Ah,{sessionId:e.sessionId,readOnly:v},e.sessionId)]})})}function C5({tab:e,scope:t,onStarted:i}){const n=We(),a=He({mutationFn:()=>e.agentConfigId===null?ie.session.createShell.mutate(t):ie.session.createAgent.mutate({...t,agentConfigId:e.agentConfigId}),onSuccess:async c=>{await n.invalidateQueries({queryKey:Hi(t.scopeType,t.scopeId)}),i(c.id)}});return o.jsxs("div",{className:"term-note",children:[o.jsx(Ae,{tone:"info",actions:o.jsx(de,{size:"sm",variant:"default",disabled:a.isPending,onClick:()=>a.mutate(),children:"nova sessão igual"}),children:"Esta sessão encerrou. O que está abaixo é o registro do que ela imprimiu, somente leitura — o processo não existe mais e não há o que digitar."}),a.isError&&o.jsx(Ae,{tone:"danger",children:a.error.message})]})}function Yp({scope:e,crumb:t,checkout:i,context:n,filesPanel:a,cwd:c,openSessionId:h,initialPrompt:d}){const f=We(),{tabs:m,activeId:g,select:v,close:b,reopen:S,resume:x,resuming:C,sessions:k}=s3(e),N=D_(),L=y_(),D=j.useRef(!1);j.useEffect(()=>{h===void 0||D.current||m.some(I=>I.sessionId===h)&&(D.current=!0,v(h))},[h,m,v]);const M=K0(e.scopeType,e.scopeId,g);j.useEffect(()=>{L.setActiveTab(M)},[M,L.setActiveTab]);function Y(I){const ae=K0(e.scopeType,e.scopeId,I),le=L.fileFor(ae);return le===null?null:le.view==="patch"?o.jsx(S3,{scope:e,path:le.path,changeRef:le.ref??"worktree",onClose:()=>L.close(ae)}):o.jsx(m3,{scope:e,path:le.path,active:I===g,onClose:()=>L.close(ae)})}const Z=He({mutationFn:I=>ie.session.close.mutate({id:I}),onSuccess:()=>f.invalidateQueries({queryKey:Hi(e.scopeType,e.scopeId)})}),W=k.data??[],ee=new Set(m.map(I=>I.sessionId));return o.jsxs("section",{className:"scope",children:[o.jsx("div",{className:"scope__crumb",children:t}),o.jsx(p2,{label:`sessões de ${c}`,lead:o.jsx(y0,{label:i.name,glyph:i.glyph,active:g===null,onSelect:()=>v(null),...i.state!==void 0?{state:i.state}:{},...i.stateLabel!==void 0?{stateLabel:i.stateLabel}:{}}),action:o.jsx(y3,{scopeType:e.scopeType,scopeId:e.scopeId,onCreated:I=>v(I)}),end:o.jsx(_2,{label:"a coluna de arquivos",pressed:a.open,onToggle:a.toggle,children:"▤"}),children:m.map(I=>o.jsx(y0,{label:I.label,ordinal:I.ordinal,glyph:o.jsx(Qe,{tone:I.kind==="agent"?"agent":"shell",children:I.kind==="agent"?"◆":"●"}),state:N.isWaiting(I.sessionId)?"asking":I.state==="running"?"running":I.exitCode===0?"exited":"failed",note:I.state==="running"?void 0:"registro",active:g===I.sessionId,onSelect:()=>v(I.sessionId),onClose:()=>{I.state==="running"?Z.mutate(I.sessionId):b(I.sessionId)}},I.sessionId))}),o.jsx("div",{className:"pane",role:"tabpanel",hidden:g!==null,"aria-label":i.name,children:o.jsxs(Q1,{viewer:Y(null),children:[Z.isError&&o.jsx("div",{className:"detail__banner",children:o.jsx(Ae,{tone:"danger",children:Z.error.message})}),n,o.jsxs("section",{className:"section",children:[o.jsx(kh,{title:"Sessões",count:W.length===0?0:`${W.length} · ${W.filter(I=>I.state==="running").length} rodando`}),W.length===0?o.jsx("p",{className:"detail__hint",children:"nenhuma sessão aberta aqui"}):W.map(I=>{const ae=I.state==="running",le=ee.has(I.id);return o.jsx(hw,{name:I.agentName??I.scriptName??"shell",glyph:o.jsx(Qe,{tone:I.kind==="agent"?"agent":"shell",children:I.kind==="agent"?"◆":I.kind==="script"?"▶":"●"}),detail:I.command,state:ae?{label:"running",tone:"running"}:{label:`exited (${I.exitCode??"?"})`,tone:I.exitCode===0?"exited":"failed"},age:gh(I.createdAt),onSelect:le?()=>v(I.id):void 0,action:le?void 0:o.jsx(de,{size:"sm",variant:"ghost",onClick:()=>S(I.id),children:I.transport==="acp"?"reabrir":"ver registro"})},I.id)})]})]})}),m.map(I=>o.jsx(w5,{tab:I,scope:e,cwd:c,onStarted:v,active:g===I.sessionId,viewer:Y(I.sessionId),...I.transport==="acp"?{onResume:()=>x(I.sessionId)}:{},resuming:C===I.sessionId,initialPrompt:(d==null?void 0:d.sessionId)===I.sessionId?d.text:void 0},I.sessionId))]})}function j5({projectId:e}){var h,d;const[t,i]=j.useState("7d"),n=$T(e,t),a=[...(((h=n.data)==null?void 0:h.worktrees)??[]).map(f=>({id:f.worktreeId,name:f.name,tokens:f.tokens,cost:f.cost,currency:f.currency,turns:f.turns,kind:"worktree"}))],c=(d=n.data)==null?void 0:d.outside;return c!==void 0&&(c.turns>0||a.length>0)&&a.push({id:"__outside__",name:"direto no projeto",tokens:c.tokens,cost:c.cost,currency:c.currency,turns:c.turns,kind:"project",outside:!0}),o.jsxs("section",{className:"section",children:[o.jsx(kh,{title:"Consumo por worktree",aside:o.jsx("div",{className:"seg",role:"group","aria-label":"Janela de tempo do consumo do projeto",children:kw.map(f=>o.jsx("button",{type:"button",className:"seg__btn","aria-pressed":t===f.id,onClick:()=>i(f.id),children:f.label},f.id))})}),n.isError?o.jsx(Ae,{tone:"danger",children:n.error.message}):n.isPending?o.jsx("p",{className:"detail__hint",children:"somando o consumo…"}):a.length===0?o.jsx("p",{className:"detail__hint",children:"nada gasto ainda neste projeto"}):o.jsx(Aw,{rows:a})]})}function k5(e,t){if(t===null)return`remover ${e} da lista, e o registro das worktrees dele?`;if(t===0)return`remover ${e} da lista?`;const i=t===1?"1 worktree":`${t} worktrees`;return`remover ${e} da lista, e o registro de ${i}?`}function E5({projectId:e,workspaceId:t,workspaceName:i,onRemoved:n,onOpenWorkspace:a,onSelectWorktree:c,openSessionId:h,initialPrompt:d,filesPanel:f}){var Y,Z;const m=We(),g={scopeType:"project",scopeId:e},v=Ne({queryKey:["project","get",e],queryFn:()=>ie.project.get.query({id:e})}),b=Ne({queryKey:sa(e),queryFn:()=>ie.worktree.listByProject.query({projectId:e}),enabled:((Y=v.data)==null?void 0:Y.available)===!0}),[S,x]=j.useState(!1),C=He({mutationFn:()=>ie.project.remove.mutate({id:e}),onSuccess:async()=>{await m.invalidateQueries({queryKey:ta(t)}),n()}});if(S&&v.data)return o.jsx(N5,{project:v.data,worktrees:((Z=b.data)==null?void 0:Z.length)??null,pending:C.isPending,error:C.isError?C.error.message:null,onCancel:()=>{x(!1),C.reset()},onConfirm:()=>C.mutate()});if(v.isPending)return o.jsx("div",{className:"pane",children:o.jsx(di,{label:"carregando o projeto"})});if(!v.data)return o.jsx("div",{className:"pane",children:o.jsx("p",{role:"alert",children:"projeto não encontrado"})});const{name:k,path:N,defaultBranch:L,available:D}=v.data,M=b.data??[];return o.jsx(Yp,{scope:g,cwd:N,openSessionId:h,initialPrompt:d,filesPanel:f,crumb:o.jsxs("nav",{className:"crumb",children:[o.jsx("button",{type:"button",className:"crumb__up focus-ring",onClick:a,children:i}),o.jsx("span",{className:"crumb__sep","aria-hidden":"true",children:"/"}),k,o.jsx("span",{className:"crumb__sep","aria-hidden":"true",children:"/"}),o.jsx("span",{className:"crumb__here",children:"local"})]}),checkout:{name:"local",glyph:o.jsx(Qe,{tone:D?"project":"off",children:"▭"})},context:o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"detail__title",children:[o.jsxs("h2",{children:[o.jsx(Qe,{tone:D?"project":"off",children:"▭"})," local"]}),o.jsx("span",{className:"detail__kind",children:"checkout do projeto"}),o.jsx("span",{className:"actions__spacer"}),o.jsx(de,{variant:"ghost",size:"sm",onClick:()=>x(!0),disabled:C.isPending,children:C.isPending?"removendo…":"remover projeto"})]}),D?o.jsx("div",{className:"detail__banner",children:o.jsxs(Ae,{tone:"info",children:[o.jsx("strong",{children:"Este é o repositório em si, não uma worktree do Lumem."})," Remover o projeto tira o registro — o diretório e o que está dentro dele ficam no disco."]})}):o.jsx("div",{className:"detail__banner",children:o.jsxs(Ae,{tone:"danger",children:[o.jsxs("strong",{children:["O repositório não está mais em ",N,"."]})," As ações sobre ele ficam bloqueadas até que ele volte; o registro continua aqui."]})}),C.isError&&o.jsx("div",{className:"detail__banner",children:o.jsx(Ae,{tone:"danger",children:C.error.message})}),o.jsx(da,{entries:[{label:"branch base",value:o.jsxs(o.Fragment,{children:[o.jsx(as,{tone:"branch",dot:!0,children:L})," ",o.jsx("span",{className:"dim",children:"resolvida na adição"})]})},{label:"caminho",value:o.jsx(uw,{path:N})},...D?[{label:"worktrees",value:o.jsxs("span",{className:"dim",children:[M.length," ",M.length===1?"worktree":"worktrees"]})}]:[]]}),D&&o.jsxs(o.Fragment,{children:[o.jsx(j5,{projectId:e}),o.jsxs("section",{className:"section",children:[o.jsx(kh,{title:"Worktrees deste projeto",count:M.length}),M.length===0?o.jsx("p",{className:"detail__hint",children:"nenhuma worktree ainda"}):M.map(W=>o.jsx(hw,{name:W.name,glyph:o.jsx(Qe,{tone:W.state==="missing"?"warn":"worktree",children:W.state==="missing"?"⚠":"◇"}),detail:W.path,state:W.state==="missing"?{label:"ausente",tone:"missing"}:void 0,onSelect:()=>c(W.id)},W.id))]})]})]})})}function N5({project:e,worktrees:t,pending:i,error:n,onCancel:a,onConfirm:c}){return o.jsx("div",{className:"pane",children:o.jsxs("div",{className:"remove-confirm",role:"alertdialog","aria-label":"confirmar remoção",children:[e.managed?o.jsxs(o.Fragment,{children:[o.jsxs("h2",{className:"remove-confirm__title",children:["apagar ",e.name," do disco?"]}),o.jsxs("p",{className:"remove-confirm__body",children:["Este projeto foi clonado pelo Lumem. Remover tira do registro ",o.jsx("strong",{children:"e apaga o diretório"}),". Não dá para desfazer."]}),o.jsx("p",{className:"remove-confirm__path",children:e.path})]}):o.jsxs(o.Fragment,{children:[o.jsx("h2",{className:"remove-confirm__title",children:k5(e.name,t)}),o.jsxs("p",{className:"remove-confirm__body",children:["Este projeto aponta para um repositório ",o.jsx("strong",{children:"seu"}),". Sai da lista; o diretório fica exatamente onde está — o dele e o de cada worktree, com trabalho não commitado e tudo."]})]}),n!==null&&o.jsx(Ae,{tone:"danger",children:n}),o.jsxs("div",{className:"remove-confirm__actions",children:[o.jsx(de,{variant:e.managed?"danger":"primary",onClick:c,disabled:i,children:i?"removendo…":e.managed?"apagar":"remover"}),o.jsx(de,{variant:"ghost",onClick:a,children:"cancelar"})]})]})})}function T5(e){const t=Ne({queryKey:ta(e.workspaceId),queryFn:()=>ie.project.listByWorkspace.query({workspaceId:e.workspaceId})});return o.jsxs("div",{className:"tree","aria-label":"árvore de projetos",children:[o.jsxs("div",{className:"tree__head",children:[o.jsx("p",{className:"tree__label",children:"Projetos"}),o.jsx("button",{type:"button",className:"act","aria-label":"adicionar projeto",onClick:e.onAddProject,children:"+"})]}),i()]});function i(){if(t.isError)return o.jsx("p",{className:"tree__message",role:"alert",children:t.error.message});if(t.isPending)return o.jsx(di,{label:"carregando os projetos",widths:["80%","60%","70%"]});const n=t.data??[];return n.length===0?o.jsx(ms,{title:"Nenhum projeto aqui",children:"Aponte para a raiz de um repositório git no disco, ou cole uma URL para clonar."}):n.map(a=>o.jsx(O5,{project:a,...e},a.id))}}function O5({project:e,expansion:t,selection:i,onSelect:n,onCreateWorktree:a}){const c=t.isExpanded(e.id),h={scopeType:"project",scopeId:e.id},d=Ne({queryKey:sa(e.id),queryFn:()=>ie.worktree.listByProject.query({projectId:e.id}),enabled:e.available}),f=d.data??[],m=[h,...f.map(S=>({scopeType:"worktree",scopeId:S.id}))],g=w_(m),v=BO(e.available&&c?e.id:null),b=S=>(v.data??[]).find(x=>x.worktreeId===S);return o.jsxs(o.Fragment,{children:[o.jsx("div",{"data-kind":"project","data-state":e.available?"available":"missing",children:o.jsx(d_,{depth:0,emphasis:!0,label:e.name,glyph:o.jsx(Qe,{tone:e.available?"project":"off",children:"■"}),muted:!e.available,meta:e.available?void 0:"sem disco",count:!c&&g>0?g:void 0,expanded:c,onToggle:()=>t.toggle(e.id),reserveAction:!0,...e.available?{action:o.jsx("button",{type:"button",className:"row__act","aria-label":`nova worktree em ${e.name}`,onClick:()=>a(e),children:"+"})}:{},selected:!1,onSelect:()=>n(e.id,h)})}),c&&e.available&&o.jsxs(o.Fragment,{children:[o.jsx(A5,{projectId:e.id,selected:i.scopeType==="project"&&i.scopeId===e.id,onSelect:()=>n(e.id,h)}),d.isError&&o.jsx("p",{className:"tree__message",role:"alert",children:d.error.message}),f.map(S=>o.jsx(B5,{projectId:e.id,worktree:S,mark:b(S.id),selected:i.scopeType==="worktree"&&i.scopeId===S.id,onSelect:n},S.id))]})]})}function A5({projectId:e,selected:t,onSelect:i}){const n={scopeType:"project",scopeId:e},a=w_([n]);return o.jsx("div",{"data-kind":"local","data-state":"active",children:o.jsx(d_,{depth:1,label:"local",glyph:o.jsx(Qe,{tone:"project",children:"▭"}),meta:o.jsx(Z1,{scope:n}),count:a>0?a:void 0,selected:t,onSelect:i})})}function Z1({scope:e}){var a,c,h;const t=Uw(e),i=(a=t.data)==null?void 0:a.run.last,n=(c=t.data)==null?void 0:c.setup.last;if((i==null?void 0:i.running)===!0){const d=((h=t.data)==null?void 0:h.port)??null;return o.jsxs("span",{className:"runmark",children:[o.jsx("span",{className:"runmark__glyph",children:"▶"}),d===null?"run":`:${String(d.port)}`]})}return n&&!n.running&&n.exitCode!==0?o.jsx(o.Fragment,{children:"setup falhou"}):null}function R5(e){const t=[e.branch===e.name?null:e.branch,e.state==="missing"?"ausente":null].filter(i=>i!==null);return t.length===0?void 0:t.join(" · ")}function M5({mark:e}){return o.jsxs("span",{className:`prmark prmark--${e.verdict}`,children:[o.jsx("span",{className:"prmark__dot","aria-hidden":"true"}),"#",e.number,o.jsxs("span",{className:"sr-only",children:[" pull request ",D5[e.verdict]]})]})}const D5={ready:"pronta para merge",blocked:"bloqueada",pending:"verificando",draft:"em rascunho",merged:"mesclada",closed:"fechada sem merge"};function B5({projectId:e,worktree:t,mark:i,selected:n,onSelect:a}){const c=t.state==="missing",h={scopeType:"worktree",scopeId:t.id},d=w_([h]),f=D_(),m=x_(h),g=f.countIn((m.data??[]).map(v=>v.id));return o.jsx("div",{"data-kind":"worktree","data-state":t.state,children:o.jsx(d_,{depth:1,label:t.name,glyph:o.jsx(Qe,{tone:c?"warn":"worktree",children:c?"⚠":"◇"}),muted:c,meta:i!==void 0&&!c?o.jsx(M5,{mark:i}):R5(t)??(c?void 0:o.jsx(Z1,{scope:h}))??void 0,count:g>0?g:d>0?d:void 0,countTone:g>0?"asking":"running",selected:n,onSelect:()=>a(e,h)})})}function L5({workspaces:e,activeId:t,onSelect:i}){const n=We(),[a,c]=j.useState(!1),[h,d]=j.useState(""),f=He({mutationFn:g=>ie.workspace.create.mutate({name:g}),onSuccess:async g=>{await n.invalidateQueries({queryKey:mr}),i(g.id),c(!1),d("")}}),m=g=>{g.preventDefault(),h.trim()!==""&&f.mutate(h)};return o.jsxs("div",{className:"ws",children:[o.jsxs("div",{className:"ws__bar",children:[o.jsx("label",{className:"sr-only",htmlFor:"workspace-select",children:"Workspace"}),o.jsx("span",{className:"ws__glyph","aria-hidden":"true",children:"◈"}),o.jsx("select",{id:"workspace-select",className:"ws__select",value:t??"",onChange:g=>i(g.target.value),children:e.map(g=>o.jsx("option",{value:g.id,children:g.name},g.id))}),o.jsx("span",{className:"ws__caret","aria-hidden":"true",children:"▾"}),o.jsx(de,{size:"sm",variant:"ghost","aria-label":"novo workspace",title:"novo workspace",onClick:()=>c(!0),children:"+"})]}),a&&o.jsxs("form",{className:"ws__form",onSubmit:m,children:[o.jsx(Xt,{id:"new-workspace-name",label:"Nome do novo workspace",children:o.jsx(cs,{id:"new-workspace-name",value:h,onChange:g=>d(g.target.value),placeholder:"trabalho",autoFocus:!0})}),o.jsxs("div",{className:"ws__actions",children:[o.jsx(de,{type:"submit",variant:"primary",size:"sm",disabled:f.isPending||h.trim()==="",children:"criar"}),o.jsx(de,{size:"sm",variant:"ghost",onClick:()=>c(!1),children:"cancelar"})]})]}),f.isError&&o.jsx("p",{className:"ws__error",role:"alert",children:f.error.message})]})}function z5({worktreeId:e,projectId:t,workspaceName:i,onRemoved:n,onOpenWorkspace:a,onOpenProject:c,openSessionId:h,initialPrompt:d,filesPanel:f}){var z,re;const m=We(),[g,v]=j.useState(!1),b=Ne({queryKey:n_(e),queryFn:()=>ie.worktree.getDetail.query({id:e})}),S=(z=m.getQueryData(sa(t)))==null?void 0:z.find(se=>se.id===e),x=Ne({queryKey:["project","get",t],queryFn:()=>ie.project.get.query({id:t})}),C=He({mutationFn:se=>ie.worktree.remove.mutate({id:e,force:se}),onSuccess:async()=>{await m.invalidateQueries({queryKey:sa(t)}),n()}}),k={scopeType:"worktree",scopeId:e};function N(se,A){var F;return o.jsxs("nav",{className:"crumb",children:[o.jsx("button",{type:"button",className:"crumb__up focus-ring",onClick:a,children:i}),o.jsx("span",{className:"crumb__sep","aria-hidden":"true",children:"/"}),o.jsx("button",{type:"button",className:"crumb__up focus-ring",onClick:c,children:((F=x.data)==null?void 0:F.name)??"…"}),o.jsx("span",{className:"crumb__sep","aria-hidden":"true",children:"/"}),o.jsx("span",{className:"crumb__here",children:se}),A!==se&&o.jsx("span",{className:"crumb__branch",children:A})]})}if(b.isPending)return S===void 0?o.jsx("div",{className:"pane",children:o.jsx(di,{label:"carregando a worktree"})}):o.jsx(Yp,{scope:k,cwd:S.path,openSessionId:h,initialPrompt:d,filesPanel:f,crumb:N(S.name,S.branch),checkout:{name:S.name,glyph:o.jsx(Qe,{tone:"worktree",children:"◇"})},context:o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"detail__title",children:[o.jsxs("h2",{children:[o.jsx(Qe,{tone:"worktree",children:"◇"})," ",S.name]}),o.jsx("span",{className:"detail__kind",children:"worktree"})]}),o.jsx(di,{label:"carregando a worktree"})]})});if(b.isError)return o.jsx("div",{className:"pane",children:o.jsx(Ae,{tone:"danger",children:b.error.message})});const{name:L,branch:D,path:M,state:Y,present:Z,status:W,aheadBehind:ee,baseBranch:I,createdAt:ae}=b.data,le=!Z||Y==="missing",H=le||W===null||W.clean?null:W.changedFiles;return o.jsx(Yp,{scope:k,cwd:M,openSessionId:h,initialPrompt:d,filesPanel:f,crumb:N(L,D),checkout:{name:L,glyph:o.jsx(Qe,{tone:le?"warn":"worktree",children:le?"⚠":"◇"}),...H===null?{}:{state:"dirty",stateLabel:`árvore suja · ${H} ${H===1?"arquivo":"arquivos"}`}},context:o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"detail__title",children:[o.jsxs("h2",{children:[o.jsx(Qe,{tone:le?"warn":"worktree",children:le?"⚠":"◇"})," ",L]}),o.jsx("span",{className:"detail__kind",children:le?"worktree ausente":"worktree"}),o.jsx("span",{className:"actions__spacer"}),o.jsx(de,{variant:"ghost",size:"sm",onClick:()=>C.mutate(!1,{onError:()=>v(!0)}),disabled:C.isPending,children:C.isPending?"removendo…":"remover worktree"})]}),g&&o.jsx("div",{className:"detail__banner",children:o.jsx(Ae,{tone:"danger",actions:o.jsxs(o.Fragment,{children:[o.jsx(de,{size:"sm",variant:"danger",onClick:()=>C.mutate(!0),disabled:C.isPending,children:"remover mesmo assim"}),o.jsx(de,{size:"sm",variant:"ghost",onClick:()=>v(!1),children:"cancelar"})]}),children:((re=C.error)==null?void 0:re.message)??"isso descarta as alterações não salvas."})}),le&&o.jsx("div",{className:"detail__banner",children:o.jsxs(Ae,{tone:"warning",children:["O diretório não está em ",o.jsx("code",{children:M}),". Remover aqui só apaga o registro; a branch ",o.jsx("code",{children:D})," continua existindo."]})}),o.jsx(da,{entries:[{label:"branch",value:o.jsxs(o.Fragment,{children:[o.jsx(as,{tone:"branch",dot:!0,children:D})," ",o.jsxs("span",{className:"dim",children:["nasceu de ",I]})]})},...le?[]:[{label:`em relação a ${I}`,value:ee===null?"desconhecido":o.jsxs(o.Fragment,{children:[o.jsxs("span",{className:"ahead",children:["↑",ee.ahead]})," ",o.jsxs("span",{className:"behind",children:["↓",ee.behind]})," ",o.jsxs("span",{className:"dim",children:[ee.ahead," à frente, ",ee.behind," atrás"]})]})}],{label:"estado",value:le?o.jsx(as,{tone:"missing",dot:!0,children:"ausente do disco"}):W===null?o.jsx(as,{children:"estado desconhecido"}):W.clean?o.jsx(as,{tone:"clean",dot:!0,children:"limpa"}):o.jsxs(as,{tone:"dirty",dot:!0,children:["suja · ",W.changedFiles," ",W.changedFiles===1?"arquivo":"arquivos"]})},{label:"caminho",value:o.jsx(uw,{path:M})},...le?[]:[{label:"criada",value:o.jsx("span",{className:"dim",children:gh(ae)})}]]}),o.jsx("p",{className:"detail__hint",children:"a branch não é apagada"})]})})}const Gp="lumem.activeWorkspaceId";function q5(){try{return window.localStorage.getItem(Gp)}catch{return null}}function tx(e){try{e===null?window.localStorage.removeItem(Gp):window.localStorage.setItem(Gp,e)}catch{}}function P5(e){var c,h;const[t,i]=j.useState(q5),n=((c=e.find(d=>d.id===t))==null?void 0:c.id)??((h=e[0])==null?void 0:h.id)??null;j.useEffect(()=>{n!==t&&tx(n)},[n,t]);const a=j.useCallback(d=>{tx(d),i(d)},[]);return{activeId:n,select:a}}function H5(e,t){switch(t.type){case"workspace.changed":e.invalidateQueries({queryKey:mr});return;case"project.changed":e.invalidateQueries({queryKey:ta(t.workspaceId)}),e.invalidateQueries({queryKey:["project","get"]});return;case"worktree.changed":e.invalidateQueries({queryKey:sa(t.projectId)}),e.invalidateQueries({queryKey:["worktree"]}),e.invalidateQueries({queryKey:["files"]}),e.invalidateQueries({queryKey:["changes"]});return;case"pr.changed":e.invalidateQueries({queryKey:["pr"]});return;case"session.changed":e.invalidateQueries({queryKey:Hi(t.scopeType,t.scopeId)}),e.invalidateQueries({queryKey:["session"]});return}}function I5(){const e=We();j.useEffect(()=>{const t=ie.events.onChange.subscribe(void 0,{onData:i=>H5(e,i),onConnectionStateChange:i=>{i.state==="idle"&&e.invalidateQueries()}});return()=>t.unsubscribe()},[e])}const X1="lumem.runDock",J1=96;function U5(e=window.innerHeight){return L_(Math.round(e/2),e)}function F5(e=window.innerHeight){return Math.max(J1,e-160)}const sx=640;function L_(e,t=window.innerHeight){return Math.min(F5(t),Math.max(J1,Math.round(e)))}function K5(){const e={open:!0,height:U5()};try{const t=window.localStorage.getItem(X1);if(t===null)return e;const i=JSON.parse(t);if(typeof i!="object"||i===null)return e;const{open:n,height:a}=i;return{open:typeof n=="boolean"?n:e.open,height:typeof a=="number"?L_(a):e.height}}catch{return e}}function ix(e){try{window.localStorage.setItem(X1,JSON.stringify(e))}catch{}}function $5(e,t){return{...e,toggle:()=>{!e.open&&t.width<sx&&t.setWidth(sx),e.toggle()}}}function W5(){const[e,t]=j.useState(K5),[i,n]=j.useState(!1),a=j.useCallback(d=>{t(f=>{const m={...f,height:L_(d)};return ix(m),m})},[]),c=j.useCallback(()=>{t(d=>{const f={...d,open:!d.open};return ix(f),f})},[]);j.useEffect(()=>{if(!i)return;const d=m=>{m.preventDefault(),a(window.innerHeight-m.clientY)},f=()=>n(!1);return window.addEventListener("pointermove",d),window.addEventListener("pointerup",f),()=>{window.removeEventListener("pointermove",d),window.removeEventListener("pointerup",f)}},[i,a]);const h=j.useCallback(d=>{d.preventDefault(),n(!0)},[]);return{open:e.open,height:e.height,toggle:c,setHeight:a,beginResize:h}}const eC="lumem.collapsedNodes";function V5(){try{const e=window.localStorage.getItem(eC);if(e===null)return new Set;const t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(i=>typeof i=="string")):new Set}catch{return new Set}}function rx(e){try{window.localStorage.setItem(eC,JSON.stringify([...e]))}catch{}}function Y5(){const[e,t]=j.useState(V5),i=j.useCallback(c=>!e.has(c),[e]),n=j.useCallback(c=>{t(h=>{const d=new Set(h);return d.delete(c)||d.add(c),rx(d),d})},[]),a=j.useCallback(c=>{t(h=>{if(!h.has(c))return h;const d=new Set(h);return d.delete(c),rx(d),d})},[]);return{isExpanded:i,toggle:n,expand:a}}function G5({sidebar:e,children:t,fill:i=!1,right:n,rightWidth:a}){const c=n!==void 0&&a!==void 0?{"--right-width":`${a}px`}:void 0;return o.jsxs("div",{className:`app-shell${n!==void 0?" app-shell--right":""}`,style:c,children:[o.jsx("aside",{className:"app-shell__sidebar","aria-label":"navegação",children:e}),o.jsx("main",{className:`app-shell__main${i?" app-shell__main--fill":""}`,children:t}),n]})}function Q5({version:e,unreachable:t}){return o.jsxs("header",{className:"topbar",children:[o.jsxs("h1",{className:"wordmark",children:[o.jsx("span",{className:"wordmark__dot","aria-hidden":"true"}),"Lumem-OS"]}),o.jsx("span",{className:"topbar__spacer"}),t?o.jsxs("span",{className:"daemon daemon--off",role:"alert",children:[o.jsx("span",{className:"daemon__dot","aria-hidden":"true"}),"daemon inacessível"]}):e!==null&&o.jsxs("span",{className:"daemon",children:[o.jsx("span",{className:"daemon__dot","aria-hidden":"true"}),"daemon v",e]})]})}const tC=["máquina","agente","workspace","projeto","tarefa"],Z5={welcome:null,machine:0,agent:1,handshake:1,workspace:2,project:3,task:4,done:null};function sC(e){return Z5[e]}function El(e){const t=sC(e);return t===null?null:`passo ${t+1} de ${tC.length}`}function vn({eyebrow:e,title:t,lede:i,narrow:n,children:a,primary:c,onSubmit:h,onBack:d,onSkip:f,extra:m,hint:g}){const v=b=>{b.preventDefault(),!((c==null?void 0:c.disabled)===!0||(c==null?void 0:c.isPending)===!0)&&(h==null||h())};return o.jsx("form",{className:"wizard__form",onSubmit:v,children:o.jsx(g2,{...e===void 0?{}:{eyebrow:e},title:t,...i===void 0?{}:{lede:i},...n===void 0?{}:{narrow:n},footer:o.jsxs(o.Fragment,{children:[c!==void 0&&o.jsxs(de,{type:"submit",variant:"primary",disabled:c.disabled===!0||c.isPending===!0,children:[c.isPending===!0&&c.pending!==void 0?c.pending:c.label,c.isPending!==!0&&o.jsxs(o.Fragment,{children:[" ",o.jsx("span",{className:"kbd",children:"⏎"})]})]}),m,o.jsx("span",{className:"spacer"}),f!==void 0&&o.jsx(de,{variant:"ghost",onClick:f,children:"pular este passo"}),d!==void 0&&o.jsx(de,{variant:"ghost",onClick:d,children:"Voltar"}),g!==void 0&&o.jsx("span",{className:"hint",children:g})]}),children:a})})}const nx=["setup","agents"];function X5({onNext:e,onBack:t,onSkip:i}){var v;const n=We(),a=Ne({queryKey:nx,queryFn:()=>ie.setup.agents.query(),refetchOnWindowFocus:!1}),c=He({mutationFn:()=>ie.setup.installAdapter.mutate(),onSuccess:async()=>{await n.invalidateQueries({queryKey:nx})}}),h=(v=a.data)==null?void 0:v.adapters.find(b=>b.id===ST),d=h==null?void 0:h.adapter,f=(h==null?void 0:h.cli)??void 0,m=(h==null?void 0:h.apiKeyEnv)!==null&&(h==null?void 0:h.apiKeyEnv)!==void 0,g=(d==null?void 0:d.path)!=null;return o.jsxs(vn,{eyebrow:El("agent"),title:"Conecte o Claude Code",lede:o.jsxs(o.Fragment,{children:["O Lumem conversa com agentes por ",o.jsx("b",{children:"ACP"})," — o daemon sobe o adaptador como processo e troca mensagens por stdio. É o que faz ferramenta, plano e pedido de permissão chegarem como blocos, e não como texto rolando num terminal."]}),primary:{label:"Testar conexão",disabled:!g},onSubmit:e,onBack:t,onSkip:i,hint:g?void 0:o.jsx(o.Fragment,{children:"o botão libera quando o adaptador estiver no PATH"}),children:[a.isPending&&o.jsx(di,{label:"procurando os binários"}),a.isError&&o.jsxs(Ae,{tone:"danger",children:[o.jsx("strong",{children:"Não deu para procurar os binários."})," ",a.error.message]}),a.data!==void 0&&f!==void 0&&d!==void 0&&o.jsxs(o.Fragment,{children:[o.jsxs(ia,{title:"o que foi encontrado na sua máquina",children:[o.jsxs(Fo,{label:"binários",children:[o.jsx(Ys,{state:f.path===null?"warn":"ok",what:f.command,value:f.path===null?"não está no PATH — o adaptador precisa dele para trabalhar":`${f.version??f.versionNote??"versão não lida"} · ${f.path}`,status:f.path===null?"falta":"ok"}),o.jsx(Ys,{state:d.path===null?"fail":"ok",what:d.command,value:d.path===null?"adaptador ACP não está no PATH":`${d.version??d.versionNote??"versão não lida"} · ${d.path}`,status:d.path===null?"falta":"ok"})]}),d.path===null&&o.jsxs(o.Fragment,{children:[o.jsxs("span",{className:"field__help",children:["Nada para rodar no terminal: o Lumem instala o adaptador ",o.jsx("b",{children:"dentro da pasta dele"}),", numa versão fixa — nunca ",o.jsx("code",{children:"@latest"}),", para uma atualização de madrugada não mudar o comportamento do agente."]}),o.jsxs("div",{className:"wizard__acts",children:[o.jsx(de,{variant:"primary",size:"sm",disabled:c.isPending,onClick:()=>c.mutate(),children:c.isPending?"instalando…":"Instalar o adaptador"}),o.jsx(de,{variant:"ghost",size:"sm",disabled:a.isFetching,onClick:()=>void a.refetch(),children:a.isFetching?"verificando…":"Já instalei — verificar"})]}),c.isError&&o.jsxs(o.Fragment,{children:[o.jsx(Ae,{tone:"danger",children:c.error.message}),d.install!==null&&o.jsx(u_,{command:d.install})]})]}),d.managed&&o.jsxs("span",{className:"field__help",children:["Instalado pelo Lumem, na pasta dele — é esta cópia que o daemon executa, e não uma que esteja no seu ",o.jsx("code",{children:"PATH"}),"."]})]}),o.jsxs(ia,{title:"como o Claude vai se autenticar — o que foi encontrado",children:[o.jsx(Fo,{label:"credencial",children:o.jsx(Ys,{state:m?"ok":"warn",what:(h==null?void 0:h.apiKeyEnv)??__.apiKeyEnv[0]??"",value:m?"presente no ambiente do daemon — cobrança por token":"ausente — o adaptador vai usar a credencial local do Claude",status:m?"chave":"assinatura"})}),o.jsxs("span",{className:"field__help",children:["Não é escolha sua nem do Lumem: o adaptador usa a credencial que ",o.jsx("b",{children:"encontrar"}),". É o passo seguinte que confirma se ela vale — e ele confirma sem gastar token."]})]}),o.jsxs("div",{className:"adv",children:[o.jsx("span",{className:"adv__k",children:"avançado"}),o.jsxs("span",{className:"adv__v",children:["comando: ",d.command," · args: nenhum · env herdado do daemon"]})]}),o.jsxs(Ae,{tone:"info",children:["Qualquer agente que fale ACP entra depois em ",o.jsx("b",{children:"agentes"}),", no rodapé da sidebar — o Lumem não é preso ao Claude. Pular este passo também é legítimo: sem agente ACP, a sessão é um terminal."]})]})]})}const J5=["agentConfig","list"];function eB({result:e,skipped:t,onOpen:i,onReview:n}){var S,x,C;const[a,c,h,d,f]=Ix({queries:[{queryKey:mr,queryFn:()=>ie.workspace.list.query()},{queryKey:J5,queryFn:()=>ie.agentConfig.list.query(),enabled:e.agentConfigId!==void 0},{queryKey:["project","get",e.projectId??""],queryFn:()=>ie.project.get.query({id:e.projectId??""}),enabled:e.projectId!==void 0},{queryKey:n_(e.worktreeId??""),queryFn:()=>ie.worktree.getDetail.query({id:e.worktreeId??""}),enabled:e.worktreeId!==void 0},{queryKey:Hi("worktree",e.worktreeId??""),queryFn:()=>ie.session.listByScope.query({scopeType:"worktree",scopeId:e.worktreeId??""}),enabled:e.worktreeId!==void 0}]}),m=(S=a.data)==null?void 0:S.find(k=>k.id===e.workspaceId),g=(x=c.data)==null?void 0:x.find(k=>k.id===e.agentConfigId),v=(C=f.data)==null?void 0:C.find(k=>k.kind==="agent"),b=[{label:"workspace",value:(m==null?void 0:m.name)??o.jsx(tB,{})},{label:"agente",value:g===void 0?o.jsx(Em,{step:"agent",skipped:t,onReview:n}):o.jsxs(o.Fragment,{children:[g.command,g.adapterVersion!==null&&` @${g.adapterVersion}`," ",o.jsxs("span",{className:"dim",children:["— ",g.transport==="acp"?"conversa":"terminal",g.available?"":" · fora do PATH"]})]})},{label:"projeto",value:h.data==null?o.jsx(Em,{step:"project",skipped:t,onReview:n}):o.jsxs(o.Fragment,{children:[h.data.path,!h.data.available&&o.jsx("span",{className:"dim",children:" — não está no disco"})]})},{label:"worktree",value:d.data==null?o.jsx(Em,{step:"task",skipped:t,onReview:n}):o.jsxs(o.Fragment,{children:[d.data.path,!d.data.present&&o.jsx("span",{className:"dim",children:" — não está no disco"})]})},{label:"sessão",value:v===void 0?o.jsx("span",{className:"dim",children:"nenhuma — abra uma quando quiser"}):o.jsxs(o.Fragment,{children:[v.agentName??"agente"," ",o.jsxs("span",{className:"dim",children:["— ",v.state]})]})}];return o.jsxs(vn,{narrow:!0,eyebrow:"tudo configurado",title:"Pronto. O resto acontece dentro do produto.",lede:"Foi isto que passou a existir na sua máquina:",primary:{label:"Abrir o workspace"},onSubmit:i,extra:o.jsx(de,{variant:"ghost",onClick:n,children:"Revisar a configuração"}),children:[o.jsx(da,{variant:"recap",entries:b}),o.jsxs("div",{className:"keys",children:[o.jsxs("div",{className:"key",children:[o.jsx("span",{className:"key__k",children:"⏎"}),o.jsxs("span",{className:"key__d",children:["enviar o turno — ",o.jsx("span",{className:"dim",children:"⇧⏎ faz linha nova"})]})]}),o.jsxs("div",{className:"key",children:[o.jsx("span",{className:"key__k",children:"esquerda"}),o.jsx("span",{className:"key__d",children:"projetos e worktrees; o rodapé adiciona projeto e configura agente"})]}),o.jsxs("div",{className:"key",children:[o.jsx("span",{className:"key__k",children:"abas"}),o.jsxs("span",{className:"key__d",children:["uma por sessão viva, mais ",o.jsx("b",{children:"contexto"})," — a worktree em si"]})]}),o.jsxs("div",{className:"key",children:[o.jsx("span",{className:"key__k",children:"direita"}),o.jsx("span",{className:"key__d",children:"arquivos do checkout e o que mudou neles, ao lado da conversa"})]})]})]})}function tB(){return o.jsx("span",{className:"dim",children:"lendo do daemon…"})}function Em({step:e,skipped:t,onReview:i}){const n={agent:"no rodapé da sidebar, em agentes",project:"na sidebar, no + ao lado de Projetos",task:"na sidebar, no + da linha do projeto"};return t.includes(e)?o.jsxs("span",{className:"dim",children:["pulado — dá para fazer ",n[e],","," ",o.jsx("button",{type:"button",className:"key__link",onClick:i,children:"ou voltar ao fluxo"})]}):o.jsx("span",{className:"dim",children:"nada foi criado"})}const sB=["setup","probe"],ax=["agentConfig","list"],lx="claude";function iB({onNext:e,onBack:t,onSkip:i}){const n=We(),a=Ne({queryKey:sB,queryFn:()=>ie.setup.probe.query(),refetchOnWindowFocus:!1,retry:!1}),c=Ne({queryKey:ax,queryFn:()=>ie.agentConfig.list.query()}),h=a.data,d=He({mutationFn:async()=>{var g,v;if(h===void 0)throw new Error("sem handshake não há o que salvar");const m=(g=c.data)==null?void 0:g.find(b=>b.transport==="acp"&&b.command===h.command);return m!==void 0?m:ie.agentConfig.create.mutate({name:lx,command:h.command,args:[...h.args],transport:"acp",adapterVersion:((v=h.agentInfo)==null?void 0:v.version)??null})},onSuccess:async m=>{await n.invalidateQueries({queryKey:ax}),e({agentConfigId:m.id,agentName:m.name,...m.adapterVersion===null?{}:{adapterVersion:m.adapterVersion}})}}),f=h===void 0?"":h.authMethods.length===0?"o adaptador não pediu autenticação: usou a credencial local":`o adaptador pede autenticação: ${h.authMethods.map(m=>m.name??m.id).join(", ")}`;return o.jsxs(vn,{eyebrow:`${El("handshake")??""} · conexão`,title:a.isError?"O adaptador não conectou":"Claude Code conectado",lede:a.isError?o.jsx(o.Fragment,{children:"Isto é o que o daemon tentou, e o que voltou."}):o.jsxs(o.Fragment,{children:["O daemon subiu o adaptador, trocou o ",o.jsx("code",{children:"initialize"})," e abriu uma sessão de teste. Isto é o que ele respondeu."]}),primary:{label:"Continuar",disabled:h===void 0,isPending:d.isPending,pending:"salvando…"},onSubmit:()=>d.mutate(),onBack:t,onSkip:i,extra:o.jsx(de,{variant:"ghost",disabled:a.isFetching,onClick:()=>void a.refetch(),children:a.isFetching?"testando…":"Testar de novo"}),hint:o.jsxs(o.Fragment,{children:["salvo como ",o.jsx("b",{children:lx})]}),children:[a.isPending&&o.jsx(di,{label:"subindo o adaptador"}),a.isError&&o.jsxs(Ae,{tone:"danger",children:[o.jsx("strong",{children:"O handshake falhou."})," ",a.error.message]}),h!==void 0&&o.jsxs(o.Fragment,{children:[o.jsxs(Fo,{label:"o que o adaptador respondeu",children:[o.jsx(Ys,{state:"ok",what:"processo",value:`${h.command} · subiu em ${h.timings.spawnMs} ms`,status:"ok"}),o.jsx(Ys,{state:"ok",what:"protocolo",value:`ACP v${h.protocolVersion}${h.agentInfo===null?" · o adaptador não declarou nome nem versão":` · ${h.agentInfo.name} ${h.agentInfo.version}`}`,status:"ok"}),o.jsx(Ys,{state:h.authMethods.length===0?"ok":"warn",what:"autenticação",value:f,status:h.authMethods.length===0?"ok":"pede"}),o.jsx(Ys,{state:"ok",what:"capacidades",value:h.capabilities.length===0?"nenhuma declarada":h.capabilities.join(" · "),status:"ok"}),o.jsx(Ys,{state:"ok",what:"sessão",value:`session/new devolveu ${h.acpSessionId} em ${h.timings.sessionMs} ms`,status:"ok"})]}),o.jsx(ia,{title:"o que o daemon mandou e o que voltou",children:o.jsxs("div",{className:"wire",children:[o.jsxs("span",{className:"wire__l",children:[o.jsx("span",{className:"wire__d wire__d--out","aria-hidden":"true",children:"→"}),o.jsxs("span",{className:"wire__c",children:["initialize ","{"," protocolVersion: ",h.protocolVersion,", clientCapabilities:"," ","{"," fs: ","{"," readTextFile, writeTextFile ","}",", terminal ","}"," ","}"]})]}),o.jsxs("span",{className:"wire__l",children:[o.jsx("span",{className:"wire__d wire__d--in","aria-hidden":"true",children:"←"}),o.jsxs("span",{className:"wire__c",children:["{"," protocolVersion: ",h.protocolVersion,", agentInfo:"," ",h.agentInfo===null?"ausente":`${h.agentInfo.name}@${h.agentInfo.version}`,", authMethods: [",h.authMethods.map(m=>m.id).join(", "),"] ","}"]})]}),o.jsxs("span",{className:"wire__l",children:[o.jsx("span",{className:"wire__d wire__d--out","aria-hidden":"true",children:"→"}),o.jsxs("span",{className:"wire__c",children:["session/new ","{"," cwd: ~/.lumem/probe, mcpServers: [] ","}"]})]}),o.jsxs("span",{className:"wire__l",children:[o.jsx("span",{className:"wire__d wire__d--in","aria-hidden":"true",children:"←"}),o.jsxs("span",{className:"wire__c",children:["{"," sessionId: ",h.acpSessionId,", modes: [",h.modes.join(", "),"] ","}"]})]}),o.jsxs("span",{className:"wire__l",children:[o.jsx("span",{className:"wire__d","aria-hidden":"true",children:"·"}),o.jsx("span",{className:"wire__c",children:"sessão de teste encerrada. Nenhum token consumido — não houve session/prompt."})]})]})}),o.jsxs(ia,{title:"como as próximas sessões nascem",children:[o.jsx(da,{variant:"recap",entries:[{label:"modelo",value:o.jsxs(o.Fragment,{children:["o que o agente oferecer ",o.jsx("span",{className:"dim",children:"— trocável em cada conversa"})]})},{label:"modo",value:h.currentMode===null?o.jsx("span",{className:"dim",children:"o padrão do agente"}):o.jsxs(o.Fragment,{children:[h.currentMode," ",o.jsx("span",{className:"dim",children:"— trocável em cada conversa"})]})},{label:"versão",value:h.agentInfo===null?o.jsx("span",{className:"dim",children:"o adaptador não declarou — vai pedir para digitar"}):h.agentInfo.version}]}),o.jsx("span",{className:"field__help",children:"Leitura, não escolha: o Lumem não tem onde guardar um padrão seu, e a conversa já escolhe modelo e modo por sessão — com o agente como autoridade sobre a lista."})]}),d.isError&&o.jsx(Ae,{tone:"danger",children:d.error.message})]})]})}const iC=["setup","preflight"];function rB({onNext:e,onBack:t,onSkip:i}){var h;const n=Ne({queryKey:iC,queryFn:()=>ie.setup.preflight.query(),refetchOnWindowFocus:!1}),a=((h=n.data)==null?void 0:h.checks)??[],c=a.some(d=>d.id==="git"&&d.state==="fail");return o.jsxs(vn,{eyebrow:El("machine"),title:"O que o Lumem precisa da sua máquina",lede:"Cinco verificações, todas locais. Nenhuma delas instala nada.",primary:{label:"Continuar"},onSubmit:e,onBack:t,onSkip:i,extra:o.jsx(de,{variant:"ghost",disabled:n.isFetching,onClick:()=>void n.refetch(),children:n.isFetching?"verificando…":"Verificar de novo"}),hint:o.jsxs(o.Fragment,{children:[o.jsx("b",{children:"esc"})," volta"]}),children:[n.isPending&&o.jsx(di,{label:"lendo a máquina"}),n.isError&&o.jsxs(Ae,{tone:"danger",children:[o.jsx("strong",{children:"O daemon não respondeu ao pré-voo."})," ",n.error.message]}),a.length>0&&o.jsx(Fo,{label:"o que o Lumem encontrou nesta máquina",children:a.map(d=>o.jsx(Ys,{state:n.isFetching?"running":d.state,what:d.label,value:d.value,status:n.isFetching?"lendo":nB(d.state),...d.fix===null?{}:{action:o.jsx(u_,{command:d.fix})}},d.id))}),c&&o.jsxs(Ae,{tone:"warning",children:["Git abaixo de ",o.jsx("strong",{children:"2.30"})," não serve: o Lumem usa ",o.jsx("code",{children:"git worktree"})," com"," ",o.jsx("code",{children:"--orphan"}),", e o comportamento muda antes dessa versão. Dá para continuar — a falha aparece na primeira worktree, com esta mesma frase."]})]})}function nB(e){return e==="ok"?"ok":e==="warn"?"atenção":"falha"}function rC(e,t=400){const[i,n]=j.useState(e);return j.useEffect(()=>{const a=setTimeout(()=>n(e),t);return()=>clearTimeout(a)},[e,t]),i}function aB({workspaceId:e,onNext:t,onBack:i,onSkip:n}){const a=We(),[c,h]=j.useState(""),d=rC(c.trim()),f=Ne({queryKey:["project","inspect",d],queryFn:()=>ie.project.inspect.query({path:d}),enabled:d.startsWith("/")||d.startsWith("~"),retry:!1}),m=He({mutationFn:()=>{if(e===void 0)throw new Error("sem workspace não há onde adicionar");return ie.project.add.mutate({workspaceId:e,path:d})},onSuccess:async b=>{e!==void 0&&await a.invalidateQueries({queryKey:ta(e)}),t({projectId:b.id,projectPath:b.path})}}),g=f.data,v=(g==null?void 0:g.alreadyRegistered)??null;return o.jsxs(vn,{eyebrow:El("project"),title:"Adicione o primeiro projeto",lede:o.jsxs(o.Fragment,{children:["Projeto é um repositório git que ",o.jsx("b",{children:"já existe"})," na sua máquina. O Lumem não move nem reescreve nada dele — só passa a criar worktrees a partir dele. Clonar de uma URL é outra história: rede, credencial e progresso são feature, não um campo."]}),primary:{label:v===null?"Adicionar projeto":"Usar o que já está aqui",disabled:g===void 0,isPending:m.isPending,pending:"validando…"},onSubmit:()=>{if(v!==null){t({projectId:v.id,projectPath:d});return}m.mutate()},onBack:i,onSkip:n,children:[o.jsxs("div",{className:"wizard__body",children:[o.jsx(Xt,{id:"setup-project-path",label:"Pasta do projeto — caminho absoluto",error:m.isError?m.error.message:f.isError&&d!==""?f.error.message:void 0,children:o.jsx(cs,{id:"setup-project-path",value:c,onChange:b=>h(b.target.value),placeholder:"/Users/voce/Documents/GitHub/lorebase",invalid:m.isError||f.isError,autoFocus:!0})}),o.jsxs("span",{className:"field__help",children:["Digitado, não escolhido: o daemon pode estar em outra máquina, e o seletor de arquivo do navegador entrega arquivo, não caminho de servidor. Ele valida na hora e diz"," ",o.jsx("b",{children:"qual"})," verificação falhou."]})]}),f.isFetching&&o.jsx(di,{label:"lendo o repositório"}),g!==void 0&&o.jsxs(o.Fragment,{children:[o.jsxs(ia,{title:"o que o Lumem leu daí",children:[o.jsxs(Fo,{label:"o que o repositório é",children:[o.jsx(Ys,{state:"ok",what:"repositório",value:`git · ${g.commits} commit(s) · HEAD em ${g.head.branch??"HEAD destacado"}${g.head.shortSha===null?"":` · ${g.head.shortSha}`}`,status:"ok"}),o.jsx(Ys,{state:g.origin===null?"warn":"ok",what:"remoto",value:g.origin??"sem origin — worktree funciona igual, push é que não",status:g.origin===null?"sem":"ok"}),o.jsx(Ys,{state:g.clean?"ok":"warn",what:"árvore",value:g.clean?"limpa · nada por commitar":`${g.changedFiles} arquivo(s) por commitar — o Lumem não toca neles`,status:g.clean?"limpa":"suja"}),o.jsx(Ys,{state:g.worktrees.length===0?"ok":"warn",what:"worktrees",value:g.worktrees.length===0?"nenhuma além do checkout principal":`${g.worktrees.length} já registrada(s) neste repositório, criada(s) fora do Lumem`,status:g.worktrees.length===0?"ok":"atenção"})]}),g.worktrees.length>0&&o.jsx("span",{className:"field__help",children:"Elas continuam onde estão. O Lumem não mexe em nenhuma delas, e não passa a listá-las — ver e administrar worktree criada fora daqui é outra feature."})]}),v!==null&&o.jsxs(Ae,{tone:"info",children:["Este caminho já é o projeto ",o.jsx("strong",{children:v.name})," aqui. Nada será criado de novo — o fluxo segue com ele."]}),o.jsxs(Ae,{tone:"info",children:["Seu checkout em ",o.jsx("code",{children:g.root})," continua sendo seu. O agente trabalha nas worktrees irmãs, fora dele."]})]})]})}function lB({projectId:e,agentConfigId:t,onNext:i,onBack:n,onSkip:a}){const c=We(),[h,d]=j.useState("primeira-tarefa"),[f,m]=j.useState(!0),g=rC(h.trim()),v=Ne({queryKey:["worktree","plan",e??"",g],queryFn:()=>ie.worktree.plan.query({projectId:e??"",name:g}),enabled:e!==void 0&&g!=="",retry:!1}),b=He({mutationFn:async()=>{if(e===void 0)throw new Error("sem projeto não há de onde cortar worktree");const x=await ie.worktree.create.mutate({projectId:e,name:g});let C;return f&&t!==void 0&&(C=(await ie.session.createAgent.mutate({scopeType:"worktree",scopeId:x.id,agentConfigId:t})).id),{worktree:x,sessionId:C}},onSuccess:async({worktree:x,sessionId:C})=>{e!==void 0&&await c.invalidateQueries({queryKey:sa(e)}),await c.invalidateQueries({queryKey:Hi("worktree",x.id)}),i({worktreeId:x.id,worktreeName:x.name,sessionOpened:C!==void 0,...C===void 0?{}:{sessionId:C}})}}),S=v.data;return o.jsxs(vn,{eyebrow:El("task"),title:"Toda tarefa vira uma worktree",lede:"É a ideia central: em vez de trocar de branch no seu checkout, cada tarefa ganha uma branch e uma pasta próprias. Você pode ter três agentes trabalhando ao mesmo tempo e nenhum encosta no que o outro está fazendo.",primary:{label:f&&t!==void 0?"Criar e abrir a conversa":"Criar a worktree",disabled:S===void 0||S.refusal!==null,isPending:b.isPending,pending:"criando…"},onSubmit:()=>b.mutate(),onBack:n,onSkip:a,children:[o.jsxs("div",{className:"wizard__body",children:[o.jsx(Xt,{id:"setup-task-name",label:"Nome da tarefa",error:b.isError?b.error.message:v.isError?v.error.message:(S==null?void 0:S.refusal)??void 0,children:o.jsx(cs,{id:"setup-task-name",value:h,onChange:x=>d(x.target.value),placeholder:"primeira-tarefa",invalid:b.isError||v.isError||(S==null?void 0:S.refusal)!=null,autoFocus:!0})}),o.jsx("span",{className:"field__help",children:"Vira o nome da branch e o nome da pasta."}),S!==void 0&&o.jsx(da,{variant:"recap",entries:[{label:"branch",value:o.jsxs(o.Fragment,{children:[S.branch," ",o.jsxs("span",{className:"dim",children:["← ",S.baseBranch,S.baseSha===null?" · sem commit ainda":` · ${S.baseSha}`]})]})},{label:"pasta",value:S.path},{label:"comando",value:S.command}]})]}),o.jsx(ia,{title:"o que abre junto",children:o.jsxs(d2,{label:"o que abre junto",children:[o.jsx(g0,{title:"Uma sessão do Claude",description:t===void 0?"Precisa de um agente ACP configurado — o passo 2 foi pulado.":"Abre a conversa já dentro da worktree.",glyph:o.jsx(Qe,{tone:"agent",children:"◆"}),selected:f&&t!==void 0,onSelect:()=>m(!0),disabled:t===void 0}),o.jsx(g0,{title:"Só a worktree",description:"Cria a pasta e a branch. Você abre sessão quando quiser.",glyph:o.jsx(Qe,{tone:"shell",children:"●"}),selected:!f||t===void 0,onSelect:()=>m(!1)})]})}),e===void 0&&o.jsxs(Ae,{tone:"warning",children:["O passo do projeto foi pulado, então não há de onde cortar uma worktree. Pule este também — a linha do projeto na sidebar ganha um ",o.jsx("b",{children:"+"})," quando você adicionar um."]})]})}function oB({daemonVersion:e,daemonUnreachable:t,onStart:i}){return o.jsx(vn,{title:t?"O daemon não está respondendo.":"O daemon já está rodando. Falta dizer com o que ele trabalha.",lede:t?o.jsxs(o.Fragment,{children:["O Lumem roda inteiro na sua máquina, e o daemon é a parte que tem os processos. Sem ele nada aqui responde — nem este fluxo. Suba ",o.jsx("code",{children:"pnpm dev"})," e volte."]}):o.jsxs(o.Fragment,{children:["O Lumem roda inteiro na sua máquina: um daemon local",e!==null&&o.jsxs(o.Fragment,{children:[" (v",e,")"]}),", seus repositórios onde já estão, e agentes que você mesmo instalou. Nada sai daqui — o que vai para a Anthropic é o que você escrever para o Claude, pela sua própria conta."]}),primary:{label:"Configurar em 5 passos",disabled:t},onSubmit:i,hint:o.jsx(o.Fragment,{children:"leva ~2 min"}),children:o.jsxs("div",{className:"tri",children:[o.jsxs("div",{className:"tri__i",children:[o.jsx("span",{className:"tri__g glyph glyph--worktree","aria-hidden":"true",children:"◇"}),o.jsx("span",{className:"tri__t",children:"Uma tarefa, uma worktree"}),o.jsx("span",{className:"tri__d",children:"Cada tarefa ganha branch e pasta próprias. O agente trabalha lá; seu checkout não é tocado."})]}),o.jsxs("div",{className:"tri__i",children:[o.jsx("span",{className:"tri__g glyph glyph--agent","aria-hidden":"true",children:"◆"}),o.jsx("span",{className:"tri__t",children:"Agente por ACP"}),o.jsx("span",{className:"tri__d",children:"Claude Code entra por protocolo, não por terminal simulado. Ferramenta, plano e permissão viram blocos."})]}),o.jsxs("div",{className:"tri__i",children:[o.jsx("span",{className:"tri__g glyph glyph--project","aria-hidden":"true",children:"■"}),o.jsx("span",{className:"tri__t",children:"Vários ao mesmo tempo"}),o.jsx("span",{className:"tri__d",children:"Sessões paralelas em worktrees diferentes, sem uma pisar na outra."})]})]})})}function cB({onNext:e,onBack:t}){var f;const i=We(),[n,a]=j.useState("pessoal"),c=Ne({queryKey:iC,queryFn:()=>ie.setup.preflight.query(),refetchOnWindowFocus:!1}),h=He({mutationFn:()=>ie.workspace.create.mutate({name:n.trim()}),onSuccess:async m=>{await i.invalidateQueries({queryKey:mr}),e({workspaceId:m.id,workspaceName:m.name})}}),d=(f=c.data)==null?void 0:f.paths;return o.jsxs(vn,{eyebrow:El("workspace"),title:"Crie seu primeiro workspace",lede:"Um workspace agrupa projetos e guarda as worktrees deles num lugar só. Quem trabalha em coisas separadas — pessoal e cliente, por exemplo — mantém dois, e eles nunca se veem.",primary:{label:"Criar workspace",disabled:n.trim()==="",isPending:h.isPending,pending:"criando…"},onSubmit:()=>h.mutate(),onBack:t,children:[o.jsxs("div",{className:"wizard__body",children:[o.jsx(Xt,{id:"setup-workspace-name",label:"Nome",error:h.isError?h.error.message:void 0,children:o.jsx(cs,{id:"setup-workspace-name",value:n,onChange:m=>a(m.target.value),placeholder:"pessoal",invalid:h.isError,autoFocus:!0})}),o.jsx("span",{className:"field__help",children:"Aparece no topo da coluna da esquerda. Dá para renomear depois."}),d!==void 0&&o.jsx(Xt,{id:"setup-workspaces-dir",label:"Onde o Lumem escreve — leitura",children:o.jsx(cs,{id:"setup-workspaces-dir",value:d.workspacesDir,readOnly:!0})}),o.jsxs("span",{className:"field__help",children:["Uma árvore por workspace, com o clone e as worktrees de cada projeto debaixo dele. Fora dos seus repositórios, de propósito: worktree dentro do checkout suja"," ",o.jsx("code",{children:"git status"})," e acaba commitada por acidente. Quem muda o lugar é a variável"," ",o.jsx("code",{children:"LUMEM_STATE_DIR"})," do daemon."]})]}),d!==void 0&&o.jsx(ia,{title:"o que este passo escreve no disco",children:o.jsx(da,{variant:"recap",entries:[{label:"registro",value:d.databasePath},{label:"workspaces",value:d.workspacesDir},{label:"conversas",value:o.jsxs(o.Fragment,{children:[d.transcriptsDir," ",o.jsx("span",{className:"dim",children:"— só local"})]})}]})})]})}const Nm=["welcome","machine","agent","handshake","workspace","project","task","done"];function uB({daemonVersion:e,daemonUnreachable:t,onFinish:i}){const[n,a]=j.useState("welcome"),[c,h]=j.useState({}),[d,f]=j.useState([]),m=Nm.indexOf(n),g=j.useCallback(N=>{a(N),window.scrollTo(0,0)},[]),v=j.useCallback(N=>{N!==void 0&&h(D=>({...D,...N}));const L=Nm[m+1];L!==void 0&&g(L)},[g,m]),b=j.useCallback(()=>{const N=Nm[m-1];N!==void 0&&g(N)},[g,m]),S=j.useCallback(()=>{if(f(N=>N.includes(n)?N:[...N,n]),n==="agent"){f(N=>N.includes("handshake")?N:[...N,"handshake"]),g("workspace");return}v()},[v,g,n]);j.useEffect(()=>{const N=L=>{L.key==="Escape"&&b()};return window.addEventListener("keydown",N),()=>window.removeEventListener("keydown",N)},[b]);const x=sC(n),C=j.useMemo(()=>x===null?null:o.jsx(m2,{steps:tC,current:x}),[x]);return o.jsx("div",{className:"flow",children:o.jsxs("div",{className:"wizard",children:[C,k()]})});function k(){switch(n){case"welcome":return o.jsx(oB,{daemonVersion:e,daemonUnreachable:t,onStart:()=>v()});case"machine":return o.jsx(rB,{onNext:()=>v(),onBack:b,onSkip:S});case"agent":return o.jsx(X5,{onNext:()=>v(),onBack:b,onSkip:S});case"handshake":return o.jsx(iB,{onNext:N=>v(N),onBack:b,onSkip:S});case"workspace":return o.jsx(cB,{onNext:N=>v(N),onBack:b});case"project":return o.jsx(aB,{workspaceId:c.workspaceId,onNext:N=>v(N),onBack:b,onSkip:S});case"task":return o.jsx(lB,{projectId:c.projectId,agentConfigId:c.agentConfigId,onNext:N=>v(N),onBack:b,onSkip:S});case"done":return o.jsx(eB,{result:c,skipped:d,onOpen:()=>i(c),onReview:()=>g("welcome")})}}}function hB(){var W;const e=We(),[t,i]=j.useState(null),[n,a]=j.useState(null),[c,h]=j.useState(void 0),[d,f]=j.useState(null),[m,g]=j.useState(!1),[v,b]=j.useState(null),S=Y5(),x=wA(),C=W5(),k=Ne({queryKey:["health"],queryFn:()=>ie.health.query(),refetchInterval:5e3,retry:!1}),N=Ne({queryKey:mr,queryFn:()=>ie.workspace.list.query()}),{activeId:L,select:D}=P5(N.data??[]);return j.useEffect(()=>{n!==null||!N.isSuccess||a(N.data.length===0)},[n,N.isSuccess,N.data]),I5(),o.jsx(t3,{children:o.jsx(UO,{children:o.jsxs("div",{className:"app",children:[o.jsx(Q5,{version:((W=k.data)==null?void 0:W.version)??null,unreachable:k.isError}),k.isError&&o.jsx("div",{className:"app__banner",children:o.jsxs(Ae,{tone:"danger",children:[o.jsx("strong",{children:"Daemon inacessível."})," Nada aqui responde até ele voltar. As sessões continuam rodando no servidor — o que caiu é a conexão com ele."]})}),M()]})})});function M(){var ae,le;if(N.isPending)return o.jsx("div",{className:"pane",children:o.jsx(di,{label:"conectando ao daemon"})});if(N.isError)return o.jsx("div",{className:"pane",children:o.jsx("p",{role:"alert",children:N.error.message})});if(n===null)return o.jsx("div",{className:"pane",children:o.jsx(di,{label:"conectando ao daemon"})});if(n||N.data.length===0||L===null)return o.jsx(uB,{daemonVersion:((ae=k.data)==null?void 0:ae.version)??null,daemonUnreachable:k.isError,onFinish:async H=>{await e.invalidateQueries({queryKey:mr}),H.workspaceId!==void 0&&D(H.workspaceId),h(H.sessionId),H.projectId!==void 0&&i({projectId:H.projectId,scope:H.worktreeId===void 0?{scopeType:"project",scopeId:H.projectId}:{scopeType:"worktree",scopeId:H.worktreeId}}),a(!1)}});const ee=N.data,I=((le=ee.find(H=>H.id===L))==null?void 0:le.name)??"";return o.jsxs(o.Fragment,{children:[o.jsx(G5,{fill:!0,right:Y(),rightWidth:x.width,sidebar:o.jsxs(o.Fragment,{children:[o.jsx(L5,{workspaces:ee,activeId:L,onSelect:H=>{D(H),i(null)}}),o.jsx(T5,{workspaceId:L,expansion:S,selection:{scopeType:(t==null?void 0:t.scope.scopeType)??null,scopeId:(t==null?void 0:t.scope.scopeId)??null},onSelect:(H,z)=>i({projectId:H,scope:z}),onAddProject:()=>g(!0),onCreateWorktree:b}),o.jsx("div",{className:"sidebar__foot",children:o.jsx(DT,{})})]}),children:Z(L,I)}),o.jsx(w2,{workspaceId:L,workspaceName:I,open:m,onClose:()=>g(!1),onRequestOpen:()=>g(!0),onAdded:H=>i({projectId:H,scope:{scopeType:"project",scopeId:H}})}),v!==null&&o.jsx(e3,{projectId:v.id,projectName:v.name,hasCommits:v.hasCommits,open:!0,onClose:()=>b(null),onCreated:H=>{S.expand(v.id),i({projectId:v.id,scope:{scopeType:"worktree",scopeId:H}}),b(null)}},v.id)]})}function Y(){if(!(t===null||!x.open))return o.jsx(JD,{scope:t.scope,onClose:x.toggle,onResize:x.setWidth,onAskAgent:(ee,I)=>{f({sessionId:ee,text:I}),h(ee)},dock:$5(C,x)},`${t.scope.scopeType}:${t.scope.scopeId}`)}function Z(ee,I){if(t===null)return o.jsx(EO,{workspaceId:ee,workspaceName:I,onRemoved:async()=>{await e.invalidateQueries({queryKey:mr})}},ee);const{projectId:ae,scope:le}=t;return le.scopeType==="worktree"?o.jsx(z5,{worktreeId:le.scopeId,projectId:ae,openSessionId:c,initialPrompt:d??void 0,workspaceName:I,filesPanel:x,onRemoved:()=>i({projectId:ae,scope:{scopeType:"project",scopeId:ae}}),onOpenWorkspace:()=>i(null),onOpenProject:()=>i({projectId:ae,scope:{scopeType:"project",scopeId:ae}})},le.scopeId):o.jsx(E5,{projectId:ae,workspaceId:ee,workspaceName:I,openSessionId:c,initialPrompt:d??void 0,filesPanel:x,onRemoved:()=>i(null),onOpenWorkspace:()=>i(null),onSelectWorktree:H=>i({projectId:ae,scope:{scopeType:"worktree",scopeId:H}})},ae)}}const dB={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};async function fB(e=dB){}function mB(){return new nE({defaultOptions:{queries:{retry:!1,refetchOnWindowFocus:!1}}})}const nC=document.getElementById("root");if(!nC)throw new Error("#root not found in index.html");const pB=vE.createRoot(nC);pB.render(o.jsx(j.StrictMode,{children:o.jsx(lE,{client:mB(),children:o.jsx(hB,{})})}));fB();export{SB as a,Bt as c,bB as s};
|