eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
8 lines • 3.82 kB
JavaScript
import picocolors from"#compiled/picocolors/index.js";function sanitizeForTerminal(e){let t=``,n=0;for(;n<e.length;){let r=e.codePointAt(n);if(r==null)break;if(r===27){n=skipEscSequence({start:n,value:e});continue}if(r===155){n=skipCsiSequence({start:n+1,value:e});continue}if(isC1StringControlCodePoint(r)){n=skipStringControlSequence({start:n+1,value:e});continue}let i=String.fromCodePoint(r);n+=i.length,!isUnsafeControlCodePoint(r)&&(t+=i)}return t}function applyTone(e,t,n){switch(t){case`accent`:return e.accent(n);case`danger`:return e.danger(n);case`info`:return e.info(n);case`muted`:return e.muted(n);case`subagent`:return e.subagent(n);case`success`:return e.success(n);case`warning`:return e.warning(n);default:return e.plain(n)}}function renderIndentedLines(e,t){let[n=``,...r]=e;return[n,...r.map(e=>`${t}${e}`)]}function skipEscSequence(e){let t=e.start+1,n=e.value.codePointAt(t);if(n==null)return t;if(n===91)return skipCsiSequence({start:t+1,value:e.value});if(isEscStringControlIntroducer(n))return skipStringControlSequence({start:t+1,value:e.value});let r=String.fromCodePoint(n);if(isCharsetDesignationIntroducer(n)){let n=t+r.length,i=e.value.codePointAt(n);return i==null?n:n+String.fromCodePoint(i).length}return t+r.length}function skipCsiSequence(e){let t=e.start;for(;t<e.value.length;){let n=e.value.codePointAt(t);if(n==null)break;if(t+=String.fromCodePoint(n).length,n>=64&&n<=126)return t}return t}function skipStringControlSequence(e){let t=e.start;for(;t<e.value.length;){let n=e.value.codePointAt(t);if(n==null)break;let r=t+String.fromCodePoint(n).length;if(n===7||n===156)return r;if(n===27&&e.value.codePointAt(r)===92)return r+1;t=r}return t}function isEscStringControlIntroducer(e){return e===80||e===88||e===93||e===94||e===95}function isC1StringControlCodePoint(e){return e===144||e===152||e===157||e===158||e===159}function isCharsetDesignationIntroducer(e){return e===40||e===41||e===42||e===43||e===45||e===46||e===47}function isUnsafeControlCodePoint(e){return e>=0&&e<=8||e>=11&&e<=31||e>=127&&e<=159}function renderOrangeText(e){return e.color?`\u001B[38;5;208m${e.text}\u001B[39m`:e.text}function createCliTheme(t={}){let n=picocolors.createColors(t.color??!!process.stdout.isTTY);return{accent:e=>n.cyan(e),color:n.isColorSupported,danger:e=>n.red(e),heading:e=>n.bold(n.cyan(e)),info:e=>n.blue(e),label:e=>n.bold(e),muted:e=>n.dim(e),plain:e=>e,subagent:e=>renderOrangeText({color:n.isColorSupported,text:e}),success:e=>n.green(e),warning:e=>n.yellow(e)}}function renderCliBanner(e,t){let n=sanitizeForTerminal(t.title),r=[e.heading(n),e.muted(`=`.repeat(n.length))];return t.subtitle&&r.push(e.muted(sanitizeForTerminal(t.subtitle))),r.join(`
`)}function renderCliSection(e,t){let n=t.rows.map(e=>({label:sanitizeForTerminal(e.label),tone:e.tone,value:sanitizeForTerminal(e.value)})),r=n.reduce((e,t)=>Math.max(e,t.label.length),0),i=[e.accent(sanitizeForTerminal(t.title))];for(let t of n){let[n=``,...a]=renderIndentedLines(applyTone(e,t.tone??`default`,t.value).split(`
`),`${` `.repeat(r)} `);i.push(`${e.label(t.label.padEnd(r))} ${n}`),i.push(...a)}return i.join(`
`)}function renderCliTaggedLine(e,t){let n=sanitizeForTerminal(t.message),r=`[${sanitizeForTerminal(t.tag).toUpperCase()}]`,[i=``,...a]=renderIndentedLines(applyTone(e,t.tone??`default`,n).split(`
`),`${` `.repeat(r.length)} `);return[e.muted(r),i].join(` `)+(a.length>0?`\n${a.join(`
`)}`:``)}function renderCliSpeakerLine(e,t){let n=sanitizeForTerminal(t.message),r=`${sanitizeForTerminal(t.speaker)}>`,[i=``,...a]=renderIndentedLines(applyTone(e,t.tone??`default`,n).split(`
`),`${` `.repeat(r.length)} `);return[e.muted(r),i].join(` `)+(a.length>0?`\n${a.join(`
`)}`:``)}export{createCliTheme,renderCliBanner,renderCliSection,renderCliSpeakerLine,renderCliTaggedLine,sanitizeForTerminal};