@jpkme/diff-review 0.1.10 → 0.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/README.md +38 -15
  2. package/bin/diff-review.mjs +151 -34
  3. package/lib/acp-policy.mjs +136 -0
  4. package/lib/acp-policy.test.mjs +83 -0
  5. package/lib/acp-shell.mjs +379 -0
  6. package/lib/acp-shell.test.mjs +127 -0
  7. package/lib/acp.mjs +368 -0
  8. package/lib/acp.test.mjs +58 -0
  9. package/lib/agent-login.mjs +105 -0
  10. package/lib/agents.mjs +87 -14
  11. package/lib/agents.test.mjs +4 -6
  12. package/lib/check-report.mjs +29 -11
  13. package/lib/extract-cache.test.mjs +162 -0
  14. package/lib/extract.mjs +197 -1
  15. package/lib/model-label.mjs +263 -0
  16. package/lib/model-label.test.mjs +77 -0
  17. package/lib/models-cache.mjs +75 -0
  18. package/lib/models-cache.test.mjs +50 -0
  19. package/lib/output-name.mjs +8 -0
  20. package/lib/prompt.mjs +168 -22
  21. package/lib/review-dir.mjs +108 -0
  22. package/lib/review-meta.mjs +5 -3
  23. package/lib/review-meta.test.mjs +11 -0
  24. package/lib/review-prep.mjs +63 -0
  25. package/lib/validate.mjs +2 -2
  26. package/lib/wait-output.mjs +46 -23
  27. package/lib/wait-output.test.mjs +24 -1
  28. package/package.json +3 -1
  29. package/web/build/client/_app/immutable/assets/2.CKE12GwZ.css +1 -0
  30. package/web/build/client/_app/immutable/assets/2.CKE12GwZ.css.br +0 -0
  31. package/web/build/client/_app/immutable/assets/2.CKE12GwZ.css.gz +0 -0
  32. package/web/build/client/_app/immutable/assets/3.Dx3c_e7d.css +1 -0
  33. package/web/build/client/_app/immutable/assets/3.Dx3c_e7d.css.br +0 -0
  34. package/web/build/client/_app/immutable/assets/3.Dx3c_e7d.css.gz +0 -0
  35. package/web/build/client/_app/immutable/assets/storage.gDV-BhtT.css +1 -0
  36. package/web/build/client/_app/immutable/assets/storage.gDV-BhtT.css.br +0 -0
  37. package/web/build/client/_app/immutable/assets/storage.gDV-BhtT.css.gz +0 -0
  38. package/web/build/client/_app/immutable/chunks/{BBWAo_yW.js → B5ByWcPE.js} +2 -2
  39. package/web/build/client/_app/immutable/chunks/B5ByWcPE.js.br +0 -0
  40. package/web/build/client/_app/immutable/chunks/B5ByWcPE.js.gz +0 -0
  41. package/web/build/client/_app/immutable/chunks/CPyWH418.js +1 -0
  42. package/web/build/client/_app/immutable/chunks/CPyWH418.js.br +0 -0
  43. package/web/build/client/_app/immutable/chunks/CPyWH418.js.gz +0 -0
  44. package/web/build/client/_app/immutable/chunks/D8WOD_eS.js +3 -0
  45. package/web/build/client/_app/immutable/chunks/D8WOD_eS.js.br +0 -0
  46. package/web/build/client/_app/immutable/chunks/D8WOD_eS.js.gz +0 -0
  47. package/web/build/client/_app/immutable/chunks/NwkMsx0h.js +210 -0
  48. package/web/build/client/_app/immutable/chunks/NwkMsx0h.js.br +0 -0
  49. package/web/build/client/_app/immutable/chunks/NwkMsx0h.js.gz +0 -0
  50. package/web/build/client/_app/immutable/chunks/lUYXRDtZ.js +1 -0
  51. package/web/build/client/_app/immutable/chunks/lUYXRDtZ.js.br +0 -0
  52. package/web/build/client/_app/immutable/chunks/lUYXRDtZ.js.gz +0 -0
  53. package/web/build/client/_app/immutable/entry/app.BiBohpyO.js +2 -0
  54. package/web/build/client/_app/immutable/entry/app.BiBohpyO.js.br +0 -0
  55. package/web/build/client/_app/immutable/entry/app.BiBohpyO.js.gz +0 -0
  56. package/web/build/client/_app/immutable/entry/start.CjWbsiSO.js +1 -0
  57. package/web/build/client/_app/immutable/entry/start.CjWbsiSO.js.br +0 -0
  58. package/web/build/client/_app/immutable/entry/start.CjWbsiSO.js.gz +0 -0
  59. package/web/build/client/_app/immutable/nodes/0.Cak4ehiE.js +1 -0
  60. package/web/build/client/_app/immutable/nodes/0.Cak4ehiE.js.br +0 -0
  61. package/web/build/client/_app/immutable/nodes/0.Cak4ehiE.js.gz +0 -0
  62. package/web/build/client/_app/immutable/nodes/1.BzPXaJJj.js +1 -0
  63. package/web/build/client/_app/immutable/nodes/1.BzPXaJJj.js.br +2 -0
  64. package/web/build/client/_app/immutable/nodes/1.BzPXaJJj.js.gz +0 -0
  65. package/web/build/client/_app/immutable/nodes/2.Cp6Ttd_9.js +10 -0
  66. package/web/build/client/_app/immutable/nodes/2.Cp6Ttd_9.js.br +0 -0
  67. package/web/build/client/_app/immutable/nodes/2.Cp6Ttd_9.js.gz +0 -0
  68. package/web/build/client/_app/immutable/nodes/3.DLiDQm__.js +171 -0
  69. package/web/build/client/_app/immutable/nodes/3.DLiDQm__.js.br +0 -0
  70. package/web/build/client/_app/immutable/nodes/3.DLiDQm__.js.gz +0 -0
  71. package/web/build/client/_app/version.json +1 -1
  72. package/web/build/client/_app/version.json.br +0 -0
  73. package/web/build/client/_app/version.json.gz +0 -0
  74. package/web/build/handler.js +3 -3
  75. package/web/build/index.js +3 -3
  76. package/web/build/server/chunks/{0-SseDy__O.js → 0-BYok4D0n.js} +2 -2
  77. package/web/build/server/chunks/{0-SseDy__O.js.map → 0-BYok4D0n.js.map} +1 -1
  78. package/web/build/server/chunks/1-C7zcB0q0.js +7 -0
  79. package/web/build/server/chunks/1-C7zcB0q0.js.map +1 -0
  80. package/web/build/server/chunks/2-v6ejI_0-.js +7 -0
  81. package/web/build/server/chunks/2-v6ejI_0-.js.map +1 -0
  82. package/web/build/server/chunks/3-DAAmG6VX.js +7 -0
  83. package/web/build/server/chunks/3-DAAmG6VX.js.map +1 -0
  84. package/web/build/server/chunks/_server.ts-qYVrMYPB.js +62 -0
  85. package/web/build/server/chunks/_server.ts-qYVrMYPB.js.map +1 -0
  86. package/web/build/server/chunks/agent-sessions-DSqGavSn.js +2688 -0
  87. package/web/build/server/chunks/agent-sessions-DSqGavSn.js.map +1 -0
  88. package/web/build/server/chunks/{remote-1g4ayag-B67QMR_2.js → git-review-CpO_G8z8.js} +70 -704
  89. package/web/build/server/chunks/git-review-CpO_G8z8.js.map +1 -0
  90. package/web/build/server/chunks/{handler-B5P65tLk.js → handler-Di1wJQuU.js} +3 -3
  91. package/web/build/server/chunks/{handler-B5P65tLk.js.map → handler-Di1wJQuU.js.map} +1 -1
  92. package/web/build/server/chunks/hooks.server-BLOHobEK.js +42 -0
  93. package/web/build/server/chunks/hooks.server-BLOHobEK.js.map +1 -0
  94. package/web/build/server/chunks/{index.js-CL95e0Gl.js → index.js-yLYmrAWy.js} +3 -5
  95. package/web/build/server/chunks/index.js-yLYmrAWy.js.map +1 -0
  96. package/web/build/server/chunks/manifest.js-CXj8IIo3.js +58 -0
  97. package/web/build/server/chunks/manifest.js-CXj8IIo3.js.map +1 -0
  98. package/web/build/server/chunks/remote-1g4ayag-BiJeU0Pk.js +144 -0
  99. package/web/build/server/chunks/remote-1g4ayag-BiJeU0Pk.js.map +1 -0
  100. package/web/build/server/chunks/remote-wh6t6j-CHanXurm.js +162 -0
  101. package/web/build/server/chunks/remote-wh6t6j-CHanXurm.js.map +1 -0
  102. package/web/build/server/chunks/validate-BsTKyhsq.js +1073 -0
  103. package/web/build/server/chunks/validate-BsTKyhsq.js.map +1 -0
  104. package/web/build/client/_app/immutable/assets/2.CNFDEnjx.css +0 -1
  105. package/web/build/client/_app/immutable/assets/2.CNFDEnjx.css.br +0 -0
  106. package/web/build/client/_app/immutable/assets/2.CNFDEnjx.css.gz +0 -0
  107. package/web/build/client/_app/immutable/assets/3.PHTPLlZ7.css +0 -1
  108. package/web/build/client/_app/immutable/assets/3.PHTPLlZ7.css.br +0 -0
  109. package/web/build/client/_app/immutable/assets/3.PHTPLlZ7.css.gz +0 -0
  110. package/web/build/client/_app/immutable/assets/ThemeToggle.DcT79vPK.css +0 -1
  111. package/web/build/client/_app/immutable/assets/ThemeToggle.DcT79vPK.css.br +0 -0
  112. package/web/build/client/_app/immutable/assets/ThemeToggle.DcT79vPK.css.gz +0 -0
  113. package/web/build/client/_app/immutable/chunks/BBWAo_yW.js.br +0 -0
  114. package/web/build/client/_app/immutable/chunks/BBWAo_yW.js.gz +0 -0
  115. package/web/build/client/_app/immutable/chunks/Dur-vdUf.js +0 -3
  116. package/web/build/client/_app/immutable/chunks/Dur-vdUf.js.br +0 -0
  117. package/web/build/client/_app/immutable/chunks/Dur-vdUf.js.gz +0 -0
  118. package/web/build/client/_app/immutable/chunks/QdZF3nkf.js +0 -176
  119. package/web/build/client/_app/immutable/chunks/QdZF3nkf.js.br +0 -0
  120. package/web/build/client/_app/immutable/chunks/QdZF3nkf.js.gz +0 -0
  121. package/web/build/client/_app/immutable/chunks/tYeNsyIK.js +0 -1
  122. package/web/build/client/_app/immutable/chunks/tYeNsyIK.js.br +0 -0
  123. package/web/build/client/_app/immutable/chunks/tYeNsyIK.js.gz +0 -0
  124. package/web/build/client/_app/immutable/entry/app.Dce6uJU3.js +0 -2
  125. package/web/build/client/_app/immutable/entry/app.Dce6uJU3.js.br +0 -0
  126. package/web/build/client/_app/immutable/entry/app.Dce6uJU3.js.gz +0 -0
  127. package/web/build/client/_app/immutable/entry/start.DnBSC38l.js +0 -1
  128. package/web/build/client/_app/immutable/entry/start.DnBSC38l.js.br +0 -0
  129. package/web/build/client/_app/immutable/entry/start.DnBSC38l.js.gz +0 -0
  130. package/web/build/client/_app/immutable/nodes/0.s5xmjXoS.js +0 -1
  131. package/web/build/client/_app/immutable/nodes/0.s5xmjXoS.js.br +0 -1
  132. package/web/build/client/_app/immutable/nodes/0.s5xmjXoS.js.gz +0 -0
  133. package/web/build/client/_app/immutable/nodes/1.5Iv4ssDT.js +0 -1
  134. package/web/build/client/_app/immutable/nodes/1.5Iv4ssDT.js.br +0 -0
  135. package/web/build/client/_app/immutable/nodes/1.5Iv4ssDT.js.gz +0 -0
  136. package/web/build/client/_app/immutable/nodes/2.BomzYVBF.js +0 -66
  137. package/web/build/client/_app/immutable/nodes/2.BomzYVBF.js.br +0 -0
  138. package/web/build/client/_app/immutable/nodes/2.BomzYVBF.js.gz +0 -0
  139. package/web/build/client/_app/immutable/nodes/3.CeUs4lBX.js +0 -170
  140. package/web/build/client/_app/immutable/nodes/3.CeUs4lBX.js.br +0 -0
  141. package/web/build/client/_app/immutable/nodes/3.CeUs4lBX.js.gz +0 -0
  142. package/web/build/server/chunks/1-2OO2bb7H.js +0 -7
  143. package/web/build/server/chunks/1-2OO2bb7H.js.map +0 -1
  144. package/web/build/server/chunks/2-BJvuqKN6.js +0 -7
  145. package/web/build/server/chunks/2-BJvuqKN6.js.map +0 -1
  146. package/web/build/server/chunks/3-ZIl1rHef.js +0 -7
  147. package/web/build/server/chunks/3-ZIl1rHef.js.map +0 -1
  148. package/web/build/server/chunks/hooks.server-DERFlOe1.js +0 -14
  149. package/web/build/server/chunks/hooks.server-DERFlOe1.js.map +0 -1
  150. package/web/build/server/chunks/index.js-CL95e0Gl.js.map +0 -1
  151. package/web/build/server/chunks/manifest.js-uD_a0079.js +0 -50
  152. package/web/build/server/chunks/manifest.js-uD_a0079.js.map +0 -1
  153. package/web/build/server/chunks/remote-1g4ayag-B67QMR_2.js.map +0 -1
