Files
farm_service/.agents/skills/comet/scripts/comet-hook-router.mjs
T
2026-10-26 11:35:04 +08:00

437 lines
793 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env node
import { createRequire as __cometCreateRequire } from 'module';
const require = __cometCreateRequire(import.meta.url);
var kA=Object.create;var op=Object.defineProperty;var SA=Object.getOwnPropertyDescriptor;var NA=Object.getOwnPropertyNames;var EA=Object.getPrototypeOf,xA=Object.prototype.hasOwnProperty;var nc=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var A=(t,e,r)=>()=>{if(r)throw r[0];try{return t&&(e=t(t=0)),e}catch(n){throw r=[n],n}};var R=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(r){throw e=0,r}},PA=(t,e)=>{for(var r in e)op(t,r,{get:e[r],enumerable:!0})},CA=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of NA(e))!xA.call(t,i)&&i!==r&&op(t,i,{get:()=>e[i],enumerable:!(n=SA(e,i))||n.enumerable});return t};var Ce=(t,e,r)=>(r=t!=null?kA(EA(t)):{},CA(e||!t||!t.__esModule?op(r,"default",{value:t,enumerable:!0}):r,t));var K=R(he=>{"use strict";var ap=Symbol.for("yaml.alias"),Qy=Symbol.for("yaml.document"),ic=Symbol.for("yaml.map"),Zy=Symbol.for("yaml.pair"),sp=Symbol.for("yaml.scalar"),oc=Symbol.for("yaml.seq"),mr=Symbol.for("yaml.node.type"),RA=t=>!!t&&typeof t=="object"&&t[mr]===ap,AA=t=>!!t&&typeof t=="object"&&t[mr]===Qy,_A=t=>!!t&&typeof t=="object"&&t[mr]===ic,jA=t=>!!t&&typeof t=="object"&&t[mr]===Zy,ev=t=>!!t&&typeof t=="object"&&t[mr]===sp,IA=t=>!!t&&typeof t=="object"&&t[mr]===oc;function tv(t){if(t&&typeof t=="object")switch(t[mr]){case ic:case oc:return!0}return!1}function TA(t){if(t&&typeof t=="object")switch(t[mr]){case ap:case ic:case sp:case oc:return!0}return!1}var $A=t=>(ev(t)||tv(t))&&!!t.anchor;he.ALIAS=ap;he.DOC=Qy;he.MAP=ic;he.NODE_TYPE=mr;he.PAIR=Zy;he.SCALAR=sp;he.SEQ=oc;he.hasAnchor=$A;he.isAlias=RA;he.isCollection=tv;he.isDocument=AA;he.isMap=_A;he.isNode=TA;he.isPair=jA;he.isScalar=ev;he.isSeq=IA});var Go=R(cp=>{"use strict";var de=K(),Ke=Symbol("break visit"),rv=Symbol("skip children"),Vt=Symbol("remove node");function ac(t,e){let r=nv(e);de.isDocument(t)?Mi(null,t.contents,r,Object.freeze([t]))===Vt&&(t.contents=null):Mi(null,t,r,Object.freeze([]))}ac.BREAK=Ke;ac.SKIP=rv;ac.REMOVE=Vt;function Mi(t,e,r,n){let i=iv(t,e,r,n);if(de.isNode(i)||de.isPair(i))return ov(t,n,i),Mi(t,i,r,n);if(typeof i!="symbol"){if(de.isCollection(e)){n=Object.freeze(n.concat(e));for(let o=0;o<e.items.length;++o){let a=Mi(o,e.items[o],r,n);if(typeof a=="number")o=a-1;else{if(a===Ke)return Ke;a===Vt&&(e.items.splice(o,1),o-=1)}}}else if(de.isPair(e)){n=Object.freeze(n.concat(e));let o=Mi("key",e.key,r,n);if(o===Ke)return Ke;o===Vt&&(e.key=null);let a=Mi("value",e.value,r,n);if(a===Ke)return Ke;a===Vt&&(e.value=null)}}return i}async function sc(t,e){let r=nv(e);de.isDocument(t)?await Li(null,t.contents,r,Object.freeze([t]))===Vt&&(t.contents=null):await Li(null,t,r,Object.freeze([]))}sc.BREAK=Ke;sc.SKIP=rv;sc.REMOVE=Vt;async function Li(t,e,r,n){let i=await iv(t,e,r,n);if(de.isNode(i)||de.isPair(i))return ov(t,n,i),Li(t,i,r,n);if(typeof i!="symbol"){if(de.isCollection(e)){n=Object.freeze(n.concat(e));for(let o=0;o<e.items.length;++o){let a=await Li(o,e.items[o],r,n);if(typeof a=="number")o=a-1;else{if(a===Ke)return Ke;a===Vt&&(e.items.splice(o,1),o-=1)}}}else if(de.isPair(e)){n=Object.freeze(n.concat(e));let o=await Li("key",e.key,r,n);if(o===Ke)return Ke;o===Vt&&(e.key=null);let a=await Li("value",e.value,r,n);if(a===Ke)return Ke;a===Vt&&(e.value=null)}}return i}function nv(t){return typeof t=="object"&&(t.Collection||t.Node||t.Value)?Object.assign({Alias:t.Node,Map:t.Node,Scalar:t.Node,Seq:t.Node},t.Value&&{Map:t.Value,Scalar:t.Value,Seq:t.Value},t.Collection&&{Map:t.Collection,Seq:t.Collection},t):t}function iv(t,e,r,n){if(typeof r=="function")return r(t,e,n);if(de.isMap(e))return r.Map?.(t,e,n);if(de.isSeq(e))return r.Seq?.(t,e,n);if(de.isPair(e))return r.Pair?.(t,e,n);if(de.isScalar(e))return r.Scalar?.(t,e,n);if(de.isAlias(e))return r.Alias?.(t,e,n)}function ov(t,e,r){let n=e[e.length-1];if(de.isCollection(n))n.items[t]=r;else if(de.isPair(n))t==="key"?n.key=r:n.value=r;else if(de.isDocument(n))n.contents=r;else{let i=de.isAlias(n)?"alias":"scalar";throw new Error(`Cannot replace node with ${i} parent`)}}cp.visit=ac;cp.visitAsync=sc});var lp=R(sv=>{"use strict";var av=K(),OA=Go(),MA={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},LA=t=>t.replace(/[!,[\]{}]/g,e=>MA[e]),Uo=class t{constructor(e,r){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},t.defaultYaml,e),this.tags=Object.assign({},t.defaultTags,r)}clone(){let e=new t(this.yaml,this.tags);return e.docStart=this.docStart,e}atDocument(){let e=new t(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:t.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},t.defaultTags);break}return e}add(e,r){this.atNextDocument&&(this.yaml={explicit:t.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},t.defaultTags),this.atNextDocument=!1);let n=e.trim().split(/[ \t]+/),i=n.shift();switch(i){case"%TAG":{if(n.length!==2&&(r(0,"%TAG directive should contain exactly two parts"),n.length<2))return!1;let[o,a]=n;return this.tags[o]=a,!0}case"%YAML":{if(this.yaml.explicit=!0,n.length!==1)return r(0,"%YAML directive should contain exactly one part"),!1;let[o]=n;if(o==="1.1"||o==="1.2")return this.yaml.version=o,!0;{let a=/^\d+\.\d+$/.test(o);return r(6,`Unsupported YAML version ${o}`,a),!1}}default:return r(0,`Unknown directive ${i}`,!0),!1}}tagName(e,r){if(e==="!")return"!";if(e[0]!=="!")return r(`Not a valid tag: ${e}`),null;if(e[1]==="<"){let a=e.slice(2,-1);return a==="!"||a==="!!"?(r(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(e[e.length-1]!==">"&&r("Verbatim tags must end with a >"),a)}let[,n,i]=e.match(/^(.*!)([^!]*)$/s);i||r(`The ${e} tag has no suffix`);let o=this.tags[n];if(o)try{return o+decodeURIComponent(i)}catch(a){return r(String(a)),null}return n==="!"?e:(r(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[r,n]of Object.entries(this.tags))if(e.startsWith(n))return r+LA(e.substring(n.length));return e[0]==="!"?e:`!<${e}>`}toString(e){let r=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],n=Object.entries(this.tags),i;if(e&&n.length>0&&av.isNode(e.contents)){let o={};OA.visit(e.contents,(a,s)=>{av.isNode(s)&&s.tag&&(o[s.tag]=!0)}),i=Object.keys(o)}else i=[];for(let[o,a]of n)o==="!!"&&a==="tag:yaml.org,2002:"||(!e||i.some(s=>s.startsWith(a)))&&r.push(`%TAG ${o} ${a}`);return r.join(`
`)}};Uo.defaultYaml={explicit:!1,version:"1.2"};Uo.defaultTags={"!!":"tag:yaml.org,2002:"};sv.Directives=Uo});var cc=R(Jo=>{"use strict";var cv=K(),DA=Go();function BA(t){if(/[\x00-\x19\s,[\]{}]/.test(t)){let r=`Anchor must not contain whitespace or control characters: ${JSON.stringify(t)}`;throw new Error(r)}return!0}function lv(t){let e=new Set;return DA.visit(t,{Value(r,n){n.anchor&&e.add(n.anchor)}}),e}function dv(t,e){for(let r=1;;++r){let n=`${t}${r}`;if(!e.has(n))return n}}function FA(t,e){let r=[],n=new Map,i=null;return{onAnchor:o=>{r.push(o),i??(i=lv(t));let a=dv(e,i);return i.add(a),a},setAnchors:()=>{for(let o of r){let a=n.get(o);if(typeof a=="object"&&a.anchor&&(cv.isScalar(a.node)||cv.isCollection(a.node)))a.node.anchor=a.anchor;else{let s=new Error("Failed to resolve repeated object (this should not happen)");throw s.source=o,s}}},sourceObjects:n}}Jo.anchorIsValid=BA;Jo.anchorNames=lv;Jo.createNodeAnchors=FA;Jo.findNewAnchor=dv});var dp=R(uv=>{"use strict";function Yo(t,e,r,n){if(n&&typeof n=="object")if(Array.isArray(n))for(let i=0,o=n.length;i<o;++i){let a=n[i],s=Yo(t,n,String(i),a);s===void 0?delete n[i]:s!==a&&(n[i]=s)}else if(n instanceof Map)for(let i of Array.from(n.keys())){let o=n.get(i),a=Yo(t,n,i,o);a===void 0?n.delete(i):a!==o&&n.set(i,a)}else if(n instanceof Set)for(let i of Array.from(n)){let o=Yo(t,n,i,i);o===void 0?n.delete(i):o!==i&&(n.delete(i),n.add(o))}else for(let[i,o]of Object.entries(n)){let a=Yo(t,n,i,o);a===void 0?delete n[i]:a!==o&&(n[i]=a)}return t.call(e,r,n)}uv.applyReviver=Yo});var Wr=R(fv=>{"use strict";var KA=K();function pv(t,e,r){if(Array.isArray(t))return t.map((n,i)=>pv(n,String(i),r));if(t&&typeof t.toJSON=="function"){if(!r||!KA.hasAnchor(t))return t.toJSON(e,r);let n={aliasCount:0,count:1,res:void 0};r.anchors.set(t,n),r.onCreate=o=>{n.res=o,delete r.onCreate};let i=t.toJSON(e,r);return r.onCreate&&r.onCreate(i),i}return typeof t=="bigint"&&!r?.keep?Number(t):t}fv.toJS=pv});var lc=R(hv=>{"use strict";var HA=dp(),mv=K(),WA=Wr(),up=class{constructor(e){Object.defineProperty(this,mv.NODE_TYPE,{value:e})}clone(){let e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:r,maxAliasCount:n,onAnchor:i,reviver:o}={}){if(!mv.isDocument(e))throw new TypeError("A document argument is required");let a={anchors:new Map,doc:e,keep:!0,mapAsMap:r===!0,mapKeyWarned:!1,maxAliasCount:typeof n=="number"?n:100},s=WA.toJS(this,"",a);if(typeof i=="function")for(let{count:c,res:l}of a.anchors.values())i(l,c);return typeof o=="function"?HA.applyReviver(o,{"":s},"",s):s}};hv.NodeBase=up});var Xo=R(gv=>{"use strict";var VA=cc(),qA=Go(),Di=K(),zA=lc(),GA=Wr(),pp=class extends zA.NodeBase{constructor(e){super(Di.ALIAS),this.source=e,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(e,r){if(r?.maxAliasCount===0)throw new ReferenceError("Alias resolution is disabled");let n;r?.aliasResolveCache?n=r.aliasResolveCache:(n=[],qA.visit(e,{Node:(o,a)=>{(Di.isAlias(a)||Di.hasAnchor(a))&&n.push(a)}}),r&&(r.aliasResolveCache=n));let i;for(let o of n){if(o===this)break;o.anchor===this.source&&(i=o)}return i}toJSON(e,r){if(!r)return{source:this.source};let{anchors:n,doc:i,maxAliasCount:o}=r,a=this.resolve(i,r);if(!a){let c=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(c)}let s=n.get(a);if(s||(GA.toJS(a,null,r),s=n.get(a)),s?.res===void 0){let c="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(c)}if(o>=0&&(s.count+=1,s.aliasCount===0&&(s.aliasCount=dc(i,a,n)),s.count*s.aliasCount>o)){let c="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(c)}return s.res}toString(e,r,n){let i=`*${this.source}`;if(e){if(VA.anchorIsValid(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){let o=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(o)}if(e.implicitKey)return`${i} `}return i}};function dc(t,e,r){if(Di.isAlias(e)){let n=e.resolve(t),i=r&&n&&r.get(n);return i?i.count*i.aliasCount:0}else if(Di.isCollection(e)){let n=0;for(let i of e.items){let o=dc(t,i,r);o>n&&(n=o)}return n}else if(Di.isPair(e)){let n=dc(t,e.key,r),i=dc(t,e.value,r);return Math.max(n,i)}return 1}gv.Alias=pp});var ae=R(fp=>{"use strict";var UA=K(),JA=lc(),YA=Wr(),XA=t=>!t||typeof t!="function"&&typeof t!="object",Vr=class extends JA.NodeBase{constructor(e){super(UA.SCALAR),this.value=e}toJSON(e,r){return r?.keep?this.value:YA.toJS(this.value,e,r)}toString(){return String(this.value)}};Vr.BLOCK_FOLDED="BLOCK_FOLDED";Vr.BLOCK_LITERAL="BLOCK_LITERAL";Vr.PLAIN="PLAIN";Vr.QUOTE_DOUBLE="QUOTE_DOUBLE";Vr.QUOTE_SINGLE="QUOTE_SINGLE";fp.Scalar=Vr;fp.isScalarValue=XA});var Qo=R(vv=>{"use strict";var QA=Xo(),Tn=K(),yv=ae(),ZA="tag:yaml.org,2002:";function e_(t,e,r){if(e){let n=r.filter(o=>o.tag===e),i=n.find(o=>!o.format)??n[0];if(!i)throw new Error(`Tag ${e} not found`);return i}return r.find(n=>n.identify?.(t)&&!n.format)}function t_(t,e,r){if(Tn.isDocument(t)&&(t=t.contents),Tn.isNode(t))return t;if(Tn.isPair(t)){let u=r.schema[Tn.MAP].createNode?.(r.schema,null,r);return u.items.push(t),u}(t instanceof String||t instanceof Number||t instanceof Boolean||typeof BigInt<"u"&&t instanceof BigInt)&&(t=t.valueOf());let{aliasDuplicateObjects:n,onAnchor:i,onTagObj:o,schema:a,sourceObjects:s}=r,c;if(n&&t&&typeof t=="object"){if(c=s.get(t),c)return c.anchor??(c.anchor=i(t)),new QA.Alias(c.anchor);c={anchor:null,node:null},s.set(t,c)}e?.startsWith("!!")&&(e=ZA+e.slice(2));let l=e_(t,e,a.tags);if(!l){if(t&&typeof t.toJSON=="function"&&(t=t.toJSON()),!t||typeof t!="object"){let u=new yv.Scalar(t);return c&&(c.node=u),u}l=t instanceof Map?a[Tn.MAP]:Symbol.iterator in Object(t)?a[Tn.SEQ]:a[Tn.MAP]}o&&(o(l),delete r.onTagObj);let d=l?.createNode?l.createNode(r.schema,t,r):typeof l?.nodeClass?.from=="function"?l.nodeClass.from(r.schema,t,r):new yv.Scalar(t);return e?d.tag=e:l.default||(d.tag=l.tag),c&&(c.node=d),d}vv.createNode=t_});var pc=R(uc=>{"use strict";var r_=Qo(),qt=K(),n_=lc();function mp(t,e,r){let n=r;for(let i=e.length-1;i>=0;--i){let o=e[i];if(typeof o=="number"&&Number.isInteger(o)&&o>=0){let a=[];a[o]=n,n=a}else n=new Map([[o,n]])}return r_.createNode(n,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:t,sourceObjects:new Map})}var wv=t=>t==null||typeof t=="object"&&!!t[Symbol.iterator]().next().done,hp=class extends n_.NodeBase{constructor(e,r){super(e),Object.defineProperty(this,"schema",{value:r,configurable:!0,enumerable:!1,writable:!0})}clone(e){let r=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(r.schema=e),r.items=r.items.map(n=>qt.isNode(n)||qt.isPair(n)?n.clone(e):n),this.range&&(r.range=this.range.slice()),r}addIn(e,r){if(wv(e))this.add(r);else{let[n,...i]=e,o=this.get(n,!0);if(qt.isCollection(o))o.addIn(i,r);else if(o===void 0&&this.schema)this.set(n,mp(this.schema,i,r));else throw new Error(`Expected YAML collection at ${n}. Remaining path: ${i}`)}}deleteIn(e){let[r,...n]=e;if(n.length===0)return this.delete(r);let i=this.get(r,!0);if(qt.isCollection(i))return i.deleteIn(n);throw new Error(`Expected YAML collection at ${r}. Remaining path: ${n}`)}getIn(e,r){let[n,...i]=e,o=this.get(n,!0);return i.length===0?!r&&qt.isScalar(o)?o.value:o:qt.isCollection(o)?o.getIn(i,r):void 0}hasAllNullValues(e){return this.items.every(r=>{if(!qt.isPair(r))return!1;let n=r.value;return n==null||e&&qt.isScalar(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(e){let[r,...n]=e;if(n.length===0)return this.has(r);let i=this.get(r,!0);return qt.isCollection(i)?i.hasIn(n):!1}setIn(e,r){let[n,...i]=e;if(i.length===0)this.set(n,r);else{let o=this.get(n,!0);if(qt.isCollection(o))o.setIn(i,r);else if(o===void 0&&this.schema)this.set(n,mp(this.schema,i,r));else throw new Error(`Expected YAML collection at ${n}. Remaining path: ${i}`)}}};uc.Collection=hp;uc.collectionFromPath=mp;uc.isEmptyPath=wv});var Zo=R(fc=>{"use strict";var i_=t=>t.replace(/^(?!$)(?: $)?/gm,"#");function gp(t,e){return/^\n+$/.test(t)?t.substring(1):e?t.replace(/^(?! *$)/gm,e):t}var o_=(t,e,r)=>t.endsWith(`
`)?gp(r,e):r.includes(`
`)?`
`+gp(r,e):(t.endsWith(" ")?"":" ")+r;fc.indentComment=gp;fc.lineComment=o_;fc.stringifyComment=i_});var kv=R(ea=>{"use strict";var a_="flow",yp="block",mc="quoted";function s_(t,e,r="flow",{indentAtStart:n,lineWidth:i=80,minContentWidth:o=20,onFold:a,onOverflow:s}={}){if(!i||i<0)return t;i<o&&(o=0);let c=Math.max(1+o,1+i-e.length);if(t.length<=c)return t;let l=[],d={},u=i-e.length;typeof n=="number"&&(n>i-Math.max(2,o)?l.push(0):u=i-n);let p,f,m=!1,g=-1,h=-1,w=-1;r===yp&&(g=bv(t,g,e.length),g!==-1&&(u=g+c));for(let v;v=t[g+=1];){if(r===mc&&v==="\\"){switch(h=g,t[g+1]){case"x":g+=3;break;case"u":g+=5;break;case"U":g+=9;break;default:g+=1}w=g}if(v===`
`)r===yp&&(g=bv(t,g,e.length)),u=g+e.length+c,p=void 0;else{if(v===" "&&f&&f!==" "&&f!==`
`&&f!==" "){let b=t[g+1];b&&b!==" "&&b!==`
`&&b!==" "&&(p=g)}if(g>=u)if(p)l.push(p),u=p+c,p=void 0;else if(r===mc){for(;f===" "||f===" ";)f=v,v=t[g+=1],m=!0;let b=g>w+1?g-2:h-1;if(d[b])return t;l.push(b),d[b]=!0,u=b+c,p=void 0}else m=!0}f=v}if(m&&s&&s(),l.length===0)return t;a&&a();let y=t.slice(0,l[0]);for(let v=0;v<l.length;++v){let b=l[v],k=l[v+1]||t.length;b===0?y=`
${e}${t.slice(0,k)}`:(r===mc&&d[b]&&(y+=`${t[b]}\\`),y+=`
${e}${t.slice(b+1,k)}`)}return y}function bv(t,e,r){let n=e,i=e+1,o=t[i];for(;o===" "||o===" ";)if(e<i+r)o=t[++e];else{do o=t[++e];while(o&&o!==`
`);n=e,i=e+1,o=t[i]}return n}ea.FOLD_BLOCK=yp;ea.FOLD_FLOW=a_;ea.FOLD_QUOTED=mc;ea.foldFlowLines=s_});var ra=R(Sv=>{"use strict";var Et=ae(),qr=kv(),gc=(t,e)=>({indentAtStart:e?t.indent.length:t.indentAtStart,lineWidth:t.options.lineWidth,minContentWidth:t.options.minContentWidth}),yc=t=>/^(%|---|\.\.\.)/m.test(t);function c_(t,e,r){if(!e||e<0)return!1;let n=e-r,i=t.length;if(i<=n)return!1;for(let o=0,a=0;o<i;++o)if(t[o]===`
`){if(o-a>n)return!0;if(a=o+1,i-a<=n)return!1}return!0}function ta(t,e){let r=JSON.stringify(t);if(e.options.doubleQuotedAsJSON)return r;let{implicitKey:n}=e,i=e.options.doubleQuotedMinMultiLineLength,o=e.indent||(yc(t)?" ":""),a="",s=0;for(let c=0,l=r[c];l;l=r[++c])if(l===" "&&r[c+1]==="\\"&&r[c+2]==="n"&&(a+=r.slice(s,c)+"\\ ",c+=1,s=c,l="\\"),l==="\\")switch(r[c+1]){case"u":{a+=r.slice(s,c);let d=r.substr(c+2,4);switch(d){case"0000":a+="\\0";break;case"0007":a+="\\a";break;case"000b":a+="\\v";break;case"001b":a+="\\e";break;case"0085":a+="\\N";break;case"00a0":a+="\\_";break;case"2028":a+="\\L";break;case"2029":a+="\\P";break;default:d.substr(0,2)==="00"?a+="\\x"+d.substr(2):a+=r.substr(c,6)}c+=5,s=c+1}break;case"n":if(n||r[c+2]==='"'||r.length<i)c+=1;else{for(a+=r.slice(s,c)+`
`;r[c+2]==="\\"&&r[c+3]==="n"&&r[c+4]!=='"';)a+=`
`,c+=2;a+=o,r[c+2]===" "&&(a+="\\"),c+=1,s=c+1}break;default:c+=1}return a=s?a+r.slice(s):r,n?a:qr.foldFlowLines(a,o,qr.FOLD_QUOTED,gc(e,!1))}function vp(t,e){if(e.options.singleQuote===!1||e.implicitKey&&t.includes(`
`)||/[ \t]\n|\n[ \t]/.test(t))return ta(t,e);let r=e.indent||(yc(t)?" ":""),n="'"+t.replace(/'/g,"''").replace(/\n+/g,`$&
${r}`)+"'";return e.implicitKey?n:qr.foldFlowLines(n,r,qr.FOLD_FLOW,gc(e,!1))}function Bi(t,e){let{singleQuote:r}=e.options,n;if(r===!1)n=ta;else{let i=t.includes('"'),o=t.includes("'");i&&!o?n=vp:o&&!i?n=ta:n=r?vp:ta}return n(t,e)}var wp;try{wp=new RegExp(`(^|(?<!
))
+(?!
|$)`,"g")}catch{wp=/\n+(?!\n|$)/g}function hc({comment:t,type:e,value:r},n,i,o){let{blockQuote:a,commentString:s,lineWidth:c}=n.options;if(!a||/\n[\t ]+$/.test(r))return Bi(r,n);let l=n.indent||(n.forceBlockIndent||yc(r)?" ":""),d=a==="literal"?!0:a==="folded"||e===Et.Scalar.BLOCK_FOLDED?!1:e===Et.Scalar.BLOCK_LITERAL?!0:!c_(r,c,l.length);if(!r)return d?`|
`:`>
`;let u,p;for(p=r.length;p>0;--p){let k=r[p-1];if(k!==`
`&&k!==" "&&k!==" ")break}let f=r.substring(p),m=f.indexOf(`
`);m===-1?u="-":r===f||m!==f.length-1?(u="+",o&&o()):u="",f&&(r=r.slice(0,-f.length),f[f.length-1]===`
`&&(f=f.slice(0,-1)),f=f.replace(wp,`$&${l}`));let g=!1,h,w=-1;for(h=0;h<r.length;++h){let k=r[h];if(k===" ")g=!0;else if(k===`
`)w=h;else break}let y=r.substring(0,w<h?w+1:h);y&&(r=r.substring(y.length),y=y.replace(/\n+/g,`$&${l}`));let b=(g?l?"2":"1":"")+u;if(t&&(b+=" "+s(t.replace(/ ?[\r\n]+/g," ")),i&&i()),!d){let k=r.replace(/\n+/g,`
$&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${l}`),S=!1,E=gc(n,!0);a!=="folded"&&e!==Et.Scalar.BLOCK_FOLDED&&(E.onOverflow=()=>{S=!0});let N=qr.foldFlowLines(`${y}${k}${f}`,l,qr.FOLD_BLOCK,E);if(!S)return`>${b}
${l}${N}`}return r=r.replace(/\n+/g,`$&${l}`),`|${b}
${l}${y}${r}${f}`}function l_(t,e,r,n){let{type:i,value:o}=t,{actualString:a,implicitKey:s,indent:c,indentStep:l,inFlow:d}=e;if(s&&o.includes(`
`)||d&&/[[\]{},]/.test(o))return Bi(o,e);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(o))return s||d||!o.includes(`
`)?Bi(o,e):hc(t,e,r,n);if(!s&&!d&&i!==Et.Scalar.PLAIN&&o.includes(`
`))return hc(t,e,r,n);if(yc(o)){if(c==="")return e.forceBlockIndent=!0,hc(t,e,r,n);if(s&&c===l)return Bi(o,e)}let u=o.replace(/\n+/g,`$&
${c}`);if(a){let p=g=>g.default&&g.tag!=="tag:yaml.org,2002:str"&&g.test?.test(u),{compat:f,tags:m}=e.doc.schema;if(m.some(p)||f?.some(p))return Bi(o,e)}return s?u:qr.foldFlowLines(u,c,qr.FOLD_FLOW,gc(e,!1))}function d_(t,e,r,n){let{implicitKey:i,inFlow:o}=e,a=typeof t.value=="string"?t:Object.assign({},t,{value:String(t.value)}),{type:s}=t;s!==Et.Scalar.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(a.value)&&(s=Et.Scalar.QUOTE_DOUBLE);let c=d=>{switch(d){case Et.Scalar.BLOCK_FOLDED:case Et.Scalar.BLOCK_LITERAL:return i||o?Bi(a.value,e):hc(a,e,r,n);case Et.Scalar.QUOTE_DOUBLE:return ta(a.value,e);case Et.Scalar.QUOTE_SINGLE:return vp(a.value,e);case Et.Scalar.PLAIN:return l_(a,e,r,n);default:return null}},l=c(s);if(l===null){let{defaultKeyType:d,defaultStringType:u}=e.options,p=i&&d||u;if(l=c(p),l===null)throw new Error(`Unsupported default string type ${p}`)}return l}Sv.stringifyString=d_});var na=R(bp=>{"use strict";var u_=cc(),zr=K(),p_=Zo(),f_=ra();function m_(t,e){let r=Object.assign({blockQuote:!0,commentString:p_.stringifyComment,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trailingComma:!1,trueStr:"true",verifyAliasOrder:!0},t.schema.toStringOptions,e),n;switch(r.collectionStyle){case"block":n=!1;break;case"flow":n=!0;break;default:n=null}return{anchors:new Set,doc:t,flowCollectionPadding:r.flowCollectionPadding?" ":"",indent:"",indentStep:typeof r.indent=="number"?" ".repeat(r.indent):" ",inFlow:n,options:r}}function h_(t,e){if(e.tag){let i=t.filter(o=>o.tag===e.tag);if(i.length>0)return i.find(o=>o.format===e.format)??i[0]}let r,n;if(zr.isScalar(e)){n=e.value;let i=t.filter(o=>o.identify?.(n));if(i.length>1){let o=i.filter(a=>a.test);o.length>0&&(i=o)}r=i.find(o=>o.format===e.format)??i.find(o=>!o.format)}else n=e,r=t.find(i=>i.nodeClass&&n instanceof i.nodeClass);if(!r){let i=n?.constructor?.name??(n===null?"null":typeof n);throw new Error(`Tag not resolved for ${i} value`)}return r}function g_(t,e,{anchors:r,doc:n}){if(!n.directives)return"";let i=[],o=(zr.isScalar(t)||zr.isCollection(t))&&t.anchor;o&&u_.anchorIsValid(o)&&(r.add(o),i.push(`&${o}`));let a=t.tag??(e.default?null:e.tag);return a&&i.push(n.directives.tagString(a)),i.join(" ")}function y_(t,e,r,n){if(zr.isPair(t))return t.toString(e,r,n);if(zr.isAlias(t)){if(e.doc.directives)return t.toString(e);if(e.resolvedAliases?.has(t))throw new TypeError("Cannot stringify circular structure without alias nodes");e.resolvedAliases?e.resolvedAliases.add(t):e.resolvedAliases=new Set([t]),t=t.resolve(e.doc)}let i,o=zr.isNode(t)?t:e.doc.createNode(t,{onTagObj:c=>i=c});i??(i=h_(e.doc.schema.tags,o));let a=g_(o,i,e);a.length>0&&(e.indentAtStart=(e.indentAtStart??0)+a.length+1);let s=typeof i.stringify=="function"?i.stringify(o,e,r,n):zr.isScalar(o)?f_.stringifyString(o,e,r,n):o.toString(e,r,n);return a?zr.isScalar(o)||s[0]==="{"||s[0]==="["?`${a} ${s}`:`${a}
${e.indent}${s}`:s}bp.createStringifyContext=m_;bp.stringify=y_});var Pv=R(xv=>{"use strict";var hr=K(),Nv=ae(),Ev=na(),ia=Zo();function v_({key:t,value:e},r,n,i){let{allNullValues:o,doc:a,indent:s,indentStep:c,options:{commentString:l,indentSeq:d,simpleKeys:u}}=r,p=hr.isNode(t)&&t.comment||null;if(u){if(p)throw new Error("With simple keys, key nodes cannot have comments");if(hr.isCollection(t)||!hr.isNode(t)&&typeof t=="object"){let E="With simple keys, collection cannot be used as a key value";throw new Error(E)}}let f=!u&&(!t||p&&e==null&&!r.inFlow||hr.isCollection(t)||(hr.isScalar(t)?t.type===Nv.Scalar.BLOCK_FOLDED||t.type===Nv.Scalar.BLOCK_LITERAL:typeof t=="object"));r=Object.assign({},r,{allNullValues:!1,implicitKey:!f&&(u||!o),indent:s+c});let m=!1,g=!1,h=Ev.stringify(t,r,()=>m=!0,()=>g=!0);if(!f&&!r.inFlow&&h.length>1024){if(u)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");f=!0}if(r.inFlow){if(o||e==null)return m&&n&&n(),h===""?"?":f?`? ${h}`:h}else if(o&&!u||e==null&&f)return h=`? ${h}`,p&&!m?h+=ia.lineComment(h,r.indent,l(p)):g&&i&&i(),h;m&&(p=null),f?(p&&(h+=ia.lineComment(h,r.indent,l(p))),h=`? ${h}
${s}:`):(h=`${h}:`,p&&(h+=ia.lineComment(h,r.indent,l(p))));let w,y,v;hr.isNode(e)?(w=!!e.spaceBefore,y=e.commentBefore,v=e.comment):(w=!1,y=null,v=null,e&&typeof e=="object"&&(e=a.createNode(e))),r.implicitKey=!1,!f&&!p&&hr.isScalar(e)&&(r.indentAtStart=h.length+1),g=!1,!d&&c.length>=2&&!r.inFlow&&!f&&hr.isSeq(e)&&!e.flow&&!e.tag&&!e.anchor&&(r.indent=r.indent.substring(2));let b=!1,k=Ev.stringify(e,r,()=>b=!0,()=>g=!0),S=" ";if(p||w||y){if(S=w?`
`:"",y){let E=l(y);S+=`
${ia.indentComment(E,r.indent)}`}k===""&&!r.inFlow?S===`
`&&v&&(S=`
`):S+=`
${r.indent}`}else if(!f&&hr.isCollection(e)){let E=k[0],N=k.indexOf(`
`),P=N!==-1,_=r.inFlow??e.flow??e.items.length===0;if(P||!_){let j=!1;if(P&&(E==="&"||E==="!")){let x=k.indexOf(" ");E==="&"&&x!==-1&&x<N&&k[x+1]==="!"&&(x=k.indexOf(" ",x+1)),(x===-1||N<x)&&(j=!0)}j||(S=`
${r.indent}`)}}else(k===""||k[0]===`
`)&&(S="");return h+=S+k,r.inFlow?b&&n&&n():v&&!b?h+=ia.lineComment(h,r.indent,l(v)):g&&i&&i(),h}xv.stringifyPair=v_});var Sp=R(kp=>{"use strict";var Cv=nc("process");function w_(t,...e){t==="debug"&&console.log(...e)}function b_(t,e){(t==="debug"||t==="warn")&&(typeof Cv.emitWarning=="function"?Cv.emitWarning(e):console.warn(e))}kp.debug=w_;kp.warn=b_});var Sc=R(kc=>{"use strict";var bc=K(),Rv=ae(),vc="<<",wc={identify:t=>t===vc||typeof t=="symbol"&&t.description===vc,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new Rv.Scalar(Symbol(vc)),{addToJSMap:Av}),stringify:()=>vc},k_=(t,e)=>(wc.identify(e)||bc.isScalar(e)&&(!e.type||e.type===Rv.Scalar.PLAIN)&&wc.identify(e.value))&&t?.doc.schema.tags.some(r=>r.tag===wc.tag&&r.default);function Av(t,e,r){let n=_v(t,r);if(bc.isSeq(n))for(let i of n.items)Np(t,e,i);else if(Array.isArray(n))for(let i of n)Np(t,e,i);else Np(t,e,n)}function Np(t,e,r){let n=_v(t,r);if(!bc.isMap(n))throw new Error("Merge sources must be maps or map aliases");let i=n.toJSON(null,t,Map);for(let[o,a]of i)e instanceof Map?e.has(o)||e.set(o,a):e instanceof Set?e.add(o):Object.prototype.hasOwnProperty.call(e,o)||Object.defineProperty(e,o,{value:a,writable:!0,enumerable:!0,configurable:!0});return e}function _v(t,e){return t&&bc.isAlias(e)?e.resolve(t.doc,t):e}kc.addMergeToJSMap=Av;kc.isMergeKey=k_;kc.merge=wc});var xp=R(Tv=>{"use strict";var S_=Sp(),jv=Sc(),N_=na(),Iv=K(),Ep=Wr();function E_(t,e,{key:r,value:n}){if(Iv.isNode(r)&&r.addToJSMap)r.addToJSMap(t,e,n);else if(jv.isMergeKey(t,r))jv.addMergeToJSMap(t,e,n);else{let i=Ep.toJS(r,"",t);if(e instanceof Map)e.set(i,Ep.toJS(n,i,t));else if(e instanceof Set)e.add(i);else{let o=x_(r,i,t),a=Ep.toJS(n,o,t);o in e?Object.defineProperty(e,o,{value:a,writable:!0,enumerable:!0,configurable:!0}):e[o]=a}}return e}function x_(t,e,r){if(e===null)return"";if(typeof e!="object")return String(e);if(Iv.isNode(t)&&r?.doc){let n=N_.createStringifyContext(r.doc,{});n.anchors=new Set;for(let o of r.anchors.keys())n.anchors.add(o.anchor);n.inFlow=!0,n.inStringifyKey=!0;let i=t.toString(n);if(!r.mapKeyWarned){let o=JSON.stringify(i);o.length>40&&(o=o.substring(0,36)+'..."'),S_.warn(r.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${o}. Set mapAsMap: true to use object keys.`),r.mapKeyWarned=!0}return i}return JSON.stringify(e)}Tv.addPairToJSMap=E_});var Gr=R(Pp=>{"use strict";var $v=Qo(),P_=Pv(),C_=xp(),Nc=K();function R_(t,e,r){let n=$v.createNode(t,void 0,r),i=$v.createNode(e,void 0,r);return new Ec(n,i)}var Ec=class t{constructor(e,r=null){Object.defineProperty(this,Nc.NODE_TYPE,{value:Nc.PAIR}),this.key=e,this.value=r}clone(e){let{key:r,value:n}=this;return Nc.isNode(r)&&(r=r.clone(e)),Nc.isNode(n)&&(n=n.clone(e)),new t(r,n)}toJSON(e,r){let n=r?.mapAsMap?new Map:{};return C_.addPairToJSMap(r,n,this)}toString(e,r,n){return e?.doc?P_.stringifyPair(this,e,r,n):JSON.stringify(this)}};Pp.Pair=Ec;Pp.createPair=R_});var Cp=R(Mv=>{"use strict";var $n=K(),Ov=na(),xc=Zo();function A_(t,e,r){return(e.inFlow??t.flow?j_:__)(t,e,r)}function __({comment:t,items:e},r,{blockItemPrefix:n,flowChars:i,itemIndent:o,onChompKeep:a,onComment:s}){let{indent:c,options:{commentString:l}}=r,d=Object.assign({},r,{indent:o,type:null}),u=!1,p=[];for(let m=0;m<e.length;++m){let g=e[m],h=null;if($n.isNode(g))!u&&g.spaceBefore&&p.push(""),Pc(r,p,g.commentBefore,u),g.comment&&(h=g.comment);else if($n.isPair(g)){let y=$n.isNode(g.key)?g.key:null;y&&(!u&&y.spaceBefore&&p.push(""),Pc(r,p,y.commentBefore,u))}u=!1;let w=Ov.stringify(g,d,()=>h=null,()=>u=!0);h&&(w+=xc.lineComment(w,o,l(h))),u&&h&&(u=!1),p.push(n+w)}let f;if(p.length===0)f=i.start+i.end;else{f=p[0];for(let m=1;m<p.length;++m){let g=p[m];f+=g?`
${c}${g}`:`
`}}return t?(f+=`
`+xc.indentComment(l(t),c),s&&s()):u&&a&&a(),f}function j_({items:t},e,{flowChars:r,itemIndent:n}){let{indent:i,indentStep:o,flowCollectionPadding:a,options:{commentString:s}}=e;n+=o;let c=Object.assign({},e,{indent:n,inFlow:!0,type:null}),l=!1,d=0,u=[];for(let m=0;m<t.length;++m){let g=t[m],h=null;if($n.isNode(g))g.spaceBefore&&u.push(""),Pc(e,u,g.commentBefore,!1),g.comment&&(h=g.comment);else if($n.isPair(g)){let y=$n.isNode(g.key)?g.key:null;y&&(y.spaceBefore&&u.push(""),Pc(e,u,y.commentBefore,!1),y.comment&&(l=!0));let v=$n.isNode(g.value)?g.value:null;v?(v.comment&&(h=v.comment),v.commentBefore&&(l=!0)):g.value==null&&y?.comment&&(h=y.comment)}h&&(l=!0);let w=Ov.stringify(g,c,()=>h=null);l||(l=u.length>d||w.includes(`
`)),m<t.length-1?w+=",":e.options.trailingComma&&(e.options.lineWidth>0&&(l||(l=u.reduce((y,v)=>y+v.length+2,2)+(w.length+2)>e.options.lineWidth)),l&&(w+=",")),h&&(w+=xc.lineComment(w,n,s(h))),u.push(w),d=u.length}let{start:p,end:f}=r;if(u.length===0)return p+f;if(!l){let m=u.reduce((g,h)=>g+h.length+2,2);l=e.options.lineWidth>0&&m>e.options.lineWidth}if(l){let m=p;for(let g of u)m+=g?`
${o}${i}${g}`:`
`;return`${m}
${i}${f}`}else return`${p}${a}${u.join(" ")}${a}${f}`}function Pc({indent:t,options:{commentString:e}},r,n,i){if(n&&i&&(n=n.replace(/^\n+/,"")),n){let o=xc.indentComment(e(n),t);r.push(o.trimStart())}}Mv.stringifyCollection=A_});var Jr=R(Ap=>{"use strict";var I_=Cp(),T_=xp(),$_=pc(),Ur=K(),Cc=Gr(),O_=ae();function oa(t,e){let r=Ur.isScalar(e)?e.value:e;for(let n of t)if(Ur.isPair(n)&&(n.key===e||n.key===r||Ur.isScalar(n.key)&&n.key.value===r))return n}var Rp=class extends $_.Collection{static get tagName(){return"tag:yaml.org,2002:map"}constructor(e){super(Ur.MAP,e),this.items=[]}static from(e,r,n){let{keepUndefined:i,replacer:o}=n,a=new this(e),s=(c,l)=>{if(typeof o=="function")l=o.call(r,c,l);else if(Array.isArray(o)&&!o.includes(c))return;(l!==void 0||i)&&a.items.push(Cc.createPair(c,l,n))};if(r instanceof Map)for(let[c,l]of r)s(c,l);else if(r&&typeof r=="object")for(let c of Object.keys(r))s(c,r[c]);return typeof e.sortMapEntries=="function"&&a.items.sort(e.sortMapEntries),a}add(e,r){let n;Ur.isPair(e)?n=e:!e||typeof e!="object"||!("key"in e)?n=new Cc.Pair(e,e?.value):n=new Cc.Pair(e.key,e.value);let i=oa(this.items,n.key),o=this.schema?.sortMapEntries;if(i){if(!r)throw new Error(`Key ${n.key} already set`);Ur.isScalar(i.value)&&O_.isScalarValue(n.value)?i.value.value=n.value:i.value=n.value}else if(o){let a=this.items.findIndex(s=>o(n,s)<0);a===-1?this.items.push(n):this.items.splice(a,0,n)}else this.items.push(n)}delete(e){let r=oa(this.items,e);return r?this.items.splice(this.items.indexOf(r),1).length>0:!1}get(e,r){let i=oa(this.items,e)?.value;return(!r&&Ur.isScalar(i)?i.value:i)??void 0}has(e){return!!oa(this.items,e)}set(e,r){this.add(new Cc.Pair(e,r),!0)}toJSON(e,r,n){let i=n?new n:r?.mapAsMap?new Map:{};r?.onCreate&&r.onCreate(i);for(let o of this.items)T_.addPairToJSMap(r,i,o);return i}toString(e,r,n){if(!e)return JSON.stringify(this);for(let i of this.items)if(!Ur.isPair(i))throw new Error(`Map items must all be pairs; found ${JSON.stringify(i)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),I_.stringifyCollection(this,e,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:e.indent||"",onChompKeep:n,onComment:r})}};Ap.YAMLMap=Rp;Ap.findPair=oa});var Fi=R(Dv=>{"use strict";var M_=K(),Lv=Jr(),L_={collection:"map",default:!0,nodeClass:Lv.YAMLMap,tag:"tag:yaml.org,2002:map",resolve(t,e){return M_.isMap(t)||e("Expected a mapping for this tag"),t},createNode:(t,e,r)=>Lv.YAMLMap.from(t,e,r)};Dv.map=L_});var Yr=R(Bv=>{"use strict";var D_=Qo(),B_=Cp(),F_=pc(),Ac=K(),K_=ae(),H_=Wr(),_p=class extends F_.Collection{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(e){super(Ac.SEQ,e),this.items=[]}add(e){this.items.push(e)}delete(e){let r=Rc(e);return typeof r!="number"?!1:this.items.splice(r,1).length>0}get(e,r){let n=Rc(e);if(typeof n!="number")return;let i=this.items[n];return!r&&Ac.isScalar(i)?i.value:i}has(e){let r=Rc(e);return typeof r=="number"&&r<this.items.length}set(e,r){let n=Rc(e);if(typeof n!="number")throw new Error(`Expected a valid index, not ${e}.`);let i=this.items[n];Ac.isScalar(i)&&K_.isScalarValue(r)?i.value=r:this.items[n]=r}toJSON(e,r){let n=[];r?.onCreate&&r.onCreate(n);let i=0;for(let o of this.items)n.push(H_.toJS(o,String(i++),r));return n}toString(e,r,n){return e?B_.stringifyCollection(this,e,{blockItemPrefix:"- ",flowChars:{start:"[",end:"]"},itemIndent:(e.indent||"")+" ",onChompKeep:n,onComment:r}):JSON.stringify(this)}static from(e,r,n){let{replacer:i}=n,o=new this(e);if(r&&Symbol.iterator in Object(r)){let a=0;for(let s of r){if(typeof i=="function"){let c=r instanceof Set?s:String(a++);s=i.call(r,c,s)}o.items.push(D_.createNode(s,void 0,n))}}return o}};function Rc(t){let e=Ac.isScalar(t)?t.value:t;return e&&typeof e=="string"&&(e=Number(e)),typeof e=="number"&&Number.isInteger(e)&&e>=0?e:null}Bv.YAMLSeq=_p});var Ki=R(Kv=>{"use strict";var W_=K(),Fv=Yr(),V_={collection:"seq",default:!0,nodeClass:Fv.YAMLSeq,tag:"tag:yaml.org,2002:seq",resolve(t,e){return W_.isSeq(t)||e("Expected a sequence for this tag"),t},createNode:(t,e,r)=>Fv.YAMLSeq.from(t,e,r)};Kv.seq=V_});var aa=R(Hv=>{"use strict";var q_=ra(),z_={identify:t=>typeof t=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:t=>t,stringify(t,e,r,n){return e=Object.assign({actualString:!0},e),q_.stringifyString(t,e,r,n)}};Hv.string=z_});var _c=R(qv=>{"use strict";var Wv=ae(),Vv={identify:t=>t==null,createNode:()=>new Wv.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new Wv.Scalar(null),stringify:({source:t},e)=>typeof t=="string"&&Vv.test.test(t)?t:e.options.nullStr};qv.nullTag=Vv});var jp=R(Gv=>{"use strict";var G_=ae(),zv={identify:t=>typeof t=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:t=>new G_.Scalar(t[0]==="t"||t[0]==="T"),stringify({source:t,value:e},r){if(t&&zv.test.test(t)){let n=t[0]==="t"||t[0]==="T";if(e===n)return t}return e?r.options.trueStr:r.options.falseStr}};Gv.boolTag=zv});var Hi=R(Uv=>{"use strict";function U_({format:t,minFractionDigits:e,tag:r,value:n}){if(typeof n=="bigint")return String(n);let i=typeof n=="number"?n:Number(n);if(!isFinite(i))return isNaN(i)?".nan":i<0?"-.inf":".inf";let o=Object.is(n,-0)?"-0":JSON.stringify(n);if(!t&&e&&(!r||r==="tag:yaml.org,2002:float")&&/^-?\d/.test(o)&&!o.includes("e")){let a=o.indexOf(".");a<0&&(a=o.length,o+=".");let s=e-(o.length-a-1);for(;s-- >0;)o+="0"}return o}Uv.stringifyNumber=U_});var Tp=R(jc=>{"use strict";var J_=ae(),Ip=Hi(),Y_={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:t=>t.slice(-3).toLowerCase()==="nan"?NaN:t[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:Ip.stringifyNumber},X_={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:t=>parseFloat(t),stringify(t){let e=Number(t.value);return isFinite(e)?e.toExponential():Ip.stringifyNumber(t)}},Q_={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve(t){let e=new J_.Scalar(parseFloat(t)),r=t.indexOf(".");return r!==-1&&t[t.length-1]==="0"&&(e.minFractionDigits=t.length-r-1),e},stringify:Ip.stringifyNumber};jc.float=Q_;jc.floatExp=X_;jc.floatNaN=Y_});var Op=R(Tc=>{"use strict";var Jv=Hi(),Ic=t=>typeof t=="bigint"||Number.isInteger(t),$p=(t,e,r,{intAsBigInt:n})=>n?BigInt(t):parseInt(t.substring(e),r);function Yv(t,e,r){let{value:n}=t;return Ic(n)&&n>=0?r+n.toString(e):Jv.stringifyNumber(t)}var Z_={identify:t=>Ic(t)&&t>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(t,e,r)=>$p(t,2,8,r),stringify:t=>Yv(t,8,"0o")},ej={identify:Ic,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(t,e,r)=>$p(t,0,10,r),stringify:Jv.stringifyNumber},tj={identify:t=>Ic(t)&&t>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(t,e,r)=>$p(t,2,16,r),stringify:t=>Yv(t,16,"0x")};Tc.int=ej;Tc.intHex=tj;Tc.intOct=Z_});var Qv=R(Xv=>{"use strict";var rj=Fi(),nj=_c(),ij=Ki(),oj=aa(),aj=jp(),Mp=Tp(),Lp=Op(),sj=[rj.map,ij.seq,oj.string,nj.nullTag,aj.boolTag,Lp.intOct,Lp.int,Lp.intHex,Mp.floatNaN,Mp.floatExp,Mp.float];Xv.schema=sj});var tw=R(ew=>{"use strict";var cj=ae(),lj=Fi(),dj=Ki();function Zv(t){return typeof t=="bigint"||Number.isInteger(t)}var $c=({value:t})=>JSON.stringify(t),uj=[{identify:t=>typeof t=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:t=>t,stringify:$c},{identify:t=>t==null,createNode:()=>new cj.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:$c},{identify:t=>typeof t=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true$|^false$/,resolve:t=>t==="true",stringify:$c},{identify:Zv,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(t,e,{intAsBigInt:r})=>r?BigInt(t):parseInt(t,10),stringify:({value:t})=>Zv(t)?t.toString():JSON.stringify(t)},{identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:t=>parseFloat(t),stringify:$c}],pj={default:!0,tag:"",test:/^/,resolve(t,e){return e(`Unresolved plain scalar ${JSON.stringify(t)}`),t}},fj=[lj.map,dj.seq].concat(uj,pj);ew.schema=fj});var Bp=R(rw=>{"use strict";var sa=nc("buffer"),Dp=ae(),mj=ra(),hj={identify:t=>t instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(t,e){if(typeof sa.Buffer=="function")return sa.Buffer.from(t,"base64");if(typeof atob=="function"){let r=atob(t.replace(/[\n\r]/g,"")),n=new Uint8Array(r.length);for(let i=0;i<r.length;++i)n[i]=r.charCodeAt(i);return n}else return e("This environment does not support reading binary tags; either Buffer or atob is required"),t},stringify({comment:t,type:e,value:r},n,i,o){if(!r)return"";let a=r,s;if(typeof sa.Buffer=="function")s=a instanceof sa.Buffer?a.toString("base64"):sa.Buffer.from(a.buffer).toString("base64");else if(typeof btoa=="function"){let c="";for(let l=0;l<a.length;++l)c+=String.fromCharCode(a[l]);s=btoa(c)}else throw new Error("This environment does not support writing binary tags; either Buffer or btoa is required");if(e??(e=Dp.Scalar.BLOCK_LITERAL),e!==Dp.Scalar.QUOTE_DOUBLE){let c=Math.max(n.options.lineWidth-n.indent.length,n.options.minContentWidth),l=Math.ceil(s.length/c),d=new Array(l);for(let u=0,p=0;u<l;++u,p+=c)d[u]=s.substr(p,c);s=d.join(e===Dp.Scalar.BLOCK_LITERAL?`
`:" ")}return mj.stringifyString({comment:t,type:e,value:s},n,i,o)}};rw.binary=hj});var Lc=R(Mc=>{"use strict";var Oc=K(),Fp=Gr(),gj=ae(),yj=Yr();function nw(t,e){if(Oc.isSeq(t))for(let r=0;r<t.items.length;++r){let n=t.items[r];if(!Oc.isPair(n)){if(Oc.isMap(n)){n.items.length>1&&e("Each pair must have its own sequence indicator");let i=n.items[0]||new Fp.Pair(new gj.Scalar(null));if(n.commentBefore&&(i.key.commentBefore=i.key.commentBefore?`${n.commentBefore}
${i.key.commentBefore}`:n.commentBefore),n.comment){let o=i.value??i.key;o.comment=o.comment?`${n.comment}
${o.comment}`:n.comment}n=i}t.items[r]=Oc.isPair(n)?n:new Fp.Pair(n)}}else e("Expected a sequence for this tag");return t}function iw(t,e,r){let{replacer:n}=r,i=new yj.YAMLSeq(t);i.tag="tag:yaml.org,2002:pairs";let o=0;if(e&&Symbol.iterator in Object(e))for(let a of e){typeof n=="function"&&(a=n.call(e,String(o++),a));let s,c;if(Array.isArray(a))if(a.length===2)s=a[0],c=a[1];else throw new TypeError(`Expected [key, value] tuple: ${a}`);else if(a&&a instanceof Object){let l=Object.keys(a);if(l.length===1)s=l[0],c=a[s];else throw new TypeError(`Expected tuple with one key, not ${l.length} keys`)}else s=a;i.items.push(Fp.createPair(s,c,r))}return i}var vj={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:nw,createNode:iw};Mc.createPairs=iw;Mc.pairs=vj;Mc.resolvePairs=nw});var Wp=R(Hp=>{"use strict";var ow=K(),Kp=Wr(),ca=Jr(),wj=Yr(),aw=Lc(),On=class t extends wj.YAMLSeq{constructor(){super(),this.add=ca.YAMLMap.prototype.add.bind(this),this.delete=ca.YAMLMap.prototype.delete.bind(this),this.get=ca.YAMLMap.prototype.get.bind(this),this.has=ca.YAMLMap.prototype.has.bind(this),this.set=ca.YAMLMap.prototype.set.bind(this),this.tag=t.tag}toJSON(e,r){if(!r)return super.toJSON(e);let n=new Map;r?.onCreate&&r.onCreate(n);for(let i of this.items){let o,a;if(ow.isPair(i)?(o=Kp.toJS(i.key,"",r),a=Kp.toJS(i.value,o,r)):o=Kp.toJS(i,"",r),n.has(o))throw new Error("Ordered maps must not include duplicate keys");n.set(o,a)}return n}static from(e,r,n){let i=aw.createPairs(e,r,n),o=new this;return o.items=i.items,o}};On.tag="tag:yaml.org,2002:omap";var bj={collection:"seq",identify:t=>t instanceof Map,nodeClass:On,default:!1,tag:"tag:yaml.org,2002:omap",resolve(t,e){let r=aw.resolvePairs(t,e),n=[];for(let{key:i}of r.items)ow.isScalar(i)&&(n.includes(i.value)?e(`Ordered maps must not include duplicate keys: ${i.value}`):n.push(i.value));return Object.assign(new On,r)},createNode:(t,e,r)=>On.from(t,e,r)};Hp.YAMLOMap=On;Hp.omap=bj});var uw=R(Vp=>{"use strict";var sw=ae();function cw({value:t,source:e},r){return e&&(t?lw:dw).test.test(e)?e:t?r.options.trueStr:r.options.falseStr}var lw={identify:t=>t===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new sw.Scalar(!0),stringify:cw},dw={identify:t=>t===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new sw.Scalar(!1),stringify:cw};Vp.falseTag=dw;Vp.trueTag=lw});var pw=R(Dc=>{"use strict";var kj=ae(),qp=Hi(),Sj={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:t=>t.slice(-3).toLowerCase()==="nan"?NaN:t[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:qp.stringifyNumber},Nj={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:t=>parseFloat(t.replace(/_/g,"")),stringify(t){let e=Number(t.value);return isFinite(e)?e.toExponential():qp.stringifyNumber(t)}},Ej={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(t){let e=new kj.Scalar(parseFloat(t.replace(/_/g,""))),r=t.indexOf(".");if(r!==-1){let n=t.substring(r+1).replace(/_/g,"");n[n.length-1]==="0"&&(e.minFractionDigits=n.length)}return e},stringify:qp.stringifyNumber};Dc.float=Ej;Dc.floatExp=Nj;Dc.floatNaN=Sj});var mw=R(da=>{"use strict";var fw=Hi(),la=t=>typeof t=="bigint"||Number.isInteger(t);function Bc(t,e,r,{intAsBigInt:n}){let i=t[0];if((i==="-"||i==="+")&&(e+=1),t=t.substring(e).replace(/_/g,""),n){switch(r){case 2:t=`0b${t}`;break;case 8:t=`0o${t}`;break;case 16:t=`0x${t}`;break}let a=BigInt(t);return i==="-"?BigInt(-1)*a:a}let o=parseInt(t,r);return i==="-"?-1*o:o}function zp(t,e,r){let{value:n}=t;if(la(n)){let i=n.toString(e);return n<0?"-"+r+i.substr(1):r+i}return fw.stringifyNumber(t)}var xj={identify:la,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(t,e,r)=>Bc(t,2,2,r),stringify:t=>zp(t,2,"0b")},Pj={identify:la,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(t,e,r)=>Bc(t,1,8,r),stringify:t=>zp(t,8,"0")},Cj={identify:la,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(t,e,r)=>Bc(t,0,10,r),stringify:fw.stringifyNumber},Rj={identify:la,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(t,e,r)=>Bc(t,2,16,r),stringify:t=>zp(t,16,"0x")};da.int=Cj;da.intBin=xj;da.intHex=Rj;da.intOct=Pj});var Up=R(Gp=>{"use strict";var Hc=K(),Fc=Gr(),Kc=Jr(),Mn=class t extends Kc.YAMLMap{constructor(e){super(e),this.tag=t.tag}add(e){let r;Hc.isPair(e)?r=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?r=new Fc.Pair(e.key,null):r=new Fc.Pair(e,null),Kc.findPair(this.items,r.key)||this.items.push(r)}get(e,r){let n=Kc.findPair(this.items,e);return!r&&Hc.isPair(n)?Hc.isScalar(n.key)?n.key.value:n.key:n}set(e,r){if(typeof r!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof r}`);let n=Kc.findPair(this.items,e);n&&!r?this.items.splice(this.items.indexOf(n),1):!n&&r&&this.items.push(new Fc.Pair(e))}toJSON(e,r){return super.toJSON(e,r,Set)}toString(e,r,n){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),r,n);throw new Error("Set items must all have null values")}static from(e,r,n){let{replacer:i}=n,o=new this(e);if(r&&Symbol.iterator in Object(r))for(let a of r)typeof i=="function"&&(a=i.call(r,a,a)),o.items.push(Fc.createPair(a,null,n));return o}};Mn.tag="tag:yaml.org,2002:set";var Aj={collection:"map",identify:t=>t instanceof Set,nodeClass:Mn,default:!1,tag:"tag:yaml.org,2002:set",createNode:(t,e,r)=>Mn.from(t,e,r),resolve(t,e){if(Hc.isMap(t)){if(t.hasAllNullValues(!0))return Object.assign(new Mn,t);e("Set items must all have null values")}else e("Expected a mapping for this tag");return t}};Gp.YAMLSet=Mn;Gp.set=Aj});var Yp=R(Wc=>{"use strict";var _j=Hi();function Jp(t,e){let r=t[0],n=r==="-"||r==="+"?t.substring(1):t,i=a=>e?BigInt(a):Number(a),o=n.replace(/_/g,"").split(":").reduce((a,s)=>a*i(60)+i(s),i(0));return r==="-"?i(-1)*o:o}function hw(t){let{value:e}=t,r=a=>a;if(typeof e=="bigint")r=a=>BigInt(a);else if(isNaN(e)||!isFinite(e))return _j.stringifyNumber(t);let n="";e<0&&(n="-",e*=r(-1));let i=r(60),o=[e%i];return e<60?o.unshift(0):(e=(e-o[0])/i,o.unshift(e%i),e>=60&&(e=(e-o[0])/i,o.unshift(e))),n+o.map(a=>String(a).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}var jj={identify:t=>typeof t=="bigint"||Number.isInteger(t),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(t,e,{intAsBigInt:r})=>Jp(t,r),stringify:hw},Ij={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:t=>Jp(t,!1),stringify:hw},gw={identify:t=>t instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(t){let e=t.match(gw.test);if(!e)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,r,n,i,o,a,s]=e.map(Number),c=e[7]?Number((e[7]+"00").substr(1,3)):0,l=Date.UTC(r,n-1,i,o||0,a||0,s||0,c),d=e[8];if(d&&d!=="Z"){let u=Jp(d,!1);Math.abs(u)<30&&(u*=60),l-=6e4*u}return new Date(l)},stringify:({value:t})=>t?.toISOString().replace(/(T00:00:00)?\.000Z$/,"")??""};Wc.floatTime=Ij;Wc.intTime=jj;Wc.timestamp=gw});var ww=R(vw=>{"use strict";var Tj=Fi(),$j=_c(),Oj=Ki(),Mj=aa(),Lj=Bp(),yw=uw(),Xp=pw(),Vc=mw(),Dj=Sc(),Bj=Wp(),Fj=Lc(),Kj=Up(),Qp=Yp(),Hj=[Tj.map,Oj.seq,Mj.string,$j.nullTag,yw.trueTag,yw.falseTag,Vc.intBin,Vc.intOct,Vc.int,Vc.intHex,Xp.floatNaN,Xp.floatExp,Xp.float,Lj.binary,Dj.merge,Bj.omap,Fj.pairs,Kj.set,Qp.intTime,Qp.floatTime,Qp.timestamp];vw.schema=Hj});var Aw=R(tf=>{"use strict";var Nw=Fi(),Wj=_c(),Ew=Ki(),Vj=aa(),qj=jp(),Zp=Tp(),ef=Op(),zj=Qv(),Gj=tw(),xw=Bp(),ua=Sc(),Pw=Wp(),Cw=Lc(),bw=ww(),Rw=Up(),qc=Yp(),kw=new Map([["core",zj.schema],["failsafe",[Nw.map,Ew.seq,Vj.string]],["json",Gj.schema],["yaml11",bw.schema],["yaml-1.1",bw.schema]]),Sw={binary:xw.binary,bool:qj.boolTag,float:Zp.float,floatExp:Zp.floatExp,floatNaN:Zp.floatNaN,floatTime:qc.floatTime,int:ef.int,intHex:ef.intHex,intOct:ef.intOct,intTime:qc.intTime,map:Nw.map,merge:ua.merge,null:Wj.nullTag,omap:Pw.omap,pairs:Cw.pairs,seq:Ew.seq,set:Rw.set,timestamp:qc.timestamp},Uj={"tag:yaml.org,2002:binary":xw.binary,"tag:yaml.org,2002:merge":ua.merge,"tag:yaml.org,2002:omap":Pw.omap,"tag:yaml.org,2002:pairs":Cw.pairs,"tag:yaml.org,2002:set":Rw.set,"tag:yaml.org,2002:timestamp":qc.timestamp};function Jj(t,e,r){let n=kw.get(e);if(n&&!t)return r&&!n.includes(ua.merge)?n.concat(ua.merge):n.slice();let i=n;if(!i)if(Array.isArray(t))i=[];else{let o=Array.from(kw.keys()).filter(a=>a!=="yaml11").map(a=>JSON.stringify(a)).join(", ");throw new Error(`Unknown schema "${e}"; use one of ${o} or define customTags array`)}if(Array.isArray(t))for(let o of t)i=i.concat(o);else typeof t=="function"&&(i=t(i.slice()));return r&&(i=i.concat(ua.merge)),i.reduce((o,a)=>{let s=typeof a=="string"?Sw[a]:a;if(!s){let c=JSON.stringify(a),l=Object.keys(Sw).map(d=>JSON.stringify(d)).join(", ");throw new Error(`Unknown custom tag ${c}; use one of ${l}`)}return o.includes(s)||o.push(s),o},[])}tf.coreKnownTags=Uj;tf.getTags=Jj});var of=R(_w=>{"use strict";var rf=K(),Yj=Fi(),Xj=Ki(),Qj=aa(),zc=Aw(),Zj=(t,e)=>t.key<e.key?-1:t.key>e.key?1:0,nf=class t{constructor({compat:e,customTags:r,merge:n,resolveKnownTags:i,schema:o,sortMapEntries:a,toStringDefaults:s}){this.compat=Array.isArray(e)?zc.getTags(e,"compat"):e?zc.getTags(null,e):null,this.name=typeof o=="string"&&o||"core",this.knownTags=i?zc.coreKnownTags:{},this.tags=zc.getTags(r,this.name,n),this.toStringOptions=s??null,Object.defineProperty(this,rf.MAP,{value:Yj.map}),Object.defineProperty(this,rf.SCALAR,{value:Qj.string}),Object.defineProperty(this,rf.SEQ,{value:Xj.seq}),this.sortMapEntries=typeof a=="function"?a:a===!0?Zj:null}clone(){let e=Object.create(t.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}};_w.Schema=nf});var Iw=R(jw=>{"use strict";var eI=K(),af=na(),pa=Zo();function tI(t,e){let r=[],n=e.directives===!0;if(e.directives!==!1&&t.directives){let c=t.directives.toString(t);c?(r.push(c),n=!0):t.directives.docStart&&(n=!0)}n&&r.push("---");let i=af.createStringifyContext(t,e),{commentString:o}=i.options;if(t.commentBefore){r.length!==1&&r.unshift("");let c=o(t.commentBefore);r.unshift(pa.indentComment(c,""))}let a=!1,s=null;if(t.contents){if(eI.isNode(t.contents)){if(t.contents.spaceBefore&&n&&r.push(""),t.contents.commentBefore){let d=o(t.contents.commentBefore);r.push(pa.indentComment(d,""))}i.forceBlockIndent=!!t.comment,s=t.contents.comment}let c=s?void 0:()=>a=!0,l=af.stringify(t.contents,i,()=>s=null,c);s&&(l+=pa.lineComment(l,"",o(s))),(l[0]==="|"||l[0]===">")&&r[r.length-1]==="---"?r[r.length-1]=`--- ${l}`:r.push(l)}else r.push(af.stringify(t.contents,i));if(t.directives?.docEnd)if(t.comment){let c=o(t.comment);c.includes(`
`)?(r.push("..."),r.push(pa.indentComment(c,""))):r.push(`... ${c}`)}else r.push("...");else{let c=t.comment;c&&a&&(c=c.replace(/^\n+/,"")),c&&((!a||s)&&r[r.length-1]!==""&&r.push(""),r.push(pa.indentComment(o(c),"")))}return r.join(`
`)+`
`}jw.stringifyDocument=tI});var fa=R(Tw=>{"use strict";var rI=Xo(),Wi=pc(),ct=K(),nI=Gr(),iI=Wr(),oI=of(),aI=Iw(),sf=cc(),sI=dp(),cI=Qo(),cf=lp(),lf=class t{constructor(e,r,n){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,ct.NODE_TYPE,{value:ct.DOC});let i=null;typeof r=="function"||Array.isArray(r)?i=r:n===void 0&&r&&(n=r,r=void 0);let o=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},n);this.options=o;let{version:a}=o;n?._directives?(this.directives=n._directives.atDocument(),this.directives.yaml.explicit&&(a=this.directives.yaml.version)):this.directives=new cf.Directives({version:a}),this.setSchema(a,n),this.contents=e===void 0?null:this.createNode(e,i,n)}clone(){let e=Object.create(t.prototype,{[ct.NODE_TYPE]:{value:ct.DOC}});return e.commentBefore=this.commentBefore,e.comment=this.comment,e.errors=this.errors.slice(),e.warnings=this.warnings.slice(),e.options=Object.assign({},this.options),this.directives&&(e.directives=this.directives.clone()),e.schema=this.schema.clone(),e.contents=ct.isNode(this.contents)?this.contents.clone(e.schema):this.contents,this.range&&(e.range=this.range.slice()),e}add(e){Vi(this.contents)&&this.contents.add(e)}addIn(e,r){Vi(this.contents)&&this.contents.addIn(e,r)}createAlias(e,r){if(!e.anchor){let n=sf.anchorNames(this);e.anchor=!r||n.has(r)?sf.findNewAnchor(r||"a",n):r}return new rI.Alias(e.anchor)}createNode(e,r,n){let i;if(typeof r=="function")e=r.call({"":e},"",e),i=r;else if(Array.isArray(r)){let h=y=>typeof y=="number"||y instanceof String||y instanceof Number,w=r.filter(h).map(String);w.length>0&&(r=r.concat(w)),i=r}else n===void 0&&r&&(n=r,r=void 0);let{aliasDuplicateObjects:o,anchorPrefix:a,flow:s,keepUndefined:c,onTagObj:l,tag:d}=n??{},{onAnchor:u,setAnchors:p,sourceObjects:f}=sf.createNodeAnchors(this,a||"a"),m={aliasDuplicateObjects:o??!0,keepUndefined:c??!1,onAnchor:u,onTagObj:l,replacer:i,schema:this.schema,sourceObjects:f},g=cI.createNode(e,d,m);return s&&ct.isCollection(g)&&(g.flow=!0),p(),g}createPair(e,r,n={}){let i=this.createNode(e,null,n),o=this.createNode(r,null,n);return new nI.Pair(i,o)}delete(e){return Vi(this.contents)?this.contents.delete(e):!1}deleteIn(e){return Wi.isEmptyPath(e)?this.contents==null?!1:(this.contents=null,!0):Vi(this.contents)?this.contents.deleteIn(e):!1}get(e,r){return ct.isCollection(this.contents)?this.contents.get(e,r):void 0}getIn(e,r){return Wi.isEmptyPath(e)?!r&&ct.isScalar(this.contents)?this.contents.value:this.contents:ct.isCollection(this.contents)?this.contents.getIn(e,r):void 0}has(e){return ct.isCollection(this.contents)?this.contents.has(e):!1}hasIn(e){return Wi.isEmptyPath(e)?this.contents!==void 0:ct.isCollection(this.contents)?this.contents.hasIn(e):!1}set(e,r){this.contents==null?this.contents=Wi.collectionFromPath(this.schema,[e],r):Vi(this.contents)&&this.contents.set(e,r)}setIn(e,r){Wi.isEmptyPath(e)?this.contents=r:this.contents==null?this.contents=Wi.collectionFromPath(this.schema,Array.from(e),r):Vi(this.contents)&&this.contents.setIn(e,r)}setSchema(e,r={}){typeof e=="number"&&(e=String(e));let n;switch(e){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new cf.Directives({version:"1.1"}),n={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=e:this.directives=new cf.Directives({version:e}),n={resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,n=null;break;default:{let i=JSON.stringify(e);throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${i}`)}}if(r.schema instanceof Object)this.schema=r.schema;else if(n)this.schema=new oI.Schema(Object.assign(n,r));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:e,jsonArg:r,mapAsMap:n,maxAliasCount:i,onAnchor:o,reviver:a}={}){let s={anchors:new Map,doc:this,keep:!e,mapAsMap:n===!0,mapKeyWarned:!1,maxAliasCount:typeof i=="number"?i:100},c=iI.toJS(this.contents,r??"",s);if(typeof o=="function")for(let{count:l,res:d}of s.anchors.values())o(d,l);return typeof a=="function"?sI.applyReviver(a,{"":c},"",c):c}toJSON(e,r){return this.toJS({json:!0,jsonArg:e,mapAsMap:!1,onAnchor:r})}toString(e={}){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");if("indent"in e&&(!Number.isInteger(e.indent)||Number(e.indent)<=0)){let r=JSON.stringify(e.indent);throw new Error(`"indent" option must be a positive integer, not ${r}`)}return aI.stringifyDocument(this,e)}};function Vi(t){if(ct.isCollection(t))return!0;throw new Error("Expected a YAML collection as document contents")}Tw.Document=lf});var ga=R(ha=>{"use strict";var ma=class extends Error{constructor(e,r,n,i){super(),this.name=e,this.code=n,this.message=i,this.pos=r}},df=class extends ma{constructor(e,r,n){super("YAMLParseError",e,r,n)}},uf=class extends ma{constructor(e,r,n){super("YAMLWarning",e,r,n)}},lI=(t,e)=>r=>{if(r.pos[0]===-1)return;r.linePos=r.pos.map(s=>e.linePos(s));let{line:n,col:i}=r.linePos[0];r.message+=` at line ${n}, column ${i}`;let o=i-1,a=t.substring(e.lineStarts[n-1],e.lineStarts[n]).replace(/[\n\r]+$/,"");if(o>=60&&a.length>80){let s=Math.min(o-39,a.length-79);a="…"+a.substring(s),o-=s-1}if(a.length>80&&(a=a.substring(0,79)+"…"),n>1&&/^ *$/.test(a.substring(0,o))){let s=t.substring(e.lineStarts[n-2],e.lineStarts[n-1]);s.length>80&&(s=s.substring(0,79)+`…
`),a=s+a}if(/[^ ]/.test(a)){let s=1,c=r.linePos[1];c?.line===n&&c.col>i&&(s=Math.max(1,Math.min(c.col-i,80-o)));let l=" ".repeat(o)+"^".repeat(s);r.message+=`:
${a}
${l}
`}};ha.YAMLError=ma;ha.YAMLParseError=df;ha.YAMLWarning=uf;ha.prettifyError=lI});var ya=R($w=>{"use strict";function dI(t,{flow:e,indicator:r,next:n,offset:i,onError:o,parentIndent:a,startOnNewline:s}){let c=!1,l=s,d=s,u="",p="",f=!1,m=!1,g=null,h=null,w=null,y=null,v=null,b=null,k=null;for(let N of t)switch(m&&(N.type!=="space"&&N.type!=="newline"&&N.type!=="comma"&&o(N.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),m=!1),g&&(l&&N.type!=="comment"&&N.type!=="newline"&&o(g,"TAB_AS_INDENT","Tabs are not allowed as indentation"),g=null),N.type){case"space":!e&&(r!=="doc-start"||n?.type!=="flow-collection")&&N.source.includes(" ")&&(g=N),d=!0;break;case"comment":{d||o(N,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let P=N.source.substring(1)||" ";u?u+=p+P:u=P,p="",l=!1;break}case"newline":l?u?u+=N.source:(!b||r!=="seq-item-ind")&&(c=!0):p+=N.source,l=!0,f=!0,(h||w)&&(y=N),d=!0;break;case"anchor":h&&o(N,"MULTIPLE_ANCHORS","A node can have at most one anchor"),N.source.endsWith(":")&&o(N.offset+N.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0),h=N,k??(k=N.offset),l=!1,d=!1,m=!0;break;case"tag":{w&&o(N,"MULTIPLE_TAGS","A node can have at most one tag"),w=N,k??(k=N.offset),l=!1,d=!1,m=!0;break}case r:(h||w)&&o(N,"BAD_PROP_ORDER",`Anchors and tags must be after the ${N.source} indicator`),b&&o(N,"UNEXPECTED_TOKEN",`Unexpected ${N.source} in ${e??"collection"}`),b=N,l=r==="seq-item-ind"||r==="explicit-key-ind",d=!1;break;case"comma":if(e){v&&o(N,"UNEXPECTED_TOKEN",`Unexpected , in ${e}`),v=N,l=!1,d=!1;break}default:o(N,"UNEXPECTED_TOKEN",`Unexpected ${N.type} token`),l=!1,d=!1}let S=t[t.length-1],E=S?S.offset+S.source.length:i;return m&&n&&n.type!=="space"&&n.type!=="newline"&&n.type!=="comma"&&(n.type!=="scalar"||n.source!=="")&&o(n.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),g&&(l&&g.indent<=a||n?.type==="block-map"||n?.type==="block-seq")&&o(g,"TAB_AS_INDENT","Tabs are not allowed as indentation"),{comma:v,found:b,spaceBefore:c,comment:u,hasNewline:f,anchor:h,tag:w,newlineAfterProp:y,end:E,start:k??E}}$w.resolveProps=dI});var Gc=R(Ow=>{"use strict";function pf(t){if(!t)return null;switch(t.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if(t.source.includes(`
`))return!0;if(t.end){for(let e of t.end)if(e.type==="newline")return!0}return!1;case"flow-collection":for(let e of t.items){for(let r of e.start)if(r.type==="newline")return!0;if(e.sep){for(let r of e.sep)if(r.type==="newline")return!0}if(pf(e.key)||pf(e.value))return!0}return!1;default:return!0}}Ow.containsNewline=pf});var ff=R(Mw=>{"use strict";var uI=Gc();function pI(t,e,r){if(e?.type==="flow-collection"){let n=e.end[0];n.indent===t&&(n.source==="]"||n.source==="}")&&uI.containsNewline(e)&&r(n,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}Mw.flowIndentCheck=pI});var mf=R(Dw=>{"use strict";var Lw=K();function fI(t,e,r){let{uniqueKeys:n}=t.options;if(n===!1)return!1;let i=typeof n=="function"?n:(o,a)=>o===a||Lw.isScalar(o)&&Lw.isScalar(a)&&o.value===a.value;return e.some(o=>i(o.key,r))}Dw.mapIncludes=fI});var Vw=R(Ww=>{"use strict";var Bw=Gr(),mI=Jr(),Fw=ya(),hI=Gc(),Kw=ff(),gI=mf(),Hw="All mapping items must start at the same column";function yI({composeNode:t,composeEmptyNode:e},r,n,i,o){let a=o?.nodeClass??mI.YAMLMap,s=new a(r.schema);r.atRoot&&(r.atRoot=!1);let c=n.offset,l=null;for(let d of n.items){let{start:u,key:p,sep:f,value:m}=d,g=Fw.resolveProps(u,{indicator:"explicit-key-ind",next:p??f?.[0],offset:c,onError:i,parentIndent:n.indent,startOnNewline:!0}),h=!g.found;if(h){if(p&&(p.type==="block-seq"?i(c,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key"):"indent"in p&&p.indent!==n.indent&&i(c,"BAD_INDENT",Hw)),!g.anchor&&!g.tag&&!f){l=g.end,g.comment&&(s.comment?s.comment+=`
`+g.comment:s.comment=g.comment);continue}(g.newlineAfterProp||hI.containsNewline(p))&&i(p??u[u.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else g.found?.indent!==n.indent&&i(c,"BAD_INDENT",Hw);r.atKey=!0;let w=g.end,y=p?t(r,p,g,i):e(r,w,u,null,g,i);r.schema.compat&&Kw.flowIndentCheck(n.indent,p,i),r.atKey=!1,gI.mapIncludes(r,s.items,y)&&i(w,"DUPLICATE_KEY","Map keys must be unique");let v=Fw.resolveProps(f??[],{indicator:"map-value-ind",next:m,offset:y.range[2],onError:i,parentIndent:n.indent,startOnNewline:!p||p.type==="block-scalar"});if(c=v.end,v.found){h&&(m?.type==="block-map"&&!v.hasNewline&&i(c,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),r.options.strict&&g.start<v.found.offset-1024&&i(y.range,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit block mapping key"));let b=m?t(r,m,v,i):e(r,c,f,null,v,i);r.schema.compat&&Kw.flowIndentCheck(n.indent,m,i),c=b.range[2];let k=new Bw.Pair(y,b);r.options.keepSourceTokens&&(k.srcToken=d),s.items.push(k)}else{h&&i(y.range,"MISSING_CHAR","Implicit map keys need to be followed by map values"),v.comment&&(y.comment?y.comment+=`
`+v.comment:y.comment=v.comment);let b=new Bw.Pair(y);r.options.keepSourceTokens&&(b.srcToken=d),s.items.push(b)}}return l&&l<c&&i(l,"IMPOSSIBLE","Map comment with trailing content"),s.range=[n.offset,c,l??c],s}Ww.resolveBlockMap=yI});var zw=R(qw=>{"use strict";var vI=Yr(),wI=ya(),bI=ff();function kI({composeNode:t,composeEmptyNode:e},r,n,i,o){let a=o?.nodeClass??vI.YAMLSeq,s=new a(r.schema);r.atRoot&&(r.atRoot=!1),r.atKey&&(r.atKey=!1);let c=n.offset,l=null;for(let{start:d,value:u}of n.items){let p=wI.resolveProps(d,{indicator:"seq-item-ind",next:u,offset:c,onError:i,parentIndent:n.indent,startOnNewline:!0});if(!p.found)if(p.anchor||p.tag||u)u?.type==="block-seq"?i(p.end,"BAD_INDENT","All sequence items must start at the same column"):i(c,"MISSING_CHAR","Sequence item without - indicator");else{l=p.end,p.comment&&(s.comment=p.comment);continue}let f=u?t(r,u,p,i):e(r,p.end,d,null,p,i);r.schema.compat&&bI.flowIndentCheck(n.indent,u,i),c=f.range[2],s.items.push(f)}return s.range=[n.offset,c,l??c],s}qw.resolveBlockSeq=kI});var qi=R(Gw=>{"use strict";function SI(t,e,r,n){let i="";if(t){let o=!1,a="";for(let s of t){let{source:c,type:l}=s;switch(l){case"space":o=!0;break;case"comment":{r&&!o&&n(s,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let d=c.substring(1)||" ";i?i+=a+d:i=d,a="";break}case"newline":i&&(a+=c),o=!0;break;default:n(s,"UNEXPECTED_TOKEN",`Unexpected ${l} at node end`)}e+=c.length}}return{comment:i,offset:e}}Gw.resolveEnd=SI});var Xw=R(Yw=>{"use strict";var NI=K(),EI=Gr(),Uw=Jr(),xI=Yr(),PI=qi(),Jw=ya(),CI=Gc(),RI=mf(),hf="Block collections are not allowed within flow collections",gf=t=>t&&(t.type==="block-map"||t.type==="block-seq");function AI({composeNode:t,composeEmptyNode:e},r,n,i,o){let a=n.start.source==="{",s=a?"flow map":"flow sequence",c=o?.nodeClass??(a?Uw.YAMLMap:xI.YAMLSeq),l=new c(r.schema);l.flow=!0;let d=r.atRoot;d&&(r.atRoot=!1),r.atKey&&(r.atKey=!1);let u=n.offset+n.start.source.length;for(let h=0;h<n.items.length;++h){let w=n.items[h],{start:y,key:v,sep:b,value:k}=w,S=Jw.resolveProps(y,{flow:s,indicator:"explicit-key-ind",next:v??b?.[0],offset:u,onError:i,parentIndent:n.indent,startOnNewline:!1});if(!S.found){if(!S.anchor&&!S.tag&&!b&&!k){h===0&&S.comma?i(S.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${s}`):h<n.items.length-1&&i(S.start,"UNEXPECTED_TOKEN",`Unexpected empty item in ${s}`),S.comment&&(l.comment?l.comment+=`
`+S.comment:l.comment=S.comment),u=S.end;continue}!a&&r.options.strict&&CI.containsNewline(v)&&i(v,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line")}if(h===0)S.comma&&i(S.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${s}`);else if(S.comma||i(S.start,"MISSING_CHAR",`Missing , between ${s} items`),S.comment){let E="";e:for(let N of y)switch(N.type){case"comma":case"space":break;case"comment":E=N.source.substring(1);break e;default:break e}if(E){let N=l.items[l.items.length-1];NI.isPair(N)&&(N=N.value??N.key),N.comment?N.comment+=`
`+E:N.comment=E,S.comment=S.comment.substring(E.length+1)}}if(!a&&!b&&!S.found){let E=k?t(r,k,S,i):e(r,S.end,b,null,S,i);l.items.push(E),u=E.range[2],gf(k)&&i(E.range,"BLOCK_IN_FLOW",hf)}else{r.atKey=!0;let E=S.end,N=v?t(r,v,S,i):e(r,E,y,null,S,i);gf(v)&&i(N.range,"BLOCK_IN_FLOW",hf),r.atKey=!1;let P=Jw.resolveProps(b??[],{flow:s,indicator:"map-value-ind",next:k,offset:N.range[2],onError:i,parentIndent:n.indent,startOnNewline:!1});if(P.found){if(!a&&!S.found&&r.options.strict){if(b)for(let x of b){if(x===P.found)break;if(x.type==="newline"){i(x,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line");break}}S.start<P.found.offset-1024&&i(P.found,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit flow sequence key")}}else k&&("source"in k&&k.source?.[0]===":"?i(k,"MISSING_CHAR",`Missing space after : in ${s}`):i(P.start,"MISSING_CHAR",`Missing , or : between ${s} items`));let _=k?t(r,k,P,i):P.found?e(r,P.end,b,null,P,i):null;_?gf(k)&&i(_.range,"BLOCK_IN_FLOW",hf):P.comment&&(N.comment?N.comment+=`
`+P.comment:N.comment=P.comment);let j=new EI.Pair(N,_);if(r.options.keepSourceTokens&&(j.srcToken=w),a){let x=l;RI.mapIncludes(r,x.items,N)&&i(E,"DUPLICATE_KEY","Map keys must be unique"),x.items.push(j)}else{let x=new Uw.YAMLMap(r.schema);x.flow=!0,x.items.push(j);let C=(_??N).range;x.range=[N.range[0],C[1],C[2]],l.items.push(x)}u=_?_.range[2]:P.end}}let p=a?"}":"]",[f,...m]=n.end,g=u;if(f?.source===p)g=f.offset+f.source.length;else{let h=s[0].toUpperCase()+s.substring(1),w=d?`${h} must end with a ${p}`:`${h} in block collection must be sufficiently indented and end with a ${p}`;i(u,d?"MISSING_CHAR":"BAD_INDENT",w),f&&f.source.length!==1&&m.unshift(f)}if(m.length>0){let h=PI.resolveEnd(m,g,r.options.strict,i);h.comment&&(l.comment?l.comment+=`
`+h.comment:l.comment=h.comment),l.range=[n.offset,g,h.offset]}else l.range=[n.offset,g,g];return l}Yw.resolveFlowCollection=AI});var Zw=R(Qw=>{"use strict";var _I=K(),jI=ae(),II=Jr(),TI=Yr(),$I=Vw(),OI=zw(),MI=Xw();function yf(t,e,r,n,i,o){let a=r.type==="block-map"?$I.resolveBlockMap(t,e,r,n,o):r.type==="block-seq"?OI.resolveBlockSeq(t,e,r,n,o):MI.resolveFlowCollection(t,e,r,n,o),s=a.constructor;return i==="!"||i===s.tagName?(a.tag=s.tagName,a):(i&&(a.tag=i),a)}function LI(t,e,r,n,i){let o=n.tag,a=o?e.directives.tagName(o.source,p=>i(o,"TAG_RESOLVE_FAILED",p)):null;if(r.type==="block-seq"){let{anchor:p,newlineAfterProp:f}=n,m=p&&o?p.offset>o.offset?p:o:p??o;m&&(!f||f.offset<m.offset)&&i(m,"MISSING_CHAR","Missing newline after block sequence props")}let s=r.type==="block-map"?"map":r.type==="block-seq"?"seq":r.start.source==="{"?"map":"seq";if(!o||!a||a==="!"||a===II.YAMLMap.tagName&&s==="map"||a===TI.YAMLSeq.tagName&&s==="seq")return yf(t,e,r,i,a);let c=e.schema.tags.find(p=>p.tag===a&&p.collection===s);if(!c){let p=e.schema.knownTags[a];if(p?.collection===s)e.schema.tags.push(Object.assign({},p,{default:!1})),c=p;else return p?i(o,"BAD_COLLECTION_TYPE",`${p.tag} used for ${s} collection, but expects ${p.collection??"scalar"}`,!0):i(o,"TAG_RESOLVE_FAILED",`Unresolved tag: ${a}`,!0),yf(t,e,r,i,a)}let l=yf(t,e,r,i,a,c),d=c.resolve?.(l,p=>i(o,"TAG_RESOLVE_FAILED",p),e.options)??l,u=_I.isNode(d)?d:new jI.Scalar(d);return u.range=l.range,u.tag=a,c?.format&&(u.format=c.format),u}Qw.composeCollection=LI});var wf=R(eb=>{"use strict";var vf=ae();function DI(t,e,r){let n=e.offset,i=BI(e,t.options.strict,r);if(!i)return{value:"",type:null,comment:"",range:[n,n,n]};let o=i.mode===">"?vf.Scalar.BLOCK_FOLDED:vf.Scalar.BLOCK_LITERAL,a=e.source?FI(e.source):[],s=a.length;for(let g=a.length-1;g>=0;--g){let h=a[g][1];if(h===""||h==="\r")s=g;else break}if(s===0){let g=i.chomp==="+"&&a.length>0?`
`.repeat(Math.max(1,a.length-1)):"",h=n+i.length;return e.source&&(h+=e.source.length),{value:g,type:o,comment:i.comment,range:[n,h,h]}}let c=e.indent+i.indent,l=e.offset+i.length,d=0;for(let g=0;g<s;++g){let[h,w]=a[g];if(w===""||w==="\r")i.indent===0&&h.length>c&&(c=h.length);else{h.length<c&&r(l+h.length,"MISSING_CHAR","Block scalars with more-indented leading empty lines must use an explicit indentation indicator"),i.indent===0&&(c=h.length),d=g,c===0&&!t.atRoot&&r(l,"BAD_INDENT","Block scalar values in collections must be indented");break}l+=h.length+w.length+1}for(let g=a.length-1;g>=s;--g)a[g][0].length>c&&(s=g+1);let u="",p="",f=!1;for(let g=0;g<d;++g)u+=a[g][0].slice(c)+`
`;for(let g=d;g<s;++g){let[h,w]=a[g];l+=h.length+w.length+1;let y=w[w.length-1]==="\r";if(y&&(w=w.slice(0,-1)),w&&h.length<c){let b=`Block scalar lines must not be less indented than their ${i.indent?"explicit indentation indicator":"first line"}`;r(l-w.length-(y?2:1),"BAD_INDENT",b),h=""}o===vf.Scalar.BLOCK_LITERAL?(u+=p+h.slice(c)+w,p=`
`):h.length>c||w[0]===" "?(p===" "?p=`
`:!f&&p===`
`&&(p=`
`),u+=p+h.slice(c)+w,p=`
`,f=!0):w===""?p===`
`?u+=`
`:p=`
`:(u+=p+w,p=" ",f=!1)}switch(i.chomp){case"-":break;case"+":for(let g=s;g<a.length;++g)u+=`
`+a[g][0].slice(c);u[u.length-1]!==`
`&&(u+=`
`);break;default:u+=`
`}let m=n+i.length+e.source.length;return{value:u,type:o,comment:i.comment,range:[n,m,m]}}function BI({offset:t,props:e},r,n){if(e[0].type!=="block-scalar-header")return n(e[0],"IMPOSSIBLE","Block scalar header not found"),null;let{source:i}=e[0],o=i[0],a=0,s="",c=-1;for(let p=1;p<i.length;++p){let f=i[p];if(!s&&(f==="-"||f==="+"))s=f;else{let m=Number(f);!a&&m?a=m:c===-1&&(c=t+p)}}c!==-1&&n(c,"UNEXPECTED_TOKEN",`Block scalar header includes extra characters: ${i}`);let l=!1,d="",u=i.length;for(let p=1;p<e.length;++p){let f=e[p];switch(f.type){case"space":l=!0;case"newline":u+=f.source.length;break;case"comment":r&&!l&&n(f,"MISSING_CHAR","Comments must be separated from other tokens by white space characters"),u+=f.source.length,d=f.source.substring(1);break;case"error":n(f,"UNEXPECTED_TOKEN",f.message),u+=f.source.length;break;default:{let m=`Unexpected token in block scalar header: ${f.type}`;n(f,"UNEXPECTED_TOKEN",m);let g=f.source;g&&typeof g=="string"&&(u+=g.length)}}}return{mode:o,indent:a,chomp:s,comment:d,length:u}}function FI(t){let e=t.split(/\n( *)/),r=e[0],n=r.match(/^( *)/),o=[n?.[1]?[n[1],r.slice(n[1].length)]:["",r]];for(let a=1;a<e.length;a+=2)o.push([e[a],e[a+1]]);return o}eb.resolveBlockScalar=DI});var kf=R(rb=>{"use strict";var bf=ae(),KI=qi();function HI(t,e,r){let{offset:n,type:i,source:o,end:a}=t,s,c,l=(p,f,m)=>r(n+p,f,m);switch(i){case"scalar":s=bf.Scalar.PLAIN,c=WI(o,l);break;case"single-quoted-scalar":s=bf.Scalar.QUOTE_SINGLE,c=VI(o,l);break;case"double-quoted-scalar":s=bf.Scalar.QUOTE_DOUBLE,c=qI(o,l);break;default:return r(t,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${i}`),{value:"",type:null,comment:"",range:[n,n+o.length,n+o.length]}}let d=n+o.length,u=KI.resolveEnd(a,d,e,r);return{value:c,type:s,comment:u.comment,range:[n,d,u.offset]}}function WI(t,e){let r="";switch(t[0]){case" ":r="a tab character";break;case",":r="flow indicator character ,";break;case"%":r="directive indicator character %";break;case"|":case">":{r=`block scalar indicator ${t[0]}`;break}case"@":case"`":{r=`reserved character ${t[0]}`;break}}return r&&e(0,"BAD_SCALAR_START",`Plain value cannot start with ${r}`),tb(t)}function VI(t,e){return(t[t.length-1]!=="'"||t.length===1)&&e(t.length,"MISSING_CHAR","Missing closing 'quote"),tb(t.slice(1,-1)).replace(/''/g,"'")}function tb(t){let e,r;try{e=new RegExp(`(.*?)(?<![ ])[ ]*\r?
`,"sy"),r=new RegExp(`[ ]*(.*?)(?:(?<![ ])[ ]*)?\r?
`,"sy")}catch{e=/(.*?)[ \t]*\r?\n/sy,r=/[ \t]*(.*?)[ \t]*\r?\n/sy}let n=e.exec(t);if(!n)return t;let i=n[1],o=" ",a=e.lastIndex;for(r.lastIndex=a;n=r.exec(t);)n[1]===""?o===`
`?i+=o:o=`
`:(i+=o+n[1],o=" "),a=r.lastIndex;let s=/[ \t]*(.*)/sy;return s.lastIndex=a,n=s.exec(t),i+o+(n?.[1]??"")}function qI(t,e){let r="";for(let n=1;n<t.length-1;++n){let i=t[n];if(!(i==="\r"&&t[n+1]===`
`))if(i===`
`){let{fold:o,offset:a}=zI(t,n);r+=o,n=a}else if(i==="\\"){let o=t[++n],a=GI[o];if(a)r+=a;else if(o===`
`)for(o=t[n+1];o===" "||o===" ";)o=t[++n+1];else if(o==="\r"&&t[n+1]===`
`)for(o=t[++n+1];o===" "||o===" ";)o=t[++n+1];else if(o==="x"||o==="u"||o==="U"){let s=o==="x"?2:o==="u"?4:8;r+=UI(t,n+1,s,e),n+=s}else{let s=t.substr(n-1,2);e(n-1,"BAD_DQ_ESCAPE",`Invalid escape sequence ${s}`),r+=s}}else if(i===" "||i===" "){let o=n,a=t[n+1];for(;a===" "||a===" ";)a=t[++n+1];a!==`
`&&!(a==="\r"&&t[n+2]===`
`)&&(r+=n>o?t.slice(o,n+1):i)}else r+=i}return(t[t.length-1]!=='"'||t.length===1)&&e(t.length,"MISSING_CHAR",'Missing closing "quote'),r}function zI(t,e){let r="",n=t[e+1];for(;(n===" "||n===" "||n===`
`||n==="\r")&&!(n==="\r"&&t[e+2]!==`
`);)n===`
`&&(r+=`
`),e+=1,n=t[e+1];return r||(r=" "),{fold:r,offset:e}}var GI={0:"\0",a:"\x07",b:"\b",e:"\x1B",f:"\f",n:`
`,r:"\r",t:" ",v:"\v",N:"…",_:" ",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\"," ":" "};function UI(t,e,r,n){let i=t.substr(e,r),a=i.length===r&&/^[0-9a-fA-F]+$/.test(i)?parseInt(i,16):NaN;try{return String.fromCodePoint(a)}catch{let s=t.substr(e-2,r+2);return n(e-2,"BAD_DQ_ESCAPE",`Invalid escape sequence ${s}`),s}}rb.resolveFlowScalar=HI});var ob=R(ib=>{"use strict";var Ln=K(),nb=ae(),JI=wf(),YI=kf();function XI(t,e,r,n){let{value:i,type:o,comment:a,range:s}=e.type==="block-scalar"?JI.resolveBlockScalar(t,e,n):YI.resolveFlowScalar(e,t.options.strict,n),c=r?t.directives.tagName(r.source,u=>n(r,"TAG_RESOLVE_FAILED",u)):null,l;t.options.stringKeys&&t.atKey?l=t.schema[Ln.SCALAR]:c?l=QI(t.schema,i,c,r,n):e.type==="scalar"?l=ZI(t,i,e,n):l=t.schema[Ln.SCALAR];let d;try{let u=l.resolve(i,p=>n(r??e,"TAG_RESOLVE_FAILED",p),t.options);d=Ln.isScalar(u)?u:new nb.Scalar(u)}catch(u){let p=u instanceof Error?u.message:String(u);n(r??e,"TAG_RESOLVE_FAILED",p),d=new nb.Scalar(i)}return d.range=s,d.source=i,o&&(d.type=o),c&&(d.tag=c),l.format&&(d.format=l.format),a&&(d.comment=a),d}function QI(t,e,r,n,i){if(r==="!")return t[Ln.SCALAR];let o=[];for(let s of t.tags)if(!s.collection&&s.tag===r)if(s.default&&s.test)o.push(s);else return s;for(let s of o)if(s.test?.test(e))return s;let a=t.knownTags[r];return a&&!a.collection?(t.tags.push(Object.assign({},a,{default:!1,test:void 0})),a):(i(n,"TAG_RESOLVE_FAILED",`Unresolved tag: ${r}`,r!=="tag:yaml.org,2002:str"),t[Ln.SCALAR])}function ZI({atKey:t,directives:e,schema:r},n,i,o){let a=r.tags.find(s=>(s.default===!0||t&&s.default==="key")&&s.test?.test(n))||r[Ln.SCALAR];if(r.compat){let s=r.compat.find(c=>c.default&&c.test?.test(n))??r[Ln.SCALAR];if(a.tag!==s.tag){let c=e.tagString(a.tag),l=e.tagString(s.tag),d=`Value may be parsed as either ${c} or ${l}`;o(i,"TAG_RESOLVE_FAILED",d,!0)}}return a}ib.composeScalar=XI});var sb=R(ab=>{"use strict";function eT(t,e,r){if(e){r??(r=e.length);for(let n=r-1;n>=0;--n){let i=e[n];switch(i.type){case"space":case"comment":case"newline":t-=i.source.length;continue}for(i=e[++n];i?.type==="space";)t+=i.source.length,i=e[++n];break}}return t}ab.emptyScalarPosition=eT});var db=R(Nf=>{"use strict";var tT=Xo(),rT=K(),nT=Zw(),cb=ob(),iT=qi(),oT=sb(),aT={composeNode:lb,composeEmptyNode:Sf};function lb(t,e,r,n){let i=t.atKey,{spaceBefore:o,comment:a,anchor:s,tag:c}=r,l,d=!0;switch(e.type){case"alias":l=sT(t,e,n),(s||c)&&n(e,"ALIAS_PROPS","An alias node must not specify any properties");break;case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"block-scalar":l=cb.composeScalar(t,e,c,n),s&&(l.anchor=s.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":try{l=nT.composeCollection(aT,t,e,r,n),s&&(l.anchor=s.source.substring(1))}catch(u){let p=u instanceof Error?u.message:String(u);n(e,"RESOURCE_EXHAUSTION",p)}break;default:{let u=e.type==="error"?e.message:`Unsupported token (type: ${e.type})`;n(e,"UNEXPECTED_TOKEN",u),d=!1}}return l??(l=Sf(t,e.offset,void 0,null,r,n)),s&&l.anchor===""&&n(s,"BAD_ALIAS","Anchor cannot be an empty string"),i&&t.options.stringKeys&&(!rT.isScalar(l)||typeof l.value!="string"||l.tag&&l.tag!=="tag:yaml.org,2002:str")&&n(c??e,"NON_STRING_KEY","With stringKeys, all keys must be strings"),o&&(l.spaceBefore=!0),a&&(e.type==="scalar"&&e.source===""?l.comment=a:l.commentBefore=a),t.options.keepSourceTokens&&d&&(l.srcToken=e),l}function Sf(t,e,r,n,{spaceBefore:i,comment:o,anchor:a,tag:s,end:c},l){let d={type:"scalar",offset:oT.emptyScalarPosition(e,r,n),indent:-1,source:""},u=cb.composeScalar(t,d,s,l);return a&&(u.anchor=a.source.substring(1),u.anchor===""&&l(a,"BAD_ALIAS","Anchor cannot be an empty string")),i&&(u.spaceBefore=!0),o&&(u.comment=o,u.range[2]=c),u}function sT({options:t},{offset:e,source:r,end:n},i){let o=new tT.Alias(r.substring(1));o.source===""&&i(e,"BAD_ALIAS","Alias cannot be an empty string"),o.source.endsWith(":")&&i(e+r.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);let a=e+r.length,s=iT.resolveEnd(n,a,t.strict,i);return o.range=[e,a,s.offset],s.comment&&(o.comment=s.comment),o}Nf.composeEmptyNode=Sf;Nf.composeNode=lb});var fb=R(pb=>{"use strict";var cT=fa(),ub=db(),lT=qi(),dT=ya();function uT(t,e,{offset:r,start:n,value:i,end:o},a){let s=Object.assign({_directives:e},t),c=new cT.Document(void 0,s),l={atKey:!1,atRoot:!0,directives:c.directives,options:c.options,schema:c.schema},d=dT.resolveProps(n,{indicator:"doc-start",next:i??o?.[0],offset:r,onError:a,parentIndent:0,startOnNewline:!0});d.found&&(c.directives.docStart=!0,i&&(i.type==="block-map"||i.type==="block-seq")&&!d.hasNewline&&a(d.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")),c.contents=i?ub.composeNode(l,i,d,a):ub.composeEmptyNode(l,d.end,n,null,d,a);let u=c.contents.range[2],p=lT.resolveEnd(o,u,!1,a);return p.comment&&(c.comment=p.comment),c.range=[r,u,p.offset],c}pb.composeDoc=uT});var xf=R(gb=>{"use strict";var pT=nc("process"),fT=lp(),mT=fa(),va=ga(),mb=K(),hT=fb(),gT=qi();function wa(t){if(typeof t=="number")return[t,t+1];if(Array.isArray(t))return t.length===2?t:[t[0],t[1]];let{offset:e,source:r}=t;return[e,e+(typeof r=="string"?r.length:1)]}function hb(t){let e="",r=!1,n=!1;for(let i=0;i<t.length;++i){let o=t[i];switch(o[0]){case"#":e+=(e===""?"":n?`
`:`
`)+(o.substring(1)||" "),r=!0,n=!1;break;case"%":t[i+1]?.[0]!=="#"&&(i+=1),r=!1;break;default:r||(n=!0),r=!1}}return{comment:e,afterEmptyLine:n}}var Ef=class{constructor(e={}){this.doc=null,this.atDirectives=!1,this.prelude=[],this.errors=[],this.warnings=[],this.onError=(r,n,i,o)=>{let a=wa(r);o?this.warnings.push(new va.YAMLWarning(a,n,i)):this.errors.push(new va.YAMLParseError(a,n,i))},this.directives=new fT.Directives({version:e.version||"1.2"}),this.options=e}decorate(e,r){let{comment:n,afterEmptyLine:i}=hb(this.prelude);if(n){let o=e.contents;if(r)e.comment=e.comment?`${e.comment}
${n}`:n;else if(i||e.directives.docStart||!o)e.commentBefore=n;else if(mb.isCollection(o)&&!o.flow&&o.items.length>0){let a=o.items[0];mb.isPair(a)&&(a=a.key);let s=a.commentBefore;a.commentBefore=s?`${n}
${s}`:n}else{let a=o.commentBefore;o.commentBefore=a?`${n}
${a}`:n}}if(r){for(let o=0;o<this.errors.length;++o)e.errors.push(this.errors[o]);for(let o=0;o<this.warnings.length;++o)e.warnings.push(this.warnings[o])}else e.errors=this.errors,e.warnings=this.warnings;this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:hb(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(e,r=!1,n=-1){for(let i of e)yield*this.next(i);yield*this.end(r,n)}*next(e){switch(pT.env.LOG_STREAM&&console.dir(e,{depth:null}),e.type){case"directive":this.directives.add(e.source,(r,n,i)=>{let o=wa(e);o[0]+=r,this.onError(o,"BAD_DIRECTIVE",n,i)}),this.prelude.push(e.source),this.atDirectives=!0;break;case"document":{let r=hT.composeDoc(this.options,this.directives,e,this.onError);this.atDirectives&&!r.directives.docStart&&this.onError(e,"MISSING_CHAR","Missing directives-end/doc-start indicator line"),this.decorate(r,!1),this.doc&&(yield this.doc),this.doc=r,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(e.source);break;case"error":{let r=e.source?`${e.message}: ${JSON.stringify(e.source)}`:e.message,n=new va.YAMLParseError(wa(e),"UNEXPECTED_TOKEN",r);this.atDirectives||!this.doc?this.errors.push(n):this.doc.errors.push(n);break}case"doc-end":{if(!this.doc){let n="Unexpected doc-end without preceding document";this.errors.push(new va.YAMLParseError(wa(e),"UNEXPECTED_TOKEN",n));break}this.doc.directives.docEnd=!0;let r=gT.resolveEnd(e.end,e.offset+e.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),r.comment){let n=this.doc.comment;this.doc.comment=n?`${n}
${r.comment}`:r.comment}this.doc.range[2]=r.offset;break}default:this.errors.push(new va.YAMLParseError(wa(e),"UNEXPECTED_TOKEN",`Unsupported token ${e.type}`))}}*end(e=!1,r=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(e){let n=Object.assign({_directives:this.directives},this.options),i=new mT.Document(void 0,n);this.atDirectives&&this.onError(r,"MISSING_CHAR","Missing directives-end indicator line"),i.range=[0,r,r],this.decorate(i,!1),yield i}}};gb.Composer=Ef});var wb=R(Uc=>{"use strict";var yT=wf(),vT=kf(),wT=ga(),yb=ra();function bT(t,e=!0,r){if(t){let n=(i,o,a)=>{let s=typeof i=="number"?i:Array.isArray(i)?i[0]:i.offset;if(r)r(s,o,a);else throw new wT.YAMLParseError([s,s+1],o,a)};switch(t.type){case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return vT.resolveFlowScalar(t,e,n);case"block-scalar":return yT.resolveBlockScalar({options:{strict:e}},t,n)}}return null}function kT(t,e){let{implicitKey:r=!1,indent:n,inFlow:i=!1,offset:o=-1,type:a="PLAIN"}=e,s=yb.stringifyString({type:a,value:t},{implicitKey:r,indent:n>0?" ".repeat(n):"",inFlow:i,options:{blockQuote:!0,lineWidth:-1}}),c=e.end??[{type:"newline",offset:-1,indent:n,source:`
`}];switch(s[0]){case"|":case">":{let l=s.indexOf(`
`),d=s.substring(0,l),u=s.substring(l+1)+`
`,p=[{type:"block-scalar-header",offset:o,indent:n,source:d}];return vb(p,c)||p.push({type:"newline",offset:-1,indent:n,source:`
`}),{type:"block-scalar",offset:o,indent:n,props:p,source:u}}case'"':return{type:"double-quoted-scalar",offset:o,indent:n,source:s,end:c};case"'":return{type:"single-quoted-scalar",offset:o,indent:n,source:s,end:c};default:return{type:"scalar",offset:o,indent:n,source:s,end:c}}}function ST(t,e,r={}){let{afterKey:n=!1,implicitKey:i=!1,inFlow:o=!1,type:a}=r,s="indent"in t?t.indent:null;if(n&&typeof s=="number"&&(s+=2),!a)switch(t.type){case"single-quoted-scalar":a="QUOTE_SINGLE";break;case"double-quoted-scalar":a="QUOTE_DOUBLE";break;case"block-scalar":{let l=t.props[0];if(l.type!=="block-scalar-header")throw new Error("Invalid block scalar header");a=l.source[0]===">"?"BLOCK_FOLDED":"BLOCK_LITERAL";break}default:a="PLAIN"}let c=yb.stringifyString({type:a,value:e},{implicitKey:i||s===null,indent:s!==null&&s>0?" ".repeat(s):"",inFlow:o,options:{blockQuote:!0,lineWidth:-1}});switch(c[0]){case"|":case">":NT(t,c);break;case'"':Pf(t,c,"double-quoted-scalar");break;case"'":Pf(t,c,"single-quoted-scalar");break;default:Pf(t,c,"scalar")}}function NT(t,e){let r=e.indexOf(`
`),n=e.substring(0,r),i=e.substring(r+1)+`
`;if(t.type==="block-scalar"){let o=t.props[0];if(o.type!=="block-scalar-header")throw new Error("Invalid block scalar header");o.source=n,t.source=i}else{let{offset:o}=t,a="indent"in t?t.indent:-1,s=[{type:"block-scalar-header",offset:o,indent:a,source:n}];vb(s,"end"in t?t.end:void 0)||s.push({type:"newline",offset:-1,indent:a,source:`
`});for(let c of Object.keys(t))c!=="type"&&c!=="offset"&&delete t[c];Object.assign(t,{type:"block-scalar",indent:a,props:s,source:i})}}function vb(t,e){if(e)for(let r of e)switch(r.type){case"space":case"comment":t.push(r);break;case"newline":return t.push(r),!0}return!1}function Pf(t,e,r){switch(t.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":t.type=r,t.source=e;break;case"block-scalar":{let n=t.props.slice(1),i=e.length;t.props[0].type==="block-scalar-header"&&(i-=t.props[0].source.length);for(let o of n)o.offset+=i;delete t.props,Object.assign(t,{type:r,source:e,end:n});break}case"block-map":case"block-seq":{let i={type:"newline",offset:t.offset+e.length,indent:t.indent,source:`
`};delete t.items,Object.assign(t,{type:r,source:e,end:[i]});break}default:{let n="indent"in t?t.indent:-1,i="end"in t&&Array.isArray(t.end)?t.end.filter(o=>o.type==="space"||o.type==="comment"||o.type==="newline"):[];for(let o of Object.keys(t))o!=="type"&&o!=="offset"&&delete t[o];Object.assign(t,{type:r,indent:n,source:e,end:i})}}}Uc.createScalarToken=kT;Uc.resolveAsScalar=bT;Uc.setScalarValue=ST});var kb=R(bb=>{"use strict";var ET=t=>"type"in t?Yc(t):Jc(t);function Yc(t){switch(t.type){case"block-scalar":{let e="";for(let r of t.props)e+=Yc(r);return e+t.source}case"block-map":case"block-seq":{let e="";for(let r of t.items)e+=Jc(r);return e}case"flow-collection":{let e=t.start.source;for(let r of t.items)e+=Jc(r);for(let r of t.end)e+=r.source;return e}case"document":{let e=Jc(t);if(t.end)for(let r of t.end)e+=r.source;return e}default:{let e=t.source;if("end"in t&&t.end)for(let r of t.end)e+=r.source;return e}}}function Jc({start:t,key:e,sep:r,value:n}){let i="";for(let o of t)i+=o.source;if(e&&(i+=Yc(e)),r)for(let o of r)i+=o.source;return n&&(i+=Yc(n)),i}bb.stringify=ET});var xb=R(Eb=>{"use strict";var Cf=Symbol("break visit"),xT=Symbol("skip children"),Sb=Symbol("remove item");function Dn(t,e){"type"in t&&t.type==="document"&&(t={start:t.start,value:t.value}),Nb(Object.freeze([]),t,e)}Dn.BREAK=Cf;Dn.SKIP=xT;Dn.REMOVE=Sb;Dn.itemAtPath=(t,e)=>{let r=t;for(let[n,i]of e){let o=r?.[n];if(o&&"items"in o)r=o.items[i];else return}return r};Dn.parentCollection=(t,e)=>{let r=Dn.itemAtPath(t,e.slice(0,-1)),n=e[e.length-1][0],i=r?.[n];if(i&&"items"in i)return i;throw new Error("Parent collection not found")};function Nb(t,e,r){let n=r(e,t);if(typeof n=="symbol")return n;for(let i of["key","value"]){let o=e[i];if(o&&"items"in o){for(let a=0;a<o.items.length;++a){let s=Nb(Object.freeze(t.concat([[i,a]])),o.items[a],r);if(typeof s=="number")a=s-1;else{if(s===Cf)return Cf;s===Sb&&(o.items.splice(a,1),a-=1)}}typeof n=="function"&&i==="key"&&(n=n(e,t))}}return typeof n=="function"?n(e,t):n}Eb.visit=Dn});var Xc=R(He=>{"use strict";var Rf=wb(),PT=kb(),CT=xb(),Af="\uFEFF",_f="",jf="",If="",RT=t=>!!t&&"items"in t,AT=t=>!!t&&(t.type==="scalar"||t.type==="single-quoted-scalar"||t.type==="double-quoted-scalar"||t.type==="block-scalar");function _T(t){switch(t){case Af:return"<BOM>";case _f:return"<DOC>";case jf:return"<FLOW_END>";case If:return"<SCALAR>";default:return JSON.stringify(t)}}function jT(t){switch(t){case Af:return"byte-order-mark";case _f:return"doc-mode";case jf:return"flow-error-end";case If:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case`
`:case`\r
`:return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch(t[0]){case" ":case" ":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}He.createScalarToken=Rf.createScalarToken;He.resolveAsScalar=Rf.resolveAsScalar;He.setScalarValue=Rf.setScalarValue;He.stringify=PT.stringify;He.visit=CT.visit;He.BOM=Af;He.DOCUMENT=_f;He.FLOW_END=jf;He.SCALAR=If;He.isCollection=RT;He.isScalar=AT;He.prettyToken=_T;He.tokenType=jT});var Of=R(Cb=>{"use strict";var ba=Xc();function xt(t){switch(t){case void 0:case" ":case`
`:case"\r":case" ":return!0;default:return!1}}var Pb=new Set("0123456789ABCDEFabcdef"),IT=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),Qc=new Set(",[]{}"),TT=new Set(` ,[]{}
\r `),Tf=t=>!t||TT.has(t),$f=class{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex(e,r=!1){if(e){if(typeof e!="string")throw TypeError("source is not a string");this.buffer=this.buffer?this.buffer+e:e,this.lineEndPos=null}this.atEnd=!r;let n=this.next??"stream";for(;n&&(r||this.hasChars(1));)n=yield*this.parseNext(n)}atLineEnd(){let e=this.pos,r=this.buffer[e];for(;r===" "||r===" ";)r=this.buffer[++e];return!r||r==="#"||r===`
`?!0:r==="\r"?this.buffer[e+1]===`
`:!1}charAt(e){return this.buffer[this.pos+e]}continueScalar(e){let r=this.buffer[e];if(this.indentNext>0){let n=0;for(;r===" ";)r=this.buffer[++n+e];if(r==="\r"){let i=this.buffer[n+e+1];if(i===`
`||!i&&!this.atEnd)return e+n+1}return r===`
`||n>=this.indentNext||!r&&!this.atEnd?e+n:-1}if(r==="-"||r==="."){let n=this.buffer.substr(e,3);if((n==="---"||n==="...")&&xt(this.buffer[e+3]))return-1}return e}getLine(){let e=this.lineEndPos;return(typeof e!="number"||e!==-1&&e<this.pos)&&(e=this.buffer.indexOf(`
`,this.pos),this.lineEndPos=e),e===-1?this.atEnd?this.buffer.substring(this.pos):null:(this.buffer[e-1]==="\r"&&(e-=1),this.buffer.substring(this.pos,e))}hasChars(e){return this.pos+e<=this.buffer.length}setNext(e){return this.buffer=this.buffer.substring(this.pos),this.pos=0,this.lineEndPos=null,this.next=e,null}peek(e){return this.buffer.substr(this.pos,e)}*parseNext(e){switch(e){case"stream":return yield*this.parseStream();case"line-start":return yield*this.parseLineStart();case"block-start":return yield*this.parseBlockStart();case"doc":return yield*this.parseDocument();case"flow":return yield*this.parseFlowCollection();case"quoted-scalar":return yield*this.parseQuotedScalar();case"block-scalar":return yield*this.parseBlockScalar();case"plain-scalar":return yield*this.parsePlainScalar()}}*parseStream(){let e=this.getLine();if(e===null)return this.setNext("stream");if(e[0]===ba.BOM&&(yield*this.pushCount(1),e=e.substring(1)),e[0]==="%"){let r=e.length,n=e.indexOf("#");for(;n!==-1;){let o=e[n-1];if(o===" "||o===" "){r=n-1;break}else n=e.indexOf("#",n+1)}for(;;){let o=e[r-1];if(o===" "||o===" ")r-=1;else break}let i=(yield*this.pushCount(r))+(yield*this.pushSpaces(!0));return yield*this.pushCount(e.length-i),this.pushNewline(),"stream"}if(this.atLineEnd()){let r=yield*this.pushSpaces(!0);return yield*this.pushCount(e.length-r),yield*this.pushNewline(),"stream"}return yield ba.DOCUMENT,yield*this.parseLineStart()}*parseLineStart(){let e=this.charAt(0);if(!e&&!this.atEnd)return this.setNext("line-start");if(e==="-"||e==="."){if(!this.atEnd&&!this.hasChars(4))return this.setNext("line-start");let r=this.peek(3);if((r==="---"||r==="...")&&xt(this.charAt(3)))return yield*this.pushCount(3),this.indentValue=0,this.indentNext=0,r==="---"?"doc":"stream"}return this.indentValue=yield*this.pushSpaces(!1),this.indentNext>this.indentValue&&!xt(this.charAt(1))&&(this.indentNext=this.indentValue),yield*this.parseBlockStart()}*parseBlockStart(){let[e,r]=this.peek(2);if(!r&&!this.atEnd)return this.setNext("block-start");if((e==="-"||e==="?"||e===":")&&xt(r)){let n=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=n,"block-start"}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);let e=this.getLine();if(e===null)return this.setNext("doc");let r=yield*this.pushIndicators();switch(e[r]){case"#":yield*this.pushCount(e.length-r);case void 0:return yield*this.pushNewline(),yield*this.parseLineStart();case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel=1,"flow";case"}":case"]":return yield*this.pushCount(1),"doc";case"*":return yield*this.pushUntil(Tf),"doc";case'"':case"'":return yield*this.parseQuotedScalar();case"|":case">":return r+=yield*this.parseBlockScalarHeader(),r+=yield*this.pushSpaces(!0),yield*this.pushCount(e.length-r),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let e,r,n=-1;do e=yield*this.pushNewline(),e>0?(r=yield*this.pushSpaces(!1),this.indentValue=n=r):r=0,r+=yield*this.pushSpaces(!0);while(e+r>0);let i=this.getLine();if(i===null)return this.setNext("flow");if((n!==-1&&n<this.indentNext&&i[0]!=="#"||n===0&&(i.startsWith("---")||i.startsWith("..."))&&xt(i[3]))&&!(n===this.indentNext-1&&this.flowLevel===1&&(i[0]==="]"||i[0]==="}")))return this.flowLevel=0,yield ba.FLOW_END,yield*this.parseLineStart();let o=0;for(;i[o]===",";)o+=yield*this.pushCount(1),o+=yield*this.pushSpaces(!0),this.flowKey=!1;switch(o+=yield*this.pushIndicators(),i[o]){case void 0:return"flow";case"#":return yield*this.pushCount(i.length-o),"flow";case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel+=1,"flow";case"}":case"]":return yield*this.pushCount(1),this.flowKey=!0,this.flowLevel-=1,this.flowLevel?"flow":"doc";case"*":return yield*this.pushUntil(Tf),"flow";case'"':case"'":return this.flowKey=!0,yield*this.parseQuotedScalar();case":":{let a=this.charAt(1);if(this.flowKey||xt(a)||a===",")return this.flowKey=!1,yield*this.pushCount(1),yield*this.pushSpaces(!0),"flow"}default:return this.flowKey=!1,yield*this.parsePlainScalar()}}*parseQuotedScalar(){let e=this.charAt(0),r=this.buffer.indexOf(e,this.pos+1);if(e==="'")for(;r!==-1&&this.buffer[r+1]==="'";)r=this.buffer.indexOf("'",r+2);else for(;r!==-1;){let o=0;for(;this.buffer[r-1-o]==="\\";)o+=1;if(o%2===0)break;r=this.buffer.indexOf('"',r+1)}let n=this.buffer.substring(0,r),i=n.indexOf(`
`,this.pos);if(i!==-1){for(;i!==-1;){let o=this.continueScalar(i+1);if(o===-1)break;i=n.indexOf(`
`,o)}i!==-1&&(r=i-(n[i-1]==="\r"?2:1))}if(r===-1){if(!this.atEnd)return this.setNext("quoted-scalar");r=this.buffer.length}return yield*this.pushToIndex(r+1,!1),this.flowLevel?"flow":"doc"}*parseBlockScalarHeader(){this.blockScalarIndent=-1,this.blockScalarKeep=!1;let e=this.pos;for(;;){let r=this.buffer[++e];if(r==="+")this.blockScalarKeep=!0;else if(r>"0"&&r<="9")this.blockScalarIndent=Number(r)-1;else if(r!=="-")break}return yield*this.pushUntil(r=>xt(r)||r==="#")}*parseBlockScalar(){let e=this.pos-1,r=0,n;e:for(let o=this.pos;n=this.buffer[o];++o)switch(n){case" ":r+=1;break;case`
`:e=o,r=0;break;case"\r":{let a=this.buffer[o+1];if(!a&&!this.atEnd)return this.setNext("block-scalar");if(a===`
`)break}default:break e}if(!n&&!this.atEnd)return this.setNext("block-scalar");if(r>=this.indentNext){this.blockScalarIndent===-1?this.indentNext=r:this.indentNext=this.blockScalarIndent+(this.indentNext===0?1:this.indentNext);do{let o=this.continueScalar(e+1);if(o===-1)break;e=this.buffer.indexOf(`
`,o)}while(e!==-1);if(e===-1){if(!this.atEnd)return this.setNext("block-scalar");e=this.buffer.length}}let i=e+1;for(n=this.buffer[i];n===" ";)n=this.buffer[++i];if(n===" "){for(;n===" "||n===" "||n==="\r"||n===`
`;)n=this.buffer[++i];e=i-1}else if(!this.blockScalarKeep)do{let o=e-1,a=this.buffer[o];a==="\r"&&(a=this.buffer[--o]);let s=o;for(;a===" ";)a=this.buffer[--o];if(a===`
`&&o>=this.pos&&o+1+r>s)e=o;else break}while(!0);return yield ba.SCALAR,yield*this.pushToIndex(e+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let e=this.flowLevel>0,r=this.pos-1,n=this.pos-1,i;for(;i=this.buffer[++n];)if(i===":"){let o=this.buffer[n+1];if(xt(o)||e&&Qc.has(o))break;r=n}else if(xt(i)){let o=this.buffer[n+1];if(i==="\r"&&(o===`
`?(n+=1,i=`
`,o=this.buffer[n+1]):r=n),o==="#"||e&&Qc.has(o))break;if(i===`
`){let a=this.continueScalar(n+1);if(a===-1)break;n=Math.max(n,a-2)}}else{if(e&&Qc.has(i))break;r=n}return!i&&!this.atEnd?this.setNext("plain-scalar"):(yield ba.SCALAR,yield*this.pushToIndex(r+1,!0),e?"flow":"doc")}*pushCount(e){return e>0?(yield this.buffer.substr(this.pos,e),this.pos+=e,e):0}*pushToIndex(e,r){let n=this.buffer.slice(this.pos,e);return n?(yield n,this.pos+=n.length,n.length):(r&&(yield""),0)}*pushIndicators(){let e=0;e:for(;;){switch(this.charAt(0)){case"!":e+=yield*this.pushTag(),e+=yield*this.pushSpaces(!0);continue e;case"&":e+=yield*this.pushUntil(Tf),e+=yield*this.pushSpaces(!0);continue e;case"-":case"?":case":":{let r=this.flowLevel>0,n=this.charAt(1);if(xt(n)||r&&Qc.has(n)){r?this.flowKey&&(this.flowKey=!1):this.indentNext=this.indentValue+1,e+=yield*this.pushCount(1),e+=yield*this.pushSpaces(!0);continue e}}}break e}return e}*pushTag(){if(this.charAt(1)==="<"){let e=this.pos+2,r=this.buffer[e];for(;!xt(r)&&r!==">";)r=this.buffer[++e];return yield*this.pushToIndex(r===">"?e+1:e,!1)}else{let e=this.pos+1,r=this.buffer[e];for(;r;)if(IT.has(r))r=this.buffer[++e];else if(r==="%"&&Pb.has(this.buffer[e+1])&&Pb.has(this.buffer[e+2]))r=this.buffer[e+=3];else break;return yield*this.pushToIndex(e,!1)}}*pushNewline(){let e=this.buffer[this.pos];return e===`
`?yield*this.pushCount(1):e==="\r"&&this.charAt(1)===`
`?yield*this.pushCount(2):0}*pushSpaces(e){let r=this.pos-1,n;do n=this.buffer[++r];while(n===" "||e&&n===" ");let i=r-this.pos;return i>0&&(yield this.buffer.substr(this.pos,i),this.pos=r),i}*pushUntil(e){let r=this.pos,n=this.buffer[r];for(;!e(n);)n=this.buffer[++r];return yield*this.pushToIndex(r,!1)}};Cb.Lexer=$f});var Lf=R(Rb=>{"use strict";var Mf=class{constructor(){this.lineStarts=[],this.addNewLine=e=>this.lineStarts.push(e),this.linePos=e=>{let r=0,n=this.lineStarts.length;for(;r<n;){let o=r+n>>1;this.lineStarts[o]<e?r=o+1:n=o}if(this.lineStarts[r]===e)return{line:r+1,col:1};if(r===0)return{line:0,col:e};let i=this.lineStarts[r-1];return{line:r,col:e-i+1}}}};Rb.LineCounter=Mf});var Bf=R(Tb=>{"use strict";var $T=nc("process"),Ab=Xc(),OT=Of();function Xr(t,e){for(let r=0;r<t.length;++r)if(t[r].type===e)return!0;return!1}function _b(t){for(let e=0;e<t.length;++e)switch(t[e].type){case"space":case"comment":case"newline":break;default:return e}return-1}function Ib(t){switch(t?.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"flow-collection":return!0;default:return!1}}function Zc(t){switch(t.type){case"document":return t.start;case"block-map":{let e=t.items[t.items.length-1];return e.sep??e.start}case"block-seq":return t.items[t.items.length-1].start;default:return[]}}function zi(t){if(t.length===0)return[];let e=t.length;e:for(;--e>=0;)switch(t[e].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break e}for(;t[++e]?.type==="space";);return t.splice(e,t.length)}function el(t,e){if(e.length<1e5)Array.prototype.push.apply(t,e);else for(let r=0;r<e.length;++r)t.push(e[r])}function jb(t){if(t.start.type==="flow-seq-start")for(let e of t.items)e.sep&&!e.value&&!Xr(e.start,"explicit-key-ind")&&!Xr(e.sep,"map-value-ind")&&(e.key&&(e.value=e.key),delete e.key,Ib(e.value)?e.value.end?el(e.value.end,e.sep):e.value.end=e.sep:el(e.start,e.sep),delete e.sep)}var Df=class{constructor(e){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source="",this.type="",this.lexer=new OT.Lexer,this.onNewLine=e}*parse(e,r=!1){this.onNewLine&&this.offset===0&&this.onNewLine(0);for(let n of this.lexer.lex(e,r))yield*this.next(n);r||(yield*this.end())}*next(e){if(this.source=e,$T.env.LOG_TOKENS&&console.log("|",Ab.prettyToken(e)),this.atScalar){this.atScalar=!1,yield*this.step(),this.offset+=e.length;return}let r=Ab.tokenType(e);if(r)if(r==="scalar")this.atNewLine=!1,this.atScalar=!0,this.type="scalar";else{switch(this.type=r,yield*this.step(),r){case"newline":this.atNewLine=!0,this.indent=0,this.onNewLine&&this.onNewLine(this.offset+e.length);break;case"space":this.atNewLine&&e[0]===" "&&(this.indent+=e.length);break;case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":this.atNewLine&&(this.indent+=e.length);break;case"doc-mode":case"flow-error-end":return;default:this.atNewLine=!1}this.offset+=e.length}else{let n=`Not a YAML token: ${e}`;yield*this.pop({type:"error",offset:this.offset,message:n,source:e}),this.offset+=e.length}}*end(){for(;this.stack.length>0;)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let e=this.peek(1);if(this.type==="doc-end"&&e?.type!=="doc-end"){for(;this.stack.length>0;)yield*this.pop();this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!e)return yield*this.stream();switch(e.type){case"document":return yield*this.document(e);case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*this.scalar(e);case"block-scalar":return yield*this.blockScalar(e);case"block-map":return yield*this.blockMap(e);case"block-seq":return yield*this.blockSequence(e);case"flow-collection":return yield*this.flowCollection(e);case"doc-end":return yield*this.documentEnd(e)}yield*this.pop()}peek(e){return this.stack[this.stack.length-e]}*pop(e){let r=e??this.stack.pop();if(!r)yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"};else if(this.stack.length===0)yield r;else{let n=this.peek(1);switch(r.type==="block-scalar"?r.indent="indent"in n?n.indent:0:r.type==="flow-collection"&&n.type==="document"&&(r.indent=0),r.type==="flow-collection"&&jb(r),n.type){case"document":n.value=r;break;case"block-scalar":n.props.push(r);break;case"block-map":{let i=n.items[n.items.length-1];if(i.value){n.items.push({start:[],key:r,sep:[]}),this.onKeyLine=!0;return}else if(i.sep)i.value=r;else{Object.assign(i,{key:r,sep:[]}),this.onKeyLine=!i.explicitKey;return}break}case"block-seq":{let i=n.items[n.items.length-1];i.value?n.items.push({start:[],value:r}):i.value=r;break}case"flow-collection":{let i=n.items[n.items.length-1];!i||i.value?n.items.push({start:[],key:r,sep:[]}):i.sep?i.value=r:Object.assign(i,{key:r,sep:[]});return}default:yield*this.pop(),yield*this.pop(r)}if((n.type==="document"||n.type==="block-map"||n.type==="block-seq")&&(r.type==="block-map"||r.type==="block-seq")){let i=r.items[r.items.length-1];i&&!i.sep&&!i.value&&i.start.length>0&&_b(i.start)===-1&&(r.indent===0||i.start.every(o=>o.type!=="comment"||o.indent<r.indent))&&(n.type==="document"?n.end=i.start:n.items.push({start:i.start}),r.items.splice(-1,1))}}}*stream(){switch(this.type){case"directive-line":yield{type:"directive",offset:this.offset,source:this.source};return;case"byte-order-mark":case"space":case"comment":case"newline":yield this.sourceToken;return;case"doc-mode":case"doc-start":{let e={type:"document",offset:this.offset,start:[]};this.type==="doc-start"&&e.start.push(this.sourceToken),this.stack.push(e);return}}yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML stream`,source:this.source}}*document(e){if(e.value)return yield*this.lineEnd(e);switch(this.type){case"doc-start":{_b(e.start)!==-1?(yield*this.pop(),yield*this.step()):e.start.push(this.sourceToken);return}case"anchor":case"tag":case"space":case"comment":case"newline":e.start.push(this.sourceToken);return}let r=this.startBlockValue(e);r?this.stack.push(r):yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML document`,source:this.source}}*scalar(e){if(this.type==="map-value-ind"){let r=Zc(this.peek(2)),n=zi(r),i;e.end?(i=e.end,i.push(this.sourceToken),delete e.end):i=[this.sourceToken];let o={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:n,key:e,sep:i}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=o}else yield*this.lineEnd(e)}*blockScalar(e){switch(this.type){case"space":case"comment":case"newline":e.props.push(this.sourceToken);return;case"scalar":if(e.source=this.source,this.atNewLine=!0,this.indent=0,this.onNewLine){let r=this.source.indexOf(`
`)+1;for(;r!==0;)this.onNewLine(this.offset+r),r=this.source.indexOf(`
`,r)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap(e){let r=e.items[e.items.length-1];switch(this.type){case"newline":if(this.onKeyLine=!1,r.value){let n="end"in r.value?r.value.end:void 0;(Array.isArray(n)?n[n.length-1]:void 0)?.type==="comment"?n?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else r.sep?r.sep.push(this.sourceToken):r.start.push(this.sourceToken);return;case"space":case"comment":if(r.value)e.items.push({start:[this.sourceToken]});else if(r.sep)r.sep.push(this.sourceToken);else{if(this.atIndentedComment(r.start,e.indent)){let i=e.items[e.items.length-2]?.value?.end;if(Array.isArray(i)){el(i,r.start),i.push(this.sourceToken),e.items.pop();return}}r.start.push(this.sourceToken)}return}if(this.indent>=e.indent){let n=!this.onKeyLine&&this.indent===e.indent,i=n&&(r.sep||r.explicitKey)&&this.type!=="seq-item-ind",o=[];if(i&&r.sep&&!r.value){let a=[];for(let s=0;s<r.sep.length;++s){let c=r.sep[s];switch(c.type){case"newline":a.push(s);break;case"space":break;case"comment":c.indent>e.indent&&(a.length=0);break;default:a.length=0}}a.length>=2&&(o=r.sep.splice(a[1]))}switch(this.type){case"anchor":case"tag":i||r.value?(o.push(this.sourceToken),e.items.push({start:o}),this.onKeyLine=!0):r.sep?r.sep.push(this.sourceToken):r.start.push(this.sourceToken);return;case"explicit-key-ind":!r.sep&&!r.explicitKey?(r.start.push(this.sourceToken),r.explicitKey=!0):i||r.value?(o.push(this.sourceToken),e.items.push({start:o,explicitKey:!0})):this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}),this.onKeyLine=!0;return;case"map-value-ind":if(r.explicitKey)if(r.sep)if(r.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(Xr(r.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:o,key:null,sep:[this.sourceToken]}]});else if(Ib(r.key)&&!Xr(r.sep,"newline")){let a=zi(r.start),s=r.key,c=r.sep;c.push(this.sourceToken),delete r.key,delete r.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:a,key:s,sep:c}]})}else o.length>0?r.sep=r.sep.concat(o,this.sourceToken):r.sep.push(this.sourceToken);else if(Xr(r.start,"newline"))Object.assign(r,{key:null,sep:[this.sourceToken]});else{let a=zi(r.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:a,key:null,sep:[this.sourceToken]}]})}else r.sep?r.value||i?e.items.push({start:o,key:null,sep:[this.sourceToken]}):Xr(r.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):r.sep.push(this.sourceToken):Object.assign(r,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let a=this.flowScalar(this.type);i||r.value?(e.items.push({start:o,key:a,sep:[]}),this.onKeyLine=!0):r.sep?this.stack.push(a):(Object.assign(r,{key:a,sep:[]}),this.onKeyLine=!0);return}default:{let a=this.startBlockValue(e);if(a){if(a.type==="block-seq"){if(!r.explicitKey&&r.sep&&!Xr(r.sep,"newline")){yield*this.pop({type:"error",offset:this.offset,message:"Unexpected block-seq-ind on same line with key",source:this.source});return}}else n&&e.items.push({start:o});this.stack.push(a);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(e){let r=e.items[e.items.length-1];switch(this.type){case"newline":if(r.value){let n="end"in r.value?r.value.end:void 0;(Array.isArray(n)?n[n.length-1]:void 0)?.type==="comment"?n?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else r.start.push(this.sourceToken);return;case"space":case"comment":if(r.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(r.start,e.indent)){let i=e.items[e.items.length-2]?.value?.end;if(Array.isArray(i)){el(i,r.start),i.push(this.sourceToken),e.items.pop();return}}r.start.push(this.sourceToken)}return;case"anchor":case"tag":if(r.value||this.indent<=e.indent)break;r.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==e.indent)break;r.value||Xr(r.start,"seq-item-ind")?e.items.push({start:[this.sourceToken]}):r.start.push(this.sourceToken);return}if(this.indent>e.indent){let n=this.startBlockValue(e);if(n){this.stack.push(n);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){let r=e.items[e.items.length-1];if(this.type==="flow-error-end"){let n;do yield*this.pop(),n=this.peek(1);while(n?.type==="flow-collection")}else if(e.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!r||r.sep?e.items.push({start:[this.sourceToken]}):r.start.push(this.sourceToken);return;case"map-value-ind":!r||r.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):r.sep?r.sep.push(this.sourceToken):Object.assign(r,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!r||r.value?e.items.push({start:[this.sourceToken]}):r.sep?r.sep.push(this.sourceToken):r.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let i=this.flowScalar(this.type);!r||r.value?e.items.push({start:[],key:i,sep:[]}):r.sep?this.stack.push(i):Object.assign(r,{key:i,sep:[]});return}case"flow-map-end":case"flow-seq-end":e.end.push(this.sourceToken);return}let n=this.startBlockValue(e);n?this.stack.push(n):(yield*this.pop(),yield*this.step())}else{let n=this.peek(2);if(n.type==="block-map"&&(this.type==="map-value-ind"&&n.indent===e.indent||this.type==="newline"&&!n.items[n.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&n.type!=="flow-collection"){let i=Zc(n),o=zi(i);jb(e);let a=e.end.splice(1,e.end.length);a.push(this.sourceToken);let s={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:o,key:e,sep:a}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=s}else yield*this.lineEnd(e)}}flowScalar(e){if(this.onNewLine){let r=this.source.indexOf(`
`)+1;for(;r!==0;)this.onNewLine(this.offset+r),r=this.source.indexOf(`
`,r)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let r=Zc(e),n=zi(r);return n.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:n,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let r=Zc(e),n=zi(r);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:n,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,r){return this.type!=="comment"||this.indent<=r?!1:e.every(n=>n.type==="newline"||n.type==="space")}*documentEnd(e){this.type!=="doc-mode"&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop()))}*lineEnd(e){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop())}}};Tb.Parser=Df});var Db=R(Sa=>{"use strict";var $b=xf(),MT=fa(),ka=ga(),LT=Sp(),DT=K(),BT=Lf(),Ob=Bf();function Mb(t){let e=t.prettyErrors!==!1;return{lineCounter:t.lineCounter||e&&new BT.LineCounter||null,prettyErrors:e}}function FT(t,e={}){let{lineCounter:r,prettyErrors:n}=Mb(e),i=new Ob.Parser(r?.addNewLine),o=new $b.Composer(e),a=Array.from(o.compose(i.parse(t)));if(n&&r)for(let s of a)s.errors.forEach(ka.prettifyError(t,r)),s.warnings.forEach(ka.prettifyError(t,r));return a.length>0?a:Object.assign([],{empty:!0},o.streamInfo())}function Lb(t,e={}){let{lineCounter:r,prettyErrors:n}=Mb(e),i=new Ob.Parser(r?.addNewLine),o=new $b.Composer(e),a=null;for(let s of o.compose(i.parse(t),!0,t.length))if(!a)a=s;else if(a.options.logLevel!=="silent"){a.errors.push(new ka.YAMLParseError(s.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return n&&r&&(a.errors.forEach(ka.prettifyError(t,r)),a.warnings.forEach(ka.prettifyError(t,r))),a}function KT(t,e,r){let n;typeof e=="function"?n=e:r===void 0&&e&&typeof e=="object"&&(r=e);let i=Lb(t,r);if(!i)return null;if(i.warnings.forEach(o=>LT.warn(i.options.logLevel,o)),i.errors.length>0){if(i.options.logLevel!=="silent")throw i.errors[0];i.errors=[]}return i.toJS(Object.assign({reviver:n},r))}function HT(t,e,r){let n=null;if(typeof e=="function"||Array.isArray(e)?n=e:r===void 0&&e&&(r=e),typeof r=="string"&&(r=r.length),typeof r=="number"){let i=Math.round(r);r=i<1?void 0:i>8?{indent:8}:{indent:i}}if(t===void 0){let{keepUndefined:i}=r??e??{};if(!i)return}return DT.isDocument(t)&&!n?t.toString(r):new MT.Document(t,n,r).toString(r)}Sa.parse=KT;Sa.parseAllDocuments=FT;Sa.parseDocument=Lb;Sa.stringify=HT});var Ne=R(q=>{"use strict";var WT=xf(),VT=fa(),qT=of(),Ff=ga(),zT=Xo(),Qr=K(),GT=Gr(),UT=ae(),JT=Jr(),YT=Yr(),XT=Xc(),QT=Of(),ZT=Lf(),e$=Bf(),tl=Db(),Bb=Go();q.Composer=WT.Composer;q.Document=VT.Document;q.Schema=qT.Schema;q.YAMLError=Ff.YAMLError;q.YAMLParseError=Ff.YAMLParseError;q.YAMLWarning=Ff.YAMLWarning;q.Alias=zT.Alias;q.isAlias=Qr.isAlias;q.isCollection=Qr.isCollection;q.isDocument=Qr.isDocument;q.isMap=Qr.isMap;q.isNode=Qr.isNode;q.isPair=Qr.isPair;q.isScalar=Qr.isScalar;q.isSeq=Qr.isSeq;q.Pair=GT.Pair;q.Scalar=UT.Scalar;q.YAMLMap=JT.YAMLMap;q.YAMLSeq=YT.YAMLSeq;q.CST=XT;q.Lexer=QT.Lexer;q.LineCounter=ZT.LineCounter;q.Parser=e$.Parser;q.parse=tl.parse;q.parseAllDocuments=tl.parseAllDocuments;q.parseDocument=tl.parseDocument;q.stringify=tl.stringify;q.visit=Bb.visit;q.visitAsync=Bb.visitAsync});import Zr from"path";function qb(t,e){return Gi[e][t]}function o$(t,e,r,n){let i=/^(\s*)([a-z_]+):/u.exec(t);if(!i)return null;let o=i[1].length,a=i[2];if(o===0&&a in Gi.en)return a;if(o===2&&e){let s=`${e}.${a}`;if(s in Gi.en)return s}if(o===4&&e==="knowledge"&&n==="remote"){let s=`knowledge.remote.${a}`;if(s in Gi.en)return s}if(o===4&&e==="knowledge"&&n==="local"){let s=`knowledge.local.${a}`;if(s in Gi.en)return s}if(o===2&&e===null&&a==="hook")return"hook";if(o===2&&e==="hook"&&a==="allow_paths")return"hook.allow_paths";if(o===4&&e==="native"&&r==="snapshot"){let s=`native.snapshot.${a}`;if(s in Gi.en)return s}return null}function Ji(t,e){let r=[],n=null,i=null,o=null;for(let a of(0,Ea.stringify)(t).trimEnd().split(`
`)){let s=o$(a,n,i,o);if(s){let c=a.match(/^\s*/u)?.[0]??"";for(let l of qb(s,e).split(`
`))r.push(`${c}${l}`)}r.push(a),/^[a-z_]+:/u.test(a)?(a.startsWith("native:")?n="native":a.startsWith("classic:")?n="classic":a.startsWith("hook:")?n="hook":a.startsWith("memory:")?n="memory":a.startsWith("knowledge:")?n="knowledge":n=null,i=null,o=null):/^ {2}[a-z_]+:/u.test(a)&&(n==="native"&&(i=a.startsWith(" snapshot:")?"snapshot":null),n==="knowledge"&&(o=a.startsWith(" local:")?"local":a.startsWith(" remote:")?"remote":null))}return r.push(""),r.join(`
`)}function a$(t,e){if(typeof t!="string")throw new Error(`${e} must be a string`);let r=t.trim();if(r.length===0||Zr.posix.isAbsolute(r)||Zr.win32.isAbsolute(r)||/^(?:~|[\\/])/u.test(r))throw new Error(`${e} must be a project-relative path`);if(r===".")return[];let n=r.replaceAll("\\","/").split("/");if(n.some(i=>i===".."))throw new Error(`${e} must stay inside the project root`);if(n.some(i=>i===""||i==="."))throw new Error(`${e} must not contain empty or dot path segments`);return n}function Fn(t){let e=a$(t,"native.artifact_root");return e.length===0?".":e.join("/")}function zb(t,e="docs"){let r=t??e;if(r!=="legacy"&&r!=="docs")throw new Error("classic.artifact_layout must be legacy or docs");return r}function Yi(t,e,r=!1){if(typeof t!="string")throw new Error(`${e} must be a string`);let n=t.trim().replaceAll("\\","/");if(n.length===0||Zr.posix.isAbsolute(n)||Zr.win32.isAbsolute(n)||/^(?:~|[\\/])/u.test(n))throw new Error(`${e} must be relative to its declared path base`);let i=n.split("/");if(i.some(o=>o===".."))throw new Error(`${e} must stay inside its declared path base`);if(i.some(o=>o===""||o==="."))throw new Error(`${e} must not contain empty or dot path segments`);if(!r&&/[*?]/u.test(n))throw new Error(`${e} cannot contain wildcards`);return i.join("/")}function gr(t,e){if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`${e} must be a mapping`);return t}function Gb(t,e,r){let n=t??e;if(n!=="en"&&n!=="zh-CN")throw new Error(`${r} must be en or zh-CN`);return n}function il(t,e){if(typeof t!="string"||t.length===0||t.includes("\\")||t.includes("\0")||t.startsWith("/")||t.split("/").includes(".."))throw new Error(`${e} contains an unsafe pattern`);if(t.length>rl)throw new Error(`${e} exceeds ${rl} characters`);let r=0;for(let n=0;n<t.length;n+=1)t[n]==="?"?r+=1:t[n]==="*"&&(r+=1,t[n+1]==="*"&&(n+=1));if(r>nl)throw new Error(`${e} contains more than ${nl} wildcard tokens`);return t}function Wb(t,e,r){if(t===void 0)return[...r];if(!Array.isArray(t))throw new Error(`${e} contains an unsafe pattern`);return[...new Set(t.map(n=>il(n,e)))].sort((n,i)=>n.localeCompare(i,"en"))}function Na(t,e,r){let n=t??e;if(!Number.isSafeInteger(n)||n<1)throw new Error(`${r} must be a positive integer`);return n}function Vb(t,e,r){let n=Na(t,e,r);if(n>Math.floor(Number.MAX_SAFE_INTEGER/(1024*1024)))throw new Error(`${r} is too large to convert to bytes safely`);return n}function s$(t){if(t===void 0)return{...We,include:[...We.include],exclude:[...We.exclude]};let e=gr(t,"native.snapshot");return{include:Wb(e.include,"native.snapshot.include",We.include),exclude:Wb(e.exclude,"native.snapshot.exclude",We.exclude),max_files:Na(e.max_files,We.max_files,"native.snapshot.max_files"),max_total_bytes:Na(e.max_total_bytes,We.max_total_bytes,"native.snapshot.max_total_bytes"),max_duration_ms:Na(e.max_duration_ms,We.max_duration_ms,"native.snapshot.max_duration_ms"),max_selection_records:Na(e.max_selection_records,We.max_selection_records,"native.snapshot.max_selection_records")}}function c$(t){if(t===void 0)return;let e=gr(t,"native.pending_root_move"),r=e.id,n=e.from_artifact_root,i=e.to_artifact_root,o=e.stage;if(typeof r!="string"||!/^[a-f0-9-]{8,}$/u.test(r))throw new Error("native.pending_root_move.id is invalid");if(typeof n!="string"||typeof i!="string")throw new Error("native.pending_root_move roots must be strings");if(o!=="copying"&&o!=="ready"&&o!=="switched")throw new Error("native.pending_root_move.stage is invalid");let a;if(e.cleanup!==void 0){let s=gr(e.cleanup,"native.pending_root_move.cleanup"),c=s.kind,l=s.state,d=s.manifest_hash;if(c!=="forward-source"&&c!=="restart-staging"&&c!=="rollback-destination"&&c!=="rollback-staging")throw new Error("native.pending_root_move.cleanup.kind is invalid");if(l!=="prepared"&&l!=="quarantined"&&l!=="deleting")throw new Error("native.pending_root_move.cleanup.state is invalid");if(typeof d!="string"||!/^[a-f0-9]{64}$/u.test(d))throw new Error("native.pending_root_move.cleanup.manifest_hash is invalid");a={kind:c,state:l,manifestHash:d}}return{id:r,fromArtifactRoot:Fn(n),toArtifactRoot:Fn(i),stage:o,...a?{cleanup:a}:{}}}function l$(t){if(t===void 0)return;let e=gr(t,"native.finish");if(e.pull_request===void 0)return{};let r=gr(e.pull_request,"native.finish.pull_request");if(r.provider!=="repository-command")throw new Error("native.finish.pull_request.provider must be repository-command");if(!Array.isArray(r.command)||r.command.length===0)throw new Error("native.finish.pull_request.command must be a non-empty array");if(r.command.length>64)throw new Error("native.finish.pull_request.command must contain at most 64 arguments");let n=r.command.map((o,a)=>{if(typeof o!="string"||o.trim().length===0||o.length>4096||/[\0\r\n]/u.test(o))throw new Error(`native.finish.pull_request.command[${a}] must be a non-empty single-line string of at most 4096 characters`);return o});if(Zr.posix.isAbsolute(n[0])||Zr.win32.isAbsolute(n[0]))throw new Error("native.finish.pull_request.command[0] must be a bare executable name or a project-relative path");let i=r.timeout_ms??t$;if(!Number.isSafeInteger(i)||i<1||i>Hb)throw new Error(`native.finish.pull_request.timeout_ms must be an integer between 1 and ${Hb}`);return{pull_request:{provider:"repository-command",command:n,timeout_ms:i}}}function d$(t,e={}){let r=gr(t,"native"),n=r.artifact_root??(e.allowMissingArtifactRoot?"docs":void 0);if(typeof n!="string")throw new Error("native.artifact_root must be a string");let i=r.clarification_mode??"batch";if(i!=="sequential"&&i!=="batch")throw new Error("native.clarification_mode must be sequential or batch");let o=r.archive_confirmation??"automatic";if(o!=="automatic"&&o!=="required")throw new Error("native.archive_confirmation must be automatic or required");let a=r.max_verify_failures??Kf;if(!Number.isSafeInteger(a)||a<1)throw new Error("native.max_verify_failures must be a positive integer");let s=r.document_writes??"allow";if(s!=="allow"&&s!=="revert")throw new Error("native.document_writes must be allow or revert");let c=c$(r.pending_root_move),l=l$(r.finish);return{artifact_root:Fn(n),language:Gb(r.language,"en","native.language"),clarification_mode:i,archive_confirmation:o,max_verify_failures:a,...s==="revert"?{document_writes:s}:{},snapshot:s$(r.snapshot),...l?{finish:l}:{},...c?{pending_root_move:c}:{}}}function u$(t){let e=gr(t,"classic"),r=e.context_compression??"off";if(r!=="off"&&r!=="beta")throw new Error("classic.context_compression must be off or beta");let n=e.review_mode??"standard";if(n!=="off"&&n!=="standard"&&n!=="thorough")throw new Error("classic.review_mode must be off, standard, or thorough");let i=e.auto_transition??!0;if(typeof i!="boolean")throw new Error("classic.auto_transition must be true or false");let o=e.document_evidence??"neutral";if(o!=="neutral"&&o!=="strict")throw new Error("classic.document_evidence must be neutral or strict");return{artifact_layout:zb(e.artifact_layout),language:Gb(e.language,"zh-CN","classic.language"),context_compression:r,review_mode:n,auto_transition:i,...o==="strict"?{document_evidence:o}:{}}}function p$(t){let r=gr(t,"hook").allow_paths??[];if(!Array.isArray(r))throw new Error("hook.allow_paths must be an array");return{allow_paths:[...new Set(r.map((n,i)=>Yi(n,`hook.allow_paths[${i}]`)))]}}function f$(t){if(t===void 0)return{...Bn};let e=gr(t,"memory"),r=e.learning??Bn.learning,n=e.retrieval??Bn.retrieval;if(typeof r!="boolean")throw new Error("memory.learning must be true or false");if(typeof n!="boolean")throw new Error("memory.retrieval must be true or false");return{learning:r,retrieval:n}}function Hf(t,e){if(t===null||typeof t!="object"||Array.isArray(t))throw new Error(`${e} must be a mapping`);return t}function m$(t,e){if(typeof t!="string")throw new Error(`${e} must be a string`);let r=t.trim();if(r.length===0||r.includes("\\")||r.includes("\0")||Zr.posix.isAbsolute(r)||Zr.win32.isAbsolute(r)||r.startsWith("~")||r.split("/").some(i=>i===""||i==="."||i===".."))throw new Error(`${e} must be a safe project-relative glob`);if(!r.toLowerCase().endsWith(".md"))throw new Error(`${e} must target a Markdown file ending in .md`);if(r.length>Fb)throw new Error(`${e} exceeds ${Fb} characters`);let n=0;for(let i=0;i<r.length;i+=1)r[i]==="?"?n+=1:r[i]==="*"&&(n+=1,r[i+1]==="*"&&(i+=1));if(n>Kb)throw new Error(`${e} contains more than ${Kb} wildcard tokens`);return r}function h$(t){let e=Hf(t,"knowledge.local"),r=e.include??[];if(!Array.isArray(r))throw new Error("knowledge.local.include must be an array");let n={include:[...new Set(r.map((i,o)=>m$(i,`knowledge.local.include[${o}]`)))],max_file_mb:Vb(e.max_file_mb,Qe.max_file_mb,"knowledge.local.max_file_mb"),max_total_mb:Vb(e.max_total_mb,Qe.max_total_mb,"knowledge.local.max_total_mb")};if(n.max_file_mb>n.max_total_mb)throw new Error("knowledge.local.max_file_mb must not exceed max_total_mb");return n}function g$(t){if(typeof t!="string"||t.trim().length===0)throw new Error("knowledge.remote.endpoint must be a non-empty URL");let e;try{e=new URL(t)}catch{throw new Error("knowledge.remote.endpoint must be a valid URL")}let r=e.hostname.toLowerCase().replace(/^\[|\]$/gu,""),n=r==="localhost"||r==="127.0.0.1"||r==="::1";if(e.protocol!=="https:"&&!(e.protocol==="http:"&&n))throw new Error("knowledge.remote.endpoint must use HTTPS (HTTP is allowed for loopback)");return e.toString()}function y$(t){let e=Hf(t,"knowledge.remote"),r=g$(e.endpoint),n=e.token_env;if(n!==void 0&&(typeof n!="string"||!/^[A-Za-z_][A-Za-z0-9_]*$/u.test(n)))throw new Error("knowledge.remote.token_env must be an environment variable name");let i=e.scope;if(i!==void 0&&(typeof i!="string"||i.length>512))throw new Error("knowledge.remote.scope must be a string of at most 512 characters");let o=e.timeout_ms??5e3;if(typeof o!="number"||!Number.isSafeInteger(o)||o<100||o>3e4)throw new Error("knowledge.remote.timeout_ms must be an integer between 100 and 30000");return{endpoint:r,...n===void 0?{}:{token_env:n},...i===void 0?{}:{scope:i},timeout_ms:o}}function v$(t){if(t===void 0)return{...Ui};let e=Hf(t,"knowledge"),r=e.provider??"local";if(r!=="local"&&r!=="remote")throw new Error("knowledge.provider must be local or remote");let n=e.local===void 0?void 0:h$(e.local);if(r==="local")return{provider:r,...n?{local:n}:{}};let i=e.remote===void 0?void 0:y$(e.remote);if(i===void 0)throw new Error("knowledge.remote must be configured when knowledge.provider is remote");return{provider:r,...n?{local:n}:{},remote:i}}function w$(t){let e=t??!0;if(typeof e!="boolean")throw new Error("ambient_resume must be true or false");return e}function b$(t,e,r,n,i,o,a,s){let c=t.schema!==void 0;if(!(c||t.default_workflow!==void 0||t.workflows!==void 0||!s.allowPartialProject&&t.native!==void 0)||s.allowPartialProject&&!c)return null;if(t.schema!=="comet.project.v1")throw new Error("Unsupported Comet project schema");if(t.default_workflow!=="native"&&t.default_workflow!=="classic")throw new Error("default_workflow must be native or classic");let d=t.workflows??[t.default_workflow];if(!Array.isArray(d)||d.length===0||d.some(p=>p!=="native"&&p!=="classic"))throw new Error("workflows must contain native and/or classic");let u=[...new Set(d)];if(!u.includes(t.default_workflow))throw new Error("workflows must include default_workflow");if(u.includes("native")&&!i)throw new Error("native must be a mapping");return{schema:"comet.project.v1",default_workflow:t.default_workflow,workflows:u,ambient_resume:a,...e?{hook:e}:{},memory:r,knowledge:n,...i?{native:i}:{},...o?{classic:o}:{}}}function zt(t,e={}){let r=(0,Ea.parseDocument)(t,{uniqueKeys:!0});if(r.errors.length>0)throw new Error(`Invalid .comet/config.yaml: ${r.errors[0].message}`);let n=r.toJS();if(n==null)return{value:{},config:null,ambient_resume:!0};if(typeof n!="object"||Array.isArray(n))throw new Error("Invalid .comet/config.yaml: root must be a mapping");let i=n,o=w$(i.ambient_resume),a=i.hook===void 0?void 0:p$(i.hook),s=f$(i.memory),c=v$(i.knowledge),l=i.native===void 0?void 0:d$(i.native,{allowMissingArtifactRoot:e.allowMissingNativeFields}),d=i.classic===void 0?void 0:u$(i.classic),u=b$(i,a,s,c,l,d,o,{allowPartialProject:e.allowPartialProject??!1});return{value:i,config:u,ambient_resume:o,memory:s,knowledge:c,...a?{hook:a}:{},...l?{native:l}:{},...d?{classic:d}:{}}}function Ub(t){return{id:t.id,from_artifact_root:t.fromArtifactRoot,to_artifact_root:t.toArtifactRoot,stage:t.stage,...t.cleanup?{cleanup:{kind:t.cleanup.kind,state:t.cleanup.state,manifest_hash:t.cleanup.manifestHash}}:{}}}function Jb(t){let e=t.knowledge??{...Ui};return{schema:t.schema,default_workflow:t.default_workflow,workflows:t.workflows??[t.default_workflow],ambient_resume:t.ambient_resume,memory:t.memory??{...Bn},knowledge:{provider:e.provider,...e.local?{local:{include:[...e.local.include],max_file_mb:e.local.max_file_mb??Qe.max_file_mb,max_total_mb:e.local.max_total_mb??Qe.max_total_mb}}:{},...e.remote?{remote:{endpoint:e.remote.endpoint,timeout_ms:e.remote.timeout_ms,...e.remote.token_env===void 0?{}:{token_env:e.remote.token_env},...e.remote.scope===void 0?{}:{scope:e.remote.scope}}}:{}},...t.hook?{hook:{allow_paths:[...t.hook.allow_paths]}}:{},...t.native?{native:{artifact_root:t.native.artifact_root,language:t.native.language,clarification_mode:t.native.clarification_mode,archive_confirmation:t.native.archive_confirmation,max_verify_failures:t.native.max_verify_failures,...t.native.document_writes?{document_writes:t.native.document_writes}:{},...t.native.finish?.pull_request?{finish:{pull_request:{provider:t.native.finish.pull_request.provider,command:[...t.native.finish.pull_request.command],timeout_ms:t.native.finish.pull_request.timeout_ms}}}:{},...t.native.pending_root_move?{pending_root_move:Ub(t.native.pending_root_move)}:{}}}:{},...t.classic?{classic:{artifact_layout:t.classic.artifact_layout,language:t.classic.language,context_compression:t.classic.context_compression,review_mode:t.classic.review_mode,auto_transition:t.classic.auto_transition,...t.classic.document_evidence?{document_evidence:t.classic.document_evidence}:{}}}:{}}}function Xe(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}function xa(t,e){let r=Jb(e),n=zt((0,Ea.stringify)(r)).config;if(!n)throw new Error("Unsupported Comet project schema");let i={...t,schema:n.schema,default_workflow:n.default_workflow,workflows:n.workflows,ambient_resume:n.ambient_resume};if(n.hook&&(i.hook={...Xe(t.hook),allow_paths:[...n.hook.allow_paths]}),n.memory){let o=Xe(t.memory);i.memory={...o,learning:n.memory.learning,retrieval:n.memory.retrieval}}if(n.knowledge){let o=Xe(t.knowledge),a={...o,provider:n.knowledge.provider};if(n.knowledge.local?a.local={...Xe(o.local),include:[...n.knowledge.local.include],max_file_mb:n.knowledge.local.max_file_mb,max_total_mb:n.knowledge.local.max_total_mb}:delete a.local,n.knowledge.remote){let c={...Xe(o.remote),endpoint:n.knowledge.remote.endpoint,timeout_ms:n.knowledge.remote.timeout_ms,...n.knowledge.remote.token_env===void 0?{}:{token_env:n.knowledge.remote.token_env},...n.knowledge.remote.scope===void 0?{}:{scope:n.knowledge.remote.scope}};n.knowledge.remote.token_env===void 0&&delete c.token_env,n.knowledge.remote.scope===void 0&&delete c.scope,a.remote=c}else delete a.remote;i.knowledge=a}if(n.native){let o=Xe(t.native),a={...o,artifact_root:n.native.artifact_root,language:n.native.language,clarification_mode:n.native.clarification_mode,archive_confirmation:n.native.archive_confirmation,max_verify_failures:n.native.max_verify_failures,...n.native.document_writes?{document_writes:n.native.document_writes}:{}};if(n.native.finish?.pull_request){let s=Xe(o.finish);a.finish={...s,pull_request:{...Xe(s.pull_request),provider:n.native.finish.pull_request.provider,command:[...n.native.finish.pull_request.command],timeout_ms:n.native.finish.pull_request.timeout_ms}}}else{let s={...Xe(o.finish)};delete s.pull_request,Object.keys(s).length>0?a.finish=s:delete a.finish}if(delete a.snapshot,n.native.pending_root_move){let s=Xe(o.pending_root_move),c=Ub(n.native.pending_root_move),l=Xe(s.cleanup),d=Xe(c.cleanup);a.pending_root_move={...s,...c,...c.cleanup?{cleanup:{...l,...d}}:{}}}else delete a.pending_root_move;i.native=a}return n.classic&&(i.classic={...Xe(t.classic),artifact_layout:n.classic.artifact_layout,language:n.classic.language,context_compression:n.classic.context_compression,review_mode:n.classic.review_mode,auto_transition:n.classic.auto_transition,...n.classic.document_evidence?{document_evidence:n.classic.document_evidence}:{}}),i}function ol(t="docs",e="en"){return{schema:"comet.project.v1",default_workflow:"native",ambient_resume:!0,memory:{...Bn},knowledge:{...Ui},native:{artifact_root:Fn(t),language:e,clarification_mode:"batch",archive_confirmation:"automatic",max_verify_failures:Kf,snapshot:{...We,include:[...We.include],exclude:[...We.exclude]}}}}var Ea,en,rl,nl,Fb,Kb,Kf,Bn,Qe,Ui,t$,Hb,r$,n$,i$,We,Gi,ge=A(()=>{"use strict";Ea=Ce(Ne(),1),en=Number.MAX_SAFE_INTEGER,rl=1024,nl=64,Fb=1024,Kb=64,Kf=5,Bn={learning:!0,retrieval:!0},Qe={include:[],max_file_mb:1,max_total_mb:32},Ui={provider:"local"},t$=12e4,Hb=6e5,r$=[".agents/skills/**",".amazonq/skills/**",".augment/skills/**",".bob/skills/**",".claude/skills/**",".cline/skills/**",".codebuddy/skills/**",".workbuddy/skills/**",".continue/skills/**",".cospec/skills/**",".crush/skills/**",".cursor/skills/**",".devin/skills/**",".dsh/skills/**",".factory/skills/**",".forge/skills/**",".gemini/skills/**",".github/skills/**",".grok/skills/**",".iflow/skills/**",".junie/skills/**",".kilocode/skills/**",".kimi-code/skills/**",".kiro/skills/**",".lingma/skills/**",".mimocode/skills/**",".opencode/skills/**",".omp/skills/**",".pi/skills/**",".qoder/skills/**",".qwen/skills/**",".roo/skills/**",".trae-cn/skills/**",".trae/skills/**",".windsurf/skills/**",".zcode/skills/**"],n$=["**/.idea/**","**/.vscode/**",".codex/skills/**","**/node_modules/**","**/.next/**","**/.nuxt/**","**/.output/**","**/.svelte-kit/**","**/.vite/**","**/.parcel-cache/**","**/.turbo/**","**/.nx/cache/**","**/dist/**","**/build/**","**/out/**","**/coverage/**","**/.nyc_output/**","**/target/**","**/.gradle/**","**/.cxx/**","**/.externalNativeBuild/**","**/captures/**","**/__pycache__/**","**/.pytest_cache/**","**/.mypy_cache/**","**/.ruff_cache/**","**/.tox/**","**/.nox/**","**/.venv/**","**/venv/**","**/obj/**","**/CMakeFiles/**","**/cmake-build-*/**","**/.cache/**","**/tmp/**","**/temp/**","**/logs/**","**/*.tsbuildinfo","**/*.log","**/.DS_Store","**/Thumbs.db"],i$=[...r$,...n$].sort((t,e)=>t.localeCompare(e,"en")),We={include:["**/*"],exclude:[...i$],max_files:1e4,max_total_bytes:1024*1024*1024,max_duration_ms:6e4,max_selection_records:2e4},Gi={en:{schema:"# Configuration schema used by Comet. Do not edit this value.",default_workflow:"# Default workflow entered by /comet. Must also appear in workflows.",workflows:"# Workflows enabled in this project: native, classic, or both.",ambient_resume:`# Enables automatic recovery through the read-only Ambient Resume probe for both Native and Classic. Set false to disable it.
# ambient_resume: true | false`,memory:"# Project policy for automatic personal-memory learning and retrieval.","memory.learning":`# Allows workflow events in this project to form new personal memories automatically.
# learning: true | false`,"memory.retrieval":`# Allows personal memories to be injected into Agent context for this project.
# retrieval: true | false`,knowledge:"# Project knowledge retrieval provider used by ordinary Comet tasks.","knowledge.provider":`# Provider for project knowledge.
# provider: local | remote`,"knowledge.local":"# Additional project-relative Markdown globs used by the local provider.","knowledge.local.include":"# One project-relative Markdown glob per list item; appended to the built-in corpus.","knowledge.local.max_file_mb":"# Maximum size in MB for one local Markdown document. Increase it for long specifications or verification reports.","knowledge.local.max_total_mb":"# Maximum total size in MB of the local Markdown retrieval corpus.","knowledge.remote":"# Fixed Comet Retrieval API v1 settings used when provider is remote.","knowledge.remote.endpoint":"# HTTPS endpoint; loopback HTTP is allowed.","knowledge.remote.token_env":"# Optional environment variable containing the bearer token.","knowledge.remote.scope":"# Optional opaque remote knowledge scope.","knowledge.remote.timeout_ms":"# Remote request timeout in milliseconds (100-30000).",hook:"# Hook write policy shared by Native and Classic. Paths are project-relative.","hook.allow_paths":"# Project-relative directories allowed during guarded phases. Use one path per list item; empty by default.",native:"# Native workflow settings. They do not change Classic state or behavior.","native.artifact_root":"# Root directory where Native stores Comet specs and changes. Runtime data stays under .comet.","native.language":`# Artifact language used by Native workflow documents.
# language: en | zh-CN`,"native.clarification_mode":`# Controls how Native asks clarifying questions: batch asks every currently answerable question per round (default), sequential asks one at a time.
# clarification_mode: batch | sequential`,"native.archive_confirmation":`# Controls whether Native archives automatically after a successful preview or waits for explicit user confirmation.
# archive_confirmation: automatic | required`,"native.max_verify_failures":"# Maximum failed Verify outcomes allowed for one confirmed acceptance target before Native stops the completion loop.","native.document_writes":`# Controls documentation file writes during Shape, Verify, and Archive: allow treats them as neutral instead of returning the change to Build, revert restores the strict behavior.
# document_writes: allow | revert`,"native.finish":"# Optional repository-owned finish providers. Native keeps commit, push, generic remote verification, and recovery ownership.","native.snapshot":"# Controls the auditable project scope and bounded work used by Native content snapshots.","native.snapshot.include":"# Selects the project-relative paths included in Native snapshots. Patterns use / and support *, **, and ?.","native.snapshot.exclude":"# Removes paths from the included scope. Exclusions are bound into each new change baseline.","native.snapshot.max_files":"# Bounds the number of files captured by one snapshot. Increase it for large monorepos.","native.snapshot.max_total_bytes":"# Bounds the total file content hashed by one snapshot. Content is streamed and does not depend on Git hashes.","native.snapshot.max_duration_ms":"# Bounds snapshot capture time in milliseconds. Increase it together with the byte budget on slower or larger repositories.","native.snapshot.max_selection_records":"# Bounds Git selection records and physical enumeration nodes per snapshot. Raise it for monorepos whose tracked plus untracked file list exceeds the default.",classic:"# Classic workflow settings. They do not change Native state or behavior.","classic.artifact_layout":`# Selects the Classic artifact layout. The default is docs; update preserves detected root-level legacy artifacts.
# artifact_layout: legacy | docs`,"classic.language":`# Artifact language used by Classic workflow documents.
# language: en | zh-CN`,"classic.context_compression":`# Controls beta context compression for new Classic changes.
# context_compression: off | beta`,"classic.review_mode":`# Sets the default review depth for new Classic changes.
# review_mode: off | standard | thorough`,"classic.auto_transition":`# Automatically enters the next Classic phase after a phase passes.
# auto_transition: true | false`,"classic.document_evidence":`# Controls how documentation edits affect recorded check evidence: neutral keeps build and verify evidence valid when only documentation files changed, strict binds every working-tree file again.
# document_evidence: neutral | strict`},"zh-CN":{schema:"# Comet 使用的配置格式版本,请勿修改此值。",default_workflow:"# `/comet` 默认进入的工作流;该值也必须出现在 workflows 中。",workflows:"# 此项目启用的工作流,可填写 native、classic 或同时启用两者。",ambient_resume:`# 是否启用只读的环境感知恢复探针,同时作用于 Native 和 Classic;设为 false 可关闭自动工作流恢复。
# ambient_resume: true | false`,memory:"# 当前项目的个人记忆自动学习与注入策略。","memory.learning":`# 是否允许当前项目通过工作流事件自动沉淀新的个人记忆。
# 可选值:true | false`,"memory.retrieval":`# 是否允许当前项目把个人记忆自动注入 Agent 上下文。
# 可选值:true | false`,knowledge:"# 普通 Comet 任务使用的项目知识检索 Provider。","knowledge.provider":`# 项目知识 Provider。
# 可选值:local | remote`,"knowledge.local":"# Local Provider 额外加载的项目相对 Markdown 路径。","knowledge.local.include":"# 每项填写一个项目相对 Markdown glob;会追加到内置语料。","knowledge.local.max_file_mb":"# 单个本地 Markdown 文档允许参与检索的最大 MB 数;较长的规格或验证报告可按需提高。","knowledge.local.max_total_mb":"# 本地 Markdown 检索语料允许读取的总 MB 数。","knowledge.remote":"# provider 为 remote 时使用的固定 Comet Retrieval API v1 配置。","knowledge.remote.endpoint":"# HTTPS 地址;loopback 地址允许使用 HTTP。","knowledge.remote.token_env":"# 可选的 Bearer Token 环境变量名。","knowledge.remote.scope":"# 可选的不透明远端知识库范围。","knowledge.remote.timeout_ms":"# 远端请求超时时间(毫秒,100-30000)。",hook:"# Native 和 Classic 共享的 Hook 写入策略;路径必须是项目相对路径。","hook.allow_paths":"# 在受保护阶段允许写入的项目相对目录;每项填写一个目录,默认为空。",native:"# Native 工作流配置,不会改变 Classic 的状态或行为。","native.artifact_root":"# Native 规格和 change 的存放根目录;运行时数据始终位于 .comet。","native.language":`# Native 工作流文档使用的产物语言。
# 可选值:en | zh-CN`,"native.clarification_mode":`# Native 提问澄清问题的方式:batch 每轮一次提出当前所有可回答的问题(默认),sequential 每轮只问一个。
# 可选值:batch | sequential`,"native.archive_confirmation":`# Native 归档检查成功后自动归档,或等待用户明确确认。
# 可选值:automatic | required`,"native.max_verify_failures":"# 同一个已确认验收目标最多允许的 Verify 失败次数;达到上限后停止完成循环。","native.document_writes":`# Shape、Verify 和 Archive 阶段的文档类写入处理方式:allow 视为中性写入、不再把 change 打回 Build,revert 恢复严格行为。
# 可选值:allow | revert`,"native.finish":"# 可选的仓库自有收尾 provider;提交、推送、通用远端核验和恢复仍由 Native 负责。","native.snapshot":"# Native 内容快照使用的可审计项目范围与有界工作预算。","native.snapshot.include":"# Native 快照纳入的项目相对路径;模式使用 /,支持 *、** 和 ?。","native.snapshot.exclude":"# 从纳入范围中排除路径;新 change 会把排除策略绑定到 baseline。","native.snapshot.max_files":"# 单次快照最多捕获的文件数;大型 monorepo 可按需提高。","native.snapshot.max_total_bytes":"# 单次快照最多哈希的文件内容总字节数;内容采用流式读取,不依赖 Git hash。","native.snapshot.max_duration_ms":"# 单次快照的最长执行时间(毫秒);较慢或更大的仓库应与字节预算一并提高。","native.snapshot.max_selection_records":"# 单次快照的 Git 选择记录数与物理枚举节点数上限;tracked 加 untracked 清单超过默认值的大型 monorepo 可按需提高。",classic:"# Classic 工作流配置,不会改变 Native 的状态或行为。","classic.artifact_layout":`# Classic 产物布局;默认使用 docs,update 检测到根目录 legacy 产物时予以保留。
# 可选值:legacy | docs`,"classic.language":`# Classic 工作流文档使用的产物语言。
# 可选值:en | zh-CN`,"classic.context_compression":`# 新建 Classic change 是否启用 beta 上下文压缩。
# 可选值:off | beta`,"classic.review_mode":`# 新建 Classic change 默认使用的审查深度。
# 可选值:off | standard | thorough`,"classic.auto_transition":`# Classic 阶段通过后是否自动进入下一阶段。
# 可选值:true | false`,"classic.document_evidence":`# 文档编辑对已记录检查证据的影响:neutral 在只有文档文件变化时保持 build 和 verify 证据有效,strict 重新绑定工作区的全部文件。
# 可选值:neutral | strict`}}});import{existsSync as Yb,promises as Kn}from"fs";import z from"path";import k$ from"os";async function Wf(t){try{return await Kn.lstat(t),!0}catch(e){if(e.code==="ENOENT")return!1;throw e}}async function N$(t){try{let e=await Kn.readFile(t,"utf8");return/^schema:\s*comet\.project\.v1\s*$/mu.test(e)}catch(e){if(e.code==="ENOENT")return!1;throw e}}function Qi(t,e){let r=z.relative(t,e);return r===""||!z.isAbsolute(r)&&r!==".."&&!r.startsWith(`..${z.sep}`)}async function Xi(t){let e=[],r=t;for(;!await Wf(r);){let i=z.dirname(r);if(i===r)break;e.push(z.basename(r)),r=i}let n=await Kn.realpath(r);return z.resolve(n,...e.reverse())}async function Vf(t){try{return(await Kn.lstat(t)).isSymbolicLink()}catch(e){if(e.code==="ENOENT")return!1;throw e}}async function Pa(t){let e=z.resolve(t);try{(await Kn.stat(e)).isDirectory()||(e=z.dirname(e))}catch(i){if(i.code!=="ENOENT")throw i}let r=e,n=z.resolve(k$.homedir());for(;;){if(!(e===n&&r!==n)){let a=z.join(e,...qf.split("/")),s=e===r||await N$(a);if(await Wf(a)&&s)return e}if(await Wf(z.join(e,".git")))return e;let o=z.dirname(e);if(o===e)return r;e=o}}function zf(t){return Fn(t)}async function E$(t,e){let r=zf(e),n=z.resolve(t,...r.split("/")),i=await Kn.realpath(t),o=await Xi(n);if(!Qi(i,o))throw new Error("native.artifact_root resolves outside the project root");return n}async function Hn(t,e){let r=zf(e),n=await E$(t,r),i=z.join(n,"comet");if(await Vf(i))throw new Error("The configured Native comet root must not be a symbolic link");let[o,a]=await Promise.all([Xi(n),Xi(i)]);if(!Qi(o,a))throw new Error("The configured Native comet root resolves outside its artifact root");let s=z.resolve(t),c=z.join(s,".comet","runtime","native");if(await Vf(c))throw new Error("The Native Runtime root must not be a symbolic link");let[l,d]=await Promise.all([Kn.realpath(s),Xi(c)]);if(!Qi(l,d))throw new Error("The Native Runtime root resolves outside the project root");return{projectRoot:s,configFile:z.join(t,...qf.split("/")),artifactRoot:n,artifactRootRef:r,nativeRoot:i,specsDir:z.join(i,"specs"),changesDir:z.join(i,"changes"),archiveDir:z.join(i,"archive"),runtimeDir:c,changesRuntimeDir:z.join(c,"changes"),locksDir:z.join(c,"locks"),transactionsDir:z.join(c,"transactions")}}function Xb(t){if(!S$.test(t))throw new Error(`Invalid Native change name: ${t}`)}function tn(t,e){Xb(e);let r=z.join(t.changesRuntimeDir,e);if(!Ze(t.changesRuntimeDir,r))throw new Error("Native change Runtime path escaped");return r}function x$(t,e){Xb(e);let r=z.join(t.changesDir,e,"runtime");if(!Ze(t.changesDir,r))throw new Error("Legacy Native change Runtime path escaped");return r}function rn(t,e){let r=tn(t,e);if(Yb(r))return r;let n=x$(t,e);return Yb(n)?n:r}function Wn(t,e){let r=z.resolve(e);if(Ze(t.runtimeDir,r))return t.runtimeDir;if(Ze(t.nativeRoot,r))return t.nativeRoot;throw new Error(`Path is outside Native document and Runtime roots: ${e}`)}function Ze(t,e){return Qi(z.resolve(t),z.resolve(e))}async function te(t,e){let r=z.resolve(t),n=z.resolve(e);if(!Qi(r,n))throw new Error(`Path is outside the Native root: ${e}`);if(await Vf(r))throw new Error(`Native root must not be a symbolic link: ${t}`);let[i,o]=await Promise.all([Xi(r),Xi(n)]);if(!Qi(i,o))throw new Error(`Path resolves outside the Native root: ${e}`);return n}var qf,S$,se=A(()=>{"use strict";ge();qf=".comet/config.yaml",S$=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u});import{AsyncLocalStorage as D$}from"node:async_hooks";function al(){let t=nk.getStore();return t?.active?t:null}function em(){al()?.entries.clear()}async function ik(t){if(al()!==null)return t();let e={entries:new Map,active:!0};return nk.run(e,async()=>{try{return await t()}finally{e.active=!1,e.entries.clear()}})}function ok(t,e){let r=t;for(let n of e)r+="\0"+(typeof n=="string"?n:JSON.stringify(n));return r}function ye(t,e){return(...r)=>{let n=al();if(n===null)return e(...r);let i=ok(`async:${t}`,r),o=n.entries.get(i);if(o)return o.value;let a=e(...r).catch(s=>{throw n.entries.get(i)?.value===a&&n.entries.delete(i),s});return n.entries.set(i,{value:a}),a}}function tm(t,e){return(...r)=>{let n=al();if(n===null)return e(...r);let i=ok(`sync:${t}`,r),o=n.entries.get(i);if(o)return o.value;let a=e(...r);return n.entries.set(i,{value:a}),a}}var nk,yr=A(()=>{"use strict";nk=new D$});function nn(t){return t!==0&&t!==0n&&t!=="0"}function vr(t,e){return nn(t.dev)&&nn(e.dev)&&nn(t.ino)&&nn(e.ino)}function Y(t,e){let r=nn(t.dev)&&nn(e.dev);if(r&&t.dev!==e.dev)return!1;let n=nn(t.ino)&&nn(e.ino);return n&&t.ino!==e.ino?!1:r&&n?!0:t.birthtime===e.birthtime}var Ra=A(()=>{"use strict"});import{constants as on,promises as Ve}from"fs";import{createHash as K$}from"node:crypto";function nm(t){return"birthtimeNs"in t&&typeof t.birthtimeNs=="bigint"?t.birthtimeNs:t.birthtimeMs}function ak(t){return"ctimeNs"in t&&typeof t.ctimeNs=="bigint"?t.ctimeNs:t.ctimeMs}function sn(t){return{dev:t.dev,ino:t.ino,birthtime:nm(t)}}function an(t,e){let r=sn(t),n=sn(e);return vr(r,n)?Y(r,n):Y(r,n)&&nm(t)===nm(e)&&ak(t)===ak(e)&&t.size===e.size}async function Zi(t,e,r={}){if(!Number.isSafeInteger(e)||e<1)throw new Error("race-safe read byte limit must be a positive integer");let n=r.label??"file",i=r.bigint===!0,o=await Ve.lstat(t,{bigint:i});if(!o.isFile()||o.isSymbolicLink())throw new Ee("not-regular-file",`${n} must be a regular file`);if(BigInt(o.size)>BigInt(e))throw new Ee("too-large",`${n} exceeds ${e} bytes`);let a=await Ve.realpath(t);await r.verify?.("pre-open",{realPath:a,identity:sn(o)});let s=process.platform==="win32"?on.O_RDONLY:on.O_RDONLY|on.O_NOFOLLOW|on.O_NONBLOCK,c;try{c=await Ve.open(t,s)}catch(l){throw l.code==="ELOOP"?new Ee("not-regular-file",`${n} must be a regular file`,{cause:l}):l}try{let[l,d,u]=await Promise.all([c.stat({bigint:i}),Ve.lstat(t,{bigint:i}),Ve.realpath(t)]);if(!l.isFile()||!d.isFile()||d.isSymbolicLink()||u!==a||!an(o,l)||!an(o,d))throw new Ee("changed",`${n} changed while opening`);await r.verify?.("post-open",{realPath:u,identity:sn(l)}),await r.hooks?.afterOpen?.();let p=[],f=0,m=Buffer.allocUnsafe(Math.min(64*1024,e+1));for(;;){let y=e+1-f,{bytesRead:v}=await c.read(m,0,Math.min(m.length,y),null);if(v===0)break;if(f+=v,f>e)throw new Ee("too-large",`${n} exceeds ${e} bytes`);p.push(Buffer.from(m.subarray(0,v)))}await r.hooks?.beforeFinalCheck?.();let[g,h,w]=await Promise.all([c.stat({bigint:i}),Ve.lstat(t,{bigint:i}),Ve.realpath(t)]);if(!h.isFile()||h.isSymbolicLink()||w!==a||!an(o,g)||!an(o,h))throw new Ee("changed",`${n} changed while reading`);return await r.verify?.("post-read",{realPath:w,identity:sn(g)}),{bytes:Buffer.concat(p,f),stat:g,realPath:w}}finally{await c.close()}}async function sk(t,e={}){let r=e.label??"file",n=e.bigint===!0,i=await Ve.lstat(t,{bigint:n});if(!i.isFile()||i.isSymbolicLink())throw new Ee("not-regular-file",`${r} must be a regular file`);let o=await Ve.realpath(t);await e.verify?.("pre-open",{realPath:o,identity:sn(i)});let a=process.platform==="win32"?on.O_RDONLY:on.O_RDONLY|on.O_NOFOLLOW|on.O_NONBLOCK,s;try{s=await Ve.open(t,a)}catch(c){throw c.code==="ELOOP"?new Ee("not-regular-file",`${r} must be a regular file`,{cause:c}):c}try{let[c,l,d]=await Promise.all([s.stat({bigint:n}),Ve.lstat(t,{bigint:n}),Ve.realpath(t)]);if(!c.isFile()||!l.isFile()||l.isSymbolicLink()||d!==o||!an(i,c)||!an(i,l))throw new Ee("changed",`${r} changed while opening`);await e.verify?.("post-open",{realPath:d,identity:sn(c)}),await e.hooks?.afterOpen?.();let u=K$(e.algorithm??"sha256"),p=Buffer.allocUnsafe(64*1024);for(;;){let{bytesRead:h}=await s.read(p,0,p.length,null);if(h===0)break;u.update(p.subarray(0,h))}await e.hooks?.beforeFinalCheck?.();let[f,m,g]=await Promise.all([s.stat({bigint:n}),Ve.lstat(t,{bigint:n}),Ve.realpath(t)]);if(!m.isFile()||m.isSymbolicLink()||g!==o||!an(i,f)||!an(i,m))throw new Ee("changed",`${r} changed while reading`);return await e.verify?.("post-read",{realPath:g,identity:sn(f)}),{digest:u.digest("hex"),stat:f,realPath:g}}finally{await s.close()}}var Ee,Aa=A(()=>{"use strict";Ra();Ee=class extends Error{reason;constructor(e,r,n){super(r,n),this.name="RaceSafeReadError",this.reason=e}}});import{promises as sl}from"fs";import cn from"path";async function wr(t,e,r){let n=await $(t,e,{label:r.label,expected:"file"});if(!n.exists){let o=new Error(`${r.label} does not exist`);throw o.code="ENOENT",o}let i=await im(n.projectRoot,r.label);return sk(n.target,{...r,verify:async(o,a)=>{if(!cl(i,a.realPath))throw new Error(`${r.label} resolves outside the project root`);await om(n.projectRoot,i,n.relative.split("/"),{label:r.label,expected:"file"})}})}function H$(t){let e=t?.code;return e==="ENOENT"||e==="ENOTDIR"}function cl(t,e){let r=cn.relative(t,e);return r===""||!cn.isAbsolute(r)&&r!==".."&&!r.startsWith(`..${cn.sep}`)}async function im(t,e){let r=cn.resolve(t),n=await sl.lstat(r);if(!n.isDirectory()||n.isSymbolicLink())throw new Error(`${e} project root must be a real directory`);return sl.realpath(r)}async function om(t,e,r,n){let i=t;for(let o=0;o<r.length;o++){i=cn.join(i,r[o]);let a;try{a=await sl.lstat(i)}catch(d){if(H$(d))return{exists:!1,kind:"missing"};throw d}let s=cn.relative(t,i).replaceAll("\\","/");if(a.isSymbolicLink())throw new Error(`${n.label} crosses a symbolic link or junction at ${s}`);let c=o===r.length-1;if(!c&&!a.isDirectory())throw new Error(`${n.label} ancestor ${s} must be a real directory`);if(c&&(n.expected==="file"&&!a.isFile()||n.expected==="directory"&&!a.isDirectory()||n.expected==="any"&&!a.isFile()&&!a.isDirectory()))throw new Error(`${n.label} must be a real ${n.expected}`);let l=await sl.realpath(i);if(!cl(e,l))throw new Error(`${n.label} resolves outside the project root`);if(c)return{exists:!0,kind:a.isFile()?"file":a.isDirectory()?"directory":"missing"}}return{exists:!0,kind:"directory"}}async function $(t,e,r){let n=Yi(e,r.label),i=cn.resolve(t),o=await im(i,r.label),a=n.split("/"),s=cn.resolve(i,...a);if(!cl(i,s))throw new Error(`${r.label} must stay inside the project root`);let c=await om(i,o,a,r);return{projectRoot:i,target:s,relative:n,exists:c.exists,kind:c.kind}}async function am(t,e,r){return(await $(t,e,{...r,expected:"file"})).exists}async function O(t,e,r,n){let i=await $(t,e,{label:n.label,expected:"file"});if(!i.exists){let a=new Error(`${n.label} does not exist`);throw a.code="ENOENT",a}let o=await im(i.projectRoot,n.label);return Zi(i.target,r,{...n,verify:async(a,s)=>{if(!cl(o,s.realPath))throw new Error(`${n.label} resolves outside the project root`);await om(i.projectRoot,o,i.relative.split("/"),{label:n.label,expected:"file"})}})}var Q=A(()=>{"use strict";Aa();ge()});import{createHash as W$}from"crypto";function sm(t,e){return t.exists===e.exists&&t.sha256===e.sha256}function V$(t){let e=t?.code;return e==="ENOENT"||e==="ENOTDIR"}async function br(t,e={}){return(await eo(t,e)).document}async function ck(t){try{return(await O(t,Pt,en,{label:Pt})).bytes}catch(e){if(V$(e))return null;throw e}}function lk(t){return t?{exists:!0,sha256:W$("sha256").update(t).digest("hex")}:{exists:!1,sha256:null}}async function kr(t){return lk(await ck(t))}async function eo(t,e={}){let r=await ck(t);return{document:r?zt(r.toString("utf8"),e):null,identity:lk(r)}}async function Re(t){return(await br(t))?.config??null}var Pt,qe=A(()=>{"use strict";ge();Q();Pt=".comet/config.yaml"});import{promises as lm}from"node:fs";async function dm(t,e){let r;for(let n=0;n<=cm.length;n+=1)try{return await t()}catch(i){r=i;let o=i.code;if(n===cm.length||!q$.has(o??""))throw i;await new Promise(a=>setTimeout(a,cm[n]))}throw r}async function ll(t,e){await dm(()=>lm.rename(t,e),`rename ${e}`)}async function to(t){await dm(()=>lm.unlink(t),`unlink ${t}`)}async function dl(t,e){await dm(()=>lm.link(t,e),`link ${e}`)}var q$,cm,ul=A(()=>{"use strict";q$=new Set(["EPERM","EACCES","EBUSY","ENOTEMPTY"]),cm=[50,100,200]});import{randomUUID as z$}from"crypto";import{constants as G$,promises as ue}from"fs";import ve from"path";async function hl(t,e){try{return await dl(t,e),{linked:!0}}catch(r){let n=r.code;if(n!=="ENOTSUP"&&n!=="EOPNOTSUPP")throw r}return await ue.copyFile(t,e,G$.COPYFILE_EXCL),{linked:!1}}function zn(t,e){let r=ve.relative(t,e);return r===""||!ve.isAbsolute(r)&&r!==".."&&!r.startsWith(`..${ve.sep}`)}function pl(t){return{dev:t.dev,ino:t.ino,birthtime:t.birthtimeMs}}function U$(t,e){return Y(t,pl(e))}function fl(t,e){return Y(pl(t),pl(e))}function dk(t,e){return fl(t,e)&&t.birthtimeMs===e.birthtimeMs&&t.ctimeMs===e.ctimeMs&&t.mtimeMs===e.mtimeMs&&t.size===e.size}async function ml(t){let e=await ue.lstat(t);if(!e.isDirectory()||e.isSymbolicLink())throw new Error(`Contained atomic write parent must be a real directory: ${t}`);return{path:t,realPath:await ue.realpath(t),...pl(e)}}async function Sr(t){for(let e of t){let r=await ue.lstat(e.path);if(!r.isDirectory()||r.isSymbolicLink()||!U$(e,r)||await ue.realpath(e.path)!==e.realPath)throw new Error(`Contained atomic write parent changed before commit: ${e.path}`)}}async function J$(t,e,r){let[n,i]=await Promise.all([ue.lstat(t),ue.realpath(t),Sr(r)]);if(!n.isFile()||n.isSymbolicLink()||!fl(n,e)||!zn(r[0].realPath,i))throw new Error("Contained atomic write temporary file changed after close");return n}async function Y$(t,e){let r=ve.resolve(t),n=ve.resolve(e);if(!zn(r,n))throw new Error(`Contained atomic write parent is outside its managed root: ${e}`);let i=[await ml(r)],o=ve.relative(r,n).split(ve.sep).filter(Boolean),a=r;for(let s of o){await Sr(i),a=ve.join(a,s);try{await ue.mkdir(a)}catch(l){if(l.code!=="EEXIST")throw l}let c=await ml(a);if(!zn(i[0].realPath,c.realPath))throw new Error(`Contained atomic write parent resolves outside its managed root: ${a}`);i.push(c)}return await Sr(i),i}async function X$(t,e){let r=ve.resolve(t),n=ve.resolve(e);if(!zn(r,n))throw new Error(`Contained file parent is outside its managed root: ${e}`);let i=[await ml(r)],o=ve.relative(r,n).split(ve.sep).filter(Boolean),a=r;for(let s of o){a=ve.join(a,s);try{let c=await ml(a);if(!zn(i[0].realPath,c.realPath))throw new Error(`Contained file parent resolves outside its managed root: ${a}`);i.push(c)}catch(c){if(c.code==="ENOENT")return null;throw c}}return await Sr(i),i}async function uk(t){let e;try{e=await ue.open(t,"r"),await e.sync()}catch(r){let n=r.code;if(!["EACCES","EBADF","EINVAL","EISDIR","ENOTSUP","EPERM"].includes(n??""))throw r}finally{await e?.close()}}async function Q$(t,e,r){let n=ve.dirname(t),i=await Y$(r.containedRoot,n),o=ve.join(n,`.${ve.basename(t)}.${z$()}.tmp`),a,s,c;try{await r.beforeTemporaryOpen?.(),a=await ue.open(o,"wx"),s=await a.stat();let[l,d]=await Promise.all([ue.lstat(o),ue.realpath(o)]);if(await Sr(i),!l.isFile()||l.isSymbolicLink()||!fl(s,l)||!zn(i[0].realPath,d))throw new Error("Contained atomic write temporary file opened outside its managed parent");if(typeof e=="string"?await a.writeFile(e,"utf8"):await a.writeFile(e),await a.sync(),c=await a.stat(),!fl(s,c))throw new Error("Contained atomic write temporary file changed while writing");if(await a.close(),a=void 0,await r.afterTemporaryClose?.(),!c)throw new Error("Contained atomic write temporary file was not written");c=await J$(o,c,i),await r.beforeCommit?.(),await Sr(i);let u=await ue.lstat(o);if(!u.isFile()||u.isSymbolicLink()||!c||!dk(u,c))throw new Error("Contained atomic write temporary file changed before commit");r.exclusive?(await hl(o,t),await ue.unlink(o)):await ll(o,t),await uk(n)}catch(l){await a?.close();try{await Sr(i),await ue.rm(o,{force:!0})}catch{}throw l}}async function we(t,e,r){await Q$(t,e,r)}async function _a(t,e){let r=ve.dirname(t),n=await X$(e.containedRoot,r);if(!n)return!1;let i,o;try{i=await ue.lstat(t),o=await ue.realpath(t)}catch(c){if(c.code==="ENOENT")return!1;throw c}if(!i.isFile()||i.isSymbolicLink()||!zn(n[0].realPath,o))throw new Error("Contained file removal target must be a regular file inside its managed root");await e.beforeRemove?.(),await Sr(n);let[a,s]=await Promise.all([ue.lstat(t),ue.realpath(t)]);if(!a.isFile()||a.isSymbolicLink()||!dk(i,a)||s!==o)throw new Error("Contained file removal target changed before removal");return await to(t),await Sr(n),await uk(r),!0}var Ct=A(()=>{"use strict";ul();Ra()});import{createHash as Z$,randomUUID as e0}from"crypto";import{promises as ln}from"fs";function hk(t){return`.comet/config.yaml.${t}.next`}function gk(t){return`.comet/config.yaml.${t}.quarantine`}function t0(t){return`.comet/config-write-transaction.${t}.cleanup`}function um(t){return Z$("sha256").update(t).digest("hex")}function yk(t){let e=t?.code;return e==="ENOENT"||e==="ENOTDIR"}async function fm(t){let e;try{e=(await O(t,gl,pm,{label:"project config write transaction"})).bytes}catch(a){if(yk(a))return null;throw a}let r;try{r=JSON.parse(e.toString("utf8"))}catch{throw new Error("Invalid project config write transaction: expected JSON")}if(!r||typeof r!="object"||Array.isArray(r))throw new Error("Invalid project config write transaction: expected an object");let n=r,i=Object.keys(n).sort(),o=["candidate","expected_sha256","id","output_sha256","owner_pid","quarantine","schema"].sort();if(i.join(`
`)!==o.join(`
`))throw new Error("Invalid project config write transaction: unexpected fields");if(n.schema!==fk)throw new Error("Invalid project config write transaction: unsupported schema");if(typeof n.id!="string"||!mk.test(n.id))throw new Error("Invalid project config write transaction: invalid id");if(typeof n.owner_pid!="number"||!Number.isSafeInteger(n.owner_pid)||n.owner_pid<=0)throw new Error("Invalid project config write transaction: invalid owner pid");if(typeof n.expected_sha256!="string"||!yl.test(n.expected_sha256)||typeof n.output_sha256!="string"||!yl.test(n.output_sha256))throw new Error("Invalid project config write transaction: invalid config hash");if(n.candidate!==hk(n.id)||n.quarantine!==gk(n.id))throw new Error("Invalid project config write transaction: paths do not match its id");return{journal:n,source:e.toString("utf8")}}async function vl(t,e){try{let{bytes:r}=await O(t,e,pm,{label:e});return um(r)}catch(r){if(yk(r))return null;throw r}}async function pk(t,e,r,n){let i=await $(t,e,{label:e,expected:"file"});if(!i.exists)return!1;let o=`${e}.${e0()}.cleanup`,a=await $(t,o,{label:`${e} cleanup`,expected:"file"});if(a.exists)throw new Error(`Owned cleanup path already exists: ${o}`);if(await ln.rename(i.target,a.target),await n?.(e,o),await vl(t,o)!==r){try{let c=await $(t,e,{label:e,expected:"file"});c.exists||(await ln.link(a.target,c.target),await ln.unlink(a.target))}catch{}throw new Error(`Refusing to remove modified project config transaction file: ${e}`)}return await ln.unlink(a.target),!0}function r0(t){if(t===process.pid)return!0;try{return process.kill(t,0),!0}catch(e){return e.code!=="ESRCH"}}async function n0(t,e){let r=t0(e.journal.id),n=await $(t,r,{label:"project config write transaction cleanup",expected:"file"});if(n.exists)throw new Error("Project config write transaction cleanup path already exists");let i=await $(t,gl,{label:"project config write transaction",expected:"file"});if(!i.exists)throw new Error("Project config write transaction changed before cleanup");await ln.rename(i.target,n.target);let o=await O(t,r,pm,{label:"project config write transaction cleanup"});if(um(o.bytes)!==um(e.source)){try{let a=await $(t,gl,{label:"project config write transaction",expected:"file"});a.exists||await ln.link(n.target,a.target)}catch{}throw new Error("Project config write transaction changed before cleanup")}await ln.unlink(n.target)}async function vk(t,e,r,n){if(!mk.test(e))throw new Error("Invalid project config write transaction id");if(!yl.test(r)||!yl.test(n))throw new Error("Invalid project config write transaction hash");if(await fm(t))throw new Error("An unfinished project config write transaction exists; run comet doctor --repair");let i={schema:fk,id:e,owner_pid:process.pid,expected_sha256:r,output_sha256:n,candidate:hk(e),quarantine:gk(e)};return await we((await $(t,gl,{label:"project config write transaction",expected:"file"})).target,`${JSON.stringify(i,null,2)}
`,{containedRoot:t,exclusive:!0}),{candidate:i.candidate,quarantine:i.quarantine}}async function wl(t){let e=await fm(t);if(!e)return null;let{journal:r}=e,[n,i,o]=await Promise.all([kr(t),vl(t,r.candidate),vl(t,r.quarantine)]);if(i!==null&&i!==r.output_sha256)throw new Error("Project config write transaction candidate changed after creation");if(o!==null&&o!==r.expected_sha256)throw new Error("Project config write transaction quarantine changed after creation");let a;return!n.exists&&o===r.expected_sha256?a="config-quarantined":n.sha256===r.output_sha256?a="published-cleanup-pending":n.exists&&n.sha256!==r.expected_sha256&&n.sha256!==r.output_sha256?a="successor-preserved-cleanup-pending":a="prepared",{id:r.id,stage:a,candidate:r.candidate,quarantine:r.quarantine,allowedRepair:"rollback-or-cleanup"}}async function bl(t,e={}){let r=await fm(t);if(!r)return!1;let{journal:n}=r;if(e.ownerId!==n.id&&r0(n.owner_pid))throw new Error(`Project config write transaction ${n.id} is still active in process ${n.owner_pid}`);if(!await wl(t))return!1;let o=await kr(t),a=await vl(t,n.quarantine);if(!o.exists){if(a!==n.expected_sha256)throw new Error("Cannot recover project config write transaction: the config and owned quarantine are missing");let s=await $(t,Pt,{label:Pt,expected:"file"}),c=await $(t,n.quarantine,{label:"project config write transaction quarantine",expected:"file"});try{await ln.link(c.target,s.target)}catch(l){if(l.code!=="EEXIST")throw l}if(o=await kr(t),!o.exists)throw new Error("Cannot recover project config write transaction: config publish failed")}return await pk(t,n.candidate,n.output_sha256,e.testHooks?.afterOwnedFileQuarantine),o.exists&&await pk(t,n.quarantine,n.expected_sha256,e.testHooks?.afterOwnedFileQuarantine),await n0(t,r),!0}var fk,gl,pm,mk,yl,mm=A(()=>{"use strict";Ct();qe();Q();fk="comet.project-config-write.v1",gl=".comet/config-write-transaction.json",pm=16*1024,mk=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/,yl=/^[0-9a-f]{64}$/});import{createHash as wk,randomUUID as i0}from"crypto";import{promises as bk}from"fs";import hm from"path";async function kl(t,e){if(!e)return;let r=await kr(t);if(!sm(r,e))throw new Error("Project config changed before commit; rerun the operation")}async function Sl(t,e,r={}){zt(e,{allowPartialProject:r.allowPartialProject??!1});let n=hm.resolve(t);if(await wl(n))throw new Error("An unfinished project config write transaction exists; run comet doctor --repair");let i=r.expectedIdentity??await kr(n);await kl(n,i);let o=await $(n,Pt,{label:Pt,expected:"file"}),a=i0(),s=wk("sha256").update(e).digest("hex"),c=i.exists&&i.sha256?await vk(n,a,i.sha256,s):null,l=c!==null,d=c?.candidate??`.comet/config.yaml.${a}.next`,u=hm.join(n,...d.split("/")),p=c?.quarantine??null;try{if(await we(u,e,{containedRoot:n,exclusive:!0}),await r.beforeCommit?.(),await kl(n,i),await $(n,d,{label:"project config candidate",expected:"file"}),i.exists){if(!p)throw new Error("Project config write transaction was not created");let m=hm.join(n,...p.split("/"));if(await $(n,Pt,{label:Pt,expected:"file"}),(await $(n,p,{label:"project config quarantine",expected:"file"})).exists)throw new Error("Project config quarantine already exists");await bk.rename(o.target,m);let{bytes:h}=await O(n,p,en,{label:"project config quarantine"});if(wk("sha256").update(h).digest("hex")!==i.sha256)throw new Error("Project config changed before final publish; successor was preserved")}else if(o.exists)throw new Error("Project config changed before final publish; successor was preserved");await r.beforePublish?.(),await $(n,d,{label:"project config candidate",expected:"file"});try{await hl(u,o.target)}catch(m){throw new Error("Project config final publish failed; successor was preserved",{cause:m})}let f=await kr(n);if(!f.exists||f.sha256!==s)throw new Error("Project config changed during final publish; successor was preserved");l&&(await bl(n,{ownerId:a}),l=!1)}catch(f){if(l)try{await bl(n,{ownerId:a})&&(l=!1)}catch{}throw f}finally{l||await o0(n,d).catch(()=>!1)}}async function o0(t,e){let r=await $(t,e,{label:e,expected:"file"});return r.exists?(await bk.unlink(r.target),!0):!1}async function kk(t,e,r,n={}){await Sl(t,Ji(e,r),n)}async function gm(t,e,r={}){let n=await eo(t,{allowPartialProject:!0,allowMissingNativeFields:!0}),i=xa(n.document?.value??{},e),o=e.native?.language==="zh-CN"||e.classic?.language==="zh-CN"?"zh-CN":"en";await kk(t,i,o,{...r,expectedIdentity:r.expectedIdentity??n.identity})}var ro=A(()=>{"use strict";Ct();ge();qe();Q();mm()});import Ae from"path";function _k(t,e){let r=Ae.relative(t,e);return r===""||!Ae.isAbsolute(r)&&r!==".."&&!r.startsWith(`..${Ae.sep}`)}function w0(t,e){let r=Ae.isAbsolute(e)?Ae.resolve(e):Ae.resolve(t,e),n=Ae.relative(Ae.resolve(t),r);return n===""||Ae.isAbsolute(n)||n===".."||n.startsWith(`..${Ae.sep}`)?null:n.replaceAll("\\","/")}function jk(t){return process.platform==="win32"?t.toLowerCase():t}async function mn(t,e,r=[]){let n=Ae.isAbsolute(e)?Ae.resolve(e):Ae.resolve(t,e),i=Ae.resolve(t);if(!_k(i,n)||r.some(c=>_k(Ae.resolve(c),n)))return null;let o=w0(t,e);if(!o)return null;let s=(await v0(t)).allow_paths.find(c=>{let l=jk(o),d=jk(c);return l===d||l.startsWith(`${d}/`)});return s?`${o} (configured Hook allow path: ${s})`:null}var v0,Oa=A(()=>{"use strict";yr();qe();v0=ye("hookWritePolicy",async t=>(await Re(t))?.hook??{allow_paths:[]})});import{AsyncLocalStorage as b0}from"node:async_hooks";import{performance as Cl}from"node:perf_hooks";function bm(t=0){k0+=1,S0+=t;let e=N0.getStore();e&&(e.gitCommands+=1,e.gitDurationMs+=t)}function Nr(t){let e=Cl.now();try{return t()}finally{bm(Cl.now()-e)}}async function Ik(t){let e=Cl.now();try{return await t()}finally{bm(Cl.now()-e)}}var k0,S0,N0,no=A(()=>{"use strict";k0=0,S0=0,N0=new b0});import{spawn as km}from"node:child_process";import{existsSync as Tk}from"node:fs";import Jn from"node:path";function Sm(t,e){let r=e.toLowerCase();return Object.entries(t).find(([n,i])=>n.toLowerCase()===r&&i!==void 0)?.[1]}function R0(t){let e=(Sm(t,"PATHEXT")??".COM;.EXE;.BAT;.CMD").split(";").map(r=>r.trim().toLowerCase()).filter(Boolean);return[...new Set([...e,".ps1"])]}function A0(t,e,r){let i=Jn.win32.isAbsolute(t)||/[\\/]/u.test(t)?[""]:(Sm(e,"PATH")??"").split(Jn.delimiter).map(s=>s.trim().replace(/^"(.*)"$/u,"$1")).filter(Boolean),a=Jn.win32.extname(t)?[t]:R0(e).map(s=>`${t}${s}`);return i.flatMap(s=>a.map(c=>s?Jn.join(s,c):Jn.resolve(r,c)))}function io(t,e,r){return A0(t,e,r).find(n=>Tk(n))??t}function _0(t){let e=Sm(t,"SystemRoot");if(e){let r=Jn.join(e,"System32","WindowsPowerShell","v1.0","powershell.exe");if(Tk(r))return r}return"powershell.exe"}function Ma(t){if(t.some(e=>P0.test(e)))throw new Error("Windows batch check arguments must not contain shell syntax")}function j0(t,e,r){let n=Buffer.from(JSON.stringify({command:t,arguments:[...e]}),"utf8").toString("base64"),i=Buffer.from(C0,"utf16le").toString("base64");return km(_0(r.env),["-NoLogo","-NoProfile","-NonInteractive","-InputFormat","None","-OutputFormat","Text","-ExecutionPolicy","Bypass","-EncodedCommand",i],{cwd:r.cwd,env:{...r.env,COMET_COMMAND_PAYLOAD:n},shell:!1,windowsHide:!0,detached:!1,stdio:["ignore","pipe","pipe"]})}function Nm(t,e,r){let n=r.env??process.env;if(process.platform!=="win32")return km(t,[...e],{cwd:r.cwd,env:n,shell:!1,windowsHide:!0,detached:!0,stdio:["ignore","pipe","pipe"]});let i=io(t,n,r.cwd),o=Jn.win32.extname(i).toLowerCase();return x0.has(o)&&Ma(e),E0.has(o)?j0(i,e,{cwd:r.cwd,env:n}):km(i,[...e],{cwd:r.cwd,env:n,shell:!1,windowsHide:!0,detached:!1,stdio:["ignore","pipe","pipe"]})}var E0,x0,P0,C0,La=A(()=>{"use strict";E0=new Set([".bat",".cmd",".ps1"]),x0=new Set([".bat",".cmd"]),P0=/[&|<>()^%"!\r\n]/u,C0=["$ProgressPreference = 'SilentlyContinue'","$encoded = $env:COMET_COMMAND_PAYLOAD","Remove-Item Env:COMET_COMMAND_PAYLOAD -ErrorAction SilentlyContinue","$json = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($encoded))","$payload = ConvertFrom-Json $json","$commandArgs = @($payload.arguments)","& $payload.command @commandArgs","if ($null -eq $LASTEXITCODE) { if ($?) { exit 0 } else { exit 1 } }","exit $LASTEXITCODE"].join("; ")});import{execFile as I0,execFileSync as T0}from"node:child_process";import Da from"node:path";async function hn(t,e,r={}){let n=r.timeoutMs??$k,i=r.maxBufferBytes??Ok;if(!Number.isSafeInteger(n)||n<1||!Number.isSafeInteger(i)||i<1)throw new Error("External command limits must be positive integers");let o=Da.resolve(r.cwd??process.cwd()),a=r.env??process.env,s=process.platform==="win32"?io(t,a,o):t,c=process.platform==="win32"&&/\.(?:bat|cmd)$/iu.test(s);c&&Ma(e);let l=()=>new Promise((d,u)=>{let p=!1,f=I0(s,[...e],{cwd:o,env:a,encoding:"utf8",maxBuffer:i,windowsHide:!0,shell:c},(w,y,v)=>{p||(p=!0,clearTimeout(h),r.signal?.removeEventListener("abort",g),w?u(new Er(t,e,v.trim(),{cause:w,timedOut:Mk(w)})):d(y))}),m=w=>{p||(p=!0,clearTimeout(h),r.signal?.removeEventListener("abort",g),f.kill("SIGKILL"),f.stdin?.destroy(),f.stdout?.destroy(),f.stderr?.destroy(),f.unref(),u(new Er(t,e,"",{timedOut:w})))},g=()=>m(!1),h=setTimeout(()=>m(!0),n);r.signal?.addEventListener("abort",g,{once:!0}),r.signal?.aborted&&g(),f.stdin?.end(r.input)});return/^(?:git|git\.exe)$/iu.test(Da.win32.basename(t))?Ik(l):l()}function Mk(t){return t instanceof Error&&(t.code==="ETIMEDOUT"||t.killed===!0&&t.signal==="SIGTERM")}function Lk(t,e,r={}){let n=r.timeoutMs??$k,i=r.maxBufferBytes??Ok;if(!Number.isSafeInteger(n)||n<1)throw new Error("External command timeout must be a positive integer");if(!Number.isSafeInteger(i)||i<1)throw new Error("External command max buffer must be a positive integer");let o=Da.resolve(r.cwd??process.cwd()),a=r.env??process.env,s=process.platform==="win32"?io(t,a,o):t,c=Da.win32.extname(s).toLowerCase(),l=c===".bat"||c===".cmd";process.platform==="win32"&&l&&Ma(e);try{let d=()=>T0(s,[...e],{cwd:o,env:a,...r.input!==void 0?{input:r.input}:{},encoding:"utf8",stdio:[r.input===void 0?"ignore":"pipe","pipe","pipe"],timeout:n,maxBuffer:i,windowsHide:!0,shell:process.platform==="win32"&&l});return/^(?:git|git\.exe)$/iu.test(Da.win32.basename(t))?Nr(d):d()}catch(d){let u=typeof d.stderr=="string"?d.stderr.trim():Buffer.isBuffer(d.stderr)?d.stderr.toString("utf8").trim():"";throw new Er(t,e,u,{cause:d,timedOut:Mk(d)})}}var $k,Ok,Er,Ba=A(()=>{"use strict";no();La();$k=6e4,Ok=8*1024*1024;Er=class extends Error{constructor(r,n,i,o){super(`${r} ${n.join(" ")} failed${i?`: ${i}`:""}`,o);this.command=r;this.args=n;this.stderr=i;this.name="ExternalCommandError",this.timedOut=o?.timedOut===!0}command;args;stderr;timedOut}});import{createHash as xm,randomUUID as $0}from"node:crypto";import{promises as tt}from"node:fs";import O0 from"node:os";import Ge from"node:path";async function Em(t,e){let r=await tt.lstat(t,{bigint:!0});if(!r.isFile()||r.isSymbolicLink()||r.size>BigInt(e))throw new Error("Invalid process probe cache");let n=await tt.readFile(t),i=await tt.lstat(t,{bigint:!0});if(r.ino!==i.ino||r.ctimeNs!==i.ctimeNs||r.size!==i.size)throw new Error("Process probe cache changed");return n}async function Fk(t){try{let e=JSON.parse((await Em(Ge.join(t,"probe.json"),4096)).toString("utf8"));if(!/^probe-[a-f0-9-]+\.exe$/u.test(e.file??""))return null;let r=Ge.join(t,e.file),n=await Em(r,65536);return xm("sha256").update(n).digest("hex")===e.hash?r:null}catch{return null}}async function D0(t,e){let r,n=$0(),i=Ge.join(t,`probe-${n}.cs`),o=Ge.join(t,`probe-${n}.exe`),a=Ge.join(t,`probe-${n}.json`);try{if(await tt.mkdir(t,{recursive:!0,mode:448}),(await tt.lstat(t)).isSymbolicLink())return null;r=await tt.open(Ge.join(t,"prepare.lock"),"wx",384);let s=await Fk(t);if(s)return s;await tt.writeFile(i,Bk,{flag:"wx",mode:384});let c;for(let d of["Framework64","Framework"]){let u=Ge.join(e,"Microsoft.NET",d,"v4.0.30319","csc.exe");try{await tt.access(u),c=u;break}catch{}}if(!c)return null;await hn(c,["/nologo","/target:exe","/platform:anycpu",`/out:${o}`,i],{timeoutMs:1500,maxBufferBytes:4096});let l=xm("sha256").update(await Em(o,65536)).digest("hex");return await tt.writeFile(a,JSON.stringify({file:Ge.basename(o),hash:l}),{flag:"wx",mode:384}),await tt.rename(a,Ge.join(t,"probe.json")),o}catch{return null}finally{await tt.unlink(i).catch(()=>{}),await tt.unlink(a).catch(()=>{}),r&&(await r.close().catch(()=>{}),await tt.unlink(Ge.join(t,"prepare.lock")).catch(()=>{}))}}async function Dk(t,e,r){try{let n=await hn(Ge.join(e,"System32","wbem","WMIC.exe"),["process","where",`processid=${t}`,"get","creationdate","/value"],{timeoutMs:300,maxBufferBytes:4096,signal:r}),i=/^CreationDate=(\S+)/mu.exec(n);if(i)return`win32-wmic:${i[1]}`}catch{}if(r.aborted)return null;try{let i=(await hn(Ge.join(e,"System32","WindowsPowerShell","v1.0","powershell.exe"),["-NoLogo","-NoProfile","-NonInteractive","-Command",`(Get-Process -Id ${t} -ErrorAction Stop).StartTime.ToUniversalTime().Ticks.ToString()`],{timeoutMs:1e3,maxBufferBytes:4096,signal:r})).trim();return/^\d+$/u.test(i)?`win32-ps:${i}`:null}catch{return null}}function B0(t,e){let r=Rl.get(t);if(r&&performance.now()<r.retryAfter)return r.promise;let n={promise:D0(t,e),retryAfter:1/0};return Rl.set(t,n),n.promise.then(i=>{Rl.get(t)===n&&(i?Rl.delete(t):n.retryAfter=performance.now()+L0)}),n.promise}async function Kk(t,e={}){if(!Number.isSafeInteger(t)||t<=0)return null;let r=e.systemRoot??process.env.SystemRoot??"C:\\Windows",n=Ge.join(e.cacheRoot??Ge.join(O0.tmpdir(),"comet-process-identity"),M0),i=async l=>{if(!l)return null;try{let u=(await hn(l,[String(t)],{timeoutMs:1e3,maxBufferBytes:4096})).trim();return/^\d+$/u.test(u)?`win32-ps:${u}`:null}catch{return null}},o=await Fk(n);if(o){let l=await i(o);return l||Dk(t,r,new AbortController().signal)}let a=B0(n,r),s=new AbortController,c=l=>{if(!l)throw new Error("Probe unavailable");return l};try{return await Promise.any([a.then(i).then(c),Dk(t,r,s.signal).then(c)])}catch{return null}finally{s.abort()}}var Bk,M0,L0,Rl,Hk=A(()=>{"use strict";Ba();Bk=`using System;
using System.Runtime.InteropServices;
class CometProcessIdentity {
[DllImport("kernel32.dll")] static extern IntPtr OpenProcess(uint access, bool inherit, int pid);
[DllImport("kernel32.dll")] static extern bool GetProcessTimes(IntPtr process, out long creation, out long exit, out long kernel, out long user);
[DllImport("kernel32.dll")] static extern bool CloseHandle(IntPtr handle);
static int Main(string[] args) {
int pid; if(args.Length != 1 || !int.TryParse(args[0], out pid) || pid <= 0) return 1;
IntPtr handle=OpenProcess(0x1000, false, pid); if(handle == IntPtr.Zero) return 1;
try { long creation, exit, kernel, user; if(!GetProcessTimes(handle,out creation,out exit,out kernel,out user)) return 1;
Console.WriteLine(DateTime.FromFileTimeUtc(creation).Ticks.ToString(System.Globalization.CultureInfo.InvariantCulture)); return 0;
} finally { CloseHandle(handle); }
}
}`,M0=xm("sha256").update(Bk).digest("hex"),L0=1e4,Rl=new Map});import{promises as Wk}from"node:fs";function K0(t){let e=Cm.get(t);if(e){if(Date.now()-e.at>F0){Cm.delete(t);return}return e.value}}async function Yn(t){if(t===process.pid&&Pm!==null)return Pm;let e=K0(t);if(e!==void 0)return e;let r=Al.get(t);r||(r=H0(t),Al.set(t,r));let n=await r;return Al.get(t)===r&&Al.delete(t),t===process.pid&&n!==null&&(Pm=n),n===null&&Cm.set(t,{value:null,at:Date.now()}),n}async function H0(t){if(!Number.isSafeInteger(t)||t<=0)return null;try{if(process.platform==="linux"){let[e,r]=await Promise.all([Wk.readFile(`/proc/${t}/stat`,"utf8"),Wk.readFile("/proc/sys/kernel/random/boot_id","utf8")]),n=e.slice(e.lastIndexOf(")")+2).trim().split(/\s+/u)[19];return/^\d+$/u.test(n??"")?`linux:${r.trim()}:${n}`:null}if(process.platform==="win32")return await Kk(t);if(process.platform==="darwin"){let e=(await hn("/bin/ps",["-p",String(t),"-o","lstart="],{timeoutMs:5e3,maxBufferBytes:4096,env:{...process.env,LC_ALL:"C",TZ:"UTC0"}})).trim();return e?`darwin:${e}`:null}}catch{}return null}function _l(t){let e=t.indexOf(":");return e===-1?"":t.slice(0,e)}async function Fa(t,e){if(!Number.isSafeInteger(t)||t<=0)return"alive";try{process.kill(t,0)}catch(n){if(n.code==="ESRCH")return"dead"}if(!e)return"unknown";let r=await Yn(t);return r===e?"alive":r===null||_l(r)!==_l(e)&&Vk.has(_l(r))&&Vk.has(_l(e))?"unknown":"dead"}var Pm,F0,Cm,Al,Vk,Ka=A(()=>{"use strict";Ba();Hk();Pm=null,F0=1e4,Cm=new Map,Al=new Map;Vk=new Set(["win32-wmic","win32-ps"])});var Il=A(()=>{"use strict"});var Uk=A(()=>{"use strict"});var _m=A(()=>{"use strict";Il()});var Jk=A(()=>{"use strict";Il();_m()});function eO(t){let e=t?.code;return e==="ENOENT"||e==="ENOTDIR"}function tO(t){let e=(0,Yk.parseDocument)(t,{uniqueKeys:!0});if(e.errors.length>0)throw new Error(`Invalid global Comet config: ${e.errors[0].message}`);let r=e.toJS();if(r==null)return{};if(typeof r!="object"||Array.isArray(r))throw new Error("Invalid global Comet config: root must be a mapping");return r}function Qk(t){if(t.native?.pending_root_move)throw new Error("Global Comet config cannot contain native.pending_root_move");let e=t.native?(({pending_root_move:r,...n})=>n)(t.native):void 0;return{...t,schema:"comet.global.v1",...e?{native:e}:{}}}function rO(t){let e=zt(JSON.stringify({...t,schema:"comet.project.v1"})).config;if(!e)throw new Error("Invalid global Comet config: workflow template is incomplete");return Qk(e)}function nO(t){let e=zt(t,{allowPartialProject:!0,allowMissingNativeFields:!0});if(!e.native&&!e.classic)return null;let r=e.native?"native":"classic",n=e.native?.language??e.classic?.language??"en",i=ol(e.native?.artifact_root??"docs",n);return{schema:"comet.global.v1",default_workflow:r,workflows:[r],ambient_resume:e.ambient_resume,...e.native?{native:{...i.native,...e.native}}:{},...e.classic?{classic:e.classic}:{}}}function Zk(t){let e=tO(t);if(Object.keys(e).length===0)return null;if(e.schema===void 0)return nO(t);if(e.schema!=="comet.global.v1")throw new Error("Unsupported Comet global schema");return rO(e)}async function jm(t){try{let e=await O(t,Xk,en,{label:"global Comet config"});return Zk(e.bytes.toString("utf8"))}catch(e){if(eO(e))return null;throw e}}var Yk,Xk,Im=A(()=>{"use strict";Yk=Ce(Ne(),1);Ct();ge();Q();Xk=".comet/config.yaml"});var sY,eS=A(()=>{"use strict";Ct();Q();sY=4*1024*1024});import iO from"node:path";function $l(t){return iO.join(t,".comet","current-change.json")}function oO(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}function tS(t){return t===null||typeof t=="string"}function aO(t){let e;try{e=JSON.parse(t)}catch(r){throw new Error(`current change selection contains invalid JSON: ${r instanceof Error?r.message:String(r)}`,{cause:r})}if(!oO(e))throw new Error("current change selection must be a JSON object");if(e.version===1){if(typeof e.change!="string")throw new Error("legacy current change selection change must be a string");if(e.branch!==void 0&&!tS(e.branch))throw new Error("legacy current change selection branch must be a string or null");return{selection:{schema:Tl,workflow:"classic",change:e.change,branch:e.branch??null},legacy:!0}}if(e.schema!==Tl)throw new Error(`current change selection schema must be ${Tl}`);if(e.workflow!=="native"&&e.workflow!=="classic")throw new Error("current change selection workflow must be native or classic");if(typeof e.change!="string")throw new Error("current change selection change must be a string");if(!tS(e.branch))throw new Error("current change selection branch must be a string or null");if(e.workflow==="native"&&e.branch!==null)throw new Error("Native current change selection branch must be null");return{selection:e,legacy:!1}}async function Xn(t){let e;try{let n=$l(t),{bytes:i}=await Zi(n,rS,{label:"current change selection"});e=i.toString("utf8")}catch(n){if(n.code==="ENOENT")return{status:"missing"};throw new Error(`cannot read current change selection: ${n instanceof Error?n.message:String(n)}`,{cause:n})}return{status:"selected",...aO(e)}}var Tl,rS,Wa=A(()=>{"use strict";Aa();Tl="comet.selection.v2",rS=16*1024});var aS=A(()=>{"use strict";Il();Ct();Uk();Jk();ge();Im();Q();qe();ro();eS();Oa();Wa();mm();_m()});import{TextDecoder as sO}from"util";function sS(t){return{dev:t.dev,ino:t.ino,birthtime:t.birthtimeMs}}function cO(t,e){try{return new sO("utf-8",{fatal:!0}).decode(t.bytes)}catch(r){throw new Error(`${e} is not valid UTF-8`,{cause:r})}}async function Tm(t,e,r,n,i={}){try{let o=await O(t,e,r,{label:n,hooks:i.hooks});return{result:o,text:cO(o,n)}}catch(o){let a=o.code;if(a==="ENOENT"||a==="ENOTDIR")return null;throw o}}async function cS(t,e,r,n,i={}){return(await Tm(t,e,r,n,i))?.text??null}async function lS(t,e,r,n,i,o={}){if(Buffer.byteLength(r,"utf8")>n)throw new Error(`${i} exceeds ${n} bytes`);let a=await Tm(t,e,n,i),s=await $(t,e,{label:i,expected:"file"});await we(s.target,r,{containedRoot:s.projectRoot,beforeCommit:async()=>{await o.beforeCommit?.();let c=await Tm(t,e,n,i);if(!(!a&&!c)){if(!a||!c)throw new Error(`${i} changed before commit`);if(a.result.realPath!==c.result.realPath||!Y(sS(a.result.stat),sS(c.result.stat))||a.text!==c.text)throw new Error(`${i} changed before commit`)}}})}async function dS(t,e,r,n={}){let i=await $(t,e,{label:r,expected:"file"});return i.exists?_a(i.target,{containedRoot:i.projectRoot,beforeRemove:n.beforeRemove}):!1}var uS=A(()=>{"use strict";aS();Ra()});var hS={};PA(hS,{RUN_STATE_FILE:()=>ao,applyRunStateToDocument:()=>fS,readRunState:()=>Ol,removeRunState:()=>$m,runStateFromDocument:()=>Qn,writeRunState:()=>Ml});import lO from"path";function qa(t,e){let r=t[e];if(typeof r!="string"||r.length===0)throw new Error(`Invalid Run state: ${e} must be a non-empty string`);return r}function Va(t,e){let r=qa(t,e);if(lO.isAbsolute(r)||/^(?:[A-Za-z]:|[\\/]|~)/u.test(r)||r.split(/[\\/]/u).includes(".."))throw new Error(`Invalid Run state: ${e} must stay inside the change directory`);return r}function dO(t){let e=t.run_retries??"{}",r;try{r=typeof e=="string"?JSON.parse(e):e}catch(n){throw new Error("Invalid Run state: run_retries must be a JSON object",{cause:n})}if(!r||typeof r!="object"||Array.isArray(r))throw new Error("Invalid Run state: run_retries must be a JSON object");for(let n of Object.values(r))if(!Number.isInteger(n)||Number(n)<0)throw new Error("Invalid Run state: retry counts must be non-negative integers");return r}function Qn(t){if(!t.run_id)return null;let e=qa(t,"run_id"),r=qa(t,"skill"),n=qa(t,"skill_version"),i=qa(t,"skill_hash"),o=Va(t,"pending_ref"),a=Va(t,"trajectory_ref"),s=Va(t,"context_ref"),c=Va(t,"artifacts_ref"),l=Va(t,"checkpoint_ref"),d=Number(t.iteration);if(!Number.isInteger(d)||d<0)throw new Error("Invalid Run state: iteration must be a non-negative integer");if(t.orchestration!=="deterministic"&&t.orchestration!=="adaptive")throw new Error("Invalid Run state: orchestration must be deterministic or adaptive");if(t.run_status!=="running"&&t.run_status!=="waiting"&&t.run_status!=="completed"&&t.run_status!=="failed")throw new Error("Invalid Run state: run_status is invalid");return{runId:e,skill:r,skillVersion:n,skillHash:i,orchestration:t.orchestration,currentStep:pS(t,"current_step"),iteration:d,pending:pS(t,"pending"),pendingRef:o,trajectoryRef:a,contextRef:s,artifactsRef:c,checkpointRef:l,status:t.run_status,retries:dO(t)}}function fS(t,e){e?t.run_id=e.runId:delete t.run_id}function uO(t){return{runId:t.runId,skill:t.skill,skillVersion:t.skillVersion,skillHash:t.skillHash,orchestration:t.orchestration,currentStep:t.currentStep,iteration:t.iteration,pending:t.pending,pendingRef:t.pendingRef,trajectoryRef:t.trajectoryRef,contextRef:t.contextRef,artifactsRef:t.artifactsRef,checkpointRef:t.checkpointRef,status:t.status,retries:t.retries}}function pO(t){let e={run_id:t.runId,skill:t.skill,skill_version:t.skillVersion,skill_hash:t.skillHash,orchestration:t.orchestration,current_step:t.currentStep,iteration:t.iteration,pending:t.pending,pending_ref:t.pendingRef,trajectory_ref:t.trajectoryRef,context_ref:t.contextRef,artifacts_ref:t.artifactsRef,checkpoint_ref:t.checkpointRef,run_status:t.status,run_retries:JSON.stringify(t.retries)};return Qn(e)}async function Ol(t,e={}){let r=await cS(t,ao,mS,"Run state",e);if(r===null)return null;let n=JSON.parse(r);return pO(n)}async function Ml(t,e,r={}){await lS(t,ao,JSON.stringify(uO(e),null,2),mS,"Run state",r)}async function $m(t,e={}){await dS(t,ao,"Run state",e)}var pS,ao,mS,za=A(()=>{"use strict";uS();pS=(t,e)=>{let r=t[e];return r==null?null:String(r)};ao=".comet/run-state.json",mS=Number.MAX_SAFE_INTEGER});import{execFileSync as oM}from"node:child_process";function cM(t,e){try{return Nr(()=>oM("git",["-C",t,...e],{encoding:"utf8",stdio:["ignore","pipe","pipe"],timeout:aM,maxBuffer:sM,windowsHide:!0}))}catch(r){let n=typeof r.stderr=="string"?r.stderr.trim():Buffer.isBuffer(r.stderr)?r.stderr.toString("utf8").trim():"";throw new Um(t,e,n)}}function At(t,e){return cM(t,e).trim()}var aM,sM,Um,lt=A(()=>{"use strict";no();aM=3e4,sM=8*1024*1024,Um=class extends Error{constructor(r,n,i){super(`git ${n.join(" ")} failed${i?`: ${i}`:""}`);this.cwd=r;this.args=n;this.stderr=i;this.name="GitCommandError"}cwd;args;stderr}});function YM(t){return t.toLowerCase().startsWith(".env")}function Ul(t){let r=t.replaceAll("\\","/").split("/").filter(Boolean).map(n=>n.toLowerCase());return r.some(n=>YM(n))?"environment-file":r.some(n=>JM.has(n))?"credential-config":r.includes(".git")?"git-metadata":r.some(n=>UM.has(n))?"dependency-or-cache":r.join("/")===".comet/config.yaml"?"comet-config":r.join("/")===".comet/current-change.json"?"comet-selection":null}var UM,JM,Jl=A(()=>{"use strict";UM=new Set([".cache",".git",".gradle",".gnupg",".mypy_cache",".next",".npm",".pnpm-store",".pytest_cache",".ssh",".turbo",".venv",".yarn","__pycache__","node_modules","venv"]),JM=new Set([".git-credentials",".netrc",".npmrc",".pypirc","auth.json","credentials.json"])});var vn=A(()=>{"use strict";Ra()});import{createHash as XM}from"node:crypto";import{promises as jt}from"node:fs";import dt from"node:path";import{TextDecoder as QM}from"node:util";function th(t,e){let r=dt.relative(t,e);return r===""||!dt.isAbsolute(r)&&r!==".."&&!r.startsWith(`..${dt.sep}`)}function ZM(t){let e=dt.posix.normalize(t);if(t.length===0||t!==t.trim()||t.includes("\\")||Array.from(t).some(i=>{let o=i.codePointAt(0)??0;return o<=31||o===127})||dt.posix.isAbsolute(e)||/^(?:[A-Za-z]:|~)/u.test(t)||t.split("/").includes("..")||e!==t||e==="."||t.endsWith("/"))throw new Error(`Native artifact ref must be normalized and relative: ${t}`);let r=t.toLowerCase(),n=Ul(t);if(n||r==="runtime"||r.startsWith("runtime/"))throw new Error(`Native artifact ref is excluded as sensitive (${n??"native-runtime"}): ${t}`);return t}function eL(t){if(!Number.isSafeInteger(t)||t<1)throw new Error("Native artifact byte limit must be a positive integer");return t}function tL(t,e){return Y({...t,birthtime:t.birthtimeMs},{...e,birthtime:e.birthtimeMs})}function Yl(t,e){let r={...t,birthtime:t.birthtimeMs},n={...e,birthtime:e.birthtimeMs};return vr(r,n)?Y(r,n):Y(r,n)&&t.birthtimeMs===e.birthtimeMs&&t.ctimeMs===e.ctimeMs&&t.size===e.size}async function uN(t){let e=await jt.lstat(t);if(!e.isDirectory()||e.isSymbolicLink())throw new Error(`Native artifact parent must be a real directory: ${t}`);return{path:t,realPath:await jt.realpath(t),dev:e.dev,ino:e.ino,birthtimeMs:e.birthtimeMs}}async function rL(t,e){let r=dt.resolve(t),n=dt.resolve(e);if(!th(r,n))throw new Error("Native artifact path is outside its root");let i=[await uN(r)],o=r;for(let a of dt.relative(r,n).split(dt.sep).filter(Boolean)){o=dt.join(o,a);let s=await uN(o);if(!th(i[0].realPath,s.realPath))throw new Error(`Native artifact parent resolves outside its root: ${o}`);i.push(s)}return i}async function pN(t){for(let e of t){let r=await jt.lstat(e.path);if(!r.isDirectory()||r.isSymbolicLink()||!tL(e,r)||await jt.realpath(e.path)!==e.realPath)throw new Error(`Native artifact parent changed while reading: ${e.path}`)}}async function ne(t){let e=ZM(t.ref),r=t.maxBytes===null?null:eL(t.maxBytes??rh),n=dt.resolve(t.root,...e.split("/")),i=await rL(t.root,dt.dirname(n));await t.hooks?.afterParentChainCaptured?.();let o=await jt.lstat(n);if(!o.isFile()||o.isSymbolicLink())throw new Error(`Native artifact must be a regular file: ${e}`);if(r!==null&&o.size>r)throw new Error(`Native artifact exceeds ${r} bytes: ${e}`);let a=await jt.realpath(n);if(!th(i[0].realPath,a))throw new Error(`Native artifact resolves outside its root: ${e}`);let s=await jt.open(n,"r");try{let[c,l,d]=await Promise.all([s.stat(),jt.lstat(n),jt.realpath(n)]);if(await pN(i),!c.isFile()||!l.isFile()||l.isSymbolicLink()||d!==a||!Yl(o,c)||!Yl(c,l))throw new Error(`Native artifact changed while opening: ${e}`);await t.hooks?.afterOpen?.();let u=[],p=0,f=Buffer.allocUnsafe(r===null?64*1024:Math.min(64*1024,r+1));for(;;){let v=r===null?f.length:r+1-p,b=await s.read(f,0,Math.min(f.length,v),null);if(b.bytesRead===0)break;if(p+=b.bytesRead,r!==null&&p>r)throw new Error(`Native artifact exceeds ${r} bytes: ${e}`);u.push(Buffer.from(f.subarray(0,b.bytesRead)))}await t.hooks?.beforeFinalCheck?.();let[m,g,h]=await Promise.all([s.stat(),jt.lstat(n),jt.realpath(n)]);if(await pN(i),!g.isFile()||g.isSymbolicLink()||h!==a||!Yl(c,m)||!Yl(c,g))throw new Error(`Native artifact changed while reading: ${e}`);let w=Buffer.concat(u,p),y;try{y=new QM("utf-8",{fatal:!0}).decode(w)}catch(v){throw new Error(`Native artifact is not valid UTF-8: ${e}`,{cause:v})}return{ref:e,size:p,hash:t.includeHash===!1?null:XM("sha256").update(w).digest("hex"),text:y}}finally{await s.close()}}var rh,wn=A(()=>{"use strict";Jl();vn();rh=1024*1024});import{randomUUID as nL}from"crypto";import{promises as Ie}from"fs";import It from"path";function Xl(t,e){let r=It.relative(t,e);return r===""||!It.isAbsolute(r)&&r!==".."&&!r.startsWith(`..${It.sep}`)}function iL(t,e){return Y({...t,birthtime:t.birthtimeMs},{...e,birthtime:e.birthtimeMs})}function Ql(t,e){return Y({dev:t.dev,ino:t.ino,birthtime:t.birthtimeMs},{dev:e.dev,ino:e.ino,birthtime:e.birthtimeMs})}function oL(t,e){return Ql(t,e)&&t.birthtimeMs===e.birthtimeMs&&t.ctimeMs===e.ctimeMs&&t.mtimeMs===e.mtimeMs&&t.size===e.size}async function fN(t){let e=await Ie.lstat(t);if(!e.isDirectory()||e.isSymbolicLink())throw new Error(`Native atomic write parent must be a real directory: ${t}`);return{path:t,realPath:await Ie.realpath(t),dev:e.dev,ino:e.ino,birthtimeMs:e.birthtimeMs}}async function fo(t){for(let e of t){let r=await Ie.lstat(e.path);if(!r.isDirectory()||r.isSymbolicLink()||!iL(e,r)||await Ie.realpath(e.path)!==e.realPath)throw new Error(`Native atomic write parent changed before commit: ${e.path}`)}}async function aL(t,e,r){let[n,i]=await Promise.all([Ie.lstat(t),Ie.realpath(t),r?fo(r):Promise.resolve()]);if(!n.isFile()||n.isSymbolicLink()||!Ql(n,e)||r&&!Xl(r[0].realPath,i))throw new Error("Native atomic write temporary file changed after close");return n}async function sL(t,e){let r=It.resolve(t),n=It.resolve(e);if(!Xl(r,n))throw new Error(`Native atomic write parent is outside its managed root: ${e}`);let i=[await fN(r)],o=It.relative(r,n).split(It.sep).filter(Boolean),a=r;for(let s of o){await fo(i),a=It.join(a,s);try{await Ie.mkdir(a)}catch(l){if(l.code!=="EEXIST")throw l}let c=await fN(a);if(!Xl(i[0].realPath,c.realPath))throw new Error(`Native atomic write parent resolves outside its managed root: ${a}`);i.push(c)}return await fo(i),i}async function cL(t){let e;try{e=await Ie.open(t,"r"),await e.sync()}catch(r){let n=r.code;if(!["EACCES","EBADF","EINVAL","EISDIR","ENOTSUP","EPERM"].includes(n??""))throw r}finally{await e?.close()}}async function lL(t,e,r={}){let n=It.dirname(t),i=r.containedRoot?await sL(r.containedRoot,n):null;i||await Ie.mkdir(n,{recursive:!0});let o=It.join(n,`.${It.basename(t)}.${nL()}.tmp`),a,s,c;try{if(await r.beforeTemporaryOpen?.(),a=await Ie.open(o,"wx"),s=await a.stat(),i){let[l,d]=await Promise.all([Ie.lstat(o),Ie.realpath(o)]);if(await fo(i),!l.isFile()||l.isSymbolicLink()||!Ql(s,l)||!Xl(i[0].realPath,d))throw new Error("Native atomic write temporary file opened outside its managed parent")}if(typeof e=="string"?await a.writeFile(e,"utf8"):await a.writeFile(e),await a.sync(),c=await a.stat(),!Ql(s,c))throw new Error("Native atomic write temporary file changed while writing");if(await a.close(),a=void 0,await r.afterTemporaryClose?.(),!c)throw new Error("Native atomic write temporary file was not written");if(c=await aL(o,c,i),await r.beforeCommit?.(),i){await fo(i);let l=await Ie.lstat(o);if(!l.isFile()||l.isSymbolicLink()||!c||!oL(l,c))throw new Error("Native atomic write temporary file changed before commit")}r.exclusive?(await dl(o,t),await to(o)):await ll(o,t),await cL(n)}catch(l){if(await a?.close(),!i)await Ie.rm(o,{force:!0});else try{await fo(i),await Ie.rm(o,{force:!0})}catch{}throw l}}async function Rr(t,e,r={}){await lL(t,e,r)}async function Jt(t,e,r={}){await Rr(t,JSON.stringify(e,null,2)+`
`,r)}var ke=A(()=>{"use strict";ul();vn()});function pL(t,e){return nh[t][e]}function Zl(t){return hN.get(t.trim().toLocaleLowerCase("en-US"))??null}function ed(t,e={}){let r=["outcome","scope","nonGoals","acceptanceExamples"];return e.compact||r.push("constraints","decisions","openQuestions","verificationExpectations"),r.map(n=>`# ${pL(t,n)}
`).join(`
`)}var nh,dL,uL,hN,mN,mo=A(()=>{"use strict";nh={en:{outcome:"Outcome",scope:"Scope",nonGoals:"Non-goals",acceptanceExamples:"Acceptance examples",constraints:"Constraints and invariants",decisions:"Decisions",openQuestions:"Open questions",verificationExpectations:"Verification expectations"},"zh-CN":{outcome:"目标",scope:"范围",nonGoals:"非目标",acceptanceExamples:"验收示例",constraints:"约束与不变量",decisions:"决策",openQuestions:"待解决问题",verificationExpectations:"验证预期"}},dL={en:{verification:"Verification",currentResult:"Current result",acceptance:"Acceptance",checks:"Checks",blockers:"Blockers",risks:"Risks and skipped work",previousIterations:"Previous iterations",conclusion:"Conclusion"},"zh-CN":{verification:"验证",currentResult:"当前结果",acceptance:"验收",checks:"检查",blockers:"阻塞项",risks:"风险与跳过的工作",previousIterations:"之前的迭代",conclusion:"结论"}},uL={en:{acceptanceEvidence:"Acceptance evidence",commandsAndResults:"Commands and results",skippedChecks:"Skipped checks",specConsistency:"Spec consistency",knownLimitationsAndRisks:"Known limitations and risks",conclusion:"Conclusion"},"zh-CN":{acceptanceEvidence:"验收证据",commandsAndResults:"命令与结果",skippedChecks:"跳过的检查",specConsistency:"规格一致性",knownLimitationsAndRisks:"已知限制与风险",conclusion:"结论"}},hN=new Map,mN=new Map;for(let t of Object.keys(nh)){for(let[e,r]of Object.entries(nh[t]))hN.set(r.toLocaleLowerCase("en-US"),e);for(let[e,r]of Object.entries(dL[t]))mN.set(r.toLocaleLowerCase("en-US"),e);for(let[e,r]of Object.entries(uL[t]))mN.set(r.toLocaleLowerCase("en-US"),e)}});async function Yt(t){let e=(await br(t))?.config??null;return e?.native?e:null}async function rd(t){let e=await Yt(t);if(e?.native.pending_root_move)throw new Error(`Native root move ${e.native.pending_root_move.id} is incomplete; use comet native doctor --repair`)}var td,Tt=A(()=>{"use strict";ge();qe();ro();ke();se();td=il});import{AsyncLocalStorage as fL}from"async_hooks";import{randomUUID as vN}from"crypto";import{promises as ut}from"fs";import wN from"os";import ce from"path";function gL(t){if(!/^[a-z][a-z0-9-]*$/u.test(t))throw new Error(`Invalid Native lock name: ${t}`);return`${t}.lock`}function yL(t,e){if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`Invalid Native lock metadata: ${e}`);let r=t;if(typeof r.id!="string"||r.id.length===0||typeof r.pid!="number"||!Number.isSafeInteger(r.pid)||r.pid<1||typeof r.hostname!="string"||r.hostname.length===0||typeof r.createdAt!="string"||r.createdAt.length===0||typeof r.operation!="string"||r.operation.length===0||r.processIdentity!==void 0&&(typeof r.processIdentity!="string"||r.processIdentity.length===0))throw new Error(`Invalid Native lock metadata: ${e}`);return r}function bN(t){return{device:t.dev.toString(),inode:t.ino.toString(),size:t.size.toString(),birthtimeNs:t.birthtimeNs.toString(),ctimeNs:t.ctimeNs.toString(),mtimeNs:t.mtimeNs.toString()}}function id(t,e){let r={dev:t.device,ino:t.inode,birthtime:t.birthtimeNs},n={dev:e.device,ino:e.inode,birthtime:e.birthtimeNs};return vr(r,n)?Y(r,n):Y(r,n)&&t.size===e.size}function os(t,e){return id(t,e)&&t.size===e.size&&t.birthtimeNs===e.birthtimeNs&&t.ctimeNs===e.ctimeNs&&t.mtimeNs===e.mtimeNs}function vL(t,e){return t.status!==e.status?!1:!t.owner||!t.identity||!e.owner||!e.identity?t.owner===e.owner&&t.identity===e.identity:t.owner.id===e.owner.id&&os(t.identity,e.identity)}async function pt(t){let e,r;try{let n=await Zi(t,gN,{bigint:!0,label:"Native lock"});e=n.bytes,r=n.stat}catch(n){if(n.code==="ENOENT")return null;throw n instanceof Ee?n.reason==="too-large"?new Error(`Native lock metadata exceeds ${gN} bytes: ${t}`,{cause:n}):n.reason==="not-regular-file"?new Error(`Native lock must be a regular file: ${t}`,{cause:n}):new Error(`Native lock changed while reading: ${t}`,{cause:n}):n}return{file:t,owner:yL(JSON.parse(e.toString("utf8")),t),identity:bN(r)}}async function wL(t){return(await pt(t))?.owner??null}async function oh(t){if(!t)return{status:"missing",owner:null,identity:null};if(t.owner.hostname!==wN.hostname())return{status:"unknown",owner:t.owner,identity:t.identity};let e=await Fa(t.owner.pid,t.owner.processIdentity);return{status:e==="alive"?"active":e==="dead"?"stale":"unknown",owner:t.owner,identity:t.identity}}async function bL(t,e){try{await ut.lstat(e);return}catch(r){if(r.code!=="ENOENT")throw r}try{await ut.rename(t,e)}catch(r){if(r.code!=="ENOENT")throw r}}async function od(t,e){let r=await pt(t.file);if(!r)return"missing";if(r.owner.id!==t.owner.id)throw new Error(`Native lock ownership changed: ${t.file}`);if(!os(r.identity,t.identity))throw new Error(`Native lock identity changed: ${t.file}`);await ut.mkdir(e,{recursive:!0});let n=ce.join(e,`${ce.basename(t.file)}.${t.owner.id}.${vN()}.removed`);try{await ut.rename(t.file,n)}catch(o){if(o.code==="ENOENT")return"missing";throw o}let i=await pt(n);if(!i||i.owner.id!==t.owner.id||!id(i.identity,t.identity))throw await bL(n,t.file),new Error(`Native lock changed before quarantine: ${t.file}`);return await ut.rm(n,{force:!0}),"removed"}async function kN(t){let e=await Yn(process.pid);return{id:vN(),pid:process.pid,hostname:wN.hostname(),createdAt:new Date().toISOString(),operation:t,...e===null?{}:{processIdentity:e}}}async function SN(t,e){let r;try{r=await ut.open(t,"wx")}catch(o){if(o.code==="EEXIST"){let a=await wL(t);throw new Error(`Native lock is already held: ${t}${a?` by pid ${a.pid} for ${a.operation}`:""}`,{cause:o})}throw o}let n;try{await r.writeFile(JSON.stringify(e,null,2)+`
`,"utf8"),await r.sync(),n=bN(await r.stat({bigint:!0}))}finally{await r.close()}let i=await pt(t);if(!n||!i||i.owner.id!==e.id||!id(i.identity,n))throw new Error(`Native lock changed after write: ${t}`);return i.identity}async function kL(t,e){let r=await te(t.runtimeDir,t.locksDir);await ut.mkdir(r,{recursive:!0});let n=await te(t.runtimeDir,ce.join(r,ih));await ut.mkdir(n,{recursive:!0});let i=await kN(e),o=ce.join(n,`.${i.id}.tmp`),a=ce.join(n,`${i.id}.claim`);try{let s=await SN(o,i);await ut.rename(o,a);let c=await pt(a);if(!c||!id(s,c.identity))throw new Error(`Native lock coordinator claim changed while publishing: ${a}`);return{file:a,nativeRoot:t.runtimeDir,locksDir:r,owner:i,identity:c.identity}}finally{await ut.rm(o,{force:!0})}}async function SL(t){let e=ce.dirname(t.file),r=!1,n=ce.basename(t.file);for(let i of await ut.readdir(e,{withFileTypes:!0})){if(!i.isFile()||i.isSymbolicLink()||!i.name.endsWith(".claim"))continue;let o=ce.join(e,i.name);if(ce.resolve(o)!==ce.resolve(t.file))try{let a=await pt(o),s=await oh(a);if(s.status==="missing")continue;let c=await pt(o);if(!c)continue;if(!a||c.owner.id!==a.owner.id||!os(c.identity,a.identity)){i.name<n&&(r=!0);continue}if(s.status==="stale"&&a){await od(a,e);continue}i.name<n&&(r=!0)}catch{i.name<n&&(r=!0)}}return r}async function NN(t){let e=await pt(t.file);if(e){if(e.owner.id!==t.owner.id||!os(e.identity,t.identity))throw new Error(`Native lock coordinator ownership changed: ${t.file}`);await od(e,ce.dirname(t.file))}}async function NL(t,e){let r=Date.now()+mL;for(;;){let n=await kL(t,e);if(!await SL(n))return n;if(await NN(n),Date.now()>=r)throw new Error(`Native lock coordinator is busy: ${t.locksDir}`);await new Promise(i=>setTimeout(i,2+Math.floor(Math.random()*7)))}}async function EL(t){let e=nd.get(t)??Promise.resolve(),r,n=new Promise(o=>{r=o}),i=e.then(()=>n);return nd.set(t,i),await e,()=>{r(),nd.get(t)===i&&nd.delete(t)}}async function ah(t,e,r){let n=ce.resolve(t.locksDir),i=yN.getStore();if(i?.has(n))return r();let o=await EL(n);try{let a=await NL(t,e),s=new Map(i??[]);return s.set(n,a),await yN.run(s,async()=>{try{return await r()}finally{await NN(a)}})}finally{o()}}async function EN(t,e,r){return ah(t,`acquire ${e}`,async()=>{let n=await te(t.runtimeDir,t.locksDir);await ut.mkdir(n,{recursive:!0});let i=await te(t.runtimeDir,ce.join(n,gL(e))),o=await kN(r),a=await SN(i,o);return{file:i,nativeRoot:t.runtimeDir,locksDir:n,owner:o,identity:a}})}async function xN(t){await pt(t.file)&&await ah({runtimeDir:t.nativeRoot,locksDir:t.locksDir},`release ${ce.basename(t.file)}`,async()=>{let e=await pt(t.file);if(!e)return;if(e.owner.id!==t.owner.id)throw new Error(`Native lock ownership changed: ${t.file}`);if(!os(e.identity,t.identity))throw new Error(`Native lock identity changed: ${t.file}`);let r=ce.join(t.locksDir,ih);await od(e,r)})}function xL(t,e=Date.now()){if(!t)return 0;let r=Date.parse(t.createdAt);return Number.isFinite(r)?Math.max(0,e-r):Number.POSITIVE_INFINITY}async function PN(t){return oh(await pt(t))}async function CN(t,e,r,n={}){return ah(t,`take over ${ce.basename(e)}`,async()=>{let i=await te(t.runtimeDir,t.locksDir),o=await te(t.runtimeDir,e);if(ce.resolve(ce.dirname(o))!==ce.resolve(i))throw new Error(`Native lock takeover target is outside the lock directory: ${e}`);let a=await pt(o),s=await oh(a);if(s.status==="missing")return{status:"missing"};if(r&&!vL(r,s))return{status:"changed",diagnosis:s};let c=n.allowAgedUnknown===!0&&s.status==="unknown"&&xL(a?.owner??null)>=hL;if(s.status!=="stale"&&!c||!a)return{status:"changed",diagnosis:s};let l=ce.join(i,ih);return await od(a,l)==="removed"?{status:"removed",owner:a.owner}:{status:"missing"}})}var gN,ih,mL,hL,yN,nd,sh=A(()=>{"use strict";Aa();Ka();se();vn();gN=16*1024,ih=".coordinator",mL=5e3,hL=900*1e3,yN=new fL,nd=new Map});import{createHash as PL}from"node:crypto";function ai(t){return t.replaceAll(`\r
`,`
`).replaceAll("\r",`
`)}function go(t){return PL("sha256").update(ai(t)).digest("hex")}function ph(t,e){if(!t||typeof t!="object"||Array.isArray(t))throw new D(`${e} must be an object`);return t}function IN(t,e,r){let n=Object.keys(t).filter(i=>!e.has(i));if(n.length>0)throw new D(`${r} has unknown field(s): ${n.join(", ")}`)}function fh(t,e){if(typeof t!="string"||t.trim().length===0)throw new D(`${e} must be a non-empty string`);return t.trim()}function AN(t,e){if(t!==void 0){if(typeof t!="string")throw new D(`${e} must be text`);return ai(t).replace(/^\n+|\n+$/gu,"")}}function ad(t,e){let r=fh(t,e).toLowerCase();if(!RL.test(r))throw new D(`${e} must be a SHA-256 hash`);return r}function _N(t,e,r){let n=ph(t,e),i=Object.entries(n);if(i.length>RN)throw new D(`${e} must contain at most ${RN} entries`);let o={};for(let[a,s]of i){if(dh(a,`${e} ID`)!==a)throw new D(`${e} ID must be normalized: ${a}`);s===null&&r?o[a]=null:o[a]=ad(s,`${e}.${a}`)}return o}function dh(t,e){let r=fh(t,e);if(!jN.test(r))throw new D(`${e} is not a valid stable requirement ID`);return r}function AL(t,e){let r=fh(t,e);if(!CL.test(r))throw new D(`${e} is not a valid capability ID`);return r}function _L(t,e){let r=`Native delta operations[${e}]`,n=ph(t,r);IN(n,new Set(["id","operation","to_id","title","body","expected_hash"]),r);let i=dh(n.id,`${r}.id`),o=n.operation;if(!["add","modify","remove","rename"].includes(String(o)))throw new D(`${r}.operation is invalid`);let a=o,s=n.to_id===void 0?void 0:dh(n.to_id,`${r}.to_id`),c=AN(n.title,`${r}.title`),l=AN(n.body,`${r}.body`),d=n.expected_hash===void 0?void 0:ad(n.expected_hash,`${r}.expected_hash`);if(a==="add"){if(s!==void 0||d!==void 0||!l?.trim())throw new D(`${r} add requires body and forbids to_id and expected_hash`)}else if(a==="modify"){if(s!==void 0||!d||!l?.trim())throw new D(`${r} modify requires body and expected_hash and forbids to_id`)}else if(a==="remove"){if(s!==void 0||c!==void 0||l!==void 0||!d)throw new D(`${r} remove requires expected_hash and forbids to_id, title, and body`)}else if(s===void 0||s===i||!d||l==="")throw new D(`${r} rename requires a different to_id and expected_hash`);return{id:i,operation:a,...s===void 0?{}:{to_id:s},...c===void 0?{}:{title:c},...l===void 0?{}:{body:l},...d===void 0?{}:{expected_hash:d}}}function jL(t){let e=ph(t,"Native delta");if(IN(e,new Set(["schema","capability","base_hash","base_version","legacy_hash","base_requirements","independent_requirements","operations"]),"Native delta"),e.schema!==ch)throw new D(`Native delta schema must be ${ch}`);let r=AL(e.capability,"Native delta capability"),n=ad(e.base_hash,"Native delta base_hash");if(!Number.isSafeInteger(e.base_version)||Number(e.base_version)<1)throw new D("Native delta base_version must be a positive integer");let i=e.legacy_hash===void 0?void 0:ad(e.legacy_hash,"Native delta legacy_hash"),o;e.base_requirements!==void 0&&(o=_N(e.base_requirements,"Native delta base_requirements",!1));let a=e.independent_requirements===void 0?void 0:_N(e.independent_requirements,"Native delta independent_requirements",!0);if(!Array.isArray(e.operations))throw new D("Native delta operations must be an array");let s=e.operations.map(_L),c=new Set;for(let[l,d]of s.entries()){let u=[d.id,...d.to_id===void 0?[]:[d.to_id]];for(let p of u){if(c.has(p))throw new D(`Native delta operations contain duplicate or overlapping requirement ID ${p} at ${l}`);c.add(p)}}if(a!==void 0){if(o===void 0)throw new D("Native delta independent_requirements requires base_requirements");for(let[l,d]of Object.entries(a)){if(c.has(l))throw new D(`Native delta requirement ${l} cannot be both addressed and independent`);let u=o[l];if(d===null?u!==void 0:u!==d)throw new D(`Native delta independent_requirements does not match baseline ${l}`)}}return{schema:ch,capability:r,base_hash:n,base_version:Number(e.base_version),...i===void 0?{}:{legacy_hash:i},...o===void 0?{}:{base_requirements:o},...a===void 0?{}:{independent_requirements:a},operations:s}}function IL(t){let e=(0,uh.parseDocument)(t,{uniqueKeys:!0});if(e.errors.length>0)throw new D(`Native delta is invalid YAML: ${e.errors[0].message}`);return e.toJS({mapAsMap:!1})}function as(t){return jL(typeof t=="string"?IL(t):t)}function TL(t){let e=/^\s{0,3}(#{1,6})\s+/u.exec(t);return e?e[1].length:null}function $L(t){let e=[],r=null;for(let[n,i]of t.entries()){let o=/^\s{0,3}(`{3,}|~{3,})(.*)$/u.exec(i.trimEnd());if(o){r?o[1][0]===r.marker&&o[1].length>=r.length&&o[2].trim().length===0&&(r=null):r={marker:o[1][0],length:o[1].length};continue}if(r)continue;let a=/^(\s{0,3})(#{2,6})\s+Requirement:\s*([^\s]+)(?:\s+(.*?))?\s*$/u.exec(i);if(!a)continue;let s=a[3];if(!jN.test(s))throw new D(`Native total Spec requirement ID is invalid: ${s}`);e.push({line:n,level:a[2].length,id:s,title:a[4]?.trim()??""})}return e}function oi(t){let e=ai(t),r=e.split(`
`),n=$L(r),i=[],o=new Set;for(let l of n){if(o.has(l.id))throw new D(`Native total Spec contains duplicate requirement ID ${l.id}`);o.add(l.id);let d=r.length;for(let u=l.line+1;u<r.length;u+=1){if(n.some(f=>f.line===u)){d=u;break}let p=TL(r[u]);if(p!==null&&p<=l.level){d=u;break}}i.push({start:l.line,end:d,marker:l})}let a=new Map;for(let l of i){let d=`${r.slice(l.start,l.end).join(`
`)}${l.end<r.length?`
`:""}`,u=r.slice(l.start+1,l.end).join(`
`).replace(/^\n/u,"").replace(/\n+$/u,"");a.set(l.marker.id,{id:l.marker.id,level:l.marker.level,title:l.marker.title,body:u,raw:d,startLine:l.start,endLine:l.end})}let s=[],c=0;for(let l of i)s.push(r.slice(c,l.start).join(`
`)),c=l.end;return s.push(r.slice(c).join(`
`)),{text:e,lines:r,requirements:a,legacyText:s.join(`
`)}}function mh(t){return go(t)}function Ar(t){return go(t)}function TN(t){let e=oi(t).legacyText;return go(e.split(`
`).filter(r=>r.trim().length>0).join(`
`).trim())}function $N(t,e){let r=oi(t),n=[];for(let i of e.operations){if(i.operation==="remove")continue;let o=i.operation==="rename"?i.to_id:i.id,a=r.requirements.get(o);if(!a)throw new D(`Native delta target Spec is missing requirement ${o} for ${i.operation}`);n.push(a.raw.trimEnd())}return n.length===0?"":`${n.join(`
`)}
`}function sd(t,e,r,n){let i=`${"#".repeat(t)} Requirement: ${e}${r?.trim()?` ${r.trim()}`:""}`,o=ai(n).replace(/\n+$/u,"");return[i,"",...o.split(`
`),"",""].join(`
`)}function lh(t){return t.operation==="rename"?[t.id,t.to_id]:[t.id]}function cd(t,e){if(t.operation==="rename"){if(!e)throw new D(`Rename target does not exist: ${t.id}`);return{id:t.to_id,level:e.level,title:t.title??e.title,body:t.body??e.body}}return{id:t.id,level:e?.level??2,title:t.title??e?.title,body:t.body??e?.body??""}}function OL(t,e,r){let n=oi(t),i=[...n.lines],o=n.requirements.get(e.id);if(!o)throw new D(`Requirement target disappeared: ${e.id}`);return i.splice(o.startLine,o.endLine-o.startLine,...r.split(`
`)),i.join(`
`)}function ML(t,e){let r=ai(t),n=r.length===0||r.endsWith(`
`)?"":`
`,i=`${r}${n}`;return`${i.endsWith(`
`)||i.length===0?i:`${i}
`}${e}`}function ON(t,e){if(t.operation==="add"||t.operation==="modify"){let o=e.requirements.get(t.id);if(!o)return!1;let a=cd(t,t.operation==="modify"?o:void 0);return o.raw===sd(a.level,a.id,a.title,a.body)}if(t.operation==="remove")return!1;let r=e.requirements.get(t.to_id),n=e.requirements.get(t.id);if(!r||n)return!1;let i=cd(t,{id:t.id,level:r.level,title:r.title,body:r.body,raw:r.raw,startLine:r.startLine,endLine:r.endLine});return r.raw===sd(i.level,i.id,i.title,i.body)}function LL(t,e){let r=e.requirements.get(t.id);if(t.operation==="add"){if(r)throw new D(`Add target already exists: ${t.id}`);return}if(!r)throw new D(`Native delta target does not exist: ${t.id}`);if(t.expected_hash!==mh(r.raw))throw new D(`Native delta ${t.operation} expected_hash does not match ${t.id}`);if(t.operation==="rename"&&e.requirements.has(t.to_id))throw new D(`Rename destination already exists: ${t.to_id}`)}function DL(t,e){if(t.base_requirements===void 0)return;let r=t.base_requirements,n=e.requirements;if(Object.keys(r).length!==n.size)throw new D("Native delta base_requirements must describe the complete total Spec baseline");for(let[i,o]of n)if(r[i]!==mh(o.raw))throw new D(`Native delta base_requirements does not match requirement ${i}`)}function BL(t,e){let r=TN(e.text);if(r!==go("")&&t.legacy_hash!==r)throw new D("Native delta modifying a legacy total Spec requires a matching legacy_hash")}function FL(t){let e=ai(t.baselineMarkdown),r=[],n=[];for(let o of t.delta.operations){let a=oi(e),s=a.requirements.get(o.id);if(t.allowAlreadyApplied&&ON(o,a)){n.push({id:o.id,operation:o.operation,status:"already-applied",targetIds:lh(o)});continue}if(o.operation==="add"){if(s)throw new ii([o.id],`Native delta add conflicts with existing requirement ${o.id}`);let c=cd(o,void 0);e=ML(e,sd(c.level,c.id,c.title,c.body))}else{if(!s)throw new ii([o.id],`Native delta ${o.operation} target does not exist: ${o.id}`);if(o.expected_hash!==mh(s.raw))throw new ii([o.id],`Native delta ${o.operation} conflicts with concurrent requirement ${o.id}`);let c=cd(o,s);if(o.operation==="rename"&&oi(e).requirements.has(o.to_id))throw new ii([o.id,o.to_id],`Native delta rename destination already exists: ${o.to_id}`);if(o.operation==="remove"){let l=[...oi(e).lines];l.splice(s.startLine,s.endLine-s.startLine),e=l.join(`
`)}else e=OL(e,s,sd(c.level,c.id,c.title,c.body))}r.push(...lh(o)),n.push({id:o.id,operation:o.operation,status:"changed",targetIds:lh(o)})}let i=ai(e);return{markdown:i,base_hash:t.delta.base_hash,result_hash:go(i),rebased:t.rebased,changedRequirementIds:[...new Set(r)],operationResults:n}}function MN(t){let e=oi(t.baselineMarkdown);if(go(e.text)!==t.delta.base_hash)throw new ii([t.delta.capability],`Native delta base hash does not match the current total Spec for ${t.delta.capability}`);BL(t.delta,e),DL(t.delta,e);for(let r of t.delta.operations)t.allowAlreadyApplied&&ON(r,e)||LL(r,e);return FL({baselineMarkdown:e.text,delta:t.delta,allowAlreadyApplied:t.allowAlreadyApplied??!1,rebased:!1})}var uh,ch,ho,CL,jN,RL,RN,D,ii,ld=A(()=>{"use strict";uh=Ce(Ne(),1),ch="comet.native.delta.v1",ho="delta.yaml",CL=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u,jN=/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u,RL=/^[a-f0-9]{64}$/iu,RN=512,D=class extends Error{code="native-delta-invalid";constructor(e){super(e),this.name="NativeDeltaValidationError"}},ii=class extends Error{code="native-delta-conflict";conflictIds;constructor(e,r){super(r),this.name="NativeDeltaConflictError",this.conflictIds=[...new Set(e)]}}});var Xt,_r,jr,dd=A(()=>{"use strict";Xt="comet.native.v3",_r="comet.native.v2",jr="comet.native.v1"});import KL from"node:path";function cs(t,e){if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`${e} must be a mapping`);return t}function FN(t,e,r){let n=Object.keys(t).filter(i=>!e.has(i));if(n.length>0)throw new Error(`${r} has unknown field(s): ${n.join(", ")}`)}function vo(t){if(!BN.test(t))throw new Error(`Invalid Native change name: ${t}`)}function KN(t){if(!BN.test(t))throw new Error(`Invalid Native capability id: ${t}`)}function HN(t,e){if(t.length===0||KL.isAbsolute(t)||/^(?:[A-Za-z]:|~|[\\/])/u.test(t)||t.split(/[\\/]/u).includes(".."))throw new Error(`${e} must stay inside the Native change`)}function JL(t,e){let r=cs(t,`spec_changes[${e}]`);if(FN(r,VL,`spec_changes[${e}]`),typeof r.capability!="string")throw new Error("spec change capability is required");if(KN(r.capability),r.operation!=="create"&&r.operation!=="replace"&&r.operation!=="remove")throw new Error(`Invalid spec operation for ${r.capability}`);let n=r.source,i=r.base_hash;if(n!==void 0&&typeof n!="string")throw new Error(`Spec source for ${r.capability} must be a string`);if(typeof n=="string"&&HN(n,`Spec source for ${r.capability}`),r.operation==="create"){if(!n)throw new Error(`Create spec ${r.capability} requires source`);if(i!==null)throw new Error(`Create spec ${r.capability} requires null base_hash`)}else if(r.operation==="replace"){if(!n)throw new Error(`Replace spec ${r.capability} requires source`);if(typeof i!="string"||!gh.test(i))throw new Error(`Replace spec ${r.capability} requires a SHA-256 base_hash`)}else{if(n!==void 0)throw new Error(`Remove spec ${r.capability} forbids source`);if(typeof i!="string"||!gh.test(i))throw new Error(`Remove spec ${r.capability} requires a SHA-256 base_hash`)}return{capability:r.capability,operation:r.operation,...typeof n=="string"?{source:n}:{},base_hash:i}}function YL(t){return/^\d{4}-\d{2}-\d{2}$/u.test(t)?new Date(`${t}T00:00:00.000Z`).toISOString().slice(0,10)===t:!1}function yh(t,e){if(FN(t,e,kn),typeof t.name!="string")throw new Error("Native change name is required");if(vo(t.name),t.language!=="en"&&t.language!=="zh-CN")throw new Error("Native change language must be en or zh-CN");if(typeof t.phase!="string"||!qL.has(t.phase))throw new Error("Native change phase is invalid");if(t.brief!=="brief.md")throw new Error("Native change brief must be brief.md");if(t.approval!==null&&!zL.has(t.approval))throw new Error("Native change approval is invalid");if(!Array.isArray(t.spec_changes))throw new Error("Native spec_changes must be an array");let r=t.spec_changes.map(JL),n=r.map(i=>i.capability).filter((i,o,a)=>a.indexOf(i)!==o);if(n.length>0)throw new Error(`Duplicate Native capability operation: ${[...new Set(n)].join(", ")}`);if(typeof t.verification_result!="string"||!GL.has(t.verification_result))throw new Error("Native verification_result is invalid");if(t.verification_report!==null&&typeof t.verification_report!="string")throw new Error("Native verification_report must be a string or null");if(typeof t.verification_report=="string"&&HN(t.verification_report,"Native verification_report"),typeof t.archived!="boolean")throw new Error("Native archived must be boolean");if(typeof t.created_at!="string"||!YL(t.created_at))throw new Error("Native created_at must be a valid YYYY-MM-DD date");if(t.run_id!==null&&(typeof t.run_id!="string"||t.run_id.length===0))throw new Error("Native run_id must be a non-empty string or null");return{name:t.name,language:t.language,phase:t.phase,brief:"brief.md",approval:t.approval,spec_changes:r,verification_result:t.verification_result,verification_report:t.verification_report,archived:t.archived,created_at:t.created_at,run_id:t.run_id}}function ud(t){let e=cs(t,kn);if(e.schema!==jr)throw new Error(`Expected ${jr}`);return{schema:jr,...yh(e,HL)}}function ss(t,e){if(!Number.isSafeInteger(t)||t<1)throw new Error(`${e} must be a positive integer`);return t}function hh(t,e,r){if(t===null)return null;let n=typeof t=="string"?UL.exec(t):null;if(!n||n[1]!==r)throw new Error(`${e} must be null or runtime/evidence/${r}/<sha256>.json relative to the Native change`);return t}function XL(t){if(t==null)return null;if(typeof t!="string"||!gh.test(t))throw new Error("Native approved_contract_hash must be null or a SHA-256 hash");return t}function QL(t){if(t===void 0)return"legacy-v1";if(t!=="legacy-v1")throw new Error("Native verification_protocol must be legacy-v1");return t}function pd(t){let e=cs(t,kn);if(e.schema!==_r)throw new Error(`Expected ${_r}`);if(ss(e.minimum_runtime_version,"Native v2 minimum_runtime_version")!==2)throw new Error(`Native ${_r} minimum_runtime_version must be 2`);return{schema:_r,minimum_runtime_version:2,revision:ss(e.revision,"Native v2 revision"),...yh(e,DN)}}function fd(t){let e=cs(t,kn);if(e.schema!==Xt){if(e.schema===jr||e.schema===_r){let a=e.schema===jr?ud(e):pd(e);throw new yo(a.name,a.schema)}throw new Ir(typeof e.schema=="string"?e.schema:"(missing)",typeof e.minimum_runtime_version=="number"?e.minimum_runtime_version:null)}let r=ss(e.minimum_runtime_version,"Native minimum_runtime_version");if(r>3)throw new Ir(e.schema,r);if(r!==3)throw new Error(`Native ${e.schema} minimum_runtime_version must be ${3}`);let n=ss(e.revision,"Native revision"),i=yh(e,WL),o=XL(e.approved_contract_hash);if(i.approval===null&&o!==null)throw new Error("Native approved_contract_hash requires an approval");return{schema:Xt,minimum_runtime_version:3,revision:n,verification_protocol:QL(e.verification_protocol),...i,approved_contract_hash:o,implementation_scope:hh(e.implementation_scope,"Native implementation_scope","scopes"),verification_evidence:hh(e.verification_evidence,"Native verification_evidence","verifications"),partial_allowance:hh(e.partial_allowance,"Native partial_allowance","allowances")}}function vh(t){let e=cs(t,kn);if(e.schema===jr){let i=ud(e);return{status:"migration-required",schema:i.schema,minimumRuntimeVersion:1,state:i,message:`Native change ${i.name} requires migration to ${Xt}`}}if(e.schema===_r){let i=pd(e);return{status:"migration-required",schema:i.schema,minimumRuntimeVersion:i.minimum_runtime_version,state:i,message:`Native change ${i.name} requires migration to ${Xt}`}}if(e.schema!==Xt){let i=typeof e.minimum_runtime_version=="number"&&Number.isSafeInteger(e.minimum_runtime_version)?e.minimum_runtime_version:null;return{status:"runtime-incompatible",schema:typeof e.schema=="string"?e.schema:"(missing)",minimumRuntimeVersion:i,state:null,message:new Ir(typeof e.schema=="string"?e.schema:"(missing)",i).message}}let r=ss(e.minimum_runtime_version,"Native minimum_runtime_version");if(r>3)return{status:"runtime-incompatible",schema:e.schema,minimumRuntimeVersion:r,state:null,message:new Ir(e.schema,r).message};let n=fd(e);return{status:"current",schema:n.schema,minimumRuntimeVersion:n.minimum_runtime_version,state:n}}var LN,HL,DN,WL,VL,qL,zL,GL,kn,gh,BN,UL,yo,Ir,md=A(()=>{"use strict";dd();LN=["schema","name","language","phase","brief","approval","spec_changes","verification_result","verification_report","archived","created_at","run_id"],HL=new Set(LN),DN=new Set([...LN,"minimum_runtime_version","revision"]),WL=new Set([...DN,"approved_contract_hash","implementation_scope","verification_evidence","partial_allowance","verification_protocol"]),VL=new Set(["capability","operation","source","base_hash"]),qL=new Set(["shape","build","verify","archive"]),zL=new Set(["implicit","confirmed"]),GL=new Set(["pending","pass","fail"]),kn="comet-state.yaml",gh=/^[a-f0-9]{64}$/u,BN=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u,UL=/^runtime\/evidence\/(scopes|allowances|verifications)\/([a-f0-9]{64})\.json$/u,yo=class extends Error{constructor(r,n){super(`Native change ${r} uses ${n}; run comet native doctor ${r} --repair before mutating it`);this.change=r;this.schema=n;this.name="NativeSchemaMigrationRequiredError"}change;schema;code="native-schema-migration-required"},Ir=class extends Error{constructor(r,n){super(r!==Xt||n===null?`Unsupported Native change schema ${r} for runtime protocol ${3}`:`Native change ${r} requires runtime protocol ${n}; current protocol is ${3}`);this.schema=r;this.minimumRuntimeVersion=n;this.name="NativeRuntimeCompatibilityError"}schema;minimumRuntimeVersion;code="native-runtime-incompatible"}});import{createHash as ZL}from"crypto";function $t(t){throw new TypeError(`Value is not valid canonical JSON: ${t}`)}function eD(t,e){e.has(t)&&$t("cyclic structures are not supported"),e.add(t);try{let r=Object.keys(t);for(let n=0;n<t.length;n+=1)Object.prototype.hasOwnProperty.call(t,n)||$t("sparse arrays are not supported");return(r.length!==t.length||r.some((n,i)=>n!==String(i)))&&$t("arrays must not have named enumerable properties"),Object.getOwnPropertySymbols(t).length>0&&$t("symbol properties are not supported"),`[${t.map(n=>wh(n,e)).join(",")}]`}finally{e.delete(t)}}function tD(t,e){let r=Object.getPrototypeOf(t);r!==Object.prototype&&r!==null&&$t("only plain objects are supported"),e.has(t)&&$t("cyclic structures are not supported"),Object.getOwnPropertySymbols(t).length>0&&$t("symbol properties are not supported"),e.add(t);try{let n=Object.getOwnPropertyDescriptors(t);return`{${Object.keys(t).sort().map(a=>{let s=n[a];return(!s||!("value"in s))&&$t("accessor properties are not supported"),`${JSON.stringify(a)}:${wh(s.value,e)}`}).join(",")}}`}finally{e.delete(t)}}function wh(t,e){if(t===null)return"null";switch(typeof t){case"boolean":return t?"true":"false";case"string":return JSON.stringify(t);case"number":return Number.isFinite(t)||$t("numbers must be finite"),JSON.stringify(Object.is(t,-0)?0:t);case"object":return Array.isArray(t)?eD(t,e):tD(t,e);case"bigint":case"function":case"symbol":case"undefined":return $t(`${typeof t} values are not supported`)}return $t("unsupported value type")}function WN(t){return wh(t,new Set)}function ie(t,e){if(t.length===0)throw new TypeError("Canonical hash tag must be non-empty");if(/[\r\n]/u.test(t))throw new TypeError("Canonical hash tag must not contain a line break");return ZL("sha256").update(`${t}
${WN(e)}`).digest("hex")}var nt=A(()=>{"use strict"});function GN(t){let e=/^ {0,3}(#{1,6})[ \t]+(.+?)[ \t]*$/u.exec(t);return e?{level:e[1].length,text:e[2].replace(/[ \t]+#+[ \t]*$/u,"").trim()}:null}function VN(t,e){let r=/^ {0,3}(`{3,}|~{3,})(.*)$/u.exec(t);if(!r)return e;let n=r[1][0];return e===null?{marker:n,length:r[1].length}:n===e.marker&&r[1].length>=e.length&&r[2].trim().length===0?null:e}function qN(t){return t.includes("-->")||t.includes("--!>")}function*hd(t){let e=null,r=!1,n=null,i=new Set(["code","pre","script","style","svg","template"]),o=t.replace(/\r\n?/gu,`
`),a=0,s=0;for(;a<=o.length;){let c=o.indexOf(`
`,a),l=c===-1?o.slice(a):o.slice(a,c);if(yield{line:l,body:e===null&&!r&&n===null,index:s},s+=1,e!==null)e=VN(l,e);else if(r)qN(l)&&(r=!1);else if(n!==null)new RegExp(`</${n}\\s*>`,"iu").test(l)&&(n=null);else{let u=VN(l,null);if(u!==null)e=u;else{let p=l.trimStart();if(p.startsWith("<!--")&&!qN(p))r=!0;else{let f=/^<([A-Za-z][A-Za-z0-9-]*)\b[^>]*>/u.exec(p);f&&i.has(f[1].toLowerCase())&&!p.startsWith("</")&&!p.endsWith("/>")&&!new RegExp(`</${f[1]}\\s*>`,"iu").test(p)&&(n=f[1])}}}if(c===-1)break;a=c+1}}function ls(t){return t.normalize("NFC").replace(/\s+/gu," ").trim()}function UN(t,e,r,n=[],i="content-hash"){let o=ls(r),a=e.replaceAll("\\","/").trim(),s=n.map(ls);if(o.length===0)throw new Error(`${t} acceptance criterion must not be empty`);if(a.length===0)throw new Error(`${t} acceptance criterion source must not be empty`);return{id:i==="content-hash"?`acceptance-${ie(rD,{kind:t,source:a,context:s,text:o})}`:"",kind:t,source:a,context:s,text:o}}function JN(t,e,r="content-hash"){let n=new Set;for(let i of t){let o=r==="content-hash"?i.id:JSON.stringify([i.kind,i.source,i.context,i.text]);if(n.has(o))throw new Error(`${e} contains duplicate acceptance criteria`);n.add(o)}return t}function nD(t){let e=null,r=null,n=0,i=0;for(let{line:o,body:a,index:s}of hd(t)){i=s+1;let c=a?GN(o):null;c?.level===1&&(Zl(c.text)==="acceptanceExamples"?(n+=1,n===1&&(e=s+1)):e!==null&&r===null&&(r=s))}if(n===0||e===null)return null;if(n!==1)throw new Error("Brief must contain exactly one Acceptance examples section");return{start:e,end:r??i}}function YN(t,e="brief.md",r=zN.maxCriteria,n="content-hash"){if(!Number.isSafeInteger(r)||r<0)throw new Error("Native brief acceptance budget is invalid");let i=nD(t);if(i===null)return[];let o=null;for(let{line:l,body:d,index:u}of hd(t)){if(u<i.start||u>=i.end)continue;let p=d?/^( {0,3})[-*+][ \t]+/u.exec(l):null;if(p===null)continue;let f=p[1].length;o=o===null?f:Math.min(o,f)}let a=[],s=null,c=()=>{if(s!==null){if(a.length>=r)throw new Error(`Native acceptance exceeds its ${r}-criterion acceptance budget`);a.push(s)}};for(let{line:l,body:d,index:u}of hd(t)){if(u<i.start||u>=i.end)continue;let p=d?/^( {0,3})[-*+][ \t]+(.*)$/u.exec(l):null;p&&p[1].length===o?(c(),s=[p[2]]):s!==null&&s.push(l)}return c(),JN(a.map(l=>UN("brief-example",e,l.join(`
`),[],n)),"Brief",n)}function XN(t,e="spec.md",r=zN.maxCriteria,n="content-hash",i={}){if(!Number.isSafeInteger(r)||r<0)throw new Error("Native specification acceptance budget is invalid");let o=[],a=[],s=null,c=()=>{if(s===null)return;if(o.length>=r)throw new Error(`Native acceptance exceeds its ${r}-criterion acceptance budget`);let l=(i.resolveBriefReferences?s.body:[]).map(d=>/^\s*(?:Acceptance|验收)\s*[::]\s*(.*)$/iu.exec(d)?.[1]).filter(d=>d!==void 0);if(l.some(d=>!/^A[1-9]\d*$/u.test(d)))throw new Error("A Spec acceptance reference must be one brief ID such as A1");if(l.length>1)throw new Error("A Spec scenario may reference only one brief acceptance criterion");o.push({...UN("spec-scenario",e,[s.title,...s.body].join(`
`),s.context,n),...l[0]===void 0?{}:{briefAcceptanceRef:l[0]}}),s=null};for(let{line:l,body:d}of hd(t)){let u=d?GN(l):null,p=u?/^Scenario\s*:\s*(.*)$/iu.exec(u.text):null;if(p){for(c();a.at(-1)&&a.at(-1).level>=u.level;)a.pop();let f=ls(p[1]);if(f.length===0)throw new Error("Scenario title must not be empty");s={level:u.level,title:f,body:[],context:a.map(m=>m.text)}}else if(u){for(s!==null&&u.level<=s.level?c():s!==null&&s.body.push(l);a.at(-1)&&a.at(-1).level>=u.level;)a.pop();a.push(u)}else s!==null&&d&&s.body.push(l)}return c(),JN(o,"Specification",n)}var rD,L9,zN,QN=A(()=>{"use strict";mo();nt();rD="comet.native.acceptance.v1",L9=Object.freeze({maxItems:16,maxTextBytes:512,maxContextItems:4,maxContextItemBytes:256,maxFailedCheckIds:16,maxSerializedBytes:32*1024}),zN=Object.freeze({maxCriteria:1024})});import ZN from"node:path";function eE(t,e){if(t.length===0||t!==t.trim()||t.includes("\\")||ZN.posix.isAbsolute(t)||/^(?:[A-Za-z]:|~)/u.test(t)||t.split("/").includes("..")||ZN.posix.normalize(t)!==t||t==="."||t.endsWith("/"))throw new Error(`${e} must be a normalized change-relative ref`);return t}function iD(t,e){return t.localeCompare(e,"en")}function tE(t){let e=eE(t.briefSource??"brief.md","Native brief source"),r=[...t.specs??[]].sort((a,s)=>iD(a.capability,s.capability));if(new Set(r.map(a=>a.capability)).size!==r.length)throw new Error("Native acceptance sources contain duplicate capabilities");let n=YN(t.briefMarkdown,e,Number.MAX_SAFE_INTEGER,"none").map(({source:a,text:s})=>({source:a,text:s})),i=n.length;for(let a of r){let s=eE(a.source,`Native spec source for ${a.capability}`);for(let c of XN(a.markdown,s,Number.MAX_SAFE_INTEGER,"none",{resolveBriefReferences:t.resolveBriefReferences===!0})){if(c.briefAcceptanceRef!==void 0){let l=Number(c.briefAcceptanceRef.slice(1))-1;if(!Number.isSafeInteger(l)||l<0||l>=i)throw new Error(`Native Spec references unknown brief acceptance ${c.briefAcceptanceRef}: ${s}`);continue}n.push({source:s,text:c.text})}}let o=new Set;for(let a of n){a.text=ls(a.text);let s=a.text;if(o.has(s))throw new Error(`Native acceptance contains a duplicate criterion: ${a.text}`);o.add(s)}if(n.length===0)throw new Error("Native change must define at least one acceptance criterion");return n.map((a,s)=>({id:`A${s+1}`,source:a.source,text:a.text}))}function rE(t,e){return t.length===e.length&&t.every((r,n)=>r.source===e[n]?.source&&r.text===e[n]?.text)}var bh=A(()=>{"use strict";QN()});function Sh(t,e,r,n=""){let i=Object.keys(t),o=e.filter(s=>!Object.hasOwn(t,s)),a=i.filter(s=>!e.includes(s));if(o.length||a.length)throw new kh({code:"invalid-fields",path:n,context:r,missingFields:o,unknownFields:a,expectedFields:[...e]})}var kh,Nh=A(()=>{"use strict";kh=class extends Error{issues;constructor(e){let r=[e.missingFields.length?`missing: ${e.missingFields.join(", ")}`:"",e.unknownFields.length?`unknown: ${e.unknownFields.join(", ")}`:""].filter(Boolean).join("; ");super(`${e.context} fields are invalid at ${e.path||"/"} (${r})`),this.name="NativeInputValidationError",this.issues=[e]}}});function Eh(t,e){if(typeof t!="string"||!t.trim()||t.length>4e3||/^<[^>]+>$/u.test(t.trim()))throw new Error(`${e} must contain a concrete statement of at most 4000 characters`);return t.trim()}function xh(t){if(!Array.isArray(t))throw new Error("Native Builder acceptance_review must be an array");return t.map((e,r)=>{if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Native Builder acceptance review entry must be an object");let n=e,i=`Native Builder acceptance_review[${r}]`;Sh(n,["id","status","evidence","note"],i,`/acceptance_review/${r}`);let o=n.status;if(!["implemented-with-evidence","implemented-no-evidence","not-implemented","known-fail"].includes(o))throw new Error(`${i}.status is invalid`);if(!Array.isArray(n.evidence))throw new Error(`${i}.evidence must be an array`);return{id:Eh(n.id,`${i}.id`),status:o,evidence:n.evidence.map(a=>Eh(a,`${i}.evidence`)),note:Eh(n.note,`${i}.note`)}})}function Ph(t,e){if(!e)throw new gd(t.map(({id:c})=>c),[]);let r=new Set(t.map(({id:c})=>c)),n=e.map(({id:c})=>c),i=new Set(n);if(i.size!==n.length)throw new Error("Native Builder acceptance_review contains duplicate IDs");let o=n.filter(c=>!r.has(c));if(o.length)throw new Error(`Native Builder acceptance_review contains unknown IDs: ${o.join(", ")}`);let a=t.filter(({id:c})=>!i.has(c)).map(({id:c})=>c),s=e.filter(c=>c.status!=="implemented-with-evidence"||c.evidence.length===0).map(({id:c})=>c);if(a.length||s.length)throw new gd(a,s)}var gd,Ch=A(()=>{"use strict";Nh();gd=class extends Error{constructor(r,n){super(`Native Builder handoff is incomplete${r.length?`; missing: ${r.join(", ")}`:""}${n.length?`; not ready: ${n.join(", ")}`:""}. Complete acceptance_review for every requirement and its evidence before Verify`);this.missingIds=r;this.incompleteIds=n}missingIds;incompleteIds}});var ds,us,yd=A(()=>{"use strict";ds="comet.native.v4",us="comet.native.local-execution.v4"});import{promises as aD}from"node:fs";function Te(t,e){if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`${e} must be an object`);return t}function $e(t,e,r){let n=Object.keys(t).filter(i=>!e.has(i));if(n.length>0)throw new Error(`${r} has unknown field(s): ${n.join(", ")}`)}function me(t,e,r){if(typeof t!="string"||!r?.empty&&t.length===0)throw new Error(`${e} must be ${r?.empty?"a string":"a non-empty string"}`);return t}function Ah(t,e){return t===null?null:me(t,e)}function _h(t,e){let r=me(t,e);if(!dD.test(r))throw new Error(`${e} must be a SHA-256 hash`);return r}function wo(t,e){if(typeof t!="boolean")throw new Error(`${e} must be a boolean`);return t}function Z(t,e,r=0){if(!Number.isSafeInteger(t)||t<r)throw new Error(`${e} must be a safe integer greater than or equal to ${r}`);return t}function pD(t,e){return t===null?null:Z(t,e,Number.MIN_SAFE_INTEGER)}function le(t,e,r){if(typeof t!="string"||!e.includes(t))throw new Error(`${r} must be one of: ${e.join(", ")}`);return t}function Qt(t,e,r){if(!Array.isArray(t))throw new Error(`${e} must be an array`);return t.map((n,i)=>r(n,i))}function Sd(t,e){return Qt(t,e,(r,n)=>me(r,`${e}[${n}]`))}function si(t,e){if(new Set(t).size!==t.length)throw new Error(`${e} must be unique`)}function bo(t,e){let r=me(t,e);if(Number.isNaN(Date.parse(r)))throw new Error(`${e} must be an ISO date or timestamp`);return r}function bd(t,e,r=!1){let n=me(t,e);if(n.includes("\\")||n.startsWith("/")||/^[A-Za-z]:/u.test(n)||n.split("/").includes("..")||!r&&(n==="."||n.split("/").includes(".")))throw new Error(`${e} must be a portable relative path`);return n}function ft(t,e){let r=Te(t,e);return $e(r,new Set(["text","truncated"]),e),{text:me(r.text,`${e}.text`,{empty:!0}),truncated:wo(r.truncated,`${e}.truncated`)}}function fD(t,e){let r=`Native spec_changes[${e}]`,n=Te(t,r);$e(n,new Set(["capability","operation","source","delta_source","base_hash"]),r);let i=me(n.capability,`${r}.capability`);if(!cD.test(i))throw new Error(`${r}.capability is invalid`);let o=le(n.operation,["create","modify","remove"],`${r}.operation`),a=n.source===null?null:bd(n.source,`${r}.source`),s=n.delta_source===void 0?void 0:bd(n.delta_source,`${r}.delta_source`),c=n.base_hash===void 0?void 0:n.base_hash===null?null:_h(n.base_hash,`${r}.base_hash`);if(o==="remove"&&a!==null)throw new Error(`${r} remove requires source null`);if(o!=="remove"&&a===null)throw new Error(`${r} ${o} requires a source`);if(s!==void 0&&o==="remove")throw new Error(`${r} remove cannot contain delta_source`);if(s!==void 0&&c==null)throw new Error(`${r} delta_source requires a non-null base_hash`);if(c!==void 0&&s===void 0&&o!=="remove")throw new Error(`${r} base_hash requires delta_source for non-remove specs`);return{capability:i,operation:o,source:a,...s===void 0?{}:{delta_source:s},...c===void 0?{}:{base_hash:c}}}function mD(t){let e="Native workspace",r=Te(t,e);$e(r,new Set(["isolation","change_branch","target_branch","finish"]),e);let n=le(r.isolation,["current","branch","worktree"],`${e}.isolation`),i=Ah(r.change_branch,`${e}.change_branch`),o=Ah(r.target_branch,`${e}.target_branch`),a=r.finish===null?null:le(r.finish,["merge","push","pull-request","keep"],`${e}.finish`);if(n==="current"&&a!==null)throw new Error("Native current workspace cannot contain a finish action");if(n==="current"&&i===null!=(o===null))throw new Error("Native workspace branch bindings must both be present or both be null");if(n!=="current"&&(i===null||o===null))throw new Error("Native isolated workspace requires change_branch and target_branch");return{isolation:n,change_branch:i,target_branch:o,finish:a}}function hD(t){let e="Native loop",r=Te(t,e);$e(r,new Set(["stage","goal_cycle","iteration","attempt","retry_epoch","failed_iteration_count","no_progress_count","stop_reason","execution_failure_count","previous_unresolved_ids","next_action"]),e);let n=Sd(r.previous_unresolved_ids,`${e}.previous_unresolved_ids`);si(n,`${e}.previous_unresolved_ids`);let i=r.stop_reason===void 0?void 0:le(r.stop_reason,["budget","stalled"],`${e}.stop_reason`);return{stage:le(r.stage,["shape","building","verify-ready","repairing","archive-ready","await-user","blocked","done"],`${e}.stage`),goal_cycle:Z(r.goal_cycle,`${e}.goal_cycle`,1),iteration:Z(r.iteration,`${e}.iteration`),attempt:Z(r.attempt,`${e}.attempt`),retry_epoch:Z(r.retry_epoch,`${e}.retry_epoch`),failed_iteration_count:Z(r.failed_iteration_count,`${e}.failed_iteration_count`),no_progress_count:Z(r.no_progress_count,`${e}.no_progress_count`),...i===void 0?{}:{stop_reason:i},execution_failure_count:Z(r.execution_failure_count,`${e}.execution_failure_count`),previous_unresolved_ids:n,next_action:Ah(r.next_action,`${e}.next_action`)}}function gD(t,e){let r=`Native acceptance[${e}]`,n=Te(t,r);$e(n,new Set(["id","source","text","result","reason"]),r);let i=me(n.id,`${r}.id`);if(!lD.test(i))throw new Error(`${r}.id must use A1, A2, ...`);return{id:i,source:bd(n.source,`${r}.source`),text:me(n.text,`${r}.text`),result:le(n.result,["pending","passed","failed","blocked"],`${r}.result`),reason:n.reason===null?null:ft(n.reason,`${r}.reason`)}}function yD(t,e){let r=`Native builder_handoff.checks[${e}]`,n=Te(t,r);return $e(n,new Set(["name","result","note"]),r),{name:ft(n.name,`${r}.name`),result:le(n.result,["passed","failed","not-run"],`${r}.result`),note:n.note===null?null:ft(n.note,`${r}.note`)}}function vD(t){let e="Native builder_handoff",r=Te(t,e);$e(r,new Set(["candidate_id","identity_provider","builder_execution_ref","iteration","summary","addressed_acceptance_ids","acceptance_review","checks","checks_truncated","known_limits","known_limits_truncated","review","submitted_at"]),e);let n=Sd(r.addressed_acceptance_ids,`${e}.addressed_acceptance_ids`);si(n,`${e}.addressed_acceptance_ids`);let i=r.review===null||r.review===void 0?null:Te(r.review,`${e}.review`);return i&&$e(i,new Set(["status","summary","reviewer_execution_ref"]),`${e}.review`),{candidate_id:me(r.candidate_id,`${e}.candidate_id`),identity_provider:me(r.identity_provider,`${e}.identity_provider`),builder_execution_ref:me(r.builder_execution_ref,`${e}.builder_execution_ref`),iteration:Z(r.iteration,`${e}.iteration`,1),summary:ft(r.summary,`${e}.summary`),addressed_acceptance_ids:n,...r.acceptance_review===void 0?{}:{acceptance_review:xh(r.acceptance_review)},checks:Qt(r.checks,`${e}.checks`,yD),checks_truncated:wo(r.checks_truncated,`${e}.checks_truncated`),known_limits:Qt(r.known_limits,`${e}.known_limits`,(o,a)=>ft(o,`${e}.known_limits[${a}]`)),known_limits_truncated:wo(r.known_limits_truncated,`${e}.known_limits_truncated`),review:i?{status:le(i.status,["passed"],`${e}.review.status`),summary:ft(i.summary,`${e}.review.summary`),reviewer_execution_ref:me(i.reviewer_execution_ref,`${e}.review.reviewer_execution_ref`)}:null,submitted_at:bo(r.submitted_at,`${e}.submitted_at`)}}function wD(t,e){let r=`Native blockers[${e}]`,n=Te(t,r);$e(n,new Set(["owner","reason","acceptance_ids","resolution_action"]),r);let i=Sd(n.acceptance_ids,`${r}.acceptance_ids`);return si(i,`${r}.acceptance_ids`),{owner:le(n.owner,["builder","runtime","verifier","user","external"],`${r}.owner`),reason:ft(n.reason,`${r}.reason`),acceptance_ids:i,resolution_action:le(n.resolution_action,["return-build","retry-verifier","resolve-verifier-blocker","confirm-verifier-unavailable","await-user","wait-external"],`${r}.resolution_action`)}}function bD(t,e){let r=`Native verification.checks[${e}]`,n=Te(t,r);return $e(n,new Set(["id","name","argv_display","argv_truncated","cwd_ref","status","exit_code","duration_ms"]),r),{id:me(n.id,`${r}.id`),name:ft(n.name,`${r}.name`),argv_display:Qt(n.argv_display,`${r}.argv_display`,(i,o)=>ft(i,`${r}.argv_display[${o}]`)),argv_truncated:wo(n.argv_truncated,`${r}.argv_truncated`),cwd_ref:bd(n.cwd_ref,`${r}.cwd_ref`,!0),status:le(n.status,["passed","failed","interrupted"],`${r}.status`),exit_code:pD(n.exit_code,`${r}.exit_code`),duration_ms:Z(n.duration_ms,`${r}.duration_ms`)}}function kD(t){let e="Native verification",r=Te(t,e);$e(r,new Set(["candidate_id","identity_provider","verifier_execution_ref","iteration","attempt","assurance","verdict","checks","summary","risks","risks_truncated","completed_at"]),e);let n=Qt(r.checks,`${e}.checks`,bD);si(n.map(o=>o.id),`${e}.checks IDs`);let i=me(r.identity_provider,`${e}.identity_provider`);return{candidate_id:me(r.candidate_id,`${e}.candidate_id`),identity_provider:i,verifier_execution_ref:me(r.verifier_execution_ref,`${e}.verifier_execution_ref`),iteration:Z(r.iteration,`${e}.iteration`,1),attempt:Z(r.attempt,`${e}.attempt`,1),assurance:r.assurance===void 0?i==="skill-coordinated"?"skill-coordinated":"host-attested":le(r.assurance,["host-attested","skill-coordinated","semantic-verification-unavailable","user-confirmed-degraded"],`${e}.assurance`),verdict:le(r.verdict,["pass","fail","blocked"],`${e}.verdict`),checks:n,summary:ft(r.summary,`${e}.summary`),risks:Qt(r.risks,`${e}.risks`,(o,a)=>ft(o,`${e}.risks[${a}]`)),risks_truncated:wo(r.risks_truncated,`${e}.risks_truncated`),completed_at:bo(r.completed_at,`${e}.completed_at`)}}function nE(t,e){let r=`Native history[${e}]`,n=Te(t,r);$e(n,new Set(["goal_cycle","iteration","attempt","outcome","unresolved_ids","summary","completed_at"]),r);let i=Sd(n.unresolved_ids,`${r}.unresolved_ids`);return si(i,`${r}.unresolved_ids`),{goal_cycle:Z(n.goal_cycle,`${r}.goal_cycle`,1),iteration:Z(n.iteration,`${r}.iteration`),attempt:Z(n.attempt,`${r}.attempt`),outcome:le(n.outcome,["pass","fail","blocked","execution-error","recovery"],`${r}.outcome`),unresolved_ids:i,summary:ft(n.summary,`${r}.summary`),completed_at:bo(n.completed_at,`${r}.completed_at`)}}function SD(t){let e="Native history_overflow.outcome_counts",r=Te(t,e),n=["pass","fail","blocked","execution-error","recovery"];return $e(r,new Set(n),e),{pass:Z(r.pass,`${e}.pass`),fail:Z(r.fail,`${e}.fail`),blocked:Z(r.blocked,`${e}.blocked`),"execution-error":Z(r["execution-error"],`${e}.execution-error`),recovery:Z(r.recovery,`${e}.recovery`)}}function ND(t){let e="Native history_overflow",r=Te(t,e);$e(r,new Set(["dropped_entries","first_dropped_at","last_dropped_at","outcome_counts"]),e);let n=Z(r.dropped_entries,`${e}.dropped_entries`),i=r.first_dropped_at===null?null:bo(r.first_dropped_at,`${e}.first_dropped_at`),o=r.last_dropped_at===null?null:bo(r.last_dropped_at,`${e}.last_dropped_at`);if(n===0&&(i!==null||o!==null))throw new Error("Native empty history overflow cannot contain dropped timestamps");if(n>0&&(i===null||o===null))throw new Error("Native non-empty history overflow requires dropped timestamps");let a=SD(r.outcome_counts);if(Object.values(a).reduce((c,l)=>c+l,0)!==n)throw new Error("Native history overflow outcome count must equal dropped_entries");return{dropped_entries:n,first_dropped_at:i,last_dropped_at:o,outcome_counts:a}}function ED(t){let e=new Set(t.acceptance.map(r=>r.id));for(let r of t.loop.previous_unresolved_ids)if(!e.has(r))throw new Error(`Native loop references unknown acceptance ID ${r}`);for(let r of t.builder_handoff?.addressed_acceptance_ids??[])if(!e.has(r))throw new Error(`Native builder handoff references unknown ID ${r}`);t.builder_handoff?.acceptance_review&&Ph(t.acceptance,t.builder_handoff.acceptance_review);for(let r of t.blockers)for(let n of r.acceptance_ids)if(!e.has(n))throw new Error(`Native blocker references unknown ID ${n}`);if(t.builder_handoff){if(!(t.builder_handoff.iteration===t.loop.iteration||t.phase==="build"&&t.loop.stage==="repairing"&&t.builder_handoff.iteration===t.loop.iteration-1))throw new Error("Native builder handoff iteration is not current or the prior repair result");if(t.builder_handoff.review?.reviewer_execution_ref===t.builder_handoff.builder_execution_ref)throw new Error("Native reviewer execution ref must differ from the Builder execution ref")}if(t.verification){if(!t.builder_handoff)throw new Error("Native verification requires a builder handoff");if(t.verification.candidate_id!==t.builder_handoff.candidate_id)throw new Error("Native verification candidate must match the builder handoff");if(t.verification.identity_provider!==t.builder_handoff.identity_provider)throw new Error("Native Builder and Verifier identity providers must match");if(["skill-coordinated","semantic-verification-unavailable","user-confirmed-degraded"].includes(t.verification.assurance)!==(t.verification.identity_provider==="skill-coordinated"))throw new Error("Native verification assurance does not match its identity provider");if(t.verification.assurance==="semantic-verification-unavailable"&&t.verification.verdict!=="blocked")throw new Error("Native unavailable semantic verification must remain blocked");if(t.verification.assurance==="user-confirmed-degraded"&&t.verification.verdict!=="pass")throw new Error("Native user-confirmed degraded verification must be passing");if(t.verification.verifier_execution_ref===t.builder_handoff.builder_execution_ref)throw new Error("Native Builder and Verifier execution refs must differ");let n=t.verification.iteration===t.loop.iteration&&t.verification.attempt===t.loop.attempt,i=t.phase==="build"&&t.loop.stage==="repairing"&&t.verification.iteration===t.loop.iteration-1&&t.verification.iteration===t.builder_handoff.iteration;if(!n&&!i)throw new Error("Native verification iteration and attempt do not match a stable loop result")}}function xD(t){if(!{shape:new Set(["shape","await-user","blocked"]),build:new Set(["building","repairing","await-user","blocked"]),verify:new Set(["verify-ready","await-user","blocked"]),archive:new Set(["archive-ready","await-user","blocked","done"])}[t.phase].has(t.loop.stage))throw new Error(`Native loop stage ${t.loop.stage} is invalid for phase ${t.phase}`);let r=t.status==="await-user"?"await-user":t.status==="blocked"?"blocked":t.status==="done"?"done":null;if(r!==null&&t.loop.stage!==r)throw new Error(`Native status ${t.status} requires loop stage ${r}`);if(t.status==="active"&&["await-user","blocked","done"].includes(t.loop.stage))throw new Error(`Native active status cannot use loop stage ${t.loop.stage}`);if(t.archived!==(t.status==="done"))throw new Error("Native archived must be true exactly when status is done");if(t.archived&&t.phase!=="archive")throw new Error("Native archived state must be in Archive");if(t.verification_result==="pass"){if(t.verification?.verdict!=="pass")throw new Error("Native pass requires a persisted passing verification");if(t.acceptance.some(n=>n.result!=="passed"))throw new Error("Native pass requires every acceptance item to pass");if(t.verification.checks.some(n=>n.status!=="passed"))throw new Error("Native pass requires every persisted check to pass")}if(t.verification?.assurance==="semantic-verification-unavailable"&&(t.phase!=="verify"||t.status!=="await-user"||t.verification_result!=="blocked"||t.loop.next_action!=="confirm-verifier-unavailable"))throw new Error("Native unavailable semantic verification must await explicit user confirmation");if(t.verification_report!==null&&t.verification===null)throw new Error("Native verification report requires persisted verification")}function Ot(t){let e=Te(t,"Native portable state");if($e(e,uD,"Native portable state"),e.schema!==ds)throw new Error(`Native portable state schema must be ${ds}`);let r=me(e.name,"Native state name");if(!sD.test(r))throw new Error("Native state name is invalid");if(e.brief!=="brief.md")throw new Error("Native state brief must be brief.md");let n=Qt(e.spec_changes,"Native spec_changes",fD);si(n.map(s=>s.capability),"Native spec change capabilities");let i=Qt(e.acceptance,"Native acceptance",gD);si(i.map(s=>s.id),"Native acceptance IDs");let o=Qt(e.history,"Native history",nE);if(o.length>50)throw new Error(`Native history cannot exceed ${50} entries`);let a={schema:ds,name:r,language:le(e.language,["en","zh-CN"],"Native state language"),phase:le(e.phase,["shape","build","verify","archive"],"Native state phase"),status:le(e.status,["active","await-user","blocked","done"],"Native state status"),state_version:Z(e.state_version,"Native state_version",1),brief:"brief.md",...e.document_constraints_version===void 0?{}:e.document_constraints_version===1||e.document_constraints_version===2?{document_constraints_version:e.document_constraints_version}:(()=>{throw new Error("Native document_constraints_version must be 1 or 2")})(),...e.shape_confirmation_hash===void 0?{}:{shape_confirmation_hash:_h(e.shape_confirmation_hash,"Native Shape confirmation hash")},...e.children_contract_hash===void 0?{}:{children_contract_hash:_h(e.children_contract_hash,"Native children contract hash")},...e.coordination_mode===void 0?{}:{coordination_mode:le(e.coordination_mode,["multi-session","single-session"],"Native coordination mode")},spec_changes:n,workspace:mD(e.workspace),loop:hD(e.loop),acceptance:i,builder_handoff:e.builder_handoff===null?null:vD(e.builder_handoff),blockers:Qt(e.blockers,"Native blockers",wD),verification:e.verification===null?null:kD(e.verification),history:o,history_overflow:ND(e.history_overflow),verification_result:le(e.verification_result,["pending","pass","fail","blocked"],"Native verification_result"),verification_report:e.verification_report===null?null:le(e.verification_report,["verification.md"],"Native verification_report"),archived:wo(e.archived,"Native archived"),created_at:bo(e.created_at,"Native created_at")};return ED(a),xD(a),a}function ko(t,e){let r=Ot(t),n=nE(e,r.history.length),i=[...r.history,n],o={...r.history_overflow,outcome_counts:{...r.history_overflow.outcome_counts}};for(;i.length>50;){let a=i.shift();o.dropped_entries+=1,o.first_dropped_at??=a.completed_at,o.last_dropped_at=a.completed_at,o.outcome_counts[a.outcome]+=1}return Ot({...r,history:i,history_overflow:o})}function PD(t,e){let r=(0,kd.parseDocument)(t,{uniqueKeys:!0});if(r.errors.length>0)throw new Error(`${e} is invalid YAML: ${r.errors[0].message}`);return r.toJS({mapAsMap:!1})}async function ps(t){let e=await aD.readFile(t,"utf8");return Ot(PD(e,"Native portable state"))}async function iE(t,e,r={}){let n=Ot(e);await Rr(t,(0,kd.stringify)(n),r)}async function CD(t,e){let r=vd.get(t)??Promise.resolve(),n,i=new Promise(a=>{n=a}),o=r.then(()=>i);vd.set(t,o),await r;try{return await e()}finally{n(),vd.get(t)===o&&vd.delete(t)}}async function oE(t){return CD(t.file,async()=>{let e=Z(t.expectedStateVersion,"Native expected state version",1),r=Ot(t.next);if(r.state_version!==e+1)throw new Error("Native CAS next state_version must increment exactly once");let n=await ps(t.file);if(n.state_version===r.state_version&&JSON.stringify(n)===JSON.stringify(r))return n;if(n.state_version!==e)throw new wd(e,n.state_version);return await iE(t.file,r,{...t.containedRoot?{containedRoot:t.containedRoot}:{},beforeCommit:async()=>{let i=await ps(t.file);if(i.state_version!==e)throw new wd(e,i.state_version)}}),r})}var kd,sD,cD,lD,dD,uD,wd,vd,Sn=A(()=>{"use strict";Ch();kd=Ce(Ne(),1);ke();yd();sD=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u,cD=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u,lD=/^A[1-9][0-9]*$/u,dD=/^[a-f0-9]{64}$/u,uD=new Set(["schema","name","language","phase","status","state_version","brief","document_constraints_version","shape_confirmation_hash","children_contract_hash","coordination_mode","spec_changes","workspace","loop","acceptance","builder_handoff","blockers","verification","history","history_overflow","verification_result","verification_report","archived","created_at"]),wd=class extends Error{constructor(r,n){super(`Native state version conflict: expected ${r}, got ${n}`);this.expectedStateVersion=r;this.actualStateVersion=n;this.name="NativePortableStateVersionConflictError"}expectedStateVersion;actualStateVersion;code="native-state-version-conflict"};vd=new Map});function RD(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("Native portable text byte budget must be a non-negative safe integer")}function Tr(t,e=16384){if(typeof t!="string")throw new Error("Native portable text must be a string");if(RD(e),Buffer.byteLength(t,"utf8")<=e)return{text:t,truncated:!1};let r="",n=0;for(let i of t){let o=Buffer.byteLength(i,"utf8");if(n+o>e)break;r+=i,n+=o}return{text:r,truncated:!0}}var ci=A(()=>{"use strict"});function $D(t,e){if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`${e} must be an object`);return t}function OD(t,e){if(typeof t!="string")throw new Error(`${e} must be an ISO timestamp`);let r=new Date(t);if(Number.isNaN(r.valueOf())||r.toISOString()!==t)throw new Error(`${e} must be a canonical ISO timestamp`);return t}function sE(t){let e=$D(t,"Native portable migration transaction"),r=Object.keys(e).filter(n=>!AD.has(n));if(r.length>0)throw new Error(`Native portable migration transaction has unknown field(s): ${r.join(", ")}`);if(e.schema!==aE)throw new Error("Unsupported Native portable migration transaction schema");if(typeof e.id!="string"||!jD.test(e.id))throw new Error("Native portable migration transaction id is invalid");if(typeof e.change!="string"||!_D.test(e.change))throw new Error("Native portable migration transaction change is invalid");if(typeof e.fromSchema!="string"||!TD.has(e.fromSchema))throw new Error("Native portable migration transaction fromSchema is invalid");if(typeof e.status!="string"||!ID.has(e.status))throw new Error("Native portable migration transaction status is invalid");return{schema:aE,id:e.id,change:e.change,fromSchema:e.fromSchema,status:e.status,createdAt:OD(e.createdAt,"Native portable migration transaction createdAt")}}var aE,AD,_D,jD,ID,TD,cE=A(()=>{"use strict";md();bh();Sn();ci();yd();dd();aE="comet.native.portable-migration.v1",AD=new Set(["schema","id","change","fromSchema","status","createdAt"]),_D=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u,jD=/^[a-z0-9][a-z0-9-]{7,127}$/u,ID=new Set(["prepared","yaml-committed","legacy-cleanup","committed"]),TD=new Set([jr,_r,Xt])});import MD from"node:path";function fE(t,e){if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`${e} must be an object`);return t}function mE(t,e,r){let n=Object.keys(t).filter(i=>!e.has(i));if(n.length>0)throw new Error(`${r} has unknown field(s): ${n.join(", ")}`)}function jh(t,e){if(t!==void 0){if(t===null)return null;if(typeof t!="string"||!/^[a-f0-9]{64}$/iu.test(t))throw new Error(`${e} must be a SHA-256 hash or null`);return t.toLowerCase()}}function dE(t,e){if(t!==void 0){if(t!==null&&typeof t!="string")throw new Error(`${e} must be text or null`);return t}}function VD(t,e){let r=`Native portable Archive spec_changes[${e}]`,n=fE(t,r);if(mE(n,WD,r),typeof n.capability!="string"||!pE.test(n.capability))throw new Error(`${r}.capability is invalid`);if(!["create","modify","remove"].includes(String(n.operation)))throw new Error(`${r}.operation is invalid`);let i=n.operation,o=n.delta_source;if(o!==void 0&&(typeof o!="string"||o.length===0||o.includes("\\")||o.startsWith("/")||/^[A-Za-z]:/u.test(o)||o.split("/").some(p=>p==="."||p==="..")))throw new Error(`${r}.delta_source is invalid`);let a=jh(n.base_hash,`${r}.base_hash`),s=dE(n.delta_content,`${r}.delta_content`),c=dE(n.source_content,`${r}.source_content`),l=jh(n.expected_target_hash,`${r}.expected_target_hash`),d=jh(n.result_hash,`${r}.result_hash`),u=o!==void 0;if(u&&a==null)throw new Error(`${r}.delta_source requires a non-null base_hash`);if(u&&(s==null||c===void 0||c===null||d===void 0||d===null))throw new Error(`${r}.delta_source requires delta_content, source_content, and result_hash`);if(!u&&(s!==void 0||c!==void 0))throw new Error(`${r} delta transaction fields require delta_source`);if(u){let p=as(s);if(p.capability!==n.capability)throw new Error(`${r}.delta_content capability does not match capability`);if(p.base_hash!==a)throw new Error(`${r}.delta_content base_hash does not match base_hash`);if(Ar(n.content)!==d)throw new Error(`${r}.content does not match result_hash`);if(Ar(c)!==d)throw new Error(`${r}.source_content does not match result_hash`)}if(i==="remove"){if(n.source!==null||n.content!==null||o!==void 0||s!==void 0||c!==void 0||d!==void 0)throw new Error(`${r} remove requires source and content null`);return{capability:n.capability,operation:i,source:null,content:null,...a===void 0?{}:{base_hash:a},...l===void 0?{}:{expected_target_hash:l}}}if(typeof n.source!="string"||n.source.length===0||n.source.includes("\\")||n.source.startsWith("/")||/^[A-Za-z]:/u.test(n.source)||n.source.split("/").some(p=>p==="."||p===".."))throw new Error(`${r}.${i} source is invalid`);if(typeof n.content!="string")throw new Error(`${r}.${i} content is invalid`);if(d!==void 0&&(d===null||Ar(n.content)!==d))throw new Error(`${r}.content does not match result_hash`);return{capability:n.capability,operation:i,source:n.source,content:n.content,...o===void 0?{}:{delta_source:o},...a===void 0?{}:{base_hash:a},...s===void 0?{}:{delta_content:s},...c===void 0?{}:{source_content:c},...l===void 0?{}:{expected_target_hash:l},...d===void 0?{}:{result_hash:d}}}function qD(t){let e=fE(t,"Native portable Archive transaction");if(mE(e,HD,"Native portable Archive transaction"),e.schema!==lE)throw new Error("Unsupported Native portable Archive transaction schema");if(typeof e.id!="string"||!BD.test(e.id))throw new Error("Native portable Archive transaction id is invalid");if(typeof e.change!="string"||!pE.test(e.change))throw new Error("Native portable Archive transaction change is invalid");if(!Number.isSafeInteger(e.start_state_version)||Number(e.start_state_version)<0)throw new Error("Native portable Archive transaction state version is invalid");if(typeof e.archive_ref!="string"||!FD.test(e.archive_ref)||!e.archive_ref.endsWith(`-${e.change}`))throw new Error("Native portable Archive transaction ref is invalid");if(typeof e.status!="string"||!KD.has(e.status))throw new Error("Native portable Archive transaction status is invalid");if(!Array.isArray(e.spec_changes))throw new Error("Native portable Archive transaction spec changes are invalid");let r=e.spec_changes.map(VD);if(new Set(r.map(({capability:i})=>i)).size!==r.length)throw new Error("Native portable Archive transaction capabilities must be unique");if(!Number.isSafeInteger(e.next_spec_index)||Number(e.next_spec_index)<0||Number(e.next_spec_index)>r.length)throw new Error("Native portable Archive transaction spec cursor is invalid");if(typeof e.created_at!="string")throw new Error("Native portable Archive transaction timestamp is invalid");let n=new Date(e.created_at);if(Number.isNaN(n.valueOf())||n.toISOString()!==e.created_at)throw new Error("Native portable Archive transaction timestamp is invalid");return{schema:lE,id:e.id,change:e.change,start_state_version:Number(e.start_state_version),archive_ref:e.archive_ref,status:e.status,next_spec_index:Number(e.next_spec_index),spec_changes:r,created_at:e.created_at}}function Ih(t){let e=LD.exec(t);if(e)return{kind:"archive",change:e[1]};let r=DD.exec(t);return r?{kind:"migration",change:r[1]}:null}async function hE(t,e){let r=Ih(e);if(!r)return null;let n=await ne({root:t.transactionsDir,ref:e,maxBytes:null,includeHash:!1}),i=JSON.parse(n.text),o=MD.join(t.transactionsDir,e);if(r.kind==="archive"){let s=qD(i);if(s.change!==r.change)throw new Error(`Native portable transaction filename does not match ${s.change}`);return{kind:"archive",change:r.change,file:o,journal:s}}let a=sE(i);if(a.change!==r.change)throw new Error(`Native portable transaction filename does not match ${a.change}`);return{kind:"migration",change:r.change,file:o,journal:a}}function gE(t){return t.kind==="archive"||t.journal.status!=="committed"}var lE,uE,LD,DD,BD,FD,KD,HD,WD,pE,Th=A(()=>{"use strict";wn();ld();cE();lE="comet.native.archive-transaction.v4",uE="[a-z][a-z0-9]*(?:-[a-z0-9]+)*",LD=new RegExp(`^portable-archive-(${uE})\\.json$`,"u"),DD=new RegExp(`^portable-migration-(${uE})\\.json$`,"u"),BD=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu,FD=/^\d{4}-\d{2}-\d{2}-[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u,KD=new Set(["prepared","specs-applied","state-finalized","report-aligned","moved"]),HD=new Set(["schema","id","change","start_state_version","archive_ref","status","next_spec_index","spec_changes","created_at"]),WD=new Set(["capability","operation","source","content","delta_source","base_hash","delta_content","source_content","expected_target_hash","result_hash"]),pE=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u});import{createHash as zD}from"node:crypto";import{constants as Nd,promises as Mt}from"node:fs";import Lt from"node:path";import{TextDecoder as GD}from"node:util";function xd(t,e){let r=Lt.relative(t,e);return r===""||!Lt.isAbsolute(r)&&r!==".."&&!r.startsWith(`..${Lt.sep}`)}function UD(t){if(!Number.isSafeInteger(t)||t<1)throw new Error("Native protected file byte limit must be a positive integer");return t}function JD(t,e){return Y({...t,birthtime:t.birthtimeMs},{...e,birthtime:e.birthtimeMs})}function YD(t){return{dev:t.dev,ino:t.ino,birthtimeMs:t.birthtimeMs,ctimeMs:t.ctimeMs,mtimeMs:t.mtimeMs,size:t.size}}function Ed(t,e){return Y({...t,birthtime:t.birthtimeMs},{...e,birthtime:e.birthtimeMs})&&t.birthtimeMs===e.birthtimeMs&&t.ctimeMs===e.ctimeMs&&t.mtimeMs===e.mtimeMs&&t.size===e.size}async function $h(t,e){let r=await Mt.lstat(t);if(!r.isDirectory()||r.isSymbolicLink())throw new Error(`${e} parent must be a real directory: ${t}`);return{path:t,realPath:await Mt.realpath(t),dev:r.dev,ino:r.ino,birthtimeMs:r.birthtimeMs}}async function XD(t,e,r){let n=Lt.resolve(t),i=Lt.resolve(e);if(!xd(n,i))throw new Error(`${r} is outside its managed root`);let o=[await $h(n,r)],a=n;for(let s of Lt.relative(n,i).split(Lt.sep).filter(Boolean)){await li(o,r),a=Lt.join(a,s);let c=await $h(a,r);if(!xd(o[0].realPath,c.realPath))throw new Error(`${r} parent resolves outside its managed root: ${a}`);o.push(c)}return await li(o,r),o}async function li(t,e){for(let r of t){let n=await Mt.lstat(r.path);if(!n.isDirectory()||n.isSymbolicLink()||!JD(r,n)||await Mt.realpath(r.path)!==r.realPath)throw new Error(`${e} parent changed during I/O: ${r.path}`)}}async function QD(t,e,r){let n=[],i=0,o=Buffer.allocUnsafe(e===null?64*1024:Math.min(64*1024,e+1));for(;;){let a=e===null?o.length:e+1-i,{bytesRead:s}=await t.read(o,0,Math.min(o.length,a),null);if(s===0)break;if(i+=s,e!==null&&i>e)throw new Error(`${r} exceeds ${e} bytes`);n.push(Buffer.from(o.subarray(0,s)))}return Buffer.concat(n,i)}async function Oh(t){let e=t.maxBytes===null?null:UD(t.maxBytes),r=Lt.resolve(t.file),n=await XD(t.root,Lt.dirname(r),t.label),i=await Promise.all((t.forbiddenRoots??[]).map(d=>$h(Lt.resolve(d),t.label)));await t.hooks?.afterParentChainCaptured?.(),await li(n,t.label);let o=await Mt.lstat(r);if(!o.isFile()||o.isSymbolicLink())throw new Error(`${t.label} must be a regular file`);if(e!==null&&o.size>e)throw new Error(`${t.label} exceeds ${e} bytes`);let a=YD(o),s=await Mt.realpath(r);if(!xd(n[0].realPath,s))throw new Error(`${t.label} resolves outside its managed root`);if(i.some(d=>xd(d.realPath,s)))throw new Error(`${t.label} resolves inside an excluded root`);let c=process.platform==="win32"?Nd.O_RDONLY:Nd.O_RDONLY|Nd.O_NOFOLLOW|Nd.O_NONBLOCK,l=await Mt.open(r,c);try{let d=await l.stat();await t.hooks?.afterOpen?.();let[u,p]=await Promise.all([Mt.lstat(r),Mt.realpath(r)]);if(await li(n,t.label),await li(i,t.label),!d.isFile()||!u.isFile()||u.isSymbolicLink()||p!==s||!Ed(a,d)||!Ed(a,u))throw new Error(`${t.label} changed while opening`);await t.hooks?.beforeRead?.();let f=await QD(l,e,t.label);await t.hooks?.beforeFinalCheck?.();let[m,g,h]=await Promise.all([l.stat(),Mt.lstat(r),Mt.realpath(r)]);if(await li(n,t.label),await li(i,t.label),!g.isFile()||g.isSymbolicLink()||h!==s||!Ed(a,m)||!Ed(a,g))throw new Error(`${t.label} changed while reading`);return{bytes:f,hash:zD("sha256").update(f).digest("hex"),size:f.length}}finally{await l.close()}}async function yE(t){let e=await Oh(t),r;try{r=new GD("utf-8",{fatal:!0}).decode(e.bytes)}catch(n){throw new Error(`${t.label} is not valid UTF-8`,{cause:n})}return{...e,text:r}}var Pd=A(()=>{"use strict";ke();vn()});import $r from"path";import{TextDecoder as eB}from"util";function Rd(t,e){if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`${e} must be an object`);return t}function Ad(t,e,r){let n=Object.keys(t).filter(i=>!e.has(i));if(n.length>0)throw new Error(`${r} has unknown field(s): ${n.join(", ")}`)}function bE(t){if(typeof t!="string")return!1;let e=new Date(t);return!Number.isNaN(e.valueOf())&&e.toISOString()===t}function Mh(t,e){if(typeof t!="string"||t.length===0||$r.isAbsolute(t)||/^(?:[A-Za-z]:|~|[\\/])/u.test(t)||t.split(/[\\/]/u).includes(".."))throw new Error(`${e} must stay inside the Native root`)}function Cd(t,e){if(typeof t!="string"||!/^[a-f0-9]{64}$/u.test(t))throw new Error(`${e} must be a SHA-256 hash`)}function vE(t,e){if(Mh(t,e),t.includes("\\")||t!==$r.posix.normalize(t)||t.split("/").includes(".")||t.endsWith("/")||Buffer.byteLength(t,"utf8")>1024)throw new Error(`${e} must be a normalized Native-relative ref`)}function aB(t,e){let r=Rd(t,`transaction operations[${e}]`);if(Ad(r,rB,`transaction operations[${e}]`),typeof r.id!="string"||!/^[a-z0-9][a-z0-9-]*$/u.test(r.id))throw new Error(`transaction operations[${e}].id is invalid`);if(r.type!=="write"&&r.type!=="remove"&&r.type!=="move")throw new Error(`transaction operation ${r.id} has an invalid type`);Mh(r.target,`transaction operation ${r.id} target`);for(let n of["source","staged","backup"])r[n]!==void 0&&Mh(r[n],`transaction operation ${r.id} ${n}`);if(r.type==="write"){if(r.staged===void 0||r.source!==void 0)throw new Error(`write operation ${r.id} requires staged and forbids source`)}else if(r.type==="remove"){if(r.source!==void 0||r.staged!==void 0)throw new Error(`remove operation ${r.id} forbids source and staged`)}else if(r.source===void 0||r.staged!==void 0||r.backup!==void 0)throw new Error(`move operation ${r.id} requires source and forbids staged and backup`);return r}function sB(t){let e=Rd(t,"Native Archive transaction journal");if(Ad(e,nB,"Native Archive transaction journal"),e.schema!=="comet.native.transaction.v2")throw new Error("Unsupported Native Archive transaction schema");if(typeof e.id!="string"||!/^[a-f0-9-]{8,}$/u.test(e.id))throw new Error("Native Archive transaction id is invalid");if(e.kind!=="archive")throw new Error("Native v2 transaction kind must be archive");if(typeof e.status!="string"||!wE.has(e.status))throw new Error("Native Archive transaction status is invalid");if(typeof e.change!="string"||!/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u.test(e.change))throw new Error("Native Archive transaction change name is invalid");if(!bE(e.createdAt))throw new Error("Native Archive transaction createdAt is invalid");if(Cd(e.preflightHash,"Native Archive transaction preflightHash"),!Array.isArray(e.operations)||e.operations.length>65)throw new Error("Native Archive transaction operations must be an array");let r=e.operations.map((s,c)=>{let l=Rd(s,`Archive transaction operations[${c}]`);if(Ad(l,iB,`Archive transaction operations[${c}]`),typeof l.id!="string"||!/^[a-z0-9][a-z0-9-]*$/u.test(l.id))throw new Error(`Archive transaction operations[${c}].id is invalid`);if(l.type!=="write"&&l.type!=="remove"&&l.type!=="move")throw new Error(`Archive transaction operation ${l.id} has an invalid type`);vE(l.target,`Archive transaction operation ${l.id} target`);for(let d of["source","staged","backup"])l[d]!==void 0&&vE(l[d],`Archive transaction operation ${l.id} ${d}`);if(l.expectedTargetHash!==null&&Cd(l.expectedTargetHash,`Archive transaction operation ${l.id} expectedTargetHash`),l.type==="write"){if(l.staged===void 0||l.source!==void 0||l.expectedSourceHash!==void 0)throw new Error(`Archive write operation ${l.id} requires staged and forbids source`);if(Cd(l.stagedHash,`Archive write operation ${l.id} stagedHash`),l.expectedTargetHash===null!=(l.backup===void 0))throw new Error(`Archive write operation ${l.id} backup must match target existence`)}else if(l.type==="remove"){if(l.source!==void 0||l.staged!==void 0||l.stagedHash!==void 0||l.expectedSourceHash!==void 0||l.backup===void 0||l.expectedTargetHash===null)throw new Error(`Archive remove operation ${l.id} requires a bound target and backup`)}else{if(l.source===void 0||l.staged!==void 0||l.stagedHash!==void 0||l.backup!==void 0||l.expectedTargetHash!==null)throw new Error(`Archive move operation ${l.id} requires source and an absent target`);Cd(l.expectedSourceHash,`Archive move operation ${l.id} expectedSourceHash`)}return l}),n=r.map(s=>s.id);if(new Set(n).size!==n.length)throw new Error("Native Archive transaction operation ids must be unique");let i=`runtime/transactions/${e.id}`,o=r.filter(s=>s.type==="move");if(o.length!==1||o[0].id!=="archive-change"||o[0].source!==`changes/${e.change}`||!new RegExp(`^archive/\\d{4}-\\d{2}-\\d{2}-${e.change}$`,"u").test(o[0].target)||r.at(-1)!==o[0])throw new Error("Native Archive transaction must end with its exact change move");let a=new Set;for(let s of r.slice(0,-1)){if(s.type==="move"||!/^specs\/[a-z][a-z0-9]*(?:-[a-z0-9]+)*\/spec\.md$/u.test(s.target)||a.has(s.target))throw new Error(`Native Archive transaction spec target is invalid: ${s.target}`);if(a.add(s.target),s.staged!==void 0&&!s.staged.startsWith(`${i}/staged/specs/`))throw new Error(`Native Archive transaction staged ref is invalid: ${s.staged}`);if(s.backup!==void 0&&!s.backup.startsWith(`${i}/backups/specs/`))throw new Error(`Native Archive transaction backup ref is invalid: ${s.backup}`)}return{schema:"comet.native.transaction.v2",id:e.id,kind:"archive",status:e.status,change:e.change,createdAt:e.createdAt,preflightHash:e.preflightHash,operations:r}}function cB(t){let e=Rd(t,"Native transaction journal");if(e.schema==="comet.native.transaction.v2")return sB(e);if(Ad(e,tB,"Native transaction journal"),e.schema!=="comet.native.transaction.v1")throw new Error("Unsupported Native transaction schema");if(typeof e.id!="string"||!/^[a-f0-9-]{8,}$/u.test(e.id))throw new Error("Native transaction id is invalid");if(e.kind!=="archive"&&e.kind!=="root-move")throw new Error("Native transaction kind is invalid");if(typeof e.status!="string"||!wE.has(e.status))throw new Error("Native transaction status is invalid");if(typeof e.projectRoot!="string"||!$r.isAbsolute(e.projectRoot)||typeof e.nativeRoot!="string"||!$r.isAbsolute(e.nativeRoot))throw new Error("Native transaction roots must be absolute paths");if(e.change!==void 0&&(typeof e.change!="string"||!/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u.test(e.change)))throw new Error("Native transaction change name is invalid");if(!bE(e.createdAt))throw new Error("Native transaction createdAt is invalid");if(!Array.isArray(e.operations))throw new Error("Native transaction operations must be an array");let r=e.operations.map(aB),n=r.map(i=>i.id);if(new Set(n).size!==n.length)throw new Error("Native transaction operation ids must be unique");return{schema:"comet.native.transaction.v1",id:e.id,kind:e.kind,status:e.status,projectRoot:e.projectRoot,nativeRoot:e.nativeRoot,...typeof e.change=="string"?{change:e.change}:{},createdAt:e.createdAt,operations:r}}function lB(t,e){if(!/^[a-f0-9-]{8,}$/u.test(e))throw new Error(`Invalid Native transaction id: ${e}`);return $r.join(t.transactionsDir,e)}function dB(t,e){let r=lB(t,e);return{directory:r,journal:$r.join(r,"transaction.json"),events:$r.join(r,"events.jsonl"),staged:$r.join(r,"staged"),backups:$r.join(r,"backups")}}async function uB(t,e){let r=dB(t,e);return await Promise.all(Object.values(r).map(n=>te(t.runtimeDir,n))),r}async function kE(t,e,r={}){let n=await uB(t,e),i=await Oh({root:t.runtimeDir,file:n.journal,maxBytes:null,label:`Native transaction journal ${e}`,hooks:r.hooks}),o=JSON.parse(oB.decode(i.bytes)),a=cB(o);if(a.id!==e)throw new Error(`Invalid Native transaction journal: ${e}`);return a}var tB,rB,nB,iB,wE,oB,SE=A(()=>{"use strict";ke();se();Pd();tB=new Set(["schema","id","kind","status","projectRoot","nativeRoot","change","createdAt","operations"]),rB=new Set(["id","type","source","target","staged","backup"]),nB=new Set(["schema","id","kind","status","change","createdAt","preflightHash","operations"]),iB=new Set(["id","type","source","target","staged","backup","expectedSourceHash","expectedTargetHash","stagedHash"]),wE=new Set(["prepared","applying","committed","rolling-back","rolled-back"]),oB=new eB("utf-8",{fatal:!0})});import{promises as pB}from"fs";import fB from"path";async function mB(t,e,r){let n;try{n=await pB.readdir(t.transactionsDir,{withFileTypes:!0})}catch(i){if(i.code==="ENOENT")return!1;throw i}for(let i of n)if(!(!i.isDirectory()||i.isSymbolicLink()))try{let o=await kE(t,i.name);if(o.id!==e&&o.status!=="committed"&&o.status!=="rolled-back")return!0}catch{return!0}for(let i of n)if(Ih(i.name))try{let o=await hE(t,i.name);if(!o||r?.kind===o.kind&&r.change===o.change)continue;if(gE(o))return!0}catch{return!0}return!1}async function hB(t,e){let r=Date.now()+5e3,n=fB.join(t.locksDir,"root-move.lock");for(;;)try{return await EN(t,"root-move",e)}catch(i){if(i.cause?.code!=="EEXIST")throw i;let a=await PN(n);if(a.status==="missing")continue;if(a.status==="stale"){let s=await CN(t,n,a);if(s.status==="removed"||s.status==="missing")continue;throw i}if(a.status!=="active"||Date.now()>=r)throw i;await new Promise(s=>setTimeout(s,5+Math.floor(Math.random()*11)))}}async function Ue(t,e,r,n){let i=await hB(t,e);try{if(await rd(t.projectRoot),await mB(t,n?.allowedTransactionId,n?.allowedPortableTransaction))throw new Error("Native transaction recovery is required before another mutation");return await r()}finally{try{await xN(i)}catch(o){process.stderr.write(`[comet] warning: could not release Native mutation lock ${i.file} (${o.message}); run comet native doctor --repair if commands start failing
`)}}}var it=A(()=>{"use strict";Tt();sh();Th();SE()});import{createHash as gB}from"crypto";function NE(t){return gB("sha256").update(t).digest("hex")}var Lh=A(()=>{"use strict"});import Bh from"path";function _d(t,e){return t.hash===e.hash&&t.recordCount===e.recordCount&&t.storedRecordCount===e.storedRecordCount&&t.stdoutBytes===e.stdoutBytes&&t.overflow===e.overflow}function MB(t,e){return t.hash===e.hash&&t.visitedNodeCount===e.visitedNodeCount&&t.recordCount===e.recordCount&&t.storedRecordCount===e.storedRecordCount&&t.encodedBytes===e.encodedBytes&&t.overflow===e.overflow&&t.unstable===e.unstable}function LB(t,e){return NE(`comet.native.snapshot-policy.v1
${JSON.stringify({include:t,exclude:e,hash:"sha256"})}`)}function Dh(t,e,r){let n=new Set(e),i=[...e];for(;i.length>0;){if(r&&!r())return null;let o=i.pop(),a=t[o];a&&(a.kind==="star"||a.kind==="globstar"||a.kind==="globstar-slash")&&!n.has(o+1)&&(n.add(o+1),i.push(o+1))}return n}function DB(t){let e=0;return()=>e>0?(e-=1,!0):t()?(e=63,!0):!1}function EE(t){let e=td(t,"Native snapshot pattern"),r=[];for(let n=0;n<e.length;n+=1){let i=e[n];i==="*"&&e[n+1]==="*"?(n+=1,e[n+1]==="/"?(n+=1,r.push({kind:"globstar-slash"})):r.push({kind:"globstar"})):i==="*"?r.push({kind:"star"}):i==="?"?r.push({kind:"question"}):r.push({kind:"literal",value:i})}return(n,i)=>{let o=i?DB(i):void 0;if(o&&!o())return!1;let a=Dh(r,new Set([0]),o);if(a===null)return!1;for(let s of n){if(o&&!o())return!1;let c=new Set;for(let l of a){if(o&&!o())return!1;let d=r[l];d&&(d.kind==="literal"&&d.value===s||d.kind==="question"&&s!=="/"?c.add(l+1):d.kind==="star"&&s!=="/"||d.kind==="globstar"?c.add(l):d.kind==="globstar-slash"&&(c.add(l),s==="/"&&c.add(l+1)))}if(a=Dh(r,c,o),a===null||a.size===0)return!1}return Dh(r,a,o)?.has(r.length)??!1}}function BB(t){if(t===void 0)return;let e=[...new Set(t.include.map(i=>td(i,"include")))].sort((i,o)=>i.localeCompare(o,"en")),r=[...new Set(t.exclude.map(i=>td(i,"exclude")))].sort((i,o)=>i.localeCompare(o,"en"));if(e.length===0)throw new Error("Native snapshot policy include must not be empty");let n=LB(e,r);if("hash"in t&&t.hash!==n)throw new Error("Native snapshot policy hash is invalid");return{manifest:{schema:"comet.native.snapshot-policy.v1",include:e,exclude:r,hash:n},includeMatchers:e.map(EE),excludeMatchers:r.map(EE),excludedDirectoryPrefixes:r.flatMap(i=>{if(!i.endsWith("/**"))return[];let o=i.slice(0,-3);return/[*?]/u.test(o)?[]:[o]}).sort((i,o)=>i.localeCompare(o,"en"))}}function mt(t,e){if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`${e} must be an object`);return t}function ht(t,e,r){let n=Object.keys(t).find(i=>!e.has(i));if(n)throw new Error(`${r} contains unknown field: ${n}`)}function No(t,e){if(!Number.isSafeInteger(t)||t<1)throw new Error(`${e} must be a positive integer`);return t}function Zt(t,e){if(!Number.isSafeInteger(t)||t<0)throw new Error(`${e} must be a non-negative integer`);return t}function CE(t,e){if(typeof t!="string"||t.length===0||t.includes("\\")||t.includes("\0"))throw new Error(`${e} must be a normalized project-relative path`);let r=Bh.posix.normalize(t);if(r!==t||Bh.posix.isAbsolute(t)||r===".."||r.startsWith("../"))throw new Error(`${e} must stay inside the project root`);return t}function FB(t,e){let r=mt(t,`Native snapshot entry ${e}`);ht(r,AB,`Native snapshot entry ${e}`);let n=CE(r.path,`Native snapshot entry ${e} path`);if(typeof r.hash!="string"||!jd.test(r.hash))throw new Error(`Native snapshot entry ${e} hash is invalid`);if(r.type!=="file")throw new Error(`Native snapshot entry ${e} type is invalid`);let i={path:n,hash:r.hash,size:Zt(r.size,`Native snapshot entry ${e} size`),type:"file"};if(r.gitObjectId!==void 0){if(typeof r.gitObjectId!="string"||!OB.test(r.gitObjectId))throw new Error(`Native snapshot entry ${e} gitObjectId is invalid`);i.gitObjectId=r.gitObjectId}return i}function KB(t,e){let r=mt(t,`Native snapshot omission ${e}`);if(ht(r,_B,`Native snapshot omission ${e}`),!TB.has(r.type))throw new Error(`Native snapshot omission ${e} type is invalid`);if(!$B.has(r.reason))throw new Error(`Native snapshot omission ${e} reason is invalid`);return{path:CE(r.path,`Native snapshot omission ${e} path`),size:r.size===null?null:Zt(r.size,`Native snapshot omission ${e} size`),type:r.type,reason:r.reason}}function HB(t){let e=mt(t,"Native snapshot omission overflow");if(ht(e,jB,"Native snapshot omission overflow"),typeof e.hash!="string"||!jd.test(e.hash))throw new Error("Native snapshot omission overflow hash is invalid");let r=`native-snapshot://omitted-overflow/${e.hash}`;if(e.ref!==r)throw new Error("Native snapshot omission overflow ref is invalid");return{ref:r,hash:e.hash,count:No(e.count,"Native snapshot omission overflow count")}}function So(t,e){let r=mt(t,e);if(ht(r,PB,e),typeof r.hash!="string"||!jd.test(r.hash))throw new Error(`${e} hash is invalid`);if(typeof r.overflow!="boolean")throw new Error(`${e} overflow flag is invalid`);let n=Zt(r.recordCount,`${e} recordCount`),i=Zt(r.storedRecordCount,`${e} storedRecordCount`),o=Zt(r.stdoutBytes,`${e} stdoutBytes`);if(i>n||!r.overflow&&i!==n)throw new Error(`${e} stored record count is inconsistent`);return{hash:r.hash,recordCount:n,storedRecordCount:i,stdoutBytes:o,overflow:r.overflow}}function xE(t){let e=mt(t,"Native Git selection evidence");if(ht(e,xB,"Native Git selection evidence"),e.schema!=="comet.native.git-selection.v1")throw new Error("Native Git selection evidence schema is invalid");if(e.status!=="overflow"&&e.status!=="changed"&&e.status!=="overflow-and-changed")throw new Error("Native Git selection evidence status is invalid");let r=So(e.stageBefore,"Native Git selection stageBefore"),n=So(e.combined,"Native Git selection combined"),i=So(e.stageAfter,"Native Git selection stageAfter"),o=So(e.finalStageBefore,"Native Git selection finalStageBefore"),a=So(e.finalCombined,"Native Git selection finalCombined"),s=So(e.finalStageAfter,"Native Git selection finalStageAfter"),c=[r,n,i,o,a,s].some(u=>u.overflow),l=!_d(r,i)||!_d(i,o)||!_d(n,a)||!_d(o,s),d=c&&l?"overflow-and-changed":c?"overflow":"changed";if(!c&&!l)throw new Error("Native Git selection evidence must describe an exceptional selection");if(e.status!==d)throw new Error("Native Git selection evidence status is inconsistent");return{schema:"comet.native.git-selection.v1",status:d,stageBefore:r,combined:n,stageAfter:i,finalStageBefore:o,finalCombined:a,finalStageAfter:s}}function PE(t,e){let r=mt(t,e);if(ht(r,RB,e),typeof r.hash!="string"||!jd.test(r.hash))throw new Error(`${e} hash is invalid`);if(typeof r.overflow!="boolean"||typeof r.unstable!="boolean")throw new Error(`${e} flags are invalid`);let n=Zt(r.visitedNodeCount,`${e} visitedNodeCount`),i=Zt(r.recordCount,`${e} recordCount`),o=Zt(r.storedRecordCount,`${e} storedRecordCount`),a=Zt(r.encodedBytes,`${e} encodedBytes`);if(o>i||!r.overflow&&o!==i)throw new Error(`${e} stored record count is inconsistent`);return{hash:r.hash,visitedNodeCount:n,recordCount:i,storedRecordCount:o,encodedBytes:a,overflow:r.overflow,unstable:r.unstable}}function WB(t){let e=mt(t,"Native physical selection evidence");if(ht(e,CB,"Native physical selection evidence"),e.schema!=="comet.native.physical-selection.v1")throw new Error("Native physical selection evidence schema is invalid");if(e.status!=="overflow"&&e.status!=="changed"&&e.status!=="overflow-and-changed")throw new Error("Native physical selection evidence status is invalid");let r=PE(e.before,"Native physical selection before"),n=PE(e.after,"Native physical selection after"),i=r.overflow||n.overflow,o=r.unstable||n.unstable||!MB(r,n);if(!i&&!o)throw new Error("Native physical selection evidence must describe an exceptional selection");let a=i&&o?"overflow-and-changed":i?"overflow":"changed";if(e.status!==a)throw new Error("Native physical selection evidence status is inconsistent");return{schema:"comet.native.physical-selection.v1",status:a,before:r,after:n}}function RE(t){let e=mt(t,"Native content snapshot manifest");if(ht(e,bB,"Native content snapshot manifest"),e.schema!=="comet.native.content-snapshot.v1")throw new Error("Unsupported Native content snapshot schema");if(!IB.has(e.origin))throw new Error("Native content snapshot origin is invalid");let r;if(e.capture!==void 0){let S=mt(e.capture,"Native content snapshot capture");if(ht(S,NB,"Native content snapshot capture"),S.provider!=="git"&&S.provider!=="physical-tree")throw new Error("Native content snapshot capture provider is invalid");let E=S.gitSelection===void 0?void 0:xE(S.gitSelection),N=S.physicalSelection===void 0?void 0:WB(S.physicalSelection),P=null;if(S.projection!==void 0){let _=mt(S.projection,"Native content snapshot projection");if(ht(_,EB,"Native content snapshot projection"),_.provider!=="git")throw new Error("Native content snapshot projection provider is invalid");P={provider:"git",..._.selection===void 0?{}:{selection:xE(_.selection)}}}if(S.provider==="git"){if(N||P)throw new Error("Native Git capture cannot include physical or projection evidence");r={provider:"git",...E?{gitSelection:E}:{}}}else{if(E)throw new Error("Native physical-tree capture cannot include direct Git evidence");if(N&&P)throw new Error("Native physical-tree capture cannot combine selection and projection");r=P?{provider:"physical-tree",projection:P}:{provider:"physical-tree",...N?{physicalSelection:N}:{}}}}if(typeof e.createdAt!="string"||Number.isNaN(Date.parse(e.createdAt)))throw new Error("Native content snapshot timestamp is invalid");if(typeof e.complete!="boolean")throw new Error("Native content snapshot complete flag is invalid");let n=mt(e.limits,"Native content snapshot limits");ht(n,kB,"Native content snapshot limits");let i={maxFiles:No(n.maxFiles,"Native snapshot maxFiles"),maxFileBytes:No(n.maxFileBytes,"Native snapshot maxFileBytes"),maxTotalBytes:No(n.maxTotalBytes,"Native snapshot maxTotalBytes"),maxManifestBytes:No(n.maxManifestBytes,"Native snapshot maxManifestBytes"),...n.maxDurationMs===void 0?{}:{maxDurationMs:No(n.maxDurationMs,"Native snapshot maxDurationMs")}},o;if(e.policy!==void 0){let S=mt(e.policy,"Native snapshot policy");if(ht(S,SB,"Native snapshot policy"),S.schema!=="comet.native.snapshot-policy.v1")throw new Error("Native snapshot policy schema is invalid");if(!Array.isArray(S.include)||!Array.isArray(S.exclude))throw new Error("Native snapshot policy patterns must be arrays");o=BB({include:S.include,exclude:S.exclude,hash:S.hash,schema:"comet.native.snapshot-policy.v1"}).manifest}if(!Array.isArray(e.entries)||!Array.isArray(e.omitted))throw new Error("Native content snapshot entries and omissions must be arrays");let a=e.entries.map(FB),s=e.omitted.map(KB),c=Zt(e.omittedCount,"Native content snapshot omittedCount"),l=e.omissionOverflow===void 0?void 0:HB(e.omissionOverflow);if(a.length>i.maxFiles)throw new Error("Native content snapshot exceeds its file-count limit");if(a.some(S=>S.size>i.maxFileBytes)||a.reduce((S,E)=>S+E.size,0)>i.maxTotalBytes)throw new Error("Native content snapshot exceeds its byte limits");if(new Set(a.map(S=>S.path)).size!==a.length)throw new Error("Native content snapshot contains duplicate paths");if(s.length>vB||c<s.length)throw new Error("Native content snapshot omission count is invalid");let d=c-s.length;if(d===0&&l||d>0&&l?.count!==d)throw new Error("Native content snapshot omission overflow is inconsistent");if(e.complete!==(c===0))throw new Error("Native content snapshot completeness is inconsistent");let u=s.filter(S=>S.reason==="git-enumeration-limit"),p=s.filter(S=>S.reason==="git-selection-changed");for(let S of[...u,...p])if(S.path!=="."||S.size!==null||S.type!=="directory")throw new Error("Native Git selection omission must use the project-root sentinel");if(u.length>1||p.length>1)throw new Error("Native Git selection omissions must not be duplicated");let f=r?.provider==="git"?r.gitSelection:r?.projection?.selection,m=f?.status==="overflow"||f?.status==="overflow-and-changed",g=f?.status==="changed"||f?.status==="overflow-and-changed";if(m!==(u.length===1))throw new Error("Native Git enumeration omission and selection evidence are inconsistent");if(g!==(p.length===1))throw new Error("Native Git selection-change omission and selection evidence are inconsistent");let h=s.filter(S=>S.reason==="physical-enumeration-limit"),w=s.filter(S=>S.reason==="physical-selection-changed");for(let S of[...h,...w])if(S.path!=="."||S.size!==null||S.type!=="directory")throw new Error("Native physical selection omission must use the project-root sentinel");if(h.length>1||w.length>1)throw new Error("Native physical selection omissions must not be duplicated");let y=r?.physicalSelection,v=y?.status==="overflow"||y?.status==="overflow-and-changed",b=y?.status==="changed"||y?.status==="overflow-and-changed";if(v!==(h.length===1))throw new Error("Native physical enumeration omission and evidence are inconsistent");if(b!==(w.length===1))throw new Error("Native physical selection-change omission and evidence are inconsistent");return{schema:"comet.native.content-snapshot.v1",origin:e.origin,...r?{capture:r}:{},createdAt:e.createdAt,complete:e.complete,limits:i,...o?{policy:o}:{},entries:a,omitted:s,omittedCount:c,...l?{omissionOverflow:l}:{}}}function VB(t,e){if(!wB.test(e))throw new Error(`Invalid Native change name: ${e}`);return Bh.join(rn(t,e),"baseline-manifest.json")}async function AE(t,e){let r=VB(t,e),n=Wn(t,r);await te(n,r);try{let i=await yE({root:n,file:r,maxBytes:null,label:"Native baseline snapshot manifest"});return RE(JSON.parse(i.text))}catch(i){if(i.code==="ENOENT")return null;throw i}}var UX,vB,wB,bB,kB,SB,NB,EB,xB,PB,CB,RB,AB,_B,jB,IB,TB,$B,jd,OB,JX,YX,XX,QX,ZX,Fh=A(()=>{"use strict";no();ke();Tt();Lh();vn();se();Pd();Jl();UX={maxFiles:1e4,maxFileBytes:1024*1024*1024,maxTotalBytes:1024*1024*1024,maxManifestBytes:1024*1024*1024},vB=1e3,wB=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u,bB=new Set(["schema","origin","capture","createdAt","complete","limits","entries","omitted","omittedCount","omissionOverflow","policy"]),kB=new Set(["maxFiles","maxFileBytes","maxTotalBytes","maxManifestBytes","maxDurationMs"]),SB=new Set(["schema","include","exclude","hash"]),NB=new Set(["provider","gitSelection","physicalSelection","projection"]),EB=new Set(["provider","selection"]),xB=new Set(["schema","status","stageBefore","combined","stageAfter","finalStageBefore","finalCombined","finalStageAfter"]),PB=new Set(["hash","recordCount","storedRecordCount","stdoutBytes","overflow"]),CB=new Set(["schema","status","before","after"]),RB=new Set(["hash","visitedNodeCount","recordCount","storedRecordCount","encodedBytes","overflow","unstable"]),AB=new Set(["path","hash","size","type","gitObjectId"]),_B=new Set(["path","size","type","reason"]),jB=new Set(["ref","hash","count"]),IB=new Set(["change-created","legacy-migration","explicit"]),TB=new Set(["file","directory","other"]),$B=new Set(["file-size","file-count","total-size","manifest-size","changed-during-read","unreadable","gitlink-unavailable","gitlink-dirty","gitlink-changed","legacy-gitlink-boundary","git-enumeration-limit","git-selection-changed","physical-enumeration-limit","physical-selection-changed"]),jd=/^[a-f0-9]{64}$/u,OB=/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/u,JX=64*1024,YX=64*1024,XX={maxRecords:2e4,maxBytes:8*1024*1024,maxRecordBytes:64*1024},QX={maxNodes:2e4,maxBytes:8*1024*1024,maxPathBytes:64*1024};ZX=(1n<<256n)-1n});import{promises as fF}from"node:fs";import mF from"node:path";function Wd(t,e,r=""){if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`${e} must be an object${r}`);return t}function Hd(t,e,r){let n=Object.keys(t).filter(o=>!e.has(o)),i=[...e].filter(o=>!(o in t));if(n.length>0||i.length>0){let o=[...i.length>0?[`missing ${i.join(", ")}`]:[],...n.length>0?[`unexpected ${n.join(", ")}`]:[],`expected ${[...e].join(", ")}`];throw new Error(`${r} fields are invalid: ${o.join("; ")}`)}}function mx(t,e){if(!Array.isArray(t)||!t.every(r=>typeof r=="string"))throw new Error(`${e} must be an array of strings`);return[...new Set(t)].sort((r,n)=>r.localeCompare(n,"en"))}function bF(t){let e=new Map(t.map(o=>[o.name,o])),r=new Set,n=new Set,i=o=>{if(!n.has(o)){if(r.has(o))throw new Error(`Native children dependency cycle includes ${o}`);r.add(o);for(let a of e.get(o).depends_on)i(a);r.delete(o),n.add(o)}};for(let o of t)i(o.name)}function hx(t,e,r=e){let n=new Set(e);for(let a of t){let s=a.covers.filter(c=>!n.has(c));if(s.length>0)throw new Error(`Native child ${a.name} covers unknown acceptance: ${s.join(", ")}`)}let i=new Set(t.flatMap(a=>a.covers)),o=r.filter(a=>!i.has(a));if(o.length>0)throw new Error(`Native children do not cover parent acceptance: ${o.join(", ")}`)}function wx(t,e,r){let n={missing:[],extra:[],mismatched:[],uncovered:[],unknownCovers:[]};if(t.schema===dg&&t.acceptance_index){let i=r.requiredAcceptanceIds??e??[],o=r.allowedAcceptanceIds??i,a=Object.keys(t.acceptance_index);n.missing=i.filter(l=>!(l in t.acceptance_index)),n.extra=a.filter(l=>!o.includes(l));let s=new Map((r.acceptanceCatalog??[]).map(l=>[l.id,l]));for(let l of a){let d=s.get(l),u=t.acceptance_index[l];d&&u&&(u.source!==d.source||u.text!==d.text)&&n.mismatched.push(l)}let c=new Set(a);for(let l of t.children)n.unknownCovers.push(...l.covers.filter(d=>!c.has(d)));return n.uncovered=a.filter(l=>!gx(t.children,l)),yx(n)?n:null}if(t.schema===mi&&e){let i=new Set(e);for(let o of t.children)n.unknownCovers.push(...o.covers.filter(a=>!i.has(a)));return n.uncovered=e.filter(o=>!gx(t.children,o)),yx(n)?n:null}return null}function gx(t,e){return t.some(r=>r.covers.includes(e))}function yx(t){return t.missing.length>0||t.extra.length>0||t.mismatched.length>0||t.uncovered.length>0||t.unknownCovers.length>0}function gi(t){let e=new Set(t.acceptance.map(({id:i})=>i)),r=new Set(t.acceptance.filter(({source:i})=>i===t.brief).map(({id:i})=>i)),n=new Set(r);for(let i of t.history.filter(({outcome:o})=>o==="fail"))for(let o of i.unresolved_ids)e.has(o)&&n.add(o);if(t.loop.stage==="repairing"&&t.verification_result==="fail"){let i=[...t.history].reverse().find(({outcome:o})=>o==="fail");for(let o of i?.unresolved_ids??[])r.add(o)}return{acceptanceCatalog:t.acceptance,requiredAcceptanceIds:[...r],allowedAcceptanceIds:[...n]}}function kF(t){let e=Wd(t,"Native children acceptance_index",' keyed by acceptance ID, for example A1: { source: brief.md, text: "Full acceptance text" }'),r={};for(let[n,i]of Object.entries(e)){let o=Wd(i,`Native children acceptance_index.${n}`);if(Hd(o,new Set(["source","text"]),`Native children acceptance_index.${n}`),typeof o.source!="string"||o.source.length===0)throw new Error(`Native children acceptance_index.${n}.source must be a non-empty string`);if(typeof o.text!="string"||o.text.length===0)throw new Error(`Native children acceptance_index.${n}.text must be a non-empty string`);r[n]={source:o.source,text:o.text}}return r}function SF(t,e,r){let n=r.requiredAcceptanceIds??e??[],i=r.allowedAcceptanceIds??n,o=Object.keys(t),a=n.filter(l=>!(l in t)),s=o.filter(l=>!i.includes(l));if(a.length>0||s.length>0)throw new Error(`Native children acceptance_index must match the required acceptance: missing ${a.join(", ")||"none"}; extra ${s.join(", ")||"none"}`);let c=new Map((r.acceptanceCatalog??[]).map(l=>[l.id,l]));for(let l of o){let d=c.get(l);if(!d)continue;let u=t[l];if(u.source!==d.source||u.text!==d.text){let p=["source","text"].filter(f=>u[f]!==d[f]);throw new Error(`Native children acceptance_index.${l} does not match the acceptance catalog: copy ${p.join(", ")} exactly from the current acceptance catalog`)}}}function bx(t,e,r={}){let n=(0,vx.parseDocument)(t,{uniqueKeys:!0});if(n.errors.length>0)throw new Error(`Native children contract is invalid YAML: ${n.errors[0].message}`);let i=Wd(n.toJS({mapAsMap:!1}),"Native children contract"),o=i.schema;if(o!==mi&&o!==hi)throw Hd(i,fx,"Native children contract"),new Error(`Native children schema must be ${mi} or ${hi}`);let a=o===mi?"v1":"acceptance_index"in i?"indexed-v2":"summary-v2",s=a.replace("-"," ");if(Hd(i,a==="indexed-v2"?gF:fx,"Native children contract"),!Array.isArray(i.children)||i.children.length===0)throw new Error("Native children must be a non-empty array");let c=i.children.map((p,f)=>{let m=Wd(p,`Native child ${f}`);if(Hd(m,a==="indexed-v2"?wF:a==="summary-v2"?vF:yF,`Native ${s} child fields (child ${f})`),typeof m.name!="string"||!hF.test(m.name))throw new Error(`Native child ${f} name is invalid`);let g=a==="summary-v2";if(g){if(typeof m.summary!="string"||m.summary.trim().length===0)throw new Error(`Native child ${m.name} summary must be a non-empty string`);if(m.summary.length>2e3)throw new Error(`Native child ${m.name} summary exceeds 2000 characters`)}return{name:m.name,summary:g?m.summary:null,depends_on:mx(m.depends_on,`Native child ${m.name} depends_on`),covers:a==="indexed-v2"||a==="v1"?mx(m.covers,`Native child ${m.name} covers`):[]}}),l=c.map(({name:p})=>p);if(new Set(l).size!==l.length)throw new Error("Native child names must be unique");let d=new Set(l);for(let p of c){let f=p.depends_on.filter(m=>!d.has(m));if(f.length>0)throw new Error(`Native child ${p.name} depends on unknown child: ${f.join(", ")}`)}bF(c);let u=r.policy==="advisory";if(o===dg){if(a==="indexed-v2"){let p=kF(i.acceptance_index);u||SF(p,e,r);let f=Object.keys(p);return u||hx(c,f,f),{schema:hi,acceptance_index:p,children:c}}return{schema:hi,children:c}}return e&&!u&&hx(c,e),{schema:mi,children:c}}async function yi(t){let e=mF.join(t.changeDir,lg);try{await fF.lstat(e)}catch(a){if(a.code==="ENOENT")return null;throw a}let r=await ne({root:t.changeDir,ref:lg}),n=t.policy==="advisory",i=n?{...t.validation,policy:"advisory"}:t.validation??{},o=bx(r.text,t.acceptanceIds,i);return{contract:o,hash:r.hash,size:r.size,drift:n?wx(o,t.acceptanceIds,t.validation??{}):null}}var vx,lg,mi,hi,dg,hF,fx,gF,yF,vF,wF,Vd=A(()=>{"use strict";vx=Ce(Ne(),1);wn();lg="children.yaml",mi="comet.native.children.v1",hi="comet.native.children.v2",dg=hi,hF=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u,fx=new Set(["schema","children"]),gF=new Set(["schema","acceptance_index","children"]),yF=new Set(["name","depends_on","covers"]),vF=new Set(["name","summary","depends_on"]),wF=new Set(["name","depends_on","covers"])});var Es=A(()=>{"use strict"});var qd=A(()=>{"use strict";Nh();Es()});var jo=A(()=>{"use strict";nt();qd()});var Cn=A(()=>{"use strict";ke();nt();Vd();se();jo()});import{spawn as PF}from"node:child_process";import ug from"node:path";async function pg(t){let e=t.pid;if(e===void 0){t.kill("SIGKILL");return}if(process.platform==="win32"){let r=process.env.SystemRoot??process.env.WINDIR,n=r&&ug.win32.isAbsolute(r)?ug.win32.resolve(r):"C:\\Windows",i=ug.win32.join(n,"System32","taskkill.exe"),o=()=>new Promise(a=>{let s=!1,c=null,l=null,d=(u,p=!1)=>{s||(s=!0,l&&clearTimeout(l),p&&c?.kill("SIGKILL"),a(u))};try{c=PF(i,["/pid",String(e),"/t","/f"],{stdio:"ignore",windowsHide:!0}),c.once("error",()=>d(!1)),c.once("close",u=>d(u===0)),l=setTimeout(()=>d(!1,!0),CF)}catch{d(!1)}});for(let a=0;a<RF;a+=1)if(await o()){t.kill("SIGKILL");return}t.kill("SIGKILL"),t.stdin?.destroy(),t.stdout?.destroy(),t.stderr?.destroy();return}try{process.kill(-e,"SIGKILL")}catch(r){if(r.code!=="ESRCH")throw r}t.kill("SIGKILL")}var CF,RF,fg=A(()=>{"use strict";CF=1e3,RF=2});var Ud=A(()=>{"use strict"});var Jd=A(()=>{"use strict";La();fg();Ud()});var Sx=A(()=>{"use strict";lt();Jd();nt()});var mg=A(()=>{"use strict";lt();ke()});var Rx,gg=A(()=>{"use strict";nt();Fh();Rx=1024*1024});var Ax=A(()=>{"use strict";nt();Ud();Jl();gg()});var _x,UF,JF,YF,hZ,XF,gZ,jx=A(()=>{"use strict";nt();_x="scoped-text-safety",UF=1,JF=Object.freeze({maxFiles:256,maxFileBytes:2*1024*1024,maxTotalBytes:8*1024*1024,maxIssues:128}),YF="comet.native.checker-policy.v1",hZ=ie(YF,{policy:_x,version:UF,limits:JF,checks:["conflict-marker","space-before-tab","trailing-whitespace"],binaryHandling:"skip-and-count"}),XF=["contract-before-does-not-match-scope","implementation-before-does-not-match-scope","contract-changed-during-check","implementation-changed-during-check","contract-after-does-not-match-scope","implementation-after-does-not-match-scope"],gZ=new Set(XF)});var Ix=A(()=>{"use strict";nt();jx();Ud()});var QF,OZ,Tx=A(()=>{"use strict";ke();se();vn();gg();Ax();Ix();QF=Rx,OZ=3*QF});se();import y2 from"path";import{realpathSync as wA}from"fs";import{fileURLToPath as v2,pathToFileURL as w2}from"url";import Qb from"node:path";import{fileURLToPath as P$}from"node:url";function Gf(t){return t.charCodeAt(0)===65279?t.slice(1):t}async function Uf(t=2e3){return process.stdin.isTTY?{text:""}:!Number.isFinite(t)||t<1?{text:null}:process.stdin.readableEnded?{text:""}:await new Promise(e=>{let r=!1,n=0,i=[],o=setTimeout(()=>a({text:null}),Math.ceil(t)),a=u=>{r||(r=!0,clearTimeout(o),process.stdin.removeListener("data",s),process.stdin.removeListener("end",c),process.stdin.removeListener("close",l),process.stdin.removeListener("error",d),process.stdin.pause(),e(u))},s=u=>{let p=Buffer.isBuffer(u)?u:Buffer.from(u),f=1048576-n;if(f<=0){a({text:null});return}let m=p.subarray(0,f);i.push(m),n+=m.length,p.length>m.length&&a({text:null})},c=()=>a({text:Buffer.concat(i,n).toString("utf8")}),l=()=>{process.stdin.readableEnded||a({text:null})},d=()=>a({text:null});process.stdin.on("data",s),process.stdin.once("end",c),process.stdin.once("close",l),process.stdin.once("error",d),o.unref(),process.stdin.resume()})}var C$=new Set(["applypatch","create","createfile","deletefile","edit","editfile","patch","searchreplace","strreplaceeditor","write","writefile","writefiletool"]),R$=new Set(["glob","grep","listfiles","read","readfile","search","view"]),Zb=["file_path","filePath","path","target_file","targetFile"],ek=["file_paths","filePaths","paths","files","targets"],tk=["operations","edits"],A$=["patch","diff","patchText","patch_text","changes"],Xf=new Set(["claude","codex","windsurf","github-copilot","gemini","amazon-q","qwen","kiro","codebuddy","workbuddy","oh-my-pi","qoder","trae","trae-cn","grok","dsh","zcode"]);function Qf(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}function Jf(t){return t.toLowerCase().replace(/[^a-z0-9]+/gu,"")}function _$(t){for(let e of["tool_name","toolName","tool","name"]){let r=t[e];if(typeof r=="string"&&r.trim())return r.trim()}return null}function j$(t){for(let e of["cwd","working_directory","workspaceRoot"]){let r=t[e];if(!(typeof r!="string"||!r.trim()||!Qb.isAbsolute(r.trim())))return Qb.resolve(r.trim())}}function I$(t){for(let e of["session_id","sessionId","conversation_id","conversationId"]){let r=t[e];if(typeof r=="string"&&r.trim())return r.trim().slice(0,256)}}function T$(t){for(let e of["hook_event_name","hookEventName","event_name","eventName"]){let r=t[e];if(typeof r=="string"&&r.trim())return Jf(r)}}function $$(t){for(let e of["task","prompt","user_prompt","userPrompt"]){let r=t[e];if(typeof r=="string"&&r.trim())return r.trim()}}function O$(t){if(typeof t!="string")return t;let e=t.trim();if(!e.startsWith("{")&&!e.startsWith("["))return t;try{return JSON.parse(e)}catch{return t}}function M$(t){for(let e of["tool_input","toolInput","toolArgs","tool_args","arguments"])if(t[e]!==void 0)return O$(t[e]);return t}function Yf(t){let e=[],r=[/^\*\*\* (?:Add|Update|Delete) File:\s+(.+?)\s*$/gmu,/^\+\+\+\s+(?:b\/)?(.+?)\s*$/gmu];for(let n of r)for(let i of t.matchAll(n)){let o=i[1]?.trim();o&&o!=="/dev/null"&&e.push(o)}return e}function qn(t){return[...new Set(t.flatMap(e=>{let r=e.trim();if(!r)return[];if(/^file:/iu.test(r))try{return[P$(r)]}catch{return[r]}return/^[A-Za-z]:/u.test(r)?[r]:/^[A-Za-z][A-Za-z0-9+.-]*:/u.test(r)?[]:[r]}))]}function Vn(t,e){if(typeof e=="string"){let r=e.trim();r&&t.push(r);return}if(Array.isArray(e)){for(let r of e)Vn(t,r);return}if(Qf(e)){for(let r of Zb)Vn(t,e[r]);for(let r of ek)Vn(t,e[r]);for(let r of tk)Vn(t,e[r])}}function L$(t,e){let r=[],n=[e,t].filter(Qf);for(let i of n){for(let o of Zb)Vn(r,i[o]);for(let o of ek)Vn(r,i[o]);for(let o of tk)Vn(r,i[o]);for(let o of A$){let a=i[o];typeof a=="string"&&r.push(...Yf(a))}}return typeof e=="string"&&r.push(...Yf(e)),qn(r)}function Ca(t,e){if(e?.trim()){let s=qn([e]);return{intent:s.length>0?"write":"non-write",targets:s,toolName:null}}if(!t.trim())return{intent:"unknown",targets:[],toolName:null};let r;try{r=JSON.parse(Gf(t))}catch{let s=Yf(t);if(s.length>0){let c=qn(s);return{intent:c.length>0?"write":"non-write",targets:c,toolName:"apply_patch"}}return{intent:"unknown",targets:[],toolName:null}}if(!Qf(r))return{intent:"unknown",targets:[],toolName:null};let n=_$(r),i=L$(r,M$(r)),o=j$(r),a=I$(r);if(T$(r)==="beforeagentstart"){let s=$$(r);return{intent:"context",targets:[],toolName:null,...s?{task:s}:{},...o?{cwd:o}:{},...a?{sessionId:a}:{}}}return n&&C$.has(Jf(n))?{intent:i.length>0?"write":"unknown",targets:i,toolName:n,...o?{cwd:o}:{},...a?{sessionId:a}:{}}:n&&R$.has(Jf(n))?{intent:"non-write",targets:[],toolName:n,...o?{cwd:o}:{},...a?{sessionId:a}:{}}:n?{intent:"unknown",targets:i,toolName:n,...o?{cwd:o}:{},...a?{sessionId:a}:{}}:{intent:i.length>0?"write":"unknown",targets:i,toolName:null,...o?{cwd:o}:{},...a?{sessionId:a}:{}}}async function Zf(t={}){let e=process.env.FILE_PATH;if(e?.trim()||process.stdin.isTTY)return Ca("",e);let r=await(t.readStdin??Uf)();r.text===null&&(process.stderr.write(`[COMET-HOOK] stdin timeout: the host did not provide hook input within the expected window
`),process.exit(1));try{return Ca(r.text,e)}catch{return Ca("",e)}}function rk(t,e){return Xf.has(t)?t==="github-copilot"?{exitCode:0,stdout:e.allowed?`${JSON.stringify(e.context?{additionalContext:e.context}:{})}
`:`${JSON.stringify({permissionDecision:"deny",permissionDecisionReason:e.reason})}
`,stderr:e.diagnostic?`${e.diagnostic}
`:""}:e.allowed&&e.context?{exitCode:0,stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",additionalContext:e.context}})}
`,stderr:e.diagnostic?`${e.diagnostic}
`:""}:e.allowed?{exitCode:0,stdout:"",stderr:e.diagnostic?`${e.diagnostic}
`:""}:{exitCode:2,stdout:"",stderr:`${e.reason}
`}:{exitCode:64,stdout:"",stderr:`Unsupported Comet Hook platform: ${t}
`}}yr();import tp from"path";import{promises as zl}from"fs";import rt from"path";yr();import{promises as a0}from"fs";import ze from"path";import{promises as B$}from"fs";async function rm(t){try{return await B$.access(t),!0}catch(e){if(F$(e))return!1;throw e}}function F$(t){let e=t?.code;return e==="ENOENT"||e==="ENOTDIR"}ge();qe();ro();Q();var dn=class extends Error{code="classic-layout-unavailable";constructor(e="Classic artifact layout is unavailable from .comet/config.yaml"){super(e),this.name="ClassicLayoutUnavailableError"}},Sk=".comet/config.yaml";function s0(t){let e=t?.code;return e==="ENOENT"||e==="ENOTDIR"}async function c0(t){await $(t,Sk,{label:Sk,expected:"file"})}function ja(t,e){let r=ze.resolve(t),n=e==="docs"?ze.join(r,"docs"):r,i=ze.join(n,"openspec"),o=ze.join(r,"docs","superpowers");return{projectRoot:r,artifactLayout:e,openSpecBase:n,openSpecRoot:i,changesDir:ze.join(i,"changes"),archiveDir:ze.join(i,"changes","archive"),specsDir:ze.join(i,"specs"),superpowersRoot:o,superpowersSpecsDir:ze.join(o,"specs"),superpowersPlansDir:ze.join(o,"plans"),superpowersReportsDir:ze.join(o,"reports")}}async function Nk(t){await c0(t);let e=await br(t,{allowPartialProject:!0,allowMissingNativeFields:!0});if(!e?.config)throw new dn;if(!(e.config.workflows??[e.config.default_workflow]).includes("classic"))throw new dn("Classic artifact layout is unavailable because Classic is not enabled");return e.classic?.artifact_layout??"legacy"}async function Ek(t,e){return ja(t,e??await Nk(t))}async function l0(t){try{return await a0.lstat(t),!0}catch(e){if(s0(e))return!1;throw e}}async function d0(t,e){let r=await Ek(t,e),n=r.artifactLayout==="legacy"?"docs":"legacy",i=ja(t,n).openSpecRoot,[o,a]=await Promise.all([$(r.projectRoot,pe(r.projectRoot,r.openSpecRoot),{label:"Configured Classic OpenSpec root",expected:"directory"}),l0(i)]),s=o.exists;return{paths:r,configuredRootExists:s,alternateRoot:i,alternateRootExists:a,dualRoots:s&&a}}async function u0(t){let e=[t.openSpecRoot,t.changesDir,t.archiveDir,t.specsDir,t.superpowersRoot,t.superpowersSpecsDir,t.superpowersPlansDir,t.superpowersReportsDir];for(let r of e){let n=pe(t.projectRoot,r);await $(t.projectRoot,n,{label:`Classic managed physical path ${n}`,expected:"directory"})}}async function un(t,e){let r=await d0(t,e);if(await u0(r.paths),!r.configuredRootExists){let n=pe(r.paths.projectRoot,r.paths.openSpecRoot),i=pe(r.paths.projectRoot,r.alternateRoot);throw new dn(`Configured Classic OpenSpec root is missing: ${n} (alternate ${i} is ${r.alternateRootExists?"present":"missing"})`)}return r.paths}async function Nl(t,e){let r=ze.join(ze.resolve(t),".comet","classic-root-move.json");if(await rm(r))throw new Error("Classic root move transaction is incomplete; inspect it with comet doctor and recover it explicitly before writing");let n=await un(t,e);if(!await rm(n.openSpecRoot))throw new Error(`Configured Classic OpenSpec root is missing: ${pe(n.projectRoot,n.openSpecRoot)}`);return n}function pe(t,e){return ze.relative(ze.resolve(t),e).replaceAll("\\","/")}import{promises as m0}from"fs";import Ta from"path";Ct();ge();Q();import Ia from"path";var ym=Number.MAX_SAFE_INTEGER;function xk(t,e,r){let n=Ia.resolve(t),i=Ia.isAbsolute(e)?Ia.resolve(e):Ia.resolve(n,e),o=Ia.relative(n,i).replaceAll("\\","/");return{root:n,relative:Yi(o,r),target:i}}async function pn(t,e,r){let n=xk(t,e,r.label);return $(n.root,n.relative,r)}async function Gn(t,e,r){return(await pn(t,e,{label:r.label,expected:r.expected??"any"})).exists}async function Pk(t,e,r,n){return await Gn(t,e,{label:r,expected:"file"})?(await Ck(t,e,{label:r,hooks:n})).byteLength>0:!1}async function fn(t,e,r){return(await Ck(t,e,r)).toString("utf8")}async function Ck(t,e,r){let n=xk(t,e,r.label);return(await O(n.root,n.relative,r.maxBytes??ym,{label:r.label,hooks:r.hooks})).bytes}function xl(t){return t?/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u.test(t)?t.includes("..")?"Change name cannot contain '..' (path traversal not allowed)":null:`Invalid change name: '${t}'
Valid format: lowercase kebab-case (a-z, 0-9, single hyphens)`:"Change name cannot be empty"}function $a(t){let e=xl(t);if(e)throw new Error(e)}function h0(t,e){return{label:pe(t,e),directory:e}}async function El(t,e,r){let n=h0(t,e);if(!(await pn(t,e,{label:r,expected:"directory"})).exists)return{change:n,exists:!1,stateExists:!1};let o=await pn(t,Ta.join(e,".comet.yaml"),{label:`${r} state`,expected:"file"});return{change:n,exists:!0,stateExists:o.exists}}function Rk(t,e){let r=e.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&");return new RegExp(`^\\d{4}-\\d{2}-\\d{2}-${r}$`,"u").test(t)}async function g0(t,e,r,n={}){if(!n.skipExactCompatibility){let a=await El(t,Ta.join(e,r),`Classic archived change ${r}`);if(a.exists)return a.change}if(!(await pn(t,e,{label:"Classic archive directory",expected:"directory"})).exists)return null;let o=[];for(let a of await m0.readdir(e,{withFileTypes:!0})){if(!Rk(a.name,r))continue;let s=await El(t,Ta.join(e,a.name),`Classic archived change ${a.name}`);s.exists&&s.stateExists&&o.push(s.change)}return o.sort((a,s)=>s.directory.localeCompare(a.directory))[0]??null}async function Un(t,e=process.cwd()){$a(t);let r=await un(e),n=await El(r.projectRoot,Ta.join(r.changesDir,t),`Classic active change ${t}`);return{...n.change,exists:n.exists,stateExists:n.stateExists}}async function vm(t,e=process.cwd(),r={}){$a(t);let n=await un(e);if(r.preferredArchiveName!==void 0){let i=r.preferredArchiveName;if(i!==t&&!Rk(i,t))throw new Error(`Classic preferred archive name '${i}' does not belong to change '${t}'`);let o=await El(n.projectRoot,Ta.join(n.archiveDir,i),`Classic preferred archived change ${i}`);return o.exists&&o.stateExists?o.change:null}return g0(n.projectRoot,n.archiveDir,t,r)}import{promises as wm}from"fs";import et from"path";function Ak(t,e){let r=et.relative(t,e);return r===""||r!==".."&&!r.startsWith(`..${et.sep}`)&&!et.isAbsolute(r)}async function y0(t){let e=et.resolve(t),r=et.parse(e).root,n=[],i=e;for(;i&&i!==r;)try{let o=await wm.realpath(i);return et.join(o,...n.reverse())}catch(o){let a=o.code;if(a!=="ENOENT"&&a!=="ENOTDIR")throw o;n.push(et.basename(i)),i=et.dirname(i)}try{let o=await wm.realpath(r);return et.join(o,...n.reverse())}catch{return null}}async function Pl(t,e){let r=et.resolve(t),n=await wm.realpath(r),i=[],o=[];for(let a of qn(e)){let s=et.isAbsolute(a)?et.resolve(a):et.resolve(r,a),c=await y0(s);((c?Ak(n,c):Ak(r,s))?i:o).push(a)}return{projectTargets:i,externalTargets:o}}Oa();no();var Hm=Ce(Ne(),1);yr();import{execFileSync as xS}from"child_process";import{promises as DO}from"fs";import PS from"path";import xr from"path";import{promises as _O}from"node:fs";import{AsyncLocalStorage as jO}from"node:async_hooks";ul();Ka();import{randomUUID as qk}from"node:crypto";import{promises as Rt}from"node:fs";import zk from"node:os";import oo from"node:path";var W0=3e4,V0=20,q0=5*6e4,z0=1e4,gn=class{filePath;lockOptions;constructor(e,r={}){this.filePath=oo.resolve(e),this.lockOptions={...r}}async read(){try{return await Rt.readFile(this.filePath,"utf8")}catch(e){if(e.code==="ENOENT")return null;throw e}}async write(e){await Rt.mkdir(oo.dirname(this.filePath),{recursive:!0});let r=`${this.filePath}.${process.pid}.${qk()}.tmp`;await Rt.writeFile(r,e,"utf8"),await Rt.rename(r,this.filePath)}async withLock(e){return Ha(`${this.filePath}.lock`,e,this.lockOptions)}};async function Ha(t,e,r={}){let n=oo.resolve(t);await Rt.mkdir(oo.dirname(n),{recursive:!0});let i=Date.now(),o=r.timeoutMs??W0,a=r.retryMs??V0,s=r.malformedLockStaleMs??q0,c=await Yn(process.pid),l={pid:process.pid,nonce:qk(),createdAt:Date.now(),hostname:zk.hostname(),...c===null?{}:{processIdentity:c}},d=!1;for(;!d;){let u;try{u=await Rt.open(n,"wx"),await u.writeFile(JSON.stringify(l),"utf8"),d=!0}catch(p){if(p.code!=="EEXIST")throw p;if(await G0(n,s))continue;if(Date.now()-i>=o)throw new Error(`Timed out waiting for file lock: ${n}`,{cause:p});await new Promise(f=>setTimeout(f,a))}finally{await u?.close()}}try{return await e()}finally{await U0(n,l.nonce)}}async function G0(t,e){let r,n;try{[r,n]=await Promise.all([Rt.readFile(t,"utf8"),Rt.stat(t)])}catch(o){return o.code==="ENOENT"}let i=Gk(r);if(i!==null&&(i.hostname!==void 0&&i.hostname!==zk.hostname()||await Fa(i.pid,i.processIdentity)!=="dead"))return!1;if(i===null){let o=r.trim().length===0?z0:e;if(Date.now()-Number(n.mtimeMs)<o)return!1}try{return await Rt.readFile(t,"utf8")!==r?!1:(await Rt.rm(t),!0)}catch(o){return o.code==="ENOENT"}}async function U0(t,e){try{if(Gk(await Rt.readFile(t,"utf8"))?.nonce!==e)return;await to(t)}catch(r){let n=r.code;if(n==="ENOENT")return;process.stderr.write(`[comet] warning: could not remove lock file ${t} (${n??r}); it will be recovered automatically
`)}}function Gk(t){try{let e=JSON.parse(t);return Number.isSafeInteger(e.pid)&&Number(e.pid)>0&&typeof e.nonce=="string"&&e.nonce.length>0&&typeof e.createdAt=="number"&&Number.isFinite(e.createdAt)&&(e.hostname===void 0||typeof e.hostname=="string"&&e.hostname.length>0)&&(e.processIdentity===void 0||typeof e.processIdentity=="string"&&e.processIdentity.length>0)?{pid:Number(e.pid),nonce:e.nonce,createdAt:e.createdAt,...e.hostname===void 0?{}:{hostname:e.hostname},...e.processIdentity===void 0?{}:{processIdentity:e.processIdentity}}:null}catch{return null}}var Am=class{store;constructor(e){this.store=e}async read(){let e=await this.store.read();return e===null||e.trim().length===0?null:JSON.parse(e)}async write(e){await this.store.write(JSON.stringify(e))}async withLock(e){return this.store instanceof gn?this.store.withLock(e):e()}},jl=class{root;lockOptions;constructor(e,r={}){this.root=oo.resolve(e),this.lockOptions={...r}}async open(e,r,n){let i=`${Rm(e)}-${Rm(r)}-${Rm(n??"global")}.json`;return new Am(new gn(oo.join(this.root,i),this.lockOptions))}};function Rm(t){return t.replace(/[^A-Za-z0-9._-]/gu,"_").slice(0,120)||"plugin"}Q();var Bl=Ce(Ne(),1);Ct();Q();za();var Lm=["full","hotfix","tweak"],gS=1,vS=["open","design","build","verify","archive"],fO=["en","zh-CN"],mO=["off","beta"],hO=["subagent-driven-development","executing-plans","direct","autonomous"],gO=["plan-ready"],yO=["confirmed"],vO=["tdd","direct"],wO=["off","standard","thorough"],bO=["current","branch","worktree"],kO=["light","full"],SO=["pending","pass","fail"],NO=["pending","handled"],EO=["pending","confirmed"],Dm=["workflow","language","phase","context_compression","build_mode","build_pause","subagent_dispatch","tdd_mode","review_mode","isolation","bound_branch","verify_mode","auto_transition","base_ref","design_doc","plan","verify_result","verify_failures","check_epoch","verification_report","branch_status","created_at","verified_at","archive_confirmation","archived","direct_override","handoff_context","handoff_hash","classic_profile","classic_migration"],xO=["run_id"],wS=new Set([...Dm,...xO]),PO=["workflow","phase","design_doc","plan","build_mode","isolation","verify_mode","verify_result","verified_at","archived"];function Om(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function so(t,e){let r=t[e];if(r==null||r==="")return null;if(typeof r!="string")throw new Error(`Invalid Classic state: ${e} must be a string or null`);return r}function _e(t,e,r,n=!0){let i=t[e];if(i==null||i===""){if(n)return null;throw new Error(`Invalid Classic state: ${e} is required`)}if(typeof i!="string"||!r.includes(i))throw new Error(`Invalid Classic state: ${e} must be one of ${r.join(", ")}${n?" or null":""}`);return i}function Mm(t,e,r=!0){let n=t[e];if(n==null||n===""){if(r)return null;throw new Error(`Invalid Classic state: ${e} is required`)}if(typeof n!="boolean")throw new Error(`Invalid Classic state: ${e} must be true or false`);return n}function yS(t,e,r=0){let n=t[e];if(n==null||n==="")return r;if(typeof n!="number"||!Number.isSafeInteger(n)||n<0)throw new Error(`Invalid Classic state: ${e} must be a non-negative integer`);return n}function Ll(t,e){let r=so(t,e);if(r===null)return null;if(/^(?:[A-Za-z]:|[\\/]|~)/u.test(r)||r.split(/[\\/]/u).includes(".."))throw new Error(`Invalid Classic state: ${e} must be a relative repository path`);return r}function CO(t,e){let r=so(t,e);if(r!==null&&!/^[a-f0-9]{64}$/u.test(r))throw new Error(`Invalid Classic state: ${e} must be a sha256 hex digest`);return r}function RO(t){let e=t.classic_migration;if(e==null||e==="")return null;if(e!==gS)throw new Error(`Invalid Classic state: classic_migration must be ${gS}`);return e}function AO(t){if(!Dm.some(r=>Om(t,r)))return null;for(let r of PO)if(!Om(t,r))return null;return{workflow:_e(t,"workflow",Lm,!1),language:_e(t,"language",fO),phase:_e(t,"phase",vS,!1),contextCompression:_e(t,"context_compression",mO),buildMode:_e(t,"build_mode",hO),buildPause:_e(t,"build_pause",gO),subagentDispatch:_e(t,"subagent_dispatch",yO),tddMode:_e(t,"tdd_mode",vO),reviewMode:_e(t,"review_mode",wO),isolation:_e(t,"isolation",bO),boundBranch:so(t,"bound_branch"),verifyMode:_e(t,"verify_mode",kO),autoTransition:Mm(t,"auto_transition"),baseRef:so(t,"base_ref"),designDoc:Ll(t,"design_doc"),plan:Ll(t,"plan"),verifyResult:_e(t,"verify_result",SO,!1),verifyFailures:yS(t,"verify_failures"),...Om(t,"check_epoch")?{checkEpoch:yS(t,"check_epoch")}:{},verificationReport:Ll(t,"verification_report"),branchStatus:_e(t,"branch_status",NO),createdAt:so(t,"created_at"),verifiedAt:so(t,"verified_at"),archiveConfirmation:_e(t,"archive_confirmation",EO),archived:Mm(t,"archived",!1),directOverride:Mm(t,"direct_override"),handoffContext:Ll(t,"handoff_context"),handoffHash:CO(t,"handoff_hash"),classicProfile:_e(t,"classic_profile",Lm),classicMigration:RO(t)}}function Bm(t,e){let r=e??null;if(r===null&&e===void 0&&t.run_id&&t.skill)try{r=Qn(t)}catch(n){let i=n instanceof Error?n.message:String(n);throw new Error(i.replace(/^Invalid Run state:/u,"Invalid Classic state:"),{cause:n})}return{classic:AO(t),run:r,unknownKeys:Object.keys(t).filter(n=>!wS.has(n))}}function bS(t){let e=t.workflow,r=t.phase,n=t.archived,i=t.design_doc;return{workflow:typeof e=="string"&&Lm.includes(e)?e:null,phase:typeof r=="string"&&vS.includes(r)?r:null,archived:n===!0,designDoc:typeof i=="string"&&i!==""?i:null,unknownKeys:Object.keys(t).filter(o=>!wS.has(o))}}za();var Fm=new jO,Dl=".comet-state-transaction.json";async function Fl(t,e){let r=xr.resolve(t);return Fm.getStore()===r?e():(await $(r,".comet-state.lock",{label:"Classic state lock",expected:"file"}),Ha(xr.join(r,".comet-state.lock"),()=>Fm.run(r,async()=>(await TO(r),e()))))}async function kS(t,e){try{return(await O(t,e,Number.MAX_SAFE_INTEGER,{label:"Classic state transaction"})).bytes.toString("utf8")}catch(r){if(r.code==="ENOENT")return null;throw r}}function IO(t){if(t===null)return null;if(!t||typeof t!="object"||Array.isArray(t))throw new Error("Invalid Classic transaction Run");let e=t,r=Qn({run_id:e.runId,skill:e.skill,skill_version:e.skillVersion,skill_hash:e.skillHash,orchestration:e.orchestration,current_step:e.currentStep,iteration:e.iteration,pending:e.pending,pending_ref:e.pendingRef,trajectory_ref:e.trajectoryRef,context_ref:e.contextRef,artifacts_ref:e.artifactsRef,checkpoint_ref:e.checkpointRef,run_status:e.status,run_retries:e.retries});if(!r)throw new Error("Invalid Classic transaction Run identity");return r}async function TO(t){let e=await kS(t,Dl);if(e===null)return;let r=JSON.parse(e);if(!r||r.schema!=="comet.classic.state-transaction.v1"||r.beforeYaml!==null&&typeof r.beforeYaml!="string"||typeof r.afterYaml!="string")throw new Error("Invalid Classic state transaction");let n=await kS(t,".comet.yaml");if(n!==r.beforeYaml&&n!==r.afterYaml)throw new Error("Classic state transaction conflicts with current YAML; preserve files for recovery");let i=IO(n===r.afterYaml?r.afterRun:r.beforeRun);i?await Ml(t,i):await $m(t),await _a(xr.join(t,Dl),{containedRoot:t})}function lo(t){let e=t.toJS();if(e===null)return{};if(typeof e!="object"||Array.isArray(e))throw new Error("Invalid Classic state document: root must be a mapping");return e}function $O(t){let e=["skill","skill_version","skill_hash","orchestration","current_step","iteration","pending","pending_ref","trajectory_ref","context_ref","artifacts_ref","checkpoint_ref","run_status","run_retries"];for(let r of e)t.delete(r)}function OO(t){let e=!1;for(let r of["build_command","verify_command"])t.has(r)&&(t.delete(r),e=!0);return e}async function Km(t){let e;try{e=(await O(xr.dirname(t),xr.basename(t),Number.MAX_SAFE_INTEGER,{label:"Classic state document"})).bytes.toString("utf8")}catch(n){if(n.code!=="ENOENT")throw n;return new Bl.Document({})}let r=(0,Bl.parseDocument)(e);if(r.errors.length>0)throw new Error(`Invalid Classic state document: ${r.errors[0].message}`);return lo(r),r}async function Ga(t,e={}){if(Fm.getStore()!==xr.resolve(t)){let r=await MO(t);if(r!==null)return r}return Fl(t,()=>LO(t,e))}async function co(t,e){let r=await $(t,e,{label:"Classic state snapshot",expected:"file"});if(!r.exists)return{stamp:"missing",comparable:!0};let n=await _O.lstat(r.target,{bigint:!0});if(!n.isFile()||n.isSymbolicLink())throw new Error("Classic state file changed");return{stamp:[n.dev,n.ino,n.birthtimeNs,n.ctimeNs,n.mtimeNs,n.size].join(":"),comparable:n.dev!==0n&&n.ino!==0n&&n.ctimeNs>0n}}async function SS(t){if((await co(t,".comet-state.lock")).stamp!=="missing"||(await co(t,Dl)).stamp!=="missing")return null;let n=await co(t,".comet.yaml"),i=await co(t,ao);return!n.comparable||!i.comparable?null:{yaml:n.stamp,run:i.stamp}}async function MO(t){try{let e=await SS(t);if(e===null)return null;let r=await Km(xr.join(t,".comet.yaml")),n=lo(r);if(r.has("build_command")||r.has("verify_command"))return null;let i=await Ol(t);if(!i&&n.run_id&&n.skill)return null;let o=Bm(n,i),a=await SS(t);return a===null||e.yaml!==a.yaml||e.run!==a.run||(await co(t,Dl)).stamp!=="missing"||(await co(t,".comet-state.lock")).stamp!=="missing"?null:o}catch{return null}}async function LO(t,e){let r=e.migrate!==!1,n=xr.join(t,".comet.yaml"),i=await Km(n),o=lo(i),a=OO(i);a&&(o=lo(i));let s=await Ol(t);if(!s&&o.run_id&&o.skill){let{runStateFromDocument:c}=await Promise.resolve().then(()=>(za(),hS));s=c(o),s&&r&&(await Ml(t,s),$O(i),a=!0)}return a&&r&&await we(n,i.toString(),{containedRoot:t}),Bm(lo(i),s)}async function NS(t){let e=await Km(xr.join(t,".comet.yaml"));return bS(lo(e))}Ct();Q();function BO(t){try{let e=Nr(()=>xS("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:t,encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:1e4,windowsHide:!0}).trim());return e&&e!=="HEAD"?e:null}catch{return null}}var FO=tm("liveGitBranch",t=>BO(t));function KO(t){try{return Nr(()=>xS("git",["rev-parse","--is-inside-work-tree"],{cwd:t,encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:1e4,windowsHide:!0}).trim())==="true"}catch{return!1}}var HO=tm("isGitWorkTree",t=>KO(t)),WO=["current","branch","worktree"];function CS(t){return WO.includes(t)}function VO(t){return CS(t.isolation)?t.boundBranch===null&&t.currentBranch===null&&t.gitWorkTree===!1?{status:"not-applicable"}:t.boundBranch===null?t.currentBranch===null?{status:"unbound-detached"}:{status:"needs-heal",branch:t.currentBranch}:t.currentBranch===t.boundBranch?{status:"ok"}:{status:"drift",boundBranch:t.boundBranch,currentBranch:t.currentBranch}:{status:"not-applicable"}}async function Ua(t,e){return e.heal?Fl(t,()=>ES(t,e)):ES(t,e)}async function ES(t,e){let r=PS.join(t,".comet.yaml"),n=(0,Hm.parseDocument)(await DO.readFile(r,"utf8"),{uniqueKeys:!1});if(n.errors.length>0)throw new Error(`Invalid .comet.yaml: ${n.errors[0].message}`);let i=n.toJS()??{},o=typeof i.isolation=="string"?i.isolation:null,a=typeof i.bound_branch=="string"&&i.bound_branch!==""?i.bound_branch:null,s=CS(o),c=FO(e.cwd),l=s&&a===null&&c===null?HO(e.cwd):!0,d=VO({isolation:o,boundBranch:a,currentBranch:c,gitWorkTree:l});return d.status==="needs-heal"&&e.heal?(await qO(t,d.branch),{status:"healed",branch:d.branch,bindingRequired:s,currentBranch:c}):{...d,bindingRequired:s,currentBranch:c}}async function qO(t,e){return Fl(t,()=>zO(t,e))}async function zO(t,e){let r=PS.join(t,".comet.yaml"),n=(await O(t,".comet.yaml",ym,{label:"Classic branch binding"})).bytes.toString("utf8"),i=(0,Hm.parseDocument)(n,{uniqueKeys:!1});if(i.errors.length)throw new Error(`Invalid .comet.yaml: ${i.errors[0].message}`);i.set("bound_branch",e),await we(r,i.toString(),{containedRoot:t})}function GO(t){return t??"detached HEAD"}function Ja(t,e,r){return`change '${t}' is bound to branch '${e}', but current branch is '${GO(r)}'. Next: switch to branch '${e}' and rerun, or run comet state rebind ${t} after the user explicitly confirms this branch should take over the change`}function Ya(t){return`change '${t}' uses a branch-bound workspace mode but has no bound branch and HEAD is detached; checkout a branch first before continuing.`}Wa();yr();var IS=Ce(Ne(),1);Ba();import Ut from"node:path";import{createHash as Wl,randomUUID as P6}from"node:crypto";var UO=new Set(["GIT_DIR","GIT_WORK_TREE","GIT_COMMON_DIR","GIT_INDEX_FILE","GIT_OBJECT_DIRECTORY","GIT_ALTERNATE_OBJECT_DIRECTORIES","GIT_GRAFT_FILE","GIT_SHALLOW_FILE","GIT_PREFIX","GIT_IMPLICIT_WORK_TREE","GIT_NO_REPLACE_OBJECTS","GIT_REPLACE_REF_BASE","GIT_CONFIG","GIT_CONFIG_PARAMETERS","GIT_CONFIG_COUNT"]);function Wm(t=process.env){return Object.fromEntries(Object.entries(t).filter(([e])=>{let r=e.toUpperCase();return!UO.has(r)&&!/^GIT_CONFIG_(KEY|VALUE)_\d+$/u.test(r)}))}function RS(t){return{...Wm(t.environment),...t.authentication?{}:{GIT_CONFIG_GLOBAL:process.platform==="win32"?"NUL":"/dev/null",GIT_CONFIG_NOSYSTEM:"1"},GIT_TERMINAL_PROMPT:"0",GCM_INTERACTIVE:"never",SSH_ASKPASS_REQUIRE:"never",GIT_NO_REPLACE_OBJECTS:"1",GH_PROMPT_DISABLED:"1"}}function Zn(t){if(!t||typeof t!="object"||Array.isArray(t))throw new Error("Classic progress requires a JSON object");return t}function qm(t,e){let r=Object.keys(t).filter(n=>!e.includes(n));if(r.length)throw new Error(`Unknown Classic progress field(s): ${r.join(", ")}; allowed fields: ${e.join(", ")}`)}function Gt(t,e){if(typeof t!="string"||!t.trim()||t.length>4096||[...t].some(r=>r.charCodeAt(0)<32||r.charCodeAt(0)===127))throw new Error(`Invalid Classic progress ${e}`);return t}async function JO(t,e,r){let n=Ut.join(e,".comet",r);if(await Gn(t,n,{label:"Classic progress",expected:"file"}))return JSON.parse(await fn(t,n,{label:"Classic progress"}))}function YO(t,e){let r=Wl("sha256").update(e).digest("hex");return Ut.join(t,".comet","runtime","classic-delivery",`${r}.json`)}async function XO(t,e){let r=YO(t,e);if(!await Gn(t,r,{label:"Classic delivery reauthorization",expected:"file"}))return null;let n=Zn(JSON.parse(await fn(t,r,{label:"Classic delivery reauthorization"})));if(qm(n,["schemaVersion","changeIdentity","previousAuthorizationId","authorizationId","action","targetBranch","remote","authorizedRemoteUrl"]),n.schemaVersion!==1||n.changeIdentity!==e)throw new Error("Classic delivery reauthorization identity is invalid");let i=zm({action:n.action,targetBranch:n.targetBranch,...n.remote===void 0?{}:{remote:n.remote}},!0);if(i.commit!==void 0||i.prUrl!==void 0)throw new Error("Classic delivery reauthorization cannot change sealed commit or PR evidence");return{schemaVersion:1,changeIdentity:e,previousAuthorizationId:Gt(n.previousAuthorizationId,"previousAuthorizationId"),authorizationId:Gt(n.authorizationId,"authorizationId"),...i,...n.authorizedRemoteUrl===void 0?{}:{authorizedRemoteUrl:Gt(n.authorizedRemoteUrl,"authorizedRemoteUrl")}}}function zm(t,e=!1){let r=Zn(t);if(qm(r,["action","targetBranch","remote","commit","prUrl",...e?["schemaVersion","changeIdentity","authorizedRemoteUrl","authorizationId"]:[]]),!["local","push","pr"].includes(r.action))throw new Error(`Invalid Classic delivery action '${String(r.action)}'; actions: local|push|pr`);let n=Gt(r.targetBranch,"targetBranch");if(n.startsWith("-")||/[~^:?*[\\\s]/u.test(n)||n.includes("..")||n.includes("@{"))throw new Error("Invalid Classic delivery targetBranch");let i={action:r.action,targetBranch:n};if(r.remote!==void 0){let o=Gt(r.remote,"remote");if(!/^[a-zA-Z0-9][a-zA-Z0-9._-]{0,99}$/u.test(o))throw new Error("Classic delivery remote must be a name, not a URL");i.remote=o}if(r.commit!==void 0){let o=Gt(r.commit,"commit");if(!/^(?:[a-fA-F0-9]{40}|[a-fA-F0-9]{64})$/u.test(o))throw new Error("Classic delivery commit must be a full object ID");i.commit=o.toLowerCase()}if(r.prUrl!==void 0){let o=Gt(r.prUrl,"prUrl"),a=new URL(o);if(a.protocol!=="https:"||a.username||a.password)throw new Error("Invalid Classic delivery prUrl");i.prUrl=o}return i}function TS(t){let e=(0,IS.parseDocument)(t,{uniqueKeys:!0});if(e.errors.length)throw new Error("Invalid Classic delivery change state");return Zn(e.toJS())}function $S(t,e){if(typeof t.run_id=="string"&&t.run_id)return`run:${t.run_id}`;let r=t.archived===!0?Ut.basename(e).replace(/^\d{4}-\d{2}-\d{2}-/u,""):Ut.basename(e);if(typeof t.created_at!="string"||typeof t.base_ref!="string")throw new Error("Classic delivery requires stable change identity");return`legacy:${Wl("sha256").update(JSON.stringify([r,t.created_at,t.base_ref])).digest("hex")}`}async function QO(t,e){return TS(await fn(t,Ut.join(e,".comet.yaml"),{label:"Classic delivery state"}))}var Hl=class extends Error{constructor(e,r){super(`Classic delivery git command timed out: ${[e,...r].join(" ")}`)}};function Vm(t,e,r,n){return Lk(e,r,{cwd:t,timeoutMs:5e3,env:RS({authentication:n})}).trim()}function Za(t,e,r,n=!1){try{return Vm(t,e,r,n)}catch{return null}}function ZO(t,e,r,n=!1){try{return Vm(t,e,r,n)}catch(i){if(!(i instanceof Er)||!i.timedOut)return null;try{return Vm(t,e,r,n)}catch(o){if(o instanceof Er&&o.timedOut)throw new Hl(e,r);return null}}}function Xa(t,e){return Za(t,"git",["-C",t,...e])}function Qa(t,e){return ZO(t,"git",["-C",t,...e])}function AS(t,e,r=!1){return Za(t,"git",["-C",t,"remote","get-url",...r?["--push"]:[],e],!0)}function eM(t,e){let r=Ut.relative(t,e).replaceAll("\\","/");return[`:(literal)${r}`,...[".comet-state.lock",".comet-state-transaction.json"].map(n=>`:(exclude,literal)${r}/${n}`)]}function _S(t,e,r,n){let i=Ut.relative(t,e).replaceAll("\\","/"),o=eM(t,e),a=Qa(t,["show",`${r}:${i}/.comet.yaml`]);if(!a)return!1;try{let s=TS(a);return s.archived===!0&&$S(s,e)===n&&Qa(t,["merge-base","--is-ancestor",r,"HEAD"])!==null&&Qa(t,["diff","--quiet","--no-ext-diff","--no-textconv",r,"--",...o])!==null&&Qa(t,["ls-files","--others","--exclude-standard","--",...o])===""}catch(s){if(s instanceof Hl)throw s;return!1}}function tM(t,e){let r=`${Wl("sha256").update(e).digest("hex")}.json`,n=Qa(t,["rev-parse","--path-format=absolute","--git-common-dir"]);return[{root:t,file:Ut.join(t,".comet","classic-deliveries",r)},...n?[{root:n,file:Ut.join(n,"comet","classic-deliveries",r)}]:[]]}async function rM(t,e){let r=null;for(let n of tM(t,e)){if(!await Gn(n.root,n.file,{label:"Classic delivery receipt",expected:"file"}))continue;let i=Zn(JSON.parse(await fn(n.root,n.file,{label:"Classic delivery receipt"})));if(qm(i,["schemaVersion","changeIdentity","authorizationId","invalidated","commit","prUrl"]),i.schemaVersion!==1||i.changeIdentity!==e)throw new Error("Invalid Classic delivery receipt schema or identity");if(i.invalidated!==void 0&&typeof i.invalidated!="boolean")throw new Error("Invalid Classic delivery receipt invalidation");let o=zm({action:"local",targetBranch:"main",...i.commit!==void 0?{commit:i.commit}:{},...i.prUrl!==void 0?{prUrl:i.prUrl}:{}}),a={schemaVersion:1,changeIdentity:e,authorizationId:Gt(i.authorizationId,"authorizationId"),...i.invalidated===!0?{invalidated:!0}:{},...o.commit?{commit:o.commit}:{},...o.prUrl?{prUrl:o.prUrl}:{}};if(r&&JSON.stringify(r)!==JSON.stringify(a))throw new Error("Conflicting Classic delivery receipts");r=a}return r}function nM(t){return t.authorizationId===void 0?`legacy:${Wl("sha256").update(JSON.stringify(t)).digest("hex")}`:Gt(t.authorizationId,"authorizationId")}function jS(t,e,r){return e===r||Xa(t,["merge-base","--is-ancestor",e,r])!==null}function iM(t){let e=/^git@([^:/]+):([^/]+\/[^/]+)$/u.exec(t);try{let r=new URL(e?`ssh://git@${e[1]}/${e[2]}`:t);if(!["https:","ssh:"].includes(r.protocol)||r.password||r.search||r.hash||r.port||r.protocol==="https:"&&r.username)return null;let n=r.pathname.replace(/\.git\/?$/u,"").replace(/\/$/u,"").split("/").filter(Boolean);return n.length!==2||n.some(i=>!/^[a-zA-Z0-9_.-]+$/u.test(i))?null:`${r.hostname}/${n.join("/")}`.toLowerCase()}catch{return null}}function Kl(t,e){try{let r=new URL(t);if(r.protocol!=="https:"||r.username||r.password||r.port||r.search||r.hash)return null;let n=/^\/([^/]+)\/([^/]+)\/pull\/([1-9]\d*)\/?$/u.exec(r.pathname);return n&&`${r.hostname}/${n[1]}/${n[2]}`.toLowerCase()===e?`https://${r.hostname}/${n[1]}/${n[2]}/pull/${n[3]}`:null}catch{return null}}async function Gm(t,e,r={}){let n=await JO(t,e,"delivery.json");if(n===void 0)return{delivery:null,verification:{status:"needsAuthorization"}};let i=Zn(n);if(i.schemaVersion!==1)throw new Error("Unsupported Classic delivery schemaVersion");let o=zm(i,!0),a=await QO(t,e),s=$S(a,e);if(i.changeIdentity!==s)throw new Error("Classic delivery change identity mismatch");let c=nM(i),l=await XO(t,s);if(l&&l.previousAuthorizationId!==c)throw new Error("Classic delivery reauthorization is stale for the sealed authorization");let d=l?{action:l.action,targetBranch:l.targetBranch,...l.remote===void 0?{}:{remote:l.remote}}:o,u=l?.authorizationId??c,p=await rM(t,s),f=p?.authorizationId===u?p:null;if(f?.invalidated)return{delivery:null,verification:{status:"needsAuthorization",invalidated:!0}};for(let C of["commit","prUrl"]){if(C==="commit"&&f?.[C]&&d[C]&&f[C]!==d[C])throw new Error("Classic delivery receipt conflicts with authorization evidence");f?.[C]&&(d[C]=f[C])}let m=i.authorizedRemoteUrl===void 0?void 0:Gt(i.authorizedRemoteUrl,"authorizedRemoteUrl"),g=l?.authorizedRemoteUrl??m,h={...d,schemaVersion:1,changeIdentity:s,authorizationId:u,...g?{authorizedRemoteUrl:g}:{}},w=Xa(t,["symbolic-ref","--quiet","--short","HEAD"]),y=Ut.relative(t,e).replaceAll("\\","/"),v=null;!d.commit&&a.archived===!0&&(v=Xa(t,["log","-20","--format=%H","HEAD","--",`:(literal)${y}/.comet.yaml`])?.split(/\r?\n/u).find(L=>/^[a-f0-9]{40,64}$/u.test(L)&&_S(t,e,L,s))??null);let b=d.commit??v,k=!!b&&Xa(t,["cat-file","-t",b])==="commit",S=a.archived===!0&&k&&_S(t,e,b,s),E=w===d.targetBranch&&(!a.bound_branch||l!==null||a.bound_branch===w)&&S,N=!1,P=!1,_=null,j=r.verifyRemote&&d.action!=="local"?"unavailable":"notChecked",x="notChecked";if(r.verifyRemote&&E&&d.action!=="local"&&d.remote&&g&&AS(t,d.remote)===g&&AS(t,d.remote,!0)===g){let C=`refs/heads/${d.targetBranch}`,L=Za(t,"git",["-C",t,"-c","protocol.allow=never","-c","protocol.https.allow=always","-c","protocol.ssh.allow=always","-c","protocol.file.allow=always","ls-remote","--refs",d.remote,C],!0),I=L?.split(/\r?\n/u)??[],B=I.length===1?/^([a-f0-9]{40}|[a-f0-9]{64})\t(.+)$/u.exec(I[0]):null,re=B?.[2]===C?B[1]:null;N=!!b&&!!re&&jS(t,b,re),j=N?"verified":L===""?"missing":L===null||!re||Xa(t,["cat-file","-t",re])!=="commit"?"unavailable":"missing";let J=iM(g),Oi=J&&d.prUrl?Kl(d.prUrl,J):null,rp=N||L==="",Xy=Ye=>Ye.headRefName===d.targetBranch&&typeof Ye.headRefOid=="string"&&/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/u.test(Ye.headRefOid)&&(N?Ye.headRefOid===re&&["OPEN","MERGED"].includes(Ye.state):L===""&&Ye.state==="MERGED"&&!!b&&jS(t,b,Ye.headRefOid));if(rp&&d.action==="pr"&&(x="unavailable"),rp&&d.action==="pr"&&Oi&&J){let Ye=Za(t,"gh",["pr","view",Oi,"--repo",J,"--json","url,headRefName,headRefOid,state"],!0);try{let fr=Ye?Zn(JSON.parse(Ye)):null;P=!!fr&&typeof fr.url=="string"&&Kl(fr.url,J)===Oi&&Xy(fr),x=P?"verified":fr?"missing":"unavailable"}catch{P=!1,x="unavailable"}}else if(rp&&d.action==="pr"&&!d.prUrl&&J){let Ye=Za(t,"gh",["pr","list","--repo",J,"--head",d.targetBranch,"--state","all","--json","url,headRefName,headRefOid,state","--limit","100"],!0);try{let fr=Ye===null?null:JSON.parse(Ye);if(!Array.isArray(fr)||fr.length>=100)throw new Error("Incomplete PR discovery");let np=fr.map(Zn).filter(ip=>typeof ip.url=="string"&&Kl(ip.url,J)&&Xy(ip));np.length===1?(_=Kl(np[0].url,J),P=!0,x="verified"):x=np.length===0?"missing":"unavailable"}catch{x="unavailable"}}}return{delivery:h,verification:{status:E&&(d.action==="local"||(d.action==="push"?N:P))?"complete":"needsVerification",currentBranch:w,commitExists:k,archiveCommitted:S,observedCommit:v,observedPrUrl:_,remoteVerified:N,prVerified:P,remoteStatus:j,prStatus:x}}}var mM=Ce(Ne(),1);lt();no();Ba();import{execFileSync as lM}from"child_process";import dM from"fs";import ei from"path";import{AsyncLocalStorage as MS}from"node:async_hooks";La();var es=new MS,LS=new MS;function uM(t){let e=es.getStore();for(let r of t)e?.set(yn(r.root),t);return t}function uo(t,e){return Nr(()=>lM("git",["-C",t,...e],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:1e4,windowsHide:!0}).trim())}function ts(t,e){return yn(t)===yn(e)}function yn(t){let e=ei.resolve(t);try{let r=dM.realpathSync.native(e);return process.platform==="win32"?r.toLowerCase():r}catch{return process.platform==="win32"?e.toLowerCase():e}}function Pr(t){try{let e=LS.getStore()?.get(yn(t)),r=es.getStore()?.get(e??yn(t));if(r){let c=OS(e??t,r);if(c)return c;if(r.length===0)return{isGitWorktree:!1,isSecondaryWorktree:!1,currentWorktreeRoot:null,primaryWorktreeRoot:null,currentBranch:null}}let n=ei.resolve(uo(t,["rev-parse","--show-toplevel"])),i=es.getStore()?.get(yn(n))??DS(t),o=OS(n,i);if(es.getStore()&&o)return o;let a=i[0]?.root??n,s=null;try{s=uo(t,["symbolic-ref","--quiet","--short","HEAD"])||null}catch{}return{isGitWorktree:!0,isSecondaryWorktree:!ts(n,a),currentWorktreeRoot:n,primaryWorktreeRoot:a,currentBranch:s}}catch{return{isGitWorktree:!1,isSecondaryWorktree:!1,currentWorktreeRoot:null,primaryWorktreeRoot:null,currentBranch:null}}}function Jm(t){try{let e=es.getStore()?.get(LS.getStore()?.get(yn(t))??yn(t));return e?e.map(r=>({...r})):(uo(t,["rev-parse","--is-inside-work-tree"]),DS(t))}catch{return[]}}function DS(t){let e=pM(uo(t,["worktree","list","--porcelain","-z"]));return uM(e),e.map(r=>({...r}))}function pM(t){let e=t.split("\0"),r=[],n=null;for(let i of e)i.startsWith("worktree ")?(n&&r.push(n),n={root:ei.resolve(i.slice(9)),branch:null,detached:!1}):n&&i.startsWith("branch refs/heads/")?n.branch=i.slice(18):n&&i==="detached"&&(n.detached=!0);return n&&r.push(n),r}function ti(t){return Jm(t).map(e=>e.root)}function OS(t,e){let r=e.find(o=>ts(ei.resolve(o.root),ei.resolve(t)));if(!r)return null;let n=ei.resolve(e[0].root),i=ei.resolve(r.root);return{isGitWorktree:!0,isSecondaryWorktree:!ts(n,i),currentWorktreeRoot:i,primaryWorktreeRoot:n,currentBranch:r.branch}}function BS(t){try{return uo(t,["symbolic-ref","--quiet","--short","HEAD"])||null}catch{return null}}function ri(t,e){try{let r=uo(t,["rev-parse","--verify",`${e}^{commit}`]).toLowerCase();return/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/u.test(r)?r:null}catch{return null}}qe();ro();Q();ge();Ct();var hM=ye("readCometCurrentSelection",t=>Xn(t));async function gM(t,e){$a(e);let r=await Un(e,t);if(!r.stateExists)throw new Error(`Cannot select current change '${e}': active change state not found`);let n=await Ga(r.directory,{migrate:!1});if(!n.classic)throw new Error(`Cannot select current change '${e}': Classic state is incomplete`);if(n.classic.archived)throw new Error(`Cannot select current change '${e}': change is archived`);return r.directory}async function rs(t){let e;try{e=await hM(t)}catch(o){return{status:"stale",reason:o instanceof Error?o.message:String(o)}}if(e.status==="missing")return{status:"missing"};if(e.selection.workflow!=="classic")return{status:"stale",reason:`current change '${e.selection.change}' belongs to Native, not Classic`};let r=e.selection,n;try{n=await gM(t,r.change)}catch(o){try{let a=await vm(r.change,t);if(!a)throw o;let s=await Ga(a.directory,{migrate:!1}),c=await Gm(t,a.directory);if(!s.classic?.archived||["complete","local-verified"].includes(c.verification.status))throw o;n=a.directory}catch(a){return{status:"stale",reason:a instanceof Error?a.message:String(a)}}}let i=await Ua(n,{heal:!1,cwd:t});return i.status==="drift"?{status:"stale",reason:Ja(r.change,i.boundBranch,i.currentBranch)}:i.status==="unbound-detached"?{status:"stale",reason:Ya(r.change)}:i.status==="ok"?{status:"selected",selection:r}:r.branch!==null&&i.currentBranch!==r.branch?{status:"stale",reason:`current change '${r.change}' was selected on branch '${r.branch}', current branch is '${i.currentBranch??"detached HEAD"}'`}:{status:"selected",selection:r}}function Xm(t){return t==="zh-CN"?"zh-CN":"en"}function KS(t,e,r){return t==="zh-CN"?r:e}function HS(t,e){let n={open:{en:"Source code edits are paused while the request is still being clarified.",zh:"需求仍在澄清中,暂时不修改源代码。"},design:{en:"Source code edits are paused until the design is agreed and recorded.",zh:"方案确定并记录之前,暂不修改源代码。"},build:{en:"A required design or plan record is missing, so source edits stay paused.",zh:"缺少必需的设计或计划记录,源代码修改暂被搁置。"},verify:{en:"Implementation edits are paused during verification; only verification output is accepted.",zh:"验证期间暂停修改实现,仅接受验证产出。"},archive:{en:"Source code edits are paused while the change is being archived.",zh:"归档期间暂不修改源代码。"}}[t]??{en:"This write is paused by the current workflow stage.",zh:"当前工作流阶段暂不允许这次写入。"};return{summary:KS(e,"This write was blocked on purpose, not by an error.","这次写入是被有意拦下的,不是发生了错误。"),user_message:KS(e,n.en,n.zh)}}function WS(t){if(t.workflow!=="full")return{missingFields:[],invalidFields:[]};let e=[],r=[];return t.buildMode||e.push("build_mode"),t.tddMode||e.push("tdd_mode"),t.reviewMode||e.push("review_mode"),t.buildMode==="subagent-driven-development"&&t.subagentDispatch!=="confirmed"&&e.push("subagent_dispatch"),t.buildMode==="autonomous"&&t.reviewMode==="off"&&r.push({field:"review_mode",reason:"autonomous full build requires review_mode=standard or thorough"}),t.buildMode==="direct"&&t.directOverride!==!0&&r.push({field:"direct_override",reason:"full workflow direct execution requires direct_override=true"}),{missingFields:e,invalidFields:r}}var VS=Ce(Ne(),1);import ni from"node:path";async function Qm(t,e,r,n={}){if(r.workflow!=="full"||r.buildMode!=="autonomous")return[];let i=[];if(n.requirePlan!==!1){let o=WS(r);o.missingFields.includes("tdd_mode")&&i.push("tdd_mode must be selected for autonomous full build"),o.missingFields.includes("review_mode")&&i.push("review_mode must be selected for autonomous full build"),o.invalidFields.some(({field:a})=>a==="review_mode")&&i.push("review_mode must be standard or thorough for autonomous full build"),r.isolation||i.push("isolation must be selected for autonomous full build")}if(!r.designDoc||!await Pk(t,r.designDoc,"Classic autonomous design"))i.push("design_doc must reference a nonempty technical design for autonomous full build");else{let a=(await fn(t,r.designDoc,{label:"Classic autonomous design"})).replace(/^\uFEFF/u,"").match(/^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/u),s=a?(0,VS.parseDocument)(a[1]):null;(!s||s.errors.length||s.get("comet_change")!==e||s.get("role")!=="technical-design"||s.get("canonical_spec")!=="openspec")&&i.push("design_doc must link the current change and declare role: technical-design and canonical_spec: openspec")}return n.requirePlan!==!1&&(await Zm(t,r.plan,{requireNonempty:!0})).status!=="ready"&&i.push("plan must reference a nonempty implementation plan in the configured plans directory"),i}async function Zm(t,e,r={}){if(!e||e==="null")return{status:"missing",recordedPath:null};let n=await un(t),i=ni.resolve(t,e),o=ni.relative(n.superpowersPlansDir,i);return ni.isAbsolute(e)||!o||o.startsWith(`..${ni.sep}`)||ni.isAbsolute(o)||o.includes(ni.sep)||ni.extname(o).toLowerCase()!==".md"?{status:"broken",recordedPath:e}:await Gn(t,e,{label:`Classic build plan ${e}`,expected:"file"})&&(!r.requireNonempty||(await fn(t,e,{label:`Classic build plan ${e}`})).trim().length>0)?{status:"ready",recordedPath:e}:{status:"broken",recordedPath:e}}var yM=new Set([".md",".markdown"]),vM=new Set([".md",".markdown",".rst",".txt"]),wM=new Set(["docs","doc","documentation",".github"]),bM=[/^LICENSE(?:[.-]|$)/u,/^NOTICE$/u,/^AUTHORS$/u];function qS(t){return t.replaceAll("\\","/").replace(/^\.\//u,"")}function kM(t,e){for(let r of e){let n=qS(r).replace(/\/+$/u,"");if(n&&(t===n||t.startsWith(`${n}/`)))return!0}return!1}function Vl(t,e=[]){let r=qS(t);if(!r||r.endsWith("/")||kM(r,e))return!1;let n=r.split("/"),i=n[n.length-1],o=i.lastIndexOf("."),a=o===-1?"":i.slice(o).toLowerCase();return n.length===1?yM.has(a)||bM.some(s=>s.test(i)):wM.has(n[0])&&vM.has(a)}Im();qe();import SM from"os";import ql from"path";function NM(t={}){let e=t.cwd??process.cwd(),r=t.homeDir??SM.homedir(),n=[{file:ql.resolve(e,".comet","config.yaml"),source:".comet/config.yaml",scope:"project"},{file:ql.resolve(r,".comet","config.yaml"),source:"~/.comet/config.yaml",scope:"global"}];return n.filter((i,o)=>n.findIndex(a=>a.file===i.file)===o)}async function zS(t,e={}){for(let r of NM(e)){let n=ql.dirname(ql.dirname(r.file)),i=r.scope==="global"?(await jm(n))?.classic:(await br(n,{allowPartialProject:!0}))?.value.classic;if(!i||typeof i!="object"||Array.isArray(i))continue;let o=i[t];if(o!=null)return{value:String(o),source:r.source}}return null}async function EM(t){let e=await zS("document_evidence",{cwd:t});if(!e)return"neutral";if(e.value==="neutral"||e.value==="strict")return e.value;throw new Error(`classic.document_evidence must be neutral or strict, got '${e.value}' (${e.source})`)}function xM(t,e){return[pe(t,e.openSpecRoot),pe(t,e.superpowersRoot)]}async function GS(t,e,r){return await EM(t)==="strict"?!1:Vl(r,xM(t,e))}function be(t,e){return{exitCode:t,stderr:e+`
`}}function _t(t){return be(0,`[COMET-HOOK] allowed: ${t}`)}function ns(t){return t.replaceAll("\\","/").replace(/\/+/gu,"/")}function je(t){let e=ns(t);return process.platform==="win32"?e.toLowerCase():e}function US(t,e){let r=ns(rt.relative(e,t));return r===""?"":r.startsWith("../")||r===".."||rt.isAbsolute(r)?null:r}async function PM(t){let e=rt.resolve(t),r=rt.parse(e).root,n=[],i=e;for(;i&&i!==r;)try{let o=await zl.realpath(i);return rt.join(o,...n.reverse())}catch(o){let a=o.code;if(a!=="ENOENT"&&a!=="ENOTDIR")throw o;n.push(rt.basename(i)),i=rt.dirname(i)}try{let o=await zl.realpath(r);return rt.join(o,...n.reverse())}catch{return null}}async function CM(t,e){let r=rt.isAbsolute(t)?t:rt.resolve(e,t),n=ns(r),i=US(r,e);if(i!==null)return i;try{let o=await PM(r),a=await zl.realpath(e);if(o){let s=US(o,a);if(s!==null)return s;n=ns(o)}}catch{if(!rt.isAbsolute(t))return ns(t).replace(/^\.\//u,"")}return n.replace(/^\.\//u,"")}async function eh(t){try{let e=await Ga(t,{migrate:!1}),r=Array.from(new Set(e.unknownKeys)).sort();if(r.length>0)throw new Error(`Invalid Classic state: unknown field(s): ${r.join(", ")}`);if(!e.classic)throw new Error("Classic state projection is unavailable");return{changeDir:t,phase:e.classic.phase,classic:e.classic,archived:e.classic.archived}}catch(e){let r=await NS(t);return r.phase?{changeDir:t,phase:r.phase,classic:null,archived:r.archived,invalidState:e instanceof Error&&e.message.includes("unknown field")}:null}}async function RM(t){let e=(await un(t)).changesDir,r=[];if(!(await pn(t,e,{label:"Classic changes directory",expected:"directory"})).exists)return r;for(let i of(await zl.readdir(e,{withFileTypes:!0})).sort((o,a)=>o.name.localeCompare(a.name))){if(i.name==="archive"||xl(i.name))continue;let o=await Un(i.name,t);if(!o.exists||!o.stateExists)continue;let a=await eh(o.directory);!a||a.archived||r.push(a)}return r}var Gl=ye("classicActiveChanges",t=>RM(t)),is=ye("classicActiveChange",async(t,e)=>{let r=await Un(e,t);if(!r.exists||!r.stateExists)return null;let n=await eh(r.directory);return!n||n.archived?null:n}),QS=ye("classicPlanReadiness",Zm);async function ZS(t){return(await Gl(t)).map(e=>({workflow:"classic",name:Cr(e),phase:e.phase}))}async function eN(t,e){let r=await is(t,e);return r?{workflow:"classic",name:e,phase:r.phase}:null}function tN(t,e){return`${pe(t,e.superpowersRoot)}/`}function rN(t,e){return je(t).startsWith(je(e))}function nN(t,e){return[{prefix:`${pe(t,e.superpowersSpecsDir)}/`,field:"designDoc",wireField:"design_doc",phase:"design"},{prefix:`${pe(t,e.superpowersPlansDir)}/`,field:"plan",wireField:"plan",phase:"build"},{prefix:`${pe(t,e.superpowersReportsDir)}/`,field:"verificationReport",wireField:"verification_report",phase:"verify"}]}function iN(t,e){let r=je(t),n=e.find(o=>r.startsWith(je(o.prefix)));if(!n)return null;let i=r.slice(je(n.prefix).length);return!i||i.includes("/")||!i.endsWith(".md")?null:n}function oN(t,e){return t.classic?.[e.field]??null}function AM(t,e){return t.classic!==null&&t.phase===e.phase&&!oN(t,e)}async function JS(t,e,r){return AM(e,r)?!0:r.field!=="plan"||e.phase!=="build"?!1:(await QS(t,e.classic?.plan??null,{requireNonempty:e.classic?.buildMode==="autonomous"})).status==="broken"}function aN(t){return t.phase==="design"||t.phase==="build"||t.phase==="verify"}function Cr(t){return t.changeDir?rt.basename(t.changeDir):null}var _M=new Set(["design","plan","verify","verification","verification-report","report"]);function YS(t){return t.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}function jM(t,e){return[e.classic?.designDoc,e.classic?.plan,e.classic?.verificationReport].some(n=>n&&je(n)===je(t))}function IM(t,e){let n=(t.split("/").at(-1)??t).replace(/\.[^.]+$/u,"");if(n===e)return!0;let i=[..._M].map(YS).join("|");return new RegExp(`(^|[-_.])${YS(e)}[-_.](${i})$`,"u").test(n)}async function TM(t,e,r){let n=r?[await is(e,r)].filter(s=>s!==null):await Gl(e),i=n.find(s=>jM(t,s));if(i)return{governing:i,match:"recorded"};let a=n.filter(aN).filter(s=>{let c=Cr(s);return c!==null&&IM(t,c)}).sort((s,c)=>(Cr(c)?.length??0)-(Cr(s)?.length??0))[0];return a?{governing:a,match:"named"}:null}async function XS(t,e,r){if(r)return await is(t,r)??{blockedResult:po(e,`selected change '${r}' is no longer active`)};let n=await Gl(t);if(n.length===0)return null;let i=await rs(t);if(i.status==="stale")return{blockedResult:po(e,i.reason)};if(i.status==="selected"){let o=n.find(a=>Cr(a)===i.selection.change);return o||{blockedResult:po(e,`selected change '${i.selection.change}' is no longer active`)}}if(n.length===1){let o=n[0];if(o.changeDir!==null){let a=await Ua(o.changeDir,{heal:!1,cwd:t}),s=Cr(o)??"unknown";if(a.status==="drift")return{blockedResult:po(e,Ja(s,a.boundBranch,a.currentBranch))};if(a.status==="unbound-detached")return{blockedResult:po(e,Ya(s))}}return o}return{blockedResult:VM(e,n.map(o=>Cr(o)).filter(Boolean))}}function $M(t){let r=/^\d{4}-\d{2}-\d{2}-(.+)$/u.exec(t)?.[1]??t;return xl(r)?null:r}function sN(t,e,r){let n=`${pe(e,r.changesDir)}/`;if(!je(t).startsWith(je(n)))return null;let i=t.slice(n.length).split("/").filter(Boolean),[o,a]=i;return o?je(o)===je("archive")?{kind:"archive",archiveName:a??null,changeName:a?$M(a):null}:{kind:"active",changeName:o}:null}function cN(t,e,r){return e?.kind==="archive"?zM(t,e.archiveName,e.changeName,r):e?.kind==="active"&&r&&je(e.changeName)!==je(r)?qM(t,e.changeName,r):null}async function OM(t,e,r,n){let i=sN(t,e,r),o=cN(t,i,n);if(o)return{blockedResult:o};if(i?.kind==="active"){let a=i.changeName,s=await Un(a,e);if(s.stateExists){let c=await eh(s.directory);return c||{changeDir:s.directory,phase:"open",classic:null,archived:!1}}return{changeDir:s.directory,phase:"open",classic:null,archived:!1}}if(rN(t,tN(e,r))){let a=await TM(t,e,n);if(a?.match==="recorded")return{...a.governing,superpowersArtifact:"matched"};let s=iN(t,nN(e,r));if(a)return s?{...a.governing,superpowersArtifact:await JS(e,a.governing,s)?"matched":"unmatched",superpowersSlot:s}:{...a.governing,superpowersArtifact:"matched"};if(s){let l=await XS(e,t,n);return!l||"blockedResult"in l?l:{...l,superpowersArtifact:await JS(e,l,s)?"matched":"unmatched",superpowersSlot:s}}let c=n?await is(e,n):(await Gl(e))[0]??null;return c?{...c,superpowersArtifact:"unmatched"}:null}return XS(e,t,n)}function MM(t){return!t.includes("/")&&t.endsWith(".md")}function LM(t){return t.startsWith(".comet/")||t.includes("/.comet/")}function DM(t){return t===".superpowers"||t.startsWith(".superpowers/")}function BM(t,e,r){let n=je(t);if(!n.startsWith(je(r)))return null;let i=n.endsWith("/.comet.yaml")||n.endsWith("/.openspec.yaml"),o=n.endsWith("/proposal.md")||n.endsWith("/design.md")||n.endsWith("/tasks.md"),a=n.includes("/.comet/"),s=n.includes("/specs/");return e==="open"&&(o||i||a||s)?`${t} (phase: open, openspec artifacts)`:e==="design"&&(o||i||a||s)?`${t} (phase: design, handoff/spec)`:e==="build"&&(n.endsWith("/tasks.md")||i||s)?`${t} (phase: build, spec/tasks)`:e==="verify"&&i?`${t} (phase: verify, state)`:e==="archive"&&i?`${t} (phase: archive, state)`:null}function FM(t,e,r,n){let i=e==="open"?[" BLOCKED: source writes are not allowed during open"," This phase does not allow source writes"," ALLOWED: create proposal/design/tasks artifacts and run guard",` NEXT: finish clarification and artifacts, then run comet guard ${r} open --apply`]:e==="design"?[" BLOCKED: source writes are not allowed during design"," This phase does not allow source writes"," ALLOWED: run brainstorming, create the Design Doc, and run guard",` NEXT: finish the Design Doc, then run comet guard ${r} design --apply to enter build`]:e==="verify"?[" BLOCKED: implementation writes are not allowed during verify"," This phase allows verification reports and state updates only",` NEXT: run comet state transition ${r} verify-fail, then retry the implementation edit in Build`]:[" BLOCKED: source writes are not allowed during archive"," This phase does not allow source writes",` NEXT: run comet archive ${r} to complete Archive; use the reported recovery action if Archive is blocked`];return lN(t,e,e,n,i)}function lN(t,e,r,n,i){let o=HS(r,n);return be(2,["","╔══════════════════════════════════════════╗","║ COMET PHASE GUARD — WRITE BLOCKED ║","╚══════════════════════════════════════════╝","",` Current phase: ${e}`,` Target file: ${t}`,"",` ${o.summary}`,` RELAY TO USER: ${o.user_message}`,"",...i,""].join(`
`))}function KM(t,e,r){return lN(t,"build (workflow: full), but design_doc is empty","build",r,[" BLOCKED: full workflow source writes require a recorded Design Doc"," This phase does not allow source writes until design_doc is recorded",` NEXT: create the Design Doc, run comet state complete-design ${e} --design-doc <repo-relative-ref>, then retry the original write`])}function HM(t,e,r,n,i){let o=Cr(e)??"<change-name>",a=r.status==="missing",s=a?"classic-build-plan-missing":"classic-build-plan-broken",c=a?"plan is not recorded":"the recorded plan path does not resolve to a file",l=a?[]:[`RECORDED_PLAN: ${r.recordedPath}`],d=e.changeDir?pe(n,e.changeDir):"<classic-change-dir>",u=pe(n,i.superpowersPlansDir),p=e.classic?.buildMode==="autonomous",f=a?`comet state set ${o} plan <repository-relative-plan-path>`:`comet state set ${o} plan <new-repository-relative-plan-path>`,m=a?[p?"2. Plan the implementation autonomously from the confirmed design and task IDs.":"2. Load the Superpowers writing-plans Skill.",`3. Read the Design Doc path from "comet state get ${o} design_doc" and read ${d}/tasks.md.`,`4. Create the implementation plan under ${u}/.`,"5. Record the plan path:",` ${f}`]:[p?`2. Restore the plan file at ${r.recordedPath}, or create a replacement autonomously under ${u}/.`:`2. Restore the plan file at ${r.recordedPath}, or load the Superpowers writing-plans Skill and create a replacement under ${u}/.`,"3. When creating a replacement, record its path:",` ${f}`];return be(2,["","╔══════════════════════════════════════════╗","║ COMET PHASE GUARD — WRITE BLOCKED ║","╚══════════════════════════════════════════╝","",`ERROR_CODE: ${s}`,`CHANGE: ${o}`,"WORKFLOW: full","PHASE: build",`TARGET: ${t}`,`STATE: ${c}`,...l,"",p?"BLOCKED: project source writes require a ready implementation plan.":"BLOCKED: project source writes require a ready Superpowers implementation plan.","","ALLOWED_RECOVERY_WRITES:",`- ${u}/<plan-file>.md`,"- Comet state updates performed by the comet CLI",`- ${d} artifacts allowed by the build phase`,"","RECOVERY:",`1. Invoke /comet-build for ${o} and resume Step 1.`,...m,`${a?"6":"4"}. Verify recovery:`,` comet state check ${o} build --recover`,"","SUCCESS: plan is reported as DONE and recovery advances beyond plan creation.",`RETRY: retry the original Write/Edit for ${t} only after SUCCESS.`,"PROHIBITED: do not treat tasks.md as the implementation plan or write project source before SUCCESS.",p?"Autonomous planning does not require an external Skill; all normal acceptance checks still apply.":"If writing-plans is unavailable, stop and report the missing Skill instead of bypassing this check.",""].join(`
`))}function WM(t,e){let r=e.superpowersSlot,n=r?oN(e,r):null,i=r?e.phase!==r.phase?[` BLOCKED: ${r.wireField} cannot be first-written in phase ${e.phase}`,` Expected phase: ${r.phase}`," NEXT: resume the matching Comet phase or use an already recorded artifact path"]:n?[` BLOCKED: ${r.wireField} is already recorded for this change`,` Recorded path: ${n}`," NEXT: write the recorded artifact or explicitly correct the state path"]:[" BLOCKED: standard Superpowers artifact state is incomplete"," NEXT: validate the active change state, then retry the matching phase"]:[" BLOCKED: unmatched Superpowers artifact"," This docs/superpowers/ path does not match any active change artifact"," NEXT: use a recorded artifact path or a standard phase artifact directory"];return be(2,["","╔══════════════════════════════════════════╗","║ COMET PHASE GUARD — WRITE BLOCKED ║","╚══════════════════════════════════════════╝","",` Current phase: ${e.phase}`,` Target file: ${t}`,"",...i,""].join(`
`))}function VM(t,e){return be(2,["","╔══════════════════════════════════════════╗","║ COMET PHASE GUARD — WRITE BLOCKED ║","╚══════════════════════════════════════════╝",""," BLOCKED: multiple active changes require a current change",` Target file: ${t}`,` Active changes: ${e.join(", ")}`,"",` NEXT: choose the intended change, run one of: ${e.map(r=>`comet state select ${r}`).join(" | ")}, then retry the source write`,""].join(`
`))}function po(t,e){return be(2,["","╔══════════════════════════════════════════╗","║ COMET PHASE GUARD — WRITE BLOCKED ║","╚══════════════════════════════════════════╝",""," BLOCKED: current change selection is stale or invalid",` Target file: ${t}`,` Reason: ${e}`,""," NEXT: run comet state current --json, follow its exact selection recovery action, then retry the source write",""].join(`
`))}function qM(t,e,r){return be(2,["","╔══════════════════════════════════════════╗","║ COMET PHASE GUARD — WRITE BLOCKED ║","╚══════════════════════════════════════════╝","",` BLOCKED: target belongs to Classic change '${e}', but the current selection is '${r}'`,` Target file: ${t}`,"",` NEXT: write the matching artifact for '${r}', or run comet state select ${e} before modifying this target`,""].join(`
`))}function zM(t,e,r,n){let i=r?`archived Classic change '${r}'`:e?`Classic archive entry '${e}'`:"the Classic archive",o=n?`, but the current selection is '${n}'`:"";return be(2,["","╔══════════════════════════════════════════╗","║ COMET PHASE GUARD — WRITE BLOCKED ║","╚══════════════════════════════════════════╝","",` BLOCKED: target belongs to ${i}${o}; archived artifacts are immutable`,` Target file: ${t}`,""," NEXT: modify the active change artifact instead; if follow-up work is required, create or select an active change and retry there",""].join(`
`))}async function GM(t,e,r,n=Pl){try{if((await n(t,[e])).projectTargets.length===0)return _t(`${e} (outside guarded project)`)}catch(m){return be(2,[`[COMET-HOOK] blocked: scope could not be determined safely for ${e}.`,`REASON: ${m instanceof Error?m.message:String(m)}`,"NEXT: verify that the project root is accessible, then retry the write."].join(`
`))}let i=await CM(e,t),o;try{o=await Nl(t)}catch(m){return be(2,`[COMET-HOOK] blocked: ${m instanceof Error?m.message:String(m)}`)}let a=sN(i,t,o),s=cN(i,a,r);if(s)return s;if(LM(i))return _t(`${i} (whitelist: comet config)`);if(DM(i))return _t(`${i} (whitelist: superpowers workspace)`);if(await GS(t,o,i))return _t(`${i} (whitelist: neutral document)`);if(i==="CLAUDE.md"||i==="CHANGELOG.md"||i==="README.md"||MM(i))return _t(`${i} (whitelist: root markdown)`);let c=await mn(t,e,[rt.join(t,".comet"),o.openSpecRoot,o.superpowersRoot]);if(c)return _t(c);let l;try{l=await OM(i,t,o,r)}catch(m){return be(2,`[COMET-HOOK] blocked: ${m instanceof Error?m.message:String(m)}`)}if(!l)return _t("no active comet change");if("blockedResult"in l)return l.blockedResult;if(l.archived)return _t(`${i} (own change archived)`);let d=l.phase,u=Cr(l)??r;if(!u)return po(i,"active Classic change name cannot be resolved");if(l.classic?.buildMode==="autonomous"&&l.changeDir)try{let m=await Ua(l.changeDir,{heal:!1,cwd:t});if(m.status==="drift")return be(2,Ja(u,m.boundBranch,m.currentBranch));if(m.status==="unbound-detached")return be(2,Ya(u))}catch(m){return be(2,m instanceof Error?m.message:String(m))}let p=iN(i,nN(t,o));if(d==="build"&&l.classic?.buildMode==="autonomous"&&p?.field==="plan"){let m=await Qm(t,u,l.classic,{requirePlan:!1});if(m.length)return be(2,m.join(`
`))}let f=BM(i,d,`${pe(t,o.openSpecRoot)}/`);if(f)return _t(f);if(rN(i,tN(t,o))){if(l.superpowersArtifact==="matched"&&aN(l))return _t(`${i} (phase: ${d}, superpowers)`);if(l.superpowersArtifact==="unmatched")return WM(i,l)}if(l.invalidState)return be(2,`[COMET-HOOK] blocked: active Classic state is invalid; run comet classic validate ${u}, repair only the reported fields, then run comet state next ${u} --json before retrying ${i}`);if(d==="build"&&l.classic?.workflow==="full"&&!l.classic.designDoc)return KM(i,u,Xm(l.classic?.language));if(d==="build"&&l.classic?.workflow==="full"){let m=await QS(t,l.classic.plan,{requireNonempty:l.classic.buildMode==="autonomous"});if(m.status!=="ready")return HM(i,l,m,t,o)}if(d==="build"){if(l.classic?.buildMode==="autonomous"){let m=await Qm(t,u,l.classic);if(m.length)return be(2,m.join(`
`))}return _t(`${i} (phase: ${d})`)}return FM(i,d,u,Xm(l.classic?.language))}async function dN(t,e,r,n={}){if(r.intent!=="non-write")try{await Nl(t)}catch(a){return{allowed:!1,reason:a instanceof Error?a.message:String(a),workflow:"classic",change:e}}let i;try{i=await is(t,e)}catch(a){return{allowed:!1,reason:a instanceof Error?a.message:String(a),workflow:"classic",change:e}}if(!i)return{allowed:!1,reason:`Selected Classic change ${e} is missing or archived; resume /comet-classic before retrying`,workflow:"classic",change:e};if(r.intent==="non-write")return{allowed:!0,reason:"Hook event is not a write"};if(r.intent==="unknown"||r.targets.length===0)return{allowed:!0,reason:"Hook write target was not attributed to the guarded project",workflow:"classic",change:e,phase:i.phase};let o=!1;for(let a of r.targets){let s=await GM(t,a,e,n.scopeTargets);if(s.exitCode!==0)return{allowed:!1,reason:s.stderr?.trim()||"Classic phase guard blocked the write",workflow:"classic",change:e,phase:i.phase};s.stderr?.includes("configured Hook allow path")&&(o=!0)}return{allowed:!0,reason:o?"Classic write allowed by configured Hook allow path":`Classic write allowed in ${i.phase}`,workflow:"classic",change:e,phase:i.phase}}yr();import{promises as vK}from"fs";import H from"path";var Vh=Ce(Ne(),1);import{promises as t1}from"fs";import Eo from"path";wn();ke();mo();Tt();it();se();Pd();Fh();it();se();za();ke();vn();var p3={runStateBytes:Number.MAX_SAFE_INTEGER,trajectoryBytes:Number.MAX_SAFE_INTEGER,trajectoryEvents:4096,trajectoryEventBytes:Number.MAX_SAFE_INTEGER,checkpointBytes:Number.MAX_SAFE_INTEGER,pendingActionBytes:Number.MAX_SAFE_INTEGER,contextBytes:Number.MAX_SAFE_INTEGER,artifactsBytes:Number.MAX_SAFE_INTEGER};import{createHash as zB}from"node:crypto";import{promises as Id}from"node:fs";import Nn from"node:path";ke();wn();it();se();var fs=/^[a-f0-9]{64}$/u,_E=/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/u,GB=16*1024,Hh=process.platform;function TE(t,e){let r=Nn.relative(t,e);return Nn.isAbsolute(r)||r===".."||r.startsWith(`..${Nn.sep}`)?null:r.replaceAll("\\","/")||"."}function $E(t){return Array.from(t).some(e=>{let r=e.codePointAt(0)??0;return r<=31||r===127})}function OE(t,e){if(t.length===0||$E(t)||t.includes("\\")||Nn.posix.isAbsolute(t)||/^(?:[A-Za-z]:|~)/u.test(t)||t.split("/").includes(".."))throw new Error(`${e} must be a portable project-relative path`);let r=Nn.posix.normalize(t);if(r!==t||r===".."||r.startsWith("../"))throw new Error(`${e} must be a normalized project-relative path`);return r}function Wh(t,e){return zB("sha256").update(`${t}
${e}`).digest("hex")}async function jE(t,e){let r=await Id.realpath(e),n=await Id.lstat(r);if(!n.isDirectory()||n.isSymbolicLink())throw new Error("Native workspace identity requires a real directory");let i=Hh==="win32"?Nn.normalize(r).toLowerCase():r;return Wh(t,`${i}
${n.dev}
${n.ino}
${n.birthtimeMs}`)}async function IE(t,e){let r=await Id.realpath(e),n=await Id.lstat(r);if(!n.isDirectory()||n.isSymbolicLink())throw new Error("Native workspace identity requires a real directory");let i=Hh==="win32"?Nn.normalize(r).toLowerCase():r;return Wh(t,i)}function UB(t){if(typeof t!="string")throw new Error("Native workspace capturedAt is invalid");let e=new Date(t);if(!Number.isFinite(e.getTime())||e.toISOString()!==t)throw new Error("Native workspace capturedAt is invalid");return t}function Kh(t,e){if(t===null)return null;if(typeof t!="string"||t.length===0||t.trim()!==t||$E(t))throw new Error(`${e} must be a non-empty branch name or null`);return t}function ME(t){if(!new Set(["current","branch","worktree"]).has(t.isolation))throw new Error("Native workspace isolation must be current, branch, or worktree");if(Kh(t.changeBranch,"Native workspace change branch"),Kh(t.targetBranch,"Native workspace target branch"),(t.isolation==="branch"||t.isolation==="worktree")&&(t.changeBranch===null||t.targetBranch===null))throw new Error("Native isolated workspace requires change and target branches")}function JB(t){if(!t||typeof t!="object"||Array.isArray(t))throw new Error("Native workspace Git provenance must be an object");let e=t,r=new Set(["provider","baseCommit","targetBranch","targetCommit"]),n=Object.keys(e).filter(i=>!r.has(i));if(n.length>0)throw new Error(`Native workspace Git provenance has unknown field(s): ${n.join(", ")}`);if(e.provider!=="git"||typeof e.baseCommit!="string"||!_E.test(e.baseCommit)||typeof e.targetCommit!="string"||!_E.test(e.targetCommit))throw new Error("Native workspace Git provenance is invalid");Kh(e.targetBranch,"Native workspace Git target branch")}function Td(t){if(!t||typeof t!="object"||Array.isArray(t))throw new Error("Native workspace identity must be an object");let e=t,r=new Set(["schema","capturedAt","capturedRevision","nativeRootRef","projectRootId","nativeRootId","projectRootPathId","nativeRootPathId","sessionHash","git","isolation","changeBranch","targetBranch","finish"]),n=Object.keys(e).filter(a=>!r.has(a));if(n.length>0)throw new Error(`Native workspace identity has unknown field(s): ${n.join(", ")}`);if(e.schema!=="comet.native.workspace.v2"&&e.schema!=="comet.native.workspace.v3")throw new Error("Unsupported Native workspace identity");if(!Number.isSafeInteger(e.capturedRevision)||e.capturedRevision<1||typeof e.nativeRootRef!="string"||!fs.test(String(e.projectRootId))||!fs.test(String(e.nativeRootId)))throw new Error("Native workspace identity is invalid");UB(e.capturedAt),OE(e.nativeRootRef,"Native workspace root ref");let i=e.projectRootPathId!==void 0,o=e.nativeRootPathId!==void 0;if(i!==o)throw new Error("Native workspace path identities must be provided together");if(i&&!fs.test(String(e.projectRootPathId))||o&&!fs.test(String(e.nativeRootPathId)))throw new Error("Native workspace path identity is invalid");if(e.sessionHash!==void 0&&!fs.test(String(e.sessionHash)))throw new Error("Native workspace session hash is invalid");if(e.git!==void 0&&JB(e.git),e.schema==="comet.native.workspace.v2"){if(e.isolation!==void 0||e.changeBranch!==void 0||e.targetBranch!==void 0||e.finish!==void 0)throw new Error("Native workspace v2 identity cannot contain a workspace binding");return}if(typeof e.isolation!="string"||e.changeBranch===void 0||e.targetBranch===void 0||e.finish===void 0)throw new Error("Native workspace v3 identity requires a workspace binding");if(ME(e),e.finish!==null&&!new Set(["merge","push","pull-request","keep"]).has(e.finish))throw new Error("Native workspace finish must be merge, push, pull-request, keep, or null")}function YB(t,e){return Nn.join(rn(t,e),"workspace.json")}function XB(t,e){let r=YB(t,e),n=Wn(t,r),i=TE(n,r);if(!i||i===".")throw new Error("Native workspace file escaped its root");return{root:n,ref:OE(i,"Native workspace file ref")}}async function QB(t,e){try{let r=XB(t,e),n=await ne({root:r.root,ref:r.ref,maxBytes:GB});return JSON.parse(n.text)}catch(r){if(r.code==="ENOENT")return null;throw r}}async function ZB(t){if(!Number.isSafeInteger(t.revision)||t.revision<1)throw new Error("Native workspace revision must be a positive integer");let e=TE(t.paths.projectRoot,t.paths.nativeRoot);if(!e)throw new Error("Native root is outside the project root");let r=Pr(t.paths.projectRoot),n=r.isGitWorktree?ri(t.paths.projectRoot,"HEAD"):null,i=t.binding?.targetBranch??r.currentBranch,o=i==null?null:ri(t.paths.projectRoot,i),a=n!==null&&i!==null&&i!==void 0&&o!==null?{provider:"git",baseCommit:n,targetBranch:i,targetCommit:o}:void 0,[s,c,l,d]=await Promise.all([jE("comet.native.workspace-project-root.v2",t.paths.projectRoot),jE("comet.native.workspace-native-root.v2",t.paths.nativeRoot),IE("comet.native.workspace-project-root-path.v2",t.paths.projectRoot),IE("comet.native.workspace-native-root-path.v2",t.paths.nativeRoot)]),u=(t.now??new Date).toISOString();if(t.finish&&!t.binding)throw new Error("Native workspace finish requires a workspace binding");t.binding&&ME(t.binding);let p={capturedAt:u,capturedRevision:t.revision,nativeRootRef:e,projectRootId:s,nativeRootId:c,projectRootPathId:l,nativeRootPathId:d,...a?{git:a}:{},...t.sessionId?{sessionHash:Wh("comet.native.workspace-session.v2",`${s}
${c}
${t.sessionId}`)}:{}},f=t.binding?{schema:"comet.native.workspace.v3",...p,...t.binding,finish:t.finish??null}:{schema:"comet.native.workspace.v2",...p};return Td(f),f}async function LE(t,e){let r=await QB(t,e);return r===null||r&&typeof r=="object"&&!Array.isArray(r)&&r.schema==="comet.native.workspace.v1"?null:(Td(r),r)}async function DE(t){Td(t.identity);let e=await ZB({paths:t.paths,name:"workspace-advisory",revision:t.identity.capturedRevision}),r=[],n=[];return e.nativeRootRef!==t.identity.nativeRootRef&&r.push("native-root-ref"),t.identity.projectRootPathId&&t.identity.nativeRootPathId?(e.projectRootPathId!==t.identity.projectRootPathId&&r.push("project-root-path"),e.nativeRootPathId!==t.identity.nativeRootPathId&&r.push("native-root-path")):(e.projectRootId!==t.identity.projectRootId&&r.push("project-root-legacy-identity"),e.nativeRootId!==t.identity.nativeRootId&&r.push("native-root-legacy-identity")),Hh==="win32"&&r.length>0&&r.every(o=>o==="project-root-legacy-identity"||o==="native-root-legacy-identity")?n.push("workspace-inspection-unavailable"):r.length>0&&n.push("workspace-root-changed"),{state:n.length===0?"aligned":n.includes("workspace-root-changed")?"drifted":"unknown",findingCodes:n,driftComponents:r}}async function BE(t){if(Td(t.identity),t.identity.schema==="comet.native.workspace.v2")return{state:"legacy",code:"workspace-binding-legacy",message:"Legacy Native workspace metadata has no isolation binding"};if((await DE(t)).state==="drifted")return{state:"drifted",code:"workspace-binding-root-changed",message:"Native change is being accessed from a different working directory"};let r=Pr(t.paths.projectRoot);return t.identity.changeBranch===null?r.isGitWorktree?{state:"drifted",code:"workspace-branch-changed",message:"Native change was created outside Git but is now being accessed inside Git"}:{state:"aligned",code:null,message:null}:r.isGitWorktree?r.currentBranch!==t.identity.changeBranch?{state:"drifted",code:"workspace-branch-changed",message:`Native change is bound to branch ${t.identity.changeBranch}, but the current branch is ${r.currentBranch??"detached HEAD"}`}:t.identity.isolation==="worktree"&&!r.isSecondaryWorktree?{state:"drifted",code:"workspace-kind-changed",message:"Native change is bound to a linked Git worktree"}:{state:"aligned",code:null,message:null}:{state:"drifted",code:"workspace-vcs-unavailable",message:"Native change requires its bound Git working directory"}}async function FE(t,e){let r=await LE(t,e);if(r===null)return null;let n=await BE({paths:t,identity:r});if(n.state==="drifted")throw new Error(`${n.code}: ${n.message}`);return r}dd();md();md();var e8=ed("en");function ms(t,e){vo(e);let r=Eo.join(t.changesDir,e);if(!Ze(t.changesDir,r))throw new Error("Native change path escaped");return r}async function r1(t,e){let r=rn(t,e),n=Eo.join(r,"schema-migration.json");await te(Ze(t.runtimeDir,n)?t.runtimeDir:t.nativeRoot,n);try{return await t1.lstat(n),!0}catch(i){if(i.code==="ENOENT")return!1;throw i}}async function n1(t,e=Eo.dirname(t)){let r=Eo.relative(e,t).split(Eo.sep).join("/"),n=await ne({root:e,ref:r,maxBytes:null,includeHash:!1}),i=(0,Vh.parseDocument)(n.text,{uniqueKeys:!0});if(i.errors.length>0)throw new Error(`Invalid Native change file ${t}: ${i.errors[0].message}`);return i.toJS()}async function i1(t,e){let r=Eo.join(ms(t,e),kn);await te(t.nativeRoot,r);let n=vh(await n1(r,t.nativeRoot));if(n.state&&n.state.name!==e)throw new Error(`Native change directory/name mismatch: ${e}`);return await r1(t,e)?{status:"migration-required",schema:n.schema,minimumRuntimeVersion:n.minimumRuntimeVersion,state:n.state,message:`Native schema migration is incomplete for ${e}; run doctor --repair`}:(n.status==="current"&&n.state&&await o1(t,n.state),n)}async function o1(t,e){if(await AE(t,e.name)!==null&&e.verification_protocol!=="legacy-v1")throw new Error(`Native verification protocol is unsupported: ${e.verification_protocol}`)}async function hs(t,e){let r=await i1(t,e);if(r.status==="migration-required")throw new yo(e,r.schema);if(r.status==="runtime-incompatible"||!r.state)throw new Ir(r.schema,r.minimumRuntimeVersion);return await FE(t,e),r.state}Tt();se();Oa();Wa();Tt();it();import{promises as WE}from"node:fs";import Od from"node:path";lt();ke();yd();import{promises as HE}from"node:fs";import a1 from"node:os";import vs from"node:path";function gs(t,e){if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`${e} must be an object`);return t}function ys(t,e,r){let n=Object.keys(t).filter(i=>!e.has(i));if(n.length>0)throw new Error(`${r} has unknown field(s): ${n.join(", ")}`)}function Oe(t,e,r=!1){if(typeof t!="string"||!r&&t.length===0)throw new Error(`${e} must be ${r?"a string":"a non-empty string"}`);return t}function xo(t,e){return t===null?null:Oe(t,e)}function Po(t,e,r=0){if(!Number.isSafeInteger(t)||t<r)throw new Error(`${e} must be a safe integer greater than or equal to ${r}`);return t}function s1(t,e){if(t===null)return null;if(!Number.isSafeInteger(t))throw new Error(`${e} must be null or a safe integer`);return t}function c1(t,e){if(typeof t!="boolean")throw new Error(`${e} must be a boolean`);return t}function Co(t,e,r){if(typeof t!="string"||!e.includes(t))throw new Error(`${r} must be one of: ${e.join(", ")}`);return t}function qh(t,e){if(t===null)return null;let r=Oe(t,e);if(Number.isNaN(Date.parse(r)))throw new Error(`${e} must be an ISO timestamp`);return r}function l1(t,e){let r=Oe(t,e);if(Number.isNaN(Date.parse(r)))throw new Error(`${e} must be an ISO timestamp`);return r}function zh(t,e){let r=Oe(t,e);if(!vs.isAbsolute(r))throw new Error(`${e} must be absolute`);return vs.resolve(r)}function d1(t,e){let r=`Native local checks[${e}]`,n=gs(t,r);if(ys(n,new Set(["id","name","operationId","status","repeatable","timeoutMs","executionCount","argv","cwd","exitCode","startedAt","completedAt","log","activeProcess","evidence","evidenceDigest"]),r),!Array.isArray(n.argv)||n.argv.length===0)throw new Error(`${r}.argv must be a non-empty array`);let i=n.argv.map((d,u)=>Oe(d,`${r}.argv[${u}]`,!0)),o=Co(n.status,["planned","running","passed","failed","interrupted"],`${r}.status`),a=qh(n.startedAt,`${r}.startedAt`),s=qh(n.completedAt,`${r}.completedAt`);if(o==="planned"&&(a!==null||s!==null))throw new Error(`${r} planned check cannot contain execution timestamps`);if(o==="running"&&(a===null||s!==null))throw new Error(`${r} running check requires only startedAt`);if((o==="passed"||o==="failed")&&(a===null||s===null))throw new Error(`${r} completed check requires startedAt and completedAt`);let c=Po(n.timeoutMs,`${r}.timeoutMs`);if(c<1)throw new Error(`${r}.timeoutMs must be positive`);let l;if(Object.hasOwn(n,"activeProcess"))if(n.activeProcess===null)l=null;else{let d=gs(n.activeProcess,`${r}.activeProcess`),u=Co(d.status,["starting","running"],`${r}.activeProcess.status`);if(ys(d,new Set(["status","pid","identity"]),`${r}.activeProcess`),u==="starting"){if(Object.hasOwn(d,"pid")||Object.hasOwn(d,"identity"))throw new Error(`${r}.activeProcess starting state cannot contain process identity`);l={status:"starting"}}else l={status:"running",pid:Po(d.pid,`${r}.activeProcess.pid`,1),...Object.hasOwn(d,"identity")?{identity:Oe(d.identity,`${r}.activeProcess.identity`)}:{}}}return{id:Oe(n.id,`${r}.id`),name:Oe(n.name,`${r}.name`),operationId:Oe(n.operationId,`${r}.operationId`),status:o,repeatable:c1(n.repeatable,`${r}.repeatable`),timeoutMs:c,executionCount:Po(n.executionCount,`${r}.executionCount`),argv:i,cwd:zh(n.cwd,`${r}.cwd`),exitCode:s1(n.exitCode,`${r}.exitCode`),startedAt:a,completedAt:s,log:Oe(n.log,`${r}.log`),...Object.hasOwn(n,"activeProcess")?{activeProcess:l}:{},...Object.hasOwn(n,"evidence")?{evidence:Co(n.evidence,["runtime"],`${r}.evidence`)}:{},...Object.hasOwn(n,"evidenceDigest")?{evidenceDigest:Oe(n.evidenceDigest,`${r}.evidenceDigest`)}:{}}}function Gh(t){let e="Native local execution state",r=gs(t,e);if(ys(r,new Set(["schema","change","basedOnStateVersion","candidateId","inputFingerprint","inputFingerprintGate","candidateInputFingerprintGate","workspace","execution","checks"]),e),r.schema!==us)throw new Error(`Native local execution schema must be ${us}`);let n=gs(r.workspace,"Native local workspace");ys(n,new Set(["projectRoot","worktreeRoot","branch","machineId"]),"Native local workspace");let i=null;if(r.execution!==null){let a=gs(r.execution,"Native local execution");ys(a,new Set(["operationId","stage","actor","executionId","status","startedAt","requestCheckRounds","verifierStartedAt","ownerPid","ownerIdentity"]),"Native local execution");let s=qh(a.startedAt,"Native local execution.startedAt");if(s===null)throw new Error("Native local execution.startedAt is required");i={operationId:Oe(a.operationId,"Native local execution.operationId"),stage:Co(a.stage,["building","checking","verifying","archiving"],"Native local execution.stage"),actor:a.actor===null?null:Co(a.actor,["builder","runtime","verifier"],"Native local execution.actor"),executionId:xo(a.executionId,"Native local execution.executionId"),status:Co(a.status,["running","completed","interrupted"],"Native local execution.status"),startedAt:s,requestCheckRounds:Po(a.requestCheckRounds,"Native local execution.requestCheckRounds"),...Object.hasOwn(a,"verifierStartedAt")?{verifierStartedAt:l1(a.verifierStartedAt,"Native local execution.verifierStartedAt")}:{},...Object.hasOwn(a,"ownerPid")?{ownerPid:Po(a.ownerPid,"Native local execution.ownerPid",1)}:{},...Object.hasOwn(a,"ownerIdentity")?{ownerIdentity:Oe(a.ownerIdentity,"Native local execution.ownerIdentity")}:{}}}if(!Array.isArray(r.checks))throw new Error("Native local checks must be an array");let o=r.checks.map(d1);if(new Set(o.map(a=>a.id)).size!==o.length)throw new Error("Native local check IDs must be unique");if(i&&o.some(a=>a.operationId!==i.operationId))throw new Error("Native local checks must belong to the current operation");return{schema:us,change:Oe(r.change,"Native local change"),basedOnStateVersion:Po(r.basedOnStateVersion,"Native local basedOnStateVersion",1),...Object.hasOwn(r,"candidateId")?{candidateId:xo(r.candidateId,"Native local candidateId")}:{},...Object.hasOwn(r,"inputFingerprint")?{inputFingerprint:xo(r.inputFingerprint,"Native local inputFingerprint")}:{},...Object.hasOwn(r,"inputFingerprintGate")?{inputFingerprintGate:xo(r.inputFingerprintGate,"Native local inputFingerprintGate")}:{},...Object.hasOwn(r,"candidateInputFingerprintGate")?{candidateInputFingerprintGate:xo(r.candidateInputFingerprintGate,"Native local candidateInputFingerprintGate")}:{},workspace:{projectRoot:zh(n.projectRoot,"Native local workspace.projectRoot"),worktreeRoot:zh(n.worktreeRoot,"Native local workspace.worktreeRoot"),branch:xo(n.branch,"Native local workspace.branch"),...Object.hasOwn(n,"machineId")?{machineId:Oe(n.machineId,"Native local workspace.machineId")}:{}},execution:i,checks:o}}function Or(t){return Gh({schema:us,change:t.portableState.name,basedOnStateVersion:t.portableState.state_version,candidateId:t.portableState.builder_handoff?.candidate_id??null,inputFingerprint:null,inputFingerprintGate:null,candidateInputFingerprintGate:null,workspace:{projectRoot:vs.resolve(t.projectRoot),worktreeRoot:vs.resolve(t.worktreeRoot??t.projectRoot),branch:t.branch??null,machineId:a1.hostname()},execution:null,checks:[]})}async function $d(t){let e;try{e=await HE.readFile(t,"utf8")}catch(n){if(n.code==="ENOENT")return null;throw n}let r;try{r=JSON.parse(e)}catch(n){throw new Error(`Native local execution state is invalid JSON: ${n.message}`,{cause:n})}return Gh(r)}async function En(t,e,r={}){let n=Gh(e);await HE.mkdir(vs.dirname(t),{recursive:!0}),await Jt(t,n,r)}Sn();se();var di=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u,VE="comet-state.yaml",qE="state.json";function Me(t,e){if(!di.test(e))throw new Error(`Invalid Native change name: ${e}`);let r=Od.join(t.changesDir,e);if(!Ze(t.changesDir,r))throw new Error("Native change path escaped");return r}function ws(t,e){return Od.join(Me(t,e),VE)}function er(t,e){return Od.join(tn(t,e),qE)}async function Ro(t,e){try{let r=await WE.readFile(ws(t,e),"utf8");return/^schema:\s*comet\.native\.v4\s*$/mu.test(r)}catch(r){if(r.code==="ENOENT")return!1;throw r}}function Mr(t){return BS(t)}async function Je(t,e){return ps(ws(t,e))}async function xn(t){let e=await oE({file:ws(t.paths,t.previous.name),expectedStateVersion:t.previous.state_version,next:t.next,containedRoot:t.paths.nativeRoot});if(e.verification===null&&e.verification_report===null){let r=Od.join(Me(t.paths,e.name),"verification.md");await te(t.paths.nativeRoot,r),await WE.rm(r,{force:!0})}return e}import{promises as ru}from"node:fs";import vi from"node:path";function Xh(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var fi=Xh();function ZE(t){fi=t}var ui={exec:()=>null};function Ao(t){let e=[];return r=>{let n=Math.max(0,Math.min(3,r-1)),i=e[n];return i||(i=t(n),e[n]=i),i}}function M(t,e=""){let r=typeof t=="string"?t:t.source,n={replace:(i,o)=>{let a=typeof o=="string"?o:o.source;return a=a.replace(xe.caret,"$1"),r=r.replace(i,a),n},getRegex:()=>new RegExp(r,e)};return n}var u1=((t="")=>{try{return!!new RegExp("(?<=1)(?<!1)"+t)}catch{return!1}})(),xe={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:Ao(t=>new RegExp(`^ {0,${t}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:Ao(t=>new RegExp(`^ {0,${t}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`)),fencesBeginRegex:Ao(t=>new RegExp(`^ {0,${t}}(?:\`\`\`|~~~)`)),headingBeginRegex:Ao(t=>new RegExp(`^ {0,${t}}#`)),htmlBeginRegex:Ao(t=>new RegExp(`^ {0,${t}}<(?:[a-z].*>|!--)`,"i")),blockquoteBeginRegex:Ao(t=>new RegExp(`^ {0,${t}}>`))},p1=/^(?:[ \t]*(?:\n|$))+/,f1=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,m1=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Ss=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,h1=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Qh=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,ex=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,tx=M(ex).replace(/bull/g,Qh).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),g1=M(ex).replace(/bull/g,Qh).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Zh=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,y1=/^[^\n]+/,eg=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,v1=M(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",eg).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),w1=M(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,Qh).getRegex(),Fd="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",tg=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,b1=M("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",tg).replace("tag",Fd).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),rx=t=>M(Zh).replace("hr",Ss).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",t).replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Fd).getRegex(),k1=rx(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),S1=rx(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),N1=M(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",S1).getRegex(),rg={blockquote:N1,code:f1,def:v1,fences:m1,heading:h1,hr:Ss,html:b1,lheading:tx,list:w1,newline:p1,paragraph:k1,table:ui,text:y1},zE=M("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Ss).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Fd).getRegex(),E1={...rg,lheading:g1,table:zE,paragraph:M(Zh).replace("hr",Ss).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",zE).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Fd).getRegex()},x1={...rg,html:M(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",tg).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:ui,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:M(Zh).replace("hr",Ss).replace("heading",` *#{1,6} *[^
]`).replace("lheading",tx).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},P1=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,C1=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,nx=/^( {2,}|\\)\n(?!\s*$)/,R1=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,Lr=/[\p{P}\p{S}]/u,_o=/[\s\p{P}\p{S}]/u,Ns=/[^\s\p{P}\p{S}]/u,A1=M(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,_o).getRegex(),_1=/[\p{Pi}\p{Ps}"']/u,ix=/(?!~)[\p{P}\p{S}]/u,j1=/(?!~)[\s\p{P}\p{S}]/u,I1=/(?:[^\s\p{P}\p{S}]|~)/u,T1=M(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",u1?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),ox=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,$1=M(ox,"u").replace(/punct/g,Lr).getRegex(),O1=M(ox,"u").replace(/punct/g,ix).getRegex(),M1=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,L1=M(M1,"u").replace(/openQuote/g,_1).replace(/punct/g,Lr).getRegex(),ax="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",D1=M(ax,"gu").replace(/notPunctSpace/g,Ns).replace(/punctSpace/g,_o).replace(/punct/g,Lr).getRegex(),B1=M(ax,"gu").replace(/notPunctSpace/g,I1).replace(/punctSpace/g,j1).replace(/punct/g,ix).getRegex(),F1="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",K1=M(F1,"gu").replace(/notPunctSpace/g,Ns).replace(/punctSpace/g,_o).replace(/punct/g,Lr).getRegex(),H1=M("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Ns).replace(/punctSpace/g,_o).replace(/punct/g,Lr).getRegex(),W1="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",V1=M(W1,"gu").replace(/notPunctSpace/g,Ns).replace(/punctSpace/g,_o).replace(/punct/g,Lr).getRegex(),q1=M(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,Lr).getRegex(),z1="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",G1=M(z1,"gu").replace(/notPunctSpace/g,Ns).replace(/punctSpace/g,_o).replace(/punct/g,Lr).getRegex(),U1=M(/\\(punct)/,"gu").replace(/punct/g,Lr).getRegex(),J1=M(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Y1=M(tg).replace("(?:-->|$)","-->").getRegex(),X1=M("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",Y1).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Ld=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,Q1=M(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",Ld).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),sx=M(/^!?\[(label)\]\[(ref)\]/).replace("label",Ld).replace("ref",eg).getRegex(),cx=M(/^!?\[(ref)\](?:\[\])?/).replace("ref",eg).getRegex(),Z1=M("reflink|nolink(?!\\()","g").replace("reflink",sx).replace("nolink",cx).getRegex(),GE=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,ng={_backpedal:ui,anyPunctuation:U1,autolink:J1,blockSkip:T1,br:nx,code:C1,del:ui,delLDelim:ui,delRDelim:ui,emStrongLDelim:$1,emStrongRDelimAst:D1,emStrongRDelimUnd:H1,escape:P1,link:Q1,nolink:cx,punctuation:A1,reflink:sx,reflinkSearch:Z1,tag:X1,text:R1,url:ui},eF={...ng,emStrongLDelim:L1,emStrongRDelimAst:K1,emStrongRDelimUnd:V1,link:M(/^!?\[(label)\]\((.*?)\)/).replace("label",Ld).getRegex(),reflink:M(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Ld).getRegex()},Uh={...ng,emStrongRDelimAst:B1,emStrongLDelim:O1,delLDelim:q1,delRDelim:G1,url:M(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",GE).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:M(/^(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",GE).getRegex()},tF={...Uh,br:M(nx).replace("{2,}","*").getRegex(),text:M(Uh.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},Md={normal:rg,gfm:E1,pedantic:x1},bs={normal:ng,gfm:Uh,breaks:tF,pedantic:eF},rF={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},UE=t=>rF[t];function tr(t,e){if(e){if(xe.escapeTest.test(t))return t.replace(xe.escapeReplace,UE)}else if(xe.escapeTestNoEncode.test(t))return t.replace(xe.escapeReplaceNoEncode,UE);return t}function JE(t){try{t=encodeURI(t).replace(xe.percentDecode,"%")}catch{return null}return t}function YE(t,e){let r=t.replace(xe.findPipe,(o,a,s)=>{let c=!1,l=a;for(;--l>=0&&s[l]==="\\";)c=!c;return c?"|":" |"}),n=r.split(xe.splitPipe),i=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length<e;)n.push("");for(;i<n.length;i++)n[i]=n[i].trim().replace(xe.slashPipe,"|");return n}function Pn(t,e,r){let n=t.length;if(n===0)return"";let i=0;for(;i<n;){let o=t.charAt(n-i-1);if(o===e&&!r)i++;else if(o!==e&&r)i++;else break}return t.slice(0,n-i)}function XE(t){let e=t.split(`
`),r=e.length-1;for(;r>=0&&xe.blankLine.test(e[r]);)r--;return e.length-r<=2?t:e.slice(0,r+1).join(`
`)}function nF(t,e){if(t.indexOf(e[1])===-1)return-1;let r=0;for(let n=0;n<t.length;n++)if(t[n]==="\\")n++;else if(t[n]===e[0])r++;else if(t[n]===e[1]&&(r--,r<0))return n;return r>0?-2:-1}function iF(t,e=0){let r=e,n="";for(let i of t)if(i===" "){let o=4-r%4;n+=" ".repeat(o),r+=o}else n+=i,r++;return n}function QE(t,e,r,n,i){let o=e.href,a=e.title||null,s=t[1].replace(i.other.outputLinkReplace,"$1"),c=t[0].charAt(0)==="!";n.state.inLink=!0;let l=n.state.linkEmitted,d=n.state.inRawBlock;n.state.linkEmitted=!1;let u=n.inlineTokens(s),p=n.state.linkEmitted;if(n.state.linkEmitted=l,n.state.inLink=!1,!c){if(p){n.state.inRawBlock=d;return}n.state.linkEmitted=!0}return{type:c?"image":"link",raw:r,href:o,title:a,text:s,tokens:u}}function oF(t,e,r){let n=t.match(r.other.indentCodeCompensation);if(n===null)return e;let i=n[1];return e.split(`
`).map(o=>{let a=o.match(r.other.beginningSpace);if(a===null)return o;let[s]=a;return s.length>=i.length?o.slice(i.length):o}).join(`
`)}var Dd=class{options;rules;lexer;constructor(t){this.options=t||fi}space(t){let e=this.rules.block.newline.exec(t);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(t){let e=this.rules.block.code.exec(t);if(e){let r=this.options.pedantic?e[0]:XE(e[0]),n=r.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:r,codeBlockStyle:"indented",text:n}}}fences(t){let e=this.rules.block.fences.exec(t);if(e){let r=e[0],n=oF(r,e[3]||"",this.rules);return{type:"code",raw:r,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:n}}}heading(t){let e=this.rules.block.heading.exec(t);if(e){let r=e[2].trim();if(this.rules.other.endingHash.test(r)){let n=Pn(r,"#");(this.options.pedantic||!n||this.rules.other.endingSpaceChar.test(n))&&(r=n.trim())}return{type:"heading",raw:Pn(e[0],`
`),depth:e[1].length,text:r,tokens:this.lexer.inline(r)}}}hr(t){let e=this.rules.block.hr.exec(t);if(e)return{type:"hr",raw:Pn(e[0],`
`)}}blockquote(t){let e=this.rules.block.blockquote.exec(t);if(e){let r=Pn(e[0],`
`).split(`
`),n="",i="",o=[];for(;r.length>0;){let a=!1,s=[],c;for(c=0;c<r.length;c++)if(this.rules.other.blockquoteStart.test(r[c]))s.push(r[c]),a=!0;else if(!a)s.push(r[c]);else break;r=r.slice(c);let l=s.join(`
`),d=l.replace(this.rules.other.blockquoteSetextReplace,`
$1`).replace(this.rules.other.blockquoteSetextReplace2,"");n=n?`${n}
${l}`:l,i=i?`${i}
${d}`:d;let u=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(d,o,!0),this.lexer.state.top=u,r.length===0)break;let p=o.at(-1);if(p?.type==="code")break;if(p?.type==="blockquote"){let f=p,m=r.join(`
`),g=f.raw+`
`+m.replace(this.rules.other.blockquoteSetextReplace2,""),h=this.blockquote(g);o[o.length-1]=h,n=`${n}
${m}`,i=i.substring(0,i.length-f.text.length)+h.text;break}else if(p?.type==="list"){let f=p,m=f.raw+`
`+r.join(`
`),g=this.list(m);o[o.length-1]=g,n=n.substring(0,n.length-p.raw.length)+g.raw,i=i.substring(0,i.length-f.raw.length)+g.raw,r=m.substring(o.at(-1).raw.length).split(`
`);continue}}return{type:"blockquote",raw:n,tokens:o,text:i}}}list(t){let e=this.rules.block.list.exec(t);if(e){let r=e[1].trim(),n=r.length>1,i={type:"list",raw:"",ordered:n,start:n?+r.slice(0,-1):"",loose:!1,items:[]};r=n?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=n?r:"[*+-]");let o=this.rules.other.listItemRegex(r),a=!1;for(;t;){let c=!1,l="",d="";if(!(e=o.exec(t))||this.rules.block.hr.test(t))break;l=e[0],t=t.substring(l.length);let u=iF(e[2].split(`
`,1)[0],e[1].length),p=t.split(`
`,1)[0],f=!u.trim(),m=0;if(this.options.pedantic?(m=2,d=u.trimStart()):f?m=e[1].length+1:(m=u.search(this.rules.other.nonSpaceChar),m=m>4?1:m,d=u.slice(m),m+=e[1].length),f&&this.rules.other.blankLine.test(p)&&(l+=p+`
`,t=t.substring(p.length+1),c=!0),!c){let g=this.rules.other.nextBulletRegex(m),h=this.rules.other.hrRegex(m),w=this.rules.other.fencesBeginRegex(m),y=this.rules.other.headingBeginRegex(m),v=this.rules.other.htmlBeginRegex(m),b=this.rules.other.blockquoteBeginRegex(m);for(;t;){let k=t.split(`
`,1)[0],S;if(p=k,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting," "),S=p):S=p.replace(this.rules.other.tabCharGlobal," "),w.test(p)||y.test(p)||v.test(p)||b.test(p)||g.test(p)||h.test(p))break;if(S.search(this.rules.other.nonSpaceChar)>=m||!p.trim())d+=`
`+S.slice(m);else{if(f||u.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||w.test(u)||y.test(u)||h.test(u))break;d+=`
`+p}f=!p.trim(),l+=k+`
`,t=t.substring(k.length+1),u=S.slice(m)}}i.loose||(a?i.loose=!0:this.rules.other.doubleBlankLine.test(l)&&(a=!0)),i.items.push({type:"list_item",raw:l,task:!!this.options.gfm&&this.rules.other.listIsTask.test(d),loose:!1,text:d,tokens:[]}),i.raw+=l}let s=i.items.at(-1);if(s)s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let c of i.items)if(this.lexer.state.top=!1,c.tokens=this.lexer.blockTokens(c.text,[]),!i.loose){let l=c.tokens.filter(u=>u.type==="space"),d=l.length>0&&l.some(u=>this.rules.other.anyLine.test(u.raw));i.loose=d}for(let c of i.items){let l=c.tokens[0];if(c.task&&(l?.type==="text"||l?.type==="paragraph")){c.text=c.text.replace(this.rules.other.listReplaceTask,""),l.raw=l.raw.replace(this.rules.other.listReplaceTask,""),l.text=l.text.replace(this.rules.other.listReplaceTask,"");for(let u=this.lexer.inlineQueue.length-1;u>=0;u--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[u].src)){this.lexer.inlineQueue[u].src=this.lexer.inlineQueue[u].src.replace(this.rules.other.listReplaceTask,"");break}let d=this.rules.other.listTaskCheckbox.exec(c.raw);if(d){let u={type:"checkbox",raw:d[0]+" ",checked:d[0]!=="[ ]"};c.checked=u.checked,i.loose?c.tokens[0]&&["paragraph","text"].includes(c.tokens[0].type)&&"tokens"in c.tokens[0]&&c.tokens[0].tokens?(c.tokens[0].raw=u.raw+c.tokens[0].raw,c.tokens[0].text=u.raw+c.tokens[0].text,c.tokens[0].tokens.unshift(u)):c.tokens.unshift({type:"paragraph",raw:u.raw,text:u.raw,tokens:[u]}):c.tokens.unshift(u)}}else c.task&&(c.task=!1)}if(i.loose)for(let c of i.items){c.loose=!0;for(let l of c.tokens)l.type==="text"&&(l.type="paragraph")}return i}}html(t){let e=this.rules.block.html.exec(t);if(e){let r=XE(e[0]);return{type:"html",block:!0,raw:r,pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:r}}}def(t){let e=this.rules.block.def.exec(t);if(e){let r=e[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),n=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",i=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:r,raw:Pn(e[0],`
`),href:n,title:i}}}table(t){let e=this.rules.block.table.exec(t);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let r=YE(e[1]),n=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),i=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(`
`):[],o={type:"table",raw:Pn(e[0],`
`),header:[],align:[],rows:[]};if(r.length===n.length){for(let a of n)this.rules.other.tableAlignRight.test(a)?o.align.push("right"):this.rules.other.tableAlignCenter.test(a)?o.align.push("center"):this.rules.other.tableAlignLeft.test(a)?o.align.push("left"):o.align.push(null);for(let a=0;a<r.length;a++)o.header.push({text:r[a],tokens:this.lexer.inline(r[a]),header:!0,align:o.align[a]});for(let a of i)o.rows.push(YE(a,o.header.length).map((s,c)=>({text:s,tokens:this.lexer.inline(s),header:!1,align:o.align[c]})));return o}}lheading(t){let e=this.rules.block.lheading.exec(t);if(e){let r=e[1].trim();return{type:"heading",raw:Pn(e[0],`
`),depth:e[2].charAt(0)==="="?1:2,text:r,tokens:this.lexer.inline(r)}}}paragraph(t){let e=this.rules.block.paragraph.exec(t);if(e){let r=e[1].charAt(e[1].length-1)===`
`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:r,tokens:this.lexer.inline(r)}}}text(t){let e=this.rules.block.text.exec(t);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(t){let e=this.rules.inline.escape.exec(t);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(t){let e=this.rules.inline.tag.exec(t);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(t){let e=this.rules.inline.link.exec(t);if(e){let r=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(r)){if(!this.rules.other.endAngleBracket.test(r))return;let o=Pn(r.slice(0,-1),"\\");if((r.length-o.length)%2===0)return}else{let o=nF(e[2],"()");if(o===-2)return;if(o>-1){let a=(e[0].indexOf("!")===0?5:4)+e[1].length+o;e[2]=e[2].substring(0,o),e[0]=e[0].substring(0,a).trim(),e[3]=""}}let n=e[2],i="";if(this.options.pedantic){let o=this.rules.other.pedanticHrefTitle.exec(n);o&&(n=o[1],i=o[3])}else i=e[3]?e[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(r)?n=n.slice(1):n=n.slice(1,-1)),QE(e,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(t,e){let r;if((r=this.rules.inline.reflink.exec(t))||(r=this.rules.inline.nolink.exec(t))){let n=(r[2]||r[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=e[n.toLowerCase()];if(!i){let o=r[0].charAt(0);return{type:"text",raw:o,text:o}}return QE(r,i,r[0],this.lexer,this.rules)}}emStrong(t,e,r=""){let n=this.rules.inline.emStrongLDelim.exec(t);if(!(!n||!n[1]&&!n[2]&&!n[3]&&!n[4]||n[4]&&r.match(this.rules.other.unicodeAlphaNumeric))&&(!(n[1]||n[3])||!r||this.rules.inline.punctuation.exec(r))){let i=[...n[0]].length-1,o,a,s=i,c=0,l=n[0][0],d=r===l,u=l==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(u.lastIndex=0,e=e.slice(-1*t.length+i);(n=u.exec(e))!==null;){if(o=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!o)continue;if(a=[...o].length,n[3]||n[4]){s+=a;continue}else if(n[5]||n[6]){if(i%3&&!((i+a)%3)){c+=a;continue}if(d)break}if(s-=a,s>0)continue;a=Math.min(a,a+s+c);let p=[...n[0]][0].length,f=t.slice(0,i+n.index+p+a);if(Math.min(i,a)%2){let g=f.slice(1,-1);return{type:"em",raw:f,text:g,tokens:this.lexer.inlineTokens(g)}}let m=f.slice(2,-2);return{type:"strong",raw:f,text:m,tokens:this.lexer.inlineTokens(m)}}}}codespan(t){let e=this.rules.inline.code.exec(t);if(e){let r=e[2].replace(this.rules.other.newLineCharGlobal," "),n=this.rules.other.nonSpaceChar.test(r),i=this.rules.other.startingSpaceChar.test(r)&&this.rules.other.endingSpaceChar.test(r);return n&&i&&(r=r.substring(1,r.length-1)),{type:"codespan",raw:e[0],text:r}}}br(t){let e=this.rules.inline.br.exec(t);if(e)return{type:"br",raw:e[0]}}del(t,e,r=""){let n=this.rules.inline.delLDelim.exec(t);if(n&&(!n[1]||!r||this.rules.inline.punctuation.exec(r))){let i=[...n[0]].length-1,o,a,s=i,c=this.rules.inline.delRDelim;for(c.lastIndex=0,e=e.slice(-1*t.length+i);(n=c.exec(e))!==null;){if(o=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!o||(a=[...o].length,a!==i))continue;if(n[3]||n[4]){s+=a;continue}if(s-=a,s>0)continue;a=Math.min(a,a+s);let l=[...n[0]][0].length,d=t.slice(0,i+n.index+l+a),u=d.slice(i,-i);return{type:"del",raw:d,text:u,tokens:this.lexer.inlineTokens(u)}}}}autolink(t){let e=this.rules.inline.autolink.exec(t);if(e){let r,n;return e[2]==="@"?(r=e[1],n="mailto:"+r):(r=e[1],n=r),{type:"link",raw:e[0],text:r,href:n,tokens:[{type:"text",raw:r,text:r}]}}}url(t){let e;if(e=this.rules.inline.url.exec(t)){let r,n;if(e[2]==="@")r=e[0],n="mailto:"+r;else{let i;do i=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(i!==e[0]);r=e[0],e[1]==="www."?n="http://"+e[0]:n=e[0]}return{type:"link",raw:e[0],text:r,href:n,tokens:[{type:"text",raw:r,text:r}]}}}inlineText(t){let e=this.rules.inline.text.exec(t);if(e){let r=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:r}}}},ot=class Jh{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||fi,this.options.tokenizer=this.options.tokenizer||new Dd,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let r={other:xe,block:Md.normal,inline:bs.normal};this.options.pedantic?(r.block=Md.pedantic,r.inline=bs.pedantic):this.options.gfm&&(r.block=Md.gfm,this.options.breaks?r.inline=bs.breaks:r.inline=bs.gfm),this.tokenizer.rules=r}static get rules(){return{block:Md,inline:bs}}static lex(e,r){return new Jh(r).lex(e)}static lexInline(e,r){return new Jh(r).inlineTokens(e)}lex(e){e=e.replace(xe.carriageReturn,`
`),this.blockTokens(e,this.tokens);for(let r=0;r<this.inlineQueue.length;r++){let n=this.inlineQueue[r];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,r=[],n=!1){this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(xe.tabCharGlobal," ").replace(xe.spaceLine,""));let i=1/0;for(;e;){if(e.length<i)i=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}let o;if(this.options.extensions?.block?.some(s=>(o=s.call({lexer:this},e,r))?(e=e.substring(o.raw.length),r.push(o),!0):!1))continue;if(o=this.tokenizer.space(e)){e=e.substring(o.raw.length);let s=r.at(-1);o.raw.length===1&&s!==void 0?s.raw+=`
`:r.push(o);continue}if(o=this.tokenizer.code(e)){e=e.substring(o.raw.length);let s=r.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(`
`)?"":`
`)+o.raw,s.text+=`
`+o.text,this.inlineQueue.at(-1).src=s.text):r.push(o);continue}if(o=this.tokenizer.fences(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.heading(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.hr(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.blockquote(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.list(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.html(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.def(e)){e=e.substring(o.raw.length);let s=r.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(`
`)?"":`
`)+o.raw,s.text+=`
`+o.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[o.tag]||(this.tokens.links[o.tag]={href:o.href,title:o.title},r.push(o));continue}if(o=this.tokenizer.table(e)){e=e.substring(o.raw.length),r.push(o);continue}if(o=this.tokenizer.lheading(e)){e=e.substring(o.raw.length),r.push(o);continue}let a=e;if(this.options.extensions?.startBlock){let s=1/0,c=e.slice(1),l;this.options.extensions.startBlock.forEach(d=>{l=d.call({lexer:this},c),typeof l=="number"&&l>=0&&(s=Math.min(s,l))}),s<1/0&&s>=0&&(a=e.substring(0,s+1))}if(this.state.top&&(o=this.tokenizer.paragraph(a))){let s=r.at(-1);n&&s?.type==="paragraph"?(s.raw+=(s.raw.endsWith(`
`)?"":`
`)+o.raw,s.text+=`
`+o.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(o),n=a.length!==e.length,e=e.substring(o.raw.length);continue}if(o=this.tokenizer.text(e)){e=e.substring(o.raw.length);let s=r.at(-1);s?.type==="text"?(s.raw+=(s.raw.endsWith(`
`)?"":`
`)+o.raw,s.text+=`
`+o.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(o);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,r}inline(e,r=[]){return this.inlineQueue.push({src:e,tokens:r}),r}linkInText(e){if(!e.includes("["))return!1;let r=this.tokenizer.rules.inline.link;for(let n of e.matchAll(this.tokenizer.rules.inline.blockSkip))if(r.test(n[0])&&e.charAt(n.index-1)!=="!")return!0;for(let n of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let i=n[0],o=i.lastIndexOf("[");if(!(i.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,i.slice(o+1,-1)))&&!(o>1&&this.linkInText(i.slice(1,o-1))))return!0}return!1}inlineTokens(e,r=[]){this.tokenizer.lexer=this;let n=e;if(this.tokens.links&&e.includes("[")){let s=this.tokenizer.rules.inline.reflinkSearch,c=l=>{let d=l.lastIndexOf("[");if(!Object.hasOwn(this.tokens.links,l.slice(d+1,-1)))return l;if(d>1&&l.charAt(0)!=="!"){let u=l.slice(1,d-1);if(this.linkInText(u))return"["+u.replace(s,c)+"]["+"a".repeat(l.length-d-2)+"]"}return"["+"a".repeat(l.length-2)+"]"};n=n.replace(s,c)}n=n.replace(this.tokenizer.rules.inline.anyPunctuation,s=>"+".repeat(s.length)),n=n.replace(this.tokenizer.rules.inline.blockSkip,(s,c,l)=>{let d=l?l.length:0;return s.slice(0,d)+"["+"a".repeat(s.length-d-2)+"]"}),n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let i=!1,o="",a=1/0;for(;e;){if(e.length<a)a=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}i||(o=""),i=!1;let s;if(this.options.extensions?.inline?.some(l=>(s=l.call({lexer:this},e,r))?(e=e.substring(s.raw.length),r.push(s),!0):!1))continue;if(s=this.tokenizer.escape(e)){e=e.substring(s.raw.length),r.push(s);continue}if(s=this.tokenizer.tag(e)){e=e.substring(s.raw.length),r.push(s);continue}if(s=this.tokenizer.link(e)){e=e.substring(s.raw.length),r.push(s);continue}if(s=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(s.raw.length);let l=r.at(-1);s.type==="text"&&l?.type==="text"?(l.raw+=s.raw,l.text+=s.text):r.push(s);continue}if(s=this.tokenizer.emStrong(e,n,o)){e=e.substring(s.raw.length),r.push(s);continue}if(s=this.tokenizer.codespan(e)){e=e.substring(s.raw.length),r.push(s);continue}if(s=this.tokenizer.br(e)){e=e.substring(s.raw.length),r.push(s);continue}if(s=this.tokenizer.del(e,n,o)){e=e.substring(s.raw.length),r.push(s);continue}if(s=this.tokenizer.autolink(e)){e=e.substring(s.raw.length),r.push(s);continue}if(!this.state.inLink&&(s=this.tokenizer.url(e))){e=e.substring(s.raw.length),r.push(s);continue}let c=e;if(this.options.extensions?.startInline){let l=1/0,d=e.slice(1),u;this.options.extensions.startInline.forEach(p=>{u=p.call({lexer:this},d),typeof u=="number"&&u>=0&&(l=Math.min(l,u))}),l<1/0&&l>=0&&(c=e.substring(0,l+1))}if(s=this.tokenizer.inlineText(c)){e=e.substring(s.raw.length),s.raw.slice(-1)!=="_"&&(o=s.raw.slice(-1)),i=!0;let l=r.at(-1);l?.type==="text"?(l.raw+=s.raw,l.text+=s.text):r.push(s);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return r}infiniteLoopError(e){let r="Infinite loop on byte: "+e;if(this.options.silent)console.error(r);else throw new Error(r)}},Bd=class{options;parser;constructor(t){this.options=t||fi}space(t){return""}code({text:t,lang:e,escaped:r}){let n=(e||"").match(xe.notSpaceStart)?.[0],i=t.replace(xe.endingNewline,"")+`
`;return n?'<pre><code class="language-'+tr(n)+'">'+(r?i:tr(i,!0))+`</code></pre>
`:"<pre><code>"+(r?i:tr(i,!0))+`</code></pre>
`}blockquote({tokens:t}){return`<blockquote>
${this.parser.parse(t)}</blockquote>
`}html({text:t}){return t}def(t){return""}heading({tokens:t,depth:e}){return`<h${e}>${this.parser.parseInline(t)}</h${e}>
`}hr(t){return`<hr>
`}list(t){let e=t.ordered,r=t.start,n="";for(let a=0;a<t.items.length;a++){let s=t.items[a];n+=this.listitem(s)}let i=e?"ol":"ul",o=e&&r!==1?' start="'+r+'"':"";return"<"+i+o+`>
`+n+"</"+i+`>
`}listitem(t){return`<li>${this.parser.parse(t.tokens)}</li>
`}checkbox({checked:t}){return"<input "+(t?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:t}){return`<p>${this.parser.parseInline(t)}</p>
`}table(t){let e="",r="";for(let i=0;i<t.header.length;i++)r+=this.tablecell(t.header[i]);e+=this.tablerow({text:r});let n="";for(let i=0;i<t.rows.length;i++){let o=t.rows[i];r="";for(let a=0;a<o.length;a++)r+=this.tablecell(o[a]);n+=this.tablerow({text:r})}return n&&(n=`<tbody>${n}</tbody>`),`<table>
<thead>
`+e+`</thead>
`+n+`</table>
`}tablerow({text:t}){return`<tr>
${t}</tr>
`}tablecell(t){let e=this.parser.parseInline(t.tokens),r=t.header?"th":"td";return(t.align?`<${r} align="${t.align}">`:`<${r}>`)+e+`</${r}>
`}strong({tokens:t}){return`<strong>${this.parser.parseInline(t)}</strong>`}em({tokens:t}){return`<em>${this.parser.parseInline(t)}</em>`}codespan({text:t}){return`<code>${tr(t,!0)}</code>`}br(t){return"<br>"}del({tokens:t}){return`<del>${this.parser.parseInline(t)}</del>`}link({href:t,title:e,tokens:r}){let n=this.parser.parseInline(r),i=JE(t);if(i===null)return n;t=i;let o='<a href="'+t+'"';return e&&(o+=' title="'+tr(e)+'"'),o+=">"+n+"</a>",o}image({href:t,title:e,text:r,tokens:n}){n&&(r=this.parser.parseInline(n,this.parser.textRenderer));let i=JE(t);if(i===null)return tr(r);t=i;let o=`<img src="${t}" alt="${tr(r)}"`;return e&&(o+=` title="${tr(e)}"`),o+=">",o}text(t){return"tokens"in t&&t.tokens?this.parser.parseInline(t.tokens):"escaped"in t&&t.escaped?t.text:tr(t.text)}},ig=class{strong({text:t}){return t}em({text:t}){return t}codespan({text:t}){return t}del({text:t}){return t}html({text:t}){return t}text({text:t}){return t}link({text:t}){return""+t}image({text:t}){return""+t}br(){return""}checkbox({raw:t}){return t}},Dt=class Yh{options;renderer;textRenderer;constructor(e){this.options=e||fi,this.options.renderer=this.options.renderer||new Bd,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new ig}static parse(e,r){return new Yh(r).parse(e)}static parseInline(e,r){return new Yh(r).parseInline(e)}parse(e){this.renderer.parser=this;let r="";for(let n=0;n<e.length;n++){let i=e[n];if(this.options.extensions?.renderers?.[i.type]){let a=i,s=this.options.extensions.renderers[a.type].call({parser:this},a);if(s!==!1||!["space","hr","heading","code","table","blockquote","list","checkbox","html","def","paragraph","text"].includes(a.type)){r+=s||"";continue}}let o=i;switch(o.type){case"space":{r+=this.renderer.space(o);break}case"hr":{r+=this.renderer.hr(o);break}case"heading":{r+=this.renderer.heading(o);break}case"code":{r+=this.renderer.code(o);break}case"table":{r+=this.renderer.table(o);break}case"blockquote":{r+=this.renderer.blockquote(o);break}case"list":{r+=this.renderer.list(o);break}case"checkbox":{r+=this.renderer.checkbox(o);break}case"html":{r+=this.renderer.html(o);break}case"def":{r+=this.renderer.def(o);break}case"paragraph":{r+=this.renderer.paragraph(o);break}case"text":{r+=this.renderer.text(o);break}default:{let a='Token with "'+o.type+'" type was not found.';if(this.options.silent)return console.error(a),"";throw new Error(a)}}}return r}parseInline(e,r=this.renderer){this.renderer.parser=this;let n="";for(let i=0;i<e.length;i++){let o=e[i];if(this.options.extensions?.renderers?.[o.type]){let s=this.options.extensions.renderers[o.type].call({parser:this},o);if(s!==!1||!["escape","html","link","image","checkbox","strong","em","codespan","br","del","text"].includes(o.type)){n+=s||"";continue}}let a=o;switch(a.type){case"escape":{n+=r.text(a);break}case"html":{n+=r.html(a);break}case"link":{n+=r.link(a);break}case"image":{n+=r.image(a);break}case"checkbox":{n+=r.checkbox(a);break}case"strong":{n+=r.strong(a);break}case"em":{n+=r.em(a);break}case"codespan":{n+=r.codespan(a);break}case"br":{n+=r.br(a);break}case"del":{n+=r.del(a);break}case"text":{n+=r.text(a);break}default:{let s='Token with "'+a.type+'" type was not found.';if(this.options.silent)return console.error(s),"";throw new Error(s)}}}return n}},ks=class{options;block;constructor(t){this.options=t||fi}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(t){return t}postprocess(t){return t}processAllTokens(t){return t}emStrongMask(t){return t}provideLexer(t=this.block){return t?ot.lex:ot.lexInline}provideParser(t=this.block){return t?Dt.parse:Dt.parseInline}},aF=class{defaults=Xh();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=Dt;Renderer=Bd;TextRenderer=ig;Lexer=ot;Tokenizer=Dd;Hooks=ks;constructor(...t){this.use(...t)}walkTokens(t,e){let r=[];for(let n of t)switch(r=r.concat(e.call(this,n)),n.type){case"table":{let i=n;for(let o of i.header)r=r.concat(this.walkTokens(o.tokens,e));for(let o of i.rows)for(let a of o)r=r.concat(this.walkTokens(a.tokens,e));break}case"list":{let i=n;r=r.concat(this.walkTokens(i.items,e));break}default:{let i=n;this.defaults.extensions?.childTokens?.[i.type]?this.defaults.extensions.childTokens[i.type].forEach(o=>{let a=i[o].flat(1/0);r=r.concat(this.walkTokens(a,e))}):i.tokens&&(r=r.concat(this.walkTokens(i.tokens,e)))}}return r}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(r=>{let n={...r};if(n.async=this.defaults.async||n.async||!1,r.extensions&&(r.extensions.forEach(i=>{if(!i.name)throw new Error("extension name required");if("renderer"in i){let o=e.renderers[i.name];o?e.renderers[i.name]=function(...a){let s=i.renderer.apply(this,a);return s===!1&&(s=o.apply(this,a)),s}:e.renderers[i.name]=i.renderer}if("tokenizer"in i){if(!i.level||i.level!=="block"&&i.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let o=e[i.level];o?o.unshift(i.tokenizer):e[i.level]=[i.tokenizer],i.start&&(i.level==="block"?e.startBlock?e.startBlock.push(i.start):e.startBlock=[i.start]:i.level==="inline"&&(e.startInline?e.startInline.push(i.start):e.startInline=[i.start]))}"childTokens"in i&&i.childTokens&&(e.childTokens[i.name]=i.childTokens)}),n.extensions=e),r.renderer){let i=this.defaults.renderer||new Bd(this.defaults);for(let o in r.renderer){if(!(o in i))throw new Error(`renderer '${o}' does not exist`);if(["options","parser"].includes(o))continue;let a=o,s=r.renderer[a],c=i[a];i[a]=(...l)=>{let d=s.apply(i,l);return d===!1&&(d=c.apply(i,l)),d||""}}n.renderer=i}if(r.tokenizer){let i=this.defaults.tokenizer||new Dd(this.defaults);for(let o in r.tokenizer){if(!(o in i))throw new Error(`tokenizer '${o}' does not exist`);if(["options","rules","lexer"].includes(o))continue;let a=o,s=r.tokenizer[a],c=i[a];i[a]=(...l)=>{let d=s.apply(i,l);return d===!1&&(d=c.apply(i,l)),d}}n.tokenizer=i}if(r.hooks){let i=this.defaults.hooks||new ks;for(let o in r.hooks){if(!(o in i))throw new Error(`hook '${o}' does not exist`);if(["options","block"].includes(o))continue;let a=o,s=r.hooks[a],c=i[a];ks.passThroughHooks.has(o)?i[a]=l=>{if(this.defaults.async&&ks.passThroughHooksRespectAsync.has(o))return(async()=>{let u=await s.call(i,l);return c.call(i,u)})();let d=s.call(i,l);return c.call(i,d)}:i[a]=(...l)=>{if(this.defaults.async)return(async()=>{let u=await s.apply(i,l);return u===!1&&(u=await c.apply(i,l)),u})();let d=s.apply(i,l);return d===!1&&(d=c.apply(i,l)),d}}n.hooks=i}if(r.walkTokens){let i=this.defaults.walkTokens,o=r.walkTokens;n.walkTokens=function(a){let s=[];return s.push(o.call(this,a)),i&&(s=s.concat(i.call(this,a))),s}}this.defaults={...this.defaults,...n}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return ot.lex(t,e??this.defaults)}parser(t,e){return Dt.parse(t,e??this.defaults)}parseMarkdown(t){return(e,r)=>{let n={...r},i={...this.defaults,...n},o=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&n.async===!1)return o(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return o(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return o(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(i.hooks&&(i.hooks.options=i,i.hooks.block=t),i.async)return(async()=>{let a=i.hooks?await i.hooks.preprocess(e):e,s=await(i.hooks?await i.hooks.provideLexer(t):t?ot.lex:ot.lexInline)(a,i),c=i.hooks?await i.hooks.processAllTokens(s):s;i.walkTokens&&await Promise.all(this.walkTokens(c,i.walkTokens));let l=await(i.hooks?await i.hooks.provideParser(t):t?Dt.parse:Dt.parseInline)(c,i);return i.hooks?await i.hooks.postprocess(l):l})().catch(o);try{i.hooks&&(e=i.hooks.preprocess(e));let a=(i.hooks?i.hooks.provideLexer(t):t?ot.lex:ot.lexInline)(e,i);i.hooks&&(a=i.hooks.processAllTokens(a)),i.walkTokens&&this.walkTokens(a,i.walkTokens);let s=(i.hooks?i.hooks.provideParser(t):t?Dt.parse:Dt.parseInline)(a,i);return i.hooks&&(s=i.hooks.postprocess(s)),s}catch(a){return o(a)}}}onError(t,e){return r=>{if(r.message+=`
Please report this to https://github.com/markedjs/marked.`,t){let n="<p>An error occurred:</p><pre>"+tr(r.message+"",!0)+"</pre>";return e?Promise.resolve(n):n}if(e)return Promise.reject(r);throw r}}},pi=new aF;function G(t,e){return pi.parse(t,e)}G.options=G.setOptions=function(t){return pi.setOptions(t),G.defaults=pi.defaults,ZE(G.defaults),G};G.getDefaults=Xh;G.defaults=fi;function sF(...t){return pi.use(...t),G.defaults=pi.defaults,ZE(G.defaults),G}G.use=sF;G.walkTokens=function(t,e){return pi.walkTokens(t,e)};G.parseInline=pi.parseInline;G.Parser=Dt;G.parser=Dt.parse;G.Renderer=Bd;G.TextRenderer=ig;G.Lexer=ot;G.lexer=ot.lex;G.Tokenizer=Dd;G.Hooks=ks;G.parse=G;var y8=G.options,v8=G.setOptions,w8=G.walkTokens,b8=G.parseInline;var k8=Dt.parse,S8=ot.lex;ke();mo();wn();Lh();se();var og=["outcome","scope","nonGoals","acceptanceExamples"],lx=[...og,"constraints","decisions","openQuestions","verificationExpectations"];var cF=new Set(["nonGoals","decisions","openQuestions"]);var lF={maxFileBytes:rh};function dF(t){let e=new Map,r=null,n=[],i=()=>{r!==null&&e.set(r,n.join(`
`).trim())};for(let o of t.split(/\r?\n/u)){let a=/^# ([^#].*)$/u.exec(o);a?(i(),r=a[1].trim(),n=[]):r!==null&&n.push(o)}return i(),e}function ag(t){return{valid:t.length===0,findings:t}}function sg(t){let e=[],r=0;for(;r<t.length;){let n=t.indexOf("<!--",r);if(n<0){e.push(t.slice(r));break}e.push(t.slice(r,n));let i=t.indexOf("-->",n+4);if(i<0){e.push(t.slice(n));break}r=i+3}return e.join("")}function uF(t){return sg(t).trim()}function Kd(t){let e=uF(t).split(/\r?\n/u),r=[],n=!1;for(let i of e){if(/^\s*(?:```|~~~)/u.test(i)){n=!n;continue}!n&&/^\s*#{1,6}\s*$/u.test(i)||!n&&/^\s*#{1,6}\s+/u.test(i)||!n&&/^\s*(?:[-*+]\s*|\d+[.)]\s*)$/u.test(i)||r.push(i)}return r.join(`
`).trim()}function pF(t){let e=Kd(t).replace(/^\s*(?:[-*+]\s+|\d+[.)]\s+)/gmu,"").replace(/[*_`>#\x5b\x5d()]/gu," ").replace(/\s+/gu," ").trim().toLocaleLowerCase("en-US");return/^(?:none|n\/a|not applicable|no(?:ne)?(?:\s+at\s+this\s+time)?|no\s+(?:additional\s+)?(?:non-goals?|decisions?|open\s+questions?|questions?)|无|无相关事项|没有(?:额外)?(?:非目标|决定|待解决问题)|不适用|暂无)[.!。;;::,,、 -]*$/iu.test(e)}function dx(t){let e=Kd(t).replace(/^\s*(?:[-*+]\s+|\d+[.)]\s+)/gmu,"").replace(/\s+/gu," ").trim();if(e.length===0)return!1;let r=e.replace(/[*_`]/gu,"").replace(/^\s*>+\s?/gmu,"").replace(/\s+/gu," ").trim();if(/^(?:<[^>\r\n]+>|\{\{[^}\r\n]+\}\})[.!。;;::,,、 -]*$/iu.test(r))return!0;let n=e.replace(/[*_`>#\x5b\x5d()]/gu," ").replace(/\s+/gu," ").trim();return/^(?:(?:todo|tbd|fixme)(?:\s*[::-]\s*.+)?|fill(?:\s+this\s+in)?(?:\s*[::-]\s*.+)?|placeholder(?:\s*[::-]\s*.+)?|待填写\S*|待补充\S*|<[^>]+>|\{\{[^}]+\}\})[.!。;;::,,、 -]*$/iu.test(n)}function ux(t,e){let r=[];return Kd(t).length===0?r.push({code:"spec-document-empty",message:`Native target Spec is empty: ${e}. Add the complete target requirements or use an explicit no-product-behavior exemption in brief.md.`,path:e}):dx(t)&&r.push({code:"spec-document-placeholder",message:`Native target Spec contains only template placeholder content: ${e}. Replace it with complete target requirements.`,path:e}),ag(r)}function cg(t){let e=new Set(["blocker","blocking","coverage","decision","open_question","question","requirement","requirements","source","source_coverage","state","status","决策","来源","覆盖","问题","状态","需求","阻塞"]),r=null;for(let n of t.split(/\r?\n/u)){let i=n.match(/^\s*(`{3,}|~{3,})/u);if(i){let s=i[1]?.[0];r===null?r=s:r===s&&(r=null);continue}if(r!==null)continue;let o=n.trim();if(/^(?:[-*+]\s+|\d+[.)]\s+)(?:\[[ xX]\]\s+)?\[blocking\](?=$|[\s::—-])/iu.test(o)||o.includes("|")&&o.split("|").some(s=>/^\s*\[blocking\](?=$|[\s::—-])/iu.test(s)))return!0;let a=o.match(/^([\p{L}\p{N}_./-]+)\s*[::]\s*\[blocking\](?=$|[\s::—-])/iu);if(a){let s=a[1]?.toLocaleLowerCase("en-US")??"";if(e.has(s)||/[./_-]/u.test(s))return!0}}return!1}async function px(t,e,r={}){let n=[],i;try{i=(await ne({root:t,ref:e,maxBytes:lF.maxFileBytes})).text}catch(s){return ag([{code:"brief-missing",message:s.message,path:e}])}let o=new Map;for(let[s,c]of dF(i))o.set(Zl(s)??s,c);for(let s of r.compact?og:lx)o.has(s)||n.push({code:"brief-section-missing",message:`Missing brief section: ${s}`,path:e});let a=r.strict?lx.filter(s=>!r.compact||o.has(s)):og;for(let s of a){let c=o.get(s)??"";Kd(c).length===0?n.push({code:"brief-section-empty",message:`Brief section is empty: ${s}`,path:e}):dx(c)?n.push({code:"brief-section-placeholder",message:`Brief section contains only template placeholder content: ${s}`,path:e}):r.strict&&!cF.has(s)&&pF(c)&&n.push({code:"brief-section-empty",message:`Brief section must describe the confirmed work instead of declaring no items: ${s}`,path:e})}return cg(i)&&n.push({code:"brief-blocking-question",message:"Brief has a blocking open question",path:e}),ag(n)}wn();nt();var WF=Ce(Ne(),1);lt();wn();nt();Tt();se();Sn();Vd();Vd();jo();Cn();import zd from"node:path";function Gd(...t){if(t.length===0)return zd.resolve();if(zd.win32.isAbsolute(t[0])){let e=zd.win32.resolve(...t);return process.platform==="win32"?e:e.replace(/\\/gu,"/")}return zd.resolve(...t)}lt();Ka();ke();nt();Jd();it();se();Sx();jo();Cn();mg();lt();Tt();mg();sh();se();lt();Tt();it();jo();Cn();function hg(t){return ie("comet.native.parent-contract.v1",{acceptance:t.acceptance.map(({id:e,source:r,text:n})=>({id:e,source:r,text:n})),children:t.children})}Ch();Sn();ci();Es();qd();function Cx(t){return t.state_version+1}function qF(t){return t.map(e=>({...e,result:"pending",reason:null}))}function zF(t){return{goal_cycle:t.state.loop.goal_cycle,iteration:t.state.loop.iteration,attempt:t.state.loop.attempt,outcome:t.outcome,unresolved_ids:t.unresolvedIds??[],summary:Tr(t.summary),completed_at:t.completedAt}}function Yd(t){let e=Ot(t.state);if(e.phase!=="verify"&&e.phase!=="archive")throw new Error("Only Verify or Archive can return a candidate to Build");let r=t.failureBudget,n=r?e.loop.failed_iteration_count+1:e.loop.failed_iteration_count,i=r!==void 0&&n>=r.maxVerifyFailures,o=(t.now??new Date).toISOString(),a=ko(e,zF({state:e,outcome:"recovery",summary:t.reason,completedAt:o})),s=new Set(e.loop.previous_unresolved_ids),c=s.size===0?qF(e.acceptance):e.acceptance.map(l=>s.has(l.id)?{...l,result:"pending",reason:null}:l);return i?Ot({...a,phase:"verify",status:"await-user",state_version:Cx(e),verification_result:"fail",builder_handoff:e.builder_handoff,blockers:[{owner:"user",reason:Tr(`Native Runtime checks failed at Builder handoff and reached the configured failed iteration limit: ${t.reason}`),acceptance_ids:[...s],resolution_action:"await-user"}],loop:{...e.loop,stage:"await-user",failed_iteration_count:n,execution_failure_count:0,stop_reason:"budget",next_action:"resolve-loop-stop"}}):Ot({...a,phase:"build",status:"active",state_version:Cx(e),verification_result:"pending",verification_report:null,verification:null,builder_handoff:e.builder_handoff,blockers:[],acceptance:c,loop:{...e.loop,stage:"repairing",iteration:e.loop.iteration+1,attempt:0,execution_failure_count:0,failed_iteration_count:n,stop_reason:void 0,next_action:"submit-builder-candidate"}})}it();bh();ld();Sn();ci();ke();mo();Es();se();mo();Tx();Tt();var bg=Ce(Ne(),1);Q();var yg={strong:8,phrase:8,weak:12},$x=new Set("a an and are as at be by for from in is it of on or that the this to with you your".split(" ")),Zd=new Set(["请","帮我","一下","这个","进行","实现","需要","如何"]);function eu(t,e=2e3){return[...t].map(r=>{let n=r.codePointAt(0)??0;return n<32||n===127?" ":r}).join("").replace(/\s+/gu," ").trim().slice(0,e)}function ZF(t){if(!t)return;let e=eu(t,512).replaceAll("\\","/");if(!(!e||e.startsWith("/")||/^[A-Za-z]:\//u.test(e)||e.split("/").includes("..")))return e}function vg(t){return t.replace(/(^|[\s([{"'])(?:[A-Za-z]:[\\/]|\\\\)[^\s)\]}>,;"']+/gu,"$1").replace(/(^|[\s([{"',;:])\/(?!\/)[^\s)\]}>,;"']+/gu,"$1").replace(/\s+/gu," ").trim()}function at(t,e){let r=e.trim();r.length<2||t.includes(r)||t.push(r)}function Xd(t,e,r){let n=[],i=[],o=new Intl.Segmenter("zh",{granularity:"word"});for(let a of r.matchAll(/[\u3400-\u9fff]{2,}/gu)){let s=a[0];if(Zd.has(s))continue;at(t,s);let c="";for(let{segment:l,isWordLike:d}of o.segment(s))d&&!Zd.has(l)&&at(e,l),d&&l.length===1&&!"的和与给为在对及".includes(l)?(c&&at(i,c+l),c=l):c="";for(let l=Math.min(4,s.length);l>=2;l-=1)for(let d=0;d+l<=s.length;d+=l){let u=s.slice(d,d+l);!Zd.has(u)&&u!==s&&at(n,u)}}for(let a of i)at(e,a);for(let a of n)at(e,a)}function Qd(t,e,r){for(let n of r.matchAll(/[A-Za-z][A-Za-z0-9_./:-]*/gu)){let i=n[0].replace(/^[./:]+|[./:]+$/gu,"");if(!i)continue;let o=i.toLowerCase();if(!$x.has(o)&&(at(eK(i)?t:e,i),i.includes("/")))for(let a of i.split(/[/:.]/u))at(e,a)}for(let n of r.matchAll(/\b\d+(?:\.\d+)?\b/gu))at(t,n[0])}function eK(t){return t.includes("/")||t.includes("\\")||t.includes("_")||/[a-z][A-Z]/u.test(t)||/[A-Z]{2,}/u.test(t)||/[A-Za-z][A-Za-z0-9]*\d[A-Za-z0-9]*/u.test(t)||/\d{2,}/u.test(t)||/(?:^|[^A-Za-z0-9])[A-Za-z0-9]+\.[A-Za-z0-9]+(?:$|[^A-Za-z0-9])/u.test(t)}function tK(t){return t.length>256||!/\s/u.test(t)?void 0:t.split(/\s+/u).filter(r=>{let n=r.toLowerCase();return r.length>=2&&!$x.has(n)&&!Zd.has(r)}).length>=2?t:void 0}function tu(t){let e=eu(t.task);if(!e)throw new Error("Project knowledge task must not be empty");let r=ZF(t.path),n=t.phase?eu(t.phase,128):void 0,i=t.operation?eu(t.operation,128):void 0,o=[],a=[],s=[],c=[],l=[];Qd(o,c,e),Xd(a,l,e);for(let h=0;h<Math.max(c.length,l.length);h++)c[h]&&at(s,c[h]),l[h]&&at(s,l[h]);r&&(at(o,r),Qd(o,s,r),Xd(a,s,r)),n&&(Qd(o,s,n),Xd(a,s,n)),i&&(Qd(o,s,i),Xd(a,s,i));let d=tK(e);d&&at(a,d);let u=o.slice(0,yg.strong),p=a.slice(0,yg.phrase),f=s.filter(h=>!u.includes(h)&&!p.includes(h)).slice(0,yg.weak),m=[...u,...p,...f],g=[vg(e),...r?[`Target path: ${r}`]:[],...n?[`Phase: ${vg(n)}`]:[],...i?[`Operation: ${vg(i)}`]:[]].join(`
`);return{task:e,...r?{path:r}:{},...n?{phase:n}:{},...i?{operation:i}:{},terms:m,strongTerms:u,phraseTerms:p,weakTerms:f,remoteQuery:g}}function $o(t,e){return t.toLocaleLowerCase().includes(e.toLocaleLowerCase())}function Ox(t,e){return t.strongTerms.some(r=>$o(e,r))}var Mx=5,rK=600,FZ=256*1024,nK=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u,iK=/^[A-Za-z0-9][A-Za-z0-9._-]*$/u;var oK=/^[a-f0-9]{64}$/iu;function Lx(t,e){if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`${e} must be an object`);return t}function Rn(t,e,r=4096){if(typeof t!="string"||t.trim().length===0||t.length>r)throw new Error(`${e} must be a non-empty string within the association limit`);return t}function wg(t,e){let r=Rn(t,e).replaceAll("\\","/");if(r.startsWith("/")||/^[A-Za-z]:/u.test(r)||r.split("/").some(n=>n===""||n==="."||n===".."))throw new Error(`${e} must be a project-relative path`);return r}function aK(t,e){let r=Rn(t,e,64).toLowerCase();if(!oK.test(r))throw new Error(`${e} must be a SHA-256 hash`);return r}function sK(t,e){let r=`Capability association evidence[${e}]`,n=Lx(t,r),i=Object.keys(n).filter(o=>!new Set(["source","kind","title","snippet"]).has(o));if(i.length>0)throw new Error(`${r} has unknown field(s): ${i.join(", ")}`);return{source:wg(n.source,`${r}.source`),kind:Rn(n.kind,`${r}.kind`,128),...n.title===void 0?{}:{title:Rn(n.title,`${r}.title`)},...n.snippet===void 0?{}:{snippet:Rn(n.snippet,`${r}.snippet`,rK)}}}function Dx(t){let e=typeof t=="string"?(()=>{if(t.length>65536)throw new Error("Capability association exceeds the size limit");let l=(0,bg.parseDocument)(t,{uniqueKeys:!0});if(l.errors.length>0)throw new Error(l.errors[0].message);return l.toJS({mapAsMap:!1})})():t,r=Lx(e,"Capability association"),n=Object.keys(r).filter(l=>!new Set(["schema","status","workflow","capability","current_spec","current_hash","confidence","query","reason","historical_sources","evidence"]).has(l));if(n.length>0)throw new Error(`Capability association has unknown field(s): ${n.join(", ")}`);if(r.schema!=="comet.capability-association.v1")throw new Error("Unsupported capability association schema");let i=r.workflow;if(i!=="native"&&i!=="classic")throw new Error("Capability association workflow is invalid");let o=cK(Rn(r.capability,"Capability association capability"),i);if(!Array.isArray(r.historical_sources))throw new Error("Capability association historical_sources must be an array");let a=r.historical_sources.map((l,d)=>wg(l,`Capability association historical_sources[${d}]`));if(!Array.isArray(r.evidence)||r.evidence.length>Mx)throw new Error(`Capability association evidence must contain at most ${Mx} entries`);let s=r.status;if(s!=="suggested"&&s!=="explicit")throw new Error("Capability association status is invalid");let c=r.confidence;if(c!=="high"&&c!=="medium"&&c!=="low")throw new Error("Capability association confidence is invalid");return{schema:"comet.capability-association.v1",status:s,workflow:i,capability:o,current_spec:wg(r.current_spec,"Capability association current_spec"),current_hash:aK(r.current_hash,"Capability association current_hash"),confidence:c,...r.query===void 0?{}:{query:Rn(r.query,"Capability association query")},reason:Rn(r.reason,"Capability association reason",2048),historical_sources:a,evidence:r.evidence.map(sK)}}function cK(t,e){let r=t.replaceAll("\\","/").replace(/^\/+|\/+$/gu,""),n=r.split("/"),i=e==="native"?nK:iK;if(!r||n.some(o=>!i.test(o)))throw new Error(`Invalid ${e} capability: ${t}`);return n.join("/")}Sn();ci();Cn();var pK=ed("en",{compact:!0}),Bx="capability-association.yaml";function nu(t,e=!1){if(e){let n=i=>{if(Array.isArray(i))return i.filter(o=>o?.type!=="space").map(n);if(i&&typeof i=="object"){let o=i;return Object.fromEntries(Object.entries(o).filter(([a])=>a!=="raw"&&!(a==="text"&&Array.isArray(o.tokens))).map(([a,s])=>[a,a==="text"&&o.type==="text"&&typeof s=="string"?s.replace(/[\t ]*\n[\t ]*/gu," "):n(s)]))}return i};return JSON.stringify(n(ot.lex(t.replace(/\r\n?/gu,`
`))))}let r=t.replace(/\r\n?/gu,`
`).split(`
`);for(;r.length>0&&r.at(-1)?.trim().length===0;)r.pop();return`${r.map(n=>n.replace(/[\t ]+$/gu,"")).join(`
`)}
`}function fK(t){let e=t.replace(/^\s*(?:[-*+]\s+|\d+[.)]\s+)/u,"").replace(/\s+/gu," ").trim();if(e.length===0||/^(?:<[^>\r\n]+>|\{\{[^}\r\n]+\}\})[.!:: -]*$/iu.test(e))return!0;let r=e.replace(/[*_`>#\x5b\x5d()]/gu," ").replace(/\s+/gu," ").trim();return/^(?:todo|tbd|fixme)(?:\s*[::-]|\s*$)/iu.test(r)||/^(?:fill(?:\s+this\s+in)?|placeholder)\b/iu.test(r)||/^(?:待填写|待补充)/u.test(r)?!0:/^(?:(?:todo|tbd|fixme)\b|fill(?:\s+this\s+in)?\b|placeholder\b|documentation[- ]only\b|no\s+product\s+behavior\s+change\b|待填写|待补充|仅文档|不改变产品行为|不涉及产品行为)[.!。;;::,,、 -]*$/iu.test(r)}function mK(t){let e=[],r=!1;for(let n of sg(t).split(/\r?\n/u)){if(/^\s*(?:```|~~~)/u.test(n)){r=!r;continue}!r&&!/^\s*#{1,6}\s+/u.test(n)&&e.push(n)}return e.some(n=>{let i=/(?:no\s+product\s+behavior\s+change|documentation[- ]only|不改变产品行为|不涉及产品行为|仅文档)\s*[::]\s*(.*)$/iu.exec(n);return i!==null&&!fK(i[1]??"")})}async function Kx(t){let e=Me(t.paths,t.state.name),r=[...(await px(e,t.state.brief,{strict:!0,compact:t.state.document_constraints_version===2})).findings],n="";try{n=(await ne({root:e,ref:t.state.brief,maxBytes:null,includeHash:!1})).text}catch{}let i=t.specChanges??t.state.spec_changes,o=i.filter(({operation:l})=>l!=="remove"),a=t.state.spec_changes.filter(({operation:l})=>l!=="remove"),s=new Set(o.map(({capability:l})=>l));if(t.specChanges!==void 0)for(let l of a)s.has(l.capability)||r.push({code:"spec-document-missing",message:`Previously declared target Spec is missing: specs/${l.capability}/spec.md. Restore the complete file or record the intended capability deletion as a formal remove entry.`,path:`specs/${l.capability}/spec.md`});let c=i.length>0&&i.every(({operation:l})=>l==="remove");o.length===0&&a.length===0&&!c&&!mK(n)&&r.push({code:"spec-exemption-missing",message:"This change declares no target Spec. Add a complete target Spec, or record a concrete reason such as “No product behavior change: documentation-only wording.” in brief.md.",path:t.state.brief});for(let l of o){let d=`specs/${l.capability}/spec.md`;if(l.source!==d){r.push({code:"spec-source-path-invalid",message:`Target Spec must be staged at ${d}.`,path:l.source??d});continue}try{let u=(await ne({root:e,ref:d,maxBytes:null,includeHash:!1})).text;r.push(...ux(u,d).findings)}catch(u){r.push({code:"spec-document-missing",message:`Target Spec cannot be read: ${u.message}. Restore the complete file at ${d}.`,path:d})}}return{valid:r.length===0,findings:r}}function xs(t){let e=t.expected;if(e){if(t.state.state_version!==e.stateVersion)throw new Error(`Native continuation is stale: the change moved on since the referenced response (current phase ${t.state.phase}, next action ${t.state.loop.next_action}, state version ${t.state.state_version}). Run comet native status ${t.state.name} --json and execute its commandAlternatives with --expected-state-version ${t.state.state_version} --expected-action ${t.state.loop.next_action}.`);if(e.action!==t.action)throw new Error(`Native continuation expected ${e.action} cannot be used for ${t.action}`)}}async function Hx(t){let e=Me(t.paths,t.state.name),r=vi.join(e,"specs"),n=new Map(t.state.spec_changes.filter(({operation:a})=>a==="remove").map(a=>[a.capability,a])),i;try{i=await ru.readdir(r,{withFileTypes:!0})}catch(a){if(a.code==="ENOENT")i=[];else throw a}let o=[];for(let a of i.sort((s,c)=>s.name.localeCompare(c.name,"en"))){if(a.isSymbolicLink())throw new Error(`Native spec capability is unsafe: ${a.name}`);if(!a.isDirectory())continue;if(!di.test(a.name))throw new Error(`Invalid Native capability: ${a.name}`);if(n.has(a.name))throw new Error(`Capability ${a.name} cannot be proposed and removed together`);let s=`specs/${a.name}/spec.md`,c=vi.join(e,...s.split("/")),l=await ru.lstat(c);if(!l.isFile()||l.isSymbolicLink())throw new Error(`Native proposed spec must be a regular file: ${s}`);let d=vi.join(t.paths.specsDir,a.name,"spec.md"),u="create",p=null;try{let h=await ru.lstat(d);if(!h.isFile()||h.isSymbolicLink())throw new Error(`Canonical Native spec is unsafe: ${a.name}`);u="modify",p=Ar((await ne({root:t.paths.specsDir,ref:`${a.name}/spec.md`,maxBytes:null,includeHash:!1})).text)}catch(h){if(h.code!=="ENOENT")throw h}let f=`specs/${a.name}/${ho}`,m=vi.join(e,...f.split("/")),g={};try{let h=await ru.lstat(m);if(!h.isFile()||h.isSymbolicLink())throw new Error(`Native delta manifest must be a regular file: ${f}`);let w=await ne({root:e,ref:f,maxBytes:null,includeHash:!1}),y=as(w.text);if(y.capability!==a.name)throw new Error(`Native delta capability ${y.capability} does not match directory ${a.name}`);let v=p??Ar(""),b=t.state.spec_changes.find(k=>k.capability===a.name);if(b?.delta_source!==void 0){if(b.base_hash!==y.base_hash)throw new Error(`Native delta base changed for ${a.name}; explicit conversion is required`)}else if(y.base_hash!==v)throw new Error(`Native delta base_hash does not match the current total Spec for ${a.name}`);g={delta_source:f,base_hash:y.base_hash}}catch(h){if(h.code!=="ENOENT")throw h}o.push({capability:a.name,operation:u,source:s,...g})}return o.push(...n.values()),o.sort((a,s)=>a.capability.localeCompare(s.capability,"en"))}async function Wx(t){let e=Me(t.paths,t.state.name),r=await ne({root:e,ref:"brief.md",maxBytes:null,includeHash:!1});if(cg(r.text))throw new Error("Brief has a blocking open question");let n=[],i=[];for(let a of t.specChanges){if(a.source===null){i.push({...a,contentHash:null});continue}let s=await ne({root:e,ref:a.source,maxBytes:null,includeHash:!1}),c=s.text,l=null;if(a.delta_source){let d=await ne({root:e,ref:a.delta_source,maxBytes:null,includeHash:!1}),u=as(d.text);c=$N(s.text,u);let p="";try{p=(await ne({root:t.paths.specsDir,ref:`${a.capability}/spec.md`,maxBytes:null,includeHash:!1})).text}catch(f){if(f.code!=="ENOENT")throw f}if(Ar(p)===u.base_hash){let f=MN({baselineMarkdown:p,delta:u,allowAlreadyApplied:!0});if(Ar(s.text)!==f.result_hash)throw new Error(`Native full target Spec does not match delta result for ${a.capability}; update the complete target before confirming Shape`)}l=ie("comet.native.shape-artifact-content.v1",nu(d.text))}n.push({capability:a.capability,source:s.ref,markdown:c}),i.push({...a,contentHash:ie("comet.native.shape-artifact-content.v1",nu(s.text,t.state.document_constraints_version===2)),...l===null?{}:{deltaContentHash:l}})}let o=null;try{let a=await ne({root:e,ref:Bx,maxBytes:65536,includeHash:!1}),s=Dx(a.text);if(s.workflow!=="native")throw new Error("Native capability association must use the native workflow");if(!t.specChanges.some(({capability:d})=>d===s.capability))throw new Error(`Native capability association ${s.capability} is not declared by this change`);let l=vi.relative(t.paths.projectRoot,vi.join(t.paths.specsDir,s.capability,"spec.md")).replaceAll(vi.sep,"/");if(s.current_spec!==l)throw new Error(`Native capability association points to ${s.current_spec}, expected ${l}`);o=ie("comet.native.shape-artifact-content.v1",nu(a.text))}catch(a){if(a.code!=="ENOENT")throw a}return{acceptance:tE({briefMarkdown:r.text,specs:n,resolveBriefReferences:t.state.document_constraints_version===2}),formalHash:ie("comet.native.shape-formal-artifacts.v1",{brief:{source:r.ref,contentHash:ie("comet.native.shape-artifact-content.v1",nu(r.text,t.state.document_constraints_version===2))},specs:i,association:{source:Bx,contentHash:o}})}}function Vx(t){return ie("comet.native.shape-confirmation.v1",{formalHash:t.formalHash,childrenHash:t.childrenHash,coordinationMode:t.coordinationMode??null})}async function Sg(t){if(t.state.document_constraints_version!==void 0){let l=await Kx(t);if(!l.valid){let d=l.findings[0];return{drifted:!0,reason:d?`Native formal documents are invalid (${d.code}${d.path?`: ${d.path}`:""})`:"Native formal documents are invalid"}}}let e=await Hx(t),r=t.ignoreSpecOperationFor??(t.state.children_contract_hash?new Set(t.state.spec_changes.map(({capability:l})=>l)):void 0);if(!(e.length===t.state.spec_changes.length&&e.every((l,d)=>{let u=t.state.spec_changes[d];return u!==void 0&&l.capability===u.capability&&l.source===u.source&&l.delta_source===u.delta_source&&l.base_hash===u.base_hash&&(l.operation===u.operation||r?.has(l.capability)===!0)})))return{drifted:!0,reason:"Native target specification declarations changed"};let i;try{i=await Wx({...t,specChanges:e})}catch{return{drifted:!0,reason:"Native Shape artifacts changed or became invalid"}}let{acceptance:o}=i,a=t.state.acceptance.map(({source:l,text:d})=>({source:l,text:d}));if(!rE(a,o))return{drifted:!0,reason:"Native confirmed acceptance criteria changed"};let s;try{s=await yi({changeDir:Me(t.paths,t.state.name),acceptanceIds:o.map(({id:l})=>l),validation:gi({...t.state,acceptance:o})})}catch{return{drifted:!0,reason:"Native child declarations changed"}}return t.state.phase==="shape"&&t.state.status==="await-user"&&t.state.loop.next_action==="confirm-shape"&&t.state.shape_confirmation_hash===void 0?{drifted:!0,reason:"Native Shape confirmation fingerprint is missing"}:t.state.shape_confirmation_hash!==void 0&&Vx({formalHash:i.formalHash,childrenHash:s?.hash??null,coordinationMode:t.state.coordination_mode})!==t.state.shape_confirmation_hash?{drifted:!0,reason:"Native Shape artifacts changed"}:(s?hg({acceptance:o,children:s.contract}):null)===(t.state.children_contract_hash??null)?{drifted:!1,reason:null}:{drifted:!0,reason:"Native child declarations changed"}}async function iu(t){return Ue(t.paths,`return portable change ${t.name} to Shape`,async()=>{let e=await Je(t.paths,t.name);if(xs({state:e,expected:t.expectedContinuation,action:"revise-requirements"}),t.allowedPhases&&!t.allowedPhases.includes(e.phase))throw new Error("--revise-requirements is only valid from Verify or Archive");return e.phase==="shape"?e:Ng({paths:t.paths,state:e,reason:t.reason,...t.keepFailureBudget?{keepFailureBudget:!0}:{}})})}async function Ng(t){let{state:e}=t;if(e.archived)throw new Error(`Native change ${e.name} is already archived`);let n={...ko(e,{goal_cycle:e.loop.goal_cycle,iteration:e.loop.iteration,attempt:e.loop.attempt,outcome:"recovery",unresolved_ids:[],summary:Tr(t.reason),completed_at:new Date().toISOString()}),phase:"shape",status:"active",state_version:e.state_version+1,acceptance:[],builder_handoff:null,blockers:[],verification:null,verification_result:"pending",verification_report:null,loop:{stage:"shape",goal_cycle:e.loop.goal_cycle+1,iteration:0,attempt:0,retry_epoch:0,failed_iteration_count:t.keepFailureBudget?e.loop.failed_iteration_count:0,no_progress_count:0,execution_failure_count:0,previous_unresolved_ids:[],next_action:"prepare-shape-confirmation"}};delete n.shape_confirmation_hash,delete n.children_contract_hash;let i=await xn({paths:t.paths,previous:e,next:n});return await En(er(t.paths,e.name),Or({portableState:i,projectRoot:t.paths.projectRoot,branch:Mr(t.paths.projectRoot)}),{containedRoot:t.paths.runtimeDir}),i}Tt();it();jo();Cn();Sn();ci();import{createHash as see,randomUUID as gK}from"node:crypto";lt();Ka();nt();lt();Q();ke();var Y7=8*1024*1024;Jd();it();ci();se();var kee=1024*1024*1024;function zx(t){if(t.local===null||t.local.change!==t.state.name)return Or({portableState:t.state,projectRoot:t.projectRoot,branch:Mr(t.projectRoot)});let e=t.local.execution?.operationId??gK();return{...t.local,basedOnStateVersion:t.state.state_version,execution:{operationId:e,stage:"checking",actor:"runtime",executionId:null,status:"completed",startedAt:t.local.execution?.startedAt??new Date().toISOString(),requestCheckRounds:0},checks:t.local.checks.map(r=>r.status==="running"||r.status==="planned"?{...r,operationId:e,status:"interrupted"}:{...r,operationId:e})}}async function Gx(t){try{let e=await $d(er(t.paths,t.state.name));return e===null||e.change!==t.state.name||e.basedOnStateVersion!==t.state.state_version?null:e}catch{return null}}it();qd();Es();async function Eg(t){return Ue(t.paths,`return portable change ${t.name} to Build`,async()=>{let e=await Je(t.paths,t.name);if(xs({state:e,expected:t.expectedContinuation,action:"revise-implementation"}),e.phase==="build")return e;let r=t.preserveLocalChecks!==!1,n=r?await Gx({paths:t.paths,state:e}):null,i=Yd({state:e,reason:t.reason,...t.failureBudget?{failureBudget:t.failureBudget}:{}}),o=await xn({paths:t.paths,previous:e,next:i});return await En(er(t.paths,e.name),r?zx({local:n,state:o,projectRoot:t.paths.projectRoot}):Or({portableState:o,projectRoot:t.paths.projectRoot,branch:Mr(t.paths.projectRoot)}),{containedRoot:t.paths.runtimeDir}),o})}Cn();it();Cn();it();Th();var sre=16*1024;async function yK(t){let e=await Xn(t.projectRoot);return e.status==="missing"||e.selection.workflow!=="native"?null:(vo(e.selection.change),e.selection)}async function Ux(t){let e=await yK(t);return e?(await Ro(t,e.change)?await Je(t,e.change):await hs(t,e.change),e.change):null}ld();var cu=ye("nativeHookProjectConfig",Yt);async function xg(t){em();try{return await t()}finally{em()}}var wK=new Set(["brief.md","children.yaml","comet-state.yaml","verification.md","capability-association.yaml"]),Jx=new Set(["comet-state.yaml","verification.md","capability-association.yaml"]);function Rg(t){let e=t.split("/");return e.length===3&&e[0]==="specs"&&e[1]!==void 0&&di.test(e[1])&&(e[2]==="spec.md"||e[2]===ho)}function au(t,e){if(!Pe(t,e))return null;let r=H.relative(t,e).replaceAll("\\","/"),[n,...i]=r.split("/");if(!n||!di.test(n))return null;if(i.length===0)return{name:n,relative:""};let o=i.join("/");return wK.has(o)?{name:n,relative:o}:Rg(o)?{name:n,relative:o}:null}function bK(t,e){return Pe(t.runtimeDir,e)||H.relative(t.projectRoot,e).replaceAll("\\","/")===".comet/current-change.json"}function kK(t,e,r){let n=H.join(t.projectRoot,".comet","comet");if(Pe(t.nativeRoot,e)||H.resolve(n)===H.resolve(t.nativeRoot))return null;let i=au(H.join(n,"changes"),e);return i&&r.has(i.name)?i:null}function Yx(t){return t==="brief.md"?"data.artifacts.briefPath":t==="children.yaml"?"data.artifacts.childrenPath":t.startsWith("specs/")?"data.artifacts.specsDir":"data.artifacts.changeDir"}function Xx(t,e,r){return`Published Native specs are updated through Archive. Read ${H.join(t,"specs",H.relative(e,r))}, merge the original edit there, and retry the write against that exact target; do not overwrite existing content.`}function Pg(t,e,r,n={}){if(!Pe(t,r))return null;if(bK(e,r)){let s=H.relative(e.projectRoot,r).replaceAll("\\","/"),c=s.match(/^\.comet\/runtime\/native\/changes\/([^/]+)(?:\/|$)/u)?.[1];return{allowed:!1,reason:`Native Runtime-owned path ${s}. Run ${c?`comet native status ${c} --json`:"comet native status --json"} in ${e.projectRoot}, follow its continuation, and retry; do not edit Runtime files directly.`,workflow:"native",...c?{change:c}:{}}}let i=kK(e,r,n.registeredChanges??new Set);if(i){let s=H.join(e.changesDir,i.name,i.relative);return{allowed:!1,reason:`Native formal artifact target ${H.relative(t,r).replaceAll("\\","/")} is outside the configured artifact root. Use ${s} in ${e.projectRoot}; read existing content and merge the original edit instead of overwriting it.`,workflow:"native",change:i.name}}let o=au(e.changesDir,r);if(!o)return null;if(Jx.has(o.relative))return{allowed:!1,reason:`Native Runtime-owned artifact ${H.relative(t,r).replaceAll("\\","/")}. Run comet native status ${o.name} --json in ${e.projectRoot} and follow its continuation; do not infer a mutation or edit the file directly.`,workflow:"native",change:o.name};if(n.allowCanonicalFormal===!1)return null;let a=H.join(e.changesDir,o.name,o.relative);return{allowed:!1,reason:`Native formal artifact target ${H.relative(t,r).replaceAll("\\","/")} is not registered. Run comet native new ${o.name} in ${e.projectRoot}. Use the response ${Yx(o.relative)} to locate ${a}; read initialized or existing content and merge the original edit instead of overwriting it.`,workflow:"native",change:o.name}}function su(t){return t.length===0?null:t.length===1?t[0]:{...t[0],reason:t.map(e=>e.reason).join(`
`)}}function SK(t,e,r,n,i,o){let a=H.relative(t,i).replaceAll("\\","/"),s=H.join(e.changesDir,n.name,n.relative);return{allowed:!1,reason:o?`Native formal artifact target ${a} belongs to registered change ${n.name}, not selected change ${r}. Run comet native select ${n.name} in ${e.projectRoot}, then read ${s} and merge the original edit.`:`Native formal artifact target ${a} belongs to unregistered change ${n.name}, not selected change ${r}. Run comet native new ${n.name} --isolation worktree in ${e.projectRoot}. Use the response ${Yx(n.relative)} to locate ${s}; read initialized or existing content and merge the original edit.`,workflow:"native",change:r}}function Cg(t){let e=`Native change ${t.name} is in ${t.phase}; implementation writes are only allowed in Build.`;return t.phase==="shape"?`${e} Reread the latest continuation, complete requirement clarification, and execute the Shape confirmation command after user confirmation.`:t.phase==="verify"?`${e} Select and execute the matching commandAlternative from the latest continuation, preserving --expected-state-version and --expected-action.`:t.phase==="archive"?`${e} Continue finalizing the accepted result; do not run Verify-only revision commands from Archive.`:`${e} Create or select a separate Native change if this write belongs to different work.`}async function NK(t){let{projectRoot:e,paths:r,state:n,request:i}=t,o=Me(r,n.name),a=[],s=[],c=[],l=[],d=[],u=await Qx(e),p=!1,f=!1,m=!1;for(let g of i.targets){let h=H.resolve(e,g);if(!Pe(e,h)){m=!0;continue}let w=H.relative(e,h).replaceAll("\\","/");if(w===".comet/config.yaml"){f=!0;continue}if(!Pe(r.nativeRoot,h)){if(await mn(e,h,[H.join(e,".comet"),r.nativeRoot])){p=!0;continue}if(!u&&Zx(r,w)){l.push(w);continue}c.push(w);continue}if(!Pe(o,h)){d.push({allowed:!1,reason:Pe(r.specsDir,h)?Xx(o,r.specsDir,h):"Portable Native control state is Runtime-owned",workflow:"native",phase:n.phase,change:n.name});continue}let y=H.relative(o,h).replaceAll("\\","/");if(y==="brief.md"||y==="children.yaml"||y.startsWith("specs/")&&EK(y)){a.push(y);continue}if(y.startsWith("specs/")){s.push(y);continue}d.push({allowed:!1,reason:`${y||"change directory"} is Runtime-owned and cannot be edited by the Agent`,workflow:"native",phase:n.phase,change:n.name})}if(s.length>0&&d.push({allowed:!1,reason:s.map(eP).join(`
`),workflow:"native",phase:n.phase,change:n.name}),d.length>0)return su(d);if(a.length>0&&(c.length>0||l.length>0))return{allowed:!1,reason:"Formal Native requirements must be edited in separate actions from implementation or documentation files",workflow:"native",phase:n.phase,change:n.name};if(a.length>0)return n.document_constraints_version===2&&a.every(g=>g==="brief.md"||/^specs\/[^/]+\/spec\.md$/u.test(g))?{allowed:!0,reason:"Native formal Markdown edit; Runtime rechecks the actual content before an implementation write or workflow transition",workflow:"native",phase:n.phase,change:n.name}:n.phase!=="shape"?{allowed:!0,reason:`Native requirements changed; returned to Shape goal cycle ${(await xg(()=>iu({paths:r,name:n.name,reason:`Formal requirement write requested for ${a.join(", ")}`}))).loop.goal_cycle}`,workflow:"native",phase:"shape",change:n.name}:{allowed:!0,reason:"Native control artifact write",workflow:"native",phase:n.phase,change:n.name};if(c.length>0){if(n.document_constraints_version===2&&n.phase!=="shape"){let g=await Sg({paths:r,state:n});if(g.drifted){let h=await xg(()=>iu({paths:r,name:n.name,reason:g.reason??"Native confirmed requirements changed",keepFailureBudget:!0}));return{allowed:!1,reason:Cg(h),workflow:"native",phase:h.phase,change:h.name}}}return n.children_contract_hash?{allowed:!1,reason:"Native parent Build advances child changes instead of editing implementation",workflow:"native",phase:n.phase,change:n.name}:n.phase==="build"?{allowed:!0,reason:"Native change is in Build",workflow:"native",phase:n.phase,change:n.name}:n.phase==="verify"||n.phase==="archive"?{allowed:!0,reason:`Native candidate was invalidated and returned to Build iteration ${(await xg(()=>Eg({paths:r,name:n.name,reason:`Observed implementation write before ${c.join(", ")}`}))).loop.iteration}`,workflow:"native",phase:"build",change:n.name}:{allowed:!1,reason:Cg(n),workflow:"native",phase:n.phase,change:n.name}}return l.length>0?{allowed:!0,reason:"Native neutral document write: documentation edits stay outside the implementation scope and do not return the change to Build",workflow:"native",phase:n.phase,change:n.name}:p?{allowed:!0,reason:"Native configured Hook allow path",workflow:"native",phase:n.phase,change:n.name}:{allowed:!0,reason:f?"Native control artifact write":m?"Write target is outside the guarded project":"No guarded write target was provided",workflow:"native",phase:n.phase,change:n.name}}function Pe(t,e){let r=H.relative(t,e);return r===""||!r.startsWith("..")&&!H.isAbsolute(r)}async function Qx(t){return(await cu(t))?.native?.document_writes==="revert"}function Zx(t,e){return Vl(e,[H.relative(t.projectRoot,t.nativeRoot).replaceAll("\\","/"),".comet"])}function eP(t){let e=t.split("/"),r=e[0]==="specs"&&e[1]&&di.test(e[1])?e[1]:null;return`Native formal Spec artifacts must use ${r?`specs/${r}/spec.md (or specs/${r}/${ho} for delta metadata)`:`specs/<capability>/spec.md (or specs/<capability>/${ho} for delta metadata)`}; received ${t}`}function EK(t){return Rg(t)}function xK(t,e,r){return r.targets.length>0&&r.targets.every(n=>{let i=H.resolve(t,n);return Pe(t,i)?H.relative(t,i).replaceAll("\\","/")===".comet/config.yaml"||Pe(e,i):!0})}async function PK(t){let e=await cu(t);if(!e||!(e.workflows??[e.default_workflow]).includes("native"))return null;let r=await Hn(t,e.native.artifact_root),n;try{n=await vK.readdir(r.changesDir,{withFileTypes:!0})}catch(o){if(o.code==="ENOENT")return{paths:r,changes:[]};throw o}let i=[];for(let o of n.sort((a,s)=>a.name.localeCompare(s.name)))if(!(!o.isDirectory()||o.isSymbolicLink()))if(await Ro(r,o.name)){let a=await Je(r,o.name);a.archived||i.push({kind:"portable",state:a})}else{let a=await hs(r,o.name);a.archived||i.push({kind:"legacy",state:a})}return{paths:r,changes:i}}async function CK(t,e){let r=await cu(t);if(!r||!(r.workflows??[r.default_workflow]).includes("native"))return null;let n=await Hn(t,r.native.artifact_root);try{if(await Ro(n,e)){let o=await Je(n,e);return{paths:n,changes:o.archived?[]:[{kind:"portable",state:o}]}}let i=await hs(n,e);return{paths:n,changes:i.archived?[]:[{kind:"legacy",state:i}]}}catch(i){if(i.code==="ENOENT")return{paths:n,changes:[]};throw i}}var Ag=ye("nativeActiveContext",t=>PK(t)),tP=ye("selectedNativeContext",CK);async function rP(t){return((await Ag(t))?.changes??[]).map(r=>({workflow:"native",name:r.state.name,phase:r.state.phase}))}async function _g(t,e){let n=(await tP(t,e))?.changes[0]?.state;return n?{workflow:"native",name:n.name,phase:n.phase}:null}async function nP(t,e,r={}){if(e.intent!=="write"||e.targets.length===0)return null;let n=await cu(t);if(!n||!(n.workflows??[n.default_workflow]).includes("native"))return null;let i=await Ag(t);if(!i)return null;let o=i.paths,a=new Set(i.changes.map(({state:c})=>c.name)),s=[];for(let c of e.targets){let l=Pg(t,o,H.resolve(t,c),{allowCanonicalFormal:r.allowCanonicalFormal??!1,registeredChanges:a});l&&s.push(l)}return su(s)}async function iP(t,e,r){e={...e,targets:qn(e.targets)};let n=r?await tP(t,r):await Ag(t);if(!n)return{allowed:!0,reason:"Native workflow is not enabled"};if(e.intent==="non-write")return{allowed:!0,reason:"Hook event is not a write"};if(n.changes.length===0){let g=[];for(let w of e.targets){let y=Pg(t,n.paths,H.resolve(t,w));y&&g.push(y)}let h=su(g);return h||{allowed:!0,reason:xK(t,n.paths.nativeRoot,e)?"Native control artifact write":"No Native changes exist"}}let i;if(r){if(i=n.changes.find(g=>g.state.name===r),!i)return{allowed:!1,reason:`Selected Native change ${r} is missing or archived; resume /comet-native before retrying`,workflow:"native",change:r}}else if(n.changes.length===1)i=n.changes[0];else{let g=await Ux(n.paths);if(i=n.changes.find(h=>h.state.name===g),!i)return{allowed:!1,reason:"Multiple Native changes are active; select the change to resume before writing code",workflow:"native"}}let o=i.state,a=new Set(n.changes.map(({state:g})=>g.name)),s=new Map,c=[];for(let g of e.targets){let h=H.resolve(t,g),w=Pg(t,n.paths,h,{allowCanonicalFormal:!1,registeredChanges:a});if(w){c.push(w);continue}let y=au(n.paths.changesDir,h);if(y&&y.name!==o.name){let k=a.has(y.name);if(!k&&r){let S=s.get(y.name);S||(S=_g(t,y.name).then(Boolean),s.set(y.name,S)),k=await S}c.push(SK(t,n.paths,o.name,y,h,k));continue}if(!Pe(t,h))continue;if(Pe(n.paths.specsDir,h)){let k=i.kind==="portable"?Me(n.paths,o.name):ms(n.paths,o.name);c.push({allowed:!1,reason:Xx(k,n.paths.specsDir,h),workflow:"native",phase:o.phase,change:o.name});continue}if(!Pe(n.paths.nativeRoot,h))continue;let v=i.kind==="portable"?Me(n.paths,o.name):ms(n.paths,o.name);if(Pe(v,h)){let k=H.relative(v,h).replaceAll("\\","/");if(k==="brief.md"||k==="children.yaml"||Rg(k))continue;c.push({allowed:!1,reason:k.startsWith("specs/")?eP(k):`${k||"change directory"} is Runtime-owned. Run comet native status ${o.name} --json in ${n.paths.projectRoot} and follow its continuation; do not edit it directly.`,workflow:"native",phase:o.phase,change:o.name});continue}let b=H.relative(t,h).replaceAll("\\","/");c.push({allowed:!1,reason:`Native-managed path ${b} is not an editable artifact for ${o.name}. Run comet native status ${o.name} --json in ${n.paths.projectRoot} and follow its continuation.`,workflow:"native",phase:o.phase,change:o.name})}let l=su(c);if(l)return l;if(i.kind==="legacy"&&o.phase==="build")return{allowed:!0,reason:"Native change is in Build",workflow:"native",phase:o.phase,change:o.name};if(e.intent==="unknown"||e.targets.length===0)return{allowed:!0,reason:"Hook write target was not attributed to the guarded project",workflow:"native",phase:o.phase,change:o.name};if(i.kind==="portable")return NK({projectRoot:t,paths:n.paths,state:i.state,request:e});let d=!1,u=!1,p=!1,f=!1,m=await Qx(t);for(let g of e.targets){let h=H.resolve(t,g);if(!Pe(t,h)){u=!0;continue}let w=H.relative(t,h).replaceAll("\\","/");if(w===".comet/config.yaml"){d=!0;continue}if(Pe(n.paths.nativeRoot,h)){let y=au(n.paths.changesDir,h);if(y?.name===o.name){if(Jx.has(y.relative))return{allowed:!1,reason:`Native control state is Runtime-owned; use the CLI for ${w}`,workflow:"native",phase:o.phase,change:o.name};d=!0;continue}return{allowed:!1,reason:`Native control state is Runtime-owned; use the CLI for ${w}`,workflow:"native",phase:o.phase,change:o.name}}if(await mn(t,h,[H.join(t,".comet"),n.paths.nativeRoot])){p=!0;continue}if(!m&&Zx(n.paths,w)){f=!0;continue}return{allowed:!1,reason:Cg(o),workflow:"native",phase:o.phase,change:o.name}}return{allowed:!0,reason:d?"Native control artifact write":u?"Write target is outside the guarded project":p?"Native configured Hook allow path":f?"Native neutral document write: documentation edits stay outside the implementation scope":"No guarded write target was provided",workflow:"native",phase:o.phase,change:o.name}}yr();Wa();yr();se();qe();var jg=ye("readWorkflowProjectConfig",t=>Re(t)),Are=ye("discoverNativeProject",t=>Pa(t));Oa();import c2 from"node:path";Q();import{createHash as eH}from"node:crypto";import wP from"node:path";import TK from"node:os";import Ps from"node:path";lt();import{createHash as RK}from"node:crypto";import{AsyncLocalStorage as AK}from"node:async_hooks";var _K=new AK;function oP(t,e){let r=Gd(t),n=e.runGit??At,i=_K.getStore(),o=i?.active?i.observations:void 0,a=o?.get(r)?.get(n);if(a)return a;let s=r;try{let l=n(r,["remote","get-url","origin"]).trim();if(l)s=l;else throw new Error("No origin")}catch{try{let l=n(r,["rev-parse","--git-common-dir"]).trim();l&&(s=Gd(r,l))}catch{}}let c={identity:sP(s),name:IK(s)};if(o){let l=o.get(r)??new Map;l.set(n,c),o.set(r,l)}return c}function jK(t,e={}){return oP(t,e).identity}function Ig(t){let e=sP(t),n=(e.split(/[/:]/u).filter(Boolean).at(-1)??"project").replace(/[^a-z0-9._-]+/gu,"-").replace(/^-+|-+$/gu,"")||"project",i=RK("sha256").update(e,"utf8").digest("hex").slice(0,8);return`${n.slice(0,40)}-${i}`}function oe(t,e={}){return Ig(jK(t,e))}function aP(t,e={}){return oP(t,e).name}function IK(t){return(t.trim().replace(/\\/gu,"/").replace(/\.git$/iu,"").replace(/\/+$/u,"").split(/[/:]/u).filter(Boolean).at(-1)??"project").replace(/[^a-zA-Z0-9._-]+/gu,"-").replace(/^-+|-+$/gu,"")||"project"}function sP(t){let e=t.trim().replace(/\\/gu,"/").replace(/\.git$/iu,"").replace(/\/+$/u,"").toLocaleLowerCase();return e||"project"}function Tg(t){let e=t??TK.homedir();return process.platform==="win32"?t===void 0&&process.env.LOCALAPPDATA?process.env.LOCALAPPDATA:Ps.join(e,"AppData","Local"):process.platform==="darwin"?Ps.join(e,"Library","Caches"):t===void 0&&process.env.XDG_CACHE_HOME?process.env.XDG_CACHE_HOME:Ps.join(e,".cache")}function rr(t,e=Tg()){let r=Ps.resolve(t),n=oe(r),i=Ig(`workspace:${r}`),o=process.platform==="linux"?"comet":"Comet";return{repositoryId:n,workspaceId:i,databasePath:Ps.join(e,o,"project-knowledge",n,"knowledge.sqlite")}}import{randomUUID as $K}from"node:crypto";import cP from"node:path";var OK=/^[a-z0-9][a-z0-9._-]{1,127}$/u,pP=2e3,MK=1024,LK=32,DK=32,BK=32,FK=16,KK=16,fP=32,HK=128,WK=32,VK=new Set(["topology","fact","dependency","decision","pattern","procedure","constraint","failure-resolution"]),qK=new Set(["trial","proven","enforced","superseded"]),zK=new Set(["automatic","user","repository"]),GK=new Set(["contains","depends-on","consumes","registers","propagates-to","generated-by","validated-by","supersedes"]);function Mo(t,e){if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`${e} must be a mapping`);return t}function st(t,e,r=pP){if(typeof t!="string"||t.trim().length===0||t.length>r)throw new Error(`${e} must be a non-empty string of at most ${r} characters`);return t.trim()}function $g(t,e){let r=st(t,e,128);if(!OK.test(r))throw new Error(`${e} must use a stable record id`);return r}function Oo(t,e,r,n){if(t===void 0)return[];if(!Array.isArray(t)||t.length>r)throw new Error(`${e} must be a bounded list`);return t.map((i,o)=>n(i,o))}function mP(t,e,r,n){if(!Array.isArray(t)||t.length===0||t.length>r)throw new Error(`${e} must be a non-empty bounded list`);return t.map((i,o)=>n(i,o))}function Mg(t,e){let r=st(t,e,MK).replaceAll("\\","/");if(cP.posix.isAbsolute(r)||cP.win32.isAbsolute(r)||r.includes("\0")||r.split("/").some(n=>n===".."))throw new Error(`${e} must be a project-relative path`);return r}function UK(t,e,r=LK){return Oo(t,e,r,(n,i)=>Mg(n,`${e}[${i}]`))}function lP(t,e,r=DK){return Oo(t,e,r,(n,i)=>st(n,`${e}[${i}]`,512))}function Og(t,e,r=pP){if(t!==void 0)return st(t,e,r)}function dP(t,e){if(!Number.isSafeInteger(t)||Number(t)<1)throw new Error(`${e} must be a positive integer`);return Number(t)}function Cs(t,e){if(!Number.isSafeInteger(t)||Number(t)<0)throw new Error(`${e} must be a non-negative integer`);return Number(t)}function hP(t,e){let r=Mo(t,e),n=r.lineStart,i=r.lineEnd,o=n===void 0?void 0:dP(n,`${e}.lineStart`),a=i===void 0?void 0:dP(i,`${e}.lineEnd`);if(o!==void 0&&a!==void 0&&a<o)throw new Error(`${e}.lineEnd must be greater than or equal to lineStart`);let s=Og(r.anchor,`${e}.anchor`,256),c=Og(r.evidence,`${e}.evidence`,1024);return{source:Mg(r.source,`${e}.source`),...s===void 0?{}:{anchor:s},...o===void 0?{}:{lineStart:o},...a===void 0?{}:{lineEnd:a},...c===void 0?{}:{evidence:c}}}function JK(t,e){let r=Mo(t,`conclusions[${e}]`);return{text:st(r.text,`conclusions[${e}].text`),sources:mP(r.sources,`conclusions[${e}].sources`,fP,(n,i)=>hP(n,`conclusions[${e}].sources[${i}]`))}}function YK(t,e){let r=Mo(t,`relations[${e}]`),n=st(r.type,`relations[${e}].type`,64);if(!GK.has(n))throw new Error(`relations[${e}].type is unsupported`);return{type:n,targetId:$g(r.targetId,`relations[${e}].targetId`),sources:mP(r.sources,`relations[${e}].sources`,fP,(i,o)=>hP(i,`relations[${e}].sources[${o}]`))}}function XK(t,e){let r=Mo(t,`verification[${e}]`),n=Og(r.expected,`verification[${e}].expected`);return{command:st(r.command,`verification[${e}].command`),...n===void 0?{}:{expected:n}}}function QK(t,e){let r=Mo(t,`sourceVersions[${e}]`),n=r.digest;if(n!==void 0&&(typeof n!="string"||!/^[a-f0-9]{64}$/u.test(n)))throw new Error(`sourceVersions[${e}].digest must be a SHA-256 hash`);return{source:Mg(r.source,`sourceVersions[${e}].source`),size:Cs(r.size,`sourceVersions[${e}].size`),modifiedAt:Cs(r.modifiedAt,`sourceVersions[${e}].modifiedAt`),...n===void 0?{}:{digest:n}}}function ZK(t,e){return t.reduce((r,n)=>r+n.sources.length,0)+e.reduce((r,n)=>r+n.sources.length,0)}function uP(t){let e=st(t,"updatedAt",64);if(Number.isNaN(Date.parse(e)))throw new Error("updatedAt must be an ISO-8601 timestamp");return e}function gt(t){let e=Mo(t,"record"),r=st(e.type,"type",64);if(!VK.has(r))throw new Error("type is unsupported");let n=st(e.state,"state",32);if(!qK.has(n))throw new Error("state is unsupported");let i=st(e.authority,"authority",32);if(!zK.has(i))throw new Error("authority is unsupported");let o=Oo(e.conclusions,"conclusions",BK,JK),a=Oo(e.relations,"relations",FK,YK);if(ZK(o,a)>HK)throw new Error("conclusions/relations sources exceed the bounded total reference count");let s=Oo(e.sourceVersions,"sourceVersions",WK,QK);if(new Set(s.map(c=>c.source)).size!==s.length)throw new Error("sourceVersions must not contain duplicate sources");return{id:$g(e.id,"id"),projectId:$g(e.projectId,"projectId"),type:r,state:n,authority:i,title:st(e.title,"title"),summary:st(e.summary,"summary"),applicablePaths:UK(e.applicablePaths,"applicablePaths"),operations:lP(e.operations,"operations"),phases:lP(e.phases,"phases"),conclusions:o,relations:a,verification:Oo(e.verification,"verification",KK,XK),sourceVersions:s,applicationCount:Cs(e.applicationCount,"applicationCount"),successCount:Cs(e.successCount,"successCount"),failureCount:Cs(e.failureCount,"failureCount"),...e.lastAppliedAt===void 0?{}:{lastAppliedAt:uP(e.lastAppliedAt)},updatedAt:uP(e.updatedAt)}}function U(t){return gt(t)}function gP(t,e,r=new Date().toISOString(),n=`manual-${$K()}`){let i=t.sources??[];return gt({id:n,projectId:e,type:t.type,state:"proven",authority:"user",title:t.title,summary:t.summary,applicablePaths:t.applicablePaths??[],operations:t.operations??[],phases:t.phases??[],conclusions:i.length>0?[{text:t.summary,sources:i}]:[],relations:[],verification:t.verification??[],sourceVersions:[],applicationCount:0,successCount:0,failureCount:0,updatedAt:r})}function yP(t,e){let r=gt(t),n=gt(e);if(r.id!==n.id)throw new Error("cannot merge records with different ids");if(r.projectId!==n.projectId)throw new Error("cannot merge records with different project ids");if(r.type!==n.type)throw new Error("cannot merge records with different types");return r.state==="superseded"&&n.authority!=="user"?n:r.authority==="user"&&n.authority!=="user"?gt({...n,authority:"user",state:r.state,title:r.title,summary:r.summary,applicablePaths:r.applicablePaths,operations:r.operations,phases:r.phases??[],conclusions:r.conclusions,relations:r.relations,verification:r.verification,applicationCount:r.applicationCount,successCount:r.successCount,failureCount:r.failureCount,...r.lastAppliedAt===void 0?{}:{lastAppliedAt:r.lastAppliedAt}}):n}function vP(t){return t==="topology"||t==="fact"||t==="dependency"?"project-model":"project-policy"}var wi=class{constructor(e,r){this.projectRoot=e;let n=rr(e,r);this.projectId=n.repositoryId,this.store=new gn(wP.join(wP.dirname(n.databasePath),n.workspaceId,"host-review.json"))}projectRoot;store;projectId;async read(){return JSON.parse(await this.store.read()??"[]")}async pending(){return(await this.read()).filter(e=>e.actions===void 0)}async review(e){let r=eH("sha256").update(JSON.stringify(e)).digest("hex"),n=await this.store.withLock(async()=>{let i=(await this.read()).filter(s=>s.id===r||s.packet.eventName!==e.eventName||s.packet.workflow!==e.workflow||s.packet.changeId!==e.changeId||s.packet.occurredAt!==e.occurredAt),o=i.find(s=>s.id===r);if(o)return o.actions;if(i.filter(s=>s.actions===void 0).length>=64)throw new Error("Host review queue is full");let a=i.filter(s=>s.actions===void 0||i.indexOf(s)>=i.length-64);await this.store.write(JSON.stringify([...a,{id:r,packet:e}]))});if(n===void 0)throw new Error("Host Agent review pending: comet knowledge review --json");return n}async submit(e,r){if(!Array.isArray(r)||r.length>16)throw new Error("Expected at most 16 review actions");let n=r.map(i=>{if(i?.action==="supersede"&&typeof i.recordId=="string")return{action:"supersede",recordId:i.recordId};if(i?.action!=="create"&&i?.action!=="update")throw new Error("Invalid review action");return{action:i.action,record:gt({...i.record,projectId:this.projectId,state:"trial",authority:"automatic",applicationCount:0,successCount:0,failureCount:0})}});await this.store.withLock(async()=>{let i=await this.read(),o=i.find(a=>a.id===e);if(!o)throw new Error("Unknown review request");if(n.length>0){for(let a of o.packet.sources)if((await wr(this.projectRoot,a.source,{label:a.source})).digest!==a.digest)throw new Error("Review sources changed; refresh the pending review before submitting")}if(o.actions!==void 0&&JSON.stringify(o.actions)!==JSON.stringify(n))throw new Error("Review already submitted");o.actions=n,await this.store.write(JSON.stringify(i))})}};var Dr="comet.agent-experience.v1",tH=/^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$/u,rH=new Set(["user.signal","episode.completed","verification.completed","review.resolved","failure.resolved","change.archived","repository.changed","context.applied","context.outcome"]),nH=new Set(["user","agent","tool","workflow","repository"]),iH=new Set(["trial","proven","enforced","superseded"]),oH=new Set(["core-profile","collaboration-policy","personal-episode","project-model","project-policy"]);function Rs(t){let e=Bt(t,"Agent Experience event");if(e.schema!==Dr)throw new Error(`Unsupported Agent Experience schema: ${String(e.schema)}`);let r=nr(e.eventId,"eventId"),n=nr(e.episodeId,"episodeId"),i=SP(e.occurredAt,"occurredAt");if(!rH.has(e.type))throw new Error(`Unsupported Agent Experience event type: ${String(e.type)}`);if(!nH.has(e.actor))throw new Error(`Unsupported Agent Experience actor: ${String(e.actor)}`);if(e.scope!=="user"&&e.scope!=="project")throw new Error("Agent Experience scope must be user or project");let o=fH(e.projectId,"projectId");if(e.scope==="project"&&o===void 0)throw new Error("Project Agent Experience requires projectId");let a=aH(e.source),s=sH(e.context),c=e.signal===void 0?void 0:cH(e.signal),l=Lg(e.evidence,"evidence").map(lH),d=e.outcome===void 0?void 0:bP(e.outcome);return{schema:Dr,eventId:r,episodeId:n,occurredAt:i,type:e.type,actor:e.actor,scope:e.scope,...o===void 0?{}:{projectId:o},source:a,context:s,...c===void 0?{}:{signal:c},evidence:l,...d===void 0?{}:{outcome:d},...e.causedByEventId===void 0?{}:{causedByEventId:nr(e.causedByEventId,"causedByEventId")},...e.supersedesEventId===void 0?{}:{supersedesEventId:nr(e.supersedesEventId,"supersedesEventId")}}}function Lo(t){let e=Bt(t,"Context Candidate"),r=e.state,n=e.memoryType;if(!iH.has(r))throw new Error("Context Candidate state is unsupported");if(!oH.has(n))throw new Error("Context Candidate memoryType is unsupported");let i=e.authority,o=e.scope;if(o!=="user"&&o!=="project")throw new Error("Context Candidate scope must be user or project");if(i!=="explicit"&&i!=="inferred"&&i!=="repository"&&i!=="user")throw new Error("Context Candidate authority is unsupported");return{id:nr(e.id,"candidate.id"),owner:V(e.owner,"candidate.owner",256),scope:o,memoryType:n,kind:V(e.kind,"candidate.kind",128),state:r,authority:i,title:V(e.title,"candidate.title",512),summary:V(e.summary,"candidate.summary",4e3),...e.content===void 0?{}:{content:V(e.content,"candidate.content",Number.MAX_SAFE_INTEGER)},selectors:kP(e.selectors),sources:Lg(e.sources,"candidate.sources").map((a,s)=>{let c=Bt(a,`candidate.sources[${s}]`),l=c.type;if(!["user","repository","workflow","review","verification","inference"].includes(String(l)))throw new Error(`candidate.sources[${s}].type is unsupported`);return{type:l,...c.source===void 0?{}:{source:V(c.source,"source",2048)},...c.anchor===void 0?{}:{anchor:V(c.anchor,"anchor",512)},...c.digest===void 0?{}:{digest:V(c.digest,"digest",256)}}}),verification:Lg(e.verification,"candidate.verification").map((a,s)=>{let c=Bt(a,`candidate.verification[${s}]`);return{command:V(c.command,"verification.command",4e3),...c.expected===void 0?{}:{expected:V(c.expected,"verification.expected",2e3)}}}),...typeof e.priority=="number"&&Number.isFinite(e.priority)?{priority:e.priority}:{},...e.matchReasons===void 0?{}:{matchReasons:bi(e.matchReasons,"candidate.matchReasons")},...e.digest===void 0?{}:{digest:V(e.digest,"digest",256)},...e.application===void 0?{}:{application:pH(e.application)}}}function aH(t){let e=Bt(t,"source");if(!["user","workflow","tool","repository","system"].includes(String(e.kind)))throw new Error("Agent Experience source kind is unsupported");return{kind:e.kind,name:V(e.name,"source.name",256),...e.workflow===void 0?{}:{workflow:V(e.workflow,"workflow",128)},...e.changeId===void 0?{}:{changeId:V(e.changeId,"changeId",256)},...e.command===void 0?{}:{command:V(e.command,"command",2e3)}}}function sH(t){let e=Bt(t??{},"context");return{...e.task===void 0?{}:{task:V(e.task,"context.task",8e3)},...e.workflow===void 0?{}:{workflow:V(e.workflow,"context.workflow",128)},...e.changeId===void 0?{}:{changeId:V(e.changeId,"context.changeId",256)},...e.phase===void 0?{}:{phase:V(e.phase,"context.phase",128)},...e.paths===void 0?{}:{paths:bi(e.paths,"context.paths")},...e.operation===void 0?{}:{operation:V(e.operation,"context.operation",256)}}}function cH(t){let e=Bt(t,"signal"),r=e.kind;if(!["preference","correction","acceptance","rejection","remember","forget"].includes(String(r)))throw new Error("Agent Experience signal kind is unsupported");if(typeof e.explicit!="boolean"||typeof e.longTerm!="boolean")throw new Error("Agent Experience signal explicit and longTerm must be booleans");return{kind:r,explicit:e.explicit,longTerm:e.longTerm,text:V(e.text,"signal.text",Number.MAX_SAFE_INTEGER),...e.category===void 0?{}:{category:V(e.category,"category",512)},...e.targetId===void 0?{}:{targetId:nr(e.targetId,"signal.targetId")},...e.selectors===void 0?{}:{selectors:kP(e.selectors)}}}function lH(t,e){let r=Bt(t,`evidence[${e}]`);if(!["user","source","verification","review","failure","outcome"].includes(String(r.kind)))throw new Error(`evidence[${e}].kind is unsupported`);return{id:nr(r.id,`evidence[${e}].id`),kind:r.kind,summary:V(r.summary,`evidence[${e}].summary`,Number.MAX_SAFE_INTEGER),...r.source===void 0?{}:{source:V(r.source,`evidence[${e}].source`,2048)},...r.anchor===void 0?{}:{anchor:V(r.anchor,`evidence[${e}].anchor`,512)},...r.digest===void 0?{}:{digest:V(r.digest,`evidence[${e}].digest`,256)},...r.command===void 0?{}:{command:V(r.command,`evidence[${e}].command`,4e3)},...typeof r.success=="boolean"?{success:r.success}:{}}}function bP(t){let e=Bt(t,"outcome");if(!["used-successfully","ignored","overridden","corrected","contributed-to-failure"].includes(String(e.status)))throw new Error("Agent Experience outcome status is unsupported");return{status:e.status,...e.previousStatus===void 0?{}:{previousStatus:dH(e.previousStatus,"outcome.previousStatus")},...e.revision===void 0?{}:{revision:uH(e.revision,"outcome.revision")},...e.summary===void 0?{}:{summary:V(e.summary,"summary",4e3)},...e.applicationId===void 0?{}:{applicationId:nr(e.applicationId,"applicationId")},...e.unitIds===void 0?{}:{unitIds:bi(e.unitIds,"unitIds")}}}function dH(t,e){if(!["used-successfully","ignored","overridden","corrected","contributed-to-failure"].includes(String(t)))throw new Error(`${e} is unsupported`);return t}function uH(t,e){if(!Number.isSafeInteger(t)||Number(t)<1)throw new Error(`${e} must be a positive integer`);return Number(t)}function kP(t){let e=Bt(t??{},"selectors");return{...e.projectId===void 0?{}:{projectId:nr(e.projectId,"selectors.projectId")},...e.paths===void 0?{}:{paths:bi(e.paths,"paths")},...e.operations===void 0?{}:{operations:bi(e.operations,"operations")},...e.phases===void 0?{}:{phases:bi(e.phases,"phases")},...e.tasks===void 0?{}:{tasks:bi(e.tasks,"tasks")}}}function pH(t){let e=Bt(t,"application"),r={applied:lu(e.applied,"application.applied"),successful:lu(e.successful,"application.successful"),ignored:lu(e.ignored,"application.ignored"),negative:lu(e.negative,"application.negative"),...e.lastAppliedAt===void 0?{}:{lastAppliedAt:SP(e.lastAppliedAt,"application.lastAppliedAt")}};return e.lastOutcome===void 0?r:{...r,lastOutcome:bP({status:e.lastOutcome}).status}}function Bt(t,e){if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`${e} must be an object`);return t}function Lg(t,e){if(!Array.isArray(t))throw new Error(`${e} must be an array`);return t}function V(t,e,r){if(typeof t!="string"||t.trim().length===0||t.length>r)throw new Error(`${e} must be a non-empty string`);return t.trim()}function nr(t,e){let r=V(t,e,256);if(!tH.test(r))throw new Error(`${e} must be a stable identifier`);return r}function fH(t,e){return t===void 0?void 0:nr(t,e)}function SP(t,e){let r=V(t,e,64);if(Number.isNaN(Date.parse(r)))throw new Error(`${e} must be an ISO timestamp`);return r}function bi(t,e){if(!Array.isArray(t))throw new Error(`${e} must be an array`);return[...new Set(t.map((r,n)=>V(r,`${e}[${n}]`,4e3)))]}function lu(t,e){if(!Number.isSafeInteger(t)||Number(t)<0)throw new Error(`${e} must be a non-negative integer`);return Number(t)}import{randomUUID as mH}from"node:crypto";var uu=class{state;constructor(e={version:2,events:[],reflections:{}}){this.state=du(e)}async read(){return du(this.state)}async write(e){this.state=du(e)}},As=class{constructor(e){this.storage=e}storage;async read(){let e=await this.storage.read();if(e===null)return{version:2,events:[],reflections:{}};if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Agent Experience Journal state must be an object");let r=e;if(r.version!==2||!Array.isArray(r.events)||!hH(r.reflections))throw new Error("Agent Experience Journal state is incompatible");return{version:2,events:r.events.map(Rs),reflections:gH(r.reflections)}}async write(e){await this.storage.write(du(e))}async withLock(e){return this.storage.withLock?this.storage.withLock(e):e()}},ki=class{constructor(e){this.store=e}store;queue=Promise.resolve();async capture(e){let r=Rs(e);return this.serialized(async()=>{let n=await this.store.read(),i=n.events.find(s=>s.eventId===r.eventId);if(i!==void 0){let s=Dg(n.events,i.episodeId);return{deduplicated:!0,pending:n.reflections[i.eventId]?.status!=="processed",event:i,episodeEventCount:s.events.length,episodeEvidenceCount:s.evidence.length}}let o=[...n.events,r];await this.store.write({version:2,events:o,reflections:{...n.reflections,[r.eventId]:{status:"pending",attempts:0,updatedAt:r.occurredAt}}});let a=Dg(o,r.episodeId);return{deduplicated:!1,pending:!0,event:r,episodeEventCount:a.events.length,episodeEvidenceCount:a.evidence.length}})}async pending(e=100){let r=await this.store.read();return r.events.filter(n=>r.reflections[n.eventId]?.status!=="processed").slice(0,Math.max(1,Math.min(1e3,e)))}async isPending(e){let r=await this.store.read();return r.events.some(n=>n.eventId===e)&&r.reflections[e]?.status!=="processed"}async claimEpisode(e,r={}){return this.serialized(async()=>{let n=await this.store.read(),i=r.now??new Date().toISOString(),o=Date.parse(i),a=n.events.filter(f=>f.episodeId===e);if(a.some(f=>{let m=n.reflections[f.eventId];return m?.status==="processing"&&Date.parse(m.leaseExpiresAt??"")>o}))return null;let c=a.filter(f=>{let m=n.reflections[f.eventId];return m?.status==="pending"||m?.status==="processing"&&Date.parse(m.leaseExpiresAt??"")<=o});if(c.length===0)return null;let l=`reflection:${mH()}`,d=Math.max(1e3,Math.min(30*6e4,r.leaseMs??5*6e4)),u=new Date(o+d).toISOString(),p={...n.reflections};for(let f of c){let m=p[f.eventId];p[f.eventId]={status:"processing",attempts:m?.attempts??0,updatedAt:i,claimId:l,leaseExpiresAt:u,completedOwners:[...m?.completedOwners??[]],...m?.lastError===void 0?{}:{lastError:m.lastError}}}return await this.store.write({...n,reflections:p}),{claimId:l,episodeId:e,eventIds:c.map(f=>f.eventId),events:c,completedOwners:Object.fromEntries(c.map(f=>[f.eventId,[...n.reflections[f.eventId]?.completedOwners??[]]]))}})}async renewClaim(e,r={}){await this.serialized(async()=>{let n=await this.store.read(),i=r.now??new Date().toISOString(),o=Date.parse(i),a=Math.max(1e3,Math.min(30*6e4,r.leaseMs??5*6e4)),s=new Date(o+a).toISOString(),c=new Set(e.eventIds),l={...n.reflections},d=0;for(let u of n.events){if(!c.has(u.eventId))continue;let p=l[u.eventId];p?.status!=="processing"||p.claimId!==e.claimId||(l[u.eventId]={...p,updatedAt:i,leaseExpiresAt:s},d+=1)}if(d!==e.eventIds.length)throw new Error(`Agent Reflection claim was lost: ${e.claimId}`);await this.store.write({...n,reflections:l})})}async markLearnerCompleted(e,r,n,i=new Date().toISOString()){let o=new Set(n);o.size!==0&&await this.serialized(async()=>{let a=await this.store.read(),s={...a.reflections},c=0;for(let l of a.events){if(!o.has(l.eventId))continue;let d=s[l.eventId];d?.status!=="processing"||d.claimId!==e.claimId||(s[l.eventId]={...d,updatedAt:i,completedOwners:[...new Set([...d.completedOwners??[],r])].sort()},c+=1)}if(c!==o.size)throw new Error(`Agent Reflection claim was lost: ${e.claimId}`);await this.store.write({...a,reflections:s})})}async completeClaim(e,r=new Date().toISOString()){await this.finishClaim(e,"processed",void 0,r)}async failClaim(e,r,n=new Date().toISOString()){await this.finishClaim(e,"pending",r,n)}async markProcessed(e,r=new Date().toISOString()){await this.markProcessedMany([e],r)}async markProcessedMany(e,r=new Date().toISOString()){let n=new Set(e);n.size!==0&&await this.serialized(async()=>{let i=await this.store.read(),o=i.events.filter(s=>n.has(s.eventId));if(o.length===0)return;let a={...i.reflections};for(let s of o){let c=a[s.eventId];a[s.eventId]={status:"processed",attempts:c?.attempts??0,updatedAt:r,completedOwners:[...c?.completedOwners??[]]}}await this.store.write({...i,reflections:a})})}async markFailed(e,r,n=new Date().toISOString()){await this.updateReflection(e,i=>({status:"pending",attempts:(i?.attempts??0)+1,updatedAt:n,lastError:r.slice(0,2e3)}))}async episode(e){let r=await this.store.read(),n=Dg(r.events,e);return n.events.length===0?null:n}async list(e={}){return(await this.store.read()).events.filter(n=>(e.projectId===void 0||n.projectId===e.projectId)&&(e.type===void 0||n.type===e.type))}async serialized(e){let r=()=>this.store.withLock?this.store.withLock(e):e(),n=this.queue.then(r,r);return this.queue=n.then(()=>{},()=>{}),n}async updateReflection(e,r){await this.serialized(async()=>{let n=await this.store.read();n.events.some(i=>i.eventId===e)&&await this.store.write({...n,reflections:{...n.reflections,[e]:r(n.reflections[e])}})})}async finishClaim(e,r,n,i){let o=new Set(e.eventIds);await this.serialized(async()=>{let a=await this.store.read(),s={...a.reflections};for(let c of a.events){if(!o.has(c.eventId))continue;let l=s[c.eventId];l?.status!=="processing"||l.claimId!==e.claimId||(s[c.eventId]={status:r,attempts:l.attempts+ +(r==="pending"),updatedAt:i,completedOwners:[...l.completedOwners??[]],...n===void 0?{}:{lastError:n.slice(0,2e3)}})}await this.store.write({...a,reflections:s})})}};function Dg(t,e){let r=t.filter(i=>i.episodeId===e),n=new Map;for(let i of r)for(let o of i.evidence){let a=o.digest??o.id;n.has(a)||n.set(a,o)}return{id:e,events:r,evidence:[...n.values()]}}function du(t){return JSON.parse(JSON.stringify(t))}function hH(t){return!t||typeof t!="object"||Array.isArray(t)?!1:Object.values(t).every(e=>{if(!e||typeof e!="object"||Array.isArray(e))return!1;let r=e;return(r.status==="pending"||r.status==="processing"||r.status==="processed")&&Number.isSafeInteger(r.attempts)&&Number(r.attempts)>=0&&typeof r.updatedAt=="string"&&(r.lastError===void 0||typeof r.lastError=="string")&&(r.claimId===void 0||typeof r.claimId=="string")&&(r.leaseExpiresAt===void 0||typeof r.leaseExpiresAt=="string")&&(r.completedOwners===void 0||Array.isArray(r.completedOwners)&&r.completedOwners.every(n=>typeof n=="string"))})}function gH(t){return JSON.parse(JSON.stringify(t))}import{createHash as NP}from"node:crypto";var pu=class{journal;learners;schedule;maxEvents;maxEvidence;onDiagnostic;episodeQueues=new Map;scheduledEventIds=new Set;constructor(e){this.journal=e.journal,this.learners=e.learners,this.schedule=e.schedule??(r=>{r()}),this.maxEvents=fu(e.maxEventsPerReflection,8),this.maxEvidence=fu(e.maxEvidencePerReflection,16),this.onDiagnostic=e.onDiagnostic}async capture(e){let r=await this.journal.capture(e);if(!r.pending)return{...r,reflectedSynchronously:!1,deltas:[]};let n=e.type==="user.signal"&&e.signal?.explicit===!0&&e.signal.longTerm,i=[],o=async()=>{try{i=await this.processAndRecord(r.event)}finally{this.scheduledEventIds.delete(r.event.eventId)}};if(this.scheduledEventIds.has(r.event.eventId))return{...r,reflectedSynchronously:!1,deltas:[]};if(this.scheduledEventIds.add(r.event.eventId),n)await o();else try{await this.schedule(async()=>{try{await o()}catch(a){this.onDiagnostic?.(`Agent Reflection failed: ${Do(a)}`)}})}catch(a){this.scheduledEventIds.delete(r.event.eventId),this.onDiagnostic?.(`Agent Reflection scheduling failed: ${Do(a)}`)}return{...r,reflectedSynchronously:n,deltas:i}}async replayPending(e=50){let r=await this.journal.pending(e);for(let n of r)if(!this.scheduledEventIds.has(n.eventId)){this.scheduledEventIds.add(n.eventId);try{await this.schedule(async()=>{try{await this.processAndRecord(n)}catch(i){this.onDiagnostic?.(`Agent Reflection replay failed: ${Do(i)}`)}finally{this.scheduledEventIds.delete(n.eventId)}})}catch(i){this.scheduledEventIds.delete(n.eventId),this.onDiagnostic?.(`Agent Reflection replay scheduling failed: ${Do(i)}`)}}}async feedback(e){let r=NP("sha256").update(JSON.stringify({applicationId:e.applicationId,status:e.status,summary:e.summary??""})).digest("hex").slice(0,24);return this.capture({schema:Dr,eventId:`context-outcome:${r}`,episodeId:e.episodeId,occurredAt:e.occurredAt??new Date().toISOString(),type:"context.outcome",actor:"agent",scope:e.projectId===void 0?"user":"project",...e.projectId===void 0?{}:{projectId:e.projectId},source:{kind:"system",name:"context-director"},context:{},evidence:[],outcome:{status:e.status,applicationId:e.applicationId,unitIds:e.unitIds,...e.summary===void 0?{}:{summary:e.summary}}})}async processEpisode(e){let{episodeId:r,events:n}=e,i=new Map;for(let s of n){let c=typeof this.learners=="function"?await this.learners(s):this.learners;for(let l of c){if(!l.supports(s)||(e.completedOwners[s.eventId]??[]).includes(l.owner))continue;let d=i.get(l.owner)??{learner:l,events:[]};d.events.some(u=>u.eventId===s.eventId)||d.events.push(s),i.set(l.owner,d)}}let o=[],a=[];for(let{learner:s,events:c}of i.values())try{let l=vH(r,c,this.maxEvents,this.maxEvidence),d=[],u=!1;for(let m of l){await this.journal.renewClaim(e);let g=yH(await s.reflect(m));u||=g.deferred;for(let h of g.deltas){if(h.owner!==s.owner)throw new Error(`${s.owner} returned a Learning Delta owned by ${h.owner}`);d.push(h)}}let p=[...new Set(c.map(m=>m.eventId))].sort(),f=bH(s.owner,r,p,d);if(f.length>0&&(await this.journal.renewClaim(e),await s.consolidate({episodeId:r,eventIds:p,deltas:f}),a.push(...f.map(m=>m.delta))),u)throw new Error(`${s.owner} semantic Reflection deferred`);await this.journal.markLearnerCompleted(e,s.owner,c.map(m=>m.eventId))}catch(l){let d=`${s.owner} reflection failed: ${Do(l)}`;o.push(d),this.onDiagnostic?.(d)}if(o.length>0)throw new Error(o.join("; "));return a}async processAndRecord(e){let n=(this.episodeQueues.get(e.episodeId)??Promise.resolve()).catch(()=>{}).then(async()=>{let i=[];for(;;){let o=await this.journal.claimEpisode(e.episodeId);if(o===null)return i;try{i.push(...await this.processEpisode(o)),await this.journal.completeClaim(o)}catch(a){throw await this.journal.failClaim(o,Do(a)),a}}});this.episodeQueues.set(e.episodeId,n);try{return await n}finally{this.episodeQueues.get(e.episodeId)===n&&this.episodeQueues.delete(e.episodeId)}}};function yH(t){return Array.isArray(t)?{deltas:t,deferred:!1}:t}function vH(t,e,r=8,n=16){let i=[],o=fu(r,8),a=fu(n,16);for(let s=0;s<e.length;s+=o){let c=e.slice(s,s+o),l=c.reduce((d,u)=>d+u.evidence.length,0);if(l===0){i.push({episodeId:t,events:c,evidenceOffset:0,evidenceCount:0});continue}for(let d=0;d<l;d+=a)i.push({episodeId:t,events:c,evidenceOffset:d,evidenceCount:Math.min(a,l-d)})}return i}function hu(t){if(t.evidenceCount===0)return t.events.map(i=>({...i,evidence:[]}));let e=t.evidenceOffset+t.evidenceCount,r=0,n=[];for(let i of t.events){if(i.evidence.length===0){t.evidenceOffset===0&&n.push({...i,evidence:[]});continue}let o=r,a=r+i.evidence.length;r=a;let s=Math.max(t.evidenceOffset,o),c=Math.min(e,a);s>=c||n.push({...i,evidence:i.evidence.slice(s-o,c-o)})}return n}function fu(t,e){return Number.isSafeInteger(t)&&Number(t)>0?Number(t):e}function Do(t){return t instanceof Error?t.message:String(t)}function wH(t,e,r,n){return`learning-delta:${NP("sha256").update(JSON.stringify({owner:t,episodeId:e,eventIds:[...r].sort(),delta:kH(n)})).digest("hex")}`}function bH(t,e,r,n){let i=new Map;for(let o of n){let a=wH(t,e,r,o);i.has(a)||i.set(a,o)}return[...i].sort(([o],[a])=>o.localeCompare(a)).map(([o,a])=>({delta:a,idempotencyKey:o}))}function kH(t){let e=r=>r===void 0?void 0:[...r].sort();return{action:t.action,owner:t.owner,targetId:t.targetId,memoryType:t.memoryType,kind:t.kind,title:t.title,statement:t.statement,applicability:{projectId:t.applicability.projectId,paths:e(t.applicability.paths),operations:e(t.applicability.operations),phases:e(t.applicability.phases),tasks:e(t.applicability.tasks)},evidence:t.evidence.map(r=>mu(r)).sort((r,n)=>JSON.stringify(r).localeCompare(JSON.stringify(n))),authority:t.authority,verification:t.verification===void 0?void 0:[...t.verification].sort((r,n)=>`${r.command}\0${r.expected??""}`.localeCompare(`${n.command}\0${n.expected??""}`)),feedback:t.feedback,payload:mu(t.payload),recommendedState:t.recommendedState}}function mu(t){return Array.isArray(t)?t.map(mu):!t||typeof t!="object"?t:Object.fromEntries(Object.entries(t).sort(([e],[r])=>e.localeCompare(r)).map(([e,r])=>[e,mu(r)]))}import{createHash as SH,randomUUID as jP}from"node:crypto";function gu(t,e){if(t=t.replaceAll("\\","/").replace(/^\.\//u,"").toLocaleLowerCase(),e=e.replaceAll("\\","/").replace(/^\.\//u,"").toLocaleLowerCase(),!/[?*]/u.test(t))return t===e||e.startsWith(t.endsWith("/")?t:`${t}/`);let r="^";for(let n=0;n<t.length;n+=1){let i=t[n],o=t[n+1];i==="*"&&o==="*"?t[n+2]==="/"?(r+="(?:.*/)?",n+=2):(r+=".*",n+=1):i==="*"?r+="[^/]*":i==="?"?r+="[^/]":r+=i.replace(/[\\^$.*+?()[\]{}|]/gu,"\\$&")}return new RegExp(`${r}$`,"u").test(e)}var _s=class{records=[];async list(e){return this.records.filter(r=>e===void 0||r.candidateId===e).map(yu)}async append(e){this.records.some(r=>r.applicationId===e.applicationId)||this.records.push({...e})}async setOutcome(e,r,n,i){let o=this.records.findIndex(c=>c.applicationId===e);if(o<0)return null;let a=this.records[o];if(!MP(a,n))return null;if(OP(a,r,i))return{changed:!1,record:yu(a)};let s={...a,outcome:r,outcomeRevision:(a.outcomeRevision??0)+1,outcomeEvents:[...a.outcomeEvents??[],TP(a,r,i)]};return this.records=this.records.map((c,l)=>l===o?s:c),{changed:!0,...a.outcome===void 0?{}:{previousOutcome:a.outcome},record:yu(s)}}async markAppliedEventDispatched(e,r=new Date().toISOString()){this.records=this.records.map(n=>n.applicationId===e&&n.appliedEventDispatchedAt===void 0?{...n,appliedEventDispatchedAt:r}:n)}async markOutcomeEventDispatched(e,r,n=new Date().toISOString()){this.records=this.records.map(i=>i.applicationId===e?{...i,outcomeEvents:(i.outcomeEvents??[]).map(o=>o.revision===r&&o.dispatchedAt===void 0?{...o,dispatchedAt:n}:o)}:i)}},vu=class{constructor(e){this.storage=e}storage;queue=Promise.resolve();async list(e){return(await this.read()).filter(n=>e===void 0||n.candidateId===e)}async append(e){await this.serialized(async()=>{let r=await this.read();r.some(n=>n.applicationId===e.applicationId)||await this.storage.write({version:5,records:[...r,e]})})}async setOutcome(e,r,n,i){return this.serialized(async()=>{let o=await this.read(),a=o.findIndex(l=>l.applicationId===e);if(a<0)return null;let s=o[a];if(!MP(s,n))return null;if(OP(s,r,i))return{changed:!1,record:yu(s)};let c={...s,outcome:r,outcomeRevision:(s.outcomeRevision??0)+1,outcomeEvents:[...s.outcomeEvents??[],TP(s,r,i)]};return await this.storage.write({version:5,records:o.map((l,d)=>d===a?c:l)}),{changed:!0,...s.outcome===void 0?{}:{previousOutcome:s.outcome},record:{...c}}})}async markAppliedEventDispatched(e,r=new Date().toISOString()){await this.serialized(async()=>{let n=await this.read(),i=n.find(o=>o.applicationId===e);i===void 0||i.appliedEventDispatchedAt!==void 0||await this.storage.write({version:5,records:n.map(o=>o.applicationId===e?{...o,appliedEventDispatchedAt:r}:o)})})}async markOutcomeEventDispatched(e,r,n=new Date().toISOString()){await this.serialized(async()=>{let i=await this.read(),o=i.find(a=>a.applicationId===e);o===void 0||!(o.outcomeEvents??[]).some(a=>a.revision===r&&a.dispatchedAt===void 0)||await this.storage.write({version:5,records:i.map(a=>a.applicationId===e?{...a,outcomeEvents:(a.outcomeEvents??[]).map(s=>s.revision===r&&s.dispatchedAt===void 0?{...s,dispatchedAt:n}:s)}:a)})})}async read(){let e=await this.storage.read();if(e===null)return[];if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Context application state must be an object");let r=e;if(r.version!==5||!Array.isArray(r.records))throw new Error("Context application state is incompatible");if(!r.records.every(_H))throw new Error("Context application state contains an invalid record");return r.records.map(n=>({...n}))}async serialized(e){let r=()=>this.storage.withLock?this.storage.withLock(e):e(),n=this.queue.then(r,r);return this.queue=n.then(()=>{},()=>{}),n}},js=class{applications;now;defaultCharBudget;delivered=new Map;constructor(e={}){this.applications=e.applications??new _s,this.now=e.now??(()=>new Date),this.defaultCharBudget=RP(e.defaultCharBudget,6e3)}async select(e,r){let n=e.map(Lo),i=`context:${jP()}`,o=r.sessionId??i,a=this.delivered.get(o)??new Map;this.delivered.set(o,a);let s=await this.applications.list(),c=new Map(n.map(y=>[Br(y.owner,y.id),y]));if(r.sessionId!==void 0)for(let y of s){let v=c.get(Br(y.owner,y.candidateId));y.sessionId===r.sessionId&&v!==void 0&&_P(y,v,r)&&a.set(Br(y.owner,y.candidateId),y.candidateDigest)}let l=new Map;for(let y of s){let v=Br(y.owner,y.candidateId);l.set(v,[...l.get(v)??[],y])}let d=[];for(let y of n){if(y.state==="superseded"||!PP(y,r))continue;let v=y.digest??CP(y);if(a.get(Br(y.owner,y.id))===v)continue;let b=(l.get(Br(y.owner,y.id))??[]).filter(S=>_P(S,y,r)),k=xP(y,r,b);d.push({candidate:y,whyApplied:k,authority:xH(y),score:this.score(y,r,b)})}d.sort((y,v)=>v.authority-y.authority||v.score-y.score||y.candidate.title.localeCompare(v.candidate.title)||y.candidate.id.localeCompare(v.candidate.id));let u=[],p=[],f=[],m=[],g=RP(r.charBudget,this.defaultCharBudget),h=['comet task "<project-root>" --task "<original task>"',...r.path===void 0?[]:['--path "<original path>"'],...r.phase===void 0?[]:['--phase "<original phase>"'],...r.operation===void 0?[]:['--operation "<original operation>"'],"--expand-context <id>"].join(" "),w=this.now().toISOString();for(let y of d){let{candidate:v,whyApplied:b}=y,k=v.memoryType==="core-profile"||(v.memoryType==="collaboration-policy"||v.memoryType==="project-policy")&&(v.state==="proven"||v.state==="enforced")&&Kg(v,r),S=v.digest??CP(v),E=(N,P=320)=>{let _=CH({candidate:v,candidateDigest:S,episodeId:i,request:r,whyApplied:b,delivery:N,appliedAt:w}),j=[...u],x=[...p],C=[...f];return N==="full"?v.memoryType==="core-profile"?j.push(v):x.push(v):C.push(PH(v,b,P)),EP(j,x,C,h,[...m,_],g>=1500).length>g?!1:(u.splice(0,u.length,...j),p.splice(0,p.length,...x),f.splice(0,f.length,...C),m.push(_),!0)};k&&E("full")||[320,160,80,32,0].some(N=>E("manifest",N))}for(let y of m)await this.applications.append(y),a.set(Br(y.owner,y.candidateId),y.candidateDigest);return{episodeId:i,coreMemory:u,activePolicies:p,manifest:f,applications:m,text:EP(u,p,f,h,m,g>=1500),expandHint:h}}expand(e,r,n){let i=wu(r),o=e.map(Lo).filter(s=>s.id===(i?.candidateId??r)&&(i===null||s.owner===i.owner)),a=o.length===1?o[0]:void 0;return a===void 0||a.state==="superseded"||!PP(a,n)?null:{id:Fo(a.owner,a.id),title:a.title,content:a.content??a.summary,whyApplied:xP(a,n),sources:a.sources,verification:a.verification}}async recordOutcome(e,r,n,i){if(i!==void 0&&!$P(i))throw new Error("Context outcome evidence requires a decision and a verification result");if(r==="used-successfully"&&i?.verification.success===!1)throw new Error("Successful use cannot reference failed verification");return this.applications.setOutcome(e,r,n,i)}async applicationHistory(e){return this.applications.list(e)}score(e,r,n){let i=e.priority??0;i+=e.state==="enforced"?500:e.state==="proven"?300:100,i+=e.authority==="explicit"||e.authority==="user"?160:0,i+=NH(e,r)*25;for(let o of n)i+=o.outcome==="used-successfully"?20:0,i-=o.outcome==="ignored"?2:0,i-=o.outcome==="corrected"||o.outcome==="contributed-to-failure"?80:0;return i}};function EP(t,e,r,n,i=[],o=!0){if(t.length===0&&e.length===0&&r.length===0)return"";let a=new Map(i.map(l=>[Br(l.owner,l.candidateId),l.applicationId])),s=l=>{let d=a.get(Br(l.owner,l.id));return d===void 0?"":` application_id="${Le(d)}"`},c=[];return t.length>0&&c.push(`<core_memory>
${t.map(l=>`<item id="${Le(Fo(l.owner,l.id))}"${s(l)}>${Le(l.content??l.summary)}</item>`).join(`
`)}
</core_memory>`),e.length>0&&c.push(`<active_policies>
${e.map(l=>RH(l,s(l))).join(`
`)}
</active_policies>`),r.length>0&&c.push(`<context_manifest>
${r.map(l=>`<item id="${Le(l.expansionId)}"${AH(l,i)} type="${Le(l.memoryType)}" state="${Le(l.state)}" source="${Le(l.sourceType)}"><title>${Le(l.title)}</title>${l.summary?`<summary>${Le(l.summary)}</summary>`:""}<why_applied>${Le(l.whyApplied)}</why_applied></item>`).join(`
`)}
</context_manifest>`),c.push(`<expand_hint>${IP(n)}</expand_hint>`),o&&i.some(l=>l.scope==="project"&&(l.memoryType==="project-model"||l.memoryType==="project-policy"))&&c.push("<knowledge_usage>Project knowledge is reference. Expand relevant candidates and check current sources before using them. Delivery is not adoption. Report used-successfully only for knowledge actually used and verified, with --application, --decision, --verification and --verification-result passed. Task completion alone is not evidence of benefit.</knowledge_usage>"),`<agent_context>
${c.join(`
`)}
</agent_context>`}function xP(t,e,r=[]){let n=e.language==="en",i=n?"; ":";",o=[...t.matchReasons??[]];return Kg(t,e)||o.push(n?"Candidate only: confirm applicability against current sources before use":"候选参考:使用前须结合当前源码确认适用范围"),(t.authority==="explicit"||t.authority==="user")&&o.push(n?"Explicitly set by the user":"用户明确设置"),t.selectors.projectId&&t.selectors.projectId===e.projectId&&o.push(n?"Current project matches":"当前项目匹配"),e.path&&Fg(t,e.path)&&o.push(n?"Current path matches":"当前路径匹配"),e.operation&&Bo(t.selectors.operations,e.operation)&&o.push(n?"Current operation matches":"当前操作匹配"),e.phase&&Bo(t.selectors.phases,e.phase)&&o.push(n?"Current phase matches":"当前阶段匹配"),Hg(t.selectors.tasks,e.task)&&o.push(n?"Current task matches":"当前任务匹配"),([...r].reverse().find(s=>s.outcome!==void 0)?.outcome??t.application?.lastOutcome)==="used-successfully"&&o.push(n?"Recently applied successfully":"最近应用成功"),o.length===0&&o.push(n?t.state==="trial"?"Relevant trial experience":"Relevant proven experience":t.state==="trial"?"相关试用经验":"相关已验证经验"),[...new Set(o)].join(i)}function Fo(t,e){return`${t}::${e}`}function wu(t){let e=t.indexOf("::");return e<=0||e>=t.length-2?null:{owner:t.slice(0,e),candidateId:t.slice(e+2)}}function bu(t,e){return(t??[]).flatMap(r=>{let n=wu(r);return n?.owner===e?[n.candidateId]:[]})}function PP(t,e){let r=t.scope==="project"&&(t.memoryType==="project-model"||t.memoryType==="project-policy");return Kg(t,e,r)}function Fg(t,e){return t.scope==="project"&&(t.memoryType==="project-model"||t.memoryType==="project-policy")?(t.selectors.paths??[]).some(r=>gu(r,e)):EH(t.selectors.paths,e)}function Kg(t,e,r=!1){let n=t.selectors;return!(n.projectId!==void 0&&n.projectId!==e.projectId||(n.paths?.length??0)>0&&(e.path===void 0?!r:!Fg(t,e.path))||(n.operations?.length??0)>0&&(e.operation===void 0?!r:!Bo(n.operations,e.operation))||(n.phases?.length??0)>0&&(e.phase===void 0?!r:!Bo(n.phases,e.phase))||(n.tasks?.length??0)>0&&!Hg(n.tasks,e.task))}function NH(t,e){let r=t.selectors;return[r.projectId!==void 0&&r.projectId===e.projectId,e.path!==void 0&&Fg(t,e.path),e.operation!==void 0&&Bo(r.operations,e.operation),e.phase!==void 0&&Bo(r.phases,e.phase),Hg(r.tasks,e.task)].filter(Boolean).length}function Hg(t,e){if(!t||t.length===0)return!1;let r=e.toLocaleLowerCase();return t.some(n=>r.includes(n.toLocaleLowerCase()))}function Bo(t,e){if(!t||t.length===0)return!1;let r=e.toLocaleLowerCase();return t.some(n=>n.toLocaleLowerCase()===r)}function EH(t,e){if(!t||t.length===0)return!1;let r=e.replaceAll("\\","/").toLocaleLowerCase();return t.some(n=>{let o=`^${n.replaceAll("\\","/").toLocaleLowerCase().split("*").map(a=>a.replace(/[.+?^${}()|[\]\\]/gu,"\\$&")).join(".*")}$`;return new RegExp(o,"u").test(r)})}function xH(t){return t.state==="trial"?0:t.memoryType==="project-policy"?4:t.memoryType==="project-model"?3:t.memoryType==="core-profile"||t.memoryType==="collaboration-policy"?2:1}function Br(t,e){return`${t}:${e}`}function PH(t,e,r){return{id:t.id,expansionId:Fo(t.owner,t.id),owner:t.owner,memoryType:t.memoryType,state:t.state,title:Bg(t.title,r===0?24:120),summary:Bg(t.summary,r),sourceType:t.sources[0]?.type??"inference",whyApplied:Bg(e,r===0?24:160)}}function CH(t){let{candidate:e,request:r}=t;return{applicationId:`application:${jP()}`,candidateId:e.id,candidateDigest:t.candidateDigest,owner:e.owner,scope:e.scope,...e.scope==="project"?{projectId:e.selectors.projectId??r.projectId}:{},memoryType:e.memoryType,candidateState:e.state,candidateTitle:e.title,candidateSummary:e.summary,episodeId:t.episodeId,...r.sessionId===void 0?{}:{sessionId:r.sessionId},task:r.task,...r.path===void 0?{}:{path:r.path},...r.operation===void 0?{}:{operation:r.operation},...r.phase===void 0?{}:{phase:r.phase},whyApplied:t.whyApplied,delivery:t.delivery,appliedAt:t.appliedAt,outcomeRevision:0}}function RH(t,e){let r=t.verification.map(n=>`<verification command="${Le(n.command)}"${n.expected===void 0?"":` expected="${Le(n.expected)}"`} />`).join("");return`<policy id="${Le(Fo(t.owner,t.id))}"${e}><content>${Le(t.content??t.summary)}</content>${r}</policy>`}function AH(t,e){let r=e.find(n=>n.owner===t.owner&&n.candidateId===t.id);return r===void 0?"":` application_id="${Le(r.applicationId)}"`}function Bg(t,e){return e<=0?"":t.length<=e?t:`${t.slice(0,Math.max(0,e-1))}…`}function CP(t){return SH("sha256").update(JSON.stringify({state:t.state,title:t.title,summary:t.summary,content:t.content,scope:t.scope,memoryType:t.memoryType,kind:t.kind,authority:t.authority,selectors:t.selectors,sources:t.sources,verification:t.verification,priority:t.priority,matchReasons:t.matchReasons,application:t.application})).digest("hex")}function Le(t){return IP(t).replaceAll('"',"&quot;").replaceAll("'","&apos;")}function IP(t){return t.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;")}function RP(t,e){return Number.isSafeInteger(t)&&Number(t)>0?Number(t):e}function _H(t){if(!t||typeof t!="object"||Array.isArray(t))return!1;let e=t,r=e.scope==="project"?typeof e.projectId=="string"&&e.projectId.length>0:e.projectId===void 0;return typeof e.applicationId=="string"&&typeof e.candidateId=="string"&&typeof e.candidateDigest=="string"&&typeof e.owner=="string"&&(e.scope==="user"||e.scope==="project")&&r&&typeof e.memoryType=="string"&&(e.candidateState===void 0||typeof e.candidateState=="string")&&(e.candidateTitle===void 0||typeof e.candidateTitle=="string")&&(e.candidateSummary===void 0||typeof e.candidateSummary=="string")&&typeof e.episodeId=="string"&&typeof e.task=="string"&&typeof e.whyApplied=="string"&&(e.delivery==="full"||e.delivery==="manifest")&&typeof e.appliedAt=="string"&&!Number.isNaN(Date.parse(e.appliedAt))&&(e.appliedEventDispatchedAt===void 0||typeof e.appliedEventDispatchedAt=="string"&&!Number.isNaN(Date.parse(e.appliedEventDispatchedAt)))&&(e.sessionId===void 0||typeof e.sessionId=="string")&&(e.path===void 0||typeof e.path=="string")&&(e.operation===void 0||typeof e.operation=="string")&&(e.phase===void 0||typeof e.phase=="string")&&(e.outcome===void 0||["used-successfully","ignored","overridden","corrected","contributed-to-failure"].includes(String(e.outcome)))&&(e.outcomeRevision===void 0||Number.isSafeInteger(e.outcomeRevision)&&Number(e.outcomeRevision)>=0)&&(e.outcomeEvents===void 0||Array.isArray(e.outcomeEvents)&&e.outcomeEvents.every(jH))}function yu(t){return{...t,...t.outcomeEvents===void 0?{}:{outcomeEvents:t.outcomeEvents.map(e=>({...e,...e.evidence===void 0?{}:{evidence:{...e.evidence,verification:{...e.evidence.verification}}}}))}}}function TP(t,e,r){return{revision:(t.outcomeRevision??0)+1,status:e,...t.outcome===void 0?{}:{previousStatus:t.outcome},occurredAt:new Date().toISOString(),...r===void 0?{}:{evidence:{...r,verification:{...r.verification}}}}}function jH(t){if(!t||typeof t!="object"||Array.isArray(t))return!1;let e=t;return Number.isSafeInteger(e.revision)&&Number(e.revision)>=1&&AP(e.status)&&(e.evidence===void 0||$P(e.evidence))&&(e.previousStatus===void 0||AP(e.previousStatus))&&typeof e.occurredAt=="string"&&!Number.isNaN(Date.parse(e.occurredAt))&&(e.dispatchedAt===void 0||typeof e.dispatchedAt=="string"&&!Number.isNaN(Date.parse(e.dispatchedAt)))}function $P(t){if(!t||typeof t!="object"||Array.isArray(t))return!1;let e=t,r=e.verification;return typeof e.decision=="string"&&e.decision.trim().length>0&&e.decision.length<=4e3&&r!==null&&typeof r=="object"&&typeof r.command=="string"&&r.command.trim().length>0&&r.command.length<=2e3&&typeof r.success=="boolean"}function OP(t,e,r){if(t.outcome!==e)return!1;if(r===void 0)return!0;let n=t.outcomeEvents?.at(-1)?.evidence;return n?.decision===r.decision&&n.verification.command===r.verification.command&&n.verification.success===r.verification.success}function AP(t){return["used-successfully","ignored","overridden","corrected","contributed-to-failure"].includes(String(t))}function _P(t,e,r){return t.owner===e.owner&&t.candidateId===e.id&&t.scope===e.scope&&(e.scope==="user"||t.projectId===r.projectId)}function MP(t,e){return e===void 0||t.scope==="user"||t.projectId===e}function LP(t){return t.kind==="constraint"&&t.state==="enforced"&&t.verification.length>0?{kind:"verification",commands:[...t.verification]}:t.kind==="procedure"&&t.state==="proven"&&(t.steps?.length??0)>=3&&(t.applicationCount??0)>=2&&(t.successCount??0)>=2&&(t.failureCount??0)===0?{kind:"skill-candidate",reason:"stable-multi-step-procedure"}:{kind:"context"}}function ku(t){return typeof t=="string"?{scope:t}:t}function IH(t,e,r){return`${t}:${e}:${r??""}`}function Is(t){return t===void 0?t:JSON.parse(JSON.stringify(t))}var Wg=class{values=new Map;async open(e,r,n){let i=IH(e,r,n);return{read:async()=>this.values.has(i)?Is(this.values.get(i)):null,write:async o=>{this.values.set(i,Is(o))}}}};var Su=class{file;constructor(e){this.file=e}async read(){let e=await this.file.read();if(e===null||e.trim().length===0)return{plugins:[]};let r;try{r=JSON.parse(e)}catch(n){throw new Error(`Plugin state is invalid JSON: ${n.message}`,{cause:n})}return $H(r)}async write(e){await this.file.write(`${JSON.stringify(DP(e),null,2)}
`)}async update(e){await this.file.withLock(async()=>{let r=await this.read(),n=e(r);n!==r&&await this.write(n)})}},Nu=class{cometVersion;store;storage;config;descriptors;now;replayPendingLearningOnContext;learningByScope;learningCoordinators;active=new Map;diagnosticEntries=[];constructor(e){let r=new Map;for(let l of e.descriptors){if(r.has(l.id))throw new Error(`Duplicate plugin descriptor: ${l.id}`);r.set(l.id,l)}this.cometVersion=e.cometVersion,this.store=e.store,this.storage=e.storage??new Wg,this.config=Object.fromEntries(Object.entries(e.config??{}).map(([l,d])=>[l,Is(d)])),this.descriptors=r,this.now=e.now??(()=>new Date),this.replayPendingLearningOnContext=e.replayPendingLearningOnContext??!0;let n=e.journal??new ki(new uu),i=e.journals?.user??n,o=e.journals?.project??n,a=l=>new pu({journal:l,learners:d=>this.learningAdapters(d),schedule:e.scheduleLearning??(d=>{d()}),onDiagnostic:d=>{let u=d.split(" reflection",1)[0]||"comet.agent-learning";this.recordExecutionFailure(u,"event",new Error(d))}}),s=a(i),c=i===o?s:a(o);this.learningByScope={user:s,project:c},this.learningCoordinators=s===c?[s]:[s,c]}async reconcileFirstParty(){await this.store.update(e=>{let r=new Map(e.plugins.map(i=>[i.id,i])),n=!1;for(let i of this.descriptors.values()){if(i.kind!=="first-party")continue;let o=r.get(i.id);if(o===void 0){r.set(i.id,this.record(i.id,i.version,"enabled")),n=!0;continue}o.version!==i.version&&(r.set(i.id,{...o,version:i.version,updatedAt:this.timestamp()}),n=!0),o.status==="uninstalled"&&!o.explicitRemoval&&(r.set(i.id,{...o,status:"enabled",updatedAt:this.timestamp()}),n=!0)}return n?{plugins:[...r.values()]}:e})}async list(e){let r=await this.ensureState();return[...new Set([...this.descriptors.keys(),...r.plugins.map(i=>i.id)])].map(i=>this.view(i,r.plugins.find(o=>o.id===i),e)).filter(i=>i!==null).sort((i,o)=>i.id.localeCompare(o.id))}async get(e){let r=await this.ensureState();return this.view(e,r.plugins.find(n=>n.id===e))}async install(e,r="user"){let n=this.requireDescriptor(e);this.assertUserInitiatedThirdParty(n,r),this.assertCompatible(n),await this.setRecord(n,"enabled",!1)}async enable(e,r){let n=this.requireDescriptor(e);if(this.assertCompatible(n),r?.scope==="project"&&r.projectId!==void 0){await this.setProjectPause(n,r.projectId,!1);return}await this.setRecord(n,"enabled",!1,!0)}async disable(e,r){let n=this.requireDescriptor(e);if(r?.scope==="project"&&r.projectId!==void 0){await this.setProjectPause(n,r.projectId,!0),await this.disposeActive(e,r.projectId);return}await this.setRecord(n,"disabled",!1,!0),await this.disposeActive(e)}async uninstall(e){let r=this.requireDescriptor(e);await this.setRecord(r,"uninstalled",!0),await this.disposeActive(e)}async update(e,r="user"){let n=this.requireDescriptor(e);this.assertUserInitiatedThirdParty(n,r),this.assertCompatible(n),await this.store.update(i=>{let o=i.plugins.find(a=>a.id===e);if(o===void 0||o.status==="uninstalled")throw new ir(`Plugin is not installed: ${e}`,"missing");return{plugins:i.plugins.map(a=>a.id===e?{...a,version:n.version,updatedAt:this.timestamp()}:a)}}),await this.disposeActive(e)}getConfig(e){return this.requireDescriptor(e),Ts(this.config[e]??{})}async configure(e,r){this.requireDescriptor(e),this.config[e]=Is(r),await this.disposeActive(e)}async invoke(e,r,n,i="user",o={}){let a=this.requireDescriptor(e),s=ku(i);await this.loadScope(s);let c=this.active.get(this.activeKey(e,s));if(c===void 0||c.module.invoke===void 0)throw this.diagnosticEntries.push({pluginId:a.id,code:"missing",phase:"invoke",message:`Plugin capability is unavailable: ${e}/${r}`}),new ir(`Plugin capability is unavailable: ${e}/${r}`,"missing");try{return await c.module.invoke(r,Is(n))}catch(l){if(this.recordExecutionFailure(a.id,"invoke",l),o.throwOnError===!0)throw l;return null}}async dispatch(e){let r;try{r=Rs(e)}catch(n){let i=TH(e),o=n instanceof Error?n.message:String(n);throw this.diagnosticEntries.push({pluginId:"comet.agent-learning",code:"execution-failed",phase:"event",source:i,message:`Invalid Agent Experience Event from ${i}: ${o}`}),n}await this.replayPendingLearning(),await this.learningByScope[r.scope].capture(r)}async replayLearning(){await this.replayPendingLearning()}async learningAdapters(e){let r={scope:e.scope,projectId:e.projectId};return await this.loadScope(r),[...this.active.values()].filter(n=>n.scope===e.scope&&n.projectId===e.projectId&&(n.module.reflect!==void 0||n.module.onEvent!==void 0)&&(n.module.events===void 0||n.module.events.includes(e.type))).map(n=>({owner:n.descriptor.id,supports:()=>!0,reflect:async i=>{if(n.module.reflect!==void 0)return n.module.reflect(i);if(i.evidenceOffset===0)for(let o of i.events)await n.module.onEvent?.(OH(o));return[]},consolidate:async i=>{if(n.module.consolidate===void 0)throw new Error(`Plugin ${n.descriptor.id} cannot consolidate Learning Deltas`);await n.module.consolidate(i)}}))}async collectContext(e,r){this.replayPendingLearningOnContext&&await this.replayPendingLearning();let n=ku(r);await this.loadScope(n);let i=[];for(let o of this.active.values())if(!(o.scope!==n.scope||o.projectId!==n.projectId||o.module.provideContext===void 0))try{let a=await o.module.provideContext({...e});if(a===null)continue;for(let s of Array.isArray(a)?a:[a])i.push(Lo({...s,owner:o.descriptor.id}))}catch(a){this.recordExecutionFailure(o.descriptor.id,"context",a)}return i}async replayPendingLearning(){for(let e of this.learningCoordinators)await e.replayPending()}async resolveContext(e,r,n,i){let o=ku(n);await this.loadScope(o);let a=[];for(let s of this.active.values())if(!(s.scope!==o.scope||s.projectId!==o.projectId||i!==void 0&&s.descriptor.id!==i||s.module.resolveContext===void 0))try{let c=await s.module.resolveContext(e,{...r});if(c===null)continue;a.push(Lo({...c,owner:s.descriptor.id}))}catch(c){this.recordExecutionFailure(s.descriptor.id,"context",c)}return a}async dashboardPages(e){let r=ku(e);await this.loadScope(r);let n=[];for(let i of this.active.values())if(!(i.scope!==r.scope||i.projectId!==r.projectId))try{let o=i.module.dashboard;if(o===void 0)continue;n.push({pluginId:i.descriptor.id,...o})}catch(o){this.recordExecutionFailure(i.descriptor.id,"dashboard",o)}return n}diagnostics(){return this.diagnosticEntries.map(e=>({...e}))}async loadScope(e){let r=await this.ensureState();for(let n of r.plugins){if(n.status!=="enabled")continue;let i=this.descriptors.get(n.id);if(i===void 0){this.diagnosticEntries.push({pluginId:n.id,code:"missing",phase:"load",message:`Plugin ${n.id} is no longer available`});continue}if(!i.scopes.includes(e.scope)||e.projectId!==void 0&&n.disabledProjects.includes(e.projectId))continue;let o=this.activeKey(n.id,e);if(!this.active.has(o)){if(!this.isCompatible(i)){this.diagnosticEntries.push({pluginId:i.id,code:"incompatible",phase:"load",message:`Plugin ${i.id} is incompatible with Comet ${this.cometVersion}`});continue}try{let a=await i.create({pluginId:i.id,cometVersion:this.cometVersion,scope:e.scope,projectId:e.projectId,config:Ts(this.config[i.id]??{}),storage:await this.storage.open(i.id,e.scope,e.projectId),reportDiagnostic:s=>this.diagnosticEntries.push({pluginId:i.id,...s})});this.active.set(o,{descriptor:i,module:a,scope:e.scope,projectId:e.projectId})}catch(a){this.recordExecutionFailure(i.id,"load",a)}}}}async setRecord(e,r,n,i=!1){await this.store.update(o=>{let a=o.plugins.find(l=>l.id===e.id);if(i&&(a===void 0||a.status==="uninstalled"))throw new ir(`Plugin is not installed: ${e.id}`,"missing");let s=this.record(e.id,e.version,r,n,a?.disabledProjects);return{plugins:a!==void 0?o.plugins.map(l=>l.id===e.id?s:l):[...o.plugins,s]}})}async setProjectPause(e,r,n){await this.store.update(i=>{let o=i.plugins.find(l=>l.id===e.id);if(o===void 0||o.status==="uninstalled")throw new ir(`Plugin is not installed: ${e.id}`,"missing");let a=o,s=new Set(a.disabledProjects);n?s.add(r):s.delete(r);let c={...a,version:e.version,disabledProjects:[...s].sort(),updatedAt:this.timestamp()};return{plugins:o?i.plugins.map(l=>l.id===e.id?c:l):[...i.plugins,c]}})}record(e,r,n,i=!1,o=[]){return{id:e,version:r,status:n,explicitRemoval:i,disabledProjects:[...o],updatedAt:this.timestamp()}}view(e,r,n){let i=this.descriptors.get(e);return i===void 0&&r===void 0||n!==void 0&&i!==void 0&&!i.scopes.includes(n)?null:{...r??this.record(e,i?.version??"unknown","uninstalled",!1),kind:i?.kind??null,scopes:i?.scopes??[]}}requireDescriptor(e){let r=this.descriptors.get(e);if(r===void 0)throw new ir(`Unknown plugin: ${e}`,"missing");return r}async requireInstalled(e){let n=(await this.ensureState()).plugins.find(i=>i.id===e.id);if(n===void 0||n.status==="uninstalled")throw new ir(`Plugin is not installed: ${e.id}`,"missing");return n}assertCompatible(e){if(!this.isCompatible(e))throw this.diagnosticEntries.push({pluginId:e.id,code:"incompatible",phase:"load",message:`Plugin ${e.id} is incompatible with Comet ${this.cometVersion}`}),new ir(`Plugin is incompatible: ${e.id}`,"incompatible")}assertUserInitiatedThirdParty(e,r){if(e.kind==="third-party"&&r!=="user")throw new ir(`Installing or updating third-party plugin ${e.id} requires a user action`,"user-action-required")}isCompatible(e){try{return e.compatible(this.cometVersion)}catch{return!1}}activeKey(e,r){return`${e}:${r.scope}:${r.projectId??""}`}async disposeActive(e,r){let n=[...this.active.entries()].filter(([i,o])=>i.startsWith(`${e}:`)&&(r===void 0||o.projectId===r));for(let[i,o]of n){this.active.delete(i);try{await o.module.dispose?.()}catch(a){this.recordExecutionFailure(e,"load",a)}}}recordExecutionFailure(e,r,n){let i=n instanceof Error?n.message:String(n);this.diagnosticEntries.push({pluginId:e,code:"execution-failed",phase:r,message:i})}async ensureState(){return DP(await this.store.read())}timestamp(){return this.now().toISOString()}},ir=class extends Error{constructor(r,n){super(r);this.code=n;this.name="PluginRuntimeError"}code};function TH(t){if(t===null||typeof t!="object"||Array.isArray(t))return"unknown";let e=t.source;if(e===null||typeof e!="object"||Array.isArray(e))return"unknown";let r=e.name;return typeof r=="string"&&r.trim()?r.trim().slice(0,128):"unknown"}function DP(t){return{plugins:t.plugins.map(e=>({...e,disabledProjects:[...e.disabledProjects??[]]}))}}function $H(t){if(t===null||typeof t!="object"||Array.isArray(t))throw new Error("Plugin state must be an object");let e=t.plugins;if(!Array.isArray(e))throw new Error("Plugin state plugins must be an array");return{plugins:e.map((r,n)=>{if(r===null||typeof r!="object"||Array.isArray(r))throw new Error(`Plugin state entry ${n} must be an object`);let i=r;if(typeof i.id!="string"||typeof i.version!="string"||i.status!=="enabled"&&i.status!=="disabled"&&i.status!=="uninstalled"||typeof i.explicitRemoval!="boolean"||typeof i.updatedAt!="string")throw new Error(`Plugin state entry ${n} is invalid`);return{id:i.id,version:i.version,status:i.status,explicitRemoval:i.explicitRemoval,disabledProjects:Array.isArray(i.disabledProjects)?i.disabledProjects.filter(o=>typeof o=="string"):[],updatedAt:i.updatedAt}})}}function OH(t){return Ts(t)}function Ts(t){if(Array.isArray(t))return Object.freeze(t.map(e=>Ts(e)));if(t!==null&&typeof t=="object"){let e={};for(let[r,n]of Object.entries(t))e[r]=Ts(n);return Object.freeze(e)}return t}import e2 from"node:os";import pr from"node:path";import{createHash as lA}from"node:crypto";import{createHash as pC,randomUUID as rW}from"node:crypto";function Si(t){return t==="user-fact"||t==="user-preference"||t==="collaboration-habit"||t==="project-convention"}import{createHash as MH,randomUUID as LH}from"node:crypto";import{execFile as DH}from"node:child_process";import{constants as Vg,promises as yt}from"node:fs";import{promisify as BH}from"node:util";import De from"node:path";var FH=BH(DH),KH=3e4,HH=20;function zg(t,e){if(t==="global")return"profile.md";if(e===void 0||!/^[A-Za-z0-9][A-Za-z0-9._-]*$/u.test(e))throw new Error("Project memory requires a safe project key");return`projects/${e}.md`}function WH(t){let e=t.trim().replace(/[^A-Za-z0-9._-]+/gu,"-");if(!/^[A-Za-z0-9][A-Za-z0-9._-]*$/u.test(e))throw new Error("Project memory name is invalid");return`projects/${e}.md`}function or(t){return MH("sha256").update(t,"utf8").digest("hex")}function BP(){return{version:3,records:[],history:{},evidence:{},observations:[],conflicts:[],tombstones:[],settings:{learningEnabled:!0,retrievalEnabled:!0,pausedProjects:[],pausedLearningProjects:[],pausedRetrievalProjects:[]},files:{},projectFiles:{},appliedMutationIds:[],applicationOutcomes:{},feedbackState:{},pendingFileProjections:{},learning:{lastCheck:"not-run",observedCount:0,validObservationCount:0},learningByProject:{}}}var Eu=class{root;git;lockTimeoutMs;lockRetryMs;projectKey;projectName;constructor(e,r={}){this.root=De.resolve(e),this.git=r.git,this.lockTimeoutMs=r.lockTimeoutMs??KH,this.lockRetryMs=r.lockRetryMs??HH,this.projectKey=r.projectKey,this.projectName=r.projectName}projectFileBinding(){if(!(this.projectKey===void 0||this.projectName===void 0))return{projectKey:this.projectKey,projectName:this.projectName,path:WH(this.projectName)}}async readText(e){let r=this.resolve(e);try{return await yt.readFile(r,"utf8")}catch(n){if(n.code==="ENOENT")return null;throw n}}async writeText(e,r){let n=this.resolve(e),i=De.dirname(n);await yt.mkdir(i,{recursive:!0});let o=De.join(i,`.${De.basename(n)}.${LH()}.tmp`),a=await yt.open(o,Vg.O_CREAT|Vg.O_EXCL|Vg.O_WRONLY);try{await a.writeFile(r,"utf8"),await a.sync()}finally{await a.close()}await yt.rename(o,n)}async readState(){let e=await this.readText(".comet/runtime/memory-state.json");if(e===null||e.trim().length===0)return BP();let r;try{r=JSON.parse(e)}catch(n){throw new Error(`Memory runtime state is invalid JSON: ${n.message}`,{cause:n})}return qH(r)}async writeState(e){await this.writeText(".comet/runtime/memory-state.json",`${JSON.stringify(e,null,2)}
`)}async withLock(e){let r=De.join(this.root,".comet","runtime");await yt.mkdir(r,{recursive:!0});let n=De.join(r,".memory.lock");return Ha(n,e,{timeoutMs:this.lockTimeoutMs,retryMs:this.lockRetryMs})}async sync(){return this.git===void 0?{status:"local-only",retryable:!1,message:"No memory Git remote is configured"}:this.withLock(()=>this.git.sync())}async remote(){return this.git?.remote?this.git.remote():null}async configureRemote(e){if(!this.git?.configureRemote)throw new Error("Memory Git sync is unavailable");await this.withLock(()=>this.git.configureRemote(e))}resolve(e){let r=e.replaceAll("\\","/");if(r.length===0||De.posix.isAbsolute(r)||r.split("/").some(o=>o===".."||o.length===0))throw new Error(`Memory path must stay inside the repository: ${e}`);let n=De.resolve(this.root,...r.split("/")),i=De.relative(this.root,n);if(i===".."||i.startsWith(`..${De.sep}`)||De.isAbsolute(i))throw new Error(`Memory path must stay inside the repository: ${e}`);return n}},xu=class{root;remoteName;commitMessage;runCommand;constructor(e,r={}){this.root=De.resolve(e),this.remoteName=r.remoteName??"origin",this.commitMessage=r.commitMessage??"chore(memory): sync personal memory",this.runCommand=r.run??(async n=>{let i=await FH("git",[...n],{cwd:this.root,env:Wm(),windowsHide:!0,maxBuffer:1048576});return{stdout:i.stdout,stderr:i.stderr}})}async sync(){await yt.mkdir(this.root,{recursive:!0});try{await this.ensureDedicatedRepository()}catch(e){return qg(e,!1)}try{await this.runCommand(["remote","get-url",this.remoteName])}catch{return{status:"local-only",retryable:!1,message:"No memory Git remote is configured"}}try{if(await this.hasConflicts())return qg(new Error("Resolve the memory repository merge conflicts before retrying sync."),!0);let e=(await this.runCommand(["symbolic-ref","--short","HEAD"])).stdout.trim(),r=(await this.runCommand(["ls-remote","--symref",this.remoteName,"HEAD","refs/heads/*"])).stdout,n=[...r.matchAll(/^[0-9a-f]+\s+refs\/heads\/(.+)$/gmu)].map(d=>d[1]),i=/^ref: refs\/heads\/(.+)\s+HEAD$/mu.exec(r)?.[1],o;try{let d=(await this.runCommand(["rev-parse","--abbrev-ref","--symbolic-full-name","@{upstream}"])).stdout.trim();d.startsWith(`${this.remoteName}/`)&&(o=d.slice(this.remoteName.length+1))}catch{}let a=o??(i&&n.includes(i)?i:n.includes(e)?e:n.length===1?n[0]:n.length===0?e:void 0);if(!a)throw new Error("Memory remote has multiple branches and no default branch. Configure an upstream before syncing.");let s=`refs/remotes/${this.remoteName}/${a}`;n.includes(a)&&await this.runCommand(["fetch",this.remoteName,`refs/heads/${a}:${s}`]);let c=[];for(let d of["profile.md",".comet/runtime/memory-state.json"])try{await yt.access(De.join(this.root,d)),c.push(d)}catch{}try{await yt.access(De.join(this.root,"projects")),c.push("projects")}catch{}if(c.length===0&&n.length===0)return{status:"local-only",retryable:!1,message:"No memory files exist yet"};let l=!1;if(c.length>0&&(await this.runCommand(["add","--",...c]),l=(await this.runCommand(["status","--porcelain","--",...c])).stdout.trim().length>0,l&&await this.runCommand(["commit","--only","-m",this.commitMessage,"--",...c])),n.includes(a)){let d=!1;try{await this.runCommand(["rev-parse","--verify","HEAD"]),d=!0}catch{}if(!d)await this.runCommand(["merge","--ff-only",s]);else{let u=!1;try{await this.runCommand(["merge-base","HEAD",s]),u=!0}catch{}await this.runCommand(u?["rebase",s]:["merge","--allow-unrelated-histories","--no-edit",s])}}return await this.runCommand(["push","--set-upstream",this.remoteName,`HEAD:refs/heads/${a}`]),{status:"synced",retryable:!1,...l?{}:{message:"Memory repository is up to date"}}}catch(e){return qg(e,await this.hasConflicts())}}async hasConflicts(){try{return(await this.runCommand(["diff","--name-only","--diff-filter=U"])).stdout.trim().length>0}catch{return!1}}async remote(){if(await yt.mkdir(this.root,{recursive:!0}),!await this.isDedicatedRepository())return null;try{return(await this.runCommand(["remote","get-url",this.remoteName])).stdout.trim()||null}catch{return null}}async configureRemote(e){let r=e.trim();if(!r)throw new Error("Memory Git remote must not be empty");await yt.mkdir(this.root,{recursive:!0}),await this.ensureDedicatedRepository();try{await this.runCommand(["remote","get-url",this.remoteName]),await this.runCommand(["remote","set-url",this.remoteName,r])}catch{await this.runCommand(["remote","add",this.remoteName,r])}}async isDedicatedRepository(){try{let e=await this.runCommand(["rev-parse","--show-toplevel"]),[r,n]=await Promise.all([yt.realpath(e.stdout.trim()),yt.realpath(this.root)]);return De.relative(r,n)===""}catch{return!1}}async ensureDedicatedRepository(){if(!await this.isDedicatedRepository()&&(await this.runCommand(["init"]),!await this.isDedicatedRepository()))throw new Error("Personal memory must use its own Git repository root")}};function qg(t,e){return{status:e?"conflict":"failed",retryable:!0,message:VH(t)}}function VH(t){return t instanceof Error?t.message:String(t)}function qH(t){if(t===null||typeof t!="object"||Array.isArray(t))throw new Error("Memory runtime state must be an object");let e=t;if(e.version!==3)return BP();if(!Array.isArray(e.records))throw new Error("Memory runtime state version or records are invalid");return{version:3,records:e.records,history:e.history??{},evidence:e.evidence??{},observations:e.observations??[],conflicts:e.conflicts??[],tombstones:e.tombstones??[],settings:{learningEnabled:e.settings?.learningEnabled??!0,retrievalEnabled:e.settings?.retrievalEnabled??!0,pausedProjects:[...e.settings?.pausedProjects??[]],pausedLearningProjects:[...e.settings?.pausedLearningProjects??e.settings?.pausedProjects??[]],pausedRetrievalProjects:[...e.settings?.pausedRetrievalProjects??e.settings?.pausedProjects??[]]},files:e.files??{},projectFiles:e.projectFiles??{},appliedMutationIds:[...e.appliedMutationIds??[]],applicationOutcomes:{...e.applicationOutcomes??{}},feedbackState:{...e.feedbackState??{}},pendingFileProjections:{...e.pendingFileProjections??{}},learningByProject:{...e.learningByProject??{}},learning:{...e.learning??{},lastCheck:e.learning?.lastCheck??"not-run",observedCount:e.learning?.observedCount??0,validObservationCount:e.learning?.validObservationCount??0}}}var FP="comet.memory.review.v1",KP="comet.memory.actions.v1",UP={maxEvidenceAgeMs:4320*60*60*1e3},zH=[{pattern:/-----BEGIN [A-Z0-9 ]*PRIVATE KEY-----/iu,category:"private key material"},{pattern:/\b(?:api[_ -]?key|access[_ -]?token|password|passwd|secret|authorization)\s*[:=]\s*\S+/iu,category:"credential assignment"},{pattern:/\b(?:sk|rk)-[a-z0-9]{16,}\b/iu,category:"API key"},{pattern:/\b(?:ghp|gho|github_pat|xox[baprs]|AIza)[-_][a-z0-9_-]{8,}\b/iu,category:"access token"},{pattern:/\bBearer\s+[A-Za-z0-9._~+/=-]{12,}\b/iu,category:"Bearer token"},{pattern:/\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\b/u,category:"JSON Web Token"},{pattern:/\b\d{3}-\d{2}-\d{4}\b/u,category:"US social security number"},{pattern:/\b(?<!\d{4}-)(?<!\d{4}-\d{2}-)\+?(?!\d{4}-\d{2}-\d{2}\b)\d[\d ()-]{7,}\d\b/u,category:"phone number"},{pattern:/\b[\w.+-]+@[\w.-]+\.[A-Za-z]{2,}\b/u,category:"email address"},{pattern:/\b(?:diff --git|git\s+(?:diff|log)|@@\s+-\d|\+\+\+\s+[ab]\/|---\s+[ab]\/)/imu,category:"diff or git output"},{pattern:/\b(?:stack trace|traceback|stderr|stdout|debug log|npm warn|npm ERR!|error log)\b/iu,category:"log output"},{pattern:/(?:ignore|disregard|override|forget|do not follow)\s+(?:all\s+)?(?:my\s+|the\s+)?(?:prior|previous|earlier|above|following|these)?\s*(?:instructions?|rules?|policies?|system|prompt)/iu,category:"prompt injection"},{pattern:/(?:modify|change|edit|rewrite|disable|reveal)\s+(?:the\s+)?(?:skill|agent instructions?|project rules?|project policy files?|system prompt|guard|policy)/iu,category:"prompt injection"},{pattern:/(?:忽略|无视|跳过|不遵循|不要遵循).*(?:之前|先前|上面|以上|前面)?.*(?:指令|规则|提示|政策|系统)/u,category:"prompt injection"},{pattern:/(?:修改|更改|编辑|重写|禁用|绕过|泄露|显示).*(?:技能|skill|agent|代理|项目规范文件|项目规则|系统提示|守卫|策略|规则)/iu,category:"prompt injection"},{pattern:/<\/?(?:script|iframe|object|embed|style|svg)\b|(?:onerror|onload|onclick)\s*=|data:text\/html/iu,category:"HTML injection"},{pattern:/javascript:/iu,category:"JavaScript URL"}];function Au(t,e={}){let r=Ni(t,"review packet");if(r.schema!==FP)throw new Error(`Unsupported memory review packet schema: ${String(r.schema)}`);let n=YP(r.language,"review packet language"),i=fe(r.projectIdentity,"projectIdentity"),o=$s(r.projectKey);if(o!==void 0&&i===void 0)throw new Error("Review packet project key requires a stable project identity");let a=Be(r.workflow,"workflow"),s=Be(r.changeId,"changeId"),c=GP(r.createdAt,"createdAt"),l=Be(r.checkpoint,"checkpoint"),d=fe(r.category,"category");d!==void 0&&r.explicitRequest===void 0&&vt(d,n,"category");let u=JH(r.budget,e),p=Os(r.userEvidence,"userEvidence",8,!0),f=GH(r.explicitRequest,n),g=Ru(r.evidence,"evidence").map((b,k)=>{let S=Ni(b,`evidence[${k}]`),E=Be(S.key,`evidence[${k}].key`),N=Pu(S.scope,`evidence[${k}].scope`),P=$s(S.projectKey),_=fe(S.projectIdentity,`evidence[${k}].projectIdentity`);if(P!==void 0&&_===void 0)throw new Error(`evidence[${k}] project key requires a stable project identity`);if(N==="project"&&P===void 0)throw new Error(`evidence[${k}] project evidence requires a project key`);if(N==="global"&&_===void 0)throw new Error(`evidence[${k}] global evidence requires a project identity`);let j=JP(S.candidateKey,`evidence[${k}].candidateKey`),x=Be(S.changeId,`evidence[${k}].changeId`);if(typeof S.success!="boolean")throw new Error(`evidence[${k}].success is invalid`);let C=GP(S.observedAt,`evidence[${k}].observedAt`),L=Date.parse(c)-Date.parse(C);if(L<0||L>UP.maxEvidenceAgeMs)throw new Error(`evidence[${k}] is outside the freshness window`);let I=fe(S.text,`evidence[${k}].text`);I!==void 0&&wt(I,`evidence[${k}].text`);let B=fe(S.category,`evidence[${k}].category`),re=Cu(S.memoryClass,`evidence[${k}].memoryClass`);B!==void 0&&r.explicitRequest===void 0&&vt(B,n,`evidence[${k}].category`);let J=YH(S,n,k);return{key:E,scope:N,..._===void 0?{}:{projectIdentity:_},...P===void 0?{}:{projectKey:P},...j===void 0?{}:{candidateKey:j},changeId:x,success:S.success,observedAt:C,...I===void 0?{}:{text:I},...B===void 0?{}:{category:B},...re===void 0?{}:{memoryClass:re},...J}});if(new Set(g.map(b=>b.key)).size!==g.length)throw new Error("Review packet evidence keys must be unique");let y=Ru(r.memories,"memories").map((b,k)=>{let S=Ni(b,`memories[${k}]`),E=Be(S.id,`memories[${k}].id`),N=Pu(S.scope,`memories[${k}].scope`),P=fe(S.projectIdentity,`memories[${k}].projectIdentity`),_=$s(S.projectKey);if(N==="project"&&_===void 0)throw new Error(`memories[${k}] project memory requires a project key`);if(N==="global"&&_!==void 0)throw new Error(`memories[${k}] global memory must not have a project key`);let j=Be(S.category,`memories[${k}].category`),x=Be(S.text,`memories[${k}].text`),C=fe(S.title,`memories[${k}].title`),L=fe(S.reason,`memories[${k}].reason`),I=Cu(S.memoryClass,`memories[${k}].memoryClass`);wt(j,`memories[${k}].category`),wt(x,`memories[${k}].text`),C!==void 0&&wt(C,`memories[${k}].title`),L!==void 0&&wt(L,`memories[${k}].reason`);let B=S.kind==="explicit"||S.kind==="inferred"?S.kind:Jg("kind"),re=S.memoryType==="core-profile"||S.memoryType==="collaboration-policy"||S.memoryType==="personal-episode"?S.memoryType:Jg("memoryType"),J=S.state==="trial"||S.state==="proven"||S.state==="superseded"?S.state:Jg("state");return{id:E,scope:N,...P===void 0?{}:{projectIdentity:P},..._===void 0?{}:{projectKey:_},category:j,text:x,...C===void 0?{}:{title:C},...L===void 0?{}:{reason:L},...I===void 0?{}:{memoryClass:I},kind:B,memoryType:re,state:J}});if(new Set(y.map(b=>b.id)).size!==y.length)throw new Error("Review packet memory IDs must be unique");return{schema:FP,language:n,...i===void 0?{}:{projectIdentity:i},...o===void 0?{}:{projectKey:o},workflow:a,changeId:s,createdAt:c,checkpoint:l,...d===void 0?{}:{category:d},userEvidence:p,...f===void 0?{}:{explicitRequest:f},evidence:g,memories:y,budget:u}}function GH(t,e){if(t===void 0)return;let r=Ni(t,"explicitRequest"),n=r.action;if(n!=="remember"&&n!=="correct"&&n!=="forget")throw new Error("explicitRequest.action is invalid");let i=fe(r.targetId,"explicitRequest.targetId"),o=r.permanent===void 0?void 0:typeof r.permanent=="boolean"?r.permanent:(()=>{throw new Error("explicitRequest.permanent is invalid")})(),a=r.scope===void 0?void 0:Pu(r.scope,"explicitRequest.scope"),s=$s(r.projectKey);if(a==="project"&&s===void 0)throw new Error("explicitRequest project action requires a project key");if(a==="global"&&s!==void 0)throw new Error("explicitRequest global action must not have a project key");let c=fe(r.category,"explicitRequest.category"),l=Cu(r.memoryClass,"explicitRequest.memoryClass"),d=fe(r.title,"explicitRequest.title"),u=fe(r.reason,"explicitRequest.reason"),p=fe(r.text,"explicitRequest.text");p!==void 0&&wt(p,"explicitRequest.text");let f=UH(r,e,!0);if(n==="remember"&&p===void 0)throw new Error("explicitRequest remember requires text");if(n!=="forget"&&o!==void 0)throw new Error(`explicitRequest ${n} must not set permanent`);if(n!=="remember"&&i===void 0)throw new Error(`explicitRequest ${n} requires targetId`);if(n==="correct"&&p===void 0&&c===void 0&&d===void 0&&u===void 0&&Object.keys(f).length===0)throw new Error("explicitRequest correct must change a memory field");if(n==="forget"&&(p!==void 0||c!==void 0||d!==void 0||u!==void 0||Object.keys(f).length>0))throw new Error("explicitRequest forget must not change memory fields");return{action:n,...i===void 0?{}:{targetId:i},...o===void 0?{}:{permanent:o},...a===void 0?{}:{scope:a},...s===void 0?{}:{projectKey:s},...c===void 0?{}:{category:c},...l===void 0?{}:{memoryClass:l},...d===void 0?{}:{title:d},...u===void 0?{}:{reason:u},...p===void 0?{}:{text:p},...f}}function UH(t,e,r=!1){let n={};for(let i of["tags","pathPatterns","taskTypes","operations","phases"]){if(t[i]===void 0)continue;let o=Os(t[i],`explicitRequest.${i}`,16,!1);o.forEach((a,s)=>{i==="tags"&&!r?vt(a,e,`explicitRequest.${i}[${s}]`):wt(a,`explicitRequest.${i}[${s}]`)}),n[i]=o}return n}function Ko(t,e,r={}){let n=Ni(e,"review actions");if(n.schema!==KP)throw new Error(`Unsupported memory review action schema: ${String(n.schema)}`);let i=Ru(n.actions,"review actions.actions"),o=new Set(t.evidence.map(l=>l.key)),a=new Set(t.memories.map(l=>l.id)),s=new Set,c=i.map((l,d)=>{let u=Ni(l,`actions[${d}]`),p=u.action;if(!tW(p))throw new Error(`Unknown memory review action: ${String(p)}`);let f=YP(u.language,`actions[${d}].language`);if(f!==t.language)throw new Error(`actions[${d}] language does not match packet`);let m=u.scope===void 0?void 0:Pu(u.scope,`actions[${d}].scope`),g=$s(u.projectKey);if(m==="project"&&g===void 0)throw new Error(`actions[${d}] project action requires a project key`);if(m==="global"&&g!==void 0)throw new Error(`actions[${d}] global action must not have a project key`);QH(t,m,g,d);let h=JP(u.candidateKey,`actions[${d}].candidateKey`),w=u.evidenceKeys===void 0?[]:Os(u.evidenceKeys,`actions[${d}].evidenceKeys`,t.evidence.length,!1);for(let P of w)if(!o.has(P))throw new Error(`actions[${d}] references unknown evidence`);let y=fe(u.reason,`actions[${d}].reason`);y!==void 0&&vt(y,f,`actions[${d}].reason`);let v=fe(u.title,`actions[${d}].title`);v!==void 0&&vt(v,f,`actions[${d}].title`);let b=Cu(u.memoryClass,`actions[${d}].memoryClass`);if(p==="skip"){if(y===void 0)throw new Error(`actions[${d}] skip requires a reason`);return m!==void 0&&s.add(m),{action:"skip",language:f,reason:y,evidenceKeys:w}}if(p==="forget"){let P=Be(u.targetId,`actions[${d}].targetId`),_=WP(t,a,P,d);return VP(_,m,g,d),zP(t,_,d),qP(_,d),s.add(m??_.scope),Gg(t,w,m??_.scope,g??_.projectKey,h,d,!1),{action:"forget",language:f,targetId:P,...typeof u.permanent=="boolean"?{permanent:u.permanent}:{},evidenceKeys:w,...y===void 0?{}:{reason:y},...v===void 0?{}:{title:v}}}if(p==="create"){if(m===void 0)throw new Error(`actions[${d}] create requires a scope`);s.add(m);let P=Be(u.category,`actions[${d}].category`),_=Be(u.text,`actions[${d}].text`);return t.explicitRequest===void 0&&(vt(P,f,`actions[${d}].category`),vt(_,f,`actions[${d}].text`)),Gg(t,w,m,g,h,d,!0),{action:"create",language:f,scope:m,...g===void 0?{}:{projectKey:g},...h===void 0?{}:{candidateKey:h},category:P,text:_,evidenceKeys:w,...y===void 0?{}:{reason:y},...v===void 0?{}:{title:v},...b===void 0?{}:{memoryClass:b},...HP(u,f,d,t.explicitRequest!==void 0)}}let k=Be(u.targetId,`actions[${d}].targetId`),S=WP(t,a,k,d);VP(S,m,g,d),zP(t,S,d),qP(S,d),s.add(m??S.scope);let E=fe(u.text,`actions[${d}].text`),N=fe(u.category,`actions[${d}].category`);if(E===void 0&&N===void 0&&!XH(u))throw new Error(`actions[${d}] update must change a memory field`);return t.explicitRequest===void 0&&E!==void 0&&vt(E,f,`actions[${d}].text`),t.explicitRequest===void 0&&N!==void 0&&vt(N,f,`actions[${d}].category`),Gg(t,w,m??S.scope,g??S.projectKey,h,d,!0),{action:"update",language:f,targetId:k,...m===void 0?{}:{scope:m},...g===void 0?{}:{projectKey:g},...h===void 0?{}:{candidateKey:h},...E===void 0?{}:{text:E},...N===void 0?{}:{category:N},evidenceKeys:w,...y===void 0?{}:{reason:y},...v===void 0?{}:{title:v},...b===void 0?{}:{memoryClass:b},...HP(u,f,d,t.explicitRequest!==void 0)}});if(s.size>1)throw new Error("Memory review action set must not mix global and project scopes");return{schema:KP,actions:c}}function ar(t){wt(t,"memory text")}function Ei(t,e,r="memory text"){vt(t,e,r)}function JH(t,e){let r=Ni(t,"budget"),n=Ug(r.maxActions,"budget.maxActions"),i=Ug(r.maxEvidence,"budget.maxEvidence"),o=Ug(r.maxBytes,"budget.maxBytes");return{maxActions:n,maxEvidence:i,maxBytes:o}}function HP(t,e,r,n=!1){let i={};for(let o of["tags","pathPatterns","taskTypes","operations","phases"]){if(t[o]===void 0)continue;let a=Os(t[o],o,16,!1);a.forEach((s,c)=>{o==="tags"&&!n?vt(s,e,`actions[${r}].tags[${c}]`):wt(s,o)}),i[o]=a}return i}function YH(t,e,r){let n={};for(let i of["tags","pathPatterns","taskTypes","operations","phases"]){if(t[i]===void 0)continue;let o=Os(t[i],`evidence[${r}].${i}`,16,!1);o.forEach((a,s)=>{i==="tags"?vt(a,e,`evidence[${r}].${i}[${s}]`):wt(a,`evidence[${r}].${i}[${s}]`)}),n[i]=o}return n}function XH(t){return["tags","pathPatterns","taskTypes","operations","phases"].some(e=>t[e]!==void 0)}function WP(t,e,r,n){if(!e.has(r))throw new Error(`actions[${n}] references an unknown target`);let i=t.memories.find(o=>o.id===r);if(i===void 0)throw new Error(`actions[${n}] references an unknown target`);return i}function VP(t,e,r,n){if(e!==void 0&&e!==t.scope)throw new Error(`actions[${n}] scope does not match target`);if(r!==void 0&&r!==t.projectKey)throw new Error(`actions[${n}] project key does not match target`);if(t.scope==="global"&&r!==void 0)throw new Error(`actions[${n}] global target must not have a project key`)}function qP(t,e){if(t.state==="superseded")throw new Error(`actions[${e}] target is superseded`)}function zP(t,e,r){if(e.scope==="project"&&t.projectKey!==void 0&&e.projectKey!==t.projectKey)throw new Error(`actions[${r}] target project does not match packet context`);if(e.scope==="project"&&t.projectKey===void 0&&t.projectIdentity!==void 0&&e.projectIdentity!==t.projectIdentity)throw new Error(`actions[${r}] target identity does not match packet context`)}function QH(t,e,r,n){if((e==="project"||r!==void 0)&&t.projectKey!==void 0&&r!==t.projectKey)throw new Error(`actions[${n}] project does not match packet context`)}function Gg(t,e,r,n,i,o,a){for(let s of e){let c=t.evidence.find(d=>d.key===s);if(c===void 0)throw new Error(`actions[${o}] references unknown evidence`);if(c.scope!==r)throw new Error(`actions[${o}] evidence scope does not match`);if(r==="project"&&c.projectKey!==n)throw new Error(`actions[${o}] evidence project does not match`);if(r==="project"&&t.projectIdentity!==void 0&&c.projectIdentity!==t.projectIdentity)throw new Error(`actions[${o}] evidence identity does not match packet context`);if(r==="global"&&c.projectIdentity===void 0)throw new Error(`actions[${o}] global evidence lacks project identity`);if(i!==void 0&&c.candidateKey!==i)throw new Error(`actions[${o}] evidence candidate does not match`);if(a&&!c.success)throw new Error(`actions[${o}] requires successful evidence`);let l=Date.parse(t.createdAt)-Date.parse(c.observedAt);if(l<0||l>UP.maxEvidenceAgeMs)throw new Error(`actions[${o}] evidence is outside the freshness window`)}}function vt(t,e,r){wt(t,r);let n=new RegExp("\\p{Script=Han}","u").test(t),i=/[A-Za-z]/u.test(t),o=n&&i&&eW(t),a=/[`/\\]|\b(?:git|npm|pnpm|yarn|node|comet)\b|\.(?:ts|js|json|md|yaml)\b/iu.test(t)||/\b[A-Z][A-Z0-9_-]{1,}\b/u.test(t);if(e==="zh-CN"&&i&&!a&&!o)throw new Error(`${r} does not match zh-CN review language`);if(e==="en"&&n&&!a)throw new Error(`${r} does not match en review language`)}var ZH=new Set(["Ant","API","CSS","Classic","Comet","Dashboard","Design","GitHub","HTML","JavaScript","Native","React","Tailwind","TypeScript","UI","URL","Vue","hooks","component","components","frontend","backend"]);function eW(t){let e=t.match(/[A-Za-z][A-Za-z0-9+.#-]*/gu)??[];return e.length>0&&e.every(r=>ZH.has(r)||/^[A-Z]{2,}[0-9A-Z+.#-]*$/u.test(r))}function wt(t,e){if(t.trim().length===0)throw new Error(`${e} must not be empty`);let r=zH.find(({pattern:n})=>n.test(t));if(r)throw new Error(`${e} contains unsafe or non-memory content (matched: ${r.category})`)}function Os(t,e,r,n){let i=Ru(t,e).map((o,a)=>Be(o,`${e}[${a}]`));return n&&i.forEach(o=>wt(o,e)),i}function fe(t,e){if(t!==void 0)return Be(t,e)}function JP(t,e){let r=fe(t,e);if(r!==void 0&&!/^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$/u.test(r))throw new Error(`${e} is invalid`);return r}function $s(t){let e=fe(t,"projectKey");if(e!==void 0&&!/^[A-Za-z0-9][A-Za-z0-9._-]*$/u.test(e))throw new Error("projectKey is invalid");return e}function Be(t,e){if(typeof t!="string"||t.trim().length===0)throw new Error(`${e} is required`);return t.trim()}function GP(t,e){let r=Be(t,e);if(!Number.isFinite(Date.parse(r)))throw new Error(`${e} is invalid`);return r}function Ug(t,e){if(!Number.isSafeInteger(t)||t<=0)throw new Error(`${e} is invalid`);return t}function YP(t,e){if(t!=="zh-CN"&&t!=="en")throw new Error(`${e} is invalid`);return t}function Pu(t,e){if(t!=="global"&&t!=="project")throw new Error(`${e} is invalid`);return t}function Cu(t,e){if(t!==void 0){if(!Si(t))throw new Error(`${e} is invalid`);return t}}function tW(t){return t==="create"||t==="update"||t==="forget"||t==="skip"}function Ru(t,e){if(!Array.isArray(t))throw new Error(`${e} must be an array`);return t}function Ni(t,e){if(t===null||typeof t!="object"||Array.isArray(t))throw new Error(`${e} must be an object`);return t}function Jg(t){throw new Error(`${t} is invalid`)}var nW=12,iW=8*1024,oW=2e3,fC=6e3,XP=100,QP=32*1024,aW=8,ju=128,ZP=240,An=class extends Error{constructor(r){super(r);this.reason=r;this.name="AutomaticLearningPausedError"}reason};function eC(t,e,r){if(!t.settings.learningEnabled)return r==="en"?"Personal memory learning is disabled.":"个人记忆学习已关闭。";if(e!==void 0&&t.settings.pausedLearningProjects.includes(e))return r==="en"?"Personal memory learning is paused for this project.":"当前项目已暂停个人记忆学习。"}var Iu=class{repository;now;maxEntries;maxBytes;profileMaxChars;taskMaxChars;language;constructor(e){this.repository=e.repository,this.now=e.now??(()=>new Date),this.maxEntries=e.maxEntries??nW,this.maxBytes=e.maxBytes??iW,this.profileMaxChars=e.profileMaxChars??oW,this.taskMaxChars=e.taskMaxChars??fC,this.language=e.language??"zh-CN"}async get(e){return this.repository.withLock(async()=>{let r=await this.loadAndReconcile();await this.persist(r);let n=r.records.find(i=>i.id===e);return n===void 0?null:Se(n)})}async remember(e){kC(e);let r=e.source??{kind:"user"};return this.repository.withLock(async()=>{let n=await this.loadAndReconcile(e.scope,e.projectKey),i={...e,memoryType:e.memoryType??Bs(e,"explicit")},o=Fr(i),a=T(e.text),s=n.records.find(l=>l.state!=="superseded"&&l.identity===o&&T(l.text)===a);if(s!==void 0){let l={...Xg(s,r,this.timestamp()),kind:"explicit",authority:"explicit",memoryType:i.memoryType,...i.memoryType==="personal-episode"?{episode:Mu(i.episode,i)}:{episode:void 0},state:"proven",source:r};return n.records=Ft(n.records,l),Qg(n,o),xi(n,o,e.text),await this.persist(n),Se(l)}let c=ry(i,"explicit",r,this.timestamp(),o);return Qg(n,o),xi(n,o,e.text),n.records=Ft(n.records,c),await this.writeRecordMarkdown(n,c),Se(c)})}async correct(e,r,n={}){return uC(r),this.repository.withLock(async()=>{let i=await this.loadAndReconcile();if(n.automaticLearning!==void 0){let c=eC(i,n.automaticLearning.projectKey,n.automaticLearning.language);if(c!==void 0)throw new An(c)}let o=i.records.find(c=>c.id===e),a=o!==void 0&&i.tombstones.some(c=>c.identity===o.identity&&c.reason==="user-remove");if(o===void 0||o.state==="superseded"&&!a)throw new Error(`Memory is not available: ${e}`);if(n.idempotencyKey!==void 0&&i.appliedMutationIds.includes(n.idempotencyKey))return Se(o);if(uC(r),xW(o,r))return n.idempotencyKey!==void 0&&(i.appliedMutationIds=Ho(i.appliedMutationIds,n.idempotencyKey),await this.persist(i)),Se(o);$u(i,o),Qg(i,o.identity);let s=this.updateRecordValue(o,{...o,...r,source:{kind:"user"}},"explicit");return i.records=Ft(i.records,s),xi(i,o.identity,o.text),n.idempotencyKey!==void 0&&(i.appliedMutationIds=Ho(i.appliedMutationIds,n.idempotencyKey)),await this.writeRecordMarkdown(i,s,o.text,o.category),Se(s)})}async remove(e,r={}){await this.repository.withLock(async()=>{let n=await this.loadAndReconcile();if(r.automaticLearning!==void 0){let a=eC(n,r.automaticLearning.projectKey,r.automaticLearning.language);if(a!==void 0)throw new An(a)}if(r.idempotencyKey!==void 0&&n.appliedMutationIds.includes(r.idempotencyKey))return;let i=n.records.find(a=>a.id===e);if(i===void 0)throw new Error(`Unknown memory: ${e}`);let o;if(i.state!=="superseded"){let a=this.resolveMemoryFilePath(n,i.scope,i.projectKey),s=await this.readStableFile(n,a,i.scope,i.projectKey),c=n.records.find(l=>l.id===e);if(c!==void 0&&c.state!=="superseded"&&($u(n,c),s!==null)){let l=sC(s,i.text,i.category);if(l!==s&&await this.readStableFile(n,a,c.scope,c.projectKey)!==s)throw new Error(`Memory file changed during update: ${a}`);o={file:a,projection:{content:l,baseHash:Wo(s),scope:c.scope,...c.projectKey===void 0?{}:{projectKey:c.projectKey},queuedAt:this.timestamp()}}}}if(r.permanent){let a=n.records.filter(s=>s.identity===i.identity&&bt(s.text)===bt(i.text)).map(s=>s.id);n.records=n.records.filter(s=>!a.includes(s.id));for(let s of a)delete n.history[s],delete n.evidence[s],delete n.feedbackState[s];for(let[s,c]of Object.entries(n.applicationOutcomes))a.includes(c.recordId)&&delete n.applicationOutcomes[s];n.observations=n.observations.filter(s=>s.identity!==i.identity||bt(s.text)!==bt(i.text)),n.conflicts=n.conflicts.flatMap(s=>{if(s.identity!==i.identity&&!s.recordIds?.some(l=>a.includes(l)))return[s];let c=n.records.filter(l=>s.recordIds===void 0?l.identity===s.identity:s.recordIds.includes(l.id));return new Set(c.map(l=>T(l.text))).size<2?[]:[{...s,recordIds:c.map(l=>l.id).sort(),texts:[...new Set(c.map(l=>l.text))].sort(),updatedAt:this.timestamp()}]})}else n.records=Ft(n.records,{...i,state:"superseded",updatedAt:this.timestamp()}),delete n.evidence[e];n.tombstones=ay(n.tombstones,{identity:i.identity,scope:i.scope,...i.projectKey===void 0?{}:{projectKey:i.projectKey},recordId:i.id,textHash:bt(i.text),reason:"user-remove",...r.permanent===!0?{permanent:!0}:{},removedAt:this.timestamp()}),r.idempotencyKey!==void 0&&(n.appliedMutationIds=Ho(n.appliedMutationIds,r.idempotencyKey)),o===void 0?await this.persist(n):await this.persistWithFileProjection(n,o.file,o.projection)})}async rollback(e){return this.repository.withLock(async()=>{let r=await this.loadAndReconcile(),n=r.records.find(s=>s.id===e),i=r.history[e]??[],o=i.at(-1);if(n===void 0||o===void 0)throw new Error(`No rollback available: ${e}`);r.history[e]=i.slice(0,-1);let a={...o,id:e,state:"proven",updatedAt:this.timestamp()};return r.records=Ft(r.records,a),xi(r,a.identity,a.text),await this.writeRecordMarkdown(r,a,n.state!=="superseded"?n.text:void 0,n.state!=="superseded"?n.category:void 0),Se(a)})}async recordApplicationOutcome(e,r,n={}){return this.repository.withLock(async()=>{let i=await this.loadAndReconcile(),o=i.records.find(v=>v.id===e);if(o===void 0)return null;if(n.idempotencyKey!==void 0&&i.appliedMutationIds.includes(n.idempotencyKey))return Se(o);let a=n.applicationId,s=a===void 0?void 0:i.applicationOutcomes[a];if(s!==void 0&&s.recordId!==e)throw new Error(`Context application ${a} belongs to another memory record`);let c=n.revision??(s?.revision??0)+1;if(s!==void 0&&c<=s.revision)return n.idempotencyKey!==void 0&&(i.appliedMutationIds=Ho(i.appliedMutationIds,n.idempotencyKey),await this.persist(i)),Se(o);let l=i.feedbackState[e];if(o.state==="superseded"&&l===void 0)return null;let d=r==="used-successfully",u=Yg(r),p=s?.status==="used-successfully",f=Yg(s?.status);a!==void 0&&(i.applicationOutcomes[a]={recordId:e,status:r,revision:c});let m=Object.entries(i.applicationOutcomes).some(([v,b])=>v!==a&&b.recordId===e&&Yg(b.status)),g=o.kind==="inferred"&&!u&&l!==void 0&&!m,h=this.timestamp(),w={...o,state:o.kind==="inferred"&&u?"superseded":g?d&&l.baseState==="trial"?"proven":l.baseState:o.state==="trial"&&d?"proven":o.state,applicationCount:o.applicationCount+ +(s===void 0),successCount:Math.max(0,o.successCount+Number(d)-Number(p)),failureCount:Math.max(0,o.failureCount+Number(u)-Number(f)),lastAppliedAt:h,updatedAt:h};i.records=Ft(i.records,w),n.idempotencyKey!==void 0&&(i.appliedMutationIds=Ho(i.appliedMutationIds,n.idempotencyKey));let y;if(o.kind==="inferred"&&u&&l===void 0){i.feedbackState[e]={baseState:o.state==="trial"?"trial":"proven"};let v=this.resolveMemoryFilePath(i,o.scope,o.projectKey),b=await this.readStableFile(i,v,o.scope,o.projectKey);if(b!==null){let k=sC(b,o.text,o.category);if(k!==b&&await this.readStableFile(i,v,o.scope,o.projectKey)!==b)throw new Error(`Memory file changed during update: ${v}`);y={file:v,projection:{content:k,baseHash:Wo(b),scope:o.scope,...o.projectKey===void 0?{}:{projectKey:o.projectKey},queuedAt:this.timestamp()}}}i.tombstones=ay(i.tombstones,{identity:o.identity,scope:o.scope,...o.projectKey===void 0?{}:{projectKey:o.projectKey},recordId:o.id,textHash:bt(o.text),reason:"negative-feedback",removedAt:this.timestamp()})}return g?(delete i.feedbackState[e],i.tombstones=i.tombstones.filter(v=>!(v.recordId===e&&v.reason==="negative-feedback")),await this.writeRecordMarkdown(i,w)):o.state==="trial"&&w.state==="proven"?await this.writeRecordMarkdown(i,w):y!==void 0?await this.persistWithFileProjection(i,y.file,y.projection):await this.persist(i),Se(w)})}async observe(e){if(PW(e),e.source?.kind!=="user"&&!CW(e)){let n={deduplicated:!1,ignored:!0,candidate:!1,promoted:!1,record:null,result:"ignored"};return await this.recordLearningStatus(n,!1,tC(e),e.reason),n}let r=await this.repository.withLock(async()=>{let n=await this.loadAndReconcile(e.scope,e.projectKey),i=!n.settings.learningEnabled||e.scope==="project"&&e.projectKey!==void 0&&n.settings.pausedLearningProjects.includes(e.projectKey);if(i)return{deduplicated:!1,ignored:!0,candidate:!1,promoted:!1,record:null,result:"ignored"};let o=e.projectIdentity??e.projectKey,a={...e,memoryType:e.memoryType??Bs(e,"inferred")},s=e.candidateKey??Fr(a),c=fW(a,o,s),l=n.observations.find(x=>x.key===c),d=l!==void 0&&Object.values(n.evidence).some(x=>x.includes(l.key));if(l!==void 0&&d&&(l.success||!e.success))return{deduplicated:!0,ignored:!1,candidate:!1,promoted:!1,record:null,result:"deduplicated"};let u=e.source??{kind:"workflow",workflow:e.workflow,changeId:e.changeId,projectKey:e.projectKey},p={key:c,changeId:e.changeId.trim(),scope:e.scope,projectKey:e.projectKey,...o===void 0?{}:{projectIdentity:o},candidateKey:s,identity:Fr(a),text:e.text,normalizedText:T(e.text),success:e.success,source:u,observedAt:e.observedAt??this.timestamp()};n.observations=l===void 0?[...n.observations,p]:n.observations.map(x=>x.key===c?p:x);let f=p.identity,m=p.normalizedText,g=bt(p.text),h=or(p.text),w=n.tombstones.find(x=>x.identity===f&&x.textHash===void 0||x.scope===p.scope&&x.projectKey===p.projectKey&&x.textHash!==void 0&&(x.textHash===g||x.textHash===h));if(w?.permanent===!0||w!==void 0&&p.observedAt<=w.removedAt)return w?.permanent===!0&&(n.observations=n.observations.filter(x=>x.key!==p.key)),await this.persist(n),{deduplicated:!1,ignored:!0,candidate:!1,promoted:!1,record:null,result:"ignored"};if(!e.success)return await this.persist(n),{deduplicated:!1,ignored:!1,candidate:!1,promoted:!1,record:null,result:!n.settings.learningEnabled||i?"ignored":"skipped"};let y=n.records.find(x=>(w===void 0||x.createdAt>w.removedAt)&&x.state==="trial"&&x.kind==="inferred"&&x.identity===f&&T(x.text)===m),v=y??ry(mW(a,u),"inferred",u,p.observedAt,f);n.records=y?n.records:[...n.records,v];let b=new Set(n.evidence[v.id]??[]);b.add(c),n.evidence[v.id]=[...b];let k=n.records.find(x=>x.state==="proven"&&x.identity===f),S=n.records.find(x=>x.state!=="superseded"&&x.kind==="explicit"&&oC(x)===oC(a));if(S!==void 0){if(T(S.text)!==m)return n.conflicts=Zg(n.conflicts,f,[S,v],this.timestamp()),await this.persist(n),{deduplicated:!1,ignored:!1,candidate:!0,promoted:!1,record:null,result:"candidate-created"};let x=Xg(S,u,this.timestamp());return n.records=Ft(n.records.filter(C=>C.id!==v.id),x),delete n.evidence[v.id],n.conflicts=n.conflicts.filter(C=>C.identity!==f),await this.persist(n),{deduplicated:!1,ignored:!1,candidate:!1,promoted:!1,record:Se(x),result:"skipped"}}let E=n.records.filter(x=>x.id!==v.id&&x.identity===f&&T(x.text)!==m&&(x.state!=="superseded"||(n.evidence[x.id]?.length??0)>0));if(E.length>0)return n.conflicts=Zg(n.conflicts,f,[...E,v],this.timestamp()),await this.persist(n),{deduplicated:!1,ignored:!1,candidate:!0,promoted:!1,record:null,result:"candidate-created"};if(k!==void 0&&T(k.text)===m){let x=Xg(k,u,this.timestamp());return n.records=Ft(n.records.filter(C=>C.id!==v.id),x),n.evidence[k.id]=[...new Set([...n.evidence[k.id]??[],...b])],v.id!==k.id&&delete n.evidence[v.id],await this.persist(n),{deduplicated:!1,ignored:!1,candidate:!1,promoted:!1,record:Se(x),result:"skipped"}}let N=EW(e.scope,n.observations.filter(x=>b.has(x.key))),P=(e.scope==="global",2);if(N<P)return await this.persist(n),{deduplicated:!1,ignored:!1,candidate:!0,promoted:!1,record:null,result:"candidate-created"};if(k!==void 0&&k.id!==v.id)return n.conflicts=Zg(n.conflicts,f,[k,v],this.timestamp()),await this.persist(n),{deduplicated:!1,ignored:!1,candidate:!0,promoted:!1,record:null,result:"candidate-created"};let _=n.observations.filter(x=>b.has(x.key)).map(x=>x.source),j={...v,state:"proven",source:_[0]??v.source,sources:Tu(v.sources,_),updatedAt:this.timestamp()};return n.records=Ft(n.records,j),xi(n,f,j.text),await this.writeRecordMarkdown(n,j),{deduplicated:!1,ignored:!1,candidate:!0,promoted:!0,record:Se(j),result:"candidate-promoted"}});return await this.recordLearningStatus(r,r.result==="candidate-created"||r.result==="candidate-promoted"||r.result==="deduplicated",tC(e),e.reason),r}async recordLearningStatus(e,r,n,i){await this.repository.withLock(async()=>{let o=await this.loadAndReconcile(),a=this.timestamp(),s=n?.projectKey??this.repository.projectFileBinding?.()?.projectKey,c=s===void 0?n:{...n??{},projectKey:s},l=o.learning,d=ty(o,s),u=nC(d,e,r,c,a,i);o.learning=nC(l,e,r,c,a,i),s!==void 0&&rC(o,s,u),await this.persist(o)})}async markLearningCheck(e,r,n,i){return this.repository.withLock(async()=>{let o=await this.loadAndReconcile(),a=n?.projectKey??this.repository.projectFileBinding?.()?.projectKey,s=a===void 0?n:{...n??{},projectKey:a},c=o.learning,l=ty(o,a),d=e!=="submitted"||n?.changeId===void 0?void 0:o.observations.some(f=>f.changeId===n.changeId&&(a===void 0||f.projectKey===a)&&(n.workflow===void 0||f.source.workflow===n.workflow)),u=this.timestamp(),p=iC(l,e,r,s,u,d,i);return o.learning=iC(c,e,r,s,u,d,i),a!==void 0&&rC(o,a,p),await this.persist(o),p})}async reviewAndApply(e,r){let n=await this.repository.withLock(async()=>{let c=await this.loadAndReconcile(e.projectKey===void 0?"global":"project",e.projectKey);return{learningEnabled:c.settings.learningEnabled,projectPaused:e.projectKey!==void 0&&c.settings.pausedLearningProjects.includes(e.projectKey)}});if((!n.learningEnabled||n.projectPaused)&&e.explicitRequest===void 0){let c=n.learningEnabled?e.language==="en"?"Personal memory learning is paused for this project.":"当前项目已暂停个人记忆学习。":e.language==="en"?"Personal memory learning is disabled.":"个人记忆学习已关闭。";return await this.markLearningCheck("submitted","ignored",{...e.projectKey===void 0?{}:{projectKey:e.projectKey},workflow:e.workflow,changeId:e.changeId},c),{action:"skip",persisted:!1,reason:c,observation:{deduplicated:!1,ignored:!0,candidate:!1,promoted:!1,record:null,result:"ignored"}}}let i=Au(e),o=Ko(i,r),a=[];for(let c of o.actions)a.push(await this.applyReviewAction(i,c));let s=a[0];return s===void 0?{action:"skip",persisted:!1}:a.length===1?s:{action:s.action,persisted:a.some(c=>c.persisted),...a.find(c=>c.reason!==void 0)?.reason===void 0?{}:{reason:a.find(c=>c.reason!==void 0)?.reason},...a.find(c=>c.notification!==void 0)?.notification===void 0?{}:{notification:a.find(c=>c.notification!==void 0)?.notification},results:a}}async query(e){if(e.view==="manage")return this.manage(e.query);if(e.view==="expand"){if(!e.query.id)throw new Error("Memory expand requires an id");let r=await this.get(e.query.id);return{kind:"expand",record:r!==null&&(r.scope==="global"||e.query.projectKey!==void 0&&r.projectKey===e.query.projectKey)?r:null}}if(e.view==="manifest"){let r=await this.retrieve({...e.query,view:"task"});return{kind:"manifest",truncated:r.truncated,items:r.records.map(n=>({id:n.id,memoryType:n.memoryType,state:n.state,authority:n.authority,title:n.title??n.category,summary:n.text,scope:n.scope,...n.projectKey===void 0?{}:{projectKey:n.projectKey},pathPatterns:[...n.pathPatterns],taskTypes:[...n.taskTypes],operations:[...n.operations],phases:[...n.phases],evidence:n.evidence.map(Ks)}))}}return this.retrieve({...e.query,view:e.view})}async apply(e){switch(e.operation){case"remember":return this.remember(e.input);case"correct":{let r=e.input;return this.correct(r.id,r.correction)}case"forget":{let r=e.input;return this.remove(r.id,{permanent:r.permanent})}case"rollback":return this.rollback(e.input.id);case"observe":return this.observe(e.input);case"review":{let r=e.input;return this.reviewAndApply(r.packet,r.actions)}case"feedback":{let r=e.input;return this.recordApplicationOutcome(r.id,r.outcome,{...r.previousOutcome===void 0?{}:{previousOutcome:r.previousOutcome},...r.applicationId===void 0?{}:{applicationId:r.applicationId},...r.revision===void 0?{}:{revision:r.revision},...r.idempotencyKey===void 0?{}:{idempotencyKey:r.idempotencyKey}})}case"experience-delta":return this.applyExperienceDelta(e.input.delta,e.input.idempotencyKey,e.input.automaticLearning)}}async applyExperienceDelta(e,r,n){if(e.owner!=="personal-memory"&&e.owner!=="comet.personal-memory")throw new Error("Learning Delta owner does not match Personal Memory");if(await this.mutationWasApplied(r))return{changed:!1};if(e.feedback!==void 0){if(!e.targetId)throw new Error("Learning Delta feedback target is required");let f=await this.recordApplicationOutcome(e.targetId,e.feedback.status,{previousOutcome:e.feedback.previousStatus,applicationId:e.feedback.applicationId,revision:e.feedback.revision,idempotencyKey:r});return{changed:f!==null,record:f}}if(e.action==="noop")return await this.markMutationApplied(r),{changed:!1};if(e.action==="forget"||e.action==="supersede"){if(!e.targetId)throw new Error("Learning Delta target is required");try{await this.remove(e.targetId,{permanent:e.action==="forget",idempotencyKey:r,...n===void 0?{}:{automaticLearning:n}})}catch(f){if(!(f instanceof An))throw f;return{changed:!1,ignored:!0,reason:f.reason}}return{changed:!0,record:null}}if(e.action==="update"){if(!e.targetId)throw new Error("Learning Delta target is required");let f;try{f=await this.correct(e.targetId,{...e.title===void 0?{}:{title:e.title},text:e.statement,category:e.kind,pathPatterns:e.applicability.paths,taskTypes:e.applicability.tasks,operations:e.applicability.operations,phases:e.applicability.phases},{idempotencyKey:r,...n===void 0?{}:{automaticLearning:n}})}catch(m){if(!(m instanceof An))throw m;return{changed:!1,ignored:!0,reason:m.reason}}return{changed:!0,record:f}}let i=e.applicability.projectId===void 0?"global":"project",o=e.payload?.kind==="memory-action"?e.payload:void 0,a=typeof o?.candidateKey=="string"?o.candidateKey:r,s=o?.language==="en"||o?.language==="zh-CN"?o.language:void 0,c=Si(o?.memoryClass)?o.memoryClass:void 0,l=bW(e.memoryType)?e.memoryType:void 0,d=typeof o?.reason=="string"?o.reason:void 0,u=kW(o?.episode),p=e.authority==="explicit"||e.authority==="user"?await this.remember({scope:i,...e.applicability.projectId===void 0?{}:{projectKey:e.applicability.projectId},category:e.kind,...e.title===void 0?{}:{title:e.title},text:e.statement,pathPatterns:e.applicability.paths,taskTypes:e.applicability.tasks,operations:e.applicability.operations,phases:e.applicability.phases,evidence:e.evidence,candidateKey:a,...s===void 0?{}:{language:s},...c===void 0?{}:{memoryClass:c},...l===void 0?{}:{memoryType:l},...u===void 0?{}:{episode:u},...d===void 0?{}:{reason:d},source:{kind:"user"}}):(await this.observe({scope:i,...e.applicability.projectId===void 0?{}:{projectKey:e.applicability.projectId},category:e.kind,...e.title===void 0?{}:{title:e.title},text:e.statement,pathPatterns:e.applicability.paths,taskTypes:e.applicability.tasks,operations:e.applicability.operations,phases:e.applicability.phases,evidence:e.evidence,candidateKey:a,...s===void 0?{}:{language:s},...c===void 0?{}:{memoryClass:c},...l===void 0?{}:{memoryType:l},...u===void 0?{}:{episode:u},...d===void 0?{}:{reason:d},workflow:"agent-learning",changeId:r,success:e.recommendedState!=="superseded",source:{kind:e.authority==="repository"?"repository":"workflow"}})).record;return await this.markMutationApplied(r),{changed:p!==null,record:p}}async mutationWasApplied(e){return this.repository.withLock(async()=>(await this.loadAndReconcile()).appliedMutationIds.includes(e))}async markMutationApplied(e){await this.repository.withLock(async()=>{let r=await this.loadAndReconcile();r.appliedMutationIds.includes(e)||(r.appliedMutationIds=Ho(r.appliedMutationIds,e),await this.persist(r))})}async applyReviewAction(e,r){if(r.action==="skip")return{action:"skip",persisted:!1,...r.reason===void 0?{}:{reason:r.reason}};if(r.action==="create"){if(e.explicitRequest?.action==="remember")return{action:"create",persisted:!0,observation:{deduplicated:!1,ignored:!1,candidate:!1,promoted:!0,record:await this.remember({scope:r.scope,...r.projectKey===void 0?{}:{projectKey:r.projectKey},category:r.category,text:r.text,memoryClass:r.memoryClass,title:r.title,reason:r.reason,tags:r.tags,pathPatterns:r.pathPatterns,taskTypes:r.taskTypes,operations:r.operations,phases:r.phases,language:r.language,source:{kind:"user"}})}};let n=await this.observe({scope:r.scope,...r.projectKey===void 0?{}:{projectKey:r.projectKey},category:r.category,text:r.text,memoryClass:r.memoryClass,title:r.title,reason:r.reason,tags:r.tags,pathPatterns:r.pathPatterns,taskTypes:r.taskTypes,operations:r.operations,phases:r.phases,language:r.language,projectIdentity:e.projectIdentity,candidateKey:r.candidateKey,observedAt:e.createdAt,workflow:e.workflow,changeId:e.changeId,success:!0,source:{kind:"review",label:e.checkpoint,workflow:e.workflow,changeId:e.changeId,projectKey:r.projectKey}});return{action:"create",persisted:!n.ignored&&(n.deduplicated||n.candidate||n.promoted),...n.promoted?{notification:r.language==="en"?"A reusable workflow preference is now available.":"已形成一条可复用的协作偏好。"}:{},observation:n}}if(r.action==="update"){try{await this.correct(r.targetId,{...r.text===void 0?{}:{text:r.text},...r.category===void 0?{}:{category:r.category},...r.tags===void 0?{}:{tags:r.tags},...r.pathPatterns===void 0?{}:{pathPatterns:r.pathPatterns},...r.taskTypes===void 0?{}:{taskTypes:r.taskTypes},...r.operations===void 0?{}:{operations:r.operations},...r.phases===void 0?{}:{phases:r.phases},...r.title===void 0?{}:{title:r.title},...r.reason===void 0?{}:{reason:r.reason},...r.memoryClass===void 0?{}:{memoryClass:r.memoryClass}},e.explicitRequest===void 0?{automaticLearning:{projectKey:e.projectKey,language:e.language}}:{})}catch(n){if(!(n instanceof An))throw n;return{action:"skip",persisted:!1,reason:n.reason,observation:{deduplicated:!1,ignored:!0,candidate:!1,promoted:!1,record:null,result:"ignored"}}}return{action:"update",persisted:!0,...r.reason===void 0?{}:{reason:r.reason},observation:void 0}}try{await this.remove(r.targetId,{permanent:r.permanent===!0,...e.explicitRequest===void 0?{automaticLearning:{projectKey:e.projectKey,language:e.language}}:{}})}catch(n){if(!(n instanceof An))throw n;return{action:"skip",persisted:!1,reason:n.reason,observation:{deduplicated:!1,ignored:!0,candidate:!1,promoted:!1,record:null,result:"ignored"}}}return{action:"forget",persisted:!0,...r.reason===void 0?{}:{reason:r.reason}}}async retrieve(e){return this.repository.withLock(async()=>{let r=await this.loadAndReconcile(e.scope==="global"?"global":e.scope==="project"?"project":void 0,e.projectKey);if(await this.persist(r),!r.settings.retrievalEnabled||NW(r.settings,e.projectKey))return{records:[],text:"",truncated:!1,disabled:!0};if(e.view==="combined"||e.view==="profile"||e.view==="task")return vW(r,e,e.profileMaxChars??this.profileMaxChars,e.taskMaxChars??e.maxChars??this.taskMaxChars);let n=Ds(e.maxEntries??this.maxEntries,this.maxEntries),i=Ds(e.maxBytes??this.maxBytes,this.maxBytes),o=r.records.filter(l=>l.state!=="superseded"&&(l.state!=="trial"||hC(r,l))).filter(l=>!Hs(r.conflicts,l)).filter(l=>_u(l,e)).filter(l=>oy(l,e)).map((l,d)=>({record:l,score:vC(l,e),index:d})).filter(({score:l})=>l>0||e.query===void 0).sort((l,d)=>d.score-l.score||d.record.updatedAt.localeCompare(l.record.updatedAt)||l.index-d.index||l.record.id.localeCompare(d.record.id)),a=[],s="",c=!1;for(let l of o){if(a.length>=n){c=!0;break}let d=[...a,l.record],u=Fs(d);if(Buffer.byteLength(u,"utf8")>i){c=!0;break}a.push(l.record),s=u}return{records:a.map(Se),text:s,truncated:c,disabled:!1}})}async manage(e={}){return this.repository.withLock(async()=>{let r=await this.loadAndReconcile(e.scope==="global"?"global":e.scope==="project"?"project":void 0,e.projectKey);await this.persist(r);let n=r.records.filter(p=>_u(p,e)).filter(p=>oy(p,e,!0)).sort((p,f)=>f.updatedAt.localeCompare(p.updatedAt)||p.id.localeCompare(f.id)),i=Ds(e.maxEntries??XP,XP),o=Ds(e.maxBytes??QP,QP),a=new Set(n.map(p=>p.id)),s=[],c=0,l=0,d=!1;for(let p of n){if(l>=i){d=!0;break}let f=uW(r,p),m=Buffer.byteLength(JSON.stringify(f),"utf8");if(c+m>o){d=!0;break}s.push(f),c+=m,l+=1}let u=[];for(let p of r.conflicts){let f=pW(p,a);if(f===null)continue;if(l>=i){d=!0;break}let m=Buffer.byteLength(JSON.stringify(f),"utf8");if(c+m>o){d=!0;break}u.push(f),c+=m,l+=1}return{records:s,conflicts:u,truncated:d}})}async status(){return{...await this.repository.withLock(async()=>{let r=await this.loadAndReconcile();await this.persist(r);let n=this.repository.projectFileBinding?.()?.projectKey,i=dW(r,n),o=n===void 0?r.records:r.records.filter(s=>_u(s,{projectKey:n})),a=n===void 0?r.tombstones:r.tombstones.filter(s=>s.scope==="global"||s.projectKey===n);return{learningEnabled:r.settings.learningEnabled,retrievalEnabled:r.settings.retrievalEnabled,pausedProjects:[...r.settings.pausedProjects],pausedLearningProjects:[...r.settings.pausedLearningProjects],pausedRetrievalProjects:[...r.settings.pausedRetrievalProjects],files:Object.keys(r.files).filter(s=>r.files[s]?.hash!=="").sort(),provider:{provider:"local",configured:!0},profile:{usedChars:wW(r),maxChars:this.profileMaxChars},learning:{...i.lastCheckedAt===void 0?{}:{lastCheckedAt:i.lastCheckedAt},...i.lastCheck===void 0?{}:{lastCheck:i.lastCheck},...i.lastResult===void 0?{}:{lastResult:i.lastResult},...i.lastReason===void 0?{}:{lastReason:i.lastReason},...i.lastProjectKey===void 0?{}:{lastProjectKey:i.lastProjectKey},...i.lastWorkflow===void 0?{}:{lastWorkflow:i.lastWorkflow},...i.lastChangeId===void 0?{}:{lastChangeId:i.lastChangeId},...i.submissionVerified===void 0?{}:{submissionVerified:i.submissionVerified},observedCount:i.observedCount,validObservationCount:i.validObservationCount},counts:{active:o.filter(s=>Ls(r,s)).length,trial:o.filter(s=>Ls(r,s)&&s.state==="trial").length,proven:o.filter(s=>Ls(r,s)&&s.state==="proven").length,history:o.filter(s=>!Ls(r,s)).length,tombstones:a.length}}}),remote:dC(await this.repository.remote?.()??null),sync:null}}async sync(){return this.repository.sync()}async testProvider(){return{ok:!0,message:"Local Provider is ready."}}async remote(){return dC(await this.repository.remote?.()??null)}async configureRemote(e){if(this.repository.configureRemote===void 0)throw new Error("Memory Git sync is unavailable");await this.repository.configureRemote(e)}async setLearningEnabled(e){await this.updateSettings(r=>({...r,learningEnabled:e}))}async setRetrievalEnabled(e){await this.updateSettings(r=>({...r,retrievalEnabled:e}))}async pauseProject(e,r){await this.pauseProjectLearning(e,r),await this.pauseProjectRetrieval(e,r)}async pauseProjectLearning(e,r){if(!/^[A-Za-z0-9][A-Za-z0-9._-]*$/u.test(e))throw new Error("Project key is invalid");await this.updateSettings(n=>{let i=new Set(n.pausedLearningProjects);return r?i.add(e):i.delete(e),{...n,pausedLearningProjects:[...i].sort(),pausedProjects:lC(i,new Set(n.pausedRetrievalProjects))}})}async pauseProjectRetrieval(e,r){if(!/^[A-Za-z0-9][A-Za-z0-9._-]*$/u.test(e))throw new Error("Project key is invalid");await this.updateSettings(n=>{let i=new Set(n.pausedRetrievalProjects);return r?i.add(e):i.delete(e),{...n,pausedRetrievalProjects:[...i].sort(),pausedProjects:lC(new Set(n.pausedLearningProjects),i)}})}async updateSettings(e){await this.repository.withLock(async()=>{let r=await this.loadAndReconcile();r.settings=e(r.settings),await this.persist(r)})}async loadAndReconcile(e,r){let n=await this.repository.readState(),i=sW(n);await this.flushPendingFileProjections(i),await this.prepareProjectFileBinding(i);let o=new Set;for(let c of Object.keys(i.projectFiles))o.add(c);let a=this.repository.projectFileBinding?.();a!==void 0&&o.add(a.projectKey);for(let c of i.records)c.scope==="project"&&c.projectKey!==void 0&&o.add(c.projectKey);for(let c of Object.keys(i.files)){let l=/^projects\/([A-Za-z0-9][A-Za-z0-9._-]*)\.md$/u.exec(c);l?.[1]!==void 0&&!Object.values(i.projectFiles).includes(c)&&o.add(l[1])}let s=e===void 0?[{scope:"global"},...[...o].map(c=>({scope:"project",projectKey:c})),...r!==void 0&&!o.has(r)?[{scope:"project",projectKey:r}]:[]]:[{scope:e,...e==="project"?{projectKey:r}:{}}];for(let c of s){if(c.scope==="project"&&c.projectKey===void 0)continue;let l=this.resolveMemoryFilePath(i,c.scope,c.projectKey),d=await this.repository.readText(l);if(aC(i,l,c.scope,c.projectKey,d,this.timestamp()),d!==null){let u=gW(d,i,c.scope,c.projectKey);u!==d&&await this.persistWithFileProjection(i,l,{content:u,baseHash:Wo(d),scope:c.scope,...c.projectKey===void 0?{}:{projectKey:c.projectKey},queuedAt:this.timestamp()})}}return i}async persist(e){await this.repository.writeState(e)}resolveMemoryFilePath(e,r,n){if(r==="global")return zg(r);if(n===void 0)throw new Error("Project memory requires a project key");let i=this.repository.projectFileBinding?.();return e.projectFiles[n]??(i?.projectKey===n?i.path:void 0)??zg(r,n)}async prepareProjectFileBinding(e){let r=this.repository.projectFileBinding?.();if(r===void 0)return;let i=Object.entries(e.projectFiles).some(([o,a])=>o!==r.projectKey&&a===r.path)?`projects/${r.projectName}-${r.projectKey.slice(-8)}.md`:r.path;e.projectFiles[r.projectKey]===void 0&&(e.projectFiles[r.projectKey]=i)}async writeRecordMarkdown(e,r,n,i){let o=this.resolveMemoryFilePath(e,r.scope,r.projectKey),a=await this.readStableFile(e,o,r.scope,r.projectKey),s=n?yW(a??"",n,r.text,r.category,i,r.scope,this.language):ny(a??"",r.category,r.text,r.scope,this.language);if(s!==a&&await this.readStableFile(e,o,r.scope,r.projectKey)!==a)throw new Error(`Memory file changed during update: ${o}`);await this.persistWithFileProjection(e,o,{content:s,baseHash:Wo(a),scope:r.scope,...r.projectKey===void 0?{}:{projectKey:r.projectKey},queuedAt:this.timestamp()})}async persistWithFileProjection(e,r,n){e.pendingFileProjections[r]=n,e.files[r]=hW(n.content,n.queuedAt),n.scope==="project"&&n.projectKey!==void 0&&(e.projectFiles[n.projectKey]=r),await this.persist(e);try{await this.flushPendingFileProjections(e)}catch{}}async flushPendingFileProjections(e){let r=Object.entries(e.pendingFileProjections);if(r.length!==0){for(let[n,i]of r){let o=await this.repository.readText(n),a=Wo(o),s=or(i.content);a!==s&&a===i.baseHash&&await this.repository.writeText(n,i.content)}for(let[n]of r)delete e.pendingFileProjections[n];await this.persist(e)}}async readStableFile(e,r,n,i){let o=await this.repository.readText(r),a=e.files[r]?.hash;if(a!==void 0&&Wo(o)!==a)throw aC(e,r,n,i,o,this.timestamp()),await this.persist(e),new Error(`Memory file changed during update: ${r}`);return o}updateRecordValue(e,r,n){let i=r.source??e.source,o={scope:r.scope,projectKey:r.projectKey,memoryClass:r.memoryClass??e.memoryClass,title:r.title??e.title,reason:r.reason??e.reason,category:r.category??e.category,text:r.text??e.text,memoryType:r.memoryType??e.memoryType,tags:r.tags??e.tags,pathPatterns:r.pathPatterns??e.pathPatterns,taskTypes:r.taskTypes??e.taskTypes,operations:r.operations??e.operations,phases:r.phases??e.phases,episode:r.episode??e.episode,candidateKey:r.candidateKey??e.candidateKey,language:r.language??e.language,source:i};return{...e,identity:Fr(o),memoryClass:o.memoryClass,...o.title===void 0?{}:{title:o.title},...o.reason===void 0?{}:{reason:o.reason},category:o.category,text:o.text,tags:Fe(o.tags),pathPatterns:Fe(o.pathPatterns),taskTypes:Fe(o.taskTypes),operations:Fe(o.operations),phases:Fe(o.phases),kind:n,authority:n,state:"proven",source:i,sources:Tu(e.sources,[i]),evidence:ly(e.evidence,cy(o.evidence,i,o.text,this.timestamp())),memoryType:o.memoryType??e.memoryType,...(o.memoryType??e.memoryType)==="personal-episode"?{episode:Mu(o.episode,o)}:{episode:void 0},updatedAt:this.timestamp()}}timestamp(){return this.now().toISOString()}};function sW(t){let e=r=>{let n=r.memoryType??Bs(r,r.kind),i={...r,phases:[...r.phases??[]],authority:r.authority??r.kind,evidence:(r.evidence??[]).map(Ks),memoryType:n,...n==="personal-episode"?{episode:Mu(r.episode,r)}:{}};if(r.scope==="global"&&r.projectKey!==void 0){let{projectKey:o,...a}=i;return{...a,identity:Fr(a)}}return{...i,identity:Fr(i)}};return{version:3,records:t.records.map(e),history:Object.fromEntries(Object.entries(t.history).map(([r,n])=>[r,n.map(e)])),observations:t.observations.map(r=>({...r,changeId:r.changeId??r.source.changeId??r.key,candidateKey:r.candidateKey??r.identity,...r.projectIdentity===void 0&&r.projectKey===void 0?{}:{projectIdentity:r.projectIdentity??r.projectKey}})),conflicts:[...t.conflicts],tombstones:RW(t),settings:{learningEnabled:t.settings.learningEnabled,retrievalEnabled:t.settings.retrievalEnabled,pausedProjects:[...t.settings.pausedProjects],pausedLearningProjects:[...t.settings.pausedLearningProjects??t.settings.pausedProjects??[]],pausedRetrievalProjects:[...t.settings.pausedRetrievalProjects??t.settings.pausedProjects??[]]},files:{...t.files},projectFiles:{...t.projectFiles??{}},evidence:t.evidence??{},appliedMutationIds:[...t.appliedMutationIds??[]],applicationOutcomes:{...t.applicationOutcomes??{}},feedbackState:{...t.feedbackState??{}},pendingFileProjections:{...t.pendingFileProjections??{}},learning:ey(t.learning),learningByProject:lW(t)}}function cW(t){return t.promoted?"candidate-promoted":t.candidate?"candidate-created":t.deduplicated?"deduplicated":t.ignored?"ignored":"skipped"}function tC(t){return{...t.projectKey===void 0?{}:{projectKey:t.projectKey},workflow:t.workflow,changeId:t.changeId}}function ey(t){let e=sy(t?.lastReason);return{...t??{},...e===void 0?{}:{lastReason:e},lastCheck:t?.lastCheck??"not-run",observedCount:t?.observedCount??0,validObservationCount:t?.validObservationCount??0}}function sy(t){let e=t?.trim();if(!(e===void 0||e.length===0))return e.length>ZP?`${e.slice(0,ZP-1)}…`:e}function lW(t){let e=Object.fromEntries(Object.entries(t.learningByProject??{}).map(([n,i])=>[n,ey(i)]));t.learning?.lastProjectKey!==void 0&&e[t.learning.lastProjectKey]===void 0&&(e[t.learning.lastProjectKey]=ey(t.learning));let r=Object.keys(e);return r.length>ju&&r.sort((n,i)=>{let o=e[n]?.lastCheckedAt??"",a=e[i]?.lastCheckedAt??"";return o.localeCompare(a)||n.localeCompare(i)}).slice(0,r.length-ju).forEach(n=>delete e[n]),e}function ty(t,e){return e===void 0?t.learning:t.learningByProject[e]??(t.learning?.lastProjectKey===e?t.learning:void 0)}function rC(t,e,r){t.learningByProject[e]=r;let n=Object.keys(t.learningByProject);n.length<=ju||n.sort((i,o)=>{let a=t.learningByProject[i]?.lastCheckedAt??"",s=t.learningByProject[o]?.lastCheckedAt??"";return a.localeCompare(s)||i.localeCompare(o)}).slice(0,n.length-ju).forEach(i=>delete t.learningByProject[i])}function dW(t,e){let r=ty(t,e),n=e===void 0?{observedCount:r?.observedCount??t.learning?.observedCount??0,validObservationCount:r?.validObservationCount??t.learning?.validObservationCount??0}:{observedCount:r?.observedCount??0,validObservationCount:r?.validObservationCount??0};return r===void 0?{...n,lastCheck:"not-run"}:{...n,...r}}function nC(t,e,r,n,i,o){let a=sy(o);return{lastCheckedAt:i,lastCheck:"submitted",lastResult:e.result??cW(e),...a===void 0?{}:{lastReason:a},...n?.projectKey===void 0?{}:{lastProjectKey:n.projectKey},...n?.workflow===void 0?{}:{lastWorkflow:n.workflow},...n?.changeId===void 0?{}:{lastChangeId:n.changeId},observedCount:(t?.observedCount??0)+1,validObservationCount:(t?.validObservationCount??0)+Number(r)}}function iC(t,e,r,n,i,o,a){let s=sy(a);return{...r===void 0?e==="submitted"&&t?.lastResult!==void 0?{lastResult:t.lastResult}:{}:{lastResult:r},...a===void 0?e==="submitted"&&t?.lastReason!==void 0?{lastReason:t.lastReason}:{}:s===void 0?{}:{lastReason:s},lastCheckedAt:i,lastCheck:e,...n?.projectKey===void 0?{}:{lastProjectKey:n.projectKey},...n?.workflow===void 0?{}:{lastWorkflow:n.workflow},...n?.changeId===void 0?{}:{lastChangeId:n.changeId},...o===void 0?{}:{submissionVerified:o},observedCount:t?.observedCount??0,validObservationCount:t?.validObservationCount??0}}function Yg(t){return t==="corrected"||t==="contributed-to-failure"}function Ho(t,e){return t.includes(e)?[...t]:[...t,e].slice(-1e4)}function Se(t){return{...t,tags:[...t.tags],pathPatterns:[...t.pathPatterns],taskTypes:[...t.taskTypes],operations:[...t.operations],phases:[...t.phases],evidence:t.evidence.map(Ks),...t.episode===void 0?{}:{episode:{...t.episode}},source:{...t.source},sources:t.sources.map(e=>({...e}))}}function uW(t,e){let r=t.evidence[e.id]??[],n=t.observations.filter(s=>r.includes(s.key)).map(s=>s.observedAt),i=t.tombstones.some(s=>wC(s,e)),o=Hs(t.conflicts,e),a=i?"tombstoned":o?"conflict":e.state;return{id:e.id,scope:e.scope,...e.projectKey===void 0?{}:{projectKey:e.projectKey},memoryClass:e.memoryClass??Pi(e),...e.title===void 0?{}:{title:e.title},...e.reason===void 0?{}:{reason:e.reason},category:e.category,text:e.text,tags:[...e.tags],pathPatterns:[...e.pathPatterns],taskTypes:[...e.taskTypes],operations:[...e.operations],phases:[...e.phases],...e.language===void 0?{}:{language:e.language},kind:e.kind,authority:e.authority,evidence:e.evidence.map(Ks),...e.episode===void 0?{}:{episode:{...e.episode}},memoryType:e.memoryType,applicationCount:e.applicationCount,successCount:e.successCount,failureCount:e.failureCount,...e.lastAppliedAt===void 0?{}:{lastAppliedAt:e.lastAppliedAt},status:a,evidenceCount:r.length,sourceKind:e.source.kind,lastConfirmedAt:[...n,e.updatedAt].sort().at(-1)??e.updatedAt,updatedAt:e.updatedAt,canRollback:(t.history[e.id]?.length??0)>0}}function Ls(t,e){return e.state==="superseded"||Hs(t.conflicts,e)?!1:!t.tombstones.some(r=>wC(r,e))}function pW(t,e){let r=[...t.recordIds??[]].sort();return r.length===0||!r.some(n=>e.has(n))?null:{texts:[...t.texts],updatedAt:t.updatedAt}}function ry(t,e,r,n,i){let o=t.memoryType??Bs(t,e);return{id:pC("sha256").update(`${i}
${T(t.text)}
${rW()}`).digest("hex").slice(0,24),identity:i,scope:t.scope,...t.projectKey===void 0?{}:{projectKey:t.projectKey},memoryClass:t.memoryClass??Pi(t),...t.title===void 0?{}:{title:t.title.trim()},...t.reason===void 0?{}:{reason:t.reason.trim()},category:t.category.trim(),text:t.text.trim(),tags:Fe(t.tags),pathPatterns:Fe(t.pathPatterns),taskTypes:Fe(t.taskTypes),operations:Fe(t.operations),phases:Fe(t.phases),...t.candidateKey===void 0?{}:{candidateKey:t.candidateKey},...t.language===void 0?{}:{language:t.language},kind:e,authority:e,evidence:cy(t.evidence,r,t.text,n),memoryType:o,...o==="personal-episode"?{episode:Mu(t.episode,t)}:{},state:e==="explicit"?"proven":"trial",applicationCount:0,successCount:0,failureCount:0,source:r,sources:[r],createdAt:n,updatedAt:n}}function Xg(t,e,r){return{...t,source:t.source,sources:Tu(t.sources,[e]),evidence:ly(t.evidence,cy(void 0,e,t.text,r)),updatedAt:r}}function Tu(t,e){let r=[...t];for(let n of e)r.some(i=>JSON.stringify(i)===JSON.stringify(n))||r.push(n);return r.slice(-aW)}function cy(t,e,r,n){let i=e.label??e.changeId??e.workflow??e.projectKey,o=pC("sha256").update(JSON.stringify({source:e,text:T(r)})).digest("hex"),a={id:`memory-evidence:${o.slice(0,20)}`,kind:e.kind==="user"?"user":e.kind==="repository"?"source":e.kind==="review"?"review":"outcome",summary:r.slice(0,500),...i===void 0?{}:{source:i},digest:o,success:!0};return ly(t??[],[a])}function ly(t,e){let r=new Map;for(let n of[...t,...e]){let i=Ks(n);r.set(i.digest??i.id,i)}return[...r.values()].slice(-32)}function Ks(t){return{...t}}function Ft(t,e){let r=!1,n=t.map(i=>i.id!==e.id?i:(r=!0,e));return r?n:[...n,e]}function $u(t,e){t.history[e.id]=[...t.history[e.id]??[],{...e}].slice(-10)}function Qg(t,e){let r=t.records.filter(n=>n.identity===e&&n.kind==="inferred"&&n.state==="trial");for(let n of r)t.records=t.records.filter(i=>i.id!==n.id),delete t.evidence[n.id];t.conflicts=t.conflicts.filter(n=>n.identity!==e)}function T(t){return t.normalize("NFC").replace(/\s+/gu," ").trim().toLocaleLowerCase()}function Fe(t){return[...new Set((t??[]).map(e=>e.trim()).filter(Boolean))].sort()}function Fr(t){let e=t.candidateKey===void 0?["category",T(t.category)]:["candidate",t.candidateKey];return JSON.stringify([t.scope,t.scope==="project"?t.projectKey??"":"",t.memoryType??"",t.memoryClass??Pi(t),e,Fe(t.tags),Fe(t.pathPatterns),Fe(t.taskTypes),Fe(t.operations),Fe(t.phases)])}function oC(t){return Fr({...t,candidateKey:void 0})}function fW(t,e,r){return JSON.stringify([e??"",t.changeId.trim(),r])}function mW(t,e){return{scope:t.scope,...t.scope==="project"&&t.projectKey!==void 0?{projectKey:t.projectKey}:{},...t.memoryType===void 0?{}:{memoryType:t.memoryType},memoryClass:t.memoryClass??Pi(t),...t.language===void 0?{}:{language:t.language},...t.title===void 0?{}:{title:t.title},...t.reason===void 0?{}:{reason:t.reason},category:t.category,text:t.text,tags:t.tags,pathPatterns:t.pathPatterns,taskTypes:t.taskTypes,operations:t.operations,phases:t.phases,evidence:t.evidence,episode:t.episode,candidateKey:t.candidateKey,source:e}}function hW(t,e){return{hash:or(t),observedAt:e}}function Wo(t){return t===null?"":or(t)}function mC(t){let e=t.replace(/\r\n?/gu,`
`).split(`
`),r="其他",n=[];return e.forEach((i,o)=>{let a=/^(?:#{2,6})\s+(.+?)\s*#*\s*$/u.exec(i);a&&(r=a[1].trim());let s=/^\s*[-*+]\s+(.+?)\s*$/u.exec(i);s&&s[1].trim().length>0&&n.push({category:r,text:s[1].trim(),line:o})}),n}function aC(t,e,r,n,i,o){let a=i===null?"":or(i);if(t.files[e]?.hash===a)return;let c=i===null?[]:mC(i),l=t.records.filter(u=>u.scope===r&&u.projectKey===n);for(let u of l){if(u.state==="superseded")continue;c.some(f=>T(f.text)===T(u.text))||($u(t,u),t.records=Ft(t.records,{...u,state:"superseded",updatedAt:o}),delete t.evidence[u.id],t.tombstones=ay(t.tombstones,{identity:u.identity,scope:u.scope,...u.projectKey===void 0?{}:{projectKey:u.projectKey},recordId:u.id,textHash:bt(u.text),reason:"markdown-delete",removedAt:o}))}let d=new Set;for(let u of c){let p=T(u.text);if(d.has(p)||(d.add(p),bC(t.tombstones,r,n,u.text)))continue;let f=l.find(w=>w.state!=="superseded"&&T(w.text)===p);if(f!==void 0){if(T(f.category)!==T(u.category)){$u(t,f);let w={scope:r,...n?{projectKey:n}:{},memoryType:f.memoryType,memoryClass:f.memoryClass,category:u.category,text:u.text,tags:f.tags,pathPatterns:f.pathPatterns,taskTypes:f.taskTypes,operations:f.operations,source:{kind:"user"}};t.records=Ft(t.records,{...f,identity:Fr(w),category:u.category,kind:"explicit",source:{kind:"user"},sources:Tu(f.sources,[{kind:"user"}]),updatedAt:o}),xi(t,f.identity,f.text)}continue}let m={scope:r,...n?{projectKey:n}:{},memoryType:Bs({scope:r,category:u.category},"explicit"),category:u.category,text:u.text},g=Fr(m);xi(t,g,m.text);let h=ry(m,"explicit",m.source??{kind:"user"},o,g);t.records.push(h)}t.files[e]={hash:a,observedAt:o}}function gW(t,e,r,n){let i=new Set(mC(t).filter(o=>bC(e.tombstones,r,n,o.text)&&!e.records.some(a=>Ls(e,a)&&a.scope===r&&a.projectKey===n&&T(a.category)===T(o.category)&&T(a.text)===T(o.text))).map(o=>o.line));return i.size===0?t:t.replace(/\r\n?/gu,`
`).split(`
`).filter((o,a)=>!i.has(a)).join(`
`)}function ny(t,e,r,n,i){let o=`## ${e.trim()}`;if(t.trim().length===0)return`${n==="global"?i==="en"?"# Personal Profile":"# 个人画像":i==="en"?"# Project Memory":"# 项目记忆"}
${o}
- ${r.trim()}
`;let a=t.replace(/\r\n?/gu,`
`).split(`
`),s=a.findIndex(l=>T(l.replace(/^#{2,6}\s+/u,""))===T(e)&&/^#{2,6}\s+/u.test(l));if(s===-1)return`${t.endsWith(`
`)?t:`${t}
`}
${o}
- ${r.trim()}
`;let c=a.length;for(let l=s+1;l<a.length;l+=1)if(/^#{1,6}\s+/u.test(a[l]??"")){c=l;break}return a.splice(c,0,`- ${r.trim()}`),`${a.join(`
`).replace(/\n*$/u,"")}
`}function yW(t,e,r,n,i,o,a){let s=t.replace(/\r\n?/gu,`
`).split(`
`),c=s.findIndex(l=>{let d=/^\s*([-*+])\s+(.+?)\s*$/u.exec(l);return d!==null&&T(d[2])===T(e)});if(c>=0){if(i!==void 0&&T(i)!==T(n))return s.splice(c,1),ny(`${s.join(`
`).replace(/\n*$/u,"")}
`,n,r,o,a);let l=/^\s*([-*+])\s+/u.exec(s[c]??"")?.[1]??"-";return s[c]=`${l} ${r.trim()}`,`${s.join(`
`).replace(/\n*$/u,"")}
`}return ny(t,n,r,o,a)}function sC(t,e,r){let n=t.replace(/\r\n?/gu,`
`).split(`
`),i="其他",o=n.findIndex(a=>{let s=/^(?:#{2,6})\s+(.+?)\s*#*\s*$/u.exec(a);if(s)return i=s[1].trim(),!1;let c=/^\s*[-*+]\s+(.+?)\s*$/u.exec(a);return c!==null&&T(c[1])===T(e)&&(r===void 0||T(i)===T(r))});return o<0?t:(n.splice(o,1),`${n.join(`
`).replace(/\n*$/u,"")}
`)}function vW(t,e,r,n){let i=t.records.filter(p=>p.state!=="superseded"&&(p.state!=="trial"||hC(t,p))).filter(p=>!Hs(t.conflicts,p)),o=i.filter(gC).sort((p,f)=>Ou(p)-Ou(f)||iy(p,f,e)),a=cC(o,r),s=new Set(a.records.map(p=>p.id)),c=e.view==="profile"?{records:[],truncated:!1}:cC(i.filter(p=>!s.has(p.id)).filter(p=>_u(p,e)).filter(p=>oy(p,e)).map(p=>({record:p,score:vC(p,e)})).filter(({score:p})=>p>0||e.query===void 0).sort((p,f)=>f.score-p.score||iy(p.record,f.record,e)).map(({record:p})=>p),n),l=Fs(a.records),d=Fs(c.records),u=[l?`## User Profile
${l}`:"",d?`## Relevant personal memory
${d}`:""].filter(Boolean);return{records:[...a.records,...c.records].map(Se),text:u.join(`
`),truncated:a.truncated||c.truncated,disabled:!1,profileRecords:a.records.map(Se),profileText:l,taskRecords:c.records.map(Se),taskText:d,profileTruncated:a.truncated,taskTruncated:c.truncated}}function hC(t,e){return(t.evidence[e.id]??[]).length>0}function wW(t){let e=t.records.filter(r=>r.state!=="superseded").filter(r=>!Hs(t.conflicts,r)).filter(gC).sort((r,n)=>Ou(r)-Ou(n)||iy(r,n,{view:"profile"}));return yC(Fs(e))}function gC(t){if(t.scope!=="global"||t.memoryType!=="core-profile"||t.pathPatterns.length>0||t.taskTypes.length>0||t.operations.length>0||t.phases.length>0)return!1;let e=t.memoryClass??Pi(t);return e==="user-fact"||e==="user-preference"||e==="collaboration-habit"}function Ou(t){switch(t.memoryClass??Pi(t)){case"user-fact":return 0;case"user-preference":return 1;case"collaboration-habit":return 2;default:return 3}}function Pi(t){return t.memoryClass!==void 0?t.memoryClass:t.scope==="project"?"project-convention":/(?:用户事实|身份|姓名|角色|时区|user\s*fact|identity|timezone)/iu.test(t.category)?"user-fact":/(?:协作|习惯|workflow|collaboration|habit)/iu.test(t.category)?"collaboration-habit":"user-preference"}function Bs(t,e){let r=t.memoryClass??Pi(t);return e==="inferred"?r==="collaboration-habit"||r==="project-convention"?"collaboration-policy":"personal-episode":r==="user-fact"||r==="user-preference"?"core-profile":"collaboration-policy"}function bW(t){return t==="core-profile"||t==="collaboration-policy"||t==="personal-episode"}function kW(t){if(t===null||typeof t!="object"||Array.isArray(t))return;let e=t;if(!(typeof e.situation!="string"||typeof e.actionSummary!="string"||typeof e.outcome!="string"||typeof e.lesson!="string"))return{situation:e.situation,actionSummary:e.actionSummary,outcome:e.outcome,lesson:e.lesson}}function cC(t,e){let r=[],n=!1;for(let i of t){let o=[...r,i];if(yC(Fs(o))>Ds(e,fC)){n=!0;continue}r.push(i)}return{records:r,truncated:n}}function iy(t,e,r){return e.updatedAt.localeCompare(t.updatedAt)||t.id.localeCompare(e.id)}function yC(t){return Array.from(t).length}function _u(t,e){return!(e.scope!==void 0&&t.scope!==e.scope||t.scope==="project"&&t.projectKey!==e.projectKey||t.scope==="global"&&e.scope==="project")}function oy(t,e,r=!1){if(e.task!==void 0&&t.taskTypes.length>0&&!kt(t.taskTypes,e.task)||e.path!==void 0&&t.pathPatterns.length>0&&!kt(t.pathPatterns,e.path)||e.operation!==void 0&&t.operations.length>0&&!kt(t.operations,e.operation)||t.phases.length>0&&(e.phase===void 0?!r:!kt(t.phases,e.phase))||e.category!==void 0&&!kt([t.category],e.category)||e.tags!==void 0&&!e.tags.every(n=>kt(t.tags,n)))return!1;if(e.query!==void 0){let n=e.query.split(/\s+/u).map(T).filter(Boolean);if(n.length>0){let i=T([t.category,t.text,...t.tags].join(" "));if(!n.every(o=>i.includes(o)))return!1}}return!0}function kt(t,e){let r=T(e);return t.some(n=>{let i=T(n);if(i===r||i.includes(r))return!0;if(!i.includes("*"))return!1;let o=`^${i.split("*").map(SW).join(".*")}$`;return new RegExp(o,"u").test(r)})}function SW(t){return t.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}function vC(t,e){let r=t.kind==="explicit"?100:60;if(r+=t.state==="proven"?200:0,r+=Math.min(t.successCount,5)*20,r-=Math.min(t.failureCount,5)*40,t.scope==="project"&&(r+=50),e.task!==void 0&&kt(t.taskTypes,e.task)&&(r+=25),e.path!==void 0&&kt(t.pathPatterns,e.path)&&(r+=25),e.operation!==void 0&&kt(t.operations,e.operation)&&(r+=25),e.phase!==void 0&&kt(t.phases,e.phase)&&(r+=25),e.category!==void 0&&kt([t.category],e.category)&&(r+=20),e.tags!==void 0&&(r+=e.tags.filter(n=>kt(t.tags,n)).length*15),e.query!==void 0){let n=e.query.split(/\s+/u).map(T).filter(Boolean),i=T([t.category,t.text,...t.tags].join(" "));for(let o of n)i.includes(o)&&(r+=10)}return r}function Mu(t,e){let r=e.evidence??[],n=r.map(s=>s.summary.trim()).filter(Boolean).join(";"),i=r.some(s=>s.success===!0),o=r.some(s=>s.success===!1),a=e.language==="en";return{situation:t?.situation.trim()||e.title?.trim()||e.category.trim(),actionSummary:t?.actionSummary.trim()||n||e.text.trim(),outcome:t?.outcome.trim()||(o?a?"Unsuccessful":"未成功":i?a?"Successful":"成功":e.reason?.trim()||(a?"Observed":"已记录")),lesson:t?.lesson.trim()||e.text.trim()}}function Fs(t){let e=new Map;for(let r of t)e.set(r.category,[...e.get(r.category)??[],r]);return[...e.entries()].map(([r,n])=>`## ${r}
${n.map(i=>`- ${i.text}`).join(`
`)}`).join(`
`)}function NW(t,e){return e!==void 0&&t.pausedRetrievalProjects.includes(e)}function lC(t,e){return[...new Set([...t,...e])].sort()}function dC(t){if(t===null)return null;try{let e=new URL(t);return(e.username||e.password)&&(e.username=e.username?"***":"",e.password=e.password?"***":""),e.toString().replace(/\/$/u,"")}catch{return t.replace(/(\/\/)[^/@]+@/u,"$1***@")}}function Ds(t,e){return Number.isSafeInteger(t)&&t>0?t:e}function Zg(t,e,r,n){let i=[...new Set(r.filter(s=>s.identity===e).map(s=>s.text))].sort(),o=[...new Set(r.map(s=>s.id))].sort(),a={identity:e,texts:i,recordIds:o,updatedAt:n};return[...t.filter(s=>s.identity!==e),a]}function Hs(t,e){return e.kind!=="inferred"?!1:t.some(r=>r.identity===e.identity&&(r.recordIds===void 0||r.recordIds.includes(e.id)))}function EW(t,e){return t==="project"?new Set(e.map(r=>r.changeId)).size:new Set(e.map(r=>r.projectIdentity??r.projectKey).filter(r=>r!==void 0&&r.length>0)).size}function ay(t,e){return[...t.filter(r=>r.identity!==e.identity||r.textHash!==e.textHash),e]}function wC(t,e){return t.recordId===e.id||t.identity===e.identity&&(t.textHash===void 0||t.textHash===bt(e.text)||t.textHash===or(e.text))}function xi(t,e,r){t.tombstones=t.tombstones.filter(n=>n.identity!==e||n.textHash!==void 0&&n.textHash!==bt(r)&&n.textHash!==or(r))}function bC(t,e,r,n){let i=bt(n),o=or(n);return t.some(a=>a.scope===e&&a.projectKey===r&&a.textHash!==void 0&&(a.textHash===i||a.textHash===o))}function bt(t){return or(T(t).replace(/\s+/gu,""))}function kC(t,e){if(t.scope==="project"&&t.projectKey===void 0)throw new Error("Project memory requires a project key");if(t.scope==="project"&&!/^[A-Za-z0-9][A-Za-z0-9._-]*$/u.test(t.projectKey??""))throw new Error("Project key is invalid");if(t.category.trim().length===0||t.text.trim().length===0)throw new Error("Memory category and text are required");if(t.candidateKey!==void 0&&!/^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$/u.test(t.candidateKey))throw new Error("Memory candidate key is invalid");ar(t.category),ar(t.text);for(let[r,n]of[["title",t.title],["reason",t.reason]])if(n!==void 0){if(n.trim().length===0)throw new Error(`Memory ${r} must not be empty`);ar(n),e!==void 0&&Ei(n,e,r)}NC(t),SC(t.episode,e)}function uC(t,e){for(let[r,n]of[["title",t.title],["reason",t.reason],["text",t.text],["category",t.category]])if(n!==void 0){if(T(n).length===0)throw new Error(`Memory correction ${r} must not be empty`);ar(n),e!==void 0&&r!=="text"&&Ei(n,e,`correction.${r}`)}NC(t),SC(t.episode,e)}function xW(t,e){return(e.title===void 0||e.title===t.title)&&(e.reason===void 0||e.reason===t.reason)&&(e.text===void 0||e.text===t.text)&&(e.category===void 0||e.category===t.category)&&(e.memoryType===void 0||e.memoryType===t.memoryType)&&(e.memoryClass===void 0||e.memoryClass===t.memoryClass)&&(e.tags===void 0||Ms(e.tags,t.tags))&&(e.pathPatterns===void 0||Ms(e.pathPatterns,t.pathPatterns))&&(e.taskTypes===void 0||Ms(e.taskTypes,t.taskTypes))&&(e.operations===void 0||Ms(e.operations,t.operations))&&(e.phases===void 0||Ms(e.phases,t.phases))}function SC(t,e){if(t!==void 0)for(let[r,n]of Object.entries(t)){if(n.trim().length===0)throw new Error(`Memory episode ${r} must not be empty`);ar(n),e!==void 0&&Ei(n,e,`episode.${r}`)}}function Ms(t,e){return t.length===e.length&&t.every((r,n)=>r===e[n])}function NC(t){for(let[e,r]of[["tags",t.tags],["pathPatterns",t.pathPatterns],["taskTypes",t.taskTypes],["operations",t.operations],["phases",t.phases]])if(r!==void 0){if(r.length>32)throw new Error(`Memory ${e} exceeds the collection limit`);r.forEach(n=>{ar(n)})}}function PW(t){if(kC(t,t.language),t.workflow.trim().length===0||t.changeId.trim().length===0)throw new Error("Observation workflow and change ID are required");if(t.candidateKey!==void 0&&!/^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$/u.test(t.candidateKey))throw new Error("Observation candidate key is invalid");if(t.projectIdentity!==void 0&&t.projectIdentity.trim().length===0)throw new Error("Observation project identity is invalid")}function CW(t){if(t.language===void 0)return!1;try{[t.category,t.text,...t.tags??[],...t.pathPatterns??[],...t.taskTypes??[],...t.operations??[],...t.phases??[]].forEach(r=>ar(r)),Ei(t.category,t.language,"observation.category"),Ei(t.text,t.language,"observation.text"),(t.tags??[]).forEach((r,n)=>Ei(r,t.language,`observation.tags[${n}]`))}catch{return!1}let e=T([t.category,t.text,...t.tags??[]].join(" "));return!(Buffer.byteLength(e,"utf8")<8||/(?:diff --git|@@\s+-\d|\+\+\+\s+[ab]\/|---\s+[ab]\/|stack trace|traceback|stderr|stdout|debug log|npm warn)/iu.test(e)||/^(?:运行|执行|完成|通过|失败|已完成)?\s*(?:测试|test|命令|command|commit|提交|pull request|pr|issue)(?:\s|$)/iu.test(e)||/^(?:change|任务)\s*[:#-]?\s*\S+\s+(?:completed|完成|done)$/iu.test(e))}function RW(t){let e=[...t.records,...Object.values(t.history).flat()];return(t.tombstones??[]).map(r=>{if(r.textHash!==void 0)return{...r};let n=e.find(i=>i.id===r.recordId);return n===void 0?{...r}:{...r,textHash:bt(n.text)}})}import{randomUUID as DW}from"node:crypto";var AW=/(?:完成命令检查点|完成工作流检查点|本次请求|one-time request|test checkpoint|command checkpoint|(?:workflow|command|task|change)\s+(?:checkpoint\s+)?completed)/iu,_W=/^(?:请(?:帮我)?|帮我|修复|实现|处理|解决).{0,120}(?:页面|样式|问题|bug|错误|命令|测试|提交|检查|本次|此次|这个|当前|文件|任务)$/iu,jW=/^(?:(?:本次|已经|已)\s*)?(?:完成|实现|修复|处理|解决|更新|新增|添加|移除|删除|重构|验证|合并|提交|推送|构建|发布|优化|调整|改为|改成|completed|implemented|fixed|resolved|updated|added|removed|deleted|refactored|verified|merged|committed|pushed|built|released|optimized|changed)\s*.{2,200}$/iu,IW=/(?:偏好|习惯|约定|以后|后续|始终|总是|默认|每次|必须|不得|不要|避免|优先|只|统一|保持|提交前|写入前|发布前|运行前|(?:完成|修改|实现|验证)后(?:先|再|应|要|必须|运行|执行)|prefer|preference|always|never|by default|every time|must(?:\s+not)?|avoid|before|after|when|keep)/iu,TW=/(?:password|secret|token|api[_ -]?key|bearer|ignore previous|system prompt|private key|密码|密钥|令牌|忽略之前|系统提示)/iu;function Lu(t){let e=Au(t);if(e.explicitRequest!==void 0)return Ko(e,{schema:"comet.memory.actions.v1",actions:[$W(e,e.explicitRequest)]});if(e.category!==void 0&&OW(e.category)||e.userEvidence.some(n=>dy(n))||e.userEvidence.length===0&&e.evidence.some(n=>n.text!==void 0&&dy(n.text)))return Ko(e,{schema:"comet.memory.actions.v1",actions:[Ci(e,"这是一次性命令、测试或运行产物,不保存为长期记忆")]});let r=MW(e);return Ko(e,{schema:"comet.memory.actions.v1",actions:[r]})}function $W(t,e){let r=t.language,n={reason:e.reason??(r==="en"?"Requested directly by the user":"由用户明确要求,立即更新个人记忆"),title:e.title??(r==="en"?"Personal memory":"个人记忆")};if(e.action==="remember"){let a=e.text;if(a===void 0)return Ci(t,PC(r,"显式记忆缺少正文"));let s=EC(t,e.scope,e.projectKey),c=e.scope??s[0]?.scope??"project",l=c==="project"?e.projectKey??s[0]?.projectKey??t.projectKey:void 0;return{action:"create",language:r,scope:c,...l===void 0?{}:{projectKey:l},category:e.category??CC(r),text:a,...e.memoryClass===void 0?{}:{memoryClass:e.memoryClass},...n,evidenceKeys:s.map(d=>d.key),...xC(e)}}let i=t.memories.find(a=>a.id===e.targetId);if(i===void 0||e.targetId===void 0)return Ci(t,PC(r,"找不到需要处理的目标记忆"));let o=EC(t,i.scope,i.projectKey);return e.action==="forget"?{action:"forget",language:r,targetId:e.targetId,...e.permanent===void 0?{}:{permanent:e.permanent},reason:e.reason??(r==="en"?"Requested directly by the user":"由用户明确要求忘记"),title:n.title,evidenceKeys:o.map(a=>a.key)}:{action:"update",language:r,targetId:e.targetId,...e.scope===void 0?{}:{scope:e.scope},...e.projectKey===void 0?{}:{projectKey:e.projectKey},...n,...e.text===void 0?{}:{text:e.text},...e.category===void 0?{}:{category:e.category},...e.memoryClass===void 0?{}:{memoryClass:e.memoryClass},evidenceKeys:o.map(a=>a.key),...xC(e)}}function EC(t,e,r){return t.evidence.filter(n=>n.success&&(e===void 0||n.scope===e)&&(e!=="project"||n.projectKey===r))}function xC(t){return Object.fromEntries(["tags","pathPatterns","taskTypes","operations","phases"].filter(e=>t[e]!==void 0).map(e=>[e,t[e]]))}function CC(t){return t==="en"?"Reusable preference":"可复用偏好"}function PC(t,e){return t==="en"?"The explicit memory request is incomplete":e}function OW(t){let e=t.trim().toLocaleLowerCase();return["测试","命令","变更","差异","日志","输出","安全","用户请求","一次性请求","一次性选择","任务请求","工作流检查点","checkpoint","workflow checkpoint","test","command","change","pr","issue","log","diff","security"].some(r=>e===r||e.startsWith(`${r} `)||e.startsWith(`${r}:`))}function MW(t){let e=t.evidence.filter(c=>c.success),r=LW(t,e);if(r===void 0)return Ci(t,"没有发现可长期复用的用户偏好");if(TW.test(r))return Ci(t,"内容包含敏感信息或不可持久化的运行产物");let n=e.filter(c=>c.text===void 0||c.text===r),i=n.length>0?n:e,o=i[0];if(o===void 0)return Ci(t,"没有成功证据支持这条记忆");let a=o.scope,s=a==="project"?o.projectKey??t.projectKey:void 0;return a==="project"&&s===void 0?Ci(t,"项目记忆缺少稳定的项目范围"):{action:"create",language:t.language,scope:a,...s===void 0?{}:{projectKey:s},...o.candidateKey===void 0?{}:{candidateKey:o.candidateKey},...o.memoryClass===void 0?{}:{memoryClass:o.memoryClass},category:t.category??o.category??CC(t.language),text:r,title:t.language==="en"?"Reusable workflow preference":"可复用协作偏好",reason:t.language==="en"?"Validated by a successful change and safe to reuse in later tasks":"已通过成功变更验证,后续任务可以复用",evidenceKeys:i.map(c=>c.key),...o.tags===void 0?{}:{tags:o.tags},...o.pathPatterns===void 0?{}:{pathPatterns:o.pathPatterns},...o.taskTypes===void 0?{}:{taskTypes:o.taskTypes},...o.operations===void 0?{}:{operations:o.operations}}}function LW(t,e){let r=[...t.userEvidence,...e.map(n=>n.text).filter(n=>n!==void 0)];for(let n of r){let i=n.trim();if(!(i.length<4||dy(i))){try{ar(i)}catch{continue}return i}}}function dy(t){let e=t.trim();return AW.test(e)||_W.test(e)||jW.test(e)&&!IW.test(e)}function Ci(t,e){return{action:"skip",language:t.language,reason:e}}async function RC(t,e){return e===void 0?Lu(t):e(t)}var Ri="comet.personal-memory",BW={learning:!0,retrieval:!0};function jC(t){return{id:Ri,kind:"first-party",version:t.version??"1.0.0",scopes:["user","project"],compatible:t.cometVersionRange??(()=>!0),create:async e=>FW(e,t)}}async function FW(t,e){let r=e.createService(t),n=GW(r),i=e.projectPolicy??BW,o=[],a=new Set,s=new Set,c=async h=>{o.length>=8&&o.shift(),o.push(h);try{await e.onReviewNotice?.(h)}catch{}},l=async h=>{try{return{actions:await RC(h,e.runMemoryReview),deferred:!1}}catch{return h.explicitRequest!==void 0?{actions:Lu(h),deferred:!1}:{actions:{schema:"comet.memory.actions.v1",actions:[{action:"skip",language:h.language,reason:h.language==="en"?"Memory review was unavailable and has been deferred.":"记忆评审暂不可用,已延后处理。"}]},deferred:!0}}},d=async(h,w)=>{let y;try{y=await n.status()}catch{return}if(y.learningEnabled===!1)return w==="en"?"Personal memory learning is disabled.":"个人记忆学习已关闭。";if(h!==void 0&&y.pausedLearningProjects.includes(h))return w==="en"?"Personal memory learning is paused for this project.":"当前项目已暂停个人记忆学习。"},u=async h=>{let w=await d(h.projectKey,h.language);if(w!==void 0)return await r.markLearningCheck?.("submitted","ignored",{...h.projectKey===void 0?{}:{projectKey:h.projectKey},workflow:h.workflow,changeId:h.changeId},w),w},p=async h=>{if(h.explicitRequest!==void 0)return null;let w=await u({projectKey:h.projectKey,language:h.language,workflow:h.workflow,changeId:h.changeId});return w===void 0?null:{action:"skip",persisted:!1,reason:w,observation:{deduplicated:!1,ignored:!0,candidate:!1,promoted:!1,record:null,result:"ignored"}}},f=async h=>{let w=await p(h);if(w!==null)return w;let y=await l(h),{actions:v}=y,b=await n.apply({operation:"review",input:{packet:h,actions:v}}),k=py(b);if(h.explicitRequest===void 0&&k!==void 0&&!b.persisted&&await r.markLearningCheck?.("submitted",y.deferred?"deferred":k,{...h.projectKey===void 0?{}:{projectKey:h.projectKey},workflow:h.workflow,changeId:h.changeId},b.reason),h.explicitRequest!==void 0&&!b.persisted)throw new Error(b.reason??"Explicit personal memory request was not persisted.");let S=h.explicitRequest?.action;if(S!==void 0&&b.persisted&&await c(h.language==="en"?S==="remember"?"Personal memory saved.":S==="correct"?"Personal memory updated.":"Personal memory forgotten.":S==="remember"?"个人记忆已保存。":S==="correct"?"个人记忆已更新。":"个人记忆已忘记。"),S===void 0&&TC(b))try{let E=await n.query({view:"manage",query:h.projectKey===void 0?{scope:"global"}:{scope:"project",projectKey:h.projectKey}});for(let N of E.conflicts){let P=`${N.updatedAt}:${N.texts.join("\0")}`;a.has(P)||(a.add(P),await c(h.language==="en"?"Conflicting memory evidence needs your review.":"发现相互冲突的记忆证据,请在记忆管理中确认。"))}}catch{}return y.deferred?{...b,deferred:!0}:b},m=async h=>await n.query({view:zW(h.view),query:h}),g=async h=>{let w=await m(h),y=w.records.some(v=>!s.has(v.id));return w.records.forEach(v=>s.add(v.id)),y&&await c(e.language==="en"?"A saved preference was applied to this task.":"这次任务已应用一条已保存的协作偏好。"),w};return{events:["user.signal","episode.completed","review.resolved","verification.completed","failure.resolved","change.archived","context.outcome"],dashboard:{id:"personal-memory",label:e.language==="en"?"Personal Memory":"个人记忆",route:"/plugins/personal-memory",load:async({projectId:h,invoke:w})=>{let[y,v,b,k,S]=await Promise.all([w("status"),e.getProviderConfig?.(),m({view:"combined",projectKey:h}),w("manage",{projectKey:h}),e.listContextApplications?.()]),E=k,N={...E,records:E.records.map(j=>({...j,...KW(j.id,S??[],Ri)}))},P=HW(S??[],Ri),_=new Map(N.records.filter(j=>j.status==="trial"||j.status==="proven").map(j=>[j.id,j]));return{projectKey:h,policy:i,status:y,providerConfig:v,retrieval:b,management:N,manifestPreview:P.flatMap(j=>{let x=_.get(j.candidateId);return x===void 0?[]:[{id:x.id,memoryType:x.memoryType,state:x.status,title:x.title??x.category,summary:x.text,whyApplied:j.whyApplied,applicationCount:x.applicationCount,successCount:x.successCount,failureCount:x.failureCount,delivery:j.delivery,appliedAt:j.appliedAt,...j.outcome===void 0?{}:{outcome:j.outcome},lastApplication:j}]}),operations:["remember","manage","correct","remove","rollback","sync","remote","configure-remote","set-learning","set-retrieval","learning-check","pause-project-learning","pause-project-retrieval","get-provider-config","test-provider","configure-provider"],notifications:o.splice(0)}}},reflect:async h=>{if(!i.learning)return[];let w=[],y=!1;for(let v of hu(h)){if(v.type==="context.outcome"&&v.outcome!==void 0){for(let k of bu(v.outcome.unitIds,Ri))w.push({action:"update",owner:Ri,targetId:k,memoryType:"collaboration-policy",kind:"application-feedback",statement:v.outcome.summary??`Context outcome: ${v.outcome.status}`,applicability:$C(v),evidence:v.evidence,...v.outcome.applicationId===void 0||v.outcome.revision===void 0?{}:{feedback:{applicationId:v.outcome.applicationId,status:v.outcome.status,...v.outcome.previousStatus===void 0?{}:{previousStatus:v.outcome.previousStatus},revision:v.outcome.revision}},recommendedState:v.outcome.status==="corrected"||v.outcome.status==="contributed-to-failure"?"superseded":"proven"});continue}let b=JW(v,e.language);b!==null&&await(async()=>{if(await u({projectKey:b.projectKey,language:b.language??e.language??"zh-CN",workflow:b.workflow,changeId:b.changeId})!==void 0)return;let E=await fy(n,b,v.type,e.language),N=await l(E);y||=N.deferred;let P=N.deferred?"deferred":N.actions.actions.every(_=>_.action==="skip")?"skipped":void 0;if(P!==void 0){let _=N.actions.actions.find(j=>j.reason!==void 0)?.reason;await r.markLearningCheck?.("submitted",P,{...v.scope==="project"&&v.projectId===void 0?{}:{projectKey:v.projectId},workflow:b.workflow,changeId:b.changeId},_)}w.push(...UW(E,N.actions,v))})()}return{deltas:w,deferred:y}},consolidate:async({deltas:h})=>{for(let{delta:w,idempotencyKey:y}of h){let v=w.authority==="explicit"||w.authority==="user"?void 0:{...w.applicability.projectId===void 0?{}:{projectKey:w.applicability.projectId},language:w.payload?.kind==="memory-action"&&(w.payload.language==="en"||w.payload.language==="zh-CN")?w.payload.language:e.language??"zh-CN"};await n.apply({operation:"experience-delta",input:{delta:w,idempotencyKey:y,...v===void 0?{}:{automaticLearning:v}}})}},provideContext:async h=>{if(!i.retrieval)return null;let w=await g({view:"combined",projectKey:h.projectId??t.projectId,task:h.task,path:h.path,operation:h.operation,phase:h.phase});return w.disabled||w.records.length===0?null:w.records.map(y=>_C(y,h))},resolveContext:async(h,w)=>{let y=await n.query({view:"expand",query:{id:h,projectKey:w.projectId??t.projectId}}),v="kind"in y&&y.kind==="expand"?y.record:null;return v===null||v.state==="superseded"?null:_C(v,w)},invoke:async(h,w)=>WW(n,r,h,w,e.language,i,f,g,e.getProviderConfig,e.configureProvider,t.projectId??e.projectId)}}function KW(t,e,r){let n=e.filter(i=>i.owner===r&&i.candidateId===t).sort((i,o)=>o.appliedAt.localeCompare(i.appliedAt));return n[0]===void 0?{}:{contextApplicationCount:n.length,lastApplication:n[0],applicationHistory:n}}function HW(t,e){let r=t.filter(i=>i.owner===e).sort((i,o)=>o.appliedAt.localeCompare(i.appliedAt)),n=r[0]?.episodeId;return n===void 0?[]:r.filter(i=>i.episodeId===n).sort((i,o)=>i.applicationId.localeCompare(o.applicationId))}async function WW(t,e,r,n,i,o,a,s,c,l,d){switch(r){case"remember":{let u=Ws(n,"remember");u.projectKey!==void 0&&cr(u,d,"remember");let p=u.scope==="project"?cr(u,d,"remember"):void 0,f=VW(u,p);return uy(e,{action:"remember",input:f},i,a,t)}case"correct":{let u=sr(n,"correct"),p=cr(u,d,"correct");return uy(e,{action:"correct",id:Vs(u.id,"correct.id"),correction:u.correction,...p===void 0?{}:{projectKey:p}},i,a,t)}case"remove":{let u=sr(n,"remove"),p=cr(u,d,"remove");return uy(e,{action:"forget",id:Vs(u.id,"remove.id"),permanent:u.permanent===!0,...p===void 0?{}:{projectKey:p}},i,a,t)}case"rollback":{let u=sr(n,"rollback"),p=Vs(u.id,"rollback.id"),f=cr(u,d,"rollback");return IC(await e.get(p),f,p),t.apply({operation:"rollback",input:{id:p}})}case"observe":{if(!o.learning){let f=i==="en"?"Personal memory learning is disabled for this project.":"当前项目已停用个人记忆学习。";return await e.markLearningCheck?.("submitted","ignored",d===void 0?void 0:{projectKey:d},f),{action:"skip",persisted:!1,reason:f,observation:{deduplicated:!1,ignored:!0,candidate:!1,promoted:!1,record:null,result:"ignored"}}}let u=qW(Ws(n,"observe"),d),p=await fy(t,u,"memory.observe",i);return a(p)}case"learning-check":{if(e.markLearningCheck===void 0)throw new Error("Learning check tracking is unavailable");let u=sr(n,"learning-check"),p=u.check;if(p!=="submitted"&&p!=="no-observation"&&p!=="not-run")throw new Error("learning-check.check is invalid");let f=u.result;if(f!==void 0&&f!=="candidate-created"&&f!=="candidate-promoted"&&f!=="deduplicated"&&f!=="ignored"&&f!=="skipped"&&f!=="deferred")throw new Error("learning-check.result is invalid");let m=u.context;if(m!==void 0&&(m===null||typeof m!="object"||Array.isArray(m)))throw new Error("learning-check.context is invalid");let g=u.reason;if(g!==void 0&&(typeof g!="string"||g.trim().length===0))throw new Error("learning-check.reason is invalid");return e.markLearningCheck?.(p,f,m,g)}case"retrieve":return s(AC(Ws(n,"retrieve"),d,"retrieve"));case"manage":return t.query({view:"manage",query:AC(Ws(n,"manage"),d,"manage")});case"status":return t.status();case"test-provider":if(e.testProvider===void 0)throw new Error("Provider test is unavailable");return e.testProvider();case"get-provider-config":if(c===void 0)throw new Error("Provider settings are unavailable");return c();case"configure-provider":if(l===void 0)throw new Error("Provider settings are unavailable");return l(Ws(n,"configure-provider"));case"sync":return e.sync();case"remote":return e.remote?.()??null;case"configure-remote":{if(e.configureRemote===void 0)throw new Error("Memory Git sync is unavailable");return e.configureRemote(Vs(sr(n,"configure-remote").url,"url"))}case"set-learning":if(e.setLearningEnabled===void 0)throw new Error("Learning settings are unavailable");return e.setLearningEnabled(Du(sr(n,"set-learning").enabled));case"set-retrieval":if(e.setRetrievalEnabled===void 0)throw new Error("Retrieval settings are unavailable");return e.setRetrievalEnabled(Du(sr(n,"set-retrieval").enabled));case"pause-project-learning":if(e.pauseProjectLearning===void 0)throw new Error("Project learning settings are unavailable");{let u=sr(n,"pause-project-learning"),p=cr(u,d,"pause-project-learning");if(p===void 0)throw new Error("pause-project-learning.projectKey is required");return e.pauseProjectLearning(p,Du(u.paused))}case"pause-project-retrieval":if(e.pauseProjectRetrieval===void 0)throw new Error("Project retrieval settings are unavailable");{let u=sr(n,"pause-project-retrieval"),p=cr(u,d,"pause-project-retrieval");if(p===void 0)throw new Error("pause-project-retrieval.projectKey is required");return e.pauseProjectRetrieval(p,Du(u.paused))}default:throw new Error(`Unknown personal memory capability: ${r}`)}}async function uy(t,e,r,n,i){let o=e.action==="remember"?null:await t.get(e.id);if(e.action!=="remember"&&IC(o,e.projectKey,e.id),e.action==="forget"&&o!==null&&o.state==="superseded"){await t.remove(e.id,{permanent:e.permanent});return}let a=e.action==="remember"?{action:"remember",scope:e.input.scope,...e.input.projectKey===void 0?{}:{projectKey:e.input.projectKey},...e.input.category===void 0?{}:{category:e.input.category},...e.input.memoryClass===void 0?{}:{memoryClass:e.input.memoryClass},...e.input.title===void 0?{}:{title:e.input.title},...e.input.reason===void 0?{}:{reason:e.input.reason},text:e.input.text,...e.input.tags===void 0?{}:{tags:e.input.tags},...e.input.pathPatterns===void 0?{}:{pathPatterns:e.input.pathPatterns},...e.input.taskTypes===void 0?{}:{taskTypes:e.input.taskTypes},...e.input.operations===void 0?{}:{operations:e.input.operations},...e.input.phases===void 0?{}:{phases:e.input.phases}}:e.action==="correct"?{action:"correct",targetId:e.id,...e.correction.text===void 0?{}:{text:e.correction.text},...e.correction.category===void 0?{}:{category:e.correction.category},...e.correction.memoryClass===void 0?{}:{memoryClass:e.correction.memoryClass},...e.correction.title===void 0?{}:{title:e.correction.title},...e.correction.reason===void 0?{}:{reason:e.correction.reason},...e.correction.tags===void 0?{}:{tags:e.correction.tags},...e.correction.pathPatterns===void 0?{}:{pathPatterns:e.correction.pathPatterns},...e.correction.taskTypes===void 0?{}:{taskTypes:e.correction.taskTypes},...e.correction.operations===void 0?{}:{operations:e.correction.operations},...e.correction.phases===void 0?{}:{phases:e.correction.phases}}:{action:"forget",targetId:e.id,permanent:e.permanent},s=o?.scope??(e.action==="remember"?e.input.scope:void 0)??"project",c=s==="project"?o?.projectKey??(e.action==="remember"?e.input.projectKey:void 0):void 0,l=(e.action==="remember"?e.input.category:o?.category)??(r==="en"?"Reusable preference":"可复用偏好"),d=(e.action==="remember"?e.input.text:e.action==="correct"?e.correction.text:o?.text)??(r==="en"?"Explicit personal memory request":"用户明确的个人记忆操作"),u={scope:s,...c===void 0?{}:{projectKey:c},projectIdentity:c??"comet-project",category:l,...e.action==="remember"&&e.input.memoryClass===void 0?{}:e.action==="remember"?{memoryClass:e.input.memoryClass}:{},text:d,language:e.action==="remember"?e.input.language??r:r,workflow:"cli",changeId:`cli:${e.action}:${DW()}`,candidateKey:`cli:${e.action}`,success:!0,userEvidence:[d],explicitRequest:a,source:{kind:"user"}},p=await fy(i,u,"memory.cli",r,o),f=await n(p);if(e.action==="remember")return f.observation?.record??null;if(e.action==="correct")return await t.get(e.id)}function cr(t,e,r){let n=t.projectKey===void 0?void 0:Vs(t.projectKey,`${r}.projectKey`);if(e!==void 0&&n!==void 0&&n!==e)throw new Error(`${r}.projectKey does not match the current project`);return e??n}function AC(t,e,r){let n=cr(t,e,r);if(t.scope==="global"){let{projectKey:i,...o}=t;return o}return n===void 0?t:{...t,projectKey:n}}function VW(t,e){if(t.scope==="project")return e===void 0?t:{...t,projectKey:e};let{projectKey:r,...n}=t;return n}function qW(t,e){if(t.projectKey!==void 0&&cr(t,e,"observe"),t.scope==="project"){let i=cr(t,e,"observe");return i===void 0?t:{...t,projectKey:i}}let{projectKey:r,...n}=t;return n}function IC(t,e,r){if(t?.scope==="project"&&(e===void 0||t.projectKey!==e))throw new Error(`Memory is not available in the current project: ${r}`)}function zW(t){return t==="profile"||t==="task"?t:"combined"}function GW(t){return t.query!==void 0&&t.apply!==void 0?t:{status:()=>t.status(),query:async e=>e.view==="manage"?t.manage(e.query):t.retrieve({...e.query,view:e.view}),apply:async e=>{switch(e.operation){case"remember":return t.remember(e.input);case"correct":{let r=e.input;return t.correct(r.id,r.correction)}case"forget":{let r=e.input;return t.remove(r.id,{permanent:r.permanent})}case"rollback":return t.rollback(e.input.id);case"observe":return t.observe(e.input);case"review":{let r=e.input;return t.reviewAndApply(r.packet,r.actions)}case"feedback":{let r=e.input;return t.recordApplicationOutcome(r.id,r.outcome,{...r.previousOutcome===void 0?{}:{previousOutcome:r.previousOutcome},...r.applicationId===void 0?{}:{applicationId:r.applicationId},...r.revision===void 0?{}:{revision:r.revision},...r.idempotencyKey===void 0?{}:{idempotencyKey:r.idempotencyKey}})}case"experience-delta":return t.apply?.(e)}}}}function TC(t){return t.observation?.candidate===!0?!0:t.results?.some(e=>TC(e))??!1}function py(t){if(t.observation?.result!==void 0)return t.observation.result;let e=t.results?.find(n=>py(n)!==void 0),r=e===void 0?void 0:py(e);return r!==void 0?r:t.action==="skip"?"skipped":void 0}function $C(t){return{...t.scope!=="project"||t.projectId===void 0?{}:{projectId:t.projectId},...t.context.paths===void 0?{}:{paths:t.context.paths},...t.context.operation===void 0?{}:{operations:[t.context.operation]},...t.context.phase===void 0?{}:{phases:[t.context.phase]},...t.context.task===void 0?{}:{tasks:[t.context.task]}}}function UW(t,e,r){return e.actions.map(n=>{let i=t.explicitRequest,o=("memoryClass"in n?n.memoryClass:void 0)??i?.memoryClass??t.evidence[0]?.memoryClass,s=!(i===void 0)&&(o==="user-fact"||o==="user-preference")?"core-profile":o==="collaboration-habit"||o==="project-convention"?"collaboration-policy":"personal-episode",c=n.action==="skip"?"noop":n.action==="forget"?"forget":n.action,l=("text"in n?n.text:void 0)??i?.text??r.signal?.text??t.evidence.find(u=>u.text)?.text??n.reason??t.category??"No reusable personal learning unit.",d=s==="personal-episode"?{situation:r.context.task??n.title??i?.title??t.category??(t.language==="en"?"Reusable experience":"可复用经验"),actionSummary:r.evidence.map(u=>u.summary).filter(Boolean).join("; ")||l,outcome:r.outcome?.status==="used-successfully"?t.language==="en"?"Successful":"成功":r.outcome?.summary??n.reason??(t.language==="en"?"Observed":"已记录"),lesson:r.signal?.text??l}:void 0;return{action:c,owner:Ri,...!("targetId"in n)||n.targetId===void 0?i?.targetId===void 0?{}:{targetId:i.targetId}:{targetId:n.targetId},memoryType:s,kind:o??i?.category??t.category??"personal-learning",...(n.title??i?.title)===void 0?{}:{title:n.title??i?.title},statement:l,applicability:{...$C(r),...n.projectKey===void 0?{}:{projectId:n.projectKey},...!("pathPatterns"in n)||n.pathPatterns===void 0?i?.pathPatterns===void 0?{}:{paths:i.pathPatterns}:{paths:n.pathPatterns},...!("operations"in n)||n.operations===void 0?i?.operations===void 0?{}:{operations:i.operations}:{operations:n.operations},...!("phases"in n)||n.phases===void 0?i?.phases===void 0?{}:{phases:i.phases}:{phases:n.phases},...!("taskTypes"in n)||n.taskTypes===void 0?i?.taskTypes===void 0?{}:{tasks:i.taskTypes}:{tasks:n.taskTypes}},evidence:r.evidence,authority:i===void 0?"inferred":"explicit",payload:{kind:"memory-action",...n.candidateKey===void 0?{}:{candidateKey:n.candidateKey},language:n.language,...n.reason===void 0?{}:{reason:n.reason},...o===void 0?{}:{memoryClass:o},...d===void 0?{}:{episode:d}},recommendedState:c==="forget"?"superseded":i===void 0?"trial":"proven"}})}function JW(t,e){let r=t.signal;if(t.type==="user.signal"&&r?.longTerm!==!0)return null;let n=t.evidence.filter(d=>d.kind==="user").map(d=>d.summary);if(r?.explicit!==!0&&r?.longTerm!==!0&&t.actor!=="user"&&n.length===0)return null;let i=YW(t.evidence),o=r?.text??i?.summary;if(o===void 0)return null;let a=t.scope==="project"?t.projectId:void 0,s=t.context.workflow??t.source.workflow??t.source.name,c=t.context.changeId??t.source.changeId??t.episodeId,l=r?.explicit?r.kind==="forget"?r.targetId?{action:"forget",targetId:r.targetId}:void 0:r.kind==="correction"?r.targetId?{action:"correct",targetId:r.targetId,text:r.text}:void 0:{action:"remember",scope:t.scope==="project"?"project":"global",...a===void 0?{}:{projectKey:a},category:r.category??(e==="en"?"Reusable preference":"可复用偏好"),text:r.text,pathPatterns:r.selectors?.paths,taskTypes:r.selectors?.tasks,operations:r.selectors?.operations,phases:r.selectors?.phases}:void 0;return{scope:t.scope==="project"?"project":"global",...a===void 0?{}:{projectKey:a},projectIdentity:t.projectId,category:r?.category??(e==="en"?"Reusable experience":"可复用经验"),text:o,title:r?.category,reason:t.type,pathPatterns:r?.selectors?.paths??t.context.paths,taskTypes:r?.selectors?.tasks,operations:r?.selectors?.operations??(t.context.operation===void 0?void 0:[t.context.operation]),phases:r?.selectors?.phases??(t.context.phase===void 0?void 0:[t.context.phase]),evidence:t.evidence,language:e,candidateKey:r?.targetId??`${t.type}:${t.source.name}`,workflow:s,changeId:c,success:t.outcome?.status!=="contributed-to-failure"&&i?.success!==!1,userEvidence:[...n,...t.actor==="user"||r?.explicit?[o]:[]].filter((d,u,p)=>p.indexOf(d)===u),...l===void 0?{}:{explicitRequest:l},source:{kind:t.actor==="user"?"user":t.type==="review.resolved"?"review":"workflow",label:t.type,workflow:s,changeId:c,...a===void 0?{}:{projectKey:a}}}}function YW(t){return t.find(e=>e.kind==="user")??t.find(e=>e.summary)}function _C(t,e){return{id:t.id,owner:Ri,scope:t.scope==="project"?"project":"user",memoryType:t.memoryType,kind:t.memoryClass??"personal-episode",state:t.state,authority:t.authority,title:t.title??t.category,summary:t.text,content:t.text,selectors:{...t.scope==="project"?{projectId:t.projectKey??e.projectId}:{},paths:t.pathPatterns,operations:t.operations,phases:t.phases,tasks:t.taskTypes},sources:t.sources.map(r=>({type:r.kind==="user"?"user":r.kind==="repository"?"repository":r.kind==="review"?"review":"workflow"})),verification:[],matchReasons:t.reason?[t.reason]:void 0}}async function fy(t,e,r,n,i){let o=e.projectIdentity??e.projectKey??"comet-project",a=e.observedAt??new Date().toISOString(),s=e.candidateKey,c=[e.workflow,e.changeId,s??"default"].join(":"),l=await t.query({view:"manage",query:e.scope==="project"&&e.projectKey!==void 0?{scope:"project",projectKey:e.projectKey}:{scope:"global"}});return{schema:"comet.memory.review.v1",language:e.language??n??"zh-CN",projectIdentity:o,...e.scope==="project"&&e.projectKey!==void 0?{projectKey:e.projectKey}:{},workflow:e.workflow,changeId:e.changeId,createdAt:a,checkpoint:r,category:e.category,userEvidence:e.userEvidence??[],...e.explicitRequest===void 0?{}:{explicitRequest:e.explicitRequest},evidence:[{key:c,scope:e.scope,projectIdentity:o,...e.scope==="project"&&e.projectKey!==void 0?{projectKey:e.projectKey}:{},...s===void 0?{}:{candidateKey:s},changeId:e.changeId,success:e.success,observedAt:a,text:e.text,category:e.category,memoryClass:e.memoryClass,tags:e.tags,pathPatterns:e.pathPatterns,taskTypes:e.taskTypes,operations:e.operations}],memories:(e.explicitRequest===void 0?l.records:i==null?[]:[i]).map(d=>({id:d.id,scope:d.scope,...d.scope==="project"&&d.projectKey!==void 0?{projectKey:d.projectKey}:{},...d.title===void 0?{}:{title:d.title},...d.reason===void 0?{}:{reason:d.reason},...d.memoryClass===void 0?{}:{memoryClass:d.memoryClass},category:d.category,text:d.text,kind:d.kind,memoryType:d.memoryType,state:"status"in d?XW(d.status):d.state})),budget:{maxActions:4,maxEvidence:8,maxBytes:4096}}}function XW(t){return t==="conflict"||t==="tombstoned"?"superseded":t}function sr(t,e){if(t===null||typeof t!="object"||Array.isArray(t))throw new Error(`${e} input must be an object`);return t}function Ws(t,e){return sr(t,e)}function Vs(t,e){if(typeof t!="string"||t.trim().length===0)throw new Error(`${e} must be a non-empty string`);return t}function Du(t){if(typeof t!="boolean")throw new Error("enabled must be a boolean");return t}var hy=Ce(Ne(),1);Ct();import{readFile as MC}from"node:fs/promises";import LC from"node:path";var DC=".comet/config.yaml",BC="personal_memory",FC=2e3,KC=6e3;async function gy(t){let e="";try{e=await MC(LC.join(t,...DC.split("/")),"utf8")}catch(i){if(!WC(i))throw i}if(e.trim().length===0)return my();let r=(0,hy.parseDocument)(e,{uniqueKeys:!0});if(r.errors.length>0)throw new Error(`Invalid global Comet config: ${r.errors[0].message}`);let n=r.toJS();if(n==null)return my();if(typeof n!="object"||Array.isArray(n))throw new Error("Invalid global Comet config: root must be a mapping");return QW(n[BC])}async function HC(t,e){let r=LC.join(t,...DC.split("/")),n="";try{n=await MC(r,"utf8")}catch(a){if(!WC(a))throw a}let i=(0,hy.parseDocument)(n,{uniqueKeys:!0});if(i.errors.length>0)throw new Error(`Invalid global Comet config: ${i.errors[0].message}`);let o=i.toJS();if(o!=null&&(typeof o!="object"||Array.isArray(o)))throw new Error("Invalid global Comet config: root must be a mapping");if(e.provider==="remote"&&(!e.remote||e.remote.endpoint.trim().length===0))throw new Error("Invalid personal_memory config: remote provider needs remote.endpoint");i.set(BC,ZW(e)),await we(r,i.toString(),{containedRoot:t})}function my(){return{provider:"local",profileCharLimit:FC,taskContextCharLimit:KC}}function QW(t){if(t==null)return my();if(typeof t!="object"||Array.isArray(t))throw new Error("Invalid personal_memory config: expected a mapping");let e=t,r=e.provider==="remote"?"remote":"local",n=e.remote,i;if(n!==void 0){if(typeof n!="object"||n===null||Array.isArray(n))throw new Error("Invalid personal_memory.remote config: expected a mapping");let o=n;if(typeof o.endpoint!="string"||o.endpoint.trim().length===0)throw new Error("Invalid personal_memory.remote.endpoint: expected a non-empty string");i={endpoint:o.endpoint.trim(),...typeof o.token_env=="string"?{tokenEnv:o.token_env}:{},...typeof o.profile=="string"?{profile:o.profile}:{},...typeof o.timeout_ms=="number"?{timeoutMs:o.timeout_ms}:{}}}if(r==="remote"&&i===void 0)throw new Error("Invalid personal_memory config: remote provider needs remote.endpoint");return{provider:r,profileCharLimit:OC(e.profile_char_limit,FC),taskContextCharLimit:OC(e.task_context_char_limit,KC),...i===void 0?{}:{remote:i}}}function ZW(t){return{provider:t.provider,profile_char_limit:t.profileCharLimit,task_context_char_limit:t.taskContextCharLimit,...t.remote===void 0?{}:{remote:{endpoint:t.remote.endpoint,...t.remote.tokenEnv===void 0?{}:{token_env:t.remote.tokenEnv},...t.remote.profile===void 0?{}:{profile:t.remote.profile},...t.remote.timeoutMs===void 0?{}:{timeout_ms:t.remote.timeoutMs}}}}}function OC(t,e){return typeof t=="number"&&Number.isFinite(t)&&t>0?t:e}function WC(t){let e=t?.code;return e==="ENOENT"||e==="ENOTDIR"}var Kr=class extends Error{code;constructor(e,r,n){super(r,n),this.name="BoundedHttpRequestError",this.code=e}};async function eV(t,e){if(!t.body){let s=new Uint8Array(await t.arrayBuffer());if(s.byteLength>e)throw new Kr("response-too-large","HTTP response exceeds byte limit");return s}let r=t.body.getReader(),n=[],i=0;try{for(;;){let s=await r.read();if(s.done)break;if(i+=s.value.byteLength,i>e)throw await r.cancel(),new Kr("response-too-large","HTTP response exceeds byte limit");n.push(s.value)}}finally{r.releaseLock()}let o=new Uint8Array(i),a=0;for(let s of n)o.set(s,a),a+=s.byteLength;return o}async function Bu(t){let e=new AbortController,r=setTimeout(()=>e.abort(),t.timeoutMs);try{let n=await(t.fetch??globalThis.fetch)(t.url,{...t.init,signal:e.signal}),i=n.ok?await eV(n,t.maxResponseBytes):new Uint8Array;return{response:n,bytes:i}}catch(n){throw n instanceof Kr?n:e.signal.aborted?new Kr("timeout","HTTP request timed out",{cause:n}):new Kr("request-failed","HTTP request failed",{cause:n})}finally{clearTimeout(r)}}var tV=1024*1024,rV=512*1024,VC=240,Ku=class{endpoint;tokenEnv;profile;timeoutMs;projectKey;fetchImpl;constructor(e){if(this.endpoint=e.endpoint.trim(),!this.endpoint)throw new Error("Remote Provider endpoint must not be empty");this.tokenEnv=e.tokenEnv,this.profile=e.profile?.trim()||"default",this.timeoutMs=e.timeoutMs??5e3,this.projectKey=e.projectKey,this.fetchImpl=e.fetchImpl??fetch}async status(){let e={learningEnabled:void 0,retrievalEnabled:void 0,pausedProjects:[],pausedLearningProjects:[],pausedRetrievalProjects:[],files:[],remote:null,sync:null,provider:{provider:"remote",configured:!0,endpoint:zC(this.endpoint),profile:this.profile,tokenConfigured:this.tokenEnv===void 0||!!process.env[this.tokenEnv],timeoutMs:this.timeoutMs}};try{let r=await this.request("status",{projectKey:this.projectKey});return{...e,...iV(r)}}catch(r){let n=`Remote learning status unavailable: ${YC(r)}`;return{...e,availability:"unavailable",availabilityReason:n,learningAvailability:"unavailable",learningAvailabilityReason:n,sync:{status:"failed",retryable:!0,message:n}}}}async query(e){if(e.view==="manage")return this.manage(e.query);if(e.view==="expand"){if(!e.query.id)throw new Error("Memory expand requires an id");return{kind:"expand",record:await this.get(e.query.id)}}if(e.view==="manifest"){let r=await this.request("query",{view:"manifest",query:{...e.query,projectKey:e.query.projectKey??this.projectKey}});return aV(r,e.query.projectKey??this.projectKey)}return this.retrieve({...e.query,view:e.view})}async apply(e){let r=await this.request("apply",e);return nV(r,e.operation,this.projectKey)}async get(e){let r=await this.request("get",{id:e});if(!F(r)||r.record!==null&&r.record!==void 0&&!F(r.record))throw new Error("Remote Provider returned an invalid memory record");return r.record===null||r.record===void 0?null:Hr(r.record,this.projectKey,!1)}async remember(e){let r=await this.request("apply",{operation:"remember",input:e});return Fu(r,this.projectKey)}async correct(e,r){let n=await this.request("apply",{operation:"correct",input:{id:e,correction:r}});return Fu(n,this.projectKey)}async remove(e,r={}){let n=await this.request("apply",{operation:"forget",input:{id:e,...r}});Ai(n)}async rollback(e){let r=await this.request("apply",{operation:"rollback",input:{id:e}});return Fu(r,this.projectKey)}async recordApplicationOutcome(e,r,n={}){let i=await this.request("apply",{operation:"feedback",input:{id:e,outcome:r,...n}});if(!F(i)||i.record!==null&&!F(i.record))throw new Error("Remote Provider returned an invalid memory feedback result");return i.record===null?null:Hr(i.record,this.projectKey,!1)}async observe(e){let r=await this.request("apply",{operation:"observe",input:e});return vy(r,this.projectKey)}async markLearningCheck(e,r,n,i){let o=await this.request("apply",{operation:"learning-check",input:{check:e,...r===void 0?{}:{result:r},...n===void 0?{}:{context:n},...i===void 0?{}:{reason:i}},...this.projectKey===void 0?{}:{projectKey:this.projectKey}});if(Ai(o),F(o)&&F(o.learning))return GC(o)}async reviewAndApply(e,r){let n=await this.request("apply",{operation:"review",input:{packet:e,actions:r}});return wy(n,this.projectKey)}async retrieve(e){let r=await this.request("query",{view:e.view==="profile"||e.view==="task"?e.view:"combined",query:{...e,projectKey:e.projectKey??this.projectKey}});return sV(r,e.projectKey??this.projectKey)}async manage(e={}){let r=await this.request("query",{view:"manage",query:{...e,projectKey:e.projectKey??this.projectKey}});return cV(r,e.projectKey??this.projectKey)}async sync(){return{status:"synced",retryable:!1,message:"Remote Provider is active; Git sync is not used."}}async testProvider(){let e=await this.request("test",{});if(!F(e)||typeof e.ok!="boolean"||e.message!==void 0&&typeof e.message!="string")throw new Error("Remote Provider returned an invalid provider test result");return e}async remote(){return zC(this.endpoint)}async configureRemote(){throw new Error("Remote Provider does not use a Git remote")}async setLearningEnabled(e){Ai(await this.request("apply",{operation:"settings",input:{learningEnabled:e}}))}async setRetrievalEnabled(e){Ai(await this.request("apply",{operation:"settings",input:{retrievalEnabled:e}}))}async pauseProjectLearning(e,r){Ai(await this.request("apply",{operation:"settings",input:{projectKey:e,pausedLearning:r}}))}async pauseProjectRetrieval(e,r){Ai(await this.request("apply",{operation:"settings",input:{projectKey:e,pausedRetrieval:r}}))}async request(e,r){let n=this.tokenEnv===void 0?void 0:process.env[this.tokenEnv],i={"content-type":"application/json"};n&&(i.authorization=`Bearer ${n}`);let o=JSON.stringify({schema:"comet.personal-memory.provider.v1",operation:e,profile:this.profile,...this.projectKey===void 0?{}:{projectKey:this.projectKey},payload:r});if(new TextEncoder().encode(o).byteLength>rV)throw new Error("Remote Personal Memory request exceeds byte limit");let{response:a,bytes:s}=await Bu({url:this.endpoint,timeoutMs:this.timeoutMs,maxResponseBytes:tV,fetch:this.fetchImpl,init:{method:"POST",headers:i,body:o}});if(!a.ok)throw new Error(`Remote Provider request failed (${a.status})`);let c;try{c=JSON.parse(new TextDecoder().decode(s))}catch(l){throw new Error("Remote Provider returned invalid JSON",{cause:l})}if(!F(c))throw new Error("Remote Provider returned an invalid response");return F(c.result)?c.result:c}};function nV(t,e,r){switch(e){case"remember":case"correct":case"rollback":return Fu(t,r);case"observe":return vy(t,r);case"review":return wy(t,r);case"forget":return Ai(t);case"feedback":if(!F(t)||t.record!==null&&!F(t.record))throw new Error("Remote Provider returned an invalid memory feedback result");return t.record===null?null:Hr(t.record,r,!1);case"experience-delta":if(!F(t)||typeof t.changed!="boolean")throw new Error("Remote Provider returned an invalid Learning Delta result");return{changed:t.changed,...t.record===void 0||t.record===null?{record:null}:{record:Hr(t.record,r,!1)}}}}function GC(t){if(!F(t)||!F(t.learning))throw new Error("Remote Provider returned no learning status");let e=t.learning,r=e.lastCheck,n=e.lastResult;if(r!==void 0&&r!=="submitted"&&r!=="no-observation"&&r!=="not-run"||n!==void 0&&!UC(n)||e.lastReason!==void 0&&typeof e.lastReason!="string"||typeof e.observedCount!="number"||typeof e.validObservationCount!="number")throw new Error("Remote Provider returned an invalid learning status");return{...typeof e.lastCheckedAt=="string"?{lastCheckedAt:e.lastCheckedAt}:{},...r===void 0?{}:{lastCheck:r},...n===void 0?{}:{lastResult:n},...e.lastReason===void 0?{}:{lastReason:oV(e.lastReason)},...typeof e.lastProjectKey=="string"?{lastProjectKey:e.lastProjectKey}:{},...typeof e.lastWorkflow=="string"?{lastWorkflow:e.lastWorkflow}:{},...typeof e.lastChangeId=="string"?{lastChangeId:e.lastChangeId}:{},...typeof e.submissionVerified=="boolean"?{submissionVerified:e.submissionVerified}:{},observedCount:e.observedCount,validObservationCount:e.validObservationCount}}function iV(t){if(!F(t))throw new Error("Remote Provider returned an invalid status");let e=F(t.settings)?t.settings:void 0,r=F(t.capabilities)?t.capabilities:void 0,n=[t,e,r].filter(p=>p!==void 0),i=p=>{let f=n.find(m=>m[p]!==void 0);if(f!==void 0){if(typeof f[p]!="boolean")throw new Error(`Remote Provider returned an invalid ${p} capability`);return f[p]}},o=p=>{let f=n.find(m=>m[p]!==void 0);if(f!==void 0){if(!qs(f[p]))throw new Error(`Remote Provider returned an invalid ${p} list`);return[...f[p]]}},a=i("learningEnabled"),s=i("retrievalEnabled"),c=o("pausedProjects"),l=o("pausedLearningProjects"),d=o("pausedRetrievalProjects"),u={availability:"available",learningEnabled:a,retrievalEnabled:s,pausedProjects:c??[],pausedLearningProjects:l??[],pausedRetrievalProjects:d??[]};try{return{...u,learningAvailability:"available",learning:GC(t)}}catch(p){return{...u,learningAvailability:"unavailable",learningAvailabilityReason:`Remote learning diagnostics unavailable: ${YC(p)}`}}}function oV(t){let e=t.trim();return e.length>VC?`${e.slice(0,VC-1)}…`:e}function aV(t,e){if(!F(t)||t.kind!=="manifest"||!Array.isArray(t.items))throw new Error("Remote Provider returned an invalid memory manifest");return{kind:"manifest",truncated:t.truncated===!0,items:t.items.map(r=>{if(!F(r)||typeof r.id!="string"||typeof r.memoryType!="string"||typeof r.state!="string"||r.authority!=="explicit"&&r.authority!=="inferred"||typeof r.title!="string"||typeof r.summary!="string"||r.scope!=="global"&&r.scope!=="project"||!qs(r.pathPatterns)||!qs(r.taskTypes)||!qs(r.operations)||!qs(r.phases)||!Array.isArray(r.evidence)||!r.evidence.every(by))throw new Error("Remote Provider returned an invalid memory manifest item");return{id:r.id,memoryType:r.memoryType,state:r.state,authority:r.authority,title:r.title,summary:r.summary,scope:r.scope,...r.scope==="project"?{projectKey:String(r.projectKey??e??"")}:{},pathPatterns:r.pathPatterns,taskTypes:r.taskTypes,operations:r.operations,phases:r.phases,evidence:r.evidence.map(dV)}})}}function qs(t){return Array.isArray(t)&&t.every(e=>typeof e=="string")}function Fu(t,e){if(!F(t)||!F(t.record))throw new Error("Remote Provider returned no memory record");return Hr(t.record,e,!1)}function vy(t,e){if(!F(t)||typeof t.deduplicated!="boolean"||typeof t.ignored!="boolean"||typeof t.candidate!="boolean"||typeof t.promoted!="boolean"||t.record!==null&&t.record!==void 0&&!F(t.record))throw new Error("Remote Provider returned an invalid observation result");return{deduplicated:t.deduplicated,ignored:t.ignored,candidate:t.candidate,promoted:t.promoted,record:t.record===null||t.record===void 0?null:Hr(t.record,e,!1),...UC(t.result)?{result:t.result}:{}}}function UC(t){return t==="candidate-created"||t==="candidate-promoted"||t==="deduplicated"||t==="ignored"||t==="skipped"||t==="deferred"}function wy(t,e){if(!F(t)||t.action!=="create"&&t.action!=="update"&&t.action!=="forget"&&t.action!=="skip"||typeof t.persisted!="boolean"||t.deferred!==void 0&&typeof t.deferred!="boolean"||t.reason!==void 0&&typeof t.reason!="string"||t.notification!==void 0&&typeof t.notification!="string"||t.observation!==void 0&&!F(t.observation)||t.results!==void 0&&(!Array.isArray(t.results)||!t.results.every(r=>F(r))))throw new Error("Remote Provider returned an invalid review result");return{action:t.action,persisted:t.persisted,...t.deferred===void 0?{}:{deferred:t.deferred},...t.reason===void 0?{}:{reason:t.reason},...t.notification===void 0?{}:{notification:t.notification},...t.observation===void 0?{}:{observation:vy(t.observation,e)},...t.results===void 0?{}:{results:t.results.map(r=>wy(r,e))}}}function Ai(t){if(!F(t))throw new Error("Remote Provider returned an invalid mutation result");return t}function sV(t,e){if(!F(t)||!Array.isArray(t.records))throw new Error("Remote Provider returned an invalid retrieval");let r=t.records.map(o=>Hr(o,e)),n=Array.isArray(t.profileRecords)?t.profileRecords.map(o=>Hr(o,e)):void 0,i=Array.isArray(t.taskRecords)?t.taskRecords.map(o=>Hr(o,e)):void 0;return{records:r,text:yy(r),truncated:t.truncated===!0,disabled:t.disabled===!0,...n===void 0?{}:{profileRecords:n},...n===void 0?{}:{profileText:yy(n)},...t.profileTruncated===!0?{profileTruncated:!0}:{},...i===void 0?{}:{taskRecords:i},...i===void 0?{}:{taskText:yy(i)},...t.taskTruncated===!0?{taskTruncated:!0}:{}}}function Hr(t,e,r=!0){if(!F(t))throw new Error("Remote Provider returned an invalid memory record");let n=t.scope;if(n!=="global"&&n!=="project"||typeof t.id!="string"||t.id.trim().length===0||typeof t.category!="string"||typeof t.text!="string"||n==="project"&&typeof t.projectKey!="string"||e!==void 0&&n==="project"&&t.projectKey!==e||!Array.isArray(t.tags)||!Array.isArray(t.pathPatterns)||!Array.isArray(t.taskTypes)||!Array.isArray(t.operations)||!Array.isArray(t.phases)||!Array.isArray(t.evidence)||!t.tags.every(i=>typeof i=="string")||!t.pathPatterns.every(i=>typeof i=="string")||!t.taskTypes.every(i=>typeof i=="string")||!t.operations.every(i=>typeof i=="string")||!t.phases.every(i=>typeof i=="string")||!t.evidence.every(by)||t.memoryClass!==void 0&&!Si(t.memoryClass)||t.language!==void 0&&t.language!=="zh-CN"&&t.language!=="en"||t.kind!=="explicit"&&t.kind!=="inferred"||t.authority!=="explicit"&&t.authority!=="inferred"||t.memoryType!=="core-profile"&&t.memoryType!=="collaboration-policy"&&t.memoryType!=="personal-episode"||(t.memoryType==="personal-episode"||t.episode!==void 0)&&!JC(t.episode)||t.state!=="trial"&&t.state!=="proven"&&t.state!=="superseded"||r&&t.state==="superseded"||typeof t.applicationCount!="number"||typeof t.successCount!="number"||typeof t.failureCount!="number"||!qC(t.source)||!Array.isArray(t.sources)||!t.sources.every(i=>qC(i))||typeof t.createdAt!="string"||typeof t.updatedAt!="string")throw new Error("Remote Provider returned an invalid memory record");return t}function qC(t){return F(t)&&(t.kind==="user"||t.kind==="workflow"||t.kind==="review"||t.kind==="repository")}function yy(t){let e=new Map;for(let r of t){let n=typeof r.category=="string"?r.category:"Personal memory";e.set(n,[...e.get(n)??[],r])}return[...e.entries()].map(([r,n])=>`## ${r}
${n.map(i=>`- ${i.text}`).join(`
`)}`).join(`
`)}function cV(t,e){if(!F(t)||!Array.isArray(t.records)||!Array.isArray(t.conflicts))throw new Error("Remote Provider returned an invalid management view");return{records:t.records.map(r=>lV(r,e)),conflicts:t.conflicts.map(r=>{if(!F(r)||!Array.isArray(r.texts)||!r.texts.every(n=>typeof n=="string")||typeof r.updatedAt!="string")throw new Error("Remote Provider returned an invalid management view");return r}),truncated:t.truncated===!0}}function lV(t,e){if(!F(t))throw new Error("Remote Provider returned an invalid management view");let r=t.scope;if(r!=="global"&&r!=="project"||typeof t.id!="string"||t.id.trim().length===0||typeof t.category!="string"||typeof t.text!="string"||r==="project"&&typeof t.projectKey!="string"||e!==void 0&&r==="project"&&t.projectKey!==e||!Array.isArray(t.tags)||!Array.isArray(t.pathPatterns)||!Array.isArray(t.taskTypes)||!Array.isArray(t.operations)||!Array.isArray(t.phases)||!Array.isArray(t.evidence)||!t.tags.every(n=>typeof n=="string")||!t.pathPatterns.every(n=>typeof n=="string")||!t.taskTypes.every(n=>typeof n=="string")||!t.operations.every(n=>typeof n=="string")||!t.phases.every(n=>typeof n=="string")||!t.evidence.every(by)||t.memoryClass!==void 0&&!Si(t.memoryClass)||t.language!==void 0&&t.language!=="zh-CN"&&t.language!=="en"||t.kind!=="explicit"&&t.kind!=="inferred"||t.authority!=="explicit"&&t.authority!=="inferred"||t.status!=="trial"&&t.status!=="proven"&&t.status!=="superseded"&&t.status!=="conflict"&&t.status!=="tombstoned"||t.memoryType!=="core-profile"&&t.memoryType!=="collaboration-policy"&&t.memoryType!=="personal-episode"||(t.memoryType==="personal-episode"||t.episode!==void 0)&&!JC(t.episode)||typeof t.applicationCount!="number"||typeof t.successCount!="number"||typeof t.failureCount!="number"||typeof t.evidenceCount!="number"||t.evidenceCount<0||t.sourceKind!=="user"&&t.sourceKind!=="workflow"&&t.sourceKind!=="review"&&t.sourceKind!=="repository"||typeof t.lastConfirmedAt!="string"||typeof t.updatedAt!="string"||typeof t.canRollback!="boolean")throw new Error("Remote Provider returned an invalid management view");return t}function F(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function JC(t){return F(t)&&typeof t.situation=="string"&&t.situation.trim().length>0&&typeof t.actionSummary=="string"&&t.actionSummary.trim().length>0&&typeof t.outcome=="string"&&t.outcome.trim().length>0&&typeof t.lesson=="string"&&t.lesson.trim().length>0}function by(t){return F(t)&&typeof t.id=="string"&&["user","source","verification","review","failure","outcome"].includes(String(t.kind))&&typeof t.summary=="string"&&(t.source===void 0||typeof t.source=="string")&&(t.anchor===void 0||typeof t.anchor=="string")&&(t.digest===void 0||typeof t.digest=="string")&&(t.command===void 0||typeof t.command=="string")&&(t.success===void 0||typeof t.success=="boolean")}function dV(t){return{id:t.id,kind:t.kind,summary:t.summary,...t.source===void 0?{}:{source:t.source},...t.anchor===void 0?{}:{anchor:t.anchor},...t.digest===void 0?{}:{digest:t.digest},...t.command===void 0?{}:{command:t.command},...t.success===void 0?{}:{success:t.success}}}function zC(t){try{let e=new URL(t);return(e.username||e.password)&&(e.username=e.username?"***":"",e.password=e.password?"***":""),e.toString().replace(/\/$/u,"")}catch{return t.replace(/(\/\/)[^/@]+@/u,"$1***@")}}function YC(t){return t instanceof Error?t.message:String(t)}import{existsSync as uV,readFileSync as pV}from"fs";import XC from"path";import{fileURLToPath as fV}from"url";function mV(){return"0.4.4"}var ky=null,hV="@rpamis/comet",lie=`https://registry.npmjs.org/${hV}/latest`;function QC(){return ky===null&&(ky=mV()),ky}qe();ro();ge();import{mkdir as gV,open as yV,readdir as vV,readFile as Ny,rename as wV,stat as bV,unlink as Sy,writeFile as kV}from"node:fs/promises";import _n from"node:path";var SV=["fact","decision","pattern","procedure","constraint","failure-resolution"],Ey="MEMORY.md",Wu="project-memory:",xy="project-memory-index",NV=/^[a-z0-9][a-z0-9-]{0,63}$/u,ZC=120,eR=200,mie=16*1024;var EV=8,xV=120,PV=3e3,CV=1e4,RV=4e3,AV=50;function _V(t){return typeof t=="string"&&SV.includes(t)}function Vo(t,e){let r=rr(t,e);return _n.join(_n.dirname(r.databasePath),"memory")}function Hu(t,e){return t.replace(/[\r\n\t]+/gu," ").trim().slice(0,e)}function Py(t){return NV.test(t)}function Cy(t){return`${t}.md`}function tR(t){let e=t.replace(/\r\n/gu,`
`).split(`
`);if(e[0]?.trim()!=="---")return null;let r=e.findIndex((f,m)=>m>0&&f.trim()==="---");if(r<=1)return null;let n=new Map;for(let f of e.slice(1,r)){let m=f.indexOf(":");m<=0||n.set(f.slice(0,m).trim(),f.slice(m+1).trim())}let i=n.get("name")??n.get("slug")??"",o=n.get("title")??"",a=n.get("description")??"",s=n.get("type")??"",c=n.get("created")??"",l=n.get("updated")??c;if(!Py(i)||!o||!a||!_V(s))return null;let d=[],u=n.get("paths");if(u)try{let f=JSON.parse(u);Array.isArray(f)&&(d=f.filter(m=>typeof m=="string").slice(0,EV))}catch{d=[]}let p=n.get("source");return{slug:i,title:o,description:a,type:s,created:c,updated:l,paths:d,...p===void 0?{}:{source:p},body:e.slice(r+1).join(`
`).trim()}}async function jV(t,e){let r=`${t}.${process.pid}.${Date.now()}.tmp`;await kV(r,e,"utf8"),await wV(r,t)}function IV(t){return new Promise(e=>setTimeout(e,t))}async function TV(t,e){await gV(t,{recursive:!0});let r=_n.join(t,".lock"),n=Date.now()+RV;for(;;)try{let i=await yV(r,"wx");await i.write(`${process.pid} ${new Date().toISOString()}`),await i.close();break}catch(i){if(i.code!=="EEXIST")throw i;try{let o=await bV(r);Date.now()-o.mtimeMs>CV&&await Sy(r).catch(()=>{})}catch{}if(Date.now()>n)throw new Error("项目记忆存储正被其他进程写入,请稍后重试",{cause:i});await IV(AV)}try{return await e()}finally{await Sy(r).catch(()=>{})}}async function rR(t){let e;try{e=await vV(t)}catch{return[]}let r=[];for(let n of e){if(!n.endsWith(".md")||n===Ey)continue;let i;try{i=await Ny(_n.join(t,n),"utf8")}catch{continue}let o=tR(i);o!==null&&`${o.slug}.md`===n&&r.push(o)}return r.sort((n,i)=>n.slug.localeCompare(i.slug)),r}function $V(t){let e=["# Project Memory Index","","<!-- Managed by comet knowledge remember. One line per durable project lesson; the full note lives in the linked file. Newest first. -->",""],r=[...t].sort((n,i)=>i.updated.localeCompare(n.updated)||n.slug.localeCompare(i.slug));for(let n of r){let i=Hu(n.title,ZC).replace(/[[\]]/gu,""),o=Hu(n.description,eR);e.push(`- [${i}](${Cy(n.slug)}) — ${o}`)}return`${e.join(`
`)}
`}var OV=/^-\s+\[([^\]]+)\]\(([a-z0-9][a-z0-9-]*)\.md\)\s+—\s+(.+)$/u;function MV(t){let e=[];for(let r of t.replace(/\r\n/gu,`
`).split(`
`)){let n=OV.exec(r.trim());n!==null&&e.push({slug:n[2],title:n[1].trim(),description:n[3].trim()})}return e}async function nR(t,e){let r=Vo(t,e),n;try{n=await Ny(_n.join(r,Ey),"utf8")}catch{return[]}return MV(n)}async function Ry(t,e,r){if(!Py(e))return null;let n=Vo(t,r),i;try{i=await Ny(_n.join(n,Cy(e)),"utf8")}catch{return null}let o=tR(i);return o===null||o.slug!==e?null:o}var LV=200;async function iR(t,e){let r=Vo(t,e);return[...await rR(r)].sort((i,o)=>o.updated.localeCompare(i.updated)).slice(0,LV).map(i=>({slug:i.slug,title:i.title,description:i.description,type:i.type,created:i.created,updated:i.updated,paths:i.paths,...i.source===void 0?{}:{source:i.source}}))}async function oR(t,e,r){if(!Py(e))return!1;let n=Vo(t,r);return TV(n,async()=>{let i=await rR(n);return i.find(a=>a.slug===e)===void 0?!1:(await Sy(_n.join(n,Cy(e))).catch(()=>{}),await jV(_n.join(n,Ey),$V(i.filter(a=>a.slug!==e).map(a=>({slug:a.slug,title:a.title,description:a.description,updated:a.updated})))),!0)})}function aR(t,e="zh-CN"){if(t.length===0)return null;let i=[e==="en"?"## Project memory index":"## 项目记忆索引",e==="en"?'Each line is a durable lesson learned in this project. Expand the full note with the same task arguments plus --expand-context "project-memory:<slug>".':'以下每行是本项目沉淀的一条可复用经验;需要完整内容时用同一任务参数追加 --expand-context "project-memory:<slug>" 展开。'];for(let a of t.slice(0,xV)){let s=`- ${Hu(a.title,ZC)} — ${Hu(a.description,eR)} (${a.slug})`;if(i.join(`
`).length+s.length>=PV)break;i.push(s)}let o=t.length-(i.length-2);return o>0&&i.push(e==="en"?`… ${o} more entries in MEMORY.md`:`……另有 ${o} 条,见 MEMORY.md`),i.join(`
`)}var uR=Ce(Ne(),1);ge();qe();Q();import{promises as _i}from"node:fs";import ee from"node:path";var DV=64*1024,sR=512,BV=2e3,cR=1024*1024,lR=new Set(["docs/superpowers/specs","docs/superpowers/plans","docs/superpowers/reports"]);function lr(t){return Date.now()<=t.deadline?!1:(t.timedOut=!0,t.complete=!1,!0)}function Kt(t,e,r){t?.({code:e,message:r})}function jn(t,e){return ee.relative(t,e).replaceAll(ee.sep,"/")}function Gs(t,e){let r=ee.relative(ee.resolve(t),ee.resolve(e));return r===""||!ee.isAbsolute(r)&&r!==".."&&!r.startsWith(`..${ee.sep}`)}async function pR(t,e,r,n){if(r&&lr(r)||!Gs(e,t))return!1;try{let i=await _i.lstat(t);if(!i.isDirectory()||i.isSymbolicLink())return!1;let[o,a]=await Promise.all([_i.realpath(t),_i.realpath(e)]);return Gs(a,o)}catch(i){return i.code!=="ENOENT"&&(r&&(r.complete=!1),Kt(n,"corpus-root",`未进入检索:无法读取目录 ${jn(e,t)}。`)),!1}}async function zs(t,e,r,n,i,o,a){if(!await pR(t,e,o,i))return[];let s=[],c=async l=>{if(o&&lr(o))return;let d;try{d=await _i.readdir(l,{withFileTypes:!0})}catch{o&&(o.complete=!1),Kt(i,"corpus-read",`未进入检索:无法读取目录 ${jn(e,l)}`);return}for(let u of d){if(o&&lr(o))return;if(u.name.startsWith(".")&&u.name!==".comet.yaml")continue;let p=ee.join(l,u.name);if(u.isSymbolicLink())continue;if(u.isDirectory()){await c(p);continue}if(!u.isFile()||!u.name.toLowerCase().endsWith(".md")||!Gs(e,p))continue;let f=jn(e,p);a&&!a(f)||s.push({absolutePath:p,source:f,kind:r,...n??dR(p)?{archivedAt:n??dR(p)}:{}})}};return await c(t),s}function FV(t){let e="^";for(let r=0;r<t.length;r+=1){let n=t[r];n==="*"?t[r+1]==="*"?t[r+2]==="/"?(e+="(?:[^/]+/)*",r+=2):(e+=".*",r+=1):e+="[^/]*":n==="?"?e+="[^/]":e+=n.replace(/[\\^$+?.()|[\]{}]/gu,"\\$&")}return new RegExp(`${e}$`,"iu")}function KV(t,e){let r=e.split("/"),n=r.findIndex(o=>/[*?]/u.test(o)),i=n===-1?r.slice(0,-1):r.slice(0,n);return ee.join(t,...i)}async function HV(t,e,r,n){let i=[],o=e.map(s=>FV(s)),a=new Map;for(let[s,c]of e.entries()){let l=KV(t,c),d=o[s],u=a.get(l);a.set(l,u?p=>u(p)||d.test(p):p=>d.test(p))}for(let[s,c]of a)if(i.push(...await zs(s,t,"custom",void 0,r,n,c)),n&&lr(n))break;return i}function WV(t,e){return ee.join(t,e==="docs"?"docs":"","openspec")}function dR(t){return/(?:^|[\\/])(\d{4}-\d{2}-\d{2})-/u.exec(t)?.[1]}function VV(t){return typeof t=="string"?[t]:Array.isArray(t)?t.filter(e=>typeof e=="string"):[]}function qV(t,e){let r=e.replaceAll("\\","/").replace(/^\.\//u,"");if(ee.posix.isAbsolute(r)||r.split("/").includes(".."))return null;let n=ee.resolve(t,...r.split("/"));if(!Gs(t,n))return null;let i=jn(t,n);return lR.has(i.slice(0,i.lastIndexOf("/")))||[...lR].some(o=>i===o||i.startsWith(`${o}/`))?i:null}async function zV(t,e,r,n){let i=await GV(e,t,n,r),o=new Set;for(let s of i){if(n&&lr(n))break;let c=ee.join(s,".comet.yaml");try{let l=jn(t,c),d=await O(t,l,DV,{label:`${jn(t,c)} state`}),u=(0,uR.parse)(d.bytes.toString("utf8"));for(let p of["design_doc","plan","verification_report"])for(let f of VV(u?.[p])){let m=qV(t,f);m&&o.add(m)}}catch(l){l.code!=="ENOENT"&&(n&&(n.complete=!1),Kt(r,"superpowers-state",`未进入检索:无法读取 Classic 归档状态 ${jn(t,c)},其引用文档当前不会参与召回。`))}}let a=[];for(let s of[...o].sort()){if(n&&lr(n))break;let c=ee.join(t,...s.split("/"));try{if(!await am(t,s,{label:s}))continue;a.push({absolutePath:c,source:s,kind:"superpowers"})}catch(l){l.code!=="ENOENT"&&(n&&(n.complete=!1),Kt(r,"superpowers-file",`未进入检索:无法读取归档引用的文档 ${s}。`))}}return a}async function GV(t,e,r,n){if(!await pR(t,e,r,n))return[];let i=[],o=async a=>{if(r&&lr(r))return;let s;try{s=await _i.readdir(a,{withFileTypes:!0})}catch{r&&(r.complete=!1);return}for(let c of s){if(r&&lr(r))return;if(c.isSymbolicLink()||!c.isDirectory())continue;let l=ee.join(a,c.name);if(!Gs(e,l))continue;let d=ee.join(l,".comet.yaml");try{let u=await _i.lstat(d);u.isFile()&&!u.isSymbolicLink()&&i.push(l)}catch(u){u.code!=="ENOENT"&&(r&&(r.complete=!1),Kt(n,"corpus-read",`未进入检索:无法读取 Classic 归档状态 ${jn(e,d)}。`))}await o(l)}};return await o(t),i.sort()}async function Vu(t){let e=ee.resolve(t.projectRoot),r={deadline:Date.now()+BV,timedOut:!1,complete:!0},n;try{n=await Re(e)}catch(p){return Kt(t.reportDiagnostic,"config",`Project knowledge configuration is invalid: ${p.message}`),{documents:[],complete:!1}}if(!n)return{documents:[],complete:!0};if(lr(r))return{documents:[],complete:!1};let i={maxFileMb:n.knowledge?.local?.max_file_mb??Qe.max_file_mb,maxTotalMb:n.knowledge?.local?.max_total_mb??Qe.max_total_mb},o=i.maxFileMb*cR,a=i.maxTotalMb*cR,s=new Set(n.workflows??[n.default_workflow]),c=[];if(n.native&&s.has("native")){let p=ee.join(e,n.native.artifact_root,"comet");c.push(...await zs(ee.join(p,"specs"),e,"native-spec",void 0,t.reportDiagnostic,r),...await zs(ee.join(p,"archive"),e,"native-archive",void 0,t.reportDiagnostic,r))}if(n.classic&&s.has("classic")){let p=WV(e,n.classic.artifact_layout??"legacy"),f=ee.join(p,"changes","archive");c.push(...await zs(ee.join(p,"specs"),e,"classic-spec",void 0,t.reportDiagnostic,r),...await zs(ee.join(f),e,"classic-archive",void 0,t.reportDiagnostic,r),...await zV(e,f,t.reportDiagnostic,r))}n.knowledge?.provider==="local"&&n.knowledge.local?.include.length&&c.push(...await HV(e,n.knowledge.local.include,t.reportDiagnostic,r));let l=new Map;for(let p of c){let f=l.get(p.source);(f===void 0||Us(p.kind)<Us(f.kind))&&l.set(p.source,p)}let d=[],u=0;for(let p of[...l.values()].sort((f,m)=>f.source.localeCompare(m.source))){if(lr(r))break;if(d.length>=sR){r.complete=!1,Kt(t.reportDiagnostic,"corpus-limit",`未进入检索:语料文件数量超过 ${sR} 个,其余文件当前不会参与召回。`);break}try{let f=(await _i.stat(p.absolutePath)).size;if(f>o){Kt(t.reportDiagnostic,"corpus-bytes",`未进入检索:${p.source} 为 ${f} 字节,超过单文件上限 ${i.maxFileMb} MB。可在 .comet/config.yaml 调整 knowledge.local.max_file_mb。`);continue}if(u+f>a){Kt(t.reportDiagnostic,"corpus-bytes",`未进入检索:加入 ${p.source} 后将超过语料总预算 ${i.maxTotalMb} MB。可在 .comet/config.yaml 调整 knowledge.local.max_total_mb。`);continue}u+=f,d.push(p)}catch{r.complete=!1,Kt(t.reportDiagnostic,"corpus-read",`未进入检索:无法读取 ${p.source},该文件当前不会参与召回。`)}}return r.timedOut&&Kt(t.reportDiagnostic,"corpus-timeout","未进入检索:语料发现超过时间预算,尚未发现的文件当前不会参与召回。"),{documents:d,complete:r.complete}}async function fR(t){return(await Vu(t)).documents}function Us(t){return t==="native-spec"||t==="classic-spec"?0:t==="native-archive"||t==="classic-archive"?1:t==="custom"?2:3}import{createHash as Iq}from"node:crypto";import{createRequire as Tq}from"node:module";import Ii from"node:path";La();fg();import{StringDecoder as UV}from"node:string_decoder";async function Ay(t){let e=Nm(t.command??"rg",t.args,{cwd:t.cwd}),r=[],n=[],i=0,o=0,a=0,s=0,c="",l=new UV("utf8"),d=!1,u=!1,p=!1,f=!1,m,g=async()=>{if(!f)try{await pg(e)}catch{e.kill("SIGKILL")}},h=v=>{if(a>=t.maxOutputBytes){d=!0;return}let b=t.maxOutputBytes-a,k=v.subarray(0,b);n.push(Buffer.from(k)),a+=k.byteLength,k.byteLength<v.byteLength&&(d=!0,g())},w=v=>{if(o>=t.maxOutputBytes||u){d||=o>=t.maxOutputBytes;return}let b=t.maxOutputBytes-o,k=v.subarray(0,b);o+=k.byteLength;let E=(c+l.write(k)).split(`
`);c=E.pop()??"";for(let N of E){if(s>=t.maxMatches){u=!0,g();break}let P=`${N}
`,_=Buffer.byteLength(P,"utf8");if(i+_>t.maxOutputBytes){d=!0,g();break}if(r.push(Buffer.from(P,"utf8")),i+=_,/"type"\s*:\s*"match"/u.test(N)&&(s+=1,s>=t.maxMatches)){u=!0,g();break}}k.byteLength<v.byteLength&&(d=!0,c="",g())};return e.stdout.on("data",v=>w(Buffer.from(v))),e.stderr.on("data",v=>h(Buffer.from(v))),await new Promise(v=>{m=setTimeout(()=>{p=!0,g()},t.timeoutMs),e.once("error",b=>{f=!0,m&&clearTimeout(m),v({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(n).toString("utf8"),exitCode:null,timedOut:p,truncated:d,matchLimitReached:u,error:b})}),e.once("close",b=>{if(f=!0,m&&clearTimeout(m),c+=l.end(),c&&!d&&!u&&i<t.maxOutputBytes){let k=Buffer.byteLength(c,"utf8");i+k<=t.maxOutputBytes?(r.push(Buffer.from(c,"utf8")),i+=k):d=!0}v({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(n).toString("utf8"),exitCode:b,timedOut:p,truncated:d,matchLimitReached:u})})})}Q();import{closeSync as uq,mkdirSync as pq,openSync as fq,readFileSync as mq,readSync as hq,statSync as Ty}from"node:fs";import{createHash as gq}from"node:crypto";import Qs from"node:path";import{promises as _y}from"node:fs";import{createHash as ZV}from"node:crypto";import Js from"node:path";Q();import{createRequire as JV}from"node:module";var YV=JV(import.meta.url),XV="SQLite is an experimental feature and might change at any time",qu;function QV(){if(qu)return qu;let t=process.emitWarning;process.emitWarning=((e,...r)=>{(e instanceof Error?e.message:e).startsWith(XV)||Reflect.apply(t,process,[e,...r])});try{return qu=YV("node:sqlite").DatabaseSync,qu}finally{process.emitWarning=t}}function zu(t,e){let r=QV();return e===void 0?new r(t):new r(t,e)}var Gu="comet.project-knowledge.index.v3",eq=256*1024,mR=16e3,tq=256,rq=2e3;function nq(t){return ZV("sha256").update(t).digest("hex")}function hR(t){return typeof t=="number"?t:typeof t=="bigint"?Number(t):0}function iq(t){let e=t;return e.code==="SQLITE_BUSY"||e.code==="SQLITE_LOCKED"?!0:e.code==="ERR_SQLITE_ERROR"&&typeof e.message=="string"&&/(?:database|table|schema) is locked/iu.test(e.message)}function jy(t){let e=t.prepare("SELECT key, value FROM pk_meta").all();return new Map(e.map(({key:r,value:n})=>[r,n]))}function Ht(t,e,r){t.prepare("INSERT INTO pk_meta(key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value").run(e,r)}function oq(t){t.exec("BEGIN IMMEDIATE;");try{t.prepare("DELETE FROM pk_fts_terms WHERE rowid NOT IN (SELECT id FROM pk_sections)").run(),t.prepare("DELETE FROM pk_fts_trigram WHERE rowid NOT IN (SELECT id FROM pk_sections)").run(),t.prepare("INSERT INTO pk_fts_terms(rowid, workspace_id, source, title, heading_path, body, lexical_terms) SELECT section.id, section.workspace_id, section.source, section.title, section.heading_path, section.body, section.lexical_terms FROM pk_sections AS section WHERE NOT EXISTS (SELECT 1 FROM pk_fts_terms AS fts WHERE fts.rowid = section.id)").run(),t.prepare("INSERT INTO pk_fts_trigram(rowid, workspace_id, source, title, heading_path, body) SELECT section.id, section.workspace_id, section.source, section.title, section.heading_path, section.body FROM pk_sections AS section WHERE NOT EXISTS (SELECT 1 FROM pk_fts_trigram AS fts WHERE fts.rowid = section.id)").run(),t.exec("COMMIT;")}catch(e){throw t.exec("ROLLBACK;"),e}}function aq(t){return`"${t.replaceAll('"','""')}"`}function gR(t){let e=[...new Set(t.map(r=>r.trim()).filter(r=>r.length>=2))];return e.length>0?e.map(aq).join(" OR "):null}function sq(t){return t.replaceAll(`\r
`,`
`).replaceAll("\r",`
`).split(`
`)}function cq(t){return t.normalize("NFKC").toLocaleLowerCase().replace(/[^\p{Letter}\p{Number}._-]+/gu,"-").replace(/^-+|-+$/gu,"").slice(0,100)||"section"}function yR(t){let e=[],r=n=>{let i=n.trim().toLocaleLowerCase();i.length<2||e.includes(i)||e.length>=tq||e.push(i)};for(let n of t.matchAll(/[A-Za-z][A-Za-z0-9_./:-]*/gu)){r(n[0]);for(let i of n[0].split(/[./:-]/u))r(i)}for(let n of t.matchAll(/[\u3400-\u9fff]{2,}/gu)){let i=n[0];r(i);for(let o=Math.min(4,i.length);o>=2;o-=1)for(let a=0;a+o<=i.length;a+=1)r(i.slice(a,a+o))}return e.join(" ")}function lq(t,e){let r=sq(e),n=0;if(r[0]?.trim()==="---"){let s=r.slice(1).findIndex(c=>c.trim()==="---");s>=0&&(n=s+2)}let i=[],o=[];for(let s=n;s<r.length;s+=1){let c=/^\s{0,3}(#{1,6})\s+(.+?)\s*#*\s*$/u.exec(r[s]??"");if(!c)continue;let l=c[1].length,d=c[2].trim().slice(0,200);o.length=l-1,o[l-1]=d,i.push({line:s,level:l,title:d,path:o.filter(Boolean).join(" > ")})}if(i.length===0){let s=r.slice(n).join(`
`).trim().slice(0,mR);if(!s)return[];let c=Js.posix.basename(t,Js.posix.extname(t));return[{anchor:"document",title:c,headingPath:c,body:s,lexicalTerms:yR(`${t}
${c}
${s}`)}]}let a=new Map;return i.map((s,c)=>{let l=r.slice(s.line,i[c+1]?.line??r.length).join(`
`).trim().slice(0,mR),d=s.path.split(" > ").map(cq).join("/"),u=(a.get(d)??0)+1;return a.set(d,u),{anchor:u===1?d:`${d}-${u}`,title:s.title,headingPath:s.path,body:l,lexicalTerms:yR(`${t}
${s.path}
${l}`)}})}var Uu=class{databasePath;repositoryId;workspaceId;lastSyncReadBytes=0;projectRoot;reportDiagnostic;database=null;constructor(e){this.projectRoot=Js.resolve(e.projectRoot),this.reportDiagnostic=e.reportDiagnostic;let r=rr(this.projectRoot,e.storageRoot??e.cacheRoot);this.databasePath=r.databasePath,this.repositoryId=r.repositoryId,this.workspaceId=r.workspaceId}async open(){if(this.database)return;await _y.mkdir(Js.dirname(this.databasePath),{recursive:!0});let e=null;try{e=zu(this.databasePath),e.exec("PRAGMA journal_mode = WAL; PRAGMA busy_timeout = 250;"),e.exec("CREATE TABLE IF NOT EXISTS pk_meta (key TEXT PRIMARY KEY, value TEXT NOT NULL);");let r=jy(e);r.size>0&&r.get("schema")!==Gu&&(e.exec(["DROP TABLE IF EXISTS pk_fts_terms;","DROP TABLE IF EXISTS pk_fts_trigram;","DROP TABLE IF EXISTS pk_sections;","DROP TABLE IF EXISTS pk_sources;"].join(`
`)),e.prepare("DELETE FROM pk_meta WHERE key IN ('schema', 'workspaceId')").run()),e.exec(["CREATE TABLE IF NOT EXISTS pk_sources (workspace_id TEXT NOT NULL, source TEXT NOT NULL, kind TEXT NOT NULL, archived_at TEXT, size INTEGER NOT NULL, modified_at REAL NOT NULL, digest TEXT NOT NULL, indexed_at TEXT NOT NULL, PRIMARY KEY(workspace_id, source));","CREATE TABLE IF NOT EXISTS pk_sections (id INTEGER PRIMARY KEY, workspace_id TEXT NOT NULL, source TEXT NOT NULL, anchor TEXT NOT NULL, title TEXT NOT NULL, heading_path TEXT NOT NULL, body TEXT NOT NULL, lexical_terms TEXT NOT NULL, updated_at TEXT NOT NULL, UNIQUE(workspace_id, source, anchor));","CREATE INDEX IF NOT EXISTS pk_sections_workspace_source ON pk_sections(workspace_id, source);","CREATE VIRTUAL TABLE IF NOT EXISTS pk_fts_terms USING fts5(workspace_id UNINDEXED, source UNINDEXED, title, heading_path, body, lexical_terms, tokenize='unicode61');","CREATE VIRTUAL TABLE IF NOT EXISTS pk_fts_trigram USING fts5(workspace_id UNINDEXED, source UNINDEXED, title, heading_path, body, tokenize='trigram');"].join(`
`));let n=jy(e);if(n.get("repositoryId")&&n.get("repositoryId")!==this.repositoryId)throw new Error("Project knowledge index identity or structure is incompatible");Ht(e,"schema",Gu),Ht(e,"repositoryId",this.repositoryId),Ht(e,"tokenizer","unicode61+trigram"),oq(e),e.prepare("SELECT rowid FROM pk_fts_terms WHERE pk_fts_terms MATCH 'probe'").all(),this.database=e}catch(r){if(iq(r))throw e?.close(),this.reportDiagnostic?.({code:"index-unavailable",message:"Project knowledge section index is temporarily locked; authoritative records were retained."}),r;let n=!1;if(e)try{e.exec(["DROP TABLE IF EXISTS pk_fts_terms;","DROP TABLE IF EXISTS pk_fts_trigram;","DROP TABLE IF EXISTS pk_sections;","DROP TABLE IF EXISTS pk_sources;","CREATE TABLE pk_sources (workspace_id TEXT NOT NULL, source TEXT NOT NULL, kind TEXT NOT NULL, archived_at TEXT, size INTEGER NOT NULL, modified_at REAL NOT NULL, digest TEXT NOT NULL, indexed_at TEXT NOT NULL, PRIMARY KEY(workspace_id, source));","CREATE TABLE pk_sections (id INTEGER PRIMARY KEY, workspace_id TEXT NOT NULL, source TEXT NOT NULL, anchor TEXT NOT NULL, title TEXT NOT NULL, heading_path TEXT NOT NULL, body TEXT NOT NULL, lexical_terms TEXT NOT NULL, updated_at TEXT NOT NULL, UNIQUE(workspace_id, source, anchor));","CREATE INDEX pk_sections_workspace_source ON pk_sections(workspace_id, source);","CREATE VIRTUAL TABLE pk_fts_terms USING fts5(workspace_id UNINDEXED, source UNINDEXED, title, heading_path, body, lexical_terms, tokenize='unicode61');","CREATE VIRTUAL TABLE pk_fts_trigram USING fts5(workspace_id UNINDEXED, source UNINDEXED, title, heading_path, body, tokenize='trigram');"].join(`
`)),Ht(e,"schema",Gu),Ht(e,"repositoryId",this.repositoryId),Ht(e,"tokenizer","unicode61+trigram"),n=!0,this.reportDiagnostic?.({code:"index-recovered",message:"Project knowledge section and FTS projection was rebuilt in place."})}catch{}throw e?.close(),n||this.reportDiagnostic?.({code:"index-unavailable",message:"Project knowledge section index is unavailable; authoritative records were retained."}),r}}close(){this.database?.close(),this.database=null}async syncCorpus(e,r={}){return this.syncCorpusInternal(e,{complete:r.complete!==!1,deadline:Date.now()+rq})}async syncCorpusInternal(e,r){await this.open();let n=this.requireDatabase(),i=new Map(n.prepare("SELECT source, size, modified_at, digest FROM pk_sources WHERE workspace_id = ?").all(this.workspaceId).map(c=>[c.source,c])),o=new Set(e.map(c=>c.source)),a=[],s=[];this.lastSyncReadBytes=0;for(let c=0;c<e.length;c+=1){let l=e[c];if(r.deadline!==void 0&&Date.now()>r.deadline){this.reportDiagnostic?.({code:"index-budget",message:"未进入检索:索引刷新超过时间预算,尚未处理的语料当前不会参与召回。"}),a.push(...e.slice(c));break}let d;try{d=await _y.lstat(l.absolutePath)}catch{a.push(l),i.has(l.source)&&this.reportDiagnostic?.({code:"index-source",message:`未进入检索:${l.source} 在索引时发生变化或无法读取,已保留之前的可用索引。`});continue}let u=i.get(l.source);try{let p=await O(this.projectRoot,l.source,eq,{label:l.source});if(this.lastSyncReadBytes+=p.bytes.length,r.deadline!==void 0&&Date.now()>r.deadline){this.reportDiagnostic?.({code:"index-budget",message:"未进入检索:索引刷新超过时间预算,尚未处理的语料当前不会参与召回。"}),a.push(...e.slice(c));break}let f=await _y.lstat(l.absolutePath);if(f.size!==p.stat.size||f.mtimeMs!==p.stat.mtimeMs)throw new Error("source changed while it was being indexed");let m=nq(p.bytes);if(!r.force&&u&&u.size===d.size&&u.modified_at===d.mtimeMs&&u.digest===m)continue;let g=lq(l.source,p.bytes.toString("utf8"));if(r.deadline!==void 0&&Date.now()>r.deadline){this.reportDiagnostic?.({code:"index-budget",message:"未进入检索:索引刷新超过时间预算,尚未处理的语料当前不会参与召回。"}),a.push(...e.slice(c));break}try{this.applySourceDelta(n,l,Number(p.stat.size),Number(p.stat.mtimeMs),m,g,r.force===!0)}catch{a.push(l),this.reportDiagnostic?.({code:"index-write",message:`未进入检索:${l.source} 的索引写入失败,已保留之前的可用索引。`});continue}s.push(l)}catch{a.push(l),this.reportDiagnostic?.({code:"index-source",message:`未进入检索:${l.source} 在索引时发生变化或无法读取,已保留之前的可用索引。`})}}if(r.complete&&a.length===0)for(let c of i.keys())o.has(c)||this.removeSource(n,this.workspaceId,c);return{changedSources:a,refreshedSources:s,status:this.status()}}search(e){let r=performance.now(),n=this.requireDatabase(),i=[],o=gR([...e.strongTerms,...e.phraseTerms,...e.weakTerms]);o&&i.push({name:"fts-terms",rows:this.searchChannel(n,this.workspaceId,"terms",o,40)});let a=gR([...e.phraseTerms,...e.weakTerms].filter(d=>[...d].length>=3));a&&i.push({name:"fts-trigram",rows:this.searchChannel(n,this.workspaceId,"trigram",a,20)});let s=new Map;for(let d of i)d.rows.forEach((u,p)=>{let f=s.get(u.id),m=(f?.score??0)+1/(60+p+1),g=new Set(f?.channels??[]);g.add(d.name),s.set(u.id,{row:u,score:m,channels:g})});let c=[...s.values()].map(({row:d,score:u,channels:p})=>{let f=`${d.source}
${d.title}
${d.heading_path}
${d.body}`.toLocaleLowerCase(),m=e.strongTerms.some(v=>f.includes(v.toLocaleLowerCase())),g=e.phraseTerms.some(v=>f.includes(v.toLocaleLowerCase())),h=e.terms.filter(v=>f.includes(v.toLocaleLowerCase())).length,w=!!(e.path&&d.source.toLocaleLowerCase().includes(e.path.toLocaleLowerCase())),y=d.kind.endsWith("-spec")?0:d.kind.endsWith("-archive")?1:2;return{row:d,reliable:m||g||h>=2,score:u+(m?.05:0)+(g?.025:0)+(w?.03:0)-y*.05,names:p}}).filter(d=>d.reliable).sort((d,u)=>u.score-d.score||d.row.source.localeCompare(u.row.source)).slice(0,40),l=Math.round((performance.now()-r)*100)/100;return Ht(n,"lastQueryMs",String(l)),Ht(n,"lastCandidateCount",String(c.length)),Ht(n,"lastChannels",i.map(d=>d.name).join(",")),c.map(({row:d,score:u})=>({source:d.source,title:d.title,content:d.body.slice(0,1600),score:u,document:{absolutePath:Js.join(this.projectRoot,...d.source.split("/")),source:d.source,kind:d.kind,...d.archived_at?{archivedAt:d.archived_at}:{}}}))}status(){let e=this.requireDatabase(),r=jy(e),n=e.prepare("SELECT source, kind, archived_at, indexed_at FROM pk_sources WHERE workspace_id = ? ORDER BY source").all(this.workspaceId).map(a=>({source:a.source,kind:a.kind,...a.archived_at?{archivedAt:a.archived_at}:{},updatedAt:a.indexed_at})),i=hR(e.prepare("SELECT COUNT(*) AS count FROM pk_sources WHERE workspace_id = ?").get(this.workspaceId).count),o=hR(e.prepare("SELECT COUNT(*) AS count FROM pk_sections WHERE workspace_id = ?").get(this.workspaceId).count);return{schema:Gu,available:!0,databasePath:this.databasePath,repositoryId:this.repositoryId,workspaceId:this.workspaceId,sourceCount:i,sources:n,sectionCount:o,...r.get("updatedAt")?{updatedAt:r.get("updatedAt")}:{},...Number.isFinite(Number(r.get("lastQueryMs")))?{lastQueryMs:Number(r.get("lastQueryMs"))}:{},...Number.isSafeInteger(Number(r.get("lastCandidateCount")))?{lastCandidateCount:Number(r.get("lastCandidateCount"))}:{},channels:(r.get("lastChannels")??"").split(",").filter(Boolean)}}async rebuild(e){return(await this.syncCorpusInternal(e,{complete:!0,force:!0})).status}applySourceDelta(e,r,n,i,o,a,s=!1){let c=new Date().toISOString();e.exec("BEGIN IMMEDIATE;");try{e.prepare("INSERT INTO pk_sources(workspace_id, source, kind, archived_at, size, modified_at, digest, indexed_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(workspace_id, source) DO UPDATE SET kind = excluded.kind, archived_at = excluded.archived_at, size = excluded.size, modified_at = excluded.modified_at, digest = excluded.digest, indexed_at = excluded.indexed_at").run(this.workspaceId,r.source,r.kind,r.archivedAt??null,n,i,o,c);let l=new Map(e.prepare("SELECT id, anchor, title, heading_path, body, lexical_terms FROM pk_sections WHERE workspace_id = ? AND source = ?").all(this.workspaceId,r.source).map(u=>[u.anchor,u])),d=new Set(a.map(u=>u.anchor));for(let u of l.values())d.has(u.anchor)||(e.prepare("DELETE FROM pk_fts_terms WHERE rowid = ?").run(u.id),e.prepare("DELETE FROM pk_fts_trigram WHERE rowid = ?").run(u.id),e.prepare("DELETE FROM pk_sections WHERE id = ?").run(u.id));for(let u of a){let p=l.get(u.anchor);if(p&&p.title===u.title&&p.heading_path===u.headingPath&&p.body===u.body&&p.lexical_terms===u.lexicalTerms&&!s)continue;let m;if(p)m=p.id,e.prepare("UPDATE pk_sections SET title = ?, heading_path = ?, body = ?, lexical_terms = ?, updated_at = ? WHERE id = ?").run(u.title,u.headingPath,u.body,u.lexicalTerms,c,m);else{let g=e.prepare("INSERT INTO pk_sections(workspace_id, source, anchor, title, heading_path, body, lexical_terms, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)").run(this.workspaceId,r.source,u.anchor,u.title,u.headingPath,u.body,u.lexicalTerms,c);m=Number(g.lastInsertRowid)}e.prepare("DELETE FROM pk_fts_terms WHERE rowid = ?").run(m),e.prepare("DELETE FROM pk_fts_trigram WHERE rowid = ?").run(m),e.prepare("INSERT INTO pk_fts_terms(rowid, workspace_id, source, title, heading_path, body, lexical_terms) VALUES (?, ?, ?, ?, ?, ?, ?)").run(m,this.workspaceId,r.source,u.title,u.headingPath,u.body,u.lexicalTerms),e.prepare("INSERT INTO pk_fts_trigram(rowid, workspace_id, source, title, heading_path, body) VALUES (?, ?, ?, ?, ?, ?)").run(m,this.workspaceId,r.source,u.title,u.headingPath,u.body)}Ht(e,"updatedAt",c),e.exec("COMMIT;")}catch(l){throw e.exec("ROLLBACK;"),l}}removeSource(e,r,n){let i=e.prepare("SELECT id FROM pk_sections WHERE workspace_id = ? AND source = ?").all(r,n);e.exec("BEGIN IMMEDIATE;");try{for(let{id:o}of i)e.prepare("DELETE FROM pk_fts_terms WHERE rowid = ?").run(o),e.prepare("DELETE FROM pk_fts_trigram WHERE rowid = ?").run(o);e.prepare("DELETE FROM pk_sections WHERE workspace_id = ? AND source = ?").run(r,n),e.prepare("DELETE FROM pk_sources WHERE workspace_id = ? AND source = ?").run(r,n),Ht(e,"updatedAt",new Date().toISOString()),e.exec("COMMIT;")}catch(o){throw e.exec("ROLLBACK;"),o}}searchChannel(e,r,n,i,o){let a=n==="terms"?"pk_fts_terms":"pk_fts_trigram",s=n==="terms"?"0.0, 0.0, 1.0, 3.0, 2.0, 0.8, 1.5":"0.0, 0.0, 1.0, 2.5, 1.8, 0.7";return e.prepare(`SELECT s.id, s.source, p.kind, p.archived_at, s.title, s.heading_path, s.body, bm25(${a}, ${s}) AS rank FROM ${a} JOIN pk_sections s ON s.id = ${a}.rowid JOIN pk_sources p ON p.workspace_id = s.workspace_id AND p.source = s.source WHERE ${a} MATCH ? AND s.workspace_id = ? ORDER BY rank LIMIT ?`).all(i,r,o)}requireDatabase(){if(!this.database)throw new Error("Project knowledge index is not open");return this.database}};function Iy(t){return t.normalize("NFKC").toLocaleLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/gu,"")}function dq(t,e){let r=Iy(e);return r?t.split(/\r?\n/u).map(i=>/^#{1,6}\s+(.+?)(?:\s+#+)?$/u.exec(i)?.[1]).filter(i=>i!==void 0).some(i=>Iy(i)===r)?!0:[...t.matchAll(/\b(?:id|name)\s*=\s*["']([^"']+)["']/giu)].some(i=>Iy(i[1]??"")===r):!1}function Ju(t,e){if(e.anchor!==void 0&&!dq(t,e.anchor))return!1;if(e.lineStart!==void 0||e.lineEnd!==void 0){let r=t.split(/\r?\n/u).length;if((e.lineStart??1)>r||(e.lineEnd??e.lineStart??1)>r)return!1}return!0}Q();var yq=1024*1024,vR="4",wR="generated-record-maintenance-v2";function bR(t,e){if(t.sourceVersions.length!==e.sourceVersions.length)return!1;let r=new Map(e.sourceVersions.map(n=>[n.source,n]));return t.sourceVersions.every(n=>{let i=r.get(n.source);return!i||n.size!==i.size||n.modifiedAt!==i.modifiedAt?!1:n.digest===void 0||i.digest===void 0?n.digest===void 0&&i.digest===void 0:n.digest===i.digest})}function Xu(t){return[...t.conclusions.flatMap(e=>e.sources),...t.relations.flatMap(e=>e.sources)]}function dr(t){return t.trim().replace(/\s+/gu," ")}function _R(t){return t.id.startsWith("generated-module-")&&!t.id.startsWith("generated-module-overview")}function vq(t){let e=dr(t),r=e.search(/[::]/u);if(r<0)return e;let n=e.slice(0,r),i=e.slice(r+1).replace(/[。.]+$/u,""),o=/registration points|注册点/iu.test(n),a=i.split(o?/\s*;\s*|\s*;\s*/u:/\s*、\s*|\s*,\s*/u).map(s=>s.trim()).filter(Boolean).sort((s,c)=>s.localeCompare(c));return`${n}:${a.join("|")}`}function wq(t){return{source:ji(t.source),...t.anchor===void 0?{}:{anchor:dr(t.anchor)}}}function bq(t){let e=ji(t.source),r=e.split("/").filter(Boolean),n=new Set(["app","domains","platform","src","packages"]);return{source:r[0]==="test"&&r[1]&&n.has(r[1])?r.slice(0,3).join("/"):r[0]&&n.has(r[0])?r.slice(0,Math.min(2,r.length)).join("/"):e,...t.anchor===void 0?{}:{anchor:dr(t.anchor)}}}function Xs(t){let e=_R(t),r=e?bq:wq,n=t.conclusions.map(o=>({text:e?vq(o.text):dr(o.text),sources:[...new Map(o.sources.map(a=>{let s=r(a);return[JSON.stringify(s),s]})).values()].sort((a,s)=>JSON.stringify(a).localeCompare(JSON.stringify(s)))})).sort((o,a)=>JSON.stringify(o).localeCompare(JSON.stringify(a))),i={type:t.type,title:dr(t.title),summary:e?n.map(o=>o.text).join(" "):dr(t.summary),applicablePaths:[...t.applicablePaths].map(ji).sort(),operations:[...t.operations].map(dr).sort(),phases:[...t.phases??[]].map(dr).sort(),conclusions:n,relations:t.relations.filter(o=>o.type!=="supersedes").map(o=>({type:o.type,targetId:o.targetId,sources:[...new Map(o.sources.map(a=>{let s=r(a);return[JSON.stringify(s),s]})).values()].sort((a,s)=>JSON.stringify(a).localeCompare(JSON.stringify(s)))})).sort((o,a)=>JSON.stringify(o).localeCompare(JSON.stringify(a))),verification:t.verification.map(o=>({command:dr(o.command),...o.expected===void 0?{}:{expected:dr(o.expected)}})).sort((o,a)=>JSON.stringify(o).localeCompare(JSON.stringify(a)))};return gq("sha256").update(JSON.stringify(i)).digest("hex").slice(0,12)}function kq(t){return t.replace(/-v-[a-f0-9]{12}$/u,"")}function kR(t){return t.authority==="user"||t.applicationCount>0||t.successCount>0||t.failureCount>0||t.lastAppliedAt!==void 0}function SR(t,e){let r=Xs(e);return U({...e,id:`${t.slice(0,112)}-v-${r}`,state:"superseded",relations:e.relations.filter(n=>n.type!=="supersedes")})}function Sq(t,e){if(e.anchor===void 0&&e.lineStart===void 0&&e.lineEnd===void 0)return!0;let r=Ty(t),n=Math.min(Number(r.size),yq),i=Buffer.alloc(n),o=fq(t,"r");try{hq(o,i,0,n,0)}finally{uq(o)}let a=i.toString("utf8");return Ju(a,e)}async function Nq(t,e){let{digest:r}=await wr(t,e,{label:`Project Knowledge source ${e}`});return r}async function NR(t,e,r){let n=Xu(e),i=new Set(n.map(d=>d.source)),o=[...i,...e.sourceVersions.map(d=>d.source).filter(d=>!i.has(d))];if(o.length===0)return{current:!1,complete:!0,sourceVersions:e.sourceVersions};let a=new Map(e.sourceVersions.map(d=>[d.source,d])),s=[],c=!0,l=!0;for(let d of o)try{let u=Qs.join(t,...d.split("/")),p=Ty(u);if(!p.isFile()){l=!1;continue}let f={source:d,size:p.size,modifiedAt:Math.trunc(p.mtimeMs),digest:await Nq(t,d)};s.push(f),n.filter(g=>g.source===d).every(g=>Sq(u,g))||(c=!1);let m=a.get(d);!r&&(m===void 0||m.digest===void 0||m.digest!==f.digest)&&(c=!1)}catch{c=!1,l=!1}return{current:c,complete:l,sourceVersions:l?s:e.sourceVersions}}function ER(t){return Xu(t).length>0||t.sourceVersions.length>0}function Eq(t,e){return e.verification.every(r=>$y(t,r.command)!=="missing")}function xq(t,e){return e.verification.length>0&&e.verification.every(r=>$y(t,r.command)==="current")}function $y(t,e){let r=e.trim().replace(/\s+/gu," ");if(/^comet (?:native check|classic guard)(?:\s|$)/u.test(r))return"current";let n=/^(?:pnpm|npm|yarn|bun) run ([A-Za-z0-9:_-]+)(?:\s|$)/u.exec(r),i=/^(?:pnpm|yarn) ([A-Za-z0-9:_-]+)(?:\s|$)/u.exec(r),o=/^npm (test|start|stop|restart)(?:\s|$)/u.exec(r),a=n?.[1]??i?.[1]??o?.[1];if(a!==void 0)try{return typeof JSON.parse(mq(Qs.join(t,"package.json"),"utf8")).scripts?.[a]=="string"?"current":"missing"}catch{return"missing"}let s=r.split(" ")[0]?.replaceAll("\\","/")??"";return/^(?:\.\/)?(?:mvnw(?:\.cmd)?|gradlew(?:\.bat)?)$/iu.test(s)?Ys(t,s.replace(/^\.\//u,""))?"current":"missing":/^\.\/[A-Za-z0-9._/-]+$/u.test(s)?Ys(t,s.slice(2))?"current":"missing":/^(?:mvn|mvn\.cmd)$/iu.test(s)?Ys(t,"pom.xml")?"current":"unknown":/^(?:gradle|gradle\.bat)$/iu.test(s)?["build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts"].some(c=>Ys(t,c))?"current":"unknown":(s==="pytest"||/^(?:python|python3|py)$/iu.test(s)&&/^\S+ -m pytest(?:\s|$)/u.test(r))&&["pyproject.toml","pytest.ini","setup.cfg","tox.ini"].some(c=>Ys(t,c))?"current":"unknown"}function Ys(t,e){try{return Ty(Qs.join(t,...e.split("/"))).isFile()}catch{return!1}}function xR(t){return t==="corrected"||t==="contributed-to-failure"}function Pq(t){let e=Xu(t)[0];return e===void 0?`record:${t.id}`:jR(e)}function jR(t){return t.anchor!==void 0?`${t.source}#${t.anchor}`:t.lineStart!==void 0?`${t.source}#L${t.lineStart}${t.lineEnd?`-L${t.lineEnd}`:""}`:t.source}function Cq(t){return[t.title,t.summary,...t.applicablePaths,...t.operations,...t.phases??[],...t.conclusions.map(e=>e.text)].join(`
`).toLocaleLowerCase()}var PR={topology:0,fact:1,dependency:2,constraint:3,decision:4,pattern:5,procedure:6,"failure-resolution":7};function ji(t){return t.replaceAll("\\","/").replace(/^\.\//u,"").toLocaleLowerCase()}function Rq(t,e){if(!e.path)return!1;let r=ji(e.path);return t.applicablePaths.map(ji).some(n=>n===r||n.startsWith(`${r}/`)||r.startsWith(n.endsWith("/")?n:`${n}/`))}function Aq(t,e){if(!e.path)return!1;let r=ji(e.path);return t.applicablePaths.map(ji).some(n=>gu(n,r))}function IR(t,e){if(!e.operation)return!1;let r=e.operation.toLocaleLowerCase();return t.operations.some(n=>n.toLocaleLowerCase()===r)}function _q(t,e){if(t.applicablePaths.length>0&&e.path&&!Aq(t,e)||t.operations.length>0&&e.operation&&!IR(t,e))return!1;let r=t.phases??[];if(r.length>0&&e.phase){let n=e.phase.toLocaleLowerCase();if(!r.some(i=>i.toLocaleLowerCase()===n))return!1}return!0}function CR(t){return t.state==="enforced"?3:t.state==="proven"?2:1}function RR(t){return t.authority==="user"?3:t.authority==="repository"?2:1}function AR(t){return Math.min(t.successCount,10)*4-Math.min(t.failureCount,10)*8}function jq(t){return{provider:"local",healthy:t.available,writable:!0,diagnostics:t.diagnostic?[{code:"index-unavailable",message:t.diagnostic}]:[],updatedAt:t.updatedAt}}var Yu=class t{static sharedDatabases=new Map;databasePath;repositoryId;workspaceId;projectRoot;reportDiagnostic;database;indexStore;closed=!1;constructor(e){this.projectRoot=Qs.resolve(e.projectRoot),this.reportDiagnostic=e.reportDiagnostic;let r=rr(this.projectRoot,e.storageRoot??e.cacheRoot);this.databasePath=r.databasePath,this.repositoryId=r.repositoryId,this.workspaceId=r.workspaceId,pq(Qs.dirname(this.databasePath),{recursive:!0}),this.database=this.acquireDatabase(),this.initializeSchema(),this.maintainGeneratedRecords(),this.indexStore=new Uu({projectRoot:e.projectRoot,...e.storageRoot?{cacheRoot:e.storageRoot}:{},...e.cacheRoot?{cacheRoot:e.cacheRoot}:{},...e.reportDiagnostic?{reportDiagnostic:e.reportDiagnostic}:{}})}status(){let e=this.requireDatabase().prepare("SELECT COUNT(*) AS count, MAX(updated_at) AS updated_at FROM pk_records").get();return{provider:"local",healthy:!0,writable:!0,recordCount:typeof e.count=="bigint"?Number(e.count):e.count??0,...e.updated_at?{updatedAt:e.updated_at}:{},diagnostics:[]}}list(e={}){let r=[],n=[];e.projectId&&(r.push("project_id = ?"),n.push(e.projectId)),e.type&&(r.push("type = ?"),n.push(e.type)),e.state&&(r.push("state = ?"),n.push(e.state)),e.authority&&(r.push("authority = ?"),n.push(e.authority));let i=Math.max(1,Math.min(500,e.limit??500));return this.requireDatabase().prepare(`SELECT payload_json FROM pk_records${r.length?` WHERE ${r.join(" AND ")}`:""} ORDER BY updated_at DESC, id LIMIT ?`).all(...n,i).map(a=>U(JSON.parse(a.payload_json)))}projectCounts(e){let r=this.requireDatabase().prepare("SELECT state, COUNT(*) AS count FROM pk_records WHERE project_id = ? GROUP BY state").all(e),n={active:0,trial:0,proven:0,enforced:0,superseded:0,total:0};for(let i of r){let o=typeof i.count=="bigint"?Number(i.count):i.count;n[i.state]=o,n.total+=o,i.state!=="superseded"&&(n.active+=o)}return n}read(e){let r=this.requireDatabase().prepare("SELECT payload_json FROM pk_records WHERE id = ?").get(e);return r?U(JSON.parse(r.payload_json)):null}importNewerRecords(e){let r=this.requireDatabase().prepare("INSERT INTO pk_records(id, project_id, type, state, authority, payload_json, source_versions_json, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET project_id = excluded.project_id, type = excluded.type, state = excluded.state, authority = excluded.authority, payload_json = excluded.payload_json, source_versions_json = excluded.source_versions_json, updated_at = excluded.updated_at WHERE pk_records.updated_at < excluded.updated_at"),n=0;for(let i of e){let o=r.run(i.id,i.projectId,i.type,i.state,i.authority,JSON.stringify(i),JSON.stringify(i.sourceVersions),i.updatedAt);n+=Number(o.changes)}return n}importSnapshot(e,r){let n=e.records.map(o=>[o.id,o.projectId,o.type,o.state,o.authority,JSON.stringify(o),JSON.stringify(o.sourceVersions),o.updatedAt]),i=this.requireDatabase();i.exec("BEGIN IMMEDIATE;");try{if(r!==void 0&&i.prepare("SELECT value FROM pk_meta WHERE key = ?").get(r))return i.exec("COMMIT;"),!1;let o=i.prepare("INSERT INTO pk_records(id, project_id, type, state, authority, payload_json, source_versions_json, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET project_id = excluded.project_id, type = excluded.type, state = excluded.state, authority = excluded.authority, payload_json = excluded.payload_json, source_versions_json = excluded.source_versions_json, updated_at = excluded.updated_at WHERE pk_records.updated_at < excluded.updated_at");for(let l of n)o.run(...l);let a=i.prepare("INSERT OR IGNORE INTO pk_applied_mutations(mutation_key, applied_at) VALUES (?, ?)");for(let l of e.appliedMutations)a.run(l.mutationKey,l.appliedAt);let s=i.prepare("INSERT INTO pk_application_outcomes(record_id, application_id, status, revision) VALUES (?, ?, ?, ?) ON CONFLICT(record_id, application_id) DO UPDATE SET status = excluded.status, revision = excluded.revision WHERE pk_application_outcomes.revision < excluded.revision");for(let l of e.applicationOutcomes)s.run(l.recordId,l.applicationId,l.status,l.revision);let c=i.prepare("INSERT OR IGNORE INTO pk_feedback_state(record_id, base_state) VALUES (?, ?)");for(let l of e.feedbackStates)c.run(l.recordId,l.baseState);return r!==void 0&&i.prepare("INSERT INTO pk_meta(key, value) VALUES (?, ?)").run(r,"complete"),i.exec("COMMIT;"),!0}catch(o){throw i.exec("ROLLBACK;"),o}}searchRecords(e){let r=[...new Set([...e.terms,...e.strongTerms,...e.phraseTerms].map(l=>l.toLocaleLowerCase()).filter(Boolean))],n=e.path===void 0&&e.operation===void 0&&e.phase===void 0,i=this.list().filter(l=>l.state!=="superseded"&&_q(l,e)),o=i.map(l=>{let d=Cq(l),u=r.filter(p=>d.includes(p)).length;return{record:l,matches:u,pathAssociation:Rq(l,e),operationAssociation:IR(l,e)}}).filter(({matches:l,pathAssociation:d})=>r.length===0?d||e.path===void 0:l>0||d).sort((l,d)=>{if(n&&l.matches!==d.matches)return d.matches-l.matches;let u=CR(d.record)-CR(l.record);if(u!==0)return u;let p=RR(d.record)-RR(l.record);if(p!==0)return p;let f=AR(d.record)-AR(l.record);if(f!==0)return f;if(l.pathAssociation!==d.pathAssociation)return l.pathAssociation?-1:1;if(l.operationAssociation!==d.operationAssociation)return l.operationAssociation?-1:1;if(l.matches!==d.matches)return d.matches-l.matches;let m=PR[l.record.type]-PR[d.record.type];return m!==0?m:l.record.id.localeCompare(d.record.id)}),a=new Map(i.map(l=>[l.id,l])),s=o.map(({record:l,matches:d,pathAssociation:u})=>({record:l,matches:d,pathAssociation:u})),c=new Set(s.map(({record:l})=>l.id));for(let{record:l}of o)for(let d of l.relations){let u=a.get(d.targetId);!u||c.has(u.id)||(s.push({record:u,matches:0,pathAssociation:!1,relationSource:d.sources[0]}),c.add(u.id))}return s.slice(0,40).map(({record:l,matches:d,pathAssociation:u,relationSource:p})=>({source:p?jR(p):Pq(l),title:l.title,record:l,content:`${l.summary}
${l.conclusions.map(f=>f.text).join(`
`)}`.slice(0,1600),score:d+(u?100:0)}))}async apply(e){if(e.kind==="refresh"){let s=this.list({projectId:e.projectId}),c=!1;for(let d of s){if(d.state==="superseded"||e.id&&e.id!==d.id)continue;let u=await NR(this.projectRoot,d,d.authority==="user"&&d.sourceVersions.length===0),f=Eq(this.projectRoot,d)?d.authority==="user"&&!ER(d)?d.state==="enforced"?"enforced":"proven":u.current?d.state:"superseded":"superseded";if(f!==d.state||u.current&&JSON.stringify(u.sourceVersions)!==JSON.stringify(d.sourceVersions)){let m=d.sourceVersions.some(h=>h.digest===void 0),g=u.complete&&(u.current||m)?u.sourceVersions:d.sourceVersions;this.write({...d,state:f,sourceVersions:g,updatedAt:new Date().toISOString()}),c||=f!==d.state||JSON.stringify(g)!==JSON.stringify(d.sourceVersions)}}let l=this.list({projectId:e.projectId});return{kind:e.kind,changed:c,records:l,diagnostics:[]}}if(e.kind==="verify"){let s=new Set(e.commands.map(d=>d.trim())),c=this.list({projectId:e.projectId,type:"constraint"}),l=!1;for(let d of c)d.state==="superseded"||d.verification.length===0||!d.verification.every(u=>s.has(u.command.trim())&&$y(this.projectRoot,u.command)!=="missing")||d.state!=="enforced"&&(this.write({...d,state:"enforced",updatedAt:e.updatedAt}),l=!0);return{kind:e.kind,changed:l,records:this.list({projectId:e.projectId}),diagnostics:[]}}if(e.kind==="feedback")return this.applyFeedback(e);let r=this.read(e.kind==="upsert"?e.record.id:e.id);if(e.kind==="upsert"){let s=U(e.record),c=s.state==="enforced"&&!xq(this.projectRoot,s)?U({...s,state:"proven"}):s;if(r&&r.authority==="user"&&c.authority!=="user")return{kind:e.kind,changed:!1,record:r,diagnostics:[]};if(r?.state==="superseded"&&c.authority!=="user"&&bR(r,c))return{kind:e.kind,changed:!1,record:r,diagnostics:[]};if(r&&c.authority!=="user"){let d=Xs(r),u=Xs(c);if(r.state!=="superseded"&&d===u&&bR(r,c))return{kind:e.kind,changed:!1,record:r,diagnostics:[]};if(d===u){let h=U({...c,state:r.state==="enforced"?"enforced":c.state,applicationCount:r.applicationCount,successCount:r.successCount,failureCount:r.failureCount,...r.lastAppliedAt===void 0?{}:{lastAppliedAt:r.lastAppliedAt}});return this.write(h),{kind:e.kind,changed:JSON.stringify(r)!==JSON.stringify(h),record:h,diagnostics:[]}}let p=SR(c.id,r),f=this.read(p.id);(!f||!kR(f))&&this.write(p);let m=Xu(c)[0]??(c.sourceVersions[0]?{source:c.sourceVersions[0].source}:void 0),g=U({...c,relations:m===void 0?c.relations:[...c.relations.filter(h=>h.type!=="supersedes").slice(0,15),{type:"supersedes",targetId:p.id,sources:[m]}]});return this.write(g),{kind:e.kind,changed:!0,record:g,diagnostics:[]}}let l=r?yP(r,c):c;return this.write(l),{kind:e.kind,changed:!r||JSON.stringify(r)!==JSON.stringify(l),record:l,diagnostics:[]}}if(!r||r.projectId!==e.projectId)return{kind:e.kind,changed:!1,record:null,diagnostics:[{code:"record-not-found",message:`Project knowledge record not found: ${e.id}`}]};if(e.kind==="supersede"){let s=U({...r,state:"superseded",updatedAt:e.updatedAt});return this.write(s),{kind:e.kind,changed:!0,record:s,diagnostics:[]}}let n=U({...r,...e.title!==void 0?{title:e.title}:{},...e.summary!==void 0?{summary:e.summary}:{},...e.applicablePaths!==void 0?{applicablePaths:e.applicablePaths}:{},...e.operations!==void 0?{operations:e.operations}:{},...e.phases!==void 0?{phases:e.phases}:{},...e.conclusions!==void 0?{conclusions:e.conclusions}:{},...e.relations!==void 0?{relations:e.relations}:{},...e.verification!==void 0?{verification:e.verification}:{},authority:"user",state:"proven",updatedAt:e.updatedAt}),i=U({...n,state:"proven"}),o=await NR(this.projectRoot,i,!0),a=U({...i,state:i.authority==="user"&&!ER(i)||o.current?i.state:"trial",sourceVersions:o.current?o.sourceVersions:i.sourceVersions});return this.write(a),{kind:e.kind,changed:!0,record:a,diagnostics:[]}}async syncCorpus(e,r){return this.indexStore.syncCorpus(e,r)}async mutationApplied(e){return!!this.requireDatabase().prepare("SELECT mutation_key FROM pk_applied_mutations WHERE mutation_key = ?").get(e)}async markMutationApplied(e,r){let n=this.requireDatabase();n.exec("BEGIN IMMEDIATE;");try{n.prepare("INSERT OR IGNORE INTO pk_applied_mutations(mutation_key, applied_at) VALUES (?, ?)").run(e,r),n.exec("COMMIT;")}catch(i){throw n.exec("ROLLBACK;"),i}}async indexStatus(){return await this.indexStore.open(),this.indexStore.status()}searchSections(e){return this.indexStore.search(e)}async rebuildWorkspace(e){return jq(await this.indexStore.rebuild(e))}close(){this.closed||(this.closed=!0,this.indexStore.close(),t.releaseDatabase(this.databasePath),this.database=null)}write(e){let r=this.requireDatabase();r.exec("BEGIN IMMEDIATE;");try{this.writeRecord(r,e),r.exec("COMMIT;")}catch(n){throw r.exec("ROLLBACK;"),n}}applyFeedback(e){let r=this.requireDatabase();r.exec("BEGIN IMMEDIATE;");try{if(e.idempotencyKey!==void 0&&r.prepare("SELECT mutation_key FROM pk_applied_mutations WHERE mutation_key = ?").get(e.idempotencyKey)){let h=this.read(e.id);return r.exec("COMMIT;"),{kind:e.kind,changed:!1,record:h,diagnostics:[]}}let n=this.read(e.id);if(!n||n.projectId!==e.projectId)return r.exec("COMMIT;"),{kind:e.kind,changed:!1,record:null,diagnostics:[{code:"record-not-found",message:`Project knowledge record not found: ${e.id}`}]};let i=e.outcome==="used-successfully",o=xR(e.outcome),a=e.applicationId===void 0?void 0:r.prepare("SELECT status, revision FROM pk_application_outcomes WHERE record_id = ? AND application_id = ?").get(n.id,e.applicationId),s=e.revision??(a?.revision??0)+1;if(a!==void 0&&s<=a.revision)return e.idempotencyKey!==void 0&&r.prepare("INSERT OR IGNORE INTO pk_applied_mutations(mutation_key, applied_at) VALUES (?, ?)").run(e.idempotencyKey,e.updatedAt),r.exec("COMMIT;"),{kind:e.kind,changed:!1,record:n,diagnostics:[]};let c=a?.status??(e.applicationId===void 0?e.previousOutcome:void 0),l=c==="used-successfully",d=xR(c);e.applicationId!==void 0&&r.prepare(["INSERT INTO pk_application_outcomes(record_id, application_id, status, revision)","VALUES (?, ?, ?, ?)","ON CONFLICT(record_id, application_id) DO UPDATE SET status = excluded.status, revision = excluded.revision"].join(" ")).run(n.id,e.applicationId,e.outcome,s);let u=r.prepare("SELECT base_state FROM pk_feedback_state WHERE record_id = ?").get(n.id);n.authority==="automatic"&&o&&n.state!=="superseded"&&u===void 0&&r.prepare("INSERT INTO pk_feedback_state(record_id, base_state) VALUES (?, ?)").run(n.id,n.state);let p=r.prepare("SELECT COUNT(*) AS count FROM pk_application_outcomes WHERE record_id = ? AND status IN ('corrected', 'contributed-to-failure')").get(n.id).count,f=!o&&u!==void 0&&Number(p)===0,m=f?u.base_state:n.state,g=U({...n,state:n.authority==="automatic"&&o?"superseded":m==="trial"&&i?"proven":m,applicationCount:n.applicationCount+ +(e.applicationId===void 0?e.previousOutcome===void 0:a===void 0),successCount:Math.max(0,n.successCount+Number(i)-Number(l)),failureCount:Math.max(0,n.failureCount+Number(o)-Number(d)),lastAppliedAt:e.updatedAt,updatedAt:e.updatedAt});return this.writeRecord(r,g),f&&r.prepare("DELETE FROM pk_feedback_state WHERE record_id = ?").run(n.id),e.idempotencyKey!==void 0&&r.prepare("INSERT OR IGNORE INTO pk_applied_mutations(mutation_key, applied_at) VALUES (?, ?)").run(e.idempotencyKey,e.updatedAt),r.exec("COMMIT;"),{kind:e.kind,changed:!0,record:g,diagnostics:[]}}catch(n){throw r.exec("ROLLBACK;"),n}}writeRecord(e,r){e.prepare("INSERT INTO pk_records(id, project_id, type, state, authority, payload_json, source_versions_json, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET project_id = excluded.project_id, type = excluded.type, state = excluded.state, authority = excluded.authority, payload_json = excluded.payload_json, source_versions_json = excluded.source_versions_json, updated_at = excluded.updated_at").run(r.id,r.projectId,r.type,r.state,r.authority,JSON.stringify(r),JSON.stringify(r.sourceVersions),r.updatedAt)}initializeSchema(){let e=this.requireDatabase();if(e.exec("CREATE TABLE IF NOT EXISTS pk_meta (key TEXT PRIMARY KEY, value TEXT NOT NULL);"),e.prepare("SELECT value FROM pk_meta WHERE key = 'schema_version'").get()?.value===vR){this.createRecordSchema(e);return}e.exec("BEGIN IMMEDIATE;");try{this.createRecordSchema(e),e.prepare("INSERT INTO pk_meta(key, value) VALUES ('schema_version', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value").run(vR),e.exec("COMMIT;")}catch(n){throw e.exec("ROLLBACK;"),this.reportDiagnostic?.({code:"record-migration-failed",message:"项目知识存储升级失败,已回滚并保留原有记录。"}),n}}maintainGeneratedRecords(){let e=this.requireDatabase();e.exec("BEGIN IMMEDIATE;");try{let r=e.prepare("SELECT value FROM pk_meta WHERE key = ?").get(wR)?.value==="complete",i=e.prepare("SELECT payload_json FROM pk_records").all().map(u=>U(JSON.parse(u.payload_json))),o=new Set;for(let u of e.prepare("SELECT record_id FROM pk_application_outcomes UNION SELECT record_id FROM pk_feedback_state").all())o.add(u.record_id);let a=u=>o.has(u.id)||kR(u),s=e.prepare("DELETE FROM pk_records WHERE id = ?"),c=i.filter(u=>(u.id.startsWith("generated-knowledge-corpus")||u.id.startsWith("generated-module-overview")||!r&&_R(u))&&!a(u));for(let u of c)s.run(u.id);let l=i.filter(u=>!c.some(p=>p.id===u.id)&&(u.id.startsWith("generated-project-map")||u.id.startsWith("generated-build-test")||u.id.startsWith("generated-module-")&&!u.id.startsWith("generated-module-overview"))),d=new Map;for(let u of l){let p=kq(u.id),f=d.get(p)??[];f.push(u),d.set(p,f)}for(let[u,p]of d){let f=p.filter(a),m=p.filter(v=>!a(v)),g=new Map;for(let v of m){let b=Xs(v),k=g.get(b)??[];k.push(v),g.set(b,k)}if(f.length>0){for(let v of g.values()){v.sort((b,k)=>k.updatedAt.localeCompare(b.updatedAt));for(let b of v.slice(1))s.run(b.id)}continue}if(m.length===0)continue;let h=m.filter(v=>v.state!=="superseded").sort((v,b)=>b.updatedAt.localeCompare(v.updatedAt))[0],w=[],y=h?Xs(h):void 0;h&&w.push(U({...h,id:u,relations:h.relations.filter(v=>v.type!=="supersedes")}));for(let[v,b]of g)v!==y&&(b.sort((k,S)=>S.updatedAt.localeCompare(k.updatedAt)),w.push(SR(u,b[0])));if(!(w.length===m.length&&w.every(v=>m.some(b=>JSON.stringify(b)===JSON.stringify(v))))){for(let v of m)s.run(v.id);for(let v of w)this.writeRecord(e,v)}}e.prepare("INSERT INTO pk_meta(key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value").run(wR,"complete"),e.exec("COMMIT;")}catch{e.exec("ROLLBACK;"),this.reportDiagnostic?.({code:"record-maintenance-failed",message:"项目知识历史整理失败,已回滚并保留原有记录。"})}}createRecordSchema(e){e.exec(["CREATE TABLE IF NOT EXISTS pk_records (id TEXT PRIMARY KEY, project_id TEXT NOT NULL, type TEXT NOT NULL, state TEXT NOT NULL, authority TEXT NOT NULL, payload_json TEXT NOT NULL, source_versions_json TEXT NOT NULL, updated_at TEXT NOT NULL);","CREATE INDEX IF NOT EXISTS pk_records_project ON pk_records(project_id);","CREATE INDEX IF NOT EXISTS pk_records_state ON pk_records(state, authority);","CREATE TABLE IF NOT EXISTS pk_applied_mutations (mutation_key TEXT PRIMARY KEY, applied_at TEXT NOT NULL);","CREATE TABLE IF NOT EXISTS pk_application_outcomes (record_id TEXT NOT NULL, application_id TEXT NOT NULL, status TEXT NOT NULL, revision INTEGER NOT NULL, PRIMARY KEY(record_id, application_id));","CREATE TABLE IF NOT EXISTS pk_feedback_state (record_id TEXT PRIMARY KEY, base_state TEXT NOT NULL);"].join(`
`))}acquireDatabase(){let e=t.sharedDatabases.get(this.databasePath);if(e){if(e.refs+=1,!e.database)throw new Error("Project knowledge local store database is closed");return e.database}let r=zu(this.databasePath);return r.exec("PRAGMA journal_mode = WAL; PRAGMA busy_timeout = 250;"),t.sharedDatabases.set(this.databasePath,{database:r,refs:1}),r}static releaseDatabase(e){let r=t.sharedDatabases.get(e);if(!r||(r.refs-=1,r.refs>0))return;t.sharedDatabases.delete(e);let n=r.database;r.database=null,n?.close()}requireDatabase(){if(!this.database)throw new Error("Project knowledge local store is closed");return this.database}};var TR=1024*1024,$R=500,OR=256*1024;function $q(){try{let e=Tq(import.meta.url)("@vscode/ripgrep");return typeof e.rgPath=="string"&&e.rgPath.length>0?e.rgPath:null}catch{return null}}function Oq(t,e){let r=t.replaceAll(`\r
`,`
`).split(`
`),n=Math.max(0,Math.min(r.length-1,e-1)),i=n;for(;i>=0&&!/^\s{0,3}#{1,6}\s+\S/u.test(r[i]);)i-=1;let o=i>=0?r[i].replace(/^\s{0,3}#{1,6}\s+/u,"").trim():"Project knowledge",a=i>=0?i:n;for(;a>0&&r[a-1].trim()!=="";)a-=1;let s=Math.max(n,i>=0?i:n);if(i>=0&&n===i)for(;s+1<r.length&&r[s+1].trim()==="";)s+=1;for(;s+1<r.length&&r[s+1].trim()!==""&&!/^\s{0,3}#{1,6}\s+/u.test(r[s+1]);)s+=1;let c=r.slice(a,s+1).join(`
`).trim().slice(0,1600);return{title:o.slice(0,200),snippet:c}}function Mq(t){if(!t||typeof t!="object")return null;let e=t.data;if(!e||typeof e!="object")return null;let r=e.path?.text;return typeof r=="string"?r:null}function MR(t){if(!t||typeof t!="object")return 1;let e=t.data?.line_number;return typeof e=="number"&&Number.isSafeInteger(e)?e:1}function Lq(t){if(!t||typeof t!="object")return"";let e=t.data?.lines?.text;return typeof e=="string"?e:""}function Dq(t,e,r){let n=Ii.resolve(t,e);return r.get(n)??r.get(Ii.resolve(e))??null}function Bq(t,e,r){let n=t.matchedTerms.size/Math.max(1,r.terms.length),i=e.matchedTerms.size/Math.max(1,r.terms.length);if(t.strong!==e.strong)return t.strong?-1:1;if(n!==i)return i-n;if(t.pathAssociation!==e.pathAssociation)return t.pathAssociation?-1:1;let o=Us(t.document.kind)-Us(e.document.kind);if(o!==0)return o;if(t.matchCount!==e.matchCount)return e.matchCount-t.matchCount;let a=(e.document.archivedAt??"").localeCompare(t.document.archivedAt??"");return a!==0?a:t.document.source.localeCompare(e.document.source)}var St=class{options;reportDiagnostic;localStore;recordStoreError=null;constructor(e){this.options=e,this.reportDiagnostic=e.reportDiagnostic,this.localStore=e.localStore??null}recordStore(){if(this.localStore)return this.localStore;if(this.recordStoreError)return null;try{return this.localStore??=new Yu({projectRoot:this.options.projectRoot,...this.options.cacheRoot?{cacheRoot:this.options.cacheRoot}:{},...this.options.reportDiagnostic?{reportDiagnostic:this.options.reportDiagnostic}:{}})}catch{return this.recordStoreError={code:"records-unavailable",message:"Local project knowledge records are unavailable; using document search only."},this.reportDiagnostic?.(this.recordStoreError),null}}async status(){let e=this.recordStore();return e?e.status():{provider:"local",healthy:!1,writable:!1,diagnostics:[this.recordStoreError]}}async indexStatus(){let e=this.recordStore();if(!e)return null;try{return await e.indexStatus()}catch{return this.reportDiagnostic?.({code:"index-unavailable",message:"Local project knowledge section index is unavailable."}),null}}async refreshIndex(){let e=this.recordStore();if(!e)return null;try{return await e.syncCorpus(this.options.corpus,{complete:this.options.corpusComplete!==!1}),await e.indexStatus()}catch{return this.reportDiagnostic?.({code:"index-unavailable",message:"Local project knowledge section index is unavailable."}),null}}async query(e){let r=this.recordStore();if(e.kind==="manifest"){let y=r?.list({...e.projectId?{projectId:e.projectId}:{},...e.state&&e.state!=="all"?{state:e.state}:{},limit:e.limit??100})??[];return{kind:"manifest",items:(e.state==="all"?y:y.filter(b=>b.state!=="superseded")).map(b=>({id:b.id,memoryType:vP(b.type),type:b.type,state:b.state,authority:b.authority,title:b.title,summary:b.summary,applicablePaths:[...b.applicablePaths],operations:[...b.operations],phases:[...b.phases??[]],sourceTypes:[...new Set(b.conclusions.flatMap(k=>k.sources.map(S=>S.source)))],verification:b.verification.map(k=>({...k}))})),truncated:e.limit!==void 0&&y.length>=e.limit,diagnostics:r?[]:[this.recordStoreError]}}if(e.kind==="expand"){r&&await r.apply({kind:"refresh",id:e.id,...e.projectId===void 0?{}:{projectId:e.projectId}});let y=r?.read(e.id)??null;return{kind:"expand",record:y&&y.state!=="superseded"&&(!e.projectId||y.projectId===e.projectId)?y:null,diagnostics:r?[]:[this.recordStoreError]}}if(e.kind==="list"){let y=r?.list({...e.projectId?{projectId:e.projectId}:{},...e.type?{type:e.type}:{},...e.state&&e.state!=="all"?{state:e.state}:{},...e.authority?{authority:e.authority}:{},...e.limit?{limit:e.limit}:{}})??[],v=r&&e.projectId&&(e.state===void 0||e.state==="all")&&e.type===void 0&&e.authority===void 0?r.projectCounts(e.projectId):void 0;return{kind:"list",records:y,...v===void 0?{}:{counts:v},truncated:e.limit!==void 0&&(v===void 0?y.length>=e.limit:v.total>y.length),diagnostics:r?[]:[this.recordStoreError]}}if(e.kind==="get"){let y=r?.read(e.id)??null;return{kind:"get",record:y&&(!e.projectId||y.projectId===e.projectId)?y:null,diagnostics:r?[]:[this.recordStoreError]}}let n=[];if(r)await r.apply({kind:"refresh"});else{n.push(this.recordStoreError);let y={code:"index-unavailable",message:"Local project knowledge section index is unavailable."};n.push(y),this.reportDiagnostic?.(y)}let i=[],o=[],a=!1;if(this.options.indexEnabled!==!1&&r)try{let y=await r.syncCorpus(this.options.corpus,{complete:this.options.corpusComplete!==!1});o=[...y.refreshedSources,...y.changedSources],i=await this.readCurrentSections(r.searchSections(e.query),n),a=!0}catch{o=[...this.options.corpus],n.push({code:"index-unavailable",message:"Local project knowledge section index is unavailable."})}let s=a&&o.length===0&&this.options.runRipgrep===void 0?[]:await this.searchWithRipgrep(e.query,[...o]);i=await this.readCurrentSections(i,n);let l=[r?.searchRecords(e.query)??[],i,s],d=[...new Set(e.query.terms.map(y=>y.toLocaleLowerCase()).filter(Boolean))],u=new Map;for(let[y,v]of l.entries())v.forEach((b,k)=>{let S=b.record?`record:${b.record.id}`:`${b.source}\0${b.title??""}`,E=u.get(S),N=(E?.score??0)+1/(60+k+1)+(y===0?(b.score??0)>=100?.08:.01+.08*Math.min(1,(b.score??0)/Math.max(1,d.length)):y===1?.025:.03);u.set(S,{result:E?.result??b,score:N})});let p=new Map,f=0,m=!1;for(let{result:y}of[...u.values()].sort((v,b)=>b.score-v.score||(v.result.record?.id??v.result.source).localeCompare(b.result.record?.id??b.result.source)).map(({result:v,score:b})=>({result:{...v,score:b},score:b}))){let v=y.record?`record:${y.record.id}`:`${y.source}\0${y.title??""}`;if(!p.has(v)){if(y.record){if(f>=2){m=!0;continue}f+=1}p.set(v,y)}}let g=Math.max(1,Math.min(40,e.limit??8)),h=[...p.values()].slice(0,g),w=h.flatMap(y=>y.record?[y.record]:[]);return{kind:"search",hits:w.map(y=>({record:y})),results:h,records:w,truncated:m||p.size>h.length,diagnostics:n}}async apply(e){let r=this.recordStore();if(!r)return{kind:e.kind,changed:!1,diagnostics:[this.recordStoreError]};if(e.kind==="experience-delta"&&await r.mutationApplied(e.idempotencyKey))return{kind:e.kind,changed:!1,...e.delta.targetId===void 0?{}:{record:r.read(e.delta.targetId)},diagnostics:[]};let n=e.kind==="experience-delta"?Fq(e,r.read(e.delta.targetId??""),oe(this.options.projectRoot)):e;if(n===null)return{kind:e.kind,changed:!1,diagnostics:[]};let i=await r.apply(e.kind==="experience-delta"&&n.kind==="feedback"?{...n,idempotencyKey:e.idempotencyKey}:n);if(e.kind==="experience-delta"&&await r.markMutationApplied(e.idempotencyKey,e.updatedAt),e.kind==="refresh"&&!e.id)try{e.projectId===void 0&&this.options.corpusComplete!==!1?await r.rebuildWorkspace(this.options.corpus):await r.syncCorpus(this.options.corpus,{complete:this.options.corpusComplete!==!1})}catch{this.reportDiagnostic?.({code:"index-rebuild",message:"Local project knowledge workspace index could not be rebuilt."})}return e.kind==="experience-delta"?{...i,kind:e.kind}:i}close(){this.localStore?.close(),this.localStore=null}async readCurrentSections(e,r){return(await Promise.all(e.map(async i=>{let o=i.document?.source;if(!o)return i;try{return await O(this.options.projectRoot,o,OR,{label:o}),i}catch{return r.push({code:"local-document",message:"未进入检索:索引来源当前不可读取,不会参与本次召回。"}),null}}))).filter(i=>i!==null)}async searchWithRipgrep(e,r=[]){if(e.terms.length===0||this.options.corpus.length===0)return[];let n=new Map(this.options.corpus.map(p=>[Ii.resolve(p.absolutePath),p])),i=r.length>0?r.map(p=>p.absolutePath):this.searchTargets(),o=[...e.strongTerms,...e.phraseTerms].slice(0,16);o.length===0&&o.push(...e.weakTerms.slice(0,4));let a=["--json","--fixed-strings","--ignore-case","--no-messages","--iglob","*.md",...o.flatMap(p=>["-e",p]),"--",...i],s=this.options.rgCommand??$q(),c=this.options.runRipgrep?await this.options.runRipgrep(a):await Ay({cwd:this.options.projectRoot,args:a,command:s??"rg",timeoutMs:2e3,maxOutputBytes:TR,maxMatches:$R});if(!this.options.runRipgrep&&c.error&&s&&s!=="rg"&&(c=await Ay({cwd:this.options.projectRoot,args:a,command:"rg",timeoutMs:2e3,maxOutputBytes:TR,maxMatches:$R})),c.error&&!c.stdout&&!c.timedOut&&!c.truncated)return this.reportDiagnostic?.({code:"local-tool-missing",message:"Local project knowledge search is unavailable; install ripgrep or keep the bundled binary available."}),[];if(c.exitCode!==null&&c.exitCode>1)return this.reportDiagnostic?.({code:"local-tool",message:`Project knowledge local search failed with exit code ${c.exitCode}.`}),[];(c.error||c.timedOut||c.truncated)&&this.reportDiagnostic?.({code:c.timedOut?"local-timeout":c.truncated?"local-output-limit":"local-tool",message:c.timedOut?"Project knowledge local search timed out.":"Project knowledge local search was bounded before completion."});let l=new Map,d=!1,u=c.stdout.split(/\r?\n/u);for(let[p,f]of u.entries()){if(!f.trim())continue;let m;try{m=JSON.parse(f)}catch{if(p===u.length-1&&!/\r?\n$/u.test(c.stdout)&&(c.truncated||c.timedOut||c.matchLimitReached))continue;d||this.reportDiagnostic?.({code:"local-invalid-json",message:"Local project knowledge search returned invalid JSON."}),d=!0;continue}if(!m||typeof m!="object"||m.type!=="match")continue;let g=Mq(m);if(!g)continue;let h=Dq(this.options.projectRoot,g,n);if(!h)continue;let w;try{w=(await O(this.options.projectRoot,h.source,OR,{label:h.source})).bytes.toString("utf8")}catch{this.reportDiagnostic?.({code:"local-document",message:`未进入检索:无法读取 ${h.source},该文件当前不会参与召回。`});continue}let y=Lq(m),{title:v,snippet:b}=Oq(w,MR(m)),k=new Set(e.terms.filter(j=>$o(y,j)||$o(v,j)||$o(h.source,j))),S=`${h.source}\0${v}`,E=l.get(S),N=new Set(E?.matchedTerms??[]);for(let j of k)N.add(j);let P=`${v}
${h.source}
${b}`,_=Ox(e,P);l.set(S,{content:E?.content??b,source:h.source,title:v,document:h,matchedTerms:N,matchCount:(E?.matchCount??0)+1,strong:_,pathAssociation:!!(e.path&&(h.source.toLowerCase().includes(e.path.toLowerCase())||v.toLowerCase().includes(e.path.toLowerCase()))),line:E?.line??MR(m)})}return d?[]:[...l.values()].filter(p=>p.strong||p.matchedTerms.size>=2).sort((p,f)=>Bq(p,f,e)).slice(0,8)}searchTargets(){let e=new Set,r=[];for(let n of this.options.corpus)n.kind==="superpowers"?r.push(Ii.relative(this.options.projectRoot,n.absolutePath)):e.add(Ii.dirname(Ii.relative(this.options.projectRoot,n.absolutePath)));return[...e,...r].map(n=>n.replaceAll(Ii.sep,"/")).sort()}};function Fq(t,e,r){let{delta:n,updatedAt:i}=t;if(n.owner!=="project-knowledge"&&n.owner!=="comet.project-knowledge")throw new Error("Learning Delta owner does not match Project Knowledge");if(n.feedback!==void 0){if(!n.targetId)throw new Error("Learning Delta feedback target is required");return{kind:"feedback",id:n.targetId,projectId:n.applicability.projectId??e?.projectId??r,outcome:n.feedback.status,...n.feedback.previousStatus===void 0?{}:{previousOutcome:n.feedback.previousStatus},applicationId:n.feedback.applicationId,revision:n.feedback.revision,updatedAt:i}}if(n.payload?.kind==="record")return{kind:"upsert",record:U(n.payload.record)};if(n.payload?.kind==="verify"){let p=n.payload;if(typeof p.projectId!="string"||!Array.isArray(p.commands)||!p.commands.every(f=>typeof f=="string"))throw new Error("Learning Delta verification payload is invalid");return{kind:"verify",projectId:p.projectId,commands:p.commands,updatedAt:typeof p.updatedAt=="string"?p.updatedAt:i}}if(n.action==="noop")return null;let o=n.applicability.projectId??e?.projectId??r;if(n.action==="supersede"||n.action==="forget"){if(!n.targetId)throw new Error("Learning Delta target is required");return{kind:"supersede",id:n.targetId,projectId:o,updatedAt:i,reason:n.statement}}let a=Kq(n.kind,n.memoryType,e?.type),s=n.authority==="user"||n.authority==="explicit"?"user":n.authority==="repository"?"repository":"automatic",c=n.recommendedState==="enforced"&&(n.verification?.length??0)===0?"proven":n.recommendedState,l=n.targetId??`learned-${Iq("sha256").update(`${o}\0${a}\0${n.statement}`).digest("hex").slice(0,24)}`,d=n.evidence.flatMap(p=>p.source?[{source:p.source,...p.anchor===void 0?{}:{anchor:p.anchor},evidence:p.summary}]:[]);return{kind:"upsert",record:U({id:l,projectId:o,type:a,state:c,authority:s,title:n.title??n.statement.slice(0,200),summary:n.statement,applicablePaths:n.applicability.paths??e?.applicablePaths??[],operations:n.applicability.operations??e?.operations??[],phases:n.applicability.phases??e?.phases??[],conclusions:d.length>0?[{text:n.statement,sources:d}]:[],relations:e?.relations??[],verification:n.verification??e?.verification??[],sourceVersions:e?.sourceVersions??[],applicationCount:e?.applicationCount??0,successCount:e?.successCount??0,failureCount:e?.failureCount??0,...e?.lastAppliedAt===void 0?{}:{lastAppliedAt:e.lastAppliedAt},updatedAt:i})}}function Kq(t,e,r){return new Set(["topology","fact","dependency","decision","pattern","procedure","constraint","failure-resolution"]).has(t)?t:r!==void 0?r:e==="project-model"?"fact":"pattern"}var Hq=1024*1024,Wq=512,FR=200,KR=1600,Vq=5e3,qq=8,zq=512*1024,Gq=32;function W(t,e,r=!1){if(typeof t!="string")return null;let n=[...t].map(i=>{let o=i.codePointAt(0)??0;return o<32||o===127?" ":i}).join("").trim().slice(0,e);return r&&!n?null:n}function My(t){return Array.isArray(t)?t.map(e=>{if(!e||typeof e!="object"||Array.isArray(e))return null;let r=W(e.code,64,!0),n=W(e.message,240,!0);return r&&n?{code:r,message:n}:null}).filter(e=>e!==null).slice(0,qq):[]}function Zs(){return[]}function LR(t){let e={...t};return delete e.evidence,e}function DR(t){return{...t,conclusions:t.conclusions.map(e=>({...e,sources:e.sources.map(LR)})),relations:t.relations.map(e=>({...e,sources:e.sources.map(LR)}))}}function Uq(t){if(t.kind==="upsert")return{kind:"upsert",record:DR(t.record)};if(t.kind!=="experience-delta")return t;let e=t.delta,r=e.payload;r?.kind==="record"?r={kind:"record",record:DR(U(r.record))}:r?.kind==="verify"?r={kind:"verify",projectId:W(r.projectId,128)??"",commands:ec(r.commands,16,2e3),...typeof r.updatedAt=="string"?{updatedAt:r.updatedAt.slice(0,64)}:{}}:r!==void 0&&(r=void 0);let{payload:n,...i}=e,o={...i,statement:W(e.statement,4e3)??"",...e.title===void 0?{}:{title:W(e.title,512)??""},applicability:{...e.applicability.projectId===void 0?{}:{projectId:W(e.applicability.projectId,128)??""},...e.applicability.paths===void 0?{}:{paths:ec(e.applicability.paths,32,512)},...e.applicability.operations===void 0?{}:{operations:ec(e.applicability.operations,16,128)},...e.applicability.phases===void 0?{}:{phases:ec(e.applicability.phases,16,128)},...e.applicability.tasks===void 0?{}:{tasks:ec(e.applicability.tasks,16,512)}},evidence:e.evidence.slice(0,Gq).map(a=>({...a,summary:W(a.summary,1e3)??"",...a.source===void 0?{}:{source:W(a.source,512)??""},...a.anchor===void 0?{}:{anchor:W(a.anchor,256)??""},...a.command===void 0?{}:{command:W(a.command,2e3)??""}})),...r===void 0?{}:{payload:r}};return{...t,idempotencyKey:W(t.idempotencyKey,256,!0)??"invalid",delta:o}}function ec(t,e,r){return Array.isArray(t)?t.map(n=>W(n,r)).filter(n=>!!n).slice(0,e):[]}function Jq(t){if(t.kind==="search"){let e=t.query;return{kind:"search",task:W(e.task,2e3)??"",...e.path?{path:W(e.path,512)}:{},...e.phase?{phase:W(e.phase,128)}:{},...e.operation?{operation:W(e.operation,128)}:{},terms:e.terms.slice(0,28).map(r=>W(r,128)).filter(Boolean),limit:Math.max(1,Math.min(8,t.limit??8))}}return t.kind==="list"?{kind:"list",...t.projectId?{projectId:W(t.projectId,128)}:{},...t.type?{type:t.type}:{},...t.state?{state:t.state}:{},...t.authority?{authority:t.authority}:{},limit:Math.max(1,Math.min(500,t.limit??100))}:t.kind==="manifest"?{kind:"manifest",...t.projectId?{projectId:W(t.projectId,128)}:{},...t.state?{state:t.state}:{},limit:Math.max(1,Math.min(500,t.limit??100))}:t.kind==="expand"?{kind:"expand",id:W(t.id,128)??"",...t.projectId?{projectId:W(t.projectId,128)}:{}}:{kind:"get",id:W(t.id,128)??"",...t.projectId?{projectId:W(t.projectId,128)}:{}}}function Oy(t,e,r){if(!Array.isArray(t))return[];let n=[];for(let i of t.slice(0,500))try{let o=U(i);if(o.projectId!==r)throw new Error("Project mismatch");n.push(o)}catch{e()}return n}function Yq(t,e,r){if(!t||typeof t!="object"||Array.isArray(t))return e(),null;let n=W(t.content,KR,!0),i=W(t.source,Wq,!0);if(!n||!i)return e(),null;let o=t.title,a=o===void 0?void 0:W(o,FR);if(o!==void 0&&a===null)return e(),null;let s=t.score;if(s!==void 0&&(typeof s!="number"||!Number.isFinite(s)))return e(),null;let c,l=t.record;if(l!==void 0)try{if(c=U(l),c.projectId!==r)throw new Error("Project mismatch")}catch{return e(),null}return{content:n,source:i,...a?{title:a}:{},...s===void 0?{}:{score:s},...c?{record:c}:{}}}function Xq(t,e){let r=t&&typeof t=="object"&&!Array.isArray(t)&&"status"in t?t.status:t;if(!r||typeof r!="object"||Array.isArray(r))return e(),null;let n=r.provider,i=r.healthy,o=r.writable;if(n!=="remote"||typeof i!="boolean"||typeof o!="boolean")return e(),null;let a=r.recordCount,s=r.updatedAt;return{provider:"remote",healthy:i,writable:o,...Number.isSafeInteger(a)&&Number(a)>=0?{recordCount:Number(a)}:{},...typeof s=="string"?{updatedAt:s.slice(0,64)}:{},diagnostics:My(r.diagnostics)}}function Qq(t,e,r,n){let i=t&&typeof t=="object"&&!Array.isArray(t)&&"result"in t?t.result:t;if(!i||typeof i!="object"||Array.isArray(i))return r(),null;let o=i.kind??e.kind,a=My(i.diagnostics);if(o==="list")return{kind:"list",records:Oy(i.records,r,n),truncated:i.truncated===!0,diagnostics:a};if(o==="get"){let p=i.record,f=null;if(p!=null)try{if(f=U(p),f.projectId!==n)throw new Error("Project mismatch")}catch{r()}return{kind:"get",record:f,diagnostics:a}}if(o==="expand"){let p=i.record,f=null;if(p!=null)try{if(f=U(p),f.projectId!==n)throw new Error("Project mismatch")}catch{r()}return{kind:"expand",record:f,diagnostics:a}}if(o==="manifest")return{kind:"manifest",items:Array.isArray(i.items)?i.items.slice(0,500).flatMap(f=>{if(!f||typeof f!="object"||Array.isArray(f))return r(),[];let m=f,g=W(m.id,128,!0),h=W(m.title,FR,!0),w=W(m.summary,KR,!0),y=m.type,v=m.memoryType,b=m.state,k=m.authority;if(!g||!h||!w||!["topology","fact","dependency","decision","pattern","procedure","constraint","failure-resolution"].includes(String(y))||v!=="project-model"&&v!=="project-policy"||!["trial","proven","enforced","superseded"].includes(String(b))||!["automatic","user","repository"].includes(String(k)))return r(),[];let S=N=>Array.isArray(N)?N.map(P=>W(P,1024)).filter(P=>P!==null):[],E=Array.isArray(m.verification)?m.verification.slice(0,16).flatMap(N=>{if(!N||typeof N!="object"||Array.isArray(N))return r(),[];let P=W(N.command,4e3,!0),_=W(N.expected,2e3);return P?[{command:P,..._===null?{}:{expected:_}}]:[]}):[];return[{id:g,memoryType:v,type:y,state:b,authority:k,title:h,summary:w,applicablePaths:S(m.applicablePaths),operations:S(m.operations),phases:S(m.phases),sourceTypes:S(m.sourceTypes),verification:E}]}):[],truncated:i.truncated===!0,diagnostics:a};let s=[],c=0,l=new Set;for(let p of Array.isArray(i.results)?(i.results??[]).slice(0,16):[]){let f=Yq(p,r,n);if(!(!f||l.has(`${f.source}\0${f.title??""}`))){if(c+f.content.length>Vq)break;l.add(`${f.source}\0${f.title??""}`),c+=f.content.length,s.push(f)}}let d=Oy(i.records,r,n);return{kind:"search",hits:Array.isArray(i.hits)?(i.hits??[]).slice(0,40).flatMap(p=>{if(!p||typeof p!="object"||Array.isArray(p))return r(),[];try{let f=U(p.record);if(f.projectId!==n)throw new Error("Project mismatch");let m=p.score;return m!==void 0&&(typeof m!="number"||!Number.isFinite(m))?(r(),[]):[{record:f,...m===void 0?{}:{score:m}}]}catch{return r(),[]}}):d.map(p=>({record:p})),results:s,records:d,truncated:i.truncated===!0,diagnostics:a}}function Zq(t,e,r,n){let i=t&&typeof t=="object"&&!Array.isArray(t)&&"result"in t?t.result:t;if(!i||typeof i!="object"||Array.isArray(i))return r(),null;let o=i.record,a;if(o===null)a=null;else if(o!==void 0)try{if(a=U(o),a.projectId!==n)throw new Error("Project mismatch")}catch{r()}return{kind:e.kind,changed:i.changed===!0,...a===void 0?{}:{record:a},...Array.isArray(i.records)?{records:Oy(i.records,r,n)}:{},diagnostics:My(i.diagnostics)}}var Ti=class{options;projectId;constructor(e){this.options=e,this.projectId=e.projectId??(e.projectRoot?oe(e.projectRoot):"project")}async status(){let e=this.options.config.token_env;if(e&&!this.token()){let o={code:"remote-token",message:`Remote Project Knowledge 未配置环境变量 ${e}。`};return this.report(o.code,o.message),{provider:"remote",healthy:!1,writable:!1,diagnostics:[o]}}let r=await this.request("status",{});if(r===null)return{provider:"remote",healthy:!1,writable:!1,diagnostics:[{code:"remote-unavailable",message:"Remote Project Knowledge 不可用。"}]};let n={value:!1},i=Xq(r,()=>{n.value=!0});return!i||n.value?(this.report("remote-schema","Remote Project Knowledge status 响应格式无效。"),{provider:"remote",healthy:!1,writable:!1,diagnostics:[{code:"remote-schema",message:"Remote Project Knowledge status 响应格式无效。"}]}):i}async query(e){let r=e.kind==="search"?this.projectId:e.projectId??this.projectId,n=await this.request("query",Jq(e),e.kind==="search"?void 0:e.projectId);if(n===null)return BR(e);let i={value:!1},o=Qq(n,e,()=>{i.value=!0},r);return!o||i.value?(this.report("remote-schema","Remote Project Knowledge query 响应包含无效数据。"),BR(e)):o}async apply(e){let r=(e.kind==="upsert"?e.record.projectId:e.kind==="experience-delta"?e.delta.applicability.projectId:e.projectId)??this.projectId,n=await this.request("apply",Uq(e),e.kind==="upsert"?e.record.projectId:e.kind==="experience-delta"?e.delta.applicability.projectId:e.projectId);if(n===null)return{kind:e.kind,changed:!1,diagnostics:[{code:"remote-unavailable",message:"Remote Project Knowledge 不可用。"}]};let i={value:!1},o=Zq(n,e,()=>{i.value=!0},r);return!o||i.value?(this.report("remote-schema","Remote Project Knowledge apply 响应格式无效。"),{kind:e.kind,changed:!1,diagnostics:[{code:"remote-schema",message:"Remote Project Knowledge apply 响应格式无效。"}]}):o}async request(e,r,n=this.projectId){let i=this.options.config.token_env,o=this.token();if(i&&!o)return this.report("remote-token",`Remote Project Knowledge 未配置环境变量 ${i}。`),null;let a={schema:"comet.project-knowledge.provider.v1",operation:e,...this.options.config.scope?{scope:this.options.config.scope}:{},projectId:W(n,128,!0)??this.projectId,input:r},s=JSON.stringify(a);if(new TextEncoder().encode(s).byteLength>zq)return this.report("remote-request-size","Remote Project Knowledge 请求超过大小限制。"),null;try{let{response:c,bytes:l}=await Bu({url:this.options.config.endpoint,timeoutMs:this.options.config.timeout_ms,maxResponseBytes:Hq,fetch:this.options.fetch,init:{method:"POST",redirect:"error",headers:{"content-type":"application/json",...o?{authorization:`Bearer ${o}`}:{}},body:s}});if(!c.ok)return this.report("remote-status",`Remote Project Knowledge 返回 HTTP ${c.status}。`),null;try{let d=JSON.parse(new TextDecoder().decode(l));return ez(d,e,a.projectId)?d.result:(this.report("remote-schema","Remote Project Knowledge 响应 envelope 无效。"),null)}catch{return this.report("remote-json","Remote Project Knowledge 返回了无效 JSON。"),null}}catch(c){return this.report("remote-failed",c instanceof Kr&&c.code==="timeout"?"Remote Project Knowledge 请求超时。":"Remote Project Knowledge 请求失败。"),null}}report(e,r){this.options.reportDiagnostic?.({code:e,message:r})}token(){let e=this.options.config.token_env;return e?this.options.env?.[e]??process.env[e]:void 0}};function ez(t,e,r){if(!t||typeof t!="object"||Array.isArray(t))return!1;let n=t;return n.schema==="comet.project-knowledge.provider.v1"&&n.operation===e&&n.projectId===r&&Object.prototype.hasOwnProperty.call(n,"result")}function BR(t){return t.kind==="list"?{kind:"list",records:[],truncated:!1,diagnostics:Zs()}:t.kind==="get"?{kind:"get",record:null,diagnostics:Zs()}:t.kind==="expand"?{kind:"expand",record:null,diagnostics:Zs()}:t.kind==="manifest"?{kind:"manifest",items:[],truncated:!1,diagnostics:Zs()}:{kind:"search",hits:[],results:[],records:[],truncated:!1,diagnostics:Zs()}}ge();var tz=512,rz=/^[A-Za-z_][A-Za-z0-9_]*$/u;function HR(t){let{config:e}=t,r={maxFileMb:e.local?.max_file_mb??Qe.max_file_mb,maxTotalMb:e.local?.max_total_mb??Qe.max_total_mb};if(e.provider!=="remote")return{provider:"local",configured:!0,localLimits:r,retrieval:t.language==="en"?"Local uses a workspace-isolated section index with bounded ripgrep fallback.":"Local 使用按工作区隔离的 section 索引与项目外 Record 存储;不会在项目中生成知识文件。",diagnostics:[]};let n=e.remote,i=nz(n?.endpoint),o=n?.timeout_ms??0,a=iz(n?.token_env),s=oz(n?.scope),c=i!==null&&Number.isSafeInteger(o)&&o>=100&&o<=3e4,l=n?{endpoint:i??"",...a===void 0?{}:{tokenEnv:a},tokenConfigured:a===void 0?!0:!!(t.env?.[a]??process.env[a]),...s===void 0?{}:{scope:s},timeoutMs:o}:void 0;return{provider:"remote",configured:c,localLimits:r,...l===void 0?{}:{remote:l},retrieval:t.language==="en"?"Remote uses the configured Project Knowledge Provider v1 settings; status reports the latest provider health.":"Remote 使用已配置的 Project Knowledge Provider v1;状态会显示最近一次 Provider 健康情况。",diagnostics:[]}}function nz(t){if(typeof t!="string"||t.trim().length===0)return null;try{let e=new URL(t.trim());return e.username="",e.password="",e.search="",e.hash="",e.toString()}catch{return null}}function iz(t){if(!(typeof t!="string"||!rz.test(t)))return t}function oz(t){if(typeof t!="string")return;let e=[...t].map(r=>{let n=r.codePointAt(0)??0;return n<32||n===127?" ":r}).join("").trim().slice(0,tz);return e.length===0?void 0:e}import{createHash as iA}from"node:crypto";import{readFile as Dz}from"node:fs/promises";import{promises as Sz}from"node:fs";Q();import{createHash as az}from"node:crypto";import{promises as zo}from"node:fs";import X from"node:path";var sz=64*1024,WR=1500,Ly=64,tc=512,cz=["app","domains","platform","src","packages"],VR=new Set([".ts",".tsx",".js",".jsx",".mjs",".cjs",".py",".go",".java",".rs"]),lz=new Set([".ts",".tsx",".js",".jsx",".mjs",".cjs"]),Fy=new Set([".git",".comet","node_modules","plugin-state","dist","build","out","coverage","target",".cache","cache","tmp","temp"]),dz=new Set([".db",".sqlite",".sqlite3",".png",".jpg",".jpeg",".gif",".webp",".zip",".tar",".gz"]),qo=class extends Error{};function Qu(t){if(Date.now()>t)throw new qo}function In(t,e){return{source:t,...e===void 0?{}:{anchor:e}}}function Ky(t,e,r,n,i,o={}){return{id:t,type:e,title:r,summary:n,applicablePaths:o.applicablePaths??[],operations:o.operations??[],phases:o.phases??[],conclusions:i,relations:o.relations??[],verification:o.verification??[]}}async function Dy(t,e=200,r=Number.POSITIVE_INFINITY,n=()=>!0,i=!1){let o=[],a=()=>{if(Date.now()<=r)return!1;if(i)return!0;throw new qo},s=async c=>{if(a()||o.length>=e)return;let l;try{l=await zo.readdir(c,{withFileTypes:!0})}catch{return}for(let d of l.sort((u,p)=>u.name.localeCompare(p.name))){if(a())return;if(o.length>=e||d.name.startsWith(".")||Fy.has(d.name))continue;let u=X.join(c,d.name);d.isSymbolicLink()||(d.isDirectory()?await s(u):d.isFile()&&n(u)&&!dz.has(X.extname(d.name).toLocaleLowerCase())&&o.push(u))}};return await s(t),o}function $i(t,e){return X.relative(t,e).replaceAll(X.sep,"/")}async function qR(t){try{let e=await zo.lstat(t);return e.isDirectory()&&!e.isSymbolicLink()}catch{return!1}}async function By(t,e,r=Number.POSITIVE_INFINITY){for(let n of e){Qu(r);try{let i=await zo.lstat(X.join(t,...n.split("/")));if(i.isFile()&&!i.isSymbolicLink())return n}catch{}}return null}async function zR(t,e,r=Number.POSITIVE_INFINITY){try{return Qu(r),(await O(t,e,sz,{label:e})).bytes.toString("utf8")}catch{return null}}async function uz(t,e){Qu(e);let r;try{r=await zo.readdir(t,{withFileTypes:!0})}catch{return[]}return r.filter(n=>n.isDirectory()&&!n.isSymbolicLink()&&!n.name.startsWith(".")&&!Fy.has(n.name)).map(n=>n.name).sort((n,i)=>n.localeCompare(i)).slice(0,30)}async function pz(t,e,r){let n=await By(t,["package.json","pnpm-workspace.yaml","README.md"],e),i=await By(t,[".comet/config.yaml","tsconfig.json","vite.config.ts"],e),o=await uz(t,e),a=await Promise.all(o.map(async c=>{let l=await Dy(X.join(t,c),1,e);return l[0]?$i(t,l[0]):null})),s=[n,i,...a].filter(c=>c!==null).filter((c,l,d)=>d.indexOf(c)===l).slice(0,32).map(c=>In(c));return s.length===0?null:Ky("generated-project-map","topology",r==="en"?"Project structure overview":"项目结构概览",r==="en"?"Project layers derived from real repository directories, configuration, and manifests.":"从仓库中的真实目录、项目配置和 manifest 生成项目分层概览。",[{text:r==="en"?`Primary project directories: ${o.join(", ")||"none discovered"}.`:`项目主要目录:${o.join("、")||"未发现"}。`,sources:s}],{applicablePaths:o.map(c=>`${c}/`)})}function GR(t){return t.toLocaleLowerCase().replaceAll("/","-").replace(/[^a-z0-9._-]+/gu,"-").replace(/^-+|-+$/gu,"")}function fz(t,e){let r=GR(t),n=`generated-module-${r||"root"}`;if(n.length<=128&&!e.has(r))return n;let i=az("sha256").update(t).digest("hex").slice(0,10);return`${n.slice(0,114).replace(/[-._]+$/u,"")}-${i}`}async function UR(t,e,r){let n=[];for(let c of cz){Qu(e);let l=X.join(t,c);if(!await qR(l))continue;let d;try{d=await zo.readdir(l,{withFileTypes:!0})}catch{continue}let u=d.filter(p=>p.isDirectory()&&!p.isSymbolicLink()&&!p.name.startsWith(".")&&!Fy.has(p.name)).map(p=>`${c}/${p.name}`);u.length>0?n.push(...u):d.some(p=>p.isFile()&&VR.has(X.extname(p.name).toLowerCase()))&&n.push(c)}let i=[...new Set(n)].sort((c,l)=>c.localeCompare(l));i.length>Ly&&r?.({code:"project-model-module-limit",message:`项目模型只分析前 ${Ly} 个模块;其余模块当前未生成知识记录。`});let o=i.slice(0,Ly),a=o.map(GR),s=new Set(a.filter((c,l,d)=>d.indexOf(c)!==d.lastIndexOf(c)));return o.map(c=>({modulePath:c,absolutePath:X.join(t,...c.split("/")),id:fz(c,s)}))}async function JR(t){let e=Date.now()+WR;try{return["generated-project-map","generated-build-test",...(await UR(X.resolve(t.projectRoot),e,t.reportDiagnostic)).map(n=>n.id)]}catch(r){if(!(r instanceof qo))throw r;return t.reportDiagnostic?.({code:"project-model-timeout",message:"项目模型发现超过 1.5 秒预算,当前仅补齐已确认的记录。"}),["generated-project-map","generated-build-test"]}}function mz(t){let e=X.posix.basename(t,X.posix.extname(t)).toLocaleLowerCase();return/^(?:index|main|cli)$/u.test(e)||/-entry$/u.test(e)}function hz(t){let e=[...t.matchAll(/\b(?:import|export)\s+(?:[^;]*?\s+from\s+)?['"]([^'"]+)['"]/gu),...t.matchAll(/\b(?:require|import)\s*\(\s*['"]([^'"]+)['"]\s*\)/gu)].flatMap(r=>r[1]?[r[1]]:[]);return[...new Set(e)].slice(0,32)}function gz(t,e,r,n){if(!r.startsWith("."))return;let i=X.resolve(X.dirname(X.join(t,...e.split("/"))),r);return n.find(o=>i===o.absolutePath||i.startsWith(`${o.absolutePath}${X.sep}`))}async function yz(t,e,r,n,i){let o=await UR(t,e,i),a=new Map((n??[]).map((w,y)=>[w,y])),s=[...o].sort((w,y)=>{let v=a.get(w.id)??Number.POSITIVE_INFINITY,b=a.get(y.id)??Number.POSITIVE_INFINITY;return v-b||w.modulePath.localeCompare(y.modulePath)}),c=[],l=new Set,d=!1;for(let w of s){if(c.length>tc)break;if(Date.now()>e){d=!0;break}let y=await Dy(w.absolutePath,tc+1-c.length,e,v=>VR.has(X.extname(v).toLocaleLowerCase()),!0);if(l.add(w.id),c.push(...y),Date.now()>e){d=!0;break}}let u=c.length>tc;u&&i?.({code:"project-model-source-limit",message:`项目模型只分析前 ${tc} 个源码文件;其余源码当前未用于生成模块记录。`});let p=c.slice(0,tc).sort((w,y)=>$i(t,w).localeCompare($i(t,y))),f=[],m=new Map,g=await Promise.all(p.map(async w=>Date.now()>e?{file:w,text:null}:{file:w,text:await zR(t,$i(t,w),e)}));Date.now()>e&&(d=!0);for(let{file:w,text:y}of g){if(!lz.has(X.extname(w).toLocaleLowerCase()))continue;let v=$i(t,w);if(y===null)continue;for(let k of hz(y))f.push({importer:v,specifier:k,targetModule:gz(t,v,k,o)});let b=[...y.matchAll(/\b(register[A-Z][A-Za-z0-9_$]*)\s*\(/gu)].flatMap(k=>k[1]?[k[1]]:[]);b.length>0&&m.set(v,[...new Set(b)].slice(0,6))}d&&i?.({code:"project-model-timeout",message:"项目模型生成超过 1.5 秒预算,当前仅保留预算内已确认的记录。"});let h=[];for(let w of o){if(!l.has(w.id)||(d||u)&&n!==void 0&&!a.has(w.id))continue;let v=p.filter(C=>C===w.absolutePath||C.startsWith(`${w.absolutePath}${X.sep}`)).map(C=>$i(t,C)).filter(mz).sort((C,L)=>C.localeCompare(L)).slice(0,8),b=f.filter(C=>C.importer.startsWith(`${w.modulePath}/`)&&C.targetModule!==void 0&&C.targetModule.modulePath!==w.modulePath),k=[...new Map(b.map(C=>[C.targetModule.id,C.targetModule])).values()].sort((C,L)=>C.modulePath.localeCompare(L.modulePath)).slice(0,8),S=f.filter(C=>C.targetModule?.modulePath===w.modulePath&&!C.importer.startsWith(`${w.modulePath}/`)),E=[...new Set(S.map(C=>o.find(L=>C.importer.startsWith(`${L.modulePath}/`))?.modulePath??C.importer))].sort((C,L)=>C.localeCompare(L)).slice(0,8),N=[...m.entries()].filter(([C])=>C.startsWith(`${w.modulePath}/`)).sort(([C],[L])=>C.localeCompare(L)).slice(0,6),P=`test/${w.modulePath}`,_=await qR(X.join(t,...P.split("/")));if(v.length===0&&k.length===0&&E.length===0&&N.length===0&&!_)continue;let j=[];if(v.length>0&&j.push({text:r==="en"?`Confirmed entry points: ${v.join(", ")}.`:`可确认入口:${v.join("、")}。`,sources:v.map(C=>In(C))}),k.length>0&&j.push({text:r==="en"?`Cross-module dependencies: ${k.map(C=>C.modulePath).join(", ")}.`:`跨模块依赖:${k.map(C=>C.modulePath).join("、")}。`,sources:b.slice(0,16).map(C=>In(C.importer))}),E.length>0&&j.push({text:r==="en"?`External callers: ${E.join(", ")}.`:`外部调用方:${E.join("、")}。`,sources:S.slice(0,16).map(C=>In(C.importer))}),N.length>0&&j.push({text:r==="en"?`Registration points: ${N.map(([C,L])=>`${C} (${L.join(", ")})`).join("; ")}.`:`注册点:${N.map(([C,L])=>`${C}(${L.join("、")})`).join(";")}。`,sources:N.map(([C])=>In(C))}),_){let C=await Dy(X.join(t,...P.split("/")),4,e,()=>!0,!0);j.push({text:r==="en"?`Mirrored test directory: ${P}/.`:`镜像测试目录:${P}/。`,sources:C.map(L=>In($i(t,L)))})}let x=k.map(C=>{let L=b.find(I=>I.targetModule?.id===C.id);return{type:"depends-on",targetId:C.id,sources:[In(L.importer)]}});h.push(Ky(w.id,"dependency",r==="en"?`Module entry points and dependencies: ${w.modulePath}`:`模块入口与依赖:${w.modulePath}`,j.map(C=>C.text).join(" "),j,{applicablePaths:[`${w.modulePath}/`,..._?[`${P}/`]:[]],relations:x}))}return h}async function vz(t,e){try{let r=JSON.parse(e).packageManager;if(typeof r=="string"&&r.trim()){let n=r.trim().split("@")[0];if(n&&["pnpm","npm","yarn","bun"].includes(n))return n}}catch{}for(let[r,n]of[["pnpm-lock.yaml","pnpm"],["yarn.lock","yarn"],["bun.lockb","bun"],["bun.lock","bun"],["package-lock.json","npm"]])try{if((await zo.lstat(X.join(t,r))).isFile())return n}catch{}return"npm"}async function wz(t,e,r){let n=await By(t,["package.json","pyproject.toml","Makefile","README.md"],e),i=n?await zR(t,n,e):null,o=[];if(n==="package.json"&&i)try{let c=JSON.parse(i).scripts??{},l=await vz(t,i);for(let d of["build","test","lint","typecheck","check:generated"])typeof c[d]=="string"&&o.push(`${l} run ${d}`)}catch{}let a=n?[In(n)]:[];if(a.length===0)return null;let s=o.length>0?r==="en"?`Preferred project verification commands: ${o.join(", ")}.`:`项目验证优先使用:${o.join("、")}。`:r==="en"?"No build or test command is directly discoverable from the manifest.":"项目未声明可从 manifest 直接识别的构建或测试命令。";return Ky("generated-build-test","procedure",r==="en"?"Build and test workflow":"构建与测试方式",s,[{text:o.length>0?r==="en"?`Run in order: ${o.join(", ")}.`:`建议按顺序运行:${o.join("、")}。`:r==="en"?"Inspect project documentation and CI before choosing verification commands.":"请先核对项目说明和 CI 中记录的实际验证命令。",sources:a}],{operations:["build","test","verify"],verification:o.map(c=>({command:c,expected:r==="en"?"pass":"成功"}))})}async function bz(t){let e=X.resolve(t.projectRoot),r=Date.now()+WR,n=t.language??"zh-CN",i=[];try{let o=await pz(e,r,n);o&&i.push(o);let a=await wz(e,r,n);a&&i.push(a),i.push(...await yz(e,r,n,t.preferredRecordIds,t.reportDiagnostic))}catch(o){if(!(o instanceof qo))throw o;t.reportDiagnostic?.({code:"project-model-timeout",message:"项目模型生成超过 1.5 秒预算,当前仅保留预算内已确认的记录。"})}return i}async function kz(t,e){let r=[...new Map(e.map(i=>[i.source,i.source])).values()],n=[];for(let i of r.slice(0,32))try{let o=await wr(t,i,{label:`Project Knowledge source ${i}`});n.push({source:i,size:Number(o.stat.size),modifiedAt:Math.trunc(Number(o.stat.mtimeMs)),digest:o.digest})}catch{}return n}async function rc(t){let e=X.resolve(t.projectRoot),r=await bz(t),n=oe(e),i=new Date().toISOString(),o=[];for(let a of r){let s=[...a.conclusions,...a.relations].flatMap(l=>l.sources),c=await kz(e,s);o.push({...a,projectId:n,state:"proven",authority:"repository",sourceVersions:c,applicationCount:0,successCount:0,failureCount:0,updatedAt:i})}return o}async function YR(t){if(!(t.provider instanceof Ti))try{await Nz(t)}catch(e){t.reportDiagnostic?.({code:"readiness-failed",message:`项目知识准备未完成:${e instanceof Error?e.message:String(e)}`})}}async function Nz(t){try{await Sz.access(t.projectRoot)}catch{return}let e=oe(t.projectRoot),r=await t.provider.apply({kind:"refresh",projectId:e});for(let s of r.diagnostics)t.reportDiagnostic?.(s);let n=await t.provider.query({kind:"list",projectId:e,state:"all",limit:500});for(let s of n.diagnostics)t.reportDiagnostic?.(s);let i=new Set(n.kind==="list"?n.records.filter(s=>s.state!=="superseded").map(s=>s.id):[]),o=await JR({projectRoot:t.projectRoot,reportDiagnostic:t.reportDiagnostic}),a=await rc({projectRoot:t.projectRoot,preferredRecordIds:o.filter(s=>!i.has(s)),language:t.language??"zh-CN",reportDiagnostic:t.reportDiagnostic});for(let s of a.slice(0,66))try{let c=await t.provider.apply({kind:"upsert",record:s});for(let l of c.diagnostics)t.reportDiagnostic?.(l)}catch(c){t.reportDiagnostic?.({code:"readiness-upsert-failed",message:`项目知识记录准备失败:${c instanceof Error?c.message:String(c)}`})}}Q();import{promises as Ez}from"node:fs";import{createHash as eA}from"node:crypto";import Wy from"node:path";var tA=24,xz=16,Pz=16,Cz=16,Rz=48*1024,XR=256*1024,Az=512,_z=16,jz=1024*1024;function ur(t,e=""){return typeof t=="string"?t.trim().slice(0,Az):e}function QR(t,e){return Array.isArray(t)?[...new Set(t.filter(r=>typeof r=="string"))].map(r=>ur(r)).filter(Boolean).slice(0,e):[]}function rA(t){if(typeof t!="string")return null;let e=t.trim().replaceAll("\\","/");return!e||e.includes("\0")||Wy.posix.isAbsolute(e)||Wy.win32.isAbsolute(e)||e.split("/").some(r=>r==="..")?null:e}function Iz(t){if(!Array.isArray(t))return[];let e=t.map(r=>typeof r=="string"?r:!r||typeof r!="object"||Array.isArray(r)?null:r.path??r.source).map(rA).filter(r=>r!==null);return[...new Set(e)].slice(0,xz)}function Tz(t){return Array.isArray(t)?t.map(e=>{if(!e||typeof e!="object"||Array.isArray(e))return null;let r=ur(e.command),n=e.success;return!r||typeof n!="boolean"?null:{command:r,success:n}}).filter(e=>e!==null).slice(0,Cz):[]}function Vy(t){let e=QR(t.context.paths,tA).map(rA).filter(l=>l!==null),r=Iz(t.evidence.filter(l=>l.source!==void 0).map(l=>l.source)),n=t.evidence.filter(l=>l.kind==="verification"&&l.command!==void 0),i=QR(n.map(l=>l.command),Pz),o=Tz(n.map(l=>({command:l.command,success:l.success})));if(!(e.length>0||r.length>0||i.length>0||o.length>0)&&!["review.resolved","failure.resolved","change.archived"].includes(t.type))return null;let s=ur(t.context.workflow,t.source.workflow??t.source.name),c=ur(t.context.changeId,t.source.changeId??t.episodeId);return!s||!c?null:{eventName:t.type,workflow:s,changeId:c,success:t.outcome?.status!=="contributed-to-failure"&&t.evidence.every(l=>l.success!==!1),...ur(t.context.operation)?{operation:ur(t.context.operation)}:{},...ur(t.context.phase)?{phase:ur(t.context.phase)}:{},changedPaths:e,artifactRefs:r,verificationCommands:i,verificationResults:o}}async function $z(t,e){if(!["verification.completed","review.resolved","failure.resolved","change.archived","repository.changed"].includes(t.type))return null;let r=Vy(t);if(r===null)return null;let n=[...new Set([...r.changedPaths,...r.artifactRefs])],i=[],o=0;for(let a of n.slice(0,tA)){if(o>=(e.maxTotalSourceBytes??XR))break;try{if(!(await $(e.projectRoot,a,{label:a,expected:"file"})).exists)continue;let c=await O(e.projectRoot,a,Math.min(e.maxSourceBytes??Rz,(e.maxTotalSourceBytes??XR)-o),{label:a}),l=c.bytes.toString("utf8");o+=c.bytes.length,i.push({source:a,text:l,size:Number(c.stat.size),modifiedAt:Math.trunc(Number(c.stat.mtimeMs)),digest:eA("sha256").update(c.bytes).digest("hex")})}catch{}}return{eventName:r.eventName,workflow:r.workflow,changeId:r.changeId,success:r.success,occurredAt:t.occurredAt,...r.operation===void 0?{}:{operation:r.operation},...r.phase===void 0?{}:{phase:r.phase},...ur(t.outcome?.summary,t.evidence.find(a=>a.summary.trim().length>0)?.summary??"")?{summary:ur(t.outcome?.summary,t.evidence.find(a=>a.summary.trim().length>0)?.summary??"")}:{},changedHint:r,sources:i}}function Oz(t){if(!t.success)return!1;let e=t.changedHint.verificationResults;return e.length>0?e.every(r=>r.success===!0):["review.resolved","failure.resolved","change.archived"].includes(t.eventName)}function Mz(t,e,r){let n={"review.resolved":"decision","failure.resolved":"failure-resolution","verification.completed":"constraint","change.archived":"procedure"}[t.eventName];if(n===void 0)return null;let i=n==="constraint"?t.changedHint.verificationResults.filter(l=>l.success).map(l=>({command:l.command,expected:"pass"})):[];if(n==="constraint"&&i.length===0)return null;let o=n==="constraint"?r==="en"?`The project successfully ran: ${i.map(l=>l.command).join(", ")}.`:`项目已成功运行验证命令:${i.map(l=>l.command).join("、")}。`:n==="failure-resolution"?r==="en"?"This failure was resolved; similar tasks should reuse the verified resolution.":"本次失败已经解决,后续相似任务应复用已验证的处理方式。":n==="decision"?r==="en"?"This review decision was accepted and can guide similar project changes.":"本次评审结论已通过,可作为后续相似变更的项目决策依据。":r==="en"?"This archived change provides a reusable completion and verification workflow.":"本次变更已经归档,可复用其完成与验证流程。",a=n==="constraint"?o:t.summary??o,s=t.sources.slice(0,8).map(l=>({source:l.source})),c=eA("sha256").update(JSON.stringify({type:n,workflow:t.workflow,summary:a,operation:t.operation,verification:i,paths:t.changedHint.changedPaths})).digest("hex").slice(0,20);return gt({id:`learned-${n}-${c}`,projectId:oe(e),type:n,state:"proven",authority:"automatic",title:n==="constraint"?r==="en"?"Verified project command":"已验证的项目命令":n==="failure-resolution"?r==="en"?"Resolved failure experience":"已解决的问题经验":n==="decision"?r==="en"?"Review-confirmed project decision":"评审确认的项目决策":r==="en"?"Archived change workflow":"已归档的变更流程",summary:a,applicablePaths:t.changedHint.changedPaths,operations:t.operation===void 0?[]:[t.operation],phases:t.phase===void 0?[]:[t.phase],conclusions:s.length===0?[]:[{text:a,sources:s}],relations:[],verification:i,sourceVersions:t.sources.slice(0,8).map(l=>({source:l.source,size:l.size,modifiedAt:Math.trunc(l.modifiedAt),digest:l.digest})),applicationCount:0,successCount:0,failureCount:0,updatedAt:t.occurredAt})}async function Lz(t,e){for(let r of t.sources)try{if(!(await $(e,r.source,{label:r.source,expected:"file"})).exists)return r.source;let i=await wr(e,r.source,{label:r.source});if(Number(i.stat.size)!==r.size||i.digest!==r.digest)return r.source}catch{return r.source}return null}async function Hy(t,e){for(let o of t.sourceVersions)try{let a=await $(e,o.source,{label:o.source,expected:"file"});if(!a.exists)return o.source;if(o.digest!==void 0){let s=await wr(e,o.source,{label:o.source});if(Number(s.stat.size)!==o.size||s.digest!==o.digest)return o.source}else{let s=await Ez.stat(a.target);if(Number(s.size)!==o.size||Math.trunc(Number(s.mtimeMs))!==o.modifiedAt)return o.source}}catch{return o.source}let r=[...t.conclusions.flatMap(o=>o.sources),...t.relations.flatMap(o=>o.sources)],n=new Set(t.sourceVersions.map(o=>o.source)),i=new Map;for(let o of r){if(!n.has(o.source))return o.source;let a=i.get(o.source)??[];i.set(o.source,[...a,o])}for(let[o,a]of i){let s=a.filter(c=>c.anchor!==void 0||c.lineStart!==void 0||c.lineEnd!==void 0);if(s.length!==0)try{let c=(await O(e,o,jz,{label:o})).bytes.toString("utf8");if(!s.every(l=>Ju(c,l)))return o}catch{return o}}return null}var Zu=class{projectRoot;provider;language;reviewer;reportDiagnostic;constructor(e){this.projectRoot=Wy.resolve(e.projectRoot),this.provider=e.provider,this.language=e.language??"zh-CN",this.reviewer=e.reviewer,this.reportDiagnostic=e.reportDiagnostic}async bootstrapProjectModel(e=[]){let r=[],n=s=>{r.push(s),this.reportDiagnostic?.(s)},i=[];try{i=await rc({projectRoot:this.projectRoot,language:this.language,reportDiagnostic:n})}catch{n({code:"deterministic-extractor",message:"确定性项目知识提取暂不可用,已跳过本次写入。"})}let o=[],a=[];for(let s of i.slice(0,66))try{let c=gt(s),l=await Hy(c,this.projectRoot);if(l!==null){n({code:"source-changed",message:"首次建模期间项目来源发生变化,已跳过本次记录。",source:l});continue}let d=await this.provider.apply({kind:"upsert",record:c});for(let u of d.diagnostics)n(u);d.changed&&o.push(c.id),d.changed&&(d.record?.state==="proven"||d.record?.state==="enforced")&&a.push(c.id)}catch{n({code:"provider-write",message:"项目知识记录未能写入 Provider。"})}return{skipped:i.length===0,persisted:o,proven:a,superseded:[],diagnostics:r}}async reflectEvent(e){let r=[],n=u=>{r.push(u),this.reportDiagnostic?.(u)},i=await $z(e,{projectRoot:this.projectRoot});if(i===null||!Oz(i))return{skipped:!0,deferred:!1,deltas:[],...i===null?{}:{changedHint:i.changedHint},diagnostics:r};let o=[],a=this.reviewer===void 0;if(this.reviewer!==void 0)try{let u=await this.reviewer.review(i);o=Array.isArray(u)?u.slice(0,_z):[]}catch(u){a=!0,n({code:"reviewer-unavailable",message:u instanceof Error&&u.message.startsWith("Host Agent review pending")?"经验已保存,等待宿主 Agent 使用 comet knowledge review 完成评审。":"项目知识语义评审暂不可用,已继续确定性学习并延后语义策略。"})}let s=await Lz(i,this.projectRoot);if(s!==null)return n({code:"source-changed",message:"语义评审期间项目来源发生变化,已跳过本次写入。",source:s}),{skipped:!0,deferred:a,deltas:[],changedHint:i.changedHint,diagnostics:r};let c=[],l=[];try{l=await rc({projectRoot:this.projectRoot,changedPaths:i.changedHint.changedPaths,language:this.language,reportDiagnostic:n})}catch{n({code:"deterministic-extractor",message:"确定性项目知识提取暂不可用,已跳过本次写入。"})}let d=i.eventName==="verification.completed"?Mz(i,this.projectRoot,this.language):null;d!==null&&(l=[...l,d]);for(let u of l.slice(0,67))try{let p=gt({...u}),f=await Hy(p,this.projectRoot);if(f!==null){n({code:"source-changed",message:"确定性记录校验期间项目来源发生变化,已跳过本次记录。",source:f});continue}c.push(ZR(e,p))}catch{n({code:"record-invalid",message:"项目知识记录无效,已跳过该记录。"})}for(let u of o)try{if(u.action==="supersede"){c.push({action:"supersede",owner:"comet.project-knowledge",targetId:u.recordId,memoryType:"project-policy",kind:"semantic-review",statement:"semantic-review",applicability:{projectId:e.projectId??oe(this.projectRoot)},evidence:e.evidence,authority:"repository",recommendedState:"superseded"});continue}let p=gt({...u.record,state:"trial",authority:"automatic",applicationCount:0,successCount:0,failureCount:0}),f=await Hy(p,this.projectRoot);if(f!==null){n({code:"source-changed",message:"语义记录校验期间项目来源发生变化,已跳过本次记录。",source:f});continue}c.push(ZR(e,p))}catch{n({code:"review-action-invalid",message:"语义评审动作无效,已跳过该动作。"})}if(i.eventName==="verification.completed"&&i.changedHint.verificationResults.length>0)try{let u=i.changedHint.verificationResults.filter(p=>p.success).map(p=>p.command);c.push({action:"update",owner:"comet.project-knowledge",memoryType:"project-policy",kind:"verification-status",statement:u.join(`
`),applicability:{projectId:oe(this.projectRoot)},evidence:e.evidence,authority:"repository",verification:u.map(p=>({command:p,expected:"pass"})),payload:{kind:"verify",projectId:oe(this.projectRoot),commands:u,updatedAt:i.occurredAt},recommendedState:"enforced"})}catch{n({code:"verification-invalid",message:"项目知识验证状态无效,已跳过。"})}return{skipped:!1,deferred:a,deltas:c,changedHint:i.changedHint,diagnostics:r}}async processEvent(e){let r=await this.reflectEvent(e),n=[...r.diagnostics],i=[],o=[],a=[];for(let[s,c]of r.deltas.entries())try{let l=await this.provider.apply({kind:"experience-delta",delta:c,idempotencyKey:`direct:${e.eventId}:${s}`,updatedAt:e.occurredAt});if(n.push(...l.diagnostics),!l.changed)continue;let d=[...l.record?[l.record.id]:[],...(l.records??[]).map(u=>u.id),...c.targetId?[c.targetId]:[]];for(let u of[...new Set(d)])c.action==="supersede"||c.action==="forget"?a.push(u):i.push(u);for(let u of[...l.record?[l.record]:[],...l.records??[]])(u.state==="proven"||u.state==="enforced")&&o.push(u.id)}catch{n.push({code:"provider-write",message:"项目知识记录未能写入 Provider。"})}return{skipped:r.skipped,persisted:[...new Set(i)],proven:[...new Set(o)],superseded:[...new Set(a)],...r.changedHint===void 0?{}:{changedHint:r.changedHint},diagnostics:n}}};function ZR(t,e){let r=["topology","fact","dependency"].includes(e.type);return{action:"create",owner:"comet.project-knowledge",targetId:e.id,memoryType:r?"project-model":"project-policy",kind:e.type,title:e.title,statement:e.summary,applicability:{projectId:e.projectId,paths:e.applicablePaths,operations:e.operations,phases:e.phases},evidence:t.evidence,authority:e.authority==="user"?"user":"repository",verification:e.verification,payload:{kind:"record",record:e},recommendedState:e.state}}Aa();Q();ge();var Wt="comet.project-knowledge",Gy=3,Bz=2*1024*1024,Fz=new Set(["topology","fact","dependency","decision","pattern","procedure","constraint","failure-resolution"]),Kz=new Set(["decision","pattern","procedure","constraint","failure-resolution"]);function qy(t,e){if(t===void 0)return[];if(!Array.isArray(t))throw new Error(`${e} must be an array`);return t.map((r,n)=>{if(typeof r!="string"||!r.trim())throw new Error(`${e}[${n}] must be a non-empty string`);return r.trim()})}function nA(t,e){if(t!==void 0){if(typeof t!="number"||!Number.isSafeInteger(t)||t<=0)throw new Error(`${e} must be a positive integer`);return t}}function Hz(t,e){let r=nA(e.maxFileMb,"maxFileMb"),n=nA(e.maxTotalMb,"maxTotalMb");if(r===void 0&&n===void 0)return t===void 0?void 0:{...t,include:[...t.include]};let i={...t??{include:[]},include:[...t?.include??[]],max_file_mb:r??t?.max_file_mb??Qe.max_file_mb,max_total_mb:n??t?.max_total_mb??Qe.max_total_mb};if(i.max_file_mb>i.max_total_mb)throw new Error("maxFileMb must not exceed maxTotalMb");return i}function Wz(t){if(t===void 0)return[];if(!Array.isArray(t))throw new Error("sources must be an array");return t.map((e,r)=>{if(typeof e=="string"&&e.trim())return{source:e.trim()};if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`sources[${r}] must be a source object or string`);let n=e.source;if(typeof n!="string"||!n.trim())throw new Error(`sources[${r}].source must be a non-empty string`);let i=e.anchor;return{source:n.trim(),...typeof i=="string"&&i.trim()?{anchor:i.trim()}:{}}})}function Vz(t){if(t===void 0)return[];if(!Array.isArray(t))throw new Error("verification must be an array");return t.map((e,r)=>{if(typeof e=="string"&&e.trim())return{command:e.trim()};if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`verification[${r}] must be a command object or string`);let n=e.command;if(typeof n!="string"||!n.trim())throw new Error(`verification[${r}].command must be a non-empty string`);let i=e.expected;return{command:n.trim(),...typeof i=="string"&&i.trim()?{expected:i.trim()}:{}}})}function qz(t="zh-CN"){return{id:"project-knowledge",label:t==="en"?"Project Knowledge":"项目知识",route:"/plugins/project-knowledge",load:async({invoke:e})=>e("status")}}function oA(t){return{id:Wt,kind:"first-party",version:t.version??"1.0.0",scopes:["project"],compatible:t.cometVersionRange??(()=>!0),create:async e=>zz(e,t)}}async function zz(t,e){let r=await Qz(t.storage),n=await Zz(t.storage),i=Promise.resolve(),o=()=>{let m={diagnostics:[...r],changedHints:[...n]};i=i.then(()=>t.storage.write(m)).catch(()=>{})},a=m=>{let g=sA(`[${m.code}] ${m.message}`);if(!r.some(w=>w.code===m.code&&w.message===g)){for(r.push({code:m.code,message:g});r.length>Gy;)r.shift();o(),t.reportDiagnostic({phase:"context",code:"execution-failed",message:g})}},s=m=>{let g=r.filter(h=>h.code!==m);g.length!==r.length&&(r.splice(0,r.length,...g),o())},c=m=>{e.knowledgeConfig.provider!=="local"||m.kind!=="search"||m.diagnostics.some(g=>g.code==="local-tool-missing")||s("local-tool-missing")},l=async(m={})=>{let g=e.knowledgeConfig.provider,h=g==="local"&&m.discoverCorpus!==!1?await Vu({projectRoot:e.projectRoot,reportDiagnostic:a}):{documents:[],complete:!0};return g==="remote"?new Ti({config:e.knowledgeConfig.remote,projectRoot:e.projectRoot,reportDiagnostic:a}):new St({projectRoot:e.projectRoot,corpus:h.documents,corpusComplete:h.complete,...e.cacheRoot?{cacheRoot:e.cacheRoot}:{},reportDiagnostic:a})},d=async m=>{let g=await l();try{return await new Zu({projectRoot:e.projectRoot,provider:g,language:e.language,reviewer:e.semanticReviewer??new wi(e.projectRoot,e.cacheRoot),reportDiagnostic:a}).reflectEvent(m)}finally{g instanceof St&&g.close()}},u=async m=>{await YR({projectRoot:e.projectRoot,provider:m,language:e.language,reportDiagnostic:a})},p=async m=>{for(n.push(m);n.length>8;)n.shift();await t.storage.write({diagnostics:[...r],changedHints:[...n]})},f=async()=>{let m=null;try{let g=HR({config:e.knowledgeConfig,language:e.language});m=await l();let h=m,w=oe(e.projectRoot);await u(h);let y=await h.status(),v=await h.query({kind:"list",projectId:w,state:"all",limit:100}),b=v.kind==="list"?v.records:[],k=await e.listContextApplications?.()??[],S=b.map(I=>({...I,...Gz(I.id,k),...Uy(I)===void 0?{}:{activation:Uy(I)}})),E=Uz(k,Wt),N=new Map(S.map(I=>[I.id,I])),P=m instanceof St?await m.indexStatus():null,_=rr(e.projectRoot,e.cacheRoot),j=[...r,...y.diagnostics,...v.kind==="list"?v.diagnostics:[]].filter((I,B,re)=>{let J=I.message.replace(/^\[[^\]]+\]\s*/u,"");return re.findIndex(Oi=>Oi.code===I.code&&Oi.message.replace(/^\[[^\]]+\]\s*/u,"")===J)===B}),x=0;if(!e.semanticReviewer)try{x=(await new wi(e.projectRoot,e.cacheRoot).pending()).length}catch(I){let B={code:"host-review-unavailable",message:`待评审知识暂不可用:${I instanceof Error?I.message:String(I)}`};a(B),j.push(B)}let C;try{let I=await iR(e.projectRoot,e.cacheRoot),B=k.filter(re=>re.owner===Wt&&re.candidateId===xy).sort((re,J)=>J.appliedAt.localeCompare(re.appliedAt));C={directory:Vo(e.projectRoot,e.cacheRoot),total:I.length,entries:I,applicationCount:B.length,...B[0]===void 0?{}:{lastApplication:B[0]},applicationHistory:B.slice(0,10)}}catch(I){let B={code:"project-memory-unavailable",message:`项目记忆暂不可用:${I instanceof Error?I.message:String(I)}`};a(B),j.push(B)}return{...g,pendingHostReviewCount:x,status:y,...C===void 0?{}:{projectMemory:C},records:S,counts:{active:v.kind==="list"&&v.counts?v.counts.active:b.filter(I=>I.state!=="superseded").length,trial:v.kind==="list"&&v.counts?v.counts.trial:b.filter(I=>I.state==="trial").length,proven:v.kind==="list"&&v.counts?v.counts.proven:b.filter(I=>I.state==="proven").length,enforced:v.kind==="list"&&v.counts?v.counts.enforced:b.filter(I=>I.state==="enforced").length,superseded:v.kind==="list"&&v.counts?v.counts.superseded:b.filter(I=>I.state==="superseded").length,total:v.kind==="list"&&v.counts?v.counts.total:b.length,displayed:b.length},truncated:v.kind==="list"?v.truncated:!1,manifestPreview:E.flatMap(I=>{let B=N.get(I.candidateId),re=k.filter(J=>J.owner===Wt&&J.candidateId===I.candidateId);return B===void 0&&(I.candidateTitle===void 0||I.candidateSummary===void 0||I.candidateState===void 0)?[]:[{id:B?.id??I.candidateId,memoryType:B===void 0?I.memoryType==="project-model"?"project-model":"project-policy":["topology","fact","dependency"].includes(B.type)?"project-model":"project-policy",state:B?.state??I.candidateState,title:B?.title??I.candidateTitle,summary:B?.summary??I.candidateSummary,whyApplied:I.whyApplied,applicationCount:B?.applicationCount??re.length,successCount:B?.successCount??re.filter(J=>J.outcome==="used-successfully").length,failureCount:B?.failureCount??re.filter(J=>J.outcome==="corrected"||J.outcome==="contributed-to-failure").length,delivery:I.delivery,appliedAt:I.appliedAt,...I.outcome===void 0?{}:{outcome:I.outcome},lastApplication:I,...B?.activation===void 0?{}:{activation:B.activation}}]}),local:e.knowledgeConfig.provider==="local"?{available:y.healthy&&P?.available===!0,repositoryId:_.repositoryId,workspaceId:_.workspaceId,sourceCount:P?.sourceCount??0,sources:P?.sources??[],sectionCount:P?.sectionCount??0,...P?.lastQueryMs===void 0?{}:{lastQueryMs:P.lastQueryMs},...P?.lastCandidateCount===void 0?{}:{lastCandidateCount:P.lastCandidateCount},...P?.updatedAt??y.updatedAt?{updatedAt:P?.updatedAt??y.updatedAt}:{},channels:P?.channels??["records","sections"],truncated:v.kind==="list"?v.truncated:!1}:void 0,diagnostics:j.slice(-Gy)}}finally{m instanceof St&&m.close()}};return{dashboard:qz(e.language),events:["verification.completed","review.resolved","failure.resolved","change.archived","repository.changed","context.outcome"],reflect:async m=>{let g=[],h=!1;for(let w of hu(m)){if(w.type==="context.outcome"&&w.outcome!==void 0){for(let b of bu(w.outcome.unitIds,Wt))g.push({action:"update",owner:Wt,targetId:b,memoryType:"project-policy",kind:"application-feedback",statement:w.outcome.summary??`Context outcome: ${w.outcome.status}`,applicability:Jz(w),evidence:w.evidence,...w.outcome.applicationId===void 0||w.outcome.revision===void 0?{}:{feedback:{applicationId:w.outcome.applicationId,status:w.outcome.status,...w.outcome.previousStatus===void 0?{}:{previousStatus:w.outcome.previousStatus},revision:w.outcome.revision}},recommendedState:w.outcome.status==="corrected"||w.outcome.status==="contributed-to-failure"?"superseded":"proven"});continue}let y=Vy(w);y!==null&&await p(y);let v=await d(w);h||=v.deferred,g.push(...v.deltas)}return{deltas:g,deferred:h}},consolidate:async({deltas:m})=>{let g=null;try{g=await l({discoverCorpus:!1});for(let{delta:h,idempotencyKey:w}of m)await g.apply({kind:"experience-delta",delta:h,idempotencyKey:w,updatedAt:new Date().toISOString()})}finally{g instanceof St&&g.close()}},invoke:async(m,g)=>{let h=null;try{let w=g&&typeof g=="object"?g:{};if(m==="configure-provider"){if(e.updateKnowledgeConfig===void 0)throw new Error("Project Knowledge configuration is read-only in this host");let b=w.provider;if(b!=="local"&&b!=="remote")throw new Error("provider must be local or remote");let k=Hz(e.knowledgeConfig.local,w);if(b==="local")await e.updateKnowledgeConfig({provider:"local",...k===void 0?{}:{local:k}});else{let S=w.remote;if(!S||typeof S!="object"||Array.isArray(S))throw new Error("remote provider configuration is required");let E=S;if(typeof E.endpoint!="string"||!E.endpoint.trim())throw new Error("remote endpoint is required");let N=typeof E.timeoutMs=="number"?E.timeoutMs:E.timeout_ms;if(typeof N!="number"||!Number.isSafeInteger(N))throw new Error("remote timeout must be an integer");await e.updateKnowledgeConfig({provider:"remote",...k===void 0?{}:{local:k},remote:{endpoint:E.endpoint.trim(),...typeof E.tokenEnv=="string"&&E.tokenEnv.trim()?{token_env:E.tokenEnv.trim()}:{},...typeof E.scope=="string"&&E.scope.trim()?{scope:E.scope.trim()}:{},timeout_ms:N}})}return{configured:!0}}let y=w,v=oe(e.projectRoot);if(m==="status")return f();if(m==="read-source"){if(typeof y.source!="string"||!y.source.trim())throw new Error("read-source requires source");let b=y.source.trim().replaceAll("\\","/");try{let k=await O(e.projectRoot,b,Bz,{label:`Project Knowledge source ${b}`});if(k.bytes.includes(0))throw new Error("来源文件不是可查看的文本文件");return{kind:"source",source:b,content:k.bytes.toString("utf8"),size:Number(k.stat.size),modifiedAt:new Date(Number(k.stat.mtimeMs)).toISOString(),truncated:!1}}catch(k){throw k instanceof Ee&&k.reason==="too-large"?new Error("来源文件过大,无法在 Dashboard 内完整查看",{cause:k}):k instanceof Error&&k.message.includes("不是可查看的文本文件")?k:new Error("来源文件无法读取",{cause:k})}}if(m==="memory-get"){if(typeof y.slug!="string"||!y.slug.trim())throw new Error("memory-get requires slug");let b=await Ry(e.projectRoot,y.slug.trim(),e.cacheRoot);if(b===null)throw new Error("项目记忆不存在");return{kind:"memory",...b}}if(m==="forget"&&typeof y.memory=="string"&&y.memory.trim()){let b=y.memory.trim(),k=await oR(e.projectRoot,b,e.cacheRoot);if(!k)throw new Error("项目记忆不存在");return{changed:!0,memory:b,removed:k}}if(h=await l(),(m==="list"||m==="query")&&await u(h),m==="list"){let b=y.state;return await h.query({kind:"list",projectId:v,...b==="trial"||b==="proven"||b==="enforced"||b==="superseded"||b==="all"?{state:b}:{state:"all"},limit:typeof y.limit=="number"?Math.min(500,Math.max(1,y.limit)):100})}if(m==="get"){if(typeof y.id!="string"||!y.id.trim())throw new Error("get requires id");return await h.query({kind:"get",id:y.id.trim(),projectId:v})}if(m==="query"){if(typeof y.task!="string"||!y.task.trim())throw new Error("query requires task");let b=await h.query({kind:"search",query:tu({task:y.task,...typeof y.path=="string"?{path:y.path}:{},...typeof y.phase=="string"?{phase:y.phase}:{},...typeof y.operation=="string"?{operation:y.operation}:{}}),limit:8});return c(b),b}if(m==="create"){let b=y.type;if(typeof b!="string"||!Fz.has(b))throw new Error("create requires a supported type");if(typeof y.title!="string"||!y.title.trim())throw new Error("create requires title");if(typeof y.summary!="string"||!y.summary.trim())throw new Error("create requires summary");let k=gP({type:b,title:y.title.trim(),summary:y.summary.trim(),applicablePaths:qy(y.applicablePaths,"applicablePaths"),operations:qy(y.operations,"operations"),phases:qy(y.phases,"phases"),sources:Wz(y.sources),verification:Vz(y.verification)},v);return await h.apply({kind:"upsert",record:k})}if(m==="correct"){if(typeof y.id!="string"||!y.id.trim())throw new Error("correct requires id");if(typeof y.text!="string"||!y.text.trim())throw new Error("correct requires text");return await h.apply({kind:"correct",id:y.id.trim(),projectId:v,summary:y.text.trim().slice(0,2e3),updatedAt:new Date().toISOString()})}if(m==="forget"){if(typeof y.id!="string"||!y.id.trim())throw new Error("forget requires id");return await h.apply({kind:"supersede",id:y.id.trim(),projectId:v,updatedAt:new Date().toISOString()})}if(m==="feedback"){if(typeof y.id!="string"||!y.id.trim())throw new Error("feedback requires id");if(!["used-successfully","ignored","overridden","corrected","contributed-to-failure"].includes(String(y.outcome)))throw new Error("feedback requires a supported outcome");return await h.apply({kind:"feedback",id:y.id.trim(),projectId:v,outcome:y.outcome,updatedAt:new Date().toISOString()})}if(m==="refresh")return await h.apply({kind:"refresh",projectId:v,...typeof y.id=="string"&&y.id.trim()?{id:y.id.trim()}:{}});throw new Error(`Unknown project knowledge capability: ${m}`)}finally{h instanceof St&&h.close()}},provideContext:async m=>{let g=[];try{let w=await nR(e.projectRoot,e.cacheRoot),y=Yz(w,m.projectId,e.language);y!==null&&g.push(y)}catch(w){a({code:"project-memory-unavailable",message:`项目记忆索引暂不可用:${w instanceof Error?w.message:String(w)}`})}let h=null;try{let w=tu(m);h=await l(),await u(h);let y=await h.query({kind:"search",query:w,limit:8});c(y);let v=y.kind==="search"?y.results:[];g.push(...v.map(b=>zy(b,m.projectId,e.language)))}catch(w){a({code:"context-provider-unavailable",message:`项目知识检索暂不可用:${w instanceof Error?w.message:String(w)}`})}finally{h instanceof St&&h.close()}return n.length>0&&(n.splice(0,n.length),o()),await i,g.length===0?null:g},resolveContext:async(m,g)=>{if(m.startsWith(Wu)){let v=m.slice(Wu.length),b=await Ry(e.projectRoot,v,e.cacheRoot);return b===null?null:Xz(b,g.projectId,e.language)}let h=null;try{h=await l({discoverCorpus:!1});let v=oe(e.projectRoot),b=await h.query({kind:"expand",id:m,projectId:v});if(b.kind==="expand"&&b.record!==null)return zy({source:`record:${b.record.id}`,title:b.record.title,content:b.record.summary,record:b.record},g.projectId,e.language)}finally{h instanceof St&&h.close()}if(!m.startsWith("document-")||e.knowledgeConfig.provider!=="local")return null;let y=(await fR({projectRoot:e.projectRoot,reportDiagnostic:a})).find(v=>`document-${iA("sha256").update(v.source).digest("hex").slice(0,24)}`===m);return y===void 0?null:zy({source:y.source,title:y.source,content:await Dz(y.absolutePath,"utf8"),document:y},g.projectId,e.language)}}}function Gz(t,e){let r=e.filter(n=>n.owner===Wt&&n.candidateId===t).sort((n,i)=>i.appliedAt.localeCompare(n.appliedAt));return r[0]===void 0?{}:{contextApplicationCount:r.length,lastApplication:r[0],applicationHistory:r}}function Uz(t,e){let r=t.filter(i=>i.owner===e).sort((i,o)=>o.appliedAt.localeCompare(i.appliedAt)),n=r[0]?.episodeId;return n===void 0?[]:r.filter(i=>i.episodeId===n).sort((i,o)=>i.applicationId.localeCompare(o.applicationId))}function Jz(t){return{...t.projectId===void 0?{}:{projectId:t.projectId},...t.context.paths===void 0?{}:{paths:t.context.paths},...t.context.operation===void 0?{}:{operations:[t.context.operation]},...t.context.phase===void 0?{}:{phases:[t.context.phase]},...t.context.task===void 0?{}:{tasks:[t.context.task]}}}function zy(t,e,r){let n=t.record;if(n!==void 0){let o=aA(n.type),a=Uy(n);return{id:n.id,owner:Wt,scope:"project",memoryType:o?"project-policy":"project-model",kind:n.type,state:n.state,authority:n.authority==="automatic"?"inferred":n.authority,title:n.title,summary:n.summary,content:[n.summary,`Applicable paths: ${n.applicablePaths.join(", ")||"*"}`,`Operations: ${n.operations.join(", ")||"*"}`,`Phases: ${(n.phases??[]).join(", ")||"*"}`,...n.conclusions.map(s=>`- ${s.text}
Sources: ${s.sources.map(c=>[c.source,c.anchor].filter(Boolean).join("#")).join(", ")}`)].join(`
`),selectors:{projectId:n.projectId,paths:n.applicablePaths,operations:n.operations,phases:n.phases??[]},sources:n.conclusions.flatMap(s=>s.sources.map(c=>({type:"repository",source:c.source,anchor:c.anchor}))),verification:n.verification,...a?.kind==="verification"?{priority:120,matchReasons:[r==="en"?"This project policy is enforced by an existing verification command.":"当前策略由项目验证命令强制执行"]}:a?.kind==="skill-candidate"?{priority:20,matchReasons:[r==="en"?"This stable multi-step procedure can become a Skill after user confirmation.":"该流程已形成稳定的多步骤程序,可在用户确认后整理为 Skill。"]}:{}}}return{id:`document-${iA("sha256").update(t.source).digest("hex").slice(0,24)}`,owner:Wt,scope:"project",memoryType:"project-model",kind:"fact",state:"proven",authority:"repository",title:t.title??t.source,summary:t.content.slice(0,1e3),content:t.content,selectors:{...e===void 0?{}:{projectId:e}},sources:[{type:"repository",source:t.source}],verification:[]}}function Yz(t,e,r){let n=aR(t,r??"zh-CN");if(n===null)return null;let i=t.slice(0,3).map(o=>o.title).join(r==="en"?"; ":";");return{id:xy,owner:Wt,scope:"project",memoryType:"project-policy",kind:"project-memory",state:"proven",authority:"user",title:r==="en"?"Project memory index":"项目记忆索引",summary:`${t.length} ${r==="en"?"entries":"条"}${i?`:${i}`:""}`.slice(0,400),content:n,selectors:{...e===void 0?{}:{projectId:e}},sources:[],verification:[],priority:130,matchReasons:[r==="en"?"Durable lessons the agent recorded for this project; expand entries on demand.":"Agent 为本项目沉淀的可复用经验索引;单条内容按需展开。"]}}function Xz(t,e,r){let n=r==="en",i=[n?`Type: ${t.type}`:`类型:${t.type}`,n?`Created: ${t.created} · Updated: ${t.updated}`:`创建:${t.created} · 更新:${t.updated}`,...t.paths.length>0?[n?`Paths: ${t.paths.join(", ")}`:`相关路径:${t.paths.join("、")}`]:[],...t.source===void 0?[]:[n?`Source: ${t.source}`:`来源:${t.source}`]];return{id:`${Wu}${t.slug}`,owner:Wt,scope:"project",memoryType:"project-policy",kind:"project-memory",state:"proven",authority:"user",title:t.title,summary:t.description,content:`${t.description}
${i.join(`
`)}
${t.body}`,selectors:{...e===void 0?{}:{projectId:e}},sources:t.source===void 0?[]:[{type:"workflow",source:t.source}],verification:[]}}function Uy(t){if(!aA(t.type))return;let e=t.type==="procedure"?[...t.conclusions.map(r=>r.text),...t.summary.split(/\r?\n/u)].map(r=>r.replace(/^\s*(?:\d+[.)]|[-*])\s*/u,"").trim()).filter(Boolean):void 0;return LP({kind:t.type,state:t.state,verification:t.verification,...e===void 0?{}:{steps:e},applicationCount:t.applicationCount,successCount:t.successCount,failureCount:t.failureCount})}function aA(t){return Kz.has(t)}async function Qz(t){try{let e=await t.read();if(!e||typeof e!="object"||Array.isArray(e))return[];let r=e.diagnostics;return Array.isArray(r)?r.map(n=>{if(!n||typeof n!="object"||Array.isArray(n))return null;let i=n.code,o=n.message;if(typeof i!="string"||typeof o!="string")return null;let a=i.trim().slice(0,64),s=sA(o);return!a||!s?null:{code:a,message:s}}).filter(n=>n!==null).slice(-Gy):[]}catch{return[]}}async function Zz(t){try{let e=await t.read();if(!e||typeof e!="object"||Array.isArray(e))return[];let r=e.changedHints;return Array.isArray(r)?r.filter(n=>{if(!n||typeof n!="object"||Array.isArray(n))return!1;let i=n;return typeof i.eventName=="string"&&typeof i.changeId=="string"}).slice(-8):[]}catch{return[]}}function sA(t){return t.replace(/Bearer\s+\S+/giu,"Bearer [redacted]").replace(/Authorization:\s*\S+/giu,"Authorization: [redacted]").slice(0,240)}qe();ge();ge();var Jy=class{constructor(e,r,n="zh-CN",i=new js,o,a=!0){this.runtime=e;this.projectId=r;this.language=n;this.contextDirector=i;this.applicationStore=o;this.persistContextApplications=a}runtime;projectId;language;contextDirector;applicationStore;persistContextApplications;get pluginRuntime(){return this.runtime}get currentProjectId(){return this.projectId}get currentLanguage(){return this.language}async collectContext(e){let r=await this.collectCandidates(e),n=await this.contextDirector.select(r,{...e,projectId:this.projectId,language:this.language});return n.text?(await this.recordContextApplications(n.applications),[{pluginId:"comet.context-director",text:n.text,episodeId:n.episodeId,manifest:n.manifest,applications:n.applications}]):[]}async expandContext(e,r){let n={scope:"project",projectId:this.projectId},i=wu(e),o=i?.candidateId??e,[a,s]=await Promise.all([this.runtime.resolveContext(o,{...r,projectId:this.projectId},"user",i?.owner),this.runtime.resolveContext(o,{...r,projectId:this.projectId},n,i?.owner)]),c=[...new Map([...a,...s].map(l=>[`${l.owner}:${l.id}`,l])).values()];return this.contextDirector.expand(c,e,{...r,projectId:this.projectId,language:this.language})}async recordContextOutcome(e,r,n){if(await this.contextDirector.recordOutcome(e,r,this.projectId,n)===null)throw new Error(`Unknown context application: ${e}`);await this.flushContextApplicationOutbox()}async collectCandidates(e){let r={scope:"project",projectId:this.projectId},[n,i]=await Promise.all([this.runtime.collectContext({...e,projectId:this.projectId},"user"),this.runtime.collectContext({...e,projectId:this.projectId},r)]),o=new Map;for(let a of[...n,...i]){let s=`${a.owner}:${a.id}`;o.has(s)||o.set(s,a)}return[...o.values()]}async recordContextApplications(e){this.persistContextApplications&&await this.flushContextApplicationOutbox()}async flushContextApplicationOutbox(){if(this.applicationStore===void 0)return;let e=(await this.applicationStore.list()).filter(r=>r.scope==="user"||r.projectId===this.projectId);for(let r of e){let n=r.appliedEventDispatchedAt!==void 0;if(r.appliedEventDispatchedAt===void 0)try{await this.runtime.dispatch(t2(r,this.projectId)),await this.applicationStore.markAppliedEventDispatched(r.applicationId),n=!0}catch{}if(n){for(let i of r.outcomeEvents??[])if(i.dispatchedAt===void 0)try{await this.runtime.dispatch(r2(r,i,this.projectId)),await this.applicationStore.markOutcomeEventDispatched(r.applicationId,i.revision)}catch{break}}}}async dispatchExperience(e){await this.runtime.dispatch(e);try{await this.syncMemory()}catch{}}async remember(e){let r=i2(e,this.projectId);return await this.runtime.invoke("comet.personal-memory","remember",{...r,language:r.language??this.language},"user",{throwOnError:!0})}async observe(e){return await this.dispatchExperience(e),this.runtime.invoke("comet.personal-memory","status",{},"user")}async observeMemory(e){let r=e.scope==="project"?"project":"user",n=await this.runtime.invoke("comet.personal-memory","observe",e,{scope:r,...r==="project"?{projectId:this.projectId}:{}},{throwOnError:!0});return n.deferred===!0&&await this.runtime.dispatch(n2(e,this.projectId)),n}async recordMemoryLearningCheck(e,r){return await this.runtime.invoke("comet.personal-memory","learning-check",{check:e,...r===void 0?{}:{context:r}},{scope:"project",projectId:this.projectId},{throwOnError:!0})}async status(){return this.runtime.invoke("comet.personal-memory","status",{},{scope:"project",projectId:this.projectId},{throwOnError:!0})}async retrieve(e){return await this.runtime.invoke("comet.personal-memory","retrieve",cA(e,this.projectId),"user",{throwOnError:!0})}async manage(e={}){return await this.runtime.invoke("comet.personal-memory","manage",cA(e,this.projectId),"user",{throwOnError:!0})}async correct(e,r){return await this.runtime.invoke("comet.personal-memory","correct",{id:e,correction:r,projectKey:this.projectId},"user",{throwOnError:!0})}async forget(e,r=!1){await this.runtime.invoke("comet.personal-memory","remove",{id:e,permanent:r,projectKey:this.projectId},"user",{throwOnError:!0})}async rollback(e){return await this.runtime.invoke("comet.personal-memory","rollback",{id:e,projectKey:this.projectId},"user",{throwOnError:!0})}async syncMemory(){return await this.runtime.replayLearning(),this.runtime.invoke("comet.personal-memory","sync",{},"user",{throwOnError:!0})}async memoryRemote(){return this.runtime.invoke("comet.personal-memory","remote",{},"user",{throwOnError:!0})}async configureMemoryRemote(e){return this.runtime.invoke("comet.personal-memory","configure-remote",{url:e},"user",{throwOnError:!0})}async pauseProjectLearning(e,r=this.projectId){return ep(r,this.projectId,"pause-project-learning"),this.runtime.invoke("comet.personal-memory","pause-project-learning",{projectKey:r,paused:e},"user",{throwOnError:!0})}async pauseProjectRetrieval(e,r=this.projectId){return ep(r,this.projectId,"pause-project-retrieval"),this.runtime.invoke("comet.personal-memory","pause-project-retrieval",{projectKey:r,paused:e},"user",{throwOnError:!0})}async diagnostics(){return this.runtime.diagnostics()}};async function dA(t){let e=pr.resolve(t.homeDirectory??e2.homedir()),r=pr.resolve(t.memoryRoot??pr.join(e,".comet","memory")),n=pr.resolve(t.stateRoot??pr.join(e,".comet","plugins")),i=pr.resolve(t.projectRoot),o=t.bestEffortContext===!0,a=o?Math.max(100,Math.min(t.lockTimeoutMs??750,750)):t.lockTimeoutMs,s=aP(i),c=t.language??await o2(i),l=await a2(i),d=t.memoryProviderConfig??await gy(e),u=a===void 0?{}:{timeoutMs:a},p=new jl(pr.join(n,"storage"),u),f=new ki(new As(await p.open("comet.agent-learning","user"))),m=new ki(new As(await p.open("comet.agent-learning","project",t.projectId))),g=o?new _s:new vu(await p.open("comet.agent-context","user")),h=o&&d.provider==="remote"&&d.remote?{...d,remote:{...d.remote,timeoutMs:Math.min(d.remote.timeoutMs??a??750,a??750)}}:d,w=await s2(i),y=o&&w.provider==="remote"&&w.remote?{...w,remote:{...w.remote,timeout_ms:Math.min(w.remote.timeout_ms,a??750)}}:w,v=new js({applications:g,defaultCharBudget:h.taskContextCharLimit}),b=new Nu({cometVersion:t.cometVersion??QC(),store:new Su(new gn(pr.join(n,"state.json"),u)),storage:p,journals:{user:f,project:m},replayPendingLearningOnContext:!o,...t.scheduleLearning===void 0?{}:{scheduleLearning:t.scheduleLearning},descriptors:[jC({projectId:t.projectId,language:c,projectPolicy:l,...t.runMemoryReview===void 0?{}:{runMemoryReview:t.runMemoryReview},...t.onMemoryReviewNotice===void 0?{}:{onReviewNotice:t.onMemoryReviewNotice},getProviderConfig:()=>gy(e),configureProvider:S=>HC(e,S),listContextApplications:async S=>(await g.list(S)).filter(E=>E.owner==="comet.personal-memory"&&(E.scope==="user"||E.projectId===t.projectId)),createService:()=>{if(h.provider==="remote"){if(h.remote===void 0)throw new Error("Remote Provider endpoint is not configured");return new Ku({...h.remote,profileCharLimit:h.profileCharLimit,taskContextCharLimit:h.taskContextCharLimit,projectKey:t.projectId})}return new Iu({language:c,profileMaxChars:h.profileCharLimit,taskMaxChars:h.taskContextCharLimit,repository:new Eu(r,{git:new xu(r),...a===void 0?{}:{lockTimeoutMs:a},projectKey:t.projectId,projectName:s})})}}),oA({projectRoot:i,knowledgeConfig:y,updateKnowledgeConfig:async S=>{let E=await Re(i);if(E===null)throw new Error("Project config is not available");await gm(i,{...E,knowledge:S})},language:c,listContextApplications:async S=>(await g.list(S)).filter(E=>E.owner==="comet.project-knowledge"&&E.scope==="project"&&E.projectId===t.projectId),...t.knowledgeCacheRoot?{cacheRoot:pr.resolve(t.knowledgeCacheRoot)}:t.stateRoot?{cacheRoot:pr.join(n,"knowledge-cache")}:t.homeDirectory?{cacheRoot:Tg(e)}:{},...t.runProjectKnowledgeReview?{semanticReviewer:t.runProjectKnowledgeReview}:{}})]});o||await b.reconcileFirstParty();let k=new Jy(b,t.projectId,c,v,o?void 0:g,!o);return o||await k.flushContextApplicationOutbox(),k}function t2(t,e){return{schema:Dr,eventId:`context-applied:${t.applicationId}`,episodeId:t.episodeId,occurredAt:t.appliedAt,type:"context.applied",actor:"agent",scope:t.scope,...t.scope==="project"?{projectId:t.projectId??e}:{},source:{kind:"system",name:"context-director"},context:{task:t.task,...t.path===void 0?{}:{paths:[t.path]},...t.operation===void 0?{}:{operation:t.operation},...t.phase===void 0?{}:{phase:t.phase}},evidence:[{id:t.candidateId,kind:"outcome",summary:t.whyApplied,digest:t.candidateDigest}]}}function r2(t,e,r){let n=lA("sha256").update(`${t.applicationId}:${e.revision}:${e.status}`).digest("hex");return{schema:Dr,eventId:`context-outcome:${n}`,episodeId:t.episodeId,occurredAt:e.occurredAt,type:"context.outcome",actor:"agent",scope:t.scope,...t.scope==="project"?{projectId:t.projectId??r}:{},source:{kind:"system",name:"context-director"},context:{task:t.task,...t.path===void 0?{}:{paths:[t.path]},...t.operation===void 0?{}:{operation:t.operation},...t.phase===void 0?{}:{phase:t.phase}},evidence:e.evidence===void 0?[]:[{id:"adoption",kind:"outcome",summary:e.evidence.decision},{id:"adoption-verification",kind:"verification",summary:e.evidence.verification.success?"Host reported verification passed":"Host reported verification failed",...e.evidence.verification}],outcome:{status:e.status,...e.evidence===void 0?{}:{summary:e.evidence.decision},...e.previousStatus===void 0?{}:{previousStatus:e.previousStatus},revision:e.revision,applicationId:t.applicationId,unitIds:[Fo(t.owner,t.candidateId)]}}}function n2(t,e){let r=lA("sha256").update(JSON.stringify({scope:t.scope,projectKey:t.projectKey,workflow:t.workflow,changeId:t.changeId,candidateKey:t.candidateKey??"default",text:t.text})).digest("hex"),n=t.scope==="project"?t.projectKey??e:void 0;return{schema:Dr,eventId:`memory-observation:${r}`,episodeId:`memory-observation:${r}`,occurredAt:t.observedAt??new Date().toISOString(),type:"user.signal",actor:"agent",scope:t.scope==="project"?"project":"user",...n===void 0?{}:{projectId:n},source:{kind:"workflow",name:"memory.observe",workflow:t.workflow,changeId:t.changeId},context:{workflow:t.workflow,changeId:t.changeId,operation:"memory.observe",...t.pathPatterns===void 0?{}:{paths:t.pathPatterns}},signal:{kind:"preference",explicit:!1,longTerm:!0,text:t.text,category:t.category,...t.candidateKey===void 0?{}:{targetId:t.candidateKey},selectors:{...t.pathPatterns===void 0?{}:{paths:t.pathPatterns},...t.taskTypes===void 0?{}:{tasks:t.taskTypes},...t.operations===void 0?{}:{operations:t.operations},...t.phases===void 0?{}:{phases:t.phases}}},evidence:t.evidence===void 0||t.evidence.length===0?[{id:`memory-observation-evidence:${r}`,kind:"source",summary:t.text,success:t.success}]:t.evidence}}function cA(t,e){if(t.projectKey!==void 0&&ep(t.projectKey,e,"memory-query"),t.scope==="global"){let{projectKey:r,...n}=t;return n}return{...t,projectKey:t.projectKey??e}}function i2(t,e){if(t.projectKey!==void 0&&ep(t.projectKey,e,"remember"),t.scope==="project")return{...t,projectKey:e};let{projectKey:r,...n}=t;return n}function ep(t,e,r){if(t!==e)throw new Error(`${r}.projectKey does not match the current project`)}async function o2(t){try{let e=await Re(t);return e?.default_workflow==="classic"?e?.classic?.language??e?.native?.language??"zh-CN":e?.native?.language??e?.classic?.language??"zh-CN"}catch{return"zh-CN"}}async function a2(t){return(await Re(t))?.memory??{...Bn}}async function s2(t){return(await Re(t))?.knowledge??{...Ui}}async function l2(t,e,r={}){let n=[],i=await d2(t,a=>n.push(a),{lockTimeoutMs:r.lockTimeoutMs??750,...r.bestEffortContext===!0?{bestEffortContext:!0}:{}}),o=await i.collectContext(e);try{(await new wi(t).pending()).length>0&&process.stderr.write(`Project knowledge: host Agent review pending. Run comet knowledge review --json, inspect the evidence, and submit supported lessons with --id and --file.
`)}catch{process.stderr.write(`Project knowledge: pending review status is unavailable.
`)}for(let a of n)process.stderr.write(`${a}
`);for(let a of await i.diagnostics())a.pluginId!=="comet.project-knowledge"||a.phase!=="context"||process.stderr.write(`Project knowledge: ${a.message}
`);return o}async function Yy(t,e){let r=l2(t,e,{lockTimeoutMs:750,bestEffortContext:!0});return new Promise((n,i)=>{let o=!1,a=setTimeout(()=>{o||(o=!0,n([]))},1500);r.then(s=>{o||(o=!0,clearTimeout(a),n(s))},s=>{o||(o=!0,clearTimeout(a),i(s))})})}async function d2(t,e,r={}){let n=c2.resolve(t);return dA({projectRoot:n,projectId:oe(n),scheduleLearning:i=>i(),...r.lockTimeoutMs===void 0?{}:{lockTimeoutMs:r.lockTimeoutMs},...r.bestEffortContext===!0?{bestEffortContext:!0}:{},...e===void 0?{}:{onMemoryReviewNotice:e}})}var u2=ye("readCometCurrentSelection",t=>Xn(t)),mA={listNative:rP,getNative:_g,listClassic:ZS,getClassic:eN,inspectNative:iP,inspectClassic:dN,collectContext:Yy};function hA(t){return t?t.workflows??[t.default_workflow]:["classic"]}async function uA(t,e){let r=await jg(t),n=hA(r),i=[tp.join(t,".comet")];if(n.includes("native")&&r?.native&&i.push(tp.join(t,r.native.artifact_root,"comet")),n.includes("classic")){let s=ja(t,r?.classic?.artifact_layout??"legacy");i.push(s.openSpecRoot,s.superpowersRoot)}let o=!1,a=!1;for(let s of e.targets){let c=tp.resolve(t,s);if(tp.relative(t,c).replaceAll("\\","/")===".comet/config.yaml"){o=!0;continue}if(!await mn(t,c,i))return null;a=!0}return!o&&!a?null:{allowed:!0,reason:o&&a?"Write targets are Comet control files or configured Hook allow paths":o?"Comet control artifact write":"Write targets are configured Hook allow paths"}}async function pA(t,e,r,n,i={}){let o=async()=>{if(!e.includes("classic"))return[];if(n?.workflow==="classic")return n.candidates;try{return await r.listClassic(t)}catch(c){if(i.tolerateUnavailableClassic&&c instanceof dn)return[];throw c}},[a,s]=await Promise.all([e.includes("native")?n?.workflow==="native"?n.candidates:r.listNative(t):[],o()]);return[...a,...s]}function fA(t,e){return t.length===0?{status:"none",staleSelection:e}:t.length===1?{status:"inferred",owner:t[0],staleSelection:e}:{status:"ambiguous",candidates:t,staleSelection:e}}async function p2(t,e=mA){let r=await jg(t),n=hA(r),i;try{i=await u2(t)}catch(o){return{status:"stale",code:"selection-unreadable",reason:o instanceof Error?o.message:String(o)}}if(i.status==="selected"){let o=i.selection;if(!n.includes(o.workflow))return{status:"stale",code:"workflow-disabled",reason:`selected workflow '${o.workflow}' is not enabled for this project`};if(o.workflow==="native"&&e.getNative)try{let c=await e.getNative(t,o.change);if(c)return{status:"owned",owner:c}}catch(c){return{status:"stale",code:"change-state-unreadable",reason:`cannot safely read selected Native change: ${c instanceof Error?c.message:String(c)}`}}if(o.workflow==="classic"&&e.getClassic)try{let c=await e.getClassic(t,o.change);if(c){let l=await rs(t);return l.status!=="selected"?{status:"stale",code:"classic-selection-invalid",reason:l.status==="stale"?l.reason:`selected Classic change '${o.change}' is no longer active`}:{status:"owned",owner:c}}}catch(c){return{status:"stale",code:"change-state-unreadable",reason:`cannot safely read selected Classic change: ${c instanceof Error?c.message:String(c)}`}}let a;try{a=o.workflow==="native"?await e.listNative(t):await e.listClassic(t)}catch(c){return{status:"stale",code:"change-state-unreadable",reason:`cannot safely enumerate active Comet changes: ${c instanceof Error?c.message:String(c)}`}}let s=a.find(c=>c.name===o.change);if(!s){let c={code:"target-missing",reason:`selected ${o.workflow} change '${o.change}' is missing or archived`};try{let l=await pA(t,n,e,{workflow:o.workflow,candidates:a});return fA(l,c)}catch(l){return{status:"stale",code:"change-state-unreadable",reason:`cannot safely enumerate active Comet changes: ${l instanceof Error?l.message:String(l)}`}}}if(o.workflow==="classic"){let c=await rs(t);if(c.status!=="selected")return{status:"stale",code:"classic-selection-invalid",reason:c.status==="stale"?c.reason:`selected Classic change '${o.change}' is no longer active`}}return{status:"owned",owner:s}}try{let o=await pA(t,n,e,void 0,{tolerateUnavailableClassic:!0});return fA(o)}catch(o){return{status:"stale",code:"change-state-unreadable",reason:`cannot safely enumerate active Comet changes: ${o instanceof Error?o.message:String(o)}`}}}async function gA(t,e,r=mA){if(e.intent==="context")try{let[i]=await(r.collectContext??Yy)(t,{task:e.task?.trim()||"Current agent task",...e.sessionId===void 0?{}:{sessionId:e.sessionId}});return i?.text?{allowed:!0,reason:"Comet context selected",context:i.text}:{allowed:!0,reason:"No matching Comet context"}}catch(i){let o=(i instanceof Error?i.message:String(i)).replace(/[\r\n]+/gu," ");return{allowed:!0,reason:"Comet context is temporarily unavailable",diagnostic:`Comet context is temporarily unavailable${o?`: ${o}`:""}`.slice(0,512)}}if(e.intent==="non-write")return{allowed:!0,reason:"Hook event is not a write"};if(e.intent==="unknown"||e.targets.length===0)return{allowed:!0,reason:"Hook write target is outside Comet attribution"};let n;try{let i=await(r.scopeTargets??Pl)(t,e.targets);if(i.projectTargets.length===0)return{allowed:!0,reason:"Write targets are outside the guarded project"};n={...e,targets:i.projectTargets}}catch(i){return{allowed:!1,reason:["Comet Hook Router scope could not be determined safely.",`Reason: ${i instanceof Error?i.message:String(i)}`,"Next: verify that the project root is accessible, then retry the write."].join(" ")}}try{let i=await p2(t,r);if(i.status==="none"){let s=await nP(t,n,{allowCanonicalFormal:!0});return s||{allowed:!0,reason:"No active Comet change"}}if(i.status==="stale"){let s=await uA(t,n);return s||{allowed:!1,reason:`${i.reason}. Resume /comet-native or /comet-classic and select the current change before retrying`}}if(i.status==="ambiguous"){let s=await uA(t,n);return s||{allowed:!1,reason:`Multiple active Comet changes require one current selection: ${i.candidates.map(c=>`${c.workflow}:${c.name}`).join(", ")}`}}let o=i.owner,a=await(o.workflow==="native"?r.inspectNative(t,n,o.name):r.inspectClassic(t,o.name,n));return a.allowed,a}catch(i){return{allowed:!1,reason:`Comet Hook Router failed closed: ${i instanceof Error?i.message:String(i)}`}}}import{promises as f2}from"fs";import Nt from"path";function m2(t,e){let r=Nt.resolve(t),n=Nt.resolve(e);return process.platform==="win32"?r.toLowerCase()===n.toLowerCase():r===n}function h2(t,e){let r=Nt.relative(t,e);return r===""||r!==".."&&!r.startsWith(`..${Nt.sep}`)&&!Nt.isAbsolute(r)}function yA(t,e){return[...e].sort((r,n)=>n.length-r.length).find(r=>h2(r,t))??null}async function g2(t){for(let e of[".git",Nt.join(".comet","config.yaml")])try{await f2.lstat(Nt.join(t,e))}catch(r){throw r.code!=="ENOENT"?r:new Error(`linked worktree ${t} is not initialized for Comet: missing ${e.replaceAll("\\","/")}`,{cause:r})}}async function vA(t,e){let r=Nt.resolve(t),n=ti(r);if(n.length<2||e.targets.length===0)return r;let o=(e.cwd?yA(Nt.resolve(e.cwd),n):null)??r,a=new Map;for(let c of e.targets){let l=Nt.isAbsolute(c)?Nt.resolve(c):Nt.resolve(o,c),d=yA(l,n);if(!d)continue;let u=process.platform==="win32"?d.toLowerCase():d;a.set(u,d)}if(a.size===0)return r;if(a.size>1)throw new Error("one Hook request cannot write across multiple Git worktrees");let[s]=a.values();return m2(s,r)||await g2(s),s}qe();var b2="Usage: comet-hook-router --platform <platform-id> [--project-root <project-root>]";function k2(t){let e,r;for(let n=0;n<t.length;n++){let i=t[n];if(i==="--platform"){e=t[++n];continue}if(i==="--project-root"){r=t[++n];continue}throw new Error(`Unknown argument: ${i}`)}if(!e||e.startsWith("--"))throw new Error("--platform is required");if(!Xf.has(e))throw new Error(`unsupported Hook platform: ${e}`);if(r?.startsWith("--"))throw new Error("--project-root requires a value");return{platformId:e,...r?{projectRoot:y2.resolve(r)}:{}}}async function S2(t,e){if(t.projectRoot){let n=e?await vA(t.projectRoot,e):t.projectRoot;return bA(n)}if(!e?.cwd)return null;let r=e.cwd;return bA(r)}async function bA(t){let e=await Pa(t);return await Re(e)===null?null:e}async function N2(t){let e;try{e=k2(t)}catch(i){return process.stderr.write(`${i instanceof Error?i.message:String(i)}
${b2}
`),64}let r;try{let i=await Zf(),o=await S2(e,i);r=o?await ik(()=>gA(o,i)):{allowed:!0,reason:"No Comet project discovered"}}catch(i){r={allowed:!1,reason:`Comet Hook Router failed closed during project discovery: ${i instanceof Error?i.message:String(i)}`}}let n=rk(e.platformId,r);return n.stdout&&process.stdout.write(n.stdout),n.stderr&&process.stderr.write(n.stderr),n.exitCode}async function E2(t=process.argv.slice(2)){return N2(t)}function x2(t,e=import.meta.url){if(!t)return!1;try{return wA(t)===wA(v2(e))}catch{return e===w2(t).href}}var P2=process.argv[1];x2(P2)&&E2().then(t=>{process.exitCode=t});export{x2 as isDirectEntry,E2 as main,S2 as projectRootFrom,N2 as runCometHookRouter};