@bivy/bivy 0.20.9-staging.20 → 0.20.9-staging.21
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/dist/agent-instructions.js +5 -3
- package/dist/apps/styles.css +15 -0
- package/dist/server.js +1 -1
- package/dist/session/inline-image-fetch.js +8 -5
- package/dist/session/message-components.js +169 -0
- package/dist/session/transcript-persistence.js +39 -20
- package/package.json +1 -1
- package/web/assets/AutomationsView-Cobo4Kep.js +51 -0
- package/web/assets/{ChangesCard-z3_ukf1u.js → ChangesCard-Bo6E8C_y.js} +3 -3
- package/web/assets/LibraryView-BTeMc6BO.js +2 -0
- package/web/assets/{ProviderConnect-B3eBVETd.js → ProviderConnect-CsidS7kq.js} +1 -1
- package/web/assets/SessionList-B7IbeXSa.js +1 -0
- package/web/assets/{Settings-BNot7mbn.js → Settings-BQRQsQ36.js} +5 -5
- package/web/assets/{Sheet-D6GzuZLS.js → Sheet-C0BIPbMr.js} +1 -1
- package/web/assets/{Terminal-BsC5uIMV.js → Terminal-BTRgonB5.js} +1 -1
- package/web/assets/{VoiceSettings-ls5IroKf.js → VoiceSettings-UZ1SA0lQ.js} +1 -1
- package/web/assets/{abnfDiagram-VCTEODGH-DbgBwr4N.js → abnfDiagram-VCTEODGH-CJoWsvVk.js} +1 -1
- package/web/assets/architecture-7GRP2DOG-CuzcodTO.js +1 -0
- package/web/assets/{architectureDiagram-5GKGNRK7-Bsmv18_k.js → architectureDiagram-5GKGNRK7-_qpa4O1v.js} +1 -1
- package/web/assets/{blockDiagram-I7D4REHJ-qHhTUAop.js → blockDiagram-I7D4REHJ-DmLgwSr-.js} +1 -1
- package/web/assets/{c4Diagram-7LVT6UL2-2zjJl4E9.js → c4Diagram-7LVT6UL2-DeZuOOSk.js} +1 -1
- package/web/assets/channel-B0OL-aPd.js +1 -0
- package/web/assets/{chunk-4HAMMTFA-BNe2pfM4.js → chunk-4HAMMTFA-Cr6O6lBG.js} +1 -1
- package/web/assets/{chunk-75Z2AOVW-CKl0NV3C.js → chunk-75Z2AOVW-gSgNIYMY.js} +1 -1
- package/web/assets/{chunk-DU6HZSFF-B3P59NKh.js → chunk-DU6HZSFF-BacnRf2Y.js} +1 -1
- package/web/assets/{chunk-F27PBJKO-CAWJsp2_.js → chunk-F27PBJKO-DRrpfF1z.js} +1 -1
- package/web/assets/{chunk-GMAD6QVW-BlDnxBjY.js → chunk-GMAD6QVW-DXCi6v6B.js} +1 -1
- package/web/assets/{chunk-GVQU2GXP-Bczr5jKx.js → chunk-GVQU2GXP-Yd74hIeT.js} +1 -1
- package/web/assets/{chunk-IMKFNOWR-CWeRsdUj.js → chunk-IMKFNOWR-D5xz0-QC.js} +1 -1
- package/web/assets/{chunk-L3NEJ4N5-BQPTEPpn.js → chunk-L3NEJ4N5-BrS0CGPM.js} +1 -1
- package/web/assets/{chunk-OSK3NFVY-DzGYbGz2.js → chunk-OSK3NFVY-C6d1DSJe.js} +1 -1
- package/web/assets/{chunk-P2QGCYS3-CSvykgBa.js → chunk-P2QGCYS3-BrKgIngm.js} +1 -1
- package/web/assets/{chunk-POPQ4Y6H-CSd2VGfh.js → chunk-POPQ4Y6H-Bkwx5BZs.js} +1 -1
- package/web/assets/{chunk-PWAF6VOD-DR2HyrI3.js → chunk-PWAF6VOD-AeCCeE0F.js} +1 -1
- package/web/assets/{chunk-SHT3W25Y-CSMOeLrh.js → chunk-SHT3W25Y-01NYjozy.js} +1 -1
- package/web/assets/{chunk-SVP7TREG-BTIkXcEs.js → chunk-SVP7TREG-CCh7wXAI.js} +1 -1
- package/web/assets/{chunk-TICWLB2K-DS3eZA5z.js → chunk-TICWLB2K-CcWKqwdM.js} +1 -1
- package/web/assets/classDiagram-ZZMXUADV-D8dSdFQt.js +1 -0
- package/web/assets/classDiagram-v2-VYDZK3BY-D8dSdFQt.js +1 -0
- package/web/assets/{cynefin-OW5HDTMX-qmnX5Drm.js → cynefin-OW5HDTMX-CYYc_tBE.js} +1 -1
- package/web/assets/{cynefinDiagram-5FMLGOSQ-Cuh1jGM6.js → cynefinDiagram-5FMLGOSQ-Dnz7OfxK.js} +1 -1
- package/web/assets/{dagre-GXQ25YYZ-7GZbtRVA.js → dagre-GXQ25YYZ-di5CyaMt.js} +1 -1
- package/web/assets/{diagram-S7CK7UJ4-zQJ-kaiE.js → diagram-S7CK7UJ4-BVC93OLB.js} +1 -1
- package/web/assets/{diagram-UQ7AKVKN-B5Ed0jaZ.js → diagram-UQ7AKVKN-D7pXHAvQ.js} +1 -1
- package/web/assets/{diagram-VSXAHHWV-D5vZvTR7.js → diagram-VSXAHHWV-d0zW-IUz.js} +1 -1
- package/web/assets/{diagram-VX7I27RA-DEkORtmo.js → diagram-VX7I27RA-BRlMo9oa.js} +1 -1
- package/web/assets/{diagram-Z3DM3KII-DPb9NWrB.js → diagram-Z3DM3KII-BmfntB1i.js} +1 -1
- package/web/assets/{ebnfDiagram-PWID7BFC-gVpp4zKg.js → ebnfDiagram-PWID7BFC-BxUYvqsz.js} +1 -1
- package/web/assets/{erDiagram-RLTQ6QDP-4YNUcQlu.js → erDiagram-RLTQ6QDP-CbUl1Cqa.js} +1 -1
- package/web/assets/eventmodeling-NTZA5JFV-sTVSUyNU.js +1 -0
- package/web/assets/flowDiagram-HODETNUW-Beo3zBEU.js +1 -0
- package/web/assets/{ganttDiagram-EL5Y4UJY-DUk_l5ka.js → ganttDiagram-EL5Y4UJY-CkpR0avQ.js} +1 -1
- package/web/assets/{gitGraph-4MIJSDKK-CGS2CP5_.js → gitGraph-4MIJSDKK-CmbJxSaM.js} +1 -1
- package/web/assets/{gitGraphDiagram-WWUBYQGX-C7rXPKT3.js → gitGraphDiagram-WWUBYQGX-iyO408KF.js} +1 -1
- package/web/assets/index-B4HaCD-n.css +1 -0
- package/web/assets/{index-D_E_e1lg.js → index-fdEPLcPs.js} +2 -2
- package/web/assets/{info-A6RAGUB7-D2F_gpvF.js → info-A6RAGUB7--6JCM0xX.js} +1 -1
- package/web/assets/{infoDiagram-27XIBGKW-DdRRRHRV.js → infoDiagram-27XIBGKW-Dchx6QcB.js} +1 -1
- package/web/assets/{ishikawaDiagram-5VMMS53U-Co_J8u-p.js → ishikawaDiagram-5VMMS53U-DOY3izUi.js} +1 -1
- package/web/assets/{journeyDiagram-3NMN7TZE-CrJ7j8qZ.js → journeyDiagram-3NMN7TZE-oqZgC9oJ.js} +1 -1
- package/web/assets/{kanban-definition-UXKFOSKX-Csa-Hm-V.js → kanban-definition-UXKFOSKX-HCRC0D9X.js} +1 -1
- package/web/assets/{line-CWxnZANW.js → line-qcY2eok7.js} +1 -1
- package/web/assets/{mermaid-parser.core-DDL03Yeh.js → mermaid-parser.core-Bullp1xl.js} +3 -3
- package/web/assets/{mermaid.core-CBFjpUnO.js → mermaid.core-FBmsAtMC.js} +4 -4
- package/web/assets/{mindmap-definition-YA3MSWOX-BIwMlu7Q.js → mindmap-definition-YA3MSWOX-CfgOAkVQ.js} +1 -1
- package/web/assets/mount-IY4-2elJ.js +31 -0
- package/web/assets/{packet-AYTQ26CC-ClFWscdE.js → packet-AYTQ26CC-COAmiopo.js} +1 -1
- package/web/assets/{pegDiagram-XKGWAZYB-Css6F3UD.js → pegDiagram-XKGWAZYB-BYafVbeG.js} +1 -1
- package/web/assets/{pie-WAS4IAKB-7l7k0PF3.js → pie-WAS4IAKB-ZYe346n6.js} +1 -1
- package/web/assets/{pieDiagram-E7YTZNPT-8IXxZkpM.js → pieDiagram-E7YTZNPT-DnRbaA7i.js} +1 -1
- package/web/assets/{quadrantDiagram-AXDQQJYC-lAd65vKY.js → quadrantDiagram-AXDQQJYC-B2uxyKLd.js} +1 -1
- package/web/assets/{radar-RG4KPBEZ-CXOQDEjR.js → radar-RG4KPBEZ-DwFlqYgB.js} +1 -1
- package/web/assets/{railroad-74A4TZTK-DyAhTgOw.js → railroad-74A4TZTK-DBv5jh9o.js} +1 -1
- package/web/assets/railroad-abnf-HS5TGJTU-VQxaaUVU.js +1 -0
- package/web/assets/railroad-ebnf-LZEXJU2U-DWKO1s90.js +1 -0
- package/web/assets/railroad-peg-WCYAUIDC-DvViPquF.js +1 -0
- package/web/assets/{railroadDiagram-O6MQD6OU-B4xtr-GL.js → railroadDiagram-O6MQD6OU-CIUFwDWd.js} +1 -1
- package/web/assets/{requirementDiagram-BXWQKSXE-ZEB-t5Qu.js → requirementDiagram-BXWQKSXE-BXwDlf9Q.js} +1 -1
- package/web/assets/{sankeyDiagram-P5KCCOFB-QivhI6_D.js → sankeyDiagram-P5KCCOFB-DTiRcy5E.js} +1 -1
- package/web/assets/{sequenceDiagram-WJ2MYXX4-DwJybUss.js → sequenceDiagram-WJ2MYXX4-DFPRDr4a.js} +1 -1
- package/web/assets/{settingsRoute-DIPLWa9I.js → settingsRoute-3489vHS0.js} +1 -1
- package/web/assets/{stateDiagram-D77RDMKH-CZKza48A.js → stateDiagram-D77RDMKH-CFQ-4xlY.js} +1 -1
- package/web/assets/stateDiagram-v2-MP3YSRHH-DIIQkE2r.js +1 -0
- package/web/assets/{swimlanes-42K2YHIH-BuSVwpr4.js → swimlanes-42K2YHIH-Bke6VXs0.js} +1 -1
- package/web/assets/swimlanesDiagram-VR7AAH4N-Drds9YUy.js +8 -0
- package/web/assets/{timeline-definition-24CTP7MA-D5gldQJo.js → timeline-definition-24CTP7MA-Cs2-dpWN.js} +1 -1
- package/web/assets/{treeView-Q6P3EWNA-DE5s4Bjg.js → treeView-Q6P3EWNA-Dr8vsD3U.js} +1 -1
- package/web/assets/{treemap-WGGIJYW6-B3IETKms.js → treemap-WGGIJYW6-DbvC3nsA.js} +1 -1
- package/web/assets/useStore-BDEjghiw.js +23 -0
- package/web/assets/{vennDiagram-4TSXK5OY-9OQdQ7F9.js → vennDiagram-4TSXK5OY-CdUoLWPo.js} +1 -1
- package/web/assets/{wardley-WFR3VGLG-CSVfZgVH.js → wardley-WFR3VGLG-BL7j6fb-.js} +1 -1
- package/web/assets/{wardleyDiagram-VM6X3IG4-BmOudRh6.js → wardleyDiagram-VM6X3IG4-BEVYmHWI.js} +1 -1
- package/web/assets/{xychartDiagram-S5SC5T6Z-CqyBA2yY.js → xychartDiagram-S5SC5T6Z-C9zn_1JB.js} +1 -1
- package/web/index.html +2 -2
- package/web/sw.js +1 -1
- package/web/assets/AutomationsView-CKGbGbUJ.js +0 -51
- package/web/assets/LibraryView-De-EIx0E.js +0 -2
- package/web/assets/architecture-7GRP2DOG-BbwsPIjP.js +0 -1
- package/web/assets/channel-Cb8DRt8H.js +0 -1
- package/web/assets/classDiagram-ZZMXUADV-BfpJx-fl.js +0 -1
- package/web/assets/classDiagram-v2-VYDZK3BY-BfpJx-fl.js +0 -1
- package/web/assets/eventmodeling-NTZA5JFV-D6hImpfS.js +0 -1
- package/web/assets/flowDiagram-HODETNUW-Cm1vFAOu.js +0 -1
- package/web/assets/index-Cxa5QrGG.css +0 -1
- package/web/assets/mount-Co7Zfyst.js +0 -31
- package/web/assets/railroad-abnf-HS5TGJTU-D9nETWcm.js +0 -1
- package/web/assets/railroad-ebnf-LZEXJU2U-C9tk_YfZ.js +0 -1
- package/web/assets/railroad-peg-WCYAUIDC-DKIluUM5.js +0 -1
- package/web/assets/stateDiagram-v2-MP3YSRHH-D0QqHEXP.js +0 -1
- package/web/assets/swimlanesDiagram-VR7AAH4N-BGaunElN.js +0 -8
- package/web/assets/useStore-DcyF6rrO.js +0 -22
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{Et as e,i as t}from"./useStore-BDEjghiw.js";import{M as n,j as r}from"./Sheet-C0BIPbMr.js";import{t as i}from"./jsx-runtime-NZYk81nU.js";import{t as a}from"./StatusDot-dpbztK53.js";var o={shell:`Ran`,read:`Read`,write:`Created`,edit:`Edited`,search:`Searched`,fetch:`Fetched`,plan:`Planned`,delegation:`Delegated`,unknown:`Tool`};function s(e){return typeof e==`string`?e:e==null?``:String(e)}function c(e,t=120){let n=s(e);return n.length>t?n.slice(0,t-1)+`…`:n}function l(e,t=120){return c(s(e).replace(/\s+/g,` `).trim(),t)}function u(e){let t=e.length;for(;t>0&&(e[t-1]===`/`||e[t-1]===`\\`);)t--;let n=e.slice(0,t),r=Math.max(n.lastIndexOf(`/`),n.lastIndexOf(`\\`));return r>=0?n.slice(r+1):n}function d(e){let t=String(e||``).toLowerCase();return t===`stderr`||t===`stdout`||t===`agent_output`||t===`agent-output`||t===`agentoutput`?`Agent output`:t.includes(`read`)?`Read`:t.includes(`write`)?`Created`:t.includes(`edit`)?`Edited`:t.includes(`grep`)||t.includes(`search`)||t.includes(`find`)?`Searched`:t.includes(`ls`)||t.includes(`list`)?`Listed`:t.includes(`web`)||t.includes(`fetch`)?`Fetched`:t.includes(`bash`)||t.includes(`shell`)?`Ran`:e?e.charAt(0).toUpperCase()+e.slice(1):`Tool`}function f(e,t){return t||e===`Ran`||e===`Agent output`?`terminal`:e===`Edited`?`pencil`:e===`Created`?`create`:e===`Searched`?`search`:e===`Listed`?`list`:e===`Fetched`?`globe`:e===`Delegated`?`agent`:`eye`}function p(e){let t=String(e??``).replace(/\r\n/g,`
|
|
2
2
|
`);return t===``?[]:t.split(`
|
|
3
|
-
`)}function m(e,t){let n=e.length,r=t.length,i=Array.from({length:n+1},()=>Array(r+1).fill(0));for(let a=n-1;a>=0;a--)for(let n=r-1;n>=0;n--)i[a][n]=e[a]===t[n]?i[a+1][n+1]+1:Math.max(i[a+1][n],i[a][n+1]);return i}var h=900;function g(e,t){let n=p(e),r=p(t);if(n.length>h||r.length>h){let i=[];if(e)for(let e of n)i.push({type:`del`,text:e});if(t)for(let e of r)i.push({type:`add`,text:e});return i}let i=m(n,r),a=[],o=0,s=0;for(;o<n.length&&s<r.length;)n[o]===r[s]?(a.push({type:`ctx`,text:n[o]}),o++,s++):i[o+1][s]>=i[o][s+1]?(a.push({type:`del`,text:n[o]}),o++):(a.push({type:`add`,text:r[s]}),s++);for(;o<n.length;)a.push({type:`del`,text:n[o++]});for(;s<r.length;)a.push({type:`add`,text:r[s++]});return a}function _(e){let t=[],n=[],r=()=>{n.length>8?(t.push(n[0],n[1],n[2]),t.push({type:`skip`,count:n.length-6}),t.push(n[n.length-3],n[n.length-2],n[n.length-1])):t.push(...n),n=[]};for(let i of e)i.type===`ctx`?n.push(i):(r(),t.push(i));return r(),t}function v(e){let t=0,n=0;for(let r of e)r.type===`add`?t++:r.type===`del`&&n++;return{added:t,removed:n}}function y(e,t){for(let n of t)if(e?.[n]!=null&&e[n]!==``)return s(e[n])}var b=[`oldText`,`oldString`,`old_string`,`old`,`before`],x=[`newText`,`newString`,`new_string`,`new`,`after`];function S(e,t=!0){let n=Array.isArray(e?.edits)?e.edits:Array.isArray(e?.replacements)?e.replacements:Array.isArray(e?.changes)?e.changes:[e],r=[];for(let e of n){let n=y(e,b)??``,i=y(e,x)??``;if(!n&&!i)continue;let{added:a,removed:o}=t?v(g(n,i)):{added:0,removed:0};r.push({oldText:n,newText:i,added:a,removed:o})}return r}function C(e,t,n,r={}){let i=r.diffStats!==!1,a=String(e||``).toLowerCase(),s=t&&typeof t==`object`?t:{},l=d(a),m=y(s,[`path`,`file`,`filePath`,`file_path`,`pathname`]),h=y(s,[`command`,`cmd`,`shell`]),_=c(y(s,[`query`,`q`,`pattern`,`search`]),120),b=y(s,[`output`,`stdout`,`stderr`,`message`,`delta`]),x=y(s,[`stream`]),C=l===`Agent output`,T=C?`Agent output`:h||a.includes(`bash`)||a.includes(`shell`)?`Bash`:l===`Tool`?String(e||`Tool`):d(a),E=[],D;if(n?n.kind===`write`:a.includes(`write`)){let e=y(s,[`content`,`text`,`contents`,`data`,`file_text`])??``;e&&(E=[{oldText:``,newText:e,added:i?p(e.replace(/\r?\n$/,``)).length:0,removed:0,label:`New file`}])}else if(a.includes(`edit`)){let e=S(s,i);E=e,e.length>1&&(D=e.length)}let O=0,k=0;for(let e of E)O+=e.added,k+=e.removed;let A={verb:l,glyph:f(l,!!h),title:T,path:m,target:m?u(m):void 0,command:h,query:_||void 0,output:b,stream:x,added:O,removed:k,diffs:E,edits:D};if(n&&!C){if(A.verb=o[n.kind]??A.verb,A.glyph=f(A.verb,n.kind===`shell`),n.kind===`shell`)A.command=n.command,A.title=`Bash`;else if(n.kind===`read`||n.kind===`write`||n.kind===`edit`){if(A.path=n.path,A.target=u(n.path),A.title=A.verb,n.kind===`edit`&&A.diffs.length===0&&(n.oldText||n.newText)){let e=n.oldText??``,t=n.newText??``,{added:r,removed:a}=i?v(g(e,t)):{added:0,removed:0};A.diffs=[{oldText:e,newText:t,added:r,removed:a}],A.added=r,A.removed=a}}else n.kind===`search`?(A.query=n.query,A.title=`Search`,n.path&&(A.path=n.path)):n.kind===`fetch`?(A.query=n.url,A.title=`Fetch`):n.kind===`plan`?(A.title=`Plan`,n.text&&(A.query=c(n.text,120))):n.kind===`delegation`&&(A.title=n.label?`Delegated → ${n.label}`:`Delegated`,n.label&&(A.target=n.label),n.description&&(A.query=c(n.description,120)))}return n?.result&&(w(n)&&(A.isError=!0),typeof n.result.exitCode==`number`&&(A.exitCode=n.result.exitCode),n.result.truncated&&(A.truncated=!0)),A}function w(e){return!!(e?.result?.isError||typeof e?.result?.exitCode==`number`&&e.result.exitCode!==0)}function T(e){return l(e.command||e.path||e.target||e.query||e.output,120)}function E(e){let t=new Set,n=new Set,r=0,i=0,a=0,o=0;for(let s of e){let e=C(s.name,s.input,s.detail,{diffStats:!1});e.isError&&o++,e.verb===`Agent output`?i++:e.verb===`Delegated`?a++:e.command?r++:e.verb===`Edited`||e.verb===`Created`||e.diffs.length?t.add(e.path||`#${t.size}`):n.add(e.path||e.query||`#${n.size}`)}let s=t.size,c=n.size,l=[],u=(e,t,n)=>`${e===1?`a`:e} ${e===1?t:n}`;c&&l.push(`Read ${u(c,`file`,`files`)}`),r&&l.push(`ran ${u(r,`command`,`commands`)}`),s&&l.push(`edited ${u(s,`file`,`files`)}`),a&&l.push(`delegated ${u(a,`task`,`tasks`)}`),i&&l.push(i===1?`agent output`:`${i} agent output streams`);let d=o?` · ${o} failed`:``;if(!l.length)return`${e.length===1?`1 tool call`:`${e.length} tool calls`}${d}`;let f=l.join(`, `);return`${f.charAt(0).toUpperCase()}${f.slice(1)}${d}`}var D=e(),O=i();function k({size:e=`md`,tone:t=`accent`}){return(0,O.jsx)(`span`,{className:`spinner`,"data-size":e,"data-tone":t,"aria-hidden":!0})}var A=28;function j(){let e=[`audio/webm;codecs=opus`,`audio/webm`,`audio/mp4`,`audio/ogg;codecs=opus`,`audio/ogg`],t=globalThis.MediaRecorder?.isTypeSupported;if(typeof t==`function`)for(let n of e)try{if(t(n))return n}catch{}return``}function M(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{let e=String(r.result||``);t(e.includes(`,`)?e.split(`,`).pop()||``:e)},r.onerror=()=>n(r.error||Error(`Could not read the recording.`)),r.readAsDataURL(e)})}function N(e){let t=Math.floor(e/1e3),n=Math.floor(t/60),r=t%60;return`${n}:${String(r).padStart(2,`0`)}`}function P({transcribe:e,onResult:t,onCancel:n,onError:i,stop:a=0}){let[o,s]=(0,D.useState)(0),[c,l]=(0,D.useState)(!1);r(()=>S());let u=(0,D.useRef)(null),d=(0,D.useRef)(null),f=(0,D.useRef)([]),p=(0,D.useRef)(null),m=(0,D.useRef)(null),h=(0,D.useRef)([]),g=(0,D.useRef)(!1),_=(0,D.useRef)(0);function v(){m.current!=null&&cancelAnimationFrame(m.current),m.current=null;try{d.current?.getTracks().forEach(e=>e.stop())}catch{}d.current=null;try{p.current?.close()}catch{}p.current=null}(0,D.useEffect)(()=>{let e=!1,t=navigator?.mediaDevices;if(!t?.getUserMedia||globalThis.MediaRecorder===void 0){i(`Voice input isn't supported in this browser.`),n();return}return t.getUserMedia({audio:!0}).then(t=>{if(e){t.getTracks().forEach(e=>e.stop());return}d.current=t;let n=j(),r=n?new MediaRecorder(t,{mimeType:n}):new MediaRecorder(t);u.current=r,r.ondataavailable=e=>{e.data&&e.data.size&&f.current.push(e.data)},r.onstop=()=>{if(v(),g.current)return;let e=r.mimeType||n||`audio/webm`;b(new Blob(f.current,{type:e}),e)},r.start(),_.current=Date.now(),y(t)}).catch(()=>{i(`Microphone access was denied.`),n()}),()=>{e=!0,g.current=!0;try{u.current&&u.current.state!==`inactive`&&u.current.stop()}catch{}v()}},[]),(0,D.useEffect)(()=>{let e=setInterval(()=>{_.current&&s(Date.now()-_.current)},250);return()=>clearInterval(e)},[]);function y(e){try{let t=new(window.AudioContext||window.webkitAudioContext);p.current=t;let n=t.createMediaStreamSource(e),r=t.createAnalyser();r.fftSize=64,n.connect(r);let i=new Uint8Array(r.frequencyBinCount),a=()=>{r.getByteFrequencyData(i);for(let e=0;e<A;e++){let t=h.current[e];if(!t)continue;let n=(i[Math.floor(e/A*i.length)]??0)/255;t.style.transform=`scaleY(${Math.max(.12,n)})`}m.current=requestAnimationFrame(a)};m.current=requestAnimationFrame(a)}catch{}}async function b(r,a){l(!0);try{if(!r.size)throw Error(`Nothing was recorded.`);let o=await e(await M(r),a);if(g.current)return;o?t(o):i(`No speech was detected.`),n()}catch(e){i(e instanceof Error?e.message:String(e)),n()}finally{l(!1)}}(0,D.useEffect)(()=>{a&&x()},[a]);function x(){if(c)return;let e=u.current;if(e&&e.state!==`inactive`)try{e.stop()}catch{n()}else S()}function S(){g.current=!0;try{u.current&&u.current.state!==`inactive`&&u.current.stop()}catch{}v(),n()}return(0,O.jsxs)(`div`,{className:`voice-bar`,role:`group`,"aria-label":`Voice recording`,children:[(0,O.jsx)(`button`,{type:`button`,className:`voice-btn cancel`,onClick:S,"aria-label":`Cancel recording`,children:`✕`}),(0,O.jsx)(`div`,{className:`voice-wave`,"aria-hidden":!0,children:Array.from({length:A},(e,t)=>(0,O.jsx)(`span`,{className:`voice-bar-tick`,ref:e=>{h.current[t]=e}},t))}),(0,O.jsx)(`span`,{className:`voice-time`,children:c?`…`:N(o)}),(0,O.jsx)(`button`,{type:`button`,className:`voice-btn confirm`,onClick:x,disabled:c,"aria-label":`Use recording`,children:c?(0,O.jsx)(k,{size:`sm`,tone:`inverse`}):`✓`})]})}function F(){return typeof window<`u`&&!!(window.SpeechRecognition||window.webkitSpeechRecognition)}function I({onResult:e,onCancel:t,onError:n,stop:r=0}){let[i,o]=(0,D.useState)(``),s=(0,D.useRef)(null),c=(0,D.useRef)(``),l=(0,D.useRef)(``),u=(0,D.useRef)(!1),d=r=>{if(!u.current){u.current=!0;try{r?s.current?.stop():s.current?.abort()}catch{}if(r){let t=`${c.current} ${l.current}`.trim();t?e(t):n(`No speech was detected.`)}t()}};return(0,D.useEffect)(()=>{let e=window.SpeechRecognition||window.webkitSpeechRecognition;if(!e){n(`Voice input isn't supported in this browser.`),t();return}let r=new e;s.current=r,r.continuous=!0,r.interimResults=!0;try{r.lang=navigator.language||`en-US`}catch{}r.onresult=e=>{let t=``;for(let n=e.resultIndex;n<e.results.length;n++){let r=e.results[n];r.isFinal?c.current+=r[0].transcript:t+=r[0].transcript}l.current=t,o(`${c.current} ${t}`.trim())},r.onerror=e=>{let t=e?.error;t!==`no-speech`&&t!==`aborted`&&(n(t===`not-allowed`||t===`service-not-allowed`?`Microphone access was denied.`:`Dictation error.`),d(!1))},r.onend=()=>d(!0);try{r.start()}catch{n(`Could not start dictation.`),t()}return()=>{u.current=!0;try{r.abort()}catch{}}},[]),(0,D.useEffect)(()=>{if(r)try{s.current?.stop()}catch{d(!0)}},[r]),(0,O.jsxs)(`div`,{className:`voice-bar`,role:`group`,"aria-label":`Voice dictation`,children:[(0,O.jsx)(`button`,{type:`button`,className:`voice-btn cancel`,onClick:()=>d(!1),"aria-label":`Cancel dictation`,children:`✕`}),(0,O.jsxs)(`div`,{className:`voice-listening`,children:[(0,O.jsx)(a,{status:`working`}),(0,O.jsx)(`span`,{className:`voice-listening-text`,children:i||`Listening…`})]}),(0,O.jsx)(`button`,{type:`button`,className:`voice-btn confirm`,onClick:()=>{try{s.current?.stop()}catch{d(!0)}},"aria-label":`Use dictation`,children:`✓`})]})}function L(e){return!e||e.providers.some(e=>e.configured)?`server`:F()?`webspeech`:null}var R=`Add a Groq or OpenAI key in Settings → Voice input to use voice input.`;function z({engine:e,stop:n,onResult:r,onCancel:i,onError:a}){return e===`server`?(0,O.jsx)(P,{transcribe:(e,n)=>t.transcribe(e,n),stop:n,onResult:r,onCancel:i,onError:a}):(0,O.jsx)(I,{stop:n,onResult:r,onCancel:i,onError:a})}var B=n();function V({added:e,removed:t}){return!e&&!t?null:(0,O.jsxs)(`span`,{className:`tool-stat`,children:[e>0&&(0,O.jsxs)(`span`,{className:`add`,children:[`+`,e]}),t>0&&(0,O.jsxs)(`span`,{className:`del`,children:[`−`,t]})]})}var H=420,U=(0,D.memo)(function({hunks:e,single:t,mode:n=`unified`}){let r=H;return(0,O.jsx)(`div`,{className:`diff-viewer diff-${n}`,children:e.map((i,a)=>{let o=_(g(i.oldText,i.newText)),s=[];for(let e=0;e<o.length;e++){if(r<=0){s.push((0,O.jsxs)(`div`,{className:`diff-line skip`,children:[(0,O.jsx)(`span`,{className:`diff-gutter`,children:`⋯`}),(0,O.jsx)(`span`,{children:`Diff truncated`})]},`t${a}`));break}let t=o[e];if(t.type===`skip`){s.push(n===`split`?(0,O.jsxs)(`div`,{className:`diff-row skip`,children:[(0,O.jsxs)(`div`,{className:`diff-side`,children:[(0,O.jsx)(`span`,{className:`diff-gutter`,children:`⋯`}),(0,O.jsxs)(`span`,{children:[t.count,` unchanged`]})]}),(0,O.jsxs)(`div`,{className:`diff-side`,children:[(0,O.jsx)(`span`,{className:`diff-gutter`,children:`⋯`}),(0,O.jsxs)(`span`,{children:[t.count,` unchanged`]})]})]},e):(0,O.jsxs)(`div`,{className:`diff-line skip`,children:[(0,O.jsx)(`span`,{className:`diff-gutter`,children:`⋯`}),(0,O.jsxs)(`span`,{children:[t.count,` unchanged lines`]})]},e));continue}if(r--,n===`split`){let n=t.type===`add`?null:t.text||` `,r=t.type===`del`?null:t.text||` `;s.push((0,O.jsxs)(`div`,{className:`diff-row`,children:[(0,O.jsx)(`div`,{className:`diff-side ${t.type===`del`?`del`:t.type===`ctx`?``:`empty`}`,children:n!==null&&(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`span`,{className:`diff-gutter`,children:t.type===`del`?`−`:` `}),(0,O.jsx)(`span`,{className:`diff-code`,children:n})]})}),(0,O.jsx)(`div`,{className:`diff-side ${t.type===`add`?`add`:t.type===`ctx`?``:`empty`}`,children:r!==null&&(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`span`,{className:`diff-gutter`,children:t.type===`add`?`+`:` `}),(0,O.jsx)(`span`,{className:`diff-code`,children:r})]})})]},e));continue}let i=t.type===`add`?`+`:t.type===`del`?`−`:` `;s.push((0,O.jsxs)(`div`,{className:`diff-line ${t.type}`,children:[(0,O.jsx)(`span`,{className:`diff-gutter`,children:i}),(0,O.jsx)(`span`,{className:`diff-code`,children:t.text||` `})]},e))}let c=e.length>1?`Hunk ${a+1}`:i.label||t||`Diff`;return(0,O.jsxs)(`div`,{className:`diff-hunk`,children:[(0,O.jsxs)(`div`,{className:`diff-hunk-title`,children:[(0,O.jsx)(`span`,{children:c}),(0,O.jsx)(V,{added:i.added,removed:i.removed})]}),s]},a)})})}),W={scale:1,x:0,y:0},G=8;function K({src:e,name:t,current:n=0,count:i=1,onNavigate:a,onClose:o}){let s=(0,D.useRef)(null),c=(0,D.useRef)(null),l=(0,D.useRef)(null),[u,d]=(0,D.useState)(W),f=(0,D.useRef)(W),[p,m]=(0,D.useState)(!1),[h,g]=(0,D.useState)(!1),_=(0,D.useRef)(new Map),v=(0,D.useRef)(null);r(o);let y=(0,D.useCallback)(e=>{let t=c.current,n=l.current;if(!t||!n)return;let r=Math.max(1,Math.min(G,e.scale)),i=Math.max(0,(n.clientWidth*r-t.clientWidth)/2),a=Math.max(0,(n.clientHeight*r-t.clientHeight)/2);f.current={scale:r,x:Math.max(-i,Math.min(i,e.x)),y:Math.max(-a,Math.min(a,e.y))},d(f.current)},[]),b=(0,D.useCallback)((e,t={x:0,y:0})=>{let n=f.current,r=Math.max(1,Math.min(G,e))/n.scale;y({scale:n.scale*r,x:t.x-(t.x-n.x)*r,y:t.y-(t.y-n.y)*r})},[y]);return(0,D.useEffect)(()=>{let e=s.current,t=document.activeElement;e.focus();let n=e=>e.stopPropagation(),r=e=>{e.preventDefault(),e.stopPropagation()},i=e=>{r(e);let t=c.current.getBoundingClientRect();if(e.ctrlKey||e.metaKey)b(f.current.scale*Math.exp(-e.deltaY*.01),{x:e.clientX-t.x-t.width/2,y:e.clientY-t.y-t.height/2});else{let n=e.deltaMode===1?16:e.deltaMode===2?t.height:1;y({...f.current,x:f.current.x-e.deltaX*n,y:f.current.y-e.deltaY*n})}};e.addEventListener(`wheel`,i,{passive:!1}),e.addEventListener(`touchmove`,r,{passive:!1});for(let t of[`touchstart`,`touchend`,`touchcancel`])e.addEventListener(t,n);e.addEventListener(`gesturestart`,r),e.addEventListener(`gesturechange`,r);let a=new ResizeObserver(()=>y(f.current));return a.observe(c.current),()=>{e.removeEventListener(`wheel`,i),e.removeEventListener(`touchmove`,r);for(let t of[`touchstart`,`touchend`,`touchcancel`])e.removeEventListener(t,n);e.removeEventListener(`gesturestart`,r),e.removeEventListener(`gesturechange`,r),a.disconnect(),t?.isConnected&&t.focus({preventScroll:!0})}},[y,b]),(0,B.createPortal)((0,O.jsxs)(`div`,{ref:s,className:`image-viewer`,role:`dialog`,"aria-modal":`true`,"aria-label":`${t} — Image ${n+1} of ${i}`,tabIndex:-1,onKeyDown:e=>{if(e.key===`Tab`){let t=[...s.current.querySelectorAll(`button:not(:disabled)`)],n=t.indexOf(document.activeElement);e.preventDefault(),t[n<0?e.shiftKey?t.length-1:0:(n+(e.shiftKey?-1:1)+t.length)%t.length]?.focus();return}[`+`,`=`,`-`,`0`,`ArrowLeft`,`ArrowRight`,`ArrowUp`,`ArrowDown`].includes(e.key)&&(e.preventDefault(),e.stopPropagation(),e.key===`+`||e.key===`=`?b(f.current.scale*1.5):e.key===`-`?b(f.current.scale/1.5):e.key===`0`?y(W):f.current.scale>1?y({...f.current,x:f.current.x+(e.key===`ArrowLeft`?80:e.key===`ArrowRight`?-80:0),y:f.current.y+(e.key===`ArrowUp`?80:e.key===`ArrowDown`?-80:0)}):(e.key===`ArrowLeft`||e.key===`ArrowRight`)&&a?.(e.key===`ArrowLeft`?-1:1))},children:[(0,O.jsxs)(`div`,{ref:c,className:`image-viewer-viewport`,"data-zoomed":u.scale>1,onDoubleClick:e=>{let t=e.currentTarget.getBoundingClientRect();b(f.current.scale>1?1:2,{x:e.clientX-t.x-t.width/2,y:e.clientY-t.y-t.height/2})},onPointerDown:e=>{if(e.button!==0)return;e.currentTarget.setPointerCapture(e.pointerId);let t={x:e.clientX,y:e.clientY};_.current.set(e.pointerId,t),v.current=_.current.size===1&&f.current.scale===1?t:null},onPointerMove:e=>{let t=_.current.get(e.pointerId);if(!t)return;let n={x:e.clientX,y:e.clientY},r=[..._.current.entries()].find(([t])=>t!==e.pointerId)?.[1];if(r){let i=Math.hypot(t.x-r.x,t.y-r.y),a=e.currentTarget.getBoundingClientRect(),o={x:(t.x+r.x)/2-a.x-a.width/2,y:(t.y+r.y)/2-a.y-a.height/2};i>0&&b(f.current.scale*Math.hypot(n.x-r.x,n.y-r.y)/i,o),y({...f.current,x:f.current.x+(n.x-t.x)/2,y:f.current.y+(n.y-t.y)/2})}else f.current.scale>1&&y({...f.current,x:f.current.x+n.x-t.x,y:f.current.y+n.y-t.y});_.current.set(e.pointerId,n)},onPointerUp:e=>{let t=v.current;if(_.current.delete(e.pointerId),v.current=null,!t||f.current.scale!==1)return;let n=e.clientX-t.x,r=e.clientY-t.y;Math.abs(n)>=48&&Math.abs(n)>Math.abs(r)&&a?.(n<0?1:-1)},onPointerCancel:()=>{_.current.clear(),v.current=null},onLostPointerCapture:e=>{_.current.delete(e.pointerId),v.current=null},children:[e&&!h&&(0,O.jsx)(`img`,{ref:l,className:`image-viewer-img`,src:e,alt:t,draggable:!1,onLoad:()=>m(!0),onError:()=>g(!0),style:{transform:`translate(${u.x}px, ${u.y}px) scale(${u.scale})`}}),h?(0,O.jsx)(`p`,{className:`image-viewer-message`,role:`alert`,children:`Unable to load image.`}):!p&&(0,O.jsx)(`span`,{role:`status`,"aria-label":`Loading image`,children:(0,O.jsx)(k,{size:`lg`,tone:`inverse`})})]}),(0,O.jsxs)(`div`,{className:`image-viewer-tools`,role:`group`,"aria-label":`Image zoom`,children:[(0,O.jsx)(`button`,{type:`button`,className:`btn icon`,"aria-label":`Zoom out`,disabled:!p||u.scale<=1,onClick:()=>b(u.scale/1.5),children:`−`}),(0,O.jsxs)(`button`,{type:`button`,className:`btn`,"aria-label":`Fit image`,disabled:!p,onClick:()=>y(W),children:[Math.round(u.scale*100),`%`]}),(0,O.jsx)(`button`,{type:`button`,className:`btn icon`,"aria-label":`Zoom in`,disabled:!p||u.scale>=G,onClick:()=>b(u.scale*1.5),children:`+`})]}),i>1&&(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`button`,{type:`button`,className:`image-viewer-nav prev`,"aria-label":`Previous image`,onClick:()=>a?.(-1),children:`‹`}),(0,O.jsx)(`button`,{type:`button`,className:`image-viewer-nav next`,"aria-label":`Next image`,onClick:()=>a?.(1),children:`›`}),(0,O.jsxs)(`div`,{className:`image-viewer-count`,children:[n+1,` / `,i]})]}),(0,O.jsx)(`button`,{type:`button`,className:`image-viewer-close`,onClick:o,"aria-label":`Close`,children:`×`})]}),document.body)}function q(e){let t=[e.added?`+${e.added}`:``,e.removed?`−${e.removed}`:``].filter(Boolean).join(`/`);return`\`${e.path}\` (${e.status}${t?`, ${t}`:``})`}function J(e){return`Review the change to ${q(e)}. Explain why it changed, identify correctness or security risks, and suggest missing tests or follow-up edits.`}function Y(e,t=[]){let n=e.slice(0,30),r=e.length-n.length,i=n.map(e=>`- ${q(e)}`);r>0&&i.push(`- …and ${r} more changed file${r===1?``:`s`}`);let a=t.filter(e=>e.status===`failed`).map(e=>e.name),o=a.length?`\n\nFailed checks to investigate: ${a.join(`, `)}.`:``;return`Review this turn's code changes:\n${i.join(`
|
|
4
|
-
`)}${o}\n\nFocus on correctness, regressions, security, and missing tests. Recommend concrete fixes where needed.`}var X={added:`+`,modified:`~`,deleted:`−`};function Z(e){if(typeof e.added==`number`&&typeof e.removed==`number`)return{added:e.added,removed:e.removed};if(e.binary)return{added:0,removed:0};let t=0,n=0;for(let r of g(e.oldText,e.newText))r.type===`add`?t++:r.type===`del`&&n++;return{added:t,removed:n}}function Q(e){if(!e)return``;let t=Math.max(0,Math.round((Date.now()-e)/1e3));if(t<60)return`${t}s ago`;let n=Math.round(t/60);return n<60?`${n}m ago`:`${Math.round(n/60)}h ago`}function ee({file:e,mode:n}){let[r,i]=(0,D.useState)(!1),[a,o]=(0,D.useState)(!1),{added:s,removed:c}=(0,D.useMemo)(()=>Z(e),[e]);return(0,O.jsxs)(`div`,{className:`changes-file status-${e.status}`,children:[(0,O.jsxs)(`div`,{className:`changes-file-head`,children:[(0,O.jsxs)(`button`,{type:`button`,className:`changes-file-open`,onClick:()=>i(e=>!e),children:[(0,O.jsx)(`span`,{className:`changes-file-glyph`,"aria-hidden":!0,children:X[e.status]}),(0,O.jsx)(`span`,{className:`changes-file-path`,children:e.path}),(s>0||c>0)&&(0,O.jsxs)(`span`,{className:`changes-file-stat`,children:[s>0&&(0,O.jsxs)(`span`,{className:`add`,children:[`+`,s]}),c>0&&(0,O.jsxs)(`span`,{className:`del`,children:[`−`,c]})]})]}),(0,O.jsxs)(`span`,{className:`changes-file-actions`,children:[(0,O.jsx)(`button`,{type:`button`,className:`changes-file-act`,onClick:()=>t.prefillComposer(J({...e,added:s,removed:c})),title:`Ask the agent about this file`,children:`Ask`}),(0,O.jsx)(`button`,{type:`button`,className:`changes-file-act danger`,onClick:()=>{o(!0),t.revertFile(e.path,e.status===`added`?null:e.oldText)},disabled:a,title:`Revert this file to its pre-turn state`,children:a?`…`:`Revert`})]})]}),r&&!e.binary&&(0,O.jsx)(
|
|
3
|
+
`)}function m(e,t){let n=e.length,r=t.length,i=Array.from({length:n+1},()=>Array(r+1).fill(0));for(let a=n-1;a>=0;a--)for(let n=r-1;n>=0;n--)i[a][n]=e[a]===t[n]?i[a+1][n+1]+1:Math.max(i[a+1][n],i[a][n+1]);return i}var h=900;function g(e,t){let n=p(e),r=p(t);if(n.length>h||r.length>h){let i=[];if(e)for(let e of n)i.push({type:`del`,text:e});if(t)for(let e of r)i.push({type:`add`,text:e});return i}let i=m(n,r),a=[],o=0,s=0;for(;o<n.length&&s<r.length;)n[o]===r[s]?(a.push({type:`ctx`,text:n[o]}),o++,s++):i[o+1][s]>=i[o][s+1]?(a.push({type:`del`,text:n[o]}),o++):(a.push({type:`add`,text:r[s]}),s++);for(;o<n.length;)a.push({type:`del`,text:n[o++]});for(;s<r.length;)a.push({type:`add`,text:r[s++]});return a}function _(e){let t=[],n=[],r=()=>{n.length>8?(t.push(n[0],n[1],n[2]),t.push({type:`skip`,count:n.length-6}),t.push(n[n.length-3],n[n.length-2],n[n.length-1])):t.push(...n),n=[]};for(let i of e)i.type===`ctx`?n.push(i):(r(),t.push(i));return r(),t}function v(e){let t=0,n=0;for(let r of e)r.type===`add`?t++:r.type===`del`&&n++;return{added:t,removed:n}}function y(e,t){for(let n of t)if(e?.[n]!=null&&e[n]!==``)return s(e[n])}var b=[`oldText`,`oldString`,`old_string`,`old`,`before`],x=[`newText`,`newString`,`new_string`,`new`,`after`];function S(e,t=!0){let n=Array.isArray(e?.edits)?e.edits:Array.isArray(e?.replacements)?e.replacements:Array.isArray(e?.changes)?e.changes:[e],r=[];for(let e of n){let n=y(e,b)??``,i=y(e,x)??``;if(!n&&!i)continue;let{added:a,removed:o}=t?v(g(n,i)):{added:0,removed:0};r.push({oldText:n,newText:i,added:a,removed:o})}return r}function C(e,t,n,r={}){let i=r.diffStats!==!1,a=String(e||``).toLowerCase(),s=t&&typeof t==`object`?t:{},l=d(a),m=y(s,[`path`,`file`,`filePath`,`file_path`,`pathname`]),h=y(s,[`command`,`cmd`,`shell`]),_=c(y(s,[`query`,`q`,`pattern`,`search`]),120),b=y(s,[`output`,`stdout`,`stderr`,`message`,`delta`]),x=y(s,[`stream`]),C=l===`Agent output`,T=C?`Agent output`:h||a.includes(`bash`)||a.includes(`shell`)?`Bash`:l===`Tool`?String(e||`Tool`):d(a),E=[],D;if(n?n.kind===`write`:a.includes(`write`)){let e=y(s,[`content`,`text`,`contents`,`data`,`file_text`])??``;e&&(E=[{oldText:``,newText:e,added:i?p(e.replace(/\r?\n$/,``)).length:0,removed:0,label:`New file`}])}else if(a.includes(`edit`)){let e=S(s,i);E=e,e.length>1&&(D=e.length)}let O=0,k=0;for(let e of E)O+=e.added,k+=e.removed;let A={verb:l,glyph:f(l,!!h),title:T,path:m,target:m?u(m):void 0,command:h,query:_||void 0,output:b,stream:x,added:O,removed:k,diffs:E,edits:D};if(n&&!C){if(A.verb=o[n.kind]??A.verb,A.glyph=f(A.verb,n.kind===`shell`),n.kind===`shell`)A.command=n.command,A.title=`Bash`;else if(n.kind===`read`||n.kind===`write`||n.kind===`edit`){if(A.path=n.path,A.target=u(n.path),A.title=A.verb,n.kind===`edit`&&A.diffs.length===0&&(n.oldText||n.newText)){let e=n.oldText??``,t=n.newText??``,{added:r,removed:a}=i?v(g(e,t)):{added:0,removed:0};A.diffs=[{oldText:e,newText:t,added:r,removed:a}],A.added=r,A.removed=a}}else n.kind===`search`?(A.query=n.query,A.title=`Search`,n.path&&(A.path=n.path)):n.kind===`fetch`?(A.query=n.url,A.title=`Fetch`):n.kind===`plan`?(A.title=`Plan`,n.text&&(A.query=c(n.text,120))):n.kind===`delegation`&&(A.title=n.label?`Delegated → ${n.label}`:`Delegated`,n.label&&(A.target=n.label),n.description&&(A.query=c(n.description,120)))}return n?.result&&(w(n)&&(A.isError=!0),typeof n.result.exitCode==`number`&&(A.exitCode=n.result.exitCode),n.result.truncated&&(A.truncated=!0)),A}function w(e){return!!(e?.result?.isError||typeof e?.result?.exitCode==`number`&&e.result.exitCode!==0)}function T(e){return l(e.command||e.path||e.target||e.query||e.output,120)}function E(e){let t=new Set,n=new Set,r=0,i=0,a=0,o=0;for(let s of e){let e=C(s.name,s.input,s.detail,{diffStats:!1});e.isError&&o++,e.verb===`Agent output`?i++:e.verb===`Delegated`?a++:e.command?r++:e.verb===`Edited`||e.verb===`Created`||e.diffs.length?t.add(e.path||`#${t.size}`):n.add(e.path||e.query||`#${n.size}`)}let s=t.size,c=n.size,l=[],u=(e,t,n)=>`${e===1?`a`:e} ${e===1?t:n}`;c&&l.push(`Read ${u(c,`file`,`files`)}`),r&&l.push(`ran ${u(r,`command`,`commands`)}`),s&&l.push(`edited ${u(s,`file`,`files`)}`),a&&l.push(`delegated ${u(a,`task`,`tasks`)}`),i&&l.push(i===1?`agent output`:`${i} agent output streams`);let d=o?` · ${o} failed`:``;if(!l.length)return`${e.length===1?`1 tool call`:`${e.length} tool calls`}${d}`;let f=l.join(`, `);return`${f.charAt(0).toUpperCase()}${f.slice(1)}${d}`}var D=e(),O=i();function k({size:e=`md`,tone:t=`accent`}){return(0,O.jsx)(`span`,{className:`spinner`,"data-size":e,"data-tone":t,"aria-hidden":!0})}var A=28;function j(){let e=[`audio/webm;codecs=opus`,`audio/webm`,`audio/mp4`,`audio/ogg;codecs=opus`,`audio/ogg`],t=globalThis.MediaRecorder?.isTypeSupported;if(typeof t==`function`)for(let n of e)try{if(t(n))return n}catch{}return``}function M(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{let e=String(r.result||``);t(e.includes(`,`)?e.split(`,`).pop()||``:e)},r.onerror=()=>n(r.error||Error(`Could not read the recording.`)),r.readAsDataURL(e)})}function N(e){let t=Math.floor(e/1e3),n=Math.floor(t/60),r=t%60;return`${n}:${String(r).padStart(2,`0`)}`}function P({transcribe:e,onResult:t,onCancel:n,onError:i,stop:a=0}){let[o,s]=(0,D.useState)(0),[c,l]=(0,D.useState)(!1);r(()=>S());let u=(0,D.useRef)(null),d=(0,D.useRef)(null),f=(0,D.useRef)([]),p=(0,D.useRef)(null),m=(0,D.useRef)(null),h=(0,D.useRef)([]),g=(0,D.useRef)(!1),_=(0,D.useRef)(0);function v(){m.current!=null&&cancelAnimationFrame(m.current),m.current=null;try{d.current?.getTracks().forEach(e=>e.stop())}catch{}d.current=null;try{p.current?.close()}catch{}p.current=null}(0,D.useEffect)(()=>{let e=!1,t=navigator?.mediaDevices;if(!t?.getUserMedia||globalThis.MediaRecorder===void 0){i(`Voice input isn't supported in this browser.`),n();return}return t.getUserMedia({audio:!0}).then(t=>{if(e){t.getTracks().forEach(e=>e.stop());return}d.current=t;let n=j(),r=n?new MediaRecorder(t,{mimeType:n}):new MediaRecorder(t);u.current=r,r.ondataavailable=e=>{e.data&&e.data.size&&f.current.push(e.data)},r.onstop=()=>{if(v(),g.current)return;let e=r.mimeType||n||`audio/webm`;b(new Blob(f.current,{type:e}),e)},r.start(),_.current=Date.now(),y(t)}).catch(()=>{i(`Microphone access was denied.`),n()}),()=>{e=!0,g.current=!0;try{u.current&&u.current.state!==`inactive`&&u.current.stop()}catch{}v()}},[]),(0,D.useEffect)(()=>{let e=setInterval(()=>{_.current&&s(Date.now()-_.current)},250);return()=>clearInterval(e)},[]);function y(e){try{let t=new(window.AudioContext||window.webkitAudioContext);p.current=t;let n=t.createMediaStreamSource(e),r=t.createAnalyser();r.fftSize=64,n.connect(r);let i=new Uint8Array(r.frequencyBinCount),a=()=>{r.getByteFrequencyData(i);for(let e=0;e<A;e++){let t=h.current[e];if(!t)continue;let n=(i[Math.floor(e/A*i.length)]??0)/255;t.style.transform=`scaleY(${Math.max(.12,n)})`}m.current=requestAnimationFrame(a)};m.current=requestAnimationFrame(a)}catch{}}async function b(r,a){l(!0);try{if(!r.size)throw Error(`Nothing was recorded.`);let o=await e(await M(r),a);if(g.current)return;o?t(o):i(`No speech was detected.`),n()}catch(e){i(e instanceof Error?e.message:String(e)),n()}finally{l(!1)}}(0,D.useEffect)(()=>{a&&x()},[a]);function x(){if(c)return;let e=u.current;if(e&&e.state!==`inactive`)try{e.stop()}catch{n()}else S()}function S(){g.current=!0;try{u.current&&u.current.state!==`inactive`&&u.current.stop()}catch{}v(),n()}return(0,O.jsxs)(`div`,{className:`voice-bar`,role:`group`,"aria-label":`Voice recording`,children:[(0,O.jsx)(`button`,{type:`button`,className:`voice-btn cancel`,onClick:S,"aria-label":`Cancel recording`,children:`✕`}),(0,O.jsx)(`div`,{className:`voice-wave`,"aria-hidden":!0,children:Array.from({length:A},(e,t)=>(0,O.jsx)(`span`,{className:`voice-bar-tick`,ref:e=>{h.current[t]=e}},t))}),(0,O.jsx)(`span`,{className:`voice-time`,children:c?`…`:N(o)}),(0,O.jsx)(`button`,{type:`button`,className:`voice-btn confirm`,onClick:x,disabled:c,"aria-label":`Use recording`,children:c?(0,O.jsx)(k,{size:`sm`,tone:`inverse`}):`✓`})]})}function F(){return typeof window<`u`&&!!(window.SpeechRecognition||window.webkitSpeechRecognition)}function I({onResult:e,onCancel:t,onError:n,stop:r=0}){let[i,o]=(0,D.useState)(``),s=(0,D.useRef)(null),c=(0,D.useRef)(``),l=(0,D.useRef)(``),u=(0,D.useRef)(!1),d=r=>{if(!u.current){u.current=!0;try{r?s.current?.stop():s.current?.abort()}catch{}if(r){let t=`${c.current} ${l.current}`.trim();t?e(t):n(`No speech was detected.`)}t()}};return(0,D.useEffect)(()=>{let e=window.SpeechRecognition||window.webkitSpeechRecognition;if(!e){n(`Voice input isn't supported in this browser.`),t();return}let r=new e;s.current=r,r.continuous=!0,r.interimResults=!0;try{r.lang=navigator.language||`en-US`}catch{}r.onresult=e=>{let t=``;for(let n=e.resultIndex;n<e.results.length;n++){let r=e.results[n];r.isFinal?c.current+=r[0].transcript:t+=r[0].transcript}l.current=t,o(`${c.current} ${t}`.trim())},r.onerror=e=>{let t=e?.error;t!==`no-speech`&&t!==`aborted`&&(n(t===`not-allowed`||t===`service-not-allowed`?`Microphone access was denied.`:`Dictation error.`),d(!1))},r.onend=()=>d(!0);try{r.start()}catch{n(`Could not start dictation.`),t()}return()=>{u.current=!0;try{r.abort()}catch{}}},[]),(0,D.useEffect)(()=>{if(r)try{s.current?.stop()}catch{d(!0)}},[r]),(0,O.jsxs)(`div`,{className:`voice-bar`,role:`group`,"aria-label":`Voice dictation`,children:[(0,O.jsx)(`button`,{type:`button`,className:`voice-btn cancel`,onClick:()=>d(!1),"aria-label":`Cancel dictation`,children:`✕`}),(0,O.jsxs)(`div`,{className:`voice-listening`,children:[(0,O.jsx)(a,{status:`working`}),(0,O.jsx)(`span`,{className:`voice-listening-text`,children:i||`Listening…`})]}),(0,O.jsx)(`button`,{type:`button`,className:`voice-btn confirm`,onClick:()=>{try{s.current?.stop()}catch{d(!0)}},"aria-label":`Use dictation`,children:`✓`})]})}function L(e){return!e||e.providers.some(e=>e.configured)?`server`:F()?`webspeech`:null}var R=`Add a Groq or OpenAI key in Settings → Voice input to use voice input.`;function z({engine:e,stop:n,onResult:r,onCancel:i,onError:a}){return e===`server`?(0,O.jsx)(P,{transcribe:(e,n)=>t.transcribe(e,n),stop:n,onResult:r,onCancel:i,onError:a}):(0,O.jsx)(I,{stop:n,onResult:r,onCancel:i,onError:a})}var B=n(),V={scale:1,x:0,y:0},H=8;function U({src:e,name:t,current:n=0,count:i=1,onNavigate:a,onClose:o}){let s=(0,D.useRef)(null),c=(0,D.useRef)(null),l=(0,D.useRef)(null),[u,d]=(0,D.useState)(V),f=(0,D.useRef)(V),[p,m]=(0,D.useState)(!1),[h,g]=(0,D.useState)(!1),_=(0,D.useRef)(new Map),v=(0,D.useRef)(null);r(o);let y=(0,D.useCallback)(e=>{let t=c.current,n=l.current;if(!t||!n)return;let r=Math.max(1,Math.min(H,e.scale)),i=Math.max(0,(n.clientWidth*r-t.clientWidth)/2),a=Math.max(0,(n.clientHeight*r-t.clientHeight)/2);f.current={scale:r,x:Math.max(-i,Math.min(i,e.x)),y:Math.max(-a,Math.min(a,e.y))},d(f.current)},[]),b=(0,D.useCallback)((e,t={x:0,y:0})=>{let n=f.current,r=Math.max(1,Math.min(H,e))/n.scale;y({scale:n.scale*r,x:t.x-(t.x-n.x)*r,y:t.y-(t.y-n.y)*r})},[y]);return(0,D.useEffect)(()=>{let e=s.current,t=document.activeElement;e.focus();let n=e=>e.stopPropagation(),r=e=>{e.preventDefault(),e.stopPropagation()},i=e=>{r(e);let t=c.current.getBoundingClientRect();if(e.ctrlKey||e.metaKey)b(f.current.scale*Math.exp(-e.deltaY*.01),{x:e.clientX-t.x-t.width/2,y:e.clientY-t.y-t.height/2});else{let n=e.deltaMode===1?16:e.deltaMode===2?t.height:1;y({...f.current,x:f.current.x-e.deltaX*n,y:f.current.y-e.deltaY*n})}};e.addEventListener(`wheel`,i,{passive:!1}),e.addEventListener(`touchmove`,r,{passive:!1});for(let t of[`touchstart`,`touchend`,`touchcancel`])e.addEventListener(t,n);e.addEventListener(`gesturestart`,r),e.addEventListener(`gesturechange`,r);let a=new ResizeObserver(()=>y(f.current));return a.observe(c.current),()=>{e.removeEventListener(`wheel`,i),e.removeEventListener(`touchmove`,r);for(let t of[`touchstart`,`touchend`,`touchcancel`])e.removeEventListener(t,n);e.removeEventListener(`gesturestart`,r),e.removeEventListener(`gesturechange`,r),a.disconnect(),t?.isConnected&&t.focus({preventScroll:!0})}},[y,b]),(0,B.createPortal)((0,O.jsxs)(`div`,{ref:s,className:`image-viewer`,role:`dialog`,"aria-modal":`true`,"aria-label":`${t} — Image ${n+1} of ${i}`,tabIndex:-1,onKeyDown:e=>{if(e.key===`Tab`){let t=[...s.current.querySelectorAll(`button:not(:disabled)`)],n=t.indexOf(document.activeElement);e.preventDefault(),t[n<0?e.shiftKey?t.length-1:0:(n+(e.shiftKey?-1:1)+t.length)%t.length]?.focus();return}[`+`,`=`,`-`,`0`,`ArrowLeft`,`ArrowRight`,`ArrowUp`,`ArrowDown`].includes(e.key)&&(e.preventDefault(),e.stopPropagation(),e.key===`+`||e.key===`=`?b(f.current.scale*1.5):e.key===`-`?b(f.current.scale/1.5):e.key===`0`?y(V):f.current.scale>1?y({...f.current,x:f.current.x+(e.key===`ArrowLeft`?80:e.key===`ArrowRight`?-80:0),y:f.current.y+(e.key===`ArrowUp`?80:e.key===`ArrowDown`?-80:0)}):(e.key===`ArrowLeft`||e.key===`ArrowRight`)&&a?.(e.key===`ArrowLeft`?-1:1))},children:[(0,O.jsxs)(`div`,{ref:c,className:`image-viewer-viewport`,"data-zoomed":u.scale>1,onDoubleClick:e=>{let t=e.currentTarget.getBoundingClientRect();b(f.current.scale>1?1:2,{x:e.clientX-t.x-t.width/2,y:e.clientY-t.y-t.height/2})},onPointerDown:e=>{if(e.button!==0)return;e.currentTarget.setPointerCapture(e.pointerId);let t={x:e.clientX,y:e.clientY};_.current.set(e.pointerId,t),v.current=_.current.size===1&&f.current.scale===1?t:null},onPointerMove:e=>{let t=_.current.get(e.pointerId);if(!t)return;let n={x:e.clientX,y:e.clientY},r=[..._.current.entries()].find(([t])=>t!==e.pointerId)?.[1];if(r){let i=Math.hypot(t.x-r.x,t.y-r.y),a=e.currentTarget.getBoundingClientRect(),o={x:(t.x+r.x)/2-a.x-a.width/2,y:(t.y+r.y)/2-a.y-a.height/2};i>0&&b(f.current.scale*Math.hypot(n.x-r.x,n.y-r.y)/i,o),y({...f.current,x:f.current.x+(n.x-t.x)/2,y:f.current.y+(n.y-t.y)/2})}else f.current.scale>1&&y({...f.current,x:f.current.x+n.x-t.x,y:f.current.y+n.y-t.y});_.current.set(e.pointerId,n)},onPointerUp:e=>{let t=v.current;if(_.current.delete(e.pointerId),v.current=null,!t||f.current.scale!==1)return;let n=e.clientX-t.x,r=e.clientY-t.y;Math.abs(n)>=48&&Math.abs(n)>Math.abs(r)&&a?.(n<0?1:-1)},onPointerCancel:()=>{_.current.clear(),v.current=null},onLostPointerCapture:e=>{_.current.delete(e.pointerId),v.current=null},children:[e&&!h&&(0,O.jsx)(`img`,{ref:l,className:`image-viewer-img`,src:e,alt:t,draggable:!1,onLoad:()=>m(!0),onError:()=>g(!0),style:{transform:`translate(${u.x}px, ${u.y}px) scale(${u.scale})`}}),h?(0,O.jsx)(`p`,{className:`image-viewer-message`,role:`alert`,children:`Unable to load image.`}):!p&&(0,O.jsx)(`span`,{role:`status`,"aria-label":`Loading image`,children:(0,O.jsx)(k,{size:`lg`,tone:`inverse`})})]}),(0,O.jsxs)(`div`,{className:`image-viewer-tools`,role:`group`,"aria-label":`Image zoom`,children:[(0,O.jsx)(`button`,{type:`button`,className:`btn icon`,"aria-label":`Zoom out`,disabled:!p||u.scale<=1,onClick:()=>b(u.scale/1.5),children:`−`}),(0,O.jsxs)(`button`,{type:`button`,className:`btn`,"aria-label":`Fit image`,disabled:!p,onClick:()=>y(V),children:[Math.round(u.scale*100),`%`]}),(0,O.jsx)(`button`,{type:`button`,className:`btn icon`,"aria-label":`Zoom in`,disabled:!p||u.scale>=H,onClick:()=>b(u.scale*1.5),children:`+`})]}),i>1&&(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`button`,{type:`button`,className:`image-viewer-nav prev`,"aria-label":`Previous image`,onClick:()=>a?.(-1),children:`‹`}),(0,O.jsx)(`button`,{type:`button`,className:`image-viewer-nav next`,"aria-label":`Next image`,onClick:()=>a?.(1),children:`›`}),(0,O.jsxs)(`div`,{className:`image-viewer-count`,children:[n+1,` / `,i]})]}),(0,O.jsx)(`button`,{type:`button`,className:`image-viewer-close`,onClick:o,"aria-label":`Close`,children:`×`})]}),document.body)}function W({added:e,removed:t}){return!e&&!t?null:(0,O.jsxs)(`span`,{className:`tool-stat`,children:[e>0&&(0,O.jsxs)(`span`,{className:`add`,children:[`+`,e]}),t>0&&(0,O.jsxs)(`span`,{className:`del`,children:[`−`,t]})]})}var G=420,K=(0,D.memo)(function({hunks:e,single:t,mode:n=`unified`}){let r=G;return(0,O.jsx)(`div`,{className:`diff-viewer diff-${n}`,children:e.map((i,a)=>{let o=_(g(i.oldText,i.newText)),s=[];for(let e=0;e<o.length;e++){if(r<=0){s.push((0,O.jsxs)(`div`,{className:`diff-line skip`,children:[(0,O.jsx)(`span`,{className:`diff-gutter`,children:`⋯`}),(0,O.jsx)(`span`,{children:`Diff truncated`})]},`t${a}`));break}let t=o[e];if(t.type===`skip`){s.push(n===`split`?(0,O.jsxs)(`div`,{className:`diff-row skip`,children:[(0,O.jsxs)(`div`,{className:`diff-side`,children:[(0,O.jsx)(`span`,{className:`diff-gutter`,children:`⋯`}),(0,O.jsxs)(`span`,{children:[t.count,` unchanged`]})]}),(0,O.jsxs)(`div`,{className:`diff-side`,children:[(0,O.jsx)(`span`,{className:`diff-gutter`,children:`⋯`}),(0,O.jsxs)(`span`,{children:[t.count,` unchanged`]})]})]},e):(0,O.jsxs)(`div`,{className:`diff-line skip`,children:[(0,O.jsx)(`span`,{className:`diff-gutter`,children:`⋯`}),(0,O.jsxs)(`span`,{children:[t.count,` unchanged lines`]})]},e));continue}if(r--,n===`split`){let n=t.type===`add`?null:t.text||` `,r=t.type===`del`?null:t.text||` `;s.push((0,O.jsxs)(`div`,{className:`diff-row`,children:[(0,O.jsx)(`div`,{className:`diff-side ${t.type===`del`?`del`:t.type===`ctx`?``:`empty`}`,children:n!==null&&(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`span`,{className:`diff-gutter`,children:t.type===`del`?`−`:` `}),(0,O.jsx)(`span`,{className:`diff-code`,children:n})]})}),(0,O.jsx)(`div`,{className:`diff-side ${t.type===`add`?`add`:t.type===`ctx`?``:`empty`}`,children:r!==null&&(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`span`,{className:`diff-gutter`,children:t.type===`add`?`+`:` `}),(0,O.jsx)(`span`,{className:`diff-code`,children:r})]})})]},e));continue}let i=t.type===`add`?`+`:t.type===`del`?`−`:` `;s.push((0,O.jsxs)(`div`,{className:`diff-line ${t.type}`,children:[(0,O.jsx)(`span`,{className:`diff-gutter`,children:i}),(0,O.jsx)(`span`,{className:`diff-code`,children:t.text||` `})]},e))}let c=e.length>1?`Hunk ${a+1}`:i.label||t||`Diff`;return(0,O.jsxs)(`div`,{className:`diff-hunk`,children:[(0,O.jsxs)(`div`,{className:`diff-hunk-title`,children:[(0,O.jsx)(`span`,{children:c}),(0,O.jsx)(W,{added:i.added,removed:i.removed})]}),s]},a)})})});function q(e){let t=[e.added?`+${e.added}`:``,e.removed?`−${e.removed}`:``].filter(Boolean).join(`/`);return`\`${e.path}\` (${e.status}${t?`, ${t}`:``})`}function J(e){return`Review the change to ${q(e)}. Explain why it changed, identify correctness or security risks, and suggest missing tests or follow-up edits.`}function Y(e,t=[]){let n=e.slice(0,30),r=e.length-n.length,i=n.map(e=>`- ${q(e)}`);r>0&&i.push(`- …and ${r} more changed file${r===1?``:`s`}`);let a=t.filter(e=>e.status===`failed`).map(e=>e.name),o=a.length?`\n\nFailed checks to investigate: ${a.join(`, `)}.`:``;return`Review this turn's code changes:\n${i.join(`
|
|
4
|
+
`)}${o}\n\nFocus on correctness, regressions, security, and missing tests. Recommend concrete fixes where needed.`}var X={added:`+`,modified:`~`,deleted:`−`};function Z(e){if(typeof e.added==`number`&&typeof e.removed==`number`)return{added:e.added,removed:e.removed};if(e.binary)return{added:0,removed:0};let t=0,n=0;for(let r of g(e.oldText,e.newText))r.type===`add`?t++:r.type===`del`&&n++;return{added:t,removed:n}}function Q(e){if(!e)return``;let t=Math.max(0,Math.round((Date.now()-e)/1e3));if(t<60)return`${t}s ago`;let n=Math.round(t/60);return n<60?`${n}m ago`:`${Math.round(n/60)}h ago`}function ee({file:e,mode:n}){let[r,i]=(0,D.useState)(!1),[a,o]=(0,D.useState)(!1),{added:s,removed:c}=(0,D.useMemo)(()=>Z(e),[e]);return(0,O.jsxs)(`div`,{className:`changes-file status-${e.status}`,children:[(0,O.jsxs)(`div`,{className:`changes-file-head`,children:[(0,O.jsxs)(`button`,{type:`button`,className:`changes-file-open`,onClick:()=>i(e=>!e),children:[(0,O.jsx)(`span`,{className:`changes-file-glyph`,"aria-hidden":!0,children:X[e.status]}),(0,O.jsx)(`span`,{className:`changes-file-path`,children:e.path}),(s>0||c>0)&&(0,O.jsxs)(`span`,{className:`changes-file-stat`,children:[s>0&&(0,O.jsxs)(`span`,{className:`add`,children:[`+`,s]}),c>0&&(0,O.jsxs)(`span`,{className:`del`,children:[`−`,c]})]})]}),(0,O.jsxs)(`span`,{className:`changes-file-actions`,children:[(0,O.jsx)(`button`,{type:`button`,className:`changes-file-act`,onClick:()=>t.prefillComposer(J({...e,added:s,removed:c})),title:`Ask the agent about this file`,children:`Ask`}),(0,O.jsx)(`button`,{type:`button`,className:`changes-file-act danger`,onClick:()=>{o(!0),t.revertFile(e.path,e.status===`added`?null:e.oldText)},disabled:a,title:`Revert this file to its pre-turn state`,children:a?`…`:`Revert`})]})]}),r&&!e.binary&&(0,O.jsx)(K,{hunks:[{oldText:e.oldText,newText:e.newText,added:s,removed:c,label:e.path}],mode:n}),r&&e.binary&&(0,O.jsx)(`div`,{className:`changes-binary`,children:`Binary file — not shown.`})]})}function $({node:e,byPath:t,mode:n,depth:r}){let[i,a]=(0,D.useState)(!0);if(e.type===`file`){let i=t.get(e.path);return i?(0,O.jsx)(`div`,{style:{paddingLeft:r*12},children:(0,O.jsx)(ee,{file:i,mode:n})}):null}return(0,O.jsxs)(`div`,{className:`changes-dir`,children:[(0,O.jsxs)(`button`,{type:`button`,className:`changes-dir-head`,style:{paddingLeft:r*12},onClick:()=>a(e=>!e),children:[(0,O.jsx)(`span`,{className:`changes-chevron`,"aria-hidden":!0,children:i?`▾`:`▸`}),(0,O.jsxs)(`span`,{className:`changes-dir-name`,children:[e.name,`/`]})]}),i&&e.children?.map(e=>(0,O.jsx)($,{node:e,byPath:t,mode:n,depth:r+1},e.path))]})}export{T as _,K as a,R as c,F as d,P as f,w as g,E as h,Y as i,L as l,C as m,Z as n,U as o,k as p,Q as r,z as s,$ as t,I as u};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Et as e,i as t,t as n}from"./useStore-BDEjghiw.js";import{M as r,c as i,h as a,j as o,s}from"./Sheet-C0BIPbMr.js";import{p as c}from"./ChangesCard-Bo6E8C_y.js";import{t as l}from"./jsx-runtime-NZYk81nU.js";import{a as u}from"./SessionList-B7IbeXSa.js";import{_ as d,g as f,h as p,m,p as h,v as g,y as _}from"./mount-IY4-2elJ.js";var v=e(),y=r(),b=l(),x={artifacts:{title:`Artifacts`,sub:`Files your agents sent to chats`,empty:`Reports, screenshots and builds an agent sends to a chat collect here.`},apps:{title:`Apps`,sub:`Apps your agents published`,empty:`When an agent starts a web server or publishes an app, it appears here.`}},S=()=>t.listMachineArtifacts(),C=()=>t.listMachineApps(),w=e=>t.onAppsChanged(e);function T(e,t){let{connection:r}=n(),i=[r.status===`online`?r.currentNodeId??`direct`:``,...r.nodes.filter(e=>e.online).map(e=>e.id)].join(`,`),[a,o]=(0,v.useState)({status:`loading`});return(0,v.useEffect)(()=>{let n=!0,r=0,i=t=>{let i=++r;t||o({status:`loading`}),e().then(e=>{n&&i===r&&o({status:`ready`,listing:e})},e=>{n&&i===r&&o({status:`error`,error:e instanceof Error?e.message:`Could not load.`})})};i(!1);let a=()=>{document.visibilityState===`visible`&&i(!0)};document.addEventListener(`visibilitychange`,a);let s=t?.(()=>i(!0));return()=>{n=!1,document.removeEventListener(`visibilitychange`,a),s?.()}},[i,e,t]),a}function E({view:e,onClose:r,onShowInChat:i}){let{connection:c,sessionIndex:l}=n(),u=x[e],d=(0,v.useRef)(null);s(d,d),o(r);let f=!t.direct&&c.nodes.length>1,p=({sessionId:e,nodeId:t})=>{let n=l.sessions.filter(t=>t.sessionId===e);return{session:(n.find(e=>e.nodeId===t)??n[0])?.name?.trim()||`Untitled session`,machine:f&&t?c.nodes.find(e=>e.id===t)?.name??null:null}};return(0,y.createPortal)((0,b.jsxs)(`div`,{className:`automations-view library-view`,role:`dialog`,"aria-modal":`true`,"aria-label":u.title,ref:d,tabIndex:-1,children:[(0,b.jsxs)(`header`,{className:`automations-view-head`,children:[(0,b.jsxs)(`div`,{className:`automations-view-head-text`,children:[(0,b.jsx)(`h1`,{className:`automations-view-heading`,children:u.title}),(0,b.jsx)(`p`,{className:`automations-view-sub`,children:f?`${u.sub}, on all your machines.`:`${u.sub}.`})]}),(0,b.jsx)(`div`,{className:`automations-view-head-actions`,children:(0,b.jsx)(`button`,{type:`button`,className:`btn ghost icon autom-close-btn`,onClick:r,"aria-label":`Close ${u.title.toLowerCase()}`,children:(0,b.jsx)(a,{})})})]}),(0,b.jsx)(`div`,{className:`automations-view-body library-body`,children:e===`artifacts`?(0,b.jsx)(A,{where:p,onShowInChat:i}):(0,b.jsx)(L,{where:p,onShowInChat:i})})]}),document.body)}function D({state:e,empty:t,children:n}){if(e.status===`loading`)return(0,b.jsxs)(`div`,{className:`library-state library-loading`,role:`status`,children:[(0,b.jsx)(c,{size:`md`}),(0,b.jsx)(`span`,{className:`sr-only`,children:`Loading…`})]});if(e.status===`error`)return(0,b.jsx)(`div`,{className:`banner`,"data-tone":`danger`,role:`alert`,children:(0,b.jsxs)(`div`,{className:`banner-text`,children:[(0,b.jsx)(`strong`,{children:`Couldn’t load this list`}),(0,b.jsx)(`span`,{children:e.error})]})});let{items:r,unreachable:i}=e.listing,a=i.length>0&&(0,b.jsxs)(`p`,{className:`library-note`,role:`status`,children:[`Couldn’t reach `,i.join(`, `),`. What’s on `,i.length===1?`it`:`them`,` isn’t shown.`]});return r.length===0?(0,b.jsxs)(b.Fragment,{children:[a,(0,b.jsxs)(`div`,{className:`chat-empty library-state`,children:[(0,b.jsx)(`p`,{className:`chat-empty-title`,children:`Nothing here yet`}),(0,b.jsx)(`p`,{className:`chat-empty-sub`,children:t})]})]}):(0,b.jsxs)(b.Fragment,{children:[a,n(r)]})}function O({name:e,at:t,onClick:n}){let r=u(t);return(0,b.jsxs)(`button`,{type:`button`,className:`library-source`,onClick:n,title:`Show in chat: ${e}`,children:[(0,b.jsx)(i,{size:14,"aria-hidden":!0}),(0,b.jsxs)(`span`,{className:`library-source-name`,children:[(0,b.jsx)(`span`,{className:`sr-only`,children:`Show in chat: `}),e]}),r&&(0,b.jsxs)(`span`,{className:`library-source-when`,children:[`· `,r]})]})}var k=[{id:`all`,label:`All`},{id:`image`,label:`Images`},{id:`file`,label:`Files`}];function A({where:e,onShowInChat:t}){let n=T(S),[r,i]=(0,v.useState)(`all`),[a,o]=(0,v.useState)(null),s=(0,v.useMemo)(()=>n.status===`ready`?n.listing.items:[],[n]),c=(0,v.useMemo)(()=>r===`all`?s:s.filter(e=>e.kind===r),[s,r]),l=(0,v.useMemo)(()=>c.filter(e=>e.kind===`image`),[c]),u=(0,v.useMemo)(()=>l.map(e=>({kind:`image`,name:e.name,size:e.size,mimeType:e.mimeType,hash:e.hash,createdAt:e.createdAt})),[l]),d=s.some(e=>e.kind===`image`)&&s.some(e=>e.kind===`file`);return(0,b.jsx)(D,{state:n,empty:x.artifacts.empty,children:()=>(0,b.jsxs)(b.Fragment,{children:[d&&(0,b.jsx)(`div`,{className:`library-toolbar`,children:(0,b.jsx)(`div`,{className:`segmented`,role:`tablist`,"aria-label":`Show`,children:k.map(e=>(0,b.jsx)(`button`,{type:`button`,role:`tab`,className:`seg-btn`,"aria-selected":r===e.id,onClick:()=>i(e.id),children:e.label},e.id))})}),(0,b.jsx)(`ul`,{className:`library-grid`,"aria-label":`Artifacts`,children:c.map(n=>(0,b.jsx)(M,{artifact:n,where:e(n),onView:n.kind===`image`?()=>o(l.indexOf(n)):void 0,onShowInChat:()=>t(n.sessionId,{hash:n.hash},n.nodeId)},`${n.nodeId}:${n.hash}`))}),a!==null&&(0,b.jsx)(_,{images:u,index:a,onClose:()=>o(null)})]})})}function j(e){let t=e.lastIndexOf(`.`);return t>0&&e.length-t<=6?e.slice(t+1).toUpperCase():`FILE`}function M({artifact:e,where:t,onView:n,onShowInChat:r}){let[i,a]=(0,v.useState)(!1),[o,s]=(0,v.useState)(!1),c=async()=>{a(!0),s(!1);let t=await h(e);a(!1),t||s(!0)},l=[e.name,t.machine&&`On ${t.machine}`,e.caption].filter(Boolean).join(`
|
|
2
|
+
`);return(0,b.jsxs)(`li`,{className:`library-tile`,children:[(0,b.jsx)(`button`,{type:`button`,className:`library-tile-preview`,onClick:n??(()=>void c()),disabled:i,"aria-busy":i,"aria-label":`${n?`View`:`Download`} ${e.name}, ${m(e.size)}${t.machine?`, on ${t.machine}`:``}`,children:e.kind===`image`?(0,b.jsx)(P,{artifact:e}):(0,b.jsx)(N,{name:e.name})}),(0,b.jsxs)(`div`,{className:`library-tile-caption`,children:[(0,b.jsx)(`span`,{className:`library-tile-name`,title:l,children:e.name}),(0,b.jsx)(O,{name:t.session,at:e.createdAt,onClick:r}),o&&(0,b.jsx)(`span`,{className:`library-tile-note`,role:`status`,children:`Not available right now.`})]})]})}function N({name:e}){return(0,b.jsxs)(`span`,{className:`library-tile-file`,"aria-hidden":!0,children:[(0,b.jsxs)(`svg`,{viewBox:`0 0 24 24`,width:`28`,height:`28`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,b.jsx)(`path`,{d:`M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z`}),(0,b.jsx)(`path`,{d:`M14 3v5h5`})]}),(0,b.jsx)(`span`,{className:`library-tile-ext`,children:j(e)})]})}function P({artifact:e}){let t=p(e);return t.status===`ready`?(0,b.jsx)(`img`,{src:t.url,alt:``,loading:`lazy`}):(0,b.jsx)(`span`,{className:`library-tile-ext`,"aria-hidden":!0,children:t.status===`unavailable`?`Unavailable`:``})}var F={requests:`Requests`,data:`Data`,logs:`Logs`};function I(e){if(e.views.length!==1)return`${e.views.length} views`;let t=e.views[0];return t.kind===`terminal`?`Terminal`:t.kind===`backend`?F[t.backend]:t.source===`display`?`Desktop app`:`Web app`}function L({where:e,onShowInChat:t}){let n=T(C,w),[r,i]=(0,v.useState)(null),a=e=>t(e.sessionId,{appId:e.id},e.nodeId);return(0,b.jsx)(D,{state:n,empty:x.apps.empty,children:t=>(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(`ul`,{className:`apps-list`,"aria-label":`Apps`,children:t.map(t=>{let n=e(t);return(0,b.jsx)(`li`,{className:`apps-card`,children:(0,b.jsx)(d,{tile:g(t.name),name:t.name,meta:[I(t),n.machine].filter(Boolean).join(` · `),detail:(0,b.jsx)(O,{name:n.session,at:t.createdAt,onClick:()=>a(t)}),action:(0,b.jsx)(`button`,{type:`button`,className:`btn sm primary`,onClick:()=>i(t),"aria-label":`Open ${t.name}`,children:`Open`})})},`${t.nodeId}:${t.id}`)})}),r&&(0,b.jsx)(f,{sessionId:r.sessionId,appId:r.id,nodeId:r.nodeId,onOpenInChat:()=>a(r),onClose:()=>i(null)})]})})}export{E as LibraryView};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as e,N as t}from"./index-
|
|
1
|
+
import{D as e,N as t}from"./index-fdEPLcPs.js";import{Et as n,i as r}from"./useStore-BDEjghiw.js";import{t as i}from"./jsx-runtime-NZYk81nU.js";var a=[{id:`read-only`,label:`Read-only`,hint:`Read the workspace; no writes, no network.`},{id:`workspace-write`,label:`Workspace write`,hint:`Read and write inside the workspace.`},{id:`danger-full-access`,label:`Full access`,hint:`No in-agent sandbox — the agent can do anything (opt-out).`}];function o(e){if(!e)return!0;let t=e.capabilities||{};return e.protectionLevel===`native-sandbox`||t.toolInterception===!0||t.mcpToolApprovals===!0}var s=n(),c=i();function l(){let n=r.store.getState().presentation.oauth,[i,a]=(0,s.useState)(``),[o,l]=(0,s.useState)(!1),[u,d]=(0,s.useState)(!1),[f,p]=(0,s.useState)(!1),[m,h]=(0,s.useState)(null);if(!n)return null;let g=n.authUrl||n.deviceCode?.verificationUri,_=!!n.deviceCode,v=!_&&n.canOpenOnNode===!0,y=n.nodeName||`your machine`,b=async()=>{d(!0),h(null);try{let e=await r.openOauthOnNode(n.id);p(e.opened),e.opened||(h(e.error||`Could not open a browser on ${y}.`),l(!0))}catch(e){h(e instanceof Error?e.message:String(e)),l(!0)}finally{d(!1)}},x=()=>{l(!0),g&&(e?t(g).catch(()=>h(`Could not open the browser.`)):window.open(g,`_blank`,`noopener`))},S=async()=>{try{let e=(await navigator.clipboard.readText()).trim();e&&(a(e),r.submitOauthCode(n.id,e))}catch{h(`Clipboard access was blocked. Paste the redirect URL below instead.`)}};return(0,c.jsxs)(`div`,{className:`settings-form`,children:[n.error&&(0,c.jsx)(`div`,{className:`banner inline`,"data-tone":`danger`,role:`alert`,children:n.error}),m&&(0,c.jsx)(`div`,{className:`banner inline`,"data-tone":`danger`,role:`alert`,children:m}),_&&g&&(0,c.jsx)(`a`,{className:`btn primary block`,href:g,target:`_blank`,rel:`noopener`,children:`Continue on this device`}),n.deviceCode?.userCode&&(0,c.jsxs)(`p`,{className:`muted`,children:[`Code: `,(0,c.jsx)(`strong`,{children:n.deviceCode.userCode})]}),v&&!o&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(`button`,{className:`btn primary block`,disabled:u||f,onClick:()=>void b(),children:u?`Opening…`:f?`Opened on ${y}`:`Open sign-in on ${y}`}),(0,c.jsx)(`p`,{className:`muted`,children:`The provider will return directly to Bivy on that machine. This page updates automatically.`}),!f&&(0,c.jsx)(`button`,{className:`btn link`,onClick:x,children:`Use this device instead`})]}),!_&&(!v||o)&&(0,c.jsxs)(c.Fragment,{children:[!o&&g&&(0,c.jsx)(`a`,{className:`btn primary block`,href:g,target:`_blank`,rel:`noopener`,children:`Continue on this device`}),(0,c.jsx)(`p`,{className:`muted`,children:`After approval, the provider may show a code or stop on a redirect page. Copy the code or full URL, return here, then paste it.`}),typeof navigator<`u`&&navigator.clipboard&&(0,c.jsx)(`button`,{className:`btn`,onClick:()=>void S(),children:`Paste redirect from clipboard`}),(0,c.jsx)(`label`,{className:`field-label`,htmlFor:`oauth-redirect-code`,children:`Redirect URL or authorization code`}),(0,c.jsx)(`input`,{id:`oauth-redirect-code`,className:`picker-search`,value:i,onChange:e=>a(e.target.value)}),(0,c.jsx)(`button`,{className:`btn primary`,disabled:!i.trim(),onClick:()=>r.submitOauthCode(n.id,i.trim()),children:`Submit`})]}),(0,c.jsx)(`p`,{className:`muted`,role:`status`,children:n.status||`Waiting for sign-in…`})]})}function u({state:e,providerId:t,apiKeyProvider:n}){let[i,a]=(0,s.useState)(``),[o,u]=(0,s.useState)(!1),[d,f]=(0,s.useState)(null),p=e.catalogs.providers.find(e=>e.id===t),m=p?.name||t,h=n||t;return p?.configured?(0,c.jsx)(`div`,{className:`settings-form`,children:(0,c.jsxs)(`p`,{className:`muted`,children:[m,` is already connected.`]})}):e.presentation.oauth&&e.presentation.oauth.provider===t?(0,c.jsx)(l,{}):(0,c.jsxs)(`div`,{className:`settings-form`,children:[d&&(0,c.jsx)(`div`,{className:`banner inline`,"data-tone":`danger`,role:`alert`,children:d}),p?.oauth&&(0,c.jsxs)(`button`,{className:`btn primary block`,onClick:()=>r.startOauth(t),children:[`Sign in with `,m]}),(0,c.jsx)(`label`,{className:`field-label`,children:`API key`}),(0,c.jsx)(`input`,{className:`picker-search`,type:`password`,value:i,placeholder:`Paste API key`,onChange:e=>a(e.target.value)}),(0,c.jsx)(`div`,{className:`row-actions`,children:(0,c.jsx)(`button`,{className:`btn primary`,disabled:!i.trim()||o,onClick:async()=>{u(!0),f(null);try{await r.setCredential(h,`default`,{key:i.trim()}),await r.setEphemeralModelKey(h,i.trim(),`account`,`default`).catch(()=>{}),a(``),r.listProviders()}catch(e){f(e instanceof Error?e.message:String(e))}finally{u(!1)}},children:`Save key`})})]})}export{o as i,u as n,a as r,l as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{I as e}from"./index-fdEPLcPs.js";import{Et as t,N as n,P as r,i,j as a,n as o,t as s,yt as c}from"./useStore-BDEjghiw.js";import{O as l,a as u,l as d}from"./Sheet-C0BIPbMr.js";import{t as f}from"./jsx-runtime-NZYk81nU.js";import{t as p}from"./StatusDot-dpbztK53.js";var m=t();function h(e){return e.needsAction||e.status===`needs_action`?`needs-action`:e.status===`working`?`working`:e.status===`failed`?`failed`:e.status===`saved`?`saved`:`idle`}function ee(e){return g(e)?`unseen`:h(e)}function g(e){return e.status!==`idle`||e.finishedAt==null?!1:e.lastSeenAt==null||e.finishedAt>e.lastSeenAt}function _(e){return e.needsAction||e.status===`needs_action`?3:e.status===`failed`?2:+!!g(e)}function v(e){return e.needsAction||e.status===`needs_action`?`Waiting for you`:e.status===`working`?`Working`:e.status===`failed`?`Failed`:e.finishedAt==null?e.status===`saved`?`Saved`:`Open`:`Finished`}function y(e){return e.needsAction||e.status===`needs_action`?`Needs your response`:e.state?.agent===`waiting`?`Waiting for background tasks`:e.status===`working`?`Agent working`:e.status===`failed`?`Last turn failed`:e.status===`saved`?`Saved`:g(e)?`Finished · new`:`Open`}function b(e){let t=new Map;for(let n of e??[]){let e=n.output?.sessionId;if(!e||n.targetKind===`existing_session`||n.targetSessionId===e)continue;let r=t.get(e);(!r||n.createdAt<r.createdAt)&&t.set(e,n)}return new Map([...t].map(([e,t])=>[e,w(t.source)]))}var x={kind:`cli`,label:`Terminal · bivy run`,automation:!1};function S(e){return(e.source??``).trim()===`cli`&&e.status===`working`}function C(e){return(e.source??``).trim()===`cli:log`}function w(e){let t=(e??``).trim();return t.startsWith(`issue:`)||t===`queue:github:issue`||t.startsWith(`github:issue`)?{kind:`github-issue`,label:`GitHub · labelled issue`,automation:!0}:t===`queue:github:comment`||t===`github:comment`?{kind:`github-mention`,label:`GitHub · @-mention`,automation:!0}:t===`queue:slack`||t===`slack`?{kind:`slack`,label:`Slack request`,automation:!0}:t===`queue:linear:issue`||t===`linear:issue`?{kind:`linear`,label:`Linear issue`,automation:!0}:t===`queue:schedule`||t===`schedule`?{kind:`schedule`,label:`Scheduled run`,automation:!0}:t===`queue:webhook`||t===`webhook`||t.startsWith(`automation:`)||t.startsWith(`queue:automation:`)?{kind:`webhook`,label:`Webhook`,automation:!0}:t===`queue:manual`||t===`manual`?{kind:`manual`,label:`Manual run`,automation:!0}:t===`cli`||t===`cli:log`?x:{kind:`app`,label:`App session`,automation:!1}}function T(e){switch(e){case`github-issue`:case`github-mention`:return`GitHub`;case`slack`:return`Slack`;case`linear`:return`Linear`;case`schedule`:return`Schedule`;case`webhook`:return`Webhook`;case`manual`:return`Manual`;case`cli`:return`CLI`;case`app`:return`App`}}var E=f();function D({kind:e}){switch(e){case`github-issue`:case`github-mention`:return(0,E.jsx)(`svg`,{viewBox:`0 0 16 16`,fill:`currentColor`,"aria-hidden":!0,children:(0,E.jsx)(`path`,{d:`M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0016 8c0-4.42-3.58-8-8-8z`})});case`slack`:return(0,E.jsx)(`svg`,{viewBox:`0 0 24 24`,fill:`currentColor`,"aria-hidden":!0,children:(0,E.jsx)(`path`,{d:`M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.528 2.528 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.528 2.528 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z`})});case`linear`:return(0,E.jsx)(`svg`,{viewBox:`0 0 24 24`,fill:`currentColor`,"aria-hidden":!0,children:(0,E.jsx)(`path`,{d:`M.403 13.517c-.06-.213.19-.365.347-.207l9.94 9.94c.157.157.006.407-.207.347C5.24 22.293 1.707 18.76.403 13.517zM.004 10.62a.19.19 0 0 0 .056.148l13.117 13.117a.19.19 0 0 0 .148.056 11.9 11.9 0 0 0 1.951-.324.19.19 0 0 0 .09-.32L.648 8.58a.19.19 0 0 0-.32.089c-.157.636-.266 1.288-.324 1.95zM1.036 6.926a.19.19 0 0 0 .038.22l15.78 15.78a.19.19 0 0 0 .22.038 12 12 0 0 0 1.463-.842.19.19 0 0 0 .03-.297L2.175 5.433a.19.19 0 0 0-.297.03 12 12 0 0 0-.842 1.463zM2.658 4.5a.19.19 0 0 1-.02-.245C4.847 1.203 8.194 0 12 0 18.627 0 24 5.373 24 12c0 3.806-1.203 7.153-4.255 9.362a.19.19 0 0 1-.245-.02L2.658 4.5z`})});case`schedule`:return(0,E.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":!0,children:[(0,E.jsx)(`circle`,{cx:`12`,cy:`12`,r:`9`}),(0,E.jsx)(`path`,{d:`M12 7.5V12l3 2`})]});case`webhook`:return(0,E.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":!0,children:[(0,E.jsx)(`circle`,{cx:`6`,cy:`6.5`,r:`2.6`}),(0,E.jsx)(`circle`,{cx:`18`,cy:`9.5`,r:`2.6`}),(0,E.jsx)(`circle`,{cx:`9.5`,cy:`18`,r:`2.6`}),(0,E.jsx)(`path`,{d:`M7.6 8.6 8.9 15.4M8.3 6.9 15.4 8.6M16.2 11.8 11.4 16.4`})]});case`manual`:return(0,E.jsx)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":!0,children:(0,E.jsx)(`path`,{d:`M5.5 3.7 18 11l-5 1.4 2.7 5.6-2.4 1.1-2.7-5.6L5.2 18z`})});case`cli`:return(0,E.jsx)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":!0,children:(0,E.jsx)(`path`,{d:`M5 7l4 4-4 4M12 16h6`})});case`app`:return(0,E.jsx)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":!0,children:(0,E.jsx)(`path`,{d:`M4 5.5h16v10.5H9l-4 3.5v-3.5H4z`})})}}function O({kind:e,size:t=`md`,status:n,title:r}){return(0,E.jsxs)(`span`,{className:`source-mark${t===`md`?``:` ${t}`}${n?` has-status`:``}`,title:r,"aria-hidden":!0,children:[(0,E.jsx)(D,{kind:e}),n&&(0,E.jsx)(p,{status:n})]})}function te(e){let t=new Map;for(let n of e??[]){let e=n.output?.sessionId;e&&!t.has(e)&&t.set(e,n)}return t}function k(e){let t=e.checks;if(!t||t.length===0)return null;let n=0,r=0,i=0;for(let e of t)e.status===`passed`?n++:e.status===`failed`?r++:i++;return{passed:n,failed:r,skipped:i,total:t.length}}function A(e){let t=e.startedAt??e.claimedAt,n=e.completedAt;if(!t||!n)return null;let r=new Date(n).getTime()-new Date(t).getTime();if(!Number.isFinite(r)||r<0)return null;let i=Math.round(r/1e3);if(i<60)return`${i}s`;let a=Math.round(i/60);if(a<60)return`${a}m`;let o=Math.floor(a/60),s=a%60;return s?`${o}h ${s}m`:`${o}h`}function j(e){return[...e.events??[]].reverse().find(e=>e.kind===`retry`||e.kind===`fallback`)?.summary||null}function M(e){let t=e.output;return t?t.prUrl?{label:`Pull request`,url:t.prUrl}:t.artifactUrl?{label:`Artifact`,url:t.artifactUrl}:t.branch?{label:`branch ${t.branch}`}:t.commit?{label:`commit ${t.commit.slice(0,12)}`}:null:null}function N(e){return(e.checks??[]).filter(e=>e.status===`failed`).map(e=>e.name)}function P(e){let t=c(e);return t.terminal?t.kind===`checks_failed`||t.kind===`agent_failed`||t.kind===`timed_out`?[`fix`,`retry`,`fork`]:t.reviewable?[`fork`]:[]:[]}function ne(t){if(!t)return null;if(t.status===`failed`){let e=(t.checks??[]).find(e=>e.status===`failed`);return e?{text:`${e.name} failed`,tone:`danger`}:{text:t.output?.failure||`run failed`,tone:`danger`}}if(t.status===`needs_attention`){let n=[...t.events??[]].reverse().find(e=>e.kind===`needs_attention`||e.kind===`approval`||e.kind===`policy_denial`);return{text:e(n?.summary||t.routingReason||`needs your input`),tone:`warn`}}return null}function F(e,t=new Date){if(e==null)return`Older`;let n=new Date(e);if(Number.isNaN(n.getTime()))return`Older`;let r=new Date(t.getFullYear(),t.getMonth(),t.getDate()),i=new Date(n.getFullYear(),n.getMonth(),n.getDate()),a=Math.round((r.getTime()-i.getTime())/864e5);return a<=0?`Today`:a===1?`Yesterday`:a<7?`Previous 7 days`:`Older`}function re(e){let t=new Set(e.map(e=>e.sessionId)),n=new Map,r=[];for(let i of e){let e=i.delegatedFrom?.sessionId;e&&e!==i.sessionId&&t.has(e)?n.set(e,[...n.get(e)??[],i]):r.push(i)}return r.flatMap(e=>[e,...(n.get(e.sessionId)??[]).map(t=>({...t,nestedUnder:e.sessionId}))])}var I=new Set([`working`,`needs-action`,`failed`,`unseen`]);function L({status:e,srLabel:t}){return(0,E.jsxs)(E.Fragment,{children:[I.has(e)&&(0,E.jsx)(`span`,{className:`row-status`,children:(0,E.jsx)(p,{status:e})}),(0,E.jsx)(`span`,{className:`sr-only`,children:t})]})}function R(){return(0,E.jsx)(`svg`,{className:`gh-icon`,viewBox:`0 0 16 16`,fill:`currentColor`,"aria-hidden":!0,children:(0,E.jsx)(`path`,{d:`M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0016 8c0-4.42-3.58-8-8-8z`})})}var z={open:{label:`Open pull request`,tone:`ok`,paths:[`M13 6h3a2 2 0 0 1 2 2v7`,`M6 9v12`]},merged:{label:`Merged`,tone:`merged`,paths:[`M6 21V9a9 9 0 0 0 9 9`]},closed:{label:`Closed pull request`,tone:void 0,paths:[`M6 9v12`,`m21 3-6 6`,`m21 9-6-6`,`M18 11.5V15`]}};function ie({prs:e}){let t=n(e);if(!t)return null;let r=z[t.state===`merged`||t.state===`closed`?t.state:`open`],i=e&&e.length>1?e.length:0,a=i?`${r.label} · ${i} pull requests`:r.label;return(0,E.jsxs)(o,{tone:r.tone,variant:`soft`,className:`session-pr`,title:a,children:[(0,E.jsxs)(`svg`,{className:`pr-glyph`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.2`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":!0,children:[(0,E.jsx)(`circle`,{cx:`6`,cy:`6`,r:`3`}),(0,E.jsx)(`circle`,{cx:`18`,cy:`18`,r:`3`}),r.paths.map(e=>(0,E.jsx)(`path`,{d:e},e))]}),i>0&&(0,E.jsx)(`span`,{className:`session-pr-text`,"aria-hidden":!0,children:i}),(0,E.jsx)(`span`,{className:`sr-only`,children:a})]})}function B(e){if(e==null)return 0;let t=typeof e==`number`?e:new Date(e).getTime();return Number.isFinite(t)?t:0}function V(e){let t=B(e);if(!t)return``;let n=Math.max(0,Math.round((Date.now()-t)/1e3));if(n<60)return`now`;let r=Math.round(n/60);if(r<60)return`${r}m`;let i=Math.round(r/60);if(i<24)return`${i}h`;let a=Math.round(i/24);return a<7?`${a}d`:`${Math.round(a/7)}w`}function H(e){return r(e.source)||a(e.source)?.repo||``}function ae(e,t){let n=r(e.source)||a(e.source)?.repo||``,i=e.branch||``,o=String(e.name||``).toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-|-$/g,``),s=i.toLowerCase().split(`/`).pop()?.replace(/-[a-f0-9]{5,}$/i,``)||``,c=i&&s!==o?i:``,l=w(e.source),u=n||(l.automation?``:U(e.source));return[l.automation?T(l.kind):null,e.forkedFrom?`Forked`:null,e.delegatedFrom?`Delegated`:null,e.agentName,t,u,c].filter(Boolean).join(` · `)}function U(e){let t=a(e);if(t)return`${t.repo} #${t.issueNumber}`;if(typeof e==`string`&&e.startsWith(`queue:`)){let t=e.slice(6);return t===`slack`?`Slack`:t===`github:comment`?`GitHub @-mention`:t===`github:issue`?`GitHub issue`:t.startsWith(`agent-delegation:`)?``:t||`Queue`}return``}var W=10,oe=[{view:`artifacts`,label:`Artifacts`,icon:(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(`path`,{d:`M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z`}),(0,E.jsx)(`path`,{d:`M14 3v5h5`}),(0,E.jsx)(`path`,{d:`M9 13h6M9 17h4`})]})},{view:`apps`,label:`Apps`,icon:(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(`rect`,{x:`4`,y:`4`,width:`6.5`,height:`6.5`,rx:`1.5`}),(0,E.jsx)(`rect`,{x:`13.5`,y:`4`,width:`6.5`,height:`6.5`,rx:`1.5`}),(0,E.jsx)(`rect`,{x:`4`,y:`13.5`,width:`6.5`,height:`6.5`,rx:`1.5`}),(0,E.jsx)(`rect`,{x:`13.5`,y:`13.5`,width:`6.5`,height:`6.5`,rx:`1.5`})]})}];function G({onPick:e,onPickTerminal:t,runEvidence:n,sessionSources:r,onOpenAutomations:a,automationsActive:c,onOpenLibrary:f,libraryActive:p,onOpenTerminal:h,terminalDisabled:g}){let{sessionIndex:{sessions:v,runTerminals:b},activeSession:{activeSessionId:S},connection:{nodes:C,currentNodeId:T}}=s(),[D,te]=(0,m.useState)(``),[k,A]=(0,m.useState)(null),[j,M]=(0,m.useState)(null),[N,P]=(0,m.useState)(``),[I,R]=(0,m.useState)(``),[z,U]=(0,m.useState)(!1),[G,K]=(0,m.useState)(W),q=(0,m.useRef)(null);(0,m.useEffect)(()=>{if(!z)return;let e=e=>{q.current&&!q.current.contains(e.target)&&U(!1)},t=e=>{e.key===`Escape`&&U(!1)};return document.addEventListener(`click`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`click`,e),document.removeEventListener(`keydown`,t)}},[z]),(0,m.useEffect)(()=>{let e=setInterval(()=>{document.visibilityState!==`hidden`&&i.refreshSessions()},6e4);return()=>clearInterval(e)},[]),(0,m.useEffect)(()=>{i.refreshSessions()},[]);let J=e=>i.direct||!e?null:C.find(t=>t.id===e)?.name||e,Y=e=>C.length>1?J(e):null,se=(0,m.useMemo)(()=>Array.from(new Set(v.map(H).filter(Boolean))).sort((e,t)=>e.localeCompare(t)),[v]),X=(0,m.useMemo)(()=>{if(N)return[];let e=b;I&&(e=e.filter(e=>(e.nodeId||T)===I));let t=D.trim().toLowerCase();return t&&(e=e.filter(e=>`${e.name??``} ${e.label??``} ${e.agent??``} ${e.workspace??``}`.toLowerCase().includes(t))),[...e].sort((e,t)=>B(t.lastActivityAt??t.createdAt)-B(e.lastActivityAt??e.createdAt))},[b,D,N,I,T]),Z=(0,m.useMemo)(()=>{let e=D.trim().toLowerCase(),t=new Set(b.map(e=>e.sessionId).filter(Boolean));return re([...v.filter(n=>{if(t.has(n.sessionId))return!1;let r=H(n);if(I&&n.nodeId!==I||N&&r!==N)return!1;let a=i.direct||!n.nodeId?``:C.find(e=>e.id===n.nodeId)?.name||``,o=[n.name,n.source,n.agentName,r,n.branch,n.nodeId,a].filter(Boolean).join(` `);return!e||o.toLowerCase().includes(e)})].sort((e,t)=>_(t)-_(e)||B(t.updatedAt)-B(e.updatedAt)))},[v,b,C,D,N,I]),ce=N.length>0||I.length>0,Q=D.trim().length>0||ce?Z:Z.slice(0,G),le=Z.length-Q.length;(0,m.useEffect)(()=>{K(W)},[D,N,I]);let $=+!!N+ +!!I,ue=[I?J(I):i.direct?null:`All machines`,N||null].filter(Boolean).join(` · `),de=D.trim()||N||I?`No matching sessions.`:`No sessions yet. Start one with New session.`,fe=e=>{let t=String(e.workspace||``).replace(/[\\/]+$/,``).split(/[\\/]/).pop();return[e.label||e.agent,Y(e.nodeId||T||void 0),t].filter(Boolean).join(` · `)};return(0,E.jsxs)(`div`,{className:`session-list`,children:[k&&(0,E.jsx)(u,{title:`Delete saved session?`,message:`Delete “${k.name}” and its saved Cloud history? This can't be undone.`,confirmLabel:`Delete`,danger:!0,onCancel:()=>A(null),onConfirm:()=>{let e=k.sessionId;A(null),M(e),i.deleteSession(e).catch(()=>i.store.setError(`Couldn't delete the session.`)).finally(()=>M(null))}}),(a||f||h)&&(0,E.jsxs)(`nav`,{className:`sidebar-nav`,"aria-label":`Workspace`,children:[a&&(0,E.jsxs)(`button`,{className:`sidebar-nav-item${c?` active`:``}`,onClick:a,"aria-current":c?`page`:void 0,children:[(0,E.jsx)(`svg`,{viewBox:`0 0 24 24`,width:`20`,height:`20`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.8`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:(0,E.jsx)(`path`,{d:`M13 2 3 14h9l-1 8 10-12h-9z`})}),(0,E.jsx)(`span`,{children:`Automations`})]}),f&&oe.map(({view:e,label:t,icon:n})=>(0,E.jsxs)(`button`,{className:`sidebar-nav-item${p===e?` active`:``}`,onClick:()=>f(e),"aria-current":p===e?`page`:void 0,children:[(0,E.jsx)(`svg`,{viewBox:`0 0 24 24`,width:`20`,height:`20`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.8`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:n}),(0,E.jsx)(`span`,{children:t})]},e)),h&&(0,E.jsxs)(`button`,{className:`sidebar-nav-item`,onClick:h,disabled:g,"aria-label":`Open standalone terminal`,children:[(0,E.jsxs)(`svg`,{viewBox:`0 0 24 24`,width:`20`,height:`20`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.8`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,E.jsx)(`rect`,{x:`3`,y:`4`,width:`18`,height:`16`,rx:`2`}),(0,E.jsx)(`path`,{d:`m7 9 3 3-3 3`}),(0,E.jsx)(`path`,{d:`M13 15h4`})]}),(0,E.jsx)(`span`,{children:`Terminal`})]})]}),(0,E.jsxs)(`div`,{className:`session-list-tools`,children:[(0,E.jsxs)(`label`,{className:`session-search-wrap`,children:[(0,E.jsx)(l,{size:17,"aria-hidden":!0}),(0,E.jsx)(`input`,{className:`field session-search`,type:`search`,"aria-label":`Search sessions`,placeholder:v.length>1?`Search ${v.length} sessions`:`Search sessions`,value:D,onChange:e=>te(e.target.value)})]}),(0,E.jsxs)(`div`,{className:`session-filter`,ref:q,children:[(0,E.jsxs)(`button`,{className:`session-filter-btn${$?` active`:``}`,type:`button`,"aria-label":$?`Filter sessions, ${ue}`:`Filter sessions`,"aria-haspopup":`menu`,"aria-expanded":z,onClick:e=>{e.stopPropagation(),!i.direct&&C.length===0&&i.refreshNodes(),U(e=>!e)},children:[(0,E.jsx)(`svg`,{viewBox:`0 0 24 24`,width:`18`,height:`18`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.8`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":!0,children:(0,E.jsx)(`path`,{d:`M3 5h18l-7 8v6l-4-2v-4z`})}),$>0&&(0,E.jsx)(o,{tone:`accent`,variant:`solid`,className:`session-filter-count`,children:$})]}),z&&(0,E.jsxs)(`div`,{className:`menu session-filter-menu`,role:`menu`,children:[!i.direct&&(0,E.jsxs)(`div`,{className:`session-filter-section`,children:[(0,E.jsx)(`div`,{className:`session-filter-head`,children:`Machine`}),(0,E.jsxs)(`button`,{className:`menu-item session-filter-item`,role:`menuitemradio`,"aria-checked":!I,onClick:()=>{R(``),U(!1)},children:[(0,E.jsx)(`span`,{children:`All machines`}),!I&&(0,E.jsx)(`span`,{className:`session-filter-check`,children:(0,E.jsx)(d,{size:15})})]}),C.length===0?(0,E.jsx)(`div`,{className:`session-filter-empty`,children:`No machines`}):C.map(e=>(0,E.jsxs)(`button`,{className:`menu-item session-filter-item`,role:`menuitemradio`,"aria-checked":e.id===I,onClick:()=>{R(e.id),U(!1)},children:[(0,E.jsx)(`span`,{children:e.name||e.id}),e.id===I&&(0,E.jsx)(`span`,{className:`session-filter-check`,children:(0,E.jsx)(d,{size:15})})]},e.id))]}),(0,E.jsxs)(`div`,{className:`session-filter-section`,children:[(0,E.jsx)(`div`,{className:`session-filter-head`,children:`GitHub repo`}),(0,E.jsxs)(`button`,{className:`menu-item session-filter-item`,role:`menuitemradio`,"aria-checked":!N,onClick:()=>{P(``),U(!1)},children:[(0,E.jsx)(`span`,{children:`All repositories`}),!N&&(0,E.jsx)(`span`,{className:`session-filter-check`,children:(0,E.jsx)(d,{size:15})})]}),se.length===0&&(0,E.jsx)(`div`,{className:`session-filter-empty`,children:`No GitHub repos`}),se.map(e=>(0,E.jsxs)(`button`,{className:`menu-item session-filter-item`,role:`menuitemradio`,"aria-checked":e===N,onClick:()=>{P(e),U(!1)},children:[(0,E.jsx)(`span`,{children:e}),e===N&&(0,E.jsx)(`span`,{className:`session-filter-check`,children:(0,E.jsx)(d,{size:15})})]},e))]}),(0,E.jsxs)(`div`,{className:`session-filter-foot`,children:[(0,E.jsx)(`span`,{className:`session-filter-summary`,children:ue}),(N||I)&&(0,E.jsx)(`button`,{className:`session-filter-clear`,onClick:()=>{P(``),R(``)},children:`Clear`})]})]})]})]}),Z.length===0&&X.length===0&&(0,E.jsx)(`div`,{className:`session-empty`,children:de}),(0,E.jsxs)(`ul`,{children:[X.length>0&&(0,E.jsx)(`li`,{className:`session-group-label`,children:`Running`}),X.map(e=>{let n=e.name||e.label||e.agent||`Terminal session`,r=fe(e);return(0,E.jsx)(`li`,{className:`session-row`,children:(0,E.jsx)(`button`,{className:`session-item`,onClick:()=>t(e.termId,e.nodeId),children:(0,E.jsxs)(`span`,{className:`session-body`,children:[(0,E.jsxs)(`span`,{className:`session-title-row`,children:[(0,E.jsx)(L,{status:`working`,srLabel:`${x.label} · Running in terminal`}),(0,E.jsx)(`span`,{className:`session-name`,children:n}),V(e.lastActivityAt??e.createdAt)&&(0,E.jsx)(`span`,{className:`session-age`,title:`Running in terminal`,children:V(e.lastActivityAt??e.createdAt)})]}),r&&(0,E.jsx)(`span`,{className:`session-meta`,children:r})]})})},e.termId)}),Q.map((t,a)=>{let o=e=>_(e)>0?`Needs attention`:F(e.updatedAt),s=t.nestedUnder?null:o(t),c=a>0?Q.slice(0,a).reverse().find(e=>!e.nestedUnder):void 0,l=c?o(c):null,u=s&&s!==l?(0,E.jsx)(`li`,{className:`session-group-label`,children:s}):null,d=ae(t,Y(t.nodeId)||t.pendingNodeName||null),f=y(t),p=r?.get(t.sessionId)??w(t.source),h=ne(n?.get(t.sessionId))??(_(t)>0?{text:y(t),tone:t.status===`failed`||t.status===`needs_action`||t.needsAction?`danger`:`warn`}:null),g=t.pendingLaunch&&t.status===`failed`;return(0,E.jsxs)(m.Fragment,{children:[u,(0,E.jsxs)(`li`,{className:`session-row${t.nestedUnder?` nested`:``}`,children:[(0,E.jsx)(`button`,{className:`session-item${t.sessionId===S?` active`:``}`,"aria-current":t.sessionId===S?`page`:void 0,onClick:()=>e(t.sessionId,t.path,t.nodeId),children:(0,E.jsxs)(`span`,{className:`session-body`,children:[(0,E.jsxs)(`span`,{className:`session-title-row`,children:[(0,E.jsx)(L,{status:ee(t),srLabel:`${p.label} · ${f}`}),(0,E.jsx)(`span`,{className:`session-name`,children:t.name}),(0,E.jsx)(ie,{prs:t.prs}),V(t.updatedAt)&&(0,E.jsx)(`span`,{className:`session-age`,title:f,children:V(t.updatedAt)})]}),(h||d)&&(0,E.jsxs)(`span`,{className:`session-meta`,children:[p.automation&&(0,E.jsx)(O,{kind:p.kind,size:`xs`}),h&&(0,E.jsx)(`span`,{className:`row-hint ${h.tone}`,children:h.text}),h&&d?` · `:``,d]})]})}),t.rebuildable&&!t.pendingLaunch&&(0,E.jsx)(`span`,{className:`pending-launch-actions`,children:(0,E.jsx)(`button`,{type:`button`,disabled:j===t.sessionId,"aria-label":`Delete ${t.name}`,onClick:()=>A({sessionId:t.sessionId,name:t.name||`Saved session`}),children:j===t.sessionId?`Deleting…`:`Delete`})}),g&&(0,E.jsxs)(`span`,{className:`pending-launch-actions`,children:[(0,E.jsx)(`button`,{type:`button`,onClick:()=>void i.retryPendingLaunch(t.sessionId),children:`Retry`}),(0,E.jsx)(`button`,{type:`button`,onClick:()=>void i.dismissPendingLaunch(t.sessionId),children:`Dismiss`})]})]})]},t.sessionId)})]}),le>0&&(0,E.jsxs)(`button`,{className:`session-more`,onClick:()=>K(e=>e+W),children:[`Show more (`,le,`)`]})]})}export{v as C,y as E,g as S,ee as T,b as _,V as a,T as b,M as c,te as d,P as f,w as g,O as h,G as i,k as l,A as m,ie as n,B as o,j as p,L as r,F as s,R as t,N as u,S as v,h as w,_ as x,C as y};
|