@xenosystem/agent-sdk 0.10.26 → 0.10.29
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/agents/index.cjs +9 -9
- package/dist/agents/index.d.cts +6 -1
- package/dist/agents/index.d.ts +6 -1
- package/dist/agents/index.js +9 -9
- package/dist/agents/metafile-cjs.json +1 -1
- package/dist/agents/metafile-esm.json +1 -1
- package/dist/artifacts/index.cjs +1 -1
- package/dist/artifacts/index.js +1 -1
- package/dist/automation/index.cjs +2 -2
- package/dist/automation/index.js +4 -4
- package/dist/automation/metafile-cjs.json +1 -1
- package/dist/automation/metafile-esm.json +1 -1
- package/dist/control-plane/index.cjs +1 -1
- package/dist/control-plane/index.js +1 -1
- package/dist/index.cjs +320 -320
- package/dist/index.d.cts +8 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.js +319 -319
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/session/index.cjs +1 -1
- package/dist/session/index.js +1 -1
- package/dist/workforce/index.cjs +1 -1
- package/dist/workforce/index.d.cts +36 -1
- package/dist/workforce/index.d.ts +36 -1
- package/dist/workforce/index.js +1 -1
- package/dist/workforce/metafile-cjs.json +1 -1
- package/dist/workforce/metafile-esm.json +1 -1
- package/package.json +1 -1
package/dist/agents/index.cjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`)),nextIndex:
|
|
3
|
-
`)}}}function
|
|
1
|
+
"use strict";var j=Object.defineProperty;var he=Object.getOwnPropertyDescriptor;var Ae=Object.getOwnPropertyNames;var Pe=Object.prototype.hasOwnProperty;var we=(e,n)=>{for(var t in n)j(e,t,{get:n[t],enumerable:!0})},be=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of Ae(n))!Pe.call(e,o)&&o!==t&&j(e,o,{get:()=>n[o],enumerable:!(r=he(n,o))||r.enumerable});return e};var xe=e=>be(j({},"__esModule",{value:!0}),e);var an={};we(an,{AGENT_PROFILE_EXTERNAL_ACTIONS:()=>U,AgentDefinitionLoader:()=>$,AgentDefinitionResolver:()=>q,AgentProfileValidationError:()=>P,XENO_AGENT_PROFILE_SCHEMA_VERSION:()=>M,agentDefinitionFromProfile:()=>on,agentProfileFromDefinition:()=>pe,compileAgentProfile:()=>de,createAgentDefinitionFile:()=>Xe,createAgentDefinitionPromptSection:()=>Ue,getProjectAgentDefinitionDirs:()=>oe,getProjectAgentDefinitionsDir:()=>ie,getUserAgentDefinitionsDir:()=>L,isValidAgentDefinitionName:()=>B,listBuiltInAgentProfiles:()=>rn,renderAgentDefinition:()=>Je,renderAgentDefinitions:()=>Ge,resolveAgentDefinition:()=>Fe,resolveAgentProfile:()=>sn,resolveAgentToolPolicy:()=>N,resolveBuiltInAgentProfile:()=>fe,scanAgentDefinitions:()=>F,toAgentDefinitionMetadata:()=>He,validateAgentDefinition:()=>se});module.exports=xe(an);var m=require("node:fs"),p=require("node:path");function Q(e){let n=ke(e);return{frontmatter:n.frontmatter,content:n.content.trim()}}function ke(e){let n=e.replace(/^\uFEFF/,"");if(!n.startsWith("---"))return{frontmatter:{},content:e};let t=n.search(/\r?\n/);if(t<0||n.slice(0,t).trim()!=="---")return{frontmatter:{},content:e};let r=n.slice(t+(n[t]==="\r"?2:1)),o=r.match(/(?:^|\r?\n)---[ \t]*(?:\r?\n|$)/);if(!o||o.index===void 0)throw new Error("YAML frontmatter is not closed.");let i=r.slice(0,o.index),a=o[0],s=o.index+a.length;return{frontmatter:Z(i),content:r.slice(s)}}function Z(e){let n={},t=e.split(/\r?\n/);for(let r=0;r<t.length;r+=1){let o=t[r];if(!o.trim()||o.trimStart().startsWith("#"))continue;if(/^\s/.test(o))throw new Error(`Unexpected indentation at line ${r+1}.`);let i=Se(o,r+1);if(i.key==="<<")throw new Error("YAML merge keys are not supported.");if(i.value!==""){n[i.key]=ee(i.value,r+1);continue}let a=ve(t,r+1);n[i.key]=a.value,r=a.nextIndex-1}return n}function ve(e,n){let t=[],r=n;for(;r<e.length;r+=1){let i=e[r];if(!i.trim()){t.push(i);continue}if(!/^\s/.test(i))break;t.push(i.replace(/^ {2}/,""))}let o=t.filter(i=>i.trim()&&!i.trimStart().startsWith("#"));return o.length===0?{value:{},nextIndex:r}:o.every(i=>i.trimStart().startsWith("- "))?{value:o.map((i,a)=>ee(i.trimStart().slice(2),n+a+1)),nextIndex:r}:{value:Z(t.join(`
|
|
2
|
+
`)),nextIndex:r}}function Se(e,n){let t=e.indexOf(":");if(t<=0)throw new Error(`Invalid YAML line ${n}.`);let r=e.slice(0,t).trim(),o=e.slice(t+1).trim();if(!r)throw new Error(`Invalid YAML key at line ${n}.`);return{key:r,value:o}}function ee(e,n){if(e==="")return"";if(e==="[]")return[];if(e==="{}")return{};if(e==="true")return!0;if(e==="false")return!1;if(e==="null"||e==="~")return null;if(/^-?\d+(?:\.\d+)?$/.test(e))return Number(e);if(e.startsWith('"'))return K(e,n);if(e.startsWith("'")){if(!e.endsWith("'"))throw new Error(`Unclosed quoted scalar at line ${n}.`);return e.slice(1,-1).replace(/''/g,"'")}if(e.startsWith("[")||e.startsWith("{"))return K(e,n);if(e.includes("[")||e.includes("]")||e.includes("{")||e.includes("}"))throw new Error(`Unsupported YAML scalar at line ${n}.`);return e}function K(e,n){try{return JSON.parse(e)}catch{throw new Error(`Invalid YAML scalar at line ${n}.`)}}var w=require("node:os");var _=require("node:path"),dn=(0,w.platform)();var un=(0,w.release)(),fn=(0,w.homedir)();function ne(){let e=process.env.XENO_AGENT_HOME?.trim();return e?(0,_.resolve)(e):(0,_.resolve)((0,w.homedir)(),".xeno-agent")}var De=/^[a-z][a-z0-9_-]{0,63}$/;function Ee(){return ne()}function L(e=Ee()){return(0,p.join)(e,"agents")}function re(e){return(0,p.resolve)(e)}function Ie(e){let n=(0,p.dirname)(e);return n===e?e:n}function oe(e=process.cwd()){let n=re(e),t=[],r=n;for(;;){let i=(0,p.join)(r,".claude","agents"),a=(0,p.join)(r,".xeno","agents");t.push({...(0,m.existsSync)(i)?{claude:i}:{},...(0,m.existsSync)(a)?{xeno:a}:{}});let s=Ie(r);if(s===r)break;r=s}t.reverse();let o=[];for(let i of t)i.claude&&o.push(i.claude),i.xeno&&o.push(i.xeno);return o}function ie(e=process.cwd()){return(0,p.join)(re(e),".xeno","agents")}function Te(e){return(0,m.existsSync)(e)?(0,m.readdirSync)(e,{withFileTypes:!0}).filter(n=>n.isFile()&&n.name.toLowerCase().endsWith(".md")).map(n=>(0,p.join)(e,n.name)).sort((n,t)=>n.localeCompare(t)):[]}function k(e){if(typeof e!="string")return;let n=e.trim();return n.length>0?n:void 0}function v(e){return Array.isArray(e)?e.map(n=>String(n).trim()).filter(Boolean):typeof e=="string"?e.split(",").map(n=>n.trim()).filter(Boolean):[]}function $e(e){if(typeof e=="boolean")return e;if(typeof e!="string")return;let n=e.trim().toLowerCase();if(["1","true","yes","on"].includes(n))return!0;if(["0","false","no","off"].includes(n))return!1}function Ne(e){return(0,p.parse)((0,p.basename)(e)).name.toLowerCase()}function B(e){return De.test(e)}function Ce(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Re(e){if(typeof e!="string")return;let n=e.trim().toLowerCase();if(n==="inherit")return"inherit";if(n==="none"||n==="off"||n==="disabled")return"none";if(n==="read"||n==="readonly"||n==="read-only")return"readOnly";if(n==="default"||n==="standard")return"default";if(n==="full"||n==="fullaccess"||n==="full-access")return"fullAccess"}function Me(e){if(e===void 0)return;if(typeof e=="string"||Array.isArray(e)){let i=v(e);return i.length>0?{allow:i}:void 0}if(!Ce(e))return;let n=v(e.allow),t=v(e.deny),r=Re(e.mode),o={};return r&&(o.mode=r),n.length>0&&(o.allow=n),t.length>0&&(o.deny=t),Object.keys(o).length>0?o:void 0}var te=1e8,Oe=10080*60*1e3;function je(e){let n=e["max-tokens"]??e.maxTokens,t=e.deadline,r={};if(n!=null&&n!==""){let o=String(n).trim(),i=Number(o);if(!/^[1-9][0-9]*$/.test(o)||!Number.isSafeInteger(i)||i>te)throw new Error(`Invalid max-tokens "${o}". Use a whole number from 1 to ${te}.`);r.maxTokens=i}if(t!=null&&t!==""){let o=String(t).trim(),i=/^([1-9][0-9]*)(ms|s|m|h)?$/.exec(o),a=i?{ms:1,s:1e3,m:6e4,h:36e5}[i[2]??"s"]:0,s=i?Number(i[1])*a:Number.NaN;if(!Number.isSafeInteger(s)||s>Oe)throw new Error(`Invalid deadline "${o}". Use a duration such as 90s, 30m or 2h, at most 7 days.`);r.deadlineMs=s}return Object.keys(r).length>0?r:void 0}function _e(e){let n=$e(e.worktree??e.defaultWorktreeIsolation);if(n===!0)return"worktree";if(n===!1)return"none";let t=k(e.isolation)?.toLowerCase();if(t==="worktree")return"worktree";if(t==="none"||t==="off"||t==="disabled")return"none"}function se(e){let n=[];return B(e.name)||n.push(`Invalid agent name "${e.name}". Use 1-64 lowercase letters, digits, hyphens, or underscores, starting with a letter.`),e.prompt.trim().length===0&&n.push("Agent definition body is empty."),n}function qe(e,n,t){let r=(0,m.readFileSync)(e,"utf8"),o=Q(r),i=o.frontmatter,a=Ne(e),s=k(i.name)?.toLowerCase()??a,d=o.content.trim(),g=se({name:s,prompt:d});if(g.length>0)throw new Error(g.join(" "));let u=k(i.description),c=k(i.model),f=k(i.color),A=k(i.memory??i.memoryScope),b=_e(i),D=Me(i.tools),E=je(i);return{name:s,scope:n,path:e,...u?{description:u}:{},...c?{model:c}:{},...f?{color:f}:{},...A?{memory:A}:{},...b?{isolation:b}:{},tags:v(i.tags),skills:v(i.skills),hooks:v(i.hooks),prompt:d,active:!0,priority:t,...D?{toolPolicy:D}:{},...E?{budget:E}:{}}}function I(e,n,t,r,o){for(let i of Te(e))try{r.push(qe(i,n,t))}catch(a){o.push({path:i,scope:n,message:a instanceof Error?a.message:String(a)})}}function Le(e){let n=new Map;for(let t of e){let r=n.get(t.name);(!r||t.priority>r.priority)&&n.set(t.name,t)}return n}function Be(e,n){let t=n.get(e.name),r=t?.path===e.path;return{name:e.name,scope:e.scope,path:e.path,...e.description?{description:e.description}:{},...e.model?{model:e.model}:{},...e.color?{color:e.color}:{},...e.memory?{memory:e.memory}:{},...e.isolation?{isolation:e.isolation}:{},tags:e.tags,skills:e.skills,hooks:e.hooks,prompt:e.prompt,active:r,...e.toolPolicy?{toolPolicy:e.toolPolicy}:{},...e.budget?{budget:{...e.budget}}:{},...!r&&t?{shadowedBy:{name:t.name,scope:t.scope,path:t.path}}:{}}}function F(e=process.cwd(),n={}){let t=n.cwd??e,r=n.userDir??L(n.agentHome),o=n.projectDirs??oe(t),i=n.pluginDirs??[],a=n.builtInDirs??[],s=[],d=[];n.includeUser!==!1&&I(r,"user",0,s,d),n.includeProject!==!1&&o.forEach((c,f)=>I(c,"project",100+f,s,d)),n.includePlugins&&i.forEach((c,f)=>I(c,"plugin",1e3+f,s,d)),n.includeBuiltIns&&a.forEach((c,f)=>I(c,"built-in",2e3+f,s,d));let g=Le(s),u=s.map(c=>Be(c,g));return u.sort((c,f)=>{if(c.active!==f.active)return c.active?-1:1;let A=c.name.localeCompare(f.name);return A!==0?A:c.path.localeCompare(f.path)}),{definitions:u,issues:d,searchPaths:{...n.includeUser!==!1?{user:r}:{},project:n.includeProject===!1?[]:o,plugin:n.includePlugins?i:[],builtIn:n.includeBuiltIns?a:[]}}}function Fe(e,n=process.cwd(),t={}){let r=e.trim().toLowerCase(),o=F(n,t);return{definition:o.definitions.find(i=>i.active&&i.name===r)??null,scan:o}}var $=class{constructor(n={}){this.options=n}options;scan(n=this.options.cwd??process.cwd()){return F(n,this.options)}},q=class{constructor(n=new $){this.loader=n}loader;resolve(n,t=process.cwd()){let r=this.loader.scan(t),o=n.trim().toLowerCase();return{definition:r.definitions.find(i=>i.active&&i.name===o)??null,scan:r}}};function T(e){if(!e||e.length===0)return;let n=Array.from(new Set(e.map(t=>t.trim()).filter(Boolean)));return n.length>0?n:void 0}function Ve(e,n){if(!e&&!n)return;if(!e)return T(n);if(!n)return T(e);let t=new Set(n);return T(e.filter(r=>t.has(r)))}function We(e,n){let t={none:0,readOnly:1,default:2,fullAccess:3,inherit:4},r=n??"inherit",o=e??"inherit";return t[r]<=t[o]?r:o}function N(e,n={}){let t=e.toolPolicy??{},r={mode:We(t.mode,n.mode)},o=Ve(n.allow,t.allow),i=T([...n.deny??[],...t.deny??[]]);return o&&(r.allow=o),i&&(r.deny=i),r}function Ue(e){return{name:`custom-agent:${e.name}`,order:20,provide(){let n=["","","# Custom Agent",`Active agent: ${e.name}`,`Definition scope: ${e.scope}`,`Definition path: ${e.path}`];return e.description&&n.push(`Description: ${e.description}`),n.push("",e.prompt),n.join(`
|
|
3
|
+
`)}}}function He(e){return{name:e.name,scope:e.scope,path:e.path,...e.description?{description:e.description}:{},...e.model?{model:e.model}:{},...e.color?{color:e.color}:{},...e.memory?{memory:e.memory}:{},...e.isolation?{isolation:e.isolation}:{},tags:e.tags,skills:e.skills,hooks:e.hooks,active:e.active,...e.toolPolicy?{toolPolicy:e.toolPolicy}:{},...e.budget?{budget:{...e.budget}}:{},...e.shadowedBy?{shadowedBy:e.shadowedBy}:{}}}function x(e,n){return e.length>=n?e:e+" ".repeat(n-e.length)}function Ge(e,n){let t=[];if(e.length===0)t.push("No custom agent definitions found.");else{t.push(`${x("name",22)} ${x("scope",8)} ${x("status",9)} description`),t.push(`${"-".repeat(22)} ${"-".repeat(8)} ${"-".repeat(9)} ${"-".repeat(32)}`);for(let r of e){let o=r.active?"active":"shadowed";t.push(`${x(r.name,22)} ${x(r.scope,8)} ${x(o,9)} ${r.description??""}`)}}if(n.length>0){t.push("","Invalid definitions:");for(let r of n)t.push(`- ${r.path}: ${r.message}`)}return t.join(`
|
|
4
4
|
`)+`
|
|
5
|
-
`}function
|
|
6
|
-
`)}function
|
|
7
|
-
`);return(0,m.writeFileSync)(
|
|
8
|
-
`)}}}function
|
|
9
|
-
`),toolPolicy:{mode:"inherit"},skills:[],memoryScope:"user",evidence:["file-references"],currentTurnApproval:[...
|
|
5
|
+
`}function Je(e){let n=[`Agent: ${e.name}`,`Scope: ${e.scope}`,`Path: ${e.path}`,`Status: ${e.active?"active":"shadowed"}`];return e.description&&n.push(`Description: ${e.description}`),e.model&&n.push(`Model: ${e.model}`),e.color&&n.push(`Color: ${e.color}`),e.memory&&n.push(`Memory: ${e.memory}`),e.isolation&&n.push(`Isolation: ${e.isolation}`),e.tags.length>0&&n.push(`Tags: ${e.tags.join(", ")}`),e.skills.length>0&&n.push(`Skills: ${e.skills.join(", ")}`),e.hooks.length>0&&n.push(`Hooks: ${e.hooks.join(", ")}`),e.toolPolicy&&n.push(`Tools: ${JSON.stringify(e.toolPolicy)}`),e.budget?.maxTokens!==void 0&&n.push(`Token budget: ${e.budget.maxTokens}`),e.budget?.deadlineMs!==void 0&&n.push(`Deadline: ${e.budget.deadlineMs} ms`),e.shadowedBy&&n.push(`Shadowed by: ${e.shadowedBy.scope} ${e.shadowedBy.path}`),n.push("",e.prompt,""),n.join(`
|
|
6
|
+
`)}function Xe(e){let n=e.name.trim().toLowerCase();if(!B(n))throw new Error(`Invalid agent name "${e.name}". Use 1-64 lowercase letters, digits, hyphens, or underscores, starting with a letter.`);let t=e.scope==="user"?L(e.agentHome):ie(e.cwd??process.cwd());(0,m.mkdirSync)(t,{recursive:!0});let r=(0,p.join)(t,`${n}.md`);if((0,m.existsSync)(r)&&!e.force)throw new Error(`Agent definition already exists: ${r}`);let o=e.description?.trim()||`${n} custom agent`,i=e.prompt?.trim()||`You are ${n}. Replace this paragraph with precise operating instructions, constraints, tools policy, verification expectations, and the kind of work this agent should own.`,s=[...["---",`name: ${n}`,`description: ${JSON.stringify(o)}`,...e.model?.trim()?[`model: ${JSON.stringify(e.model.trim())}`]:[],...e.color?.trim()?[`color: ${JSON.stringify(e.color.trim())}`]:[],...e.memory?.trim()?[`memory: ${JSON.stringify(e.memory.trim())}`]:[],...e.isolation?[`isolation: ${e.isolation}`]:[],"tags: []",...e.skills&&e.skills.length>0?[`skills: ${JSON.stringify(e.skills)}`]:[],...e.hooks&&e.hooks.length>0?[`hooks: ${JSON.stringify(e.hooks)}`]:[],...e.toolPolicy?["tools:",...e.toolPolicy.mode?[` mode: ${e.toolPolicy.mode}`]:[],...e.toolPolicy.allow&&e.toolPolicy.allow.length>0?[` allow: ${JSON.stringify(e.toolPolicy.allow)}`]:[],...e.toolPolicy.deny&&e.toolPolicy.deny.length>0?[` deny: ${JSON.stringify(e.toolPolicy.deny)}`]:[]]:[],"---"],"",i,""].join(`
|
|
7
|
+
`);return(0,m.writeFileSync)(r,s,"utf8"),r}var ae=require("node:crypto");var M=2,U=["publish","deploy","push","send","purchase","sign","file-legal","change-infrastructure"],P=class extends Error{constructor(n){super(n),this.name="AgentProfileValidationError"}},ze=/^[a-z][a-z0-9_-]{0,63}$/,C=U;function y(e){return Array.from(new Set((e??[]).map(n=>n.trim()).filter(Boolean)))}function Ye(e,n){if(e===void 0)return n===void 0?void 0:y(n);if(n===void 0)return y(e);let t=new Set(n);return y(e.filter(r=>t.has(r)))}function Ke(e,n){if(e===void 0)return;let t=new Set(n);return e.filter(r=>!t.has(r))}function V(e,n,t){let r=n===void 0?null:new Set(n),o=new Set(t??[]);return e===void 0?n===void 0?void 0:y(n).filter(i=>!o.has(i)):y(e).filter(i=>(r===null||r.has(i))&&!o.has(i))}function R(e,n,t){return t[e]<=t[n]?e:n}function Qe(e,n,t){return t[e]>=t[n]?e:n}function W(e){return Array.isArray(e)?e.map(W):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).sort(([n],[t])=>n.localeCompare(t)).map(([n,t])=>[n,W(t)]))}function Ze(e){return(0,ae.createHash)("sha256").update(JSON.stringify(W(e))).digest("hex")}function S(e){return structuredClone(e)}function le(e,n){return e.overrides?.[n]??e.default}function en(e,n){let t={deny:0,ask:1,allow:2},r=new Set(e.requireCurrentTurnApproval),o=Object.fromEntries(C.map(d=>[d,le(e,d)]));for(let d of n){let g=d.externalActions;if(g){for(let u of C){let c=g.overrides?.[u]??g.default;c&&(o[u]=R(o[u],c,t))}for(let u of g.requireCurrentTurnApproval??[])r.add(u)}}let a=new Set(Object.values(o)).size===1?o.publish:"deny",s={};for(let d of C)o[d]!==a&&(s[d]=o[d]);return{default:a,...Object.keys(s).length>0?{overrides:s}:{},requireCurrentTurnApproval:[...r].filter(d=>o[d]!=="deny").sort()}}function ce(e){if(e.schemaVersion!==M)throw new P(`Unsupported agent profile schema: ${String(e.schemaVersion)}.`);if(!ze.test(e.id))throw new P(`Invalid agent profile id: ${e.id}.`);if(!e.version.trim())throw new P(`Agent profile ${e.id} has no version.`);if(!e.displayName.trim()||!e.description.trim()||!e.prompt.trim())throw new P(`Agent profile ${e.id} requires displayName, description, and prompt.`);if(e.execution.allowedModes.length===0)throw new P(`Agent profile ${e.id} allows no collaboration modes.`);if(!e.execution.allowedModes.includes(e.execution.defaultMode))throw new P(`Agent profile ${e.id} default mode must be included in allowedModes.`)}function nn(e,n,t,r,o,i){return{name:`agent-profile:${e.id}`,order:20,provide(){let a=C.map(s=>`${s}=${le(n.externalActions,s)}`).join(", ");return["","","# XENO Agent Profile",`Profile: ${e.displayName} (${e.id}@${e.version})`,`Profile fingerprint: ${i}`,`Role: ${e.description}`,`Collaboration mode: ${r.defaultMode}`,`Isolation: ${r.isolation}`,`Memory: ${t.scope}; soul=${t.soul}`,`Permission profile ceiling: ${n.permissionProfile}`,`External actions: ${a}`,n.externalActions.requireCurrentTurnApproval.length>0?`Current-turn approval required for: ${n.externalActions.requireCurrentTurnApproval.join(", ")}`:"Current-turn approval required for: none",o.evidence.length>0?`Completion evidence: ${o.evidence.join(", ")}`:"Completion evidence: task-dependent",o.requirePrimarySources?"Use primary sources for factual claims and cite them near the claim.":"",o.requireCurrentInformation?"Verify time-sensitive claims against current authoritative information.":"",o.requireHumanReview?"Do not represent the result as professional approval; require human review before consequential use.":"",r.defaultDryRun?"Default to preview or dry-run. Do not perform external state changes without the required approval.":"","",e.prompt,"","Stop conditions:",...o.stopConditions.map(s=>`- ${s}`)].filter(s=>s!=="").join(`
|
|
8
|
+
`)}}}function de(e,n={}){ce(e);let t=S(e),r=n.boundaries??[],o=S(t.capabilities.tools),i=t.capabilities.skills.allow?y(t.capabilities.skills.allow):void 0,a=new Set(y(t.capabilities.skills.deny)),s=y(t.capabilities.hooks),d=new Set,g=t.capabilities.mcpServers?y(t.capabilities.mcpServers):void 0,u=t.capabilities.delegatedAgents?y(t.capabilities.delegatedAgents):void 0,c=t.capabilities.permissionProfile,f=t.memory.scope,A=t.memory.soul,b=t.execution.isolation,D={"read-only":0,default:1,"trusted-dev":2},E={none:0,session:1,project:2,user:3},ge={disabled:0,read:1,learn:2},me={none:0,worktree:1,container:2};for(let l of r){l.tools&&(o=N({toolPolicy:o},l.tools)),i=Ye(i,l.skills?.allow);for(let O of l.skills?.deny??[])a.add(O);s=V(s,l.hooks?.allow,void 0)??[];for(let O of l.hooks?.require??[])d.add(O);g=V(g,l.mcpServers?.allow,l.mcpServers?.deny),u=V(u,l.delegatedAgents?.allow,l.delegatedAgents?.deny),l.permissionProfile&&(c=R(c,l.permissionProfile,D)),l.maximumMemoryScope&&(f=R(f,l.maximumMemoryScope,E)),l.maximumSoulMode&&(A=R(A,l.maximumSoulMode,ge)),l.requiredIsolation&&(b=Qe(b,l.requiredIsolation,me))}let H=[...a].sort();c==="read-only"&&(o=N({toolPolicy:o},{mode:"readOnly",deny:["WebSearch","WebFetch"]})),i=Ke(i,H);let ye=y(t.capabilities.skills.preload).filter(l=>!a.has(l)).filter(l=>i===void 0||i.includes(l));s=y([...s,...d]);let G={tools:o,skills:{preload:ye,...i!==void 0?{allow:i}:{},deny:H},hooks:s,...g!==void 0?{mcpServers:g}:{},...u!==void 0?{delegatedAgents:u}:{},permissionProfile:c,externalActions:en(t.capabilities.externalActions,r)},J={...t.memory,scope:f,soul:A},X={...t.execution,isolation:b},z={schemaVersion:M,profile:t,boundarySources:r.map(l=>l.source),capabilities:G,memory:J,execution:X,completion:t.completion},Y=Ze(z);return{...z,fingerprint:Y,promptSection:nn(t,G,J,X,t.completion,Y)}}function h(e){return{schemaVersion:M,id:e.id,version:"1.0.0",displayName:e.displayName,description:e.description,kind:e.kind??"primary",prompt:e.prompt,capabilities:{tools:e.toolPolicy??{mode:"inherit"},skills:{preload:e.skills??[],...e.skillAllow?{allow:e.skillAllow}:{},deny:[]},hooks:[],permissionProfile:e.permissionProfile??"default",externalActions:{default:e.externalDefault??"ask",...e.externalOverrides?{overrides:e.externalOverrides}:{},requireCurrentTurnApproval:e.currentTurnApproval??[]}},memory:{scope:e.memoryScope??"project",role:e.id,soul:e.soul??"read"},execution:{defaultMode:e.defaultMode??"chat",allowedModes:e.allowedModes??["chat","plan","execute","review"],isolation:e.isolation??"none",allowBackground:e.allowBackground??!0,planForComplexTasks:e.planForComplexTasks??!0,defaultDryRun:e.defaultDryRun??!1},completion:{evidence:e.evidence??[],requirePrimarySources:e.primarySources??!1,requireCurrentInformation:e.currentInformation??!1,requireHumanReview:e.humanReview??!1,stopConditions:e.stopConditions??["The requested outcome is complete and required evidence has been reported.","A real authorization, information, or external-state blocker prevents safe progress."]},presentation:{label:e.displayName,color:e.color,glyph:e.glyph},tags:y(e.tags)}}var ue=[h({id:"assistant",displayName:"Assistant",description:"General-purpose XENO collaborator for mixed research, planning, and implementation work.",prompt:["Work as a thoughtful generalist. Establish the user's actual outcome, inspect relevant context, and take scoped action.","Escalate into a narrower specialist profile when domain risk or task depth warrants it."].join(`
|
|
9
|
+
`),toolPolicy:{mode:"inherit"},skills:[],memoryScope:"user",evidence:["file-references"],currentTurnApproval:[...U],color:"cyan",glyph:"\u25A0",tags:["general","primary"]}),h({id:"swe",displayName:"Software Engineer",description:"Repository-aware software engineer for careful implementation, debugging, refactoring, and verification.",prompt:["Inspect the repository before editing. Follow project instructions and preserve unrelated work.","Trace the smallest root cause, implement the narrowest coherent change, and verify from focused checks outward.","Do not claim completion without concrete test, typecheck, build, or runtime evidence appropriate to the risk."].join(`
|
|
10
10
|
`),toolPolicy:{mode:"default"},skills:["debug","run","verify"],permissionProfile:"trusted-dev",soul:"learn",evidence:["file-references","tests","typecheck","build","diff"],currentTurnApproval:["publish","deploy","push","change-infrastructure"],color:"green",glyph:"\u25C6",tags:["engineering","implementation"]}),h({id:"reviewer",displayName:"Code Reviewer",description:"Read-only reviewer focused on correctness, regressions, safety, tests, and maintainability.",prompt:["Lead with concrete findings ordered by severity. Cite exact file locations and explain impact.","Do not edit code. Distinguish confirmed defects from risks and questions. State when no material finding is present."].join(`
|
|
11
11
|
`),kind:"subagent",toolPolicy:{mode:"readOnly"},skills:["code-review","verify"],permissionProfile:"read-only",memoryScope:"session",soul:"read",allowedModes:["chat","review"],defaultMode:"review",evidence:["file-references","diff"],externalDefault:"deny",color:"yellow",glyph:"\u25C7",tags:["engineering","review","read-only"]}),h({id:"writer",displayName:"Writer",description:"Audience-aware writer and editor for clear, accurate, structurally coherent content.",prompt:["Determine audience, purpose, voice, format, and source constraints before drafting.","Preserve factual meaning, avoid invented claims, and revise for clarity, rhythm, consistency, and usefulness."].join(`
|
|
12
12
|
`),toolPolicy:{mode:"default",allow:["Read","Glob","Grep","LS","Write","Edit","WebSearch","WebFetch","Think","AskUser","Skill"]},skills:["verify"],evidence:["sources","file-references","diff"],currentTurnApproval:["send","publish"],color:"magenta",glyph:"\u2726",tags:["writing","editing"]}),h({id:"research",displayName:"Researcher",description:"Evidence-first researcher for questions, comparisons, synthesis, and source-backed analysis.",prompt:["Break the question into verifiable claims. Prefer primary and authoritative sources, compare dates, and cite near each claim.","Separate sourced fact, inference, uncertainty, and recommendation. Do not make changes unless the user explicitly expands scope."].join(`
|
|
@@ -14,4 +14,4 @@
|
|
|
14
14
|
`),toolPolicy:{mode:"default",allow:["Read","Glob","Grep","LS","Write","Edit","WebSearch","WebFetch","Think","AskUser","Skill"]},skills:["verify"],evidence:["sources","file-references","diff"],currentTurnApproval:["send","publish","change-infrastructure"],color:"cyan",glyph:"\u25A3",tags:["product","planning"]}),h({id:"ci",displayName:"CI Engineer",description:"Continuous-integration specialist for reproducing, repairing, and hardening automated gates.",prompt:["Identify the exact failing job and command. Reproduce it locally or in an equivalent immutable environment before patching.","Fix only the underlying failure, retain logs as evidence, and rerun the matching gate before broader validation."].join(`
|
|
15
15
|
`),toolPolicy:{mode:"default"},skills:["ci-repair","debug","run","verify"],permissionProfile:"trusted-dev",soul:"learn",evidence:["tests","typecheck","build","diff"],currentTurnApproval:["push","deploy","change-infrastructure"],color:"green",glyph:"\u25A4",tags:["engineering","ci","automation"]}),h({id:"devops",displayName:"DevOps and Release",description:"Dry-run-first infrastructure and release specialist with explicit external-action gates.",prompt:["Inspect the release or infrastructure contract first. Build an immutable candidate and produce reproducible evidence.","Default to plan, preview, dry-run, and local verification. Never publish, deploy, push, sign, purchase, or mutate infrastructure unless the current user turn explicitly authorizes that exact action and target.","For releases, preserve SDK-before-CLI dependency order and verify the public artifact after publication."].join(`
|
|
16
16
|
`),toolPolicy:{mode:"default"},skills:["release","run","verify"],permissionProfile:"default",memoryScope:"project",soul:"learn",isolation:"worktree",defaultMode:"plan",defaultDryRun:!0,evidence:["tests","build","diff","deployment-proof","human-review"],humanReview:!0,currentTurnApproval:["publish","deploy","push","purchase","sign","change-infrastructure"],color:"yellow",glyph:"\u2B22",tags:["devops","release","infrastructure"]}),h({id:"legal-research",displayName:"Legal Research",description:"Restricted legal-information researcher that produces sourced analysis for qualified human review.",prompt:["Identify jurisdiction, effective date, parties, and the precise legal question before analyzing it.","Use current primary legal sources wherever possible. Cite each material proposition and distinguish law, interpretation, uncertainty, and practical next steps.","Provide legal information, not professional representation. Never sign, file, submit, contact a party, accept terms, or make a payment."].join(`
|
|
17
|
-
`),toolPolicy:{mode:"readOnly"},skills:["verify"],permissionProfile:"default",memoryScope:"session",soul:"disabled",allowedModes:["chat","plan","review"],defaultMode:"review",evidence:["sources","human-review"],primarySources:!0,currentInformation:!0,humanReview:!0,externalDefault:"deny",color:"red",glyph:"\xA7",tags:["legal","research","restricted","read-only"],stopConditions:["The jurisdiction or effective date is unknown and materially changes the answer.","The task requires legal representation, filing, signature, payment, or contact with a third party.","The sourced analysis is complete and clearly marked for qualified human review."]})],
|
|
17
|
+
`),toolPolicy:{mode:"readOnly"},skills:["verify"],permissionProfile:"default",memoryScope:"session",soul:"disabled",allowedModes:["chat","plan","review"],defaultMode:"review",evidence:["sources","human-review"],primarySources:!0,currentInformation:!0,humanReview:!0,externalDefault:"deny",color:"red",glyph:"\xA7",tags:["legal","research","restricted","read-only"],stopConditions:["The jurisdiction or effective date is unknown and materially changes the answer.","The task requires legal representation, filing, signature, payment, or contact with a third party.","The sourced analysis is complete and clearly marked for qualified human review."]})],tn={general:"assistant",software:"swe",engineer:"swe","software-engineer":"swe",review:"reviewer","code-reviewer":"reviewer",qa:"research","q-and-a":"research",researcher:"research","product-manager":"product","ci-cd":"ci",cicd:"ci",release:"devops","devops-release":"devops",legal:"legal-research"};function rn(){return ue.map(S)}function fe(e){let n=e.trim().toLowerCase(),t=tn[n]??n,r=ue.find(o=>o.id===t);return r?S(r):null}function pe(e){let n=e.memory?.trim().toLowerCase(),t=n==="none"||n==="session"||n==="project"||n==="user"?n:"project",r=h({id:e.name,displayName:e.name,description:e.description??`Custom XENO agent ${e.name}.`,prompt:e.prompt,toolPolicy:e.toolPolicy??{mode:"inherit"},skills:e.skills,memoryScope:t,isolation:e.isolation??"none",color:e.color??"cyan",glyph:"\u25A0",tags:["custom",...e.tags]});return e.model&&(r.model={preferred:e.model}),r.capabilities.hooks=[...e.hooks],r}function on(e){return ce(e),{name:e.id,scope:"built-in",path:`builtin:xeno-agent-profile/${e.id}@${e.version}`,description:e.description,...e.model?.preferred?{model:e.model.preferred}:{},color:e.presentation.color,memory:e.memory.scope,isolation:e.execution.isolation==="container"?"worktree":e.execution.isolation,tags:[...e.tags],skills:[...e.capabilities.skills.preload],hooks:[...e.capabilities.hooks],active:!0,toolPolicy:S(e.capabilities.tools),prompt:e.prompt}}function sn(e){let n=e.definition?pe(e.definition):fe(e.name);return n?de(n,{boundaries:e.boundaries}):null}0&&(module.exports={AGENT_PROFILE_EXTERNAL_ACTIONS,AgentDefinitionLoader,AgentDefinitionResolver,AgentProfileValidationError,XENO_AGENT_PROFILE_SCHEMA_VERSION,agentDefinitionFromProfile,agentProfileFromDefinition,compileAgentProfile,createAgentDefinitionFile,createAgentDefinitionPromptSection,getProjectAgentDefinitionDirs,getProjectAgentDefinitionsDir,getUserAgentDefinitionsDir,isValidAgentDefinitionName,listBuiltInAgentProfiles,renderAgentDefinition,renderAgentDefinitions,resolveAgentDefinition,resolveAgentProfile,resolveAgentToolPolicy,resolveBuiltInAgentProfile,scanAgentDefinitions,toAgentDefinitionMetadata,validateAgentDefinition});
|
package/dist/agents/index.d.cts
CHANGED
|
@@ -36,6 +36,11 @@ interface AgentDefinitionMetadata {
|
|
|
36
36
|
active: boolean;
|
|
37
37
|
shadowedBy?: AgentDefinitionShadowRef;
|
|
38
38
|
toolPolicy?: AgentToolPolicy;
|
|
39
|
+
budget?: AgentDefinitionBudget;
|
|
40
|
+
}
|
|
41
|
+
interface AgentDefinitionBudget {
|
|
42
|
+
maxTokens?: number;
|
|
43
|
+
deadlineMs?: number;
|
|
39
44
|
}
|
|
40
45
|
interface AgentDefinition extends AgentDefinitionMetadata {
|
|
41
46
|
prompt: string;
|
|
@@ -251,4 +256,4 @@ declare function resolveAgentProfile(input: {
|
|
|
251
256
|
definition?: AgentDefinition | null;
|
|
252
257
|
boundaries?: AgentProfileCapabilityBoundary[];
|
|
253
258
|
}): CompiledAgentProfile | null;
|
|
254
|
-
export { AGENT_PROFILE_EXTERNAL_ACTIONS, type AgentDefinition, type AgentDefinitionIsolation, type AgentDefinitionIssue, AgentDefinitionLoader, type AgentDefinitionLoaderOptions, type AgentDefinitionMetadata, AgentDefinitionResolver, type AgentDefinitionScanResult, type AgentDefinitionScope, type AgentDefinitionShadowRef, type AgentProfileActionDecision, type AgentProfileCapabilities, type AgentProfileCapabilityBoundary, type AgentProfileCollaborationMode, type AgentProfileCompletionPolicy, type AgentProfileEvidenceKind, type AgentProfileExecutionPolicy, type AgentProfileExternalAction, type AgentProfileExternalActionPolicy, type AgentProfileIsolation, type AgentProfileKind, type AgentProfileMemoryPolicy, type AgentProfileMemoryScope, type AgentProfilePresentation, type AgentProfileSkillPolicy, type AgentProfileSoulMode, type AgentProfileV2, AgentProfileValidationError, type AgentToolPolicy, type CompileAgentProfileOptions, type CompiledAgentProfile, XENO_AGENT_PROFILE_SCHEMA_VERSION, agentDefinitionFromProfile, agentProfileFromDefinition, compileAgentProfile, createAgentDefinitionFile, createAgentDefinitionPromptSection, getProjectAgentDefinitionDirs, getProjectAgentDefinitionsDir, getUserAgentDefinitionsDir, isValidAgentDefinitionName, listBuiltInAgentProfiles, renderAgentDefinition, renderAgentDefinitions, resolveAgentDefinition, resolveAgentProfile, resolveAgentToolPolicy, resolveBuiltInAgentProfile, scanAgentDefinitions, toAgentDefinitionMetadata, validateAgentDefinition };
|
|
259
|
+
export { AGENT_PROFILE_EXTERNAL_ACTIONS, type AgentDefinition, type AgentDefinitionBudget, type AgentDefinitionIsolation, type AgentDefinitionIssue, AgentDefinitionLoader, type AgentDefinitionLoaderOptions, type AgentDefinitionMetadata, AgentDefinitionResolver, type AgentDefinitionScanResult, type AgentDefinitionScope, type AgentDefinitionShadowRef, type AgentProfileActionDecision, type AgentProfileCapabilities, type AgentProfileCapabilityBoundary, type AgentProfileCollaborationMode, type AgentProfileCompletionPolicy, type AgentProfileEvidenceKind, type AgentProfileExecutionPolicy, type AgentProfileExternalAction, type AgentProfileExternalActionPolicy, type AgentProfileIsolation, type AgentProfileKind, type AgentProfileMemoryPolicy, type AgentProfileMemoryScope, type AgentProfilePresentation, type AgentProfileSkillPolicy, type AgentProfileSoulMode, type AgentProfileV2, AgentProfileValidationError, type AgentToolPolicy, type CompileAgentProfileOptions, type CompiledAgentProfile, XENO_AGENT_PROFILE_SCHEMA_VERSION, agentDefinitionFromProfile, agentProfileFromDefinition, compileAgentProfile, createAgentDefinitionFile, createAgentDefinitionPromptSection, getProjectAgentDefinitionDirs, getProjectAgentDefinitionsDir, getUserAgentDefinitionsDir, isValidAgentDefinitionName, listBuiltInAgentProfiles, renderAgentDefinition, renderAgentDefinitions, resolveAgentDefinition, resolveAgentProfile, resolveAgentToolPolicy, resolveBuiltInAgentProfile, scanAgentDefinitions, toAgentDefinitionMetadata, validateAgentDefinition };
|
package/dist/agents/index.d.ts
CHANGED
|
@@ -36,6 +36,11 @@ interface AgentDefinitionMetadata {
|
|
|
36
36
|
active: boolean;
|
|
37
37
|
shadowedBy?: AgentDefinitionShadowRef;
|
|
38
38
|
toolPolicy?: AgentToolPolicy;
|
|
39
|
+
budget?: AgentDefinitionBudget;
|
|
40
|
+
}
|
|
41
|
+
interface AgentDefinitionBudget {
|
|
42
|
+
maxTokens?: number;
|
|
43
|
+
deadlineMs?: number;
|
|
39
44
|
}
|
|
40
45
|
interface AgentDefinition extends AgentDefinitionMetadata {
|
|
41
46
|
prompt: string;
|
|
@@ -251,4 +256,4 @@ declare function resolveAgentProfile(input: {
|
|
|
251
256
|
definition?: AgentDefinition | null;
|
|
252
257
|
boundaries?: AgentProfileCapabilityBoundary[];
|
|
253
258
|
}): CompiledAgentProfile | null;
|
|
254
|
-
export { AGENT_PROFILE_EXTERNAL_ACTIONS, type AgentDefinition, type AgentDefinitionIsolation, type AgentDefinitionIssue, AgentDefinitionLoader, type AgentDefinitionLoaderOptions, type AgentDefinitionMetadata, AgentDefinitionResolver, type AgentDefinitionScanResult, type AgentDefinitionScope, type AgentDefinitionShadowRef, type AgentProfileActionDecision, type AgentProfileCapabilities, type AgentProfileCapabilityBoundary, type AgentProfileCollaborationMode, type AgentProfileCompletionPolicy, type AgentProfileEvidenceKind, type AgentProfileExecutionPolicy, type AgentProfileExternalAction, type AgentProfileExternalActionPolicy, type AgentProfileIsolation, type AgentProfileKind, type AgentProfileMemoryPolicy, type AgentProfileMemoryScope, type AgentProfilePresentation, type AgentProfileSkillPolicy, type AgentProfileSoulMode, type AgentProfileV2, AgentProfileValidationError, type AgentToolPolicy, type CompileAgentProfileOptions, type CompiledAgentProfile, XENO_AGENT_PROFILE_SCHEMA_VERSION, agentDefinitionFromProfile, agentProfileFromDefinition, compileAgentProfile, createAgentDefinitionFile, createAgentDefinitionPromptSection, getProjectAgentDefinitionDirs, getProjectAgentDefinitionsDir, getUserAgentDefinitionsDir, isValidAgentDefinitionName, listBuiltInAgentProfiles, renderAgentDefinition, renderAgentDefinitions, resolveAgentDefinition, resolveAgentProfile, resolveAgentToolPolicy, resolveBuiltInAgentProfile, scanAgentDefinitions, toAgentDefinitionMetadata, validateAgentDefinition };
|
|
259
|
+
export { AGENT_PROFILE_EXTERNAL_ACTIONS, type AgentDefinition, type AgentDefinitionBudget, type AgentDefinitionIsolation, type AgentDefinitionIssue, AgentDefinitionLoader, type AgentDefinitionLoaderOptions, type AgentDefinitionMetadata, AgentDefinitionResolver, type AgentDefinitionScanResult, type AgentDefinitionScope, type AgentDefinitionShadowRef, type AgentProfileActionDecision, type AgentProfileCapabilities, type AgentProfileCapabilityBoundary, type AgentProfileCollaborationMode, type AgentProfileCompletionPolicy, type AgentProfileEvidenceKind, type AgentProfileExecutionPolicy, type AgentProfileExternalAction, type AgentProfileExternalActionPolicy, type AgentProfileIsolation, type AgentProfileKind, type AgentProfileMemoryPolicy, type AgentProfileMemoryScope, type AgentProfilePresentation, type AgentProfileSkillPolicy, type AgentProfileSoulMode, type AgentProfileV2, AgentProfileValidationError, type AgentToolPolicy, type CompileAgentProfileOptions, type CompiledAgentProfile, XENO_AGENT_PROFILE_SCHEMA_VERSION, agentDefinitionFromProfile, agentProfileFromDefinition, compileAgentProfile, createAgentDefinitionFile, createAgentDefinitionPromptSection, getProjectAgentDefinitionDirs, getProjectAgentDefinitionsDir, getUserAgentDefinitionsDir, isValidAgentDefinitionName, listBuiltInAgentProfiles, renderAgentDefinition, renderAgentDefinitions, resolveAgentDefinition, resolveAgentProfile, resolveAgentToolPolicy, resolveBuiltInAgentProfile, scanAgentDefinitions, toAgentDefinitionMetadata, validateAgentDefinition };
|
package/dist/agents/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import{existsSync as
|
|
2
|
-
`)),nextIndex:
|
|
3
|
-
`)}}}function
|
|
1
|
+
import{existsSync as I,mkdirSync as ge,readFileSync as me,readdirSync as ye,writeFileSync as he}from"node:fs";import{basename as Ae,dirname as Pe,join as x,parse as we,resolve as be}from"node:path";function U(e){let n=ce(e);return{frontmatter:n.frontmatter,content:n.content.trim()}}function ce(e){let n=e.replace(/^\uFEFF/,"");if(!n.startsWith("---"))return{frontmatter:{},content:e};let t=n.search(/\r?\n/);if(t<0||n.slice(0,t).trim()!=="---")return{frontmatter:{},content:e};let r=n.slice(t+(n[t]==="\r"?2:1)),i=r.match(/(?:^|\r?\n)---[ \t]*(?:\r?\n|$)/);if(!i||i.index===void 0)throw new Error("YAML frontmatter is not closed.");let o=r.slice(0,i.index),a=i[0],s=i.index+a.length;return{frontmatter:H(o),content:r.slice(s)}}function H(e){let n={},t=e.split(/\r?\n/);for(let r=0;r<t.length;r+=1){let i=t[r];if(!i.trim()||i.trimStart().startsWith("#"))continue;if(/^\s/.test(i))throw new Error(`Unexpected indentation at line ${r+1}.`);let o=ue(i,r+1);if(o.key==="<<")throw new Error("YAML merge keys are not supported.");if(o.value!==""){n[o.key]=G(o.value,r+1);continue}let a=de(t,r+1);n[o.key]=a.value,r=a.nextIndex-1}return n}function de(e,n){let t=[],r=n;for(;r<e.length;r+=1){let o=e[r];if(!o.trim()){t.push(o);continue}if(!/^\s/.test(o))break;t.push(o.replace(/^ {2}/,""))}let i=t.filter(o=>o.trim()&&!o.trimStart().startsWith("#"));return i.length===0?{value:{},nextIndex:r}:i.every(o=>o.trimStart().startsWith("- "))?{value:i.map((o,a)=>G(o.trimStart().slice(2),n+a+1)),nextIndex:r}:{value:H(t.join(`
|
|
2
|
+
`)),nextIndex:r}}function ue(e,n){let t=e.indexOf(":");if(t<=0)throw new Error(`Invalid YAML line ${n}.`);let r=e.slice(0,t).trim(),i=e.slice(t+1).trim();if(!r)throw new Error(`Invalid YAML key at line ${n}.`);return{key:r,value:i}}function G(e,n){if(e==="")return"";if(e==="[]")return[];if(e==="{}")return{};if(e==="true")return!0;if(e==="false")return!1;if(e==="null"||e==="~")return null;if(/^-?\d+(?:\.\d+)?$/.test(e))return Number(e);if(e.startsWith('"'))return W(e,n);if(e.startsWith("'")){if(!e.endsWith("'"))throw new Error(`Unclosed quoted scalar at line ${n}.`);return e.slice(1,-1).replace(/''/g,"'")}if(e.startsWith("[")||e.startsWith("{"))return W(e,n);if(e.includes("[")||e.includes("]")||e.includes("{")||e.includes("}"))throw new Error(`Unsupported YAML scalar at line ${n}.`);return e}function W(e,n){try{return JSON.parse(e)}catch{throw new Error(`Invalid YAML scalar at line ${n}.`)}}import{homedir as X,platform as fe,release as pe}from"node:os";import{resolve as J}from"node:path";var rn=fe();var on=pe(),sn=X();function z(){let e=process.env.XENO_AGENT_HOME?.trim();return e?J(e):J(X(),".xeno-agent")}var xe=/^[a-z][a-z0-9_-]{0,63}$/;function ke(){return z()}function Q(e=ke()){return x(e,"agents")}function Z(e){return be(e)}function ve(e){let n=Pe(e);return n===e?e:n}function Se(e=process.cwd()){let n=Z(e),t=[],r=n;for(;;){let o=x(r,".claude","agents"),a=x(r,".xeno","agents");t.push({...I(o)?{claude:o}:{},...I(a)?{xeno:a}:{}});let s=ve(r);if(s===r)break;r=s}t.reverse();let i=[];for(let o of t)o.claude&&i.push(o.claude),o.xeno&&i.push(o.xeno);return i}function De(e=process.cwd()){return x(Z(e),".xeno","agents")}function Ee(e){return I(e)?ye(e,{withFileTypes:!0}).filter(n=>n.isFile()&&n.name.toLowerCase().endsWith(".md")).map(n=>x(e,n.name)).sort((n,t)=>n.localeCompare(t)):[]}function w(e){if(typeof e!="string")return;let n=e.trim();return n.length>0?n:void 0}function b(e){return Array.isArray(e)?e.map(n=>String(n).trim()).filter(Boolean):typeof e=="string"?e.split(",").map(n=>n.trim()).filter(Boolean):[]}function Ie(e){if(typeof e=="boolean")return e;if(typeof e!="string")return;let n=e.trim().toLowerCase();if(["1","true","yes","on"].includes(n))return!0;if(["0","false","no","off"].includes(n))return!1}function Te(e){return we(Ae(e)).name.toLowerCase()}function ee(e){return xe.test(e)}function $e(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ne(e){if(typeof e!="string")return;let n=e.trim().toLowerCase();if(n==="inherit")return"inherit";if(n==="none"||n==="off"||n==="disabled")return"none";if(n==="read"||n==="readonly"||n==="read-only")return"readOnly";if(n==="default"||n==="standard")return"default";if(n==="full"||n==="fullaccess"||n==="full-access")return"fullAccess"}function Ce(e){if(e===void 0)return;if(typeof e=="string"||Array.isArray(e)){let o=b(e);return o.length>0?{allow:o}:void 0}if(!$e(e))return;let n=b(e.allow),t=b(e.deny),r=Ne(e.mode),i={};return r&&(i.mode=r),n.length>0&&(i.allow=n),t.length>0&&(i.deny=t),Object.keys(i).length>0?i:void 0}var Y=1e8,Re=10080*60*1e3;function Me(e){let n=e["max-tokens"]??e.maxTokens,t=e.deadline,r={};if(n!=null&&n!==""){let i=String(n).trim(),o=Number(i);if(!/^[1-9][0-9]*$/.test(i)||!Number.isSafeInteger(o)||o>Y)throw new Error(`Invalid max-tokens "${i}". Use a whole number from 1 to ${Y}.`);r.maxTokens=o}if(t!=null&&t!==""){let i=String(t).trim(),o=/^([1-9][0-9]*)(ms|s|m|h)?$/.exec(i),a=o?{ms:1,s:1e3,m:6e4,h:36e5}[o[2]??"s"]:0,s=o?Number(o[1])*a:Number.NaN;if(!Number.isSafeInteger(s)||s>Re)throw new Error(`Invalid deadline "${i}". Use a duration such as 90s, 30m or 2h, at most 7 days.`);r.deadlineMs=s}return Object.keys(r).length>0?r:void 0}function Oe(e){let n=Ie(e.worktree??e.defaultWorktreeIsolation);if(n===!0)return"worktree";if(n===!1)return"none";let t=w(e.isolation)?.toLowerCase();if(t==="worktree")return"worktree";if(t==="none"||t==="off"||t==="disabled")return"none"}function je(e){let n=[];return ee(e.name)||n.push(`Invalid agent name "${e.name}". Use 1-64 lowercase letters, digits, hyphens, or underscores, starting with a letter.`),e.prompt.trim().length===0&&n.push("Agent definition body is empty."),n}function _e(e,n,t){let r=me(e,"utf8"),i=U(r),o=i.frontmatter,a=Te(e),s=w(o.name)?.toLowerCase()??a,d=i.content.trim(),p=je({name:s,prompt:d});if(p.length>0)throw new Error(p.join(" "));let u=w(o.description),c=w(o.model),f=w(o.color),y=w(o.memory??o.memoryScope),A=Oe(o),v=Ce(o.tools),S=Me(o);return{name:s,scope:n,path:e,...u?{description:u}:{},...c?{model:c}:{},...f?{color:f}:{},...y?{memory:y}:{},...A?{isolation:A}:{},tags:b(o.tags),skills:b(o.skills),hooks:b(o.hooks),prompt:d,active:!0,priority:t,...v?{toolPolicy:v}:{},...S?{budget:S}:{}}}function D(e,n,t,r,i){for(let o of Ee(e))try{r.push(_e(o,n,t))}catch(a){i.push({path:o,scope:n,message:a instanceof Error?a.message:String(a)})}}function qe(e){let n=new Map;for(let t of e){let r=n.get(t.name);(!r||t.priority>r.priority)&&n.set(t.name,t)}return n}function Le(e,n){let t=n.get(e.name),r=t?.path===e.path;return{name:e.name,scope:e.scope,path:e.path,...e.description?{description:e.description}:{},...e.model?{model:e.model}:{},...e.color?{color:e.color}:{},...e.memory?{memory:e.memory}:{},...e.isolation?{isolation:e.isolation}:{},tags:e.tags,skills:e.skills,hooks:e.hooks,prompt:e.prompt,active:r,...e.toolPolicy?{toolPolicy:e.toolPolicy}:{},...e.budget?{budget:{...e.budget}}:{},...!r&&t?{shadowedBy:{name:t.name,scope:t.scope,path:t.path}}:{}}}function ne(e=process.cwd(),n={}){let t=n.cwd??e,r=n.userDir??Q(n.agentHome),i=n.projectDirs??Se(t),o=n.pluginDirs??[],a=n.builtInDirs??[],s=[],d=[];n.includeUser!==!1&&D(r,"user",0,s,d),n.includeProject!==!1&&i.forEach((c,f)=>D(c,"project",100+f,s,d)),n.includePlugins&&o.forEach((c,f)=>D(c,"plugin",1e3+f,s,d)),n.includeBuiltIns&&a.forEach((c,f)=>D(c,"built-in",2e3+f,s,d));let p=qe(s),u=s.map(c=>Le(c,p));return u.sort((c,f)=>{if(c.active!==f.active)return c.active?-1:1;let y=c.name.localeCompare(f.name);return y!==0?y:c.path.localeCompare(f.path)}),{definitions:u,issues:d,searchPaths:{...n.includeUser!==!1?{user:r}:{},project:n.includeProject===!1?[]:i,plugin:n.includePlugins?o:[],builtIn:n.includeBuiltIns?a:[]}}}function fn(e,n=process.cwd(),t={}){let r=e.trim().toLowerCase(),i=ne(n,t);return{definition:i.definitions.find(o=>o.active&&o.name===r)??null,scan:i}}var C=class{constructor(n={}){this.options=n}options;scan(n=this.options.cwd??process.cwd()){return ne(n,this.options)}},K=class{constructor(n=new C){this.loader=n}loader;resolve(n,t=process.cwd()){let r=this.loader.scan(t),i=n.trim().toLowerCase();return{definition:r.definitions.find(o=>o.active&&o.name===i)??null,scan:r}}};function E(e){if(!e||e.length===0)return;let n=Array.from(new Set(e.map(t=>t.trim()).filter(Boolean)));return n.length>0?n:void 0}function Be(e,n){if(!e&&!n)return;if(!e)return E(n);if(!n)return E(e);let t=new Set(n);return E(e.filter(r=>t.has(r)))}function Fe(e,n){let t={none:0,readOnly:1,default:2,fullAccess:3,inherit:4},r=n??"inherit",i=e??"inherit";return t[r]<=t[i]?r:i}function R(e,n={}){let t=e.toolPolicy??{},r={mode:Fe(t.mode,n.mode)},i=Be(n.allow,t.allow),o=E([...n.deny??[],...t.deny??[]]);return i&&(r.allow=i),o&&(r.deny=o),r}function pn(e){return{name:`custom-agent:${e.name}`,order:20,provide(){let n=["","","# Custom Agent",`Active agent: ${e.name}`,`Definition scope: ${e.scope}`,`Definition path: ${e.path}`];return e.description&&n.push(`Description: ${e.description}`),n.push("",e.prompt),n.join(`
|
|
3
|
+
`)}}}function gn(e){return{name:e.name,scope:e.scope,path:e.path,...e.description?{description:e.description}:{},...e.model?{model:e.model}:{},...e.color?{color:e.color}:{},...e.memory?{memory:e.memory}:{},...e.isolation?{isolation:e.isolation}:{},tags:e.tags,skills:e.skills,hooks:e.hooks,active:e.active,...e.toolPolicy?{toolPolicy:e.toolPolicy}:{},...e.budget?{budget:{...e.budget}}:{},...e.shadowedBy?{shadowedBy:e.shadowedBy}:{}}}function P(e,n){return e.length>=n?e:e+" ".repeat(n-e.length)}function mn(e,n){let t=[];if(e.length===0)t.push("No custom agent definitions found.");else{t.push(`${P("name",22)} ${P("scope",8)} ${P("status",9)} description`),t.push(`${"-".repeat(22)} ${"-".repeat(8)} ${"-".repeat(9)} ${"-".repeat(32)}`);for(let r of e){let i=r.active?"active":"shadowed";t.push(`${P(r.name,22)} ${P(r.scope,8)} ${P(i,9)} ${r.description??""}`)}}if(n.length>0){t.push("","Invalid definitions:");for(let r of n)t.push(`- ${r.path}: ${r.message}`)}return t.join(`
|
|
4
4
|
`)+`
|
|
5
|
-
`}function
|
|
6
|
-
`)}function
|
|
7
|
-
`);return
|
|
8
|
-
`)}}}function
|
|
9
|
-
`),toolPolicy:{mode:"inherit"},skills:[],memoryScope:"user",evidence:["file-references"],currentTurnApproval:[...
|
|
5
|
+
`}function yn(e){let n=[`Agent: ${e.name}`,`Scope: ${e.scope}`,`Path: ${e.path}`,`Status: ${e.active?"active":"shadowed"}`];return e.description&&n.push(`Description: ${e.description}`),e.model&&n.push(`Model: ${e.model}`),e.color&&n.push(`Color: ${e.color}`),e.memory&&n.push(`Memory: ${e.memory}`),e.isolation&&n.push(`Isolation: ${e.isolation}`),e.tags.length>0&&n.push(`Tags: ${e.tags.join(", ")}`),e.skills.length>0&&n.push(`Skills: ${e.skills.join(", ")}`),e.hooks.length>0&&n.push(`Hooks: ${e.hooks.join(", ")}`),e.toolPolicy&&n.push(`Tools: ${JSON.stringify(e.toolPolicy)}`),e.budget?.maxTokens!==void 0&&n.push(`Token budget: ${e.budget.maxTokens}`),e.budget?.deadlineMs!==void 0&&n.push(`Deadline: ${e.budget.deadlineMs} ms`),e.shadowedBy&&n.push(`Shadowed by: ${e.shadowedBy.scope} ${e.shadowedBy.path}`),n.push("",e.prompt,""),n.join(`
|
|
6
|
+
`)}function hn(e){let n=e.name.trim().toLowerCase();if(!ee(n))throw new Error(`Invalid agent name "${e.name}". Use 1-64 lowercase letters, digits, hyphens, or underscores, starting with a letter.`);let t=e.scope==="user"?Q(e.agentHome):De(e.cwd??process.cwd());ge(t,{recursive:!0});let r=x(t,`${n}.md`);if(I(r)&&!e.force)throw new Error(`Agent definition already exists: ${r}`);let i=e.description?.trim()||`${n} custom agent`,o=e.prompt?.trim()||`You are ${n}. Replace this paragraph with precise operating instructions, constraints, tools policy, verification expectations, and the kind of work this agent should own.`,s=[...["---",`name: ${n}`,`description: ${JSON.stringify(i)}`,...e.model?.trim()?[`model: ${JSON.stringify(e.model.trim())}`]:[],...e.color?.trim()?[`color: ${JSON.stringify(e.color.trim())}`]:[],...e.memory?.trim()?[`memory: ${JSON.stringify(e.memory.trim())}`]:[],...e.isolation?[`isolation: ${e.isolation}`]:[],"tags: []",...e.skills&&e.skills.length>0?[`skills: ${JSON.stringify(e.skills)}`]:[],...e.hooks&&e.hooks.length>0?[`hooks: ${JSON.stringify(e.hooks)}`]:[],...e.toolPolicy?["tools:",...e.toolPolicy.mode?[` mode: ${e.toolPolicy.mode}`]:[],...e.toolPolicy.allow&&e.toolPolicy.allow.length>0?[` allow: ${JSON.stringify(e.toolPolicy.allow)}`]:[],...e.toolPolicy.deny&&e.toolPolicy.deny.length>0?[` deny: ${JSON.stringify(e.toolPolicy.deny)}`]:[]]:[],"---"],"",o,""].join(`
|
|
7
|
+
`);return he(r,s,"utf8"),r}import{createHash as Ve}from"node:crypto";var j=2,te=["publish","deploy","push","send","purchase","sign","file-legal","change-infrastructure"],h=class extends Error{constructor(n){super(n),this.name="AgentProfileValidationError"}},We=/^[a-z][a-z0-9_-]{0,63}$/,T=te;function g(e){return Array.from(new Set((e??[]).map(n=>n.trim()).filter(Boolean)))}function Ue(e,n){if(e===void 0)return n===void 0?void 0:g(n);if(n===void 0)return g(e);let t=new Set(n);return g(e.filter(r=>t.has(r)))}function He(e,n){if(e===void 0)return;let t=new Set(n);return e.filter(r=>!t.has(r))}function M(e,n,t){let r=n===void 0?null:new Set(n),i=new Set(t??[]);return e===void 0?n===void 0?void 0:g(n).filter(o=>!i.has(o)):g(e).filter(o=>(r===null||r.has(o))&&!i.has(o))}function $(e,n,t){return t[e]<=t[n]?e:n}function Ge(e,n,t){return t[e]>=t[n]?e:n}function O(e){return Array.isArray(e)?e.map(O):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).sort(([n],[t])=>n.localeCompare(t)).map(([n,t])=>[n,O(t)]))}function Je(e){return Ve("sha256").update(JSON.stringify(O(e))).digest("hex")}function k(e){return structuredClone(e)}function re(e,n){return e.overrides?.[n]??e.default}function Xe(e,n){let t={deny:0,ask:1,allow:2},r=new Set(e.requireCurrentTurnApproval),i=Object.fromEntries(T.map(d=>[d,re(e,d)]));for(let d of n){let p=d.externalActions;if(p){for(let u of T){let c=p.overrides?.[u]??p.default;c&&(i[u]=$(i[u],c,t))}for(let u of p.requireCurrentTurnApproval??[])r.add(u)}}let a=new Set(Object.values(i)).size===1?i.publish:"deny",s={};for(let d of T)i[d]!==a&&(s[d]=i[d]);return{default:a,...Object.keys(s).length>0?{overrides:s}:{},requireCurrentTurnApproval:[...r].filter(d=>i[d]!=="deny").sort()}}function oe(e){if(e.schemaVersion!==j)throw new h(`Unsupported agent profile schema: ${String(e.schemaVersion)}.`);if(!We.test(e.id))throw new h(`Invalid agent profile id: ${e.id}.`);if(!e.version.trim())throw new h(`Agent profile ${e.id} has no version.`);if(!e.displayName.trim()||!e.description.trim()||!e.prompt.trim())throw new h(`Agent profile ${e.id} requires displayName, description, and prompt.`);if(e.execution.allowedModes.length===0)throw new h(`Agent profile ${e.id} allows no collaboration modes.`);if(!e.execution.allowedModes.includes(e.execution.defaultMode))throw new h(`Agent profile ${e.id} default mode must be included in allowedModes.`)}function ze(e,n,t,r,i,o){return{name:`agent-profile:${e.id}`,order:20,provide(){let a=T.map(s=>`${s}=${re(n.externalActions,s)}`).join(", ");return["","","# XENO Agent Profile",`Profile: ${e.displayName} (${e.id}@${e.version})`,`Profile fingerprint: ${o}`,`Role: ${e.description}`,`Collaboration mode: ${r.defaultMode}`,`Isolation: ${r.isolation}`,`Memory: ${t.scope}; soul=${t.soul}`,`Permission profile ceiling: ${n.permissionProfile}`,`External actions: ${a}`,n.externalActions.requireCurrentTurnApproval.length>0?`Current-turn approval required for: ${n.externalActions.requireCurrentTurnApproval.join(", ")}`:"Current-turn approval required for: none",i.evidence.length>0?`Completion evidence: ${i.evidence.join(", ")}`:"Completion evidence: task-dependent",i.requirePrimarySources?"Use primary sources for factual claims and cite them near the claim.":"",i.requireCurrentInformation?"Verify time-sensitive claims against current authoritative information.":"",i.requireHumanReview?"Do not represent the result as professional approval; require human review before consequential use.":"",r.defaultDryRun?"Default to preview or dry-run. Do not perform external state changes without the required approval.":"","",e.prompt,"","Stop conditions:",...i.stopConditions.map(s=>`- ${s}`)].filter(s=>s!=="").join(`
|
|
8
|
+
`)}}}function Ye(e,n={}){oe(e);let t=k(e),r=n.boundaries??[],i=k(t.capabilities.tools),o=t.capabilities.skills.allow?g(t.capabilities.skills.allow):void 0,a=new Set(g(t.capabilities.skills.deny)),s=g(t.capabilities.hooks),d=new Set,p=t.capabilities.mcpServers?g(t.capabilities.mcpServers):void 0,u=t.capabilities.delegatedAgents?g(t.capabilities.delegatedAgents):void 0,c=t.capabilities.permissionProfile,f=t.memory.scope,y=t.memory.soul,A=t.execution.isolation,v={"read-only":0,default:1,"trusted-dev":2},S={none:0,session:1,project:2,user:3},se={disabled:0,read:1,learn:2},ae={none:0,worktree:1,container:2};for(let l of r){l.tools&&(i=R({toolPolicy:i},l.tools)),o=Ue(o,l.skills?.allow);for(let N of l.skills?.deny??[])a.add(N);s=M(s,l.hooks?.allow,void 0)??[];for(let N of l.hooks?.require??[])d.add(N);p=M(p,l.mcpServers?.allow,l.mcpServers?.deny),u=M(u,l.delegatedAgents?.allow,l.delegatedAgents?.deny),l.permissionProfile&&(c=$(c,l.permissionProfile,v)),l.maximumMemoryScope&&(f=$(f,l.maximumMemoryScope,S)),l.maximumSoulMode&&(y=$(y,l.maximumSoulMode,se)),l.requiredIsolation&&(A=Ge(A,l.requiredIsolation,ae))}let _=[...a].sort();c==="read-only"&&(i=R({toolPolicy:i},{mode:"readOnly",deny:["WebSearch","WebFetch"]})),o=He(o,_);let le=g(t.capabilities.skills.preload).filter(l=>!a.has(l)).filter(l=>o===void 0||o.includes(l));s=g([...s,...d]);let q={tools:i,skills:{preload:le,...o!==void 0?{allow:o}:{},deny:_},hooks:s,...p!==void 0?{mcpServers:p}:{},...u!==void 0?{delegatedAgents:u}:{},permissionProfile:c,externalActions:Xe(t.capabilities.externalActions,r)},L={...t.memory,scope:f,soul:y},B={...t.execution,isolation:A},F={schemaVersion:j,profile:t,boundarySources:r.map(l=>l.source),capabilities:q,memory:L,execution:B,completion:t.completion},V=Je(F);return{...F,fingerprint:V,promptSection:ze(t,q,L,B,t.completion,V)}}function m(e){return{schemaVersion:j,id:e.id,version:"1.0.0",displayName:e.displayName,description:e.description,kind:e.kind??"primary",prompt:e.prompt,capabilities:{tools:e.toolPolicy??{mode:"inherit"},skills:{preload:e.skills??[],...e.skillAllow?{allow:e.skillAllow}:{},deny:[]},hooks:[],permissionProfile:e.permissionProfile??"default",externalActions:{default:e.externalDefault??"ask",...e.externalOverrides?{overrides:e.externalOverrides}:{},requireCurrentTurnApproval:e.currentTurnApproval??[]}},memory:{scope:e.memoryScope??"project",role:e.id,soul:e.soul??"read"},execution:{defaultMode:e.defaultMode??"chat",allowedModes:e.allowedModes??["chat","plan","execute","review"],isolation:e.isolation??"none",allowBackground:e.allowBackground??!0,planForComplexTasks:e.planForComplexTasks??!0,defaultDryRun:e.defaultDryRun??!1},completion:{evidence:e.evidence??[],requirePrimarySources:e.primarySources??!1,requireCurrentInformation:e.currentInformation??!1,requireHumanReview:e.humanReview??!1,stopConditions:e.stopConditions??["The requested outcome is complete and required evidence has been reported.","A real authorization, information, or external-state blocker prevents safe progress."]},presentation:{label:e.displayName,color:e.color,glyph:e.glyph},tags:g(e.tags)}}var ie=[m({id:"assistant",displayName:"Assistant",description:"General-purpose XENO collaborator for mixed research, planning, and implementation work.",prompt:["Work as a thoughtful generalist. Establish the user's actual outcome, inspect relevant context, and take scoped action.","Escalate into a narrower specialist profile when domain risk or task depth warrants it."].join(`
|
|
9
|
+
`),toolPolicy:{mode:"inherit"},skills:[],memoryScope:"user",evidence:["file-references"],currentTurnApproval:[...te],color:"cyan",glyph:"\u25A0",tags:["general","primary"]}),m({id:"swe",displayName:"Software Engineer",description:"Repository-aware software engineer for careful implementation, debugging, refactoring, and verification.",prompt:["Inspect the repository before editing. Follow project instructions and preserve unrelated work.","Trace the smallest root cause, implement the narrowest coherent change, and verify from focused checks outward.","Do not claim completion without concrete test, typecheck, build, or runtime evidence appropriate to the risk."].join(`
|
|
10
10
|
`),toolPolicy:{mode:"default"},skills:["debug","run","verify"],permissionProfile:"trusted-dev",soul:"learn",evidence:["file-references","tests","typecheck","build","diff"],currentTurnApproval:["publish","deploy","push","change-infrastructure"],color:"green",glyph:"\u25C6",tags:["engineering","implementation"]}),m({id:"reviewer",displayName:"Code Reviewer",description:"Read-only reviewer focused on correctness, regressions, safety, tests, and maintainability.",prompt:["Lead with concrete findings ordered by severity. Cite exact file locations and explain impact.","Do not edit code. Distinguish confirmed defects from risks and questions. State when no material finding is present."].join(`
|
|
11
11
|
`),kind:"subagent",toolPolicy:{mode:"readOnly"},skills:["code-review","verify"],permissionProfile:"read-only",memoryScope:"session",soul:"read",allowedModes:["chat","review"],defaultMode:"review",evidence:["file-references","diff"],externalDefault:"deny",color:"yellow",glyph:"\u25C7",tags:["engineering","review","read-only"]}),m({id:"writer",displayName:"Writer",description:"Audience-aware writer and editor for clear, accurate, structurally coherent content.",prompt:["Determine audience, purpose, voice, format, and source constraints before drafting.","Preserve factual meaning, avoid invented claims, and revise for clarity, rhythm, consistency, and usefulness."].join(`
|
|
12
12
|
`),toolPolicy:{mode:"default",allow:["Read","Glob","Grep","LS","Write","Edit","WebSearch","WebFetch","Think","AskUser","Skill"]},skills:["verify"],evidence:["sources","file-references","diff"],currentTurnApproval:["send","publish"],color:"magenta",glyph:"\u2726",tags:["writing","editing"]}),m({id:"research",displayName:"Researcher",description:"Evidence-first researcher for questions, comparisons, synthesis, and source-backed analysis.",prompt:["Break the question into verifiable claims. Prefer primary and authoritative sources, compare dates, and cite near each claim.","Separate sourced fact, inference, uncertainty, and recommendation. Do not make changes unless the user explicitly expands scope."].join(`
|
|
@@ -14,4 +14,4 @@ import{existsSync as E,mkdirSync as pe,readFileSync as ge,readdirSync as me,writ
|
|
|
14
14
|
`),toolPolicy:{mode:"default",allow:["Read","Glob","Grep","LS","Write","Edit","WebSearch","WebFetch","Think","AskUser","Skill"]},skills:["verify"],evidence:["sources","file-references","diff"],currentTurnApproval:["send","publish","change-infrastructure"],color:"cyan",glyph:"\u25A3",tags:["product","planning"]}),m({id:"ci",displayName:"CI Engineer",description:"Continuous-integration specialist for reproducing, repairing, and hardening automated gates.",prompt:["Identify the exact failing job and command. Reproduce it locally or in an equivalent immutable environment before patching.","Fix only the underlying failure, retain logs as evidence, and rerun the matching gate before broader validation."].join(`
|
|
15
15
|
`),toolPolicy:{mode:"default"},skills:["ci-repair","debug","run","verify"],permissionProfile:"trusted-dev",soul:"learn",evidence:["tests","typecheck","build","diff"],currentTurnApproval:["push","deploy","change-infrastructure"],color:"green",glyph:"\u25A4",tags:["engineering","ci","automation"]}),m({id:"devops",displayName:"DevOps and Release",description:"Dry-run-first infrastructure and release specialist with explicit external-action gates.",prompt:["Inspect the release or infrastructure contract first. Build an immutable candidate and produce reproducible evidence.","Default to plan, preview, dry-run, and local verification. Never publish, deploy, push, sign, purchase, or mutate infrastructure unless the current user turn explicitly authorizes that exact action and target.","For releases, preserve SDK-before-CLI dependency order and verify the public artifact after publication."].join(`
|
|
16
16
|
`),toolPolicy:{mode:"default"},skills:["release","run","verify"],permissionProfile:"default",memoryScope:"project",soul:"learn",isolation:"worktree",defaultMode:"plan",defaultDryRun:!0,evidence:["tests","build","diff","deployment-proof","human-review"],humanReview:!0,currentTurnApproval:["publish","deploy","push","purchase","sign","change-infrastructure"],color:"yellow",glyph:"\u2B22",tags:["devops","release","infrastructure"]}),m({id:"legal-research",displayName:"Legal Research",description:"Restricted legal-information researcher that produces sourced analysis for qualified human review.",prompt:["Identify jurisdiction, effective date, parties, and the precise legal question before analyzing it.","Use current primary legal sources wherever possible. Cite each material proposition and distinguish law, interpretation, uncertainty, and practical next steps.","Provide legal information, not professional representation. Never sign, file, submit, contact a party, accept terms, or make a payment."].join(`
|
|
17
|
-
`),toolPolicy:{mode:"readOnly"},skills:["verify"],permissionProfile:"default",memoryScope:"session",soul:"disabled",allowedModes:["chat","plan","review"],defaultMode:"review",evidence:["sources","human-review"],primarySources:!0,currentInformation:!0,humanReview:!0,externalDefault:"deny",color:"red",glyph:"\xA7",tags:["legal","research","restricted","read-only"],stopConditions:["The jurisdiction or effective date is unknown and materially changes the answer.","The task requires legal representation, filing, signature, payment, or contact with a third party.","The sourced analysis is complete and clearly marked for qualified human review."]})],
|
|
17
|
+
`),toolPolicy:{mode:"readOnly"},skills:["verify"],permissionProfile:"default",memoryScope:"session",soul:"disabled",allowedModes:["chat","plan","review"],defaultMode:"review",evidence:["sources","human-review"],primarySources:!0,currentInformation:!0,humanReview:!0,externalDefault:"deny",color:"red",glyph:"\xA7",tags:["legal","research","restricted","read-only"],stopConditions:["The jurisdiction or effective date is unknown and materially changes the answer.","The task requires legal representation, filing, signature, payment, or contact with a third party.","The sourced analysis is complete and clearly marked for qualified human review."]})],Ke={general:"assistant",software:"swe",engineer:"swe","software-engineer":"swe",review:"reviewer","code-reviewer":"reviewer",qa:"research","q-and-a":"research",researcher:"research","product-manager":"product","ci-cd":"ci",cicd:"ci",release:"devops","devops-release":"devops",legal:"legal-research"};function bn(){return ie.map(k)}function Qe(e){let n=e.trim().toLowerCase(),t=Ke[n]??n,r=ie.find(i=>i.id===t);return r?k(r):null}function Ze(e){let n=e.memory?.trim().toLowerCase(),t=n==="none"||n==="session"||n==="project"||n==="user"?n:"project",r=m({id:e.name,displayName:e.name,description:e.description??`Custom XENO agent ${e.name}.`,prompt:e.prompt,toolPolicy:e.toolPolicy??{mode:"inherit"},skills:e.skills,memoryScope:t,isolation:e.isolation??"none",color:e.color??"cyan",glyph:"\u25A0",tags:["custom",...e.tags]});return e.model&&(r.model={preferred:e.model}),r.capabilities.hooks=[...e.hooks],r}function xn(e){return oe(e),{name:e.id,scope:"built-in",path:`builtin:xeno-agent-profile/${e.id}@${e.version}`,description:e.description,...e.model?.preferred?{model:e.model.preferred}:{},color:e.presentation.color,memory:e.memory.scope,isolation:e.execution.isolation==="container"?"worktree":e.execution.isolation,tags:[...e.tags],skills:[...e.capabilities.skills.preload],hooks:[...e.capabilities.hooks],active:!0,toolPolicy:k(e.capabilities.tools),prompt:e.prompt}}function kn(e){let n=e.definition?Ze(e.definition):Qe(e.name);return n?Ye(n,{boundaries:e.boundaries}):null}export{te as AGENT_PROFILE_EXTERNAL_ACTIONS,C as AgentDefinitionLoader,K as AgentDefinitionResolver,h as AgentProfileValidationError,j as XENO_AGENT_PROFILE_SCHEMA_VERSION,xn as agentDefinitionFromProfile,Ze as agentProfileFromDefinition,Ye as compileAgentProfile,hn as createAgentDefinitionFile,pn as createAgentDefinitionPromptSection,Se as getProjectAgentDefinitionDirs,De as getProjectAgentDefinitionsDir,Q as getUserAgentDefinitionsDir,ee as isValidAgentDefinitionName,bn as listBuiltInAgentProfiles,yn as renderAgentDefinition,mn as renderAgentDefinitions,fn as resolveAgentDefinition,kn as resolveAgentProfile,R as resolveAgentToolPolicy,Qe as resolveBuiltInAgentProfile,ne as scanAgentDefinitions,gn as toAgentDefinitionMetadata,je as validateAgentDefinition};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/utils/yaml.ts":{"bytes":5506,"imports":[],"format":"esm"},"src/utils/platform.ts":{"bytes":5600,"imports":[{"path":"node:os","kind":"import-statement","external":true},{"path":"node:child_process","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true}],"format":"esm"},"src/agents/definitions.ts":{"bytes":
|
|
1
|
+
{"inputs":{"src/utils/yaml.ts":{"bytes":5506,"imports":[],"format":"esm"},"src/utils/platform.ts":{"bytes":5600,"imports":[{"path":"node:os","kind":"import-statement","external":true},{"path":"node:child_process","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true}],"format":"esm"},"src/agents/definitions.ts":{"bytes":23563,"imports":[{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"src/utils/yaml.ts","kind":"import-statement","original":"../utils/yaml.js"},{"path":"src/utils/platform.ts","kind":"import-statement","original":"../utils/platform.js"}],"format":"esm"},"src/agents/profiles.ts":{"bytes":33625,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/agents/definitions.ts","kind":"import-statement","original":"./definitions.js"}],"format":"esm"},"src/agents/index.ts":{"bytes":65,"imports":[{"path":"src/agents/definitions.ts","kind":"import-statement","original":"./definitions.js"},{"path":"src/agents/profiles.ts","kind":"import-statement","original":"./profiles.js"}],"format":"esm"}},"outputs":{"dist/agents/index.cjs":{"imports":[{"path":"node:fs","kind":"require-call","external":true},{"path":"node:path","kind":"require-call","external":true},{"path":"node:os","kind":"require-call","external":true},{"path":"node:path","kind":"require-call","external":true},{"path":"node:crypto","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/agents/index.ts","inputs":{"src/agents/index.ts":{"bytesInOutput":822},"src/agents/definitions.ts":{"bytesInOutput":9894},"src/utils/yaml.ts":{"bytesInOutput":2220},"src/utils/platform.ts":{"bytesInOutput":241},"src/agents/profiles.ts":{"bytesInOutput":15419}},"bytes":29676}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/utils/yaml.ts":{"bytes":5506,"imports":[],"format":"esm"},"src/utils/platform.ts":{"bytes":5600,"imports":[{"path":"node:os","kind":"import-statement","external":true},{"path":"node:child_process","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true}],"format":"esm"},"src/agents/definitions.ts":{"bytes":
|
|
1
|
+
{"inputs":{"src/utils/yaml.ts":{"bytes":5506,"imports":[],"format":"esm"},"src/utils/platform.ts":{"bytes":5600,"imports":[{"path":"node:os","kind":"import-statement","external":true},{"path":"node:child_process","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true}],"format":"esm"},"src/agents/definitions.ts":{"bytes":23563,"imports":[{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"src/utils/yaml.ts","kind":"import-statement","original":"../utils/yaml.js"},{"path":"src/utils/platform.ts","kind":"import-statement","original":"../utils/platform.js"}],"format":"esm"},"src/agents/profiles.ts":{"bytes":33625,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/agents/definitions.ts","kind":"import-statement","original":"./definitions.js"}],"format":"esm"},"src/agents/index.ts":{"bytes":65,"imports":[{"path":"src/agents/definitions.ts","kind":"import-statement","original":"./definitions.js"},{"path":"src/agents/profiles.ts","kind":"import-statement","original":"./profiles.js"}],"format":"esm"}},"outputs":{"dist/agents/index.js":{"imports":[{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"node:os","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"node:crypto","kind":"import-statement","external":true}],"exports":["AGENT_PROFILE_EXTERNAL_ACTIONS","AgentDefinitionLoader","AgentDefinitionResolver","AgentProfileValidationError","XENO_AGENT_PROFILE_SCHEMA_VERSION","agentDefinitionFromProfile","agentProfileFromDefinition","compileAgentProfile","createAgentDefinitionFile","createAgentDefinitionPromptSection","getProjectAgentDefinitionDirs","getProjectAgentDefinitionsDir","getUserAgentDefinitionsDir","isValidAgentDefinitionName","listBuiltInAgentProfiles","renderAgentDefinition","renderAgentDefinitions","resolveAgentDefinition","resolveAgentProfile","resolveAgentToolPolicy","resolveBuiltInAgentProfile","scanAgentDefinitions","toAgentDefinitionMetadata","validateAgentDefinition"],"entryPoint":"src/agents/index.ts","inputs":{"src/agents/definitions.ts":{"bytesInOutput":9831},"src/utils/yaml.ts":{"bytesInOutput":2217},"src/utils/platform.ts":{"bytesInOutput":220},"src/agents/index.ts":{"bytesInOutput":0},"src/agents/profiles.ts":{"bytesInOutput":15420}},"bytes":28457}}}
|