@ahpd/web 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/dist/app/assets/{AudioPage-BCuwTLKN.js → AudioPage-DAAck9ph.js} +1 -1
- package/dist/app/assets/{Composer-Crdqrcjj.js → Composer-Dp_Z0bXp.js} +1 -1
- package/dist/app/assets/{DataTable-D9RxuuR3.js → DataTable-8woVlU4S.js} +1 -1
- package/dist/app/assets/{Details-BhWMrDPk.js → Details-ByJkvhJN.js} +1 -1
- package/dist/app/assets/{DiffPage-D8wjIu2g.js → DiffPage-Ck21x0bd.js} +1 -1
- package/dist/app/assets/{Edit-B12zsW3c.js → Edit-rv9ZDDDu.js} +1 -1
- package/dist/app/assets/{Explorer-C2wZaZN2.js → Explorer-CDm6vvt6.js} +1 -1
- package/dist/app/assets/{Explorer-DLH41MqT.js → Explorer-CNz5U5q-.js} +1 -1
- package/dist/app/assets/{Explorer-CViecqG_.js → Explorer-DS_lqr3R.js} +1 -1
- package/dist/app/assets/{Explorer-z4mktaMi.js → Explorer-DoNVPZ-C.js} +1 -1
- package/dist/app/assets/{Explorer-BR0vyz4x.js → Explorer-VoN5CYd5.js} +1 -1
- package/dist/app/assets/{FilePage-CErxqbDp.js → FilePage-CAUDXIh9.js} +3 -3
- package/dist/app/assets/{Filter-DohSRUkD.js → Filter-D1FpBH5R.js} +1 -1
- package/dist/app/assets/{ImagePage-B-n1btEA.js → ImagePage-cy_jkGi1.js} +1 -1
- package/dist/app/assets/{Info-BbyvhG4Q.js → Info-DqnamTeq.js} +1 -1
- package/dist/app/assets/{LocaleToggle-CETgRIRf.js → LocaleToggle-B91QrqGs.js} +1 -1
- package/dist/app/assets/{LogPage-C_h99NtQ.js → LogPage-CKm7_URt.js} +1 -1
- package/dist/app/assets/{LoginForm-p7rsv-LJ.js → LoginForm-rBz-5JFG.js} +1 -1
- package/dist/app/assets/{MarkdownPage-Cv5UyfVY.js → MarkdownPage-DgalhN_B.js} +1 -1
- package/dist/app/assets/{New-D0REy_20.js → New-D6QCCHrx.js} +1 -1
- package/dist/app/assets/{Page-TDRLt015.js → Page-CnfUTsQD.js} +1 -1
- package/dist/app/assets/{Page-B3UbQqyT.js → Page-DGp_WebG.js} +1 -1
- package/dist/app/assets/{Page-cKDPN7cD.js → Page-Dqf45zd4.js} +1 -1
- package/dist/app/assets/{Pagination-v2fHA8Hf.js → Pagination-fEfxXCWD.js} +1 -1
- package/dist/app/assets/{PortaLock-ieoqUizB.js → PortaLock-BFpTWuKB.js} +2 -2
- package/dist/app/assets/{Settings-BP67xLx9.js → Settings-ALaVSuhU.js} +1 -1
- package/dist/app/assets/{SigillumGate-DNRuVdn4.js → SigillumGate-Bq_GLDvI.js} +1 -1
- package/dist/app/assets/{SingleLayout-D0y3xoJg.js → SingleLayout-BzRi_cEY.js} +1 -1
- package/dist/app/assets/SpatialLayout-Cote5YNZ.js +1 -0
- package/dist/app/assets/SplitLayout-CK5SuMF1.js +1 -0
- package/dist/app/assets/StackLayout-BUdng0sD.js +1 -0
- package/dist/app/assets/Start-D5KBqSwf.js +1 -0
- package/dist/app/assets/Start-Dtuu25RL.css +1 -0
- package/dist/app/assets/TabLayout-ByKrZ0yM.js +1 -0
- package/dist/app/assets/TabPanelLayout-B4DWG6Zm.js +1 -0
- package/dist/app/assets/{TerminalPage-BaFThhYG.js → TerminalPage-CDtmKMSK.js} +1 -1
- package/dist/app/assets/{ThemeModeToggle-D1kTZNm_.js → ThemeModeToggle-C0j9D4s0.js} +1 -1
- package/dist/app/assets/{ThemePicker-BIFeJU_m.js → ThemePicker-DEUED0NH.js} +1 -1
- package/dist/app/assets/{Tree-BqFzA5wp.js → Tree-fxC7yDSR.js} +1 -1
- package/dist/app/assets/{VideoPage-DbVVXi0p.js → VideoPage-Cz7g_2E1.js} +1 -1
- package/dist/app/assets/{actions-BmFc5yoR.js → actions-BzJiPQuh.js} +1 -1
- package/dist/app/assets/{changeset-BgSW341C.js → changeset-eZAmDe3s.js} +1 -1
- package/dist/app/assets/{channel-8aIcEm3f.js → channel-UD2KGCy_.js} +1 -1
- package/dist/app/assets/{clicks-B3stbczh.js → clicks-DIh3kBLi.js} +1 -1
- package/dist/app/assets/{composer-commands-AmOY6XGO.js → composer-commands-B8AF8OGi.js} +1 -1
- package/dist/app/assets/data-hUAVersf.js +2 -0
- package/dist/app/assets/{dist-D9412h7o.js → dist-B4E-6SqB.js} +1 -1
- package/dist/app/assets/{dist-B9NMd4es.js → dist-BdNRSgzN.js} +1 -1
- package/dist/app/assets/{dist-CEr2uR4w.js → dist-BwHJSc3S.js} +1 -1
- package/dist/app/assets/{dist-DYPX2Ybv.js → dist-DUFzb_Eu.js} +1 -1
- package/dist/app/assets/{dist-drsoOe-s.js → dist-DX2Uz40S.js} +1 -1
- package/dist/app/assets/{dist-BnQxBrCW.js → dist-Db_OB0lX.js} +1 -1
- package/dist/app/assets/{dist-CYq92lOO.js → dist-uvIW_qsj.js} +1 -1
- package/dist/app/assets/folder-path-CTpCmycG.js +1 -0
- package/dist/app/assets/index-B1VQ36Tb.css +1 -0
- package/dist/app/assets/index-yhQX4tVS.js +14 -0
- package/dist/app/assets/{media-C3ferCB3.js → media-Coozt7AL.js} +1 -1
- package/dist/app/assets/{notify-CJo-T9e2.js → notify-BQ9fSOfy.js} +1 -1
- package/dist/app/assets/sessions-8PScJEDe.js +2 -0
- package/dist/app/assets/{terminal-BMZxY-St.js → terminal-BPj7jGw5.js} +1 -1
- package/dist/app/assets/{text-B601jRcP.js → text-BdULOY8N.js} +1 -1
- package/dist/app/index.html +8 -8
- package/dist/embed/index.d.ts +5 -0
- package/package.json +2 -2
- package/dist/app/assets/SpatialLayout-CKZCVibM.js +0 -1
- package/dist/app/assets/SplitLayout-7EOWfDlZ.js +0 -1
- package/dist/app/assets/StackLayout-1wBXKLKy.js +0 -1
- package/dist/app/assets/TabLayout-ClrRSvj1.js +0 -1
- package/dist/app/assets/TabPanelLayout-YGvLy1cR.js +0 -1
- package/dist/app/assets/data-CBWyZN_H.js +0 -2
- package/dist/app/assets/folder-path-CmVXGhKI.js +0 -1
- package/dist/app/assets/index-BQcTkW2q.css +0 -1
- package/dist/app/assets/index-DBKNxflN.js +0 -14
- package/dist/app/assets/sessions-BcRKb9k7.js +0 -2
package/README.md
CHANGED
|
@@ -20,7 +20,6 @@ What you get:
|
|
|
20
20
|
- **Host Information**, shows details about the server and its environment.
|
|
21
21
|
- **Agents**, the ones the host offers: their models, customizations and sign-in, and a new session with one.
|
|
22
22
|
- **Settings**, configure the host server and its plugins.
|
|
23
|
-
- **Administration screens** for every ahpd command (ahpd only). They are built from the daemon's `/api/cli-manifest`, so a new command shows up here with no change to this package.
|
|
24
23
|
|
|
25
24
|
<picture>
|
|
26
25
|
<source media="(prefers-color-scheme: light)" srcset="docs/media/shot-01-light.jpeg">
|
|
@@ -77,7 +76,6 @@ Then open `http://127.0.0.1:5190/`.
|
|
|
77
76
|
|
|
78
77
|
- **With a token**, the server adds it to the socket. The page asks for nothing, and the browser never sees the token.
|
|
79
78
|
- **Without one**, the page asks for a token, as it does in ahpd.
|
|
80
|
-
- The administration screens need ahpd's `/api`, so they are not here.
|
|
81
79
|
|
|
82
80
|
### Options
|
|
83
81
|
|
|
@@ -179,6 +177,9 @@ ahpd run --plugin /path/to/ahpd-web
|
|
|
179
177
|
|
|
180
178
|
CI runs on every push to `main`: typecheck, tests, build, and the packed package installed and served once.
|
|
181
179
|
|
|
180
|
+
What changed in each version is in [CHANGELOG.md](CHANGELOG.md).
|
|
181
|
+
Before a release, move the `Unreleased` entries under the new version.
|
|
182
|
+
|
|
182
183
|
A `v*` tag releases. It must match `version` in `package.json`:
|
|
183
184
|
|
|
184
185
|
```sh
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{t as n}from"./emojis-7RT6GvLa.js";import{t as r}from"./media-
|
|
1
|
+
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{t as n}from"./emojis-7RT6GvLa.js";import{t as r}from"./media-Coozt7AL.js";var i=t(),a=e(),o=64,s=e=>!Number.isFinite(e)||e<=0?`0:00`:`${Math.floor(e/60)}:${Math.floor(e%60).toString().padStart(2,`0`)}`;function c({url:e}){let t=(0,i.useRef)(null),[r,c]=(0,i.useState)(!1),[l,u]=(0,i.useState)(0),[d,f]=(0,i.useState)(0),[p,m]=(0,i.useState)(1),[h,g]=(0,i.useState)(!1),_=(0,i.useMemo)(()=>Array.from({length:o},(e,t)=>Math.min(100,Math.max(15,(Math.abs(Math.sin(t*.45)*.6+Math.cos(t*.9)*.4)+t%5*.06)*100))),[]),v=d>0?l/d:0,y=()=>{let e=t.current;e!==null&&(e.paused?e.play().catch(()=>g(!0)):e.pause())},b=e=>{let n=t.current;n===null||d<=0||(n.currentTime=e*d,u(n.currentTime))};return h?(0,a.jsx)(`p`,{className:`web-note web-media__note`,children:`This browser cannot play this file.`}):(0,a.jsxs)(`div`,{className:`web-audio`,children:[(0,a.jsx)(`button`,{type:`button`,className:`web-audio__play`,onClick:y,title:r?`Pause`:`Play`,children:r?n.pause:n.run}),(0,a.jsxs)(`div`,{className:`web-audio__track`,children:[(0,a.jsx)(`div`,{className:`web-audio__bars`,onClick:e=>{let t=e.currentTarget.getBoundingClientRect();b(Math.min(1,Math.max(0,(e.clientX-t.left)/t.width)))},children:_.map((e,t)=>(0,a.jsx)(`span`,{"data-played":v>=t/o?`true`:`false`,style:{height:`${e}%`}},t))}),(0,a.jsxs)(`div`,{className:`web-audio__time`,children:[(0,a.jsx)(`span`,{children:s(l)}),(0,a.jsx)(`span`,{children:s(d)})]})]}),(0,a.jsxs)(`button`,{type:`button`,className:`web-audio__rate`,onClick:()=>{let e=p>=2?.5:p+.5;t.current!==null&&(t.current.playbackRate=e),m(e)},title:`Speed`,children:[p,`x`]}),(0,a.jsx)(`audio`,{ref:t,src:e,preload:`metadata`,onPlay:()=>c(!0),onPause:()=>c(!1),onEnded:()=>c(!1),onTimeUpdate:e=>u(e.currentTarget.currentTime),onLoadedMetadata:e=>f(e.currentTarget.duration),onError:()=>g(!0)})]})}function l({uri:e}){return(0,a.jsx)(r,{uri:e,children:e=>(0,a.jsx)(c,{url:e})})}export{l as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{i as n}from"./notify-CJo-T9e2.js";import{t as r,u as i}from"./useStore-BQkzWMs-.js";import{n as a}from"./ScenaProvider-6A3TJumQ.js";import{t as o}from"./Button-_R1oktDz.js";import{j as s,v as c}from"./data-CBWyZN_H.js";import{a as l,n as u}from"./words-T8-D0K4W.js";import{t as d}from"./emojis-7RT6GvLa.js";import{a as ee,i as f,n as p,o as te,r as m,s as h,t as g}from"./ActionList-aOUHK9Z9.js";import{_,a as v,d as y,f as b,g as x,h as S,i as ne,l as C,m as w,o as re,p as T,r as E,s as D,t as O,u as ie,v as k}from"./composer-commands-AmOY6XGO.js";import{n as A,t as j}from"./drag-ruzgQUFW.js";var M=e(),N=t(),P=[`/`,`@`];function F(e){let{input:t,setInput:n,caretIndex:r,panelDataContext:i,slashSlot:o=`chat:input/`,mentionSlot:s=`chat:input@`,mentionProvider:c,prefixes:l=P,onCaretChange:u}=e,d=a(),[_,v]=(0,N.useState)([]),y=(0,N.useRef)(_);y.current=_;let b=(0,N.useRef)(null),x=(0,N.useMemo)(()=>f(t,l,r),[t,l,r]),[S,ne]=(0,N.useState)(null),C=x===null?null:`${x.start}:${x.token}`,w=x!==null&&C!==S,re=(0,N.useRef)(c);re.current=c;let T=c!==void 0,E=(0,N.useCallback)(e=>re.current?.(e)??[],[]),D=(0,N.useCallback)(e=>x?.prefix===`@`?T?{provider:E,footerHints:!0,rich:!0}:{query:{slot:s,q:e},footerHints:!0,rich:!0}:{query:{slot:o,q:e},footerHints:!0,rich:!0},[x?.prefix,T,E,s,o]);(0,N.useEffect)(()=>{if(!x||!w){y.current.length>0&&v([]);return}let e=y.current[y.current.length-1];if(y.current.length<=1){v([{spec:D(x.query)}]);return}let t=e&&`spec`in e?e.spec:void 0;if(t?.sentinel&&!h(x.token,t.sentinel)){v([{spec:D(x.query)}]);return}t?.query&&v(e=>{let n=e.slice(0,-1);return n.push({spec:{...t,query:{...t.query,q:x.query}}}),n})},[x,w,D]);let O=(0,N.useMemo)(()=>{let e=_[_.length-1];return e&&`spec`in e?e.spec.sentinel:void 0},[_]),ie=(0,N.useMemo)(()=>te(x?.query??``,O),[x,O]),k=(0,N.useMemo)(()=>({pushList:e=>v(t=>[...t,{spec:e}]),replaceList:e=>v(t=>{let n=t.slice(0,-1);return n.push({spec:e}),n}),openInline:e=>v(t=>[...t,{component:(0,M.jsx)(I,{name:e})}]),openPopover:()=>void 0,back:()=>v(e=>e.length>1?e.slice(0,-1):e),closeMenu:()=>{v([]);let e=m(t,r,``,l);n(e.next),u?.(e.caret)},keepOpen:()=>void 0,insertAtCursor:e=>{let i=m(t,r,e,l);n(i.next),u?.(i.caret)},replaceActiveToken:e=>{let i=m(t,r,e,l);n(i.next),u?.(i.caret)},query:ie}),[t,r,l,n,ie,u]),A=_[_.length-1],j=(0,N.useCallback)(()=>v(e=>e.slice(0,-1)),[]),F=_.length>1?j:void 0,L=(0,N.useCallback)(e=>{if(!w)return!1;if(e.key===`Escape`)return e.preventDefault(),ne(C),v([]),!0;if(e.key===`ArrowLeft`&&F){let t=e.target;if(t.selectionStart===t.selectionEnd&&x&&t.selectionStart===x.start+x.prefix.length)return e.preventDefault(),F(),!0}return e.key===`ArrowDown`||e.key===`ArrowUp`||e.key===`Enter`||e.key===`Tab`?b.current?.handleKey(e)??!1:!1},[w,F,x,C]),R=(0,N.useCallback)(e=>{let a=d.commands.get(e);if(!a)return null;ne(null);let s=p(a.shortcut),c=null;if(s){let{next:e,caret:i}=ee(t,r,s,l);c=i,n(e),v([{spec:{query:{slot:o,q:s.replace(/^[/@]/,``)},footerHints:!0,rich:!0}}])}return d.commands.execute(e,void 0,{source:`menu`,dataContext:i,host:k}),c},[d,i,t,r,l,k,n,o]),z=(0,N.useCallback)(()=>k.closeMenu(),[k]);return{menuVisible:w,activeSentinel:O,pickerNode:A?`component`in A?A.component:(0,M.jsx)(g,{ref:b,spec:A.spec,hostCtx:k,onBack:F,dataContext:i,manageKeys:!1}):null,handleMenuKeyDown:L,openCommand:R,closeMenu:z}}function I({name:e}){return(0,M.jsxs)(`div`,{style:{padding:12},children:[`[component: `,e,`]`]})}var L=d.caretDown;function R({label:e,title:t,onOpen:n,on:r}){return(0,M.jsxs)(`button`,{type:`button`,className:`web-chip`,"data-on":r===!0?`true`:`false`,title:t,disabled:n===void 0,onClick:n,...n===void 0?{}:{"aria-haspopup":`menu`},children:[e,n===void 0?null:(0,M.jsx)(`span`,{"aria-hidden":`true`,children:L})]})}function z({label:e,title:t,value:n,options:r,onChange:i}){let a=r.find(e=>e.value===n)?.label??n;return(0,M.jsxs)(`span`,{className:`web-chip web-chip--choice`,title:t??e,children:[`${e}: ${a===``?`default`:a}`,(0,M.jsx)(`span`,{"aria-hidden":`true`,children:L}),(0,M.jsx)(`select`,{"aria-label":e,value:n,onChange:e=>i(e.currentTarget.value),children:r.map(e=>(0,M.jsx)(`option`,{value:e.value,children:e.label},e.value))})]})}function ae({label:e,title:t,value:n,onChange:r}){return(0,M.jsx)(`button`,{type:`button`,className:`web-chip`,"data-on":n?`true`:`false`,"aria-pressed":n,title:t??e,onClick:()=>r(!n),children:e})}function B({label:e,title:t,value:n,placeholder:r,onChange:i,width:a}){return(0,M.jsxs)(`span`,{className:`web-chip web-chip--text`,title:t??e,children:[e,(0,M.jsx)(`input`,{"aria-label":e,value:n,placeholder:r??``,style:{width:a??110},onChange:e=>i(e.currentTarget.value)})]})}function oe({attachments:e,folder:t,onRemove:n}){return e.length===0?null:(0,M.jsx)(`div`,{className:`web-composer__attached`,children:e.map((e,r)=>(0,M.jsxs)(`span`,{className:`web-attachment`,title:T(e,t)??b(e),children:[(0,M.jsx)(`span`,{className:`web-attachment__icon`,"aria-hidden":`true`,children:y(e)}),(0,M.jsx)(`span`,{className:`web-attachment__label`,children:b(e)}),(0,M.jsx)(`button`,{type:`button`,className:`web-attachment__remove`,"aria-label":`Remove ${b(e)}`,onClick:()=>n(r),children:d.close})]},`${b(e)}-${r}`))})}function se({onClick:e}){return(0,M.jsx)(`button`,{type:`button`,className:`web-composer__add`,"aria-label":`Add context`,title:`Add context`,onClick:e,children:(0,M.jsx)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 12 12`,"aria-hidden":`true`,children:(0,M.jsx)(`path`,{d:`M6 1v10M1 6h10`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`})})})}function ce({attach:e,insert:t,upload:n}){let[r,i]=(0,N.useState)(null);return{dropping:r,onDragOver:e=>{let t=j(e.dataTransfer);(t||Array.from(e.dataTransfer.types).includes(`Files`))&&(e.preventDefault(),e.dataTransfer.dropEffect=`copy`,i(t&&e.shiftKey?`mention`:`attach`))},onDragLeave:e=>{e.currentTarget.contains(e.relatedTarget)||i(null)},onDrop:r=>{i(null);let a=A(r.dataTransfer);if(a!==null){r.preventDefault();let n=S(a.uri,a.directory);if(!r.shiftKey){e(n);return}let i=`@${u(a.uri)}${a.directory?`/`:``}`;t(`${i} `),e(k(n,i));return}r.dataTransfer.files.length!==0&&(r.preventDefault(),n(r.dataTransfer.files))}}}var le=`$/ahp/composerFocus`,V=e=>typeof e==`object`&&e?e:{},H=e=>typeof e==`string`&&e!==``?e:void 0;function ue(e){let t=V(e).items;return(Array.isArray(t)?t:[]).map(e=>{let t=V(e),n=V(V(t.attachment)._meta),r=H(t.insertText)??``;return{insert:r,label:H(n.command)??r,detail:H(n.description),hint:H(n.argumentHint)}}).filter(e=>e.insert!==``)}var U=e=>e.map(e=>({insert:`/${e.name}`,label:`/${e.name}`,detail:e.description===``?void 0:e.description,hint:void 0}));function de(e,t,n,r=O){return i(...n.map(n=>e.commands.register({id:`ahp.composer.host.${t}.${n.insert}`,title:n.hint===void 0?n.label:`${n.label} ${n.hint}`,...n.detail===void 0?{}:{description:n.detail},category:`Agent`,shortcut:n.label.startsWith(`/`)?n.label:`/${n.label}`,slots:[r],when:`${le} == "${t}"`,run:e=>e.host?.replaceActiveToken(`${n.insert} `)})))}var fe=0,pe=260,me=[`/`,`@`],he=800;function ge(e){e!==null&&(e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,pe)}px`)}function _e(e,t,n){return{text:e,origin:{kind:`user`},...t===void 0?{}:{model:{id:t}},...n.length===0?{}:{attachments:_(e,n)}}}var W=(0,N.memo)(function({chatUri:e,activeId:t,activeStart:i,queued:ee,steering:f,draft:p,lastModel:te,config:m,summary:h,send:g}){let _=a(),y=(r(`$/ahp/agents`)??[]).find(e=>e.provider===h.provider),b=(0,N.useMemo)(()=>ne(e),[e]),[S]=(0,N.useState)(()=>`composer-${++fe}`),A=h.workingDirectories?.[0],[j,P]=(0,N.useState)(()=>p?.text??``),[I,L]=(0,N.useState)(null),[z,ae]=(0,N.useState)(()=>p?.model?.id??te),[B,V]=(0,N.useState)(()=>p?.attachments??[]),H=(0,N.useRef)(null),U=t===void 0?void 0:{id:t,startedAt:i??``},pe=ee??[];(0,N.useEffect)(()=>ge(H.current),[j]);let W=(0,N.useRef)(!1);(0,N.useEffect)(()=>{if(!W.current)return;let t=window.setTimeout(()=>{let t=j.trim()===``&&B.length===0?void 0:_e(j,z,B);c(e,{type:`chat/draftChanged`,draft:t})},he);return()=>window.clearTimeout(t)},[j,z,B,e]);let G=(0,N.useCallback)(e=>{L(e),requestAnimationFrame(()=>{let t=H.current;t!==null&&(t.focus(),t.setSelectionRange(e,e))})},[]),K=(0,N.useCallback)(e=>{W.current=!0,V(t=>t.some(t=>x(t,e))?t:[...t,e])},[]),ve=(0,N.useRef)(null),ye=(0,N.useCallback)(async e=>{let t=await w(Array.from(e??[]));for(let e of t.attached)K(e);t.refused.length>0&&n(`Not attached`,{description:`Over 5 MB or unreadable: ${t.refused.join(`, `)}`})},[K]),q=ce({attach:K,insert:(0,N.useCallback)(e=>{let t=Y.current??J.current.length,n=J.current.slice(0,t),r=n===``||/\s$/.test(n)?``:` `;W.current=!0,P(`${n}${r}${e}${J.current.slice(t)}`),G(n.length+r.length+e.length)},[G]),upload:e=>void ye(e)}),J=(0,N.useRef)(j);J.current=j;let Y=(0,N.useRef)(I);Y.current=I;let be=(0,N.useCallback)(async()=>{let t=J.current;try{return(await s(`completions`,{kind:`userMessage`,channel:e,text:t,offset:Y.current??t.length})).items.map(e=>{let t=T(e.attachment,A);return{title:e.insertText.replace(/^@/,``),...t===void 0?{}:{description:t},onSelect:t=>{t.replaceActiveToken(`${e.insertText} `),K(k(e.attachment,e.insertText))}}})}catch{return[]}},[e,A,K]),[xe,Se]=(0,N.useState)([]);(0,N.useEffect)(()=>{let t=!0;return s(`completions`,{kind:`userMessage`,channel:e,text:`/`,offset:1}).then(e=>{t&&Se(ue(e))}).catch(()=>{t&&Se([])}),()=>{t=!1}},[e]),(0,N.useEffect)(()=>{let e=de(_,S,xe);return()=>e.dispose()},[_,S,xe]);let X=F({input:j,setInput:P,caretIndex:I,panelDataContext:b,slashSlot:O,prefixes:me,mentionProvider:be,onCaretChange:G}),Z=(0,N.useMemo)(()=>Object.entries(m?.schema.properties??{}).filter(([,e])=>e.sessionMutable===!0&&e.readOnly!==!0).map(([e,t])=>({key:e,schema:t,value:m?.values[e]})),[m]),Ce=(0,N.useCallback)(()=>{if(t===void 0)return;let e=Date.parse(i??``);g({type:`chat/turnCancelled`,turnId:t,duration:Number.isNaN(e)?0:Math.max(0,Date.now()-e)})},[t,i,g]),we=(0,N.useMemo)(()=>(y?.models??[]).map(e=>({id:e.id,name:e.name})),[y]),Q=(0,N.useRef)(null);Q.current={models:()=>we,model:()=>z,setModel:e=>{W.current=!0,ae(e)},options:()=>Z,setOption:(e,t)=>{c(h.resource,{type:`session/configChanged`,config:{[e]:t}})},running:()=>U!==void 0,stop:Ce,session:()=>h.resource,attach:K,type:e=>{let t=Y.current??J.current.length,n=J.current.slice(0,t),r=e===`/`||n===``||/\s$/.test(n)?``:` `,i=e===`/`&&n.trim()===``?`/${J.current.slice(t)}`:`${n}${r}${e}${J.current.slice(t)}`,a=e===`/`&&n.trim()===``?1:n.length+r.length+1;W.current=!0,P(i),G(a)},upload:()=>ve.current?.click()},(0,N.useEffect)(()=>E(b,{models:()=>Q.current?.models()??[],model:()=>Q.current?.model(),setModel:e=>Q.current?.setModel(e),options:()=>Q.current?.options()??[],setOption:(e,t)=>Q.current?.setOption(e,t),running:()=>Q.current?.running()??!1,stop:()=>Q.current?.stop(),session:()=>Q.current?.session()??``,attach:e=>Q.current?.attach(e),type:e=>Q.current?.type(e),upload:()=>Q.current?.upload()}),[b]);let Te=Z.map(e=>e.key).join(`
|
|
1
|
+
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{i as n}from"./notify-BQ9fSOfy.js";import{t as r,u as i}from"./useStore-BQkzWMs-.js";import{n as a}from"./ScenaProvider-6A3TJumQ.js";import{t as o}from"./Button-_R1oktDz.js";import{j as s,v as c}from"./data-hUAVersf.js";import{a as l,n as u}from"./words-T8-D0K4W.js";import{t as d}from"./emojis-7RT6GvLa.js";import{a as ee,i as f,n as p,o as te,r as m,s as h,t as g}from"./ActionList-aOUHK9Z9.js";import{_,a as v,d as y,f as b,g as x,h as S,i as ne,l as C,m as w,o as re,p as T,r as E,s as D,t as O,u as ie,v as k}from"./composer-commands-B8AF8OGi.js";import{n as A,t as j}from"./drag-ruzgQUFW.js";var M=e(),N=t(),P=[`/`,`@`];function F(e){let{input:t,setInput:n,caretIndex:r,panelDataContext:i,slashSlot:o=`chat:input/`,mentionSlot:s=`chat:input@`,mentionProvider:c,prefixes:l=P,onCaretChange:u}=e,d=a(),[_,v]=(0,N.useState)([]),y=(0,N.useRef)(_);y.current=_;let b=(0,N.useRef)(null),x=(0,N.useMemo)(()=>f(t,l,r),[t,l,r]),[S,ne]=(0,N.useState)(null),C=x===null?null:`${x.start}:${x.token}`,w=x!==null&&C!==S,re=(0,N.useRef)(c);re.current=c;let T=c!==void 0,E=(0,N.useCallback)(e=>re.current?.(e)??[],[]),D=(0,N.useCallback)(e=>x?.prefix===`@`?T?{provider:E,footerHints:!0,rich:!0}:{query:{slot:s,q:e},footerHints:!0,rich:!0}:{query:{slot:o,q:e},footerHints:!0,rich:!0},[x?.prefix,T,E,s,o]);(0,N.useEffect)(()=>{if(!x||!w){y.current.length>0&&v([]);return}let e=y.current[y.current.length-1];if(y.current.length<=1){v([{spec:D(x.query)}]);return}let t=e&&`spec`in e?e.spec:void 0;if(t?.sentinel&&!h(x.token,t.sentinel)){v([{spec:D(x.query)}]);return}t?.query&&v(e=>{let n=e.slice(0,-1);return n.push({spec:{...t,query:{...t.query,q:x.query}}}),n})},[x,w,D]);let O=(0,N.useMemo)(()=>{let e=_[_.length-1];return e&&`spec`in e?e.spec.sentinel:void 0},[_]),ie=(0,N.useMemo)(()=>te(x?.query??``,O),[x,O]),k=(0,N.useMemo)(()=>({pushList:e=>v(t=>[...t,{spec:e}]),replaceList:e=>v(t=>{let n=t.slice(0,-1);return n.push({spec:e}),n}),openInline:e=>v(t=>[...t,{component:(0,M.jsx)(I,{name:e})}]),openPopover:()=>void 0,back:()=>v(e=>e.length>1?e.slice(0,-1):e),closeMenu:()=>{v([]);let e=m(t,r,``,l);n(e.next),u?.(e.caret)},keepOpen:()=>void 0,insertAtCursor:e=>{let i=m(t,r,e,l);n(i.next),u?.(i.caret)},replaceActiveToken:e=>{let i=m(t,r,e,l);n(i.next),u?.(i.caret)},query:ie}),[t,r,l,n,ie,u]),A=_[_.length-1],j=(0,N.useCallback)(()=>v(e=>e.slice(0,-1)),[]),F=_.length>1?j:void 0,L=(0,N.useCallback)(e=>{if(!w)return!1;if(e.key===`Escape`)return e.preventDefault(),ne(C),v([]),!0;if(e.key===`ArrowLeft`&&F){let t=e.target;if(t.selectionStart===t.selectionEnd&&x&&t.selectionStart===x.start+x.prefix.length)return e.preventDefault(),F(),!0}return e.key===`ArrowDown`||e.key===`ArrowUp`||e.key===`Enter`||e.key===`Tab`?b.current?.handleKey(e)??!1:!1},[w,F,x,C]),R=(0,N.useCallback)(e=>{let a=d.commands.get(e);if(!a)return null;ne(null);let s=p(a.shortcut),c=null;if(s){let{next:e,caret:i}=ee(t,r,s,l);c=i,n(e),v([{spec:{query:{slot:o,q:s.replace(/^[/@]/,``)},footerHints:!0,rich:!0}}])}return d.commands.execute(e,void 0,{source:`menu`,dataContext:i,host:k}),c},[d,i,t,r,l,k,n,o]),z=(0,N.useCallback)(()=>k.closeMenu(),[k]);return{menuVisible:w,activeSentinel:O,pickerNode:A?`component`in A?A.component:(0,M.jsx)(g,{ref:b,spec:A.spec,hostCtx:k,onBack:F,dataContext:i,manageKeys:!1}):null,handleMenuKeyDown:L,openCommand:R,closeMenu:z}}function I({name:e}){return(0,M.jsxs)(`div`,{style:{padding:12},children:[`[component: `,e,`]`]})}var L=d.caretDown;function R({label:e,title:t,onOpen:n,on:r}){return(0,M.jsxs)(`button`,{type:`button`,className:`web-chip`,"data-on":r===!0?`true`:`false`,title:t,disabled:n===void 0,onClick:n,...n===void 0?{}:{"aria-haspopup":`menu`},children:[e,n===void 0?null:(0,M.jsx)(`span`,{"aria-hidden":`true`,children:L})]})}function z({label:e,title:t,value:n,options:r,onChange:i}){let a=r.find(e=>e.value===n)?.label??n;return(0,M.jsxs)(`span`,{className:`web-chip web-chip--choice`,title:t??e,children:[`${e}: ${a===``?`default`:a}`,(0,M.jsx)(`span`,{"aria-hidden":`true`,children:L}),(0,M.jsx)(`select`,{"aria-label":e,value:n,onChange:e=>i(e.currentTarget.value),children:r.map(e=>(0,M.jsx)(`option`,{value:e.value,children:e.label},e.value))})]})}function ae({label:e,title:t,value:n,onChange:r}){return(0,M.jsx)(`button`,{type:`button`,className:`web-chip`,"data-on":n?`true`:`false`,"aria-pressed":n,title:t??e,onClick:()=>r(!n),children:e})}function B({label:e,title:t,value:n,placeholder:r,onChange:i,width:a}){return(0,M.jsxs)(`span`,{className:`web-chip web-chip--text`,title:t??e,children:[e,(0,M.jsx)(`input`,{"aria-label":e,value:n,placeholder:r??``,style:{width:a??110},onChange:e=>i(e.currentTarget.value)})]})}function oe({attachments:e,folder:t,onRemove:n}){return e.length===0?null:(0,M.jsx)(`div`,{className:`web-composer__attached`,children:e.map((e,r)=>(0,M.jsxs)(`span`,{className:`web-attachment`,title:T(e,t)??b(e),children:[(0,M.jsx)(`span`,{className:`web-attachment__icon`,"aria-hidden":`true`,children:y(e)}),(0,M.jsx)(`span`,{className:`web-attachment__label`,children:b(e)}),(0,M.jsx)(`button`,{type:`button`,className:`web-attachment__remove`,"aria-label":`Remove ${b(e)}`,onClick:()=>n(r),children:d.close})]},`${b(e)}-${r}`))})}function se({onClick:e}){return(0,M.jsx)(`button`,{type:`button`,className:`web-composer__add`,"aria-label":`Add context`,title:`Add context`,onClick:e,children:(0,M.jsx)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 12 12`,"aria-hidden":`true`,children:(0,M.jsx)(`path`,{d:`M6 1v10M1 6h10`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`})})})}function ce({attach:e,insert:t,upload:n}){let[r,i]=(0,N.useState)(null);return{dropping:r,onDragOver:e=>{let t=j(e.dataTransfer);(t||Array.from(e.dataTransfer.types).includes(`Files`))&&(e.preventDefault(),e.dataTransfer.dropEffect=`copy`,i(t&&e.shiftKey?`mention`:`attach`))},onDragLeave:e=>{e.currentTarget.contains(e.relatedTarget)||i(null)},onDrop:r=>{i(null);let a=A(r.dataTransfer);if(a!==null){r.preventDefault();let n=S(a.uri,a.directory);if(!r.shiftKey){e(n);return}let i=`@${u(a.uri)}${a.directory?`/`:``}`;t(`${i} `),e(k(n,i));return}r.dataTransfer.files.length!==0&&(r.preventDefault(),n(r.dataTransfer.files))}}}var le=`$/ahp/composerFocus`,V=e=>typeof e==`object`&&e?e:{},H=e=>typeof e==`string`&&e!==``?e:void 0;function ue(e){let t=V(e).items;return(Array.isArray(t)?t:[]).map(e=>{let t=V(e),n=V(V(t.attachment)._meta),r=H(t.insertText)??``;return{insert:r,label:H(n.command)??r,detail:H(n.description),hint:H(n.argumentHint)}}).filter(e=>e.insert!==``)}var U=e=>e.map(e=>({insert:`/${e.name}`,label:`/${e.name}`,detail:e.description===``?void 0:e.description,hint:void 0}));function de(e,t,n,r=O){return i(...n.map(n=>e.commands.register({id:`ahp.composer.host.${t}.${n.insert}`,title:n.hint===void 0?n.label:`${n.label} ${n.hint}`,...n.detail===void 0?{}:{description:n.detail},category:`Agent`,shortcut:n.label.startsWith(`/`)?n.label:`/${n.label}`,slots:[r],when:`${le} == "${t}"`,run:e=>e.host?.replaceActiveToken(`${n.insert} `)})))}var fe=0,pe=260,me=[`/`,`@`],he=800;function ge(e){e!==null&&(e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,pe)}px`)}function _e(e,t,n){return{text:e,origin:{kind:`user`},...t===void 0?{}:{model:{id:t}},...n.length===0?{}:{attachments:_(e,n)}}}var W=(0,N.memo)(function({chatUri:e,activeId:t,activeStart:i,queued:ee,steering:f,draft:p,lastModel:te,config:m,summary:h,send:g}){let _=a(),y=(r(`$/ahp/agents`)??[]).find(e=>e.provider===h.provider),b=(0,N.useMemo)(()=>ne(e),[e]),[S]=(0,N.useState)(()=>`composer-${++fe}`),A=h.workingDirectories?.[0],[j,P]=(0,N.useState)(()=>p?.text??``),[I,L]=(0,N.useState)(null),[z,ae]=(0,N.useState)(()=>p?.model?.id??te),[B,V]=(0,N.useState)(()=>p?.attachments??[]),H=(0,N.useRef)(null),U=t===void 0?void 0:{id:t,startedAt:i??``},pe=ee??[];(0,N.useEffect)(()=>ge(H.current),[j]);let W=(0,N.useRef)(!1);(0,N.useEffect)(()=>{if(!W.current)return;let t=window.setTimeout(()=>{let t=j.trim()===``&&B.length===0?void 0:_e(j,z,B);c(e,{type:`chat/draftChanged`,draft:t})},he);return()=>window.clearTimeout(t)},[j,z,B,e]);let G=(0,N.useCallback)(e=>{L(e),requestAnimationFrame(()=>{let t=H.current;t!==null&&(t.focus(),t.setSelectionRange(e,e))})},[]),K=(0,N.useCallback)(e=>{W.current=!0,V(t=>t.some(t=>x(t,e))?t:[...t,e])},[]),ve=(0,N.useRef)(null),ye=(0,N.useCallback)(async e=>{let t=await w(Array.from(e??[]));for(let e of t.attached)K(e);t.refused.length>0&&n(`Not attached`,{description:`Over 5 MB or unreadable: ${t.refused.join(`, `)}`})},[K]),q=ce({attach:K,insert:(0,N.useCallback)(e=>{let t=Y.current??J.current.length,n=J.current.slice(0,t),r=n===``||/\s$/.test(n)?``:` `;W.current=!0,P(`${n}${r}${e}${J.current.slice(t)}`),G(n.length+r.length+e.length)},[G]),upload:e=>void ye(e)}),J=(0,N.useRef)(j);J.current=j;let Y=(0,N.useRef)(I);Y.current=I;let be=(0,N.useCallback)(async()=>{let t=J.current;try{return(await s(`completions`,{kind:`userMessage`,channel:e,text:t,offset:Y.current??t.length})).items.map(e=>{let t=T(e.attachment,A);return{title:e.insertText.replace(/^@/,``),...t===void 0?{}:{description:t},onSelect:t=>{t.replaceActiveToken(`${e.insertText} `),K(k(e.attachment,e.insertText))}}})}catch{return[]}},[e,A,K]),[xe,Se]=(0,N.useState)([]);(0,N.useEffect)(()=>{let t=!0;return s(`completions`,{kind:`userMessage`,channel:e,text:`/`,offset:1}).then(e=>{t&&Se(ue(e))}).catch(()=>{t&&Se([])}),()=>{t=!1}},[e]),(0,N.useEffect)(()=>{let e=de(_,S,xe);return()=>e.dispose()},[_,S,xe]);let X=F({input:j,setInput:P,caretIndex:I,panelDataContext:b,slashSlot:O,prefixes:me,mentionProvider:be,onCaretChange:G}),Z=(0,N.useMemo)(()=>Object.entries(m?.schema.properties??{}).filter(([,e])=>e.sessionMutable===!0&&e.readOnly!==!0).map(([e,t])=>({key:e,schema:t,value:m?.values[e]})),[m]),Ce=(0,N.useCallback)(()=>{if(t===void 0)return;let e=Date.parse(i??``);g({type:`chat/turnCancelled`,turnId:t,duration:Number.isNaN(e)?0:Math.max(0,Date.now()-e)})},[t,i,g]),we=(0,N.useMemo)(()=>(y?.models??[]).map(e=>({id:e.id,name:e.name})),[y]),Q=(0,N.useRef)(null);Q.current={models:()=>we,model:()=>z,setModel:e=>{W.current=!0,ae(e)},options:()=>Z,setOption:(e,t)=>{c(h.resource,{type:`session/configChanged`,config:{[e]:t}})},running:()=>U!==void 0,stop:Ce,session:()=>h.resource,attach:K,type:e=>{let t=Y.current??J.current.length,n=J.current.slice(0,t),r=e===`/`||n===``||/\s$/.test(n)?``:` `,i=e===`/`&&n.trim()===``?`/${J.current.slice(t)}`:`${n}${r}${e}${J.current.slice(t)}`,a=e===`/`&&n.trim()===``?1:n.length+r.length+1;W.current=!0,P(i),G(a)},upload:()=>ve.current?.click()},(0,N.useEffect)(()=>E(b,{models:()=>Q.current?.models()??[],model:()=>Q.current?.model(),setModel:e=>Q.current?.setModel(e),options:()=>Q.current?.options()??[],setOption:(e,t)=>Q.current?.setOption(e,t),running:()=>Q.current?.running()??!1,stop:()=>Q.current?.stop(),session:()=>Q.current?.session()??``,attach:e=>Q.current?.attach(e),type:e=>Q.current?.type(e),upload:()=>Q.current?.upload()}),[b]);let Te=Z.map(e=>e.key).join(`
|
|
2
2
|
`);(0,N.useEffect)(()=>{let e=C(_,Z);return()=>e.dispose()},[_,Te]);function Ee(e){let t=X.openCommand(e);G(t??H.current?.value.length??j.length)}function De(){P(``),V([]),W.current=!1,c(e,{type:`chat/draftChanged`,draft:void 0})}function $(e){let t=j.trim();if(t===``)return;let n=_e(t,z,B);g(U===void 0?{type:`chat/turnStarted`,turnId:l(),startedAt:new Date().toISOString(),message:n}:e===`steer`?{type:`chat/pendingMessageSet`,kind:`steering`,id:l(),message:n}:{type:`chat/pendingMessageSet`,kind:`queued`,id:l(),message:n}),De()}let Oe=we.find(e=>e.id===z)?.name??z;return(0,M.jsxs)(`div`,{className:`web-composer`,children:[X.pickerNode===null?null:(0,M.jsx)(`div`,{className:`web-composer__picker`,children:X.pickerNode}),f===void 0&&pe.length===0?null:(0,M.jsxs)(`ul`,{className:`web-composer__queue`,children:[f===void 0?null:(0,M.jsxs)(`li`,{children:[(0,M.jsx)(`span`,{className:`web-chip`,"data-on":`true`,children:`Steering`}),(0,M.jsx)(`span`,{className:`web-composer__queued`,children:f.message.text}),(0,M.jsx)(o,{label:`Remove`,size:`sm`,onClick:()=>g({type:`chat/pendingMessageRemoved`,kind:`steering`,id:f.id})})]}),pe.map((e,t)=>(0,M.jsxs)(`li`,{children:[(0,M.jsxs)(`span`,{className:`web-chip`,children:[`Next `,t+1]}),(0,M.jsx)(`span`,{className:`web-composer__queued`,children:e.message.text}),(0,M.jsx)(o,{label:`Remove`,size:`sm`,onClick:()=>g({type:`chat/pendingMessageRemoved`,kind:`queued`,id:e.id})})]},e.id))]}),(0,M.jsxs)(`div`,{className:`web-composer__where`,children:[A===void 0?null:(0,M.jsx)(R,{label:`${d.folder} ${u(A)}`,title:`The folder this session works in`}),(0,M.jsx)(R,{label:`${d.agents} ${y?.displayName??h.provider}`,title:y?.description??`The agent running this session`})]}),(0,M.jsxs)(`div`,{className:`web-composer__box`,"data-drop":q.dropping??void 0,onDragOver:q.onDragOver,onDragLeave:q.onDragLeave,onDrop:q.onDrop,children:[(0,M.jsx)(oe,{attachments:B,folder:A,onRemove:e=>{W.current=!0,V(t=>t.filter((t,n)=>n!==e))}}),(0,M.jsx)(`div`,{className:`web-composer__bar`,children:(0,M.jsx)(`textarea`,{ref:H,className:`web-composer__text`,rows:1,value:j,"aria-label":`Message`,placeholder:U===void 0?`Message the agent, / for commands, @ to refer to a file`:`Queue a message for after this turn, or steer it`,onChange:e=>{W.current=!0,P(e.currentTarget.value),L(e.currentTarget.selectionStart)},onFocus:()=>_.store.set(le,S),onKeyUp:e=>L(e.currentTarget.selectionStart),onClick:e=>L(e.currentTarget.selectionStart),onKeyDown:e=>{if(!X.handleMenuKeyDown(e)){if(e.key===`Escape`&&U!==void 0){e.preventDefault(),Ce();return}e.key===`Enter`&&!e.shiftKey&&!e.nativeEvent.isComposing&&(e.preventDefault(),$(e.altKey?`steer`:`send`))}}})}),(0,M.jsxs)(`div`,{className:`web-composer__foot`,children:[(0,M.jsx)(se,{onClick:()=>Ee(`ahp.composer.attach`)}),(0,M.jsx)(`input`,{ref:ve,type:`file`,multiple:!0,hidden:!0,onChange:e=>{ye(e.currentTarget.files),e.currentTarget.value=``}}),(0,M.jsxs)(`div`,{className:`web-composer__chips`,children:[we.length===0?null:(0,M.jsx)(R,{label:`Model: ${Oe??`default`}`,title:`The model the next message goes to`,onOpen:()=>Ee(`ahp.composer.model`)}),Z.filter(ie).map(e=>(0,M.jsx)(R,{label:`${e.schema.title||e.key}: ${re(e)}`,title:e.schema.description??e.schema.title,...e.schema.type===`boolean`?{on:(e.value??e.schema.default)===!0}:{},...D(e.schema)?{onOpen:()=>Ee(v(e.key))}:{}},e.key))]}),U===void 0||j.trim()===``?null:(0,M.jsx)(o,{label:`Steer`,size:`sm`,title:`Alt+Enter steers`,onClick:()=>$(`steer`)}),U===void 0||j.trim()===``?null:(0,M.jsx)(o,{label:`Queue`,variant:`primary`,size:`sm`,title:`Enter queues`,onClick:()=>$(`send`)}),U===void 0?(0,M.jsx)(`button`,{type:`button`,className:`web-composer__round`,"aria-label":`Send`,title:`Enter sends, Shift+Enter breaks the line`,disabled:j.trim()===``,onClick:()=>$(`send`),children:d.send}):(0,M.jsx)(`button`,{type:`button`,className:`web-composer__round`,"aria-label":`Stop`,title:`Esc stops`,onClick:Ce,children:d.stop})]})]})]})});export{U as a,se as c,R as d,B as f,le as i,oe as l,F as m,ge as n,de as o,ae as p,_e as r,ce as s,W as t,z as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{t as n}from"./ContextMenu-BV1gdog0.js";var r=t(),i=e();function a(e,t){if(typeof e==`object`&&e)return e[t]}function o(e,t,n){let r=a(e,n),i=a(t,n);return r==null&&i==null?0:r==null?-1:i==null?1:typeof r==`number`&&typeof i==`number`?r-i:String(r).localeCompare(String(i))}function s(e,t,n){if(!n)return e;let r=t.find(e=>e.key===n.key);if(!r||!r.sortable)return e;let i=typeof r.sortable==`function`?r.sortable:(e,t)=>o(e,t,r.key),a=n.direction===`asc`?1:-1;return[...e].sort((e,t)=>a*i(e,t))}var c=480;function l({items:e,columns:t,getKey:a,title:o,toolbar:l,selectedKey:d,onSelect:f,onActivate:p,initialSort:m,sort:h,onSortChange:g,tableBreakpoint:_=c,renderListRow:v,getRowStyle:y,contextMenuSlot:b,contextFor:x,contextDataContext:S,onRowDragStart:C,emptyState:w,className:T,style:E,manageKeys:D=!1}){let O=(0,r.useRef)(null),[k,A]=(0,r.useState)(0),[j,M]=(0,r.useState)(m??null);(0,r.useEffect)(()=>{let e=O.current;if(!e)return;let t=new ResizeObserver(([e])=>{e&&A(e.contentRect.width)});return t.observe(e),()=>t.disconnect()},[]);let N=k>=_,P=h!==void 0,F=P?h:j,I=(0,r.useMemo)(()=>t.filter(e=>!e.hidden&&(N||e.mode!==`table`)&&(e.showAt==null||k>=e.showAt)),[t,N,k]),L=(0,r.useMemo)(()=>({tableMode:N,containerWidth:k}),[N,k]),R=(0,r.useMemo)(()=>I.map(e=>typeof e.width==`function`?e.width(L):e.width).map(e=>e??`minmax(0, 1fr)`).join(` `),[I,L]),z=(0,r.useMemo)(()=>s(e,t,F??null),[e,t,F]);function B(e){if(!e.sortable)return;let t=F,n=!t||t.key!==e.key?{key:e.key,direction:`asc`}:t.direction===`asc`?{key:e.key,direction:`desc`}:null;P?g?.(n):M(n)}(0,r.useEffect)(()=>{if(!d||!O.current)return;let e=O.current.querySelector(`[data-key="${u(d)}"]`);e&&e.scrollIntoView({block:`nearest`})},[d]);let V=d?z.findIndex(e=>a(e)===d):-1;function H(e){if(z.length===0)return;let t=V>=0?V:0;switch(e.key){case`ArrowDown`:{e.preventDefault();let n=z[Math.min(z.length-1,t+1)];n&&f?.(n);return}case`ArrowUp`:{e.preventDefault();let n=z[Math.max(0,t-1)];n&&f?.(n);return}case`Enter`:case` `:{e.preventDefault();let n=z[t];n&&p?.(n);return}}}let[U,W]=(0,r.useState)(null);function G(e,t){b&&(e.preventDefault(),e.stopPropagation(),W({x:e.clientX,y:e.clientY,item:t}))}function K(e,t){let n=e.cellProps?.(t,L),r=e.style===void 0&&n?.style===void 0?void 0:{...e.style,...n?.style};return(0,i.jsx)(`div`,{role:`cell`,className:n?.className===void 0?`oo-listable__cell`:`oo-listable__cell ${n.className}`,"data-align":e.align??`left`,title:e.titleProps?.(t,L).title,style:r,children:J(e,t)},e.key)}function q(e){let t=F?.key===e.key,n=e.titleProps?.(void 0,L);return(0,i.jsx)(`div`,{role:`columnheader`,className:n?.className===void 0?`oo-listable__head-cell`:`oo-listable__head-cell ${n.className}`,"data-align":e.align??`left`,"data-sortable":e.sortable?`true`:void 0,"data-sorted":t?F.direction:void 0,title:e.sortable&&typeof e.label==`string`?`Sort by ${e.label}`:void 0,onClick:e.sortable?()=>B(e):void 0,style:n?.style,children:n?.hidden===!0?null:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`span`,{className:`oo-listable__head-label`,children:e.label}),t?(0,i.jsx)(`span`,{className:`oo-listable__sort-arrow`,"aria-hidden":`true`,children:F.direction===`asc`?`▲`:`▼`}):null]})},e.key)}function J(e,t){return e.visible&&!e.visible(t)?null:e.render(t,L)}function Y(e){let t=a(e);return(0,i.jsx)(`div`,{role:`row`,"data-key":t,"data-selected":t===d?`true`:void 0,className:`oo-listable__item oo-listable__row`,draggable:C?!0:void 0,onDragStart:C?t=>C(t,e):void 0,onClick:()=>{f?.(e)},onDoubleClick:()=>p?.(e),onContextMenu:t=>G(t,e),style:{cursor:f?`pointer`:void 0},children:I.map(t=>K(t,e))},t)}function X(e){let t=a(e),n=t===d,r=y?y(e,L):void 0;return(0,i.jsx)(`div`,{role:`row`,"data-key":t,"data-selected":n?`true`:void 0,className:`oo-listable__item oo-listable__stack`,draggable:C?!0:void 0,onDragStart:C?t=>C(t,e):void 0,onClick:()=>f?.(e),onDoubleClick:()=>p?.(e),onContextMenu:t=>G(t,e),style:{cursor:f?`pointer`:void 0,...r},children:v?v(e):I.map(t=>{let n=J(t,e);if(n==null)return null;let r=t.cellProps?.(e,L);return(0,i.jsx)(`div`,{className:r?.className===void 0?`oo-listable__list-cell`:`oo-listable__list-cell ${r.className}`,title:t.titleProps?.(e,L).title,style:t.style===void 0&&r?.style===void 0?void 0:{...t.style,...r?.style},children:(0,i.jsx)(`span`,{className:`oo-listable__list-value`,children:n})},t.key)})},t)}return(0,i.jsxs)(`div`,{ref:O,role:`table`,tabIndex:0,className:[`oo-listable`,T].filter(Boolean).join(` `),"data-mode":N?`table`:`list`,style:E,onKeyDown:D?H:void 0,children:[o||l?(0,i.jsxs)(`header`,{className:`oo-listable__header`,children:[o?(0,i.jsx)(`h2`,{className:`oo-listable__title`,children:o}):null,l]}):null,z.length===0?(0,i.jsx)(`div`,{className:`oo-listable__empty`,children:w
|
|
1
|
+
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{t as n}from"./ContextMenu-BV1gdog0.js";var r=t(),i=e();function a(e,t){if(typeof e==`object`&&e)return e[t]}function o(e,t,n){let r=a(e,n),i=a(t,n);return r==null&&i==null?0:r==null?-1:i==null?1:typeof r==`number`&&typeof i==`number`?r-i:String(r).localeCompare(String(i))}function s(e,t,n){if(!n)return e;let r=t.find(e=>e.key===n.key);if(!r||!r.sortable)return e;let i=typeof r.sortable==`function`?r.sortable:(e,t)=>o(e,t,r.key),a=n.direction===`asc`?1:-1;return[...e].sort((e,t)=>a*i(e,t))}var c=480;function l({items:e,columns:t,getKey:a,title:o,toolbar:l,selectedKey:d,onSelect:f,onActivate:p,initialSort:m,sort:h,onSortChange:g,tableBreakpoint:_=c,renderListRow:v,getRowStyle:y,contextMenuSlot:b,contextFor:x,contextDataContext:S,onRowDragStart:C,emptyState:w,className:T,style:E,manageKeys:D=!1}){let O=(0,r.useRef)(null),[k,A]=(0,r.useState)(0),[j,M]=(0,r.useState)(m??null);(0,r.useEffect)(()=>{let e=O.current;if(!e)return;let t=new ResizeObserver(([e])=>{e&&A(e.contentRect.width)});return t.observe(e),()=>t.disconnect()},[]);let N=k>=_,P=h!==void 0,F=P?h:j,I=(0,r.useMemo)(()=>t.filter(e=>!e.hidden&&(N||e.mode!==`table`)&&(e.showAt==null||k>=e.showAt)),[t,N,k]),L=(0,r.useMemo)(()=>({tableMode:N,containerWidth:k}),[N,k]),R=(0,r.useMemo)(()=>I.map(e=>typeof e.width==`function`?e.width(L):e.width).map(e=>e??`minmax(0, 1fr)`).join(` `),[I,L]),z=(0,r.useMemo)(()=>s(e,t,F??null),[e,t,F]);function B(e){if(!e.sortable)return;let t=F,n=!t||t.key!==e.key?{key:e.key,direction:`asc`}:t.direction===`asc`?{key:e.key,direction:`desc`}:null;P?g?.(n):M(n)}(0,r.useEffect)(()=>{if(!d||!O.current)return;let e=O.current.querySelector(`[data-key="${u(d)}"]`);e&&e.scrollIntoView({block:`nearest`})},[d]);let V=d?z.findIndex(e=>a(e)===d):-1;function H(e){if(z.length===0)return;let t=V>=0?V:0;switch(e.key){case`ArrowDown`:{e.preventDefault();let n=z[Math.min(z.length-1,t+1)];n&&f?.(n);return}case`ArrowUp`:{e.preventDefault();let n=z[Math.max(0,t-1)];n&&f?.(n);return}case`Enter`:case` `:{e.preventDefault();let n=z[t];n&&p?.(n);return}}}let[U,W]=(0,r.useState)(null);function G(e,t){b&&(e.preventDefault(),e.stopPropagation(),W({x:e.clientX,y:e.clientY,item:t}))}function K(e,t){let n=e.cellProps?.(t,L),r=e.style===void 0&&n?.style===void 0?void 0:{...e.style,...n?.style};return(0,i.jsx)(`div`,{role:`cell`,className:n?.className===void 0?`oo-listable__cell`:`oo-listable__cell ${n.className}`,"data-align":e.align??`left`,title:e.titleProps?.(t,L).title,style:r,children:J(e,t)},e.key)}function q(e){let t=F?.key===e.key,n=e.titleProps?.(void 0,L);return(0,i.jsx)(`div`,{role:`columnheader`,className:n?.className===void 0?`oo-listable__head-cell`:`oo-listable__head-cell ${n.className}`,"data-align":e.align??`left`,"data-sortable":e.sortable?`true`:void 0,"data-sorted":t?F.direction:void 0,title:e.sortable&&typeof e.label==`string`?`Sort by ${e.label}`:void 0,onClick:e.sortable?()=>B(e):void 0,style:n?.style,children:n?.hidden===!0?null:(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`span`,{className:`oo-listable__head-label`,children:e.label}),t?(0,i.jsx)(`span`,{className:`oo-listable__sort-arrow`,"aria-hidden":`true`,children:F.direction===`asc`?`▲`:`▼`}):null]})},e.key)}function J(e,t){return e.visible&&!e.visible(t)?null:e.render(t,L)}function Y(e){let t=a(e);return(0,i.jsx)(`div`,{role:`row`,"data-key":t,"data-selected":t===d?`true`:void 0,className:`oo-listable__item oo-listable__row`,draggable:C?!0:void 0,onDragStart:C?t=>C(t,e):void 0,onClick:()=>{f?.(e)},onDoubleClick:()=>p?.(e),onContextMenu:t=>G(t,e),style:{cursor:f?`pointer`:void 0},children:I.map(t=>K(t,e))},t)}function X(e){let t=a(e),n=t===d,r=y?y(e,L):void 0;return(0,i.jsx)(`div`,{role:`row`,"data-key":t,"data-selected":n?`true`:void 0,className:`oo-listable__item oo-listable__stack`,draggable:C?!0:void 0,onDragStart:C?t=>C(t,e):void 0,onClick:()=>f?.(e),onDoubleClick:()=>p?.(e),onContextMenu:t=>G(t,e),style:{cursor:f?`pointer`:void 0,...r},children:v?v(e):I.map(t=>{let n=J(t,e);if(n==null)return null;let r=t.cellProps?.(e,L);return(0,i.jsx)(`div`,{className:r?.className===void 0?`oo-listable__list-cell`:`oo-listable__list-cell ${r.className}`,title:t.titleProps?.(e,L).title,style:t.style===void 0&&r?.style===void 0?void 0:{...t.style,...r?.style},children:(0,i.jsx)(`span`,{className:`oo-listable__list-value`,children:n})},t.key)})},t)}return(0,i.jsxs)(`div`,{ref:O,role:`table`,tabIndex:0,className:[`oo-listable`,T].filter(Boolean).join(` `),"data-mode":N?`table`:`list`,style:E,onKeyDown:D?H:void 0,children:[o||l?(0,i.jsxs)(`header`,{className:`oo-listable__header`,children:[o?(0,i.jsx)(`h2`,{className:`oo-listable__title`,children:o}):null,l]}):null,z.length===0?w==null?null:(0,i.jsx)(`div`,{className:`oo-listable__empty`,children:w}):(0,i.jsxs)(`div`,{className:`oo-listable__rows`,role:`rowgroup`,style:N?{"--oo-listable-template":R}:void 0,children:[N?(0,i.jsx)(`div`,{role:`row`,className:`oo-listable__head-row`,children:I.map(e=>q(e))}):null,z.map(e=>N?Y(e):X(e))]}),U&&b?(0,i.jsx)(n,{x:U.x,y:U.y,onClose:()=>W(null),spec:{query:{slot:b},footerHints:!0},context:x?x(U.item):void 0,dataContext:S}):null]})}function u(e){return e.replace(/(["\\\]])/g,`\\$1`)}function d(e){return e==null?``:typeof e==`object`?JSON.stringify(e):String(e)}function f({columns:e,rows:t,rowKey:n=`id`,caption:r,selectedKey:a,onSelect:o,onActivate:s,emptyState:c}){let u=e.map(e=>({key:e.key,label:e.label??e.key,width:e.width,align:e.align,sortable:!0,render:t=>d(t[e.key])}));return(0,i.jsx)(l,{items:t,columns:u,getKey:e=>String(e[n]??``),title:r,selectedKey:a,onSelect:o,onActivate:s,emptyState:c})}export{f as DataTable};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{t as n}from"./useStore-BQkzWMs-.js";import{n as r}from"./ScenaProvider-6A3TJumQ.js";import{Z as i,c as a,it as o,o as s}from"./data-
|
|
1
|
+
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{t as n}from"./useStore-BQkzWMs-.js";import{n as r}from"./ScenaProvider-6A3TJumQ.js";import{Z as i,c as a,it as o,o as s}from"./data-hUAVersf.js";import{n as c,t as l}from"./words-T8-D0K4W.js";import{i as u,s as d}from"./terminal-BPj7jGw5.js";import{t as f}from"./state-KGSq646f.js";import{a as p,i as m,r as h}from"./turn-BoF7W1h6.js";import{t as g}from"./channel-UD2KGCy_.js";var _=t(),v=e();function y({uri:e,folder:t}){let n=r(),{state:i}=g(e,u);return d(i?.cwd,t)?(0,v.jsx)(`button`,{type:`button`,className:`web-link`,title:`Open the terminal`,onClick:()=>void n.commands.execute(`ahp.openTerminal`,{uri:e}),children:i?.title===``||i?.title===void 0?`Terminal`:i.title}):null}function b(){let e=r(),t=n(s),u=n(f),d=n(a)?.find(e=>e.resource===u),b=g(d===void 0?void 0:u,o),x=g(b.state?.defaultChat??d?.defaultChat,i),S=x.state?.turns,C=(0,_.useMemo)(()=>m(S??[]),[S]);if(d===void 0)return(0,v.jsx)(`p`,{className:`web-note web-details__empty`,children:`Open a session to see its details.`});let w=d.workingDirectories?.[0],T=d.changes,E=d.origin,D=b.state?.activeClients.length??0,O=b.state?.defaultChat??d.defaultChat,k=[[`Session`,d.title===``?`Untitled`:d.title],[`Session id`,(0,v.jsx)(`code`,{children:d.resource},`s`)]];return O!==void 0&&k.push([`Chat id`,(0,v.jsx)(`code`,{children:O},`h`)]),k.push([`Agent`,d.provider]),C.models.length>0&&k.push([`Model`,C.models.join(`, `)]),w!==void 0&&k.push([`Folder`,(0,v.jsx)(`button`,{type:`button`,className:`web-link`,title:`Show the folder in the explorer`,onClick:()=>void e.commands.execute(`ahp.revealFolder`,{uri:w}),children:(0,v.jsx)(`code`,{children:c(w)})},`f`)]),k.push([`Terminal`,(0,v.jsxs)(`span`,{className:`web-details__list`,children:[w===void 0?null:(t?.terminals??[]).map(e=>(0,v.jsx)(y,{uri:e.resource,folder:w},e.resource)),(0,v.jsx)(`button`,{type:`button`,className:`web-link`,title:w===void 0?`A new terminal`:`A new terminal in the session's folder`,onClick:()=>void e.commands.execute(`ahp.newTerminal`,w===void 0?void 0:{cwd:w}),children:`+ New terminal`})]},`t`)]),d.project!==void 0&&k.push([`Project`,d.project.displayName]),k.push([`Started`,p(d.createdAt)],[`Changed`,p(d.modifiedAt)]),C.turns>0&&(k.push([`Turns`,`${C.turns}${x.state?.turnsNextCursor===void 0?``:`+`}`]),k.push([`Working`,l(C.working)]),k.push([`Tokens`,`\u{2191}${h(C.input)} \u{2193}${h(C.output)}`]),C.tools>0&&k.push([`Tool calls`,String(C.tools)])),T!==void 0&&(T.additions!==void 0||T.deletions!==void 0)&&k.push([`Changes`,(0,v.jsxs)(`span`,{children:[(0,v.jsxs)(`span`,{className:`web-diff--add`,children:[`+`,T.additions??0]}),` `,(0,v.jsxs)(`span`,{className:`web-diff--remove`,children:[`-`,T.deletions??0]}),T.files===void 0?``:` in ${T.files} files`]},`c`)]),E!==void 0&&String(E.kind)===`automation`&&k.push([`From`,`An automation run`]),D>0&&k.push([`Watching`,String(D)]),(0,v.jsx)(`dl`,{className:`web-details`,children:k.map(([e,t])=>(0,v.jsxs)(`div`,{children:[(0,v.jsx)(`dt`,{children:e}),(0,v.jsx)(`dd`,{children:t})]},e))})}export{b as default};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{n}from"./ScenaProvider-6A3TJumQ.js";import{t as r}from"./Button-_R1oktDz.js";import{D as i}from"./data-
|
|
1
|
+
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{n}from"./ScenaProvider-6A3TJumQ.js";import{t as r}from"./Button-_R1oktDz.js";import{D as i}from"./data-hUAVersf.js";import{n as a}from"./words-T8-D0K4W.js";import{t as o}from"./Spinner-B-iOhBZq.js";import{t as s}from"./Alert-CHZkhmDE.js";import{a as c,r as l,t as u}from"./changeset-eZAmDe3s.js";var d=t(),f=3;function p(e){return e===``?[]:(e.endsWith(`
|
|
2
2
|
`)?e.slice(0,-1):e).split(`
|
|
3
3
|
`)}function m(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function h(e){if(e.length===0)return[];let t=[],n=Array(e.length).fill(-1);for(let r=0;r<e.length;r+=1){let i=e[r],a=0,o=t.length;for(;a<o;){let n=a+o>>1;e[t[n]]<i?a=n+1:o=n}n[r]=a>0?t[a-1]:-1,t[a]=r}let r=[],i=t.length>0?t[t.length-1]:-1;for(;i>=0;)r.push(i),i=n[i];return r.reverse()}function g(e,t){let n=new Map;for(let t of e)n.set(t,(n.get(t)??0)+1);let r=new Map;for(let e of t)r.set(e,(r.get(e)??0)+1);let i=new Map;t.forEach((e,t)=>{n.get(e)===1&&r.get(e)===1&&i.set(e,t)});let a=[];return e.forEach((e,t)=>{let n=i.get(e);n!==void 0&&a.push({a:t,b:n})}),a}function _(e,t,n,r){let i=[];return e.forEach((e,t)=>i.push({kind:`del`,before:n+t+1,after:null,text:e})),t.forEach((e,t)=>i.push({kind:`add`,before:null,after:r+t+1,text:e})),i}var v=24;function y(e,t,n,r,i){if(e.length===0&&t.length===0)return[];if(m(e,t))return e.map((e,t)=>({kind:`context`,before:n+t+1,after:r+t+1,text:e}));if(e.length===0||t.length===0||i>=v)return _(e,t,n,r);let a=g(e,t);if(a.length===0)return _(e,t,n,r);let o=h(a.map(e=>e.b)).map(e=>a[e]);if(o.length===0)return _(e,t,n,r);let s=[],c=0,l=0;for(let a of o)s.push(...y(e.slice(c,a.a),t.slice(l,a.b),n+c,r+l,i+1)),s.push({kind:`context`,before:n+a.a+1,after:r+a.b+1,text:e[a.a]}),c=a.a+1,l=a.b+1;return s.push(...y(e.slice(c),t.slice(l),n+c,r+l,i+1)),s}function b(e,t,n=f){let r=y(p(e),p(t),0,0,0),i=r.map((e,t)=>e.kind===`context`?-1:t).filter(e=>e>=0);if(i.length===0)return[];let a=[];for(let e of i){let t=a[a.length-1];t!==void 0&&e-t.to<=n*2?t.to=e:a.push({from:e,to:e})}return a.map(e=>{let t=Math.max(0,e.from-n),i=Math.min(r.length-1,e.to+n),a=r.slice(t,i+1),o=a[0],s=o.before??o.after??1,c=o.after??o.before??1;return{beforeStart:a.some(e=>e.before!==null)?s:0,beforeCount:a.filter(e=>e.kind!==`add`).length,afterStart:a.some(e=>e.after!==null)?c:0,afterCount:a.filter(e=>e.kind!==`del`).length,lines:a}})}function x(e){return`@@ -${e.beforeCount===1?`${e.beforeStart}`:`${e.beforeStart},${e.beforeCount}`} +${e.afterCount===1?`${e.afterStart}`:`${e.afterStart},${e.afterCount}`} @@`}function S(e){let t=0,n=0;for(let r of e)for(let e of r.lines)e.kind===`add`?t+=1:e.kind===`del`&&(n+=1);return{added:t,removed:n}}var C=e(),w=async e=>e===void 0?``:(await i(e)).text;function T({file:e,before:t,after:i,changeset:f,change:p,review:m}){let h=n(),g=c(f),_=g.files.find(e=>e.id===p),v=_===void 0?[]:g.operations.filter(e=>l(e,`resource`)),[y,T]=(0,d.useState)(null);(0,d.useEffect)(()=>{let e=!0;return T(null),Promise.all([w(t),w(i)]).then(([t,n])=>{e&&T({before:t,after:n})}).catch(t=>{e&&T({error:t instanceof Error?t.message:String(t)})}),()=>{e=!1}},[t,i]);let E=(0,d.useMemo)(()=>y===null||`error`in y||y.before===null||y.after===null?[]:b(y.before,y.after),[y]),D=e===void 0?``:a(e),O=S(E),k=(0,C.jsxs)(`div`,{className:`web-file__head`,children:[(0,C.jsx)(`code`,{children:D}),y!==null&&!(`error`in y)?(0,C.jsxs)(`span`,{children:[(0,C.jsxs)(`span`,{className:`web-diff--add`,children:[`+`,O.added]}),` `,(0,C.jsxs)(`span`,{className:`web-diff--remove`,children:[`-`,O.removed]}),t===void 0?` · new file`:i===void 0?` · deleted`:``]}):null,(0,C.jsxs)(`span`,{className:`web-file__actions`,children:[m===!0&&_!==void 0?(0,C.jsxs)(`label`,{className:`web-file__viewed`,children:[(0,C.jsx)(`input`,{type:`checkbox`,checked:_.reviewed,onChange:e=>g.review([_],e.target.checked)}),`Viewed`]}):null,_===void 0?null:v.map(e=>(0,C.jsx)(r,{label:`${u(e)} ${e.label}`,size:`sm`,disabled:String(e.status)===`running`,onClick:()=>void g.run(e,_)},e.id)),e===void 0||i===void 0?null:(0,C.jsx)(r,{label:`Open file`,size:`sm`,onClick:()=>void h.commands.execute(`ahp.openFile`,{uri:e})})]})]}),A=g.said===null?null:(0,C.jsx)(s,{tone:g.said.tone,message:g.said.text});return y===null?(0,C.jsxs)(`div`,{className:`web-file`,children:[k,A,(0,C.jsx)(o,{label:`Reading both sides`})]}):`error`in y?(0,C.jsxs)(`div`,{className:`web-file`,children:[k,A,(0,C.jsx)(s,{tone:`danger`,title:`Not readable`,message:y.error})]}):y.before===null||y.after===null?(0,C.jsxs)(`div`,{className:`web-file`,children:[k,A,(0,C.jsx)(`p`,{className:`web-note`,children:`This file is not text.`})]}):E.length===0?(0,C.jsxs)(`div`,{className:`web-file`,children:[k,A,(0,C.jsx)(`p`,{className:`web-note`,children:`No changes.`})]}):(0,C.jsxs)(`div`,{className:`web-file`,children:[k,A,(0,C.jsx)(`div`,{className:`web-file__body`,children:(0,C.jsx)(`table`,{className:`web-code web-diff`,children:(0,C.jsx)(`tbody`,{children:E.map((e,t)=>[(0,C.jsx)(`tr`,{className:`web-diff__hunk`,children:(0,C.jsx)(`td`,{colSpan:3,children:x(e)})},`h${t}`),...e.lines.map((e,n)=>(0,C.jsxs)(`tr`,{"data-kind":e.kind,children:[(0,C.jsx)(`td`,{className:`web-code__number`,children:e.before??``}),(0,C.jsx)(`td`,{className:`web-code__number`,children:e.after??``}),(0,C.jsxs)(`td`,{className:`web-code__text`,children:[e.kind===`add`?`+`:e.kind===`del`?`-`:` `,e.text]})]},`${t}:${n}`))])})})})]})}export{T as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{t as n}from"./useStore-BQkzWMs-.js";import{n as r}from"./ScenaProvider-6A3TJumQ.js";import{t as i}from"./Button-_R1oktDz.js";import{d as a,i as o,n as s,nt as c,v as l}from"./data-
|
|
1
|
+
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{t as n}from"./useStore-BQkzWMs-.js";import{n as r}from"./ScenaProvider-6A3TJumQ.js";import{t as i}from"./Button-_R1oktDz.js";import{d as a,i as o,n as s,nt as c,v as l}from"./data-hUAVersf.js";import{a as u,n as d}from"./words-T8-D0K4W.js";import{t as f}from"./Spinner-B-iOhBZq.js";import{t as p}from"./Alert-CHZkhmDE.js";import{t as m}from"./Text-MPtQvYE-.js";import{c as h,d as g,l as _,u as v}from"./index-yhQX4tVS.js";import{t as y}from"./channel-UD2KGCy_.js";var b=t(),x=e(),S=[{label:`By hand only`,expression:``},{label:`Every 10 minutes`,expression:`*/10 * * * *`},{label:`Every hour`,expression:`0 * * * *`},{label:`Every 6 hours`,expression:`0 */6 * * *`},{label:`Every day at 09:00`,expression:`0 9 * * *`},{label:`Weekdays at 09:00`,expression:`0 9 * * 1-5`},{label:`Every Monday at 05:00`,expression:`0 5 * * 1`}];function C({label:e,hint:t,children:n}){return(0,x.jsxs)(`label`,{className:`web-form__field`,children:[(0,x.jsx)(`span`,{className:`web-input__label`,children:e}),n,t===void 0?null:(0,x.jsx)(`span`,{className:`web-input__hint`,children:t})]})}function w({resource:e}){let t=r(),{state:w,error:T}=y(a,c),E=n(`$/ahp/agents`)??[],D=n(s),O=n(o),k=e===void 0?void 0:w?.entries.find(t=>t.resource===e),[A,j]=(0,b.useState)(null);if(T!==null)return(0,x.jsx)(p,{tone:`danger`,title:`No automations`,message:T});if(w===void 0)return(0,x.jsx)(f,{label:`Reading the automations`});if(e!==void 0&&k===void 0)return(0,x.jsx)(p,{tone:`warning`,message:`This automation is gone.`});if(e===void 0&&D?.create===void 0)return(0,x.jsx)(p,{tone:`warning`,message:`This host does not let clients create automations.`});let M=A??v(k,{...E[0]===void 0?{}:{provider:E[0].provider},...O==null?{}:{folder:d(O)}}),N=e=>j({...M,...e}),P=E.find(e=>e.provider===M.provider),F=g(M),I=D?.schedules?.minIntervalMinutes,L=S.find(e=>e.expression===M.expression.trim());return(0,x.jsxs)(`div`,{className:`web-page web-form`,children:[(0,x.jsx)(m,{variant:`h2`,text:k===void 0?`New automation`:`Edit ${k.definition.title||`automation`}`}),(0,x.jsx)(C,{label:`Title`,children:(0,x.jsx)(`input`,{className:`web-field`,value:M.title,onChange:e=>N({title:e.target.value})})}),(0,x.jsx)(C,{label:`Message`,hint:`What the agent is told each time it runs.`,children:(0,x.jsx)(`textarea`,{className:`web-field web-form__message`,rows:5,value:M.message,onChange:e=>N({message:e.target.value})})}),(0,x.jsxs)(`div`,{className:`web-form__row`,children:[(0,x.jsx)(C,{label:`Agent`,children:(0,x.jsxs)(`select`,{className:`web-field`,value:M.provider,onChange:e=>N({provider:e.target.value,model:``}),children:[(0,x.jsx)(`option`,{value:``,children:`The host default`}),E.map(e=>(0,x.jsx)(`option`,{value:e.provider,children:e.displayName},e.provider))]})}),(0,x.jsx)(C,{label:`Model`,children:(0,x.jsxs)(`select`,{className:`web-field`,value:M.model,onChange:e=>N({model:e.target.value}),children:[(0,x.jsx)(`option`,{value:``,children:`The agent default`}),(P?.models??[]).map(e=>(0,x.jsx)(`option`,{value:e.id,children:e.name},e.id))]})})]}),(0,x.jsx)(C,{label:`Folder`,hint:`A folder on the daemon's machine.`,children:(0,x.jsx)(`input`,{className:`web-field`,value:M.folder,onChange:e=>N({folder:e.target.value})})}),(0,x.jsxs)(`div`,{className:`web-form__row`,children:[(0,x.jsx)(C,{label:`Schedule`,children:(0,x.jsxs)(`select`,{className:`web-field`,value:L?.expression??`custom`,onChange:e=>{e.target.value!==`custom`&&N({expression:e.target.value})},children:[S.map(e=>(0,x.jsx)(`option`,{value:e.expression,children:e.label},e.label)),(0,x.jsx)(`option`,{value:`custom`,children:`Custom`})]})}),(0,x.jsx)(C,{label:`Cron expression`,hint:`${M.expression.trim()===``?`Runs only when started by hand.`:h(M.expression)}${I===void 0?``:` At most every ${I} minutes.`}`,children:(0,x.jsx)(`input`,{className:`web-field`,value:M.expression,placeholder:`minute hour day month weekday`,onChange:e=>N({expression:e.target.value})})})]}),M.expression.trim()===``?null:(0,x.jsxs)(`div`,{className:`web-form__row`,children:[(0,x.jsx)(C,{label:`Time zone`,children:(0,x.jsx)(`input`,{className:`web-field`,value:M.timeZone,onChange:e=>N({timeZone:e.target.value})})}),(0,x.jsx)(C,{label:`Missed runs`,hint:`What happens to a run due while the daemon was down.`,children:(0,x.jsxs)(`select`,{className:`web-field`,value:M.misfire,onChange:e=>N({misfire:e.target.value===`runOnce`?`runOnce`:`skip`}),children:[(0,x.jsx)(`option`,{value:`skip`,children:`Skip them`}),(0,x.jsx)(`option`,{value:`runOnce`,children:`Run once when back`})]})})]}),(0,x.jsxs)(`div`,{className:`web-form__row`,children:[(0,x.jsx)(C,{label:`Turn off after runs`,hint:`Empty keeps it on.`,children:(0,x.jsx)(`input`,{className:`web-field`,inputMode:`numeric`,value:M.afterRuns,onChange:e=>N({afterRuns:e.target.value})})}),(0,x.jsx)(C,{label:`Turn off after`,hint:`Empty keeps it on.`,children:(0,x.jsx)(`input`,{className:`web-field`,type:`date`,value:M.afterDate,onChange:e=>N({afterDate:e.target.value})})})]}),(0,x.jsxs)(`label`,{className:`web-input__row`,children:[(0,x.jsx)(`input`,{type:`checkbox`,checked:M.enabled,onChange:e=>N({enabled:e.target.checked})}),(0,x.jsx)(`span`,{children:`On`})]}),F===void 0?null:(0,x.jsx)(`p`,{className:`web-note`,children:F}),(0,x.jsxs)(`div`,{className:`web-page__actions`,children:[(0,x.jsx)(i,{label:k===void 0?`Create`:`Save`,variant:`primary`,disabled:F!==void 0,onClick:()=>{if(F!==void 0)return;let e=_(M,k?.definition);if(k===void 0){let n=`ahp-automation:/${u()}`;l(a,{type:`automation/createRequested`,resource:n,definition:e}),t.surfaces.close(`automation:new`),t.commands.execute(`ahp.openAutomation`,{resource:n})}else l(a,{type:`automation/updateRequested`,resource:k.resource,changes:e}),t.surfaces.close(`automation:edit:${k.resource}`),t.commands.execute(`ahp.openAutomation`,{resource:k.resource})}}),(0,x.jsx)(i,{label:`Cancel`,onClick:()=>t.surfaces.close(k===void 0?`automation:new`:`automation:edit:${k.resource}`)})]})]})}export{w as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{r as n}from"./notify-
|
|
1
|
+
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{r as n}from"./notify-BQ9fSOfy.js";import{t as r}from"./useStore-BQkzWMs-.js";import{n as i}from"./ScenaProvider-6A3TJumQ.js";import{d as a,k as o,n as s,nt as c}from"./data-hUAVersf.js";import{t as l}from"./emojis-7RT6GvLa.js";import{t as u}from"./Spinner-B-iOhBZq.js";import{t as d}from"./Alert-CHZkhmDE.js";import{_ as f,f as p,g as m,m as h,p as g,v as _}from"./index-yhQX4tVS.js";import{t as v}from"./ExplorerList-DfesRs43.js";import{t as y}from"./channel-UD2KGCy_.js";import{i as b,n as x}from"./actions-BzJiPQuh.js";var S=t(),C=e(),w={running:`working`,failed:`failed`,on:`ok`,off:`off`},T={running:`Running`,failed:`Last run failed`,on:`On`,off:`Off`},E={pending:`waiting`,running:`running`,completed:`done`,failed:`failed`,cancelled:`stopped`},D=new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`}),O=e=>{if(e===void 0)return``;let t=new Date(e);return Number.isNaN(t.getTime())?``:D.format(t)},k=e=>n(`The automation could not run`,e);function A(){let e=i(),{state:t,error:n}=y(a,c),D=r(s),A=r(_),j=t=>void e.commands.execute(`ahp.openAutomation`,{resource:t}),M=t=>void e.commands.execute(`ahp.editAutomation`,{resource:t}),N=(0,S.useMemo)(()=>[...t?.entries??[]].sort((e,t)=>m(e).localeCompare(m(t))).map(e=>{let t=h(e),n=g(e)[0],r=n===void 0?void 0:p(n),i=e.definition.session.provider,a=e.runCount??e.runs.length;return{key:e.resource,dot:w[t],dotLabel:T[t],title:m(e),...e.nextRunAt===void 0||!e.definition.enabled?{}:{time:O(e.nextRunAt)},lines:[[f(e),i].filter(e=>e!==void 0).join(` · `),r===void 0?`Never run`:`${a} ${a===1?`run`:`runs`} \u{00B7} last ${E[r.status]??r.status} ${O(r.at)}`],menu:x(e,()=>j(e.resource),()=>M(e.resource)),...e.operations.map(String).includes(`run`)?{action:{icon:l.run,label:`Run now`,run:()=>void b(e).catch(k)}}:{}}}),[t]),P=n===null?t===void 0?(0,C.jsx)(u,{label:`Reading the automations`}):N.length===0?(0,C.jsx)(`p`,{className:`web-note web-explorer__empty`,children:`No automations yet.`}):null:(0,C.jsx)(d,{tone:`danger`,title:`No automations`,message:n});return(0,C.jsx)(v,{title:`Automations`,actions:[...D?.create===void 0?[]:[{icon:`+`,label:`New automation`,run:()=>void e.commands.execute(`ahp.newAutomation`)}],{icon:l.reload,label:`Reload`,run:()=>void o(a)}],rows:N,selected:A??null,onOpen:j,notice:P,filterLabel:`Filter automations`})}export{A as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{t as n}from"./useStore-BQkzWMs-.js";import{n as r}from"./ScenaProvider-6A3TJumQ.js";import{t as i}from"./Button-_R1oktDz.js";import{c as a,it as o,k as s}from"./data-CBWyZN_H.js";import{o as c}from"./words-T8-D0K4W.js";import{t as l}from"./emojis-7RT6GvLa.js";import{t as u}from"./ContextMenu-BV1gdog0.js";import{t as d}from"./Spinner-B-iOhBZq.js";import{t as f}from"./Alert-CHZkhmDE.js";import{t as ee}from"./Tree-BqFzA5wp.js";import{t as p}from"./TextField-DnSHrmJM.js";import{t as m}from"./CheckBox-Dkn59EbO.js";import{t as h}from"./Modal-BHPfQpzr.js";import{t as te}from"./state-KGSq646f.js";import{l as ne,s as re}from"./viewers-MssMDn0e.js";import{t as ie}from"./channel-8aIcEm3f.js";import{a as ae,c as oe,d as se,i as g,l as ce,n as _,o as le,r as v,s as ue,t as y,u as b}from"./changeset-BgSW341C.js";var x=t(),S=e();function C(e){let t=e.filter(e=>e.staged).length;return t>0?t===1?`The 1 staged file is committed. The rest stay as they are.`:`The ${t} staged files are committed. The rest stay as they are.`:e.length===1?`Nothing is staged, so the 1 changed file is committed.`:`Nothing is staged, so all ${e.length} changed files are committed.`}function w({form:e,files:t,onCommit:n,onClose:r}){let[a,o]=(0,x.useState)(``),s=c(e.operation.confirmation),l=a.trim()!==``;return(0,S.jsx)(h,{open:!0,title:e.operation.label,onClose:r,children:(0,S.jsxs)(`div`,{className:`web-changeset-form`,children:[(0,S.jsx)(p,{label:`Commit message`,multiline:!0,rows:4,value:a,placeholder:`What does this change do?`,onChange:o}),(0,S.jsx)(`p`,{className:`web-note`,children:C(t)}),s===``?null:(0,S.jsx)(`p`,{className:`web-note`,children:s}),(0,S.jsxs)(`div`,{className:`web-changeset-form__actions`,children:[(0,S.jsx)(i,{label:`Cancel`,variant:`ghost`,onClick:r}),(0,S.jsx)(i,{label:e.operation.label,variant:`primary`,disabled:!l,onClick:()=>n(a.trim())})]})]})})}function T({form:e,onCreate:t,onClose:n}){let[r,a]=(0,x.useState)(e.draft.title),[o,s]=(0,x.useState)(e.draft.description),[c,l]=(0,x.useState)(!1);(0,x.useEffect)(()=>{a(e.draft.title),s(e.draft.description)},[e.draft]);let u=e.draft.branchName===null&&e.draft.baseBranchName===null?null:`${e.draft.branchName??`?`} \u{2192} ${e.draft.baseBranchName??`?`}`,f=!e.preparing&&e.create!==null&&r.trim()!==``;return(0,S.jsx)(h,{open:!0,title:`Create a pull request`,onClose:n,children:(0,S.jsxs)(`div`,{className:`web-changeset-form`,children:[e.preparing?(0,S.jsx)(d,{label:`Asking the server for a title and description`}):null,e.draft.repository===null&&u===null?null:(0,S.jsx)(`p`,{className:`web-note`,children:[e.draft.repository,u].filter(e=>e!==null).join(` · `)}),(0,S.jsx)(p,{label:`Title`,value:r,placeholder:`What is this request?`,disabled:e.preparing,onChange:a}),(0,S.jsx)(p,{label:`Description`,multiline:!0,rows:8,value:o,placeholder:`What changed, and why?`,disabled:e.preparing,onChange:s}),(0,S.jsx)(m,{label:`Open as a draft`,value:c,onChange:l}),(0,S.jsx)(`p`,{className:`web-note`,children:e.create===null?`This server offers no way to create the request.`:`The server commits what is uncommitted, pushes the branch and opens the request only when you press the button.`}),(0,S.jsxs)(`div`,{className:`web-changeset-form__actions`,children:[(0,S.jsx)(i,{label:`Cancel`,variant:`ghost`,onClick:n}),e.create===null?null:(0,S.jsx)(i,{label:e.create.label,variant:`primary`,disabled:!f,onClick:()=>t({...e.draft,title:r.trim(),description:o},c)})]})]})})}function de({form:e,files:t,onCommit:n,onPullRequest:r,onClose:i}){return e===null?null:e.kind===`commit`?(0,S.jsx)(w,{form:e,files:t,onCommit:n,onClose:i}):(0,S.jsx)(T,{form:e,onCreate:r,onClose:i})}var E=`ahpd-web.changes-view`,D=`ahpd-web.changes-grouping`,fe={review:`By review`,staging:`Staged and not`,none:`Not grouped`};function O(e,t){try{let n=localStorage.getItem(e);return t.find(e=>e===n)??null}catch{return null}}function k(e,t){try{localStorage.setItem(e,t)}catch{}}var pe={A:`Added`,M:`Modified`,D:`Deleted`,U:`Untracked`};function A(){let e=r(),t=n(te),i=n(a)?.find(e=>e.resource===t),c=ie(t,o),p=(0,x.useMemo)(()=>se(c.state?.changesets),[c.state?.changesets]),[m,h]=(0,x.useState)(void 0),C=p.find(e=>e.uri===m)??le(p),w=ae(C?.uri),{files:T,operations:A}=w,j=i?.workingDirectories?.[0]??null,[M,me]=(0,x.useState)(()=>O(E,[`list`,`tree`])??`list`),[N,he]=(0,x.useState)(()=>O(D,[`review`,`staging`,`none`])),P=C?.review===!0,ge=T.some(e=>e.staged||e.unstaged),F=[...P?[`review`]:[],...ge?[`staging`]:[],`none`],I=N!==null&&F.includes(N)?N:F[0]??`none`,[L,_e]=(0,x.useState)(``),[ve,R]=(0,x.useState)(new Set),[ye,z]=(0,x.useState)(null),[B,V]=(0,x.useState)(null),H=A.filter(e=>v(e,`resource`)),be=A.some(e=>e.id===`create-pr`),U=A.filter(e=>v(e,`changeset`)&&!(be&&e.id===`prepare-pull-request`)),W=e=>String(e.status)===`running`,xe=t=>{let n=[{title:`Open change`,onSelect:n=>{n.closeMenu(),_(e,t,C?.uri,P)}}];t.status!==`deleted`&&(n.push({title:`Open file`,onSelect:n=>{n.closeMenu(),e.commands.execute(`ahp.openFile`,{uri:t.file})}}),n.push(...re(e,t.file,ne(e,t.file)[0]?.component??null))),P&&n.push({title:t.reviewed?`Mark as not reviewed`:`Mark as reviewed`,onSelect:e=>{e.closeMenu(),w.review([t],!t.reviewed)}});for(let e of H)n.push({title:e.label,...e.description===void 0?{}:{tooltip:e.description},group:`file`,...e.confirmation===void 0?{}:{color:`red`},onSelect:n=>{n.closeMenu(),w.run(e,t)}});return n},Se=t=>{let n=ce(t),r=(e,t)=>{e.stopPropagation(),t()};return(0,S.jsxs)(`span`,{className:`web-change__end`,children:[(0,S.jsxs)(`span`,{className:`web-change__actions`,children:[P?(0,S.jsx)(`button`,{type:`button`,className:`web-change__action`,title:t.reviewed?`Mark as not reviewed`:`Mark as reviewed`,"aria-label":t.reviewed?`Mark as not reviewed`:`Mark as reviewed`,"aria-pressed":t.reviewed,onClick:e=>r(e,()=>w.review([t],!t.reviewed)),children:l.check}):null,t.status===`deleted`?null:(0,S.jsx)(`button`,{type:`button`,className:`web-change__action`,title:`Open file`,"aria-label":`Open file`,onClick:n=>r(n,()=>void e.commands.execute(`ahp.openFile`,{uri:t.file})),children:l.file}),H.map(e=>(0,S.jsx)(`button`,{type:`button`,className:`web-change__action`,title:e.label,"aria-label":e.label,disabled:W(e),onClick:n=>r(n,()=>void w.run(e,t)),children:y(e)},e.id))]}),(0,S.jsx)(`span`,{className:`web-change__counts`,children:t.added===void 0&&t.removed===void 0?null:(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`span`,{className:`web-diff--add`,children:[`+`,t.added??0]}),` `,(0,S.jsxs)(`span`,{className:`web-diff--remove`,children:[`-`,t.removed??0]})]})}),(0,S.jsx)(`span`,{className:`web-change__letter`,"data-letter":n,title:pe[n],children:n})]})},G=L.trim().toLowerCase(),K=G===``?T:T.filter(e=>`${b(e.dir,j)}/${e.name}`.toLowerCase().includes(G)),q=oe(K,I),J=new Map,Y=(()=>{let t=(t,n)=>{let r=`${n}|${t.id}`;J.set(r,t);let i=b(t.dir,j);return{key:r,label:(0,S.jsxs)(`span`,{className:`web-change`,"data-reviewed":t.reviewed?`true`:`false`,"data-deleted":t.status===`deleted`?`true`:`false`,title:`${i}/${t.name}`,children:[(0,S.jsx)(`span`,{className:`web-change__name`,children:t.name}),M===`list`&&i!==`.`?(0,S.jsx)(`span`,{className:`web-change__dir`,children:i}):null]}),icon:ne(e,t.file)[0]?.opens?.icon??l.file,trailing:Se(t),data:t}},n=(e,r)=>({key:`${r}|dir:${e.path}`,label:(0,S.jsx)(`span`,{className:`web-change__name`,title:e.path,children:e.name}),icon:l.folder,children:[...e.folders.map(e=>n(e,r)),...e.changes.map(e=>t(e,r))]}),r=(e,r)=>{if(M===`list`)return e.map(e=>t(e,r));let i=ue(e,j);return[...i.folders.map(e=>n(e,r)),...i.changes.map(e=>t(e,r))]};return I===`none`?r(q[0]?.changes??[],`all`):q.map(e=>({key:`group:${e.key}`,icon:``,label:(0,S.jsx)(`span`,{className:`web-change__group`,children:e.label}),trailing:(0,S.jsx)(`span`,{className:`web-explorer__count`,children:e.changes.length}),children:r(e.changes,e.key)}))})(),X=[],Z=e=>{for(let t of e)t.children!==void 0&&(X.push(t.key),Z(t.children))};Z(Y);let Ce=new Set(X.filter(e=>!ve.has(e))),we=e=>{let t=e.target.closest(`[data-key]`)?.dataset.key,n=t===void 0?void 0:J.get(t);n!==void 0&&(e.preventDefault(),z(t??null),V({x:e.clientX,y:e.clientY,items:xe(n)}))},Te=String(w.state?.status??``),Ee=(0,S.jsxs)(S.Fragment,{children:[t===void 0?(0,S.jsx)(`p`,{className:`web-note web-explorer__empty`,children:`Open a session to see what it changed.`}):null,t!==void 0&&c.state!==void 0&&p.length===0?(0,S.jsx)(`p`,{className:`web-note web-explorer__empty`,children:`This session tracks no changes.`}):null,w.said===null?null:(0,S.jsx)(f,{tone:w.said.tone,message:w.said.text}),w.error===null?null:(0,S.jsx)(f,{tone:`danger`,title:`Changes not readable`,message:w.error}),w.state?.error===void 0?null:(0,S.jsx)(f,{tone:`danger`,message:w.state.error.message}),C!==void 0&&(w.state===void 0||Te===`computing`)&&w.error===null?(0,S.jsx)(d,{label:`Working out the changes`}):null,w.state!==void 0&&Te!==`computing`&&T.length===0?(0,S.jsx)(`p`,{className:`web-note web-explorer__empty`,children:`No changes.`}):null]}),Q=(e,t,n,r)=>(0,S.jsx)(`button`,{type:`button`,className:`web-explorer__action`,title:t,"aria-label":t,"aria-pressed":r?.on,"data-on":r?.on===!0?`true`:`false`,"data-busy":r?.busy===!0?`true`:`false`,"data-tone":r?.tone??void 0,disabled:r?.disabled,onClick:n,children:(0,S.jsx)(`span`,{className:`web-explorer__icon`,children:e})},t),$=e=>{me(e),k(E,e)},De=e=>{let t=e.currentTarget.getBoundingClientRect(),n=p.map(e=>({title:e.label,icon:e.uri===C?.uri?l.check:``,onSelect:t=>{t.closeMenu(),h(e.uri)}}));V({x:t.left,y:t.bottom,items:n})},Oe=e=>{let t=e.currentTarget.getBoundingClientRect(),n=e=>({icon:e?l.check:``}),r=U.map(e=>{let t=g(e);return{title:e.label,...e.description===void 0?{}:{tooltip:e.description},group:`changes`,icon:y(e),...t===null?{}:{color:t},disabled:W(e),onSelect:t=>{t.closeMenu(),w.run(e)}}});if(r.push({title:`Show as a list`,group:`view`,...n(M===`list`),onSelect:e=>{e.closeMenu(),$(`list`)}},{title:`Show as a tree`,group:`view`,...n(M===`tree`),onSelect:e=>{e.closeMenu(),$(`tree`)}}),F.length>1)for(let e of F)r.push({title:fe[e],group:`group`,...n(e===I),onSelect:t=>{t.closeMenu(),he(e),k(D,e)}});X.length>0&&(r.push({title:`Expand all`,group:`folders`,icon:``,onSelect:e=>{e.closeMenu(),R(new Set)}}),r.push({title:`Collapse all`,group:`folders`,icon:``,onSelect:e=>{e.closeMenu(),R(new Set(X))}})),V({x:Math.max(0,t.right-200),y:t.bottom,items:r})},ke=T.reduce((e,t)=>e+(t.added??0),0),Ae=T.reduce((e,t)=>e+(t.removed??0),0);return(0,S.jsxs)(`div`,{className:`web-explorer web-changes`,children:[(0,S.jsxs)(`div`,{className:`web-explorer__title`,children:[(0,S.jsx)(`span`,{className:`web-explorer__name`,title:i?.title,children:i===void 0?`Changes`:`Changes \u{00B7} ${i.title||`Untitled`}`}),C===void 0?null:(0,S.jsxs)(`span`,{className:`web-explorer__actions`,children:[U.map(e=>Q(y(e),e.label,()=>void w.run(e),{busy:W(e),disabled:W(e),tone:g(e)})),U.length===0?null:(0,S.jsx)(`span`,{className:`web-explorer__sep`,"aria-hidden":`true`}),Q(l.reload,`Reload`,()=>void s(C.uri)),Q(l.more,`View options`,Oe)]})]}),C===void 0?null:(0,S.jsxs)(`div`,{className:`web-changes__bar`,children:[p.length>1?(0,S.jsxs)(`button`,{type:`button`,className:`web-changes__scope`,title:C.description??C.label,"aria-haspopup":`menu`,onClick:De,children:[C.label,` `,(0,S.jsx)(`span`,{"aria-hidden":`true`,children:l.caretDown})]}):(0,S.jsx)(`span`,{className:`web-changes__scope web-changes__scope--only`,title:C.description??C.label,children:C.label}),(0,S.jsx)(`span`,{className:`web-changes__totals`,children:T.length===0?null:(0,S.jsxs)(S.Fragment,{children:[T.length===1?`1 file`:`${T.length} files`,` `,(0,S.jsxs)(`span`,{className:`web-diff--add`,children:[`+`,ke]}),` `,(0,S.jsxs)(`span`,{className:`web-diff--remove`,children:[`−`,Ae]})]})}),(0,S.jsx)(`span`,{className:`web-segments`,role:`group`,"aria-label":`Show as`,children:[`list`,`tree`].map(e=>(0,S.jsx)(`button`,{type:`button`,className:`web-segments__item web-segments__item--icon`,"aria-pressed":M===e,title:e===`list`?`Show as a list`:`Show as a tree`,"aria-label":e===`list`?`Show as a list`:`Show as a tree`,onClick:()=>$(e),children:e===`list`?l.log:l.tree},e))})]}),T.length===0?null:(0,S.jsx)(`input`,{className:`web-explorer__filter`,type:`search`,value:L,placeholder:`Filter files`,"aria-label":`Filter files`,onChange:e=>_e(e.target.value)}),(0,S.jsxs)(`div`,{className:`web-explorer__scroll`,onContextMenu:we,children:[(0,S.jsx)(`div`,{className:`web-explorer__notice`,children:Ee}),(0,S.jsx)(ee,{nodes:Y,selectedKey:ye,expanded:Ce,onExpandedChange:e=>R(new Set(X.filter(t=>!e.has(t)))),onSelect:t=>{if(t.data===void 0){R(e=>{let n=new Set(e);return n.delete(t.key)||n.add(t.key),n});return}z(t.key),_(e,t.data,C?.uri,P)}}),G!==``&&K.length===0?(0,S.jsx)(`p`,{className:`web-note web-explorer__empty`,children:`Nothing matches.`}):null]}),(0,S.jsx)(de,{form:w.form,files:T,onCommit:w.commit,onPullRequest:w.pullRequest,onClose:w.closeForm}),B===null?null:(0,S.jsx)(u,{spec:{items:B.items},x:B.x,y:B.y,onClose:()=>V(null)})]})}export{A as default};
|
|
1
|
+
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{t as n}from"./useStore-BQkzWMs-.js";import{n as r}from"./ScenaProvider-6A3TJumQ.js";import{t as i}from"./Button-_R1oktDz.js";import{c as a,it as o,k as s}from"./data-hUAVersf.js";import{o as c}from"./words-T8-D0K4W.js";import{t as l}from"./emojis-7RT6GvLa.js";import{t as u}from"./ContextMenu-BV1gdog0.js";import{t as d}from"./Spinner-B-iOhBZq.js";import{t as f}from"./Alert-CHZkhmDE.js";import{t as ee}from"./Tree-fxC7yDSR.js";import{t as p}from"./TextField-DnSHrmJM.js";import{t as m}from"./CheckBox-Dkn59EbO.js";import{t as h}from"./Modal-BHPfQpzr.js";import{t as te}from"./state-KGSq646f.js";import{l as ne,s as re}from"./viewers-MssMDn0e.js";import{t as ie}from"./channel-UD2KGCy_.js";import{a as ae,c as oe,d as se,i as g,l as ce,n as _,o as le,r as v,s as ue,t as y,u as b}from"./changeset-eZAmDe3s.js";var x=t(),S=e();function C(e){let t=e.filter(e=>e.staged).length;return t>0?t===1?`The 1 staged file is committed. The rest stay as they are.`:`The ${t} staged files are committed. The rest stay as they are.`:e.length===1?`Nothing is staged, so the 1 changed file is committed.`:`Nothing is staged, so all ${e.length} changed files are committed.`}function w({form:e,files:t,onCommit:n,onClose:r}){let[a,o]=(0,x.useState)(``),s=c(e.operation.confirmation),l=a.trim()!==``;return(0,S.jsx)(h,{open:!0,title:e.operation.label,onClose:r,children:(0,S.jsxs)(`div`,{className:`web-changeset-form`,children:[(0,S.jsx)(p,{label:`Commit message`,multiline:!0,rows:4,value:a,placeholder:`What does this change do?`,onChange:o}),(0,S.jsx)(`p`,{className:`web-note`,children:C(t)}),s===``?null:(0,S.jsx)(`p`,{className:`web-note`,children:s}),(0,S.jsxs)(`div`,{className:`web-changeset-form__actions`,children:[(0,S.jsx)(i,{label:`Cancel`,variant:`ghost`,onClick:r}),(0,S.jsx)(i,{label:e.operation.label,variant:`primary`,disabled:!l,onClick:()=>n(a.trim())})]})]})})}function T({form:e,onCreate:t,onClose:n}){let[r,a]=(0,x.useState)(e.draft.title),[o,s]=(0,x.useState)(e.draft.description),[c,l]=(0,x.useState)(!1);(0,x.useEffect)(()=>{a(e.draft.title),s(e.draft.description)},[e.draft]);let u=e.draft.branchName===null&&e.draft.baseBranchName===null?null:`${e.draft.branchName??`?`} \u{2192} ${e.draft.baseBranchName??`?`}`,f=!e.preparing&&e.create!==null&&r.trim()!==``;return(0,S.jsx)(h,{open:!0,title:`Create a pull request`,onClose:n,children:(0,S.jsxs)(`div`,{className:`web-changeset-form`,children:[e.preparing?(0,S.jsx)(d,{label:`Asking the server for a title and description`}):null,e.draft.repository===null&&u===null?null:(0,S.jsx)(`p`,{className:`web-note`,children:[e.draft.repository,u].filter(e=>e!==null).join(` · `)}),(0,S.jsx)(p,{label:`Title`,value:r,placeholder:`What is this request?`,disabled:e.preparing,onChange:a}),(0,S.jsx)(p,{label:`Description`,multiline:!0,rows:8,value:o,placeholder:`What changed, and why?`,disabled:e.preparing,onChange:s}),(0,S.jsx)(m,{label:`Open as a draft`,value:c,onChange:l}),(0,S.jsx)(`p`,{className:`web-note`,children:e.create===null?`This server offers no way to create the request.`:`The server commits what is uncommitted, pushes the branch and opens the request only when you press the button.`}),(0,S.jsxs)(`div`,{className:`web-changeset-form__actions`,children:[(0,S.jsx)(i,{label:`Cancel`,variant:`ghost`,onClick:n}),e.create===null?null:(0,S.jsx)(i,{label:e.create.label,variant:`primary`,disabled:!f,onClick:()=>t({...e.draft,title:r.trim(),description:o},c)})]})]})})}function de({form:e,files:t,onCommit:n,onPullRequest:r,onClose:i}){return e===null?null:e.kind===`commit`?(0,S.jsx)(w,{form:e,files:t,onCommit:n,onClose:i}):(0,S.jsx)(T,{form:e,onCreate:r,onClose:i})}var E=`ahpd-web.changes-view`,D=`ahpd-web.changes-grouping`,fe={review:`By review`,staging:`Staged and not`,none:`Not grouped`};function O(e,t){try{let n=localStorage.getItem(e);return t.find(e=>e===n)??null}catch{return null}}function k(e,t){try{localStorage.setItem(e,t)}catch{}}var pe={A:`Added`,M:`Modified`,D:`Deleted`,U:`Untracked`};function A(){let e=r(),t=n(te),i=n(a)?.find(e=>e.resource===t),c=ie(t,o),p=(0,x.useMemo)(()=>se(c.state?.changesets),[c.state?.changesets]),[m,h]=(0,x.useState)(void 0),C=p.find(e=>e.uri===m)??le(p),w=ae(C?.uri),{files:T,operations:A}=w,j=i?.workingDirectories?.[0]??null,[M,me]=(0,x.useState)(()=>O(E,[`list`,`tree`])??`list`),[N,he]=(0,x.useState)(()=>O(D,[`review`,`staging`,`none`])),P=C?.review===!0,ge=T.some(e=>e.staged||e.unstaged),F=[...P?[`review`]:[],...ge?[`staging`]:[],`none`],I=N!==null&&F.includes(N)?N:F[0]??`none`,[L,_e]=(0,x.useState)(``),[ve,R]=(0,x.useState)(new Set),[ye,z]=(0,x.useState)(null),[B,V]=(0,x.useState)(null),H=A.filter(e=>v(e,`resource`)),be=A.some(e=>e.id===`create-pr`),U=A.filter(e=>v(e,`changeset`)&&!(be&&e.id===`prepare-pull-request`)),W=e=>String(e.status)===`running`,xe=t=>{let n=[{title:`Open change`,onSelect:n=>{n.closeMenu(),_(e,t,C?.uri,P)}}];t.status!==`deleted`&&(n.push({title:`Open file`,onSelect:n=>{n.closeMenu(),e.commands.execute(`ahp.openFile`,{uri:t.file})}}),n.push(...re(e,t.file,ne(e,t.file)[0]?.component??null))),P&&n.push({title:t.reviewed?`Mark as not reviewed`:`Mark as reviewed`,onSelect:e=>{e.closeMenu(),w.review([t],!t.reviewed)}});for(let e of H)n.push({title:e.label,...e.description===void 0?{}:{tooltip:e.description},group:`file`,...e.confirmation===void 0?{}:{color:`red`},onSelect:n=>{n.closeMenu(),w.run(e,t)}});return n},Se=t=>{let n=ce(t),r=(e,t)=>{e.stopPropagation(),t()};return(0,S.jsxs)(`span`,{className:`web-change__end`,children:[(0,S.jsxs)(`span`,{className:`web-change__actions`,children:[P?(0,S.jsx)(`button`,{type:`button`,className:`web-change__action`,title:t.reviewed?`Mark as not reviewed`:`Mark as reviewed`,"aria-label":t.reviewed?`Mark as not reviewed`:`Mark as reviewed`,"aria-pressed":t.reviewed,onClick:e=>r(e,()=>w.review([t],!t.reviewed)),children:l.check}):null,t.status===`deleted`?null:(0,S.jsx)(`button`,{type:`button`,className:`web-change__action`,title:`Open file`,"aria-label":`Open file`,onClick:n=>r(n,()=>void e.commands.execute(`ahp.openFile`,{uri:t.file})),children:l.file}),H.map(e=>(0,S.jsx)(`button`,{type:`button`,className:`web-change__action`,title:e.label,"aria-label":e.label,disabled:W(e),onClick:n=>r(n,()=>void w.run(e,t)),children:y(e)},e.id))]}),(0,S.jsx)(`span`,{className:`web-change__counts`,children:t.added===void 0&&t.removed===void 0?null:(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`span`,{className:`web-diff--add`,children:[`+`,t.added??0]}),` `,(0,S.jsxs)(`span`,{className:`web-diff--remove`,children:[`-`,t.removed??0]})]})}),(0,S.jsx)(`span`,{className:`web-change__letter`,"data-letter":n,title:pe[n],children:n})]})},G=L.trim().toLowerCase(),K=G===``?T:T.filter(e=>`${b(e.dir,j)}/${e.name}`.toLowerCase().includes(G)),q=oe(K,I),J=new Map,Y=(()=>{let t=(t,n)=>{let r=`${n}|${t.id}`;J.set(r,t);let i=b(t.dir,j);return{key:r,label:(0,S.jsxs)(`span`,{className:`web-change`,"data-reviewed":t.reviewed?`true`:`false`,"data-deleted":t.status===`deleted`?`true`:`false`,title:`${i}/${t.name}`,children:[(0,S.jsx)(`span`,{className:`web-change__name`,children:t.name}),M===`list`&&i!==`.`?(0,S.jsx)(`span`,{className:`web-change__dir`,children:i}):null]}),icon:ne(e,t.file)[0]?.opens?.icon??l.file,trailing:Se(t),data:t}},n=(e,r)=>({key:`${r}|dir:${e.path}`,label:(0,S.jsx)(`span`,{className:`web-change__name`,title:e.path,children:e.name}),icon:l.folder,children:[...e.folders.map(e=>n(e,r)),...e.changes.map(e=>t(e,r))]}),r=(e,r)=>{if(M===`list`)return e.map(e=>t(e,r));let i=ue(e,j);return[...i.folders.map(e=>n(e,r)),...i.changes.map(e=>t(e,r))]};return I===`none`?r(q[0]?.changes??[],`all`):q.map(e=>({key:`group:${e.key}`,icon:``,label:(0,S.jsx)(`span`,{className:`web-change__group`,children:e.label}),trailing:(0,S.jsx)(`span`,{className:`web-explorer__count`,children:e.changes.length}),children:r(e.changes,e.key)}))})(),X=[],Z=e=>{for(let t of e)t.children!==void 0&&(X.push(t.key),Z(t.children))};Z(Y);let Ce=new Set(X.filter(e=>!ve.has(e))),we=e=>{let t=e.target.closest(`[data-key]`)?.dataset.key,n=t===void 0?void 0:J.get(t);n!==void 0&&(e.preventDefault(),z(t??null),V({x:e.clientX,y:e.clientY,items:xe(n)}))},Te=String(w.state?.status??``),Ee=(0,S.jsxs)(S.Fragment,{children:[t===void 0?(0,S.jsx)(`p`,{className:`web-note web-explorer__empty`,children:`Open a session to see what it changed.`}):null,t!==void 0&&c.state!==void 0&&p.length===0?(0,S.jsx)(`p`,{className:`web-note web-explorer__empty`,children:`This session tracks no changes.`}):null,w.said===null?null:(0,S.jsx)(f,{tone:w.said.tone,message:w.said.text}),w.error===null?null:(0,S.jsx)(f,{tone:`danger`,title:`Changes not readable`,message:w.error}),w.state?.error===void 0?null:(0,S.jsx)(f,{tone:`danger`,message:w.state.error.message}),C!==void 0&&(w.state===void 0||Te===`computing`)&&w.error===null?(0,S.jsx)(d,{label:`Working out the changes`}):null,w.state!==void 0&&Te!==`computing`&&T.length===0?(0,S.jsx)(`p`,{className:`web-note web-explorer__empty`,children:`No changes.`}):null]}),Q=(e,t,n,r)=>(0,S.jsx)(`button`,{type:`button`,className:`web-explorer__action`,title:t,"aria-label":t,"aria-pressed":r?.on,"data-on":r?.on===!0?`true`:`false`,"data-busy":r?.busy===!0?`true`:`false`,"data-tone":r?.tone??void 0,disabled:r?.disabled,onClick:n,children:(0,S.jsx)(`span`,{className:`web-explorer__icon`,children:e})},t),$=e=>{me(e),k(E,e)},De=e=>{let t=e.currentTarget.getBoundingClientRect(),n=p.map(e=>({title:e.label,icon:e.uri===C?.uri?l.check:``,onSelect:t=>{t.closeMenu(),h(e.uri)}}));V({x:t.left,y:t.bottom,items:n})},Oe=e=>{let t=e.currentTarget.getBoundingClientRect(),n=e=>({icon:e?l.check:``}),r=U.map(e=>{let t=g(e);return{title:e.label,...e.description===void 0?{}:{tooltip:e.description},group:`changes`,icon:y(e),...t===null?{}:{color:t},disabled:W(e),onSelect:t=>{t.closeMenu(),w.run(e)}}});if(r.push({title:`Show as a list`,group:`view`,...n(M===`list`),onSelect:e=>{e.closeMenu(),$(`list`)}},{title:`Show as a tree`,group:`view`,...n(M===`tree`),onSelect:e=>{e.closeMenu(),$(`tree`)}}),F.length>1)for(let e of F)r.push({title:fe[e],group:`group`,...n(e===I),onSelect:t=>{t.closeMenu(),he(e),k(D,e)}});X.length>0&&(r.push({title:`Expand all`,group:`folders`,icon:``,onSelect:e=>{e.closeMenu(),R(new Set)}}),r.push({title:`Collapse all`,group:`folders`,icon:``,onSelect:e=>{e.closeMenu(),R(new Set(X))}})),V({x:Math.max(0,t.right-200),y:t.bottom,items:r})},ke=T.reduce((e,t)=>e+(t.added??0),0),Ae=T.reduce((e,t)=>e+(t.removed??0),0);return(0,S.jsxs)(`div`,{className:`web-explorer web-changes`,children:[(0,S.jsxs)(`div`,{className:`web-explorer__title`,children:[(0,S.jsx)(`span`,{className:`web-explorer__name`,title:i?.title,children:i===void 0?`Changes`:`Changes \u{00B7} ${i.title||`Untitled`}`}),C===void 0?null:(0,S.jsxs)(`span`,{className:`web-explorer__actions`,children:[U.map(e=>Q(y(e),e.label,()=>void w.run(e),{busy:W(e),disabled:W(e),tone:g(e)})),U.length===0?null:(0,S.jsx)(`span`,{className:`web-explorer__sep`,"aria-hidden":`true`}),Q(l.reload,`Reload`,()=>void s(C.uri)),Q(l.more,`View options`,Oe)]})]}),C===void 0?null:(0,S.jsxs)(`div`,{className:`web-changes__bar`,children:[p.length>1?(0,S.jsxs)(`button`,{type:`button`,className:`web-changes__scope`,title:C.description??C.label,"aria-haspopup":`menu`,onClick:De,children:[C.label,` `,(0,S.jsx)(`span`,{"aria-hidden":`true`,children:l.caretDown})]}):(0,S.jsx)(`span`,{className:`web-changes__scope web-changes__scope--only`,title:C.description??C.label,children:C.label}),(0,S.jsx)(`span`,{className:`web-changes__totals`,children:T.length===0?null:(0,S.jsxs)(S.Fragment,{children:[T.length===1?`1 file`:`${T.length} files`,` `,(0,S.jsxs)(`span`,{className:`web-diff--add`,children:[`+`,ke]}),` `,(0,S.jsxs)(`span`,{className:`web-diff--remove`,children:[`−`,Ae]})]})}),(0,S.jsx)(`span`,{className:`web-segments`,role:`group`,"aria-label":`Show as`,children:[`list`,`tree`].map(e=>(0,S.jsx)(`button`,{type:`button`,className:`web-segments__item web-segments__item--icon`,"aria-pressed":M===e,title:e===`list`?`Show as a list`:`Show as a tree`,"aria-label":e===`list`?`Show as a list`:`Show as a tree`,onClick:()=>$(e),children:e===`list`?l.log:l.tree},e))})]}),T.length===0?null:(0,S.jsx)(`input`,{className:`web-explorer__filter`,type:`search`,value:L,placeholder:`Filter files`,"aria-label":`Filter files`,onChange:e=>_e(e.target.value)}),(0,S.jsxs)(`div`,{className:`web-explorer__scroll`,onContextMenu:we,children:[(0,S.jsx)(`div`,{className:`web-explorer__notice`,children:Ee}),(0,S.jsx)(ee,{nodes:Y,selectedKey:ye,expanded:Ce,onExpandedChange:e=>R(new Set(X.filter(t=>!e.has(t)))),onSelect:t=>{if(t.data===void 0){R(e=>{let n=new Set(e);return n.delete(t.key)||n.add(t.key),n});return}z(t.key),_(e,t.data,C?.uri,P)}}),G!==``&&K.length===0?(0,S.jsx)(`p`,{className:`web-note web-explorer__empty`,children:`Nothing matches.`}):null]}),(0,S.jsx)(de,{form:w.form,files:T,onCommit:w.commit,onPullRequest:w.pullRequest,onClose:w.closeForm}),B===null?null:(0,S.jsx)(u,{spec:{items:B.items},x:B.x,y:B.y,onClose:()=>V(null)})]})}export{A as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{t as n}from"./useStore-BQkzWMs-.js";import{n as r}from"./ScenaProvider-6A3TJumQ.js";import"./data-
|
|
1
|
+
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{t as n}from"./useStore-BQkzWMs-.js";import{n as r}from"./ScenaProvider-6A3TJumQ.js";import"./data-hUAVersf.js";import{t as i}from"./state-DRVsnGrf.js";import{t as a}from"./ExplorerList-DfesRs43.js";import{a as o,i as s}from"./words-CyqfIDyJ.js";var c=t(),l=e();function u(){let e=r(),t=n(`$/ahp/agents`)??[],u=n(`$/ahp/sessions`)??[],d=n(i),f=t=>void e.commands.execute(`ahp.openAgent`,{provider:t}),p=t=>void e.commands.execute(`ahp.newSession`,{provider:t}),m=(0,c.useMemo)(()=>t.map(e=>{let t=u.filter(t=>t.provider===e.provider).length,n=o(e).some(e=>e.required);return{key:e.provider,dot:`ok`,dotLabel:`Offered`,title:e.displayName,lines:[[s(e),t===1?`1 session`:`${t} sessions`,n?`needs sign-in`:void 0].filter(e=>e!==void 0).join(` · `),...e.description===``?[]:[e.description]],menu:[{title:`Open`,onSelect:t=>{t.closeMenu(),f(e.provider)}},{title:`New session`,onSelect:t=>{t.closeMenu(),p(e.provider)}}]}}),[t,u]);return(0,l.jsx)(a,{title:`Agents`,actions:[],rows:m,selected:d??null,onOpen:f,notice:m.length===0?(0,l.jsx)(`p`,{className:`web-note web-explorer__empty`,children:`This server offers no agent.`}):null,filterLabel:`Filter agents`})}export{u as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{l as n,r}from"./notify-
|
|
1
|
+
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{l as n,r}from"./notify-BQ9fSOfy.js";import{t as i}from"./useStore-BQkzWMs-.js";import{n as a}from"./ScenaProvider-6A3TJumQ.js";import{A as o,G as s,J as c,Y as l,c as u,j as d,q as f,r as p,v as m}from"./data-hUAVersf.js";import{n as h}from"./words-T8-D0K4W.js";import{t as g}from"./emojis-7RT6GvLa.js";import{t as _}from"./Spinner-B-iOhBZq.js";import{t as v}from"./Alert-CHZkhmDE.js";import{t as y}from"./state-KGSq646f.js";import{t as b}from"./ExplorerList-DfesRs43.js";var x=t(),S=[{id:`none`,label:`No groups`},{id:`folder`,label:`Group by folder`},{id:`status`,label:`Group by status`},{id:`agent`,label:`Group by agent`}],C=[{key:`input`,label:`Needs you`},{key:`running`,label:`Running`},{key:`error`,label:`Failed`},{key:`unread`,label:`Unread`},{key:`idle`,label:`Idle`},{key:`archived`,label:`Archived`}];function w(e){if(c(e.status))return C[5];let t=f(e.status);return t===`idle`&&!l(e.status)?C[3]:C.find(e=>e.key===t)}function T(e,t,n){switch(t){case`none`:return;case`status`:return w(e);case`agent`:return{key:e.provider,label:n(e.provider)};case`folder`:{let t=e.workingDirectories?.[0];return t===void 0?{key:``,label:`No folder`}:{key:t,label:h(t)}}}}function E(e,t,n){if(n===`none`)return[...e];let r=new Map;n===`status`&&C.forEach((e,t)=>r.set(e.key,t));for(let n of e){let e=t(n)?.key??``;r.has(e)||r.set(e,r.size+C.length)}return e.map((e,n)=>({item:e,index:n,rank:r.get(t(e)?.key??``)})).sort((e,t)=>e.rank-t.rank||e.index-t.index).map(e=>e.item)}var D=e(),O=`ahpd-web.session-grouping`;function k(){try{let e=localStorage.getItem(O);return S.some(t=>t.id===e)?e:`none`}catch{return`none`}}function A(e){try{localStorage.setItem(O,e)}catch{}}var j=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`}),M=new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`});function N(e,t=new Date){let n=new Date(e);return Number.isNaN(n.getTime())?``:(n.toDateString()===t.toDateString()?j:M).format(n)}var P={input:`attention`,running:`working`,error:`failed`,idle:`quiet`},F=e=>h(e).replace(/\/+$/,``).split(`/`).pop()??e;function I(e,t){let i=l(e.status),a=c(e.status),o=t=>m(e.resource,t);return[{title:`Open`,onSelect:e=>{e.closeMenu(),t()}},{title:`Rename`,onSelect:t=>{t.closeMenu();let n=window.prompt(`Rename the session`,e.title)?.trim();n!==void 0&&n!==``&&n!==e.title&&o({type:`session/titleChanged`,title:n})}},{title:i?`Mark as unread`:`Mark as read`,onSelect:e=>{e.closeMenu(),o({type:`session/isReadChanged`,isRead:!i})}},{title:a?`Unarchive`:`Archive`,onSelect:e=>{e.closeMenu(),o({type:`session/isArchivedChanged`,isArchived:!a})}},{title:`Copy link`,group:`more`,onSelect:t=>{t.closeMenu(),navigator.clipboard?.writeText(e.resource).catch(()=>void 0)}},{title:`Delete`,group:`more`,color:`red`,onSelect:t=>{t.closeMenu(),n({title:`Delete "${e.title||`Untitled`}"?`,body:`Its history goes with it.`,confirmLabel:`Delete`,tone:`danger`}).then(t=>{t&&d(`disposeSession`,{channel:e.resource}).catch(e=>r(`The session could not be deleted`,e))})}}]}function L(){let e=a(),t=i(p),n=i(u),r=i(`$/ahp/agents`)??[],d=i(y),[m,h]=(0,x.useState)(!1),[C,w]=(0,x.useState)(k),O=e=>{w(e),A(e)},[j,M]=(0,x.useState)(!1),L=t=>void e.commands.execute(`ahp.openSession`,{resource:t}),R=(0,x.useMemo)(()=>{let e=e=>r.find(t=>t.provider===e)?.displayName??e;return E((n??[]).filter(e=>m||!c(e.status)),t=>T(t,C,e),C).map(t=>{let n=f(t.status),r=n===`idle`&&!l(t.status),i=e(t.provider),a=T(t,C,e),o=t.workingDirectories?.[0],u=[i,o===void 0?void 0:F(o)].filter(e=>e!==void 0).join(` · `),d=t.changes,p=d!==void 0&&(d.additions??0)+(d.deletions??0)>0?(0,D.jsxs)(D.Fragment,{children:[(0,D.jsxs)(`span`,{className:`web-diff--add`,children:[`+`,d.additions??0]}),` `,(0,D.jsxs)(`span`,{className:`web-diff--remove`,children:[`-`,d.deletions??0]}),d.files===void 0?``:` \u{00B7} ${d.files} files`]}):void 0,m=n===`idle`?void 0:`${s[n]}${t.activity===void 0||t.activity===``?``:` \u{00B7} ${t.activity}`}`;return{key:t.resource,dot:c(t.status)?`off`:r?`fresh`:P[n],dotLabel:c(t.status)?`Archived`:r?`Unread`:s[n],title:t.title===``?`Untitled`:t.title,time:N(t.modifiedAt),lines:[u,p,m].filter(e=>e!==void 0),menu:I(t,()=>L(t.resource)),strong:r,...a===void 0?{}:{group:a}}})},[n,r,m,C]),z=()=>{M(!0),o().catch(()=>void 0).finally(()=>M(!1))},B=t?.status===`failed`?(0,D.jsx)(v,{tone:`danger`,title:`Not connected`,message:t.error??`The server refused the connection.`}):t?.status!==`connected`&&n===void 0?(0,D.jsx)(_,{label:`Connecting to the server`}):R.length===0?(0,D.jsx)(`p`,{className:`web-note`,children:m?`No sessions.`:`No sessions yet.`}):null;return(0,D.jsx)(b,{title:`Sessions`,actions:[{icon:`+`,label:`New session`,run:()=>void e.commands.execute(`ahp.newSession`)},{icon:g.reload,label:j?`Reloading`:`Reload`,run:z,busy:j},{icon:g.archived,label:m?`Hide archived`:`Show archived`,run:()=>h(!m),on:m},{icon:g.group,label:`Group sessions`,on:C!==`none`,menu:S.map(e=>({title:e.label,...e.id===C?{description:`Current`}:{},onSelect:t=>{t.closeMenu(),O(e.id)}}))}],rows:R,selected:d??null,onOpen:L,notice:B,filterLabel:`Filter sessions`})}export{L as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{t as n}from"./useStore-BQkzWMs-.js";import{n as r}from"./ScenaProvider-6A3TJumQ.js";import{n as i}from"./sessions-
|
|
1
|
+
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{t as n}from"./useStore-BQkzWMs-.js";import{n as r}from"./ScenaProvider-6A3TJumQ.js";import{n as i}from"./sessions-8PScJEDe.js";import{c as a,f as o,i as ee,j as s,r as c}from"./data-hUAVersf.js";import{n as l}from"./words-T8-D0K4W.js";import{t as u}from"./emojis-7RT6GvLa.js";import{t as d}from"./ContextMenu-BV1gdog0.js";import{t as te}from"./Spinner-B-iOhBZq.js";import{t as f}from"./Alert-CHZkhmDE.js";import{t as p}from"./Tree-fxC7yDSR.js";import{a as ne,d as m,f as h,m as g,p as _}from"./folder-path-CTpCmycG.js";import{c as v,l as y}from"./viewers-MssMDn0e.js";import{a as b,i as x,o as S,r as C,s as w,t as T}from"./index-yhQX4tVS.js";import{r as E}from"./drag-ruzgQUFW.js";var D=t(),O=e(),re=`$/modus/class`;function ie(e){let t=l(e);return(0,O.jsx)(`span`,{title:t,children:t.replace(/\/+$/,``).split(`/`).pop()||t})}function k(){let e=r(),t=n(c),l=n(ee),k=n(a),A=n(C),j=n(ne),M=n(x),[N,P]=(0,D.useState)([]),F=(0,D.useMemo)(()=>g(l,k??[],N,j??[]),[l,k,N,j]),[I,L]=(0,D.useState)(new Map),[R,z]=(0,D.useState)(new Set),[B,V]=(0,D.useState)(null),[H,U]=(0,D.useState)(null),W=(0,D.useCallback)((e,t=!1)=>{t||L(t=>new Map(t).set(e,`loading`)),s(`resourceList`,{channel:o,uri:e}).then(t=>L(n=>new Map(n).set(e,_(t.entries)))).catch(()=>L(t=>new Map(t).set(e,`failed`)))},[]),G=(0,D.useCallback)(e=>{for(let t of e)!R.has(t)&&!I.has(t)&&W(t);z(e)},[R,I,W]),K=F[0]?.uri;(0,D.useEffect)(()=>{K!==void 0&&!I.has(K)&&G(new Set([...R,K]))},[K]);let q=(0,D.useRef)(null);(0,D.useEffect)(()=>{if(A==null)return;e.store.set(C,null);let t=m(F.map(e=>e.uri),A),[n]=t;n!==void 0&&!F.some(e=>e.uri===n)&&P(e=>[...e,n]),G(new Set([...R,...t]));let r=t[t.length-1]??null;V(r),q.current=r},[A]);let J=(0,D.useRef)(null);(0,D.useEffect)(()=>{let e=q.current;if(e===null)return;let t=Array.from(J.current?.querySelectorAll(`[data-key]`)??[]).find(t=>t.dataset.key===e);t!==void 0&&(t.scrollIntoView({block:`center`}),q.current=null)},[I,B]),(0,D.useEffect)(()=>{for(let e of M?.uris??[])I.has(e)&&W(e,!0)},[M]);let Y=()=>{L(new Map);for(let e of R)W(e)},X=async()=>{let t=await b(e);t!==null&&!I.has(t)&&G(new Set([...R,t]))},Z=[{title:`Reload`,icon:u.reload,onSelect:e=>{e.closeMenu(),Y()}},{title:`Add folder`,icon:u.folder,onSelect:e=>{e.closeMenu(),X()}}],Q=(t,n)=>{e.commands.execute(`ahp.openFile`,{uri:t,...n===void 0?{}:{viewer:n}}),i(e,e.store.get(re)??`large`)},ae=t=>{let n=y(e,t);return[{title:`Open`,icon:u.open,onSelect:e=>{e.closeMenu(),Q(t)}},...n.length<2?[]:n.map(e=>({title:`Open with ${v(e)}`,...e.opens?.icon===void 0?{}:{icon:e.opens.icon},onSelect:n=>{n.closeMenu(),Q(t,e.component)}}))]},$=(0,D.useRef)(!1),oe=e=>{$.current=!1,e.preventDefault(),U({x:e.clientX,y:e.clientY})},se=(0,D.useMemo)(()=>{let e=(t,n,r)=>{let i=I.get(t),a=i===void 0?[]:i===`loading`?[{key:`${t}#loading`,label:`Loading`}]:i===`failed`?[{key:`${t}#failed`,label:`Not readable`}]:i.map(n=>{let r=h(t,n.name);return n.type===`directory`?e(r,n.name):{key:r,label:n.name,icon:T(r),draggable:!0,data:{uri:r,directory:!1}}});return{key:t,label:n,icon:u.folder,draggable:!0,data:{uri:t,directory:!0},children:a,...r===void 0?{}:{trailing:(0,O.jsx)(`span`,{className:`web-folders__tag`,children:r})}}};return F.map(t=>e(t.uri,ie(t.uri),t.isDefault?`default`:void 0))},[F,I]);return t?.status!==`connected`&&F.length===0?t?.status===`failed`?(0,O.jsx)(f,{tone:`danger`,title:`Not connected`,message:t.error??`The server refused the connection.`}):(0,O.jsx)(te,{label:`Connecting to the server`}):(0,O.jsxs)(`div`,{className:`web-explorer`,children:[(0,O.jsxs)(`div`,{className:`web-explorer__title`,children:[(0,O.jsx)(`span`,{children:`Explorer`}),(0,O.jsx)(`span`,{className:`web-explorer__actions`,children:(0,O.jsx)(`button`,{type:`button`,className:`web-explorer__action`,title:`Refresh`,"aria-label":`Refresh`,onClick:Y,children:(0,O.jsx)(`span`,{className:`web-explorer__icon`,children:u.reload})})})]}),(0,O.jsxs)(`div`,{className:`web-explorer__scroll`,ref:J,onContextMenuCapture:()=>{$.current=!0},onContextMenu:oe,children:[F.length===0?(0,O.jsx)(`p`,{className:`web-note web-explorer__empty`,children:`The server names no folder yet. Start a session in one.`}):null,(0,O.jsx)(p,{nodes:se,selectedKey:B,expanded:R,onExpandedChange:G,contextMenuSlot:S,contextFor:e=>({[w]:e.data===void 0?null:{uri:e.data.uri,directory:e.data.directory,added:F.some(t=>t.uri===e.key&&t.added),root:F.some(t=>t.uri===e.key)}}),contextExtraItems:e=>e.data===void 0?Z:e.data.directory?[]:ae(e.data.uri),onSelect:e=>{if($.current){$.current=!1,e.data!==void 0&&V(e.key);return}if(e.data!==void 0){if(V(e.key),e.data.directory){let t=new Set(R);t.delete(e.key)||t.add(e.key),G(t)}else Q(e.data.uri)}},onDragStart:(e,t)=>{t.data!==void 0&&E(e.dataTransfer,t.data)}})]}),H===null?null:(0,O.jsx)(d,{spec:{items:Z},x:H.x,y:H.y,onClose:()=>U(null)})]})}export{k as default};
|