@xenosystem/agent-sdk 0.9.20 → 0.9.21

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.
@@ -1,5 +1,5 @@
1
1
  "use strict";var xe=Object.defineProperty;var sn=Object.getOwnPropertyDescriptor;var an=Object.getOwnPropertyNames;var cn=Object.prototype.hasOwnProperty;var dn=(e,t)=>{for(var n in t)xe(e,n,{get:t[n],enumerable:!0})},fn=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of an(t))!cn.call(e,o)&&o!==n&&xe(e,o,{get:()=>t[o],enumerable:!(i=sn(t,o))||i.enumerable});return e};var pn=e=>fn(xe({},"__esModule",{value:!0}),e);var ki={};dn(ki,{FileXenoArtifactRepository:()=>qe,InMemoryXenoArtifactRepository:()=>B,XENO_ARTIFACT_ACTOR_KINDS:()=>Pe,XENO_ARTIFACT_FILE_REPOSITORY_SCHEMA_VERSION:()=>We,XENO_ARTIFACT_SCHEMA_VERSION:()=>h,XENO_ARTIFACT_SENSITIVITIES:()=>Ve,XENO_ARTIFACT_STATES:()=>Ne,XENO_BUILTIN_ARTIFACT_KINDS:()=>Ce,XENO_EVIDENCE_EDGE_TYPES:()=>ee,XENO_EVIDENCE_GRAPH_SCHEMA_VERSION:()=>me,XENO_EVIDENCE_NODE_TYPES:()=>Q,XENO_REVIEW_DIMENSIONS:()=>Bt,XENO_REVIEW_EVIDENCE_KINDS:()=>Ut,XENO_REVIEW_REPORT_SCHEMA_VERSION:()=>ot,XENO_SPEC_EXECUTION_SCHEMA_VERSION:()=>ce,XENO_SPEC_SCHEMA_VERSION:()=>z,XenoArtifactRepositoryError:()=>u,XenoArtifactReviewService:()=>U,XenoArtifactStateTransitionError:()=>ve,XenoArtifactValidationError:()=>M,XenoDiffParseError:()=>X,XenoEvidenceGraphBuilder:()=>Le,XenoEvidenceGraphValidationError:()=>ye,XenoMultiAgentReviewCoordinator:()=>rt,XenoReviewValidationError:()=>E,XenoSpecLifecycleService:()=>Qe,XenoSpecValidationError:()=>w,assertValidXenoArtifact:()=>I,assertValidXenoEvidenceGraph:()=>J,assertValidXenoReviewPack:()=>st,assertValidXenoReviewReport:()=>fe,assertValidXenoReviewTarget:()=>at,assertValidXenoSpecDocument:()=>be,assertValidXenoSpecExecution:()=>it,assertXenoArtifactStateTransition:()=>ie,buildXenoArtifactReviewAnchor:()=>Ze,canTransitionXenoArtifactState:()=>yt,canonicalizeArtifactJson:()=>S,defaultXenoReviewPack:()=>ai,detectXenoSpecDrift:()=>ti,legacyAgentArtifactToXenoArtifact:()=>yi,normalizeRepositoryRelativePath:()=>Ft,parseUnifiedDiff:()=>Ke,sha256ArtifactBytes:()=>T,sha256ArtifactJson:()=>k,summarizeXenoArtifactReview:()=>ge,toolEvidenceToXenoArtifact:()=>wi,turnDiffSummaryToXenoArtifact:()=>Ri,unifiedDiffToXenoArtifact:()=>Ge,validateXenoArtifact:()=>At,validateXenoArtifactReviewEvent:()=>he,validateXenoEvidenceGraph:()=>wt,validateXenoSpecDocument:()=>Mt,xenoArtifactToDiffDocument:()=>Ye,xenoArtifactToLegacyAgentArtifact:()=>Ii,xenoArtifactToReviewReport:()=>di,xenoArtifactToSpecDocument:()=>tt,xenoArtifactToSpecExecution:()=>Ht,xenoArtifactToToolEvidence:()=>Ei,xenoArtifactToTurnDiffSummary:()=>Xi,xenoReviewReportToArtifact:()=>ci,xenoReviewReportToGitHubComments:()=>fi,xenoSpecArtifactIds:()=>W,xenoSpecExecutionToArtifact:()=>nt,xenoSpecToArtifactBundle:()=>et});module.exports=pn(ki);var h=1,me=1,Ce=["plan","requirements","design","task-graph","patch","diff","file","document","diagram","screenshot","recording","browser-snapshot","test-report","review-report","security-report","performance-report","release-report","sbom","provenance","attestation"],Ne=["draft","pending_review","approved","rejected","superseded","archived"],Ve=["public","internal","confidential","restricted"],Pe=["agent","tool","user","system","integration"],Q=["requirement","design-decision","risk","task","agent","run","tool-call","edit","commit","test-case","test-run","finding","approval","artifact","release","claim"],ee=["decomposes","depends_on","implements","changes","tests","verifies","finds","fixes","reviews","approves","rejects","supersedes","derived_from","produced_by","supports_claim","contradicts_claim","released_as"];var De=require("node:buffer");var vt=require("node:crypto");function T(e){return{algorithm:"sha256",value:(0,vt.createHash)("sha256").update(e).digest("hex")}}function S(e){return JSON.stringify($e(e,new Set))}function k(e){return T(S(e))}function $e(e,t){if(e===null||typeof e!="object"){if(typeof e=="number"&&!Number.isFinite(e))throw new TypeError("Artifact JSON cannot contain non-finite numbers");return e}if(t.has(e))throw new TypeError("Artifact JSON cannot contain cycles");if(t.add(e),Array.isArray(e)){let i=e.map(o=>$e(o,t));return t.delete(e),i}let n={};for(let i of Object.keys(e).sort((o,r)=>o.localeCompare(r))){let o=e[i];if(o===void 0)throw new TypeError(`Artifact JSON property ${i} is undefined`);n[i]=$e(o,t)}return t.delete(e),n}var un=/^[a-z0-9][a-z0-9._/-]{0,127}$/,Oe="custom:";function F(e,t=Oe){return e.startsWith(t)?un.test(e.slice(t.length)):!1}var M=class extends Error{code="ARTIFACT_INVALID";issues;constructor(t,n){super(t),this.name="XenoArtifactValidationError",this.issues=n.map(i=>({...i}))}},ve=class extends Error{constructor(n,i){super(`Artifact state cannot transition from ${n} to ${i}`);this.fromState=n;this.toState=i;this.name="XenoArtifactStateTransitionError"}fromState;toState;code="ARTIFACT_STATE_TRANSITION_INVALID"},ln={draft:["pending_review","superseded","archived"],pending_review:["approved","rejected","superseded","archived"],approved:["superseded","archived"],rejected:["superseded","archived"],superseded:["archived"],archived:[]},mn="[\\u0000-\\u001f\\u007f]",vn=new RegExp(mn),ht=/^[a-f0-9]{64}$/,hn=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,gn=new Set(Ne),An=new Set(Ve),yn=new Set(Pe),In=new Set(Ce),wn=new Set(Q),En=new Set(ee);function p(e,t,n,i){e.push({path:t,code:n,message:i})}function l(e,t,n,i=1024){return typeof e!="string"||e.trim().length===0?(p(n,t,"required_string","Value must be a non-empty string"),!1):(e.length>i&&p(n,t,"string_too_long",`Value must not exceed ${i} characters`),vn.test(e)&&p(n,t,"control_character","Value must not contain control characters"),!0)}function te(e,t,n){e!==void 0&&(!Number.isFinite(Date.parse(e))||!e.includes("T"))&&p(n,t,"invalid_timestamp","Value must be an ISO 8601 timestamp")}function L(e,t,n,i){typeof e=="string"&&e.startsWith(t)&&(F(e,t)||p(i,n,"invalid_custom_name",`Custom name after ${t} is invalid`))}function gt(e,t,n){if(!e||typeof e!="object"){p(n,t,"missing_actor","Actor is required");return}l(e.kind,`${t}.kind`,n,64),yn.has(e.kind)||p(n,`${t}.kind`,"unknown_actor_kind","Actor kind is not supported"),l(e.id,`${t}.id`,n,512),e?.displayName!==void 0&&l(e.displayName,`${t}.displayName`,n,512),e?.profileFingerprint!==void 0&&!/^[a-f0-9]{64}$/.test(e.profileFingerprint)&&p(n,`${t}.profileFingerprint`,"invalid_fingerprint","Profile fingerprint must be 64 lowercase hexadecimal characters")}function Fe(e,t,n){if(!e||typeof e!="object"){p(n,t,"invalid_anchor","Anchor must be an object");return}switch(e.kind){case"file":l(e.path,`${t}.path`,n,4096);break;case"source-line":l(e.path,`${t}.path`,n,4096),(!Number.isInteger(e.startLine)||e.startLine<1)&&p(n,`${t}.startLine`,"invalid_line","startLine must be a positive integer"),e.endLine!==void 0&&(!Number.isInteger(e.endLine)||e.endLine<e.startLine)&&p(n,`${t}.endLine`,"invalid_line_range","endLine must be greater than or equal to startLine");break;case"diff-hunk":l(e.path,`${t}.path`,n,4096),l(e.hunkId,`${t}.hunkId`,n,512);break;case"symbol":l(e.path,`${t}.path`,n,4096),l(e.symbol,`${t}.symbol`,n,1024);break;case"dom-node":l(e.pageId,`${t}.pageId`,n,512),!e.selector&&!e.accessibilityId&&!e.snapshotArtifactId&&p(n,t,"missing_dom_locator","DOM anchors require a selector, accessibility ID, or snapshot artifact ID");break;case"timeline":l(e.recordingArtifactId,`${t}.recordingArtifactId`,n,512),(!Number.isFinite(e.startMs)||e.startMs<0)&&p(n,`${t}.startMs`,"invalid_time","startMs must be a non-negative finite number"),e.endMs!==void 0&&(!Number.isFinite(e.endMs)||e.endMs<e.startMs)&&p(n,`${t}.endMs`,"invalid_time_range","endMs must be greater than or equal to startMs");break;case"region":l(e.mediaArtifactId,`${t}.mediaArtifactId`,n,512),[e.x,e.y,e.width,e.height].every(Number.isFinite)?(e.width<=0||e.height<=0)&&p(n,t,"invalid_region_size","Region width and height must be positive"):p(n,t,"invalid_region","Region coordinates must be finite numbers");break;case"artifact":l(e.artifactId,`${t}.artifactId`,n,512);break;default:typeof e.kind!="string"||!e.kind.startsWith("custom:")?p(n,`${t}.kind`,"unknown_anchor","Anchor kind is not supported"):L(e.kind,"custom:",`${t}.kind`,n)}}function ne(e,t,n,i){if(!(e===null||typeof e=="string"||typeof e=="boolean")){if(typeof e=="number"){Number.isFinite(e)||p(n,t,"non_finite_number","JSON numbers must be finite");return}if(typeof e!="object"){p(n,t,"non_json_value","Value must be JSON-serializable");return}if(i.has(e)){p(n,t,"cyclic_value","Value must not contain cycles");return}if(i.add(e),Array.isArray(e))e.forEach((o,r)=>ne(o,`${t}[${r}]`,n,i));else for(let[o,r]of Object.entries(e))r===void 0?p(n,`${t}.${o}`,"undefined_value","Undefined is not valid JSON"):ne(r,`${t}.${o}`,n,i);i.delete(e)}}function At(e){let t=[];if(!e||typeof e!="object")return[{path:"$",code:"invalid_artifact",message:"Artifact must be an object"}];if(e.schemaVersion!==1&&p(t,"schemaVersion","unsupported_schema",`schemaVersion must be ${1}`),l(e.artifactId,"artifactId",t,512),(!Number.isInteger(e.revision)||e.revision<1)&&p(t,"revision","invalid_revision","revision must be a positive integer"),l(e.kind,"kind",t,160),typeof e.kind=="string"&&!In.has(e.kind)&&!e.kind.startsWith("custom:")&&p(t,"kind","unknown_artifact_kind","Artifact kind is not supported"),L(e.kind,"custom:","kind",t),l(e.title,"title",t,1024),e.description!==void 0&&l(e.description,"description",t,32768),l(e.state,"state",t,64),gn.has(e.state)||p(t,"state","unknown_state","Artifact state is not supported"),l(e.createdAt,"createdAt",t,128),te(e.createdAt,"createdAt",t),te(e.updatedAt,"updatedAt",t),e.updatedAt&&Number.isFinite(Date.parse(e.createdAt))&&Date.parse(e.updatedAt)<Date.parse(e.createdAt)&&p(t,"updatedAt","timestamp_order","updatedAt must not precede createdAt"),l(e.mediaType,"mediaType",t,255),l(e.sensitivity,"sensitivity",t,64),An.has(e.sensitivity)||p(t,"sensitivity","unknown_sensitivity","Sensitivity is not supported"),e.identity)for(let[i,o]of Object.entries(e.identity))o!==void 0&&l(o,`identity.${i}`,t,512);if(!e.content||typeof e.content!="object")p(t,"content","missing_content","content descriptor is required");else{!e.content.hash||typeof e.content.hash!="object"?p(t,"content.hash","missing_hash","content hash is required"):(l(e.content.hash.algorithm,"content.hash.algorithm",t,128),L(e.content.hash.algorithm,"custom:","content.hash.algorithm",t),typeof e.content.hash.algorithm=="string"&&e.content.hash.algorithm!=="sha256"&&!e.content.hash.algorithm.startsWith("custom:")&&p(t,"content.hash.algorithm","unknown_hash_algorithm","Hash algorithm is not supported"),l(e.content.hash.value,"content.hash.value",t,512),e.content.hash.algorithm==="sha256"&&!ht.test(e.content.hash.value)&&p(t,"content.hash.value","invalid_sha256","SHA-256 hash must be 64 lowercase hexadecimal characters")),(!Number.isSafeInteger(e.content.sizeBytes)||e.content.sizeBytes<0)&&p(t,"content.sizeBytes","invalid_size","sizeBytes must be a non-negative safe integer");let i=e.content.storage;if(!i||typeof i!="object")p(t,"content.storage","missing_storage","storage reference is required");else if(i.type==="inline")if(i.text===void 0==(i.base64===void 0))p(t,"content.storage","invalid_inline_storage","Inline storage requires exactly one of text or base64");else{let o;i.text!==void 0?o=De.Buffer.from(i.text,"utf8"):i.base64!==void 0&&(hn.test(i.base64)?o=De.Buffer.from(i.base64,"base64"):p(t,"content.storage.base64","invalid_base64","Inline base64 content is malformed")),o&&e.content.sizeBytes!==o.byteLength&&p(t,"content.sizeBytes","content_size_mismatch","sizeBytes does not match inline content"),o&&e.content.hash.algorithm==="sha256"&&T(o).value!==e.content.hash.value&&p(t,"content.hash.value","content_hash_mismatch","Hash does not match inline content")}else i.type==="file"?l(i.path,"content.storage.path",t,4096):i.type==="blob"?l(i.uri,"content.storage.uri",t,8192):i.type==="git"?(l(i.commit,"content.storage.commit",t,512),l(i.path,"content.storage.path",t,4096)):i.type==="url"?(l(i.url,"content.storage.url",t,8192),te(i.expiresAt,"content.storage.expiresAt",t)):i.type==="external"?(l(i.provider,"content.storage.provider",t,255),l(i.locator,"content.storage.locator",t,8192)):p(t,"content.storage.type","unknown_storage","Storage type is not supported");e.content.encoding!==void 0&&(typeof e.content.encoding!="string"||e.content.encoding!=="utf8"&&e.content.encoding!=="base64"&&e.content.encoding!=="binary"&&!e.content.encoding.startsWith("custom:"))&&p(t,"content.encoding","unknown_encoding","Content encoding is not supported"),L(e.content.encoding,"custom:","content.encoding",t)}!e.provenance||typeof e.provenance!="object"?p(t,"provenance","missing_provenance","provenance is required"):(gt(e.provenance.producer,"provenance.producer",t),e.provenance.capabilityLeaseIds?.forEach((i,o)=>l(i,`provenance.capabilityLeaseIds[${o}]`,t,512)),e.provenance.sourceArtifactIds?.forEach((i,o)=>l(i,`provenance.sourceArtifactIds[${o}]`,t,512)),e.provenance.attributes&&ne(e.provenance.attributes,"provenance.attributes",t,new Set));let n=new Set;return e.relationships?.forEach((i,o)=>{let r=`relationships[${o}]`;l(i.relation,`${r}.relation`,t,160),typeof i.relation=="string"&&!En.has(i.relation)&&!i.relation.startsWith("custom:")&&p(t,`${r}.relation`,"unknown_relationship","Relationship type is not supported"),L(i.relation,"custom:",`${r}.relation`,t),l(i.target?.type,`${r}.target.type`,t,160),typeof i.target?.type=="string"&&!wn.has(i.target.type)&&!i.target.type.startsWith("custom:")&&p(t,`${r}.target.type`,"unknown_reference_type","Evidence reference type is not supported"),L(i.target?.type,"custom:",`${r}.target.type`,t),l(i.target?.id,`${r}.target.id`,t,512);let a=`${i.relation}:${i.target?.type}:${i.target?.id}:${i.target?.revision??""}`;n.has(a)&&p(t,r,"duplicate_relationship","Duplicate relationship"),n.add(a),i.attributes&&ne(i.attributes,`${r}.attributes`,t,new Set)}),e.anchors?.forEach((i,o)=>Fe(i,`anchors[${o}]`,t)),e.revision===1&&e.predecessorRevision!==void 0&&p(t,"predecessorRevision","unexpected_predecessor","First revision cannot have a predecessor"),e.revision>1&&(!Number.isInteger(e.predecessorRevision)||(e.predecessorRevision??0)>=e.revision)&&p(t,"predecessorRevision","invalid_predecessor","Later revisions require an earlier predecessor revision"),te(e.retention?.retainUntil,"retention.retainUntil",t),e.retention?.legalHold!==void 0&&typeof e.retention.legalHold!="boolean"&&p(t,"retention.legalHold","invalid_boolean","legalHold must be a boolean"),e.extensions&&ne(e.extensions,"extensions",t,new Set),t}function I(e){let t=At(e);if(t.length>0)throw new M("XENO artifact validation failed",t)}function yt(e,t){return ln[e].includes(t)}function ie(e,t){if(!yt(e,t))throw new ve(e,t)}function he(e,t){let n=[];return e.schemaVersion!==1&&p(n,"schemaVersion","unsupported_schema",`schemaVersion must be ${1}`),l(e.eventId,"eventId",n,512),l(e.artifactId,"artifactId",n,512),(!Number.isInteger(e.artifactRevision)||e.artifactRevision<1)&&p(n,"artifactRevision","invalid_revision","artifactRevision must be a positive integer"),(!Number.isInteger(e.sequence)||e.sequence<1)&&p(n,"sequence","invalid_sequence","sequence must be a positive integer"),l(e.recordedAt,"recordedAt",n,128),te(e.recordedAt,"recordedAt",n),gt(e.actor,"actor",n),!e.artifactHash||typeof e.artifactHash!="object"?p(n,"artifactHash","missing_hash","Artifact hash is required"):(l(e.artifactHash.algorithm,"artifactHash.algorithm",n,128),L(e.artifactHash.algorithm,"custom:","artifactHash.algorithm",n),l(e.artifactHash.value,"artifactHash.value",n,512),e.artifactHash.algorithm==="sha256"&&!ht.test(e.artifactHash.value)&&p(n,"artifactHash.value","invalid_sha256","SHA-256 hash must be 64 lowercase hexadecimal characters"),typeof e.artifactHash.algorithm=="string"&&e.artifactHash.algorithm!=="sha256"&&!e.artifactHash.algorithm.startsWith("custom:")&&p(n,"artifactHash.algorithm","unknown_hash_algorithm","Hash algorithm is not supported")),["review-requested","comment-added","comment-resolved","comment-reopened","decision-recorded","review-withdrawn"].includes(e.type)||p(n,"type","unknown_review_event","Review event type is not supported"),e.type==="comment-added"?(l(e.commentId,"commentId",n,512),l(e.body,"body",n,65536),e.anchor&&Fe(e.anchor,"anchor",n)):e.type==="comment-resolved"||e.type==="comment-reopened"?l(e.commentId,"commentId",n,512):e.type==="decision-recorded"&&(["approved","rejected","changes_requested"].includes(e.decision)||p(n,"decision","unknown_review_decision","Review decision is not supported"),e.scope&&Fe(e.scope,"scope",n)),t&&(e.artifactId!==t.artifactId&&p(n,"artifactId","artifact_mismatch","Review event targets a different artifact"),e.artifactRevision!==t.revision&&p(n,"artifactRevision","revision_mismatch","Review event targets a different revision"),e.artifactHash&&(e.artifactHash.algorithm!==t.content.hash.algorithm||e.artifactHash.value!==t.content.hash.value)&&p(n,"artifactHash","hash_mismatch","Review event hash does not match the artifact revision")),n}function ge(e){let t="not_requested",n,i,o,r=0,a=new Set,c=new Set;for(let s of[...e].sort((d,f)=>d.sequence-f.sequence))o=s.recordedAt,s.type==="review-requested"?t="pending":s.type==="review-withdrawn"?t="withdrawn":s.type==="comment-added"?(a.add(s.commentId),c.delete(s.commentId),t==="not_requested"&&(t="pending")):s.type==="comment-resolved"?c.add(s.commentId):s.type==="comment-reopened"?c.delete(s.commentId):s.type==="decision-recorded"&&(s.scope?r+=1:(n=s.decision,i=s.eventId,t=s.decision));return{status:t,totalComments:a.size,unresolvedComments:[...a].filter(s=>!c.has(s)).length,...n?{latestDecision:n}:{},...i?{latestDecisionEventId:i}:{},...r>0?{scopedDecisionCount:r}:{},...o?{lastReviewedAt:o}:{}}}var ye=class extends Error{code="EVIDENCE_GRAPH_INVALID";issues;constructor(t){super("XENO evidence graph validation failed"),this.name="XenoEvidenceGraphValidationError",this.issues=t.map(n=>({...n}))}},Rn=new Set(["depends_on","decomposes","supersedes"]),Xn=new Set(Q),Sn=new Set(ee);function A(e,t,n,i){e.push({path:t,code:n,message:i})}function re(e){return e.includes("T")&&Number.isFinite(Date.parse(e))}function It(e,t){return e.startsWith(Oe)?F(e):t.has(e)}function wt(e){let t=[];if(!e||typeof e!="object")return[{path:"$",code:"invalid_graph",message:"Evidence graph must be an object"}];e.schemaVersion!==1&&A(t,"schemaVersion","unsupported_schema",`schemaVersion must be ${1}`),(typeof e.graphId!="string"||e.graphId.trim().length===0)&&A(t,"graphId","required_string","graphId must be a non-empty string"),(!Number.isInteger(e.version)||e.version<1)&&A(t,"version","invalid_version","version must be a positive integer"),re(e.createdAt)||A(t,"createdAt","invalid_timestamp","createdAt must be an ISO 8601 timestamp"),re(e.updatedAt)||A(t,"updatedAt","invalid_timestamp","updatedAt must be an ISO 8601 timestamp"),re(e.createdAt)&&re(e.updatedAt)&&Date.parse(e.updatedAt)<Date.parse(e.createdAt)&&A(t,"updatedAt","timestamp_order","updatedAt must not precede createdAt");let n=new Map;Array.isArray(e.nodes)||A(t,"nodes","invalid_nodes","nodes must be an array"),(Array.isArray(e.nodes)?e.nodes:[]).forEach((f,g)=>{let R=`nodes[${g}]`;typeof f.id!="string"||f.id.trim().length===0?A(t,`${R}.id`,"required_string","Node ID must be a non-empty string"):n.has(f.id)?A(t,`${R}.id`,"duplicate_node",`Node ID ${f.id} is duplicated`):n.set(f.id,f),(typeof f.type!="string"||!It(f.type,Xn))&&A(t,`${R}.type`,"invalid_node_type","Node type is invalid"),f.artifactRevision!==void 0&&(!Number.isInteger(f.artifactRevision)||f.artifactRevision<1)&&A(t,`${R}.artifactRevision`,"invalid_revision","artifactRevision must be a positive integer")});let i=new Set,o=new Set;Array.isArray(e.edges)||A(t,"edges","invalid_edges","edges must be an array"),(Array.isArray(e.edges)?e.edges:[]).forEach((f,g)=>{let R=`edges[${g}]`;typeof f.id!="string"||f.id.trim().length===0?A(t,`${R}.id`,"required_string","Edge ID must be a non-empty string"):i.has(f.id)&&A(t,`${R}.id`,"duplicate_edge",`Edge ID ${f.id} is duplicated`),i.add(f.id),(typeof f.type!="string"||!It(f.type,Sn))&&A(t,`${R}.type`,"invalid_edge_type","Edge type is invalid");let O=`${f.type}:${f.from}:${f.to}`;o.has(O)&&A(t,R,"duplicate_edge_identity","Equivalent evidence edge is duplicated"),o.add(O),n.has(f.from)||A(t,`${R}.from`,"dangling_reference",`Source node ${f.from} does not exist`),n.has(f.to)||A(t,`${R}.to`,"dangling_reference",`Target node ${f.to} does not exist`),f.from===f.to&&A(t,R,"self_edge","Evidence edges cannot point to the same node"),re(f.createdAt)||A(t,`${R}.createdAt`,"invalid_timestamp","createdAt must be an ISO 8601 timestamp")});let r=(Array.isArray(e.edges)?e.edges:[]).filter(f=>Rn.has(f.type)),a=new Map;for(let f of r){let g=a.get(f.from)??[];g.push(f.to),a.set(f.from,g)}let c=new Set,s=new Set,d=f=>{if(c.has(f))return!0;if(s.has(f))return!1;c.add(f);for(let g of a.get(f)??[])if(d(g))return!0;return c.delete(f),s.add(f),!1};for(let f of n.keys())if(d(f)){A(t,"edges","cyclic_graph","Dependency, decomposition, and supersession edges must be acyclic");break}return t}function J(e){let t=wt(e);if(t.length>0)throw new ye(t)}var Le=class{now;graph;constructor(t){if("schemaVersion"in t)J(t),this.now=()=>new Date().toISOString(),this.graph=Ae(t);else{this.now=t.now??(()=>new Date().toISOString());let n=this.now();this.graph={schemaVersion:1,graphId:t.graphId,version:1,createdAt:n,updatedAt:n,nodes:[],edges:[]},J(this.graph)}}addNode(t){let n=Ae(this.graph);return n.nodes.push(Et(t)),this.touch(n),J(n),this.graph=n,this}addEdge(t){let n=Ae(this.graph);return n.edges.push(Rt(t)),this.touch(n),J(n),this.graph=n,this}build(){return J(this.graph),Ae(this.graph)}touch(t){t.version+=1,t.updatedAt=this.now()}};function Et(e){return{...e,...e.attributes?{attributes:structuredClone(e.attributes)}:{}}}function Rt(e){return{...e,...e.producer?{producer:{...e.producer}}:{},...e.attributes?{attributes:structuredClone(e.attributes)}:{}}}function Ae(e){return{...e,nodes:e.nodes.map(Et),edges:e.edges.map(Rt)}}var u=class extends Error{constructor(n,i,o,r){super(i,r);this.code=n;this.detail=o;this.name="XenoArtifactRepositoryError"}code;detail},B=class{records=new Map;currentRevisions=new Map;now;idFactory;eventIds=new Set;idCounter=0;constructor(t={}){this.now=t.now??(()=>new Date().toISOString()),this.idFactory=t.idFactory??(n=>(this.idCounter+=1,`${n}_${Date.now().toString(36)}_${this.idCounter.toString(36)}`)),t.initialState&&this.hydrate(t.initialState)}exportState(){let t=[...this.records.values()].flatMap(n=>[...n.values()]).sort(Xt).map(n=>({artifact:oe(n.artifact),recordVersion:n.recordVersion,lifecycleEvents:structuredClone(n.lifecycleEvents),reviewEvents:structuredClone(n.reviewEvents)}));return{schemaVersion:1,records:t}}async create(t){if(I(t),this.assertInitialState(t),t.revision!==1)throw new u("ARTIFACT_REVISION_INVALID","A new artifact must begin at revision 1",{artifactId:t.artifactId,revision:t.revision});if(this.records.has(t.artifactId))throw new u("ARTIFACT_ALREADY_EXISTS",`Artifact ${t.artifactId} already exists`,{artifactId:t.artifactId});let n=oe(t),i=this.createLifecycleEvent({artifact:n,sequence:1,actor:n.provenance.producer,fromState:null,toState:n.state,reason:"artifact-created"}),o={artifact:n,recordVersion:1,lifecycleEvents:[i],reviewEvents:[]};return this.records.set(n.artifactId,new Map([[n.revision,o]])),this.currentRevisions.set(n.artifactId,n.revision),H(o)}async createRevision(t,n={}){I(t),this.assertInitialState(t);let i=this.getMutable(t.artifactId);this.assertVersion(i,n.expectedRecordVersion);let o=i.artifact.revision+1;if(t.revision!==o||t.predecessorRevision!==i.artifact.revision)throw new u("ARTIFACT_REVISION_INVALID",`Revision ${t.revision} does not follow current revision ${i.artifact.revision}`,{artifactId:t.artifactId,currentRevision:i.artifact.revision,requestedRevision:t.revision});if(_n(t,i.artifact))throw new u("ARTIFACT_CONTENT_UNCHANGED","A new artifact revision must have a different content hash",{artifactId:t.artifactId,revision:t.revision});if(i.artifact.state==="archived")throw new u("ARTIFACT_REVISION_INVALID","Archived artifacts cannot receive new revisions",{artifactId:t.artifactId,revision:i.artifact.revision});if(i.artifact.state!=="superseded"){ie(i.artifact.state,"superseded");let s=this.now(),d=this.createLifecycleEvent({artifact:i.artifact,sequence:i.lifecycleEvents.length+1,actor:n.actor??t.provenance.producer,fromState:i.artifact.state,toState:"superseded",reason:n.reason??`superseded-by-revision-${t.revision}`,recordedAt:s});i.artifact.state="superseded",i.artifact.updatedAt=s,i.lifecycleEvents.push(d),i.recordVersion+=1}let r=oe(t),a=this.createLifecycleEvent({artifact:r,sequence:1,actor:n.actor??r.provenance.producer,fromState:null,toState:r.state,reason:n.reason??`revision-created-from-${i.artifact.revision}`}),c={artifact:r,recordVersion:1,lifecycleEvents:[a],reviewEvents:[]};return this.records.get(r.artifactId)?.set(r.revision,c),this.currentRevisions.set(r.artifactId,r.revision),H(c)}async get(t,n){let i=this.records.get(t);if(!i)return;let o=n??this.currentRevisions.get(t);if(o===void 0)return;let r=i.get(o);return r?H(r):void 0}async require(t,n){let i=await this.get(t,n);if(!i)throw new u("ARTIFACT_NOT_FOUND",`Artifact ${t}${n===void 0?"":` revision ${n}`} was not found`,{artifactId:t,...n===void 0?{}:{revision:n}});return i}async list(t={}){let n=[];for(let[i,o]of this.records)if(!(t.artifactIds&&!t.artifactIds.includes(i)))if(t.includeSuperseded)n.push(...o.values());else{let r=this.currentRevisions.get(i);if(r!==void 0){let a=o.get(r);a&&n.push(a)}}return n.filter(i=>Tn(i.artifact,t)).sort(Xt).map(H)}async listRevisions(t){let n=this.records.get(t);return n?[...n.values()].sort((i,o)=>i.artifact.revision-o.artifact.revision).map(H):[]}async transition(t){let n=this.getMutable(t.artifactId,t.revision);if(this.assertVersion(n,t.expectedRecordVersion),ie(n.artifact.state,t.toState),t.toState==="approved"||t.toState==="rejected"){let a=t.reviewEventId?n.reviewEvents.find(s=>s.eventId===t.reviewEventId&&s.type==="decision-recorded"):void 0,c=ge(n.reviewEvents);if(!a||a.decision!==t.toState||c.latestDecisionEventId!==a.eventId)throw new u("ARTIFACT_REVIEW_DECISION_REQUIRED",`Transition to ${t.toState} requires a matching decision event`,{artifactId:t.artifactId,revision:n.artifact.revision});if(t.toState==="approved"&&c.unresolvedComments>0)throw new u("ARTIFACT_UNRESOLVED_COMMENTS",`Artifact has ${c.unresolvedComments} unresolved review comment(s)`,{artifactId:t.artifactId,revision:n.artifact.revision,unresolvedComments:c.unresolvedComments})}let i=this.now(),o=n.artifact.state,r=this.createLifecycleEvent({artifact:n.artifact,sequence:n.lifecycleEvents.length+1,actor:t.actor,fromState:o,toState:t.toState,reason:t.reason,reviewEventId:t.reviewEventId,recordedAt:i});return n.artifact.state=t.toState,n.artifact.updatedAt=i,n.lifecycleEvents.push(r),n.recordVersion+=1,H(n)}async appendReviewEvent(t){let n=t.event,i=this.getMutable(n.artifactId,n.artifactRevision);if(this.assertVersion(i,t.expectedRecordVersion),i.artifact.state==="archived"||i.artifact.state==="superseded")throw new u("ARTIFACT_REVIEW_INVALID",`Cannot append review events to a ${i.artifact.state} artifact revision`,{artifactId:n.artifactId,revision:n.artifactRevision});if(this.assertReviewCommentState(i,n),(n.type==="review-requested"||n.type==="review-withdrawn"||n.type==="decision-recorded")&&i.artifact.state!=="pending_review")throw new u("ARTIFACT_REVIEW_INVALID",`${n.type} requires an artifact in pending_review state`,{artifactId:n.artifactId,revision:n.artifactRevision});let o={...structuredClone(n),schemaVersion:1,eventId:this.nextEventId("review_event"),sequence:i.reviewEvents.length+1,recordedAt:this.now()},r=he(o,i.artifact);if(r.length>0)throw new M("XENO artifact review event validation failed",r);return i.reviewEvents.push(o),i.recordVersion+=1,H(i)}getMutable(t,n){let i=this.records.get(t),o=n??this.currentRevisions.get(t),r=o===void 0?void 0:i?.get(o);if(!r)throw new u("ARTIFACT_NOT_FOUND",`Artifact ${t}${n===void 0?"":` revision ${n}`} was not found`,{artifactId:t,...n===void 0?{}:{revision:n}});return r}assertVersion(t,n){if(n!==void 0&&n!==t.recordVersion)throw new u("ARTIFACT_CONFLICT",`Expected record version ${n}, found ${t.recordVersion}`,{artifactId:t.artifact.artifactId,revision:t.artifact.revision,expectedRecordVersion:n,actualRecordVersion:t.recordVersion})}assertInitialState(t){if(t.state!=="draft"&&t.state!=="pending_review")throw new u("ARTIFACT_REVISION_INVALID","New artifact revisions must begin in draft or pending_review state",{artifactId:t.artifactId,revision:t.revision})}assertReviewCommentState(t,n){if(n.type==="comment-added"){if(t.reviewEvents.some(r=>r.type==="comment-added"&&r.commentId===n.commentId))throw new u("ARTIFACT_REVIEW_INVALID",`Comment ${n.commentId} already exists`);if(n.parentCommentId&&!t.reviewEvents.some(r=>r.type==="comment-added"&&r.commentId===n.parentCommentId))throw new u("ARTIFACT_REVIEW_INVALID",`Parent comment ${n.parentCommentId} does not exist`);return}if(n.type!=="comment-resolved"&&n.type!=="comment-reopened")return;if(!t.reviewEvents.some(r=>r.type==="comment-added"&&r.commentId===n.commentId))throw new u("ARTIFACT_REVIEW_INVALID",`Comment ${n.commentId} does not exist`);let o=kn(t.reviewEvents,n.commentId);if(n.type==="comment-resolved"&&o.resolved)throw new u("ARTIFACT_REVIEW_INVALID",`Comment ${n.commentId} is already resolved`);if(n.type==="comment-reopened"&&!o.resolved)throw new u("ARTIFACT_REVIEW_INVALID",`Comment ${n.commentId} is not resolved`)}createLifecycleEvent(t){return{schemaVersion:1,eventId:this.nextEventId("artifact_event"),artifactId:t.artifact.artifactId,revision:t.artifact.revision,sequence:t.sequence,recordedAt:t.recordedAt??this.now(),actor:{...t.actor},fromState:t.fromState,toState:t.toState,...t.reason?{reason:t.reason}:{},...t.reviewEventId?{reviewEventId:t.reviewEventId}:{}}}nextEventId(t){let n=this.idFactory(t);if(typeof n!="string"||n.trim().length===0||this.eventIds.has(n))throw new u("ARTIFACT_CONFLICT",`Event ID factory produced an invalid or duplicate ${t} ID`);return this.eventIds.add(n),n}hydrate(t){if(t.schemaVersion!==1||!Array.isArray(t.records))throw new u("ARTIFACT_REVISION_INVALID","Artifact repository state has an unsupported schema or record collection");let n=[...t.records].sort((i,o)=>i.artifact.artifactId.localeCompare(o.artifact.artifactId)||i.artifact.revision-o.artifact.revision);for(let i of n){let o=bn(i,this.eventIds),r=this.records.get(o.artifact.artifactId);if(r||(r=new Map,this.records.set(o.artifact.artifactId,r)),r.has(o.artifact.revision))throw new u("ARTIFACT_REVISION_INVALID",`Duplicate persisted revision ${o.artifact.artifactId}:${o.artifact.revision}`);r.set(o.artifact.revision,o),this.currentRevisions.set(o.artifact.artifactId,o.artifact.revision)}for(let[i,o]of this.records){let r=[...o.values()].sort((a,c)=>a.artifact.revision-c.artifact.revision);for(let a=0;a<r.length;a+=1){let c=r[a],s=a+1;if(c.artifact.revision!==s)throw new u("ARTIFACT_REVISION_INVALID",`Persisted artifact ${i} is missing revision ${s}`);if(a===0&&c.artifact.predecessorRevision!==void 0)throw new u("ARTIFACT_REVISION_INVALID",`Initial revision for ${i} cannot declare a predecessor`);if(a>0&&c.artifact.predecessorRevision!==s-1)throw new u("ARTIFACT_REVISION_INVALID",`Persisted revision ${i}:${s} has an invalid predecessor`);if(a<r.length-1&&c.artifact.state!=="superseded")throw new u("ARTIFACT_REVISION_INVALID",`Non-current revision ${i}:${s} must be superseded`)}}}};function bn(e,t){if(I(e.artifact),!Number.isInteger(e.recordVersion)||e.recordVersion<1)throw new u("ARTIFACT_REVISION_INVALID","Persisted artifact recordVersion must be a positive integer",{artifactId:e.artifact.artifactId,revision:e.artifact.revision});if(!Array.isArray(e.lifecycleEvents)||e.lifecycleEvents.length===0||!Array.isArray(e.reviewEvents))throw new u("ARTIFACT_REVISION_INVALID","Persisted artifact records require lifecycle and review event arrays",{artifactId:e.artifact.artifactId,revision:e.artifact.revision});let n=e.lifecycleEvents.length+e.reviewEvents.length;if(e.recordVersion!==n)throw new u("ARTIFACT_REVISION_INVALID",`Persisted record version ${e.recordVersion} does not match ${n} mutations`,{artifactId:e.artifact.artifactId,revision:e.artifact.revision});let i=null;for(let r=0;r<e.lifecycleEvents.length;r+=1){let a=e.lifecycleEvents[r];if(a.schemaVersion!==1||a.artifactId!==e.artifact.artifactId||a.revision!==e.artifact.revision||a.sequence!==r+1||a.fromState!==i||typeof a.eventId!="string"||a.eventId.length===0||t.has(a.eventId)||!Number.isFinite(Date.parse(a.recordedAt)))throw new u("ARTIFACT_REVISION_INVALID",`Persisted lifecycle event ${r+1} is invalid`,{artifactId:e.artifact.artifactId,revision:e.artifact.revision});if(i===null){if(a.toState!=="draft"&&a.toState!=="pending_review")throw new u("ARTIFACT_REVISION_INVALID","A persisted artifact must begin in draft or pending_review state",{artifactId:e.artifact.artifactId,revision:e.artifact.revision})}else ie(i,a.toState);t.add(a.eventId),i=a.toState}if(i!==e.artifact.state)throw new u("ARTIFACT_REVISION_INVALID","Persisted artifact state does not match its lifecycle tail",{artifactId:e.artifact.artifactId,revision:e.artifact.revision});let o=new Map;for(let r=0;r<e.reviewEvents.length;r+=1){let a=e.reviewEvents[r];if(a.sequence!==r+1||t.has(a.eventId))throw new u("ARTIFACT_REVIEW_INVALID",`Persisted review event ${r+1} has an invalid sequence or duplicate ID`,{artifactId:e.artifact.artifactId,revision:e.artifact.revision});let c=he(a,e.artifact);if(c.length>0)throw new M("Persisted XENO artifact review event validation failed",c);if(a.type==="comment-added"){if(o.has(a.commentId)||a.parentCommentId!==void 0&&!o.has(a.parentCommentId))throw new u("ARTIFACT_REVIEW_INVALID",`Persisted comment ${a.commentId} has an invalid identity or parent`);o.set(a.commentId,!1)}else if(a.type==="comment-resolved"||a.type==="comment-reopened"){let s=o.get(a.commentId);if(s===void 0||a.type==="comment-resolved"&&s||a.type==="comment-reopened"&&!s)throw new u("ARTIFACT_REVIEW_INVALID",`Persisted comment transition for ${a.commentId} is invalid`);o.set(a.commentId,a.type==="comment-resolved")}t.add(a.eventId)}return{artifact:oe(e.artifact),recordVersion:e.recordVersion,lifecycleEvents:structuredClone(e.lifecycleEvents),reviewEvents:structuredClone(e.reviewEvents)}}function _n(e,t){return e.content.hash.algorithm===t.content.hash.algorithm&&e.content.hash.value===t.content.hash.value}function Tn(e,t){return!(t.kinds&&!t.kinds.includes(e.kind)||t.states&&!t.states.includes(e.state)||t.runId&&e.identity?.runId!==t.runId||t.sessionId&&e.identity?.sessionId!==t.sessionId||t.turnId&&e.identity?.turnId!==t.turnId||t.taskId&&e.identity?.taskId!==t.taskId||t.workspaceId&&e.identity?.workspaceId!==t.workspaceId||t.repositoryId&&e.identity?.repositoryId!==t.repositoryId||t.producerId&&e.provenance.producer.id!==t.producerId||t.sensitivity&&!t.sensitivity.includes(e.sensitivity))}function Xt(e,t){return e.artifact.createdAt.localeCompare(t.artifact.createdAt)||e.artifact.artifactId.localeCompare(t.artifact.artifactId)||e.artifact.revision-t.artifact.revision}function kn(e,t){let n=!1;for(let i of e)(i.type==="comment-resolved"||i.type==="comment-reopened")&&i.commentId===t&&(n=i.type==="comment-resolved");return{resolved:n}}function oe(e){return structuredClone(e)}function H(e){return{artifact:oe(e.artifact),recordVersion:e.recordVersion,etag:`${e.artifact.artifactId}:${e.artifact.revision}:${e.recordVersion}`,lifecycleEvents:structuredClone(e.lifecycleEvents),reviewEvents:structuredClone(e.reviewEvents),reviewSummary:ge(e.reviewEvents)}}var Ue=require("node:crypto"),b=require("node:fs/promises"),N=require("node:path");var V=require("node:fs"),Me=require("node:os"),bt=require("node:path");function xn(){return new Date().toISOString()}function Cn(){return new Date(Date.now()-Math.floor(process.uptime()*1e3)).toISOString()}function _t(e){try{return JSON.parse((0,V.readFileSync)(e,"utf8"))}catch{return null}}function Nn(e){if(!e||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}function Vn(e){return e.hostname!==(0,Me.hostname)()?!0:Nn(e.pid)}function St(e,t){(0,V.mkdirSync)((0,bt.dirname)(e),{recursive:!0}),(0,V.writeFileSync)(e,JSON.stringify(t,null,2)+`
2
- `,{encoding:"utf8",flag:"wx"})}function Pn(e,t){let n=_t(e);n?.pid!==t.pid||n.hostname!==t.hostname||(0,V.rmSync)(e,{force:!0})}function Tt(e,t,n){let i=xn(),o={schemaVersion:1,name:t,pid:process.pid,hostname:(0,Me.hostname)(),processStartedAt:Cn(),version:n,acquiredAt:i,updatedAt:i};try{St(e,o)}catch(r){if(r.code!=="EEXIST")throw r;let c=_t(e);if(c&&Vn(c))throw new Error(`${t} is already locked by PID ${c.pid} on ${c.hostname}.`);(0,V.rmSync)(e,{force:!0}),St(e,o)}return{record:o,release:()=>{Pn(e,o)}}}var kt="0.9.20";var We=1,$n="repository.v1.json",On=5e3,Dn=20,Fn=64*1024*1024,qe=class{directory;snapshotPath;backupPath;lockPath;now;lockTimeoutMs;lockRetryMs;maxSnapshotBytes;onRecovery;mutationTail=Promise.resolve();constructor(t){if(!t||typeof t.directory!="string"||t.directory.trim().length===0)throw new TypeError("Artifact repository directory is required");let n=t.snapshotFileName??$n;if((0,N.basename)(n)!==n||!/^[A-Za-z0-9_.-]+$/.test(n))throw new TypeError("Artifact snapshot filename must be a safe basename");this.directory=(0,N.resolve)(t.directory),this.snapshotPath=(0,N.join)(this.directory,n),this.backupPath=`${this.snapshotPath}.bak`,this.lockPath=`${this.snapshotPath}.lock`,this.now=t.now??(()=>new Date().toISOString()),this.lockTimeoutMs=He(t.lockTimeoutMs,On,100,6e4,"lockTimeoutMs"),this.lockRetryMs=He(t.lockRetryMs,Dn,1,1e3,"lockRetryMs"),this.maxSnapshotBytes=He(t.maxSnapshotBytes,Fn,1024,1024*1024*1024,"maxSnapshotBytes"),this.onRecovery=t.onRecovery}async create(t){return this.mutate(n=>n.create(t))}async createRevision(t,n){return this.mutate(i=>i.createRevision(t,n))}async get(t,n){return(await this.load()).repository.get(t,n)}async require(t,n){return(await this.load()).repository.require(t,n)}async list(t){return(await this.load()).repository.list(t)}async listRevisions(t){return(await this.load()).repository.listRevisions(t)}async transition(t){return this.mutate(n=>n.transition(t))}async appendReviewEvent(t){return this.mutate(n=>n.appendReviewEvent(t))}async inspectSnapshot(){return this.readSnapshot(this.snapshotPath,!0)}async mutate(t){return this.enqueueMutation(async()=>{let n=await this.acquireLock();try{let i=await this.load(),o=await t(i.repository);return await this.persist(i),o}finally{n.release()}})}async enqueueMutation(t){let n=this.mutationTail.then(t,t);return this.mutationTail=n.then(()=>{},()=>{}),n}async acquireLock(){let t=Date.now(),n;for(;Date.now()-t<=this.lockTimeoutMs;)try{return Tt(this.lockPath,`artifact-repository:${(0,N.basename)(this.snapshotPath)}`,kt)}catch(i){if(!(i instanceof Error)||!/already locked by PID/.test(i.message))throw i;n=i,await qn(this.lockRetryMs)}throw new u("ARTIFACT_PERSISTENCE_LOCKED",`Artifact repository remained locked for ${this.lockTimeoutMs}ms`,{snapshotPath:this.snapshotPath},{cause:n})}async load(){let t,n,i=!1;try{n=await this.readSnapshot(this.snapshotPath,!1)}catch(r){t=Ie(r)}if(!n&&(t||await jn(this.backupPath)))try{let r=await this.readSnapshot(this.backupPath,!0);r&&(this.onRecovery?.({snapshotPath:this.snapshotPath,backupPath:this.backupPath,reason:t?.message??"primary snapshot missing"}),n=r,i=!0)}catch(r){throw t?new u("ARTIFACT_PERSISTENCE_CORRUPT","Artifact repository primary and backup snapshots are unreadable",{snapshotPath:this.snapshotPath,backupPath:this.backupPath},{cause:new AggregateError([t,Ie(r)])}):r}if(!n&&t)throw t;let o=n?.state??{schemaVersion:1,records:[]};return{repository:new B({now:this.now,idFactory:r=>`${r}_${(0,Ue.randomUUID)()}`,initialState:o}),generation:n?.generation??0,createdAt:n?.createdAt??this.now(),hasSnapshot:n!==void 0,recoveredFromBackup:i,...n?{sourceSnapshot:n}:{}}}async persist(t){let n=this.now(),o={...{schemaVersion:We,generation:t.generation,createdAt:t.createdAt,updatedAt:n,state:t.repository.exportState()},generation:t.generation+1},r=Mn(o),a=`${JSON.stringify(r,null,2)}
2
+ `,{encoding:"utf8",flag:"wx"})}function Pn(e,t){let n=_t(e);n?.pid!==t.pid||n.hostname!==t.hostname||(0,V.rmSync)(e,{force:!0})}function Tt(e,t,n){let i=xn(),o={schemaVersion:1,name:t,pid:process.pid,hostname:(0,Me.hostname)(),processStartedAt:Cn(),version:n,acquiredAt:i,updatedAt:i};try{St(e,o)}catch(r){if(r.code!=="EEXIST")throw r;let c=_t(e);if(c&&Vn(c))throw new Error(`${t} is already locked by PID ${c.pid} on ${c.hostname}.`);(0,V.rmSync)(e,{force:!0}),St(e,o)}return{record:o,release:()=>{Pn(e,o)}}}var kt="0.9.21";var We=1,$n="repository.v1.json",On=5e3,Dn=20,Fn=64*1024*1024,qe=class{directory;snapshotPath;backupPath;lockPath;now;lockTimeoutMs;lockRetryMs;maxSnapshotBytes;onRecovery;mutationTail=Promise.resolve();constructor(t){if(!t||typeof t.directory!="string"||t.directory.trim().length===0)throw new TypeError("Artifact repository directory is required");let n=t.snapshotFileName??$n;if((0,N.basename)(n)!==n||!/^[A-Za-z0-9_.-]+$/.test(n))throw new TypeError("Artifact snapshot filename must be a safe basename");this.directory=(0,N.resolve)(t.directory),this.snapshotPath=(0,N.join)(this.directory,n),this.backupPath=`${this.snapshotPath}.bak`,this.lockPath=`${this.snapshotPath}.lock`,this.now=t.now??(()=>new Date().toISOString()),this.lockTimeoutMs=He(t.lockTimeoutMs,On,100,6e4,"lockTimeoutMs"),this.lockRetryMs=He(t.lockRetryMs,Dn,1,1e3,"lockRetryMs"),this.maxSnapshotBytes=He(t.maxSnapshotBytes,Fn,1024,1024*1024*1024,"maxSnapshotBytes"),this.onRecovery=t.onRecovery}async create(t){return this.mutate(n=>n.create(t))}async createRevision(t,n){return this.mutate(i=>i.createRevision(t,n))}async get(t,n){return(await this.load()).repository.get(t,n)}async require(t,n){return(await this.load()).repository.require(t,n)}async list(t){return(await this.load()).repository.list(t)}async listRevisions(t){return(await this.load()).repository.listRevisions(t)}async transition(t){return this.mutate(n=>n.transition(t))}async appendReviewEvent(t){return this.mutate(n=>n.appendReviewEvent(t))}async inspectSnapshot(){return this.readSnapshot(this.snapshotPath,!0)}async mutate(t){return this.enqueueMutation(async()=>{let n=await this.acquireLock();try{let i=await this.load(),o=await t(i.repository);return await this.persist(i),o}finally{n.release()}})}async enqueueMutation(t){let n=this.mutationTail.then(t,t);return this.mutationTail=n.then(()=>{},()=>{}),n}async acquireLock(){let t=Date.now(),n;for(;Date.now()-t<=this.lockTimeoutMs;)try{return Tt(this.lockPath,`artifact-repository:${(0,N.basename)(this.snapshotPath)}`,kt)}catch(i){if(!(i instanceof Error)||!/already locked by PID/.test(i.message))throw i;n=i,await qn(this.lockRetryMs)}throw new u("ARTIFACT_PERSISTENCE_LOCKED",`Artifact repository remained locked for ${this.lockTimeoutMs}ms`,{snapshotPath:this.snapshotPath},{cause:n})}async load(){let t,n,i=!1;try{n=await this.readSnapshot(this.snapshotPath,!1)}catch(r){t=Ie(r)}if(!n&&(t||await jn(this.backupPath)))try{let r=await this.readSnapshot(this.backupPath,!0);r&&(this.onRecovery?.({snapshotPath:this.snapshotPath,backupPath:this.backupPath,reason:t?.message??"primary snapshot missing"}),n=r,i=!0)}catch(r){throw t?new u("ARTIFACT_PERSISTENCE_CORRUPT","Artifact repository primary and backup snapshots are unreadable",{snapshotPath:this.snapshotPath,backupPath:this.backupPath},{cause:new AggregateError([t,Ie(r)])}):r}if(!n&&t)throw t;let o=n?.state??{schemaVersion:1,records:[]};return{repository:new B({now:this.now,idFactory:r=>`${r}_${(0,Ue.randomUUID)()}`,initialState:o}),generation:n?.generation??0,createdAt:n?.createdAt??this.now(),hasSnapshot:n!==void 0,recoveredFromBackup:i,...n?{sourceSnapshot:n}:{}}}async persist(t){let n=this.now(),o={...{schemaVersion:We,generation:t.generation,createdAt:t.createdAt,updatedAt:n,state:t.repository.exportState()},generation:t.generation+1},r=Mn(o),a=`${JSON.stringify(r,null,2)}
3
3
  `;if(Buffer.byteLength(a,"utf8")>this.maxSnapshotBytes)throw new u("ARTIFACT_PERSISTENCE_IO",`Artifact repository snapshot exceeds ${this.maxSnapshotBytes} bytes`,{snapshotPath:this.snapshotPath,maxSnapshotBytes:this.maxSnapshotBytes});await(0,b.mkdir)(this.directory,{recursive:!0,mode:448}),t.hasSnapshot&&!t.recoveredFromBackup&&t.sourceSnapshot&&await xt(this.backupPath,`${JSON.stringify(t.sourceSnapshot,null,2)}
4
4
  `),await xt(this.snapshotPath,a)}async readSnapshot(t,n){let i;try{i=await(0,b.stat)(t)}catch(o){if(!n&&Je(o,"ENOENT")||n&&Je(o,"ENOENT"))return;throw Be("Unable to inspect artifact repository snapshot",t,o)}if(!i.isFile()||i.size>this.maxSnapshotBytes)throw new u("ARTIFACT_PERSISTENCE_CORRUPT","Artifact repository snapshot is not a bounded regular file",{snapshotPath:t,sizeBytes:i.size,maxSnapshotBytes:this.maxSnapshotBytes});try{let o=await(0,b.readFile)(t);if(o.byteLength>this.maxSnapshotBytes)throw new Error("snapshot grew beyond the configured size limit while reading");return Ln(JSON.parse(o.toString("utf8")),t)}catch(o){throw o instanceof u?o:Be("Unable to parse artifact repository snapshot",t,o,!0)}}};function Ln(e,t){if(!je(e)||e.schemaVersion!==We||!Number.isInteger(e.generation)||e.generation<0||typeof e.createdAt!="string"||!Number.isFinite(Date.parse(e.createdAt))||typeof e.updatedAt!="string"||!Number.isFinite(Date.parse(e.updatedAt))||!je(e.state)||e.state.schemaVersion!==1||!Array.isArray(e.state.records)||!je(e.checksum)||e.checksum.algorithm!=="sha256"||typeof e.checksum.value!="string")throw new u("ARTIFACT_PERSISTENCE_CORRUPT","Artifact repository snapshot envelope is invalid",{snapshotPath:t});let n=e,i=Hn(n),o=Ct(i);if(n.checksum.value!==o)throw new u("ARTIFACT_PERSISTENCE_CORRUPT","Artifact repository snapshot checksum does not match its payload",{snapshotPath:t});return new B({initialState:n.state}),structuredClone(n)}function Mn(e){return{...structuredClone(e),checksum:{algorithm:"sha256",value:Ct(e)}}}function Hn(e){return{schemaVersion:e.schemaVersion,generation:e.generation,createdAt:e.createdAt,updatedAt:e.updatedAt,state:e.state}}function Ct(e){return T(JSON.stringify(e)).value}async function xt(e,t){await(0,b.mkdir)((0,N.dirname)(e),{recursive:!0,mode:448});let n=`${e}.tmp.${process.pid}.${(0,Ue.randomUUID)()}`,i;try{i=await(0,b.open)(n,"wx",384),await i.writeFile(t,{encoding:"utf8"}),await i.sync(),await i.close(),i=void 0,await(0,b.rename)(n,e);try{let o=await(0,b.open)((0,N.dirname)(e),"r");try{await o.sync()}finally{await o.close()}}catch{}}finally{i&&await i.close().catch(()=>{}),await(0,b.unlink)(n).catch(()=>{})}}function He(e,t,n,i,o){if(e===void 0)return t;if(!Number.isInteger(e)||e<n||e>i)throw new TypeError(`${o} must be an integer between ${n} and ${i}`);return e}function je(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Je(e,t){return e instanceof Error&&e.code===t}async function jn(e){try{return(await(0,b.stat)(e)).isFile()}catch(t){if(Je(t,"ENOENT"))return!1;throw Be("Unable to inspect artifact repository backup",e,t)}}function Ie(e){return e instanceof Error?e:new Error(String(e))}function Be(e,t,n,i=!1){return new u(i?"ARTIFACT_PERSISTENCE_CORRUPT":"ARTIFACT_PERSISTENCE_IO",`${e}: ${Ie(n).message}`,{snapshotPath:t},{cause:Ie(n)})}function qn(e){return new Promise(t=>setTimeout(t,e))}var ze=require("node:buffer");var Jn=16*1024*1024,Bn=5e3,Un=1e5,Wn=1e6,zn=/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@(?:\s?(.*))?$/,X=class extends Error{constructor(n,i){super(i===void 0?n:`${n} at diff line ${i}`);this.line=i;this.name="XenoDiffParseError"}line;code="XENO_DIFF_INVALID"};function Ke(e,t={}){if(typeof e!="string")throw new TypeError("Unified diff must be a string");let n=we(t.maxBytes,Jn,1024,256*1024*1024,"maxBytes"),i=we(t.maxFiles,Bn,1,1e5,"maxFiles"),o=we(t.maxHunks,Un,1,1e6,"maxHunks"),r=we(t.maxLines,Wn,1,5e6,"maxLines");if(ze.Buffer.byteLength(e,"utf8")>n)throw new X(`Unified diff exceeds ${n} bytes`);let a=e.replace(/\r\n/g,`
5
5
  `).replace(/\r/g,`
@@ -1,5 +1,5 @@
1
1
  var h=1,oe=1,He=["plan","requirements","design","task-graph","patch","diff","file","document","diagram","screenshot","recording","browser-snapshot","test-report","review-report","security-report","performance-report","release-report","sbom","provenance","attestation"],je=["draft","pending_review","approved","rejected","superseded","archived"],qe=["public","internal","confidential","restricted"],Je=["agent","tool","user","system","integration"],se=["requirement","design-decision","risk","task","agent","run","tool-call","edit","commit","test-case","test-run","finding","approval","artifact","release","claim"],ae=["decomposes","depends_on","implements","changes","tests","verifies","finds","fixes","reviews","approves","rejects","supersedes","derived_from","produced_by","supports_claim","contradicts_claim","released_as"];import{Buffer as Be}from"node:buffer";import{createHash as zt}from"node:crypto";function _(e){return{algorithm:"sha256",value:zt("sha256").update(e).digest("hex")}}function S(e){return JSON.stringify(Ee(e,new Set))}function T(e){return _(S(e))}function Ee(e,t){if(e===null||typeof e!="object"){if(typeof e=="number"&&!Number.isFinite(e))throw new TypeError("Artifact JSON cannot contain non-finite numbers");return e}if(t.has(e))throw new TypeError("Artifact JSON cannot contain cycles");if(t.add(e),Array.isArray(e)){let i=e.map(o=>Ee(o,t));return t.delete(e),i}let n={};for(let i of Object.keys(e).sort((o,r)=>o.localeCompare(r))){let o=e[i];if(o===void 0)throw new TypeError(`Artifact JSON property ${i} is undefined`);n[i]=Ee(o,t)}return t.delete(e),n}var Kt=/^[a-z0-9][a-z0-9._/-]{0,127}$/,Re="custom:";function $(e,t=Re){return e.startsWith(t)?Kt.test(e.slice(t.length)):!1}var M=class extends Error{code="ARTIFACT_INVALID";issues;constructor(t,n){super(t),this.name="XenoArtifactValidationError",this.issues=n.map(i=>({...i}))}},Xe=class extends Error{constructor(n,i){super(`Artifact state cannot transition from ${n} to ${i}`);this.fromState=n;this.toState=i;this.name="XenoArtifactStateTransitionError"}fromState;toState;code="ARTIFACT_STATE_TRANSITION_INVALID"},Gt={draft:["pending_review","superseded","archived"],pending_review:["approved","rejected","superseded","archived"],approved:["superseded","archived"],rejected:["superseded","archived"],superseded:["archived"],archived:[]},Yt="[\\u0000-\\u001f\\u007f]",Zt=new RegExp(Yt),Ue=/^[a-f0-9]{64}$/,Qt=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,en=new Set(je),tn=new Set(qe),nn=new Set(Je),rn=new Set(He),on=new Set(se),sn=new Set(ae);function p(e,t,n,i){e.push({path:t,code:n,message:i})}function l(e,t,n,i=1024){return typeof e!="string"||e.trim().length===0?(p(n,t,"required_string","Value must be a non-empty string"),!1):(e.length>i&&p(n,t,"string_too_long",`Value must not exceed ${i} characters`),Zt.test(e)&&p(n,t,"control_character","Value must not contain control characters"),!0)}function B(e,t,n){e!==void 0&&(!Number.isFinite(Date.parse(e))||!e.includes("T"))&&p(n,t,"invalid_timestamp","Value must be an ISO 8601 timestamp")}function O(e,t,n,i){typeof e=="string"&&e.startsWith(t)&&($(e,t)||p(i,n,"invalid_custom_name",`Custom name after ${t} is invalid`))}function We(e,t,n){if(!e||typeof e!="object"){p(n,t,"missing_actor","Actor is required");return}l(e.kind,`${t}.kind`,n,64),nn.has(e.kind)||p(n,`${t}.kind`,"unknown_actor_kind","Actor kind is not supported"),l(e.id,`${t}.id`,n,512),e?.displayName!==void 0&&l(e.displayName,`${t}.displayName`,n,512),e?.profileFingerprint!==void 0&&!/^[a-f0-9]{64}$/.test(e.profileFingerprint)&&p(n,`${t}.profileFingerprint`,"invalid_fingerprint","Profile fingerprint must be 64 lowercase hexadecimal characters")}function Se(e,t,n){if(!e||typeof e!="object"){p(n,t,"invalid_anchor","Anchor must be an object");return}switch(e.kind){case"file":l(e.path,`${t}.path`,n,4096);break;case"source-line":l(e.path,`${t}.path`,n,4096),(!Number.isInteger(e.startLine)||e.startLine<1)&&p(n,`${t}.startLine`,"invalid_line","startLine must be a positive integer"),e.endLine!==void 0&&(!Number.isInteger(e.endLine)||e.endLine<e.startLine)&&p(n,`${t}.endLine`,"invalid_line_range","endLine must be greater than or equal to startLine");break;case"diff-hunk":l(e.path,`${t}.path`,n,4096),l(e.hunkId,`${t}.hunkId`,n,512);break;case"symbol":l(e.path,`${t}.path`,n,4096),l(e.symbol,`${t}.symbol`,n,1024);break;case"dom-node":l(e.pageId,`${t}.pageId`,n,512),!e.selector&&!e.accessibilityId&&!e.snapshotArtifactId&&p(n,t,"missing_dom_locator","DOM anchors require a selector, accessibility ID, or snapshot artifact ID");break;case"timeline":l(e.recordingArtifactId,`${t}.recordingArtifactId`,n,512),(!Number.isFinite(e.startMs)||e.startMs<0)&&p(n,`${t}.startMs`,"invalid_time","startMs must be a non-negative finite number"),e.endMs!==void 0&&(!Number.isFinite(e.endMs)||e.endMs<e.startMs)&&p(n,`${t}.endMs`,"invalid_time_range","endMs must be greater than or equal to startMs");break;case"region":l(e.mediaArtifactId,`${t}.mediaArtifactId`,n,512),[e.x,e.y,e.width,e.height].every(Number.isFinite)?(e.width<=0||e.height<=0)&&p(n,t,"invalid_region_size","Region width and height must be positive"):p(n,t,"invalid_region","Region coordinates must be finite numbers");break;case"artifact":l(e.artifactId,`${t}.artifactId`,n,512);break;default:typeof e.kind!="string"||!e.kind.startsWith("custom:")?p(n,`${t}.kind`,"unknown_anchor","Anchor kind is not supported"):O(e.kind,"custom:",`${t}.kind`,n)}}function U(e,t,n,i){if(!(e===null||typeof e=="string"||typeof e=="boolean")){if(typeof e=="number"){Number.isFinite(e)||p(n,t,"non_finite_number","JSON numbers must be finite");return}if(typeof e!="object"){p(n,t,"non_json_value","Value must be JSON-serializable");return}if(i.has(e)){p(n,t,"cyclic_value","Value must not contain cycles");return}if(i.add(e),Array.isArray(e))e.forEach((o,r)=>U(o,`${t}[${r}]`,n,i));else for(let[o,r]of Object.entries(e))r===void 0?p(n,`${t}.${o}`,"undefined_value","Undefined is not valid JSON"):U(r,`${t}.${o}`,n,i);i.delete(e)}}function an(e){let t=[];if(!e||typeof e!="object")return[{path:"$",code:"invalid_artifact",message:"Artifact must be an object"}];if(e.schemaVersion!==1&&p(t,"schemaVersion","unsupported_schema",`schemaVersion must be ${1}`),l(e.artifactId,"artifactId",t,512),(!Number.isInteger(e.revision)||e.revision<1)&&p(t,"revision","invalid_revision","revision must be a positive integer"),l(e.kind,"kind",t,160),typeof e.kind=="string"&&!rn.has(e.kind)&&!e.kind.startsWith("custom:")&&p(t,"kind","unknown_artifact_kind","Artifact kind is not supported"),O(e.kind,"custom:","kind",t),l(e.title,"title",t,1024),e.description!==void 0&&l(e.description,"description",t,32768),l(e.state,"state",t,64),en.has(e.state)||p(t,"state","unknown_state","Artifact state is not supported"),l(e.createdAt,"createdAt",t,128),B(e.createdAt,"createdAt",t),B(e.updatedAt,"updatedAt",t),e.updatedAt&&Number.isFinite(Date.parse(e.createdAt))&&Date.parse(e.updatedAt)<Date.parse(e.createdAt)&&p(t,"updatedAt","timestamp_order","updatedAt must not precede createdAt"),l(e.mediaType,"mediaType",t,255),l(e.sensitivity,"sensitivity",t,64),tn.has(e.sensitivity)||p(t,"sensitivity","unknown_sensitivity","Sensitivity is not supported"),e.identity)for(let[i,o]of Object.entries(e.identity))o!==void 0&&l(o,`identity.${i}`,t,512);if(!e.content||typeof e.content!="object")p(t,"content","missing_content","content descriptor is required");else{!e.content.hash||typeof e.content.hash!="object"?p(t,"content.hash","missing_hash","content hash is required"):(l(e.content.hash.algorithm,"content.hash.algorithm",t,128),O(e.content.hash.algorithm,"custom:","content.hash.algorithm",t),typeof e.content.hash.algorithm=="string"&&e.content.hash.algorithm!=="sha256"&&!e.content.hash.algorithm.startsWith("custom:")&&p(t,"content.hash.algorithm","unknown_hash_algorithm","Hash algorithm is not supported"),l(e.content.hash.value,"content.hash.value",t,512),e.content.hash.algorithm==="sha256"&&!Ue.test(e.content.hash.value)&&p(t,"content.hash.value","invalid_sha256","SHA-256 hash must be 64 lowercase hexadecimal characters")),(!Number.isSafeInteger(e.content.sizeBytes)||e.content.sizeBytes<0)&&p(t,"content.sizeBytes","invalid_size","sizeBytes must be a non-negative safe integer");let i=e.content.storage;if(!i||typeof i!="object")p(t,"content.storage","missing_storage","storage reference is required");else if(i.type==="inline")if(i.text===void 0==(i.base64===void 0))p(t,"content.storage","invalid_inline_storage","Inline storage requires exactly one of text or base64");else{let o;i.text!==void 0?o=Be.from(i.text,"utf8"):i.base64!==void 0&&(Qt.test(i.base64)?o=Be.from(i.base64,"base64"):p(t,"content.storage.base64","invalid_base64","Inline base64 content is malformed")),o&&e.content.sizeBytes!==o.byteLength&&p(t,"content.sizeBytes","content_size_mismatch","sizeBytes does not match inline content"),o&&e.content.hash.algorithm==="sha256"&&_(o).value!==e.content.hash.value&&p(t,"content.hash.value","content_hash_mismatch","Hash does not match inline content")}else i.type==="file"?l(i.path,"content.storage.path",t,4096):i.type==="blob"?l(i.uri,"content.storage.uri",t,8192):i.type==="git"?(l(i.commit,"content.storage.commit",t,512),l(i.path,"content.storage.path",t,4096)):i.type==="url"?(l(i.url,"content.storage.url",t,8192),B(i.expiresAt,"content.storage.expiresAt",t)):i.type==="external"?(l(i.provider,"content.storage.provider",t,255),l(i.locator,"content.storage.locator",t,8192)):p(t,"content.storage.type","unknown_storage","Storage type is not supported");e.content.encoding!==void 0&&(typeof e.content.encoding!="string"||e.content.encoding!=="utf8"&&e.content.encoding!=="base64"&&e.content.encoding!=="binary"&&!e.content.encoding.startsWith("custom:"))&&p(t,"content.encoding","unknown_encoding","Content encoding is not supported"),O(e.content.encoding,"custom:","content.encoding",t)}!e.provenance||typeof e.provenance!="object"?p(t,"provenance","missing_provenance","provenance is required"):(We(e.provenance.producer,"provenance.producer",t),e.provenance.capabilityLeaseIds?.forEach((i,o)=>l(i,`provenance.capabilityLeaseIds[${o}]`,t,512)),e.provenance.sourceArtifactIds?.forEach((i,o)=>l(i,`provenance.sourceArtifactIds[${o}]`,t,512)),e.provenance.attributes&&U(e.provenance.attributes,"provenance.attributes",t,new Set));let n=new Set;return e.relationships?.forEach((i,o)=>{let r=`relationships[${o}]`;l(i.relation,`${r}.relation`,t,160),typeof i.relation=="string"&&!sn.has(i.relation)&&!i.relation.startsWith("custom:")&&p(t,`${r}.relation`,"unknown_relationship","Relationship type is not supported"),O(i.relation,"custom:",`${r}.relation`,t),l(i.target?.type,`${r}.target.type`,t,160),typeof i.target?.type=="string"&&!on.has(i.target.type)&&!i.target.type.startsWith("custom:")&&p(t,`${r}.target.type`,"unknown_reference_type","Evidence reference type is not supported"),O(i.target?.type,"custom:",`${r}.target.type`,t),l(i.target?.id,`${r}.target.id`,t,512);let a=`${i.relation}:${i.target?.type}:${i.target?.id}:${i.target?.revision??""}`;n.has(a)&&p(t,r,"duplicate_relationship","Duplicate relationship"),n.add(a),i.attributes&&U(i.attributes,`${r}.attributes`,t,new Set)}),e.anchors?.forEach((i,o)=>Se(i,`anchors[${o}]`,t)),e.revision===1&&e.predecessorRevision!==void 0&&p(t,"predecessorRevision","unexpected_predecessor","First revision cannot have a predecessor"),e.revision>1&&(!Number.isInteger(e.predecessorRevision)||(e.predecessorRevision??0)>=e.revision)&&p(t,"predecessorRevision","invalid_predecessor","Later revisions require an earlier predecessor revision"),B(e.retention?.retainUntil,"retention.retainUntil",t),e.retention?.legalHold!==void 0&&typeof e.retention.legalHold!="boolean"&&p(t,"retention.legalHold","invalid_boolean","legalHold must be a boolean"),e.extensions&&U(e.extensions,"extensions",t,new Set),t}function w(e){let t=an(e);if(t.length>0)throw new M("XENO artifact validation failed",t)}function cn(e,t){return Gt[e].includes(t)}function ce(e,t){if(!cn(e,t))throw new Xe(e,t)}function be(e,t){let n=[];return e.schemaVersion!==1&&p(n,"schemaVersion","unsupported_schema",`schemaVersion must be ${1}`),l(e.eventId,"eventId",n,512),l(e.artifactId,"artifactId",n,512),(!Number.isInteger(e.artifactRevision)||e.artifactRevision<1)&&p(n,"artifactRevision","invalid_revision","artifactRevision must be a positive integer"),(!Number.isInteger(e.sequence)||e.sequence<1)&&p(n,"sequence","invalid_sequence","sequence must be a positive integer"),l(e.recordedAt,"recordedAt",n,128),B(e.recordedAt,"recordedAt",n),We(e.actor,"actor",n),!e.artifactHash||typeof e.artifactHash!="object"?p(n,"artifactHash","missing_hash","Artifact hash is required"):(l(e.artifactHash.algorithm,"artifactHash.algorithm",n,128),O(e.artifactHash.algorithm,"custom:","artifactHash.algorithm",n),l(e.artifactHash.value,"artifactHash.value",n,512),e.artifactHash.algorithm==="sha256"&&!Ue.test(e.artifactHash.value)&&p(n,"artifactHash.value","invalid_sha256","SHA-256 hash must be 64 lowercase hexadecimal characters"),typeof e.artifactHash.algorithm=="string"&&e.artifactHash.algorithm!=="sha256"&&!e.artifactHash.algorithm.startsWith("custom:")&&p(n,"artifactHash.algorithm","unknown_hash_algorithm","Hash algorithm is not supported")),["review-requested","comment-added","comment-resolved","comment-reopened","decision-recorded","review-withdrawn"].includes(e.type)||p(n,"type","unknown_review_event","Review event type is not supported"),e.type==="comment-added"?(l(e.commentId,"commentId",n,512),l(e.body,"body",n,65536),e.anchor&&Se(e.anchor,"anchor",n)):e.type==="comment-resolved"||e.type==="comment-reopened"?l(e.commentId,"commentId",n,512):e.type==="decision-recorded"&&(["approved","rejected","changes_requested"].includes(e.decision)||p(n,"decision","unknown_review_decision","Review decision is not supported"),e.scope&&Se(e.scope,"scope",n)),t&&(e.artifactId!==t.artifactId&&p(n,"artifactId","artifact_mismatch","Review event targets a different artifact"),e.artifactRevision!==t.revision&&p(n,"artifactRevision","revision_mismatch","Review event targets a different revision"),e.artifactHash&&(e.artifactHash.algorithm!==t.content.hash.algorithm||e.artifactHash.value!==t.content.hash.value)&&p(n,"artifactHash","hash_mismatch","Review event hash does not match the artifact revision")),n}function _e(e){let t="not_requested",n,i,o,r=0,a=new Set,c=new Set;for(let s of[...e].sort((d,f)=>d.sequence-f.sequence))o=s.recordedAt,s.type==="review-requested"?t="pending":s.type==="review-withdrawn"?t="withdrawn":s.type==="comment-added"?(a.add(s.commentId),c.delete(s.commentId),t==="not_requested"&&(t="pending")):s.type==="comment-resolved"?c.add(s.commentId):s.type==="comment-reopened"?c.delete(s.commentId):s.type==="decision-recorded"&&(s.scope?r+=1:(n=s.decision,i=s.eventId,t=s.decision));return{status:t,totalComments:a.size,unresolvedComments:[...a].filter(s=>!c.has(s)).length,...n?{latestDecision:n}:{},...i?{latestDecisionEventId:i}:{},...r>0?{scopedDecisionCount:r}:{},...o?{lastReviewedAt:o}:{}}}var Te=class extends Error{code="EVIDENCE_GRAPH_INVALID";issues;constructor(t){super("XENO evidence graph validation failed"),this.name="XenoEvidenceGraphValidationError",this.issues=t.map(n=>({...n}))}},dn=new Set(["depends_on","decomposes","supersedes"]),fn=new Set(se),pn=new Set(ae);function A(e,t,n,i){e.push({path:t,code:n,message:i})}function W(e){return e.includes("T")&&Number.isFinite(Date.parse(e))}function ze(e,t){return e.startsWith(Re)?$(e):t.has(e)}function un(e){let t=[];if(!e||typeof e!="object")return[{path:"$",code:"invalid_graph",message:"Evidence graph must be an object"}];e.schemaVersion!==1&&A(t,"schemaVersion","unsupported_schema",`schemaVersion must be ${1}`),(typeof e.graphId!="string"||e.graphId.trim().length===0)&&A(t,"graphId","required_string","graphId must be a non-empty string"),(!Number.isInteger(e.version)||e.version<1)&&A(t,"version","invalid_version","version must be a positive integer"),W(e.createdAt)||A(t,"createdAt","invalid_timestamp","createdAt must be an ISO 8601 timestamp"),W(e.updatedAt)||A(t,"updatedAt","invalid_timestamp","updatedAt must be an ISO 8601 timestamp"),W(e.createdAt)&&W(e.updatedAt)&&Date.parse(e.updatedAt)<Date.parse(e.createdAt)&&A(t,"updatedAt","timestamp_order","updatedAt must not precede createdAt");let n=new Map;Array.isArray(e.nodes)||A(t,"nodes","invalid_nodes","nodes must be an array"),(Array.isArray(e.nodes)?e.nodes:[]).forEach((f,g)=>{let I=`nodes[${g}]`;typeof f.id!="string"||f.id.trim().length===0?A(t,`${I}.id`,"required_string","Node ID must be a non-empty string"):n.has(f.id)?A(t,`${I}.id`,"duplicate_node",`Node ID ${f.id} is duplicated`):n.set(f.id,f),(typeof f.type!="string"||!ze(f.type,fn))&&A(t,`${I}.type`,"invalid_node_type","Node type is invalid"),f.artifactRevision!==void 0&&(!Number.isInteger(f.artifactRevision)||f.artifactRevision<1)&&A(t,`${I}.artifactRevision`,"invalid_revision","artifactRevision must be a positive integer")});let i=new Set,o=new Set;Array.isArray(e.edges)||A(t,"edges","invalid_edges","edges must be an array"),(Array.isArray(e.edges)?e.edges:[]).forEach((f,g)=>{let I=`edges[${g}]`;typeof f.id!="string"||f.id.trim().length===0?A(t,`${I}.id`,"required_string","Edge ID must be a non-empty string"):i.has(f.id)&&A(t,`${I}.id`,"duplicate_edge",`Edge ID ${f.id} is duplicated`),i.add(f.id),(typeof f.type!="string"||!ze(f.type,pn))&&A(t,`${I}.type`,"invalid_edge_type","Edge type is invalid");let V=`${f.type}:${f.from}:${f.to}`;o.has(V)&&A(t,I,"duplicate_edge_identity","Equivalent evidence edge is duplicated"),o.add(V),n.has(f.from)||A(t,`${I}.from`,"dangling_reference",`Source node ${f.from} does not exist`),n.has(f.to)||A(t,`${I}.to`,"dangling_reference",`Target node ${f.to} does not exist`),f.from===f.to&&A(t,I,"self_edge","Evidence edges cannot point to the same node"),W(f.createdAt)||A(t,`${I}.createdAt`,"invalid_timestamp","createdAt must be an ISO 8601 timestamp")});let r=(Array.isArray(e.edges)?e.edges:[]).filter(f=>dn.has(f.type)),a=new Map;for(let f of r){let g=a.get(f.from)??[];g.push(f.to),a.set(f.from,g)}let c=new Set,s=new Set,d=f=>{if(c.has(f))return!0;if(s.has(f))return!1;c.add(f);for(let g of a.get(f)??[])if(d(g))return!0;return c.delete(f),s.add(f),!1};for(let f of n.keys())if(d(f)){A(t,"edges","cyclic_graph","Dependency, decomposition, and supersession edges must be acyclic");break}return t}function z(e){let t=un(e);if(t.length>0)throw new Te(t)}var Ke=class{now;graph;constructor(t){if("schemaVersion"in t)z(t),this.now=()=>new Date().toISOString(),this.graph=de(t);else{this.now=t.now??(()=>new Date().toISOString());let n=this.now();this.graph={schemaVersion:1,graphId:t.graphId,version:1,createdAt:n,updatedAt:n,nodes:[],edges:[]},z(this.graph)}}addNode(t){let n=de(this.graph);return n.nodes.push(Ge(t)),this.touch(n),z(n),this.graph=n,this}addEdge(t){let n=de(this.graph);return n.edges.push(Ye(t)),this.touch(n),z(n),this.graph=n,this}build(){return z(this.graph),de(this.graph)}touch(t){t.version+=1,t.updatedAt=this.now()}};function Ge(e){return{...e,...e.attributes?{attributes:structuredClone(e.attributes)}:{}}}function Ye(e){return{...e,...e.producer?{producer:{...e.producer}}:{},...e.attributes?{attributes:structuredClone(e.attributes)}:{}}}function de(e){return{...e,nodes:e.nodes.map(Ge),edges:e.edges.map(Ye)}}var u=class extends Error{constructor(n,i,o,r){super(i,r);this.code=n;this.detail=o;this.name="XenoArtifactRepositoryError"}code;detail},G=class{records=new Map;currentRevisions=new Map;now;idFactory;eventIds=new Set;idCounter=0;constructor(t={}){this.now=t.now??(()=>new Date().toISOString()),this.idFactory=t.idFactory??(n=>(this.idCounter+=1,`${n}_${Date.now().toString(36)}_${this.idCounter.toString(36)}`)),t.initialState&&this.hydrate(t.initialState)}exportState(){let t=[...this.records.values()].flatMap(n=>[...n.values()]).sort(Ze).map(n=>({artifact:K(n.artifact),recordVersion:n.recordVersion,lifecycleEvents:structuredClone(n.lifecycleEvents),reviewEvents:structuredClone(n.reviewEvents)}));return{schemaVersion:1,records:t}}async create(t){if(w(t),this.assertInitialState(t),t.revision!==1)throw new u("ARTIFACT_REVISION_INVALID","A new artifact must begin at revision 1",{artifactId:t.artifactId,revision:t.revision});if(this.records.has(t.artifactId))throw new u("ARTIFACT_ALREADY_EXISTS",`Artifact ${t.artifactId} already exists`,{artifactId:t.artifactId});let n=K(t),i=this.createLifecycleEvent({artifact:n,sequence:1,actor:n.provenance.producer,fromState:null,toState:n.state,reason:"artifact-created"}),o={artifact:n,recordVersion:1,lifecycleEvents:[i],reviewEvents:[]};return this.records.set(n.artifactId,new Map([[n.revision,o]])),this.currentRevisions.set(n.artifactId,n.revision),D(o)}async createRevision(t,n={}){w(t),this.assertInitialState(t);let i=this.getMutable(t.artifactId);this.assertVersion(i,n.expectedRecordVersion);let o=i.artifact.revision+1;if(t.revision!==o||t.predecessorRevision!==i.artifact.revision)throw new u("ARTIFACT_REVISION_INVALID",`Revision ${t.revision} does not follow current revision ${i.artifact.revision}`,{artifactId:t.artifactId,currentRevision:i.artifact.revision,requestedRevision:t.revision});if(mn(t,i.artifact))throw new u("ARTIFACT_CONTENT_UNCHANGED","A new artifact revision must have a different content hash",{artifactId:t.artifactId,revision:t.revision});if(i.artifact.state==="archived")throw new u("ARTIFACT_REVISION_INVALID","Archived artifacts cannot receive new revisions",{artifactId:t.artifactId,revision:i.artifact.revision});if(i.artifact.state!=="superseded"){ce(i.artifact.state,"superseded");let s=this.now(),d=this.createLifecycleEvent({artifact:i.artifact,sequence:i.lifecycleEvents.length+1,actor:n.actor??t.provenance.producer,fromState:i.artifact.state,toState:"superseded",reason:n.reason??`superseded-by-revision-${t.revision}`,recordedAt:s});i.artifact.state="superseded",i.artifact.updatedAt=s,i.lifecycleEvents.push(d),i.recordVersion+=1}let r=K(t),a=this.createLifecycleEvent({artifact:r,sequence:1,actor:n.actor??r.provenance.producer,fromState:null,toState:r.state,reason:n.reason??`revision-created-from-${i.artifact.revision}`}),c={artifact:r,recordVersion:1,lifecycleEvents:[a],reviewEvents:[]};return this.records.get(r.artifactId)?.set(r.revision,c),this.currentRevisions.set(r.artifactId,r.revision),D(c)}async get(t,n){let i=this.records.get(t);if(!i)return;let o=n??this.currentRevisions.get(t);if(o===void 0)return;let r=i.get(o);return r?D(r):void 0}async require(t,n){let i=await this.get(t,n);if(!i)throw new u("ARTIFACT_NOT_FOUND",`Artifact ${t}${n===void 0?"":` revision ${n}`} was not found`,{artifactId:t,...n===void 0?{}:{revision:n}});return i}async list(t={}){let n=[];for(let[i,o]of this.records)if(!(t.artifactIds&&!t.artifactIds.includes(i)))if(t.includeSuperseded)n.push(...o.values());else{let r=this.currentRevisions.get(i);if(r!==void 0){let a=o.get(r);a&&n.push(a)}}return n.filter(i=>vn(i.artifact,t)).sort(Ze).map(D)}async listRevisions(t){let n=this.records.get(t);return n?[...n.values()].sort((i,o)=>i.artifact.revision-o.artifact.revision).map(D):[]}async transition(t){let n=this.getMutable(t.artifactId,t.revision);if(this.assertVersion(n,t.expectedRecordVersion),ce(n.artifact.state,t.toState),t.toState==="approved"||t.toState==="rejected"){let a=t.reviewEventId?n.reviewEvents.find(s=>s.eventId===t.reviewEventId&&s.type==="decision-recorded"):void 0,c=_e(n.reviewEvents);if(!a||a.decision!==t.toState||c.latestDecisionEventId!==a.eventId)throw new u("ARTIFACT_REVIEW_DECISION_REQUIRED",`Transition to ${t.toState} requires a matching decision event`,{artifactId:t.artifactId,revision:n.artifact.revision});if(t.toState==="approved"&&c.unresolvedComments>0)throw new u("ARTIFACT_UNRESOLVED_COMMENTS",`Artifact has ${c.unresolvedComments} unresolved review comment(s)`,{artifactId:t.artifactId,revision:n.artifact.revision,unresolvedComments:c.unresolvedComments})}let i=this.now(),o=n.artifact.state,r=this.createLifecycleEvent({artifact:n.artifact,sequence:n.lifecycleEvents.length+1,actor:t.actor,fromState:o,toState:t.toState,reason:t.reason,reviewEventId:t.reviewEventId,recordedAt:i});return n.artifact.state=t.toState,n.artifact.updatedAt=i,n.lifecycleEvents.push(r),n.recordVersion+=1,D(n)}async appendReviewEvent(t){let n=t.event,i=this.getMutable(n.artifactId,n.artifactRevision);if(this.assertVersion(i,t.expectedRecordVersion),i.artifact.state==="archived"||i.artifact.state==="superseded")throw new u("ARTIFACT_REVIEW_INVALID",`Cannot append review events to a ${i.artifact.state} artifact revision`,{artifactId:n.artifactId,revision:n.artifactRevision});if(this.assertReviewCommentState(i,n),(n.type==="review-requested"||n.type==="review-withdrawn"||n.type==="decision-recorded")&&i.artifact.state!=="pending_review")throw new u("ARTIFACT_REVIEW_INVALID",`${n.type} requires an artifact in pending_review state`,{artifactId:n.artifactId,revision:n.artifactRevision});let o={...structuredClone(n),schemaVersion:1,eventId:this.nextEventId("review_event"),sequence:i.reviewEvents.length+1,recordedAt:this.now()},r=be(o,i.artifact);if(r.length>0)throw new M("XENO artifact review event validation failed",r);return i.reviewEvents.push(o),i.recordVersion+=1,D(i)}getMutable(t,n){let i=this.records.get(t),o=n??this.currentRevisions.get(t),r=o===void 0?void 0:i?.get(o);if(!r)throw new u("ARTIFACT_NOT_FOUND",`Artifact ${t}${n===void 0?"":` revision ${n}`} was not found`,{artifactId:t,...n===void 0?{}:{revision:n}});return r}assertVersion(t,n){if(n!==void 0&&n!==t.recordVersion)throw new u("ARTIFACT_CONFLICT",`Expected record version ${n}, found ${t.recordVersion}`,{artifactId:t.artifact.artifactId,revision:t.artifact.revision,expectedRecordVersion:n,actualRecordVersion:t.recordVersion})}assertInitialState(t){if(t.state!=="draft"&&t.state!=="pending_review")throw new u("ARTIFACT_REVISION_INVALID","New artifact revisions must begin in draft or pending_review state",{artifactId:t.artifactId,revision:t.revision})}assertReviewCommentState(t,n){if(n.type==="comment-added"){if(t.reviewEvents.some(r=>r.type==="comment-added"&&r.commentId===n.commentId))throw new u("ARTIFACT_REVIEW_INVALID",`Comment ${n.commentId} already exists`);if(n.parentCommentId&&!t.reviewEvents.some(r=>r.type==="comment-added"&&r.commentId===n.parentCommentId))throw new u("ARTIFACT_REVIEW_INVALID",`Parent comment ${n.parentCommentId} does not exist`);return}if(n.type!=="comment-resolved"&&n.type!=="comment-reopened")return;if(!t.reviewEvents.some(r=>r.type==="comment-added"&&r.commentId===n.commentId))throw new u("ARTIFACT_REVIEW_INVALID",`Comment ${n.commentId} does not exist`);let o=hn(t.reviewEvents,n.commentId);if(n.type==="comment-resolved"&&o.resolved)throw new u("ARTIFACT_REVIEW_INVALID",`Comment ${n.commentId} is already resolved`);if(n.type==="comment-reopened"&&!o.resolved)throw new u("ARTIFACT_REVIEW_INVALID",`Comment ${n.commentId} is not resolved`)}createLifecycleEvent(t){return{schemaVersion:1,eventId:this.nextEventId("artifact_event"),artifactId:t.artifact.artifactId,revision:t.artifact.revision,sequence:t.sequence,recordedAt:t.recordedAt??this.now(),actor:{...t.actor},fromState:t.fromState,toState:t.toState,...t.reason?{reason:t.reason}:{},...t.reviewEventId?{reviewEventId:t.reviewEventId}:{}}}nextEventId(t){let n=this.idFactory(t);if(typeof n!="string"||n.trim().length===0||this.eventIds.has(n))throw new u("ARTIFACT_CONFLICT",`Event ID factory produced an invalid or duplicate ${t} ID`);return this.eventIds.add(n),n}hydrate(t){if(t.schemaVersion!==1||!Array.isArray(t.records))throw new u("ARTIFACT_REVISION_INVALID","Artifact repository state has an unsupported schema or record collection");let n=[...t.records].sort((i,o)=>i.artifact.artifactId.localeCompare(o.artifact.artifactId)||i.artifact.revision-o.artifact.revision);for(let i of n){let o=ln(i,this.eventIds),r=this.records.get(o.artifact.artifactId);if(r||(r=new Map,this.records.set(o.artifact.artifactId,r)),r.has(o.artifact.revision))throw new u("ARTIFACT_REVISION_INVALID",`Duplicate persisted revision ${o.artifact.artifactId}:${o.artifact.revision}`);r.set(o.artifact.revision,o),this.currentRevisions.set(o.artifact.artifactId,o.artifact.revision)}for(let[i,o]of this.records){let r=[...o.values()].sort((a,c)=>a.artifact.revision-c.artifact.revision);for(let a=0;a<r.length;a+=1){let c=r[a],s=a+1;if(c.artifact.revision!==s)throw new u("ARTIFACT_REVISION_INVALID",`Persisted artifact ${i} is missing revision ${s}`);if(a===0&&c.artifact.predecessorRevision!==void 0)throw new u("ARTIFACT_REVISION_INVALID",`Initial revision for ${i} cannot declare a predecessor`);if(a>0&&c.artifact.predecessorRevision!==s-1)throw new u("ARTIFACT_REVISION_INVALID",`Persisted revision ${i}:${s} has an invalid predecessor`);if(a<r.length-1&&c.artifact.state!=="superseded")throw new u("ARTIFACT_REVISION_INVALID",`Non-current revision ${i}:${s} must be superseded`)}}}};function ln(e,t){if(w(e.artifact),!Number.isInteger(e.recordVersion)||e.recordVersion<1)throw new u("ARTIFACT_REVISION_INVALID","Persisted artifact recordVersion must be a positive integer",{artifactId:e.artifact.artifactId,revision:e.artifact.revision});if(!Array.isArray(e.lifecycleEvents)||e.lifecycleEvents.length===0||!Array.isArray(e.reviewEvents))throw new u("ARTIFACT_REVISION_INVALID","Persisted artifact records require lifecycle and review event arrays",{artifactId:e.artifact.artifactId,revision:e.artifact.revision});let n=e.lifecycleEvents.length+e.reviewEvents.length;if(e.recordVersion!==n)throw new u("ARTIFACT_REVISION_INVALID",`Persisted record version ${e.recordVersion} does not match ${n} mutations`,{artifactId:e.artifact.artifactId,revision:e.artifact.revision});let i=null;for(let r=0;r<e.lifecycleEvents.length;r+=1){let a=e.lifecycleEvents[r];if(a.schemaVersion!==1||a.artifactId!==e.artifact.artifactId||a.revision!==e.artifact.revision||a.sequence!==r+1||a.fromState!==i||typeof a.eventId!="string"||a.eventId.length===0||t.has(a.eventId)||!Number.isFinite(Date.parse(a.recordedAt)))throw new u("ARTIFACT_REVISION_INVALID",`Persisted lifecycle event ${r+1} is invalid`,{artifactId:e.artifact.artifactId,revision:e.artifact.revision});if(i===null){if(a.toState!=="draft"&&a.toState!=="pending_review")throw new u("ARTIFACT_REVISION_INVALID","A persisted artifact must begin in draft or pending_review state",{artifactId:e.artifact.artifactId,revision:e.artifact.revision})}else ce(i,a.toState);t.add(a.eventId),i=a.toState}if(i!==e.artifact.state)throw new u("ARTIFACT_REVISION_INVALID","Persisted artifact state does not match its lifecycle tail",{artifactId:e.artifact.artifactId,revision:e.artifact.revision});let o=new Map;for(let r=0;r<e.reviewEvents.length;r+=1){let a=e.reviewEvents[r];if(a.sequence!==r+1||t.has(a.eventId))throw new u("ARTIFACT_REVIEW_INVALID",`Persisted review event ${r+1} has an invalid sequence or duplicate ID`,{artifactId:e.artifact.artifactId,revision:e.artifact.revision});let c=be(a,e.artifact);if(c.length>0)throw new M("Persisted XENO artifact review event validation failed",c);if(a.type==="comment-added"){if(o.has(a.commentId)||a.parentCommentId!==void 0&&!o.has(a.parentCommentId))throw new u("ARTIFACT_REVIEW_INVALID",`Persisted comment ${a.commentId} has an invalid identity or parent`);o.set(a.commentId,!1)}else if(a.type==="comment-resolved"||a.type==="comment-reopened"){let s=o.get(a.commentId);if(s===void 0||a.type==="comment-resolved"&&s||a.type==="comment-reopened"&&!s)throw new u("ARTIFACT_REVIEW_INVALID",`Persisted comment transition for ${a.commentId} is invalid`);o.set(a.commentId,a.type==="comment-resolved")}t.add(a.eventId)}return{artifact:K(e.artifact),recordVersion:e.recordVersion,lifecycleEvents:structuredClone(e.lifecycleEvents),reviewEvents:structuredClone(e.reviewEvents)}}function mn(e,t){return e.content.hash.algorithm===t.content.hash.algorithm&&e.content.hash.value===t.content.hash.value}function vn(e,t){return!(t.kinds&&!t.kinds.includes(e.kind)||t.states&&!t.states.includes(e.state)||t.runId&&e.identity?.runId!==t.runId||t.sessionId&&e.identity?.sessionId!==t.sessionId||t.turnId&&e.identity?.turnId!==t.turnId||t.taskId&&e.identity?.taskId!==t.taskId||t.workspaceId&&e.identity?.workspaceId!==t.workspaceId||t.repositoryId&&e.identity?.repositoryId!==t.repositoryId||t.producerId&&e.provenance.producer.id!==t.producerId||t.sensitivity&&!t.sensitivity.includes(e.sensitivity))}function Ze(e,t){return e.artifact.createdAt.localeCompare(t.artifact.createdAt)||e.artifact.artifactId.localeCompare(t.artifact.artifactId)||e.artifact.revision-t.artifact.revision}function hn(e,t){let n=!1;for(let i of e)(i.type==="comment-resolved"||i.type==="comment-reopened")&&i.commentId===t&&(n=i.type==="comment-resolved");return{resolved:n}}function K(e){return structuredClone(e)}function D(e){return{artifact:K(e.artifact),recordVersion:e.recordVersion,etag:`${e.artifact.artifactId}:${e.artifact.revision}:${e.recordVersion}`,lifecycleEvents:structuredClone(e.lifecycleEvents),reviewEvents:structuredClone(e.reviewEvents),reviewSummary:_e(e.reviewEvents)}}import{randomUUID as ft}from"node:crypto";import{mkdir as pt,open as ot,readFile as bn,rename as _n,stat as ut,unlink as Tn}from"node:fs/promises";import{basename as st,dirname as at,join as kn,resolve as xn}from"node:path";import{mkdirSync as gn,readFileSync as An,rmSync as et,writeFileSync as yn}from"node:fs";import{hostname as tt}from"node:os";import{dirname as In}from"node:path";function wn(){return new Date().toISOString()}function En(){return new Date(Date.now()-Math.floor(process.uptime()*1e3)).toISOString()}function nt(e){try{return JSON.parse(An(e,"utf8"))}catch{return null}}function Rn(e){if(!e||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}function Xn(e){return e.hostname!==tt()?!0:Rn(e.pid)}function Qe(e,t){gn(In(e),{recursive:!0}),yn(e,JSON.stringify(t,null,2)+`
2
- `,{encoding:"utf8",flag:"wx"})}function Sn(e,t){let n=nt(e);n?.pid!==t.pid||n.hostname!==t.hostname||et(e,{force:!0})}function it(e,t,n){let i=wn(),o={schemaVersion:1,name:t,pid:process.pid,hostname:tt(),processStartedAt:En(),version:n,acquiredAt:i,updatedAt:i};try{Qe(e,o)}catch(r){if(r.code!=="EEXIST")throw r;let c=nt(e);if(c&&Xn(c))throw new Error(`${t} is already locked by PID ${c.pid} on ${c.hostname}.`);et(e,{force:!0}),Qe(e,o)}return{record:o,release:()=>{Sn(e,o)}}}var rt="0.9.20";var lt=1,Cn="repository.v1.json",Nn=5e3,Vn=20,Pn=64*1024*1024,ct=class{directory;snapshotPath;backupPath;lockPath;now;lockTimeoutMs;lockRetryMs;maxSnapshotBytes;onRecovery;mutationTail=Promise.resolve();constructor(t){if(!t||typeof t.directory!="string"||t.directory.trim().length===0)throw new TypeError("Artifact repository directory is required");let n=t.snapshotFileName??Cn;if(st(n)!==n||!/^[A-Za-z0-9_.-]+$/.test(n))throw new TypeError("Artifact snapshot filename must be a safe basename");this.directory=xn(t.directory),this.snapshotPath=kn(this.directory,n),this.backupPath=`${this.snapshotPath}.bak`,this.lockPath=`${this.snapshotPath}.lock`,this.now=t.now??(()=>new Date().toISOString()),this.lockTimeoutMs=ke(t.lockTimeoutMs,Nn,100,6e4,"lockTimeoutMs"),this.lockRetryMs=ke(t.lockRetryMs,Vn,1,1e3,"lockRetryMs"),this.maxSnapshotBytes=ke(t.maxSnapshotBytes,Pn,1024,1024*1024*1024,"maxSnapshotBytes"),this.onRecovery=t.onRecovery}async create(t){return this.mutate(n=>n.create(t))}async createRevision(t,n){return this.mutate(i=>i.createRevision(t,n))}async get(t,n){return(await this.load()).repository.get(t,n)}async require(t,n){return(await this.load()).repository.require(t,n)}async list(t){return(await this.load()).repository.list(t)}async listRevisions(t){return(await this.load()).repository.listRevisions(t)}async transition(t){return this.mutate(n=>n.transition(t))}async appendReviewEvent(t){return this.mutate(n=>n.appendReviewEvent(t))}async inspectSnapshot(){return this.readSnapshot(this.snapshotPath,!0)}async mutate(t){return this.enqueueMutation(async()=>{let n=await this.acquireLock();try{let i=await this.load(),o=await t(i.repository);return await this.persist(i),o}finally{n.release()}})}async enqueueMutation(t){let n=this.mutationTail.then(t,t);return this.mutationTail=n.then(()=>{},()=>{}),n}async acquireLock(){let t=Date.now(),n;for(;Date.now()-t<=this.lockTimeoutMs;)try{return it(this.lockPath,`artifact-repository:${st(this.snapshotPath)}`,rt)}catch(i){if(!(i instanceof Error)||!/already locked by PID/.test(i.message))throw i;n=i,await Ln(this.lockRetryMs)}throw new u("ARTIFACT_PERSISTENCE_LOCKED",`Artifact repository remained locked for ${this.lockTimeoutMs}ms`,{snapshotPath:this.snapshotPath},{cause:n})}async load(){let t,n,i=!1;try{n=await this.readSnapshot(this.snapshotPath,!1)}catch(r){t=fe(r)}if(!n&&(t||await Fn(this.backupPath)))try{let r=await this.readSnapshot(this.backupPath,!0);r&&(this.onRecovery?.({snapshotPath:this.snapshotPath,backupPath:this.backupPath,reason:t?.message??"primary snapshot missing"}),n=r,i=!0)}catch(r){throw t?new u("ARTIFACT_PERSISTENCE_CORRUPT","Artifact repository primary and backup snapshots are unreadable",{snapshotPath:this.snapshotPath,backupPath:this.backupPath},{cause:new AggregateError([t,fe(r)])}):r}if(!n&&t)throw t;let o=n?.state??{schemaVersion:1,records:[]};return{repository:new G({now:this.now,idFactory:r=>`${r}_${ft()}`,initialState:o}),generation:n?.generation??0,createdAt:n?.createdAt??this.now(),hasSnapshot:n!==void 0,recoveredFromBackup:i,...n?{sourceSnapshot:n}:{}}}async persist(t){let n=this.now(),o={...{schemaVersion:lt,generation:t.generation,createdAt:t.createdAt,updatedAt:n,state:t.repository.exportState()},generation:t.generation+1},r=On(o),a=`${JSON.stringify(r,null,2)}
2
+ `,{encoding:"utf8",flag:"wx"})}function Sn(e,t){let n=nt(e);n?.pid!==t.pid||n.hostname!==t.hostname||et(e,{force:!0})}function it(e,t,n){let i=wn(),o={schemaVersion:1,name:t,pid:process.pid,hostname:tt(),processStartedAt:En(),version:n,acquiredAt:i,updatedAt:i};try{Qe(e,o)}catch(r){if(r.code!=="EEXIST")throw r;let c=nt(e);if(c&&Xn(c))throw new Error(`${t} is already locked by PID ${c.pid} on ${c.hostname}.`);et(e,{force:!0}),Qe(e,o)}return{record:o,release:()=>{Sn(e,o)}}}var rt="0.9.21";var lt=1,Cn="repository.v1.json",Nn=5e3,Vn=20,Pn=64*1024*1024,ct=class{directory;snapshotPath;backupPath;lockPath;now;lockTimeoutMs;lockRetryMs;maxSnapshotBytes;onRecovery;mutationTail=Promise.resolve();constructor(t){if(!t||typeof t.directory!="string"||t.directory.trim().length===0)throw new TypeError("Artifact repository directory is required");let n=t.snapshotFileName??Cn;if(st(n)!==n||!/^[A-Za-z0-9_.-]+$/.test(n))throw new TypeError("Artifact snapshot filename must be a safe basename");this.directory=xn(t.directory),this.snapshotPath=kn(this.directory,n),this.backupPath=`${this.snapshotPath}.bak`,this.lockPath=`${this.snapshotPath}.lock`,this.now=t.now??(()=>new Date().toISOString()),this.lockTimeoutMs=ke(t.lockTimeoutMs,Nn,100,6e4,"lockTimeoutMs"),this.lockRetryMs=ke(t.lockRetryMs,Vn,1,1e3,"lockRetryMs"),this.maxSnapshotBytes=ke(t.maxSnapshotBytes,Pn,1024,1024*1024*1024,"maxSnapshotBytes"),this.onRecovery=t.onRecovery}async create(t){return this.mutate(n=>n.create(t))}async createRevision(t,n){return this.mutate(i=>i.createRevision(t,n))}async get(t,n){return(await this.load()).repository.get(t,n)}async require(t,n){return(await this.load()).repository.require(t,n)}async list(t){return(await this.load()).repository.list(t)}async listRevisions(t){return(await this.load()).repository.listRevisions(t)}async transition(t){return this.mutate(n=>n.transition(t))}async appendReviewEvent(t){return this.mutate(n=>n.appendReviewEvent(t))}async inspectSnapshot(){return this.readSnapshot(this.snapshotPath,!0)}async mutate(t){return this.enqueueMutation(async()=>{let n=await this.acquireLock();try{let i=await this.load(),o=await t(i.repository);return await this.persist(i),o}finally{n.release()}})}async enqueueMutation(t){let n=this.mutationTail.then(t,t);return this.mutationTail=n.then(()=>{},()=>{}),n}async acquireLock(){let t=Date.now(),n;for(;Date.now()-t<=this.lockTimeoutMs;)try{return it(this.lockPath,`artifact-repository:${st(this.snapshotPath)}`,rt)}catch(i){if(!(i instanceof Error)||!/already locked by PID/.test(i.message))throw i;n=i,await Ln(this.lockRetryMs)}throw new u("ARTIFACT_PERSISTENCE_LOCKED",`Artifact repository remained locked for ${this.lockTimeoutMs}ms`,{snapshotPath:this.snapshotPath},{cause:n})}async load(){let t,n,i=!1;try{n=await this.readSnapshot(this.snapshotPath,!1)}catch(r){t=fe(r)}if(!n&&(t||await Fn(this.backupPath)))try{let r=await this.readSnapshot(this.backupPath,!0);r&&(this.onRecovery?.({snapshotPath:this.snapshotPath,backupPath:this.backupPath,reason:t?.message??"primary snapshot missing"}),n=r,i=!0)}catch(r){throw t?new u("ARTIFACT_PERSISTENCE_CORRUPT","Artifact repository primary and backup snapshots are unreadable",{snapshotPath:this.snapshotPath,backupPath:this.backupPath},{cause:new AggregateError([t,fe(r)])}):r}if(!n&&t)throw t;let o=n?.state??{schemaVersion:1,records:[]};return{repository:new G({now:this.now,idFactory:r=>`${r}_${ft()}`,initialState:o}),generation:n?.generation??0,createdAt:n?.createdAt??this.now(),hasSnapshot:n!==void 0,recoveredFromBackup:i,...n?{sourceSnapshot:n}:{}}}async persist(t){let n=this.now(),o={...{schemaVersion:lt,generation:t.generation,createdAt:t.createdAt,updatedAt:n,state:t.repository.exportState()},generation:t.generation+1},r=On(o),a=`${JSON.stringify(r,null,2)}
3
3
  `;if(Buffer.byteLength(a,"utf8")>this.maxSnapshotBytes)throw new u("ARTIFACT_PERSISTENCE_IO",`Artifact repository snapshot exceeds ${this.maxSnapshotBytes} bytes`,{snapshotPath:this.snapshotPath,maxSnapshotBytes:this.maxSnapshotBytes});await pt(this.directory,{recursive:!0,mode:448}),t.hasSnapshot&&!t.recoveredFromBackup&&t.sourceSnapshot&&await dt(this.backupPath,`${JSON.stringify(t.sourceSnapshot,null,2)}
4
4
  `),await dt(this.snapshotPath,a)}async readSnapshot(t,n){let i;try{i=await ut(t)}catch(o){if(!n&&Ce(o,"ENOENT")||n&&Ce(o,"ENOENT"))return;throw Ne("Unable to inspect artifact repository snapshot",t,o)}if(!i.isFile()||i.size>this.maxSnapshotBytes)throw new u("ARTIFACT_PERSISTENCE_CORRUPT","Artifact repository snapshot is not a bounded regular file",{snapshotPath:t,sizeBytes:i.size,maxSnapshotBytes:this.maxSnapshotBytes});try{let o=await bn(t);if(o.byteLength>this.maxSnapshotBytes)throw new Error("snapshot grew beyond the configured size limit while reading");return $n(JSON.parse(o.toString("utf8")),t)}catch(o){throw o instanceof u?o:Ne("Unable to parse artifact repository snapshot",t,o,!0)}}};function $n(e,t){if(!xe(e)||e.schemaVersion!==lt||!Number.isInteger(e.generation)||e.generation<0||typeof e.createdAt!="string"||!Number.isFinite(Date.parse(e.createdAt))||typeof e.updatedAt!="string"||!Number.isFinite(Date.parse(e.updatedAt))||!xe(e.state)||e.state.schemaVersion!==1||!Array.isArray(e.state.records)||!xe(e.checksum)||e.checksum.algorithm!=="sha256"||typeof e.checksum.value!="string")throw new u("ARTIFACT_PERSISTENCE_CORRUPT","Artifact repository snapshot envelope is invalid",{snapshotPath:t});let n=e,i=Dn(n),o=mt(i);if(n.checksum.value!==o)throw new u("ARTIFACT_PERSISTENCE_CORRUPT","Artifact repository snapshot checksum does not match its payload",{snapshotPath:t});return new G({initialState:n.state}),structuredClone(n)}function On(e){return{...structuredClone(e),checksum:{algorithm:"sha256",value:mt(e)}}}function Dn(e){return{schemaVersion:e.schemaVersion,generation:e.generation,createdAt:e.createdAt,updatedAt:e.updatedAt,state:e.state}}function mt(e){return _(JSON.stringify(e)).value}async function dt(e,t){await pt(at(e),{recursive:!0,mode:448});let n=`${e}.tmp.${process.pid}.${ft()}`,i;try{i=await ot(n,"wx",384),await i.writeFile(t,{encoding:"utf8"}),await i.sync(),await i.close(),i=void 0,await _n(n,e);try{let o=await ot(at(e),"r");try{await o.sync()}finally{await o.close()}}catch{}}finally{i&&await i.close().catch(()=>{}),await Tn(n).catch(()=>{})}}function ke(e,t,n,i,o){if(e===void 0)return t;if(!Number.isInteger(e)||e<n||e>i)throw new TypeError(`${o} must be an integer between ${n} and ${i}`);return e}function xe(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Ce(e,t){return e instanceof Error&&e.code===t}async function Fn(e){try{return(await ut(e)).isFile()}catch(t){if(Ce(t,"ENOENT"))return!1;throw Ne("Unable to inspect artifact repository backup",e,t)}}function fe(e){return e instanceof Error?e:new Error(String(e))}function Ne(e,t,n,i=!1){return new u(i?"ARTIFACT_PERSISTENCE_CORRUPT":"ARTIFACT_PERSISTENCE_IO",`${e}: ${fe(n).message}`,{snapshotPath:t},{cause:fe(n)})}function Ln(e){return new Promise(t=>setTimeout(t,e))}import{Buffer as At}from"node:buffer";var Mn=16*1024*1024,Hn=5e3,jn=1e5,qn=1e6,Jn=/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@(?:\s?(.*))?$/,X=class extends Error{constructor(n,i){super(i===void 0?n:`${n} at diff line ${i}`);this.line=i;this.name="XenoDiffParseError"}line;code="XENO_DIFF_INVALID"};function yt(e,t={}){if(typeof e!="string")throw new TypeError("Unified diff must be a string");let n=pe(t.maxBytes,Mn,1024,256*1024*1024,"maxBytes"),i=pe(t.maxFiles,Hn,1,1e5,"maxFiles"),o=pe(t.maxHunks,jn,1,1e6,"maxHunks"),r=pe(t.maxLines,qn,1,5e6,"maxLines");if(At.byteLength(e,"utf8")>n)throw new X(`Unified diff exceeds ${n} bytes`);let a=e.replace(/\r\n/g,`
5
5
  `).replace(/\r/g,`
@@ -1,4 +1,4 @@
1
- "use strict";var L=Object.defineProperty;var Re=Object.getOwnPropertyDescriptor;var we=Object.getOwnPropertyNames;var ve=Object.prototype.hasOwnProperty;var ke=(n,e)=>{for(var t in e)L(n,t,{get:e[t],enumerable:!0})},Ae=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of we(e))!ve.call(n,o)&&o!==t&&L(n,o,{get:()=>e[o],enumerable:!(r=Re(e,o))||r.enumerable});return n};var ye=n=>Ae(L({},"__esModule",{value:!0}),n);var Je={};ke(Je,{AGENT_DAEMON_PROTOCOL_VERSION:()=>S,AgentDaemonClient:()=>G,AgentDaemonServer:()=>B,AgentEventStore:()=>P,AgentRunController:()=>z,AgentRunStore:()=>T,MonitorManager:()=>K,MonitorStopTool:()=>ee,MonitorTool:()=>Y,OtelExporter:()=>re,UsageAccumulator:()=>N,UsageLedger:()=>te,WorkflowPlanner:()=>E,WorkflowRuntime:()=>Z,WorkflowStore:()=>M,acquireControlPlaneLock:()=>I,createAgentRunId:()=>pe,getAgentRunDir:()=>Le,getAgentRunStoreDir:()=>$e});module.exports=ye(Je);var le=require("node:crypto"),d=require("node:fs"),u=require("node:path");var x="0.9.20";var h=require("node:fs"),F=require("node:os"),se=require("node:path");function Se(){return new Date().toISOString()}function Ee(){return new Date(Date.now()-Math.floor(process.uptime()*1e3)).toISOString()}function ie(n){try{return JSON.parse((0,h.readFileSync)(n,"utf8"))}catch{return null}}function De(n){if(!n||n<=0)return!1;try{return process.kill(n,0),!0}catch{return!1}}function xe(n){return n.hostname!==(0,F.hostname)()?!0:De(n.pid)}function oe(n,e){(0,h.mkdirSync)((0,se.dirname)(n),{recursive:!0}),(0,h.writeFileSync)(n,JSON.stringify(e,null,2)+`
1
+ "use strict";var L=Object.defineProperty;var Re=Object.getOwnPropertyDescriptor;var we=Object.getOwnPropertyNames;var ve=Object.prototype.hasOwnProperty;var ke=(n,e)=>{for(var t in e)L(n,t,{get:e[t],enumerable:!0})},Ae=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of we(e))!ve.call(n,o)&&o!==t&&L(n,o,{get:()=>e[o],enumerable:!(r=Re(e,o))||r.enumerable});return n};var ye=n=>Ae(L({},"__esModule",{value:!0}),n);var Je={};ke(Je,{AGENT_DAEMON_PROTOCOL_VERSION:()=>S,AgentDaemonClient:()=>G,AgentDaemonServer:()=>B,AgentEventStore:()=>P,AgentRunController:()=>z,AgentRunStore:()=>T,MonitorManager:()=>K,MonitorStopTool:()=>ee,MonitorTool:()=>Y,OtelExporter:()=>re,UsageAccumulator:()=>N,UsageLedger:()=>te,WorkflowPlanner:()=>E,WorkflowRuntime:()=>Z,WorkflowStore:()=>M,acquireControlPlaneLock:()=>I,createAgentRunId:()=>pe,getAgentRunDir:()=>Le,getAgentRunStoreDir:()=>$e});module.exports=ye(Je);var le=require("node:crypto"),d=require("node:fs"),u=require("node:path");var x="0.9.21";var h=require("node:fs"),F=require("node:os"),se=require("node:path");function Se(){return new Date().toISOString()}function Ee(){return new Date(Date.now()-Math.floor(process.uptime()*1e3)).toISOString()}function ie(n){try{return JSON.parse((0,h.readFileSync)(n,"utf8"))}catch{return null}}function De(n){if(!n||n<=0)return!1;try{return process.kill(n,0),!0}catch{return!1}}function xe(n){return n.hostname!==(0,F.hostname)()?!0:De(n.pid)}function oe(n,e){(0,h.mkdirSync)((0,se.dirname)(n),{recursive:!0}),(0,h.writeFileSync)(n,JSON.stringify(e,null,2)+`
2
2
  `,{encoding:"utf8",flag:"wx"})}function Ie(n,e){let t=ie(n);t?.pid!==e.pid||t.hostname!==e.hostname||(0,h.rmSync)(n,{force:!0})}function I(n,e,t){let r=Se(),o={schemaVersion:1,name:e,pid:process.pid,hostname:(0,F.hostname)(),processStartedAt:Ee(),version:t,acquiredAt:r,updatedAt:r};try{oe(n,o)}catch(i){if(i.code!=="EEXIST")throw i;let a=ie(n);if(a&&xe(a))throw new Error(`${e} is already locked by PID ${a.pid} on ${a.hostname}.`);(0,h.rmSync)(n,{force:!0}),oe(n,o)}return{record:o,release:()=>{Ie(n,o)}}}var de=require("node:crypto"),R=require("node:fs"),A=require("node:path");function ae(n){return(0,A.basename)(n).replace(/[^A-Za-z0-9_.-]/g,"_").slice(0,96)}function ue(n){return(0,R.existsSync)(n)?(0,R.readFileSync)(n,"utf8").split(/\r?\n/).map(e=>e.trim()).filter(Boolean).map(e=>{try{return JSON.parse(e)}catch{return null}}).filter(e=>e!==null):[]}var P=class{constructor(e){this.runsDir=e;(0,R.mkdirSync)(this.runsDir,{recursive:!0})}runsDir;pathFor(e){return(0,A.join)(this.runsDir,ae(e),"events.jsonl")}append(e,t,r={},o=new Date().toISOString()){let i=this.pathFor(e);(0,R.mkdirSync)((0,A.dirname)(i),{recursive:!0});let s=I(`${i}.lock`,`events:${ae(e)}`,x);try{let a=ue(i).reduce((W,m,b)=>Math.max(W,m.sequence??b),-1)+1,f={schemaVersion:1,eventId:`event_${(0,de.randomUUID)()}`,sequence:a,runId:e,type:t,timestamp:o,payload:r};return(0,R.appendFileSync)(i,`${JSON.stringify(f)}
3
3
  `,"utf8"),f}finally{s.release()}}read(e){return ue(this.pathFor(e))}tail(e,t=100){let r=Math.max(0,Math.min(1e4,Math.trunc(t)));return r===0?[]:this.read(e).slice(-r)}};var k=require("node:os");var j=require("node:path"),Ze=(0,k.platform)();var Ke=(0,k.release)(),Ye=(0,k.homedir)();function y(){let n=process.env.XENO_AGENT_HOME?.trim();return n?(0,j.resolve)(n):(0,j.resolve)((0,k.homedir)(),".xeno-agent")}var Pe=1,Te=(0,u.join)(y(),"daemon"),H=(0,u.join)(Te,"runs");function p(){return new Date().toISOString()}function be(n=new Date){return n.toISOString().replace(/[^0-9]/g,"").slice(0,14)}function J(n){return n.replace(/[^A-Za-z0-9_.-]/g,"_").slice(0,80)}function q(n){return(0,u.resolve)(n)}function C(n){return q(n).toLowerCase()}function ce(n,e){let t=C(n),r=C(e);return t===r||t.startsWith(`${r}\\`)||t.startsWith(`${r}/`)}function Oe(n,e){return!!(C(n.cwd)===C(e)||n.git?.root&&ce(e,n.git.root)||n.git?.worktree&&ce(e,n.git.worktree))}function Ce(n){return J(Buffer.from(q(n)).toString("base64url"))}function _e(){return{input:0,output:0,total:0}}function O(n){try{return JSON.parse((0,d.readFileSync)(n,"utf8"))}catch{return null}}function Ue(n){return n instanceof Error&&/\balready locked by PID\b/.test(n.message)}function Me(n,e){(0,d.mkdirSync)((0,u.dirname)(n),{recursive:!0});let t=`${n}.${process.pid}.${Date.now()}.tmp`;(0,d.writeFileSync)(t,JSON.stringify(e,null,2)+`
4
4
  `,"utf8"),(0,d.renameSync)(t,n)}function Ne(n){if(!n||n<=0)return!1;try{return process.kill(n,0),!0}catch{return!1}}function Ve(n){return n==="completed"||n==="failed"||n==="cancelled"||n==="interrupted"}function We(n,e){return n.pinned!==e.pinned?n.pinned?-1:1:Date.parse(e.updatedAt)-Date.parse(n.updatedAt)}function $e(){return H}function Le(n){return(0,u.join)(H,n)}function pe(n=new Date){return`run_${be(n)}_${(0,le.randomUUID)().slice(0,8)}`}var T=class{constructor(e=H){this.runsDir=e;(0,d.mkdirSync)(this.runsDir,{recursive:!0}),this.eventStore=new P(this.runsDir)}runsDir;eventStore;create(e){let t=pe(),r=(0,u.join)(this.runsDir,t);(0,d.mkdirSync)(r,{recursive:!0});let o=p(),i=(0,u.join)(r,"events.jsonl"),s={schemaVersion:Pe,runId:t,sessionId:t,rootRunId:t,cwd:q(e.cwd),workspaceId:Ce(e.cwd),prompt:e.prompt,...e.title?{title:e.title}:{},status:"starting",model:e.model,...e.effort?{effort:e.effort}:{},...e.agent?{agent:e.agent}:{},...e.git?{git:e.git}:{},permissionMode:e.permissionMode,...e.cliVersion?{createdByCliVersion:e.cliVersion}:{},createdBySdkVersion:e.sdkVersion??x,createdAt:o,updatedAt:o,lastActivityAt:o,pinned:!!e.pinned,attachedClients:0,...e.cliVersion?{cliVersion:e.cliVersion}:{},...e.sdkVersion?{sdkVersion:e.sdkVersion}:{},stdoutPath:(0,u.join)(r,"stdout.log"),stderrPath:(0,u.join)(r,"stderr.log"),eventsPath:i,usage:_e(),children:[],tags:[]};return(0,d.writeFileSync)(s.stdoutPath,"","utf8"),(0,d.writeFileSync)(s.stderrPath,"","utf8"),(0,d.writeFileSync)(s.eventsPath,"","utf8"),this.write(s),this.appendEvent(t,"run_created",{cwd:s.cwd,model:s.model,...s.agent?{agent:s.agent}:{},...s.git?{git:s.git}:{},permissionMode:s.permissionMode,pinned:s.pinned}),s}get(e){let t=O(this.recordPath(e));return t?this.refreshRecordStatus(t):null}list(e={}){if(!(0,d.existsSync)(this.runsDir))return[];let t=(0,d.readdirSync)(this.runsDir,{withFileTypes:!0}).filter(r=>r.isDirectory()).map(r=>{try{return this.get(r.name)}catch(o){if(Ue(o))return O(this.recordPath(r.name));throw o}}).filter(r=>r!==null).filter(r=>e.all||!e.cwd||Oe(r,e.cwd)).filter(r=>!e.status||e.status.includes(r.status)).sort(We);return typeof e.limit=="number"&&e.limit>0?t.slice(0,e.limit):t}markSpawned(e,t,r){return this.update(e,o=>({...o,status:"running",workerPid:t,...r?{workerVersion:r}:{},startedAt:o.startedAt??p(),lastActivityAt:p()}))}markStarted(e,t){return this.update(e,r=>({...r,status:"running",workerPid:t.pid,...t.workerVersion?{workerVersion:t.workerVersion}:{},...t.model?{model:t.model}:{},...t.effort?{effort:t.effort}:{},startedAt:r.startedAt??p(),lastActivityAt:p()}))}markCompleted(e,t){return this.update(e,r=>({...r,status:t.status,...t.statusReason?{statusReason:t.statusReason}:{},exitCode:t.exitCode??null,usage:t.usage??r.usage,endedAt:p(),lastActivityAt:p()}))}markCancelled(e,t){return this.update(e,r=>({...r,status:"cancelled",statusReason:t,endedAt:p(),lastActivityAt:p()}))}markPaused(e,t="Paused by user."){let r=this.update(e,o=>({...o,status:"paused",statusReason:t,lastActivityAt:p()}));return r&&this.appendEvent(e,"run_paused",{reason:t}),r}markResumed(e,t="Resumed by user."){let r=this.update(e,o=>{let i={...o,status:"running",statusReason:t,lastActivityAt:p()};return delete i.endedAt,delete i.exitCode,i});return r&&this.appendEvent(e,"run_resumed",{reason:t}),r}setPinned(e,t){let r=this.update(e,o=>({...o,pinned:t,lastActivityAt:p()}));return r&&this.appendEvent(e,t?"run_pinned":"run_unpinned",{pinned:t}),r}appendEvent(e,t,r={}){let o=O(this.recordPath(e)),i=this.eventStore.append(e,t,r);o&&this.update(e,s=>({...s,lastActivityAt:i.timestamp}))}readEvents(e){return this.get(e)?this.eventStore.read(e):[]}delete(e){(0,d.rmSync)((0,u.join)(this.runsDir,e),{recursive:!0,force:!0})}refreshRecordStatus(e){if(Ve(e.status))return e;if(e.workerPid&&!Ne(e.workerPid)){let t={...e,status:"failed",statusReason:"Worker process is no longer running and did not record a terminal status.",endedAt:e.endedAt??p(),updatedAt:p()};return this.write(t),t}return e}update(e,t){let r=O(this.recordPath(e));if(!r)return null;let o=t(r);return o.updatedAt=p(),this.write(o),o}write(e){let t=I((0,u.join)(this.runDir(e.runId),"run.lock"),`run:${e.runId}`,x);try{Me(this.recordPath(e.runId),e)}finally{t.release()}}recordPath(e){return(0,u.join)(this.runsDir,J((0,u.basename)(e)),"run.json")}runDir(e){return(0,u.join)(this.runsDir,J((0,u.basename)(e)))}};function ge(n){return n==="completed"||n==="failed"||n==="cancelled"||n==="interrupted"}var z=class{constructor(e={}){this.options=e;this.store=e.store??new T}options;store;create(e){return this.store.create(e)}async start(e){let t=this.create(e);if(!this.options.spawn)return t;try{let r=await this.options.spawn(t),o=this.store.markSpawned(t.runId,r.pid,r.workerVersion);if(!o)throw new Error(`Run disappeared during spawn: ${t.runId}`);return this.store.appendEvent(t.runId,"run_started",{pid:r.pid}),o}catch(r){let o=r instanceof Error?r.message:String(r);throw this.store.markCompleted(t.runId,{status:"failed",statusReason:o,exitCode:null}),this.store.appendEvent(t.runId,"run_start_failed",{reason:o}),r}}get(e){return this.store.get(e)}list(e={}){return this.store.list(e)}events(e,t){let r=this.store.readEvents(e);return t===void 0?r:r.slice(-Math.max(0,Math.trunc(t)))}async stop(e,t="Stopped by user."){let r=this.store.get(e);if(!r||ge(r.status))return r;await this.options.stop?.(r,t);let o=this.store.markCancelled(e,t);return o&&this.store.appendEvent(e,"run_cancelled",{reason:t}),o}async pause(e,t="Paused by user."){let r=this.store.get(e);return!r||ge(r.status)||r.status==="paused"?r:(await this.options.pause?.(r,t),this.store.markPaused(e,t))}async resume(e,t="Resumed by user."){let r=this.store.get(e);return!r||r.status!=="paused"?r:(await this.options.resume?.(r,t),this.store.markResumed(e,t))}complete(e,t,r={}){let o=this.store.markCompleted(e,{status:t,...r.reason?{statusReason:r.reason}:{},...r.exitCode!==void 0?{exitCode:r.exitCode}:{},...r.usage?{usage:r.usage}:{}});return o&&this.store.appendEvent(e,`run_${t}`,{...r.reason?{reason:r.reason}:{}}),o}};var _=require("node:crypto"),S=1;function Fe(n,e){if(!n)return!1;let t=Buffer.from(n),r=Buffer.from(e);return t.length===r.length&&(0,_.timingSafeEqual)(t,r)}var B=class{constructor(e={}){this.options=e}options;handlers=new Map;register(e,t){let r=e.trim();if(!r)throw new Error("Daemon method name cannot be empty.");if(this.handlers.has(r))throw new Error(`Daemon method already registered: ${r}`);return this.handlers.set(r,t),this}registerController(e){return this.register("runs.start",t=>e.start(t)).register("runs.get",t=>e.get(t.runId)).register("runs.list",t=>e.list(t??{})).register("runs.events",t=>{let r=t;return e.events(r.runId,r.limit)}).register("runs.stop",t=>{let r=t;return e.stop(r.runId,r.reason)}).register("runs.pause",t=>{let r=t;return e.pause(r.runId,r.reason)}).register("runs.resume",t=>{let r=t;return e.resume(r.runId,r.reason)})}async handle(e){if(e.protocolVersion!==S)return this.error(e.id,"PROTOCOL_MISMATCH",`Unsupported protocol version: ${e.protocolVersion}`);if(this.options.authToken&&!Fe(e.authToken,this.options.authToken))return this.error(e.id,"UNAUTHORIZED","Daemon authentication failed.");let t=this.handlers.get(e.method);if(!t)return this.error(e.id,"METHOD_NOT_FOUND",`Unknown daemon method: ${e.method}`);try{return{protocolVersion:S,id:e.id,result:await t(e.params,e)}}catch(r){return this.error(e.id,"INTERNAL_ERROR",r instanceof Error?r.message:String(r))}}error(e,t,r){return{protocolVersion:S,id:e,error:{code:t,message:r}}}},G=class{constructor(e,t={}){this.transport=e;this.options=t}transport;options;async request(e,t){let r={protocolVersion:S,id:`request_${(0,_.randomUUID)()}`,method:e,params:t,...this.options.authToken?{authToken:this.options.authToken}:{}},o=await this.transport(r);if(o.protocolVersion!==S||o.id!==r.id)throw new Error("Invalid daemon response identity.");if("error"in o){let i=new Error(o.error.message);throw i.code=o.error.code,i}return o.result}};var X=require("node:crypto"),c=require("node:fs"),g=require("node:path");function U(n){return(0,g.basename)(n).replace(/[^A-Za-z0-9_.-]/g,"_").slice(0,96)}function Q(n){try{return JSON.parse((0,c.readFileSync)(n,"utf8"))}catch{return null}}function me(n,e){(0,c.mkdirSync)((0,g.dirname)(n),{recursive:!0});let t=`${n}.${process.pid}.${Date.now()}.tmp`;(0,c.writeFileSync)(t,`${JSON.stringify(e,null,2)}
@@ -1,4 +1,4 @@
1
- import{randomUUID as Pe}from"node:crypto";import{existsSync as Te,mkdirSync as O,readFileSync as be,readdirSync as Oe,renameSync as Ce,rmSync as _e,writeFileSync as E}from"node:fs";import{basename as G,dirname as Ue,join as l,resolve as Me}from"node:path";var R="0.9.20";import{mkdirSync as ce,readFileSync as le,rmSync as L,writeFileSync as pe}from"node:fs";import{hostname as F}from"node:os";import{dirname as ge}from"node:path";function me(){return new Date().toISOString()}function fe(){return new Date(Date.now()-Math.floor(process.uptime()*1e3)).toISOString()}function j(n){try{return JSON.parse(le(n,"utf8"))}catch{return null}}function he(n){if(!n||n<=0)return!1;try{return process.kill(n,0),!0}catch{return!1}}function Re(n){return n.hostname!==F()?!0:he(n.pid)}function $(n,e){ce(ge(n),{recursive:!0}),pe(n,JSON.stringify(e,null,2)+`
1
+ import{randomUUID as Pe}from"node:crypto";import{existsSync as Te,mkdirSync as O,readFileSync as be,readdirSync as Oe,renameSync as Ce,rmSync as _e,writeFileSync as E}from"node:fs";import{basename as G,dirname as Ue,join as l,resolve as Me}from"node:path";var R="0.9.21";import{mkdirSync as ce,readFileSync as le,rmSync as L,writeFileSync as pe}from"node:fs";import{hostname as F}from"node:os";import{dirname as ge}from"node:path";function me(){return new Date().toISOString()}function fe(){return new Date(Date.now()-Math.floor(process.uptime()*1e3)).toISOString()}function j(n){try{return JSON.parse(le(n,"utf8"))}catch{return null}}function he(n){if(!n||n<=0)return!1;try{return process.kill(n,0),!0}catch{return!1}}function Re(n){return n.hostname!==F()?!0:he(n.pid)}function $(n,e){ce(ge(n),{recursive:!0}),pe(n,JSON.stringify(e,null,2)+`
2
2
  `,{encoding:"utf8",flag:"wx"})}function we(n,e){let t=j(n);t?.pid!==e.pid||t.hostname!==e.hostname||L(n,{force:!0})}function A(n,e,t){let r=me(),o={schemaVersion:1,name:e,pid:process.pid,hostname:F(),processStartedAt:fe(),version:t,acquiredAt:r,updatedAt:r};try{$(n,o)}catch(i){if(i.code!=="EEXIST")throw i;let a=j(n);if(a&&Re(a))throw new Error(`${e} is already locked by PID ${a.pid} on ${a.hostname}.`);L(n,{force:!0}),$(n,o)}return{record:o,release:()=>{we(n,o)}}}import{randomUUID as ve}from"node:crypto";import{appendFileSync as ke,existsSync as Ae,mkdirSync as J,readFileSync as ye}from"node:fs";import{basename as Se,dirname as Ee,join as De}from"node:path";function H(n){return Se(n).replace(/[^A-Za-z0-9_.-]/g,"_").slice(0,96)}function q(n){return Ae(n)?ye(n,"utf8").split(/\r?\n/).map(e=>e.trim()).filter(Boolean).map(e=>{try{return JSON.parse(e)}catch{return null}}).filter(e=>e!==null):[]}var y=class{constructor(e){this.runsDir=e;J(this.runsDir,{recursive:!0})}runsDir;pathFor(e){return De(this.runsDir,H(e),"events.jsonl")}append(e,t,r={},o=new Date().toISOString()){let i=this.pathFor(e);J(Ee(i),{recursive:!0});let s=A(`${i}.lock`,`events:${H(e)}`,R);try{let a=q(i).reduce((T,c,k)=>Math.max(T,c.sequence??k),-1)+1,p={schemaVersion:1,eventId:`event_${ve()}`,sequence:a,runId:e,type:t,timestamp:o,payload:r};return ke(i,`${JSON.stringify(p)}
3
3
  `,"utf8"),p}finally{s.release()}}read(e){return q(this.pathFor(e))}tail(e,t=100){let r=Math.max(0,Math.min(1e4,Math.trunc(t)));return r===0?[]:this.read(e).slice(-r)}};import{homedir as B,platform as xe,release as Ie}from"node:os";import{resolve as z}from"node:path";var xt=xe();var It=Ie(),Pt=B();function f(){let n=process.env.XENO_AGENT_HOME?.trim();return n?z(n):z(B(),".xeno-agent")}var Ne=1,Ve=l(f(),"daemon"),_=l(Ve,"runs");function d(){return new Date().toISOString()}function We(n=new Date){return n.toISOString().replace(/[^0-9]/g,"").slice(0,14)}function C(n){return n.replace(/[^A-Za-z0-9_.-]/g,"_").slice(0,80)}function U(n){return Me(n)}function D(n){return U(n).toLowerCase()}function Q(n,e){let t=D(n),r=D(e);return t===r||t.startsWith(`${r}\\`)||t.startsWith(`${r}/`)}function $e(n,e){return!!(D(n.cwd)===D(e)||n.git?.root&&Q(e,n.git.root)||n.git?.worktree&&Q(e,n.git.worktree))}function Le(n){return C(Buffer.from(U(n)).toString("base64url"))}function Fe(){return{input:0,output:0,total:0}}function S(n){try{return JSON.parse(be(n,"utf8"))}catch{return null}}function je(n){return n instanceof Error&&/\balready locked by PID\b/.test(n.message)}function Je(n,e){O(Ue(n),{recursive:!0});let t=`${n}.${process.pid}.${Date.now()}.tmp`;E(t,JSON.stringify(e,null,2)+`
4
4
  `,"utf8"),Ce(t,n)}function He(n){if(!n||n<=0)return!1;try{return process.kill(n,0),!0}catch{return!1}}function qe(n){return n==="completed"||n==="failed"||n==="cancelled"||n==="interrupted"}function ze(n,e){return n.pinned!==e.pinned?n.pinned?-1:1:Date.parse(e.updatedAt)-Date.parse(n.updatedAt)}function Vt(){return _}function Wt(n){return l(_,n)}function Be(n=new Date){return`run_${We(n)}_${Pe().slice(0,8)}`}var x=class{constructor(e=_){this.runsDir=e;O(this.runsDir,{recursive:!0}),this.eventStore=new y(this.runsDir)}runsDir;eventStore;create(e){let t=Be(),r=l(this.runsDir,t);O(r,{recursive:!0});let o=d(),i=l(r,"events.jsonl"),s={schemaVersion:Ne,runId:t,sessionId:t,rootRunId:t,cwd:U(e.cwd),workspaceId:Le(e.cwd),prompt:e.prompt,...e.title?{title:e.title}:{},status:"starting",model:e.model,...e.effort?{effort:e.effort}:{},...e.agent?{agent:e.agent}:{},...e.git?{git:e.git}:{},permissionMode:e.permissionMode,...e.cliVersion?{createdByCliVersion:e.cliVersion}:{},createdBySdkVersion:e.sdkVersion??R,createdAt:o,updatedAt:o,lastActivityAt:o,pinned:!!e.pinned,attachedClients:0,...e.cliVersion?{cliVersion:e.cliVersion}:{},...e.sdkVersion?{sdkVersion:e.sdkVersion}:{},stdoutPath:l(r,"stdout.log"),stderrPath:l(r,"stderr.log"),eventsPath:i,usage:Fe(),children:[],tags:[]};return E(s.stdoutPath,"","utf8"),E(s.stderrPath,"","utf8"),E(s.eventsPath,"","utf8"),this.write(s),this.appendEvent(t,"run_created",{cwd:s.cwd,model:s.model,...s.agent?{agent:s.agent}:{},...s.git?{git:s.git}:{},permissionMode:s.permissionMode,pinned:s.pinned}),s}get(e){let t=S(this.recordPath(e));return t?this.refreshRecordStatus(t):null}list(e={}){if(!Te(this.runsDir))return[];let t=Oe(this.runsDir,{withFileTypes:!0}).filter(r=>r.isDirectory()).map(r=>{try{return this.get(r.name)}catch(o){if(je(o))return S(this.recordPath(r.name));throw o}}).filter(r=>r!==null).filter(r=>e.all||!e.cwd||$e(r,e.cwd)).filter(r=>!e.status||e.status.includes(r.status)).sort(ze);return typeof e.limit=="number"&&e.limit>0?t.slice(0,e.limit):t}markSpawned(e,t,r){return this.update(e,o=>({...o,status:"running",workerPid:t,...r?{workerVersion:r}:{},startedAt:o.startedAt??d(),lastActivityAt:d()}))}markStarted(e,t){return this.update(e,r=>({...r,status:"running",workerPid:t.pid,...t.workerVersion?{workerVersion:t.workerVersion}:{},...t.model?{model:t.model}:{},...t.effort?{effort:t.effort}:{},startedAt:r.startedAt??d(),lastActivityAt:d()}))}markCompleted(e,t){return this.update(e,r=>({...r,status:t.status,...t.statusReason?{statusReason:t.statusReason}:{},exitCode:t.exitCode??null,usage:t.usage??r.usage,endedAt:d(),lastActivityAt:d()}))}markCancelled(e,t){return this.update(e,r=>({...r,status:"cancelled",statusReason:t,endedAt:d(),lastActivityAt:d()}))}markPaused(e,t="Paused by user."){let r=this.update(e,o=>({...o,status:"paused",statusReason:t,lastActivityAt:d()}));return r&&this.appendEvent(e,"run_paused",{reason:t}),r}markResumed(e,t="Resumed by user."){let r=this.update(e,o=>{let i={...o,status:"running",statusReason:t,lastActivityAt:d()};return delete i.endedAt,delete i.exitCode,i});return r&&this.appendEvent(e,"run_resumed",{reason:t}),r}setPinned(e,t){let r=this.update(e,o=>({...o,pinned:t,lastActivityAt:d()}));return r&&this.appendEvent(e,t?"run_pinned":"run_unpinned",{pinned:t}),r}appendEvent(e,t,r={}){let o=S(this.recordPath(e)),i=this.eventStore.append(e,t,r);o&&this.update(e,s=>({...s,lastActivityAt:i.timestamp}))}readEvents(e){return this.get(e)?this.eventStore.read(e):[]}delete(e){_e(l(this.runsDir,e),{recursive:!0,force:!0})}refreshRecordStatus(e){if(qe(e.status))return e;if(e.workerPid&&!He(e.workerPid)){let t={...e,status:"failed",statusReason:"Worker process is no longer running and did not record a terminal status.",endedAt:e.endedAt??d(),updatedAt:d()};return this.write(t),t}return e}update(e,t){let r=S(this.recordPath(e));if(!r)return null;let o=t(r);return o.updatedAt=d(),this.write(o),o}write(e){let t=A(l(this.runDir(e.runId),"run.lock"),`run:${e.runId}`,R);try{Je(this.recordPath(e.runId),e)}finally{t.release()}}recordPath(e){return l(this.runsDir,C(G(e)),"run.json")}runDir(e){return l(this.runsDir,C(G(e)))}};function X(n){return n==="completed"||n==="failed"||n==="cancelled"||n==="interrupted"}var Z=class{constructor(e={}){this.options=e;this.store=e.store??new x}options;store;create(e){return this.store.create(e)}async start(e){let t=this.create(e);if(!this.options.spawn)return t;try{let r=await this.options.spawn(t),o=this.store.markSpawned(t.runId,r.pid,r.workerVersion);if(!o)throw new Error(`Run disappeared during spawn: ${t.runId}`);return this.store.appendEvent(t.runId,"run_started",{pid:r.pid}),o}catch(r){let o=r instanceof Error?r.message:String(r);throw this.store.markCompleted(t.runId,{status:"failed",statusReason:o,exitCode:null}),this.store.appendEvent(t.runId,"run_start_failed",{reason:o}),r}}get(e){return this.store.get(e)}list(e={}){return this.store.list(e)}events(e,t){let r=this.store.readEvents(e);return t===void 0?r:r.slice(-Math.max(0,Math.trunc(t)))}async stop(e,t="Stopped by user."){let r=this.store.get(e);if(!r||X(r.status))return r;await this.options.stop?.(r,t);let o=this.store.markCancelled(e,t);return o&&this.store.appendEvent(e,"run_cancelled",{reason:t}),o}async pause(e,t="Paused by user."){let r=this.store.get(e);return!r||X(r.status)||r.status==="paused"?r:(await this.options.pause?.(r,t),this.store.markPaused(e,t))}async resume(e,t="Resumed by user."){let r=this.store.get(e);return!r||r.status!=="paused"?r:(await this.options.resume?.(r,t),this.store.markResumed(e,t))}complete(e,t,r={}){let o=this.store.markCompleted(e,{status:t,...r.reason?{statusReason:r.reason}:{},...r.exitCode!==void 0?{exitCode:r.exitCode}:{},...r.usage?{usage:r.usage}:{}});return o&&this.store.appendEvent(e,`run_${t}`,{...r.reason?{reason:r.reason}:{}}),o}};import{randomUUID as Ge,timingSafeEqual as Qe}from"node:crypto";var w=1;function Xe(n,e){if(!n)return!1;let t=Buffer.from(n),r=Buffer.from(e);return t.length===r.length&&Qe(t,r)}var K=class{constructor(e={}){this.options=e}options;handlers=new Map;register(e,t){let r=e.trim();if(!r)throw new Error("Daemon method name cannot be empty.");if(this.handlers.has(r))throw new Error(`Daemon method already registered: ${r}`);return this.handlers.set(r,t),this}registerController(e){return this.register("runs.start",t=>e.start(t)).register("runs.get",t=>e.get(t.runId)).register("runs.list",t=>e.list(t??{})).register("runs.events",t=>{let r=t;return e.events(r.runId,r.limit)}).register("runs.stop",t=>{let r=t;return e.stop(r.runId,r.reason)}).register("runs.pause",t=>{let r=t;return e.pause(r.runId,r.reason)}).register("runs.resume",t=>{let r=t;return e.resume(r.runId,r.reason)})}async handle(e){if(e.protocolVersion!==w)return this.error(e.id,"PROTOCOL_MISMATCH",`Unsupported protocol version: ${e.protocolVersion}`);if(this.options.authToken&&!Xe(e.authToken,this.options.authToken))return this.error(e.id,"UNAUTHORIZED","Daemon authentication failed.");let t=this.handlers.get(e.method);if(!t)return this.error(e.id,"METHOD_NOT_FOUND",`Unknown daemon method: ${e.method}`);try{return{protocolVersion:w,id:e.id,result:await t(e.params,e)}}catch(r){return this.error(e.id,"INTERNAL_ERROR",r instanceof Error?r.message:String(r))}}error(e,t,r){return{protocolVersion:w,id:e,error:{code:t,message:r}}}},Y=class{constructor(e,t={}){this.transport=e;this.options=t}transport;options;async request(e,t){let r={protocolVersion:w,id:`request_${Ge()}`,method:e,params:t,...this.options.authToken?{authToken:this.options.authToken}:{}},o=await this.transport(r);if(o.protocolVersion!==w||o.id!==r.id)throw new Error("Invalid daemon response identity.");if("error"in o){let i=new Error(o.error.message);throw i.code=o.error.code,i}return o.result}};import{randomUUID as ee}from"node:crypto";import{appendFileSync as Ze,existsSync as Ke,mkdirSync as P,readFileSync as ne,readdirSync as Ye,renameSync as et,writeFileSync as tt}from"node:fs";import{basename as rt,dirname as oe,join as g}from"node:path";function I(n){return rt(n).replace(/[^A-Za-z0-9_.-]/g,"_").slice(0,96)}function M(n){try{return JSON.parse(ne(n,"utf8"))}catch{return null}}function te(n,e){P(oe(n),{recursive:!0});let t=`${n}.${process.pid}.${Date.now()}.tmp`;tt(t,`${JSON.stringify(e,null,2)}
package/dist/index.cjs CHANGED
@@ -2268,7 +2268,7 @@ try {
2268
2268
 
2269
2269
  ---
2270
2270
 
2271
- `));let h=t.systemPrompt??YE({cwd:e,model:n,date:t.date??new Date().toISOString().split("T")[0],identity:d,memory:f||void 0,sessionId:t.sessionId,executionMode:r}),y=t.dispatchAgent??(async w=>{let{createDelegatedXenoAgent:S}=await Promise.resolve().then(()=>(Ly(),j$)),{agent:x}=await S({cwd:e,apiKey:o,baseURL:i,model:n,...t.fallbackModels?{fallbackModels:t.fallbackModels}:{},...t.effort?{effort:t.effort}:{},maxTokens:Math.max(512,Math.min(t.maxTokens??NI,4096)),maxIterations:Math.max(3,Math.min(t.maxIterations??LI,12)),parentSystemPrompt:h,parentExecutionMode:r,subagentRole:"explorer",permissionEngine:u,...t.sandbox?{sandbox:t.sandbox}:{},...t.onPermissionRequest?{onPermissionRequest:t.onPermissionRequest}:{}}),E=()=>{x.cancelCurrentTurn()};if(w.signal?.aborted)throw E(),new Error("dispatch_agent was aborted before the helper started");w.signal?.addEventListener("abort",E,{once:!0});try{return{output:await x.run(w.prompt)}}finally{w.signal?.removeEventListener("abort",E)}});if(t.validateToolInputs===!1)throw new Error("Agent tool input validation cannot be disabled.");let b=t.toolRegistry??hn({cwd:e,askUser:t.askUser,dispatchAgent:y,...t.webSearchApiKey?{webSearchApiKey:t.webSearchApiKey}:{},...t.permissionConfig?.profile?{permissionProfile:t.permissionConfig.profile}:{},...t.ownerSessionId?{ownerSessionId:t.ownerSessionId}:{},...t.sandbox?{sandbox:t.sandbox}:{},...g?{memoryManager:g}:{},validateInputs:!0});return t.toolRegistry&&t.validateToolInputs===!0&&b.setValidateInputs(!0),{agent:new zo({apiKey:o,baseURL:i,ollamaBaseURL:s,...l!==void 0?{apiRequestTimeoutMs:l}:{},model:n,...t.fallbackModels?{fallbackModels:t.fallbackModels}:{},...t.effort?{effort:t.effort}:{},maxTokens:t.maxTokens??NI,maxIterations:t.maxIterations??LI,maxContextTokens:t.maxContextTokens,maxContextMessages:t.maxContextMessages,compressionKeepRecentMessages:t.compressionKeepRecentMessages,contextCompressionLlm:t.contextCompressionLlm,tokenEstimator:t.tokenEstimator,tokenAccountingAdapter:t.tokenAccountingAdapter,queryIdleTimeoutMs:t.queryIdleTimeoutMs,queryLeaseTimeoutMs:t.queryLeaseTimeoutMs,queryHardTimeoutMs:t.queryHardTimeoutMs,...t.reserveFinalSynthesisTurn!==void 0?{reserveFinalSynthesisTurn:t.reserveFinalSynthesisTurn}:{},systemPrompt:h,requesterLabel:t.requesterLabel,ownerSessionId:t.ownerSessionId,executionMode:r,permissionEngine:u,toolRegistry:b,sandbox:t.sandbox,onPermissionRequest:t.onPermissionRequest,onText:t.onText,onToolStart:t.onToolStart,onToolWillExecute:t.onToolWillExecute,onToolEnd:t.onToolEnd,onIteration:t.onIteration,onError:t.onError,onTranscriptError:t.onTranscriptError,onRuntimeEvent:t.onRuntimeEvent,runtimeEventBus:t.runtimeEventBus,turnDiffTracker:t.turnDiffTracker,onTurnDiff:t.onTurnDiff,onModeSwitchRequest:t.onModeSwitchRequest,onExecutionModeChanged:t.onExecutionModeChanged,completionGuard:t.completionGuard,maxCompletionGuardReminders:t.maxCompletionGuardReminders,progressGuardEveryIterations:t.progressGuardEveryIterations,...t.toolMiddleware?{toolMiddleware:t.toolMiddleware}:{},...t.promptSections?{promptSections:t.promptSections}:{},...t.promptSectionsTokenBudget!==void 0?{promptSectionsTokenBudget:t.promptSectionsTokenBudget}:{},...t.completionGuards?{completionGuards:t.completionGuards}:{},...t.provider?{provider:t.provider}:{},...t.session}),systemPrompt:h,permissionEngine:u,toolRegistry:b,...d?{identity:d}:{},...p?{memory:{resolved:p,...m?{projectSessionContext:m}:{},prompt:f}}:{}}}var H$,NI,LI,Cc=R(()=>{"use strict";H$=require("node:process");Io();Or();ih();ZE();gh();Wl();Oh();Vo();NI=8192,LI=50});var oie={};GT(oie,{AGENT_DAEMON_PROTOCOL_VERSION:()=>kc,AGENT_EFFORT_LEVELS:()=>Zb,AGENT_PERMISSION_MODES:()=>Qb,AGENT_PROFILE_EXTERNAL_ACTIONS:()=>il,ARCHITECT_CAPABILITIES:()=>IX,ARCHITECT_TOOL_NAMES:()=>kX,AgentDaemonClient:()=>Vk,AgentDaemonServer:()=>Hk,AgentDebugger:()=>Jb,AgentDefinitionLoader:()=>Ap,AgentDefinitionResolver:()=>iw,AgentEvaluator:()=>Kb,AgentEventStore:()=>wd,AgentHookRunner:()=>um,AgentInterruptedError:()=>kn,AgentLoop:()=>zo,AgentProfileValidationError:()=>Ar,AgentProtocol:()=>Zy,AgentRegistry:()=>Yy,AgentRunController:()=>jk,AgentRunError:()=>oh,AgentRunStore:()=>vd,AppAgentFactory:()=>lp,AppContextInjector:()=>Cs,AppContextManager:()=>ci,AppServerProtocolError:()=>z,AppServerRemoteError:()=>ni,AuditLogger:()=>Us,AutoCheckpointHandler:()=>sh,AutoMemory:()=>xx,AutoPermissionClassifier:()=>kh,BUILT_IN_XENO_PROVIDER_PRESETS:()=>aB,BackgroundProcessManager:()=>su,COMPAT_TOOL_ALIASES:()=>lE,CONFIG_VERSION:()=>Uv,CheckpointManager:()=>pr,CodeValidator:()=>Wb,CommandHookRunner:()=>fm,CompletionGuardRegistry:()=>fc,ContainmentApprovalError:()=>ce,ContainmentCertificationError:()=>ae,ContextManager:()=>od,ConversationStore:()=>tb,CrossAppRouter:()=>Ky,CrossAppRouterError:()=>Ts,DEFAULT_API_KEY:()=>An,DEFAULT_IMAGE_MODEL:()=>Bf,DEFAULT_MEMORY_BUDGETS:()=>ux,DEFAULT_MODEL:()=>Mi,DEFAULT_PROMPT_SECTIONS_TOKEN_BUDGET:()=>ld,DEFAULT_PROTECTED_STATE_KEY_NAME:()=>FN,DEFAULT_PROTECTED_STATE_SERVICE:()=>UN,DEFAULT_SUBAGENT_BRANCH_POLICY:()=>lh,DEFAULT_SUBAGENT_REMOTE_MCP_BY_ROLE:()=>dh,DEFAULT_SUBAGENT_ROLES:()=>hc,DEFAULT_SUBAGENT_ROLE_PRECEDENCE:()=>uh,DEFAULT_SUBAGENT_TEAM_PRESET:()=>cs,DIRECT_SHELL_CONTEXT_WARNING:()=>Qg,DOCS_CAPABILITIES:()=>DX,DOCS_TOOL_NAMES:()=>OX,DualLLMProvider:()=>Nc,ENGINE_CAPABILITIES:()=>CX,ENGINE_TOOL_NAMES:()=>PX,ElectronAgentBridge:()=>Jy,EpisodicStore:()=>wc,ExecutionGovernance:()=>Tc,ExecutionSecurityError:()=>_n,FALLBACK_MODELS:()=>S0,FileXenoArtifactRepository:()=>mv,FileXenoProviderConnectionStore:()=>HT,FileXenoShareRegistry:()=>yI,HIGH_RISK_PERMISSIONS:()=>MT,HookRunner:()=>pm,HookRuntime:()=>mm,HttpHookRunner:()=>gm,IDENTITY_PATHS:()=>ro,IdentityLoader:()=>ls,IdentityResolver:()=>us,InMemoryXenoArtifactRepository:()=>Zs,InMemoryXenoCapabilityLeaseRegistry:()=>xk,InMemoryXenoTelemetryCollector:()=>ox,InteractiveChatTurnGovernance:()=>oy,InteractiveTurnGovernance:()=>ys,JsonSchemaCompilationError:()=>Ni,LlmClient:()=>rc,LocalLLMProvider:()=>_s,LogLevel:()=>wx,MANIFEST_FILENAME:()=>ip,MAX_CONTAINMENT_APPROVAL_AGE_MS:()=>EN,MAX_CONTAINMENT_CERTIFICATION_BYTES:()=>Ew,MAX_CONTAINMENT_CERTIFICATION_LIFETIME_MS:()=>LR,MAX_DIRECT_SHELL_OUTPUT_CHARS:()=>XE,MCPHttpTransportError:()=>He,MCPManager:()=>mb,MCPOAuthClient:()=>lb,MCPServer:()=>fb,MCP_APPS_EXTENSION_ID:()=>Rs,MCP_APP_MIME_TYPE:()=>np,MCP_APP_RESOURCE_SCHEME:()=>V5,MCP_PROTOCOL_VERSION:()=>br,MCP_SUPPORTED_PROTOCOL_VERSIONS:()=>sb,MEMORY_FILES:()=>dx,MOTION_CAPABILITIES:()=>VX,MOTION_SYSTEM_PROMPT:()=>eT,MOTION_TOOL_NAMES:()=>HX,MemoryManager:()=>Xr,MessageFlow:()=>cc,ModelProviderRegistry:()=>Hl,MonitorManager:()=>Wk,MonitorStopTool:()=>Kk,MonitorTool:()=>Jk,NOTES_CAPABILITIES:()=>UX,NOTES_TOOL_NAMES:()=>BX,OtelExporter:()=>Zk,PIXEL_CAPABILITIES:()=>jX,PIXEL_SYSTEM_PROMPT:()=>QI,PIXEL_TOOL_NAMES:()=>FX,PROCESS_TREE_ADAPTERS:()=>xB,PROJECT_STATE_VERSION:()=>d0,PermissionEngine:()=>Kt,PluginEventBus:()=>Gc,PluginHost:()=>Jc,PluginManager:()=>dX,PluginMarketplace:()=>kb,PluginSandbox:()=>qc,PluginSettingsManager:()=>bb,PluginToolBuilder:()=>yb,ProfileManager:()=>tx,PromptHookRunner:()=>lm,PromptSectionRegistry:()=>mc,ProviderError:()=>pe,QueryLifecycle:()=>lc,REQUIRED_CONTAINMENT_CONFORMANCE_CHECKS:()=>ul,SDK_DEFAULT_MAX_ITERATIONS:()=>LI,SDK_DEFAULT_MAX_TOKENS:()=>NI,SDK_VERSION:()=>Jn,SESSION_FORMAT_VERSION:()=>nl,SHEETS_CAPABILITIES:()=>LX,SHEETS_TOOL_NAMES:()=>NX,SLIDES_CAPABILITIES:()=>XX,SLIDES_TOOL_NAMES:()=>$X,SOUND_CAPABILITIES:()=>zX,SOUND_SYSTEM_PROMPT:()=>tT,SOUND_TOOL_NAMES:()=>qX,SSETransport:()=>ui,SUBAGENT_ROLE_ALIASES:()=>MD,SUBAGENT_TEAM_PRESETS:()=>OD,ScreenCapture:()=>Gy,SessionLock:()=>lo,SessionLockManager:()=>lo,SessionManager:()=>ai,SessionRegistry:()=>Gt,SkillStore:()=>vc,SoulEngine:()=>Sh,StdioTransport:()=>Fc,StreamableHTTPTransport:()=>Uc,THREE_D_CAPABILITIES:()=>RX,THREE_D_TOOL_NAMES:()=>TX,TOOL_OPERATION_SCHEMA_VERSION:()=>ru,TaskListManager:()=>ts,ToolFailureLoopGuard:()=>dc,ToolMiddlewareRegistry:()=>pc,ToolOperationManager:()=>Af,ToolOrchestrator:()=>nd,ToolRegistry:()=>ns,ToolSchemaProjectionError:()=>ht,TranscriptWriter:()=>ii,TurnDiffTracker:()=>kE,TurnRestoreManager:()=>Is,UNBOUNDED_OPERATION_CONTINUATION_LIMIT:()=>ou,UnifiedExecError:()=>sr,UnifiedExecManager:()=>Ef,UsageAccumulator:()=>qh,UsageLedger:()=>Yk,VectorMemoryStore:()=>Co,WORKFLOW_CAPABILITIES:()=>MX,WORKFLOW_TOOL_NAMES:()=>_X,WorkflowPlanner:()=>Ic,WorkflowRuntime:()=>Gk,WorkflowStore:()=>Vh,WorkspaceIndex:()=>Wy,XENO_AGENT_PROFILE_SCHEMA_VERSION:()=>Tp,XENO_API_BASE:()=>nr,XENO_APP_PROTOCOL_V2_METHODS:()=>$I,XENO_APP_PROTOCOL_VERSIONS:()=>Xy,XENO_ARTIFACT_ACTOR_KINDS:()=>Kw,XENO_ARTIFACT_FILE_REPOSITORY_SCHEMA_VERSION:()=>yv,XENO_ARTIFACT_SCHEMA_VERSION:()=>be,XENO_ARTIFACT_SENSITIVITIES:()=>Jw,XENO_ARTIFACT_STATES:()=>Ww,XENO_AUTOMATION_OPERATIONS:()=>Rp,XENO_AUTOMATION_PROTOCOL_VERSION:()=>Vs,XENO_BUILTIN_ARTIFACT_KINDS:()=>Gw,XENO_CAPABILITY_LEASE_SCHEMA_VERSION:()=>wN,XENO_CONTAINMENT_APPROVAL_SCHEMA:()=>Th,XENO_CONTAINMENT_CERTIFICATION_SCHEMA:()=>_p,XENO_CONTAINMENT_CONFORMANCE_SCHEMA:()=>MN,XENO_CONTAINMENT_REVIEWER_TRUST_STORE_SCHEMA:()=>Rh,XENO_CONTROL_ROOM_SCHEMA_VERSION:()=>Gh,XENO_DEFLATE_CODEC_NAME:()=>_0,XENO_DEFLATE_CODEC_VERSION:()=>M0,XENO_EVIDENCE_EDGE_TYPES:()=>wl,XENO_EVIDENCE_GRAPH_SCHEMA_VERSION:()=>yl,XENO_EVIDENCE_NODE_TYPES:()=>bl,XENO_GIF_ANIMATION_POLICY:()=>iM,XENO_GIF_CODEC_NAME:()=>rM,XENO_GIF_CODEC_VERSION:()=>oM,XENO_HANDOFF_SCHEMA_VERSION:()=>gy,XENO_HOSTED_CONTROL_SCHEMA_VERSION:()=>EI,XENO_HOSTED_ENVIRONMENT_SCHEMA_VERSION:()=>Cd,XENO_HOSTED_EVENT_SCHEMA_VERSION:()=>wy,XENO_HOSTED_EXECUTION_ADAPTER_CERTIFICATION_SCHEMA:()=>Md,XENO_HOSTED_EXECUTION_ADAPTER_MAX_CERTIFICATE_LIFETIME_MS:()=>g$,XENO_HOSTED_EXECUTION_ADAPTER_PROTOCOL_VERSION:()=>wI,XENO_HOSTED_EXECUTION_PROTOCOL_VERSION:()=>w$,XENO_HOSTED_EXECUTION_TOOL_NAMES:()=>v$,XENO_HOSTED_RESULT_SCHEMA_VERSION:()=>kI,XENO_HOSTED_RUN_SCHEMA_VERSION:()=>Iee,XENO_HOSTED_TRIGGER_SCHEMA_VERSION:()=>Tee,XENO_JPEG_CODEC_NAME:()=>fM,XENO_JPEG_CODEC_VERSION:()=>gM,XENO_MXC_ADAPTER_NAME:()=>Lp,XENO_MXC_POLICY_VERSION:()=>_w,XENO_MXC_VERSION:()=>So,XENO_ORACLE_REPORT_SCHEMA_VERSION:()=>_I,XENO_PLUGIN_LOCK_FILENAME:()=>sp,XENO_PLUGIN_LOCK_SCHEMA_VERSION:()=>Wc,XENO_PLUGIN_SIGNATURE_FILENAME:()=>Ps,XENO_PLUGIN_SIGNATURE_SCHEMA_VERSION:()=>vb,XENO_PROVIDER_CATALOG_SCHEMA_VERSION:()=>UT,XENO_PROVIDER_CONNECTION_STORE_SCHEMA_VERSION:()=>zb,XENO_RASTER_CODEC_NAME:()=>Uo,XENO_RASTER_CODEC_VERSION:()=>dg,XENO_RASTER_PREVIEW_FORMATS:()=>sA,XENO_RECIPE_SCHEMA_VERSION:()=>U$,XENO_REPOSITORY_INDEX_SCHEMA_VERSION:()=>ay,XENO_REVIEW_DIMENSIONS:()=>qP,XENO_REVIEW_EVIDENCE_KINDS:()=>zP,XENO_REVIEW_REPORT_SCHEMA_VERSION:()=>Pv,XENO_RT_DEFAULT_URL:()=>Mr,XENO_SECURE_EXECUTION_CONTRACT_SCHEMA_VERSION:()=>Uw,XENO_SHARE_REGISTRY_SCHEMA_VERSION:()=>Pd,XENO_SHARE_SCHEMA_VERSION:()=>fy,XENO_SKILL_SCHEMA_VERSION:()=>hs,XENO_SOURCE_RESEARCH_SCHEMA_VERSION:()=>DI,XENO_SPEC_EXECUTION_SCHEMA_VERSION:()=>Pl,XENO_SPEC_SCHEMA_VERSION:()=>ra,XENO_SVG_RENDERER_NAME:()=>BM,XENO_SVG_RENDERER_VERSION:()=>UM,XENO_TELEMETRY_SCHEMA_VERSION:()=>T0,XENO_VP8_CODEC_NAME:()=>u1,XENO_VP8_CODEC_VERSION:()=>d1,XENO_WEBP_ANIMATION_POLICY:()=>w1,XENO_WEBP_CODEC_NAME:()=>y1,XENO_WEBP_CODEC_VERSION:()=>b1,XenoAppServer:()=>Fy,XenoAppServerV2Client:()=>qI,XenoArtifactRepositoryError:()=>U,XenoArtifactReviewService:()=>ta,XenoArtifactStateTransitionError:()=>Vp,XenoArtifactValidationError:()=>Ii,XenoAuthError:()=>sa,XenoAutomationError:()=>L,XenoCapabilityLeaseError:()=>wt,XenoControlRoomValidationError:()=>Le,XenoDiffParseError:()=>Pt,XenoEvidenceGraphBuilder:()=>lv,XenoEvidenceGraphValidationError:()=>Yp,XenoGovernedAutomationExecutor:()=>rv,XenoLoopbackAutomationAdapter:()=>iv,XenoMultiAgentReviewCoordinator:()=>Rv,XenoOracleCoordinator:()=>RI,XenoOracleValidationError:()=>vn,XenoProviderCatalog:()=>el,XenoRecipeValidationError:()=>xt,XenoRepositoryIndexFileStore:()=>pI,XenoReviewValidationError:()=>pt,XenoRuntimeEventBus:()=>qo,XenoSecureExecutionContractError:()=>Ke,XenoSourceResearchValidationError:()=>ei,XenoSpecLifecycleService:()=>Av,XenoSpecValidationError:()=>dt,XenoTraceGraphRecorder:()=>ec,acquireControlPlaneLock:()=>On,activateSessionRuntime:()=>jne,addProjectAllowedDirectory:()=>Hv,addProjectAllowedTool:()=>jv,agentDefinitionFromProfile:()=>fU,agentProfileFromDefinition:()=>IR,appendBoundedShellOutput:()=>_f,appendGuidanceToResult:()=>zE,approveMcpServer:()=>ob,areSignalHandlersInstalled:()=>Z8,artifactCompareTool:()=>JO,askUserTool:()=>F_,assertDirectEndpointResolution:()=>Yc,assertRequiredXenoAutomationEvidence:()=>kl,assertSupportedMcpProtocolVersion:()=>ab,assertUsableXenoApiKey:()=>Yv,assertValidMcpAppResource:()=>pb,assertValidXenoArtifact:()=>Ye,assertValidXenoAutomationAdapterManifest:()=>hl,assertValidXenoAutomationRequest:()=>Vw,assertValidXenoEvidenceGraph:()=>ea,assertValidXenoHostedExecutionJob:()=>Gee,assertValidXenoOracleReport:()=>Cy,assertValidXenoRecipeDefinition:()=>Xd,assertValidXenoReviewPack:()=>Cv,assertValidXenoReviewReport:()=>_l,assertValidXenoReviewTarget:()=>_v,assertValidXenoSecureExecutionContract:()=>Fp,assertValidXenoSourceResearchReport:()=>Oy,assertValidXenoSpecDocument:()=>om,assertValidXenoSpecExecution:()=>Tv,assertXenoArtifactStateTransition:()=>Al,assertXenoAutomationAdapterConformant:()=>OF,assertXenoAutomationAuthority:()=>Hp,auditRiskLevelForTool:()=>S5,authorizeShellExecution:()=>xf,backgroundProcessManager:()=>oe,bashTool:()=>N_,benchmarkCodingTools:()=>O9,bridgeXenoTelemetryToOpenTelemetry:()=>PV,buildAtomicMessageGroups:()=>LE,buildAuditReplayReport:()=>rR,buildAuditTraceReport:()=>nR,buildContainedProcessSpec:()=>JR,buildContractLedgerGuidance:()=>Qh,buildDefaultSubagentTasks:()=>Y9,buildDelegatedRoleSystemPrompt:()=>ck,buildHookEnvironment:()=>Lv,buildLinuxBubblewrapProcessSpec:()=>Cp,buildLspDefinitionReport:()=>GA,buildLspDiagnosticsReport:()=>zA,buildLspDoctorReport:()=>e2,buildLspHoverReport:()=>JA,buildLspReferencesReport:()=>WA,buildMotionSystemPrompt:()=>Oc,buildPixelSystemPrompt:()=>Mc,buildProcessHardenedProcessSpec:()=>WR,buildProjectBudgetFinalizationGuidance:()=>IL,buildProjectExecutionGuidance:()=>ny,buildProjectExecutionProfile:()=>ty,buildPromptMemoryContext:()=>Une,buildSecuredProcessSpec:()=>Gs,buildSoundSystemPrompt:()=>Dc,buildSystemPrompt:()=>YE,buildToolFailureGuardResult:()=>rh,buildXenoArtifactReviewAnchor:()=>Sv,buildXenoAutomationCapabilityUse:()=>qw,buildXenoRepositoryIndex:()=>VL,buildXenoRepositoryIndexWithEmbeddings:()=>TQ,buildXenoSecureExecutionContract:()=>zU,cachedModelContextWindow:()=>Zv,calculateCost:()=>Qy,canTransitionXenoArtifactState:()=>dP,canXenoRasterPreview:()=>pg,canonicalPayload:()=>xc,canonicalizeArtifactJson:()=>Q,canonicalizeMcpResourceUri:()=>Bc,canonicalizeSecurityPath:()=>ln,canonicalizeToolName:()=>V,checkSandbox:()=>nD,classifyProviderHttpError:()=>Lb,cleanupReadImagePreviews:()=>bA,cleanupSessionRuntime:()=>Vne,clearMcpServerApproval:()=>O5,clearProjectAllowedTools:()=>UH,clearProjectLastSessionSummary:()=>jH,clearProjectMcpApproval:()=>Vv,clearProjectMcpApprovals:()=>zv,clipXenoAnsi:()=>YD,coerceSubagentRole:()=>ph,coerceSubagentTeamPreset:()=>DD,compileAgentProfile:()=>AR,compileJsonSchema:()=>Km,compileToolInputSchema:()=>ba,compileXenoRecipe:()=>Tte,compileXenoSkillActivation:()=>mY,configureImageGeneration:()=>W_,configureSearch:()=>Lf,configureSearchPermissionProfile:()=>$f,configureXenoAnsi:()=>zD,containmentApprovalSigningPayload:()=>kN,containmentCertificationSigningPayload:()=>$R,copyTextToClipboard:()=>b5,create3DTools:()=>Rb,createAgentDefinitionFile:()=>oU,createAgentDefinitionPromptSection:()=>eU,createAgentRunId:()=>fL,createAppServerV2HttpTransport:()=>ene,createArchitectTools:()=>Tb,createArtifactCompareTool:()=>Mu,createAskUserTool:()=>pu,createAudioTools:()=>zy,createAuditBackedPermissionEngine:()=>Xne,createBashTool:()=>lu,createBenchBashMiddleware:()=>sy,createCommandBackedProtectedStateStore:()=>HN,createDefaultToolRegistry:()=>hn,createDelegatedXenoAgent:()=>Ny,createDirectProvider:()=>sB,createDirectShellMessage:()=>id,createDispatchAgentTool:()=>uu,createDocsTools:()=>_b,createEd25519Signer:()=>tN,createEditTool:()=>Ql,createElfAnalyzeTool:()=>Ru,createEngineTools:()=>Pb,createGcodeAnalyzeTool:()=>Pu,createGenerateImageTool:()=>fu,createGlobTool:()=>eu,createGovernanceExtensions:()=>vQ,createGrepTool:()=>tu,createHtmlSanitizerAuditTool:()=>Cu,createImageTools:()=>Vy,createLsTool:()=>Bu,createLspDefinitionTool:()=>Nu,createLspDiagnosticsTool:()=>Xu,createLspHoverTool:()=>$u,createLspReferencesTool:()=>Lu,createMcpAppCapabilities:()=>bT,createMcpAppExtensionCapabilities:()=>q5,createMcpPkcePair:()=>dT,createMcpPromptRegisteredTool:()=>RT,createMcpRegisteredTool:()=>TT,createMcpResourceRegisteredTool:()=>PT,createMemoryProtectedStateStore:()=>Q7,createMemoryReadTool:()=>Uu,createMemoryWriteTool:()=>Fu,createNotebookEditTool:()=>Hu,createNotebookReadTool:()=>ju,createNotesTools:()=>Db,createOsProtectedStateStore:()=>VN,createProtectedStateEnvelopeCipher:()=>eY,createReadImageTool:()=>ku,createReadTool:()=>Yl,createSheetsTools:()=>Mb,createSlidesTools:()=>Ob,createSpeechRecognizer:()=>P5,createSqliteAnalyzeTool:()=>Ga,createTaskInputTool:()=>zu,createTaskListTools:()=>Fg,createTaskOutputTool:()=>Vu,createTaskStopTool:()=>qu,createThinkTool:()=>du,createToolAlias:()=>eo,createToolRuntimeContext:()=>Kl,createUnavailableProtectedStateStore:()=>Ac,createVideoTools:()=>qy,createWebSearchTool:()=>z_,createWindowsDpapiProtectedCipher:()=>Z7,createWindowsDpapiProtectedFileStore:()=>jN,createWorkflowTools:()=>Cb,createWriteTool:()=>Zl,createXenoAgent:()=>gr,createXenoAutomationConformanceReport:()=>wP,createXenoGovernedAutomationTools:()=>VF,createXenoHostedControlCommand:()=>k$,createXenoHostedEnvironmentManifest:()=>Ree,createXenoHostedEvent:()=>Pee,createXenoHostedExecutionBoundaryReceipt:()=>x$,createXenoHostedRunResult:()=>I$,createXenoRasterPreview:()=>mg,createXenoSecureShare:()=>dee,createXenoSessionHandoff:()=>mee,createXenoShareSigningIdentity:()=>uee,createXenoSkillTool:()=>pY,createXenoSourceResearchExcerpt:()=>mte,createXenoSourceResearchReport:()=>pte,currentExecutionAdapterStatus:()=>WU,decodeJwtPayload:()=>Sm,decodeXenoBmp:()=>fg,decodeXenoGif:()=>Ff,decodeXenoGifAnimation:()=>aM,decodeXenoJpeg:()=>Wf,decodeXenoNetpbm:()=>gg,decodeXenoPng:()=>cA,decodeXenoSvg:()=>e1,decodeXenoVp8:()=>xu,decodeXenoWebp:()=>cg,defaultToolRuntimeContext:()=>F,defaultXenoReviewPack:()=>Fj,deflateXenoZlib:()=>ua,deleteSession:()=>mV,denyMcpServer:()=>ib,deriveHostedIdempotencyKey:()=>Mee,describeXenoAutomationOperation:()=>Yn,detectLanguage:()=>Gb,detectPluginRepositorySignals:()=>mX,detectRepositoryDocumentKind:()=>qL,detectRepositoryLanguage:()=>dI,detectXenoSpecDrift:()=>Nj,deterministicReduce:()=>rk,digestMessages:()=>DE,directProviderConfigFromConnection:()=>Uoe,discoverXenoSkills:()=>oY,dispatchAgentTool:()=>B_,editTool:()=>RC,elfAnalyzeTool:()=>TO,emitXenoTelemetry:()=>Om,encodeXenoPngRgb:()=>Ha,enforceShellCommandPolicy:()=>Wg,enforceToolPolicy:()=>td,ensureConfigDir:()=>ia,ensureDurableMessageIds:()=>Zg,ensureProjectStateDir:()=>h0,estimateFullRequestBudget:()=>NE,evaluateContainmentUiRestrictions:()=>DN,evaluatePermissionProfileNetworkUrl:()=>er,evaluateXenoCapabilityEligibility:()=>vN,extractJsonObject:()=>vh,extractToolPath:()=>rs,findXenoSkill:()=>$k,fingerprintXenoSecureExecutionContract:()=>GU,forgetRecentSession:()=>yx,forgetRecentSessionById:()=>fa,formatBoundedShellOutput:()=>Un,formatCost:()=>h5,formatDirectShellContext:()=>ic,formatJsonSchemaErrors:()=>Ym,formatModelList:()=>oV,formatPromptContextBreakdown:()=>Bne,gcodeAnalyzeTool:()=>OO,generateImageTool:()=>Y_,generateSessionId:()=>Oi,getAgentHome:()=>RH,getAgentRunDir:()=>DY,getAgentRunStoreDir:()=>OY,getAvailableModels:()=>km,getBenchmarkComputeBudgetHintForCommand:()=>bf,getBenchmarkForegroundTimeoutForCommand:()=>yf,getBestExecutionSecurityStatus:()=>Xw,getChatModels:()=>rV,getConfigDir:()=>_r,getDefaultProviderRegistry:()=>Cm,getExecutionSecurityCapabilityReport:()=>qR,getExecutionSecurityStatus:()=>kr,getGlobIgnores:()=>Xx,getGrepIgnores:()=>Ux,getHighRiskPermissions:()=>oX,getImageGenerationConfig:()=>J_,getJwtExpiry:()=>Am,getLinuxBubblewrapCapability:()=>cl,getLogLevel:()=>z0,getManagedConfigPath:()=>f0,getMcpAppMetadata:()=>rp,getMcpAppResourceUri:()=>Hc,getMcpApprovalDecision:()=>D5,getMcpAuthorizationServerMetadataUrls:()=>uT,getMcpPromptToolName:()=>kT,getMcpProtectedResourceMetadataUrls:()=>lT,getMcpResourceToolName:()=>IT,getMcpToolName:()=>ET,getModelName:()=>aa,getMxcContainmentProbe:()=>Eo,getMxcNativeAssetDescriptor:()=>Ow,getMxcWindowsHostPreparationDescriptor:()=>Dw,getMxcWindowsHostPreparationHelperArchitecture:()=>Nw,getPermissionProfile:()=>cm,getPersistentShellSession:()=>Of,getPersistentShellSpawnSpec:()=>iS,getProcessContainmentStatus:()=>zR,getProjectAgentDefinitionDirs:()=>yR,getProjectAgentDefinitionsDir:()=>bR,getProjectLastSessionSummary:()=>FH,getProjectMcpApproval:()=>wm,getProjectStatePath:()=>ym,getReadImagePreviewCapability:()=>q1,getRecentSessionsIndexPath:()=>To,getSubagentTeamPresetDefinition:()=>ND,getToolRiskLevel:()=>iD,getUserAgentDefinitionsDir:()=>sw,gitBranchTool:()=>Ug,gitCommitTool:()=>Bg,gitDiffTool:()=>$g,gitLogTool:()=>Xg,gitStatusTool:()=>Lg,globTool:()=>LC,grepTool:()=>jC,gzipXeno:()=>da,hasProjectOnboardingCompleted:()=>LH,hasXenoTelemetrySubscribers:()=>IV,hashContainmentConformanceReport:()=>Y7,hashPluginManifest:()=>xb,hashPluginTree:()=>OT,hookResultStatus:()=>Sn,hostedEnvironmentIdentity:()=>_ee,htmlSanitizerAuditTool:()=>$O,importLegacyXenoSkill:()=>iY,inflateXenoZlib:()=>zl,initializeSessionRuntime:()=>Fne,inspectRuntimeManifests:()=>Lne,inspectSecurityPath:()=>wo,inspectSystemPrompt:()=>$ne,inspectXenoRepositoryFreshness:()=>CQ,inspectXenoRepositorySymbol:()=>PQ,installSignalHandlers:()=>Y8,invalidateAllObservedFiles:()=>Nf,invokeXenoSkill:()=>sL,isChatModel:()=>Qv,isDangerousCommand:()=>hf,isDirectShellMessage:()=>sd,isExpiredJwt:()=>WH,isExplicitResearchPrompt:()=>iy,isJwt:()=>xm,isLocalModel:()=>Ul,isMcpAppResourceUri:()=>wT,isMcpOAuthTokenExpired:()=>X5,isMcpToolVisibleToApp:()=>db,isMcpToolVisibleToModel:()=>ub,isNotBeforeJwt:()=>v0,isPathWithinAllowed:()=>Cn,isScreenCaptureAvailable:()=>u5,isSensitiveEnvironmentKey:()=>zs,isSimpleInformationalPrompt:()=>Id,isSpeechRecognitionAvailable:()=>C5,isSupportedMcpProtocolVersion:()=>Kd,isToolAllowedByXenoSkillActivation:()=>fY,isUncOrDevicePath:()=>al,isValidAgentDefinitionName:()=>aw,isValidModel:()=>tV,isValidSessionId:()=>nx,isWorkspaceTrusted:()=>DH,isXenoAutomationOperation:()=>Pp,legacyAgentArtifactToXenoArtifact:()=>Qj,listBuiltInAgentProfiles:()=>mU,listPermissionProfiles:()=>i0,listProjectAllowedTools:()=>XH,listProjectMcpApprovals:()=>qv,listSessions:()=>pV,loadConfig:()=>Wv,loadConfiguredMcpServers:()=>rb,loadMcpConfigFile:()=>Jd,loadProjectConfig:()=>Fl,loadProjectState:()=>dn,loadRecentSessionsIndex:()=>Lr,loadSession:()=>dV,loadUserConfig:()=>y0,loadXenoSkill:()=>Lk,lookupRecentSession:()=>Gl,lsTool:()=>f2,lspDefinitionTool:()=>l2,lspDiagnosticsTool:()=>c2,lspHoverTool:()=>u2,lspReferencesTool:()=>d2,matchPermissionRule:()=>hN,matchesMcpRegistryEntryPolicy:()=>Y5,materializeXenoAutomationEvidence:()=>Gp,memoryReadTool:()=>b2,memoryWriteTool:()=>w2,mergeConfigs:()=>cV,mxcWarningsRequireWindowsHostPreparation:()=>Mw,normalizeDirectShellResultRecord:()=>oc,normalizeHookDecision:()=>Ol,normalizeMcpAppVisibility:()=>jc,normalizePermissionProfileName:()=>Nl,normalizeRepositoryRelativePath:()=>XP,normalizeSourceText:()=>_y,normalizeSubagentBranchPolicy:()=>mh,normalizeWorkingDirectory:()=>ma,normalizeXenoHostedControlAcknowledgement:()=>nte,notebookEditTool:()=>k2,notebookReadTool:()=>E2,parseContainmentReviewerTrustStore:()=>IN,parseMcpWwwAuthenticate:()=>tp,parsePermissionRule:()=>vk,parseRetryAfter:()=>Nb,parseSessionId:()=>Rm,parseShellPathReferences:()=>vE,parseSubagentRemoteMcpPolicy:()=>H9,parseSubagentRoleList:()=>U9,parseUnifiedDiff:()=>wv,parseXenoAnsi:()=>bc,parseXenoRecipeDefinition:()=>Ite,persistXenoAutomationEvidence:()=>Wp,planXenoControlRoomAction:()=>BY,pluginInfoRelevanceCandidate:()=>gX,pluginListingRelevanceCandidate:()=>hX,pluginSignaturePayload:()=>DT,preflightLocalModel:()=>eV,prepareMxcWindowsHost:()=>FR,probeXenoProvider:()=>Xoe,projectToolDefinitionsForProvider:()=>ss,projectToolSchemaForProvider:()=>RE,projectXenoControlRoom:()=>XY,providerCapabilityError:()=>Kc,providerProtocolError:()=>ge,publicKeyFingerprint:()=>hI,publishPlugin:()=>xX,rankPluginRelevance:()=>fX,readImageTool:()=>z1,readManifestFromDisk:()=>di,readPluginDetachedSignature:()=>NT,readPluginSupplyChainLockfile:()=>Ab,readSessionFormatVersion:()=>Hy,readTool:()=>EC,readXenoApiKey:()=>p5,recordRecentSession:()=>Ro,recordXenoCounter:()=>te,recordXenoEvent:()=>TV,recordXenoHistogram:()=>Ce,redactXenoShareValue:()=>fI,registerShutdownCleanup:()=>Vr,registry:()=>Hg,removeMcpServerConfig:()=>M5,removeProjectAllowedTool:()=>BH,renderAgentDefinition:()=>rU,renderAgentDefinitions:()=>nU,renderAuditReplayMarkdown:()=>aR,renderAuditReplayReport:()=>cR,renderAuditTraceMarkdown:()=>sR,renderAuditTraceReport:()=>iR,renderAuditTraceSummaries:()=>oR,renderCodingBenchmarkMarkdown:()=>N9,renderCodingBenchmarkReport:()=>D9,renderContinuationIncompleteStatus:()=>G8,renderLspDefinitionReport:()=>o2,renderLspDiagnosticsReport:()=>r2,renderLspDoctorReport:()=>a2,renderLspHoverReport:()=>s2,renderLspReferencesReport:()=>i2,renderToolContinuationInput:()=>z8,renderXenoSkillCatalog:()=>sY,repairToolExchangeHistory:()=>BE,requestBackground:()=>D_,requiresSecuredProcessLaunch:()=>Ir,resetAllPersistentShellSessions:()=>C_,resetBashBenchmarkGuards:()=>e_,resetImageGenerationConfig:()=>K_,resetMcpServerApprovals:()=>N5,resetMxcContainmentProbe:()=>Lw,resetPersistentShellSession:()=>Df,resetXenoAnsiPolicy:()=>GD,resetXenoTelemetryCardinalityForTests:()=>CV,resizeXenoRaster:()=>lA,resolveAgentDefinition:()=>YB,resolveAgentProfile:()=>gU,resolveAgentToolPolicy:()=>Ep,resolveBuiltInAgentProfile:()=>kR,resolveCommandOnPath:()=>Zi,resolveContainmentConformanceTemporaryRoot:()=>ON,resolveDelegatedExecutionMode:()=>ek,resolveExecutionSecurityLevel:()=>ml,resolveExecutionTrustMode:()=>Up,resolveInteractiveTurnMaxIterations:()=>BL,resolveModelContextTokens:()=>Pm,resolvePermissionProfile:()=>s0,resolveShellInvocation:()=>w_,resolveSubagentRemoteMcpAccess:()=>q9,resolveSubagentWorkflowAnswer:()=>uk,resolveXenoAutomationEvidencePolicy:()=>zw,resolveXenoSdkApiKey:()=>JH,runAgentHook:()=>Bl,runCommandHook:()=>Dl,runContainmentConformanceSuite:()=>B7,runDelegatedXenoTurn:()=>One,runDelegationPlan:()=>tk,runHookDefinition:()=>dm,runHooks:()=>hm,runHttpHook:()=>Ll,runPromptHook:()=>Xl,runSubagentWorkflow:()=>dk,runXenoThread:()=>$y,runXenoThreadStreamed:()=>qte,sanitizeEnvironment:()=>xo,sanitizeXenoTelemetryAttributes:()=>R0,saveConfig:()=>HH,saveMcpConfigFile:()=>nb,saveProjectState:()=>bm,saveSession:()=>uV,scaffoldPlugin:()=>wX,scanAgentDefinitions:()=>cw,scoreMemories:()=>JK,scorePluginRelevance:()=>LT,searchXenoRepositoryIndex:()=>RQ,selectXenoProviderRoute:()=>Boe,serializeXenoRecipe:()=>Rte,setLogLevel:()=>q0,setProjectLastSessionSummary:()=>Gv,setProjectMcpApproval:()=>vm,setProjectOnboardingCompleted:()=>$H,setWorkspaceTrusted:()=>NH,setupAIHandlers:()=>d5,sha256ArtifactBytes:()=>Ie,sha256ArtifactJson:()=>Xe,shouldEnableExecutionGovernance:()=>kd,shouldSourceShellProfile:()=>cu,shouldUseIsolatedStdinForCommand:()=>nu,signSharePayload:()=>ZL,sqliteAnalyzeTool:()=>CA,stripXenoAnsi:()=>fk,subscribeXenoTelemetry:()=>ix,summarizeAuditInputRecord:()=>A5,summarizeAuditTraces:()=>bp,summarizeRuntimeInput:()=>Gg,summarizeSubagentResults:()=>lk,summarizeXenoArtifactReview:()=>zp,syncMcpToolsToRegistry:()=>eX,synthesizeSkill:()=>xh,taskInputTool:()=>O2,taskOutputTool:()=>P2,taskStopTool:()=>C2,testPlugin:()=>vX,thinkTool:()=>U_,toAgentDefinitionMetadata:()=>tU,toLLMProvider:()=>QE,toolEvidenceToXenoArtifact:()=>tH,toolOperationManager:()=>q,toolRiskLevel:()=>Ya,turnDiffSummaryToXenoArtifact:()=>rH,unifiedDiffToXenoArtifact:()=>vv,unifiedExecManager:()=>iu,updateProjectState:()=>tr,upsertMcpServerConfig:()=>_5,validateAgentDefinition:()=>wR,validateCapabilityLeaseRequest:()=>xN,validateDelegationPlan:()=>CD,validateDirectEndpoint:()=>$s,validateExecutionSecurityPolicy:()=>Ai,validateJsonSchema:()=>rC,validateManifest:()=>hb,validateMcpAppResource:()=>vT,validateXenoArtifact:()=>uP,validateXenoArtifactReviewEvent:()=>qp,validateXenoControlRoomSnapshot:()=>wL,validateXenoEvidenceGraph:()=>EP,validateXenoRepositoryIndex:()=>bs,validateXenoSdkApiKey:()=>KH,validateXenoSecureExecutionContract:()=>eP,validateXenoSpecDocument:()=>UP,verifyContainmentCertification:()=>Tw,verifyContainmentCertificationApproval:()=>L7,verifyPluginSupplyChain:()=>Sb,verifySignature:()=>yk,verifySoulRecord:()=>nN,verifyXenoHostedControlCommand:()=>tte,verifyXenoHostedEnvironmentManifest:()=>xy,verifyXenoHostedEventChain:()=>Cee,verifyXenoHostedExecutionAdapterCertification:()=>Vee,verifyXenoHostedExecutionJob:()=>S$,verifyXenoHostedRunResult:()=>rte,verifyXenoHostedWebhook:()=>Fee,verifyXenoSecureShare:()=>pee,verifyXenoSessionHandoff:()=>fee,webFetchTool:()=>Uf,webSearchTool:()=>Xf,windowsDpapiProtect:()=>_k,windowsDpapiUnprotect:()=>Mk,withXenoTelemetrySpan:()=>RV,wrapXenoAnsi:()=>ZD,writePluginSupplyChainLockfile:()=>Eb,writeTool:()=>IC,xenoAnsi:()=>yc,xenoAnsiVisibleWidth:()=>gk,xenoArtifactToDiffDocument:()=>xv,xenoArtifactToLegacyAgentArtifact:()=>eH,xenoArtifactToOracleReport:()=>cte,xenoArtifactToReviewReport:()=>Hj,xenoArtifactToSourceResearchReport:()=>gte,xenoArtifactToSpecDocument:()=>kv,xenoArtifactToSpecExecution:()=>FP,xenoArtifactToToolEvidence:()=>nH,xenoArtifactToTurnDiffSummary:()=>oH,xenoHostedExecutionAdapterSigningPayload:()=>Hee,xenoOracleReportToArtifact:()=>ate,xenoRecipeFingerprint:()=>F$,xenoReviewReportToArtifact:()=>jj,xenoReviewReportToGitHubComments:()=>Vj,xenoSourceResearchReportToArtifact:()=>fte,xenoSpecArtifactIds:()=>na,xenoSpecExecutionToArtifact:()=>Iv,xenoSpecToArtifactBundle:()=>Ev});module.exports=vB(oie);hi();var Jn="0.9.20";var ZT=require("node:crypto");Ut();ut();var Us=class{filePath;sessionId;labels;sequence=0;writeQueue=Promise.resolve();constructor(e){this.filePath=e.filePath,this.sessionId=e.sessionId,this.labels={run_id:e.runId,agent_id:e.agentId,parent_agent_id:e.parentAgentId,workspace:e.workspace,model:e.model,provider:e.provider}}get path(){return this.filePath}async append(e){let n=(0,ZT.randomUUID)(),r={id:n,sequence:this.sequence++,timestamp:new Date().toISOString(),session_id:e.session_id??this.sessionId,...this.labels,...e};return this.writeQueue=this.writeQueue.then(async()=>{await yi(this.filePath,JSON.stringify(r))}),await this.writeQueue,n}async read(e){let n=await me(this.filePath);if(!n)return[];let r=wi(n);return e?.eventType&&(r=r.filter(o=>o.event_type===e.eventType)),e?.traceId&&(r=r.filter(o=>o.trace_id===e.traceId)),e?.limit!==void 0&&(r=r.slice(-Math.max(0,e.limit))),r}async tail(e=20){let n=Math.max(1,Math.min(e,500));return this.read({limit:n})}async exportJson(e){let n=await this.read();return await ye(e,JSON.stringify(n,null,2)),n.length}async flush(){await this.writeQueue}};function _B(t,e){return e.endedAt.localeCompare(t.endedAt)}function tw(t,e){t.set(e,(t.get(e)??0)+1)}function ow(t,e){let n=Date.parse(t),r=Date.parse(e);return!Number.isFinite(n)||!Number.isFinite(r)?0:Math.max(0,r-n)}function QT(t){return t.filter(e=>e.tool_name||e.event_type.startsWith("tool_")).length}function eR(t){return t.filter(e=>e.event_type==="permission_decision").length}function tR(t){return t.filter(e=>e.status==="error"||e.event_type.endsWith("_failed")).length}function nw(t){return t.split(/[_\s-]+/).filter(e=>e.length>0).map(e=>e[0].toUpperCase()+e.slice(1)).join(" ")}function rw(t){if(!t)return;let e=Object.entries(t).filter(([,n])=>typeof n=="string"||typeof n=="number"||typeof n=="boolean").slice(0,3).map(([n,r])=>`${n}=${String(r)}`);return e.length>0?e.join(" | "):void 0}function MB(t){let e=[];for(let n=1;n<t.length;n+=1){let r=t[n-1],o=t[n],i=Date.parse(r.timestamp),s=Date.parse(o.timestamp),a=Number.isFinite(i)&&Number.isFinite(s)?Math.max(0,s-i):0;e.push({fromSequence:r.sequence,toSequence:o.sequence,fromEventType:r.event_type,toEventType:o.event_type,gapMs:a})}return e.sort((n,r)=>r.gapMs-n.gapMs).slice(0,5)}function OB(t){let e=nw(t.event_type),n=t.reason;if(t.event_type==="permission_decision")e=`${t.decision==="deny"?"Denied":"Approved"} ${t.tool_name??"tool"} permission`,n=t.reason;else if(t.tool_name&&t.event_type.startsWith("tool_"))e=`${nw(t.event_type)}: ${t.tool_name}`;else if(t.event_type==="delegation_completed"){let r=typeof t.metadata?.selected_from=="object"&&t.metadata?.selected_from?String(t.metadata.selected_from.role??"unknown"):void 0;e=r?`Delegation completed via ${r}`:"Delegation completed",n=rw(t.metadata)}else t.event_type==="delegation_started"?(e="Delegation started",n=rw(t.metadata)):t.tool_name?e=`${nw(t.event_type)}: ${t.tool_name}`:n||(n=rw(t.metadata));return{sequence:t.sequence,timestamp:t.timestamp,title:e,...n?{detail:n}:{},actor:t.actor,riskLevel:t.risk_level,...t.status?{status:t.status}:{}}}function bp(t){let e=new Map;for(let r of t){let o=r.trace_id?.trim();if(!o)continue;let i=e.get(o);i?i.push(r):e.set(o,[r])}let n=[];for(let[r,o]of e.entries()){let i=[...o].sort((c,l)=>c.sequence-l.sequence),s=i[0]?.timestamp??"",a=i[i.length-1]?.timestamp??s;n.push({traceId:r,eventCount:i.length,startedAt:s,endedAt:a,durationMs:ow(s,a),toolEvents:QT(i),permissionEvents:eR(i),errorEvents:tR(i),lastEventType:i[i.length-1]?.event_type??"unknown"})}return n.sort(_B)}function nR(t,e){let n=bp(t),r=e??n[0]?.traceId;if(!r)return null;let o=t.filter(d=>d.trace_id===r).sort((d,p)=>d.sequence-p.sequence);if(o.length===0)return null;let i=new Map,s=new Map,a=new Map,c=new Map;for(let d of o){if(tw(i,d.event_type),tw(a,d.actor),tw(c,d.risk_level),!d.tool_name)continue;let p=s.get(d.tool_name)??{toolName:d.tool_name,count:0,ok:0,error:0,denied:0};p.count+=1,d.status==="error"?p.error+=1:p.ok+=1,d.decision==="deny"&&(p.denied+=1),s.set(d.tool_name,p)}let l=o[0]?.timestamp??"",u=o[o.length-1]?.timestamp??l;return{traceId:r,eventCount:o.length,startedAt:l,endedAt:u,durationMs:ow(l,u),toolEvents:QT(o),permissionEvents:eR(o),deniedPermissions:o.filter(d=>d.event_type==="permission_decision"&&d.decision==="deny").length,errorEvents:tR(o),eventTypes:Object.fromEntries([...i.entries()].sort((d,p)=>d[0].localeCompare(p[0]))),actorSummary:Object.fromEntries([...a.entries()].sort((d,p)=>d[0].localeCompare(p[0]))),riskSummary:Object.fromEntries([...c.entries()].sort((d,p)=>d[0].localeCompare(p[0]))),toolSummary:[...s.values()].sort((d,p)=>d.toolName.localeCompare(p.toolName)),topLatencyGaps:MB(o),timeline:o.map(d=>({sequence:d.sequence,timestamp:d.timestamp,eventType:d.event_type,actor:d.actor,riskLevel:d.risk_level,...d.tool_name?{toolName:d.tool_name}:{},...d.decision?{decision:d.decision}:{},...d.status?{status:d.status}:{},...d.reason?{reason:d.reason}:{}}))}}function rR(t,e){let n=bp(t),r=e??n[0]?.traceId;if(!r)return null;let o=t.filter(a=>a.trace_id===r).sort((a,c)=>a.sequence-c.sequence);if(o.length===0)return null;let i=o[0]?.timestamp??"",s=o[o.length-1]?.timestamp??i;return{traceId:r,startedAt:i,endedAt:s,durationMs:ow(i,s),steps:o.map(OB)}}function oR(t){if(t.length===0)return"No audit traces recorded.";let e=["Audit traces",""];for(let n of t)e.push(`${n.traceId} | ${n.eventCount} events | ${n.toolEvents} tool | ${n.permissionEvents} perms | ${n.errorEvents} errors | ${Math.round(n.durationMs/1e3)}s`);return e.join(`
2271
+ `));let h=t.systemPrompt??YE({cwd:e,model:n,date:t.date??new Date().toISOString().split("T")[0],identity:d,memory:f||void 0,sessionId:t.sessionId,executionMode:r}),y=t.dispatchAgent??(async w=>{let{createDelegatedXenoAgent:S}=await Promise.resolve().then(()=>(Ly(),j$)),{agent:x}=await S({cwd:e,apiKey:o,baseURL:i,model:n,...t.fallbackModels?{fallbackModels:t.fallbackModels}:{},...t.effort?{effort:t.effort}:{},maxTokens:Math.max(512,Math.min(t.maxTokens??NI,4096)),maxIterations:Math.max(3,Math.min(t.maxIterations??LI,12)),parentSystemPrompt:h,parentExecutionMode:r,subagentRole:"explorer",permissionEngine:u,...t.sandbox?{sandbox:t.sandbox}:{},...t.onPermissionRequest?{onPermissionRequest:t.onPermissionRequest}:{}}),E=()=>{x.cancelCurrentTurn()};if(w.signal?.aborted)throw E(),new Error("dispatch_agent was aborted before the helper started");w.signal?.addEventListener("abort",E,{once:!0});try{return{output:await x.run(w.prompt)}}finally{w.signal?.removeEventListener("abort",E)}});if(t.validateToolInputs===!1)throw new Error("Agent tool input validation cannot be disabled.");let b=t.toolRegistry??hn({cwd:e,askUser:t.askUser,dispatchAgent:y,...t.webSearchApiKey?{webSearchApiKey:t.webSearchApiKey}:{},...t.permissionConfig?.profile?{permissionProfile:t.permissionConfig.profile}:{},...t.ownerSessionId?{ownerSessionId:t.ownerSessionId}:{},...t.sandbox?{sandbox:t.sandbox}:{},...g?{memoryManager:g}:{},validateInputs:!0});return t.toolRegistry&&t.validateToolInputs===!0&&b.setValidateInputs(!0),{agent:new zo({apiKey:o,baseURL:i,ollamaBaseURL:s,...l!==void 0?{apiRequestTimeoutMs:l}:{},model:n,...t.fallbackModels?{fallbackModels:t.fallbackModels}:{},...t.effort?{effort:t.effort}:{},maxTokens:t.maxTokens??NI,maxIterations:t.maxIterations??LI,maxContextTokens:t.maxContextTokens,maxContextMessages:t.maxContextMessages,compressionKeepRecentMessages:t.compressionKeepRecentMessages,contextCompressionLlm:t.contextCompressionLlm,tokenEstimator:t.tokenEstimator,tokenAccountingAdapter:t.tokenAccountingAdapter,queryIdleTimeoutMs:t.queryIdleTimeoutMs,queryLeaseTimeoutMs:t.queryLeaseTimeoutMs,queryHardTimeoutMs:t.queryHardTimeoutMs,...t.reserveFinalSynthesisTurn!==void 0?{reserveFinalSynthesisTurn:t.reserveFinalSynthesisTurn}:{},systemPrompt:h,requesterLabel:t.requesterLabel,ownerSessionId:t.ownerSessionId,executionMode:r,permissionEngine:u,toolRegistry:b,sandbox:t.sandbox,onPermissionRequest:t.onPermissionRequest,onText:t.onText,onToolStart:t.onToolStart,onToolWillExecute:t.onToolWillExecute,onToolEnd:t.onToolEnd,onIteration:t.onIteration,onError:t.onError,onTranscriptError:t.onTranscriptError,onRuntimeEvent:t.onRuntimeEvent,runtimeEventBus:t.runtimeEventBus,turnDiffTracker:t.turnDiffTracker,onTurnDiff:t.onTurnDiff,onModeSwitchRequest:t.onModeSwitchRequest,onExecutionModeChanged:t.onExecutionModeChanged,completionGuard:t.completionGuard,maxCompletionGuardReminders:t.maxCompletionGuardReminders,progressGuardEveryIterations:t.progressGuardEveryIterations,...t.toolMiddleware?{toolMiddleware:t.toolMiddleware}:{},...t.promptSections?{promptSections:t.promptSections}:{},...t.promptSectionsTokenBudget!==void 0?{promptSectionsTokenBudget:t.promptSectionsTokenBudget}:{},...t.completionGuards?{completionGuards:t.completionGuards}:{},...t.provider?{provider:t.provider}:{},...t.session}),systemPrompt:h,permissionEngine:u,toolRegistry:b,...d?{identity:d}:{},...p?{memory:{resolved:p,...m?{projectSessionContext:m}:{},prompt:f}}:{}}}var H$,NI,LI,Cc=R(()=>{"use strict";H$=require("node:process");Io();Or();ih();ZE();gh();Wl();Oh();Vo();NI=8192,LI=50});var oie={};GT(oie,{AGENT_DAEMON_PROTOCOL_VERSION:()=>kc,AGENT_EFFORT_LEVELS:()=>Zb,AGENT_PERMISSION_MODES:()=>Qb,AGENT_PROFILE_EXTERNAL_ACTIONS:()=>il,ARCHITECT_CAPABILITIES:()=>IX,ARCHITECT_TOOL_NAMES:()=>kX,AgentDaemonClient:()=>Vk,AgentDaemonServer:()=>Hk,AgentDebugger:()=>Jb,AgentDefinitionLoader:()=>Ap,AgentDefinitionResolver:()=>iw,AgentEvaluator:()=>Kb,AgentEventStore:()=>wd,AgentHookRunner:()=>um,AgentInterruptedError:()=>kn,AgentLoop:()=>zo,AgentProfileValidationError:()=>Ar,AgentProtocol:()=>Zy,AgentRegistry:()=>Yy,AgentRunController:()=>jk,AgentRunError:()=>oh,AgentRunStore:()=>vd,AppAgentFactory:()=>lp,AppContextInjector:()=>Cs,AppContextManager:()=>ci,AppServerProtocolError:()=>z,AppServerRemoteError:()=>ni,AuditLogger:()=>Us,AutoCheckpointHandler:()=>sh,AutoMemory:()=>xx,AutoPermissionClassifier:()=>kh,BUILT_IN_XENO_PROVIDER_PRESETS:()=>aB,BackgroundProcessManager:()=>su,COMPAT_TOOL_ALIASES:()=>lE,CONFIG_VERSION:()=>Uv,CheckpointManager:()=>pr,CodeValidator:()=>Wb,CommandHookRunner:()=>fm,CompletionGuardRegistry:()=>fc,ContainmentApprovalError:()=>ce,ContainmentCertificationError:()=>ae,ContextManager:()=>od,ConversationStore:()=>tb,CrossAppRouter:()=>Ky,CrossAppRouterError:()=>Ts,DEFAULT_API_KEY:()=>An,DEFAULT_IMAGE_MODEL:()=>Bf,DEFAULT_MEMORY_BUDGETS:()=>ux,DEFAULT_MODEL:()=>Mi,DEFAULT_PROMPT_SECTIONS_TOKEN_BUDGET:()=>ld,DEFAULT_PROTECTED_STATE_KEY_NAME:()=>FN,DEFAULT_PROTECTED_STATE_SERVICE:()=>UN,DEFAULT_SUBAGENT_BRANCH_POLICY:()=>lh,DEFAULT_SUBAGENT_REMOTE_MCP_BY_ROLE:()=>dh,DEFAULT_SUBAGENT_ROLES:()=>hc,DEFAULT_SUBAGENT_ROLE_PRECEDENCE:()=>uh,DEFAULT_SUBAGENT_TEAM_PRESET:()=>cs,DIRECT_SHELL_CONTEXT_WARNING:()=>Qg,DOCS_CAPABILITIES:()=>DX,DOCS_TOOL_NAMES:()=>OX,DualLLMProvider:()=>Nc,ENGINE_CAPABILITIES:()=>CX,ENGINE_TOOL_NAMES:()=>PX,ElectronAgentBridge:()=>Jy,EpisodicStore:()=>wc,ExecutionGovernance:()=>Tc,ExecutionSecurityError:()=>_n,FALLBACK_MODELS:()=>S0,FileXenoArtifactRepository:()=>mv,FileXenoProviderConnectionStore:()=>HT,FileXenoShareRegistry:()=>yI,HIGH_RISK_PERMISSIONS:()=>MT,HookRunner:()=>pm,HookRuntime:()=>mm,HttpHookRunner:()=>gm,IDENTITY_PATHS:()=>ro,IdentityLoader:()=>ls,IdentityResolver:()=>us,InMemoryXenoArtifactRepository:()=>Zs,InMemoryXenoCapabilityLeaseRegistry:()=>xk,InMemoryXenoTelemetryCollector:()=>ox,InteractiveChatTurnGovernance:()=>oy,InteractiveTurnGovernance:()=>ys,JsonSchemaCompilationError:()=>Ni,LlmClient:()=>rc,LocalLLMProvider:()=>_s,LogLevel:()=>wx,MANIFEST_FILENAME:()=>ip,MAX_CONTAINMENT_APPROVAL_AGE_MS:()=>EN,MAX_CONTAINMENT_CERTIFICATION_BYTES:()=>Ew,MAX_CONTAINMENT_CERTIFICATION_LIFETIME_MS:()=>LR,MAX_DIRECT_SHELL_OUTPUT_CHARS:()=>XE,MCPHttpTransportError:()=>He,MCPManager:()=>mb,MCPOAuthClient:()=>lb,MCPServer:()=>fb,MCP_APPS_EXTENSION_ID:()=>Rs,MCP_APP_MIME_TYPE:()=>np,MCP_APP_RESOURCE_SCHEME:()=>V5,MCP_PROTOCOL_VERSION:()=>br,MCP_SUPPORTED_PROTOCOL_VERSIONS:()=>sb,MEMORY_FILES:()=>dx,MOTION_CAPABILITIES:()=>VX,MOTION_SYSTEM_PROMPT:()=>eT,MOTION_TOOL_NAMES:()=>HX,MemoryManager:()=>Xr,MessageFlow:()=>cc,ModelProviderRegistry:()=>Hl,MonitorManager:()=>Wk,MonitorStopTool:()=>Kk,MonitorTool:()=>Jk,NOTES_CAPABILITIES:()=>UX,NOTES_TOOL_NAMES:()=>BX,OtelExporter:()=>Zk,PIXEL_CAPABILITIES:()=>jX,PIXEL_SYSTEM_PROMPT:()=>QI,PIXEL_TOOL_NAMES:()=>FX,PROCESS_TREE_ADAPTERS:()=>xB,PROJECT_STATE_VERSION:()=>d0,PermissionEngine:()=>Kt,PluginEventBus:()=>Gc,PluginHost:()=>Jc,PluginManager:()=>dX,PluginMarketplace:()=>kb,PluginSandbox:()=>qc,PluginSettingsManager:()=>bb,PluginToolBuilder:()=>yb,ProfileManager:()=>tx,PromptHookRunner:()=>lm,PromptSectionRegistry:()=>mc,ProviderError:()=>pe,QueryLifecycle:()=>lc,REQUIRED_CONTAINMENT_CONFORMANCE_CHECKS:()=>ul,SDK_DEFAULT_MAX_ITERATIONS:()=>LI,SDK_DEFAULT_MAX_TOKENS:()=>NI,SDK_VERSION:()=>Jn,SESSION_FORMAT_VERSION:()=>nl,SHEETS_CAPABILITIES:()=>LX,SHEETS_TOOL_NAMES:()=>NX,SLIDES_CAPABILITIES:()=>XX,SLIDES_TOOL_NAMES:()=>$X,SOUND_CAPABILITIES:()=>zX,SOUND_SYSTEM_PROMPT:()=>tT,SOUND_TOOL_NAMES:()=>qX,SSETransport:()=>ui,SUBAGENT_ROLE_ALIASES:()=>MD,SUBAGENT_TEAM_PRESETS:()=>OD,ScreenCapture:()=>Gy,SessionLock:()=>lo,SessionLockManager:()=>lo,SessionManager:()=>ai,SessionRegistry:()=>Gt,SkillStore:()=>vc,SoulEngine:()=>Sh,StdioTransport:()=>Fc,StreamableHTTPTransport:()=>Uc,THREE_D_CAPABILITIES:()=>RX,THREE_D_TOOL_NAMES:()=>TX,TOOL_OPERATION_SCHEMA_VERSION:()=>ru,TaskListManager:()=>ts,ToolFailureLoopGuard:()=>dc,ToolMiddlewareRegistry:()=>pc,ToolOperationManager:()=>Af,ToolOrchestrator:()=>nd,ToolRegistry:()=>ns,ToolSchemaProjectionError:()=>ht,TranscriptWriter:()=>ii,TurnDiffTracker:()=>kE,TurnRestoreManager:()=>Is,UNBOUNDED_OPERATION_CONTINUATION_LIMIT:()=>ou,UnifiedExecError:()=>sr,UnifiedExecManager:()=>Ef,UsageAccumulator:()=>qh,UsageLedger:()=>Yk,VectorMemoryStore:()=>Co,WORKFLOW_CAPABILITIES:()=>MX,WORKFLOW_TOOL_NAMES:()=>_X,WorkflowPlanner:()=>Ic,WorkflowRuntime:()=>Gk,WorkflowStore:()=>Vh,WorkspaceIndex:()=>Wy,XENO_AGENT_PROFILE_SCHEMA_VERSION:()=>Tp,XENO_API_BASE:()=>nr,XENO_APP_PROTOCOL_V2_METHODS:()=>$I,XENO_APP_PROTOCOL_VERSIONS:()=>Xy,XENO_ARTIFACT_ACTOR_KINDS:()=>Kw,XENO_ARTIFACT_FILE_REPOSITORY_SCHEMA_VERSION:()=>yv,XENO_ARTIFACT_SCHEMA_VERSION:()=>be,XENO_ARTIFACT_SENSITIVITIES:()=>Jw,XENO_ARTIFACT_STATES:()=>Ww,XENO_AUTOMATION_OPERATIONS:()=>Rp,XENO_AUTOMATION_PROTOCOL_VERSION:()=>Vs,XENO_BUILTIN_ARTIFACT_KINDS:()=>Gw,XENO_CAPABILITY_LEASE_SCHEMA_VERSION:()=>wN,XENO_CONTAINMENT_APPROVAL_SCHEMA:()=>Th,XENO_CONTAINMENT_CERTIFICATION_SCHEMA:()=>_p,XENO_CONTAINMENT_CONFORMANCE_SCHEMA:()=>MN,XENO_CONTAINMENT_REVIEWER_TRUST_STORE_SCHEMA:()=>Rh,XENO_CONTROL_ROOM_SCHEMA_VERSION:()=>Gh,XENO_DEFLATE_CODEC_NAME:()=>_0,XENO_DEFLATE_CODEC_VERSION:()=>M0,XENO_EVIDENCE_EDGE_TYPES:()=>wl,XENO_EVIDENCE_GRAPH_SCHEMA_VERSION:()=>yl,XENO_EVIDENCE_NODE_TYPES:()=>bl,XENO_GIF_ANIMATION_POLICY:()=>iM,XENO_GIF_CODEC_NAME:()=>rM,XENO_GIF_CODEC_VERSION:()=>oM,XENO_HANDOFF_SCHEMA_VERSION:()=>gy,XENO_HOSTED_CONTROL_SCHEMA_VERSION:()=>EI,XENO_HOSTED_ENVIRONMENT_SCHEMA_VERSION:()=>Cd,XENO_HOSTED_EVENT_SCHEMA_VERSION:()=>wy,XENO_HOSTED_EXECUTION_ADAPTER_CERTIFICATION_SCHEMA:()=>Md,XENO_HOSTED_EXECUTION_ADAPTER_MAX_CERTIFICATE_LIFETIME_MS:()=>g$,XENO_HOSTED_EXECUTION_ADAPTER_PROTOCOL_VERSION:()=>wI,XENO_HOSTED_EXECUTION_PROTOCOL_VERSION:()=>w$,XENO_HOSTED_EXECUTION_TOOL_NAMES:()=>v$,XENO_HOSTED_RESULT_SCHEMA_VERSION:()=>kI,XENO_HOSTED_RUN_SCHEMA_VERSION:()=>Iee,XENO_HOSTED_TRIGGER_SCHEMA_VERSION:()=>Tee,XENO_JPEG_CODEC_NAME:()=>fM,XENO_JPEG_CODEC_VERSION:()=>gM,XENO_MXC_ADAPTER_NAME:()=>Lp,XENO_MXC_POLICY_VERSION:()=>_w,XENO_MXC_VERSION:()=>So,XENO_ORACLE_REPORT_SCHEMA_VERSION:()=>_I,XENO_PLUGIN_LOCK_FILENAME:()=>sp,XENO_PLUGIN_LOCK_SCHEMA_VERSION:()=>Wc,XENO_PLUGIN_SIGNATURE_FILENAME:()=>Ps,XENO_PLUGIN_SIGNATURE_SCHEMA_VERSION:()=>vb,XENO_PROVIDER_CATALOG_SCHEMA_VERSION:()=>UT,XENO_PROVIDER_CONNECTION_STORE_SCHEMA_VERSION:()=>zb,XENO_RASTER_CODEC_NAME:()=>Uo,XENO_RASTER_CODEC_VERSION:()=>dg,XENO_RASTER_PREVIEW_FORMATS:()=>sA,XENO_RECIPE_SCHEMA_VERSION:()=>U$,XENO_REPOSITORY_INDEX_SCHEMA_VERSION:()=>ay,XENO_REVIEW_DIMENSIONS:()=>qP,XENO_REVIEW_EVIDENCE_KINDS:()=>zP,XENO_REVIEW_REPORT_SCHEMA_VERSION:()=>Pv,XENO_RT_DEFAULT_URL:()=>Mr,XENO_SECURE_EXECUTION_CONTRACT_SCHEMA_VERSION:()=>Uw,XENO_SHARE_REGISTRY_SCHEMA_VERSION:()=>Pd,XENO_SHARE_SCHEMA_VERSION:()=>fy,XENO_SKILL_SCHEMA_VERSION:()=>hs,XENO_SOURCE_RESEARCH_SCHEMA_VERSION:()=>DI,XENO_SPEC_EXECUTION_SCHEMA_VERSION:()=>Pl,XENO_SPEC_SCHEMA_VERSION:()=>ra,XENO_SVG_RENDERER_NAME:()=>BM,XENO_SVG_RENDERER_VERSION:()=>UM,XENO_TELEMETRY_SCHEMA_VERSION:()=>T0,XENO_VP8_CODEC_NAME:()=>u1,XENO_VP8_CODEC_VERSION:()=>d1,XENO_WEBP_ANIMATION_POLICY:()=>w1,XENO_WEBP_CODEC_NAME:()=>y1,XENO_WEBP_CODEC_VERSION:()=>b1,XenoAppServer:()=>Fy,XenoAppServerV2Client:()=>qI,XenoArtifactRepositoryError:()=>U,XenoArtifactReviewService:()=>ta,XenoArtifactStateTransitionError:()=>Vp,XenoArtifactValidationError:()=>Ii,XenoAuthError:()=>sa,XenoAutomationError:()=>L,XenoCapabilityLeaseError:()=>wt,XenoControlRoomValidationError:()=>Le,XenoDiffParseError:()=>Pt,XenoEvidenceGraphBuilder:()=>lv,XenoEvidenceGraphValidationError:()=>Yp,XenoGovernedAutomationExecutor:()=>rv,XenoLoopbackAutomationAdapter:()=>iv,XenoMultiAgentReviewCoordinator:()=>Rv,XenoOracleCoordinator:()=>RI,XenoOracleValidationError:()=>vn,XenoProviderCatalog:()=>el,XenoRecipeValidationError:()=>xt,XenoRepositoryIndexFileStore:()=>pI,XenoReviewValidationError:()=>pt,XenoRuntimeEventBus:()=>qo,XenoSecureExecutionContractError:()=>Ke,XenoSourceResearchValidationError:()=>ei,XenoSpecLifecycleService:()=>Av,XenoSpecValidationError:()=>dt,XenoTraceGraphRecorder:()=>ec,acquireControlPlaneLock:()=>On,activateSessionRuntime:()=>jne,addProjectAllowedDirectory:()=>Hv,addProjectAllowedTool:()=>jv,agentDefinitionFromProfile:()=>fU,agentProfileFromDefinition:()=>IR,appendBoundedShellOutput:()=>_f,appendGuidanceToResult:()=>zE,approveMcpServer:()=>ob,areSignalHandlersInstalled:()=>Z8,artifactCompareTool:()=>JO,askUserTool:()=>F_,assertDirectEndpointResolution:()=>Yc,assertRequiredXenoAutomationEvidence:()=>kl,assertSupportedMcpProtocolVersion:()=>ab,assertUsableXenoApiKey:()=>Yv,assertValidMcpAppResource:()=>pb,assertValidXenoArtifact:()=>Ye,assertValidXenoAutomationAdapterManifest:()=>hl,assertValidXenoAutomationRequest:()=>Vw,assertValidXenoEvidenceGraph:()=>ea,assertValidXenoHostedExecutionJob:()=>Gee,assertValidXenoOracleReport:()=>Cy,assertValidXenoRecipeDefinition:()=>Xd,assertValidXenoReviewPack:()=>Cv,assertValidXenoReviewReport:()=>_l,assertValidXenoReviewTarget:()=>_v,assertValidXenoSecureExecutionContract:()=>Fp,assertValidXenoSourceResearchReport:()=>Oy,assertValidXenoSpecDocument:()=>om,assertValidXenoSpecExecution:()=>Tv,assertXenoArtifactStateTransition:()=>Al,assertXenoAutomationAdapterConformant:()=>OF,assertXenoAutomationAuthority:()=>Hp,auditRiskLevelForTool:()=>S5,authorizeShellExecution:()=>xf,backgroundProcessManager:()=>oe,bashTool:()=>N_,benchmarkCodingTools:()=>O9,bridgeXenoTelemetryToOpenTelemetry:()=>PV,buildAtomicMessageGroups:()=>LE,buildAuditReplayReport:()=>rR,buildAuditTraceReport:()=>nR,buildContainedProcessSpec:()=>JR,buildContractLedgerGuidance:()=>Qh,buildDefaultSubagentTasks:()=>Y9,buildDelegatedRoleSystemPrompt:()=>ck,buildHookEnvironment:()=>Lv,buildLinuxBubblewrapProcessSpec:()=>Cp,buildLspDefinitionReport:()=>GA,buildLspDiagnosticsReport:()=>zA,buildLspDoctorReport:()=>e2,buildLspHoverReport:()=>JA,buildLspReferencesReport:()=>WA,buildMotionSystemPrompt:()=>Oc,buildPixelSystemPrompt:()=>Mc,buildProcessHardenedProcessSpec:()=>WR,buildProjectBudgetFinalizationGuidance:()=>IL,buildProjectExecutionGuidance:()=>ny,buildProjectExecutionProfile:()=>ty,buildPromptMemoryContext:()=>Une,buildSecuredProcessSpec:()=>Gs,buildSoundSystemPrompt:()=>Dc,buildSystemPrompt:()=>YE,buildToolFailureGuardResult:()=>rh,buildXenoArtifactReviewAnchor:()=>Sv,buildXenoAutomationCapabilityUse:()=>qw,buildXenoRepositoryIndex:()=>VL,buildXenoRepositoryIndexWithEmbeddings:()=>TQ,buildXenoSecureExecutionContract:()=>zU,cachedModelContextWindow:()=>Zv,calculateCost:()=>Qy,canTransitionXenoArtifactState:()=>dP,canXenoRasterPreview:()=>pg,canonicalPayload:()=>xc,canonicalizeArtifactJson:()=>Q,canonicalizeMcpResourceUri:()=>Bc,canonicalizeSecurityPath:()=>ln,canonicalizeToolName:()=>V,checkSandbox:()=>nD,classifyProviderHttpError:()=>Lb,cleanupReadImagePreviews:()=>bA,cleanupSessionRuntime:()=>Vne,clearMcpServerApproval:()=>O5,clearProjectAllowedTools:()=>UH,clearProjectLastSessionSummary:()=>jH,clearProjectMcpApproval:()=>Vv,clearProjectMcpApprovals:()=>zv,clipXenoAnsi:()=>YD,coerceSubagentRole:()=>ph,coerceSubagentTeamPreset:()=>DD,compileAgentProfile:()=>AR,compileJsonSchema:()=>Km,compileToolInputSchema:()=>ba,compileXenoRecipe:()=>Tte,compileXenoSkillActivation:()=>mY,configureImageGeneration:()=>W_,configureSearch:()=>Lf,configureSearchPermissionProfile:()=>$f,configureXenoAnsi:()=>zD,containmentApprovalSigningPayload:()=>kN,containmentCertificationSigningPayload:()=>$R,copyTextToClipboard:()=>b5,create3DTools:()=>Rb,createAgentDefinitionFile:()=>oU,createAgentDefinitionPromptSection:()=>eU,createAgentRunId:()=>fL,createAppServerV2HttpTransport:()=>ene,createArchitectTools:()=>Tb,createArtifactCompareTool:()=>Mu,createAskUserTool:()=>pu,createAudioTools:()=>zy,createAuditBackedPermissionEngine:()=>Xne,createBashTool:()=>lu,createBenchBashMiddleware:()=>sy,createCommandBackedProtectedStateStore:()=>HN,createDefaultToolRegistry:()=>hn,createDelegatedXenoAgent:()=>Ny,createDirectProvider:()=>sB,createDirectShellMessage:()=>id,createDispatchAgentTool:()=>uu,createDocsTools:()=>_b,createEd25519Signer:()=>tN,createEditTool:()=>Ql,createElfAnalyzeTool:()=>Ru,createEngineTools:()=>Pb,createGcodeAnalyzeTool:()=>Pu,createGenerateImageTool:()=>fu,createGlobTool:()=>eu,createGovernanceExtensions:()=>vQ,createGrepTool:()=>tu,createHtmlSanitizerAuditTool:()=>Cu,createImageTools:()=>Vy,createLsTool:()=>Bu,createLspDefinitionTool:()=>Nu,createLspDiagnosticsTool:()=>Xu,createLspHoverTool:()=>$u,createLspReferencesTool:()=>Lu,createMcpAppCapabilities:()=>bT,createMcpAppExtensionCapabilities:()=>q5,createMcpPkcePair:()=>dT,createMcpPromptRegisteredTool:()=>RT,createMcpRegisteredTool:()=>TT,createMcpResourceRegisteredTool:()=>PT,createMemoryProtectedStateStore:()=>Q7,createMemoryReadTool:()=>Uu,createMemoryWriteTool:()=>Fu,createNotebookEditTool:()=>Hu,createNotebookReadTool:()=>ju,createNotesTools:()=>Db,createOsProtectedStateStore:()=>VN,createProtectedStateEnvelopeCipher:()=>eY,createReadImageTool:()=>ku,createReadTool:()=>Yl,createSheetsTools:()=>Mb,createSlidesTools:()=>Ob,createSpeechRecognizer:()=>P5,createSqliteAnalyzeTool:()=>Ga,createTaskInputTool:()=>zu,createTaskListTools:()=>Fg,createTaskOutputTool:()=>Vu,createTaskStopTool:()=>qu,createThinkTool:()=>du,createToolAlias:()=>eo,createToolRuntimeContext:()=>Kl,createUnavailableProtectedStateStore:()=>Ac,createVideoTools:()=>qy,createWebSearchTool:()=>z_,createWindowsDpapiProtectedCipher:()=>Z7,createWindowsDpapiProtectedFileStore:()=>jN,createWorkflowTools:()=>Cb,createWriteTool:()=>Zl,createXenoAgent:()=>gr,createXenoAutomationConformanceReport:()=>wP,createXenoGovernedAutomationTools:()=>VF,createXenoHostedControlCommand:()=>k$,createXenoHostedEnvironmentManifest:()=>Ree,createXenoHostedEvent:()=>Pee,createXenoHostedExecutionBoundaryReceipt:()=>x$,createXenoHostedRunResult:()=>I$,createXenoRasterPreview:()=>mg,createXenoSecureShare:()=>dee,createXenoSessionHandoff:()=>mee,createXenoShareSigningIdentity:()=>uee,createXenoSkillTool:()=>pY,createXenoSourceResearchExcerpt:()=>mte,createXenoSourceResearchReport:()=>pte,currentExecutionAdapterStatus:()=>WU,decodeJwtPayload:()=>Sm,decodeXenoBmp:()=>fg,decodeXenoGif:()=>Ff,decodeXenoGifAnimation:()=>aM,decodeXenoJpeg:()=>Wf,decodeXenoNetpbm:()=>gg,decodeXenoPng:()=>cA,decodeXenoSvg:()=>e1,decodeXenoVp8:()=>xu,decodeXenoWebp:()=>cg,defaultToolRuntimeContext:()=>F,defaultXenoReviewPack:()=>Fj,deflateXenoZlib:()=>ua,deleteSession:()=>mV,denyMcpServer:()=>ib,deriveHostedIdempotencyKey:()=>Mee,describeXenoAutomationOperation:()=>Yn,detectLanguage:()=>Gb,detectPluginRepositorySignals:()=>mX,detectRepositoryDocumentKind:()=>qL,detectRepositoryLanguage:()=>dI,detectXenoSpecDrift:()=>Nj,deterministicReduce:()=>rk,digestMessages:()=>DE,directProviderConfigFromConnection:()=>Uoe,discoverXenoSkills:()=>oY,dispatchAgentTool:()=>B_,editTool:()=>RC,elfAnalyzeTool:()=>TO,emitXenoTelemetry:()=>Om,encodeXenoPngRgb:()=>Ha,enforceShellCommandPolicy:()=>Wg,enforceToolPolicy:()=>td,ensureConfigDir:()=>ia,ensureDurableMessageIds:()=>Zg,ensureProjectStateDir:()=>h0,estimateFullRequestBudget:()=>NE,evaluateContainmentUiRestrictions:()=>DN,evaluatePermissionProfileNetworkUrl:()=>er,evaluateXenoCapabilityEligibility:()=>vN,extractJsonObject:()=>vh,extractToolPath:()=>rs,findXenoSkill:()=>$k,fingerprintXenoSecureExecutionContract:()=>GU,forgetRecentSession:()=>yx,forgetRecentSessionById:()=>fa,formatBoundedShellOutput:()=>Un,formatCost:()=>h5,formatDirectShellContext:()=>ic,formatJsonSchemaErrors:()=>Ym,formatModelList:()=>oV,formatPromptContextBreakdown:()=>Bne,gcodeAnalyzeTool:()=>OO,generateImageTool:()=>Y_,generateSessionId:()=>Oi,getAgentHome:()=>RH,getAgentRunDir:()=>DY,getAgentRunStoreDir:()=>OY,getAvailableModels:()=>km,getBenchmarkComputeBudgetHintForCommand:()=>bf,getBenchmarkForegroundTimeoutForCommand:()=>yf,getBestExecutionSecurityStatus:()=>Xw,getChatModels:()=>rV,getConfigDir:()=>_r,getDefaultProviderRegistry:()=>Cm,getExecutionSecurityCapabilityReport:()=>qR,getExecutionSecurityStatus:()=>kr,getGlobIgnores:()=>Xx,getGrepIgnores:()=>Ux,getHighRiskPermissions:()=>oX,getImageGenerationConfig:()=>J_,getJwtExpiry:()=>Am,getLinuxBubblewrapCapability:()=>cl,getLogLevel:()=>z0,getManagedConfigPath:()=>f0,getMcpAppMetadata:()=>rp,getMcpAppResourceUri:()=>Hc,getMcpApprovalDecision:()=>D5,getMcpAuthorizationServerMetadataUrls:()=>uT,getMcpPromptToolName:()=>kT,getMcpProtectedResourceMetadataUrls:()=>lT,getMcpResourceToolName:()=>IT,getMcpToolName:()=>ET,getModelName:()=>aa,getMxcContainmentProbe:()=>Eo,getMxcNativeAssetDescriptor:()=>Ow,getMxcWindowsHostPreparationDescriptor:()=>Dw,getMxcWindowsHostPreparationHelperArchitecture:()=>Nw,getPermissionProfile:()=>cm,getPersistentShellSession:()=>Of,getPersistentShellSpawnSpec:()=>iS,getProcessContainmentStatus:()=>zR,getProjectAgentDefinitionDirs:()=>yR,getProjectAgentDefinitionsDir:()=>bR,getProjectLastSessionSummary:()=>FH,getProjectMcpApproval:()=>wm,getProjectStatePath:()=>ym,getReadImagePreviewCapability:()=>q1,getRecentSessionsIndexPath:()=>To,getSubagentTeamPresetDefinition:()=>ND,getToolRiskLevel:()=>iD,getUserAgentDefinitionsDir:()=>sw,gitBranchTool:()=>Ug,gitCommitTool:()=>Bg,gitDiffTool:()=>$g,gitLogTool:()=>Xg,gitStatusTool:()=>Lg,globTool:()=>LC,grepTool:()=>jC,gzipXeno:()=>da,hasProjectOnboardingCompleted:()=>LH,hasXenoTelemetrySubscribers:()=>IV,hashContainmentConformanceReport:()=>Y7,hashPluginManifest:()=>xb,hashPluginTree:()=>OT,hookResultStatus:()=>Sn,hostedEnvironmentIdentity:()=>_ee,htmlSanitizerAuditTool:()=>$O,importLegacyXenoSkill:()=>iY,inflateXenoZlib:()=>zl,initializeSessionRuntime:()=>Fne,inspectRuntimeManifests:()=>Lne,inspectSecurityPath:()=>wo,inspectSystemPrompt:()=>$ne,inspectXenoRepositoryFreshness:()=>CQ,inspectXenoRepositorySymbol:()=>PQ,installSignalHandlers:()=>Y8,invalidateAllObservedFiles:()=>Nf,invokeXenoSkill:()=>sL,isChatModel:()=>Qv,isDangerousCommand:()=>hf,isDirectShellMessage:()=>sd,isExpiredJwt:()=>WH,isExplicitResearchPrompt:()=>iy,isJwt:()=>xm,isLocalModel:()=>Ul,isMcpAppResourceUri:()=>wT,isMcpOAuthTokenExpired:()=>X5,isMcpToolVisibleToApp:()=>db,isMcpToolVisibleToModel:()=>ub,isNotBeforeJwt:()=>v0,isPathWithinAllowed:()=>Cn,isScreenCaptureAvailable:()=>u5,isSensitiveEnvironmentKey:()=>zs,isSimpleInformationalPrompt:()=>Id,isSpeechRecognitionAvailable:()=>C5,isSupportedMcpProtocolVersion:()=>Kd,isToolAllowedByXenoSkillActivation:()=>fY,isUncOrDevicePath:()=>al,isValidAgentDefinitionName:()=>aw,isValidModel:()=>tV,isValidSessionId:()=>nx,isWorkspaceTrusted:()=>DH,isXenoAutomationOperation:()=>Pp,legacyAgentArtifactToXenoArtifact:()=>Qj,listBuiltInAgentProfiles:()=>mU,listPermissionProfiles:()=>i0,listProjectAllowedTools:()=>XH,listProjectMcpApprovals:()=>qv,listSessions:()=>pV,loadConfig:()=>Wv,loadConfiguredMcpServers:()=>rb,loadMcpConfigFile:()=>Jd,loadProjectConfig:()=>Fl,loadProjectState:()=>dn,loadRecentSessionsIndex:()=>Lr,loadSession:()=>dV,loadUserConfig:()=>y0,loadXenoSkill:()=>Lk,lookupRecentSession:()=>Gl,lsTool:()=>f2,lspDefinitionTool:()=>l2,lspDiagnosticsTool:()=>c2,lspHoverTool:()=>u2,lspReferencesTool:()=>d2,matchPermissionRule:()=>hN,matchesMcpRegistryEntryPolicy:()=>Y5,materializeXenoAutomationEvidence:()=>Gp,memoryReadTool:()=>b2,memoryWriteTool:()=>w2,mergeConfigs:()=>cV,mxcWarningsRequireWindowsHostPreparation:()=>Mw,normalizeDirectShellResultRecord:()=>oc,normalizeHookDecision:()=>Ol,normalizeMcpAppVisibility:()=>jc,normalizePermissionProfileName:()=>Nl,normalizeRepositoryRelativePath:()=>XP,normalizeSourceText:()=>_y,normalizeSubagentBranchPolicy:()=>mh,normalizeWorkingDirectory:()=>ma,normalizeXenoHostedControlAcknowledgement:()=>nte,notebookEditTool:()=>k2,notebookReadTool:()=>E2,parseContainmentReviewerTrustStore:()=>IN,parseMcpWwwAuthenticate:()=>tp,parsePermissionRule:()=>vk,parseRetryAfter:()=>Nb,parseSessionId:()=>Rm,parseShellPathReferences:()=>vE,parseSubagentRemoteMcpPolicy:()=>H9,parseSubagentRoleList:()=>U9,parseUnifiedDiff:()=>wv,parseXenoAnsi:()=>bc,parseXenoRecipeDefinition:()=>Ite,persistXenoAutomationEvidence:()=>Wp,planXenoControlRoomAction:()=>BY,pluginInfoRelevanceCandidate:()=>gX,pluginListingRelevanceCandidate:()=>hX,pluginSignaturePayload:()=>DT,preflightLocalModel:()=>eV,prepareMxcWindowsHost:()=>FR,probeXenoProvider:()=>Xoe,projectToolDefinitionsForProvider:()=>ss,projectToolSchemaForProvider:()=>RE,projectXenoControlRoom:()=>XY,providerCapabilityError:()=>Kc,providerProtocolError:()=>ge,publicKeyFingerprint:()=>hI,publishPlugin:()=>xX,rankPluginRelevance:()=>fX,readImageTool:()=>z1,readManifestFromDisk:()=>di,readPluginDetachedSignature:()=>NT,readPluginSupplyChainLockfile:()=>Ab,readSessionFormatVersion:()=>Hy,readTool:()=>EC,readXenoApiKey:()=>p5,recordRecentSession:()=>Ro,recordXenoCounter:()=>te,recordXenoEvent:()=>TV,recordXenoHistogram:()=>Ce,redactXenoShareValue:()=>fI,registerShutdownCleanup:()=>Vr,registry:()=>Hg,removeMcpServerConfig:()=>M5,removeProjectAllowedTool:()=>BH,renderAgentDefinition:()=>rU,renderAgentDefinitions:()=>nU,renderAuditReplayMarkdown:()=>aR,renderAuditReplayReport:()=>cR,renderAuditTraceMarkdown:()=>sR,renderAuditTraceReport:()=>iR,renderAuditTraceSummaries:()=>oR,renderCodingBenchmarkMarkdown:()=>N9,renderCodingBenchmarkReport:()=>D9,renderContinuationIncompleteStatus:()=>G8,renderLspDefinitionReport:()=>o2,renderLspDiagnosticsReport:()=>r2,renderLspDoctorReport:()=>a2,renderLspHoverReport:()=>s2,renderLspReferencesReport:()=>i2,renderToolContinuationInput:()=>z8,renderXenoSkillCatalog:()=>sY,repairToolExchangeHistory:()=>BE,requestBackground:()=>D_,requiresSecuredProcessLaunch:()=>Ir,resetAllPersistentShellSessions:()=>C_,resetBashBenchmarkGuards:()=>e_,resetImageGenerationConfig:()=>K_,resetMcpServerApprovals:()=>N5,resetMxcContainmentProbe:()=>Lw,resetPersistentShellSession:()=>Df,resetXenoAnsiPolicy:()=>GD,resetXenoTelemetryCardinalityForTests:()=>CV,resizeXenoRaster:()=>lA,resolveAgentDefinition:()=>YB,resolveAgentProfile:()=>gU,resolveAgentToolPolicy:()=>Ep,resolveBuiltInAgentProfile:()=>kR,resolveCommandOnPath:()=>Zi,resolveContainmentConformanceTemporaryRoot:()=>ON,resolveDelegatedExecutionMode:()=>ek,resolveExecutionSecurityLevel:()=>ml,resolveExecutionTrustMode:()=>Up,resolveInteractiveTurnMaxIterations:()=>BL,resolveModelContextTokens:()=>Pm,resolvePermissionProfile:()=>s0,resolveShellInvocation:()=>w_,resolveSubagentRemoteMcpAccess:()=>q9,resolveSubagentWorkflowAnswer:()=>uk,resolveXenoAutomationEvidencePolicy:()=>zw,resolveXenoSdkApiKey:()=>JH,runAgentHook:()=>Bl,runCommandHook:()=>Dl,runContainmentConformanceSuite:()=>B7,runDelegatedXenoTurn:()=>One,runDelegationPlan:()=>tk,runHookDefinition:()=>dm,runHooks:()=>hm,runHttpHook:()=>Ll,runPromptHook:()=>Xl,runSubagentWorkflow:()=>dk,runXenoThread:()=>$y,runXenoThreadStreamed:()=>qte,sanitizeEnvironment:()=>xo,sanitizeXenoTelemetryAttributes:()=>R0,saveConfig:()=>HH,saveMcpConfigFile:()=>nb,saveProjectState:()=>bm,saveSession:()=>uV,scaffoldPlugin:()=>wX,scanAgentDefinitions:()=>cw,scoreMemories:()=>JK,scorePluginRelevance:()=>LT,searchXenoRepositoryIndex:()=>RQ,selectXenoProviderRoute:()=>Boe,serializeXenoRecipe:()=>Rte,setLogLevel:()=>q0,setProjectLastSessionSummary:()=>Gv,setProjectMcpApproval:()=>vm,setProjectOnboardingCompleted:()=>$H,setWorkspaceTrusted:()=>NH,setupAIHandlers:()=>d5,sha256ArtifactBytes:()=>Ie,sha256ArtifactJson:()=>Xe,shouldEnableExecutionGovernance:()=>kd,shouldSourceShellProfile:()=>cu,shouldUseIsolatedStdinForCommand:()=>nu,signSharePayload:()=>ZL,sqliteAnalyzeTool:()=>CA,stripXenoAnsi:()=>fk,subscribeXenoTelemetry:()=>ix,summarizeAuditInputRecord:()=>A5,summarizeAuditTraces:()=>bp,summarizeRuntimeInput:()=>Gg,summarizeSubagentResults:()=>lk,summarizeXenoArtifactReview:()=>zp,syncMcpToolsToRegistry:()=>eX,synthesizeSkill:()=>xh,taskInputTool:()=>O2,taskOutputTool:()=>P2,taskStopTool:()=>C2,testPlugin:()=>vX,thinkTool:()=>U_,toAgentDefinitionMetadata:()=>tU,toLLMProvider:()=>QE,toolEvidenceToXenoArtifact:()=>tH,toolOperationManager:()=>q,toolRiskLevel:()=>Ya,turnDiffSummaryToXenoArtifact:()=>rH,unifiedDiffToXenoArtifact:()=>vv,unifiedExecManager:()=>iu,updateProjectState:()=>tr,upsertMcpServerConfig:()=>_5,validateAgentDefinition:()=>wR,validateCapabilityLeaseRequest:()=>xN,validateDelegationPlan:()=>CD,validateDirectEndpoint:()=>$s,validateExecutionSecurityPolicy:()=>Ai,validateJsonSchema:()=>rC,validateManifest:()=>hb,validateMcpAppResource:()=>vT,validateXenoArtifact:()=>uP,validateXenoArtifactReviewEvent:()=>qp,validateXenoControlRoomSnapshot:()=>wL,validateXenoEvidenceGraph:()=>EP,validateXenoRepositoryIndex:()=>bs,validateXenoSdkApiKey:()=>KH,validateXenoSecureExecutionContract:()=>eP,validateXenoSpecDocument:()=>UP,verifyContainmentCertification:()=>Tw,verifyContainmentCertificationApproval:()=>L7,verifyPluginSupplyChain:()=>Sb,verifySignature:()=>yk,verifySoulRecord:()=>nN,verifyXenoHostedControlCommand:()=>tte,verifyXenoHostedEnvironmentManifest:()=>xy,verifyXenoHostedEventChain:()=>Cee,verifyXenoHostedExecutionAdapterCertification:()=>Vee,verifyXenoHostedExecutionJob:()=>S$,verifyXenoHostedRunResult:()=>rte,verifyXenoHostedWebhook:()=>Fee,verifyXenoSecureShare:()=>pee,verifyXenoSessionHandoff:()=>fee,webFetchTool:()=>Uf,webSearchTool:()=>Xf,windowsDpapiProtect:()=>_k,windowsDpapiUnprotect:()=>Mk,withXenoTelemetrySpan:()=>RV,wrapXenoAnsi:()=>ZD,writePluginSupplyChainLockfile:()=>Eb,writeTool:()=>IC,xenoAnsi:()=>yc,xenoAnsiVisibleWidth:()=>gk,xenoArtifactToDiffDocument:()=>xv,xenoArtifactToLegacyAgentArtifact:()=>eH,xenoArtifactToOracleReport:()=>cte,xenoArtifactToReviewReport:()=>Hj,xenoArtifactToSourceResearchReport:()=>gte,xenoArtifactToSpecDocument:()=>kv,xenoArtifactToSpecExecution:()=>FP,xenoArtifactToToolEvidence:()=>nH,xenoArtifactToTurnDiffSummary:()=>oH,xenoHostedExecutionAdapterSigningPayload:()=>Hee,xenoOracleReportToArtifact:()=>ate,xenoRecipeFingerprint:()=>F$,xenoReviewReportToArtifact:()=>jj,xenoReviewReportToGitHubComments:()=>Vj,xenoSourceResearchReportToArtifact:()=>fte,xenoSpecArtifactIds:()=>na,xenoSpecExecutionToArtifact:()=>Iv,xenoSpecToArtifactBundle:()=>Ev});module.exports=vB(oie);hi();var Jn="0.9.21";var ZT=require("node:crypto");Ut();ut();var Us=class{filePath;sessionId;labels;sequence=0;writeQueue=Promise.resolve();constructor(e){this.filePath=e.filePath,this.sessionId=e.sessionId,this.labels={run_id:e.runId,agent_id:e.agentId,parent_agent_id:e.parentAgentId,workspace:e.workspace,model:e.model,provider:e.provider}}get path(){return this.filePath}async append(e){let n=(0,ZT.randomUUID)(),r={id:n,sequence:this.sequence++,timestamp:new Date().toISOString(),session_id:e.session_id??this.sessionId,...this.labels,...e};return this.writeQueue=this.writeQueue.then(async()=>{await yi(this.filePath,JSON.stringify(r))}),await this.writeQueue,n}async read(e){let n=await me(this.filePath);if(!n)return[];let r=wi(n);return e?.eventType&&(r=r.filter(o=>o.event_type===e.eventType)),e?.traceId&&(r=r.filter(o=>o.trace_id===e.traceId)),e?.limit!==void 0&&(r=r.slice(-Math.max(0,e.limit))),r}async tail(e=20){let n=Math.max(1,Math.min(e,500));return this.read({limit:n})}async exportJson(e){let n=await this.read();return await ye(e,JSON.stringify(n,null,2)),n.length}async flush(){await this.writeQueue}};function _B(t,e){return e.endedAt.localeCompare(t.endedAt)}function tw(t,e){t.set(e,(t.get(e)??0)+1)}function ow(t,e){let n=Date.parse(t),r=Date.parse(e);return!Number.isFinite(n)||!Number.isFinite(r)?0:Math.max(0,r-n)}function QT(t){return t.filter(e=>e.tool_name||e.event_type.startsWith("tool_")).length}function eR(t){return t.filter(e=>e.event_type==="permission_decision").length}function tR(t){return t.filter(e=>e.status==="error"||e.event_type.endsWith("_failed")).length}function nw(t){return t.split(/[_\s-]+/).filter(e=>e.length>0).map(e=>e[0].toUpperCase()+e.slice(1)).join(" ")}function rw(t){if(!t)return;let e=Object.entries(t).filter(([,n])=>typeof n=="string"||typeof n=="number"||typeof n=="boolean").slice(0,3).map(([n,r])=>`${n}=${String(r)}`);return e.length>0?e.join(" | "):void 0}function MB(t){let e=[];for(let n=1;n<t.length;n+=1){let r=t[n-1],o=t[n],i=Date.parse(r.timestamp),s=Date.parse(o.timestamp),a=Number.isFinite(i)&&Number.isFinite(s)?Math.max(0,s-i):0;e.push({fromSequence:r.sequence,toSequence:o.sequence,fromEventType:r.event_type,toEventType:o.event_type,gapMs:a})}return e.sort((n,r)=>r.gapMs-n.gapMs).slice(0,5)}function OB(t){let e=nw(t.event_type),n=t.reason;if(t.event_type==="permission_decision")e=`${t.decision==="deny"?"Denied":"Approved"} ${t.tool_name??"tool"} permission`,n=t.reason;else if(t.tool_name&&t.event_type.startsWith("tool_"))e=`${nw(t.event_type)}: ${t.tool_name}`;else if(t.event_type==="delegation_completed"){let r=typeof t.metadata?.selected_from=="object"&&t.metadata?.selected_from?String(t.metadata.selected_from.role??"unknown"):void 0;e=r?`Delegation completed via ${r}`:"Delegation completed",n=rw(t.metadata)}else t.event_type==="delegation_started"?(e="Delegation started",n=rw(t.metadata)):t.tool_name?e=`${nw(t.event_type)}: ${t.tool_name}`:n||(n=rw(t.metadata));return{sequence:t.sequence,timestamp:t.timestamp,title:e,...n?{detail:n}:{},actor:t.actor,riskLevel:t.risk_level,...t.status?{status:t.status}:{}}}function bp(t){let e=new Map;for(let r of t){let o=r.trace_id?.trim();if(!o)continue;let i=e.get(o);i?i.push(r):e.set(o,[r])}let n=[];for(let[r,o]of e.entries()){let i=[...o].sort((c,l)=>c.sequence-l.sequence),s=i[0]?.timestamp??"",a=i[i.length-1]?.timestamp??s;n.push({traceId:r,eventCount:i.length,startedAt:s,endedAt:a,durationMs:ow(s,a),toolEvents:QT(i),permissionEvents:eR(i),errorEvents:tR(i),lastEventType:i[i.length-1]?.event_type??"unknown"})}return n.sort(_B)}function nR(t,e){let n=bp(t),r=e??n[0]?.traceId;if(!r)return null;let o=t.filter(d=>d.trace_id===r).sort((d,p)=>d.sequence-p.sequence);if(o.length===0)return null;let i=new Map,s=new Map,a=new Map,c=new Map;for(let d of o){if(tw(i,d.event_type),tw(a,d.actor),tw(c,d.risk_level),!d.tool_name)continue;let p=s.get(d.tool_name)??{toolName:d.tool_name,count:0,ok:0,error:0,denied:0};p.count+=1,d.status==="error"?p.error+=1:p.ok+=1,d.decision==="deny"&&(p.denied+=1),s.set(d.tool_name,p)}let l=o[0]?.timestamp??"",u=o[o.length-1]?.timestamp??l;return{traceId:r,eventCount:o.length,startedAt:l,endedAt:u,durationMs:ow(l,u),toolEvents:QT(o),permissionEvents:eR(o),deniedPermissions:o.filter(d=>d.event_type==="permission_decision"&&d.decision==="deny").length,errorEvents:tR(o),eventTypes:Object.fromEntries([...i.entries()].sort((d,p)=>d[0].localeCompare(p[0]))),actorSummary:Object.fromEntries([...a.entries()].sort((d,p)=>d[0].localeCompare(p[0]))),riskSummary:Object.fromEntries([...c.entries()].sort((d,p)=>d[0].localeCompare(p[0]))),toolSummary:[...s.values()].sort((d,p)=>d.toolName.localeCompare(p.toolName)),topLatencyGaps:MB(o),timeline:o.map(d=>({sequence:d.sequence,timestamp:d.timestamp,eventType:d.event_type,actor:d.actor,riskLevel:d.risk_level,...d.tool_name?{toolName:d.tool_name}:{},...d.decision?{decision:d.decision}:{},...d.status?{status:d.status}:{},...d.reason?{reason:d.reason}:{}}))}}function rR(t,e){let n=bp(t),r=e??n[0]?.traceId;if(!r)return null;let o=t.filter(a=>a.trace_id===r).sort((a,c)=>a.sequence-c.sequence);if(o.length===0)return null;let i=o[0]?.timestamp??"",s=o[o.length-1]?.timestamp??i;return{traceId:r,startedAt:i,endedAt:s,durationMs:ow(i,s),steps:o.map(OB)}}function oR(t){if(t.length===0)return"No audit traces recorded.";let e=["Audit traces",""];for(let n of t)e.push(`${n.traceId} | ${n.eventCount} events | ${n.toolEvents} tool | ${n.permissionEvents} perms | ${n.errorEvents} errors | ${Math.round(n.durationMs/1e3)}s`);return e.join(`
2272
2272
  `)}function iR(t){let e=[`Audit trace ${t.traceId}`,`Started: ${t.startedAt}`,`Ended: ${t.endedAt}`,`Duration: ${t.durationMs} ms`,`Events: ${t.eventCount}`,`Tool events: ${t.toolEvents}`,`Permission events: ${t.permissionEvents}`,`Denied permissions: ${t.deniedPermissions}`,`Errors: ${t.errorEvents}`,"","Event types"];for(let[n,r]of Object.entries(t.eventTypes))e.push(` ${n}: ${r}`);e.push(""),e.push("Actors");for(let[n,r]of Object.entries(t.actorSummary))e.push(` ${n}: ${r}`);e.push(""),e.push("Risk levels");for(let[n,r]of Object.entries(t.riskSummary))e.push(` ${n}: ${r}`);if(e.push(""),e.push("Tools"),t.toolSummary.length===0)e.push(" (no tool activity)");else for(let n of t.toolSummary)e.push(` ${n.toolName}: ${n.count} total | ${n.ok} ok | ${n.error} error | ${n.denied} denied`);if(e.push(""),e.push("Largest gaps"),t.topLatencyGaps.length===0)e.push(" (no gaps)");else for(let n of t.topLatencyGaps)e.push(` #${n.fromSequence}->#${n.toSequence}: ${n.gapMs} ms | ${n.fromEventType} -> ${n.toEventType}`);e.push(""),e.push("Timeline");for(let n of t.timeline){let r=[n.eventType,n.toolName,n.decision,n.status,n.reason].filter(o=>typeof o=="string"&&o.length>0);e.push(` #${n.sequence} ${n.timestamp} | ${r.join(" | ")||n.eventType}`)}return e.join(`
2273
2273
  `)}function sR(t){return[`## Audit Trace ${t.traceId}`,"",`- Started: \`${t.startedAt}\``,`- Ended: \`${t.endedAt}\``,`- Duration: \`${t.durationMs}\` ms`,`- Events: \`${t.eventCount}\``,`- Tool events: \`${t.toolEvents}\``,`- Permission events: \`${t.permissionEvents}\``,`- Denied permissions: \`${t.deniedPermissions}\``,`- Errors: \`${t.errorEvents}\``,"","### Tool Summary","","| Tool | Total | OK | Error | Denied |","| --- | ---: | ---: | ---: | ---: |",...t.toolSummary.length>0?t.toolSummary.map(n=>`| ${n.toolName} | ${n.count} | ${n.ok} | ${n.error} | ${n.denied} |`):["| (none) | 0 | 0 | 0 | 0 |"],"","### Largest Gaps","","| From | To | Gap ms | Events |","| ---: | ---: | ---: | --- |",...t.topLatencyGaps.length>0?t.topLatencyGaps.map(n=>`| ${n.fromSequence} | ${n.toSequence} | ${n.gapMs} | ${n.fromEventType} -> ${n.toEventType} |`):["| 0 | 0 | 0 | none |"]].join(`
2274
2274
  `)}function aR(t){let e=[`## Audit Replay ${t.traceId}`,"",`- Started: \`${t.startedAt}\``,`- Ended: \`${t.endedAt}\``,`- Duration: \`${t.durationMs}\` ms`,""];for(let n of t.steps){let r=[n.actor,n.riskLevel,n.status].filter(Boolean).join(" | ");e.push(`- **#${n.sequence} ${n.title}**${r?` _(${r})_`:""}`),n.detail&&e.push(` - ${n.detail}`)}return e.join(`
@@ -2467,7 +2467,7 @@ Available tools: {toolList}`;function Dc(t){return tT.replace("{context}",t.cont
2467
2467
 
2468
2468
  ---
2469
2469
 
2470
- `);return{merged:s,memoryTokens:n.totalTokens,sessionHistoryTokens:o.totalTokens,sessionHistoryEntries:o.entries.length,totalTokens:we(s)}}var cT=require("node:path");ft();Io();gh();Wl();function k5(t){try{let e=new ls({cwd:t.cwd,globalDir:t.globalDir});return new us(e)}catch(e){fe("Failed to load identity system",e);return}}function I5(t){try{return new Xr({cwd:t.cwd,role:t.role,sessionDir:t.sessionDir,scope:t.memoryScope,projectSessionContext:t.projectSessionContext})}catch(e){fe("Failed to load memory system",e);return}}async function T5(t,e){let n=Gt.getSessionDir(e.sessionManager.meta.id),r=new Us({filePath:(0,cT.join)(n,"audit.jsonl"),sessionId:e.sessionManager.meta.id,workspace:e.cwd,model:e.model});try{await r.append({trace_id:`session-${e.sessionManager.meta.id}`,event_type:e.eventType,actor:"system",risk_level:"none",metadata:{model:e.model,cwd:e.cwd}})}catch(i){fe("Failed to write audit session event",i)}try{await Ro({cwd:e.sessionManager.meta.workingDirectory,sessionId:e.sessionManager.meta.id,role:e.sessionManager.meta.role,endedAt:new Date().toISOString()})}catch(i){fe("Failed to write recent-sessions index on start",i)}let o=e.loadRestorableMessages?await e.loadRestorableMessages(e.sessionManager.meta.id,e.checkpoint):void 0;return{...t,sessionManager:e.sessionManager,checkpointManager:e.sessionManager.checkpoints,auditLogger:r,restoredMessages:o,sessionDir:n,sessionHistoryPath:(0,cT.join)(".xeno","sessions",`${e.sessionManager.meta.id}.md`),turnRestoreManager:new Is(n,e.cwd),memoryManager:I5({cwd:e.cwd,role:e.role,sessionDir:n,memoryScope:e.memoryScope,projectSessionContext:e.projectSessionContext})}}async function Fne(t){let e={identityResolver:k5({cwd:t.cwd,globalDir:t.identityGlobalDir})};if(t.resume===void 0)return e.memoryManager=I5({cwd:t.cwd,role:t.role,memoryScope:t.memoryScope,projectSessionContext:t.projectSessionContext}),e;let n=typeof t.resume=="string"?t.resume:void 0,r=n?await Gt.find(n):await Gt.findMostRecent(t.role);if(!r)throw new Error(`Session not found${n?`: ${n}`:""}`);if(t.hostBinding&&r.hostBinding&&!Hne(r.hostBinding,t.hostBinding))throw new Error("Session host binding does not match the requesting conversation authority.");let o=await ai.resume({sessionId:r.id,fromCheckpoint:t.checkpoint});return t.hostBinding&&(o.meta.hostBinding||await o.updateMeta({hostBinding:structuredClone(t.hostBinding)})),e=await T5(e,{...t,sessionManager:o,eventType:"session_resumed",checkpoint:t.checkpoint}),e}async function jne(t,e){if(t.sessionManager)return t;let n=await ai.create({role:e.role,workingDirectory:e.cwd,model:e.model,...e.hostBinding?{hostBinding:structuredClone(e.hostBinding)}:{}});return T5({...t,identityResolver:t.identityResolver??k5({cwd:e.cwd,globalDir:e.identityGlobalDir})},{...e,sessionManager:n,eventType:"session_started"})}function Hne(t,e){return t.schemaVersion===e.schemaVersion&&t.conversationId===e.conversationId&&t.hostStorageIdentity===e.hostStorageIdentity}async function Vne(t,e="completed"){if(!t.sessionManager)return;t.auditLogger&&await t.auditLogger.flush(),await t.sessionManager.transcript.flush(),await t.sessionManager.end(e);let n=t.sessionManager.meta,r=new Date().toISOString(),o=n.createdAt,i=Date.parse(o),s=Date.parse(r),a=Number.isFinite(i)&&Number.isFinite(s)?Math.max(0,s-i):0;Gv(n.workingDirectory,{sessionId:n.id,mode:"chat",status:e,role:n.role,model:n.model,startedAt:o,endedAt:r,durationMs:a,messageCount:n.messageCount,tokenUsage:n.tokenUsage,estimatedCostUsd:Qy(n.model,n.tokenUsage.input,n.tokenUsage.output)});try{await Ro({cwd:n.workingDirectory,sessionId:n.id,role:n.role,endedAt:r})}catch(c){fe("Failed to update recent-sessions index \u2014 next startup may scan instead of O(1) lookup",c)}}var St=require("node:fs"),eb=require("node:path");ut();var zd=new Map,Gd=new Map,tb=class{getConversationDir(e,n){return(0,eb.join)(e,".xeno","conversations",n)}getConversationPath(e,n,r){return(0,eb.join)(this.getConversationDir(n,r),`${e}.json`)}save(e,n){let r=this.getConversationDir(n,e.app);(0,St.existsSync)(r)||(0,St.mkdirSync)(r,{recursive:!0});let o={...e,modified:new Date().toISOString()},i=this.getConversationPath(e.id,n,e.app);(0,St.writeFileSync)(i,JSON.stringify(o,null,2)+`
2470
+ `);return{merged:s,memoryTokens:n.totalTokens,sessionHistoryTokens:o.totalTokens,sessionHistoryEntries:o.entries.length,totalTokens:we(s)}}var cT=require("node:path");ft();Io();gh();Wl();function k5(t){try{let e=new ls({cwd:t.cwd,globalDir:t.globalDir});return new us(e)}catch(e){fe("Failed to load identity system",e);return}}function I5(t){try{return new Xr({cwd:t.cwd,role:t.role,sessionDir:t.sessionDir,scope:t.memoryScope,projectSessionContext:t.projectSessionContext})}catch(e){fe("Failed to load memory system",e);return}}async function T5(t,e){let n=Gt.getSessionDir(e.sessionManager.meta.id),r=new Us({filePath:(0,cT.join)(n,"audit.jsonl"),sessionId:e.sessionManager.meta.id,workspace:e.cwd,model:e.model});try{await r.append({trace_id:`session-${e.sessionManager.meta.id}`,event_type:e.eventType,actor:"system",risk_level:"none",metadata:{model:e.model,cwd:e.cwd}})}catch(i){fe("Failed to write audit session event",i)}try{await Ro({cwd:e.sessionManager.meta.workingDirectory,sessionId:e.sessionManager.meta.id,role:e.sessionManager.meta.role,endedAt:new Date().toISOString()})}catch(i){fe("Failed to write recent-sessions index on start",i)}let o=e.loadRestorableMessages?await e.loadRestorableMessages(e.sessionManager.meta.id,e.checkpoint):void 0;return{...t,sessionManager:e.sessionManager,checkpointManager:e.sessionManager.checkpoints,auditLogger:r,restoredMessages:o,sessionDir:n,sessionHistoryPath:(0,cT.join)(".xeno","sessions",`${e.sessionManager.meta.id}.md`),turnRestoreManager:new Is(n,e.cwd),memoryManager:I5({cwd:e.cwd,role:e.role,sessionDir:n,memoryScope:e.memoryScope,projectSessionContext:e.projectSessionContext})}}async function Fne(t){let e={identityResolver:k5({cwd:t.cwd,globalDir:t.identityGlobalDir})};if(t.resume===void 0)return e.memoryManager=I5({cwd:t.cwd,role:t.role,memoryScope:t.memoryScope,projectSessionContext:t.projectSessionContext}),e;let n=typeof t.resume=="string"?t.resume:void 0,r=n?await Gt.find(n):await Gt.findMostRecent({...t.role!==void 0?{role:t.role}:{},workingDirectory:t.cwd});if(!r)throw new Error(`Session not found${n?`: ${n}`:""}`);if(t.hostBinding&&r.hostBinding&&!Hne(r.hostBinding,t.hostBinding))throw new Error("Session host binding does not match the requesting conversation authority.");let o=await ai.resume({sessionId:r.id,fromCheckpoint:t.checkpoint});return t.hostBinding&&(o.meta.hostBinding||await o.updateMeta({hostBinding:structuredClone(t.hostBinding)})),e=await T5(e,{...t,sessionManager:o,eventType:"session_resumed",checkpoint:t.checkpoint}),e}async function jne(t,e){if(t.sessionManager)return t;let n=await ai.create({role:e.role,workingDirectory:e.cwd,model:e.model,...e.hostBinding?{hostBinding:structuredClone(e.hostBinding)}:{}});return T5({...t,identityResolver:t.identityResolver??k5({cwd:e.cwd,globalDir:e.identityGlobalDir})},{...e,sessionManager:n,eventType:"session_started"})}function Hne(t,e){return t.schemaVersion===e.schemaVersion&&t.conversationId===e.conversationId&&t.hostStorageIdentity===e.hostStorageIdentity}async function Vne(t,e="completed"){if(!t.sessionManager)return;t.auditLogger&&await t.auditLogger.flush(),await t.sessionManager.transcript.flush(),await t.sessionManager.end(e);let n=t.sessionManager.meta,r=new Date().toISOString(),o=n.createdAt,i=Date.parse(o),s=Date.parse(r),a=Number.isFinite(i)&&Number.isFinite(s)?Math.max(0,s-i):0;Gv(n.workingDirectory,{sessionId:n.id,mode:"chat",status:e,role:n.role,model:n.model,startedAt:o,endedAt:r,durationMs:a,messageCount:n.messageCount,tokenUsage:n.tokenUsage,estimatedCostUsd:Qy(n.model,n.tokenUsage.input,n.tokenUsage.output)});try{await Ro({cwd:n.workingDirectory,sessionId:n.id,role:n.role,endedAt:r})}catch(c){fe("Failed to update recent-sessions index \u2014 next startup may scan instead of O(1) lookup",c)}}var St=require("node:fs"),eb=require("node:path");ut();var zd=new Map,Gd=new Map,tb=class{getConversationDir(e,n){return(0,eb.join)(e,".xeno","conversations",n)}getConversationPath(e,n,r){return(0,eb.join)(this.getConversationDir(n,r),`${e}.json`)}save(e,n){let r=this.getConversationDir(n,e.app);(0,St.existsSync)(r)||(0,St.mkdirSync)(r,{recursive:!0});let o={...e,modified:new Date().toISOString()},i=this.getConversationPath(e.id,n,e.app);(0,St.writeFileSync)(i,JSON.stringify(o,null,2)+`
2471
2471
  `,"utf-8")}load(e,n){let r=["pixel","motion","sound"];for(let o of r){let i=this.getConversationPath(e,n,o);if((0,St.existsSync)(i)){let s=(0,St.readFileSync)(i,"utf-8");return Y(s,null)}}return null}list(e,n){let r=n?[n]:["pixel","motion","sound"],o=[];for(let i of r){let s=this.getConversationDir(e,i);if(!(0,St.existsSync)(s))continue;let a;try{a=(0,St.readdirSync)(s)}catch{continue}for(let c of a){if(!c.endsWith(".json"))continue;let l=(0,eb.join)(s,c);try{if(!(0,St.statSync)(l).isFile())continue;let d=(0,St.readFileSync)(l,"utf-8"),p=Y(d,null);p&&o.push(p)}catch{continue}}}return o.sort((i,s)=>{let a=new Date(i.modified).getTime();return new Date(s.modified).getTime()-a}),o}delete(e,n){let r=["pixel","motion","sound"];for(let o of r){let i=this.getConversationPath(e,n,o);if((0,St.existsSync)(i)){try{(0,St.unlinkSync)(i)}catch(s){if(s.code!=="ENOENT")throw s}return}}}autoSave(e,n,r=500){let o=`${n}:${e.id}`,i=zd.get(o);i&&clearTimeout(i),Gd.set(o,{conversation:{...e},basePath:n});let s=setTimeout(()=>{let a=Gd.get(o);a&&(this.save(a.conversation,a.basePath),Gd.delete(o)),zd.delete(o)},r);zd.set(o,s)}flushPending(){for(let[e,n]of zd){clearTimeout(n),zd.delete(e);let r=Gd.get(e);if(r){try{this.save(r.conversation,r.basePath)}catch{}Gd.delete(e)}}}search(e,n,r){if(!n)return[];let o=this.list(e,r),i=n.toLowerCase();return o.filter(s=>s.messages.some(a=>a.content?a.content.toLowerCase().includes(i):!1))}};var qne={"not-allowed":"Microphone permission denied. Please allow microphone access in your browser or system settings.","no-speech":"No speech detected. Please try again.","audio-capture":"No microphone found. Please connect a microphone.",network:"Network error during speech recognition.",aborted:"Speech recognition was aborted.","service-not-allowed":"Speech recognition service is not allowed."};function R5(){let t=globalThis;return t.SpeechRecognition??t.webkitSpeechRecognition??void 0}function P5(t,e){let n=R5();if(!n)return null;let r=new n;r.lang=t.language,r.continuous=t.continuous,r.interimResults=t.interimResults,r.maxAlternatives=1;let o=!1,i,s=()=>{i!==void 0&&(clearTimeout(i),i=void 0)};return r.onstart=()=>{o=!0,e.onStart(),t.maxDuration>0&&(i=setTimeout(()=>{o&&r.stop()},t.maxDuration*1e3))},r.onend=()=>{o=!1,s(),e.onEnd()},r.onresult=a=>{let c="",l="";for(let u=a.resultIndex;u<a.results.length;u++){let d=a.results[u];d.isFinal?l+=d[0].transcript:c+=d[0].transcript}c&&e.onInterim(c),l&&e.onFinal(l)},r.onerror=a=>{let c=qne[a.error]??`Speech recognition error: ${a.error}`;e.onError(c)},{start(){o||r.start()},stop(){o&&r.stop()},abort(){o&&r.abort()},isListening(){return o}}}function C5(){return R5()!==void 0}var W5=require("node:child_process");var uo=require("node:fs"),$c=require("node:path");ut();Io();Rt();function Wd(t,e){let n=e??process.cwd();return t==="project"?(0,$c.join)(n,".xeno","mcp.json"):t==="mcprc"?(0,$c.join)(n,".mcprc"):(0,$c.join)(ke(),"mcp.json")}function zne(t){(0,uo.mkdirSync)((0,$c.dirname)(t),{recursive:!0})}function Gne(t,e){if(!t||typeof t!="object")return{};let n=t,r=e==="mcprc"?n.mcpServers&&typeof n.mcpServers=="object"?n.mcpServers:n:n.mcpServers&&typeof n.mcpServers=="object"?n.mcpServers:{};return Object.fromEntries(Object.entries(r).filter(o=>o[0].trim().length>0&&!!o[1]&&typeof o[1]=="object").sort(([o],[i])=>o.localeCompare(i)))}function Jd(t,e="project"){if(!(0,uo.existsSync)(t))return{mcpServers:{}};let n=(0,uo.readFileSync)(t,"utf-8"),r=Y(n,e==="mcprc"?{}:{mcpServers:{}});return{mcpServers:Gne(r,e)}}function nb(t,e,n="project"){zne(t);let r=n==="mcprc"?e.mcpServers:{mcpServers:e.mcpServers};(0,uo.writeFileSync)(t,JSON.stringify(r,null,2)+`
2472
2472
  `,"utf-8")}function rb(t){let e=t??process.cwd(),n=[],r=[{scope:"project",path:Wd("project",e)},{scope:"mcprc",path:Wd("mcprc",e)},{scope:"user",path:Wd("user")}];for(let o of r){if(!(0,uo.existsSync)(o.path))continue;let i=Jd(o.path,o.scope);for(let[s,a]of Object.entries(i.mcpServers??{})){if(n.some(l=>l.name===s))continue;let c=`${o.scope}:${s}`;n.push({name:s,transport:a.transport??(a.url?"streamable-http":"stdio"),command:a.command,args:a.args,env:a.env,cwd:a.cwd,url:a.url,headers:a.headers,bearerTokenEnv:a.bearerTokenEnv,oauth:a.oauth,legacySseFallback:a.legacySseFallback,approvalRequired:a.approvalRequired??!0,disabled:a.disabled??!1,scope:o.scope,sourcePath:o.path,approvalKey:c,approvalState:wm(e,c)})}}return n}function _5(t,e,n){let r=Wd(t,e),o=Jd(r,t);return o.mcpServers[n.name]={transport:n.transport,command:n.command,args:n.args,env:n.env,cwd:n.cwd,url:n.url,headers:n.headers,bearerTokenEnv:n.bearerTokenEnv,oauth:n.oauth,legacySseFallback:n.legacySseFallback,approvalRequired:n.approvalRequired,disabled:n.disabled},nb(r,o,t),r}function M5(t,e,n){let r=Wd(t,e),o=Jd(r,t);return delete o.mcpServers[n],nb(r,o,t),r}function ob(t,e){vm(t,e,"approved")}function ib(t,e){vm(t,e,"denied")}function O5(t,e){Vv(t,e)}function D5(t,e){return wm(t,e)}function N5(t,e){let n=qv(t,e);return zv(t,e),Object.keys(n).length}function Wne(t,e){try{return new URL(e,t).toString()}catch{return e}}var ui=class{constructor(e,n,r={}){this.url=e;this.headers=n;this.options=r;this.readyPromise=this.connect()}url;headers;options;onMessage=null;onError=null;onClose=null;closed=!1;buffer="";eventName="message";dataLines=[];endpointUrl;streamAbortController=new AbortController;readyPromise;endpointResolver;endpointPromise=new Promise(e=>{this.endpointResolver=e});async waitUntilReady(){await this.readyPromise}setMessageHandler(e){this.onMessage=e}setErrorHandler(e){this.onError=e}setCloseHandler(e){this.onClose=e}async send(e){if(this.closed)throw new Error("Transport is closed");await this.waitUntilReady();let n=await this.resolvePostUrl();this.options.validateUrl?.(n,"post");let r=await fetch(n,{method:"POST",headers:{Accept:"application/json, text/event-stream","Content-Type":"application/json",...this.headers},body:JSON.stringify(e),signal:this.streamAbortController.signal});if(!r.ok)throw new Error(`SSE MCP POST failed (${r.status} ${r.statusText})`);if((r.headers.get("content-type")??"").includes("application/json")){let i=await r.json().catch(()=>null);i&&typeof i=="object"&&"jsonrpc"in i&&this.onMessage?.(i)}}close(){this.closed||(this.closed=!0,this.streamAbortController.abort(),this.endpointResolver(this.endpointUrl),this.onClose?.(null))}get isAlive(){return!this.closed}async connect(){this.options.validateUrl?.(this.url,"stream");let e=await fetch(this.url,{method:"GET",headers:{Accept:"text/event-stream","Cache-Control":"no-cache",...this.headers},signal:this.streamAbortController.signal});if(!e.ok){let n=e.headers.get("www-authenticate");throw new Error(`SSE MCP stream failed (${e.status} ${e.statusText})${n?`; WWW-Authenticate: ${n}`:""}`)}if(!e.body)throw new Error("SSE MCP stream has no response body");this.consumeStream(e.body)}async consumeStream(e){let n=e.getReader(),r=new TextDecoder;try{for(;!this.closed;){let{value:o,done:i}=await n.read();if(i)break;this.buffer+=r.decode(o,{stream:!0}),this.processBuffer()}}catch(o){this.closed||this.onError?.(o instanceof Error?o:new Error(String(o)))}finally{n.releaseLock(),this.closed||(this.closed=!0,this.endpointResolver(this.endpointUrl),this.onClose?.(null))}}processBuffer(){let n=this.buffer.replace(/\r\n/g,`
2473
2473
  `).split(`
package/dist/index.d.cts CHANGED
@@ -644,7 +644,7 @@ interface PolicyEnforcerConfig {
644
644
  };
645
645
  }
646
646
  type AgentSandbox = PolicyEnforcerConfig;
647
- declare const SDK_VERSION = "0.9.20";
647
+ declare const SDK_VERSION = "0.9.21";
648
648
  type AuditRiskLevel = "none" | "low" | "medium" | "high" | "critical";
649
649
  type AuditDecision = "allow" | "ask" | "deny";
650
650
  type AuditStatus = "ok" | "error";