@xenosystem/agent-sdk 0.10.35 → 0.10.37
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/README.md +1 -1
- package/dist/agents/index.cjs +9 -9
- package/dist/agents/index.d.cts +4 -1
- package/dist/agents/index.d.ts +4 -1
- package/dist/agents/index.js +16 -16
- 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/artifacts/metafile-cjs.json +1 -1
- package/dist/artifacts/metafile-esm.json +1 -1
- package/dist/automation/index.cjs +35 -24
- package/dist/automation/index.d.cts +194 -12
- package/dist/automation/index.d.ts +194 -12
- package/dist/automation/index.js +35 -24
- package/dist/automation/metafile-cjs.json +1 -1
- package/dist/automation/metafile-esm.json +1 -1
- package/dist/control-plane/index.cjs +8 -8
- package/dist/control-plane/index.js +8 -8
- package/dist/control-plane/metafile-cjs.json +1 -1
- package/dist/control-plane/metafile-esm.json +1 -1
- package/dist/coordination/index.cjs +2 -2
- package/dist/coordination/index.js +2 -2
- package/dist/coordination/metafile-cjs.json +1 -1
- package/dist/coordination/metafile-esm.json +1 -1
- package/dist/electron/index.cjs +243 -223
- package/dist/electron/index.d.cts +198 -1
- package/dist/electron/index.d.ts +198 -1
- package/dist/electron/index.js +243 -223
- package/dist/electron/metafile-cjs.json +1 -1
- package/dist/electron/metafile-esm.json +1 -1
- package/dist/hosted/metafile-cjs.json +1 -1
- package/dist/hosted/metafile-esm.json +1 -1
- package/dist/index.cjs +406 -395
- package/dist/index.d.cts +325 -172
- package/dist/index.d.ts +325 -172
- package/dist/index.js +406 -395
- package/dist/intelligence/index.cjs +4 -4
- package/dist/intelligence/index.js +4 -4
- package/dist/intelligence/metafile-cjs.json +1 -1
- package/dist/intelligence/metafile-esm.json +1 -1
- package/dist/mcp/index.cjs +20 -20
- package/dist/mcp/index.d.cts +146 -0
- package/dist/mcp/index.d.ts +146 -0
- package/dist/mcp/index.js +17 -17
- package/dist/mcp/metafile-cjs.json +1 -1
- package/dist/mcp/metafile-esm.json +1 -1
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/providers/index.cjs +10 -10
- package/dist/providers/index.d.cts +49 -5
- package/dist/providers/index.d.ts +49 -5
- package/dist/providers/index.js +10 -10
- package/dist/providers/metafile-cjs.json +1 -1
- package/dist/providers/metafile-esm.json +1 -1
- package/dist/recipes/metafile-cjs.json +1 -1
- package/dist/recipes/metafile-esm.json +1 -1
- package/dist/research/metafile-cjs.json +1 -1
- package/dist/research/metafile-esm.json +1 -1
- package/dist/session/index.cjs +24 -24
- package/dist/session/index.js +16 -16
- package/dist/session/metafile-cjs.json +1 -1
- package/dist/session/metafile-esm.json +1 -1
- package/dist/sharing/index.cjs +1 -1
- package/dist/sharing/index.js +3 -3
- package/dist/sharing/metafile-cjs.json +1 -1
- package/dist/sharing/metafile-esm.json +1 -1
- package/dist/skills/index.d.cts +6 -0
- package/dist/skills/index.d.ts +6 -0
- package/dist/utils/index.cjs +24 -24
- package/dist/utils/index.d.cts +14 -2
- package/dist/utils/index.d.ts +14 -2
- package/dist/utils/index.js +24 -24
- package/dist/utils/metafile-cjs.json +1 -1
- package/dist/utils/metafile-esm.json +1 -1
- package/ownership/evidence/PROPRIETARY-PTY-1/implementation-record.md +1 -1
- package/ownership/ownership-policy.json +14 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@ Core runtime for XENO agent-enabled products. It provides the agent loop, tool e
|
|
|
4
4
|
|
|
5
5
|
## Runtime Ownership
|
|
6
6
|
|
|
7
|
-
The ownership program targets P2 feature parity, but this checkout must be described by its generated audit rather than by the target. Run `npm run build && npm run compliance:ownership:artifacts` or inspect `docs/compliance/ownership-inventory.md`. Node remains an explicitly external host through P2, and development/build packages remain third-party build inputs. Do not claim that a release is fully proprietary, entirely Xeno-owned, or free of third-party runtime code unless the packaged release smoke prints the corresponding achieved level and the required provenance/counsel gates are complete.
|
|
7
|
+
The ownership program targets P2 feature parity, but this checkout must be described by its generated audit rather than by the target. Run `npm run build && npm run compliance:ownership:artifacts` or inspect `docs/compliance/memos/ownership-inventory.md`. Node remains an explicitly external host through P2, and development/build packages remain third-party build inputs. Do not claim that a release is fully proprietary, entirely Xeno-owned, or free of third-party runtime code unless the packaged release smoke prints the corresponding achieved level and the required provenance/counsel gates are complete.
|
|
8
8
|
|
|
9
9
|
The canonical policy and engineering clean-room controls are under `ownership/`.
|
|
10
10
|
|
package/dist/agents/index.cjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`)),nextIndex:
|
|
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,
|
|
1
|
+
"use strict";var q=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var Ae=Object.getOwnPropertyNames;var we=Object.prototype.hasOwnProperty;var be=(e,r)=>{for(var n in r)q(e,n,{get:r[n],enumerable:!0})},xe=(e,r,n,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of Ae(r))!we.call(e,i)&&i!==n&&q(e,i,{get:()=>r[i],enumerable:!(t=Pe(r,i))||t.enumerable});return e};var Se=e=>xe(q({},"__esModule",{value:!0}),e);var lr={};be(lr,{AGENT_PROFILE_EXTERNAL_ACTIONS:()=>G,AgentDefinitionLoader:()=>N,AgentDefinitionResolver:()=>X,AgentProfileValidationError:()=>A,XENO_AGENT_PROFILE_SCHEMA_VERSION:()=>B,agentDefinitionFromProfile:()=>ir,agentProfileFromDefinition:()=>ye,compileAgentProfile:()=>me,createAgentDefinitionFile:()=>Je,createAgentDefinitionPromptSection:()=>We,getProjectAgentDefinitionDirs:()=>le,getProjectAgentDefinitionsDir:()=>ae,getUserAgentDefinitionsDir:()=>F,isValidAgentDefinitionName:()=>K,listBuiltInAgentProfiles:()=>or,renderAgentDefinition:()=>Ue,renderAgentDefinitions:()=>Ge,resolveAgentDefinition:()=>Fe,resolveAgentProfile:()=>sr,resolveAgentToolPolicy:()=>M,resolveBuiltInAgentProfile:()=>ge,scanAgentDefinitions:()=>V,toAgentDefinitionMetadata:()=>He,validateAgentDefinition:()=>ce,validateAgentMcpServers:()=>D});module.exports=Se(lr);var g=require("node:fs"),m=require("node:path");function re(e){let r=ke(e);return{frontmatter:r.frontmatter,content:r.content.trim()}}function ke(e){let r=e.replace(/^\uFEFF/,"");if(!r.startsWith("---"))return{frontmatter:{},content:e};let n=r.search(/\r?\n/);if(n<0||r.slice(0,n).trim()!=="---")return{frontmatter:{},content:e};let t=r.slice(n+(r[n]==="\r"?2:1)),i=t.match(/(?:^|\r?\n)---[ \t]*(?:\r?\n|$)/);if(!i||i.index===void 0)throw new Error("YAML frontmatter is not closed.");let o=t.slice(0,i.index),l=i[0],s=i.index+l.length;return{frontmatter:ne(o),content:t.slice(s)}}function ne(e){let r={},n=e.split(/\r?\n/);for(let t=0;t<n.length;t+=1){let i=n[t];if(!i.trim()||i.trimStart().startsWith("#"))continue;if(/^\s/.test(i))throw new Error(`Unexpected indentation at line ${t+1}.`);let o=De(i,t+1);if(o.key==="<<")throw new Error("YAML merge keys are not supported.");if(o.value!==""){r[o.key]=te(o.value,t+1);continue}let l=ve(n,t+1);r[o.key]=l.value,t=l.nextIndex-1}return r}function ve(e,r){let n=[],t=r;for(;t<e.length;t+=1){let o=e[t];if(!o.trim()){n.push(o);continue}if(!/^\s/.test(o))break;n.push(o.replace(/^ {2}/,""))}let i=n.filter(o=>o.trim()&&!o.trimStart().startsWith("#"));return i.length===0?{value:{},nextIndex:t}:i.every(o=>o.trimStart().startsWith("- "))?{value:i.map((o,l)=>te(o.trimStart().slice(2),r+l+1)),nextIndex:t}:{value:ne(n.join(`
|
|
2
|
+
`)),nextIndex:t}}function De(e,r){let n=e.indexOf(":");if(n<=0)throw new Error(`Invalid YAML line ${r}.`);let t=e.slice(0,n).trim(),i=e.slice(n+1).trim();if(!t)throw new Error(`Invalid YAML key at line ${r}.`);return{key:t,value:i}}function te(e,r){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 ee(e,r);if(e.startsWith("'")){if(!e.endsWith("'"))throw new Error(`Unclosed quoted scalar at line ${r}.`);return e.slice(1,-1).replace(/''/g,"'")}if(e.startsWith("[")||e.startsWith("{"))return ee(e,r);if(e.includes("[")||e.includes("]")||e.includes("{")||e.includes("}"))throw new Error(`Unsupported YAML scalar at line ${r}.`);return e}function ee(e,r){try{return JSON.parse(e)}catch{throw new Error(`Invalid YAML scalar at line ${r}.`)}}var w=require("node:os");var v=require("node:path");var mr=(0,w.platform)();var pr=(0,w.release)(),gr=(0,w.homedir)();function oe(){let e=process.env.XENO_AGENT_HOME?.trim();return e?(0,v.resolve)(e):(0,v.resolve)((0,w.homedir)(),".xeno-agent")}var Te=/^[a-z][a-z0-9_-]{0,63}$/;function Ee(){return oe()}function F(e=Ee()){return(0,m.join)(e,"agents")}function se(e){return(0,m.resolve)(e)}function Ie(e){let r=(0,m.dirname)(e);return r===e?e:r}function le(e=process.cwd()){let r=se(e),n=[],t=r;for(;;){let o=(0,m.join)(t,".claude","agents"),l=(0,m.join)(t,".xeno","agents");n.push({...(0,g.existsSync)(o)?{claude:o}:{},...(0,g.existsSync)(l)?{xeno:l}:{}});let s=Ie(t);if(s===t)break;t=s}n.reverse();let i=[];for(let o of n)o.claude&&i.push(o.claude),o.xeno&&i.push(o.xeno);return i}function ae(e=process.cwd()){return(0,m.join)(se(e),".xeno","agents")}function Oe(e){return(0,g.existsSync)(e)?(0,g.readdirSync)(e,{withFileTypes:!0}).filter(r=>r.isFile()&&r.name.toLowerCase().endsWith(".md")).map(r=>(0,m.join)(e,r.name)).sort((r,n)=>r.localeCompare(n)):[]}function S(e){if(typeof e!="string")return;let r=e.trim();return r.length>0?r:void 0}function k(e){return Array.isArray(e)?e.map(r=>String(r).trim()).filter(Boolean):typeof e=="string"?e.split(",").map(r=>r.trim()).filter(Boolean):[]}function Re(e){if(typeof e=="boolean")return e;if(typeof e!="string")return;let r=e.trim().toLowerCase();if(["1","true","yes","on"].includes(r))return!0;if(["0","false","no","off"].includes(r))return!1}function $e(e){return(0,m.parse)((0,m.basename)(e)).name.toLowerCase()}function K(e){return Te.test(e)}function Ce(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ne(e){if(typeof e!="string")return;let r=e.trim().toLowerCase();if(r==="inherit")return"inherit";if(r==="none"||r==="off"||r==="disabled")return"none";if(r==="read"||r==="readonly"||r==="read-only")return"readOnly";if(r==="default"||r==="standard")return"default";if(r==="full"||r==="fullaccess"||r==="full-access")return"fullAccess"}function Me(e){if(e===void 0)return;if(typeof e=="string"||Array.isArray(e)){let o=k(e);return o.length>0?{allow:o}:void 0}if(!Ce(e))return;let r=k(e.allow),n=k(e.deny),t=Ne(e.mode),i={};return t&&(i.mode=t),r.length>0&&(i.allow=r),n.length>0&&(i.deny=n),Object.keys(i).length>0?i:void 0}var ie=1e8,je=10080*60*1e3;function _e(e){let r=e["max-tokens"]??e.maxTokens,n=e.deadline,t={};if(r!=null&&r!==""){let i=String(r).trim(),o=Number(i);if(!/^[1-9][0-9]*$/.test(i)||!Number.isSafeInteger(o)||o>ie)throw new Error(`Invalid max-tokens "${i}". Use a whole number from 1 to ${ie}.`);t.maxTokens=o}if(n!=null&&n!==""){let i=String(n).trim(),o=/^([1-9][0-9]*)(ms|s|m|h)?$/.exec(i),l=o?{ms:1,s:1e3,m:6e4,h:36e5}[o[2]??"s"]:0,s=o?Number(o[1])*l:Number.NaN;if(!Number.isSafeInteger(s)||s>je)throw new Error(`Invalid deadline "${i}". Use a duration such as 90s, 30m or 2h, at most 7 days.`);t.deadlineMs=s}return Object.keys(t).length>0?t:void 0}function Be(e){let r=Re(e.worktree??e.defaultWorktreeIsolation);if(r===!0)return"worktree";if(r===!1)return"none";let n=S(e.isolation)?.toLowerCase();if(n==="worktree")return"worktree";if(n==="none"||n==="off"||n==="disabled")return"none"}function D(e){if(!Array.isArray(e)||e.length>256||e.some(r=>typeof r!="string"||r.trim().length===0||r.length>128||/[\p{Cc}\p{Cs}]/u.test(r)))throw new Error("mcp-servers must be a bounded array of exact configured server names.");return[...new Set(e)]}function ce(e){let r=[];return K(e.name)||r.push(`Invalid agent name "${e.name}". Use 1-64 lowercase letters, digits, hyphens, or underscores, starting with a letter.`),e.prompt.trim().length===0&&r.push("Agent definition body is empty."),r}function Le(e,r,n){let t=(0,g.readFileSync)(e,"utf8"),i=re(t),o=i.frontmatter,l=$e(e),s=S(o.name)?.toLowerCase()??l,a=i.content.trim(),p=ce({name:s,prompt:a});if(p.length>0)throw new Error(p.join(" "));let d=S(o.description),u=S(o.model),f=S(o.color),P=S(o.memory??o.memoryScope),b=Be(o),E=Me(o.tools),I=_e(o);if(Object.hasOwn(o,"mcp-servers")&&Object.hasOwn(o,"mcpServers"))throw new Error("Declare mcp-servers only once; conflicting aliases are refused.");let O=Object.hasOwn(o,"mcp-servers")?o["mcp-servers"]:o.mcpServers,R=O===void 0?void 0:D(O);return{name:s,scope:r,path:e,...d?{description:d}:{},...u?{model:u}:{},...f?{color:f}:{},...P?{memory:P}:{},...b?{isolation:b}:{},tags:k(o.tags),skills:k(o.skills),hooks:k(o.hooks),...R!==void 0?{mcpServers:R}:{},prompt:a,active:!0,priority:n,...E?{toolPolicy:E}:{},...I?{budget:I}:{}}}function $(e,r,n,t,i){for(let o of Oe(e))try{t.push(Le(o,r,n))}catch(l){i.push({path:o,scope:r,message:l instanceof Error?l.message:String(l)})}}function qe(e){let r=new Map;for(let n of e){let t=r.get(n.name);(!t||n.priority>t.priority)&&r.set(n.name,n)}return r}function Xe(e,r){let n=r.get(e.name),t=n?.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,...e.mcpServers!==void 0?{mcpServers:[...e.mcpServers]}:{},prompt:e.prompt,active:t,...e.toolPolicy?{toolPolicy:e.toolPolicy}:{},...e.budget?{budget:{...e.budget}}:{},...!t&&n?{shadowedBy:{name:n.name,scope:n.scope,path:n.path}}:{}}}function V(e=process.cwd(),r={}){let n=r.cwd??e,t=r.userDir??F(r.agentHome),i=r.projectDirs??le(n),o=r.pluginDirs??[],l=r.builtInDirs??[],s=[],a=[];r.includeUser!==!1&&$(t,"user",0,s,a),r.includeProject!==!1&&i.forEach((u,f)=>$(u,"project",100+f,s,a)),r.includePlugins&&o.forEach((u,f)=>$(u,"plugin",1e3+f,s,a)),r.includeBuiltIns&&l.forEach((u,f)=>$(u,"built-in",2e3+f,s,a));let p=qe(s),d=s.map(u=>Xe(u,p));return d.sort((u,f)=>{if(u.active!==f.active)return u.active?-1:1;let P=u.name.localeCompare(f.name);return P!==0?P:u.path.localeCompare(f.path)}),{definitions:d,issues:a,searchPaths:{...r.includeUser!==!1?{user:t}:{},project:r.includeProject===!1?[]:i,plugin:r.includePlugins?o:[],builtIn:r.includeBuiltIns?l:[]}}}function Fe(e,r=process.cwd(),n={}){let t=e.trim().toLowerCase(),i=V(r,n);return{definition:i.definitions.find(o=>o.active&&o.name===t)??null,scan:i}}var N=class{constructor(r={}){this.options=r}options;scan(r=this.options.cwd??process.cwd()){return V(r,this.options)}},X=class{constructor(r=new N){this.loader=r}loader;resolve(r,n=process.cwd()){let t=this.loader.scan(n),i=r.trim().toLowerCase();return{definition:t.definitions.find(o=>o.active&&o.name===i)??null,scan:t}}};function C(e){if(!e||e.length===0)return;let r=Array.from(new Set(e.map(n=>n.trim()).filter(Boolean)));return r.length>0?r:void 0}function Ke(e,r){if(!e&&!r)return;if(!e)return C(r);if(!r)return C(e);let n=new Set(r);return C(e.filter(t=>n.has(t)))}function Ve(e,r){let n={none:0,readOnly:1,default:2,fullAccess:3,inherit:4},t=r??"inherit",i=e??"inherit";return n[t]<=n[i]?t:i}function M(e,r={}){let n=e.toolPolicy??{},t={mode:Ve(n.mode,r.mode)},i=Ke(r.allow,n.allow),o=C([...r.deny??[],...n.deny??[]]);return i&&(t.allow=i),o&&(t.deny=o),t}function We(e){return{name:`custom-agent:${e.name}`,order:20,provide(){let r=["","","# Custom Agent",`Active agent: ${e.name}`,`Definition scope: ${e.scope}`,`Definition path: ${e.path}`];return e.description&&r.push(`Description: ${e.description}`),r.push("",e.prompt),r.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,...e.mcpServers!==void 0?{mcpServers:[...e.mcpServers]}:{},active:e.active,...e.toolPolicy?{toolPolicy:e.toolPolicy}:{},...e.budget?{budget:{...e.budget}}:{},...e.shadowedBy?{shadowedBy:e.shadowedBy}:{}}}function x(e,r){return e.length>=r?e:e+" ".repeat(r-e.length)}function Ge(e,r){let n=[];if(e.length===0)n.push("No custom agent definitions found.");else{n.push(`${x("name",22)} ${x("scope",8)} ${x("status",9)} description`),n.push(`${"-".repeat(22)} ${"-".repeat(8)} ${"-".repeat(9)} ${"-".repeat(32)}`);for(let t of e){let i=t.active?"active":"shadowed";n.push(`${x(t.name,22)} ${x(t.scope,8)} ${x(i,9)} ${t.description??""}`)}}if(r.length>0){n.push("","Invalid definitions:");for(let t of r)n.push(`- ${t.path}: ${t.message}`)}return n.join(`
|
|
4
4
|
`)+`
|
|
5
|
-
`}function
|
|
6
|
-
`)}function
|
|
7
|
-
`);return(0,
|
|
8
|
-
`)}}}function
|
|
9
|
-
`),toolPolicy:{mode:"inherit"},skills:[],memoryScope:"user",evidence:["file-references"],currentTurnApproval:[...
|
|
5
|
+
`}function Ue(e){let r=[`Agent: ${e.name}`,`Scope: ${e.scope}`,`Path: ${e.path}`,`Status: ${e.active?"active":"shadowed"}`];return e.description&&r.push(`Description: ${e.description}`),e.model&&r.push(`Model: ${e.model}`),e.color&&r.push(`Color: ${e.color}`),e.memory&&r.push(`Memory: ${e.memory}`),e.isolation&&r.push(`Isolation: ${e.isolation}`),e.tags.length>0&&r.push(`Tags: ${e.tags.join(", ")}`),e.skills.length>0&&r.push(`Skills: ${e.skills.join(", ")}`),e.hooks.length>0&&r.push(`Hooks: ${e.hooks.join(", ")}`),e.mcpServers!==void 0&&r.push(`MCP servers: ${e.mcpServers.join(", ")||"(none)"}`),e.toolPolicy&&r.push(`Tools: ${JSON.stringify(e.toolPolicy)}`),e.budget?.maxTokens!==void 0&&r.push(`Token budget: ${e.budget.maxTokens}`),e.budget?.deadlineMs!==void 0&&r.push(`Deadline: ${e.budget.deadlineMs} ms`),e.shadowedBy&&r.push(`Shadowed by: ${e.shadowedBy.scope} ${e.shadowedBy.path}`),r.push("",e.prompt,""),r.join(`
|
|
6
|
+
`)}function Je(e){let r=e.name.trim().toLowerCase();if(!K(r))throw new Error(`Invalid agent name "${e.name}". Use 1-64 lowercase letters, digits, hyphens, or underscores, starting with a letter.`);let n=e.scope==="user"?F(e.agentHome):ae(e.cwd??process.cwd());(0,g.mkdirSync)(n,{recursive:!0});let t=(0,m.join)(n,`${r}.md`);if((0,g.existsSync)(t)&&!e.force)throw new Error(`Agent definition already exists: ${t}`);let i=e.description?.trim()||`${r} custom agent`,o=e.mcpServers===void 0?void 0:D(e.mcpServers),l=e.prompt?.trim()||`You are ${r}. Replace this paragraph with precise operating instructions, constraints, tools policy, verification expectations, and the kind of work this agent should own.`,a=[...["---",`name: ${r}`,`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)}`]:[],...o!==void 0?[`mcp-servers: ${JSON.stringify(o)}`]:[],...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)}`]:[]]:[],"---"],"",l,""].join(`
|
|
7
|
+
`);return(0,g.writeFileSync)(t,a,"utf8"),t}var ue=require("node:crypto");var B=2,G=["publish","deploy","push","send","purchase","sign","file-legal","change-infrastructure"],A=class extends Error{constructor(r){super(r),this.name="AgentProfileValidationError"}},ze=/^[a-z][a-z0-9_-]{0,63}$/,j=G;function y(e){return Array.from(new Set((e??[]).map(r=>r.trim()).filter(Boolean)))}function Ye(e,r){if(e===void 0)return r===void 0?void 0:y(r);if(r===void 0)return y(e);let n=new Set(r);return y(e.filter(t=>n.has(t)))}function Qe(e,r){if(e===void 0)return;let n=new Set(r);return e.filter(t=>!n.has(t))}function W(e,r,n){let t=r===void 0?null:new Set(r),i=new Set(n??[]);return e===void 0?r===void 0?void 0:y(r).filter(o=>!i.has(o)):y(e).filter(o=>(t===null||t.has(o))&&!i.has(o))}function _(e,r,n){return n[e]<=n[r]?e:r}function Ze(e,r,n){return n[e]>=n[r]?e:r}function H(e){return Array.isArray(e)?e.map(H):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>[r,H(n)]))}function er(e){return(0,ue.createHash)("sha256").update(JSON.stringify(H(e))).digest("hex")}function T(e){return structuredClone(e)}function de(e,r){return e.overrides?.[r]??e.default}function rr(e,r){let n={deny:0,ask:1,allow:2},t=new Set(e.requireCurrentTurnApproval),i=Object.fromEntries(j.map(a=>[a,de(e,a)]));for(let a of r){let p=a.externalActions;if(p){for(let d of j){let u=p.overrides?.[d]??p.default;u&&(i[d]=_(i[d],u,n))}for(let d of p.requireCurrentTurnApproval??[])t.add(d)}}let l=new Set(Object.values(i)).size===1?i.publish:"deny",s={};for(let a of j)i[a]!==l&&(s[a]=i[a]);return{default:l,...Object.keys(s).length>0?{overrides:s}:{},requireCurrentTurnApproval:[...t].filter(a=>i[a]!=="deny").sort()}}function fe(e){if(e.schemaVersion!==B)throw new A(`Unsupported agent profile schema: ${String(e.schemaVersion)}.`);if(!ze.test(e.id))throw new A(`Invalid agent profile id: ${e.id}.`);if(!e.version.trim())throw new A(`Agent profile ${e.id} has no version.`);if(!e.displayName.trim()||!e.description.trim()||!e.prompt.trim())throw new A(`Agent profile ${e.id} requires displayName, description, and prompt.`);if(e.execution.allowedModes.length===0)throw new A(`Agent profile ${e.id} allows no collaboration modes.`);if(!e.execution.allowedModes.includes(e.execution.defaultMode))throw new A(`Agent profile ${e.id} default mode must be included in allowedModes.`)}function nr(e,r,n,t,i,o){return{name:`agent-profile:${e.id}`,order:20,provide(){let l=j.map(s=>`${s}=${de(r.externalActions,s)}`).join(", ");return["","","# XENO Agent Profile",`Profile: ${e.displayName} (${e.id}@${e.version})`,`Profile fingerprint: ${o}`,`Role: ${e.description}`,`Collaboration mode: ${t.defaultMode}`,`Isolation: ${t.isolation}`,`Memory: ${n.scope}; soul=${n.soul}`,`Permission profile ceiling: ${r.permissionProfile}`,`External actions: ${l}`,r.externalActions.requireCurrentTurnApproval.length>0?`Current-turn approval required for: ${r.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.":"",t.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 me(e,r={}){fe(e);let n=T(e),t=r.boundaries??[],i=T(n.capabilities.tools),o=n.capabilities.skills.allow?y(n.capabilities.skills.allow):void 0,l=new Set(y(n.capabilities.skills.deny)),s=y(n.capabilities.hooks),a=new Set,p=n.capabilities.mcpServers?y(n.capabilities.mcpServers):void 0,d=n.capabilities.delegatedAgents?y(n.capabilities.delegatedAgents):void 0,u=n.capabilities.permissionProfile,f=n.memory.scope,P=n.memory.soul,b=n.execution.isolation,E={"read-only":0,default:1,"trusted-dev":2},I={none:0,session:1,project:2,user:3},O={disabled:0,read:1,learn:2},R={none:0,worktree:1,container:2};for(let c of t){c.tools&&(i=M({toolPolicy:i},c.tools)),o=Ye(o,c.skills?.allow);for(let L of c.skills?.deny??[])l.add(L);s=W(s,c.hooks?.allow,void 0)??[];for(let L of c.hooks?.require??[])a.add(L);p=W(p,c.mcpServers?.allow,c.mcpServers?.deny),d=W(d,c.delegatedAgents?.allow,c.delegatedAgents?.deny),c.permissionProfile&&(u=_(u,c.permissionProfile,E)),c.maximumMemoryScope&&(f=_(f,c.maximumMemoryScope,I)),c.maximumSoulMode&&(P=_(P,c.maximumSoulMode,O)),c.requiredIsolation&&(b=Ze(b,c.requiredIsolation,R))}let U=[...l].sort();u==="read-only"&&(i=M({toolPolicy:i},{mode:"readOnly",deny:["WebSearch","WebFetch"]})),o=Qe(o,U);let he=y(n.capabilities.skills.preload).filter(c=>!l.has(c)).filter(c=>o===void 0||o.includes(c));s=y([...s,...a]);let J={tools:i,skills:{preload:he,...o!==void 0?{allow:o}:{},deny:U},hooks:s,...p!==void 0?{mcpServers:p}:{},...d!==void 0?{delegatedAgents:d}:{},permissionProfile:u,externalActions:rr(n.capabilities.externalActions,t)},z={...n.memory,scope:f,soul:P},Y={...n.execution,isolation:b},Q={schemaVersion:B,profile:n,boundarySources:t.map(c=>c.source),capabilities:J,memory:z,execution:Y,completion:n.completion},Z=er(Q);return{...Q,fingerprint:Z,promptSection:nr(n,J,z,Y,n.completion,Z)}}function h(e){return{schemaVersion:B,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 pe=[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:[...G],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."]})],tr={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 or(){return pe.map(T)}function ge(e){let r=e.trim().toLowerCase(),n=tr[r]??r,t=pe.find(i=>i.id===n);return t?T(t):null}function ye(e){let r=e.memory?.trim().toLowerCase(),n=r==="none"||r==="session"||r==="project"||r==="user"?r:"project",t=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:n,isolation:e.isolation??"none",color:e.color??"cyan",glyph:"\u25A0",tags:["custom",...e.tags]});return e.model&&(t.model={preferred:e.model}),t.capabilities.hooks=[...e.hooks],e.mcpServers!==void 0&&(t.capabilities.mcpServers=D(e.mcpServers)),t}function ir(e){return fe(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],...e.capabilities.mcpServers!==void 0?{mcpServers:[...e.capabilities.mcpServers]}:{},active:!0,toolPolicy:T(e.capabilities.tools),prompt:e.prompt}}function sr(e){let r=e.definition?ye(e.definition):ge(e.name);return r?me(r,{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,validateAgentMcpServers});
|
package/dist/agents/index.d.cts
CHANGED
|
@@ -33,6 +33,7 @@ interface AgentDefinitionMetadata {
|
|
|
33
33
|
tags: string[];
|
|
34
34
|
skills: string[];
|
|
35
35
|
hooks: string[];
|
|
36
|
+
mcpServers?: string[];
|
|
36
37
|
active: boolean;
|
|
37
38
|
shadowedBy?: AgentDefinitionShadowRef;
|
|
38
39
|
toolPolicy?: AgentToolPolicy;
|
|
@@ -76,6 +77,7 @@ declare function getUserAgentDefinitionsDir(agentHome?: string): string;
|
|
|
76
77
|
declare function getProjectAgentDefinitionDirs(cwd?: string): string[];
|
|
77
78
|
declare function getProjectAgentDefinitionsDir(cwd?: string): string;
|
|
78
79
|
declare function isValidAgentDefinitionName(name: string): boolean;
|
|
80
|
+
declare function validateAgentMcpServers(value: unknown): string[];
|
|
79
81
|
declare function validateAgentDefinition(definition: Pick<AgentDefinition, "name" | "prompt">): string[];
|
|
80
82
|
declare function scanAgentDefinitions(cwd?: string, options?: AgentDefinitionLoaderOptions): AgentDefinitionScanResult;
|
|
81
83
|
declare function resolveAgentDefinition(name: string, cwd?: string, options?: AgentDefinitionLoaderOptions): {
|
|
@@ -112,6 +114,7 @@ declare function createAgentDefinitionFile(input: {
|
|
|
112
114
|
isolation?: AgentDefinitionIsolation;
|
|
113
115
|
skills?: string[];
|
|
114
116
|
hooks?: string[];
|
|
117
|
+
mcpServers?: string[];
|
|
115
118
|
toolPolicy?: AgentToolPolicy;
|
|
116
119
|
prompt?: string;
|
|
117
120
|
force?: boolean;
|
|
@@ -256,4 +259,4 @@ declare function resolveAgentProfile(input: {
|
|
|
256
259
|
definition?: AgentDefinition | null;
|
|
257
260
|
boundaries?: AgentProfileCapabilityBoundary[];
|
|
258
261
|
}): CompiledAgentProfile | null;
|
|
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 };
|
|
262
|
+
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, validateAgentMcpServers };
|
package/dist/agents/index.d.ts
CHANGED
|
@@ -33,6 +33,7 @@ interface AgentDefinitionMetadata {
|
|
|
33
33
|
tags: string[];
|
|
34
34
|
skills: string[];
|
|
35
35
|
hooks: string[];
|
|
36
|
+
mcpServers?: string[];
|
|
36
37
|
active: boolean;
|
|
37
38
|
shadowedBy?: AgentDefinitionShadowRef;
|
|
38
39
|
toolPolicy?: AgentToolPolicy;
|
|
@@ -76,6 +77,7 @@ declare function getUserAgentDefinitionsDir(agentHome?: string): string;
|
|
|
76
77
|
declare function getProjectAgentDefinitionDirs(cwd?: string): string[];
|
|
77
78
|
declare function getProjectAgentDefinitionsDir(cwd?: string): string;
|
|
78
79
|
declare function isValidAgentDefinitionName(name: string): boolean;
|
|
80
|
+
declare function validateAgentMcpServers(value: unknown): string[];
|
|
79
81
|
declare function validateAgentDefinition(definition: Pick<AgentDefinition, "name" | "prompt">): string[];
|
|
80
82
|
declare function scanAgentDefinitions(cwd?: string, options?: AgentDefinitionLoaderOptions): AgentDefinitionScanResult;
|
|
81
83
|
declare function resolveAgentDefinition(name: string, cwd?: string, options?: AgentDefinitionLoaderOptions): {
|
|
@@ -112,6 +114,7 @@ declare function createAgentDefinitionFile(input: {
|
|
|
112
114
|
isolation?: AgentDefinitionIsolation;
|
|
113
115
|
skills?: string[];
|
|
114
116
|
hooks?: string[];
|
|
117
|
+
mcpServers?: string[];
|
|
115
118
|
toolPolicy?: AgentToolPolicy;
|
|
116
119
|
prompt?: string;
|
|
117
120
|
force?: boolean;
|
|
@@ -256,4 +259,4 @@ declare function resolveAgentProfile(input: {
|
|
|
256
259
|
definition?: AgentDefinition | null;
|
|
257
260
|
boundaries?: AgentProfileCapabilityBoundary[];
|
|
258
261
|
}): CompiledAgentProfile | null;
|
|
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 };
|
|
262
|
+
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, validateAgentMcpServers };
|
package/dist/agents/index.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import{existsSync as
|
|
2
|
-
`)),nextIndex:
|
|
3
|
-
`)}}}function
|
|
1
|
+
import{existsSync as O,mkdirSync as ge,readFileSync as ye,readdirSync as he,writeFileSync as Pe}from"node:fs";import{basename as Ae,dirname as we,join as x,parse as be,resolve as xe}from"node:path";function G(e){let r=ue(e);return{frontmatter:r.frontmatter,content:r.content.trim()}}function ue(e){let r=e.replace(/^\uFEFF/,"");if(!r.startsWith("---"))return{frontmatter:{},content:e};let n=r.search(/\r?\n/);if(n<0||r.slice(0,n).trim()!=="---")return{frontmatter:{},content:e};let t=r.slice(n+(r[n]==="\r"?2:1)),i=t.match(/(?:^|\r?\n)---[ \t]*(?:\r?\n|$)/);if(!i||i.index===void 0)throw new Error("YAML frontmatter is not closed.");let o=t.slice(0,i.index),l=i[0],s=i.index+l.length;return{frontmatter:U(o),content:t.slice(s)}}function U(e){let r={},n=e.split(/\r?\n/);for(let t=0;t<n.length;t+=1){let i=n[t];if(!i.trim()||i.trimStart().startsWith("#"))continue;if(/^\s/.test(i))throw new Error(`Unexpected indentation at line ${t+1}.`);let o=fe(i,t+1);if(o.key==="<<")throw new Error("YAML merge keys are not supported.");if(o.value!==""){r[o.key]=J(o.value,t+1);continue}let l=de(n,t+1);r[o.key]=l.value,t=l.nextIndex-1}return r}function de(e,r){let n=[],t=r;for(;t<e.length;t+=1){let o=e[t];if(!o.trim()){n.push(o);continue}if(!/^\s/.test(o))break;n.push(o.replace(/^ {2}/,""))}let i=n.filter(o=>o.trim()&&!o.trimStart().startsWith("#"));return i.length===0?{value:{},nextIndex:t}:i.every(o=>o.trimStart().startsWith("- "))?{value:i.map((o,l)=>J(o.trimStart().slice(2),r+l+1)),nextIndex:t}:{value:U(n.join(`
|
|
2
|
+
`)),nextIndex:t}}function fe(e,r){let n=e.indexOf(":");if(n<=0)throw new Error(`Invalid YAML line ${r}.`);let t=e.slice(0,n).trim(),i=e.slice(n+1).trim();if(!t)throw new Error(`Invalid YAML key at line ${r}.`);return{key:t,value:i}}function J(e,r){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 H(e,r);if(e.startsWith("'")){if(!e.endsWith("'"))throw new Error(`Unclosed quoted scalar at line ${r}.`);return e.slice(1,-1).replace(/''/g,"'")}if(e.startsWith("[")||e.startsWith("{"))return H(e,r);if(e.includes("[")||e.includes("]")||e.includes("{")||e.includes("}"))throw new Error(`Unsupported YAML scalar at line ${r}.`);return e}function H(e,r){try{return JSON.parse(e)}catch{throw new Error(`Invalid YAML scalar at line ${r}.`)}}import{homedir as Y,platform as me,release as pe}from"node:os";import{delimiter as sr,join as lr,resolve as z}from"node:path";var cr=me();var ur=pe(),dr=Y();function Q(){let e=process.env.XENO_AGENT_HOME?.trim();return e?z(e):z(Y(),".xeno-agent")}var Se=/^[a-z][a-z0-9_-]{0,63}$/;function ke(){return Q()}function re(e=ke()){return x(e,"agents")}function ne(e){return xe(e)}function ve(e){let r=we(e);return r===e?e:r}function De(e=process.cwd()){let r=ne(e),n=[],t=r;for(;;){let o=x(t,".claude","agents"),l=x(t,".xeno","agents");n.push({...O(o)?{claude:o}:{},...O(l)?{xeno:l}:{}});let s=ve(t);if(s===t)break;t=s}n.reverse();let i=[];for(let o of n)o.claude&&i.push(o.claude),o.xeno&&i.push(o.xeno);return i}function Te(e=process.cwd()){return x(ne(e),".xeno","agents")}function Ee(e){return O(e)?he(e,{withFileTypes:!0}).filter(r=>r.isFile()&&r.name.toLowerCase().endsWith(".md")).map(r=>x(e,r.name)).sort((r,n)=>r.localeCompare(n)):[]}function w(e){if(typeof e!="string")return;let r=e.trim();return r.length>0?r:void 0}function b(e){return Array.isArray(e)?e.map(r=>String(r).trim()).filter(Boolean):typeof e=="string"?e.split(",").map(r=>r.trim()).filter(Boolean):[]}function Ie(e){if(typeof e=="boolean")return e;if(typeof e!="string")return;let r=e.trim().toLowerCase();if(["1","true","yes","on"].includes(r))return!0;if(["0","false","no","off"].includes(r))return!1}function Oe(e){return be(Ae(e)).name.toLowerCase()}function te(e){return Se.test(e)}function Re(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function $e(e){if(typeof e!="string")return;let r=e.trim().toLowerCase();if(r==="inherit")return"inherit";if(r==="none"||r==="off"||r==="disabled")return"none";if(r==="read"||r==="readonly"||r==="read-only")return"readOnly";if(r==="default"||r==="standard")return"default";if(r==="full"||r==="fullaccess"||r==="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(!Re(e))return;let r=b(e.allow),n=b(e.deny),t=$e(e.mode),i={};return t&&(i.mode=t),r.length>0&&(i.allow=r),n.length>0&&(i.deny=n),Object.keys(i).length>0?i:void 0}var Z=1e8,Ne=10080*60*1e3;function Me(e){let r=e["max-tokens"]??e.maxTokens,n=e.deadline,t={};if(r!=null&&r!==""){let i=String(r).trim(),o=Number(i);if(!/^[1-9][0-9]*$/.test(i)||!Number.isSafeInteger(o)||o>Z)throw new Error(`Invalid max-tokens "${i}". Use a whole number from 1 to ${Z}.`);t.maxTokens=o}if(n!=null&&n!==""){let i=String(n).trim(),o=/^([1-9][0-9]*)(ms|s|m|h)?$/.exec(i),l=o?{ms:1,s:1e3,m:6e4,h:36e5}[o[2]??"s"]:0,s=o?Number(o[1])*l:Number.NaN;if(!Number.isSafeInteger(s)||s>Ne)throw new Error(`Invalid deadline "${i}". Use a duration such as 90s, 30m or 2h, at most 7 days.`);t.deadlineMs=s}return Object.keys(t).length>0?t:void 0}function je(e){let r=Ie(e.worktree??e.defaultWorktreeIsolation);if(r===!0)return"worktree";if(r===!1)return"none";let n=w(e.isolation)?.toLowerCase();if(n==="worktree")return"worktree";if(n==="none"||n==="off"||n==="disabled")return"none"}function R(e){if(!Array.isArray(e)||e.length>256||e.some(r=>typeof r!="string"||r.trim().length===0||r.length>128||/[\p{Cc}\p{Cs}]/u.test(r)))throw new Error("mcp-servers must be a bounded array of exact configured server names.");return[...new Set(e)]}function _e(e){let r=[];return te(e.name)||r.push(`Invalid agent name "${e.name}". Use 1-64 lowercase letters, digits, hyphens, or underscores, starting with a letter.`),e.prompt.trim().length===0&&r.push("Agent definition body is empty."),r}function Be(e,r,n){let t=ye(e,"utf8"),i=G(t),o=i.frontmatter,l=Oe(e),s=w(o.name)?.toLowerCase()??l,a=i.content.trim(),m=_e({name:s,prompt:a});if(m.length>0)throw new Error(m.join(" "));let d=w(o.description),u=w(o.model),f=w(o.color),y=w(o.memory??o.memoryScope),P=je(o),k=Ce(o.tools),v=Me(o);if(Object.hasOwn(o,"mcp-servers")&&Object.hasOwn(o,"mcpServers"))throw new Error("Declare mcp-servers only once; conflicting aliases are refused.");let D=Object.hasOwn(o,"mcp-servers")?o["mcp-servers"]:o.mcpServers,T=D===void 0?void 0:R(D);return{name:s,scope:r,path:e,...d?{description:d}:{},...u?{model:u}:{},...f?{color:f}:{},...y?{memory:y}:{},...P?{isolation:P}:{},tags:b(o.tags),skills:b(o.skills),hooks:b(o.hooks),...T!==void 0?{mcpServers:T}:{},prompt:a,active:!0,priority:n,...k?{toolPolicy:k}:{},...v?{budget:v}:{}}}function E(e,r,n,t,i){for(let o of Ee(e))try{t.push(Be(o,r,n))}catch(l){i.push({path:o,scope:r,message:l instanceof Error?l.message:String(l)})}}function Le(e){let r=new Map;for(let n of e){let t=r.get(n.name);(!t||n.priority>t.priority)&&r.set(n.name,n)}return r}function qe(e,r){let n=r.get(e.name),t=n?.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,...e.mcpServers!==void 0?{mcpServers:[...e.mcpServers]}:{},prompt:e.prompt,active:t,...e.toolPolicy?{toolPolicy:e.toolPolicy}:{},...e.budget?{budget:{...e.budget}}:{},...!t&&n?{shadowedBy:{name:n.name,scope:n.scope,path:n.path}}:{}}}function oe(e=process.cwd(),r={}){let n=r.cwd??e,t=r.userDir??re(r.agentHome),i=r.projectDirs??De(n),o=r.pluginDirs??[],l=r.builtInDirs??[],s=[],a=[];r.includeUser!==!1&&E(t,"user",0,s,a),r.includeProject!==!1&&i.forEach((u,f)=>E(u,"project",100+f,s,a)),r.includePlugins&&o.forEach((u,f)=>E(u,"plugin",1e3+f,s,a)),r.includeBuiltIns&&l.forEach((u,f)=>E(u,"built-in",2e3+f,s,a));let m=Le(s),d=s.map(u=>qe(u,m));return d.sort((u,f)=>{if(u.active!==f.active)return u.active?-1:1;let y=u.name.localeCompare(f.name);return y!==0?y:u.path.localeCompare(f.path)}),{definitions:d,issues:a,searchPaths:{...r.includeUser!==!1?{user:t}:{},project:r.includeProject===!1?[]:i,plugin:r.includePlugins?o:[],builtIn:r.includeBuiltIns?l:[]}}}function hr(e,r=process.cwd(),n={}){let t=e.trim().toLowerCase(),i=oe(r,n);return{definition:i.definitions.find(o=>o.active&&o.name===t)??null,scan:i}}var M=class{constructor(r={}){this.options=r}options;scan(r=this.options.cwd??process.cwd()){return oe(r,this.options)}},ee=class{constructor(r=new M){this.loader=r}loader;resolve(r,n=process.cwd()){let t=this.loader.scan(n),i=r.trim().toLowerCase();return{definition:t.definitions.find(o=>o.active&&o.name===i)??null,scan:t}}};function I(e){if(!e||e.length===0)return;let r=Array.from(new Set(e.map(n=>n.trim()).filter(Boolean)));return r.length>0?r:void 0}function Xe(e,r){if(!e&&!r)return;if(!e)return I(r);if(!r)return I(e);let n=new Set(r);return I(e.filter(t=>n.has(t)))}function Fe(e,r){let n={none:0,readOnly:1,default:2,fullAccess:3,inherit:4},t=r??"inherit",i=e??"inherit";return n[t]<=n[i]?t:i}function j(e,r={}){let n=e.toolPolicy??{},t={mode:Fe(n.mode,r.mode)},i=Xe(r.allow,n.allow),o=I([...r.deny??[],...n.deny??[]]);return i&&(t.allow=i),o&&(t.deny=o),t}function Pr(e){return{name:`custom-agent:${e.name}`,order:20,provide(){let r=["","","# Custom Agent",`Active agent: ${e.name}`,`Definition scope: ${e.scope}`,`Definition path: ${e.path}`];return e.description&&r.push(`Description: ${e.description}`),r.push("",e.prompt),r.join(`
|
|
3
|
+
`)}}}function Ar(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,...e.mcpServers!==void 0?{mcpServers:[...e.mcpServers]}:{},active:e.active,...e.toolPolicy?{toolPolicy:e.toolPolicy}:{},...e.budget?{budget:{...e.budget}}:{},...e.shadowedBy?{shadowedBy:e.shadowedBy}:{}}}function A(e,r){return e.length>=r?e:e+" ".repeat(r-e.length)}function wr(e,r){let n=[];if(e.length===0)n.push("No custom agent definitions found.");else{n.push(`${A("name",22)} ${A("scope",8)} ${A("status",9)} description`),n.push(`${"-".repeat(22)} ${"-".repeat(8)} ${"-".repeat(9)} ${"-".repeat(32)}`);for(let t of e){let i=t.active?"active":"shadowed";n.push(`${A(t.name,22)} ${A(t.scope,8)} ${A(i,9)} ${t.description??""}`)}}if(r.length>0){n.push("","Invalid definitions:");for(let t of r)n.push(`- ${t.path}: ${t.message}`)}return n.join(`
|
|
4
4
|
`)+`
|
|
5
|
-
`}function
|
|
6
|
-
`)}function
|
|
7
|
-
`);return
|
|
8
|
-
`)}}}function Ye(e,
|
|
9
|
-
`),toolPolicy:{mode:"inherit"},skills:[],memoryScope:"user",evidence:["file-references"],currentTurnApproval:[...
|
|
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"]}),
|
|
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"]}),
|
|
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"]}),
|
|
13
|
-
`),toolPolicy:{mode:"readOnly"},skills:["verify"],permissionProfile:"default",memoryScope:"session",soul:"read",allowedModes:["chat","plan","review"],evidence:["sources","file-references"],primarySources:!0,currentInformation:!0,externalDefault:"deny",color:"blue",glyph:"\u25C8",tags:["research","qa","read-only"]}),
|
|
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"]}),
|
|
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"]}),
|
|
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"]}),
|
|
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."]})],
|
|
5
|
+
`}function br(e){let r=[`Agent: ${e.name}`,`Scope: ${e.scope}`,`Path: ${e.path}`,`Status: ${e.active?"active":"shadowed"}`];return e.description&&r.push(`Description: ${e.description}`),e.model&&r.push(`Model: ${e.model}`),e.color&&r.push(`Color: ${e.color}`),e.memory&&r.push(`Memory: ${e.memory}`),e.isolation&&r.push(`Isolation: ${e.isolation}`),e.tags.length>0&&r.push(`Tags: ${e.tags.join(", ")}`),e.skills.length>0&&r.push(`Skills: ${e.skills.join(", ")}`),e.hooks.length>0&&r.push(`Hooks: ${e.hooks.join(", ")}`),e.mcpServers!==void 0&&r.push(`MCP servers: ${e.mcpServers.join(", ")||"(none)"}`),e.toolPolicy&&r.push(`Tools: ${JSON.stringify(e.toolPolicy)}`),e.budget?.maxTokens!==void 0&&r.push(`Token budget: ${e.budget.maxTokens}`),e.budget?.deadlineMs!==void 0&&r.push(`Deadline: ${e.budget.deadlineMs} ms`),e.shadowedBy&&r.push(`Shadowed by: ${e.shadowedBy.scope} ${e.shadowedBy.path}`),r.push("",e.prompt,""),r.join(`
|
|
6
|
+
`)}function xr(e){let r=e.name.trim().toLowerCase();if(!te(r))throw new Error(`Invalid agent name "${e.name}". Use 1-64 lowercase letters, digits, hyphens, or underscores, starting with a letter.`);let n=e.scope==="user"?re(e.agentHome):Te(e.cwd??process.cwd());ge(n,{recursive:!0});let t=x(n,`${r}.md`);if(O(t)&&!e.force)throw new Error(`Agent definition already exists: ${t}`);let i=e.description?.trim()||`${r} custom agent`,o=e.mcpServers===void 0?void 0:R(e.mcpServers),l=e.prompt?.trim()||`You are ${r}. Replace this paragraph with precise operating instructions, constraints, tools policy, verification expectations, and the kind of work this agent should own.`,a=[...["---",`name: ${r}`,`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)}`]:[],...o!==void 0?[`mcp-servers: ${JSON.stringify(o)}`]:[],...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)}`]:[]]:[],"---"],"",l,""].join(`
|
|
7
|
+
`);return Pe(t,a,"utf8"),t}import{createHash as Ke}from"node:crypto";var L=2,ie=["publish","deploy","push","send","purchase","sign","file-legal","change-infrastructure"],h=class extends Error{constructor(r){super(r),this.name="AgentProfileValidationError"}},Ve=/^[a-z][a-z0-9_-]{0,63}$/,$=ie;function p(e){return Array.from(new Set((e??[]).map(r=>r.trim()).filter(Boolean)))}function We(e,r){if(e===void 0)return r===void 0?void 0:p(r);if(r===void 0)return p(e);let n=new Set(r);return p(e.filter(t=>n.has(t)))}function He(e,r){if(e===void 0)return;let n=new Set(r);return e.filter(t=>!n.has(t))}function _(e,r,n){let t=r===void 0?null:new Set(r),i=new Set(n??[]);return e===void 0?r===void 0?void 0:p(r).filter(o=>!i.has(o)):p(e).filter(o=>(t===null||t.has(o))&&!i.has(o))}function C(e,r,n){return n[e]<=n[r]?e:r}function Ge(e,r,n){return n[e]>=n[r]?e:r}function B(e){return Array.isArray(e)?e.map(B):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>[r,B(n)]))}function Ue(e){return Ke("sha256").update(JSON.stringify(B(e))).digest("hex")}function S(e){return structuredClone(e)}function se(e,r){return e.overrides?.[r]??e.default}function Je(e,r){let n={deny:0,ask:1,allow:2},t=new Set(e.requireCurrentTurnApproval),i=Object.fromEntries($.map(a=>[a,se(e,a)]));for(let a of r){let m=a.externalActions;if(m){for(let d of $){let u=m.overrides?.[d]??m.default;u&&(i[d]=C(i[d],u,n))}for(let d of m.requireCurrentTurnApproval??[])t.add(d)}}let l=new Set(Object.values(i)).size===1?i.publish:"deny",s={};for(let a of $)i[a]!==l&&(s[a]=i[a]);return{default:l,...Object.keys(s).length>0?{overrides:s}:{},requireCurrentTurnApproval:[...t].filter(a=>i[a]!=="deny").sort()}}function le(e){if(e.schemaVersion!==L)throw new h(`Unsupported agent profile schema: ${String(e.schemaVersion)}.`);if(!Ve.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,r,n,t,i,o){return{name:`agent-profile:${e.id}`,order:20,provide(){let l=$.map(s=>`${s}=${se(r.externalActions,s)}`).join(", ");return["","","# XENO Agent Profile",`Profile: ${e.displayName} (${e.id}@${e.version})`,`Profile fingerprint: ${o}`,`Role: ${e.description}`,`Collaboration mode: ${t.defaultMode}`,`Isolation: ${t.isolation}`,`Memory: ${n.scope}; soul=${n.soul}`,`Permission profile ceiling: ${r.permissionProfile}`,`External actions: ${l}`,r.externalActions.requireCurrentTurnApproval.length>0?`Current-turn approval required for: ${r.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.":"",t.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,r={}){le(e);let n=S(e),t=r.boundaries??[],i=S(n.capabilities.tools),o=n.capabilities.skills.allow?p(n.capabilities.skills.allow):void 0,l=new Set(p(n.capabilities.skills.deny)),s=p(n.capabilities.hooks),a=new Set,m=n.capabilities.mcpServers?p(n.capabilities.mcpServers):void 0,d=n.capabilities.delegatedAgents?p(n.capabilities.delegatedAgents):void 0,u=n.capabilities.permissionProfile,f=n.memory.scope,y=n.memory.soul,P=n.execution.isolation,k={"read-only":0,default:1,"trusted-dev":2},v={none:0,session:1,project:2,user:3},D={disabled:0,read:1,learn:2},T={none:0,worktree:1,container:2};for(let c of t){c.tools&&(i=j({toolPolicy:i},c.tools)),o=We(o,c.skills?.allow);for(let N of c.skills?.deny??[])l.add(N);s=_(s,c.hooks?.allow,void 0)??[];for(let N of c.hooks?.require??[])a.add(N);m=_(m,c.mcpServers?.allow,c.mcpServers?.deny),d=_(d,c.delegatedAgents?.allow,c.delegatedAgents?.deny),c.permissionProfile&&(u=C(u,c.permissionProfile,k)),c.maximumMemoryScope&&(f=C(f,c.maximumMemoryScope,v)),c.maximumSoulMode&&(y=C(y,c.maximumSoulMode,D)),c.requiredIsolation&&(P=Ge(P,c.requiredIsolation,T))}let q=[...l].sort();u==="read-only"&&(i=j({toolPolicy:i},{mode:"readOnly",deny:["WebSearch","WebFetch"]})),o=He(o,q);let ce=p(n.capabilities.skills.preload).filter(c=>!l.has(c)).filter(c=>o===void 0||o.includes(c));s=p([...s,...a]);let X={tools:i,skills:{preload:ce,...o!==void 0?{allow:o}:{},deny:q},hooks:s,...m!==void 0?{mcpServers:m}:{},...d!==void 0?{delegatedAgents:d}:{},permissionProfile:u,externalActions:Je(n.capabilities.externalActions,t)},F={...n.memory,scope:f,soul:y},K={...n.execution,isolation:P},V={schemaVersion:L,profile:n,boundarySources:t.map(c=>c.source),capabilities:X,memory:F,execution:K,completion:n.completion},W=Ue(V);return{...V,fingerprint:W,promptSection:ze(n,X,F,K,n.completion,W)}}function g(e){return{schemaVersion:L,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:p(e.tags)}}var ae=[g({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:[...ie],color:"cyan",glyph:"\u25A0",tags:["general","primary"]}),g({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
|
+
`),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"]}),g({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
|
+
`),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"]}),g({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
|
+
`),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"]}),g({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(`
|
|
13
|
+
`),toolPolicy:{mode:"readOnly"},skills:["verify"],permissionProfile:"default",memoryScope:"session",soul:"read",allowedModes:["chat","plan","review"],evidence:["sources","file-references"],primarySources:!0,currentInformation:!0,externalDefault:"deny",color:"blue",glyph:"\u25C8",tags:["research","qa","read-only"]}),g({id:"product",displayName:"Product",description:"Product strategist for problem framing, requirements, sequencing, metrics, and trade-off decisions.",prompt:["Start from the user problem and observable outcome. Distinguish evidence, assumptions, constraints, and open decisions.","Translate strategy into testable requirements, acceptance criteria, telemetry, risks, and a sequenced delivery path."].join(`
|
|
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"]}),g({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
|
+
`),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"]}),g({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
|
+
`),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"]}),g({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."]})],Qe={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 Dr(){return ae.map(S)}function Ze(e){let r=e.trim().toLowerCase(),n=Qe[r]??r,t=ae.find(i=>i.id===n);return t?S(t):null}function er(e){let r=e.memory?.trim().toLowerCase(),n=r==="none"||r==="session"||r==="project"||r==="user"?r:"project",t=g({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:n,isolation:e.isolation??"none",color:e.color??"cyan",glyph:"\u25A0",tags:["custom",...e.tags]});return e.model&&(t.model={preferred:e.model}),t.capabilities.hooks=[...e.hooks],e.mcpServers!==void 0&&(t.capabilities.mcpServers=R(e.mcpServers)),t}function Tr(e){return le(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],...e.capabilities.mcpServers!==void 0?{mcpServers:[...e.capabilities.mcpServers]}:{},active:!0,toolPolicy:S(e.capabilities.tools),prompt:e.prompt}}function Er(e){let r=e.definition?er(e.definition):Ze(e.name);return r?Ye(r,{boundaries:e.boundaries}):null}export{ie as AGENT_PROFILE_EXTERNAL_ACTIONS,M as AgentDefinitionLoader,ee as AgentDefinitionResolver,h as AgentProfileValidationError,L as XENO_AGENT_PROFILE_SCHEMA_VERSION,Tr as agentDefinitionFromProfile,er as agentProfileFromDefinition,Ye as compileAgentProfile,xr as createAgentDefinitionFile,Pr as createAgentDefinitionPromptSection,De as getProjectAgentDefinitionDirs,Te as getProjectAgentDefinitionsDir,re as getUserAgentDefinitionsDir,te as isValidAgentDefinitionName,Dr as listBuiltInAgentProfiles,br as renderAgentDefinition,wr as renderAgentDefinitions,hr as resolveAgentDefinition,Er as resolveAgentProfile,j as resolveAgentToolPolicy,Ze as resolveBuiltInAgentProfile,oe as scanAgentDefinitions,Ar as toAgentDefinitionMetadata,_e as validateAgentDefinition,R as validateAgentMcpServers};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/utils/yaml.ts":{"bytes":5506,"imports":[],"format":"esm"},"src/utils/platform.ts":{"bytes":
|
|
1
|
+
{"inputs":{"src/utils/yaml.ts":{"bytes":5506,"imports":[],"format":"esm"},"src/runtime/process-tree-kill.ts":{"bytes":9124,"imports":[{"path":"node:child_process","kind":"import-statement","external":true}],"format":"esm"},"src/utils/platform.ts":{"bytes":9633,"imports":[{"path":"node:os","kind":"import-statement","external":true},{"path":"node:child_process","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"src/runtime/process-tree-kill.ts","kind":"import-statement","original":"../runtime/process-tree-kill.js"}],"format":"esm"},"src/agents/definitions.ts":{"bytes":25020,"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":33891,"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":852},"src/agents/definitions.ts":{"bytesInOutput":10723},"src/utils/yaml.ts":{"bytesInOutput":2227},"src/utils/platform.ts":{"bytesInOutput":245},"src/agents/profiles.ts":{"bytesInOutput":15567}},"bytes":30718}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/utils/yaml.ts":{"bytes":5506,"imports":[],"format":"esm"},"src/utils/platform.ts":{"bytes":
|
|
1
|
+
{"inputs":{"src/utils/yaml.ts":{"bytes":5506,"imports":[],"format":"esm"},"src/runtime/process-tree-kill.ts":{"bytes":9124,"imports":[{"path":"node:child_process","kind":"import-statement","external":true}],"format":"esm"},"src/utils/platform.ts":{"bytes":9633,"imports":[{"path":"node:os","kind":"import-statement","external":true},{"path":"node:child_process","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"src/runtime/process-tree-kill.ts","kind":"import-statement","original":"../runtime/process-tree-kill.js"}],"format":"esm"},"src/agents/definitions.ts":{"bytes":25020,"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":33891,"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","validateAgentMcpServers"],"entryPoint":"src/agents/index.ts","inputs":{"src/agents/definitions.ts":{"bytesInOutput":10666},"src/utils/yaml.ts":{"bytesInOutput":2217},"src/utils/platform.ts":{"bytesInOutput":247},"src/agents/index.ts":{"bytesInOutput":0},"src/agents/profiles.ts":{"bytesInOutput":15568}},"bytes":29498}}}
|