@xenosystem/agent-sdk 0.9.39 → 0.10.0

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/dist/ui/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var X=Object.defineProperty;var Z=Object.getOwnPropertyDescriptor;var ee=Object.getOwnPropertyNames;var te=Object.prototype.hasOwnProperty;var ne=(n,e)=>{for(var r in e)X(n,r,{get:e[r],enumerable:!0})},oe=(n,e,r,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of ee(e))!te.call(n,i)&&i!==r&&X(n,i,{get:()=>e[i],enumerable:!(t=Z(e,i))||t.enumerable});return n};var re=n=>oe(X({},"__esModule",{value:!0}),n);var ye={};ne(ye,{XENO_UI_RENDERER_API_VERSION:()=>I,createAgentUiController:()=>B,createAgentUiView:()=>z,dispatchAgentUiAction:()=>N,isSafeMarkdownHref:()=>q,mountAgentUi:()=>J,parseMarkdown:()=>D,xenoUiCss:()=>H,xenoUiTokens:()=>K});module.exports=re(ye);var ie={View:"Read",Replace:"Write",GlobTool:"Glob",GrepTool:"Grep",SQLiteAnalyze:"SqliteAnalyze",ReadNotebook:"NotebookRead",NotebookEditCell:"NotebookEdit"};function se(n){return ie[n]??n}var ae=new Set(["Read","Glob","Grep","LS","Think","dispatch_agent","ElfAnalyze"]),le=new Set(["Write","Edit"]),ce=new Set(["Bash"]);function G(n){let e=se(n);return ce.has(e)?"high":ae.has(e)?"low":(le.has(e),"medium")}var I=1;function de(n){let e=n.config;return e&&typeof e=="object"?e:null}function F(n){let e=n.tokenUsage;return{input:Number(e.input)||0,output:Number(e.output)||0,total:Number(e.total)||0}}function ue(n){let e=n.toLowerCase();return["rate limit","429","network","timeout","econnrefused","api error","unreachable"].some(r=>e.includes(r))}function B(n){let e=n.agent,r=n.now??Date.now,t=0,i=n.createId??(()=>`xeno-ui-${r()}-${++t}`),m=new Set,g=[],h="idle",R=F(e),v=null,d=null,k=null,_=null,c="",U=null,S=0,E=!1,b=!1,O=0,p=de(e),w=p?.permissionEngine,$=w?.promptFn;function C(){return Object.freeze({apiVersion:1,revision:O,items:Object.freeze([...g]),isProcessing:E,status:h,tokenUsage:Object.freeze({...R}),permissionRequest:v?Object.freeze({...v}):null,lastUserMessage:k})}function y(){O+=1;let s=C();for(let l of[...m])l(s)}function P(s){g=[...g,s],y()}function V(s){let l=[...g];for(let x=l.length-1;x>=0;x-=1){let a=l[x];if(a?.type==="message"&&a.data.role==="assistant"){l[x]={type:"message",data:s(a.data)},g=l,y();return}}}function j(s,l){let x=[...g];for(let a=x.length-1;a>=0;a-=1){let u=x[a];if(u?.type==="tool_call"&&u.data.id===s){x[a]={type:"tool_call",data:l(u.data)},g=x,y();return}}}function o(){_&&(V(s=>({...s,isStreaming:!1})),_=null,c="")}function T(s){let l={id:i(),message:s,retryable:ue(s),timestamp:r()};P({type:"error",data:l})}function f(s){p&&(p.onText=s.onText,p.onToolStart=s.onToolStart,p.onToolEnd=s.onToolEnd,p.onError=s.onError)}async function L(s){let l=s.trim();if(b||E||!l)return!1;E=!0,k=l,h="thinking",_=null,c="";let x={id:i(),role:"user",content:l,timestamp:r()};g=[...g,{type:"message",data:x}],y();let a={onText:p?.onText,onToolStart:p?.onToolStart,onToolEnd:p?.onToolEnd,onError:p?.onError};p&&(p.onText=u=>{a.onText?.(u),!b&&(c+=u,_?V(A=>({...A,content:c,isStreaming:!0})):(_=i(),P({type:"message",data:{id:_,role:"assistant",content:c,timestamp:r(),isStreaming:!0}})))},p.onToolStart=(u,A)=>{a.onToolStart?.(u,A),!b&&(o(),h="executing",U=i(),S=r(),P({type:"tool_call",data:{id:U,toolName:u,input:A,status:"running",timestamp:r()}}))},p.onToolEnd=(u,A)=>{a.onToolEnd?.(u,A),!b&&(U&&(j(U,Q=>({...Q,status:A.success?"success":"error",result:A,durationMs:Math.max(0,r()-S)})),U=null),h="thinking",y())},p.onError=(u,A)=>a.onError?.(u,A));try{await e.run(l),b||(o(),h="idle",R=F(e),y())}catch(u){if(!b){o();let A=u instanceof Error?u:new Error(String(u));h=A.name==="AgentInterruptedError"?"idle":"error",A.name!=="AgentInterruptedError"&&T(A.message),R=F(e),y()}}finally{E=!1,f(a),b||y()}return!0}return n.enablePermissionRequests&&w&&(w.promptFn=s=>(d&&d("deny"),new Promise(l=>{d=l,v={id:i(),toolName:s.toolName,detail:s.detail,description:s.description,operation:s.operation,preview:s.preview,riskLevel:G(s.toolName),timestamp:r()},y()}))),{apiVersion:1,getSnapshot:C,subscribe(s){if(b)throw new Error("Agent UI controller is disposed");return m.add(s),s(C()),()=>m.delete(s)},sendMessage:L,cancelExecution(){!b&&E&&e.cancelCurrentTurn()},clearMessages(){b||(g=[],_=null,c="",y())},retryLastMessage(){return b||E||!k?Promise.resolve(!1):(g=g.filter((s,l,x)=>s.type!=="error"?!0:x.slice(l+1).some(a=>a.type!=="error")),h="idle",y(),L(k))},resolvePermission(s,l){if(b||!v||v.id!==s||!d)return!1;let x=d;return d=null,v=null,y(),x(l),!0},dispose(){b||(b=!0,d&&d("deny"),d=null,v=null,w&&(w.promptFn=$),m.clear())}}}function me(n){let e=[],r=[[/```([\w-]*)\n([\s\S]*?)```/,t=>({kind:"code-block",language:t[1]??"",code:t[2]??""})],[/`([^`\n]+)`/,t=>({kind:"inline-code",code:t[1]??""})],[/\*\*(.+?)\*\*/,t=>({kind:"strong",text:t[1]??""})],[/\*([^*\n]+)\*/,t=>({kind:"emphasis",text:t[1]??""})],[/\[([^\]]+)\]\(([^)\s]+)\)/,t=>({kind:"link",text:t[1]??"",href:t[2]??""})]];for(let[t,i]of r){let m=n.match(t);m?.index!==void 0&&e.push({index:m.index,value:i(m),length:m[0].length})}return e.sort((t,i)=>t.index-i.index),e[0]??null}function D(n){let e=[],r=n;for(;r;){let t=me(r);if(!t){e.push({kind:"text",text:r});break}t.index>0&&e.push({kind:"text",text:r.slice(0,t.index)}),e.push(t.value),r=r.slice(t.index+t.length)}return e}function q(n){try{let e=new URL(n,"https://xeno.invalid/");return e.protocol==="https:"||e.protocol==="http:"||e.protocol==="mailto:"}catch{return!1}}var K=Object.freeze({background:"#101214",surface:"#181b1f",surfaceRaised:"#20242a",border:"#343a42",text:"#f2f4f7",textMuted:"#aab2bd",accent:"#5da9e9",success:"#56b881",warning:"#e7b65a",danger:"#e57373",focus:"#8bc5f4"}),H=`
1
+ "use strict";var X=Object.defineProperty;var Z=Object.getOwnPropertyDescriptor;var ee=Object.getOwnPropertyNames;var te=Object.prototype.hasOwnProperty;var ne=(n,e)=>{for(var r in e)X(n,r,{get:e[r],enumerable:!0})},oe=(n,e,r,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of ee(e))!te.call(n,i)&&i!==r&&X(n,i,{get:()=>e[i],enumerable:!(t=Z(e,i))||t.enumerable});return n};var re=n=>oe(X({},"__esModule",{value:!0}),n);var ye={};ne(ye,{XENO_UI_RENDERER_API_VERSION:()=>I,createAgentUiController:()=>B,createAgentUiView:()=>z,dispatchAgentUiAction:()=>S,isSafeMarkdownHref:()=>q,mountAgentUi:()=>Y,parseMarkdown:()=>D,xenoUiCss:()=>H,xenoUiTokens:()=>K});module.exports=re(ye);var ie={View:"Read",Replace:"Write",GlobTool:"Glob",GrepTool:"Grep",SQLiteAnalyze:"SqliteAnalyze",ReadNotebook:"NotebookRead",NotebookEditCell:"NotebookEdit",CoordinationSend:"Send",CoordinationQuery:"Receive"};function se(n){return ie[n]??n}var ae=new Set(["Read","Glob","Grep","LS","Think","dispatch_agent","ElfAnalyze","Receive","ListAgents","ListSessions","CoordinationQuery"]),le=new Set(["Write","Edit","Send","CoordinationSend"]),ce=new Set(["Bash"]);function G(n){let e=se(n);return ce.has(e)?"high":ae.has(e)?"low":(le.has(e),"medium")}var I=1;function de(n){let e=n.config;return e&&typeof e=="object"?e:null}function F(n){let e=n.tokenUsage;return{input:Number(e.input)||0,output:Number(e.output)||0,total:Number(e.total)||0}}function ue(n){let e=n.toLowerCase();return["rate limit","429","network","timeout","econnrefused","api error","unreachable"].some(r=>e.includes(r))}function B(n){let e=n.agent,r=n.now??Date.now,t=0,i=n.createId??(()=>`xeno-ui-${r()}-${++t}`),m=new Set,g=[],h="idle",N=F(e),_=null,d=null,k=null,v=null,c="",U=null,R=0,E=!1,b=!1,O=0,p=de(e),w=p?.permissionEngine,$=w?.promptFn;function T(){return Object.freeze({apiVersion:1,revision:O,items:Object.freeze([...g]),isProcessing:E,status:h,tokenUsage:Object.freeze({...N}),permissionRequest:_?Object.freeze({..._}):null,lastUserMessage:k})}function y(){O+=1;let s=T();for(let l of[...m])l(s)}function P(s){g=[...g,s],y()}function V(s){let l=[...g];for(let x=l.length-1;x>=0;x-=1){let a=l[x];if(a?.type==="message"&&a.data.role==="assistant"){l[x]={type:"message",data:s(a.data)},g=l,y();return}}}function j(s,l){let x=[...g];for(let a=x.length-1;a>=0;a-=1){let u=x[a];if(u?.type==="tool_call"&&u.data.id===s){x[a]={type:"tool_call",data:l(u.data)},g=x,y();return}}}function o(){v&&(V(s=>({...s,isStreaming:!1})),v=null,c="")}function C(s){let l={id:i(),message:s,retryable:ue(s),timestamp:r()};P({type:"error",data:l})}function f(s){p&&(p.onText=s.onText,p.onToolStart=s.onToolStart,p.onToolEnd=s.onToolEnd,p.onError=s.onError)}async function L(s){let l=s.trim();if(b||E||!l)return!1;E=!0,k=l,h="thinking",v=null,c="";let x={id:i(),role:"user",content:l,timestamp:r()};g=[...g,{type:"message",data:x}],y();let a={onText:p?.onText,onToolStart:p?.onToolStart,onToolEnd:p?.onToolEnd,onError:p?.onError};p&&(p.onText=u=>{a.onText?.(u),!b&&(c+=u,v?V(A=>({...A,content:c,isStreaming:!0})):(v=i(),P({type:"message",data:{id:v,role:"assistant",content:c,timestamp:r(),isStreaming:!0}})))},p.onToolStart=(u,A)=>{a.onToolStart?.(u,A),!b&&(o(),h="executing",U=i(),R=r(),P({type:"tool_call",data:{id:U,toolName:u,input:A,status:"running",timestamp:r()}}))},p.onToolEnd=(u,A)=>{a.onToolEnd?.(u,A),!b&&(U&&(j(U,J=>({...J,status:A.success?"success":"error",result:A,durationMs:Math.max(0,r()-R)})),U=null),h="thinking",y())},p.onError=(u,A)=>a.onError?.(u,A));try{await e.run(l),b||(o(),h="idle",N=F(e),y())}catch(u){if(!b){o();let A=u instanceof Error?u:new Error(String(u));h=A.name==="AgentInterruptedError"?"idle":"error",A.name!=="AgentInterruptedError"&&C(A.message),N=F(e),y()}}finally{E=!1,f(a),b||y()}return!0}return n.enablePermissionRequests&&w&&(w.promptFn=s=>(d&&d("deny"),new Promise(l=>{d=l,_={id:i(),toolName:s.toolName,detail:s.detail,description:s.description,operation:s.operation,preview:s.preview,riskLevel:G(s.toolName),timestamp:r()},y()}))),{apiVersion:1,getSnapshot:T,subscribe(s){if(b)throw new Error("Agent UI controller is disposed");return m.add(s),s(T()),()=>m.delete(s)},sendMessage:L,cancelExecution(){!b&&E&&e.cancelCurrentTurn()},clearMessages(){b||(g=[],v=null,c="",y())},retryLastMessage(){return b||E||!k?Promise.resolve(!1):(g=g.filter((s,l,x)=>s.type!=="error"?!0:x.slice(l+1).some(a=>a.type!=="error")),h="idle",y(),L(k))},resolvePermission(s,l){if(b||!_||_.id!==s||!d)return!1;let x=d;return d=null,_=null,y(),x(l),!0},dispose(){b||(b=!0,d&&d("deny"),d=null,_=null,w&&(w.promptFn=$),m.clear())}}}function me(n){let e=[],r=[[/```([\w-]*)\n([\s\S]*?)```/,t=>({kind:"code-block",language:t[1]??"",code:t[2]??""})],[/`([^`\n]+)`/,t=>({kind:"inline-code",code:t[1]??""})],[/\*\*(.+?)\*\*/,t=>({kind:"strong",text:t[1]??""})],[/\*([^*\n]+)\*/,t=>({kind:"emphasis",text:t[1]??""})],[/\[([^\]]+)\]\(([^)\s]+)\)/,t=>({kind:"link",text:t[1]??"",href:t[2]??""})]];for(let[t,i]of r){let m=n.match(t);m?.index!==void 0&&e.push({index:m.index,value:i(m),length:m[0].length})}return e.sort((t,i)=>t.index-i.index),e[0]??null}function D(n){let e=[],r=n;for(;r;){let t=me(r);if(!t){e.push({kind:"text",text:r});break}t.index>0&&e.push({kind:"text",text:r.slice(0,t.index)}),e.push(t.value),r=r.slice(t.index+t.length)}return e}function q(n){try{let e=new URL(n,"https://xeno.invalid/");return e.protocol==="https:"||e.protocol==="http:"||e.protocol==="mailto:"}catch{return!1}}var K=Object.freeze({background:"#101214",surface:"#181b1f",surfaceRaised:"#20242a",border:"#343a42",text:"#f2f4f7",textMuted:"#aab2bd",accent:"#5da9e9",success:"#56b881",warning:"#e7b65a",danger:"#e57373",focus:"#8bc5f4"}),H=`
2
2
  .xeno-ui{box-sizing:border-box;display:grid;grid-template-rows:auto minmax(12rem,1fr) auto;width:min(32rem,100%);height:min(44rem,100%);min-height:24rem;border:1px solid var(--xeno-border,#343a42);background:var(--xeno-bg,#101214);color:var(--xeno-text,#f2f4f7);font:14px/1.45 ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;letter-spacing:0}
3
3
  .xeno-ui *{box-sizing:border-box;letter-spacing:0}
4
4
  .xeno-ui__header{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-bottom:1px solid var(--xeno-border,#343a42);background:var(--xeno-surface,#181b1f)}
@@ -31,5 +31,5 @@
31
31
  .xeno-ui :focus-visible{outline:2px solid var(--xeno-focus,#8bc5f4);outline-offset:2px}
32
32
  @media (max-width:36rem){.xeno-ui{width:100%;height:100%;border-left:0;border-right:0}.xeno-ui__entry--user,.xeno-ui__entry--assistant{margin-left:0;margin-right:0}.xeno-ui__composer{grid-template-columns:1fr}.xeno-ui__controls{justify-content:flex-end}}
33
33
  @media (prefers-reduced-motion:reduce){.xeno-ui *{scroll-behavior:auto!important;transition:none!important}}
34
- `;var W=64*1024;function pe(n){let e;try{e=JSON.stringify(n,null,2)??String(n)}catch{e="[Unserializable value]"}return e.length<=W?e:`${e.slice(0,W)}
35
- [truncated]`}function ge(n){if(n.type==="message"){let e=n.data.role==="assistant";return{key:n.data.id,kind:e?"assistant-message":"user-message",role:"article",accessibleName:e?"Assistant message":"Your message",text:n.data.content,streaming:n.data.isStreaming}}if(n.type==="tool_call"){let e=n.data.durationMs===void 0?"":` in ${n.data.durationMs} ms`;return{key:n.data.id,kind:"tool-call",role:"status",accessibleName:`${n.data.toolName} tool ${n.data.status}`,text:`${n.data.toolName}: ${n.data.status}${e}`,detail:pe({input:n.data.input,result:n.data.result}),state:n.data.status}}return{key:n.data.id,kind:"error",role:"alert",accessibleName:"Agent error",text:n.data.message,retryable:n.data.retryable}}function z(n,e={}){let r=e.agentName?.trim()||"Xeno Agent",t=n.permissionRequest;return{apiVersion:1,revision:n.revision,region:{role:"region",accessibleName:e.regionLabel?.trim()||`${r} chat`},header:{title:r,statusRole:"status",statusText:n.status,tokenText:`${n.tokenUsage.total.toLocaleString()} tokens`},timeline:{role:"log",live:"polite",busy:n.isProcessing,entries:n.items.map(ge)},permission:t?{role:"alertdialog",accessibleName:`Permission required for ${t.toolName}`,description:t.description||t.detail,riskLevel:t.riskLevel,requestId:t.id,controls:[{label:"Allow once",decision:"allow"},{label:"Always allow",decision:"always"},{label:"Deny",decision:"deny"}]}:null,composer:{role:"form",inputLabel:e.inputLabel?.trim()||"Message Xeno Agent",placeholder:e.inputPlaceholder?.trim()||"Message or command...",disabled:n.isProcessing,sendLabel:"Send",cancelLabel:"Cancel"}}}async function N(n,e){switch(e.type){case"send":return n.sendMessage(e.text);case"cancel":return n.cancelExecution(),!0;case"clear":return n.clearMessages(),!0;case"retry":return n.retryLastMessage();case"permission":return n.resolvePermission(e.requestId,e.decision)}}var Y="xeno-owned-agent-ui-v1";function fe(n,e,r){for(let t of D(r)){if(t.kind==="text"){e.append(n.createTextNode(t.text));continue}if(t.kind==="code-block"){let i=n.createElement("pre"),m=n.createElement("code");t.language&&(m.dataset.language=t.language),m.textContent=t.code,i.append(m),e.append(i);continue}if(t.kind==="inline-code"){let i=n.createElement("code");i.textContent=t.code,e.append(i);continue}if(t.kind==="strong"||t.kind==="emphasis"){let i=n.createElement(t.kind==="strong"?"strong":"em");i.textContent=t.text,e.append(i);continue}if(t.kind==="link"){if(!q(t.href)){e.append(n.createTextNode(t.text));continue}let i=n.createElement("a");i.textContent=t.text,i.href=t.href,i.rel="noopener noreferrer",(i.protocol==="http:"||i.protocol==="https:")&&(i.target="_blank"),e.append(i)}}}function M(n,e,r=""){let t=n.createElement("button");return t.type="button",t.className=`xeno-ui__button${r?` ${r}`:""}`,t.textContent=e,t}function xe(n,e,r){let t=n.createElement(e.role==="article"?"article":"div");if(t.className=`xeno-ui__entry xeno-ui__entry--${e.kind==="user-message"?"user":e.kind==="assistant-message"?"assistant":e.kind==="tool-call"?"tool":"error"}`,t.setAttribute("role",e.role),t.setAttribute("aria-label",e.accessibleName),t.dataset.xenoKey=e.key,e.streaming&&t.setAttribute("aria-busy","true"),fe(n,t,e.text),e.detail){let i=n.createElement("details");i.className="xeno-ui__details";let m=n.createElement("summary");m.textContent="Details";let g=n.createElement("pre");g.textContent=e.detail,i.append(m,g),t.append(i)}if(e.retryable){let i=M(n,"Retry");i.addEventListener("click",()=>{N(r,{type:"retry"})}),t.append(n.createTextNode(" "),i)}return t}function be(n,e){if(n.getElementById(Y))return;let r=n.createElement("style");r.id=Y,e&&(r.nonce=e),r.textContent=H,n.head.append(r)}function J(n,e,r={}){let t=n.ownerDocument;r.injectStyles!==!1&&be(t,r.styleNonce);let i=t.createElement("section");i.className=`xeno-ui${r.className?` ${r.className}`:""}`;let m=t.createElement("header");m.className="xeno-ui__header";let g=t.createElement("h2");g.className="xeno-ui__title";let h=t.createElement("span");h.className="xeno-ui__status",h.setAttribute("role","status"),h.setAttribute("aria-live","polite");let R=t.createElement("span");R.className="xeno-ui__tokens";let v=M(t,"Clear");if(v.setAttribute("aria-label","Clear conversation"),v.addEventListener("click",()=>{N(e,{type:"clear"})}),m.append(g,h,R,v),r.onClose){let o=M(t,"X");o.setAttribute("aria-label","Close agent chat"),o.addEventListener("click",r.onClose),m.append(o)}let d=t.createElement("div");d.className="xeno-ui__timeline",d.setAttribute("role","log"),d.setAttribute("aria-live","polite"),d.setAttribute("aria-relevant","additions text");let k=t.createElement("div"),_=t.createElement("form");_.className="xeno-ui__composer",_.setAttribute("role","form");let c=t.createElement("textarea");c.className="xeno-ui__input",c.rows=1;let U=t.createElement("div");U.className="xeno-ui__controls";let S=M(t,"Cancel","xeno-ui__button--danger");S.addEventListener("click",()=>{N(e,{type:"cancel"})});let E=M(t,"Send","xeno-ui__button--primary");E.type="submit",U.append(S,E),_.append(c,U),i.append(m,d,k,_),n.replaceChildren(i);function b(){c.style.height="auto";let o=44,T=144,f=Math.max(c.scrollHeight,o);c.style.height=`${Math.min(f,T)}px`,c.style.overflowY=f>T?"auto":"hidden"}async function O(){let o=c.value;await N(e,{type:"send",text:o})&&(c.value="",b())}_.addEventListener("submit",o=>{o.preventDefault(),O()}),c.addEventListener("keydown",o=>{o.key==="Enter"&&(o.ctrlKey||o.metaKey)&&(o.preventDefault(),O())}),c.addEventListener("input",b);let p=null,w=null;function $(o){if(o.permission&&p===o.permission.requestId&&k.children.length>0)return;if(k.replaceChildren(),!o.permission){if(p){let a=w??c;queueMicrotask(()=>a.focus())}p=null,w=null;return}let T=p!==o.permission.requestId;if(T){let a=t.activeElement;w=a&&"focus"in a?a:c,p=o.permission.requestId}let f=t.createElement("section");f.className="xeno-ui__permission",f.setAttribute("role",o.permission.role),f.setAttribute("aria-modal","true"),f.setAttribute("aria-label",o.permission.accessibleName),f.dataset.risk=o.permission.riskLevel;let L=t.createElement("h3");L.className="xeno-ui__permission-title",L.textContent=o.permission.accessibleName;let s=t.createElement("div");s.id=`xeno-ui-permission-${o.permission.requestId}`,s.textContent=o.permission.description,f.setAttribute("aria-describedby",s.id);let l=t.createElement("div");l.className="xeno-ui__permission-actions";let x=null;for(let a of o.permission.controls){let u=M(t,a.label,a.decision==="deny"?"xeno-ui__button--danger":"");u.dataset.decision=a.decision,x??=u,u.addEventListener("click",()=>{N(e,{type:"permission",requestId:o.permission.requestId,decision:a.decision})}),l.append(u)}f.append(L,s,l),k.append(f),T&&x&&queueMicrotask(()=>x?.focus())}function C(){let o=z(e.getSnapshot(),r);i.setAttribute("role",o.region.role),i.setAttribute("aria-label",o.region.accessibleName),g.textContent=o.header.title,h.textContent=o.header.statusText,R.textContent=o.header.tokenText,d.setAttribute("aria-busy",String(o.timeline.busy));let T=d.scrollHeight-d.scrollTop-d.clientHeight;if(o.timeline.entries.length===0){let f=t.createElement("div");f.className="xeno-ui__empty",f.textContent="No messages yet",d.replaceChildren(f)}else d.replaceChildren(...o.timeline.entries.map(f=>xe(t,f,e)));T<48&&(d.scrollTop=d.scrollHeight),$(o),c.disabled=o.composer.disabled,c.setAttribute("aria-label",o.composer.inputLabel),c.placeholder=o.composer.placeholder,E.textContent=o.composer.sendLabel,E.disabled=o.composer.disabled,S.textContent=o.composer.cancelLabel,S.hidden=!o.timeline.busy}let y=null,P=!1;function V(){let o=t.defaultView?.requestAnimationFrame;if(o){if(y!==null)return;y=o.call(t.defaultView,()=>{y=null,C()});return}P||(P=!0,queueMicrotask(()=>{P=!1,C()}))}let j=e.subscribe(V);return C(),b(),{element:i,render:C,focusInput(){c.focus()},dispose(){j(),y!==null&&t.defaultView?.cancelAnimationFrame&&t.defaultView.cancelAnimationFrame(y),i.remove()}}}0&&(module.exports={XENO_UI_RENDERER_API_VERSION,createAgentUiController,createAgentUiView,dispatchAgentUiAction,isSafeMarkdownHref,mountAgentUi,parseMarkdown,xenoUiCss,xenoUiTokens});
34
+ `;var Q=64*1024;function pe(n){let e;try{e=JSON.stringify(n,null,2)??String(n)}catch{e="[Unserializable value]"}return e.length<=Q?e:`${e.slice(0,Q)}
35
+ [truncated]`}function ge(n){if(n.type==="message"){let e=n.data.role==="assistant";return{key:n.data.id,kind:e?"assistant-message":"user-message",role:"article",accessibleName:e?"Assistant message":"Your message",text:n.data.content,streaming:n.data.isStreaming}}if(n.type==="tool_call"){let e=n.data.durationMs===void 0?"":` in ${n.data.durationMs} ms`;return{key:n.data.id,kind:"tool-call",role:"status",accessibleName:`${n.data.toolName} tool ${n.data.status}`,text:`${n.data.toolName}: ${n.data.status}${e}`,detail:pe({input:n.data.input,result:n.data.result}),state:n.data.status}}return{key:n.data.id,kind:"error",role:"alert",accessibleName:"Agent error",text:n.data.message,retryable:n.data.retryable}}function z(n,e={}){let r=e.agentName?.trim()||"Xeno Agent",t=n.permissionRequest;return{apiVersion:1,revision:n.revision,region:{role:"region",accessibleName:e.regionLabel?.trim()||`${r} chat`},header:{title:r,statusRole:"status",statusText:n.status,tokenText:`${n.tokenUsage.total.toLocaleString()} tokens`},timeline:{role:"log",live:"polite",busy:n.isProcessing,entries:n.items.map(ge)},permission:t?{role:"alertdialog",accessibleName:`Permission required for ${t.toolName}`,description:t.description||t.detail,riskLevel:t.riskLevel,requestId:t.id,controls:[{label:"Allow once",decision:"allow"},{label:"Always allow",decision:"always"},{label:"Deny",decision:"deny"}]}:null,composer:{role:"form",inputLabel:e.inputLabel?.trim()||"Message Xeno Agent",placeholder:e.inputPlaceholder?.trim()||"Message or command...",disabled:n.isProcessing,sendLabel:"Send",cancelLabel:"Cancel"}}}async function S(n,e){switch(e.type){case"send":return n.sendMessage(e.text);case"cancel":return n.cancelExecution(),!0;case"clear":return n.clearMessages(),!0;case"retry":return n.retryLastMessage();case"permission":return n.resolvePermission(e.requestId,e.decision)}}var W="xeno-owned-agent-ui-v1";function fe(n,e,r){for(let t of D(r)){if(t.kind==="text"){e.append(n.createTextNode(t.text));continue}if(t.kind==="code-block"){let i=n.createElement("pre"),m=n.createElement("code");t.language&&(m.dataset.language=t.language),m.textContent=t.code,i.append(m),e.append(i);continue}if(t.kind==="inline-code"){let i=n.createElement("code");i.textContent=t.code,e.append(i);continue}if(t.kind==="strong"||t.kind==="emphasis"){let i=n.createElement(t.kind==="strong"?"strong":"em");i.textContent=t.text,e.append(i);continue}if(t.kind==="link"){if(!q(t.href)){e.append(n.createTextNode(t.text));continue}let i=n.createElement("a");i.textContent=t.text,i.href=t.href,i.rel="noopener noreferrer",(i.protocol==="http:"||i.protocol==="https:")&&(i.target="_blank"),e.append(i)}}}function M(n,e,r=""){let t=n.createElement("button");return t.type="button",t.className=`xeno-ui__button${r?` ${r}`:""}`,t.textContent=e,t}function xe(n,e,r){let t=n.createElement(e.role==="article"?"article":"div");if(t.className=`xeno-ui__entry xeno-ui__entry--${e.kind==="user-message"?"user":e.kind==="assistant-message"?"assistant":e.kind==="tool-call"?"tool":"error"}`,t.setAttribute("role",e.role),t.setAttribute("aria-label",e.accessibleName),t.dataset.xenoKey=e.key,e.streaming&&t.setAttribute("aria-busy","true"),fe(n,t,e.text),e.detail){let i=n.createElement("details");i.className="xeno-ui__details";let m=n.createElement("summary");m.textContent="Details";let g=n.createElement("pre");g.textContent=e.detail,i.append(m,g),t.append(i)}if(e.retryable){let i=M(n,"Retry");i.addEventListener("click",()=>{S(r,{type:"retry"})}),t.append(n.createTextNode(" "),i)}return t}function be(n,e){if(n.getElementById(W))return;let r=n.createElement("style");r.id=W,e&&(r.nonce=e),r.textContent=H,n.head.append(r)}function Y(n,e,r={}){let t=n.ownerDocument;r.injectStyles!==!1&&be(t,r.styleNonce);let i=t.createElement("section");i.className=`xeno-ui${r.className?` ${r.className}`:""}`;let m=t.createElement("header");m.className="xeno-ui__header";let g=t.createElement("h2");g.className="xeno-ui__title";let h=t.createElement("span");h.className="xeno-ui__status",h.setAttribute("role","status"),h.setAttribute("aria-live","polite");let N=t.createElement("span");N.className="xeno-ui__tokens";let _=M(t,"Clear");if(_.setAttribute("aria-label","Clear conversation"),_.addEventListener("click",()=>{S(e,{type:"clear"})}),m.append(g,h,N,_),r.onClose){let o=M(t,"X");o.setAttribute("aria-label","Close agent chat"),o.addEventListener("click",r.onClose),m.append(o)}let d=t.createElement("div");d.className="xeno-ui__timeline",d.setAttribute("role","log"),d.setAttribute("aria-live","polite"),d.setAttribute("aria-relevant","additions text");let k=t.createElement("div"),v=t.createElement("form");v.className="xeno-ui__composer",v.setAttribute("role","form");let c=t.createElement("textarea");c.className="xeno-ui__input",c.rows=1;let U=t.createElement("div");U.className="xeno-ui__controls";let R=M(t,"Cancel","xeno-ui__button--danger");R.addEventListener("click",()=>{S(e,{type:"cancel"})});let E=M(t,"Send","xeno-ui__button--primary");E.type="submit",U.append(R,E),v.append(c,U),i.append(m,d,k,v),n.replaceChildren(i);function b(){c.style.height="auto";let o=44,C=144,f=Math.max(c.scrollHeight,o);c.style.height=`${Math.min(f,C)}px`,c.style.overflowY=f>C?"auto":"hidden"}async function O(){let o=c.value;await S(e,{type:"send",text:o})&&(c.value="",b())}v.addEventListener("submit",o=>{o.preventDefault(),O()}),c.addEventListener("keydown",o=>{o.key==="Enter"&&(o.ctrlKey||o.metaKey)&&(o.preventDefault(),O())}),c.addEventListener("input",b);let p=null,w=null;function $(o){if(o.permission&&p===o.permission.requestId&&k.children.length>0)return;if(k.replaceChildren(),!o.permission){if(p){let a=w??c;queueMicrotask(()=>a.focus())}p=null,w=null;return}let C=p!==o.permission.requestId;if(C){let a=t.activeElement;w=a&&"focus"in a?a:c,p=o.permission.requestId}let f=t.createElement("section");f.className="xeno-ui__permission",f.setAttribute("role",o.permission.role),f.setAttribute("aria-modal","true"),f.setAttribute("aria-label",o.permission.accessibleName),f.dataset.risk=o.permission.riskLevel;let L=t.createElement("h3");L.className="xeno-ui__permission-title",L.textContent=o.permission.accessibleName;let s=t.createElement("div");s.id=`xeno-ui-permission-${o.permission.requestId}`,s.textContent=o.permission.description,f.setAttribute("aria-describedby",s.id);let l=t.createElement("div");l.className="xeno-ui__permission-actions";let x=null;for(let a of o.permission.controls){let u=M(t,a.label,a.decision==="deny"?"xeno-ui__button--danger":"");u.dataset.decision=a.decision,x??=u,u.addEventListener("click",()=>{S(e,{type:"permission",requestId:o.permission.requestId,decision:a.decision})}),l.append(u)}f.append(L,s,l),k.append(f),C&&x&&queueMicrotask(()=>x?.focus())}function T(){let o=z(e.getSnapshot(),r);i.setAttribute("role",o.region.role),i.setAttribute("aria-label",o.region.accessibleName),g.textContent=o.header.title,h.textContent=o.header.statusText,N.textContent=o.header.tokenText,d.setAttribute("aria-busy",String(o.timeline.busy));let C=d.scrollHeight-d.scrollTop-d.clientHeight;if(o.timeline.entries.length===0){let f=t.createElement("div");f.className="xeno-ui__empty",f.textContent="No messages yet",d.replaceChildren(f)}else d.replaceChildren(...o.timeline.entries.map(f=>xe(t,f,e)));C<48&&(d.scrollTop=d.scrollHeight),$(o),c.disabled=o.composer.disabled,c.setAttribute("aria-label",o.composer.inputLabel),c.placeholder=o.composer.placeholder,E.textContent=o.composer.sendLabel,E.disabled=o.composer.disabled,R.textContent=o.composer.cancelLabel,R.hidden=!o.timeline.busy}let y=null,P=!1;function V(){let o=t.defaultView?.requestAnimationFrame;if(o){if(y!==null)return;y=o.call(t.defaultView,()=>{y=null,T()});return}P||(P=!0,queueMicrotask(()=>{P=!1,T()}))}let j=e.subscribe(V);return T(),b(),{element:i,render:T,focusInput(){c.focus()},dispose(){j(),y!==null&&t.defaultView?.cancelAnimationFrame&&t.defaultView.cancelAnimationFrame(y),i.remove()}}}0&&(module.exports={XENO_UI_RENDERER_API_VERSION,createAgentUiController,createAgentUiView,dispatchAgentUiAction,isSafeMarkdownHref,mountAgentUi,parseMarkdown,xenoUiCss,xenoUiTokens});
package/dist/ui/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var W={View:"Read",Replace:"Write",GlobTool:"Glob",GrepTool:"Grep",SQLiteAnalyze:"SqliteAnalyze",ReadNotebook:"NotebookRead",NotebookEditCell:"NotebookEdit"};function Y(n){return W[n]??n}var J=new Set(["Read","Glob","Grep","LS","Think","dispatch_agent","ElfAnalyze"]),Q=new Set(["Write","Edit"]),Z=new Set(["Bash"]);function F(n){let t=Y(n);return Z.has(t)?"high":J.has(t)?"low":(Q.has(t),"medium")}var L=1;function ee(n){let t=n.config;return t&&typeof t=="object"?t:null}function H(n){let t=n.tokenUsage;return{input:Number(t.input)||0,output:Number(t.output)||0,total:Number(t.total)||0}}function te(n){let t=n.toLowerCase();return["rate limit","429","network","timeout","econnrefused","api error","unreachable"].some(r=>t.includes(r))}function ne(n){let t=n.agent,r=n.now??Date.now,e=0,i=n.createId??(()=>`xeno-ui-${r()}-${++e}`),m=new Set,g=[],h="idle",N=H(t),v=null,d=null,k=null,_=null,c="",U=null,R=0,E=!1,b=!1,O=0,p=ee(t),w=p?.permissionEngine,D=w?.promptFn;function C(){return Object.freeze({apiVersion:1,revision:O,items:Object.freeze([...g]),isProcessing:E,status:h,tokenUsage:Object.freeze({...N}),permissionRequest:v?Object.freeze({...v}):null,lastUserMessage:k})}function y(){O+=1;let s=C();for(let l of[...m])l(s)}function S(s){g=[...g,s],y()}function V(s){let l=[...g];for(let x=l.length-1;x>=0;x-=1){let a=l[x];if(a?.type==="message"&&a.data.role==="assistant"){l[x]={type:"message",data:s(a.data)},g=l,y();return}}}function q(s,l){let x=[...g];for(let a=x.length-1;a>=0;a-=1){let u=x[a];if(u?.type==="tool_call"&&u.data.id===s){x[a]={type:"tool_call",data:l(u.data)},g=x,y();return}}}function o(){_&&(V(s=>({...s,isStreaming:!1})),_=null,c="")}function T(s){let l={id:i(),message:s,retryable:te(s),timestamp:r()};S({type:"error",data:l})}function f(s){p&&(p.onText=s.onText,p.onToolStart=s.onToolStart,p.onToolEnd=s.onToolEnd,p.onError=s.onError)}async function I(s){let l=s.trim();if(b||E||!l)return!1;E=!0,k=l,h="thinking",_=null,c="";let x={id:i(),role:"user",content:l,timestamp:r()};g=[...g,{type:"message",data:x}],y();let a={onText:p?.onText,onToolStart:p?.onToolStart,onToolEnd:p?.onToolEnd,onError:p?.onError};p&&(p.onText=u=>{a.onText?.(u),!b&&(c+=u,_?V(A=>({...A,content:c,isStreaming:!0})):(_=i(),S({type:"message",data:{id:_,role:"assistant",content:c,timestamp:r(),isStreaming:!0}})))},p.onToolStart=(u,A)=>{a.onToolStart?.(u,A),!b&&(o(),h="executing",U=i(),R=r(),S({type:"tool_call",data:{id:U,toolName:u,input:A,status:"running",timestamp:r()}}))},p.onToolEnd=(u,A)=>{a.onToolEnd?.(u,A),!b&&(U&&(q(U,K=>({...K,status:A.success?"success":"error",result:A,durationMs:Math.max(0,r()-R)})),U=null),h="thinking",y())},p.onError=(u,A)=>a.onError?.(u,A));try{await t.run(l),b||(o(),h="idle",N=H(t),y())}catch(u){if(!b){o();let A=u instanceof Error?u:new Error(String(u));h=A.name==="AgentInterruptedError"?"idle":"error",A.name!=="AgentInterruptedError"&&T(A.message),N=H(t),y()}}finally{E=!1,f(a),b||y()}return!0}return n.enablePermissionRequests&&w&&(w.promptFn=s=>(d&&d("deny"),new Promise(l=>{d=l,v={id:i(),toolName:s.toolName,detail:s.detail,description:s.description,operation:s.operation,preview:s.preview,riskLevel:F(s.toolName),timestamp:r()},y()}))),{apiVersion:1,getSnapshot:C,subscribe(s){if(b)throw new Error("Agent UI controller is disposed");return m.add(s),s(C()),()=>m.delete(s)},sendMessage:I,cancelExecution(){!b&&E&&t.cancelCurrentTurn()},clearMessages(){b||(g=[],_=null,c="",y())},retryLastMessage(){return b||E||!k?Promise.resolve(!1):(g=g.filter((s,l,x)=>s.type!=="error"?!0:x.slice(l+1).some(a=>a.type!=="error")),h="idle",y(),I(k))},resolvePermission(s,l){if(b||!v||v.id!==s||!d)return!1;let x=d;return d=null,v=null,y(),x(l),!0},dispose(){b||(b=!0,d&&d("deny"),d=null,v=null,w&&(w.promptFn=D),m.clear())}}}function oe(n){let t=[],r=[[/```([\w-]*)\n([\s\S]*?)```/,e=>({kind:"code-block",language:e[1]??"",code:e[2]??""})],[/`([^`\n]+)`/,e=>({kind:"inline-code",code:e[1]??""})],[/\*\*(.+?)\*\*/,e=>({kind:"strong",text:e[1]??""})],[/\*([^*\n]+)\*/,e=>({kind:"emphasis",text:e[1]??""})],[/\[([^\]]+)\]\(([^)\s]+)\)/,e=>({kind:"link",text:e[1]??"",href:e[2]??""})]];for(let[e,i]of r){let m=n.match(e);m?.index!==void 0&&t.push({index:m.index,value:i(m),length:m[0].length})}return t.sort((e,i)=>e.index-i.index),t[0]??null}function z(n){let t=[],r=n;for(;r;){let e=oe(r);if(!e){t.push({kind:"text",text:r});break}e.index>0&&t.push({kind:"text",text:r.slice(0,e.index)}),t.push(e.value),r=r.slice(e.index+e.length)}return t}function $(n){try{let t=new URL(n,"https://xeno.invalid/");return t.protocol==="https:"||t.protocol==="http:"||t.protocol==="mailto:"}catch{return!1}}var re=Object.freeze({background:"#101214",surface:"#181b1f",surfaceRaised:"#20242a",border:"#343a42",text:"#f2f4f7",textMuted:"#aab2bd",accent:"#5da9e9",success:"#56b881",warning:"#e7b65a",danger:"#e57373",focus:"#8bc5f4"}),j=`
1
+ var Q={View:"Read",Replace:"Write",GlobTool:"Glob",GrepTool:"Grep",SQLiteAnalyze:"SqliteAnalyze",ReadNotebook:"NotebookRead",NotebookEditCell:"NotebookEdit",CoordinationSend:"Send",CoordinationQuery:"Receive"};function W(n){return Q[n]??n}var Y=new Set(["Read","Glob","Grep","LS","Think","dispatch_agent","ElfAnalyze","Receive","ListAgents","ListSessions","CoordinationQuery"]),J=new Set(["Write","Edit","Send","CoordinationSend"]),Z=new Set(["Bash"]);function F(n){let t=W(n);return Z.has(t)?"high":Y.has(t)?"low":(J.has(t),"medium")}var L=1;function ee(n){let t=n.config;return t&&typeof t=="object"?t:null}function H(n){let t=n.tokenUsage;return{input:Number(t.input)||0,output:Number(t.output)||0,total:Number(t.total)||0}}function te(n){let t=n.toLowerCase();return["rate limit","429","network","timeout","econnrefused","api error","unreachable"].some(r=>t.includes(r))}function ne(n){let t=n.agent,r=n.now??Date.now,e=0,i=n.createId??(()=>`xeno-ui-${r()}-${++e}`),m=new Set,g=[],h="idle",S=H(t),_=null,d=null,k=null,v=null,c="",U=null,N=0,E=!1,b=!1,O=0,p=ee(t),w=p?.permissionEngine,D=w?.promptFn;function T(){return Object.freeze({apiVersion:1,revision:O,items:Object.freeze([...g]),isProcessing:E,status:h,tokenUsage:Object.freeze({...S}),permissionRequest:_?Object.freeze({..._}):null,lastUserMessage:k})}function y(){O+=1;let s=T();for(let l of[...m])l(s)}function R(s){g=[...g,s],y()}function V(s){let l=[...g];for(let x=l.length-1;x>=0;x-=1){let a=l[x];if(a?.type==="message"&&a.data.role==="assistant"){l[x]={type:"message",data:s(a.data)},g=l,y();return}}}function q(s,l){let x=[...g];for(let a=x.length-1;a>=0;a-=1){let u=x[a];if(u?.type==="tool_call"&&u.data.id===s){x[a]={type:"tool_call",data:l(u.data)},g=x,y();return}}}function o(){v&&(V(s=>({...s,isStreaming:!1})),v=null,c="")}function C(s){let l={id:i(),message:s,retryable:te(s),timestamp:r()};R({type:"error",data:l})}function f(s){p&&(p.onText=s.onText,p.onToolStart=s.onToolStart,p.onToolEnd=s.onToolEnd,p.onError=s.onError)}async function I(s){let l=s.trim();if(b||E||!l)return!1;E=!0,k=l,h="thinking",v=null,c="";let x={id:i(),role:"user",content:l,timestamp:r()};g=[...g,{type:"message",data:x}],y();let a={onText:p?.onText,onToolStart:p?.onToolStart,onToolEnd:p?.onToolEnd,onError:p?.onError};p&&(p.onText=u=>{a.onText?.(u),!b&&(c+=u,v?V(A=>({...A,content:c,isStreaming:!0})):(v=i(),R({type:"message",data:{id:v,role:"assistant",content:c,timestamp:r(),isStreaming:!0}})))},p.onToolStart=(u,A)=>{a.onToolStart?.(u,A),!b&&(o(),h="executing",U=i(),N=r(),R({type:"tool_call",data:{id:U,toolName:u,input:A,status:"running",timestamp:r()}}))},p.onToolEnd=(u,A)=>{a.onToolEnd?.(u,A),!b&&(U&&(q(U,K=>({...K,status:A.success?"success":"error",result:A,durationMs:Math.max(0,r()-N)})),U=null),h="thinking",y())},p.onError=(u,A)=>a.onError?.(u,A));try{await t.run(l),b||(o(),h="idle",S=H(t),y())}catch(u){if(!b){o();let A=u instanceof Error?u:new Error(String(u));h=A.name==="AgentInterruptedError"?"idle":"error",A.name!=="AgentInterruptedError"&&C(A.message),S=H(t),y()}}finally{E=!1,f(a),b||y()}return!0}return n.enablePermissionRequests&&w&&(w.promptFn=s=>(d&&d("deny"),new Promise(l=>{d=l,_={id:i(),toolName:s.toolName,detail:s.detail,description:s.description,operation:s.operation,preview:s.preview,riskLevel:F(s.toolName),timestamp:r()},y()}))),{apiVersion:1,getSnapshot:T,subscribe(s){if(b)throw new Error("Agent UI controller is disposed");return m.add(s),s(T()),()=>m.delete(s)},sendMessage:I,cancelExecution(){!b&&E&&t.cancelCurrentTurn()},clearMessages(){b||(g=[],v=null,c="",y())},retryLastMessage(){return b||E||!k?Promise.resolve(!1):(g=g.filter((s,l,x)=>s.type!=="error"?!0:x.slice(l+1).some(a=>a.type!=="error")),h="idle",y(),I(k))},resolvePermission(s,l){if(b||!_||_.id!==s||!d)return!1;let x=d;return d=null,_=null,y(),x(l),!0},dispose(){b||(b=!0,d&&d("deny"),d=null,_=null,w&&(w.promptFn=D),m.clear())}}}function oe(n){let t=[],r=[[/```([\w-]*)\n([\s\S]*?)```/,e=>({kind:"code-block",language:e[1]??"",code:e[2]??""})],[/`([^`\n]+)`/,e=>({kind:"inline-code",code:e[1]??""})],[/\*\*(.+?)\*\*/,e=>({kind:"strong",text:e[1]??""})],[/\*([^*\n]+)\*/,e=>({kind:"emphasis",text:e[1]??""})],[/\[([^\]]+)\]\(([^)\s]+)\)/,e=>({kind:"link",text:e[1]??"",href:e[2]??""})]];for(let[e,i]of r){let m=n.match(e);m?.index!==void 0&&t.push({index:m.index,value:i(m),length:m[0].length})}return t.sort((e,i)=>e.index-i.index),t[0]??null}function z(n){let t=[],r=n;for(;r;){let e=oe(r);if(!e){t.push({kind:"text",text:r});break}e.index>0&&t.push({kind:"text",text:r.slice(0,e.index)}),t.push(e.value),r=r.slice(e.index+e.length)}return t}function $(n){try{let t=new URL(n,"https://xeno.invalid/");return t.protocol==="https:"||t.protocol==="http:"||t.protocol==="mailto:"}catch{return!1}}var re=Object.freeze({background:"#101214",surface:"#181b1f",surfaceRaised:"#20242a",border:"#343a42",text:"#f2f4f7",textMuted:"#aab2bd",accent:"#5da9e9",success:"#56b881",warning:"#e7b65a",danger:"#e57373",focus:"#8bc5f4"}),j=`
2
2
  .xeno-ui{box-sizing:border-box;display:grid;grid-template-rows:auto minmax(12rem,1fr) auto;width:min(32rem,100%);height:min(44rem,100%);min-height:24rem;border:1px solid var(--xeno-border,#343a42);background:var(--xeno-bg,#101214);color:var(--xeno-text,#f2f4f7);font:14px/1.45 ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;letter-spacing:0}
3
3
  .xeno-ui *{box-sizing:border-box;letter-spacing:0}
4
4
  .xeno-ui__header{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-bottom:1px solid var(--xeno-border,#343a42);background:var(--xeno-surface,#181b1f)}
@@ -32,4 +32,4 @@ var W={View:"Read",Replace:"Write",GlobTool:"Glob",GrepTool:"Grep",SQLiteAnalyze
32
32
  @media (max-width:36rem){.xeno-ui{width:100%;height:100%;border-left:0;border-right:0}.xeno-ui__entry--user,.xeno-ui__entry--assistant{margin-left:0;margin-right:0}.xeno-ui__composer{grid-template-columns:1fr}.xeno-ui__controls{justify-content:flex-end}}
33
33
  @media (prefers-reduced-motion:reduce){.xeno-ui *{scroll-behavior:auto!important;transition:none!important}}
34
34
  `;var G=64*1024;function ie(n){let t;try{t=JSON.stringify(n,null,2)??String(n)}catch{t="[Unserializable value]"}return t.length<=G?t:`${t.slice(0,G)}
35
- [truncated]`}function se(n){if(n.type==="message"){let t=n.data.role==="assistant";return{key:n.data.id,kind:t?"assistant-message":"user-message",role:"article",accessibleName:t?"Assistant message":"Your message",text:n.data.content,streaming:n.data.isStreaming}}if(n.type==="tool_call"){let t=n.data.durationMs===void 0?"":` in ${n.data.durationMs} ms`;return{key:n.data.id,kind:"tool-call",role:"status",accessibleName:`${n.data.toolName} tool ${n.data.status}`,text:`${n.data.toolName}: ${n.data.status}${t}`,detail:ie({input:n.data.input,result:n.data.result}),state:n.data.status}}return{key:n.data.id,kind:"error",role:"alert",accessibleName:"Agent error",text:n.data.message,retryable:n.data.retryable}}function X(n,t={}){let r=t.agentName?.trim()||"Xeno Agent",e=n.permissionRequest;return{apiVersion:1,revision:n.revision,region:{role:"region",accessibleName:t.regionLabel?.trim()||`${r} chat`},header:{title:r,statusRole:"status",statusText:n.status,tokenText:`${n.tokenUsage.total.toLocaleString()} tokens`},timeline:{role:"log",live:"polite",busy:n.isProcessing,entries:n.items.map(se)},permission:e?{role:"alertdialog",accessibleName:`Permission required for ${e.toolName}`,description:e.description||e.detail,riskLevel:e.riskLevel,requestId:e.id,controls:[{label:"Allow once",decision:"allow"},{label:"Always allow",decision:"always"},{label:"Deny",decision:"deny"}]}:null,composer:{role:"form",inputLabel:t.inputLabel?.trim()||"Message Xeno Agent",placeholder:t.inputPlaceholder?.trim()||"Message or command...",disabled:n.isProcessing,sendLabel:"Send",cancelLabel:"Cancel"}}}async function P(n,t){switch(t.type){case"send":return n.sendMessage(t.text);case"cancel":return n.cancelExecution(),!0;case"clear":return n.clearMessages(),!0;case"retry":return n.retryLastMessage();case"permission":return n.resolvePermission(t.requestId,t.decision)}}var B="xeno-owned-agent-ui-v1";function ae(n,t,r){for(let e of z(r)){if(e.kind==="text"){t.append(n.createTextNode(e.text));continue}if(e.kind==="code-block"){let i=n.createElement("pre"),m=n.createElement("code");e.language&&(m.dataset.language=e.language),m.textContent=e.code,i.append(m),t.append(i);continue}if(e.kind==="inline-code"){let i=n.createElement("code");i.textContent=e.code,t.append(i);continue}if(e.kind==="strong"||e.kind==="emphasis"){let i=n.createElement(e.kind==="strong"?"strong":"em");i.textContent=e.text,t.append(i);continue}if(e.kind==="link"){if(!$(e.href)){t.append(n.createTextNode(e.text));continue}let i=n.createElement("a");i.textContent=e.text,i.href=e.href,i.rel="noopener noreferrer",(i.protocol==="http:"||i.protocol==="https:")&&(i.target="_blank"),t.append(i)}}}function M(n,t,r=""){let e=n.createElement("button");return e.type="button",e.className=`xeno-ui__button${r?` ${r}`:""}`,e.textContent=t,e}function le(n,t,r){let e=n.createElement(t.role==="article"?"article":"div");if(e.className=`xeno-ui__entry xeno-ui__entry--${t.kind==="user-message"?"user":t.kind==="assistant-message"?"assistant":t.kind==="tool-call"?"tool":"error"}`,e.setAttribute("role",t.role),e.setAttribute("aria-label",t.accessibleName),e.dataset.xenoKey=t.key,t.streaming&&e.setAttribute("aria-busy","true"),ae(n,e,t.text),t.detail){let i=n.createElement("details");i.className="xeno-ui__details";let m=n.createElement("summary");m.textContent="Details";let g=n.createElement("pre");g.textContent=t.detail,i.append(m,g),e.append(i)}if(t.retryable){let i=M(n,"Retry");i.addEventListener("click",()=>{P(r,{type:"retry"})}),e.append(n.createTextNode(" "),i)}return e}function ce(n,t){if(n.getElementById(B))return;let r=n.createElement("style");r.id=B,t&&(r.nonce=t),r.textContent=j,n.head.append(r)}function de(n,t,r={}){let e=n.ownerDocument;r.injectStyles!==!1&&ce(e,r.styleNonce);let i=e.createElement("section");i.className=`xeno-ui${r.className?` ${r.className}`:""}`;let m=e.createElement("header");m.className="xeno-ui__header";let g=e.createElement("h2");g.className="xeno-ui__title";let h=e.createElement("span");h.className="xeno-ui__status",h.setAttribute("role","status"),h.setAttribute("aria-live","polite");let N=e.createElement("span");N.className="xeno-ui__tokens";let v=M(e,"Clear");if(v.setAttribute("aria-label","Clear conversation"),v.addEventListener("click",()=>{P(t,{type:"clear"})}),m.append(g,h,N,v),r.onClose){let o=M(e,"X");o.setAttribute("aria-label","Close agent chat"),o.addEventListener("click",r.onClose),m.append(o)}let d=e.createElement("div");d.className="xeno-ui__timeline",d.setAttribute("role","log"),d.setAttribute("aria-live","polite"),d.setAttribute("aria-relevant","additions text");let k=e.createElement("div"),_=e.createElement("form");_.className="xeno-ui__composer",_.setAttribute("role","form");let c=e.createElement("textarea");c.className="xeno-ui__input",c.rows=1;let U=e.createElement("div");U.className="xeno-ui__controls";let R=M(e,"Cancel","xeno-ui__button--danger");R.addEventListener("click",()=>{P(t,{type:"cancel"})});let E=M(e,"Send","xeno-ui__button--primary");E.type="submit",U.append(R,E),_.append(c,U),i.append(m,d,k,_),n.replaceChildren(i);function b(){c.style.height="auto";let o=44,T=144,f=Math.max(c.scrollHeight,o);c.style.height=`${Math.min(f,T)}px`,c.style.overflowY=f>T?"auto":"hidden"}async function O(){let o=c.value;await P(t,{type:"send",text:o})&&(c.value="",b())}_.addEventListener("submit",o=>{o.preventDefault(),O()}),c.addEventListener("keydown",o=>{o.key==="Enter"&&(o.ctrlKey||o.metaKey)&&(o.preventDefault(),O())}),c.addEventListener("input",b);let p=null,w=null;function D(o){if(o.permission&&p===o.permission.requestId&&k.children.length>0)return;if(k.replaceChildren(),!o.permission){if(p){let a=w??c;queueMicrotask(()=>a.focus())}p=null,w=null;return}let T=p!==o.permission.requestId;if(T){let a=e.activeElement;w=a&&"focus"in a?a:c,p=o.permission.requestId}let f=e.createElement("section");f.className="xeno-ui__permission",f.setAttribute("role",o.permission.role),f.setAttribute("aria-modal","true"),f.setAttribute("aria-label",o.permission.accessibleName),f.dataset.risk=o.permission.riskLevel;let I=e.createElement("h3");I.className="xeno-ui__permission-title",I.textContent=o.permission.accessibleName;let s=e.createElement("div");s.id=`xeno-ui-permission-${o.permission.requestId}`,s.textContent=o.permission.description,f.setAttribute("aria-describedby",s.id);let l=e.createElement("div");l.className="xeno-ui__permission-actions";let x=null;for(let a of o.permission.controls){let u=M(e,a.label,a.decision==="deny"?"xeno-ui__button--danger":"");u.dataset.decision=a.decision,x??=u,u.addEventListener("click",()=>{P(t,{type:"permission",requestId:o.permission.requestId,decision:a.decision})}),l.append(u)}f.append(I,s,l),k.append(f),T&&x&&queueMicrotask(()=>x?.focus())}function C(){let o=X(t.getSnapshot(),r);i.setAttribute("role",o.region.role),i.setAttribute("aria-label",o.region.accessibleName),g.textContent=o.header.title,h.textContent=o.header.statusText,N.textContent=o.header.tokenText,d.setAttribute("aria-busy",String(o.timeline.busy));let T=d.scrollHeight-d.scrollTop-d.clientHeight;if(o.timeline.entries.length===0){let f=e.createElement("div");f.className="xeno-ui__empty",f.textContent="No messages yet",d.replaceChildren(f)}else d.replaceChildren(...o.timeline.entries.map(f=>le(e,f,t)));T<48&&(d.scrollTop=d.scrollHeight),D(o),c.disabled=o.composer.disabled,c.setAttribute("aria-label",o.composer.inputLabel),c.placeholder=o.composer.placeholder,E.textContent=o.composer.sendLabel,E.disabled=o.composer.disabled,R.textContent=o.composer.cancelLabel,R.hidden=!o.timeline.busy}let y=null,S=!1;function V(){let o=e.defaultView?.requestAnimationFrame;if(o){if(y!==null)return;y=o.call(e.defaultView,()=>{y=null,C()});return}S||(S=!0,queueMicrotask(()=>{S=!1,C()}))}let q=t.subscribe(V);return C(),b(),{element:i,render:C,focusInput(){c.focus()},dispose(){q(),y!==null&&e.defaultView?.cancelAnimationFrame&&e.defaultView.cancelAnimationFrame(y),i.remove()}}}export{L as XENO_UI_RENDERER_API_VERSION,ne as createAgentUiController,X as createAgentUiView,P as dispatchAgentUiAction,$ as isSafeMarkdownHref,de as mountAgentUi,z as parseMarkdown,j as xenoUiCss,re as xenoUiTokens};
35
+ [truncated]`}function se(n){if(n.type==="message"){let t=n.data.role==="assistant";return{key:n.data.id,kind:t?"assistant-message":"user-message",role:"article",accessibleName:t?"Assistant message":"Your message",text:n.data.content,streaming:n.data.isStreaming}}if(n.type==="tool_call"){let t=n.data.durationMs===void 0?"":` in ${n.data.durationMs} ms`;return{key:n.data.id,kind:"tool-call",role:"status",accessibleName:`${n.data.toolName} tool ${n.data.status}`,text:`${n.data.toolName}: ${n.data.status}${t}`,detail:ie({input:n.data.input,result:n.data.result}),state:n.data.status}}return{key:n.data.id,kind:"error",role:"alert",accessibleName:"Agent error",text:n.data.message,retryable:n.data.retryable}}function X(n,t={}){let r=t.agentName?.trim()||"Xeno Agent",e=n.permissionRequest;return{apiVersion:1,revision:n.revision,region:{role:"region",accessibleName:t.regionLabel?.trim()||`${r} chat`},header:{title:r,statusRole:"status",statusText:n.status,tokenText:`${n.tokenUsage.total.toLocaleString()} tokens`},timeline:{role:"log",live:"polite",busy:n.isProcessing,entries:n.items.map(se)},permission:e?{role:"alertdialog",accessibleName:`Permission required for ${e.toolName}`,description:e.description||e.detail,riskLevel:e.riskLevel,requestId:e.id,controls:[{label:"Allow once",decision:"allow"},{label:"Always allow",decision:"always"},{label:"Deny",decision:"deny"}]}:null,composer:{role:"form",inputLabel:t.inputLabel?.trim()||"Message Xeno Agent",placeholder:t.inputPlaceholder?.trim()||"Message or command...",disabled:n.isProcessing,sendLabel:"Send",cancelLabel:"Cancel"}}}async function P(n,t){switch(t.type){case"send":return n.sendMessage(t.text);case"cancel":return n.cancelExecution(),!0;case"clear":return n.clearMessages(),!0;case"retry":return n.retryLastMessage();case"permission":return n.resolvePermission(t.requestId,t.decision)}}var B="xeno-owned-agent-ui-v1";function ae(n,t,r){for(let e of z(r)){if(e.kind==="text"){t.append(n.createTextNode(e.text));continue}if(e.kind==="code-block"){let i=n.createElement("pre"),m=n.createElement("code");e.language&&(m.dataset.language=e.language),m.textContent=e.code,i.append(m),t.append(i);continue}if(e.kind==="inline-code"){let i=n.createElement("code");i.textContent=e.code,t.append(i);continue}if(e.kind==="strong"||e.kind==="emphasis"){let i=n.createElement(e.kind==="strong"?"strong":"em");i.textContent=e.text,t.append(i);continue}if(e.kind==="link"){if(!$(e.href)){t.append(n.createTextNode(e.text));continue}let i=n.createElement("a");i.textContent=e.text,i.href=e.href,i.rel="noopener noreferrer",(i.protocol==="http:"||i.protocol==="https:")&&(i.target="_blank"),t.append(i)}}}function M(n,t,r=""){let e=n.createElement("button");return e.type="button",e.className=`xeno-ui__button${r?` ${r}`:""}`,e.textContent=t,e}function le(n,t,r){let e=n.createElement(t.role==="article"?"article":"div");if(e.className=`xeno-ui__entry xeno-ui__entry--${t.kind==="user-message"?"user":t.kind==="assistant-message"?"assistant":t.kind==="tool-call"?"tool":"error"}`,e.setAttribute("role",t.role),e.setAttribute("aria-label",t.accessibleName),e.dataset.xenoKey=t.key,t.streaming&&e.setAttribute("aria-busy","true"),ae(n,e,t.text),t.detail){let i=n.createElement("details");i.className="xeno-ui__details";let m=n.createElement("summary");m.textContent="Details";let g=n.createElement("pre");g.textContent=t.detail,i.append(m,g),e.append(i)}if(t.retryable){let i=M(n,"Retry");i.addEventListener("click",()=>{P(r,{type:"retry"})}),e.append(n.createTextNode(" "),i)}return e}function ce(n,t){if(n.getElementById(B))return;let r=n.createElement("style");r.id=B,t&&(r.nonce=t),r.textContent=j,n.head.append(r)}function de(n,t,r={}){let e=n.ownerDocument;r.injectStyles!==!1&&ce(e,r.styleNonce);let i=e.createElement("section");i.className=`xeno-ui${r.className?` ${r.className}`:""}`;let m=e.createElement("header");m.className="xeno-ui__header";let g=e.createElement("h2");g.className="xeno-ui__title";let h=e.createElement("span");h.className="xeno-ui__status",h.setAttribute("role","status"),h.setAttribute("aria-live","polite");let S=e.createElement("span");S.className="xeno-ui__tokens";let _=M(e,"Clear");if(_.setAttribute("aria-label","Clear conversation"),_.addEventListener("click",()=>{P(t,{type:"clear"})}),m.append(g,h,S,_),r.onClose){let o=M(e,"X");o.setAttribute("aria-label","Close agent chat"),o.addEventListener("click",r.onClose),m.append(o)}let d=e.createElement("div");d.className="xeno-ui__timeline",d.setAttribute("role","log"),d.setAttribute("aria-live","polite"),d.setAttribute("aria-relevant","additions text");let k=e.createElement("div"),v=e.createElement("form");v.className="xeno-ui__composer",v.setAttribute("role","form");let c=e.createElement("textarea");c.className="xeno-ui__input",c.rows=1;let U=e.createElement("div");U.className="xeno-ui__controls";let N=M(e,"Cancel","xeno-ui__button--danger");N.addEventListener("click",()=>{P(t,{type:"cancel"})});let E=M(e,"Send","xeno-ui__button--primary");E.type="submit",U.append(N,E),v.append(c,U),i.append(m,d,k,v),n.replaceChildren(i);function b(){c.style.height="auto";let o=44,C=144,f=Math.max(c.scrollHeight,o);c.style.height=`${Math.min(f,C)}px`,c.style.overflowY=f>C?"auto":"hidden"}async function O(){let o=c.value;await P(t,{type:"send",text:o})&&(c.value="",b())}v.addEventListener("submit",o=>{o.preventDefault(),O()}),c.addEventListener("keydown",o=>{o.key==="Enter"&&(o.ctrlKey||o.metaKey)&&(o.preventDefault(),O())}),c.addEventListener("input",b);let p=null,w=null;function D(o){if(o.permission&&p===o.permission.requestId&&k.children.length>0)return;if(k.replaceChildren(),!o.permission){if(p){let a=w??c;queueMicrotask(()=>a.focus())}p=null,w=null;return}let C=p!==o.permission.requestId;if(C){let a=e.activeElement;w=a&&"focus"in a?a:c,p=o.permission.requestId}let f=e.createElement("section");f.className="xeno-ui__permission",f.setAttribute("role",o.permission.role),f.setAttribute("aria-modal","true"),f.setAttribute("aria-label",o.permission.accessibleName),f.dataset.risk=o.permission.riskLevel;let I=e.createElement("h3");I.className="xeno-ui__permission-title",I.textContent=o.permission.accessibleName;let s=e.createElement("div");s.id=`xeno-ui-permission-${o.permission.requestId}`,s.textContent=o.permission.description,f.setAttribute("aria-describedby",s.id);let l=e.createElement("div");l.className="xeno-ui__permission-actions";let x=null;for(let a of o.permission.controls){let u=M(e,a.label,a.decision==="deny"?"xeno-ui__button--danger":"");u.dataset.decision=a.decision,x??=u,u.addEventListener("click",()=>{P(t,{type:"permission",requestId:o.permission.requestId,decision:a.decision})}),l.append(u)}f.append(I,s,l),k.append(f),C&&x&&queueMicrotask(()=>x?.focus())}function T(){let o=X(t.getSnapshot(),r);i.setAttribute("role",o.region.role),i.setAttribute("aria-label",o.region.accessibleName),g.textContent=o.header.title,h.textContent=o.header.statusText,S.textContent=o.header.tokenText,d.setAttribute("aria-busy",String(o.timeline.busy));let C=d.scrollHeight-d.scrollTop-d.clientHeight;if(o.timeline.entries.length===0){let f=e.createElement("div");f.className="xeno-ui__empty",f.textContent="No messages yet",d.replaceChildren(f)}else d.replaceChildren(...o.timeline.entries.map(f=>le(e,f,t)));C<48&&(d.scrollTop=d.scrollHeight),D(o),c.disabled=o.composer.disabled,c.setAttribute("aria-label",o.composer.inputLabel),c.placeholder=o.composer.placeholder,E.textContent=o.composer.sendLabel,E.disabled=o.composer.disabled,N.textContent=o.composer.cancelLabel,N.hidden=!o.timeline.busy}let y=null,R=!1;function V(){let o=e.defaultView?.requestAnimationFrame;if(o){if(y!==null)return;y=o.call(e.defaultView,()=>{y=null,T()});return}R||(R=!0,queueMicrotask(()=>{R=!1,T()}))}let q=t.subscribe(V);return T(),b(),{element:i,render:T,focusInput(){c.focus()},dispose(){q(),y!==null&&e.defaultView?.cancelAnimationFrame&&e.defaultView.cancelAnimationFrame(y),i.remove()}}}export{L as XENO_UI_RENDERER_API_VERSION,ne as createAgentUiController,X as createAgentUiView,P as dispatchAgentUiAction,$ as isSafeMarkdownHref,de as mountAgentUi,z as parseMarkdown,j as xenoUiCss,re as xenoUiTokens};
@@ -1 +1 @@
1
- {"inputs":{"src/tools/tool-names.ts":{"bytes":2604,"imports":[],"format":"esm"},"src/ui/types.ts":{"bytes":4274,"imports":[],"format":"esm"},"src/ui/controller.ts":{"bytes":10384,"imports":[{"path":"src/tools/tool-names.ts","kind":"import-statement","original":"../tools/tool-names.js"},{"path":"src/ui/types.ts","kind":"import-statement","original":"./types.js"}],"format":"esm"},"src/ui/markdown.ts":{"bytes":2181,"imports":[],"format":"esm"},"src/ui/styles.ts":{"bytes":4255,"imports":[],"format":"esm"},"src/ui/view-model.ts":{"bytes":3744,"imports":[{"path":"src/ui/types.ts","kind":"import-statement","original":"./types.js"}],"format":"esm"},"src/ui/dom-renderer.ts":{"bytes":11767,"imports":[{"path":"src/ui/markdown.ts","kind":"import-statement","original":"./markdown.js"},{"path":"src/ui/styles.ts","kind":"import-statement","original":"./styles.js"},{"path":"src/ui/view-model.ts","kind":"import-statement","original":"./view-model.js"}],"format":"esm"},"src/ui/index.ts":{"bytes":1059,"imports":[{"path":"src/ui/controller.ts","kind":"import-statement","original":"./controller.js"},{"path":"src/ui/dom-renderer.ts","kind":"import-statement","original":"./dom-renderer.js"},{"path":"src/ui/markdown.ts","kind":"import-statement","original":"./markdown.js"},{"path":"src/ui/styles.ts","kind":"import-statement","original":"./styles.js"},{"path":"src/ui/view-model.ts","kind":"import-statement","original":"./view-model.js"},{"path":"src/ui/types.ts","kind":"import-statement","original":"./types.js"}],"format":"esm"}},"outputs":{"dist/ui/index.cjs":{"imports":[],"exports":[],"entryPoint":"src/ui/index.ts","inputs":{"src/ui/index.ts":{"bytesInOutput":257},"src/tools/tool-names.ts":{"bytesInOutput":409},"src/ui/types.ts":{"bytesInOutput":8},"src/ui/controller.ts":{"bytesInOutput":3352},"src/ui/markdown.ts":{"bytesInOutput":864},"src/ui/styles.ts":{"bytesInOutput":4161},"src/ui/view-model.ts":{"bytesInOutput":2008},"src/ui/dom-renderer.ts":{"bytesInOutput":6079}},"bytes":17756}}}
1
+ {"inputs":{"src/tools/tool-names.ts":{"bytes":2779,"imports":[],"format":"esm"},"src/ui/types.ts":{"bytes":4274,"imports":[],"format":"esm"},"src/ui/controller.ts":{"bytes":10384,"imports":[{"path":"src/tools/tool-names.ts","kind":"import-statement","original":"../tools/tool-names.js"},{"path":"src/ui/types.ts","kind":"import-statement","original":"./types.js"}],"format":"esm"},"src/ui/markdown.ts":{"bytes":2181,"imports":[],"format":"esm"},"src/ui/styles.ts":{"bytes":4255,"imports":[],"format":"esm"},"src/ui/view-model.ts":{"bytes":3744,"imports":[{"path":"src/ui/types.ts","kind":"import-statement","original":"./types.js"}],"format":"esm"},"src/ui/dom-renderer.ts":{"bytes":11767,"imports":[{"path":"src/ui/markdown.ts","kind":"import-statement","original":"./markdown.js"},{"path":"src/ui/styles.ts","kind":"import-statement","original":"./styles.js"},{"path":"src/ui/view-model.ts","kind":"import-statement","original":"./view-model.js"}],"format":"esm"},"src/ui/index.ts":{"bytes":1059,"imports":[{"path":"src/ui/controller.ts","kind":"import-statement","original":"./controller.js"},{"path":"src/ui/dom-renderer.ts","kind":"import-statement","original":"./dom-renderer.js"},{"path":"src/ui/markdown.ts","kind":"import-statement","original":"./markdown.js"},{"path":"src/ui/styles.ts","kind":"import-statement","original":"./styles.js"},{"path":"src/ui/view-model.ts","kind":"import-statement","original":"./view-model.js"},{"path":"src/ui/types.ts","kind":"import-statement","original":"./types.js"}],"format":"esm"}},"outputs":{"dist/ui/index.cjs":{"imports":[],"exports":[],"entryPoint":"src/ui/index.ts","inputs":{"src/ui/index.ts":{"bytesInOutput":257},"src/tools/tool-names.ts":{"bytesInOutput":545},"src/ui/types.ts":{"bytesInOutput":8},"src/ui/controller.ts":{"bytesInOutput":3352},"src/ui/markdown.ts":{"bytesInOutput":864},"src/ui/styles.ts":{"bytesInOutput":4161},"src/ui/view-model.ts":{"bytesInOutput":2008},"src/ui/dom-renderer.ts":{"bytesInOutput":6079}},"bytes":17892}}}
@@ -1 +1 @@
1
- {"inputs":{"src/tools/tool-names.ts":{"bytes":2604,"imports":[],"format":"esm"},"src/ui/types.ts":{"bytes":4274,"imports":[],"format":"esm"},"src/ui/controller.ts":{"bytes":10384,"imports":[{"path":"src/tools/tool-names.ts","kind":"import-statement","original":"../tools/tool-names.js"},{"path":"src/ui/types.ts","kind":"import-statement","original":"./types.js"}],"format":"esm"},"src/ui/markdown.ts":{"bytes":2181,"imports":[],"format":"esm"},"src/ui/styles.ts":{"bytes":4255,"imports":[],"format":"esm"},"src/ui/view-model.ts":{"bytes":3744,"imports":[{"path":"src/ui/types.ts","kind":"import-statement","original":"./types.js"}],"format":"esm"},"src/ui/dom-renderer.ts":{"bytes":11767,"imports":[{"path":"src/ui/markdown.ts","kind":"import-statement","original":"./markdown.js"},{"path":"src/ui/styles.ts","kind":"import-statement","original":"./styles.js"},{"path":"src/ui/view-model.ts","kind":"import-statement","original":"./view-model.js"}],"format":"esm"},"src/ui/index.ts":{"bytes":1059,"imports":[{"path":"src/ui/controller.ts","kind":"import-statement","original":"./controller.js"},{"path":"src/ui/dom-renderer.ts","kind":"import-statement","original":"./dom-renderer.js"},{"path":"src/ui/markdown.ts","kind":"import-statement","original":"./markdown.js"},{"path":"src/ui/styles.ts","kind":"import-statement","original":"./styles.js"},{"path":"src/ui/view-model.ts","kind":"import-statement","original":"./view-model.js"},{"path":"src/ui/types.ts","kind":"import-statement","original":"./types.js"}],"format":"esm"}},"outputs":{"dist/ui/index.js":{"imports":[],"exports":["XENO_UI_RENDERER_API_VERSION","createAgentUiController","createAgentUiView","dispatchAgentUiAction","isSafeMarkdownHref","mountAgentUi","parseMarkdown","xenoUiCss","xenoUiTokens"],"entryPoint":"src/ui/index.ts","inputs":{"src/tools/tool-names.ts":{"bytesInOutput":399},"src/ui/types.ts":{"bytesInOutput":8},"src/ui/controller.ts":{"bytesInOutput":3353},"src/ui/index.ts":{"bytesInOutput":0},"src/ui/markdown.ts":{"bytesInOutput":864},"src/ui/styles.ts":{"bytesInOutput":4162},"src/ui/view-model.ts":{"bytesInOutput":2008},"src/ui/dom-renderer.ts":{"bytesInOutput":6080}},"bytes":17093}}}
1
+ {"inputs":{"src/tools/tool-names.ts":{"bytes":2779,"imports":[],"format":"esm"},"src/ui/types.ts":{"bytes":4274,"imports":[],"format":"esm"},"src/ui/controller.ts":{"bytes":10384,"imports":[{"path":"src/tools/tool-names.ts","kind":"import-statement","original":"../tools/tool-names.js"},{"path":"src/ui/types.ts","kind":"import-statement","original":"./types.js"}],"format":"esm"},"src/ui/markdown.ts":{"bytes":2181,"imports":[],"format":"esm"},"src/ui/styles.ts":{"bytes":4255,"imports":[],"format":"esm"},"src/ui/view-model.ts":{"bytes":3744,"imports":[{"path":"src/ui/types.ts","kind":"import-statement","original":"./types.js"}],"format":"esm"},"src/ui/dom-renderer.ts":{"bytes":11767,"imports":[{"path":"src/ui/markdown.ts","kind":"import-statement","original":"./markdown.js"},{"path":"src/ui/styles.ts","kind":"import-statement","original":"./styles.js"},{"path":"src/ui/view-model.ts","kind":"import-statement","original":"./view-model.js"}],"format":"esm"},"src/ui/index.ts":{"bytes":1059,"imports":[{"path":"src/ui/controller.ts","kind":"import-statement","original":"./controller.js"},{"path":"src/ui/dom-renderer.ts","kind":"import-statement","original":"./dom-renderer.js"},{"path":"src/ui/markdown.ts","kind":"import-statement","original":"./markdown.js"},{"path":"src/ui/styles.ts","kind":"import-statement","original":"./styles.js"},{"path":"src/ui/view-model.ts","kind":"import-statement","original":"./view-model.js"},{"path":"src/ui/types.ts","kind":"import-statement","original":"./types.js"}],"format":"esm"}},"outputs":{"dist/ui/index.js":{"imports":[],"exports":["XENO_UI_RENDERER_API_VERSION","createAgentUiController","createAgentUiView","dispatchAgentUiAction","isSafeMarkdownHref","mountAgentUi","parseMarkdown","xenoUiCss","xenoUiTokens"],"entryPoint":"src/ui/index.ts","inputs":{"src/tools/tool-names.ts":{"bytesInOutput":535},"src/ui/types.ts":{"bytesInOutput":8},"src/ui/controller.ts":{"bytesInOutput":3353},"src/ui/index.ts":{"bytesInOutput":0},"src/ui/markdown.ts":{"bytesInOutput":864},"src/ui/styles.ts":{"bytesInOutput":4162},"src/ui/view-model.ts":{"bytesInOutput":2008},"src/ui/dom-renderer.ts":{"bytesInOutput":6080}},"bytes":17229}}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xenosystem/agent-sdk",
3
- "version": "0.9.39",
3
+ "version": "0.10.0",
4
4
  "description": "XENO Agent SDK built from the same engine as XENO CODE",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",