@lovelybunch/api 1.0.75-alpha.3 → 1.0.75-alpha.4
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/package.json +4 -4
- package/static/assets/{ActivityPage-yYFOuzQj.js → ActivityPage-BI-4IFaP.js} +1 -1
- package/static/assets/{AgentDetailPage-DCR5YNVU.js → AgentDetailPage-eVEOya9x.js} +1 -1
- package/static/assets/{AgentEditPage-BGXjFdsw.js → AgentEditPage-Ds5XXaak.js} +1 -1
- package/static/assets/{AgentsPage-CaZmNTwQ.js → AgentsPage-CE59G63x.js} +1 -1
- package/static/assets/{AgentsSettingsPage-DA2tHcvH.js → AgentsSettingsPage-uVKYxuov.js} +1 -1
- package/static/assets/{ApiKeysSettingsPage-B6CA2v5l.js → ApiKeysSettingsPage-CTPK48rU.js} +1 -1
- package/static/assets/{ArchitectureEditPage-CEX952rR.js → ArchitectureEditPage-Cn4zVbPK.js} +1 -1
- package/static/assets/{ArchitecturePage-BxY4P_Xn.js → ArchitecturePage-CCocwST0.js} +1 -1
- package/static/assets/{AuthSettingsPage-B-42QxmU.js → AuthSettingsPage-C-nDwiO4.js} +1 -1
- package/static/assets/{CallbackPage-Xtkl5mdQ.js → CallbackPage-ZcrfbMj2.js} +1 -1
- package/static/assets/{CodePage-BNxCMq_6.js → CodePage-DuHcwCCu.js} +1 -1
- package/static/assets/{CollapsibleSection-4qw69Qp5.js → CollapsibleSection-DreaKHR1.js} +1 -1
- package/static/assets/{DashboardPage-B8O0l-he.js → DashboardPage-Da0zfmye.js} +1 -1
- package/static/assets/{GitPage-C3c2ooKQ.js → GitPage-DE0oU3cj.js} +1 -1
- package/static/assets/{GitSettingsPage-BADM0xMN.js → GitSettingsPage-DndQUnzg.js} +1 -1
- package/static/assets/{IdentityPage-DHUEAJq9.js → IdentityPage-DD-9upeG.js} +1 -1
- package/static/assets/{ImplementationStepsEditor-IxfIwOlC.js → ImplementationStepsEditor-C3vh3Hc0.js} +1 -1
- package/static/assets/{IntegrationsSettingsPage-7iQ0M2_s.js → IntegrationsSettingsPage-B4J4wDXt.js} +1 -1
- package/static/assets/{JobDetailPage-B48lZ009.js → JobDetailPage-tHRLIpQI.js} +1 -1
- package/static/assets/{KnowledgeDetailPage-B-6aGk_w.js → KnowledgeDetailPage-Dh315TpW.js} +1 -1
- package/static/assets/{KnowledgeEditPage-yo3WtN52.js → KnowledgeEditPage-B5bNMMvh.js} +1 -1
- package/static/assets/{KnowledgePage-ChbES9g4.js → KnowledgePage-cOsVzN4A.js} +1 -1
- package/static/assets/{LoginPage-BVoYZHnb.js → LoginPage-CvVZ8le4.js} +1 -1
- package/static/assets/{McpSettingsPage-_Zh_Qyb6.js → McpSettingsPage-_q1tdgv0.js} +1 -1
- package/static/assets/{NewAgentPage-arnp7pqe.js → NewAgentPage-DIzdUSPb.js} +1 -1
- package/static/assets/{NewKnowledgePage-9I1FJEeC.js → NewKnowledgePage-weR174CB.js} +1 -1
- package/static/assets/{NewProposalPage-Cz9LB9L4.js → NewProposalPage-h91-EksD.js} +1 -1
- package/static/assets/{ProjectEditPage-Dz7yAjOv.js → ProjectEditPage-CcwGPvlc.js} +1 -1
- package/static/assets/{ProjectPage-D9qnpm4P.js → ProjectPage-D9APD9HG.js} +1 -1
- package/static/assets/{PromptsSettingsPage-CAlhDjm4.js → PromptsSettingsPage-BTOf3Xzc.js} +1 -1
- package/static/assets/{ProposalDetailPage-DLOy1zqo.js → ProposalDetailPage-DbUTHokj.js} +1 -1
- package/static/assets/{ProposalEditPage-C_2kX6mc.js → ProposalEditPage-97pQXtDD.js} +1 -1
- package/static/assets/{ProposalsPage-DA-bHZ41.js → ProposalsPage-ekrWnqoo.js} +1 -1
- package/static/assets/{ResourcesPage-BnbcdKlh.js → ResourcesPage-90Wdfshd.js} +1 -1
- package/static/assets/{RoleEditPage-CzUKSXGz.js → RoleEditPage-DY75XHIO.js} +1 -1
- package/static/assets/{RolePage-DCeSbr3Q.js → RolePage-CXas69QY.js} +1 -1
- package/static/assets/{RulesSettingsPage-DC4WUqQG.js → RulesSettingsPage-p6AjPCI0.js} +1 -1
- package/static/assets/{SchedulePage-C0TCr4ln.js → SchedulePage-C-Yevtfw.js} +1 -1
- package/static/assets/{SourceInput-DSQiXByy.js → SourceInput-CLzuDG61.js} +1 -1
- package/static/assets/{TagInput-CTRVtznt.js → TagInput-Dfue2spU.js} +1 -1
- package/static/assets/{TerminalPage-NA90GXv6.js → TerminalPage-BbA46X-G.js} +1 -1
- package/static/assets/{TerminalSessionPage-lYji3uKH.js → TerminalSessionPage-FueIeaIL.js} +1 -1
- package/static/assets/{UserPreferencesPage-ZDNBaYV_.js → UserPreferencesPage-C9yXdIdZ.js} +1 -1
- package/static/assets/{UserSettingsPage-S5Cp3lAu.js → UserSettingsPage-ba7UUKyG.js} +1 -1
- package/static/assets/{UtilitiesPage-DHQMIUAT.js → UtilitiesPage-5Zot5Svs.js} +1 -1
- package/static/assets/{alert-DrBQkmi_.js → alert-BhJUdRgG.js} +1 -1
- package/static/assets/{arrow-down--USTBjYI.js → arrow-down-BYk0k85B.js} +1 -1
- package/static/assets/{arrow-left-FN8jcXkb.js → arrow-left-TQT21N4S.js} +1 -1
- package/static/assets/{arrow-up-CiCJRdGW.js → arrow-up-BkSi1XTr.js} +1 -1
- package/static/assets/{badge-DRh3rRQu.js → badge-DS8SPg0q.js} +1 -1
- package/static/assets/{browser-modal-qHl2PIdG.js → browser-modal-CgvW-bbQ.js} +1 -1
- package/static/assets/{calendar-CaJejXR8.js → calendar-AzmVUvxT.js} +1 -1
- package/static/assets/{card-D76uvpWc.js → card-C4vq6AMz.js} +1 -1
- package/static/assets/{chevron-left-xuZFss_E.js → chevron-left-CeRwwCqx.js} +1 -1
- package/static/assets/{chevrons-up-D7jd_Ktr.js → chevrons-up-BdEukQhU.js} +1 -1
- package/static/assets/{circle-alert-TRE_RDZ5.js → circle-alert-C1JRie1k.js} +1 -1
- package/static/assets/{circle-check-DDmlur4r.js → circle-check-DxiLNIIS.js} +1 -1
- package/static/assets/{circle-check-big-DcB3o-ep.js → circle-check-big-CQBGgL4s.js} +1 -1
- package/static/assets/{circle-play-DymCP_-b.js → circle-play-qq_sLPT0.js} +1 -1
- package/static/assets/{circle-x-DWYSgfOn.js → circle-x-kpttvnBF.js} +1 -1
- package/static/assets/{clipboard-CSidJDm8.js → clipboard-CBBHo2mi.js} +1 -1
- package/static/assets/{clock-Djvcm6zD.js → clock-Ck6whvmg.js} +1 -1
- package/static/assets/{download-COUif_Db.js → download-Cx4OcU33.js} +1 -1
- package/static/assets/droid-BWtMgfPD.js +17 -0
- package/static/assets/{eye-dXmhy-Xz.js → eye-2CnfcAd3.js} +1 -1
- package/static/assets/{folder-git-2-DIe6Wu6M.js → folder-git-2-CvwpDtwI.js} +1 -1
- package/static/assets/{index-BxthLB0X.js → index-Df8kpDhM.js} +3 -3
- package/static/assets/{info-CR0AZ8de.js → info-BO6_vv66.js} +1 -1
- package/static/assets/{label-DfOp08y2.js → label-B-1O5hdX.js} +1 -1
- package/static/assets/{markdown-editor-BF59F19G.js → markdown-editor-H-rT6Hat.js} +1 -1
- package/static/assets/{pause-BBJMyVwt.js → pause-CW39bpDf.js} +1 -1
- package/static/assets/{play-BgcqwqoN.js → play-Bqd-yHZN.js} +1 -1
- package/static/assets/{plus-BGVZ9Q6B.js → plus-BWhZkuI2.js} +1 -1
- package/static/assets/{radio-group-CwrrMGEK.js → radio-group-CHbb2Tdt.js} +1 -1
- package/static/assets/{refresh-cw-LsRR5OFh.js → refresh-cw-CaOTs34G.js} +1 -1
- package/static/assets/{search-BXJIrj0s.js → search-D2duvyuf.js} +1 -1
- package/static/assets/{switch-C2fktd0p.js → switch-BRsOxt7T.js} +1 -1
- package/static/assets/{tabs-D285Glmh.js → tabs--rTULKlo.js} +1 -1
- package/static/assets/{tag-p9Me66vI.js → tag-BQ5pJD32.js} +1 -1
- package/static/assets/{terminal-preview-B-ZNhh2N.js → terminal-preview-ewZC6O1I.js} +1 -1
- package/static/assets/{use-terminal-CPGjZeDg.js → use-terminal-Cya6EYny.js} +1 -1
- package/static/assets/{zap-DJOf5Vvp.js → zap-DQNov92q.js} +1 -1
- package/static/index.html +1 -1
- package/static/assets/droid-Cef-tD7d.js +0 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as n,ba as E,au as K,ao as T,j as a,ap as N,bb as U,as as y,at as g,bc as V,ar as w,bd as z,ax as H,aw as $,e as I,be as W}from"./index-
|
|
1
|
+
import{r as n,ba as E,au as K,ao as T,j as a,ap as N,bb as U,as as y,at as g,bc as V,ar as w,bd as z,ax as H,aw as $,e as I,be as W}from"./index-Df8kpDhM.js";var C="Radio",[X,_]=N(C),[Y,J]=X(C),j=n.forwardRef((r,t)=>{const{__scopeRadio:e,name:d,checked:o=!1,required:s,disabled:i,value:p="on",onCheck:f,form:R,...v}=r,[l,m]=n.useState(null),c=g(t,x=>m(x)),u=n.useRef(!1),b=l?R||!!l.closest("form"):!0;return a.jsxs(Y,{scope:e,checked:o,disabled:i,children:[a.jsx(y.button,{type:"button",role:"radio","aria-checked":o,"data-state":S(o),"data-disabled":i?"":void 0,disabled:i,value:p,...v,ref:c,onClick:w(r.onClick,x=>{o||f?.(),b&&(u.current=x.isPropagationStopped(),u.current||x.stopPropagation())})}),b&&a.jsx(P,{control:l,bubbles:!u.current,name:d,value:p,checked:o,required:s,disabled:i,form:R,style:{transform:"translateX(-100%)"}})]})});j.displayName=C;var k="RadioIndicator",G=n.forwardRef((r,t)=>{const{__scopeRadio:e,forceMount:d,...o}=r,s=J(k,e);return a.jsx(z,{present:d||s.checked,children:a.jsx(y.span,{"data-state":S(s.checked),"data-disabled":s.disabled?"":void 0,...o,ref:t})})});G.displayName=k;var Q="RadioBubbleInput",P=n.forwardRef(({__scopeRadio:r,control:t,checked:e,bubbles:d=!0,...o},s)=>{const i=n.useRef(null),p=g(i,s),f=H(e),R=$(t);return n.useEffect(()=>{const v=i.current;if(!v)return;const l=window.HTMLInputElement.prototype,c=Object.getOwnPropertyDescriptor(l,"checked").set;if(f!==e&&c){const u=new Event("click",{bubbles:d});c.call(v,e),v.dispatchEvent(u)}},[f,e,d]),a.jsx(y.input,{type:"radio","aria-hidden":!0,defaultChecked:e,...o,tabIndex:-1,ref:p,style:{...o.style,...R,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});P.displayName=Q;function S(r){return r?"checked":"unchecked"}var Z=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],h="RadioGroup",[ee,de]=N(h,[E,_]),A=E(),D=_(),[oe,re]=ee(h),M=n.forwardRef((r,t)=>{const{__scopeRadioGroup:e,name:d,defaultValue:o,value:s,required:i=!1,disabled:p=!1,orientation:f,dir:R,loop:v=!0,onValueChange:l,...m}=r,c=A(e),u=K(R),[b,x]=T({prop:s,defaultProp:o??null,onChange:l,caller:h});return a.jsx(oe,{scope:e,name:d,required:i,disabled:p,value:b,onValueChange:x,children:a.jsx(U,{asChild:!0,...c,orientation:f,dir:u,loop:v,children:a.jsx(y.div,{role:"radiogroup","aria-required":i,"aria-orientation":f,"data-disabled":p?"":void 0,dir:u,...m,ref:t})})})});M.displayName=h;var O="RadioGroupItem",F=n.forwardRef((r,t)=>{const{__scopeRadioGroup:e,disabled:d,...o}=r,s=re(O,e),i=s.disabled||d,p=A(e),f=D(e),R=n.useRef(null),v=g(t,R),l=s.value===o.value,m=n.useRef(!1);return n.useEffect(()=>{const c=b=>{Z.includes(b.key)&&(m.current=!0)},u=()=>m.current=!1;return document.addEventListener("keydown",c),document.addEventListener("keyup",u),()=>{document.removeEventListener("keydown",c),document.removeEventListener("keyup",u)}},[]),a.jsx(V,{asChild:!0,...p,focusable:!i,active:l,children:a.jsx(j,{disabled:i,required:s.required,checked:l,...f,...o,name:s.name,ref:v,onCheck:()=>s.onValueChange(o.value),onKeyDown:w(c=>{c.key==="Enter"&&c.preventDefault()}),onFocus:w(o.onFocus,()=>{m.current&&R.current?.click()})})})});F.displayName=O;var ae="RadioGroupIndicator",L=n.forwardRef((r,t)=>{const{__scopeRadioGroup:e,...d}=r,o=D(e);return a.jsx(G,{...o,...d,ref:t})});L.displayName=ae;var q=M,B=F,te=L;const se=n.forwardRef(({className:r,...t},e)=>a.jsx(q,{className:I("grid gap-2",r),...t,ref:e}));se.displayName=q.displayName;const ne=n.forwardRef(({className:r,...t},e)=>a.jsx(B,{ref:e,className:I("aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",r),...t,children:a.jsx(te,{className:"flex items-center justify-center",children:a.jsx(W,{className:"h-2.5 w-2.5 fill-current text-current"})})}));ne.displayName=B.displayName;export{se as R,ne as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as c,j as e,e as i}from"./index-
|
|
1
|
+
import{r as c,j as e,e as i}from"./index-Df8kpDhM.js";const d=c.forwardRef(({className:s,onCheckedChange:r,onChange:t,...o},n)=>{const l=a=>{t?.(a),r?.(a.target.checked)};return e.jsxs("label",{className:i("relative inline-flex cursor-pointer",s),children:[e.jsx("input",{type:"checkbox",className:"sr-only peer",onChange:l,ref:n,...o}),e.jsx("div",{className:"block bg-gray-300 w-9 h-5 rounded-full transition-colors duration-200 ease-in-out peer-checked:bg-blue-600"}),e.jsx("div",{className:"absolute left-0 top-0 bg-white w-4 h-4 rounded-full mt-0.5 ml-0.5 transition-transform duration-200 ease-in-out transform peer-checked:translate-x-4 shadow"})]})});d.displayName="Switch";export{d as S};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as l,au as F,ao as $,j as c,ap as D,b9 as V,as as g,ba as y,bb as k,bc as G,ar as m,bd as L,e as T}from"./index-
|
|
1
|
+
import{r as l,au as F,ao as $,j as c,ap as D,b9 as V,as as g,ba as y,bb as k,bc as G,ar as m,bd as L,e as T}from"./index-Df8kpDhM.js";var p="Tabs",[K,Q]=D(p,[y]),h=y(),[B,x]=K(p),N=l.forwardRef((e,a)=>{const{__scopeTabs:t,value:o,onValueChange:r,defaultValue:d,orientation:n="horizontal",dir:u,activationMode:f="automatic",...v}=e,i=F(u),[s,b]=$({prop:o,onChange:r,defaultProp:d??"",caller:p});return c.jsx(B,{scope:t,baseId:V(),value:s,onValueChange:b,orientation:n,dir:i,activationMode:f,children:c.jsx(g.div,{dir:i,"data-orientation":n,...v,ref:a})})});N.displayName=p;var C="TabsList",I=l.forwardRef((e,a)=>{const{__scopeTabs:t,loop:o=!0,...r}=e,d=x(C,t),n=h(t);return c.jsx(k,{asChild:!0,...n,orientation:d.orientation,dir:d.dir,loop:o,children:c.jsx(g.div,{role:"tablist","aria-orientation":d.orientation,...r,ref:a})})});I.displayName=C;var R="TabsTrigger",j=l.forwardRef((e,a)=>{const{__scopeTabs:t,value:o,disabled:r=!1,...d}=e,n=x(R,t),u=h(t),f=A(n.baseId,o),v=E(n.baseId,o),i=o===n.value;return c.jsx(G,{asChild:!0,...u,focusable:!r,active:i,children:c.jsx(g.button,{type:"button",role:"tab","aria-selected":i,"aria-controls":v,"data-state":i?"active":"inactive","data-disabled":r?"":void 0,disabled:r,id:f,...d,ref:a,onMouseDown:m(e.onMouseDown,s=>{!r&&s.button===0&&s.ctrlKey===!1?n.onValueChange(o):s.preventDefault()}),onKeyDown:m(e.onKeyDown,s=>{[" ","Enter"].includes(s.key)&&n.onValueChange(o)}),onFocus:m(e.onFocus,()=>{const s=n.activationMode!=="manual";!i&&!r&&s&&n.onValueChange(o)})})})});j.displayName=R;var w="TabsContent",_=l.forwardRef((e,a)=>{const{__scopeTabs:t,value:o,forceMount:r,children:d,...n}=e,u=x(w,t),f=A(u.baseId,o),v=E(u.baseId,o),i=o===u.value,s=l.useRef(i);return l.useEffect(()=>{const b=requestAnimationFrame(()=>s.current=!1);return()=>cancelAnimationFrame(b)},[]),c.jsx(L,{present:r||i,children:({present:b})=>c.jsx(g.div,{"data-state":i?"active":"inactive","data-orientation":u.orientation,role:"tabpanel","aria-labelledby":f,hidden:!b,id:v,tabIndex:0,...n,ref:a,style:{...e.style,animationDuration:s.current?"0s":void 0},children:b&&d})})});_.displayName=w;function A(e,a){return`${e}-trigger-${a}`}function E(e,a){return`${e}-content-${a}`}var q=N,S=I,M=j,P=_;const U=q,z=l.forwardRef(({className:e,...a},t)=>c.jsx(S,{ref:t,className:T("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",e),...a}));z.displayName=S.displayName;const H=l.forwardRef(({className:e,...a},t)=>c.jsx(M,{ref:t,className:T("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",e),...a}));H.displayName=M.displayName;const O=l.forwardRef(({className:e,...a},t)=>c.jsx(P,{ref:t,className:T("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",e),...a}));O.displayName=P.displayName;export{U as T,z as a,H as b,O as c};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as t,ag as j,j as u}from"./index-
|
|
1
|
+
import{r as t,ag as j,j as u}from"./index-Df8kpDhM.js";import{x as k,a as B}from"./xterm-DTxiCjtJ.js";function A({sessionId:l,className:p,heightPx:d=160,maxScrollback:m=200}){const h=t.useRef(null),v=t.useRef(null),w=t.useRef(null),y=t.useRef(null),[x,R]=t.useState(!0),o=t.useRef([]),i=t.useRef(null);return t.useEffect(()=>{const a=h.current;if(!a||!l)return;const e=new k.Terminal({disableStdin:!0,cursorBlink:!1,convertEol:!0,scrollback:Math.max(50,Math.min(m,1e3)),fontSize:12,fontFamily:"'IBM Plex Mono', 'Source Code Pro', 'Fira Code', ui-monospace, Menlo, Monaco, monospace",lineHeight:1.25,letterSpacing:.3,theme:{background:"#1a1b26",foreground:"#c0caf5",cursor:"#c0caf5",selectionBackground:"#33467c",black:"#15161e",red:"#f7768e",green:"#9ece6a",yellow:"#e0af68",blue:"#7aa2f7",magenta:"#bb9af7",cyan:"#7dcfff",white:"#a9b1d6",brightBlack:"#414868",brightRed:"#f7768e",brightGreen:"#9ece6a",brightYellow:"#e0af68",brightBlue:"#7aa2f7",brightMagenta:"#bb9af7",brightCyan:"#7dcfff",brightWhite:"#c0caf5"}}),f=new B.FitAddon;e.loadAddon(f),e.open(a),a.style.height=`${d}px`,v.current=e,w.current=f;const s=()=>{try{const n=a.getBoundingClientRect();n.width>8&&n.height>8&&e.element&&f.fit()}catch{}},S=setTimeout(()=>s(),100),g=new ResizeObserver(()=>s());g.observe(a);const b=()=>{document.visibilityState==="visible"&&setTimeout(s,50)};document.addEventListener("visibilitychange",b);const c=new WebSocket(`${j}/ws/terminal-preview/${l}`);y.current=c,c.onopen=()=>R(!1);const E=()=>{i.current=null;const n=o.current;if(n.length){o.current=[];try{e.write(n.join(""))}catch{}}},F=()=>{i.current===null&&(i.current=requestAnimationFrame(E))};return c.onmessage=n=>{let r;try{r=JSON.parse(n.data)}catch{return}if(r?.type==="snapshot"){if(e.reset(),o.current=[],r.data)try{e.write(r.data)}catch{}s()}else r?.type==="data"&&r.data&&(o.current.push(String(r.data)),F())},c.onclose=()=>{},c.onerror=()=>{},()=>{clearTimeout(S),g.disconnect(),document.removeEventListener("visibilitychange",b);try{c.close()}catch{}i.current!==null&&cancelAnimationFrame(i.current),i.current=null,o.current=[],e.dispose()}},[l,d,m]),u.jsxs("div",{className:`relative w-full ${p||""}`.trim(),children:[x&&u.jsx("div",{className:"absolute inset-0 flex items-center justify-center bg-gray-50/60 z-10",children:u.jsx("div",{className:"text-xs text-muted-foreground",children:"Loading preview…"})}),u.jsx("div",{ref:h,className:"border border-muted rounded overflow-hidden"})]})}export{A as T};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as i,al as b,A as f}from"./index-
|
|
1
|
+
import{r as i,al as b,A as f}from"./index-Df8kpDhM.js";function j(){const[y,u]=i.useState([]),[m,c]=i.useState(!1),[g,o]=i.useState(null),{refresh:p}=b(),d=i.useCallback(async(s,n,r)=>{try{c(!0),o(null);const e=await fetch(`${f}/api/v1/terminal/${s}/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({enableLogging:n||!1,startupCommand:r})});if(!e.ok){const a=await e.json();throw new Error(a.error||"Failed to create terminal session")}const t=await e.json();return await p(),t.sessionId}catch(e){const t=e instanceof Error?e.message:"Unknown error";return o(t),null}finally{c(!1)}},[p]),S=i.useCallback(async s=>{try{c(!0),o(null);let n;if(s.startsWith("session-")){const e=s.split("-");n=`${e[0]}-${e[1]}`}else{const e=s.split("-");n=`${e[0]}-${e[1]}`}const r=await fetch(`${f}/api/v1/terminal/${n}/destroy`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:s})});if(!r.ok){const e=await r.json();throw new Error(e.error||"Failed to destroy terminal session")}return u(e=>e.filter(t=>t.id!==s)),await p(),!0}catch(n){const r=n instanceof Error?n.message:"Unknown error";return o(r),!1}finally{c(!1)}},[p]),$=i.useCallback(async(s,n,r)=>{try{o(null);let e;if(s.startsWith("session-")){const a=s.split("-");e=`${a[0]}-${a[1]}`}else{const a=s.split("-");e=`${a[0]}-${a[1]}`}const t=await fetch(`${f}/api/v1/terminal/${e}/resize`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:s,cols:n,rows:r})});if(!t.ok){const a=await t.json();throw new Error(a.error||"Failed to resize terminal session")}return!0}catch(e){const t=e instanceof Error?e.message:"Unknown error";return o(t),!1}},[]),k=i.useCallback(async(s,n,r)=>{try{c(!0),o(null);const e=new URLSearchParams;s&&e.set("proposalId",s),n&&(e.set("withPreview","true"),r&&Number.isFinite(r)&&e.set("lines",String(r)));const t=`${f}/api/v1/terminal/sessions${e.toString()?`?${e.toString()}`:""}`,a=await fetch(t);if(!a.ok){const l=await a.json();throw new Error(l.error||"Failed to fetch terminal sessions")}const w=await a.json();u(w.sessions)}catch(e){const t=e instanceof Error?e.message:"Unknown error";o(t)}finally{c(!1)}},[]),E=i.useCallback(async(s,n=8)=>{try{o(null);const r=new URLSearchParams;r.set("sessionId",s),r.set("withPreview","true"),r.set("lines",String(n)),r.set("colorize","true");const e=`${f}/api/v1/terminal/sessions?${r.toString()}`,t=await fetch(e);if(!t.ok){const l=await t.json().catch(()=>({}));throw new Error(l.error||"Failed to fetch preview")}const a=await t.json(),w=Array.isArray(a?.sessions)&&a.sessions[0]?.preview?a.sessions[0].preview:[];return u(l=>l.map(h=>h.id===s?{...h,preview:w}:h)),w}catch(r){const e=r instanceof Error?r.message:"Unknown error";return o(e),[]}},[]);return{sessions:y,loading:m,error:g,createSession:d,destroySession:S,resizeSession:$,refreshSessions:k,fetchPreview:E}}export{j as u};
|
package/static/index.html
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
9
9
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap" rel="stylesheet">
|
|
10
10
|
<title>Coconut - Agentic Development Environment</title>
|
|
11
|
-
<script type="module" crossorigin src="/assets/index-
|
|
11
|
+
<script type="module" crossorigin src="/assets/index-Df8kpDhM.js"></script>
|
|
12
12
|
<link rel="stylesheet" crossorigin href="/assets/index-C8_b70Ej.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body class="font-inter">
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
const m="Use .nut/context/project.md and .nut/context/architecture.md for reference.";function p(t,e,s,n=!0){const o=[];return n&&(o.push(["## Task","","- Review and begin working on the following task proposal:",` .nut/proposals/${t}.md`,"- Retrieve your firstName, lastName, and email address from: .nut/config.json and use this identity to address yourself in any task updates, comments, git commits, etc."].join(`
|
|
2
|
-
`)),o.push(["## Task Lifecycle","",`- Before beginning any work: nut task update ${t} --status active`,`- Add appropriate steps with: nut task step ${t} "Step description" --author "firstName lastName"`,"",`- If you need human clarification or input: nut task update ${t} --status blocked. The clarification can be communicated as follows: nut task comment ${t} "Comments here" --author "firstName lastName". At this point please stop work.`,"",`- When implementation is complete and ready for approval: nut task update ${t} --status review`,`- Only mark the task complete once approval criteria are satisfied: nut task update ${t} --status done`].join(`
|
|
3
|
-
`)),o.push(["## Operational Rules","","- DO use the nut CLI to update task status as progress changes"," (nut --help or nut task --help for details)","- DO NOT edit files outside the scope of the approved proposal (unless instructed by the Additional Instructions below)"].join(`
|
|
4
|
-
`))),e.length>0&&o.push(["## Agents","","These agents are available to you if needed:",...e.map(i=>`- ${i}`)].join(`
|
|
5
|
-
`)),s&&s.trim()&&o.push(["## Additional Instructions","","DO strictly adhere to these additional instructions:",s.trim()].join(`
|
|
6
|
-
`)),[o.join(`
|
|
7
|
-
|
|
8
|
-
`)]}function u(t,e,s){const n=[];return n.push(["## Task","",`- Review and assess the following task (include provided comments from the user and act on these accordingly) to ensure you have enough information, context, and resources (skills, MCP tools, appropriate access, etc) to successfully complete it, although DO NOT start any work at this stage: .nut/proposals/${t}.md`,"- Generate a readiness score on a scale of 1-100 (where 1 is not ready at all and 100 is complete certainty on your ability to complete this task without ANY additional user interaction) and add this as a comment (details on how to do this below).","- Be sure to suggest to the user (again via a comment) if it would make sense to decompose this into separate tasks, although DO NOT do this without user confirmation first.","- Retrieve your firstName, lastName, and email address from: .nut/config.json and use this identity to address yourself in any task updates, comments, git commits, etc."].join(`
|
|
9
|
-
`)),n.push(["## Task Lifecycle","",`- Before beginning any work: nut task update ${t} --status active`,`- Add appropriate implementation steps with: nut task step ${t} "Step description" --author "firstName lastName"`,`- If you need human clarification or input: nut task update ${t} --status blocked. The clarification can be communicated as follows: nut task comment ${t} "Comments here" --author "firstName lastName". At this point please stop work.`].join(`
|
|
10
|
-
`)),n.push(["## Operational Rules","","- DO NOT use 'npx' when running the nut CLI","- DO use the nut CLI to update task status as progress changes"," (nut --help or nut task --help for details)","- DO NOT edit files outside the scope of the approved proposal (unless instructed by the Additional Instructions below)"].join(`
|
|
11
|
-
`)),e.length>0&&n.push(["## Skills","","These skills are available to you if needed (if you are able to test access, etc without any writes please do so):",...e.map(o=>`- ${o}`)].join(`
|
|
12
|
-
`)),s&&s.trim()&&n.push(["## Additional Instructions","","DO strictly adhere to these additional instructions:",s.trim()].join(`
|
|
13
|
-
`)),[n.join(`
|
|
14
|
-
|
|
15
|
-
`)]}function l(t,e){const s=[];return s.push(m),t.length>0&&s.push(`Please use these skills: ${t.join(", ")}`),e&&e.trim()&&s.push(`Additional instruction: ${e.trim()}`),s}const h=t=>{const e=t.selectedAgentIds.map(d=>`.nut/agents/${d}`),n=(t.contextType==="change-proposal"?p(t.proposalId,e,t.customInstruction,t.includeDefaultInstructions??!0):t.contextType==="prepare-proposal"?u(t.proposalId,e,t.customInstruction):l(e,t.customInstruction)).join(" "),o=[t.automationEnabled?"--dangerously-skip-permissions":""].filter(Boolean).join(" "),i=t.selectedMcpServers.map(d=>`'${d.replace(/'/g,"'\\''")}'`).join(","),c=[JSON.stringify(n)].concat(o?[JSON.stringify("--dangerously-skip-permissions")]:[]);return`node -e "${`const fs=require('fs'),{spawn}=require('child_process');const s=new Set([${i}]);const c=require('./.nut/mcp/config.json');const filtered=Object.entries(c.mcpServers||{}).filter(([k])=>s.has(k)).map(([k,v])=>[k,{...v,type:v.type||(v.url?'http':'stdio')}]);const o={mcpServers:Object.fromEntries(filtered)};fs.writeFileSync('.mcp.json',JSON.stringify(o,null,2));const p=spawn('claude',[${c.join(",")}],{stdio:'inherit'});p.on('exit',code=>process.exit(code));`.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`},f=t=>{const e=t.selectedAgentIds.map(r=>`.nut/agents/${r}`),n=(t.contextType==="change-proposal"?p(t.proposalId,e,t.customInstruction,t.includeDefaultInstructions??!0):t.contextType==="prepare-proposal"?u(t.proposalId,e,t.customInstruction):l(e,t.customInstruction)).join(" ");return`node -e "${`const fs=require('fs'),path=require('path'),{spawn}=require('child_process');const s=new Set([${t.selectedMcpServers.map(r=>`'${r.replace(/'/g,"'\\''")}'`).join(",")}]);const c=require('./.nut/mcp/config.json');const geminiPath=path.join(require('os').homedir(),'.gemini','settings.json');let settings={};try{settings=JSON.parse(fs.readFileSync(geminiPath,'utf8'))}catch(e){}settings.mcpServers=Object.fromEntries(Object.entries(c.mcpServers||{}).filter(([k])=>s.has(k)));fs.writeFileSync(geminiPath,JSON.stringify(settings,null,2));const p=spawn('gemini',['-i',${JSON.stringify(n)}],{stdio:'inherit'});p.on('exit',code=>process.exit(code));`.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`},y=t=>{const e=t.selectedAgentIds.map(a=>`.nut/agents/${a}`),n=(t.contextType==="change-proposal"?p(t.proposalId,e,t.customInstruction,t.includeDefaultInstructions??!0):t.contextType==="prepare-proposal"?u(t.proposalId,e,t.customInstruction):l(e,t.customInstruction)).join(" "),o=t.selectedMcpServers.map(a=>`'${a.replace(/'/g,"'\\''")}'`).join(","),i=[JSON.stringify(n)].concat(t.automationEnabled?[JSON.stringify("--dangerously-bypass-approvals-and-sandbox")]:[]);return`node -e "${`const fs=require('fs'),{spawn}=require('child_process');const s=new Set([${o}]);const c=require('./.nut/mcp/config.json');const filtered=Object.entries(c.mcpServers||{}).filter(([k])=>s.has(k)).map(([k,v])=>[k,{...v,type:v.type||(v.url?'http':'stdio')}]);const o={mcpServers:Object.fromEntries(filtered)};fs.writeFileSync('.mcp.json',JSON.stringify(o,null,2));const p=spawn('codex',[${i.join(",")}],{stdio:'inherit'});p.on('exit',code=>process.exit(code));`.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`},k=t=>{const e=t.selectedAgentIds.map(a=>`.nut/agents/${a}`),n=(t.contextType==="change-proposal"?p(t.proposalId,e,t.customInstruction,t.includeDefaultInstructions??!0):t.contextType==="prepare-proposal"?u(t.proposalId,e,t.customInstruction):l(e,t.customInstruction)).join(" "),o=t.selectedMcpServers.map(a=>`'${a.replace(/'/g,"'\\''")}'`).join(","),i=[JSON.stringify(n)];return`node -e "${`const fs=require('fs'),{spawn}=require('child_process');const s=new Set([${o}]);const c=require('./.nut/mcp/config.json');const filtered=Object.entries(c.mcpServers||{}).filter(([k])=>s.has(k)).map(([k,v])=>[k,{...v,type:v.type||(v.url?'http':'stdio')}]);const o={mcpServers:Object.fromEntries(filtered)};fs.writeFileSync('.mcp.json',JSON.stringify(o,null,2));const p=spawn('droid',[${i.join(",")}],{stdio:'inherit'});p.on('exit',code=>process.exit(code));`.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`};export{k as a,h as b,y as c,f as d};
|