@@ -0,0 +1 @@
1
+ import{at as e}from"./D8WOD_eS.js";typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`),e();
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.Cak4ehiE.js","../chunks/D8WOD_eS.js","../chunks/lUYXRDtZ.js","../chunks/BZfQ9INH.js","../assets/0.CLQiq3Ed.css","../nodes/1.BzPXaJJj.js","../chunks/CPyWH418.js","../chunks/B5ByWcPE.js","../nodes/2.Cp6Ttd_9.js","../chunks/NwkMsx0h.js","../assets/storage.gDV-BhtT.css","../assets/2.CKE12GwZ.css","../nodes/3.DLiDQm__.js","../assets/3.Dx3c_e7d.css"])))=>i.map(i=>d[i]);
2
+ import{B as e,C as t,E as n,G as r,J as i,M as a,O as o,P as s,R as c,S as l,T as u,U as d,W as f,Z as p,_ as m,a as h,i as g,n as _,nt as v,q as y,r as b,rt as x,st as S,w as C,z as w}from"../chunks/D8WOD_eS.js";import"../chunks/lUYXRDtZ.js";var T=`modulepreload`,E=function(e,t){return new URL(e,t).href},D={},O=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=E(t,n),t=s(t),t in D)return;D[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:T,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},k={},A=n(`<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>`),j=n(`<!> <!>`,1);function M(n,b){x(b,!0);let T=g(b,`components`,23,()=>[]),E=g(b,`data_0`,3,null),D=g(b,`data_1`,3,null);e(()=>b.stores.page.set(b.page)),w(()=>{b.stores,b.page,b.constructors,T(),b.form,E(),D(),b.stores.page.notify()});let O=i(!1),k=i(!1),M=i(null);_(()=>{let e=b.stores.page.subscribe(()=>{a(O)&&(y(k,!0),s().then(()=>{y(M,document.title||`untitled page`,!0)}))});return y(O,!0),e});let N=p(()=>b.constructors[1]);var P=j(),F=f(P),I=e=>{let t=p(()=>b.constructors[0]);var n=u();m(f(n),()=>a(t),(e,t)=>{h(t(e,{get data(){return E()},get form(){return b.form},get params(){return b.page.params},children:(e,t)=>{var n=u();m(f(n),()=>a(N),(e,t)=>{h(t(e,{get data(){return D()},get form(){return b.form},get params(){return b.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),C(e,n)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),C(e,n)},L=e=>{let t=p(()=>b.constructors[0]);var n=u();m(f(n),()=>a(t),(e,t)=>{h(t(e,{get data(){return E()},get form(){return b.form},get params(){return b.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),C(e,n)};l(F,e=>{b.constructors[1]?e(I):e(L,-1)});var R=r(F,2),z=e=>{var n=A(),r=d(n),i=e=>{var n=o();c(()=>t(n,a(M))),C(e,n)};l(r,e=>{a(k)&&e(i)}),S(n),C(e,n)};l(R,e=>{a(O)&&e(z)}),C(n,P),v()}var N=b(M),P=[()=>O(()=>import(`../nodes/0.Cak4ehiE.js`),__vite__mapDeps([0,1,2,3,4]),import.meta.url),()=>O(()=>import(`../nodes/1.BzPXaJJj.js`),__vite__mapDeps([5,1,2,6,7]),import.meta.url),()=>O(()=>import(`../nodes/2.Cp6Ttd_9.js`),__vite__mapDeps([8,1,7,9,2,3,10,6,11]),import.meta.url),()=>O(()=>import(`../nodes/3.DLiDQm__.js`),__vite__mapDeps([12,1,7,9,2,3,10,13]),import.meta.url)],F=[],I={"/":[2],"/report/[id]":[3]},L={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},R=Object.fromEntries(Object.entries(L.transport).map(([e,t])=>[e,t.decode])),z=Object.fromEntries(Object.entries(L.transport).map(([e,t])=>[e,t.encode])),B=!1,V=(e,t)=>R[e](t),H=()=>O(()=>import(`../chunks/Bjy-W4x2.js`).then(e=>e.default),[],import.meta.url);export{V as decode,R as decoders,I as dictionary,z as encoders,H as get_error_template,B as hash,L as hooks,k as matchers,P as nodes,N as root,F as server_loads};
@@ -0,0 +1 @@
1
+ import{s as e,y as t}from"../chunks/B5ByWcPE.js";export{t as load_css,e as start};
@@ -0,0 +1 @@
1
+ import{A as e,C as t,E as n,G as r,I as i,Q as a,R as o,T as s,U as c,V as l,W as u,ft as d,g as f,k as p,lt as m,n as h,nt as g,rt as _,st as v,v as y,w as b}from"../chunks/D8WOD_eS.js";import"../chunks/lUYXRDtZ.js";import{n as x,t as S}from"../chunks/BZfQ9INH.js";var C=d({ssr:()=>!1}),w=n(`<div class="boot svelte-12qhfyh">Cargando…</div>`),T=n(`<div class="boot svelte-12qhfyh"><p> </p> <button type="button" class="svelte-12qhfyh">Reintentar</button></div>`);function E(n,d){_(d,!0),h(()=>{S(x())});var p=s();f(`12qhfyh`,e=>{i(()=>{l.title=`diff-review`})}),a(u(p),{pending:e=>{b(e,w())},failed:(n,i=m,a=m)=>{var s=T(),l=c(s),u=c(l,!0);v(l);var d=r(l,2);v(s),o(e=>t(u,e),[()=>i()instanceof Error?i().message:String(i())]),e(`click`,d,function(...e){a()?.apply(this,e)}),b(n,s)}},e=>{var t=s();y(u(t),()=>d.children),b(e,t)}),b(n,p),g()}p([`click`]);export{E as component,C as universal};
@@ -0,0 +1 @@
1
+ import{C as e,E as t,G as n,R as r,U as i,W as a,nt as o,rt as s,st as c,w as l}from"../chunks/D8WOD_eS.js";import"../chunks/lUYXRDtZ.js";import{t as u}from"../chunks/CPyWH418.js";var d=t(`<h1> </h1> <p> </p>`,1);function f(t,f){s(f,!0);var p=d(),m=a(p),h=i(m,!0);c(m);var g=n(m,2),_=i(g,!0);c(g),r(()=>{e(h,u.status),e(_,u.error?.message)}),l(t,p),o()}export{f as component};
@@ -0,0 +1,2 @@
1
+ w��*ݪ6���YĤ� "�?�ɿ@� ���hM
2
+ �Gqj���v&�*=g�X��,��ߦ4�KK�
@@ -0,0 +1,10 @@
1
+ import{$ as e,A as t,C as n,E as r,F as i,G as a,H as o,J as s,K as c,M as l,O as u,R as d,S as f,U as p,W as m,Z as h,a as g,b as _,c as v,d as y,f as ee,i as b,j as x,k as S,l as C,n as w,nt as te,ot as ne,p as T,q as E,rt as re,s as ie,st as D,u as ae,w as O,z as k}from"../chunks/D8WOD_eS.js";import{n as oe,o as se,x as ce}from"../chunks/B5ByWcPE.js";import{A as le,C as ue,D as de,F as fe,G as pe,H as me,J as he,K as ge,L as _e,M as A,O as ve,P as ye,Q as j,R as be,S as xe,U as M,V as Se,W as Ce,X as we,Y as Te,Z as Ee,_t as De,a as Oe,b as ke,f as Ae,h as je,i as Me,it as Ne,j as Pe,k as Fe,m as Ie,n as Le,nt as Re,ot as ze,q as Be,s as Ve,st as He,v as Ue,w as We,x as N,y as Ge,z as Ke}from"../chunks/NwkMsx0h.js";import"../chunks/lUYXRDtZ.js";import{t as qe}from"../chunks/CPyWH418.js";function P(e){let t=String(e||``).replace(/\\/g,`/`);t.includes(`/`)||(t=`**/${t}`);let n=``;for(let e=0;e<t.length;e++){let r=t[e];r===`*`&&t[e+1]===`*`?t[e+2]===`/`?(n+=`(?:.*/)?`,e+=2):(n+=`.*`,e+=1):r===`*`?n+=`[^/]*`:r===`?`?n+=`[^/]`:`+()[]{}|.^$`.includes(r)?n+=`\\${r}`:n+=r}return RegExp(`^${n}$`)}function Je(e){let t=e.files??[];if(!t.length)return[];let n=new Set((e.blocks??[]).map(e=>e.file)),r=(e.skipped??[]).map(e=>P(e.file));return t.map(e=>e.path).filter(e=>!n.has(e)&&!r.some(t=>t.test(e))).sort((e,t)=>e.localeCompare(t))}var F=r(`<div class="center svelte-18urbyr"><div class="spinner svelte-18urbyr" aria-hidden="true"></div> <p class="title svelte-18urbyr">Preparando el contexto</p> <p class="detail svelte-18urbyr"> </p> <p class="hint svelte-18urbyr">El diff se calcula acá y se le pasa al agente; no hace falta que lo arme él.</p></div>`),I=r(`<div class="center svelte-18urbyr"><div class="spinner svelte-18urbyr" aria-hidden="true"></div> <p class="title svelte-18urbyr">Abriendo el reporte…</p></div>`),Ye=r(`<p class="auth-note svelte-18urbyr"> </p>`),Xe=r(`<p class="auth-err svelte-18urbyr"> </p>`),Ze=r(`<div class="auth-actions svelte-18urbyr"><button type="button" class="primary svelte-18urbyr"> </button> <button type="button" class="ghost svelte-18urbyr">Nueva review</button></div> <!> <!>`,1),L=r(`<div class="auth-actions svelte-18urbyr"><button type="button" class="ghost svelte-18urbyr">Nueva review</button></div>`),Qe=r(`<div class="center fail svelte-18urbyr"><p class="title svelte-18urbyr"> </p> <p class="detail svelte-18urbyr"><!></p> <!></div>`),$e=r(`<p class="detail svelte-18urbyr"> </p>`),R=r(`<div class="launch-banner svelte-18urbyr"><div class="spinner sm svelte-18urbyr" aria-hidden="true"></div> <div><p class="title svelte-18urbyr"> </p> <!></div></div>`),et=r(`<div class="log-wrap svelte-18urbyr"><!> <!> <!></div>`),tt=r(`<section class="live svelte-18urbyr" aria-label="Review en vivo"><header class="bar svelte-18urbyr"><div class="brand svelte-18urbyr"><span class="dot svelte-18urbyr" aria-hidden="true"></span> <strong>diff-review</strong> <span> </span></div> <div class="actions svelte-18urbyr"><button type="button" class="ghost svelte-18urbyr"> </button> <!></div></header> <div class="body svelte-18urbyr"><aside class="card svelte-18urbyr" aria-label="Contexto de la review"><dl class="fields svelte-18urbyr"><div><dt class="svelte-18urbyr">Repo</dt> <dd class="svelte-18urbyr"> </dd></div> <div><dt class="svelte-18urbyr">Branch → Base</dt> <dd class="svelte-18urbyr"><span class="branch svelte-18urbyr"> </span> <span class="arrow svelte-18urbyr">→</span> </dd></div> <div><dt class="svelte-18urbyr">Agente</dt> <dd class="svelte-18urbyr"> </dd></div> <div><dt class="svelte-18urbyr">Modelo</dt> <dd class="svelte-18urbyr"> </dd></div> <div><dt class="svelte-18urbyr">Salida</dt> <dd class="svelte-18urbyr"> </dd></div></dl> <p class="card-note svelte-18urbyr">Cuando el resultado esté listo, se abrirá el reporte.</p></aside> <div class="stage svelte-18urbyr" role="status" aria-live="polite"><!></div></div></section>`);function nt(e,r){re(r,!0);let i=b(r,`busy`,3,!1),o=b(r,`gone`,3,!1),c=b(r,`error`,3,``),g=s(!1),_=s(``),y=s(``),ee=h(()=>r.events.some(e=>e.type===`user`||e.type===`tool`||e.type===`text`||e.type===`plan`||e.type===`permission`)),x=h(()=>r.events.some(e=>e.type===`tool`||e.type===`text`||e.type===`plan`)),S=h(()=>{let e=`diff`,t=`Calculando el diff…`;for(let n of r.events)n.type===`phase`&&(e=n.phase,n.detail&&(t=n.detail));return e===`diff`&&l(ee)&&(e=`agent`),{current:e,detail:t}}),C=h(()=>{for(let e=r.events.length-1;e>=0;e--){let t=r.events[e];if(t.type===`status`&&t.message)return t.message}return``}),w=h(()=>{for(let e=r.events.length-1;e>=0;e--){let t=r.events[e];if(t.type===`status`&&t.status===`error`)return t.message||c()||`Error del agente.`}return r.info.status===`error`?c()||r.info.statusMessage||`Error del agente.`:c()&&!i()?c():``}),ie=h(()=>/autenticad|authentication|login|no está autenticado/i.test(l(w))),ae=h(()=>l(ie)&&[`claude`,`copilot`,`codex`,`gemini`].includes(r.info.agentId)),k=h(()=>l(w)?`error`:o()?`gone`:r.events.some(e=>e.type===`review`&&e.ok)?`opening`:l(x)?`reviewing`:l(S).current===`agent`||/Lanzando/i.test(l(C))||l(ee)&&!l(x)?`launching`:`diff`),oe=h(()=>l(w)?`error`:i()?`en curso`:o()?`sesión cerrada`:`listo`),se=h(()=>l(w)?`error`:i()?`busy`:o()?`gone`:`idle`);async function ce(){E(g,!0),E(y,``),E(_,``);try{let e=await A({agentId:r.info.agentId});E(_,`Se abrió una terminal con ${e.display}. Cuando termines, cortá diff-review (Ctrl+C) y volvé a lanzar.`)}catch(e){E(y,e instanceof Error?e.message:String(e),!0)}finally{E(g,!1)}}let le=h(()=>{let e=r.info.repo.replace(/\\/g,`/`),t=e.split(`/`);return t.length>2?`…/${t.slice(-2).join(`/`)}`:e}),de=h(()=>r.events.filter(e=>!(e.type===`phase`||e.type===`user`&&e.mode===`review`))),fe=h(()=>/Lanzando/i.test(l(C))||/revisando/i.test(l(C))?l(C):`Lanzando ${r.info.agentLabel}…`),pe=h(()=>l(S).detail&&l(S).current===`agent`&&l(S).detail!==l(fe)?l(S).detail:``),me=h(()=>l(k)===`diff`||l(k)===`launching`||l(k)===`reviewing`||l(k)===`opening`||i());function he(){if(l(me)){r.info.id?r.oncancel():r.onreset();return}r.onreset()}var ge=tt(),_e=p(ge),ve=p(_e),ye=a(p(ve),4);let j;var be=p(ye,!0);D(ye),D(ve);var M=a(ve,2),Se=p(M),Ce=p(Se,!0);D(Se),ue(a(Se,2),{}),D(M),D(_e);var we=a(_e,2),Te=p(we),Ee=p(Te),De=p(Ee),Oe=a(p(De),2),ke=p(Oe,!0);D(Oe),D(De);var Ae=a(De,2),je=a(p(Ae),2),Me=p(je),Ne=p(Me,!0);D(Me);var Pe=a(Me,3);D(je),D(Ae);var Fe=a(Ae,2),Ie=a(p(Fe),2),Le=p(Ie,!0);D(Ie),D(Fe);var Re=a(Fe,2),ze=a(p(Re),2),Be=p(ze,!0);D(ze),D(Re);var Ve=a(Re,2),He=a(p(Ve),2),Ue=p(He,!0);D(He),D(Ve),D(Ee),ne(2),D(Te);var We=a(Te,2),Ge=p(We),Ke=e=>{var t=F(),r=a(p(t),4),i=p(r,!0);D(r),ne(2),D(t),d(()=>n(i,l(S).detail)),O(e,t)},qe=e=>{O(e,I())},P=e=>{var i=Qe(),o=p(i),s=p(o,!0);D(o);var c=a(o,2),h=p(c),v=e=>{var t=u();d(()=>n(t,l(w))),O(e,t)},ee=e=>{O(e,u(`La sesión del agente se cerró. Podés empezar una nueva review.`))};f(h,e=>{l(w)?e(v):e(ee,-1)}),D(c);var b=a(c,2),x=e=>{var i=Ze(),o=m(i),s=p(o),c=p(s,!0);D(s);var u=a(s,2);D(o);var h=a(o,2),v=e=>{var t=Ye(),r=p(t,!0);D(t),d(()=>n(r,l(_))),O(e,t)};f(h,e=>{l(_)&&e(v)});var ee=a(h,2),b=e=>{var t=Xe(),r=p(t,!0);D(t),d(()=>n(r,l(y))),O(e,t)};f(ee,e=>{l(y)&&e(b)}),d(()=>{s.disabled=l(g),n(c,l(g)?`Abriendo…`:`Abrir login de ${r.info.agentLabel}`)}),t(`click`,s,()=>void ce()),t(`click`,u,function(...e){r.onreset?.apply(this,e)}),O(e,i)},S=e=>{var n=L(),i=p(n);D(n),t(`click`,i,function(...e){r.onreset?.apply(this,e)}),O(e,n)};f(b,e=>{l(ae)?e(x):l(k)===`error`&&e(S,1)}),D(i),d(()=>n(s,l(k)===`gone`&&!l(w)?`Sesión cerrada`:l(ie)?`Autenticación requerida`:`Error`)),O(e,i)},Je=e=>{var t=et(),o=p(t),s=e=>{var t=R(),r=a(p(t),2),i=p(r),o=p(i,!0);D(i);var s=a(i,2),c=e=>{var t=$e(),r=p(t,!0);D(t),d(()=>n(r,l(pe))),O(e,t)};f(s,e=>{l(pe)&&e(c)}),D(r),D(t),d(()=>n(o,l(fe))),O(e,t)};f(o,e=>{l(k)===`launching`&&e(s)});var c=a(o,2),u=e=>{{let t=h(()=>!!r.info.sessionTrust);N(e,{get enabled(){return l(t)},get onchange(){return r.onsessiontrust}})}};f(c,e=>{r.info.id&&r.onsessiontrust&&e(u)}),xe(a(c,2),{get events(){return l(de)},get busy(){return i()},get sessionId(){return r.info.id},get onrespondpermission(){return r.onrespondpermission},get onretry(){return r.onretry}}),D(t),O(e,t)};f(Ge,e=>{l(k)===`diff`?e(Ke):l(k)===`opening`?e(qe,1):l(k)===`error`||l(k)===`gone`?e(P,2):e(Je,-1)}),D(We),D(we),D(ge),d(()=>{j=T(ye,1,`pill svelte-18urbyr`,null,j,{busy:l(se)===`busy`,error:l(se)===`error`,gone:l(se)===`gone`}),n(be,l(oe)),n(Ce,l(me)?`Cancelar`:`Nueva review`),v(Oe,`title`,r.info.repo),n(ke,l(le)),n(Ne,r.info.branch),n(Pe,` ${r.info.base??``}`),n(Le,r.info.agentLabel),n(Be,r.info.model||`por defecto`),v(He,`title`,r.info.outputFilename),n(Ue,r.info.outputFilename),v(We,`aria-busy`,i())}),t(`click`,Se,he),O(e,ge),te()}S([`click`]);function rt(e){let t=[];if(!e||typeof e!=`object`)return[`El archivo no contiene un objeto JSON.`];let n=e;if((typeof n.intent!=`string`||!n.intent.trim())&&t.push(`Falta "intent" (string).`),Array.isArray(n.groups)?n.groups.forEach((e,n)=>{if(!e||typeof e!=`object`){t.push(`groups[${n}]: no es un objeto.`);return}for(let r of[`id`,`kind`,`title`,`intent`])(typeof e[r]!=`string`||!e[r])&&t.push(`groups[${n}]: falta "${r}".`)}):t.push(`Falta "groups" (array).`),Array.isArray(n.blocks)?n.blocks.forEach((e,n)=>{if(!e||typeof e!=`object`){t.push(`blocks[${n}]: no es un objeto.`);return}for(let r of[`id`,`group`,`file`,`op`,`what`,`why`])(typeof e[r]!=`string`||!e[r])&&t.push(`blocks[${n}]: falta "${r}".`)}):t.push(`Falta "blocks" (array).`),Array.isArray(n.findings)?n.findings.forEach((e,n)=>{if(!e||typeof e!=`object`){t.push(`findings[${n}]: no es un objeto.`);return}let r=e;for(let e of[`id`,`class`,`severity`,`kind`,`file`,`what`,`fix`])(typeof r[e]!=`string`||!r[e])&&t.push(`findings[${n}]: falta "${e}".`);typeof r.blocking!=`boolean`&&t.push(`findings[${n}]: "blocking" debe ser booleano.`)}):t.push(`Falta "findings" (array).`),n.files!=null&&!Array.isArray(n.files)&&t.push(`"files" debe ser un array.`),n.skipped!=null&&!Array.isArray(n.skipped)&&t.push(`"skipped" debe ser un array.`),n.notes!=null&&!Array.isArray(n.notes)&&t.push(`"notes" debe ser un array.`),n.meta==null||typeof n.meta!=`object`||Array.isArray(n.meta))t.push(`Falta "meta" (objeto con "agent" y "model").`);else{let e=n.meta;e.source!=null&&e.source!==`local`&&e.source!==`url`&&t.push(`meta.source debe ser "local" o "url".`);for(let n of[`agent`,`model`])(typeof e[n]!=`string`||!e[n].trim())&&t.push(`Falta meta.${n}.`);for(let n of[`repo`,`branch`,`base`,`remoteUrl`,`generatedAt`])e[n]!=null&&typeof e[n]!=`string`&&t.push(`meta.${n} debe ser string.`)}return t}var it=r(`<div class="toast svelte-1uha8ag" role="status">Prompt copiado al portapapeles.</div>`),at=r(`<p class="cli-wait-detail svelte-1uha8ag"><code> </code></p>`),ot=r(`<div class="cli-wait svelte-1uha8ag" role="status" aria-live="polite" aria-busy="true"><div class="diff-spinner svelte-1uha8ag" aria-hidden="true"></div> <p class="cli-wait-title svelte-1uha8ag"> </p> <!> <button type="button" class="ghost svelte-1uha8ag">Volver al inicio</button></div>`),st=r(`URL del remote (https / SSH). Al cargar se listan branches con <code class="svelte-1uha8ag">ls-remote</code>; al soltar el
2
+ JSON se hace un clone shallow temporal para armar el diff. Requiere que el branch esté en el remote.`,1),ct=r(`<p class="error-line svelte-1uha8ag"> </p>`),lt=r(`<p class="ok-line svelte-1uha8ag"> </p>`),ut=r(`<button type="button" class="svelte-1uha8ag"> </button>`),dt=r(`<option> </option>`),ft=r(`<select class="svelte-1uha8ag"></select>`),pt=r(`<input type="text" placeholder="feature/PCM-14839" class="svelte-1uha8ag"/>`),mt=r(`<input type="text" placeholder="develop" class="svelte-1uha8ag"/>`),ht=r(`<button type="button">Lanzar agente</button>`),gt=r(`<small class="loading-models svelte-1uha8ag">· consultando modelos (puede tardar)…</small>`),_t=r(`<p class="error-line models-error svelte-1uha8ag"> <button type="button" class="linkish svelte-1uha8ag">Reintentar</button></p>`),vt=r(`<p class="hint-text models-error svelte-1uha8ag">El agente no listó modelos por ACP; usá el default o la lista fija. <button type="button" class="linkish svelte-1uha8ag">Reintentar</button></p>`),yt=r(`<p class="hint-text svelte-1uha8ag">Elegí un repo local y un branch distinto de la base.</p>`),bt=r(`<p class="hint-text svelte-1uha8ag">diff-review lanza el agente en el repo, muestra lo que va haciendo y abre el reporte cuando llega a
3
+ un resultado válido. Solo puede leer el repo, correr comandos de solo lectura (git, grep, cat…) y
4
+ escribir <code class="svelte-1uha8ag"> </code>.</p> <div class="row svelte-1uha8ag"><label class="field svelte-1uha8ag"><span class="svelte-1uha8ag">Agente</span> <!></label> <label class="field svelte-1uha8ag"><span class="svelte-1uha8ag">Modelo<!></span> <!></label></div> <!> <div class="actions svelte-1uha8ag"><button type="button" class="primary svelte-1uha8ag"> </button></div> <!> <!>`,1),xt=r(`<p class="hint-text svelte-1uha8ag">Copiá y pegalo en Claude, Cursor, Copilot u otro agente. El schema de salida va incluido.</p> <textarea class="svelte-1uha8ag"></textarea> <div class="actions svelte-1uha8ag"><button type="button" class="primary svelte-1uha8ag"> </button></div>`,1),St=r(`Con repo local, si el archivo aparece en <code class="svelte-1uha8ag">.diff-review/</code> (o en la raíz, formato viejo) lo
5
+ abrimos solos.`,1),Ct=r(`Con repo local, si el archivo está en <code class="svelte-1uha8ag">.diff-review/</code> (o en la raíz) podés abrirlo desde
6
+ acá.`,1),wt=r(`<span>abriendo…</span>`),Tt=r(`<span>(se abre solo; podés hacer click si no)</span>`),Et=r(`<span>(hacé click para abrirlo)</span>`),Dt=r(`<p class="detect-banner svelte-1uha8ag">Listo: <button type="button" class="file-link svelte-1uha8ag"> </button> <!></p>`),Ot=r(`<p class="detect-banner svelte-1uha8ag">Encontré otro reporte: <button type="button" class="file-link svelte-1uha8ag"> </button></p>`),kt=r(`<p class="detect-wait svelte-1uha8ag">Esperando <code> </code> en <code>.diff-review/</code>…</p>`),At=r(`<p class="detect-wait svelte-1uha8ag">Detecté el JSON — abriendo reporte…</p>`),jt=r(`<li> </li>`),Mt=r(`<div class="coverage-box svelte-1uha8ag"><div class="coverage-head svelte-1uha8ag"><strong class="svelte-1uha8ag"> </strong> <span class="svelte-1uha8ag">no aparecen ni en "blocks" ni en "skipped"</span></div> <details><summary class="svelte-1uha8ag">Ver los archivos</summary> <ul class="coverage-list svelte-1uha8ag"></ul></details> <p class="hint-text svelte-1uha8ag">Pedile al agente (chat del reporte, o este prompt pegado) que complete lo que falta: ya tiene el
7
+ diff en contexto. Después el JSON se reabre solo, o soltalo de nuevo.</p> <textarea readonly="" rows="7" class="svelte-1uha8ag"></textarea> <div class="coverage-actions svelte-1uha8ag"><button type="button" class="primary svelte-1uha8ag"> </button> <button type="button" class="svelte-1uha8ag">Abrir igual</button></div></div>`),Nt=r(`<div class="drop-errors svelte-1uha8ag"><strong class="svelte-1uha8ag">No se pudo abrir el reporte:</strong> <ul class="svelte-1uha8ag"></ul></div>`),Pt=r(`<span class="pill bad svelte-1uha8ag"> </span>`),Ft=r(`<span class="pill svelte-1uha8ag"> </span>`),It=r(`<span class="prov-agent svelte-1uha8ag"> </span>`),Lt=r(`<span class="prov-sep svelte-1uha8ag">·</span>`),Rt=r(`<span class="prov-model svelte-1uha8ag"> </span>`),zt=r(`<span class="report-prov svelte-1uha8ag"><!> <!> <!></span>`),Bt=r(`<p class="report-intent svelte-1uha8ag"> </p>`),Vt=r(`<div class="report-menu svelte-1uha8ag" role="menu" tabindex="-1"><button type="button" class="menu-item danger svelte-1uha8ag" role="menuitem">Eliminar…</button></div>`),Ht=r(`<li class="report-item svelte-1uha8ag"><a class="report-card svelte-1uha8ag"><span class="report-top svelte-1uha8ag"><strong class="svelte-1uha8ag"> </strong> <span class="when svelte-1uha8ag"> </span></span> <span class="report-meta svelte-1uha8ag"><span class="report-base svelte-1uha8ag"><span class="base-arrow svelte-1uha8ag" aria-hidden="true">→</span> </span> <span class="report-counts svelte-1uha8ag"><span class="pill svelte-1uha8ag"> </span> <!> <!></span></span> <!> <!></a> <div class="report-actions svelte-1uha8ag"><button type="button" class="kebab svelte-1uha8ag" title="Más acciones" aria-haspopup="menu"><svg viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><circle cx="8" cy="3.5" r="1.25" fill="currentColor"></circle><circle cx="8" cy="8" r="1.25" fill="currentColor"></circle><circle cx="8" cy="12.5" r="1.25" fill="currentColor"></circle></svg></button> <!></div></li>`),Ut=r(`<ul class="report-list svelte-1uha8ag"></ul>`),Wt=r(`<p class="hint-text svelte-1uha8ag">Todavía no hay reportes. Lanzá el agente o copiá el prompt y abrí el JSON acá.</p>`),Gt=r(`<header class="topbar svelte-1uha8ag"><a class="brand svelte-1uha8ag"><span class="brand-dot svelte-1uha8ag"></span> <span class="title-block svelte-1uha8ag"><span class="svelte-1uha8ag">diff-review</span> <small class="svelte-1uha8ag">lanzá el agente, abrí el reporte, triager hallazgos</small></span></a> <!></header> <div class="workspace svelte-1uha8ag"><section class="setup svelte-1uha8ag"><h2 class="svelte-1uha8ag">1. Contexto</h2> <div class="mode-toggle source-toggle svelte-1uha8ag"><button type="button">Carpeta local</button> <button type="button">URL remota</button></div> <p class="hint-text svelte-1uha8ag"><!></p> <!> <!> <div class="repo-setup svelte-1uha8ag"><label class="field repo-field svelte-1uha8ag"><span class="svelte-1uha8ag"> </span> <div class="repo-row svelte-1uha8ag"><input type="text" class="svelte-1uha8ag"/> <!> <button type="button" class="svelte-1uha8ag"> </button></div></label> <div class="row branches-row svelte-1uha8ag"><label class="field svelte-1uha8ag"><span class="svelte-1uha8ag">Branch a revisar</span> <!></label> <label class="field svelte-1uha8ag"><span class="svelte-1uha8ag">Base</span> <!></label></div></div> <div class="section-head svelte-1uha8ag"><h2 class="svelte-1uha8ag">2. Generar review</h2></div> <div class="mode-toggle svelte-1uha8ag"><!> <button type="button">Copiar prompt</button></div> <!> <h2 class="result-head svelte-1uha8ag">3. Resultado</h2> <p class="hint-text svelte-1uha8ag">Si lanzaste el agente desde acá o desde la CLI, el reporte se abre solo cuando hay un resultado válido.
8
+ También podés soltar o elegir el <code class="svelte-1uha8ag"> </code> a mano. Si trae <code class="svelte-1uha8ag">meta</code>, se
9
+ autocompletan repo y branches. <!></p> <!> <!> <div role="presentation"><p class="svelte-1uha8ag"><!></p> <button type="button" class="svelte-1uha8ag"> </button> <input type="file" accept="application/json,.json" class="visually-hidden svelte-1uha8ag"/></div> <!> <!></section> <aside class="reports-col svelte-1uha8ag"><h2 class="svelte-1uha8ag">Reportes recientes</h2> <!></aside></div>`,1),Kt=r(`<div><!> <!></div>`);function qt(r,b){re(b,!0);function S(e){return{agentId:e.searchParams.get(`agent`)?.trim()||``,import:e.searchParams.get(`import`)===`1`,watch:e.searchParams.get(`watch`)===`1`,out:e.searchParams.get(`out`)?.trim()||``}}let A=S(qe.url),xe=s(c(!!(A.agentId||A.import||A.watch))),N=s(c(A.agentId)),P=s(c({source:`local`,repo:``,branch:``,base:`develop`})),F=s(c(A.out&&ze(A.out)?A.out:He({}))),I=s(``),Ye=s(!1),Xe=s(!1),Ze=s(!1),L=s(`full`),Qe=s(!1),$e=s(!1),R=s(c([])),et=s(null),tt=s(null),qt=s(c([])),Jt=s(!1),Yt=s(c([])),Xt=s(null),Zt=s(null),z=s(c([])),B=s(``),Qt=s(!1),$t=s(!1),V=s(!1),H=s(!1),U=s(c(A.import)),en=s(c(A.watch)),tn=!1,nn=s(``),rn=s(null),W=s(null),G=s(!1),an=s(``),on=0,K=s(c([])),q=s(``),sn=s(``),cn=s(!1),J=s(``),Y=s(null),X=s(null),ln=h(()=>l(K).find(e=>e.id===l(q))??null),un=h(()=>!!(l(X)&&l(Y)||l(cn)&&l(ln)||l(N))),dn=h(()=>l(xe)&&!l(un)),Z=s(c({})),fn=s(c({})),pn=h(()=>{let e=l(Z)[l(q)],t={options:l(ln)?.models??[],initialValue:``},n=t.options.filter(e=>e.value!==``);return e&&e!==`loading`&&e.models.length?Ue({models:e.models,currentModel:e.currentModel},t).options:e===`loading`&&!n.length?[{value:``,label:`Cargando modelos…`,title:`Cargando modelos…`,badges:[]}]:Ge(t.options.map(e=>({value:e.value,label:e.label,title:e.label,badges:[],...e.hint?{hint:e.hint}:{}})))}),mn=h(()=>l(Z)[l(q)]),hn=h(()=>l(mn)&&l(mn)!==`loading`?l(mn).error:void 0),gn=h(()=>!!(l(mn)&&l(mn)!==`loading`&&!l(mn).error&&!l(mn).models.length));k(()=>{let e=l(q);if(l(L)!==`agent`||!e||e in i(()=>l(Z)))return;let t=!!i(()=>l(fn)[e]);E(Z,{...i(()=>l(Z)),[e]:`loading`},!0),ve({agentId:e,repo:i(()=>l(P).repo),force:t}).then(n=>{E(Z,{...l(Z),[e]:n},!0),t&&E(fn,{...l(fn),[e]:!1},!0)})});function _n(){let e=l(q);if(!e||l(Z)[e]===`loading`)return;E(fn,{...l(fn),[e]:!0},!0);let t={...l(Z)};delete t[e],E(Z,t,!0)}let vn=h(()=>l(P).source===`local`&&$(l(P).repo)&&!!l(P).branch.trim()&&l(P).branch!==l(P).base),yn=h(()=>l(P).source===`local`&&$(l(P).repo));function bn(e){E(Qe,!0),E(L,e,!0)}w(()=>{let e=Oe();E(P,e,!0),E(nn,Me()||(e.source===`local`&&$(e.repo)?e.repo.trim():``),!0);let t=new URL(window.location.href).searchParams,n=t.get(`import`)===`1`,r=t.get(`watch`)===`1`,i=t.get(`notify`)===`prompt`,a=t.get(`out`)?.trim(),o=t.get(`agent`)?.trim();E(en,r),n&&E(U,!0),a&&ze(a)&&E(F,a,!0),E(I,Ne(l(P),{outputFilename:l(F)}),!0),E(Yt,Ve(),!0),(n||r||i||a||o)&&En(),xn(),o&&Sn(o),Dn(e,{wantImport:n,wantWatch:r,wantNotify:i,keepOutName:!!(a&&ze(a))});let s=setInterval(()=>{Wn({auto:!0})},1500);return()=>{clearInterval(s),l(X)?.close()}});async function xn(){try{E(K,await Fe(),!0),l(K).some(e=>e.id===l(q))||E(q,l(K)[0]?.id??``,!0),!l(Qe)&&l(K).length>0&&l(L)!==`agent`&&E(L,`agent`)}catch{E(K,[],!0)}}async function Sn(e,t){E(L,`agent`),E(J,``);let n=t??null;if(!n)for(let t=0;t<30&&(n=await le({id:e}).catch(()=>null),!n);t++)await new Promise(e=>setTimeout(e,100));if(!n){E(J,`La sesión del agente ya no existe (¿se reinició diff-review?).`),E(N,``);return}n.status===`error`&&n.statusMessage&&E(J,n.statusMessage,!0),E(Y,n,!0),E(N,``),l(X)?.close();let r=new de(e,e=>void Cn(e));E(X,r,!0),r.connect()}async function Cn(e){if(e.type===`status`&&e.status===`error`){E(J,e.message||l(J)||`Error del agente.`,!0),l(Y)&&E(Y,{...l(Y),status:`error`,statusMessage:l(J)},!0);return}if(!(e.type!==`review`||!e.ok||!l(Y)))try{let t=await M({repo:l(Y).repo,filename:e.filename});if(!t?.payload)return;E(F,e.filename,!0),await Jn(t.payload)}catch(e){E(R,[`No se pudo abrir el JSON del agente: ${Fn(e)}`],!0)}}async function wn(){if(!l(ln)||!l(vn)||l(cn))return;let e=l(sn);E(cn,!0),E(J,``);try{let t=await be({repo:l(P).repo.trim(),branch:l(P).branch.trim(),base:l(P).base.trim()||`develop`,agentId:l(ln).id,model:e});E(F,t.outputFilename,!0),await Sn(t.id,t)}catch(e){E(J,Fn(e),!0)}finally{E(cn,!1)}}function Tn(){l(X)?.close(),E(X,null),E(Y,null),E(J,``),E(xe,!1),E(N,``)}function En(){let e=new URL(window.location.href);e.search&&(e.search=``,se(e,{}))}async function Dn(e,t){try{let n=await me();if(n?.repo){let r=n.current&&n.current!==`HEAD`?n.current:n.branches[0]||``,i=n.branches.includes(e.base)?e.base:n.defaultBase;E(z,n.branches,!0),E(nn,n.repo,!0),Q({source:`local`,repo:n.repo,branch:r,base:i,remoteUrl:n.remoteUrl||void 0}),t.keepOutName||await On()}else e.repo.trim()&&(Ln(e.repo,e.source),!t.keepOutName&&e.source===`local`&&await On())}catch{e.repo.trim()&&Ln(e.repo,e.source)}if(t.wantNotify&&jn(l(I),e=>{E(Xe,e,!0),E(Ze,!0),setTimeout(()=>E(Ze,!1),2800)}),t.wantImport)try{let e=await ge();e?.payload?(e.filename&&E(F,e.filename,!0),await Jn(e.payload)):tn||E(U,!1)}catch{E(R,[`No se pudo importar el JSON pendiente del CLI.`],!0),E(U,!1)}t.wantWatch&&Wn({auto:!0})}async function On(){if(l(P).source!==`local`||!$(l(P).repo)||!l(P).branch.trim()){E(F,He({}),!0),l(Ye)||E(I,Ne(l(P),{outputFilename:l(F)}),!0);return}let e=++on;try{let t=await pe({repo:l(P).repo.trim(),branch:l(P).branch.trim(),base:l(P).base.trim()||`develop`});if(e!==on)return;E(F,t.filename,!0),l(Ye)||E(I,Ne(l(P),{outputFilename:l(F)}),!0)}catch{if(e!==on)return;E(F,He({}),!0),l(Ye)||E(I,Ne(l(P),{outputFilename:l(F)}),!0)}}function Q(e){let t=l(P);E(P,{...l(P),...e},!0),l(P).source===`local`&&$(l(P).repo)&&E(nn,l(P).repo.trim(),!0),Ie(l(P),l(nn)),l(Ye)||E(I,Ne(l(P),{outputFilename:l(F)}),!0),(t.repo!==l(P).repo||t.branch!==l(P).branch||t.base!==l(P).base||t.source!==l(P).source)&&l(P).source===`local`&&On()}function kn(e){if(e===l(P).source)return;if(E(z,[],!0),E(B,``),e===`url`){$(l(P).repo)&&E(nn,l(P).repo.trim(),!0);let t=(l(P).remoteUrl||``).trim()||(Pn(l(P).repo)?l(P).repo.trim():``);Q({source:e,repo:t,...t?{remoteUrl:t}:{}});return}let t=l(nn)||($(l(P).repo)?l(P).repo.trim():``),n=(Pn(l(P).repo)?l(P).repo.trim():``)||(l(P).remoteUrl||``).trim();Q({source:e,repo:t,...n?{remoteUrl:n}:{}})}function An(e){E(I,e.currentTarget.value,!0),E(Ye,!0)}function jn(e,t){let n=()=>{t(!0),setTimeout(()=>t(!1),1600)};navigator.clipboard?.writeText?navigator.clipboard.writeText(e).then(n).catch(n):n()}function Mn(){jn(l(I),e=>E(Xe,e,!0))}function Nn(){jn(Re(l(P),l(qt),{outputFilename:l(F)}),e=>E(Jt,e,!0))}function $(e){let t=e.trim();return!t||/^(https?:\/\/|git@|ssh:\/\/)/i.test(t)?!1:/[\\/]/.test(t)||/^[A-Za-z]:/.test(t)}function Pn(e){let t=e.trim();return t?!!(/^(https?:\/\/|git@|ssh:\/\/)/i.test(t)||/\.git$/i.test(t)&&!$(t)):!1}function Fn(e){if(!e)return`Error desconocido`;if(typeof e==`string`){try{let t=JSON.parse(e);if(typeof t?.message==`string`&&t.message.trim())return t.message}catch{}return e}if(typeof e==`object`){let t=e;if(typeof t.body?.message==`string`&&t.body.message.trim())return t.body.message;if(typeof t.message==`string`&&t.message.trim()){let e=t.message.trim();if(e.startsWith(`{`))try{let t=JSON.parse(e);if(typeof t?.message==`string`&&t.message.trim())return t.message}catch{}return e}}return String(e)}async function In(){if(!(l($t)||l(Qt))){E($t,!0),E(B,``);try{let e=await Be(null);if(!e)return;Q({source:`local`,repo:e}),await Ln(e,`local`)}catch(e){E(B,`No se pudo elegir la carpeta: `+Fn(e))}finally{E($t,!1)}}}async function Ln(e=l(P).repo,t=l(P).source){let n=e.trim();if(!n){E(B,t===`url`?`Indicá la URL del repo.`:`Indicá la ruta absoluta del repo.`,!0);return}if(!l(Qt)){E(Qt,!0),E(B,``);try{let e=await Ce({source:t,repo:n}),r=e.branches.includes(l(P).branch)?l(P).branch:e.current||e.branches[0]||``,i=e.branches.includes(l(P).base)?l(P).base:e.defaultBase;E(z,e.branches,!0),Q({source:e.source,repo:e.repo,branch:r,base:i,remoteUrl:e.remoteUrl||(e.source===`url`?e.repo:l(P).remoteUrl)})}catch(e){E(z,[],!0),E(B,`No se pudo leer el repo: `+Fn(e))}finally{E(Qt,!1)}}}function Rn(e){e.preventDefault(),l($e)||E($e,!0)}function zn(e){e.preventDefault(),E($e,!1)}function Bn(e){if(e.preventDefault(),E($e,!1),l(H)||l(V)||l(G))return;let t=e.dataTransfer?.files?.[0];t&&Kn(t)}async function Vn(){if(!(l(H)||l(V)||l(G))){if(l(yn)){E(V,!0),E(B,``);try{let e=await he({directory:l(P).repo.trim()});if(!e?.payload)return;e.filename&&E(F,e.filename,!0),await Jn(e.payload)}catch(e){E(R,[`No se pudo abrir el archivo: `+Fn(e)],!0),l(rn)?.click()}finally{E(V,!1)}return}l(rn)?.click()}}function Hn(e){let t=e.currentTarget,n=t.files?.[0];n&&Kn(n),t.value=``}function Un(e){return`${e.path}::${e.mtimeMs}`}async function Wn(e){if(!(!l(yn)||l(H)||l(V)))try{let t=await Ke({repo:l(P).repo.trim(),preferredName:l(F)});if(E(W,t,!0),!e.auto||!l(en)||!t||l(G)||t.filename!==l(F)||Un(t)===l(an))return;await Gn(t,{auto:!0})}catch{}}async function Gn(e,t){if(!(l(H)||l(G)||l(V))){E(G,!0),E(U,!0),E(R,[],!0);try{let n=await M({repo:l(P).repo.trim(),filename:e.filename});if(!n?.payload){t?.auto||E(R,[`No se pudo leer `+e.filename],!0),E(U,!1);return}E(F,e.filename,!0),await Jn(n.payload)&&(E(an,Un(e),!0),t?.auto&&E(en,!1))}catch(t){E(R,[`No se pudo abrir `+e.filename+`: `+Fn(t)],!0),E(U,!1)}finally{E(G,!1)}}}function Kn(e){E(U,!0),E(R,[],!0);let t=new FileReader;t.onload=()=>{let e;try{e=JSON.parse(String(t.result))}catch(e){E(R,[`El archivo no es JSON válido: `+Fn(e)],!0),E(U,!1);return}Jn(e)},t.onerror=()=>{E(R,[`No se pudo leer el archivo.`],!0),E(U,!1)},t.readAsText(e)}function qn(e){return j(e,l(P))}async function Jn(e){E(U,!0),tn=!1;try{let t=await Yn(e);return tn||E(U,!1),t}catch(e){throw E(U,!1),e}}async function Yn(e){let t=rt(e);if(t.length)return E(R,t,!0),!1;let n=we(e),r=qn(e);(r.repo||r.branch||r.base||r.remoteUrl)&&Q({source:r.source,repo:r.repo||l(P).repo,branch:r.branch||l(P).branch,base:r.base||l(P).base,remoteUrl:r.remoteUrl||l(P).remoteUrl});let i={intent:n.intent,groups:n.groups,blocks:n.blocks,findings:n.findings,skipped:n.skipped,notes:n.notes},a=[],o=(e,t)=>{let n=t.trim();n&&(a.some(t=>t.source===e&&t.repo===n)||a.push({source:e,repo:n}))};if(r.branch){r.source===`local`&&$(r.repo)?o(`local`,r.repo):r.source===`url`&&Pn(r.repo)||Pn(r.repo)?o(`url`,r.repo):$(r.repo)&&o(`local`,r.repo);let e=(r.remoteUrl||``).trim();e&&Pn(e)&&o(`url`,e)}if(a.length&&r.branch){E(H,!0),E(R,[],!0);let t=[],o=!1,s=r.remoteUrl;try{for(let e of a)try{if(n=await Se({repo:e.repo,branch:r.branch,base:r.base||`develop`,source:e.source,payload:i,outputFilename:l(F)}),o=!0,e.source===`url`)s||=e.repo;else if(!s)try{let t=await Ce({source:`local`,repo:e.repo});t.remoteUrl&&(s=t.remoteUrl)}catch{}break}catch(n){t.push(`${e.source===`url`?`URL`:`local`}: ${Fn(n)}`)}if(!o){if(!Ee(n))return E(R,[`No se pudo calcular el diff con git.`,...t.map(e=>`· ${e}`)],!0),!1;n={...n,notes:[...n.notes,`No se pudo refrescar el diff con git: `+t.join(` | `)]}}}finally{E(H,!1)}s&&Q({remoteUrl:s});let c=await Zn(e,Xn(r,s)),u=Je(n);return u.length?(E(et,n,!0),E(tt,e,!0),E(qt,u,!0),E(R,[],!0),Q(c),!0):(Qn(n,c),!0)}else if(!Ee(n))return E(R,[`Indicá repo (ruta o URL) y branch, o incluí meta.remoteUrl en el JSON, para calcular el diff con git.`],!0),!1;let s=await Zn(e,Xn(r)),c=Je(n);return c.length?(E(et,n,!0),E(tt,e,!0),E(qt,c,!0),E(R,[],!0),Q(s),!0):(Qn(n,s),!0)}function Xn(e,t){let n=Ae(e)||(ze(l(F))?l(F):``)||Ae(l(P));return{source:e.source,repo:e.repo||l(P).repo,branch:e.branch||l(P).branch,base:e.base||l(P).base,remoteUrl:t||e.remoteUrl||l(P).remoteUrl,...e.generatedAt?{generatedAt:e.generatedAt}:{},...e.agent?{agent:e.agent}:{},...e.model?{model:e.model}:{},...e.agentSession?{agentSession:e.agentSession}:{},...n?{outputFilename:n}:{}}}async function Zn(e,t){let n=Ae(t);if(!n||t.source!==`local`||!$(t.repo))return t;let r={...t,outputFilename:n};try{return(await M({repo:r.repo,filename:n}))?.payload||await Te({repo:r.repo,filename:n,payload:e}),r}catch{let{outputFilename:e,...n}=t;return n}}function Qn(e,t=l(P)){E(R,[],!0),E(et,null),E(tt,null),E(qt,[],!0),tn=!0,oe(ce(`/report/${je(e,t).id}`))}async function $n(){if(!l(et))return;let e=await Zn(l(tt)??l(et),Xn(l(P)));Qn(l(et),e)}function er(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(`es-AR`,{day:`2-digit`,month:`2-digit`,hour:`2-digit`,minute:`2-digit`})}function tr(){E(Xt,null),E(Zt,null)}function nr(e){let t=e.getBoundingClientRect(),n=t.bottom+4;n+42>window.innerHeight-8&&(n=t.top-4-42),n<8&&(n=8);let r=t.right-148;r<8&&(r=8),r+148>window.innerWidth-8&&(r=window.innerWidth-8-148),E(Zt,{top:n,left:r},!0)}function rr(e,t){if(l(Xt)===e){tr();return}E(Xt,e,!0),nr(t)}function ir(e){let t=e.branch||`este reporte`;confirm(`¿Eliminar “${t}”? No se puede deshacer.`)&&(Le(e.id),E(Yt,Ve(),!0),tr())}var ar=Kt();x(`click`,o,()=>{l(Xt)&&tr()}),x(`keydown`,o,e=>{e.key===`Escape`&&tr()});let or;var sr=p(ar),cr=e=>{O(e,it())};f(sr,e=>{l(Ze)&&e(cr)});var lr=a(sr,2),ur=e=>{{let t=h(()=>l(J)||l(X).errorMessage||l(Y).status===`error`&&l(Y).statusMessage||``);nt(e,{get info(){return l(Y)},get events(){return l(X).events},get busy(){return l(X).busy},get gone(){return l(X).gone},get error(){return l(t)},oncancel:()=>void Pe({id:l(Y).id}),onreset:Tn,onrespondpermission:e=>void ye({id:l(Y).id,requestId:e.requestId,allow:e.allow,allowAll:e.allowAll,scope:e.scope}).then(e=>{E(Y,e,!0)}).catch(e=>{E(J,e instanceof Error?e.message:String(e),!0)}),onsessiontrust:e=>void _e({id:l(Y).id,enabled:e}).then(e=>{E(Y,e,!0)}).catch(e=>{E(J,e instanceof Error?e.message:String(e),!0)}),onretry:()=>{E(J,``),fe({id:l(Y).id}).then(e=>{E(Y,e,!0)}).catch(e=>{E(J,e instanceof Error?e.message:String(e),!0)})}})}},dr=e=>{{let t=h(()=>({id:``,agentId:l(ln).id,agentLabel:l(ln).label,model:l(sn)||``,repo:l(P).repo.trim(),branch:l(P).branch.trim(),base:l(P).base.trim()||`develop`,outputFilename:l(F),acpSessionId:``,status:`starting`,busy:!0}));nt(e,{get info(){return l(t)},events:[],busy:!0,oncancel:()=>{},onreset:Tn})}},fr=e=>{{let t=h(()=>({id:``,agentId:``,agentLabel:`Agente`,model:``,repo:l(P).repo.trim(),branch:l(P).branch.trim(),base:l(P).base.trim()||`develop`,outputFilename:l(F),acpSessionId:``,status:`starting`,busy:!0}));nt(e,{get info(){return l(t)},events:[],busy:!0,get error(){return l(J)},oncancel:()=>{},onreset:Tn})}},pr=e=>{var r=ot(),i=a(p(r),2),o=p(i,!0);D(i);var s=a(i,2),c=e=>{var t=at(),r=p(t),i=p(r,!0);D(r),D(t),d(()=>n(i,l(F))),O(e,t)};f(s,e=>{l(F)&&e(c)});var u=a(s,2);D(r),d(()=>n(o,l(U)||tn?`Abriendo el reporte…`:`Esperando el JSON de la review…`)),t(`click`,u,Tn),O(e,r)},mr=r=>{var i=Gt(),o=m(i),s=p(o);ue(a(s,2),{}),D(o);var c=a(o,2),b=p(c),S=a(p(b),2),w=p(S);let te;var re=a(w,2);let k;D(S);var oe=a(S,2),se=p(oe),le=e=>{var t=st();ne(2),O(e,t)},de=e=>{O(e,u(`Carpeta local del repo. Podés pegar la ruta o elegirla con el diálogo del sistema. Git corre ahí
10
+ mismo (sirve para branches no pusheados).`))};f(se,e=>{l(P).source===`url`?e(le):e(de,-1)}),D(oe);var fe=a(oe,2),pe=e=>{var t=ct(),r=p(t,!0);D(t),d(()=>n(r,l(B))),O(e,t)};f(fe,e=>{l(B)&&e(pe)});var me=a(fe,2),he=e=>{var t=lt(),r=p(t);D(t),d(e=>n(r,`${e??``}.`),[()=>De(l(z).length,`branch encontrado`,`branches encontrados`)]),O(e,t)};f(me,e=>{l(z).length&&e(he)});var ge=a(me,2),_e=p(ge),A=p(_e),ve=p(A,!0);D(A);var ye=a(A,2),j=p(ye);ie(j);var be=a(j,2),xe=e=>{var r=ut(),i=p(r,!0);D(r),d(()=>{r.disabled=l($t)||l(Qt),n(i,l($t)?`Eligiendo…`:`Elegir…`)}),t(`click`,r,()=>void In()),O(e,r)};f(be,e=>{l(P).source===`local`&&e(xe)});var M=a(be,2),Se=p(M,!0);D(M),D(ye),D(_e);var Ce=a(_e,2),we=p(Ce),Te=a(p(we),2),Ee=e=>{var r=ft();_(r,20,()=>l(z),e=>e,(e,t)=>{var r=dt(),i=p(r,!0);D(r);var a={};d(()=>{n(i,t),a!==(a=t)&&(r.value=(r.__value=t)??``)}),O(e,r)}),D(r);var i;ae(r),d(()=>{i!==(i=l(P).branch)&&(r.value=(r.__value=l(P).branch)??``,y(r,l(P).branch))}),t(`change`,r,e=>Q({branch:e.currentTarget.value})),O(e,r)},Oe=e=>{var n=pt();ie(n),d(()=>C(n,l(P).branch)),t(`input`,n,e=>Q({branch:e.currentTarget.value})),O(e,n)};f(Te,e=>{l(z).length?e(Ee):e(Oe,-1)}),D(we);var Ae=a(we,2),je=a(p(Ae),2),Me=e=>{var r=ft();_(r,20,()=>l(z),e=>e,(e,t)=>{var r=dt(),i=p(r,!0);D(r);var a={};d(()=>{n(i,t),a!==(a=t)&&(r.value=(r.__value=t)??``)}),O(e,r)}),D(r);var i;ae(r),d(()=>{i!==(i=l(P).base)&&(r.value=(r.__value=l(P).base)??``,y(r,l(P).base))}),t(`change`,r,e=>Q({base:e.currentTarget.value})),O(e,r)},Ne=e=>{var n=mt();ie(n),d(()=>C(n,l(P).base)),t(`input`,n,e=>Q({base:e.currentTarget.value})),O(e,n)};f(je,e=>{l(z).length?e(Me):e(Ne,-1)}),D(Ae),D(Ce),D(ge);var Pe=a(ge,4),Fe=p(Pe),Ie=e=>{var n=ht();let r;d(()=>r=T(n,1,`svelte-1uha8ag`,null,r,{on:l(L)===`agent`})),t(`click`,n,()=>bn(`agent`)),O(e,n)};f(Fe,e=>{(l(K).length||l(X))&&e(Ie)});var Le=a(Fe,2);let ze;D(Pe);var Be=a(Pe,2),Ve=e=>{var r=bt(),i=m(r),o=a(p(i)),s=p(o,!0);D(o),ne(),D(i);var c=a(i,2),u=p(c);We(a(p(u),2),{get options(){return l(K)},onchange:()=>E(sn,``),get value(){return l(q)},set value(e){E(q,e,!0)}}),D(u);var g=a(u,2),_=p(g),v=a(p(_)),y=e=>{O(e,gt())};f(v,e=>{l(mn)===`loading`&&e(y)}),D(_);var ee=a(_,2);{let e=h(()=>l(mn)===`loading`&&!l(ln)?.models.length);ke(ee,{get options(){return l(pn)},get disabled(){return l(e)},get value(){return l(sn)},set value(e){E(sn,e,!0)}})}D(g),D(c);var b=a(c,2),x=e=>{var r=_t(),i=p(r),o=a(i);D(r),d(()=>n(i,`${l(hn)??``} `)),t(`click`,o,_n),O(e,r)},S=e=>{var n=vt(),r=a(p(n));D(n),t(`click`,r,_n),O(e,n)};f(b,e=>{l(hn)?e(x):l(gn)&&e(S,1)});var C=a(b,2),w=p(C),te=p(w,!0);D(w),D(C);var T=a(C,2),re=e=>{O(e,yt())};f(T,e=>{l(vn)||e(re)});var ie=a(T,2),ae=e=>{var t=ct(),r=p(t,!0);D(t),d(()=>n(r,l(J))),O(e,t)};f(ie,e=>{l(J)&&e(ae)}),d(()=>{n(s,l(F)),w.disabled=!l(vn)||l(cn)||!l(ln),n(te,l(cn)?`Lanzando…`:`Lanzar review`)}),t(`click`,w,()=>void wn()),O(e,r)},He=r=>{var i=xt(),o=a(m(i),2);e(o);var s=a(o,2),c=p(s),u=p(c,!0);D(c),D(s),d(()=>{C(o,l(I)),n(u,l(Xe)?`Copiado ✓`:`Copiar prompt`)}),t(`input`,o,An),t(`click`,c,Mn),O(r,i)};f(Be,e=>{l(L)===`agent`&&(l(K).length||l(X))?e(Ve):e(He,-1)});var Ue=a(Be,4),N=a(p(Ue)),Ge=p(N,!0);D(N);var Ke=a(N,4),qe=e=>{var t=St();ne(2),O(e,t)},Je=e=>{var t=Ct();ne(2),O(e,t)};f(Ke,e=>{l(yn)&&l(en)?e(qe):l(yn)&&e(Je,1)}),D(Ue);var Ye=a(Ue,2),Ze=e=>{var r=Dt(),i=a(p(r)),o=p(i,!0);D(i);var s=a(i,2),c=e=>{O(e,wt())},u=e=>{O(e,Tt())},m=e=>{O(e,Et())};f(s,e=>{l(G)?e(c):l(en)?e(u,1):e(m,-1)}),D(r),d(()=>n(o,l(W).filename)),t(`click`,i,()=>void Gn(l(W))),O(e,r)},Qe=e=>{var r=Ot(),i=a(p(r)),o=p(i,!0);D(i),D(r),d(()=>n(o,l(W).filename)),t(`click`,i,()=>void Gn(l(W))),O(e,r)},tt=e=>{var t=kt(),r=a(p(t)),i=p(r,!0);D(r),ne(3),D(t),d(()=>n(i,l(F))),O(e,t)};f(Ye,e=>{l(yn)&&l(W)&&l(W).filename===l(F)&&!l(H)&&!l(G)?e(Ze):l(yn)&&l(W)&&l(W).filename!==l(F)&&!l(H)?e(Qe,1):l(yn)&&!l(W)&&!l(H)&&!l(G)&&e(tt,2)});var nt=a(Ye,2),rt=e=>{O(e,At())};f(nt,e=>{l(G)&&e(rt)});var it=a(nt,2);let at;var ot=p(it),Kt=p(ot),U=e=>{O(e,u(`Abriendo el reporte…`))},tn=e=>{O(e,u(`Eligiendo archivo…`))},nn=e=>{O(e,u(`Importando JSON…`))},an=e=>{O(e,u(`Arrastrá el archivo .json acá`))};f(Kt,e=>{l(H)?e(U):l(V)?e(tn,1):l(G)?e(nn,2):e(an,-1)}),D(ot);var on=a(ot,2),Y=p(on,!0);D(on);var un=a(on,2);g(un,e=>E(rn,e),()=>l(rn)),D(it);var dn=a(it,2),Z=r=>{var i=Mt(),o=p(i),s=p(o),c=p(s);D(s),ne(2),D(o);var u=a(o,2),f=a(p(u),2);_(f,20,()=>l(qt),e=>e,(e,t)=>{var r=jt(),i=p(r,!0);D(r),d(()=>n(i,t)),O(e,r)}),D(f),D(u);var m=a(u,4);e(m);var h=a(m,2),g=p(h),v=p(g,!0);D(g);var y=a(g,2);D(h),D(i),d((e,t)=>{n(c,`El modelo dejó ${e??``} sin explicar`),C(m,t),n(v,l(Jt)?`Copiado ✓`:`Copiar prompt de corrección`)},[()=>De(l(qt).length,`archivo`,`archivos`),()=>Re(l(P),l(qt),{outputFilename:l(F)})]),t(`click`,g,Nn),t(`click`,y,()=>void $n()),O(r,i)};f(dn,e=>{l(et)&&e(Z)});var fn=a(dn,2),xn=e=>{var t=Nt(),r=a(p(t),2);_(r,20,()=>l(R),e=>e,(e,t)=>{var r=jt(),i=p(r,!0);D(r),d(()=>n(i,t)),O(e,r)}),D(r),D(t),O(e,t)};f(fn,e=>{l(R).length&&e(xn)}),D(b);var Sn=a(b,2),Cn=a(p(Sn),2),Tn=e=>{var r=Ut();_(r,21,()=>l(Yt),e=>e.id,(e,r)=>{var i=Ht(),o=p(i),s=p(o),c=p(s),u=p(c,!0);D(c);var m=a(c,2),h=p(m,!0);D(m),D(s);var g=a(s,2),_=p(g),y=a(p(_));D(_);var b=a(_,2),x=p(b),S=p(x,!0);D(x);var C=a(x,2),w=e=>{var t=Pt(),i=p(t,!0);D(t),d(e=>n(i,e),[()=>De(l(r).blockerCount,`blocker`,`blockers`)]),O(e,t)};f(C,e=>{l(r).blockerCount&&e(w)});var te=a(C,2),ne=e=>{var t=Ft(),i=p(t,!0);D(t),d(e=>n(i,e),[()=>De(l(r).qualityCount,`calidad`,`calidad`)]),O(e,t)};f(te,e=>{l(r).qualityCount&&e(ne)}),D(b),D(g);var T=a(g,2),E=e=>{var t=zt(),i=p(t),o=e=>{var t=It(),i=p(t,!0);D(t),d(()=>n(i,l(r).agent)),O(e,t)};f(i,e=>{l(r).agent&&e(o)});var s=a(i,2),c=e=>{O(e,Lt())};f(s,e=>{l(r).agent&&l(r).model&&e(c)});var u=a(s,2),m=e=>{var t=Rt(),i=p(t,!0);D(t),d(()=>n(i,l(r).model)),O(e,t)};f(u,e=>{l(r).model&&e(m)}),D(t),d(e=>v(t,`title`,e),[()=>[l(r).agent,l(r).model].filter(Boolean).join(` · `)]),O(e,t)};f(T,e=>{(l(r).agent||l(r).model)&&e(E)});var re=a(T,2),ie=e=>{var t=Bt(),i=p(t,!0);D(t),d(()=>n(i,l(r).intent)),O(e,t)};f(re,e=>{l(r).intent&&e(ie)}),D(o);var ae=a(o,2),k=p(ae),oe=a(k,2),se=e=>{var n=Vt();let i;var a=p(n);D(n),d(()=>i=ee(n,``,i,{top:`${l(Zt).top??``}px`,left:`${l(Zt).left??``}px`})),t(`click`,a,e=>{e.stopPropagation(),ir(l(r))}),O(e,n)};f(oe,e=>{l(Xt)===l(r).id&&l(Zt)&&e(se)}),D(ae),D(i),d((e,t,i)=>{v(o,`href`,e),n(u,l(r).branch||`—`),n(h,t),n(y,` ${(l(r).base||`develop`)??``}`),n(S,i),v(k,`aria-label`,`Más acciones para ${(l(r).branch||`reporte`)??``}`),v(k,`aria-expanded`,l(Xt)===l(r).id)},[()=>ce(`/report/${l(r).id}`),()=>er(l(r).savedAt),()=>De(l(r).groupCount,`tema`,`temas`)]),t(`click`,k,e=>{e.preventDefault(),e.stopPropagation(),rr(l(r).id,e.currentTarget)}),O(e,i)}),D(r),O(e,r)},En=e=>{O(e,Wt())};f(Cn,e=>{l(Yt).length?e(Tn):e(En,-1)}),D(Sn),D(c),d(e=>{v(s,`href`,e),te=T(w,1,`svelte-1uha8ag`,null,te,{on:l(P).source===`local`}),k=T(re,1,`svelte-1uha8ag`,null,k,{on:l(P).source===`url`}),n(ve,l(P).source===`url`?`URL del repo`:`Repo`),v(j,`placeholder`,l(P).source===`url`?`https://github.com/org/repo.git`:`C:\\path\\to\\repo`),C(j,l(P).repo),M.disabled=l(Qt)||l($t),n(Se,l(Qt)?`Cargando…`:`Cargar`),ze=T(Le,1,`svelte-1uha8ag`,null,ze,{on:l(L)===`full`}),n(Ge,l(F)),at=T(it,1,`dropzone svelte-1uha8ag`,null,at,{drag:l($e),busy:l(H)||l(V)||l(G)}),on.disabled=l(H)||l(V)||l(G),n(Y,l(V)?`Abriendo…`:`Elegir archivo`)},[()=>ce(`/`)]),t(`click`,w,()=>kn(`local`)),t(`click`,re,()=>kn(`url`)),t(`input`,j,e=>Q({repo:e.currentTarget.value})),t(`keydown`,j,e=>{e.key===`Enter`&&(e.preventDefault(),Ln())}),t(`click`,M,()=>void Ln()),t(`click`,Le,()=>bn(`full`)),x(`dragover`,it,Rn),x(`dragleave`,it,zn),x(`drop`,it,Bn),t(`click`,on,()=>void Vn()),t(`change`,un,Hn),x(`scroll`,Sn,()=>l(Xt)&&tr()),O(r,i)};f(lr,e=>{l(X)&&l(Y)?e(ur):l(cn)&&l(ln)?e(dr,1):l(N)?e(fr,2):l(dn)?e(pr,3):e(mr,-1)}),D(ar),d(()=>or=T(ar,1,`page svelte-1uha8ag`,null,or,{live:l(un)||l(dn)})),O(r,ar),te()}S([`click`,`input`,`keydown`,`change`]);export{qt as component};