Files
farm_service/.agents/skills/comet/scripts/comet-hook-router.mjs
T

437 lines
793 KiB
JavaScript
Raw Normal View History

2026-10-26 11:35:04 +08:00
#!/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.i
`)}};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(
`)?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},cr
`:" ")}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")},P
`)?(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
`),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.
`:`
`)+(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(!
`,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"}
`)+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
`)+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.visitAsyn
`)){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),toArtifa
# 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}}
`)!==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=a
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:
`,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{stat
`,"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 inva
`),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 Er
${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})=>
`)}}}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
`),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.readFi
`)}}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_m
`}}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)
`))}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.isSafeIntege
${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)thro
]`).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",/"(?:\\"?|[^"\\])*"|'(?:\\'
`),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[
`),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)
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}}func
`);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(`Can
`)}}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
${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==
`)}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 t
`)}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 Erro
${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
${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
${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
`).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 归档状态 ${
`);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, titl
`).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
${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 IMM
`))}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:n
${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
`),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:"
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.runtim
`)}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 enum
${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};