@openduo/duoduo 0.4.2 → 0.4.3

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.
@@ -212,7 +212,7 @@ Read about how to prevent this error on https://github.com/vadimdemedes/ink/#isr
212
212
  Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(s.setEncoding("utf8"),n){this.rawModeEnabledCount===0&&(s.ref(),s.setRawMode(!0),s.addListener("readable",this.handleReadable)),this.rawModeEnabledCount++;return}--this.rawModeEnabledCount===0&&(s.setRawMode(!1),s.removeListener("readable",this.handleReadable),s.unref())}}),Object.defineProperty(this,"handleReadable",{enumerable:!0,configurable:!0,writable:!0,value:()=>{let n;for(;(n=this.props.stdin.read())!==null;)this.handleInput(n),this.internal_eventEmitter.emit("input",n)}}),Object.defineProperty(this,"handleInput",{enumerable:!0,configurable:!0,writable:!0,value:n=>{n===""&&this.props.exitOnCtrlC&&this.handleExit(),n===$L&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(n===JL&&this.focusNext(),n===ZL&&this.focusPrevious())}}),Object.defineProperty(this,"handleExit",{enumerable:!0,configurable:!0,writable:!0,value:n=>{this.isRawModeSupported()&&this.handleSetRawMode(!1),this.props.onExit(n)}}),Object.defineProperty(this,"enableFocus",{enumerable:!0,configurable:!0,writable:!0,value:()=>{this.setState({isFocusEnabled:!0})}}),Object.defineProperty(this,"disableFocus",{enumerable:!0,configurable:!0,writable:!0,value:()=>{this.setState({isFocusEnabled:!1})}}),Object.defineProperty(this,"focus",{enumerable:!0,configurable:!0,writable:!0,value:n=>{this.setState(s=>s.focusables.some(d=>d?.id===n)?{activeFocusId:n}:s)}}),Object.defineProperty(this,"focusNext",{enumerable:!0,configurable:!0,writable:!0,value:()=>{this.setState(n=>{let s=n.focusables[0]?.id;return{activeFocusId:this.findNextFocusable(n)??s}})}}),Object.defineProperty(this,"focusPrevious",{enumerable:!0,configurable:!0,writable:!0,value:()=>{this.setState(n=>{let s=n.focusables[n.focusables.length-1]?.id;return{activeFocusId:this.findPreviousFocusable(n)??s}})}}),Object.defineProperty(this,"addFocusable",{enumerable:!0,configurable:!0,writable:!0,value:(n,{autoFocus:s})=>{this.setState(o=>{let d=o.activeFocusId;return!d&&s&&(d=n),{activeFocusId:d,focusables:[...o.focusables,{id:n,isActive:!0}]}})}}),Object.defineProperty(this,"removeFocusable",{enumerable:!0,configurable:!0,writable:!0,value:n=>{this.setState(s=>({activeFocusId:s.activeFocusId===n?void 0:s.activeFocusId,focusables:s.focusables.filter(o=>o.id!==n)}))}}),Object.defineProperty(this,"activateFocusable",{enumerable:!0,configurable:!0,writable:!0,value:n=>{this.setState(s=>({focusables:s.focusables.map(o=>o.id!==n?o:{id:n,isActive:!0})}))}}),Object.defineProperty(this,"deactivateFocusable",{enumerable:!0,configurable:!0,writable:!0,value:n=>{this.setState(s=>({activeFocusId:s.activeFocusId===n?void 0:s.activeFocusId,focusables:s.focusables.map(o=>o.id!==n?o:{id:n,isActive:!1})}))}}),Object.defineProperty(this,"findNextFocusable",{enumerable:!0,configurable:!0,writable:!0,value:n=>{let s=n.focusables.findIndex(o=>o.id===n.activeFocusId);for(let o=s+1;o<n.focusables.length;o++){let d=n.focusables[o];if(d?.isActive)return d.id}}}),Object.defineProperty(this,"findPreviousFocusable",{enumerable:!0,configurable:!0,writable:!0,value:n=>{let s=n.focusables.findIndex(o=>o.id===n.activeFocusId);for(let o=s-1;o>=0;o--){let d=n.focusables[o];if(d?.isActive)return d.id}}})}static getDerivedStateFromError(n){return{error:n}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return Io.default.createElement(Wm.Provider,{value:{exit:this.handleExit}},Io.default.createElement(Ym.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC,internal_eventEmitter:this.internal_eventEmitter}},Io.default.createElement(ag.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},Io.default.createElement(ug.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},Io.default.createElement(qm.Provider,{value:{activeId:this.state.activeFocusId,add:this.addFocusable,remove:this.removeFocusable,activate:this.activateFocusable,deactivate:this.deactivateFocusable,enableFocus:this.enableFocus,disableFocus:this.disableFocus,focusNext:this.focusNext,focusPrevious:this.focusPrevious,focus:this.focus}},this.state.error?Io.default.createElement(cg,{error:this.state.error}):this.props.children)))))}componentDidMount(){uf.hide(this.props.stdout)}componentWillUnmount(){uf.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(n){this.handleExit(n)}};Object.defineProperty(sf,"displayName",{enumerable:!0,configurable:!0,writable:!0,value:"InternalApp"});var lf=YT.env.CI==="false"?!1:QT.default,WT=()=>{},fp=class{constructor(n){Object.defineProperty(this,"options",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"log",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"throttledLog",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"isUnmounted",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"lastOutput",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"container",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"rootNode",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"fullStaticOutput",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"exitPromise",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"restoreConsole",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"unsubscribeResize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"resized",{enumerable:!0,configurable:!0,writable:!0,value:()=>{this.calculateLayout(),this.onRender()}}),Object.defineProperty(this,"resolveExitPromise",{enumerable:!0,configurable:!0,writable:!0,value:()=>{}}),Object.defineProperty(this,"rejectExitPromise",{enumerable:!0,configurable:!0,writable:!0,value:()=>{}}),Object.defineProperty(this,"unsubscribeExit",{enumerable:!0,configurable:!0,writable:!0,value:()=>{}}),Object.defineProperty(this,"calculateLayout",{enumerable:!0,configurable:!0,writable:!0,value:()=>{let s=this.options.stdout.columns||80;this.rootNode.yogaNode.setWidth(s),this.rootNode.yogaNode.calculateLayout(void 0,void 0,tt.DIRECTION_LTR)}}),Object.defineProperty(this,"onRender",{enumerable:!0,configurable:!0,writable:!0,value:()=>{if(this.isUnmounted)return;let{output:s,outputHeight:o,staticOutput:d}=pT(this.rootNode),v=d&&d!==`
213
213
  `;if(this.options.debug){v&&(this.fullStaticOutput+=d),this.options.stdout.write(this.fullStaticOutput+s);return}if(lf){v&&this.options.stdout.write(d),this.lastOutput=s;return}if(v&&(this.fullStaticOutput+=d),o>=this.options.stdout.rows){this.options.stdout.write(Yd.clearTerminal+this.fullStaticOutput+s),this.lastOutput=s;return}v&&(this.log.clear(),this.options.stdout.write(d),this.log(s)),!v&&s!==this.lastOutput&&this.throttledLog(s),this.lastOutput=s}}),YD(this),this.options=n,this.rootNode=Em("ink-root"),this.rootNode.onComputeLayout=this.calculateLayout,this.rootNode.onRender=n.debug?this.onRender:(0,fg.default)(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=ST.create(n.stdout),this.throttledLog=n.debug?this.log:(0,fg.default)(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput="",this.fullStaticOutput="",this.container=Sl.createContainer(this.rootNode,0,null,!1,null,"id",()=>{},null),this.unsubscribeExit=(0,XT.default)(this.unmount,{alwaysLast:!1}),YT.env.DEV==="true"&&Sl.injectIntoDevTools({bundleType:0,version:"16.13.1",rendererPackageName:"ink"}),n.patchConsole&&this.patchConsole(),lf||(n.stdout.on("resize",this.resized),this.unsubscribeResize=()=>{n.stdout.off("resize",this.resized)})}render(n){let s=qT.default.createElement(sf,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount},n);Sl.updateContainer(s,this.container,null,WT)}writeToStdout(n){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(n+this.fullStaticOutput+this.lastOutput);return}if(lf){this.options.stdout.write(n);return}this.log.clear(),this.options.stdout.write(n),this.log(this.lastOutput)}}writeToStderr(n){if(!this.isUnmounted){if(this.options.debug){this.options.stderr.write(n),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(lf){this.options.stderr.write(n);return}this.log.clear(),this.options.stderr.write(n),this.log(this.lastOutput)}}unmount(n){this.isUnmounted||(this.calculateLayout(),this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),lf?this.options.stdout.write(this.lastOutput+`
214
214
  `):this.options.debug||this.log.done(),this.isUnmounted=!0,Sl.updateContainer(null,this.container,null,WT),of.delete(this.options.stdout),n instanceof Error?this.rejectExitPromise(n):this.resolveExitPromise())}async waitUntilExit(){return this.exitPromise||(this.exitPromise=new Promise((n,s)=>{this.resolveExitPromise=n,this.rejectExitPromise=s})),this.exitPromise}clear(){!lf&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=NS((n,s)=>{n==="stdout"&&this.writeToStdout(s),n==="stderr"&&(s.startsWith("The above error occurred")||this.writeToStderr(s))}))}};var t6=(r,n)=>{let s={stdout:Km.stdout,stdin:Km.stdin,stderr:Km.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0,...n6(n)},o=r6(s.stdout,()=>new fp(s));return o.render(r),{rerender:o.render,unmount(){o.unmount()},waitUntilExit:o.waitUntilExit,cleanup:()=>of.delete(s.stdout),clear:o.clear}},dg=t6,n6=(r={})=>r instanceof e6?{stdout:r,stdin:Km.stdin}:r,r6=(r,n)=>{let s=of.get(r);return s||(s=n(),of.set(r,s)),s};var Jm=pt(xn(),1);var i6=pt(xn(),1);var a6=pt(xn(),1);var u6=pt(xn(),1);var pg=pt(xn(),1),tb=pt(KT(),1);import{Buffer as s6}from"node:buffer";var l6=/^(?:\x1b)([a-zA-Z0-9])$/,c6=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,JT={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"},ZT=[...Object.values(JT),"backspace"],f6=r=>["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(r),d6=r=>["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(r),p6=(r="")=>{let n;s6.isBuffer(r)?r[0]>127&&r[1]===void 0?(r[0]-=128,r="\x1B"+String(r)):r=String(r):r!==void 0&&typeof r!="string"?r=String(r):r||(r="");let s={name:"",ctrl:!1,meta:!1,shift:!1,option:!1,sequence:r,raw:r};if(s.sequence=s.sequence||r||s.name,r==="\r")s.raw=void 0,s.name="return";else if(r===`
215
- `)s.name="enter";else if(r===" ")s.name="tab";else if(r==="\b"||r==="\x1B\b")s.name="backspace",s.meta=r.charAt(0)==="\x1B";else if(r===""||r==="\x1B")s.name="delete",s.meta=r.charAt(0)==="\x1B";else if(r==="\x1B"||r==="\x1B\x1B")s.name="escape",s.meta=r.length===2;else if(r===" "||r==="\x1B ")s.name="space",s.meta=r.length===2;else if(r<="")s.name=String.fromCharCode(r.charCodeAt(0)+97-1),s.ctrl=!0;else if(r.length===1&&r>="0"&&r<="9")s.name="number";else if(r.length===1&&r>="a"&&r<="z")s.name=r;else if(r.length===1&&r>="A"&&r<="Z")s.name=r.toLowerCase(),s.shift=!0;else if(n=l6.exec(r))s.meta=!0,s.shift=/^[A-Z]$/.test(n[1]);else if(n=c6.exec(r)){let o=[...r];o[0]==="\x1B"&&o[1]==="\x1B"&&(s.option=!0);let d=[n[1],n[2],n[4],n[6]].filter(Boolean).join(""),v=(n[3]||n[5]||1)-1;s.ctrl=!!(v&4),s.meta=!!(v&10),s.shift=!!(v&1),s.code=d,s.name=JT[d],s.shift=f6(d)||s.shift,s.ctrl=d6(d)||s.ctrl}return s},$T=p6;var eb=pt(xn(),1);var h6=()=>(0,eb.useContext)(Ym),$m=h6;var m6=(r,n={})=>{let{stdin:s,setRawMode:o,internal_exitOnCtrlC:d,internal_eventEmitter:v}=$m();(0,pg.useEffect)(()=>{if(n.isActive!==!1)return o(!0),()=>{o(!1)}},[n.isActive,o]),(0,pg.useEffect)(()=>{if(n.isActive===!1)return;let y=S=>{let x=$T(S),_={upArrow:x.name==="up",downArrow:x.name==="down",leftArrow:x.name==="left",rightArrow:x.name==="right",pageDown:x.name==="pagedown",pageUp:x.name==="pageup",return:x.name==="return",escape:x.name==="escape",ctrl:x.ctrl,shift:x.shift,tab:x.name==="tab",backspace:x.name==="backspace",delete:x.name==="delete",meta:x.meta||x.name==="escape"||x.option},B=x.ctrl?x.name:x.sequence;ZT.includes(x.name)&&(B=""),B.startsWith("\x1B")&&(B=B.slice(1)),B.length===1&&typeof B[0]=="string"&&(0,tb.isUpperCase)(B[0])&&(_.shift=!0),(!(B==="c"&&_.ctrl)||!d)&&Sl.batchedUpdates(()=>{r(B,_)})};return v?.on("input",y),()=>{v?.removeListener("input",y)}},[n.isActive,s,d,r])},_l=m6;var nb=pt(xn(),1);var v6=()=>(0,nb.useContext)(Wm),hg=v6;var y6=pt(xn(),1);var D6=pt(xn(),1);var mg=pt(xn(),1);var g6=pt(xn(),1);var E6=new Set(["/status","/stats","/task","/config","/cd","/debug","#debug","/cancel"]);function yg(r){let n=r.trim();if(!n)return;let s=n.split(/\s+/,1)[0];return s?s.toLowerCase():void 0}function ev(r){let n=yg(r);return n?E6.has(n):!1}function tv(r){return yg(r)==="/cancel"}function nv(r){return yg(r)==="/cd"}function rv(r,n){if(!n)return{nextText:r,delta:""};if(n.startsWith(r)){let s=n.slice(r.length);return{nextText:n,delta:s}}return{nextText:r+n,delta:n}}function iv(r){return r.type==="tool_use"?`[tool] calling ${r.tool_name}`:r.type==="tool_result"?`[tool] ${r.tool_name??r.tool_use_id} ${r.is_error?"failed":"done"}`:null}function av(r){if(r)return vg(r);let n=process.env.ALADUO_WS_URL;if(n)return vg(n);let s=process.env.ALADUO_DAEMON_URL;return s?vg(s):`ws://127.0.0.1:${process.env.ALADUO_PORT??process.env.PORT??"20233"}/ws`}function vg(r){if(r.startsWith("ws://")||r.startsWith("wss://"))return r;try{let n=new URL(r);return n.protocol=n.protocol==="https:"?"wss:":"ws:",(n.pathname==="/"||n.pathname==="")&&(n.pathname="/ws"),n.toString()}catch{let n=r.replace(/\/$/,"");return n.endsWith("/ws")?`ws://${n}`:`ws://${n}/ws`}}function dp(r){return r.toString().padStart(2,"0")}function ib(r){let n=new Date(r);return Number.isNaN(n.getTime())?r.slice(0,10):`${n.getFullYear()}-${dp(n.getMonth()+1)}-${dp(n.getDate())}`}function Dg(r){let n=new Date(r);return Number.isNaN(n.getTime())?"00:00:00":`${dp(n.getHours())}:${dp(n.getMinutes())}:${dp(n.getSeconds())}`}function gg(r){let n=[],s=null;for(let o of r){let d=ib(o.createdAt);d!==s&&(n.push({kind:"date",dateKey:d}),s=d),n.push({kind:"message",message:o})}return n}function rb(r){return r.trim()}function Eg(r,n){let s=rb(n);if(!s)return!1;let o=rb(r);return o?!(s===o||o.includes(s)):!0}function cf(r,n,s,o=new Date().toISOString()){return{id:s??`${r}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,role:r,content:n,createdAt:o}}G0();function xl(r){return!!r&&typeof r=="object"&&!Array.isArray(r)}function uv(r){return!(!xl(r)||typeof r.version!="string"||typeof r.runtime_id!="string"||r.runtime_mode!=="container"&&r.runtime_mode!=="host"||typeof r.runtime_dir!="string"||typeof r.work_dir!="string")}function U6(r){return uv(r)?r:r&&typeof r=="object"&&"runtime_id"in r&&"runtime_mode"in r&&"runtime_dir"in r&&"work_dir"in r&&r.runtime_mode==="yolo"&&typeof r.runtime_id=="string"&&typeof r.runtime_dir=="string"&&typeof r.work_dir=="string"?{version:"version"in r&&typeof r.version=="string"?r.version:"unknown",runtime_id:r.runtime_id,runtime_mode:"host",runtime_dir:r.runtime_dir,work_dir:r.work_dir}:null}function Tl(r){return`stdio-${r.split(":")[1]||"default"}`}function P6(r){return r.startsWith("stdio:")}function ub(r,n,s){let o=n?.trim(),d=s?.trim();if(o&&d)return{sourceKind:o,channelId:d};if(!P6(r))throw new Error(`Non-stdio session requires explicit source_kind and channel_id: session_key=${r}`);return{sourceKind:o??"stdio",channelId:d??Tl(r)}}function ob(r){let n=new Error(r);return n.name="AbortError",n}async function ov(r,n){let s=Number(process.env.ALADUO_CLI_MAX_RECONNECT_RETRIES??15),o=Number(process.env.ALADUO_CLI_INITIAL_RECONNECT_DELAY_MS??500),d=Number(process.env.ALADUO_CLI_MAX_RECONNECT_DELAY_MS??3e4),v=null,y=0,S=new Map,x=new Map,_=new Map,B=new Map,P=[],ie=new Set,Le=[],le=new Set,ue=new Set,de=[],Fe=new Set,je=process.env.ALADUO_CONSUMER_ID??`stdio:${n}`,Qe=n,it=null,At="disconnected",ye=!1,xe=null,Mt=null,be=te=>{At!==te&&(At=te,lt({type:"connection",status:te}))},lt=te=>{if(te.type==="output"&&le.size===0){P.push(te);let _e=2e3;for(;P.length>_e;)P.shift();return}for(let _e of le)_e(te)},me=te=>{if(!te||ue.has(te))return;ue.add(te),de.push(te);let _e=2e3;for(;de.length>_e;){let Ce=de.shift();Ce&&ue.delete(Ce)}},Pe=te=>{if(ie.has(te))return!1;ie.add(te),Le.push(te);let _e=2e3;for(;Le.length>_e;){let Ce=Le.shift();Ce&&ie.delete(Ce)}return!0},et=(te,_e)=>{let Ce=x.get(te);return Ce?(Ce.resolve(_e),!0):!1},Tt=(te,_e)=>{let Ce=te.in_reply_to_event_id;Ce&&(et(Ce,te)||_.set(Ce,{record:te})),lt({type:"output",sessionKey:te.session_key,record:te,ownership:_e})},we=(te,_e)=>{let Ce=B.get(te);if(!(!Ce||Ce.length===0)){B.delete(te);for(let ht of Ce)Tt(ht,_e)}},rt=()=>{if(!(Fe.size>0))for(let[te,_e]of B.entries()){B.delete(te);for(let Ce of _e)Tt(Ce,ue.has(te)?"issued-request":"external-reply")}},Te=te=>{if(!te?.id||!Pe(te.id))return;it&&it(te.session_key,te.id).catch(()=>{});let _e=te.in_reply_to_event_id;if(!_e){Tt(te,"no-reply");return}if(ue.has(_e)){Tt(te,"issued-request");return}if(Fe.size>0){let Ce=B.get(_e)??[];Ce.push(te),B.set(_e,Ce);return}Tt(te,"external-reply")},kt=te=>{for(let _e of S.values())_e.reject(te);S.clear()},Se=()=>new Promise((te,_e)=>{let Ce=new ef(r);Ce.on("message",Ct=>{let gn=Array.isArray(Ct)?Buffer.concat(Ct).toString():Ct instanceof ArrayBuffer?Buffer.from(Ct).toString():Ct.toString(),Nt;try{Nt=JSON.parse(gn)}catch{return}if("id"in Nt&&Nt.id!==void 0){let Ot=String(Nt.id),qt=Fe.delete(Ot);if(qt&&!("error"in Nt&&Nt.error)){let Fn=Nt.result,$n=typeof Fn=="object"&&Fn!==null&&typeof Fn.event_id=="string"?Fn.event_id??void 0:void 0;$n&&(me($n),we($n,"issued-request")),rt()}else qt&&rt();let Un=S.get(Ot);Un&&(S.delete(Ot),Un.resolve(Nt));return}if("method"in Nt){if(Nt.method==="session.stream"){let Ot=Nt.params;if(Ot.session_key!==Qe)return;lt({type:"stream",sessionKey:Ot.session_key,chunk:Ot.chunk});return}if(Nt.method==="session.output"){let Ot=Nt.params;if(Ot.session_key!==Qe)return;Te(Ot.record);return}if(Nt.method==="session.execution"){let Ot=Nt.params;if(Ot.session_key!==Qe)return;lt({type:"execution",sessionKey:Ot.session_key,event:Ot.event})}}}),Ce.on("error",Ct=>{ye||kt(Ct instanceof Error?Ct:new Error(String(Ct)))}),Ce.on("close",()=>{if(!ye&&v===Ce){if(S.size>0){let Ct=new Error("WebSocket closed");for(let gn of S.values())gn.reject(Ct);S.clear()}Fe.clear(),rt(),v=null,be("disconnected"),yt()}});let ht=!1;Ce.on("open",()=>{ht||(ht=!0,te(Ce))}),Ce.once("error",Ct=>{ht||(ht=!0,_e(Ct instanceof Error?Ct:new Error(String(Ct))))})}),yt=async()=>{if(ye)return;be("reconnecting");let te=o;for(let Ce=0;Ce<s;Ce++)try{if(await new Promise(Ct=>setTimeout(Ct,te)),v=await Se(),be("connected"),xe)try{await Gt(xe,Mt??void 0)}catch{}return}catch{te=Math.min(Math.floor(te*1.5+Math.random()*te*.1),d)}be("disconnected");let _e=new Error(`Failed to reconnect after ${s} attempts`);kt(_e);for(let Ce of x.values())Ce.reject(_e);x.clear()},Xe=async(te,_e)=>{if(!v||v.readyState!==ef.OPEN)throw new Error("Daemon WebSocket not connected");y+=1;let Ce=String(y),ht=te==="channel.ingress"||te==="channel.command",Ct={jsonrpc:"2.0",id:Ce,method:te,params:_e};return await new Promise((Nt,Ot)=>{ht&&Fe.add(Ce),S.set(Ce,{resolve:Nt,reject:Ot}),v?.send(JSON.stringify(Ct),qt=>{qt&&(Fe.delete(Ce),S.delete(Ce),Ot(qt))})})},Gt=async(te,_e)=>{let Ce=process.env.ALADUO_CONSUMER_ID??`stdio:${te}`,ht=await Xe("channel.pull",{session_key:te,consumer_id:Ce,cursor:_e,limit:Number(process.env.ALADUO_PULL_LIMIT??50),wait_ms:Number(process.env.ALADUO_PULL_WAIT_MS??3e4),return_mask:["final","stream","tool"],channel_capabilities:{outbound:{accept_mime:[]}}});if(ht.error)throw new Error(ht.error.message);xe=te,Mt=_e??null,je=Ce,Qe=te},$e=async te=>{let _e=ub(te.session_key??n,te.source_kind,te.channel_id),Ce={...te,source_kind:_e.sourceKind,channel_id:_e.channelId},ht=await Xe("channel.ingress",Ce);if(ht.error)throw new Error(ht.error.message);let Ct=ht.result;if(!Ct?.event_id)throw new Error("Daemon did not return event_id");return Ct.event_id},yn=async(te,_e,Ce,ht,Ct,gn)=>{let Nt=ub(te,Ct,gn),Ot=await Xe("channel.command",{session_key:te,command:_e,idempotency_key:Ce,cwd_abs:ht,source_kind:Nt.sourceKind,channel_id:Nt.channelId});if(Ot.error)throw new Error(Ot.error.message);let qt=Ot.result;if(!qt?.event_id)throw new Error("Daemon did not return event_id");return qt.event_id},zt=async(te,_e)=>{let Ce=await Xe("channel.ack",{session_key:te,consumer_id:je,cursor:_e});if(Ce.error)throw new Error(Ce.error.message)};it=zt;let zn=async(te,_e)=>{let Ce=_.get(te);if(Ce)return _.delete(te),Ce.record;let ht=_e?.signal;if(ht?.aborted)throw ob(`Output wait aborted for event_id=${te}`);return new Promise((Ct,gn)=>{let Nt=null,Ot=!1,qt=()=>{Nt&&(clearTimeout(Nt),Nt=null),ht?.removeEventListener("abort",$n)},Un=tn=>{Ot||(Ot=!0,x.delete(te),qt(),Ct(tn))},Fn=tn=>{Ot||(Ot=!0,x.delete(te),qt(),gn(tn))},$n=()=>{Fn(ob(`Output wait aborted for event_id=${te}`))};ht&&ht.addEventListener("abort",$n),typeof _e?.timeoutMs=="number"&&_e.timeoutMs>0&&(Nt=setTimeout(()=>{Fn(new Error(`Timed out waiting for output event_id=${te}`))},_e.timeoutMs)),x.set(te,{resolve:Un,reject:Fn,cleanup:qt})})},cn=te=>{if(le.add(te),P.length>0){let _e=P.splice(0,P.length);for(let Ce of _e)te(Ce)}return()=>{le.delete(te)}},Yt=()=>At,lr=async()=>{ye=!0,kt(new Error("Client closed")),_.clear(),B.clear(),P.length=0,Fe.clear();for(let te of x.values())te.cleanup?.(),te.reject(new Error("Client closed"));x.clear(),le.clear(),!(!v||v.readyState===ef.CLOSED)&&await new Promise(te=>{v?.once("close",()=>te()),v?.close()})};try{v=await Se(),be("connected")}catch{if(be("reconnecting"),await yt(),!v||Yt()!=="connected")throw new Error("Failed to establish initial connection")}return{request:Xe,runtimeInfo:async()=>{let te=await Xe("system.runtime.info",{});if(te.error)throw new Error(te.error.message);let _e=U6(te.result);if(!_e)throw new Error("Invalid runtime info response");return _e},ingress:$e,command:yn,openPullStream:Gt,ack:zt,waitForOutput:zn,subscribe:cn,getConnectionStatus:Yt,close:lr}}var mp=pt(xn(),1);var Cs=pt(wg(),1);var Gb=pt(Ru(),1);function Lg({value:r,onChange:n,onSubmit:s,placeholder:o="",focus:d=!0}){let[v,y]=(0,mp.useState)((r||"").length);(0,mp.useEffect)(()=>{let _=(r||"").length;v>_&&y(_)},[r,v]),_l((_,B)=>{if(B.upArrow||B.downArrow||B.ctrl&&_==="c"||B.tab||B.shift&&B.tab)return;if(B.return){s?.(r);return}let P=v,ie=r;B.leftArrow?P=Math.max(0,P-1):B.rightArrow?P=Math.min(r.length,P+1):B.backspace||B.delete?v>0&&(ie=r.slice(0,v-1)+r.slice(v),P=v-1):(ie=r.slice(0,v)+_+r.slice(v),P=v+_.length),y(P),ie!==r&&n(ie)},{isActive:d});let S=r,x;if(d)if(S.length>0){x="";let _=0;for(let B of S)_===v?x+=B===`
215
+ `)s.name="enter";else if(r===" ")s.name="tab";else if(r==="\b"||r==="\x1B\b")s.name="backspace",s.meta=r.charAt(0)==="\x1B";else if(r===""||r==="\x1B")s.name="delete",s.meta=r.charAt(0)==="\x1B";else if(r==="\x1B"||r==="\x1B\x1B")s.name="escape",s.meta=r.length===2;else if(r===" "||r==="\x1B ")s.name="space",s.meta=r.length===2;else if(r<="")s.name=String.fromCharCode(r.charCodeAt(0)+97-1),s.ctrl=!0;else if(r.length===1&&r>="0"&&r<="9")s.name="number";else if(r.length===1&&r>="a"&&r<="z")s.name=r;else if(r.length===1&&r>="A"&&r<="Z")s.name=r.toLowerCase(),s.shift=!0;else if(n=l6.exec(r))s.meta=!0,s.shift=/^[A-Z]$/.test(n[1]);else if(n=c6.exec(r)){let o=[...r];o[0]==="\x1B"&&o[1]==="\x1B"&&(s.option=!0);let d=[n[1],n[2],n[4],n[6]].filter(Boolean).join(""),v=(n[3]||n[5]||1)-1;s.ctrl=!!(v&4),s.meta=!!(v&10),s.shift=!!(v&1),s.code=d,s.name=JT[d],s.shift=f6(d)||s.shift,s.ctrl=d6(d)||s.ctrl}return s},$T=p6;var eb=pt(xn(),1);var h6=()=>(0,eb.useContext)(Ym),$m=h6;var m6=(r,n={})=>{let{stdin:s,setRawMode:o,internal_exitOnCtrlC:d,internal_eventEmitter:v}=$m();(0,pg.useEffect)(()=>{if(n.isActive!==!1)return o(!0),()=>{o(!1)}},[n.isActive,o]),(0,pg.useEffect)(()=>{if(n.isActive===!1)return;let y=S=>{let x=$T(S),_={upArrow:x.name==="up",downArrow:x.name==="down",leftArrow:x.name==="left",rightArrow:x.name==="right",pageDown:x.name==="pagedown",pageUp:x.name==="pageup",return:x.name==="return",escape:x.name==="escape",ctrl:x.ctrl,shift:x.shift,tab:x.name==="tab",backspace:x.name==="backspace",delete:x.name==="delete",meta:x.meta||x.name==="escape"||x.option},B=x.ctrl?x.name:x.sequence;ZT.includes(x.name)&&(B=""),B.startsWith("\x1B")&&(B=B.slice(1)),B.length===1&&typeof B[0]=="string"&&(0,tb.isUpperCase)(B[0])&&(_.shift=!0),(!(B==="c"&&_.ctrl)||!d)&&Sl.batchedUpdates(()=>{r(B,_)})};return v?.on("input",y),()=>{v?.removeListener("input",y)}},[n.isActive,s,d,r])},_l=m6;var nb=pt(xn(),1);var v6=()=>(0,nb.useContext)(Wm),hg=v6;var y6=pt(xn(),1);var D6=pt(xn(),1);var mg=pt(xn(),1);var g6=pt(xn(),1);var E6=new Set(["/status","/stats","/task","/config","/cd","/debug","#debug","/cancel"]);function yg(r){let n=r.trim();if(!n)return;let s=n.split(/\s+/,1)[0];return s?s.toLowerCase():void 0}function ev(r){let n=yg(r);return n?E6.has(n):!1}function tv(r){return yg(r)==="/cancel"}function nv(r){return yg(r)==="/cd"}function rv(r,n){if(!n)return{nextText:r,delta:""};if(n.startsWith(r)){let s=n.slice(r.length);return{nextText:n,delta:s}}return{nextText:r+n,delta:n}}function iv(r){return r.type==="tool_use"?`[tool] calling ${r.tool_name}`:r.type==="tool_result"?`[tool] ${r.tool_name??r.tool_use_id} ${r.is_error?"failed":"done"}`:null}function av(r){if(r)return vg(r);let n=process.env.ALADUO_WS_URL;if(n)return vg(n);let s=process.env.ALADUO_DAEMON_URL;return s?vg(s):`ws://127.0.0.1:${process.env.ALADUO_PORT??process.env.PORT??"20233"}/ws`}function vg(r){if(r.startsWith("ws://")||r.startsWith("wss://"))return r;try{let n=new URL(r);return n.protocol=n.protocol==="https:"?"wss:":"ws:",(n.pathname==="/"||n.pathname==="")&&(n.pathname="/ws"),n.toString()}catch{let n=r.replace(/\/$/,"");return n.endsWith("/ws")?`ws://${n}`:`ws://${n}/ws`}}function dp(r){return r.toString().padStart(2,"0")}function ib(r){let n=new Date(r);return Number.isNaN(n.getTime())?r.slice(0,10):`${n.getFullYear()}-${dp(n.getMonth()+1)}-${dp(n.getDate())}`}function Dg(r){let n=new Date(r);return Number.isNaN(n.getTime())?"00:00:00":`${dp(n.getHours())}:${dp(n.getMinutes())}:${dp(n.getSeconds())}`}function gg(r){let n=[],s=null;for(let o of r){let d=ib(o.createdAt);d!==s&&(n.push({kind:"date",dateKey:d}),s=d),n.push({kind:"message",message:o})}return n}function rb(r){return r.trim()}function Eg(r,n){let s=rb(n);if(!s)return!1;let o=rb(r);return o?!(s===o||o.includes(s)):!0}function cf(r,n,s,o=new Date().toISOString()){return{id:s??`${r}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,role:r,content:n,createdAt:o}}G0();function xl(r){return!!r&&typeof r=="object"&&!Array.isArray(r)}function uv(r){return!(!xl(r)||typeof r.version!="string"||typeof r.runtime_id!="string"||r.runtime_mode!=="container"&&r.runtime_mode!=="host"||typeof r.runtime_dir!="string"||typeof r.work_dir!="string"||typeof r.kernel_dir!="string")}function U6(r){return uv(r)?r:r&&typeof r=="object"&&"runtime_id"in r&&"runtime_mode"in r&&"runtime_dir"in r&&"work_dir"in r&&r.runtime_mode==="yolo"&&typeof r.runtime_id=="string"&&typeof r.runtime_dir=="string"&&typeof r.work_dir=="string"?{version:"version"in r&&typeof r.version=="string"?r.version:"unknown",runtime_id:r.runtime_id,runtime_mode:"host",runtime_dir:r.runtime_dir,work_dir:r.work_dir,kernel_dir:"kernel_dir"in r&&typeof r.kernel_dir=="string"?r.kernel_dir:r.work_dir}:null}function Tl(r){return`stdio-${r.split(":")[1]||"default"}`}function P6(r){return r.startsWith("stdio:")}function ub(r,n,s){let o=n?.trim(),d=s?.trim();if(o&&d)return{sourceKind:o,channelId:d};if(!P6(r))throw new Error(`Non-stdio session requires explicit source_kind and channel_id: session_key=${r}`);return{sourceKind:o??"stdio",channelId:d??Tl(r)}}function ob(r){let n=new Error(r);return n.name="AbortError",n}async function ov(r,n){let s=Number(process.env.ALADUO_CLI_MAX_RECONNECT_RETRIES??15),o=Number(process.env.ALADUO_CLI_INITIAL_RECONNECT_DELAY_MS??500),d=Number(process.env.ALADUO_CLI_MAX_RECONNECT_DELAY_MS??3e4),v=null,y=0,S=new Map,x=new Map,_=new Map,B=new Map,P=[],ie=new Set,Le=[],le=new Set,ue=new Set,de=[],Fe=new Set,je=process.env.ALADUO_CONSUMER_ID??`stdio:${n}`,Qe=n,it=null,At="disconnected",ye=!1,xe=null,Mt=null,be=te=>{At!==te&&(At=te,lt({type:"connection",status:te}))},lt=te=>{if(te.type==="output"&&le.size===0){P.push(te);let _e=2e3;for(;P.length>_e;)P.shift();return}for(let _e of le)_e(te)},me=te=>{if(!te||ue.has(te))return;ue.add(te),de.push(te);let _e=2e3;for(;de.length>_e;){let Ce=de.shift();Ce&&ue.delete(Ce)}},Pe=te=>{if(ie.has(te))return!1;ie.add(te),Le.push(te);let _e=2e3;for(;Le.length>_e;){let Ce=Le.shift();Ce&&ie.delete(Ce)}return!0},et=(te,_e)=>{let Ce=x.get(te);return Ce?(Ce.resolve(_e),!0):!1},Tt=(te,_e)=>{let Ce=te.in_reply_to_event_id;Ce&&(et(Ce,te)||_.set(Ce,{record:te})),lt({type:"output",sessionKey:te.session_key,record:te,ownership:_e})},we=(te,_e)=>{let Ce=B.get(te);if(!(!Ce||Ce.length===0)){B.delete(te);for(let ht of Ce)Tt(ht,_e)}},rt=()=>{if(!(Fe.size>0))for(let[te,_e]of B.entries()){B.delete(te);for(let Ce of _e)Tt(Ce,ue.has(te)?"issued-request":"external-reply")}},Te=te=>{if(!te?.id||!Pe(te.id))return;it&&it(te.session_key,te.id).catch(()=>{});let _e=te.in_reply_to_event_id;if(!_e){Tt(te,"no-reply");return}if(ue.has(_e)){Tt(te,"issued-request");return}if(Fe.size>0){let Ce=B.get(_e)??[];Ce.push(te),B.set(_e,Ce);return}Tt(te,"external-reply")},kt=te=>{for(let _e of S.values())_e.reject(te);S.clear()},Se=()=>new Promise((te,_e)=>{let Ce=new ef(r);Ce.on("message",Ct=>{let gn=Array.isArray(Ct)?Buffer.concat(Ct).toString():Ct instanceof ArrayBuffer?Buffer.from(Ct).toString():Ct.toString(),Nt;try{Nt=JSON.parse(gn)}catch{return}if("id"in Nt&&Nt.id!==void 0){let Ot=String(Nt.id),qt=Fe.delete(Ot);if(qt&&!("error"in Nt&&Nt.error)){let Fn=Nt.result,$n=typeof Fn=="object"&&Fn!==null&&typeof Fn.event_id=="string"?Fn.event_id??void 0:void 0;$n&&(me($n),we($n,"issued-request")),rt()}else qt&&rt();let Un=S.get(Ot);Un&&(S.delete(Ot),Un.resolve(Nt));return}if("method"in Nt){if(Nt.method==="session.stream"){let Ot=Nt.params;if(Ot.session_key!==Qe)return;lt({type:"stream",sessionKey:Ot.session_key,chunk:Ot.chunk});return}if(Nt.method==="session.output"){let Ot=Nt.params;if(Ot.session_key!==Qe)return;Te(Ot.record);return}if(Nt.method==="session.execution"){let Ot=Nt.params;if(Ot.session_key!==Qe)return;lt({type:"execution",sessionKey:Ot.session_key,event:Ot.event})}}}),Ce.on("error",Ct=>{ye||kt(Ct instanceof Error?Ct:new Error(String(Ct)))}),Ce.on("close",()=>{if(!ye&&v===Ce){if(S.size>0){let Ct=new Error("WebSocket closed");for(let gn of S.values())gn.reject(Ct);S.clear()}Fe.clear(),rt(),v=null,be("disconnected"),yt()}});let ht=!1;Ce.on("open",()=>{ht||(ht=!0,te(Ce))}),Ce.once("error",Ct=>{ht||(ht=!0,_e(Ct instanceof Error?Ct:new Error(String(Ct))))})}),yt=async()=>{if(ye)return;be("reconnecting");let te=o;for(let Ce=0;Ce<s;Ce++)try{if(await new Promise(Ct=>setTimeout(Ct,te)),v=await Se(),be("connected"),xe)try{await Gt(xe,Mt??void 0)}catch{}return}catch{te=Math.min(Math.floor(te*1.5+Math.random()*te*.1),d)}be("disconnected");let _e=new Error(`Failed to reconnect after ${s} attempts`);kt(_e);for(let Ce of x.values())Ce.reject(_e);x.clear()},Xe=async(te,_e)=>{if(!v||v.readyState!==ef.OPEN)throw new Error("Daemon WebSocket not connected");y+=1;let Ce=String(y),ht=te==="channel.ingress"||te==="channel.command",Ct={jsonrpc:"2.0",id:Ce,method:te,params:_e};return await new Promise((Nt,Ot)=>{ht&&Fe.add(Ce),S.set(Ce,{resolve:Nt,reject:Ot}),v?.send(JSON.stringify(Ct),qt=>{qt&&(Fe.delete(Ce),S.delete(Ce),Ot(qt))})})},Gt=async(te,_e)=>{let Ce=process.env.ALADUO_CONSUMER_ID??`stdio:${te}`,ht=await Xe("channel.pull",{session_key:te,consumer_id:Ce,cursor:_e,limit:Number(process.env.ALADUO_PULL_LIMIT??50),wait_ms:Number(process.env.ALADUO_PULL_WAIT_MS??3e4),return_mask:["final","stream","tool"],channel_capabilities:{outbound:{accept_mime:[]}}});if(ht.error)throw new Error(ht.error.message);xe=te,Mt=_e??null,je=Ce,Qe=te},$e=async te=>{let _e=ub(te.session_key??n,te.source_kind,te.channel_id),Ce={...te,source_kind:_e.sourceKind,channel_id:_e.channelId},ht=await Xe("channel.ingress",Ce);if(ht.error)throw new Error(ht.error.message);let Ct=ht.result;if(!Ct?.event_id)throw new Error("Daemon did not return event_id");return Ct.event_id},yn=async(te,_e,Ce,ht,Ct,gn)=>{let Nt=ub(te,Ct,gn),Ot=await Xe("channel.command",{session_key:te,command:_e,idempotency_key:Ce,cwd_abs:ht,source_kind:Nt.sourceKind,channel_id:Nt.channelId});if(Ot.error)throw new Error(Ot.error.message);let qt=Ot.result;if(!qt?.event_id)throw new Error("Daemon did not return event_id");return qt.event_id},zt=async(te,_e)=>{let Ce=await Xe("channel.ack",{session_key:te,consumer_id:je,cursor:_e});if(Ce.error)throw new Error(Ce.error.message)};it=zt;let zn=async(te,_e)=>{let Ce=_.get(te);if(Ce)return _.delete(te),Ce.record;let ht=_e?.signal;if(ht?.aborted)throw ob(`Output wait aborted for event_id=${te}`);return new Promise((Ct,gn)=>{let Nt=null,Ot=!1,qt=()=>{Nt&&(clearTimeout(Nt),Nt=null),ht?.removeEventListener("abort",$n)},Un=tn=>{Ot||(Ot=!0,x.delete(te),qt(),Ct(tn))},Fn=tn=>{Ot||(Ot=!0,x.delete(te),qt(),gn(tn))},$n=()=>{Fn(ob(`Output wait aborted for event_id=${te}`))};ht&&ht.addEventListener("abort",$n),typeof _e?.timeoutMs=="number"&&_e.timeoutMs>0&&(Nt=setTimeout(()=>{Fn(new Error(`Timed out waiting for output event_id=${te}`))},_e.timeoutMs)),x.set(te,{resolve:Un,reject:Fn,cleanup:qt})})},cn=te=>{if(le.add(te),P.length>0){let _e=P.splice(0,P.length);for(let Ce of _e)te(Ce)}return()=>{le.delete(te)}},Yt=()=>At,lr=async()=>{ye=!0,kt(new Error("Client closed")),_.clear(),B.clear(),P.length=0,Fe.clear();for(let te of x.values())te.cleanup?.(),te.reject(new Error("Client closed"));x.clear(),le.clear(),!(!v||v.readyState===ef.CLOSED)&&await new Promise(te=>{v?.once("close",()=>te()),v?.close()})};try{v=await Se(),be("connected")}catch{if(be("reconnecting"),await yt(),!v||Yt()!=="connected")throw new Error("Failed to establish initial connection")}return{request:Xe,runtimeInfo:async()=>{let te=await Xe("system.runtime.info",{});if(te.error)throw new Error(te.error.message);let _e=U6(te.result);if(!_e)throw new Error("Invalid runtime info response");return _e},ingress:$e,command:yn,openPullStream:Gt,ack:zt,waitForOutput:zn,subscribe:cn,getConnectionStatus:Yt,close:lr}}var mp=pt(xn(),1);var Cs=pt(wg(),1);var Gb=pt(Ru(),1);function Lg({value:r,onChange:n,onSubmit:s,placeholder:o="",focus:d=!0}){let[v,y]=(0,mp.useState)((r||"").length);(0,mp.useEffect)(()=>{let _=(r||"").length;v>_&&y(_)},[r,v]),_l((_,B)=>{if(B.upArrow||B.downArrow||B.ctrl&&_==="c"||B.tab||B.shift&&B.tab)return;if(B.return){s?.(r);return}let P=v,ie=r;B.leftArrow?P=Math.max(0,P-1):B.rightArrow?P=Math.min(r.length,P+1):B.backspace||B.delete?v>0&&(ie=r.slice(0,v-1)+r.slice(v),P=v-1):(ie=r.slice(0,v)+_+r.slice(v),P=v+_.length),y(P),ie!==r&&n(ie)},{isActive:d});let S=r,x;if(d)if(S.length>0){x="";let _=0;for(let B of S)_===v?x+=B===`
216
216
  `?Cs.default.inverse(" ")+`
217
217
  `:Cs.default.inverse(B):x+=B,_++;v===S.length&&(x+=Cs.default.inverse(" "))}else x=o.length>0?Cs.default.inverse(o[0])+Cs.default.grey(o.slice(1)):Cs.default.inverse(" ");else x=S.length>0?S:o?Cs.default.grey(o):"";return(0,Gb.jsx)(hn,{children:x})}var In=pt(xn(),1);var h8=pt(xn(),1);var Cr=pt(wg(),1),Bg=pt(Ru(),1);function m8(r){let n=r.split(`
218
218
  `),s=[],o=0;for(;o<n.length;){let d=n[o];if(!d.trim()){s.push({type:"empty"}),o++;continue}let v=d.match(/^(#{1,6})\s+(.+)$/);if(v){s.push({type:"heading",level:v[1].length,text:v[2]}),o++;continue}if(d.startsWith("```")){let x=d.slice(3).trim(),_=[];for(o++;o<n.length&&!n[o].startsWith("```");)_.push(n[o]),o++;o++,s.push({type:"code",language:x,code:_.join(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openduo/duoduo",
3
- "version": "0.4.2",
3
+ "version": "0.4.3",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -54,7 +54,7 @@
54
54
  "ink-text-input": "^5.0.1",
55
55
  "react": "^18.3.1",
56
56
  "zod": "^4.3.6",
57
- "@openduo/protocol": "0.2.6"
57
+ "@openduo/protocol": "0.2.7"
58
58
  },
59
59
  "scripts": {
60
60
  "test": "vitest run",