@xenosystem/agent-sdk 0.8.12
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/LICENSE +15 -0
- package/README.md +511 -0
- package/dist/agents/index.cjs +17 -0
- package/dist/agents/index.d.cts +244 -0
- package/dist/agents/index.d.ts +244 -0
- package/dist/agents/index.js +17 -0
- package/dist/agents/metafile-cjs.json +1 -0
- package/dist/agents/metafile-esm.json +1 -0
- package/dist/artifacts/browser.cjs +1 -0
- package/dist/artifacts/browser.d.cts +8 -0
- package/dist/artifacts/browser.d.ts +8 -0
- package/dist/artifacts/browser.js +1 -0
- package/dist/artifacts/diff-artifact-C2tQZWcs.d.cts +354 -0
- package/dist/artifacts/diff-artifact-C2tQZWcs.d.ts +354 -0
- package/dist/artifacts/index.cjs +10 -0
- package/dist/artifacts/index.d.cts +588 -0
- package/dist/artifacts/index.d.ts +588 -0
- package/dist/artifacts/index.js +10 -0
- package/dist/artifacts/metafile-cjs.json +1 -0
- package/dist/artifacts/metafile-esm.json +1 -0
- package/dist/automation/index.cjs +438 -0
- package/dist/automation/index.d.cts +878 -0
- package/dist/automation/index.d.ts +878 -0
- package/dist/automation/index.js +438 -0
- package/dist/automation/metafile-cjs.json +1 -0
- package/dist/automation/metafile-esm.json +1 -0
- package/dist/control-plane/index.cjs +7 -0
- package/dist/control-plane/index.d.cts +403 -0
- package/dist/control-plane/index.d.ts +403 -0
- package/dist/control-plane/index.js +7 -0
- package/dist/control-plane/metafile-cjs.json +1 -0
- package/dist/control-plane/metafile-esm.json +1 -0
- package/dist/control-room/index.cjs +1 -0
- package/dist/control-room/index.d.cts +216 -0
- package/dist/control-room/index.d.ts +216 -0
- package/dist/control-room/index.js +1 -0
- package/dist/control-room/metafile-cjs.json +1 -0
- package/dist/control-room/metafile-esm.json +1 -0
- package/dist/electron/index.cjs +1476 -0
- package/dist/electron/index.d.cts +1583 -0
- package/dist/electron/index.d.ts +1583 -0
- package/dist/electron/index.js +1476 -0
- package/dist/electron/metafile-cjs.json +1 -0
- package/dist/electron/metafile-esm.json +1 -0
- package/dist/governance/index.cjs +33 -0
- package/dist/governance/index.d.cts +397 -0
- package/dist/governance/index.d.ts +397 -0
- package/dist/governance/index.js +33 -0
- package/dist/governance/metafile-cjs.json +1 -0
- package/dist/governance/metafile-esm.json +1 -0
- package/dist/hooks/index.cjs +9 -0
- package/dist/hooks/index.d.cts +198 -0
- package/dist/hooks/index.d.ts +198 -0
- package/dist/hooks/index.js +9 -0
- package/dist/hooks/metafile-cjs.json +1 -0
- package/dist/hooks/metafile-esm.json +1 -0
- package/dist/hosted/index.cjs +1 -0
- package/dist/hosted/index.d.cts +490 -0
- package/dist/hosted/index.d.ts +490 -0
- package/dist/hosted/index.js +1 -0
- package/dist/hosted/metafile-cjs.json +1 -0
- package/dist/hosted/metafile-esm.json +1 -0
- package/dist/index.cjs +2161 -0
- package/dist/index.d.cts +12259 -0
- package/dist/index.d.ts +12259 -0
- package/dist/index.js +2161 -0
- package/dist/intelligence/index.cjs +10 -0
- package/dist/intelligence/index.d.cts +220 -0
- package/dist/intelligence/index.d.ts +220 -0
- package/dist/intelligence/index.js +10 -0
- package/dist/intelligence/metafile-cjs.json +1 -0
- package/dist/intelligence/metafile-esm.json +1 -0
- package/dist/mcp/index.cjs +28 -0
- package/dist/mcp/index.d.cts +960 -0
- package/dist/mcp/index.d.ts +960 -0
- package/dist/mcp/index.js +28 -0
- package/dist/mcp/metafile-cjs.json +1 -0
- package/dist/mcp/metafile-esm.json +1 -0
- package/dist/metafile-cjs.json +1 -0
- package/dist/metafile-esm.json +1 -0
- package/dist/oracle/index.cjs +1 -0
- package/dist/oracle/index.d.cts +310 -0
- package/dist/oracle/index.d.ts +310 -0
- package/dist/oracle/index.js +1 -0
- package/dist/oracle/metafile-cjs.json +1 -0
- package/dist/oracle/metafile-esm.json +1 -0
- package/dist/providers/index.cjs +11 -0
- package/dist/providers/index.d.cts +462 -0
- package/dist/providers/index.d.ts +462 -0
- package/dist/providers/index.js +11 -0
- package/dist/providers/metafile-cjs.json +1 -0
- package/dist/providers/metafile-esm.json +1 -0
- package/dist/recipes/index.cjs +2 -0
- package/dist/recipes/index.d.cts +86 -0
- package/dist/recipes/index.d.ts +86 -0
- package/dist/recipes/index.js +2 -0
- package/dist/recipes/metafile-cjs.json +1 -0
- package/dist/recipes/metafile-esm.json +1 -0
- package/dist/research/index.cjs +3 -0
- package/dist/research/index.d.cts +285 -0
- package/dist/research/index.d.ts +285 -0
- package/dist/research/index.js +3 -0
- package/dist/research/metafile-cjs.json +1 -0
- package/dist/research/metafile-esm.json +1 -0
- package/dist/session/index.cjs +56 -0
- package/dist/session/index.d.cts +523 -0
- package/dist/session/index.d.ts +523 -0
- package/dist/session/index.js +56 -0
- package/dist/session/metafile-cjs.json +1 -0
- package/dist/session/metafile-esm.json +1 -0
- package/dist/sharing/index.cjs +4 -0
- package/dist/sharing/index.d.cts +272 -0
- package/dist/sharing/index.d.ts +272 -0
- package/dist/sharing/index.js +4 -0
- package/dist/sharing/metafile-cjs.json +1 -0
- package/dist/sharing/metafile-esm.json +1 -0
- package/dist/skills/index.cjs +6 -0
- package/dist/skills/index.d.cts +277 -0
- package/dist/skills/index.d.ts +277 -0
- package/dist/skills/index.js +6 -0
- package/dist/skills/metafile-cjs.json +1 -0
- package/dist/skills/metafile-esm.json +1 -0
- package/dist/soul/index.cjs +32 -0
- package/dist/soul/index.d.cts +138 -0
- package/dist/soul/index.d.ts +138 -0
- package/dist/soul/index.js +32 -0
- package/dist/soul/metafile-cjs.json +1 -0
- package/dist/soul/metafile-esm.json +1 -0
- package/dist/terminal/index.cjs +4 -0
- package/dist/terminal/index.d.cts +55 -0
- package/dist/terminal/index.d.ts +55 -0
- package/dist/terminal/index.js +4 -0
- package/dist/terminal/metafile-cjs.json +1 -0
- package/dist/terminal/metafile-esm.json +1 -0
- package/dist/ui/index.cjs +35 -0
- package/dist/ui/index.d.cts +298 -0
- package/dist/ui/index.d.ts +298 -0
- package/dist/ui/index.js +35 -0
- package/dist/ui/metafile-cjs.json +1 -0
- package/dist/ui/metafile-esm.json +1 -0
- package/dist/utils/index.cjs +23 -0
- package/dist/utils/index.d.cts +245 -0
- package/dist/utils/index.d.ts +245 -0
- package/dist/utils/index.js +23 -0
- package/dist/utils/metafile-cjs.json +1 -0
- package/dist/utils/metafile-esm.json +1 -0
- package/native/mxc/LICENSE.microsoft-mxc-sdk.md +21 -0
- package/native/mxc/README.md +25 -0
- package/native/mxc/bin/arm64/lxc-exec +0 -0
- package/native/mxc/bin/arm64/mxc-exec-mac +0 -0
- package/native/mxc/bin/arm64/wxc-exec.exe +0 -0
- package/native/mxc/bin/arm64/wxc-host-prep.exe +0 -0
- package/native/mxc/bin/x64/lxc-exec +0 -0
- package/native/mxc/bin/x64/wxc-exec.exe +0 -0
- package/native/mxc/bin/x64/wxc-host-prep.exe +0 -0
- package/native/mxc/package.json +58 -0
- package/ownership/CLEAN_ROOM_CONTRIBUTOR_GUIDE.md +63 -0
- package/ownership/audit.mjs +727 -0
- package/ownership/evidence/PROPRIETARY-COMMAND-1/implementation-record.md +77 -0
- package/ownership/evidence/PROPRIETARY-COMMAND-1/provenance-review.md +51 -0
- package/ownership/evidence/PROPRIETARY-MEDIA-1/implementation-record.md +131 -0
- package/ownership/evidence/PROPRIETARY-MEDIA-1/provenance-review.md +50 -0
- package/ownership/evidence/PROPRIETARY-PTY-1/implementation-record.md +86 -0
- package/ownership/evidence/PROPRIETARY-PTY-1/provenance-review.md +52 -0
- package/ownership/evidence/PROPRIETARY-RUNTIME-1/implementation-record.md +68 -0
- package/ownership/evidence/PROPRIETARY-RUNTIME-1/provenance-review.md +32 -0
- package/ownership/evidence/PROPRIETARY-TOOLCHAIN-1/implementation-record.md +53 -0
- package/ownership/evidence/PROPRIETARY-TOOLCHAIN-1/provenance-review.md +32 -0
- package/ownership/evidence/PROPRIETARY-UI-1/implementation-record.md +96 -0
- package/ownership/evidence/PROPRIETARY-UI-1/provenance-review.md +46 -0
- package/ownership/ownership-policy.json +232 -0
- package/ownership/ownership-policy.schema.json +192 -0
- package/ownership/templates/clean-room-implementation-record.md +70 -0
- package/ownership/templates/provenance-review.md +51 -0
- package/package.json +209 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
var f=class{dimension;idfCounts=new Map;totalDocs=0;constructor(e){this.dimension=e}tokenize(e){return e.toLowerCase().replace(/[^a-z0-9\s]/g," ").split(/\s+/).filter(t=>t.length>1&&t.length<40)}hashToDim(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r)|0;return Math.abs(t)%this.dimension}updateIdf(e){let t=new Set(this.tokenize(e));for(let r of t)this.idfCounts.set(r,(this.idfCounts.get(r)??0)+1);this.totalDocs++}embed(e){let t=new Float64Array(this.dimension),r=this.tokenize(e);if(r.length===0)return Array.from(t);let o=new Map;for(let n of r)o.set(n,(o.get(n)??0)+1);for(let[n,a]of o){let l=a/r.length,d=this.idfCounts.get(n)??0,g=d>0?Math.log((this.totalDocs+1)/(d+1))+1:1,I=l*g,P=this.hashToDim(n);t[P]+=I}let i=0;for(let n=0;n<this.dimension;n++)i+=t[n]*t[n];if(i=Math.sqrt(i),i>0)for(let n=0;n<this.dimension;n++)t[n]=t[n]/i;return Array.from(t)}};function T(s,e){if(s.length!==e.length)return 0;let t=0,r=0,o=0;for(let n=0;n<s.length;n++)t+=s[n]*e[n],r+=s[n]*s[n],o+=e[n]*e[n];let i=Math.sqrt(r)*Math.sqrt(o);return i>0?t/i:0}var c=class{documents=new Map;insertionOrder=[];maxDocuments;embedder;customEmbedFn;constructor(e){this.maxDocuments=e?.maxDocuments??1e4,this.embedder=new f(e?.embeddingDimension??256),this.customEmbedFn=e?.embedFn}async addDocument(e,t,r={}){for(;this.documents.size>=this.maxDocuments&&this.insertionOrder.length>0;){let n=this.insertionOrder.shift();this.documents.delete(n)}this.embedder.updateIdf(t);let o=this.customEmbedFn?await this.customEmbedFn(t):this.embedder.embed(t),i={id:e,content:t,embedding:o,metadata:r};this.documents.set(e,i),this.insertionOrder.push(e)}async search(e,t=5,r=.1){let o=this.customEmbedFn?await this.customEmbedFn(e):this.embedder.embed(e),i=[];for(let n of this.documents.values()){let a=T(o,n.embedding);a>=r&&i.push({id:n.id,content:n.content,score:a,metadata:n.metadata})}return i.sort((n,a)=>a.score-n.score),i.slice(0,t)}removeDocument(e){let t=this.documents.delete(e);if(t){let r=this.insertionOrder.indexOf(e);r>=0&&this.insertionOrder.splice(r,1)}return t}getDocument(e){return this.documents.get(e)}get size(){return this.documents.size}clear(){this.documents.clear(),this.insertionOrder=[]}exportDocuments(){return Array.from(this.documents.values())}importDocuments(e){for(let t of e)this.documents.set(t.id,t),this.insertionOrder.push(t.id)}};function D(s){return[s.task,s.summary,...s.tags??[]].filter(Boolean).join(`
|
|
2
|
+
`)}var m=class s{index;byId=new Map;constructor(e={}){this.index=new c({maxDocuments:e.maxEpisodes??5e3})}async add(e){this.byId.set(e.id,e),await this.index.addDocument(e.id,D(e),{kind:"episode",outcome:e.outcome})}async recall(e,t=5,r=.1){let o=await this.index.search(e,t,r),i=[];for(let n of o){let a=this.byId.get(n.id);a&&i.push({episode:a,score:n.score})}return i}get(e){return this.byId.get(e)}all(){return[...this.byId.values()]}get size(){return this.byId.size}toJSON(){return this.all()}static async fromEpisodes(e,t={}){let r=new s(t);for(let o of e)await r.add(o);return r}};function R(s){return[s.name,s.trigger,...s.tags??[]].filter(Boolean).join(`
|
|
3
|
+
`)}var u=class s{index;byId=new Map;constructor(e={}){this.index=new c({maxDocuments:e.maxSkills??5e3})}async add(e){this.byId.set(e.id,e),await this.index.addDocument(e.id,R(e),{kind:"skill",name:e.name})}async recall(e,t=5,r=.1){let o=await this.index.search(e,t,r),i=[];for(let n of o){let a=this.byId.get(n.id);a&&i.push({skill:a,score:n.score})}return i}nextVersion(e){let t=0;for(let r of this.byId.values())r.name===e&&r.version>t&&(t=r.version);return t+1}get(e){return this.byId.get(e)}all(){return[...this.byId.values()]}get size(){return this.byId.size}toJSON(){return this.all()}static async fromSkills(e,t={}){let r=new s(t);for(let o of e)await r.add(o);return r}};import{randomUUID as C}from"node:crypto";function S(s){let e=s.indexOf("{");if(e<0)return null;let t=0,r=!1,o=!1;for(let i=e;i<s.length;i++){let n=s[i];if(r){o?o=!1:n==="\\"?o=!0:n==='"'&&(r=!1);continue}if(n==='"')r=!0;else if(n==="{")t++;else if(n==="}"&&(t--,t===0)){let a=s.slice(e,i+1);try{let l=JSON.parse(a);return l&&typeof l=="object"&&!Array.isArray(l)?l:null}catch{return null}}}return null}function p(s){let e=t=>{if(Array.isArray(t))return t.map(e);if(t&&typeof t=="object"){let r=t,o={};for(let i of Object.keys(r).sort())i!=="signature"&&(o[i]=e(r[i]));return o}return t};return JSON.stringify(e(s))}var A=`You distill REUSABLE SKILLS from a completed agent task.
|
|
4
|
+
Given the task and a transcript of how it was solved, extract ONE general, reusable
|
|
5
|
+
procedure that would help on similar future tasks \u2014 not a recap of this specific run.
|
|
6
|
+
|
|
7
|
+
Respond with ONLY a JSON object, no prose, no code fences:
|
|
8
|
+
{
|
|
9
|
+
"name": "<short imperative skill name>",
|
|
10
|
+
"trigger": "<when to use this skill \u2014 the situation that should recall it>",
|
|
11
|
+
"procedure": "<numbered, reusable steps>",
|
|
12
|
+
"tags": ["<short>", "<keywords>"]
|
|
13
|
+
}
|
|
14
|
+
If no general skill is worth keeping, respond with exactly: {}`,z=6e3;function j(s,e){return s.length<=e?s:s.slice(0,e)+`
|
|
15
|
+
\u2026[truncated]`}async function y(s){let e=s.now??(()=>new Date),t=s.idGen??(()=>C()),r=`TASK:
|
|
16
|
+
${s.task}
|
|
17
|
+
|
|
18
|
+
TRANSCRIPT:
|
|
19
|
+
${j(s.transcript,z)}
|
|
20
|
+
|
|
21
|
+
Produce one reusable skill as JSON, or {} if none is worth keeping.`,o;try{o=await s.complete([{role:"system",content:A},{role:"user",content:r}])}catch{return null}let i=S(o);if(!i)return null;let n=typeof i.name=="string"?i.name.trim():"",a=typeof i.procedure=="string"?i.procedure.trim():"";if(!n||!a)return null;let l=typeof i.trigger=="string"?i.trigger.trim():"",d=Array.isArray(i.tags)?i.tags.filter(g=>typeof g=="string"&&g.trim().length>0):[];return{id:t(),name:n,trigger:l,procedure:a,...d.length>0?{tags:d}:{},version:1,createdAt:e().toISOString(),...s.sourceEpisodeId?{sourceEpisodeId:s.sourceEpisodeId}:{}}}import{createPrivateKey as N,createPublicKey as b,generateKeyPairSync as F,sign as K,verify as V}from"node:crypto";function J(s){let e=s?N(s):F("ed25519").privateKey,r=b(e).export({type:"spki",format:"pem"}).toString(),o=e.export({type:"pkcs8",format:"pem"}).toString();return{publicKeyPem:r,privateKeyPem:o,sign(i){return K(null,Buffer.from(i,"utf8"),e).toString("base64")}}}function x(s,e,t){try{let r=b(t);return V(null,Buffer.from(s,"utf8"),r,Buffer.from(e,"base64"))}catch{return!1}}function M(s,e){return typeof s.signature!="string"||s.signature.length===0?!1:x(p(s),s.signature,e)}import{mkdir as $,readFile as v,writeFile as w}from"node:fs/promises";import{join as h}from"node:path";import{randomUUID as G}from"node:crypto";var E="episodes.jsonl",O="skills.json";async function L(s){let e;try{e=await v(s,"utf8")}catch(r){if(r.code==="ENOENT")return[];throw r}let t=[];for(let r of e.split(`
|
|
22
|
+
`)){let o=r.trim();o&&t.push(JSON.parse(o))}return t}async function B(s,e){try{return JSON.parse(await v(s,"utf8"))}catch(t){if(t.code==="ENOENT")return e;throw t}}var k=class s{episodes;skills;dir;complete;signer;minStepsForSkill;now;idGen;constructor(e,t,r){this.episodes=e,this.skills=t,this.dir=r.dir,this.complete=r.complete,this.signer=r.signer,this.minStepsForSkill=r.minStepsForSkill??3,this.now=r.now??(()=>new Date),this.idGen=r.idGen??(()=>G())}static async create(e={}){let t=[],r=[];e.dir&&(t=await L(h(e.dir,E)),r=await B(h(e.dir,O),[]));let o=await m.fromEpisodes(t,{...e.maxEpisodes!==void 0?{maxEpisodes:e.maxEpisodes}:{}}),i=await u.fromSkills(r,{...e.maxSkills!==void 0?{maxSkills:e.maxSkills}:{}});return new s(o,i,e)}async onTaskComplete(e){let t=e.summary??await this.deriveSummary(e),r=this.maybeSign({id:this.idGen(),task:e.task,outcome:e.outcome,summary:t,...e.steps&&e.steps.length>0?{steps:e.steps}:{},...e.tags&&e.tags.length>0?{tags:e.tags}:{},createdAt:this.now().toISOString()});await this.episodes.add(r);let o=null;if((e.synthesizeSkill??this.shouldSynthesize(e))&&this.complete){let n={task:e.task,transcript:e.transcript,complete:this.complete,sourceEpisodeId:r.id,now:this.now,idGen:this.idGen},a=await y(n);a&&(o=this.maybeSign({...a,version:this.skills.nextVersion(a.name)}),await this.skills.add(o))}return this.dir&&await this.save(),{episode:r,skill:o}}async augmentContext(e,t={}){let r=t.minScore??.1,o=await this.skills.recall(e,t.maxSkills??3,r),i=await this.episodes.recall(e,t.maxEpisodes??3,r);if(o.length===0&&i.length===0)return"";let n=[];if(o.length>0){n.push("## Skills learned from experience");for(let{skill:a}of o){let l=a.procedure.length>280?a.procedure.slice(0,280)+"\u2026":a.procedure;n.push(`- **${a.name}** \u2014 use when ${a.trigger||"relevant"}
|
|
23
|
+
${l.replace(/\n/g,`
|
|
24
|
+
`)}`)}}if(i.length>0){n.push("## Relevant past experience");for(let{episode:a}of i)n.push(`- [${a.outcome}] ${a.task} \u2014 ${a.summary}`)}return n.join(`
|
|
25
|
+
`)}async save(){if(!this.dir)return;await $(this.dir,{recursive:!0});let e=this.episodes.all().map(t=>JSON.stringify(t)).join(`
|
|
26
|
+
`);await w(h(this.dir,E),e?e+`
|
|
27
|
+
`:"","utf8"),await w(h(this.dir,O),JSON.stringify(this.skills.all(),null,2)+`
|
|
28
|
+
`,"utf8")}getPublicKeyPem(){return this.signer?.publicKeyPem}shouldSynthesize(e){return e.outcome!=="success"?!1:(e.steps?.length??0)>=this.minStepsForSkill||e.transcript.length>=400}async deriveSummary(e){if(this.complete)try{let r=(await this.complete([{role:"system",content:"Summarize, in 1-2 sentences, what was attempted and what worked or failed. Output only the summary."},{role:"user",content:`TASK: ${e.task}
|
|
29
|
+
OUTCOME: ${e.outcome}
|
|
30
|
+
|
|
31
|
+
${e.transcript.slice(0,4e3)}`}])).trim();if(r)return r}catch{}return this.heuristicSummary(e)}heuristicSummary(e){let t=e.transcript.split(`
|
|
32
|
+
`).map(i=>i.trim()).filter(i=>i.length>0);if(t.length===0)return`Task "${e.task}" ended: ${e.outcome}.`;let r=t[0]??"",o=t.length>1?t[t.length-1]??"":"";return o&&o!==r?`${r} \u2026 ${o}`:r}maybeSign(e){return this.signer?{...e,signature:this.signer.sign(p(e))}:e}};export{m as EpisodicStore,u as SkillStore,k as SoulEngine,p as canonicalPayload,J as createEd25519Signer,S as extractJsonObject,y as synthesizeSkill,x as verifySignature,M as verifySoulRecord};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"inputs":{"src/memory/vector-store.ts":{"bytes":12251,"imports":[],"format":"esm"},"src/soul/episodic-store.ts":{"bytes":3034,"imports":[{"path":"src/memory/vector-store.ts","kind":"import-statement","original":"../memory/vector-store.js"}],"format":"esm"},"src/soul/skill-store.ts":{"bytes":3229,"imports":[{"path":"src/memory/vector-store.ts","kind":"import-statement","original":"../memory/vector-store.js"}],"format":"esm"},"src/soul/json.ts":{"bytes":2193,"imports":[],"format":"esm"},"src/soul/synthesizer.ts":{"bytes":3561,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/soul/json.ts","kind":"import-statement","original":"./json.js"}],"format":"esm"},"src/soul/signing.ts":{"bytes":3085,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/soul/json.ts","kind":"import-statement","original":"./json.js"}],"format":"esm"},"src/soul/soul.ts":{"bytes":11060,"imports":[{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/soul/episodic-store.ts","kind":"import-statement","original":"./episodic-store.js"},{"path":"src/soul/skill-store.ts","kind":"import-statement","original":"./skill-store.js"},{"path":"src/soul/synthesizer.ts","kind":"import-statement","original":"./synthesizer.js"},{"path":"src/soul/json.ts","kind":"import-statement","original":"./json.js"}],"format":"esm"},"src/soul/index.ts":{"bytes":1478,"imports":[{"path":"src/soul/episodic-store.ts","kind":"import-statement","original":"./episodic-store.js"},{"path":"src/soul/skill-store.ts","kind":"import-statement","original":"./skill-store.js"},{"path":"src/soul/synthesizer.ts","kind":"import-statement","original":"./synthesizer.js"},{"path":"src/soul/json.ts","kind":"import-statement","original":"./json.js"},{"path":"src/soul/signing.ts","kind":"import-statement","original":"./signing.js"},{"path":"src/soul/soul.ts","kind":"import-statement","original":"./soul.js"}],"format":"esm"}},"outputs":{"dist/soul/index.cjs":{"imports":[{"path":"node:crypto","kind":"require-call","external":true},{"path":"node:crypto","kind":"require-call","external":true},{"path":"node:fs/promises","kind":"require-call","external":true},{"path":"node:path","kind":"require-call","external":true},{"path":"node:crypto","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/soul/index.ts","inputs":{"src/soul/index.ts":{"bytesInOutput":230},"src/memory/vector-store.ts":{"bytesInOutput":2350},"src/soul/episodic-store.ts":{"bytesInOutput":664},"src/soul/skill-store.ts":{"bytesInOutput":755},"src/soul/synthesizer.ts":{"bytesInOutput":1439},"src/soul/json.ts":{"bytesInOutput":574},"src/soul/signing.ts":{"bytesInOutput":606},"src/soul/soul.ts":{"bytesInOutput":3437}},"bytes":10643}}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"inputs":{"src/memory/vector-store.ts":{"bytes":12251,"imports":[],"format":"esm"},"src/soul/episodic-store.ts":{"bytes":3034,"imports":[{"path":"src/memory/vector-store.ts","kind":"import-statement","original":"../memory/vector-store.js"}],"format":"esm"},"src/soul/skill-store.ts":{"bytes":3229,"imports":[{"path":"src/memory/vector-store.ts","kind":"import-statement","original":"../memory/vector-store.js"}],"format":"esm"},"src/soul/json.ts":{"bytes":2193,"imports":[],"format":"esm"},"src/soul/synthesizer.ts":{"bytes":3561,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/soul/json.ts","kind":"import-statement","original":"./json.js"}],"format":"esm"},"src/soul/signing.ts":{"bytes":3085,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/soul/json.ts","kind":"import-statement","original":"./json.js"}],"format":"esm"},"src/soul/soul.ts":{"bytes":11060,"imports":[{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/soul/episodic-store.ts","kind":"import-statement","original":"./episodic-store.js"},{"path":"src/soul/skill-store.ts","kind":"import-statement","original":"./skill-store.js"},{"path":"src/soul/synthesizer.ts","kind":"import-statement","original":"./synthesizer.js"},{"path":"src/soul/json.ts","kind":"import-statement","original":"./json.js"}],"format":"esm"},"src/soul/index.ts":{"bytes":1478,"imports":[{"path":"src/soul/episodic-store.ts","kind":"import-statement","original":"./episodic-store.js"},{"path":"src/soul/skill-store.ts","kind":"import-statement","original":"./skill-store.js"},{"path":"src/soul/synthesizer.ts","kind":"import-statement","original":"./synthesizer.js"},{"path":"src/soul/json.ts","kind":"import-statement","original":"./json.js"},{"path":"src/soul/signing.ts","kind":"import-statement","original":"./signing.js"},{"path":"src/soul/soul.ts","kind":"import-statement","original":"./soul.js"}],"format":"esm"}},"outputs":{"dist/soul/index.js":{"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true}],"exports":["EpisodicStore","SkillStore","SoulEngine","canonicalPayload","createEd25519Signer","extractJsonObject","synthesizeSkill","verifySignature","verifySoulRecord"],"entryPoint":"src/soul/index.ts","inputs":{"src/memory/vector-store.ts":{"bytesInOutput":2350},"src/soul/episodic-store.ts":{"bytesInOutput":664},"src/soul/index.ts":{"bytesInOutput":0},"src/soul/skill-store.ts":{"bytesInOutput":755},"src/soul/synthesizer.ts":{"bytesInOutput":1436},"src/soul/json.ts":{"bytesInOutput":574},"src/soul/signing.ts":{"bytesInOutput":589},"src/soul/soul.ts":{"bytesInOutput":3389}},"bytes":9951}}}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use strict";var E=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var B=Object.prototype.hasOwnProperty;var z=(e,n)=>{for(var r in n)E(e,r,{get:n[r],enumerable:!0})},V=(e,n,r,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of G(n))!B.call(e,t)&&t!==r&&E(e,t,{get:()=>n[t],enumerable:!(i=H(n,t))||i.enumerable});return e};var Y=e=>V(E({},"__esModule",{value:!0}),e);var ie={};z(ie,{clipXenoAnsi:()=>L,configureXenoAnsi:()=>v,parseXenoAnsi:()=>y,resetXenoAnsiPolicy:()=>D,stripXenoAnsi:()=>k,wrapXenoAnsi:()=>j,xenoAnsi:()=>F,xenoAnsiVisibleWidth:()=>S});module.exports=Y(ie);var $={color:"auto"},x={...$};function C(e){return Number.isFinite(e)?Math.max(0,Math.min(255,Math.round(e))):0}function u(e,n){return{open:`\x1B[${e}m`,close:`\x1B[${n}m`}}function U(){if(x.colorDepth)return x.colorDepth;let e=Number(process.env.XENO_COLOR_DEPTH??"");return e===1||e===4||e===8||e===24?e:/^(?:truecolor|24bit)$/i.test(process.env.COLORTERM??"")||process.platform==="win32"?24:/256color/i.test(process.env.TERM??"")?8:4}function q(){return x.color==="always"?!0:x.color==="never"||process.env.NO_COLOR!==void 0||process.env.FORCE_COLOR==="0"?!1:process.env.FORCE_COLOR!==void 0?!0:process.env.TERM==="dumb"?!1:!!process.stdout?.isTTY}function I(e){let n=e.trim().replace(/^#/,""),r=n.length===3?n.split("").map(i=>i+i).join(""):n;if(!/^[0-9a-f]{6}$/i.test(r))throw new Error(`Invalid terminal color: ${e}`);return[Number.parseInt(r.slice(0,2),16),Number.parseInt(r.slice(2,4),16),Number.parseInt(r.slice(4,6),16)]}function J(e,n,r){if(e===n&&n===r)return e<8?16:e>248?231:Math.round((e-8)/10)+232;let i=t=>Math.round(t/255*5);return 16+36*i(e)+6*i(n)+i(r)}var O=[[0,0,0],[205,49,49],[13,188,121],[229,229,16],[36,114,200],[188,63,188],[17,168,205],[229,229,229]];function K(e,n,r){let i=0,t=Number.POSITIVE_INFINITY;for(let o=0;o<O.length;o+=1){let s=O[o],l=(e-s[0])**2+(n-s[1])**2+(r-s[2])**2;l<t&&(i=o,t=l)}return i}function b(e,n,r,i){let t=C(e),o=C(n),s=C(r),l=U();return u(l===24?`${i?48:38};2;${t};${o};${s}`:l===8?`${i?48:38};5;${J(t,o,s)}`:String((i?40:30)+K(t,o,s)),i?"49":"39")}function M(e,n){let r=String(e??"");if(!r||n.length===0||!q())return r;let i=n.map(s=>s.open).join(""),t=[...n].reverse().map(s=>s.close).join(""),o=r.replaceAll("\x1B[0m",`\x1B[0m${i}`);for(let s of n)o=o.replaceAll(s.close,`${s.close}${i}`);return`${i}${o}${t}`}function a(...e){let n=(r=>M(r,e));return Object.defineProperty(n,"styles",{value:Object.freeze([...e]),enumerable:!0}),n}var f={bold:u("1","22"),dim:u("2","22"),italic:u("3","23"),strikethrough:u("9","29"),black:u("30","39"),red:u("31","39"),green:u("32","39"),yellow:u("33","39"),blue:u("34","39"),magenta:u("35","39"),cyan:u("36","39"),white:u("37","39"),gray:u("90","39")},F=Object.freeze({bold:a(f.bold),dim:a(f.dim),italic:a(f.italic),strikethrough:a(f.strikethrough),black:a(f.black),red:a(f.red),green:a(f.green),yellow:a(f.yellow),blue:a(f.blue),magenta:a(f.magenta),cyan:a(f.cyan),white:a(f.white),gray:a(f.gray),rgb:(e,n,r)=>a(b(e,n,r,!1)),bgRgb:(e,n,r)=>a(b(e,n,r,!0)),hex:e=>a(b(...I(e),!1)),bgHex:e=>a(b(...I(e),!0)),compose:(...e)=>a(...e.flatMap(n=>n.styles)),format:(e,...n)=>M(e,n)});function v(e){return x={color:e.color??x.color,colorDepth:e.colorDepth??x.colorDepth},{...x}}function D(){x={...$}}function Q(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071||e===8205||e>=65024&&e<=65039}function Z(e){return e>=4352&&(e<=4447||e===9001||e===9002||e>=11904&&e<=42191&&e!==12351||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65135||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=127744&&e<=129791||e>=131072&&e<=262141)}var P=new Map([[144,"dcs"],[152,"sos"],[157,"osc"],[158,"pm"],[159,"apc"]]),ee=new Intl.Segmenter(void 0,{granularity:"grapheme"}),ne=new RegExp("\\p{Extended_Pictographic}","u"),te=new RegExp("\\p{Regional_Indicator}","u"),d="\x1B[0m";function T(e,n,r,i){let t=r;for(;t<e.length;){if(e.charCodeAt(t)===7){t+=1;break}if(e.charCodeAt(t)===27&&e[t+1]==="\\"){t+=2;break}if(e.charCodeAt(t)===156){t+=1;break}t+=1}return{kind:"escape",family:i,value:e.slice(n,t),length:t-n}}function R(e,n,r){let i=r,t;for(;i<e.length;){let o=e.charCodeAt(i);if(i+=1,o>=64&&o<=126){t=String.fromCharCode(o);break}}return{kind:"escape",family:"csi",value:e.slice(n,i),final:t,length:i-n}}function re(e,n){let r=e.charCodeAt(n);if(r===155)return R(e,n,n+1);let i=P.get(r);if(i)return T(e,n,n+1,i);if(r!==27)return null;let t=e[n+1];if(!t)return{kind:"escape",family:"single",value:e.slice(n),length:1};if(t==="[")return R(e,n,n+2);let o=t==="]"?"osc":t==="P"?"dcs":t==="X"?"sos":t==="^"?"pm":t==="_"?"apc":null;return o?T(e,n,n+2,o):{kind:"escape",family:"single",value:e.slice(n,Math.min(e.length,n+2)),length:Math.min(2,e.length-n)}}function y(e){let n=[],r=0,i=0;for(;r<e.length;){let t=re(e,r);if(!t){r+=e.codePointAt(r)>65535?2:1;continue}i<r&&n.push({kind:"text",value:e.slice(i,r)});let{length:o,...s}=t;n.push(s),r+=t.length,i=r}return i<e.length&&n.push({kind:"text",value:e.slice(i)}),n}function A(e){return Array.from(ee.segment(e),n=>n.segment)}function X(e){if(!e)return 0;let n=!1,r=!1;for(let i of e){let t=i.codePointAt(0);t<32||t>=127&&t<160||Q(t)||(n=!0,r||=Z(t))}return n?r||ne.test(e)||te.test(e)||e.includes("\u20E3")?2:1:0}function N(e){return e.kind==="escape"&&e.family==="csi"&&e.final==="m"}function _(e){return e.family==="csi"?e.final!==void 0:e.family==="single"?e.value.length===2:e.value.endsWith("\x07")||e.value.endsWith("\x9C")||e.value.endsWith("\x1B\\")}function W(e,n){let r=n.value.charCodeAt(0)===155?1:2,i=n.value.slice(r,-1),t=i===""?[""]:i.split(";"),o=!1,s=!1;for(let l=0;l<t.length;l+=1){let m=t[l]??"",h=Number((m.split(":",1)[0]??"")||0);if(h===0){o=!0;continue}if(s=!0,(h===38||h===48||h===58)&&!m.includes(":")){let c=Number(t[l+1]??"");l+=c===2?4:c===5?2:0}}o&&(e.length=0),s&&e.push(n.value)}function k(e){return y(e).filter(n=>n.kind==="text").map(n=>n.value).join("")}function S(e){let n=0;for(let r of y(e))if(r.kind==="text")for(let i of A(r.value))n+=X(i);return n}function L(e,n,r="\u2026"){let i=Math.max(0,Math.floor(n));if(i===0)return"";if(S(e)<=i)return e;let t=A(k(r)).reduce((c,p)=>{let g=c.width+X(p);return g<=i?{value:c.value+p,width:g}:c},{value:"",width:0}),o=Math.max(0,i-t.width),s=[],l=[],m=0,h=!1;for(let c of y(e)){if(h)break;if(c.kind==="escape"){if(!_(c))continue;s.push(c.value),N(c)&&W(l,c);continue}for(let p of A(c.value)){let g=m+X(p);if(g>o){h=!0;break}s.push(p),m=g}}return s.push(t.value),l.length>0&&s.push(d),s.join("")}function j(e,n,r={}){let i=Math.max(1,Math.floor(n)),t=r.preserveStyles!==!1,o=[],s=[],l=[],m=0,h=!1,c=()=>{t&&l.length>0&&s.push(d),o.push(s.join("")),s.length=0,t&&l.length>0&&s.push(...l),m=0,h=!1};for(let p of y(e)){if(p.kind==="escape"){if(!_(p))continue;s.push(p.value),N(p)&&W(l,p);continue}for(let g of A(p.value)){if(g==="\r")continue;if(g===`
|
|
2
|
+
`||g===`\r
|
|
3
|
+
`){c();continue}let w=X(g);m>0&&m+w>i&&c(),s.push(g),m+=w,h=!0}}return(h||o.length===0||e.endsWith(`
|
|
4
|
+
`))&&(t&&l.length>0&&s.at(-1)!==d&&s.push(d),o.push(s.join(""))),o}0&&(module.exports={clipXenoAnsi,configureXenoAnsi,parseXenoAnsi,resetXenoAnsiPolicy,stripXenoAnsi,wrapXenoAnsi,xenoAnsi,xenoAnsiVisibleWidth});
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
type XenoColorPolicy = "auto" | "always" | "never";
|
|
2
|
+
type XenoColorDepth = 1 | 4 | 8 | 24;
|
|
3
|
+
interface XenoAnsiPolicy {
|
|
4
|
+
color: XenoColorPolicy;
|
|
5
|
+
colorDepth?: XenoColorDepth;
|
|
6
|
+
}
|
|
7
|
+
interface XenoAnsiStyle {
|
|
8
|
+
readonly open: string;
|
|
9
|
+
readonly close: string;
|
|
10
|
+
}
|
|
11
|
+
type XenoAnsiFormatter = ((text: unknown) => string) & {
|
|
12
|
+
readonly styles: readonly XenoAnsiStyle[];
|
|
13
|
+
};
|
|
14
|
+
type XenoAnsiEscapeFamily = "csi" | "osc" | "dcs" | "sos" | "pm" | "apc" | "single";
|
|
15
|
+
type XenoAnsiToken = {
|
|
16
|
+
readonly kind: "text";
|
|
17
|
+
readonly value: string;
|
|
18
|
+
} | {
|
|
19
|
+
readonly kind: "escape";
|
|
20
|
+
readonly value: string;
|
|
21
|
+
readonly family: XenoAnsiEscapeFamily;
|
|
22
|
+
readonly final?: string;
|
|
23
|
+
};
|
|
24
|
+
interface XenoAnsiWrapOptions {
|
|
25
|
+
preserveStyles?: boolean;
|
|
26
|
+
}
|
|
27
|
+
declare const xenoAnsi: Readonly<{
|
|
28
|
+
bold: XenoAnsiFormatter;
|
|
29
|
+
dim: XenoAnsiFormatter;
|
|
30
|
+
italic: XenoAnsiFormatter;
|
|
31
|
+
strikethrough: XenoAnsiFormatter;
|
|
32
|
+
black: XenoAnsiFormatter;
|
|
33
|
+
red: XenoAnsiFormatter;
|
|
34
|
+
green: XenoAnsiFormatter;
|
|
35
|
+
yellow: XenoAnsiFormatter;
|
|
36
|
+
blue: XenoAnsiFormatter;
|
|
37
|
+
magenta: XenoAnsiFormatter;
|
|
38
|
+
cyan: XenoAnsiFormatter;
|
|
39
|
+
white: XenoAnsiFormatter;
|
|
40
|
+
gray: XenoAnsiFormatter;
|
|
41
|
+
rgb: (red: number, green: number, blue: number) => XenoAnsiFormatter;
|
|
42
|
+
bgRgb: (red: number, green: number, blue: number) => XenoAnsiFormatter;
|
|
43
|
+
hex: (value: string) => XenoAnsiFormatter;
|
|
44
|
+
bgHex: (value: string) => XenoAnsiFormatter;
|
|
45
|
+
compose: (...formatters: readonly XenoAnsiFormatter[]) => XenoAnsiFormatter;
|
|
46
|
+
format: (text: unknown, ...terminalStyles: XenoAnsiStyle[]) => string;
|
|
47
|
+
}>;
|
|
48
|
+
declare function configureXenoAnsi(policy: Partial<XenoAnsiPolicy>): XenoAnsiPolicy;
|
|
49
|
+
declare function resetXenoAnsiPolicy(): void;
|
|
50
|
+
declare function parseXenoAnsi(value: string): XenoAnsiToken[];
|
|
51
|
+
declare function stripXenoAnsi(value: string): string;
|
|
52
|
+
declare function xenoAnsiVisibleWidth(value: string): number;
|
|
53
|
+
declare function clipXenoAnsi(value: string, columns: number, marker?: string): string;
|
|
54
|
+
declare function wrapXenoAnsi(value: string, columns: number, options?: XenoAnsiWrapOptions): string[];
|
|
55
|
+
export { type XenoAnsiEscapeFamily, type XenoAnsiFormatter, type XenoAnsiPolicy, type XenoAnsiStyle, type XenoAnsiToken, type XenoAnsiWrapOptions, type XenoColorDepth, type XenoColorPolicy, clipXenoAnsi, configureXenoAnsi, parseXenoAnsi, resetXenoAnsiPolicy, stripXenoAnsi, wrapXenoAnsi, xenoAnsi, xenoAnsiVisibleWidth };
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
type XenoColorPolicy = "auto" | "always" | "never";
|
|
2
|
+
type XenoColorDepth = 1 | 4 | 8 | 24;
|
|
3
|
+
interface XenoAnsiPolicy {
|
|
4
|
+
color: XenoColorPolicy;
|
|
5
|
+
colorDepth?: XenoColorDepth;
|
|
6
|
+
}
|
|
7
|
+
interface XenoAnsiStyle {
|
|
8
|
+
readonly open: string;
|
|
9
|
+
readonly close: string;
|
|
10
|
+
}
|
|
11
|
+
type XenoAnsiFormatter = ((text: unknown) => string) & {
|
|
12
|
+
readonly styles: readonly XenoAnsiStyle[];
|
|
13
|
+
};
|
|
14
|
+
type XenoAnsiEscapeFamily = "csi" | "osc" | "dcs" | "sos" | "pm" | "apc" | "single";
|
|
15
|
+
type XenoAnsiToken = {
|
|
16
|
+
readonly kind: "text";
|
|
17
|
+
readonly value: string;
|
|
18
|
+
} | {
|
|
19
|
+
readonly kind: "escape";
|
|
20
|
+
readonly value: string;
|
|
21
|
+
readonly family: XenoAnsiEscapeFamily;
|
|
22
|
+
readonly final?: string;
|
|
23
|
+
};
|
|
24
|
+
interface XenoAnsiWrapOptions {
|
|
25
|
+
preserveStyles?: boolean;
|
|
26
|
+
}
|
|
27
|
+
declare const xenoAnsi: Readonly<{
|
|
28
|
+
bold: XenoAnsiFormatter;
|
|
29
|
+
dim: XenoAnsiFormatter;
|
|
30
|
+
italic: XenoAnsiFormatter;
|
|
31
|
+
strikethrough: XenoAnsiFormatter;
|
|
32
|
+
black: XenoAnsiFormatter;
|
|
33
|
+
red: XenoAnsiFormatter;
|
|
34
|
+
green: XenoAnsiFormatter;
|
|
35
|
+
yellow: XenoAnsiFormatter;
|
|
36
|
+
blue: XenoAnsiFormatter;
|
|
37
|
+
magenta: XenoAnsiFormatter;
|
|
38
|
+
cyan: XenoAnsiFormatter;
|
|
39
|
+
white: XenoAnsiFormatter;
|
|
40
|
+
gray: XenoAnsiFormatter;
|
|
41
|
+
rgb: (red: number, green: number, blue: number) => XenoAnsiFormatter;
|
|
42
|
+
bgRgb: (red: number, green: number, blue: number) => XenoAnsiFormatter;
|
|
43
|
+
hex: (value: string) => XenoAnsiFormatter;
|
|
44
|
+
bgHex: (value: string) => XenoAnsiFormatter;
|
|
45
|
+
compose: (...formatters: readonly XenoAnsiFormatter[]) => XenoAnsiFormatter;
|
|
46
|
+
format: (text: unknown, ...terminalStyles: XenoAnsiStyle[]) => string;
|
|
47
|
+
}>;
|
|
48
|
+
declare function configureXenoAnsi(policy: Partial<XenoAnsiPolicy>): XenoAnsiPolicy;
|
|
49
|
+
declare function resetXenoAnsiPolicy(): void;
|
|
50
|
+
declare function parseXenoAnsi(value: string): XenoAnsiToken[];
|
|
51
|
+
declare function stripXenoAnsi(value: string): string;
|
|
52
|
+
declare function xenoAnsiVisibleWidth(value: string): number;
|
|
53
|
+
declare function clipXenoAnsi(value: string, columns: number, marker?: string): string;
|
|
54
|
+
declare function wrapXenoAnsi(value: string, columns: number, options?: XenoAnsiWrapOptions): string[];
|
|
55
|
+
export { type XenoAnsiEscapeFamily, type XenoAnsiFormatter, type XenoAnsiPolicy, type XenoAnsiStyle, type XenoAnsiToken, type XenoAnsiWrapOptions, type XenoColorDepth, type XenoColorPolicy, clipXenoAnsi, configureXenoAnsi, parseXenoAnsi, resetXenoAnsiPolicy, stripXenoAnsi, wrapXenoAnsi, xenoAnsi, xenoAnsiVisibleWidth };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var O={color:"auto"},x={...O};function E(e){return Number.isFinite(e)?Math.max(0,Math.min(255,Math.round(e))):0}function u(e,n){return{open:`\x1B[${e}m`,close:`\x1B[${n}m`}}function D(){if(x.colorDepth)return x.colorDepth;let e=Number(process.env.XENO_COLOR_DEPTH??"");return e===1||e===4||e===8||e===24?e:/^(?:truecolor|24bit)$/i.test(process.env.COLORTERM??"")||process.platform==="win32"?24:/256color/i.test(process.env.TERM??"")?8:4}function N(){return x.color==="always"?!0:x.color==="never"||process.env.NO_COLOR!==void 0||process.env.FORCE_COLOR==="0"?!1:process.env.FORCE_COLOR!==void 0?!0:process.env.TERM==="dumb"?!1:!!process.stdout?.isTTY}function k(e){let n=e.trim().replace(/^#/,""),i=n.length===3?n.split("").map(r=>r+r).join(""):n;if(!/^[0-9a-f]{6}$/i.test(i))throw new Error(`Invalid terminal color: ${e}`);return[Number.parseInt(i.slice(0,2),16),Number.parseInt(i.slice(2,4),16),Number.parseInt(i.slice(4,6),16)]}function _(e,n,i){if(e===n&&n===i)return e<8?16:e>248?231:Math.round((e-8)/10)+232;let r=t=>Math.round(t/255*5);return 16+36*r(e)+6*r(n)+r(i)}var S=[[0,0,0],[205,49,49],[13,188,121],[229,229,16],[36,114,200],[188,63,188],[17,168,205],[229,229,229]];function W(e,n,i){let r=0,t=Number.POSITIVE_INFINITY;for(let o=0;o<S.length;o+=1){let s=S[o],l=(e-s[0])**2+(n-s[1])**2+(i-s[2])**2;l<t&&(r=o,t=l)}return r}function b(e,n,i,r){let t=E(e),o=E(n),s=E(i),l=D();return u(l===24?`${r?48:38};2;${t};${o};${s}`:l===8?`${r?48:38};5;${_(t,o,s)}`:String((r?40:30)+W(t,o,s)),r?"49":"39")}function T(e,n){let i=String(e??"");if(!i||n.length===0||!N())return i;let r=n.map(s=>s.open).join(""),t=[...n].reverse().map(s=>s.close).join(""),o=i.replaceAll("\x1B[0m",`\x1B[0m${r}`);for(let s of n)o=o.replaceAll(s.close,`${s.close}${r}`);return`${r}${o}${t}`}function a(...e){let n=(i=>T(i,e));return Object.defineProperty(n,"styles",{value:Object.freeze([...e]),enumerable:!0}),n}var f={bold:u("1","22"),dim:u("2","22"),italic:u("3","23"),strikethrough:u("9","29"),black:u("30","39"),red:u("31","39"),green:u("32","39"),yellow:u("33","39"),blue:u("34","39"),magenta:u("35","39"),cyan:u("36","39"),white:u("37","39"),gray:u("90","39")},L=Object.freeze({bold:a(f.bold),dim:a(f.dim),italic:a(f.italic),strikethrough:a(f.strikethrough),black:a(f.black),red:a(f.red),green:a(f.green),yellow:a(f.yellow),blue:a(f.blue),magenta:a(f.magenta),cyan:a(f.cyan),white:a(f.white),gray:a(f.gray),rgb:(e,n,i)=>a(b(e,n,i,!1)),bgRgb:(e,n,i)=>a(b(e,n,i,!0)),hex:e=>a(b(...k(e),!1)),bgHex:e=>a(b(...k(e),!0)),compose:(...e)=>a(...e.flatMap(n=>n.styles)),format:(e,...n)=>T(e,n)});function j(e){return x={color:e.color??x.color,colorDepth:e.colorDepth??x.colorDepth},{...x}}function H(){x={...O}}function G(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071||e===8205||e>=65024&&e<=65039}function B(e){return e>=4352&&(e<=4447||e===9001||e===9002||e>=11904&&e<=42191&&e!==12351||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65135||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=127744&&e<=129791||e>=131072&&e<=262141)}var z=new Map([[144,"dcs"],[152,"sos"],[157,"osc"],[158,"pm"],[159,"apc"]]),V=new Intl.Segmenter(void 0,{granularity:"grapheme"}),Y=new RegExp("\\p{Extended_Pictographic}","u"),U=new RegExp("\\p{Regional_Indicator}","u"),d="\x1B[0m";function w(e,n,i,r){let t=i;for(;t<e.length;){if(e.charCodeAt(t)===7){t+=1;break}if(e.charCodeAt(t)===27&&e[t+1]==="\\"){t+=2;break}if(e.charCodeAt(t)===156){t+=1;break}t+=1}return{kind:"escape",family:r,value:e.slice(n,t),length:t-n}}function I(e,n,i){let r=i,t;for(;r<e.length;){let o=e.charCodeAt(r);if(r+=1,o>=64&&o<=126){t=String.fromCharCode(o);break}}return{kind:"escape",family:"csi",value:e.slice(n,r),final:t,length:r-n}}function q(e,n){let i=e.charCodeAt(n);if(i===155)return I(e,n,n+1);let r=z.get(i);if(r)return w(e,n,n+1,r);if(i!==27)return null;let t=e[n+1];if(!t)return{kind:"escape",family:"single",value:e.slice(n),length:1};if(t==="[")return I(e,n,n+2);let o=t==="]"?"osc":t==="P"?"dcs":t==="X"?"sos":t==="^"?"pm":t==="_"?"apc":null;return o?w(e,n,n+2,o):{kind:"escape",family:"single",value:e.slice(n,Math.min(e.length,n+2)),length:Math.min(2,e.length-n)}}function y(e){let n=[],i=0,r=0;for(;i<e.length;){let t=q(e,i);if(!t){i+=e.codePointAt(i)>65535?2:1;continue}r<i&&n.push({kind:"text",value:e.slice(r,i)});let{length:o,...s}=t;n.push(s),i+=t.length,r=i}return r<e.length&&n.push({kind:"text",value:e.slice(r)}),n}function A(e){return Array.from(V.segment(e),n=>n.segment)}function X(e){if(!e)return 0;let n=!1,i=!1;for(let r of e){let t=r.codePointAt(0);t<32||t>=127&&t<160||G(t)||(n=!0,i||=B(t))}return n?i||Y.test(e)||U.test(e)||e.includes("\u20E3")?2:1:0}function R(e){return e.kind==="escape"&&e.family==="csi"&&e.final==="m"}function $(e){return e.family==="csi"?e.final!==void 0:e.family==="single"?e.value.length===2:e.value.endsWith("\x07")||e.value.endsWith("\x9C")||e.value.endsWith("\x1B\\")}function M(e,n){let i=n.value.charCodeAt(0)===155?1:2,r=n.value.slice(i,-1),t=r===""?[""]:r.split(";"),o=!1,s=!1;for(let l=0;l<t.length;l+=1){let m=t[l]??"",h=Number((m.split(":",1)[0]??"")||0);if(h===0){o=!0;continue}if(s=!0,(h===38||h===48||h===58)&&!m.includes(":")){let c=Number(t[l+1]??"");l+=c===2?4:c===5?2:0}}o&&(e.length=0),s&&e.push(n.value)}function F(e){return y(e).filter(n=>n.kind==="text").map(n=>n.value).join("")}function v(e){let n=0;for(let i of y(e))if(i.kind==="text")for(let r of A(i.value))n+=X(r);return n}function J(e,n,i="\u2026"){let r=Math.max(0,Math.floor(n));if(r===0)return"";if(v(e)<=r)return e;let t=A(F(i)).reduce((c,p)=>{let g=c.width+X(p);return g<=r?{value:c.value+p,width:g}:c},{value:"",width:0}),o=Math.max(0,r-t.width),s=[],l=[],m=0,h=!1;for(let c of y(e)){if(h)break;if(c.kind==="escape"){if(!$(c))continue;s.push(c.value),R(c)&&M(l,c);continue}for(let p of A(c.value)){let g=m+X(p);if(g>o){h=!0;break}s.push(p),m=g}}return s.push(t.value),l.length>0&&s.push(d),s.join("")}function K(e,n,i={}){let r=Math.max(1,Math.floor(n)),t=i.preserveStyles!==!1,o=[],s=[],l=[],m=0,h=!1,c=()=>{t&&l.length>0&&s.push(d),o.push(s.join("")),s.length=0,t&&l.length>0&&s.push(...l),m=0,h=!1};for(let p of y(e)){if(p.kind==="escape"){if(!$(p))continue;s.push(p.value),R(p)&&M(l,p);continue}for(let g of A(p.value)){if(g==="\r")continue;if(g===`
|
|
2
|
+
`||g===`\r
|
|
3
|
+
`){c();continue}let C=X(g);m>0&&m+C>r&&c(),s.push(g),m+=C,h=!0}}return(h||o.length===0||e.endsWith(`
|
|
4
|
+
`))&&(t&&l.length>0&&s.at(-1)!==d&&s.push(d),o.push(s.join(""))),o}export{J as clipXenoAnsi,j as configureXenoAnsi,y as parseXenoAnsi,H as resetXenoAnsiPolicy,F as stripXenoAnsi,K as wrapXenoAnsi,L as xenoAnsi,v as xenoAnsiVisibleWidth};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"inputs":{"src/terminal/ansi.ts":{"bytes":17248,"imports":[],"format":"esm"},"src/terminal/index.ts":{"bytes":390,"imports":[{"path":"src/terminal/ansi.ts","kind":"import-statement","original":"./ansi.js"}],"format":"esm"}},"outputs":{"dist/terminal/index.cjs":{"imports":[],"exports":[],"entryPoint":"src/terminal/index.ts","inputs":{"src/terminal/index.ts":{"bytesInOutput":209},"src/terminal/ansi.ts":{"bytesInOutput":6496}},"bytes":7275}}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"inputs":{"src/terminal/ansi.ts":{"bytes":17248,"imports":[],"format":"esm"},"src/terminal/index.ts":{"bytes":390,"imports":[{"path":"src/terminal/ansi.ts","kind":"import-statement","original":"./ansi.js"}],"format":"esm"}},"outputs":{"dist/terminal/index.js":{"imports":[],"exports":["clipXenoAnsi","configureXenoAnsi","parseXenoAnsi","resetXenoAnsiPolicy","stripXenoAnsi","wrapXenoAnsi","xenoAnsi","xenoAnsiVisibleWidth"],"entryPoint":"src/terminal/index.ts","inputs":{"src/terminal/ansi.ts":{"bytesInOutput":6488},"src/terminal/index.ts":{"bytesInOutput":0}},"bytes":6659}}}
|
|
@@ -0,0 +1,35 @@
|
|
|
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 fe={};ne(fe,{XENO_UI_RENDERER_API_VERSION:()=>I,createAgentUiController:()=>B,createAgentUiView:()=>H,dispatchAgentUiAction:()=>N,isSafeMarkdownHref:()=>q,mountAgentUi:()=>Q,parseMarkdown:()=>D,xenoUiCss:()=>z,xenoUiTokens:()=>K});module.exports=re(fe);var ie={View:"Read",Replace:"Write",GlobTool:"Glob",GrepTool:"Grep",SQLiteAnalyze:"SqliteAnalyze",ReadNotebook:"NotebookRead",NotebookEditCell:"NotebookEdit"};function G(n){return ie[n]??n}var I=1;function se(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 ae(n){let e=G(n);return["Read","Glob","Grep","Think","dispatch_agent"].includes(e)?"low":["Write","Edit"].includes(e)?"medium":e==="Bash"?"high":"medium"}function le(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",P=F(e),E=null,d=null,k=null,v=null,c="",U=null,R=0,_=!1,b=!1,V=0,p=se(e),w=p?.permissionEngine,$=w?.promptFn;function T(){return Object.freeze({apiVersion:1,revision:V,items:Object.freeze([...g]),isProcessing:_,status:h,tokenUsage:Object.freeze({...P}),permissionRequest:E?Object.freeze({...E}):null,lastUserMessage:k})}function y(){V+=1;let s=T();for(let l of[...m])l(s)}function S(s){g=[...g,s],y()}function O(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&&(O(s=>({...s,isStreaming:!1})),v=null,c="")}function C(s){let l={id:i(),message:s,retryable:le(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 M(s){let l=s.trim();if(b||_||!l)return!1;_=!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?O(A=>({...A,content:c,isStreaming:!0})):(v=i(),S({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(),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&&(j(U,W=>({...W,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",P=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),P=F(e),y()}}finally{_=!1,f(a),b||y()}return!0}return n.enablePermissionRequests&&w&&(w.promptFn=s=>(d&&d("deny"),new Promise(l=>{d=l,E={id:i(),toolName:s.toolName,detail:s.detail,description:s.description,operation:s.operation,preview:s.preview,riskLevel:ae(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:M,cancelExecution(){!b&&_&&e.cancelCurrentTurn()},clearMessages(){b||(g=[],v=null,c="",y())},retryLastMessage(){return b||_||!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(),M(k))},resolvePermission(s,l){if(b||!E||E.id!==s||!d)return!1;let x=d;return d=null,E=null,y(),x(l),!0},dispose(){b||(b=!0,d&&d("deny"),d=null,E=null,w&&(w.promptFn=$),m.clear())}}}function ce(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=ce(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"}),z=`
|
|
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
|
+
.xeno-ui *{box-sizing:border-box;letter-spacing:0}
|
|
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)}
|
|
5
|
+
.xeno-ui__title{min-width:0;margin:0;font-size:.95rem;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
6
|
+
.xeno-ui__status{margin-left:auto;color:var(--xeno-muted,#aab2bd);font-size:.78rem;text-transform:capitalize}
|
|
7
|
+
.xeno-ui__tokens{color:var(--xeno-muted,#aab2bd);font-variant-numeric:tabular-nums;font-size:.75rem}
|
|
8
|
+
.xeno-ui__timeline{min-height:0;overflow:auto;padding:1rem;scrollbar-gutter:stable}
|
|
9
|
+
.xeno-ui__empty{display:grid;min-height:100%;place-items:center;color:var(--xeno-muted,#aab2bd)}
|
|
10
|
+
.xeno-ui__entry{margin:0 0 .75rem;padding:.7rem .8rem;border-left:3px solid var(--xeno-border,#343a42);background:var(--xeno-surface,#181b1f);white-space:pre-wrap;overflow-wrap:anywhere}
|
|
11
|
+
.xeno-ui__entry--user{margin-left:12%;border-left-color:var(--xeno-accent,#5da9e9)}
|
|
12
|
+
.xeno-ui__entry--assistant{margin-right:8%;border-left-color:var(--xeno-success,#56b881)}
|
|
13
|
+
.xeno-ui__entry--tool{border-left-color:var(--xeno-warning,#e7b65a);font-family:ui-monospace,"Cascadia Mono",monospace;font-size:.82rem}
|
|
14
|
+
.xeno-ui__entry--error{border-left-color:var(--xeno-danger,#e57373)}
|
|
15
|
+
.xeno-ui__entry code{padding:.08rem .3rem;border:1px solid var(--xeno-border,#343a42);background:var(--xeno-raised,#20242a);font-family:ui-monospace,"Cascadia Mono",monospace}
|
|
16
|
+
.xeno-ui__entry pre{max-width:100%;margin:.55rem 0 0;padding:.7rem;overflow:auto;border:1px solid var(--xeno-border,#343a42);background:#0b0d0f;white-space:pre}
|
|
17
|
+
.xeno-ui__entry a{color:var(--xeno-accent,#5da9e9)}
|
|
18
|
+
.xeno-ui__details{margin-top:.5rem;color:var(--xeno-muted,#aab2bd)}
|
|
19
|
+
.xeno-ui__details pre{max-height:16rem}
|
|
20
|
+
.xeno-ui__permission{margin:.75rem 1rem 0;padding:.8rem;border:1px solid var(--xeno-warning,#e7b65a);background:var(--xeno-raised,#20242a)}
|
|
21
|
+
.xeno-ui__permission-title{margin:0 0 .35rem;font-size:.9rem}
|
|
22
|
+
.xeno-ui__permission-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}
|
|
23
|
+
.xeno-ui__composer{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.55rem;padding:.75rem 1rem;border-top:1px solid var(--xeno-border,#343a42);background:var(--xeno-surface,#181b1f)}
|
|
24
|
+
.xeno-ui__input{width:100%;min-height:2.75rem;max-height:9rem;resize:none;overflow-y:hidden;padding:.65rem .75rem;border:1px solid var(--xeno-border,#343a42);border-radius:4px;background:#0f1113;color:var(--xeno-text,#f2f4f7);font:inherit}
|
|
25
|
+
.xeno-ui__controls{display:flex;align-items:flex-end;gap:.45rem}
|
|
26
|
+
.xeno-ui__button{min-width:2.5rem;min-height:2.5rem;padding:.55rem .7rem;border:1px solid var(--xeno-border,#343a42);border-radius:4px;background:var(--xeno-raised,#20242a);color:var(--xeno-text,#f2f4f7);font:inherit;cursor:pointer}
|
|
27
|
+
.xeno-ui__button:hover{border-color:var(--xeno-accent,#5da9e9)}
|
|
28
|
+
.xeno-ui__button--primary{border-color:var(--xeno-accent,#5da9e9);background:#1b4f78}
|
|
29
|
+
.xeno-ui__button--danger{border-color:var(--xeno-danger,#e57373)}
|
|
30
|
+
.xeno-ui__button:disabled,.xeno-ui__input:disabled{cursor:not-allowed;opacity:.55}
|
|
31
|
+
.xeno-ui :focus-visible{outline:2px solid var(--xeno-focus,#8bc5f4);outline-offset:2px}
|
|
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
|
+
@media (prefers-reduced-motion:reduce){.xeno-ui *{scroll-behavior:auto!important;transition:none!important}}
|
|
34
|
+
`;var Y=64*1024;function de(n){let e;try{e=JSON.stringify(n,null,2)??String(n)}catch{e="[Unserializable value]"}return e.length<=Y?e:`${e.slice(0,Y)}
|
|
35
|
+
[truncated]`}function ue(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:de({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 H(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(ue)},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 J="xeno-owned-agent-ui-v1";function me(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 L(n,e,r=""){let t=n.createElement("button");return t.type="button",t.className=`xeno-ui__button${r?` ${r}`:""}`,t.textContent=e,t}function pe(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"),me(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=L(n,"Retry");i.addEventListener("click",()=>{N(r,{type:"retry"})}),t.append(n.createTextNode(" "),i)}return t}function ge(n,e){if(n.getElementById(J))return;let r=n.createElement("style");r.id=J,e&&(r.nonce=e),r.textContent=z,n.head.append(r)}function Q(n,e,r={}){let t=n.ownerDocument;r.injectStyles!==!1&&ge(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 P=t.createElement("span");P.className="xeno-ui__tokens";let E=L(t,"Clear");if(E.setAttribute("aria-label","Clear conversation"),E.addEventListener("click",()=>{N(e,{type:"clear"})}),m.append(g,h,P,E),r.onClose){let o=L(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=L(t,"Cancel","xeno-ui__button--danger");R.addEventListener("click",()=>{N(e,{type:"cancel"})});let _=L(t,"Send","xeno-ui__button--primary");_.type="submit",U.append(R,_),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 V(){let o=c.value;await N(e,{type:"send",text:o})&&(c.value="",b())}v.addEventListener("submit",o=>{o.preventDefault(),V()}),c.addEventListener("keydown",o=>{o.key==="Enter"&&(o.ctrlKey||o.metaKey)&&(o.preventDefault(),V())}),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 M=t.createElement("h3");M.className="xeno-ui__permission-title",M.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=L(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(M,s,l),k.append(f),C&&x&&queueMicrotask(()=>x?.focus())}function T(){let o=H(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,P.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=>pe(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,_.textContent=o.composer.sendLabel,_.disabled=o.composer.disabled,R.textContent=o.composer.cancelLabel,R.hidden=!o.timeline.busy}let y=null,S=!1;function O(){let o=t.defaultView?.requestAnimationFrame;if(o){if(y!==null)return;y=o.call(t.defaultView,()=>{y=null,T()});return}S||(S=!0,queueMicrotask(()=>{S=!1,T()}))}let j=e.subscribe(O);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});
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
interface ImageUrlBlock {
|
|
2
|
+
type: "image_url";
|
|
3
|
+
image_url: {
|
|
4
|
+
url: string;
|
|
5
|
+
detail?: "auto" | "low" | "high";
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
interface ResourceContentBlock {
|
|
9
|
+
type: "resource";
|
|
10
|
+
uri?: string;
|
|
11
|
+
mimeType?: string;
|
|
12
|
+
text?: string;
|
|
13
|
+
data?: string;
|
|
14
|
+
}
|
|
15
|
+
type ToolAssistantContentBlock = TextBlock | ImageUrlBlock | ResourceContentBlock;
|
|
16
|
+
type ToolOperationState = "registered" | "starting" | "running_foreground" | "running_background" | "waiting_for_input" | "stalled" | "verifying" | "completed" | "failed" | "timed_out" | "cancelled" | "orphaned";
|
|
17
|
+
type ToolCompletionPolicy = "await" | "observe" | "detach";
|
|
18
|
+
interface ExpectedOutputContract {
|
|
19
|
+
path: string;
|
|
20
|
+
kind?: "file" | "directory";
|
|
21
|
+
nonEmpty?: boolean;
|
|
22
|
+
}
|
|
23
|
+
interface ToolEvidence {
|
|
24
|
+
id: string;
|
|
25
|
+
kind: "artifact" | "process" | "verification";
|
|
26
|
+
status: "pending" | "verified" | "failed";
|
|
27
|
+
path?: string;
|
|
28
|
+
observedAt: string;
|
|
29
|
+
operationId: string;
|
|
30
|
+
detail?: Record<string, string | number | boolean | null>;
|
|
31
|
+
}
|
|
32
|
+
interface ToolOperationSnapshot {
|
|
33
|
+
schemaVersion: 1;
|
|
34
|
+
operationId: string;
|
|
35
|
+
turnId: string;
|
|
36
|
+
generation: number;
|
|
37
|
+
toolCallId: string;
|
|
38
|
+
toolName: string;
|
|
39
|
+
ownerSessionId?: string;
|
|
40
|
+
state: ToolOperationState;
|
|
41
|
+
terminal: boolean;
|
|
42
|
+
presentation: "foreground" | "background";
|
|
43
|
+
completionPolicy: ToolCompletionPolicy;
|
|
44
|
+
promotable: boolean;
|
|
45
|
+
processId?: string;
|
|
46
|
+
taskId?: string;
|
|
47
|
+
pid?: number;
|
|
48
|
+
commandFingerprint?: string;
|
|
49
|
+
outputPath?: string;
|
|
50
|
+
startedAt: string;
|
|
51
|
+
lastActivityAt: string;
|
|
52
|
+
deadlineAt?: string;
|
|
53
|
+
elapsedMs: number;
|
|
54
|
+
idleMs: number;
|
|
55
|
+
outputBytes: number;
|
|
56
|
+
nextOffset: number;
|
|
57
|
+
exitCode?: number | null;
|
|
58
|
+
completionReason?: string;
|
|
59
|
+
suggestedNextAction?: string;
|
|
60
|
+
expectedOutputs?: ExpectedOutputContract[];
|
|
61
|
+
evidence?: ToolEvidence[];
|
|
62
|
+
}
|
|
63
|
+
interface ToolResult {
|
|
64
|
+
success: boolean;
|
|
65
|
+
output: string;
|
|
66
|
+
error?: string;
|
|
67
|
+
errorCode?: string;
|
|
68
|
+
errorDetails?: Record<string, unknown>;
|
|
69
|
+
assistantContent?: ToolAssistantContentBlock[];
|
|
70
|
+
assistantOnlyContent?: ToolAssistantContentBlock[];
|
|
71
|
+
operation?: ToolOperationSnapshot;
|
|
72
|
+
evidence?: ToolEvidence[];
|
|
73
|
+
retryable?: boolean;
|
|
74
|
+
}
|
|
75
|
+
interface TextBlock {
|
|
76
|
+
type: "text";
|
|
77
|
+
text: string;
|
|
78
|
+
}
|
|
79
|
+
type PermissionPromptOperation = "generic" | "filesystem" | "write" | "edit" | "bash";
|
|
80
|
+
interface PermissionPromptPreviewLine {
|
|
81
|
+
kind: "meta" | "context" | "add" | "remove";
|
|
82
|
+
text: string;
|
|
83
|
+
}
|
|
84
|
+
interface PermissionPromptPreview {
|
|
85
|
+
title: string;
|
|
86
|
+
summary?: string;
|
|
87
|
+
lines: PermissionPromptPreviewLine[];
|
|
88
|
+
truncated?: boolean;
|
|
89
|
+
}
|
|
90
|
+
declare const XENO_UI_RENDERER_API_VERSION: 1;
|
|
91
|
+
type AgentStatus = "idle" | "thinking" | "executing" | "error" | "disconnected";
|
|
92
|
+
type ToolCallStatus = "pending" | "running" | "success" | "error";
|
|
93
|
+
type PermissionDecision = "allow" | "always" | "deny";
|
|
94
|
+
interface ChatMessage {
|
|
95
|
+
id: string;
|
|
96
|
+
role: "user" | "assistant";
|
|
97
|
+
content: string;
|
|
98
|
+
timestamp: number;
|
|
99
|
+
isStreaming?: boolean;
|
|
100
|
+
}
|
|
101
|
+
interface ToolCallEvent {
|
|
102
|
+
id: string;
|
|
103
|
+
toolName: string;
|
|
104
|
+
input: Record<string, unknown>;
|
|
105
|
+
status: ToolCallStatus;
|
|
106
|
+
result?: ToolResult;
|
|
107
|
+
durationMs?: number;
|
|
108
|
+
timestamp: number;
|
|
109
|
+
}
|
|
110
|
+
interface ErrorEvent {
|
|
111
|
+
id: string;
|
|
112
|
+
message: string;
|
|
113
|
+
retryable: boolean;
|
|
114
|
+
timestamp: number;
|
|
115
|
+
}
|
|
116
|
+
type ConversationItem = {
|
|
117
|
+
type: "message";
|
|
118
|
+
data: ChatMessage;
|
|
119
|
+
} | {
|
|
120
|
+
type: "tool_call";
|
|
121
|
+
data: ToolCallEvent;
|
|
122
|
+
} | {
|
|
123
|
+
type: "error";
|
|
124
|
+
data: ErrorEvent;
|
|
125
|
+
};
|
|
126
|
+
interface AgentUiPermissionRequest {
|
|
127
|
+
id: string;
|
|
128
|
+
toolName: string;
|
|
129
|
+
detail: string;
|
|
130
|
+
description?: string;
|
|
131
|
+
operation?: PermissionPromptOperation;
|
|
132
|
+
preview?: PermissionPromptPreview;
|
|
133
|
+
riskLevel: "low" | "medium" | "high";
|
|
134
|
+
timestamp: number;
|
|
135
|
+
}
|
|
136
|
+
interface TokenUsage {
|
|
137
|
+
input: number;
|
|
138
|
+
output: number;
|
|
139
|
+
total: number;
|
|
140
|
+
}
|
|
141
|
+
interface AgentUiAgent {
|
|
142
|
+
readonly tokenUsage: TokenUsage;
|
|
143
|
+
run(prompt: string): Promise<unknown>;
|
|
144
|
+
cancelCurrentTurn(): void;
|
|
145
|
+
}
|
|
146
|
+
interface AgentUiSnapshot {
|
|
147
|
+
apiVersion: typeof XENO_UI_RENDERER_API_VERSION;
|
|
148
|
+
revision: number;
|
|
149
|
+
items: readonly ConversationItem[];
|
|
150
|
+
isProcessing: boolean;
|
|
151
|
+
status: AgentStatus;
|
|
152
|
+
tokenUsage: Readonly<TokenUsage>;
|
|
153
|
+
permissionRequest: Readonly<AgentUiPermissionRequest> | null;
|
|
154
|
+
lastUserMessage: string | null;
|
|
155
|
+
}
|
|
156
|
+
type AgentUiListener = (snapshot: AgentUiSnapshot) => void;
|
|
157
|
+
interface AgentUiControllerOptions {
|
|
158
|
+
agent: AgentUiAgent;
|
|
159
|
+
enablePermissionRequests?: boolean;
|
|
160
|
+
now?: () => number;
|
|
161
|
+
createId?: () => string;
|
|
162
|
+
}
|
|
163
|
+
interface AgentUiController {
|
|
164
|
+
readonly apiVersion: typeof XENO_UI_RENDERER_API_VERSION;
|
|
165
|
+
getSnapshot(): AgentUiSnapshot;
|
|
166
|
+
subscribe(listener: AgentUiListener): () => void;
|
|
167
|
+
sendMessage(text: string): Promise<boolean>;
|
|
168
|
+
cancelExecution(): void;
|
|
169
|
+
clearMessages(): void;
|
|
170
|
+
retryLastMessage(): Promise<boolean>;
|
|
171
|
+
resolvePermission(requestId: string, decision: PermissionDecision): boolean;
|
|
172
|
+
dispose(): void;
|
|
173
|
+
}
|
|
174
|
+
interface AgentUiViewOptions {
|
|
175
|
+
agentName?: string;
|
|
176
|
+
regionLabel?: string;
|
|
177
|
+
inputLabel?: string;
|
|
178
|
+
inputPlaceholder?: string;
|
|
179
|
+
}
|
|
180
|
+
interface AgentUiTimelineEntryView {
|
|
181
|
+
key: string;
|
|
182
|
+
kind: "user-message" | "assistant-message" | "tool-call" | "error";
|
|
183
|
+
role: "article" | "status" | "alert";
|
|
184
|
+
accessibleName: string;
|
|
185
|
+
text: string;
|
|
186
|
+
detail?: string;
|
|
187
|
+
state?: ToolCallStatus;
|
|
188
|
+
retryable?: boolean;
|
|
189
|
+
streaming?: boolean;
|
|
190
|
+
}
|
|
191
|
+
interface AgentUiPermissionView {
|
|
192
|
+
role: "alertdialog";
|
|
193
|
+
accessibleName: string;
|
|
194
|
+
description: string;
|
|
195
|
+
riskLevel: "low" | "medium" | "high";
|
|
196
|
+
requestId: string;
|
|
197
|
+
controls: readonly {
|
|
198
|
+
label: string;
|
|
199
|
+
decision: PermissionDecision;
|
|
200
|
+
}[];
|
|
201
|
+
}
|
|
202
|
+
interface AgentUiView {
|
|
203
|
+
apiVersion: typeof XENO_UI_RENDERER_API_VERSION;
|
|
204
|
+
revision: number;
|
|
205
|
+
region: {
|
|
206
|
+
role: "region";
|
|
207
|
+
accessibleName: string;
|
|
208
|
+
};
|
|
209
|
+
header: {
|
|
210
|
+
title: string;
|
|
211
|
+
statusRole: "status";
|
|
212
|
+
statusText: string;
|
|
213
|
+
tokenText: string;
|
|
214
|
+
};
|
|
215
|
+
timeline: {
|
|
216
|
+
role: "log";
|
|
217
|
+
live: "polite";
|
|
218
|
+
busy: boolean;
|
|
219
|
+
entries: readonly AgentUiTimelineEntryView[];
|
|
220
|
+
};
|
|
221
|
+
permission: AgentUiPermissionView | null;
|
|
222
|
+
composer: {
|
|
223
|
+
role: "form";
|
|
224
|
+
inputLabel: string;
|
|
225
|
+
placeholder: string;
|
|
226
|
+
disabled: boolean;
|
|
227
|
+
sendLabel: string;
|
|
228
|
+
cancelLabel: string;
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
type AgentUiAction = {
|
|
232
|
+
type: "send";
|
|
233
|
+
text: string;
|
|
234
|
+
} | {
|
|
235
|
+
type: "cancel";
|
|
236
|
+
} | {
|
|
237
|
+
type: "clear";
|
|
238
|
+
} | {
|
|
239
|
+
type: "retry";
|
|
240
|
+
} | {
|
|
241
|
+
type: "permission";
|
|
242
|
+
requestId: string;
|
|
243
|
+
decision: PermissionDecision;
|
|
244
|
+
};
|
|
245
|
+
interface AgentUiDomOptions extends AgentUiViewOptions {
|
|
246
|
+
className?: string;
|
|
247
|
+
injectStyles?: boolean;
|
|
248
|
+
styleNonce?: string;
|
|
249
|
+
onClose?: () => void;
|
|
250
|
+
}
|
|
251
|
+
interface AgentUiDomHandle {
|
|
252
|
+
readonly element: HTMLElement;
|
|
253
|
+
render(): void;
|
|
254
|
+
focusInput(): void;
|
|
255
|
+
dispose(): void;
|
|
256
|
+
}
|
|
257
|
+
declare function createAgentUiController(options: AgentUiControllerOptions): AgentUiController;
|
|
258
|
+
declare function mountAgentUi(target: HTMLElement, controller: AgentUiController, options?: AgentUiDomOptions): AgentUiDomHandle;
|
|
259
|
+
type MarkdownSegment = {
|
|
260
|
+
kind: "text";
|
|
261
|
+
text: string;
|
|
262
|
+
} | {
|
|
263
|
+
kind: "code-block";
|
|
264
|
+
language: string;
|
|
265
|
+
code: string;
|
|
266
|
+
} | {
|
|
267
|
+
kind: "inline-code";
|
|
268
|
+
code: string;
|
|
269
|
+
} | {
|
|
270
|
+
kind: "strong";
|
|
271
|
+
text: string;
|
|
272
|
+
} | {
|
|
273
|
+
kind: "emphasis";
|
|
274
|
+
text: string;
|
|
275
|
+
} | {
|
|
276
|
+
kind: "link";
|
|
277
|
+
text: string;
|
|
278
|
+
href: string;
|
|
279
|
+
};
|
|
280
|
+
declare function parseMarkdown(text: string): MarkdownSegment[];
|
|
281
|
+
declare function isSafeMarkdownHref(href: string): boolean;
|
|
282
|
+
declare const xenoUiTokens: Readonly<{
|
|
283
|
+
background: "#101214";
|
|
284
|
+
surface: "#181b1f";
|
|
285
|
+
surfaceRaised: "#20242a";
|
|
286
|
+
border: "#343a42";
|
|
287
|
+
text: "#f2f4f7";
|
|
288
|
+
textMuted: "#aab2bd";
|
|
289
|
+
accent: "#5da9e9";
|
|
290
|
+
success: "#56b881";
|
|
291
|
+
warning: "#e7b65a";
|
|
292
|
+
danger: "#e57373";
|
|
293
|
+
focus: "#8bc5f4";
|
|
294
|
+
}>;
|
|
295
|
+
declare const xenoUiCss = "\n.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}\n.xeno-ui *{box-sizing:border-box;letter-spacing:0}\n.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)}\n.xeno-ui__title{min-width:0;margin:0;font-size:.95rem;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.xeno-ui__status{margin-left:auto;color:var(--xeno-muted,#aab2bd);font-size:.78rem;text-transform:capitalize}\n.xeno-ui__tokens{color:var(--xeno-muted,#aab2bd);font-variant-numeric:tabular-nums;font-size:.75rem}\n.xeno-ui__timeline{min-height:0;overflow:auto;padding:1rem;scrollbar-gutter:stable}\n.xeno-ui__empty{display:grid;min-height:100%;place-items:center;color:var(--xeno-muted,#aab2bd)}\n.xeno-ui__entry{margin:0 0 .75rem;padding:.7rem .8rem;border-left:3px solid var(--xeno-border,#343a42);background:var(--xeno-surface,#181b1f);white-space:pre-wrap;overflow-wrap:anywhere}\n.xeno-ui__entry--user{margin-left:12%;border-left-color:var(--xeno-accent,#5da9e9)}\n.xeno-ui__entry--assistant{margin-right:8%;border-left-color:var(--xeno-success,#56b881)}\n.xeno-ui__entry--tool{border-left-color:var(--xeno-warning,#e7b65a);font-family:ui-monospace,\"Cascadia Mono\",monospace;font-size:.82rem}\n.xeno-ui__entry--error{border-left-color:var(--xeno-danger,#e57373)}\n.xeno-ui__entry code{padding:.08rem .3rem;border:1px solid var(--xeno-border,#343a42);background:var(--xeno-raised,#20242a);font-family:ui-monospace,\"Cascadia Mono\",monospace}\n.xeno-ui__entry pre{max-width:100%;margin:.55rem 0 0;padding:.7rem;overflow:auto;border:1px solid var(--xeno-border,#343a42);background:#0b0d0f;white-space:pre}\n.xeno-ui__entry a{color:var(--xeno-accent,#5da9e9)}\n.xeno-ui__details{margin-top:.5rem;color:var(--xeno-muted,#aab2bd)}\n.xeno-ui__details pre{max-height:16rem}\n.xeno-ui__permission{margin:.75rem 1rem 0;padding:.8rem;border:1px solid var(--xeno-warning,#e7b65a);background:var(--xeno-raised,#20242a)}\n.xeno-ui__permission-title{margin:0 0 .35rem;font-size:.9rem}\n.xeno-ui__permission-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}\n.xeno-ui__composer{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.55rem;padding:.75rem 1rem;border-top:1px solid var(--xeno-border,#343a42);background:var(--xeno-surface,#181b1f)}\n.xeno-ui__input{width:100%;min-height:2.75rem;max-height:9rem;resize:none;overflow-y:hidden;padding:.65rem .75rem;border:1px solid var(--xeno-border,#343a42);border-radius:4px;background:#0f1113;color:var(--xeno-text,#f2f4f7);font:inherit}\n.xeno-ui__controls{display:flex;align-items:flex-end;gap:.45rem}\n.xeno-ui__button{min-width:2.5rem;min-height:2.5rem;padding:.55rem .7rem;border:1px solid var(--xeno-border,#343a42);border-radius:4px;background:var(--xeno-raised,#20242a);color:var(--xeno-text,#f2f4f7);font:inherit;cursor:pointer}\n.xeno-ui__button:hover{border-color:var(--xeno-accent,#5da9e9)}\n.xeno-ui__button--primary{border-color:var(--xeno-accent,#5da9e9);background:#1b4f78}\n.xeno-ui__button--danger{border-color:var(--xeno-danger,#e57373)}\n.xeno-ui__button:disabled,.xeno-ui__input:disabled{cursor:not-allowed;opacity:.55}\n.xeno-ui :focus-visible{outline:2px solid var(--xeno-focus,#8bc5f4);outline-offset:2px}\n@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}}\n@media (prefers-reduced-motion:reduce){.xeno-ui *{scroll-behavior:auto!important;transition:none!important}}\n";
|
|
296
|
+
declare function createAgentUiView(snapshot: AgentUiSnapshot, options?: AgentUiViewOptions): AgentUiView;
|
|
297
|
+
declare function dispatchAgentUiAction(controller: AgentUiController, action: AgentUiAction): Promise<boolean>;
|
|
298
|
+
export { type AgentStatus, type AgentUiAction, type AgentUiAgent, type AgentUiController, type AgentUiControllerOptions, type AgentUiDomHandle, type AgentUiDomOptions, type AgentUiListener, type AgentUiPermissionRequest, type AgentUiSnapshot, type AgentUiTimelineEntryView, type AgentUiView, type AgentUiViewOptions, type ChatMessage, type ConversationItem, type ErrorEvent, type PermissionDecision, type TokenUsage, type ToolCallEvent, type ToolCallStatus, XENO_UI_RENDERER_API_VERSION, createAgentUiController, createAgentUiView, dispatchAgentUiAction, isSafeMarkdownHref, mountAgentUi, parseMarkdown, xenoUiCss, xenoUiTokens };
|