eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
7 lines • 2.56 kB
JavaScript
import{parseRegistryPresentationManifest}from"./registry-metadata.js";import{createCliTheme,sanitizeForTerminal}from"#cli/ui/output.js";import{clipVisible,wrapVisibleLine}from"#cli/ui/terminal-text.js";function normalizeRegistryText(e){return sanitizeForTerminal(e).replaceAll(`\\"`,`"`).replaceAll(`\\'`,`'`).replaceAll(/\s+/gu,` `).trim()}function registryDescriptionSummary(e){let t=normalizeRegistryText(e);return t.match(/^.*?[.!?](?=\s|$)/u)?.[0]??t}function renderSearchItem(e,t,n){let r=Math.max(1,t-4),i=wrapVisibleLine(normalizeRegistryText(e.address),r),a=e.implementation===`native`?`First-class eve channel`:e.implementation===`chat-sdk`?`Chat SDK adapter`:void 0,o=normalizeRegistryText(e.item.name),s=o.split(`/`).at(-1)??o,c=[` ${n.label(s)}${a===void 0?``:n.muted(` · ${a}`)}`,...i.map(e=>` ${e}`)];if(!e.item.description)return c.join(`
`);let l=registryDescriptionSummary(e.item.description);if(l.length===0)return c.join(`
`);let u=wrapVisibleLine(l,r),d=u.length<=2?u:[u[0],`${clipVisible(u[1],Math.max(1,r-1)).trimEnd()}…`];return c.push(...d.map(e=>n.muted(` ${e}`))),c.join(`
`)}function printRegistrySearchResults(e,t){if(t.json!==void 0){e.log(JSON.stringify(t.json,null,2));return}if(t.sections.every(e=>e.items.length===0)){let n=t.query&&normalizeRegistryText(t.query);e.log(n?`No registry items match "${n}".`:`No registry items found.`);return}let n=createCliTheme(),r=Math.max(20,process.stdout.columns??80),i=t.sections.flatMap(e=>{if(e.items.length===0)return[];let t=`${e.total} result${e.total===1?``:`s`}`,i=e.items.length<e.total?`showing ${e.items.length} of ${t}`:t;return[[`${n.label(e.label)} ${n.muted(`(${i})`)}`,...e.items.map(e=>renderSearchItem(e,r,n))].join(`
`)]});e.log(i.join(`
`))}function registryViewText(e,t){let n=parseRegistryPresentationManifest(t);if(n===void 0)return JSON.stringify(t,null,2);let r=n.meta?.eve,i=[n.title??e,e];if(n.description!==void 0&&i.push(``,n.description),r?.implementation!==void 0&&i.push(``,`Implementation ${r.implementation===`native`?`First-class eve channel`:`Chat SDK adapter`}`),r?.setup!==void 0&&i.push(`Setup Guided setup`),r?.docs!==void 0){let e=r.docs.startsWith(`/`)?`https://eve.dev${r.docs}`:r.docs;i.push(`Documentation ${e}`)}i.push(`Source Official eve registry`),n.dependencies?.length&&i.push(``,`Packages`,...n.dependencies.map(e=>` ${e}`));let a=n.files?.map(e=>e.target)??[];return a.length>0&&i.push(``,`Files`,...a.map(e=>` ${e}`)),i.join(`
`)}export{normalizeRegistryText,printRegistrySearchResults,registryViewText};