diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ecbb76a2..4f8de52d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ All notable changes to @rpamis/comet will be documented in this file. -## What's Changed [0.4.0-beta.19] - 2026-08-15 +## What's Changed [0.4.0-beta.19] - 2026-08-20 ### Added @@ -13,9 +13,11 @@ All notable changes to @rpamis/comet will be documented in this file. - **Dashboard artifact previews**: Fullscreen previews now close with Escape, keep long tables horizontally scrollable, preserve readable table headers, and use a larger directory navigation scale. - **Hook allow-path documentation**: The website now explains how to configure project-relative `hook.allow_paths` directories for guarded workflow phases. - **On-demand change review**: The new `/comet-review` Skill reviews the current Native or Classic change against its implementation diff and existing evidence, reports prioritized correctness, security, edge-case, and coverage findings, and remains read-only without advancing or replacing Verify. +- **Classic handoff refresh documentation**: `comet-design` now states that the handoff must be regenerated after a delta spec is added, modified, or removed, and `comet-build` documents that the handoff can be refreshed directly from the Build phase (`comet handoff design --write`) without reverting the phase or Runtime step. ### Fixed +- **Classic design handoff refresh after Spec Patch**: Running `comet handoff design --write` after OpenSpec artifacts changed no longer fails with a stale-handoff error, so the design guard can pass and the Classic full workflow proceeds from Design to Build. Refreshing now rewrites stale context files even when a manually aligned hash would otherwise short-circuit success, regenerates the context pack when OpenSpec delta specs are added, changed, or removed, and remains available after the guard has advanced the phase to build. - **Classic Ambient Resume**: `comet init` and `comet update` now keep the managed Ambient Resume instructions for Classic-only projects when `ambient_resume` is enabled, so re-running the commands no longer removes the block from `AGENTS.md` or `CLAUDE.md`. - **Fork pull request greetings**: First-time contributors now receive the repository guidance comment when opening a pull request from a fork, without weakening the read-only permissions of workflows that execute contributor code. - **Pull request template checks**: Pull requests now receive an actionable comment and a failing check when items from the repository template are missing or its checklist is incomplete. diff --git a/assets/skills-zh/comet-build/SKILL.md b/assets/skills-zh/comet-build/SKILL.md index dbf6c378f..03099b581 100644 --- a/assets/skills-zh/comet-build/SKILL.md +++ b/assets/skills-zh/comet-build/SKILL.md @@ -240,6 +240,14 @@ Open 阶段已经根据 `isolation` 准备好当前目录、分支或 Worktree - 不提前同步到 main spec,归档时统一同步 - 小规模增量直接改 delta spec 时,应在 commit message 中注明,便于归档时判断 design doc 漂移 +**handoff 同步**:delta spec 的增、改、删都会使设计交接包(`handoff_hash`)过期。Build 阶段可随时直接重新生成,无需回退当前 phase 或 step: + +```bash +comet handoff design --write +``` + +重新生成只更新 handoff 上下文与 hash,不会改变 `phase` 字段或 Runtime `currentStep`;设计守卫与构建守卫都会校验最新交接包,刷新后可按 build 阶段继续推进。 + ### 5. 上下文管理 Build 是最长阶段,可能跨越大量任务。为支持上下文压缩后断点恢复: diff --git a/assets/skills-zh/comet-design/SKILL.md b/assets/skills-zh/comet-design/SKILL.md index ac5751b75..89e0010c0 100644 --- a/assets/skills-zh/comet-design/SKILL.md +++ b/assets/skills-zh/comet-design/SKILL.md @@ -207,7 +207,7 @@ canonical_spec: openspec ### 3. 更新 Comet 状态 -先记录 design_doc 路径。如果 Spec Patch 回写了 delta spec(新增或修改了 `specs/*/spec.md`),必须重新生成 handoff 以更新 hash: +先记录 design_doc 路径。如果 Spec Patch 回写了 delta spec(新增、修改或删除了 `specs/*/spec.md`),必须重新生成 handoff 以更新 hash: ```bash # 记录 design_doc 路径 @@ -220,7 +220,7 @@ comet handoff design --write comet guard design --apply ``` -如果没有 delta spec 变更,跳过 handoff 重新生成步骤。状态文件自动更新,无需手动编辑其他字段。 +delta spec 的增、改、删都会改变 handoff hash,因此删除 delta spec 同样必须重新生成 handoff;否则旧交接包会残留已删除的 spec,design guard 的可追踪性检查也无法通过。如果没有 delta spec 变更,跳过 handoff 重新生成步骤。状态文件自动更新,无需手动编辑其他字段。 ### 3a. 可选主动式上下文压缩 diff --git a/assets/skills/comet-build/SKILL.md b/assets/skills/comet-build/SKILL.md index a08ce6e5f..46f34a698 100644 --- a/assets/skills/comet-build/SKILL.md +++ b/assets/skills/comet-build/SKILL.md @@ -240,6 +240,14 @@ When creating an independent change, must invoke `/comet-open`, not `/opsx:new` - Do not sync to main spec in advance, sync uniformly during archiving - For small-scale incremental direct delta spec edits, note in commit message to facilitate design doc drift assessment during archiving +**Handoff synchronization**: adding, modifying, or removing a delta spec expires the design handoff pack (`handoff_hash`). During Build you can regenerate it directly without reverting the current phase or step: + +```bash +comet handoff design --write +``` + +Regeneration only updates the handoff context and hash; it does not change the `phase` field or the Runtime `currentStep`. The design and build guards validate the latest handoff pack, so you can continue in the Build phase after refreshing. + ### 5. Context Management Build is the longest phase and may span many tasks. To support resume after context compaction: diff --git a/assets/skills/comet-design/SKILL.md b/assets/skills/comet-design/SKILL.md index 03559753c..288f550ab 100644 --- a/assets/skills/comet-design/SKILL.md +++ b/assets/skills/comet-design/SKILL.md @@ -206,7 +206,7 @@ If Spec Patches need to be written back, also edit the corresponding `specs/*/sp ### 3. Update Comet State -First record the design_doc path. If Spec Patches wrote back delta spec (added or modified `specs/*/spec.md`), must regenerate handoff to update hash: +First record the design_doc path. If Spec Patches wrote back delta spec (added, modified, or removed `specs/*/spec.md`), must regenerate handoff to update hash: ```bash # Record design_doc path @@ -219,7 +219,7 @@ comet handoff design --write comet guard design --apply ``` -If there are no delta spec changes, skip the handoff regeneration step. The state file updates automatically; no manual editing of other fields needed. +Adding, modifying, or removing a delta spec changes the handoff hash, so deleting a delta spec also requires regenerating the handoff; otherwise the stale handoff pack still embeds the removed spec and the design guard's traceability check cannot pass. If there are no delta spec changes, skip the handoff regeneration step. The state file updates automatically; no manual editing of other fields needed. ### 3a. Optional Active Context Compaction diff --git a/assets/skills/comet/scripts/comet-handoff.mjs b/assets/skills/comet/scripts/comet-handoff.mjs index 09e526d24..3673468f4 100644 --- a/assets/skills/comet/scripts/comet-handoff.mjs +++ b/assets/skills/comet/scripts/comet-handoff.mjs @@ -1,166 +1,166 @@ #!/usr/bin/env node import { createRequire as __cometCreateRequire } from 'module'; const require = __cometCreateRequire(import.meta.url); -var Bu=Object.create;var nr=Object.defineProperty;var Ku=Object.getOwnPropertyDescriptor;var Uu=Object.getOwnPropertyNames;var Yu=Object.getPrototypeOf,Hu=Object.prototype.hasOwnProperty;var bn=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,n)=>(typeof require<"u"?require:e)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var q=(t,e,n)=>()=>{if(n)throw n[0];try{return t&&(e=t(t=0)),e}catch(i){throw n=[i],i}};var v=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(n){throw e=0,n}},Ju=(t,e)=>{for(var n in e)nr(t,n,{get:e[n],enumerable:!0})},Vu=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Uu(e))!Hu.call(t,r)&&r!==n&&nr(t,r,{get:()=>e[r],enumerable:!(i=Ku(e,r))||i.enumerable});return t};var xt=(t,e,n)=>(n=t!=null?Bu(Yu(t)):{},Vu(e||!t||!t.__esModule?nr(n,"default",{value:t,enumerable:!0}):n,t));var x=v(D=>{"use strict";var ir=Symbol.for("yaml.alias"),bs=Symbol.for("yaml.document"),Sn=Symbol.for("yaml.map"),Ss=Symbol.for("yaml.pair"),rr=Symbol.for("yaml.scalar"),Cn=Symbol.for("yaml.seq"),fe=Symbol.for("yaml.node.type"),Gu=t=>!!t&&typeof t=="object"&&t[fe]===ir,zu=t=>!!t&&typeof t=="object"&&t[fe]===bs,Qu=t=>!!t&&typeof t=="object"&&t[fe]===Sn,Xu=t=>!!t&&typeof t=="object"&&t[fe]===Ss,Cs=t=>!!t&&typeof t=="object"&&t[fe]===rr,Zu=t=>!!t&&typeof t=="object"&&t[fe]===Cn;function Es(t){if(t&&typeof t=="object")switch(t[fe]){case Sn:case Cn:return!0}return!1}function ef(t){if(t&&typeof t=="object")switch(t[fe]){case ir:case Sn:case rr:case Cn:return!0}return!1}var tf=t=>(Cs(t)||Es(t))&&!!t.anchor;D.ALIAS=ir;D.DOC=bs;D.MAP=Sn;D.NODE_TYPE=fe;D.PAIR=Ss;D.SCALAR=rr;D.SEQ=Cn;D.hasAnchor=tf;D.isAlias=Gu;D.isCollection=Es;D.isDocument=zu;D.isMap=Qu;D.isNode=ef;D.isPair=Xu;D.isScalar=Cs;D.isSeq=Zu});var Pt=v(or=>{"use strict";var $=x(),H=Symbol("break visit"),_s=Symbol("skip children"),ae=Symbol("remove node");function En(t,e){let n=xs(e);$.isDocument(t)?it(null,t.contents,n,Object.freeze([t]))===ae&&(t.contents=null):it(null,t,n,Object.freeze([]))}En.BREAK=H;En.SKIP=_s;En.REMOVE=ae;function it(t,e,n,i){let r=Ps(t,e,n,i);if($.isNode(r)||$.isPair(r))return Rs(t,i,r),it(t,r,n,i);if(typeof r!="symbol"){if($.isCollection(e)){i=Object.freeze(i.concat(e));for(let o=0;o{"use strict";var Ns=x(),nf=Pt(),rf={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},of=t=>t.replace(/[!,[\]{}]/g,e=>rf[e]),Rt=class t{constructor(e,n){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},t.defaultYaml,e),this.tags=Object.assign({},t.defaultTags,n)}clone(){let e=new t(this.yaml,this.tags);return e.docStart=this.docStart,e}atDocument(){let e=new t(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:t.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},t.defaultTags);break}return e}add(e,n){this.atNextDocument&&(this.yaml={explicit:t.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},t.defaultTags),this.atNextDocument=!1);let i=e.trim().split(/[ \t]+/),r=i.shift();switch(r){case"%TAG":{if(i.length!==2&&(n(0,"%TAG directive should contain exactly two parts"),i.length<2))return!1;let[o,s]=i;return this.tags[o]=s,!0}case"%YAML":{if(this.yaml.explicit=!0,i.length!==1)return n(0,"%YAML directive should contain exactly one part"),!1;let[o]=i;if(o==="1.1"||o==="1.2")return this.yaml.version=o,!0;{let s=/^\d+\.\d+$/.test(o);return n(6,`Unsupported YAML version ${o}`,s),!1}}default:return n(0,`Unknown directive ${r}`,!0),!1}}tagName(e,n){if(e==="!")return"!";if(e[0]!=="!")return n(`Not a valid tag: ${e}`),null;if(e[1]==="<"){let s=e.slice(2,-1);return s==="!"||s==="!!"?(n(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(e[e.length-1]!==">"&&n("Verbatim tags must end with a >"),s)}let[,i,r]=e.match(/^(.*!)([^!]*)$/s);r||n(`The ${e} tag has no suffix`);let o=this.tags[i];if(o)try{return o+decodeURIComponent(r)}catch(s){return n(String(s)),null}return i==="!"?e:(n(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[n,i]of Object.entries(this.tags))if(e.startsWith(i))return n+of(e.substring(i.length));return e[0]==="!"?e:`!<${e}>`}toString(e){let n=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],i=Object.entries(this.tags),r;if(e&&i.length>0&&Ns.isNode(e.contents)){let o={};nf.visit(e.contents,(s,a)=>{Ns.isNode(a)&&a.tag&&(o[a.tag]=!0)}),r=Object.keys(o)}else r=[];for(let[o,s]of i)o==="!!"&&s==="tag:yaml.org,2002:"||(!e||r.some(a=>a.startsWith(s)))&&n.push(`%TAG ${o} ${s}`);return n.join(` -`)}};Rt.defaultYaml={explicit:!1,version:"1.2"};Rt.defaultTags={"!!":"tag:yaml.org,2002:"};Os.Directives=Rt});var xn=v(Nt=>{"use strict";var As=x(),sf=Pt();function af(t){if(/[\x00-\x19\s,[\]{}]/.test(t)){let n=`Anchor must not contain whitespace or control characters: ${JSON.stringify(t)}`;throw new Error(n)}return!0}function js(t){let e=new Set;return sf.visit(t,{Value(n,i){i.anchor&&e.add(i.anchor)}}),e}function Ts(t,e){for(let n=1;;++n){let i=`${t}${n}`;if(!e.has(i))return i}}function cf(t,e){let n=[],i=new Map,r=null;return{onAnchor:o=>{n.push(o),r??(r=js(t));let s=Ts(e,r);return r.add(s),s},setAnchors:()=>{for(let o of n){let s=i.get(o);if(typeof s=="object"&&s.anchor&&(As.isScalar(s.node)||As.isCollection(s.node)))s.node.anchor=s.anchor;else{let a=new Error("Failed to resolve repeated object (this should not happen)");throw a.source=o,a}}},sourceObjects:i}}Nt.anchorIsValid=af;Nt.anchorNames=js;Nt.createNodeAnchors=cf;Nt.findNewAnchor=Ts});var ar=v(Is=>{"use strict";function Ot(t,e,n,i){if(i&&typeof i=="object")if(Array.isArray(i))for(let r=0,o=i.length;r{"use strict";var lf=x();function qs(t,e,n){if(Array.isArray(t))return t.map((i,r)=>qs(i,String(r),n));if(t&&typeof t.toJSON=="function"){if(!n||!lf.hasAnchor(t))return t.toJSON(e,n);let i={aliasCount:0,count:1,res:void 0};n.anchors.set(t,i),n.onCreate=o=>{i.res=o,delete n.onCreate};let r=t.toJSON(e,n);return n.onCreate&&n.onCreate(r),r}return typeof t=="bigint"&&!n?.keep?Number(t):t}$s.toJS=qs});var Pn=v(Ds=>{"use strict";var uf=ar(),Ls=x(),ff=be(),cr=class{constructor(e){Object.defineProperty(this,Ls.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:n,maxAliasCount:i,onAnchor:r,reviver:o}={}){if(!Ls.isDocument(e))throw new TypeError("A document argument is required");let s={anchors:new Map,doc:e,keep:!0,mapAsMap:n===!0,mapKeyWarned:!1,maxAliasCount:typeof i=="number"?i:100},a=ff.toJS(this,"",s);if(typeof r=="function")for(let{count:c,res:l}of s.anchors.values())r(l,c);return typeof o=="function"?uf.applyReviver(o,{"":a},"",a):a}};Ds.NodeBase=cr});var At=v(Fs=>{"use strict";var df=xn(),pf=Pt(),ot=x(),mf=Pn(),hf=be(),lr=class extends mf.NodeBase{constructor(e){super(ot.ALIAS),this.source=e,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(e,n){if(n?.maxAliasCount===0)throw new ReferenceError("Alias resolution is disabled");let i;n?.aliasResolveCache?i=n.aliasResolveCache:(i=[],pf.visit(e,{Node:(o,s)=>{(ot.isAlias(s)||ot.hasAnchor(s))&&i.push(s)}}),n&&(n.aliasResolveCache=i));let r;for(let o of i){if(o===this)break;o.anchor===this.source&&(r=o)}return r}toJSON(e,n){if(!n)return{source:this.source};let{anchors:i,doc:r,maxAliasCount:o}=n,s=this.resolve(r,n);if(!s){let c=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(c)}let a=i.get(s);if(a||(hf.toJS(s,null,n),a=i.get(s)),a?.res===void 0){let c="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(c)}if(o>=0&&(a.count+=1,a.aliasCount===0&&(a.aliasCount=Rn(r,s,i)),a.count*a.aliasCount>o)){let c="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(c)}return a.res}toString(e,n,i){let r=`*${this.source}`;if(e){if(df.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`${r} `}return r}};function Rn(t,e,n){if(ot.isAlias(e)){let i=e.resolve(t),r=n&&i&&n.get(i);return r?r.count*r.aliasCount:0}else if(ot.isCollection(e)){let i=0;for(let r of e.items){let o=Rn(t,r,n);o>i&&(i=o)}return i}else if(ot.isPair(e)){let i=Rn(t,e.key,n),r=Rn(t,e.value,n);return Math.max(i,r)}return 1}Fs.Alias=lr});var j=v(ur=>{"use strict";var gf=x(),wf=Pn(),yf=be(),vf=t=>!t||typeof t!="function"&&typeof t!="object",Se=class extends wf.NodeBase{constructor(e){super(gf.SCALAR),this.value=e}toJSON(e,n){return n?.keep?this.value:yf.toJS(this.value,e,n)}toString(){return String(this.value)}};Se.BLOCK_FOLDED="BLOCK_FOLDED";Se.BLOCK_LITERAL="BLOCK_LITERAL";Se.PLAIN="PLAIN";Se.QUOTE_DOUBLE="QUOTE_DOUBLE";Se.QUOTE_SINGLE="QUOTE_SINGLE";ur.Scalar=Se;ur.isScalarValue=vf});var jt=v(Ms=>{"use strict";var kf=At(),He=x(),Ws=j(),bf="tag:yaml.org,2002:";function Sf(t,e,n){if(e){let i=n.filter(o=>o.tag===e),r=i.find(o=>!o.format)??i[0];if(!r)throw new Error(`Tag ${e} not found`);return r}return n.find(i=>i.identify?.(t)&&!i.format)}function Cf(t,e,n){if(He.isDocument(t)&&(t=t.contents),He.isNode(t))return t;if(He.isPair(t)){let f=n.schema[He.MAP].createNode?.(n.schema,null,n);return f.items.push(t),f}(t instanceof String||t instanceof Number||t instanceof Boolean||typeof BigInt<"u"&&t instanceof BigInt)&&(t=t.valueOf());let{aliasDuplicateObjects:i,onAnchor:r,onTagObj:o,schema:s,sourceObjects:a}=n,c;if(i&&t&&typeof t=="object"){if(c=a.get(t),c)return c.anchor??(c.anchor=r(t)),new kf.Alias(c.anchor);c={anchor:null,node:null},a.set(t,c)}e?.startsWith("!!")&&(e=bf+e.slice(2));let l=Sf(t,e,s.tags);if(!l){if(t&&typeof t.toJSON=="function"&&(t=t.toJSON()),!t||typeof t!="object"){let f=new Ws.Scalar(t);return c&&(c.node=f),f}l=t instanceof Map?s[He.MAP]:Symbol.iterator in Object(t)?s[He.SEQ]:s[He.MAP]}o&&(o(l),delete n.onTagObj);let u=l?.createNode?l.createNode(n.schema,t,n):typeof l?.nodeClass?.from=="function"?l.nodeClass.from(n.schema,t,n):new Ws.Scalar(t);return e?u.tag=e:l.default||(u.tag=l.tag),c&&(c.node=u),u}Ms.createNode=Cf});var On=v(Nn=>{"use strict";var Ef=jt(),ce=x(),_f=Pn();function fr(t,e,n){let i=n;for(let r=e.length-1;r>=0;--r){let o=e[r];if(typeof o=="number"&&Number.isInteger(o)&&o>=0){let s=[];s[o]=i,i=s}else i=new Map([[o,i]])}return Ef.createNode(i,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:t,sourceObjects:new Map})}var Bs=t=>t==null||typeof t=="object"&&!!t[Symbol.iterator]().next().done,dr=class extends _f.NodeBase{constructor(e,n){super(e),Object.defineProperty(this,"schema",{value:n,configurable:!0,enumerable:!1,writable:!0})}clone(e){let n=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(n.schema=e),n.items=n.items.map(i=>ce.isNode(i)||ce.isPair(i)?i.clone(e):i),this.range&&(n.range=this.range.slice()),n}addIn(e,n){if(Bs(e))this.add(n);else{let[i,...r]=e,o=this.get(i,!0);if(ce.isCollection(o))o.addIn(r,n);else if(o===void 0&&this.schema)this.set(i,fr(this.schema,r,n));else throw new Error(`Expected YAML collection at ${i}. Remaining path: ${r}`)}}deleteIn(e){let[n,...i]=e;if(i.length===0)return this.delete(n);let r=this.get(n,!0);if(ce.isCollection(r))return r.deleteIn(i);throw new Error(`Expected YAML collection at ${n}. Remaining path: ${i}`)}getIn(e,n){let[i,...r]=e,o=this.get(i,!0);return r.length===0?!n&&ce.isScalar(o)?o.value:o:ce.isCollection(o)?o.getIn(r,n):void 0}hasAllNullValues(e){return this.items.every(n=>{if(!ce.isPair(n))return!1;let i=n.value;return i==null||e&&ce.isScalar(i)&&i.value==null&&!i.commentBefore&&!i.comment&&!i.tag})}hasIn(e){let[n,...i]=e;if(i.length===0)return this.has(n);let r=this.get(n,!0);return ce.isCollection(r)?r.hasIn(i):!1}setIn(e,n){let[i,...r]=e;if(r.length===0)this.set(i,n);else{let o=this.get(i,!0);if(ce.isCollection(o))o.setIn(r,n);else if(o===void 0&&this.schema)this.set(i,fr(this.schema,r,n));else throw new Error(`Expected YAML collection at ${i}. Remaining path: ${r}`)}}};Nn.Collection=dr;Nn.collectionFromPath=fr;Nn.isEmptyPath=Bs});var Tt=v(An=>{"use strict";var xf=t=>t.replace(/^(?!$)(?: $)?/gm,"#");function pr(t,e){return/^\n+$/.test(t)?t.substring(1):e?t.replace(/^(?! *$)/gm,e):t}var Pf=(t,e,n)=>t.endsWith(` +var Uu=Object.create;var nr=Object.defineProperty;var Yu=Object.getOwnPropertyDescriptor;var Hu=Object.getOwnPropertyNames;var Ju=Object.getPrototypeOf,Vu=Object.prototype.hasOwnProperty;var bn=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,n)=>(typeof require<"u"?require:e)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var q=(t,e,n)=>()=>{if(n)throw n[0];try{return t&&(e=t(t=0)),e}catch(i){throw n=[i],i}};var k=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(n){throw e=0,n}},Gu=(t,e)=>{for(var n in e)nr(t,n,{get:e[n],enumerable:!0})},zu=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Hu(e))!Vu.call(t,r)&&r!==n&&nr(t,r,{get:()=>e[r],enumerable:!(i=Yu(e,r))||i.enumerable});return t};var Pt=(t,e,n)=>(n=t!=null?Uu(Ju(t)):{},zu(e||!t||!t.__esModule?nr(n,"default",{value:t,enumerable:!0}):n,t));var _=k(D=>{"use strict";var ir=Symbol.for("yaml.alias"),Ss=Symbol.for("yaml.document"),Sn=Symbol.for("yaml.map"),Cs=Symbol.for("yaml.pair"),rr=Symbol.for("yaml.scalar"),Cn=Symbol.for("yaml.seq"),de=Symbol.for("yaml.node.type"),Qu=t=>!!t&&typeof t=="object"&&t[de]===ir,Xu=t=>!!t&&typeof t=="object"&&t[de]===Ss,Zu=t=>!!t&&typeof t=="object"&&t[de]===Sn,ef=t=>!!t&&typeof t=="object"&&t[de]===Cs,Es=t=>!!t&&typeof t=="object"&&t[de]===rr,tf=t=>!!t&&typeof t=="object"&&t[de]===Cn;function _s(t){if(t&&typeof t=="object")switch(t[de]){case Sn:case Cn:return!0}return!1}function nf(t){if(t&&typeof t=="object")switch(t[de]){case ir:case Sn:case rr:case Cn:return!0}return!1}var rf=t=>(Es(t)||_s(t))&&!!t.anchor;D.ALIAS=ir;D.DOC=Ss;D.MAP=Sn;D.NODE_TYPE=de;D.PAIR=Cs;D.SCALAR=rr;D.SEQ=Cn;D.hasAnchor=rf;D.isAlias=Qu;D.isCollection=_s;D.isDocument=Xu;D.isMap=Zu;D.isNode=nf;D.isPair=ef;D.isScalar=Es;D.isSeq=tf});var Rt=k(or=>{"use strict";var $=_(),Y=Symbol("break visit"),xs=Symbol("skip children"),se=Symbol("remove node");function En(t,e){let n=Ps(e);$.isDocument(t)?it(null,t.contents,n,Object.freeze([t]))===se&&(t.contents=null):it(null,t,n,Object.freeze([]))}En.BREAK=Y;En.SKIP=xs;En.REMOVE=se;function it(t,e,n,i){let r=Rs(t,e,n,i);if($.isNode(r)||$.isPair(r))return Ns(t,i,r),it(t,r,n,i);if(typeof r!="symbol"){if($.isCollection(e)){i=Object.freeze(i.concat(e));for(let o=0;o{"use strict";var Os=_(),of=Rt(),sf={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},af=t=>t.replace(/[!,[\]{}]/g,e=>sf[e]),Nt=class t{constructor(e,n){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},t.defaultYaml,e),this.tags=Object.assign({},t.defaultTags,n)}clone(){let e=new t(this.yaml,this.tags);return e.docStart=this.docStart,e}atDocument(){let e=new t(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:t.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},t.defaultTags);break}return e}add(e,n){this.atNextDocument&&(this.yaml={explicit:t.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},t.defaultTags),this.atNextDocument=!1);let i=e.trim().split(/[ \t]+/),r=i.shift();switch(r){case"%TAG":{if(i.length!==2&&(n(0,"%TAG directive should contain exactly two parts"),i.length<2))return!1;let[o,s]=i;return this.tags[o]=s,!0}case"%YAML":{if(this.yaml.explicit=!0,i.length!==1)return n(0,"%YAML directive should contain exactly one part"),!1;let[o]=i;if(o==="1.1"||o==="1.2")return this.yaml.version=o,!0;{let s=/^\d+\.\d+$/.test(o);return n(6,`Unsupported YAML version ${o}`,s),!1}}default:return n(0,`Unknown directive ${r}`,!0),!1}}tagName(e,n){if(e==="!")return"!";if(e[0]!=="!")return n(`Not a valid tag: ${e}`),null;if(e[1]==="<"){let s=e.slice(2,-1);return s==="!"||s==="!!"?(n(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(e[e.length-1]!==">"&&n("Verbatim tags must end with a >"),s)}let[,i,r]=e.match(/^(.*!)([^!]*)$/s);r||n(`The ${e} tag has no suffix`);let o=this.tags[i];if(o)try{return o+decodeURIComponent(r)}catch(s){return n(String(s)),null}return i==="!"?e:(n(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[n,i]of Object.entries(this.tags))if(e.startsWith(i))return n+af(e.substring(i.length));return e[0]==="!"?e:`!<${e}>`}toString(e){let n=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],i=Object.entries(this.tags),r;if(e&&i.length>0&&Os.isNode(e.contents)){let o={};of.visit(e.contents,(s,a)=>{Os.isNode(a)&&a.tag&&(o[a.tag]=!0)}),r=Object.keys(o)}else r=[];for(let[o,s]of i)o==="!!"&&s==="tag:yaml.org,2002:"||(!e||r.some(a=>a.startsWith(s)))&&n.push(`%TAG ${o} ${s}`);return n.join(` +`)}};Nt.defaultYaml={explicit:!1,version:"1.2"};Nt.defaultTags={"!!":"tag:yaml.org,2002:"};As.Directives=Nt});var xn=k(Ot=>{"use strict";var js=_(),cf=Rt();function lf(t){if(/[\x00-\x19\s,[\]{}]/.test(t)){let n=`Anchor must not contain whitespace or control characters: ${JSON.stringify(t)}`;throw new Error(n)}return!0}function Ts(t){let e=new Set;return cf.visit(t,{Value(n,i){i.anchor&&e.add(i.anchor)}}),e}function Is(t,e){for(let n=1;;++n){let i=`${t}${n}`;if(!e.has(i))return i}}function uf(t,e){let n=[],i=new Map,r=null;return{onAnchor:o=>{n.push(o),r??(r=Ts(t));let s=Is(e,r);return r.add(s),s},setAnchors:()=>{for(let o of n){let s=i.get(o);if(typeof s=="object"&&s.anchor&&(js.isScalar(s.node)||js.isCollection(s.node)))s.node.anchor=s.anchor;else{let a=new Error("Failed to resolve repeated object (this should not happen)");throw a.source=o,a}}},sourceObjects:i}}Ot.anchorIsValid=lf;Ot.anchorNames=Ts;Ot.createNodeAnchors=uf;Ot.findNewAnchor=Is});var ar=k(qs=>{"use strict";function At(t,e,n,i){if(i&&typeof i=="object")if(Array.isArray(i))for(let r=0,o=i.length;r{"use strict";var ff=_();function $s(t,e,n){if(Array.isArray(t))return t.map((i,r)=>$s(i,String(r),n));if(t&&typeof t.toJSON=="function"){if(!n||!ff.hasAnchor(t))return t.toJSON(e,n);let i={aliasCount:0,count:1,res:void 0};n.anchors.set(t,i),n.onCreate=o=>{i.res=o,delete n.onCreate};let r=t.toJSON(e,n);return n.onCreate&&n.onCreate(r),r}return typeof t=="bigint"&&!n?.keep?Number(t):t}Ls.toJS=$s});var Pn=k(Fs=>{"use strict";var df=ar(),Ds=_(),pf=Se(),cr=class{constructor(e){Object.defineProperty(this,Ds.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:n,maxAliasCount:i,onAnchor:r,reviver:o}={}){if(!Ds.isDocument(e))throw new TypeError("A document argument is required");let s={anchors:new Map,doc:e,keep:!0,mapAsMap:n===!0,mapKeyWarned:!1,maxAliasCount:typeof i=="number"?i:100},a=pf.toJS(this,"",s);if(typeof r=="function")for(let{count:c,res:l}of s.anchors.values())r(l,c);return typeof o=="function"?df.applyReviver(o,{"":a},"",a):a}};Fs.NodeBase=cr});var jt=k(Ws=>{"use strict";var mf=xn(),hf=Rt(),ot=_(),gf=Pn(),wf=Se(),lr=class extends gf.NodeBase{constructor(e){super(ot.ALIAS),this.source=e,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(e,n){if(n?.maxAliasCount===0)throw new ReferenceError("Alias resolution is disabled");let i;n?.aliasResolveCache?i=n.aliasResolveCache:(i=[],hf.visit(e,{Node:(o,s)=>{(ot.isAlias(s)||ot.hasAnchor(s))&&i.push(s)}}),n&&(n.aliasResolveCache=i));let r;for(let o of i){if(o===this)break;o.anchor===this.source&&(r=o)}return r}toJSON(e,n){if(!n)return{source:this.source};let{anchors:i,doc:r,maxAliasCount:o}=n,s=this.resolve(r,n);if(!s){let c=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(c)}let a=i.get(s);if(a||(wf.toJS(s,null,n),a=i.get(s)),a?.res===void 0){let c="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(c)}if(o>=0&&(a.count+=1,a.aliasCount===0&&(a.aliasCount=Rn(r,s,i)),a.count*a.aliasCount>o)){let c="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(c)}return a.res}toString(e,n,i){let r=`*${this.source}`;if(e){if(mf.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`${r} `}return r}};function Rn(t,e,n){if(ot.isAlias(e)){let i=e.resolve(t),r=n&&i&&n.get(i);return r?r.count*r.aliasCount:0}else if(ot.isCollection(e)){let i=0;for(let r of e.items){let o=Rn(t,r,n);o>i&&(i=o)}return i}else if(ot.isPair(e)){let i=Rn(t,e.key,n),r=Rn(t,e.value,n);return Math.max(i,r)}return 1}Ws.Alias=lr});var j=k(ur=>{"use strict";var yf=_(),vf=Pn(),kf=Se(),bf=t=>!t||typeof t!="function"&&typeof t!="object",Ce=class extends vf.NodeBase{constructor(e){super(yf.SCALAR),this.value=e}toJSON(e,n){return n?.keep?this.value:kf.toJS(this.value,e,n)}toString(){return String(this.value)}};Ce.BLOCK_FOLDED="BLOCK_FOLDED";Ce.BLOCK_LITERAL="BLOCK_LITERAL";Ce.PLAIN="PLAIN";Ce.QUOTE_DOUBLE="QUOTE_DOUBLE";Ce.QUOTE_SINGLE="QUOTE_SINGLE";ur.Scalar=Ce;ur.isScalarValue=bf});var Tt=k(Bs=>{"use strict";var Sf=jt(),He=_(),Ms=j(),Cf="tag:yaml.org,2002:";function Ef(t,e,n){if(e){let i=n.filter(o=>o.tag===e),r=i.find(o=>!o.format)??i[0];if(!r)throw new Error(`Tag ${e} not found`);return r}return n.find(i=>i.identify?.(t)&&!i.format)}function _f(t,e,n){if(He.isDocument(t)&&(t=t.contents),He.isNode(t))return t;if(He.isPair(t)){let f=n.schema[He.MAP].createNode?.(n.schema,null,n);return f.items.push(t),f}(t instanceof String||t instanceof Number||t instanceof Boolean||typeof BigInt<"u"&&t instanceof BigInt)&&(t=t.valueOf());let{aliasDuplicateObjects:i,onAnchor:r,onTagObj:o,schema:s,sourceObjects:a}=n,c;if(i&&t&&typeof t=="object"){if(c=a.get(t),c)return c.anchor??(c.anchor=r(t)),new Sf.Alias(c.anchor);c={anchor:null,node:null},a.set(t,c)}e?.startsWith("!!")&&(e=Cf+e.slice(2));let l=Ef(t,e,s.tags);if(!l){if(t&&typeof t.toJSON=="function"&&(t=t.toJSON()),!t||typeof t!="object"){let f=new Ms.Scalar(t);return c&&(c.node=f),f}l=t instanceof Map?s[He.MAP]:Symbol.iterator in Object(t)?s[He.SEQ]:s[He.MAP]}o&&(o(l),delete n.onTagObj);let u=l?.createNode?l.createNode(n.schema,t,n):typeof l?.nodeClass?.from=="function"?l.nodeClass.from(n.schema,t,n):new Ms.Scalar(t);return e?u.tag=e:l.default||(u.tag=l.tag),c&&(c.node=u),u}Bs.createNode=_f});var On=k(Nn=>{"use strict";var xf=Tt(),ae=_(),Pf=Pn();function fr(t,e,n){let i=n;for(let r=e.length-1;r>=0;--r){let o=e[r];if(typeof o=="number"&&Number.isInteger(o)&&o>=0){let s=[];s[o]=i,i=s}else i=new Map([[o,i]])}return xf.createNode(i,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:t,sourceObjects:new Map})}var Ks=t=>t==null||typeof t=="object"&&!!t[Symbol.iterator]().next().done,dr=class extends Pf.NodeBase{constructor(e,n){super(e),Object.defineProperty(this,"schema",{value:n,configurable:!0,enumerable:!1,writable:!0})}clone(e){let n=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(n.schema=e),n.items=n.items.map(i=>ae.isNode(i)||ae.isPair(i)?i.clone(e):i),this.range&&(n.range=this.range.slice()),n}addIn(e,n){if(Ks(e))this.add(n);else{let[i,...r]=e,o=this.get(i,!0);if(ae.isCollection(o))o.addIn(r,n);else if(o===void 0&&this.schema)this.set(i,fr(this.schema,r,n));else throw new Error(`Expected YAML collection at ${i}. Remaining path: ${r}`)}}deleteIn(e){let[n,...i]=e;if(i.length===0)return this.delete(n);let r=this.get(n,!0);if(ae.isCollection(r))return r.deleteIn(i);throw new Error(`Expected YAML collection at ${n}. Remaining path: ${i}`)}getIn(e,n){let[i,...r]=e,o=this.get(i,!0);return r.length===0?!n&&ae.isScalar(o)?o.value:o:ae.isCollection(o)?o.getIn(r,n):void 0}hasAllNullValues(e){return this.items.every(n=>{if(!ae.isPair(n))return!1;let i=n.value;return i==null||e&&ae.isScalar(i)&&i.value==null&&!i.commentBefore&&!i.comment&&!i.tag})}hasIn(e){let[n,...i]=e;if(i.length===0)return this.has(n);let r=this.get(n,!0);return ae.isCollection(r)?r.hasIn(i):!1}setIn(e,n){let[i,...r]=e;if(r.length===0)this.set(i,n);else{let o=this.get(i,!0);if(ae.isCollection(o))o.setIn(r,n);else if(o===void 0&&this.schema)this.set(i,fr(this.schema,r,n));else throw new Error(`Expected YAML collection at ${i}. Remaining path: ${r}`)}}};Nn.Collection=dr;Nn.collectionFromPath=fr;Nn.isEmptyPath=Ks});var It=k(An=>{"use strict";var Rf=t=>t.replace(/^(?!$)(?: $)?/gm,"#");function pr(t,e){return/^\n+$/.test(t)?t.substring(1):e?t.replace(/^(?! *$)/gm,e):t}var Nf=(t,e,n)=>t.endsWith(` `)?pr(n,e):n.includes(` `)?` -`+pr(n,e):(t.endsWith(" ")?"":" ")+n;An.indentComment=pr;An.lineComment=Pf;An.stringifyComment=xf});var Us=v(It=>{"use strict";var Rf="flow",mr="block",jn="quoted";function Nf(t,e,n="flow",{indentAtStart:i,lineWidth:r=80,minContentWidth:o=20,onFold:s,onOverflow:a}={}){if(!r||r<0)return t;rr-Math.max(2,o)?l.push(0):f=r-i);let d,h,w=!1,p=-1,m=-1,y=-1;n===mr&&(p=Ks(t,p,e.length),p!==-1&&(f=p+c));for(let b;b=t[p+=1];){if(n===jn&&b==="\\"){switch(m=p,t[p+1]){case"x":p+=3;break;case"u":p+=5;break;case"U":p+=9;break;default:p+=1}y=p}if(b===` -`)n===mr&&(p=Ks(t,p,e.length)),f=p+e.length+c,d=void 0;else{if(b===" "&&h&&h!==" "&&h!==` -`&&h!==" "){let S=t[p+1];S&&S!==" "&&S!==` -`&&S!==" "&&(d=p)}if(p>=f)if(d)l.push(d),f=d+c,d=void 0;else if(n===jn){for(;h===" "||h===" ";)h=b,b=t[p+=1],w=!0;let S=p>y+1?p-2:m-1;if(u[S])return t;l.push(S),u[S]=!0,f=S+c,d=void 0}else w=!0}h=b}if(w&&a&&a(),l.length===0)return t;s&&s();let g=t.slice(0,l[0]);for(let b=0;b{"use strict";var te=j(),Ce=Us(),In=(t,e)=>({indentAtStart:e?t.indent.length:t.indentAtStart,lineWidth:t.options.lineWidth,minContentWidth:t.options.minContentWidth}),qn=t=>/^(%|---|\.\.\.)/m.test(t);function Of(t,e,n){if(!e||e<0)return!1;let i=e-n,r=t.length;if(r<=i)return!1;for(let o=0,s=0;oi)return!0;if(s=o+1,r-s<=i)return!1}return!0}function qt(t,e){let n=JSON.stringify(t);if(e.options.doubleQuotedAsJSON)return n;let{implicitKey:i}=e,r=e.options.doubleQuotedMinMultiLineLength,o=e.indent||(qn(t)?" ":""),s="",a=0;for(let c=0,l=n[c];l;l=n[++c])if(l===" "&&n[c+1]==="\\"&&n[c+2]==="n"&&(s+=n.slice(a,c)+"\\ ",c+=1,a=c,l="\\"),l==="\\")switch(n[c+1]){case"u":{s+=n.slice(a,c);let u=n.substr(c+2,4);switch(u){case"0000":s+="\\0";break;case"0007":s+="\\a";break;case"000b":s+="\\v";break;case"001b":s+="\\e";break;case"0085":s+="\\N";break;case"00a0":s+="\\_";break;case"2028":s+="\\L";break;case"2029":s+="\\P";break;default:u.substr(0,2)==="00"?s+="\\x"+u.substr(2):s+=n.substr(c,6)}c+=5,a=c+1}break;case"n":if(i||n[c+2]==='"'||n.length{"use strict";var Of="flow",mr="block",jn="quoted";function Af(t,e,n="flow",{indentAtStart:i,lineWidth:r=80,minContentWidth:o=20,onFold:s,onOverflow:a}={}){if(!r||r<0)return t;rr-Math.max(2,o)?l.push(0):f=r-i);let d,m,g=!1,p=-1,h=-1,w=-1;n===mr&&(p=Us(t,p,e.length),p!==-1&&(f=p+c));for(let b;b=t[p+=1];){if(n===jn&&b==="\\"){switch(h=p,t[p+1]){case"x":p+=3;break;case"u":p+=5;break;case"U":p+=9;break;default:p+=1}w=p}if(b===` +`)n===mr&&(p=Us(t,p,e.length)),f=p+e.length+c,d=void 0;else{if(b===" "&&m&&m!==" "&&m!==` +`&&m!==" "){let S=t[p+1];S&&S!==" "&&S!==` +`&&S!==" "&&(d=p)}if(p>=f)if(d)l.push(d),f=d+c,d=void 0;else if(n===jn){for(;m===" "||m===" ";)m=b,b=t[p+=1],g=!0;let S=p>w+1?p-2:h-1;if(u[S])return t;l.push(S),u[S]=!0,f=S+c,d=void 0}else g=!0}m=b}if(g&&a&&a(),l.length===0)return t;s&&s();let y=t.slice(0,l[0]);for(let b=0;b{"use strict";var ee=j(),Ee=Ys(),In=(t,e)=>({indentAtStart:e?t.indent.length:t.indentAtStart,lineWidth:t.options.lineWidth,minContentWidth:t.options.minContentWidth}),qn=t=>/^(%|---|\.\.\.)/m.test(t);function jf(t,e,n){if(!e||e<0)return!1;let i=e-n,r=t.length;if(r<=i)return!1;for(let o=0,s=0;oi)return!0;if(s=o+1,r-s<=i)return!1}return!0}function $t(t,e){let n=JSON.stringify(t);if(e.options.doubleQuotedAsJSON)return n;let{implicitKey:i}=e,r=e.options.doubleQuotedMinMultiLineLength,o=e.indent||(qn(t)?" ":""),s="",a=0;for(let c=0,l=n[c];l;l=n[++c])if(l===" "&&n[c+1]==="\\"&&n[c+2]==="n"&&(s+=n.slice(a,c)+"\\ ",c+=1,a=c,l="\\"),l==="\\")switch(n[c+1]){case"u":{s+=n.slice(a,c);let u=n.substr(c+2,4);switch(u){case"0000":s+="\\0";break;case"0007":s+="\\a";break;case"000b":s+="\\v";break;case"001b":s+="\\e";break;case"0085":s+="\\N";break;case"00a0":s+="\\_";break;case"2028":s+="\\L";break;case"2029":s+="\\P";break;default:u.substr(0,2)==="00"?s+="\\x"+u.substr(2):s+=n.substr(c,6)}c+=5,a=c+1}break;case"n":if(i||n[c+2]==='"'||n.length `;let f,d;for(d=n.length;d>0;--d){let C=n[d-1];if(C!==` -`&&C!==" "&&C!==" ")break}let h=n.substring(d),w=h.indexOf(` -`);w===-1?f="-":n===h||w!==h.length-1?(f="+",o&&o()):f="",h&&(n=n.slice(0,-h.length),h[h.length-1]===` -`&&(h=h.slice(0,-1)),h=h.replace(gr,`$&${l}`));let p=!1,m,y=-1;for(m=0;m{E=!0});let k=Ce.foldFlowLines(`${g}${C}${h}`,l,Ce.FOLD_BLOCK,_);if(!E)return`>${S} -${l}${k}`}return n=n.replace(/\n+/g,`$&${l}`),`|${S} -${l}${g}${n}${h}`}function Af(t,e,n,i){let{type:r,value:o}=t,{actualString:s,implicitKey:a,indent:c,indentStep:l,inFlow:u}=e;if(a&&o.includes(` +`&&C!==" "&&C!==" ")break}let m=n.substring(d),g=m.indexOf(` +`);g===-1?f="-":n===m||g!==m.length-1?(f="+",o&&o()):f="",m&&(n=n.slice(0,-m.length),m[m.length-1]===` +`&&(m=m.slice(0,-1)),m=m.replace(gr,`$&${l}`));let p=!1,h,w=-1;for(h=0;h{E=!0});let v=Ee.foldFlowLines(`${y}${C}${m}`,l,Ee.FOLD_BLOCK,P);if(!E)return`>${S} +${l}${v}`}return n=n.replace(/\n+/g,`$&${l}`),`|${S} +${l}${y}${n}${m}`}function Tf(t,e,n,i){let{type:r,value:o}=t,{actualString:s,implicitKey:a,indent:c,indentStep:l,inFlow:u}=e;if(a&&o.includes(` `)||u&&/[[\]{},]/.test(o))return st(o,e);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(o))return a||u||!o.includes(` -`)?st(o,e):Tn(t,e,n,i);if(!a&&!u&&r!==te.Scalar.PLAIN&&o.includes(` +`)?st(o,e):Tn(t,e,n,i);if(!a&&!u&&r!==ee.Scalar.PLAIN&&o.includes(` `))return Tn(t,e,n,i);if(qn(o)){if(c==="")return e.forceBlockIndent=!0,Tn(t,e,n,i);if(a&&c===l)return st(o,e)}let f=o.replace(/\n+/g,`$& -${c}`);if(s){let d=p=>p.default&&p.tag!=="tag:yaml.org,2002:str"&&p.test?.test(f),{compat:h,tags:w}=e.doc.schema;if(w.some(d)||h?.some(d))return st(o,e)}return a?f:Ce.foldFlowLines(f,c,Ce.FOLD_FLOW,In(e,!1))}function jf(t,e,n,i){let{implicitKey:r,inFlow:o}=e,s=typeof t.value=="string"?t:Object.assign({},t,{value:String(t.value)}),{type:a}=t;a!==te.Scalar.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(s.value)&&(a=te.Scalar.QUOTE_DOUBLE);let c=u=>{switch(u){case te.Scalar.BLOCK_FOLDED:case te.Scalar.BLOCK_LITERAL:return r||o?st(s.value,e):Tn(s,e,n,i);case te.Scalar.QUOTE_DOUBLE:return qt(s.value,e);case te.Scalar.QUOTE_SINGLE:return hr(s.value,e);case te.Scalar.PLAIN:return Af(s,e,n,i);default:return null}},l=c(a);if(l===null){let{defaultKeyType:u,defaultStringType:f}=e.options,d=r&&u||f;if(l=c(d),l===null)throw new Error(`Unsupported default string type ${d}`)}return l}Ys.stringifyString=jf});var Lt=v(wr=>{"use strict";var Tf=xn(),Ee=x(),If=Tt(),qf=$t();function $f(t,e){let n=Object.assign({blockQuote:!0,commentString:If.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),i;switch(n.collectionStyle){case"block":i=!1;break;case"flow":i=!0;break;default:i=null}return{anchors:new Set,doc:t,flowCollectionPadding:n.flowCollectionPadding?" ":"",indent:"",indentStep:typeof n.indent=="number"?" ".repeat(n.indent):" ",inFlow:i,options:n}}function Lf(t,e){if(e.tag){let r=t.filter(o=>o.tag===e.tag);if(r.length>0)return r.find(o=>o.format===e.format)??r[0]}let n,i;if(Ee.isScalar(e)){i=e.value;let r=t.filter(o=>o.identify?.(i));if(r.length>1){let o=r.filter(s=>s.test);o.length>0&&(r=o)}n=r.find(o=>o.format===e.format)??r.find(o=>!o.format)}else i=e,n=t.find(r=>r.nodeClass&&i instanceof r.nodeClass);if(!n){let r=i?.constructor?.name??(i===null?"null":typeof i);throw new Error(`Tag not resolved for ${r} value`)}return n}function Df(t,e,{anchors:n,doc:i}){if(!i.directives)return"";let r=[],o=(Ee.isScalar(t)||Ee.isCollection(t))&&t.anchor;o&&Tf.anchorIsValid(o)&&(n.add(o),r.push(`&${o}`));let s=t.tag??(e.default?null:e.tag);return s&&r.push(i.directives.tagString(s)),r.join(" ")}function Ff(t,e,n,i){if(Ee.isPair(t))return t.toString(e,n,i);if(Ee.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 r,o=Ee.isNode(t)?t:e.doc.createNode(t,{onTagObj:c=>r=c});r??(r=Lf(e.doc.schema.tags,o));let s=Df(o,r,e);s.length>0&&(e.indentAtStart=(e.indentAtStart??0)+s.length+1);let a=typeof r.stringify=="function"?r.stringify(o,e,n,i):Ee.isScalar(o)?qf.stringifyString(o,e,n,i):o.toString(e,n,i);return s?Ee.isScalar(o)||a[0]==="{"||a[0]==="["?`${s} ${a}`:`${s} -${e.indent}${a}`:a}wr.createStringifyContext=$f;wr.stringify=Ff});var Gs=v(Vs=>{"use strict";var de=x(),Hs=j(),Js=Lt(),Dt=Tt();function Wf({key:t,value:e},n,i,r){let{allNullValues:o,doc:s,indent:a,indentStep:c,options:{commentString:l,indentSeq:u,simpleKeys:f}}=n,d=de.isNode(t)&&t.comment||null;if(f){if(d)throw new Error("With simple keys, key nodes cannot have comments");if(de.isCollection(t)||!de.isNode(t)&&typeof t=="object"){let _="With simple keys, collection cannot be used as a key value";throw new Error(_)}}let h=!f&&(!t||d&&e==null&&!n.inFlow||de.isCollection(t)||(de.isScalar(t)?t.type===Hs.Scalar.BLOCK_FOLDED||t.type===Hs.Scalar.BLOCK_LITERAL:typeof t=="object"));n=Object.assign({},n,{allNullValues:!1,implicitKey:!h&&(f||!o),indent:a+c});let w=!1,p=!1,m=Js.stringify(t,n,()=>w=!0,()=>p=!0);if(!h&&!n.inFlow&&m.length>1024){if(f)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");h=!0}if(n.inFlow){if(o||e==null)return w&&i&&i(),m===""?"?":h?`? ${m}`:m}else if(o&&!f||e==null&&h)return m=`? ${m}`,d&&!w?m+=Dt.lineComment(m,n.indent,l(d)):p&&r&&r(),m;w&&(d=null),h?(d&&(m+=Dt.lineComment(m,n.indent,l(d))),m=`? ${m} -${a}:`):(m=`${m}:`,d&&(m+=Dt.lineComment(m,n.indent,l(d))));let y,g,b;de.isNode(e)?(y=!!e.spaceBefore,g=e.commentBefore,b=e.comment):(y=!1,g=null,b=null,e&&typeof e=="object"&&(e=s.createNode(e))),n.implicitKey=!1,!h&&!d&&de.isScalar(e)&&(n.indentAtStart=m.length+1),p=!1,!u&&c.length>=2&&!n.inFlow&&!h&&de.isSeq(e)&&!e.flow&&!e.tag&&!e.anchor&&(n.indent=n.indent.substring(2));let S=!1,C=Js.stringify(e,n,()=>S=!0,()=>p=!0),E=" ";if(d||y||g){if(E=y?` -`:"",g){let _=l(g);E+=` -${Dt.indentComment(_,n.indent)}`}C===""&&!n.inFlow?E===` +${c}`);if(s){let d=p=>p.default&&p.tag!=="tag:yaml.org,2002:str"&&p.test?.test(f),{compat:m,tags:g}=e.doc.schema;if(g.some(d)||m?.some(d))return st(o,e)}return a?f:Ee.foldFlowLines(f,c,Ee.FOLD_FLOW,In(e,!1))}function If(t,e,n,i){let{implicitKey:r,inFlow:o}=e,s=typeof t.value=="string"?t:Object.assign({},t,{value:String(t.value)}),{type:a}=t;a!==ee.Scalar.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(s.value)&&(a=ee.Scalar.QUOTE_DOUBLE);let c=u=>{switch(u){case ee.Scalar.BLOCK_FOLDED:case ee.Scalar.BLOCK_LITERAL:return r||o?st(s.value,e):Tn(s,e,n,i);case ee.Scalar.QUOTE_DOUBLE:return $t(s.value,e);case ee.Scalar.QUOTE_SINGLE:return hr(s.value,e);case ee.Scalar.PLAIN:return Tf(s,e,n,i);default:return null}},l=c(a);if(l===null){let{defaultKeyType:u,defaultStringType:f}=e.options,d=r&&u||f;if(l=c(d),l===null)throw new Error(`Unsupported default string type ${d}`)}return l}Hs.stringifyString=If});var Dt=k(wr=>{"use strict";var qf=xn(),_e=_(),$f=It(),Lf=Lt();function Df(t,e){let n=Object.assign({blockQuote:!0,commentString:$f.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),i;switch(n.collectionStyle){case"block":i=!1;break;case"flow":i=!0;break;default:i=null}return{anchors:new Set,doc:t,flowCollectionPadding:n.flowCollectionPadding?" ":"",indent:"",indentStep:typeof n.indent=="number"?" ".repeat(n.indent):" ",inFlow:i,options:n}}function Ff(t,e){if(e.tag){let r=t.filter(o=>o.tag===e.tag);if(r.length>0)return r.find(o=>o.format===e.format)??r[0]}let n,i;if(_e.isScalar(e)){i=e.value;let r=t.filter(o=>o.identify?.(i));if(r.length>1){let o=r.filter(s=>s.test);o.length>0&&(r=o)}n=r.find(o=>o.format===e.format)??r.find(o=>!o.format)}else i=e,n=t.find(r=>r.nodeClass&&i instanceof r.nodeClass);if(!n){let r=i?.constructor?.name??(i===null?"null":typeof i);throw new Error(`Tag not resolved for ${r} value`)}return n}function Wf(t,e,{anchors:n,doc:i}){if(!i.directives)return"";let r=[],o=(_e.isScalar(t)||_e.isCollection(t))&&t.anchor;o&&qf.anchorIsValid(o)&&(n.add(o),r.push(`&${o}`));let s=t.tag??(e.default?null:e.tag);return s&&r.push(i.directives.tagString(s)),r.join(" ")}function Mf(t,e,n,i){if(_e.isPair(t))return t.toString(e,n,i);if(_e.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 r,o=_e.isNode(t)?t:e.doc.createNode(t,{onTagObj:c=>r=c});r??(r=Ff(e.doc.schema.tags,o));let s=Wf(o,r,e);s.length>0&&(e.indentAtStart=(e.indentAtStart??0)+s.length+1);let a=typeof r.stringify=="function"?r.stringify(o,e,n,i):_e.isScalar(o)?Lf.stringifyString(o,e,n,i):o.toString(e,n,i);return s?_e.isScalar(o)||a[0]==="{"||a[0]==="["?`${s} ${a}`:`${s} +${e.indent}${a}`:a}wr.createStringifyContext=Df;wr.stringify=Mf});var zs=k(Gs=>{"use strict";var pe=_(),Js=j(),Vs=Dt(),Ft=It();function Bf({key:t,value:e},n,i,r){let{allNullValues:o,doc:s,indent:a,indentStep:c,options:{commentString:l,indentSeq:u,simpleKeys:f}}=n,d=pe.isNode(t)&&t.comment||null;if(f){if(d)throw new Error("With simple keys, key nodes cannot have comments");if(pe.isCollection(t)||!pe.isNode(t)&&typeof t=="object"){let P="With simple keys, collection cannot be used as a key value";throw new Error(P)}}let m=!f&&(!t||d&&e==null&&!n.inFlow||pe.isCollection(t)||(pe.isScalar(t)?t.type===Js.Scalar.BLOCK_FOLDED||t.type===Js.Scalar.BLOCK_LITERAL:typeof t=="object"));n=Object.assign({},n,{allNullValues:!1,implicitKey:!m&&(f||!o),indent:a+c});let g=!1,p=!1,h=Vs.stringify(t,n,()=>g=!0,()=>p=!0);if(!m&&!n.inFlow&&h.length>1024){if(f)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");m=!0}if(n.inFlow){if(o||e==null)return g&&i&&i(),h===""?"?":m?`? ${h}`:h}else if(o&&!f||e==null&&m)return h=`? ${h}`,d&&!g?h+=Ft.lineComment(h,n.indent,l(d)):p&&r&&r(),h;g&&(d=null),m?(d&&(h+=Ft.lineComment(h,n.indent,l(d))),h=`? ${h} +${a}:`):(h=`${h}:`,d&&(h+=Ft.lineComment(h,n.indent,l(d))));let w,y,b;pe.isNode(e)?(w=!!e.spaceBefore,y=e.commentBefore,b=e.comment):(w=!1,y=null,b=null,e&&typeof e=="object"&&(e=s.createNode(e))),n.implicitKey=!1,!m&&!d&&pe.isScalar(e)&&(n.indentAtStart=h.length+1),p=!1,!u&&c.length>=2&&!n.inFlow&&!m&&pe.isSeq(e)&&!e.flow&&!e.tag&&!e.anchor&&(n.indent=n.indent.substring(2));let S=!1,C=Vs.stringify(e,n,()=>S=!0,()=>p=!0),E=" ";if(d||w||y){if(E=w?` +`:"",y){let P=l(y);E+=` +${Ft.indentComment(P,n.indent)}`}C===""&&!n.inFlow?E===` `&&b&&(E=` `):E+=` -${n.indent}`}else if(!h&&de.isCollection(e)){let _=C[0],k=C.indexOf(` -`),A=k!==-1,se=n.inFlow??e.flow??e.items.length===0;if(A||!se){let Y=!1;if(A&&(_==="&"||_==="!")){let R=C.indexOf(" ");_==="&"&&R!==-1&&R{"use strict";var zs=bn("process");function Mf(t,...e){t==="debug"&&console.log(...e)}function Bf(t,e){(t==="debug"||t==="warn")&&(typeof zs.emitWarning=="function"?zs.emitWarning(e):console.warn(e))}yr.debug=Mf;yr.warn=Bf});var Wn=v(Fn=>{"use strict";var Dn=x(),Qs=j(),$n="<<",Ln={identify:t=>t===$n||typeof t=="symbol"&&t.description===$n,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new Qs.Scalar(Symbol($n)),{addToJSMap:Xs}),stringify:()=>$n},Kf=(t,e)=>(Ln.identify(e)||Dn.isScalar(e)&&(!e.type||e.type===Qs.Scalar.PLAIN)&&Ln.identify(e.value))&&t?.doc.schema.tags.some(n=>n.tag===Ln.tag&&n.default);function Xs(t,e,n){let i=Zs(t,n);if(Dn.isSeq(i))for(let r of i.items)kr(t,e,r);else if(Array.isArray(i))for(let r of i)kr(t,e,r);else kr(t,e,i)}function kr(t,e,n){let i=Zs(t,n);if(!Dn.isMap(i))throw new Error("Merge sources must be maps or map aliases");let r=i.toJSON(null,t,Map);for(let[o,s]of r)e instanceof Map?e.has(o)||e.set(o,s):e instanceof Set?e.add(o):Object.prototype.hasOwnProperty.call(e,o)||Object.defineProperty(e,o,{value:s,writable:!0,enumerable:!0,configurable:!0});return e}function Zs(t,e){return t&&Dn.isAlias(e)?e.resolve(t.doc,t):e}Fn.addMergeToJSMap=Xs;Fn.isMergeKey=Kf;Fn.merge=Ln});var Sr=v(na=>{"use strict";var Uf=vr(),ea=Wn(),Yf=Lt(),ta=x(),br=be();function Hf(t,e,{key:n,value:i}){if(ta.isNode(n)&&n.addToJSMap)n.addToJSMap(t,e,i);else if(ea.isMergeKey(t,n))ea.addMergeToJSMap(t,e,i);else{let r=br.toJS(n,"",t);if(e instanceof Map)e.set(r,br.toJS(i,r,t));else if(e instanceof Set)e.add(r);else{let o=Jf(n,r,t),s=br.toJS(i,o,t);o in e?Object.defineProperty(e,o,{value:s,writable:!0,enumerable:!0,configurable:!0}):e[o]=s}}return e}function Jf(t,e,n){if(e===null)return"";if(typeof e!="object")return String(e);if(ta.isNode(t)&&n?.doc){let i=Yf.createStringifyContext(n.doc,{});i.anchors=new Set;for(let o of n.anchors.keys())i.anchors.add(o.anchor);i.inFlow=!0,i.inStringifyKey=!0;let r=t.toString(i);if(!n.mapKeyWarned){let o=JSON.stringify(r);o.length>40&&(o=o.substring(0,36)+'..."'),Uf.warn(n.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${o}. Set mapAsMap: true to use object keys.`),n.mapKeyWarned=!0}return r}return JSON.stringify(e)}na.addPairToJSMap=Hf});var _e=v(Cr=>{"use strict";var ia=jt(),Vf=Gs(),Gf=Sr(),Mn=x();function zf(t,e,n){let i=ia.createNode(t,void 0,n),r=ia.createNode(e,void 0,n);return new Bn(i,r)}var Bn=class t{constructor(e,n=null){Object.defineProperty(this,Mn.NODE_TYPE,{value:Mn.PAIR}),this.key=e,this.value=n}clone(e){let{key:n,value:i}=this;return Mn.isNode(n)&&(n=n.clone(e)),Mn.isNode(i)&&(i=i.clone(e)),new t(n,i)}toJSON(e,n){let i=n?.mapAsMap?new Map:{};return Gf.addPairToJSMap(n,i,this)}toString(e,n,i){return e?.doc?Vf.stringifyPair(this,e,n,i):JSON.stringify(this)}};Cr.Pair=Bn;Cr.createPair=zf});var Er=v(oa=>{"use strict";var Je=x(),ra=Lt(),Kn=Tt();function Qf(t,e,n){return(e.inFlow??t.flow?Zf:Xf)(t,e,n)}function Xf({comment:t,items:e},n,{blockItemPrefix:i,flowChars:r,itemIndent:o,onChompKeep:s,onComment:a}){let{indent:c,options:{commentString:l}}=n,u=Object.assign({},n,{indent:o,type:null}),f=!1,d=[];for(let w=0;wm=null,()=>f=!0);m&&(y+=Kn.lineComment(y,o,l(m))),f&&m&&(f=!1),d.push(i+y)}let h;if(d.length===0)h=r.start+r.end;else{h=d[0];for(let w=1;w{"use strict";var Qs=bn("process");function Kf(t,...e){t==="debug"&&console.log(...e)}function Uf(t,e){(t==="debug"||t==="warn")&&(typeof Qs.emitWarning=="function"?Qs.emitWarning(e):console.warn(e))}yr.debug=Kf;yr.warn=Uf});var Wn=k(Fn=>{"use strict";var Dn=_(),Xs=j(),$n="<<",Ln={identify:t=>t===$n||typeof t=="symbol"&&t.description===$n,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new Xs.Scalar(Symbol($n)),{addToJSMap:Zs}),stringify:()=>$n},Yf=(t,e)=>(Ln.identify(e)||Dn.isScalar(e)&&(!e.type||e.type===Xs.Scalar.PLAIN)&&Ln.identify(e.value))&&t?.doc.schema.tags.some(n=>n.tag===Ln.tag&&n.default);function Zs(t,e,n){let i=ea(t,n);if(Dn.isSeq(i))for(let r of i.items)kr(t,e,r);else if(Array.isArray(i))for(let r of i)kr(t,e,r);else kr(t,e,i)}function kr(t,e,n){let i=ea(t,n);if(!Dn.isMap(i))throw new Error("Merge sources must be maps or map aliases");let r=i.toJSON(null,t,Map);for(let[o,s]of r)e instanceof Map?e.has(o)||e.set(o,s):e instanceof Set?e.add(o):Object.prototype.hasOwnProperty.call(e,o)||Object.defineProperty(e,o,{value:s,writable:!0,enumerable:!0,configurable:!0});return e}function ea(t,e){return t&&Dn.isAlias(e)?e.resolve(t.doc,t):e}Fn.addMergeToJSMap=Zs;Fn.isMergeKey=Yf;Fn.merge=Ln});var Sr=k(ia=>{"use strict";var Hf=vr(),ta=Wn(),Jf=Dt(),na=_(),br=Se();function Vf(t,e,{key:n,value:i}){if(na.isNode(n)&&n.addToJSMap)n.addToJSMap(t,e,i);else if(ta.isMergeKey(t,n))ta.addMergeToJSMap(t,e,i);else{let r=br.toJS(n,"",t);if(e instanceof Map)e.set(r,br.toJS(i,r,t));else if(e instanceof Set)e.add(r);else{let o=Gf(n,r,t),s=br.toJS(i,o,t);o in e?Object.defineProperty(e,o,{value:s,writable:!0,enumerable:!0,configurable:!0}):e[o]=s}}return e}function Gf(t,e,n){if(e===null)return"";if(typeof e!="object")return String(e);if(na.isNode(t)&&n?.doc){let i=Jf.createStringifyContext(n.doc,{});i.anchors=new Set;for(let o of n.anchors.keys())i.anchors.add(o.anchor);i.inFlow=!0,i.inStringifyKey=!0;let r=t.toString(i);if(!n.mapKeyWarned){let o=JSON.stringify(r);o.length>40&&(o=o.substring(0,36)+'..."'),Hf.warn(n.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${o}. Set mapAsMap: true to use object keys.`),n.mapKeyWarned=!0}return r}return JSON.stringify(e)}ia.addPairToJSMap=Vf});var xe=k(Cr=>{"use strict";var ra=Tt(),zf=zs(),Qf=Sr(),Mn=_();function Xf(t,e,n){let i=ra.createNode(t,void 0,n),r=ra.createNode(e,void 0,n);return new Bn(i,r)}var Bn=class t{constructor(e,n=null){Object.defineProperty(this,Mn.NODE_TYPE,{value:Mn.PAIR}),this.key=e,this.value=n}clone(e){let{key:n,value:i}=this;return Mn.isNode(n)&&(n=n.clone(e)),Mn.isNode(i)&&(i=i.clone(e)),new t(n,i)}toJSON(e,n){let i=n?.mapAsMap?new Map:{};return Qf.addPairToJSMap(n,i,this)}toString(e,n,i){return e?.doc?zf.stringifyPair(this,e,n,i):JSON.stringify(this)}};Cr.Pair=Bn;Cr.createPair=Xf});var Er=k(sa=>{"use strict";var Je=_(),oa=Dt(),Kn=It();function Zf(t,e,n){return(e.inFlow??t.flow?td:ed)(t,e,n)}function ed({comment:t,items:e},n,{blockItemPrefix:i,flowChars:r,itemIndent:o,onChompKeep:s,onComment:a}){let{indent:c,options:{commentString:l}}=n,u=Object.assign({},n,{indent:o,type:null}),f=!1,d=[];for(let g=0;gh=null,()=>f=!0);h&&(w+=Kn.lineComment(w,o,l(h))),f&&h&&(f=!1),d.push(i+w)}let m;if(d.length===0)m=r.start+r.end;else{m=d[0];for(let g=1;gm=null);l||(l=f.length>u||y.includes(` -`)),w0&&(l||(l=f.reduce((g,b)=>g+b.length+2,2)+(y.length+2)>e.options.lineWidth)),l&&(y+=",")),m&&(y+=Kn.lineComment(y,i,a(m))),f.push(y),u=f.length}let{start:d,end:h}=n;if(f.length===0)return d+h;if(!l){let w=f.reduce((p,m)=>p+m.length+2,2);l=e.options.lineWidth>0&&w>e.options.lineWidth}if(l){let w=d;for(let p of f)w+=p?` +`}}return t?(m+=` +`+Kn.indentComment(l(t),c),a&&a()):f&&s&&s(),m}function td({items:t},e,{flowChars:n,itemIndent:i}){let{indent:r,indentStep:o,flowCollectionPadding:s,options:{commentString:a}}=e;i+=o;let c=Object.assign({},e,{indent:i,inFlow:!0,type:null}),l=!1,u=0,f=[];for(let g=0;gh=null);l||(l=f.length>u||w.includes(` +`)),g0&&(l||(l=f.reduce((y,b)=>y+b.length+2,2)+(w.length+2)>e.options.lineWidth)),l&&(w+=",")),h&&(w+=Kn.lineComment(w,i,a(h))),f.push(w),u=f.length}let{start:d,end:m}=n;if(f.length===0)return d+m;if(!l){let g=f.reduce((p,h)=>p+h.length+2,2);l=e.options.lineWidth>0&&g>e.options.lineWidth}if(l){let g=d;for(let p of f)g+=p?` ${o}${r}${p}`:` -`;return`${w} -${r}${h}`}else return`${d}${s}${f.join(" ")}${s}${h}`}function Un({indent:t,options:{commentString:e}},n,i,r){if(i&&r&&(i=i.replace(/^\n+/,"")),i){let o=Kn.indentComment(e(i),t);n.push(o.trimStart())}}oa.stringifyCollection=Qf});var Pe=v(xr=>{"use strict";var ed=Er(),td=Sr(),nd=On(),xe=x(),Yn=_e(),id=j();function Ft(t,e){let n=xe.isScalar(e)?e.value:e;for(let i of t)if(xe.isPair(i)&&(i.key===e||i.key===n||xe.isScalar(i.key)&&i.key.value===n))return i}var _r=class extends nd.Collection{static get tagName(){return"tag:yaml.org,2002:map"}constructor(e){super(xe.MAP,e),this.items=[]}static from(e,n,i){let{keepUndefined:r,replacer:o}=i,s=new this(e),a=(c,l)=>{if(typeof o=="function")l=o.call(n,c,l);else if(Array.isArray(o)&&!o.includes(c))return;(l!==void 0||r)&&s.items.push(Yn.createPair(c,l,i))};if(n instanceof Map)for(let[c,l]of n)a(c,l);else if(n&&typeof n=="object")for(let c of Object.keys(n))a(c,n[c]);return typeof e.sortMapEntries=="function"&&s.items.sort(e.sortMapEntries),s}add(e,n){let i;xe.isPair(e)?i=e:!e||typeof e!="object"||!("key"in e)?i=new Yn.Pair(e,e?.value):i=new Yn.Pair(e.key,e.value);let r=Ft(this.items,i.key),o=this.schema?.sortMapEntries;if(r){if(!n)throw new Error(`Key ${i.key} already set`);xe.isScalar(r.value)&&id.isScalarValue(i.value)?r.value.value=i.value:r.value=i.value}else if(o){let s=this.items.findIndex(a=>o(i,a)<0);s===-1?this.items.push(i):this.items.splice(s,0,i)}else this.items.push(i)}delete(e){let n=Ft(this.items,e);return n?this.items.splice(this.items.indexOf(n),1).length>0:!1}get(e,n){let r=Ft(this.items,e)?.value;return(!n&&xe.isScalar(r)?r.value:r)??void 0}has(e){return!!Ft(this.items,e)}set(e,n){this.add(new Yn.Pair(e,n),!0)}toJSON(e,n,i){let r=i?new i:n?.mapAsMap?new Map:{};n?.onCreate&&n.onCreate(r);for(let o of this.items)td.addPairToJSMap(n,r,o);return r}toString(e,n,i){if(!e)return JSON.stringify(this);for(let r of this.items)if(!xe.isPair(r))throw new Error(`Map items must all be pairs; found ${JSON.stringify(r)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),ed.stringifyCollection(this,e,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:e.indent||"",onChompKeep:i,onComment:n})}};xr.YAMLMap=_r;xr.findPair=Ft});var at=v(aa=>{"use strict";var rd=x(),sa=Pe(),od={collection:"map",default:!0,nodeClass:sa.YAMLMap,tag:"tag:yaml.org,2002:map",resolve(t,e){return rd.isMap(t)||e("Expected a mapping for this tag"),t},createNode:(t,e,n)=>sa.YAMLMap.from(t,e,n)};aa.map=od});var Re=v(ca=>{"use strict";var sd=jt(),ad=Er(),cd=On(),Jn=x(),ld=j(),ud=be(),Pr=class extends cd.Collection{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(e){super(Jn.SEQ,e),this.items=[]}add(e){this.items.push(e)}delete(e){let n=Hn(e);return typeof n!="number"?!1:this.items.splice(n,1).length>0}get(e,n){let i=Hn(e);if(typeof i!="number")return;let r=this.items[i];return!n&&Jn.isScalar(r)?r.value:r}has(e){let n=Hn(e);return typeof n=="number"&&n=0?e:null}ca.YAMLSeq=Pr});var ct=v(ua=>{"use strict";var fd=x(),la=Re(),dd={collection:"seq",default:!0,nodeClass:la.YAMLSeq,tag:"tag:yaml.org,2002:seq",resolve(t,e){return fd.isSeq(t)||e("Expected a sequence for this tag"),t},createNode:(t,e,n)=>la.YAMLSeq.from(t,e,n)};ua.seq=dd});var Wt=v(fa=>{"use strict";var pd=$t(),md={identify:t=>typeof t=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:t=>t,stringify(t,e,n,i){return e=Object.assign({actualString:!0},e),pd.stringifyString(t,e,n,i)}};fa.string=md});var Vn=v(ma=>{"use strict";var da=j(),pa={identify:t=>t==null,createNode:()=>new da.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new da.Scalar(null),stringify:({source:t},e)=>typeof t=="string"&&pa.test.test(t)?t:e.options.nullStr};ma.nullTag=pa});var Rr=v(ga=>{"use strict";var hd=j(),ha={identify:t=>typeof t=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:t=>new hd.Scalar(t[0]==="t"||t[0]==="T"),stringify({source:t,value:e},n){if(t&&ha.test.test(t)){let i=t[0]==="t"||t[0]==="T";if(e===i)return t}return e?n.options.trueStr:n.options.falseStr}};ga.boolTag=ha});var lt=v(wa=>{"use strict";function gd({format:t,minFractionDigits:e,tag:n,value:i}){if(typeof i=="bigint")return String(i);let r=typeof i=="number"?i:Number(i);if(!isFinite(r))return isNaN(r)?".nan":r<0?"-.inf":".inf";let o=Object.is(i,-0)?"-0":JSON.stringify(i);if(!t&&e&&(!n||n==="tag:yaml.org,2002:float")&&/^-?\d/.test(o)&&!o.includes("e")){let s=o.indexOf(".");s<0&&(s=o.length,o+=".");let a=e-(o.length-s-1);for(;a-- >0;)o+="0"}return o}wa.stringifyNumber=gd});var Or=v(Gn=>{"use strict";var wd=j(),Nr=lt(),yd={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:Nr.stringifyNumber},vd={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:t=>parseFloat(t),stringify(t){let e=Number(t.value);return isFinite(e)?e.toExponential():Nr.stringifyNumber(t)}},kd={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 wd.Scalar(parseFloat(t)),n=t.indexOf(".");return n!==-1&&t[t.length-1]==="0"&&(e.minFractionDigits=t.length-n-1),e},stringify:Nr.stringifyNumber};Gn.float=kd;Gn.floatExp=vd;Gn.floatNaN=yd});var jr=v(Qn=>{"use strict";var ya=lt(),zn=t=>typeof t=="bigint"||Number.isInteger(t),Ar=(t,e,n,{intAsBigInt:i})=>i?BigInt(t):parseInt(t.substring(e),n);function va(t,e,n){let{value:i}=t;return zn(i)&&i>=0?n+i.toString(e):ya.stringifyNumber(t)}var bd={identify:t=>zn(t)&&t>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(t,e,n)=>Ar(t,2,8,n),stringify:t=>va(t,8,"0o")},Sd={identify:zn,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(t,e,n)=>Ar(t,0,10,n),stringify:ya.stringifyNumber},Cd={identify:t=>zn(t)&&t>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(t,e,n)=>Ar(t,2,16,n),stringify:t=>va(t,16,"0x")};Qn.int=Sd;Qn.intHex=Cd;Qn.intOct=bd});var ba=v(ka=>{"use strict";var Ed=at(),_d=Vn(),xd=ct(),Pd=Wt(),Rd=Rr(),Tr=Or(),Ir=jr(),Nd=[Ed.map,xd.seq,Pd.string,_d.nullTag,Rd.boolTag,Ir.intOct,Ir.int,Ir.intHex,Tr.floatNaN,Tr.floatExp,Tr.float];ka.schema=Nd});var Ea=v(Ca=>{"use strict";var Od=j(),Ad=at(),jd=ct();function Sa(t){return typeof t=="bigint"||Number.isInteger(t)}var Xn=({value:t})=>JSON.stringify(t),Td=[{identify:t=>typeof t=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:t=>t,stringify:Xn},{identify:t=>t==null,createNode:()=>new Od.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:Xn},{identify:t=>typeof t=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true$|^false$/,resolve:t=>t==="true",stringify:Xn},{identify:Sa,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(t,e,{intAsBigInt:n})=>n?BigInt(t):parseInt(t,10),stringify:({value:t})=>Sa(t)?t.toString():JSON.stringify(t)},{identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:t=>parseFloat(t),stringify:Xn}],Id={default:!0,tag:"",test:/^/,resolve(t,e){return e(`Unresolved plain scalar ${JSON.stringify(t)}`),t}},qd=[Ad.map,jd.seq].concat(Td,Id);Ca.schema=qd});var $r=v(_a=>{"use strict";var Mt=bn("buffer"),qr=j(),$d=$t(),Ld={identify:t=>t instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(t,e){if(typeof Mt.Buffer=="function")return Mt.Buffer.from(t,"base64");if(typeof atob=="function"){let n=atob(t.replace(/[\n\r]/g,"")),i=new Uint8Array(n.length);for(let r=0;r{"use strict";var Zn=x(),Lr=_e(),Dd=j(),Fd=Re();function xa(t,e){if(Zn.isSeq(t))for(let n=0;n1&&e("Each pair must have its own sequence indicator");let r=i.items[0]||new Lr.Pair(new Dd.Scalar(null));if(i.commentBefore&&(r.key.commentBefore=r.key.commentBefore?`${i.commentBefore} +`;return`${g} +${r}${m}`}else return`${d}${s}${f.join(" ")}${s}${m}`}function Un({indent:t,options:{commentString:e}},n,i,r){if(i&&r&&(i=i.replace(/^\n+/,"")),i){let o=Kn.indentComment(e(i),t);n.push(o.trimStart())}}sa.stringifyCollection=Zf});var Re=k(xr=>{"use strict";var nd=Er(),id=Sr(),rd=On(),Pe=_(),Yn=xe(),od=j();function Wt(t,e){let n=Pe.isScalar(e)?e.value:e;for(let i of t)if(Pe.isPair(i)&&(i.key===e||i.key===n||Pe.isScalar(i.key)&&i.key.value===n))return i}var _r=class extends rd.Collection{static get tagName(){return"tag:yaml.org,2002:map"}constructor(e){super(Pe.MAP,e),this.items=[]}static from(e,n,i){let{keepUndefined:r,replacer:o}=i,s=new this(e),a=(c,l)=>{if(typeof o=="function")l=o.call(n,c,l);else if(Array.isArray(o)&&!o.includes(c))return;(l!==void 0||r)&&s.items.push(Yn.createPair(c,l,i))};if(n instanceof Map)for(let[c,l]of n)a(c,l);else if(n&&typeof n=="object")for(let c of Object.keys(n))a(c,n[c]);return typeof e.sortMapEntries=="function"&&s.items.sort(e.sortMapEntries),s}add(e,n){let i;Pe.isPair(e)?i=e:!e||typeof e!="object"||!("key"in e)?i=new Yn.Pair(e,e?.value):i=new Yn.Pair(e.key,e.value);let r=Wt(this.items,i.key),o=this.schema?.sortMapEntries;if(r){if(!n)throw new Error(`Key ${i.key} already set`);Pe.isScalar(r.value)&&od.isScalarValue(i.value)?r.value.value=i.value:r.value=i.value}else if(o){let s=this.items.findIndex(a=>o(i,a)<0);s===-1?this.items.push(i):this.items.splice(s,0,i)}else this.items.push(i)}delete(e){let n=Wt(this.items,e);return n?this.items.splice(this.items.indexOf(n),1).length>0:!1}get(e,n){let r=Wt(this.items,e)?.value;return(!n&&Pe.isScalar(r)?r.value:r)??void 0}has(e){return!!Wt(this.items,e)}set(e,n){this.add(new Yn.Pair(e,n),!0)}toJSON(e,n,i){let r=i?new i:n?.mapAsMap?new Map:{};n?.onCreate&&n.onCreate(r);for(let o of this.items)id.addPairToJSMap(n,r,o);return r}toString(e,n,i){if(!e)return JSON.stringify(this);for(let r of this.items)if(!Pe.isPair(r))throw new Error(`Map items must all be pairs; found ${JSON.stringify(r)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),nd.stringifyCollection(this,e,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:e.indent||"",onChompKeep:i,onComment:n})}};xr.YAMLMap=_r;xr.findPair=Wt});var at=k(ca=>{"use strict";var sd=_(),aa=Re(),ad={collection:"map",default:!0,nodeClass:aa.YAMLMap,tag:"tag:yaml.org,2002:map",resolve(t,e){return sd.isMap(t)||e("Expected a mapping for this tag"),t},createNode:(t,e,n)=>aa.YAMLMap.from(t,e,n)};ca.map=ad});var Ne=k(la=>{"use strict";var cd=Tt(),ld=Er(),ud=On(),Jn=_(),fd=j(),dd=Se(),Pr=class extends ud.Collection{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(e){super(Jn.SEQ,e),this.items=[]}add(e){this.items.push(e)}delete(e){let n=Hn(e);return typeof n!="number"?!1:this.items.splice(n,1).length>0}get(e,n){let i=Hn(e);if(typeof i!="number")return;let r=this.items[i];return!n&&Jn.isScalar(r)?r.value:r}has(e){let n=Hn(e);return typeof n=="number"&&n=0?e:null}la.YAMLSeq=Pr});var ct=k(fa=>{"use strict";var pd=_(),ua=Ne(),md={collection:"seq",default:!0,nodeClass:ua.YAMLSeq,tag:"tag:yaml.org,2002:seq",resolve(t,e){return pd.isSeq(t)||e("Expected a sequence for this tag"),t},createNode:(t,e,n)=>ua.YAMLSeq.from(t,e,n)};fa.seq=md});var Mt=k(da=>{"use strict";var hd=Lt(),gd={identify:t=>typeof t=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:t=>t,stringify(t,e,n,i){return e=Object.assign({actualString:!0},e),hd.stringifyString(t,e,n,i)}};da.string=gd});var Vn=k(ha=>{"use strict";var pa=j(),ma={identify:t=>t==null,createNode:()=>new pa.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new pa.Scalar(null),stringify:({source:t},e)=>typeof t=="string"&&ma.test.test(t)?t:e.options.nullStr};ha.nullTag=ma});var Rr=k(wa=>{"use strict";var wd=j(),ga={identify:t=>typeof t=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:t=>new wd.Scalar(t[0]==="t"||t[0]==="T"),stringify({source:t,value:e},n){if(t&&ga.test.test(t)){let i=t[0]==="t"||t[0]==="T";if(e===i)return t}return e?n.options.trueStr:n.options.falseStr}};wa.boolTag=ga});var lt=k(ya=>{"use strict";function yd({format:t,minFractionDigits:e,tag:n,value:i}){if(typeof i=="bigint")return String(i);let r=typeof i=="number"?i:Number(i);if(!isFinite(r))return isNaN(r)?".nan":r<0?"-.inf":".inf";let o=Object.is(i,-0)?"-0":JSON.stringify(i);if(!t&&e&&(!n||n==="tag:yaml.org,2002:float")&&/^-?\d/.test(o)&&!o.includes("e")){let s=o.indexOf(".");s<0&&(s=o.length,o+=".");let a=e-(o.length-s-1);for(;a-- >0;)o+="0"}return o}ya.stringifyNumber=yd});var Or=k(Gn=>{"use strict";var vd=j(),Nr=lt(),kd={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:Nr.stringifyNumber},bd={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:t=>parseFloat(t),stringify(t){let e=Number(t.value);return isFinite(e)?e.toExponential():Nr.stringifyNumber(t)}},Sd={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 vd.Scalar(parseFloat(t)),n=t.indexOf(".");return n!==-1&&t[t.length-1]==="0"&&(e.minFractionDigits=t.length-n-1),e},stringify:Nr.stringifyNumber};Gn.float=Sd;Gn.floatExp=bd;Gn.floatNaN=kd});var jr=k(Qn=>{"use strict";var va=lt(),zn=t=>typeof t=="bigint"||Number.isInteger(t),Ar=(t,e,n,{intAsBigInt:i})=>i?BigInt(t):parseInt(t.substring(e),n);function ka(t,e,n){let{value:i}=t;return zn(i)&&i>=0?n+i.toString(e):va.stringifyNumber(t)}var Cd={identify:t=>zn(t)&&t>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(t,e,n)=>Ar(t,2,8,n),stringify:t=>ka(t,8,"0o")},Ed={identify:zn,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(t,e,n)=>Ar(t,0,10,n),stringify:va.stringifyNumber},_d={identify:t=>zn(t)&&t>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(t,e,n)=>Ar(t,2,16,n),stringify:t=>ka(t,16,"0x")};Qn.int=Ed;Qn.intHex=_d;Qn.intOct=Cd});var Sa=k(ba=>{"use strict";var xd=at(),Pd=Vn(),Rd=ct(),Nd=Mt(),Od=Rr(),Tr=Or(),Ir=jr(),Ad=[xd.map,Rd.seq,Nd.string,Pd.nullTag,Od.boolTag,Ir.intOct,Ir.int,Ir.intHex,Tr.floatNaN,Tr.floatExp,Tr.float];ba.schema=Ad});var _a=k(Ea=>{"use strict";var jd=j(),Td=at(),Id=ct();function Ca(t){return typeof t=="bigint"||Number.isInteger(t)}var Xn=({value:t})=>JSON.stringify(t),qd=[{identify:t=>typeof t=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:t=>t,stringify:Xn},{identify:t=>t==null,createNode:()=>new jd.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:Xn},{identify:t=>typeof t=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true$|^false$/,resolve:t=>t==="true",stringify:Xn},{identify:Ca,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(t,e,{intAsBigInt:n})=>n?BigInt(t):parseInt(t,10),stringify:({value:t})=>Ca(t)?t.toString():JSON.stringify(t)},{identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:t=>parseFloat(t),stringify:Xn}],$d={default:!0,tag:"",test:/^/,resolve(t,e){return e(`Unresolved plain scalar ${JSON.stringify(t)}`),t}},Ld=[Td.map,Id.seq].concat(qd,$d);Ea.schema=Ld});var $r=k(xa=>{"use strict";var Bt=bn("buffer"),qr=j(),Dd=Lt(),Fd={identify:t=>t instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(t,e){if(typeof Bt.Buffer=="function")return Bt.Buffer.from(t,"base64");if(typeof atob=="function"){let n=atob(t.replace(/[\n\r]/g,"")),i=new Uint8Array(n.length);for(let r=0;r{"use strict";var Zn=_(),Lr=xe(),Wd=j(),Md=Ne();function Pa(t,e){if(Zn.isSeq(t))for(let n=0;n1&&e("Each pair must have its own sequence indicator");let r=i.items[0]||new Lr.Pair(new Wd.Scalar(null));if(i.commentBefore&&(r.key.commentBefore=r.key.commentBefore?`${i.commentBefore} ${r.key.commentBefore}`:i.commentBefore),i.comment){let o=r.value??r.key;o.comment=o.comment?`${i.comment} -${o.comment}`:i.comment}i=r}t.items[n]=Zn.isPair(i)?i:new Lr.Pair(i)}}else e("Expected a sequence for this tag");return t}function Pa(t,e,n){let{replacer:i}=n,r=new Fd.YAMLSeq(t);r.tag="tag:yaml.org,2002:pairs";let o=0;if(e&&Symbol.iterator in Object(e))for(let s of e){typeof i=="function"&&(s=i.call(e,String(o++),s));let a,c;if(Array.isArray(s))if(s.length===2)a=s[0],c=s[1];else throw new TypeError(`Expected [key, value] tuple: ${s}`);else if(s&&s instanceof Object){let l=Object.keys(s);if(l.length===1)a=l[0],c=s[a];else throw new TypeError(`Expected tuple with one key, not ${l.length} keys`)}else a=s;r.items.push(Lr.createPair(a,c,n))}return r}var Wd={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:xa,createNode:Pa};ei.createPairs=Pa;ei.pairs=Wd;ei.resolvePairs=xa});var Wr=v(Fr=>{"use strict";var Ra=x(),Dr=be(),Bt=Pe(),Md=Re(),Na=ti(),Ve=class t extends Md.YAMLSeq{constructor(){super(),this.add=Bt.YAMLMap.prototype.add.bind(this),this.delete=Bt.YAMLMap.prototype.delete.bind(this),this.get=Bt.YAMLMap.prototype.get.bind(this),this.has=Bt.YAMLMap.prototype.has.bind(this),this.set=Bt.YAMLMap.prototype.set.bind(this),this.tag=t.tag}toJSON(e,n){if(!n)return super.toJSON(e);let i=new Map;n?.onCreate&&n.onCreate(i);for(let r of this.items){let o,s;if(Ra.isPair(r)?(o=Dr.toJS(r.key,"",n),s=Dr.toJS(r.value,o,n)):o=Dr.toJS(r,"",n),i.has(o))throw new Error("Ordered maps must not include duplicate keys");i.set(o,s)}return i}static from(e,n,i){let r=Na.createPairs(e,n,i),o=new this;return o.items=r.items,o}};Ve.tag="tag:yaml.org,2002:omap";var Bd={collection:"seq",identify:t=>t instanceof Map,nodeClass:Ve,default:!1,tag:"tag:yaml.org,2002:omap",resolve(t,e){let n=Na.resolvePairs(t,e),i=[];for(let{key:r}of n.items)Ra.isScalar(r)&&(i.includes(r.value)?e(`Ordered maps must not include duplicate keys: ${r.value}`):i.push(r.value));return Object.assign(new Ve,n)},createNode:(t,e,n)=>Ve.from(t,e,n)};Fr.YAMLOMap=Ve;Fr.omap=Bd});var Ia=v(Mr=>{"use strict";var Oa=j();function Aa({value:t,source:e},n){return e&&(t?ja:Ta).test.test(e)?e:t?n.options.trueStr:n.options.falseStr}var ja={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 Oa.Scalar(!0),stringify:Aa},Ta={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 Oa.Scalar(!1),stringify:Aa};Mr.falseTag=Ta;Mr.trueTag=ja});var qa=v(ni=>{"use strict";var Kd=j(),Br=lt(),Ud={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:Br.stringifyNumber},Yd={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():Br.stringifyNumber(t)}},Hd={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 Kd.Scalar(parseFloat(t.replace(/_/g,""))),n=t.indexOf(".");if(n!==-1){let i=t.substring(n+1).replace(/_/g,"");i[i.length-1]==="0"&&(e.minFractionDigits=i.length)}return e},stringify:Br.stringifyNumber};ni.float=Hd;ni.floatExp=Yd;ni.floatNaN=Ud});var La=v(Ut=>{"use strict";var $a=lt(),Kt=t=>typeof t=="bigint"||Number.isInteger(t);function ii(t,e,n,{intAsBigInt:i}){let r=t[0];if((r==="-"||r==="+")&&(e+=1),t=t.substring(e).replace(/_/g,""),i){switch(n){case 2:t=`0b${t}`;break;case 8:t=`0o${t}`;break;case 16:t=`0x${t}`;break}let s=BigInt(t);return r==="-"?BigInt(-1)*s:s}let o=parseInt(t,n);return r==="-"?-1*o:o}function Kr(t,e,n){let{value:i}=t;if(Kt(i)){let r=i.toString(e);return i<0?"-"+n+r.substr(1):n+r}return $a.stringifyNumber(t)}var Jd={identify:Kt,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(t,e,n)=>ii(t,2,2,n),stringify:t=>Kr(t,2,"0b")},Vd={identify:Kt,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(t,e,n)=>ii(t,1,8,n),stringify:t=>Kr(t,8,"0")},Gd={identify:Kt,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(t,e,n)=>ii(t,0,10,n),stringify:$a.stringifyNumber},zd={identify:Kt,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(t,e,n)=>ii(t,2,16,n),stringify:t=>Kr(t,16,"0x")};Ut.int=Gd;Ut.intBin=Jd;Ut.intHex=zd;Ut.intOct=Vd});var Yr=v(Ur=>{"use strict";var si=x(),ri=_e(),oi=Pe(),Ge=class t extends oi.YAMLMap{constructor(e){super(e),this.tag=t.tag}add(e){let n;si.isPair(e)?n=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?n=new ri.Pair(e.key,null):n=new ri.Pair(e,null),oi.findPair(this.items,n.key)||this.items.push(n)}get(e,n){let i=oi.findPair(this.items,e);return!n&&si.isPair(i)?si.isScalar(i.key)?i.key.value:i.key:i}set(e,n){if(typeof n!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof n}`);let i=oi.findPair(this.items,e);i&&!n?this.items.splice(this.items.indexOf(i),1):!i&&n&&this.items.push(new ri.Pair(e))}toJSON(e,n){return super.toJSON(e,n,Set)}toString(e,n,i){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),n,i);throw new Error("Set items must all have null values")}static from(e,n,i){let{replacer:r}=i,o=new this(e);if(n&&Symbol.iterator in Object(n))for(let s of n)typeof r=="function"&&(s=r.call(n,s,s)),o.items.push(ri.createPair(s,null,i));return o}};Ge.tag="tag:yaml.org,2002:set";var Qd={collection:"map",identify:t=>t instanceof Set,nodeClass:Ge,default:!1,tag:"tag:yaml.org,2002:set",createNode:(t,e,n)=>Ge.from(t,e,n),resolve(t,e){if(si.isMap(t)){if(t.hasAllNullValues(!0))return Object.assign(new Ge,t);e("Set items must all have null values")}else e("Expected a mapping for this tag");return t}};Ur.YAMLSet=Ge;Ur.set=Qd});var Jr=v(ai=>{"use strict";var Xd=lt();function Hr(t,e){let n=t[0],i=n==="-"||n==="+"?t.substring(1):t,r=s=>e?BigInt(s):Number(s),o=i.replace(/_/g,"").split(":").reduce((s,a)=>s*r(60)+r(a),r(0));return n==="-"?r(-1)*o:o}function Da(t){let{value:e}=t,n=s=>s;if(typeof e=="bigint")n=s=>BigInt(s);else if(isNaN(e)||!isFinite(e))return Xd.stringifyNumber(t);let i="";e<0&&(i="-",e*=n(-1));let r=n(60),o=[e%r];return e<60?o.unshift(0):(e=(e-o[0])/r,o.unshift(e%r),e>=60&&(e=(e-o[0])/r,o.unshift(e))),i+o.map(s=>String(s).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}var Zd={identify:t=>typeof t=="bigint"||Number.isInteger(t),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(t,e,{intAsBigInt:n})=>Hr(t,n),stringify:Da},ep={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:t=>Hr(t,!1),stringify:Da},Fa={identify:t=>t instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(t){let e=t.match(Fa.test);if(!e)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,n,i,r,o,s,a]=e.map(Number),c=e[7]?Number((e[7]+"00").substr(1,3)):0,l=Date.UTC(n,i-1,r,o||0,s||0,a||0,c),u=e[8];if(u&&u!=="Z"){let f=Hr(u,!1);Math.abs(f)<30&&(f*=60),l-=6e4*f}return new Date(l)},stringify:({value:t})=>t?.toISOString().replace(/(T00:00:00)?\.000Z$/,"")??""};ai.floatTime=ep;ai.intTime=Zd;ai.timestamp=Fa});var Ba=v(Ma=>{"use strict";var tp=at(),np=Vn(),ip=ct(),rp=Wt(),op=$r(),Wa=Ia(),Vr=qa(),ci=La(),sp=Wn(),ap=Wr(),cp=ti(),lp=Yr(),Gr=Jr(),up=[tp.map,ip.seq,rp.string,np.nullTag,Wa.trueTag,Wa.falseTag,ci.intBin,ci.intOct,ci.int,ci.intHex,Vr.floatNaN,Vr.floatExp,Vr.float,op.binary,sp.merge,ap.omap,cp.pairs,lp.set,Gr.intTime,Gr.floatTime,Gr.timestamp];Ma.schema=up});var Xa=v(Xr=>{"use strict";var Ha=at(),fp=Vn(),Ja=ct(),dp=Wt(),pp=Rr(),zr=Or(),Qr=jr(),mp=ba(),hp=Ea(),Va=$r(),Yt=Wn(),Ga=Wr(),za=ti(),Ka=Ba(),Qa=Yr(),li=Jr(),Ua=new Map([["core",mp.schema],["failsafe",[Ha.map,Ja.seq,dp.string]],["json",hp.schema],["yaml11",Ka.schema],["yaml-1.1",Ka.schema]]),Ya={binary:Va.binary,bool:pp.boolTag,float:zr.float,floatExp:zr.floatExp,floatNaN:zr.floatNaN,floatTime:li.floatTime,int:Qr.int,intHex:Qr.intHex,intOct:Qr.intOct,intTime:li.intTime,map:Ha.map,merge:Yt.merge,null:fp.nullTag,omap:Ga.omap,pairs:za.pairs,seq:Ja.seq,set:Qa.set,timestamp:li.timestamp},gp={"tag:yaml.org,2002:binary":Va.binary,"tag:yaml.org,2002:merge":Yt.merge,"tag:yaml.org,2002:omap":Ga.omap,"tag:yaml.org,2002:pairs":za.pairs,"tag:yaml.org,2002:set":Qa.set,"tag:yaml.org,2002:timestamp":li.timestamp};function wp(t,e,n){let i=Ua.get(e);if(i&&!t)return n&&!i.includes(Yt.merge)?i.concat(Yt.merge):i.slice();let r=i;if(!r)if(Array.isArray(t))r=[];else{let o=Array.from(Ua.keys()).filter(s=>s!=="yaml11").map(s=>JSON.stringify(s)).join(", ");throw new Error(`Unknown schema "${e}"; use one of ${o} or define customTags array`)}if(Array.isArray(t))for(let o of t)r=r.concat(o);else typeof t=="function"&&(r=t(r.slice()));return n&&(r=r.concat(Yt.merge)),r.reduce((o,s)=>{let a=typeof s=="string"?Ya[s]:s;if(!a){let c=JSON.stringify(s),l=Object.keys(Ya).map(u=>JSON.stringify(u)).join(", ");throw new Error(`Unknown custom tag ${c}; use one of ${l}`)}return o.includes(a)||o.push(a),o},[])}Xr.coreKnownTags=gp;Xr.getTags=wp});var to=v(Za=>{"use strict";var Zr=x(),yp=at(),vp=ct(),kp=Wt(),ui=Xa(),bp=(t,e)=>t.keye.key?1:0,eo=class t{constructor({compat:e,customTags:n,merge:i,resolveKnownTags:r,schema:o,sortMapEntries:s,toStringDefaults:a}){this.compat=Array.isArray(e)?ui.getTags(e,"compat"):e?ui.getTags(null,e):null,this.name=typeof o=="string"&&o||"core",this.knownTags=r?ui.coreKnownTags:{},this.tags=ui.getTags(n,this.name,i),this.toStringOptions=a??null,Object.defineProperty(this,Zr.MAP,{value:yp.map}),Object.defineProperty(this,Zr.SCALAR,{value:kp.string}),Object.defineProperty(this,Zr.SEQ,{value:vp.seq}),this.sortMapEntries=typeof s=="function"?s:s===!0?bp:null}clone(){let e=Object.create(t.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}};Za.Schema=eo});var tc=v(ec=>{"use strict";var Sp=x(),no=Lt(),Ht=Tt();function Cp(t,e){let n=[],i=e.directives===!0;if(e.directives!==!1&&t.directives){let c=t.directives.toString(t);c?(n.push(c),i=!0):t.directives.docStart&&(i=!0)}i&&n.push("---");let r=no.createStringifyContext(t,e),{commentString:o}=r.options;if(t.commentBefore){n.length!==1&&n.unshift("");let c=o(t.commentBefore);n.unshift(Ht.indentComment(c,""))}let s=!1,a=null;if(t.contents){if(Sp.isNode(t.contents)){if(t.contents.spaceBefore&&i&&n.push(""),t.contents.commentBefore){let u=o(t.contents.commentBefore);n.push(Ht.indentComment(u,""))}r.forceBlockIndent=!!t.comment,a=t.contents.comment}let c=a?void 0:()=>s=!0,l=no.stringify(t.contents,r,()=>a=null,c);a&&(l+=Ht.lineComment(l,"",o(a))),(l[0]==="|"||l[0]===">")&&n[n.length-1]==="---"?n[n.length-1]=`--- ${l}`:n.push(l)}else n.push(no.stringify(t.contents,r));if(t.directives?.docEnd)if(t.comment){let c=o(t.comment);c.includes(` -`)?(n.push("..."),n.push(Ht.indentComment(c,""))):n.push(`... ${c}`)}else n.push("...");else{let c=t.comment;c&&s&&(c=c.replace(/^\n+/,"")),c&&((!s||a)&&n[n.length-1]!==""&&n.push(""),n.push(Ht.indentComment(o(c),"")))}return n.join(` +${o.comment}`:i.comment}i=r}t.items[n]=Zn.isPair(i)?i:new Lr.Pair(i)}}else e("Expected a sequence for this tag");return t}function Ra(t,e,n){let{replacer:i}=n,r=new Md.YAMLSeq(t);r.tag="tag:yaml.org,2002:pairs";let o=0;if(e&&Symbol.iterator in Object(e))for(let s of e){typeof i=="function"&&(s=i.call(e,String(o++),s));let a,c;if(Array.isArray(s))if(s.length===2)a=s[0],c=s[1];else throw new TypeError(`Expected [key, value] tuple: ${s}`);else if(s&&s instanceof Object){let l=Object.keys(s);if(l.length===1)a=l[0],c=s[a];else throw new TypeError(`Expected tuple with one key, not ${l.length} keys`)}else a=s;r.items.push(Lr.createPair(a,c,n))}return r}var Bd={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:Pa,createNode:Ra};ei.createPairs=Ra;ei.pairs=Bd;ei.resolvePairs=Pa});var Wr=k(Fr=>{"use strict";var Na=_(),Dr=Se(),Kt=Re(),Kd=Ne(),Oa=ti(),Ve=class t extends Kd.YAMLSeq{constructor(){super(),this.add=Kt.YAMLMap.prototype.add.bind(this),this.delete=Kt.YAMLMap.prototype.delete.bind(this),this.get=Kt.YAMLMap.prototype.get.bind(this),this.has=Kt.YAMLMap.prototype.has.bind(this),this.set=Kt.YAMLMap.prototype.set.bind(this),this.tag=t.tag}toJSON(e,n){if(!n)return super.toJSON(e);let i=new Map;n?.onCreate&&n.onCreate(i);for(let r of this.items){let o,s;if(Na.isPair(r)?(o=Dr.toJS(r.key,"",n),s=Dr.toJS(r.value,o,n)):o=Dr.toJS(r,"",n),i.has(o))throw new Error("Ordered maps must not include duplicate keys");i.set(o,s)}return i}static from(e,n,i){let r=Oa.createPairs(e,n,i),o=new this;return o.items=r.items,o}};Ve.tag="tag:yaml.org,2002:omap";var Ud={collection:"seq",identify:t=>t instanceof Map,nodeClass:Ve,default:!1,tag:"tag:yaml.org,2002:omap",resolve(t,e){let n=Oa.resolvePairs(t,e),i=[];for(let{key:r}of n.items)Na.isScalar(r)&&(i.includes(r.value)?e(`Ordered maps must not include duplicate keys: ${r.value}`):i.push(r.value));return Object.assign(new Ve,n)},createNode:(t,e,n)=>Ve.from(t,e,n)};Fr.YAMLOMap=Ve;Fr.omap=Ud});var qa=k(Mr=>{"use strict";var Aa=j();function ja({value:t,source:e},n){return e&&(t?Ta:Ia).test.test(e)?e:t?n.options.trueStr:n.options.falseStr}var Ta={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 Aa.Scalar(!0),stringify:ja},Ia={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 Aa.Scalar(!1),stringify:ja};Mr.falseTag=Ia;Mr.trueTag=Ta});var $a=k(ni=>{"use strict";var Yd=j(),Br=lt(),Hd={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:Br.stringifyNumber},Jd={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():Br.stringifyNumber(t)}},Vd={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 Yd.Scalar(parseFloat(t.replace(/_/g,""))),n=t.indexOf(".");if(n!==-1){let i=t.substring(n+1).replace(/_/g,"");i[i.length-1]==="0"&&(e.minFractionDigits=i.length)}return e},stringify:Br.stringifyNumber};ni.float=Vd;ni.floatExp=Jd;ni.floatNaN=Hd});var Da=k(Yt=>{"use strict";var La=lt(),Ut=t=>typeof t=="bigint"||Number.isInteger(t);function ii(t,e,n,{intAsBigInt:i}){let r=t[0];if((r==="-"||r==="+")&&(e+=1),t=t.substring(e).replace(/_/g,""),i){switch(n){case 2:t=`0b${t}`;break;case 8:t=`0o${t}`;break;case 16:t=`0x${t}`;break}let s=BigInt(t);return r==="-"?BigInt(-1)*s:s}let o=parseInt(t,n);return r==="-"?-1*o:o}function Kr(t,e,n){let{value:i}=t;if(Ut(i)){let r=i.toString(e);return i<0?"-"+n+r.substr(1):n+r}return La.stringifyNumber(t)}var Gd={identify:Ut,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(t,e,n)=>ii(t,2,2,n),stringify:t=>Kr(t,2,"0b")},zd={identify:Ut,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(t,e,n)=>ii(t,1,8,n),stringify:t=>Kr(t,8,"0")},Qd={identify:Ut,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(t,e,n)=>ii(t,0,10,n),stringify:La.stringifyNumber},Xd={identify:Ut,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(t,e,n)=>ii(t,2,16,n),stringify:t=>Kr(t,16,"0x")};Yt.int=Qd;Yt.intBin=Gd;Yt.intHex=Xd;Yt.intOct=zd});var Yr=k(Ur=>{"use strict";var si=_(),ri=xe(),oi=Re(),Ge=class t extends oi.YAMLMap{constructor(e){super(e),this.tag=t.tag}add(e){let n;si.isPair(e)?n=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?n=new ri.Pair(e.key,null):n=new ri.Pair(e,null),oi.findPair(this.items,n.key)||this.items.push(n)}get(e,n){let i=oi.findPair(this.items,e);return!n&&si.isPair(i)?si.isScalar(i.key)?i.key.value:i.key:i}set(e,n){if(typeof n!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof n}`);let i=oi.findPair(this.items,e);i&&!n?this.items.splice(this.items.indexOf(i),1):!i&&n&&this.items.push(new ri.Pair(e))}toJSON(e,n){return super.toJSON(e,n,Set)}toString(e,n,i){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),n,i);throw new Error("Set items must all have null values")}static from(e,n,i){let{replacer:r}=i,o=new this(e);if(n&&Symbol.iterator in Object(n))for(let s of n)typeof r=="function"&&(s=r.call(n,s,s)),o.items.push(ri.createPair(s,null,i));return o}};Ge.tag="tag:yaml.org,2002:set";var Zd={collection:"map",identify:t=>t instanceof Set,nodeClass:Ge,default:!1,tag:"tag:yaml.org,2002:set",createNode:(t,e,n)=>Ge.from(t,e,n),resolve(t,e){if(si.isMap(t)){if(t.hasAllNullValues(!0))return Object.assign(new Ge,t);e("Set items must all have null values")}else e("Expected a mapping for this tag");return t}};Ur.YAMLSet=Ge;Ur.set=Zd});var Jr=k(ai=>{"use strict";var ep=lt();function Hr(t,e){let n=t[0],i=n==="-"||n==="+"?t.substring(1):t,r=s=>e?BigInt(s):Number(s),o=i.replace(/_/g,"").split(":").reduce((s,a)=>s*r(60)+r(a),r(0));return n==="-"?r(-1)*o:o}function Fa(t){let{value:e}=t,n=s=>s;if(typeof e=="bigint")n=s=>BigInt(s);else if(isNaN(e)||!isFinite(e))return ep.stringifyNumber(t);let i="";e<0&&(i="-",e*=n(-1));let r=n(60),o=[e%r];return e<60?o.unshift(0):(e=(e-o[0])/r,o.unshift(e%r),e>=60&&(e=(e-o[0])/r,o.unshift(e))),i+o.map(s=>String(s).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}var tp={identify:t=>typeof t=="bigint"||Number.isInteger(t),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(t,e,{intAsBigInt:n})=>Hr(t,n),stringify:Fa},np={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:t=>Hr(t,!1),stringify:Fa},Wa={identify:t=>t instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(t){let e=t.match(Wa.test);if(!e)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,n,i,r,o,s,a]=e.map(Number),c=e[7]?Number((e[7]+"00").substr(1,3)):0,l=Date.UTC(n,i-1,r,o||0,s||0,a||0,c),u=e[8];if(u&&u!=="Z"){let f=Hr(u,!1);Math.abs(f)<30&&(f*=60),l-=6e4*f}return new Date(l)},stringify:({value:t})=>t?.toISOString().replace(/(T00:00:00)?\.000Z$/,"")??""};ai.floatTime=np;ai.intTime=tp;ai.timestamp=Wa});var Ka=k(Ba=>{"use strict";var ip=at(),rp=Vn(),op=ct(),sp=Mt(),ap=$r(),Ma=qa(),Vr=$a(),ci=Da(),cp=Wn(),lp=Wr(),up=ti(),fp=Yr(),Gr=Jr(),dp=[ip.map,op.seq,sp.string,rp.nullTag,Ma.trueTag,Ma.falseTag,ci.intBin,ci.intOct,ci.int,ci.intHex,Vr.floatNaN,Vr.floatExp,Vr.float,ap.binary,cp.merge,lp.omap,up.pairs,fp.set,Gr.intTime,Gr.floatTime,Gr.timestamp];Ba.schema=dp});var Za=k(Xr=>{"use strict";var Ja=at(),pp=Vn(),Va=ct(),mp=Mt(),hp=Rr(),zr=Or(),Qr=jr(),gp=Sa(),wp=_a(),Ga=$r(),Ht=Wn(),za=Wr(),Qa=ti(),Ua=Ka(),Xa=Yr(),li=Jr(),Ya=new Map([["core",gp.schema],["failsafe",[Ja.map,Va.seq,mp.string]],["json",wp.schema],["yaml11",Ua.schema],["yaml-1.1",Ua.schema]]),Ha={binary:Ga.binary,bool:hp.boolTag,float:zr.float,floatExp:zr.floatExp,floatNaN:zr.floatNaN,floatTime:li.floatTime,int:Qr.int,intHex:Qr.intHex,intOct:Qr.intOct,intTime:li.intTime,map:Ja.map,merge:Ht.merge,null:pp.nullTag,omap:za.omap,pairs:Qa.pairs,seq:Va.seq,set:Xa.set,timestamp:li.timestamp},yp={"tag:yaml.org,2002:binary":Ga.binary,"tag:yaml.org,2002:merge":Ht.merge,"tag:yaml.org,2002:omap":za.omap,"tag:yaml.org,2002:pairs":Qa.pairs,"tag:yaml.org,2002:set":Xa.set,"tag:yaml.org,2002:timestamp":li.timestamp};function vp(t,e,n){let i=Ya.get(e);if(i&&!t)return n&&!i.includes(Ht.merge)?i.concat(Ht.merge):i.slice();let r=i;if(!r)if(Array.isArray(t))r=[];else{let o=Array.from(Ya.keys()).filter(s=>s!=="yaml11").map(s=>JSON.stringify(s)).join(", ");throw new Error(`Unknown schema "${e}"; use one of ${o} or define customTags array`)}if(Array.isArray(t))for(let o of t)r=r.concat(o);else typeof t=="function"&&(r=t(r.slice()));return n&&(r=r.concat(Ht.merge)),r.reduce((o,s)=>{let a=typeof s=="string"?Ha[s]:s;if(!a){let c=JSON.stringify(s),l=Object.keys(Ha).map(u=>JSON.stringify(u)).join(", ");throw new Error(`Unknown custom tag ${c}; use one of ${l}`)}return o.includes(a)||o.push(a),o},[])}Xr.coreKnownTags=yp;Xr.getTags=vp});var to=k(ec=>{"use strict";var Zr=_(),kp=at(),bp=ct(),Sp=Mt(),ui=Za(),Cp=(t,e)=>t.keye.key?1:0,eo=class t{constructor({compat:e,customTags:n,merge:i,resolveKnownTags:r,schema:o,sortMapEntries:s,toStringDefaults:a}){this.compat=Array.isArray(e)?ui.getTags(e,"compat"):e?ui.getTags(null,e):null,this.name=typeof o=="string"&&o||"core",this.knownTags=r?ui.coreKnownTags:{},this.tags=ui.getTags(n,this.name,i),this.toStringOptions=a??null,Object.defineProperty(this,Zr.MAP,{value:kp.map}),Object.defineProperty(this,Zr.SCALAR,{value:Sp.string}),Object.defineProperty(this,Zr.SEQ,{value:bp.seq}),this.sortMapEntries=typeof s=="function"?s:s===!0?Cp:null}clone(){let e=Object.create(t.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}};ec.Schema=eo});var nc=k(tc=>{"use strict";var Ep=_(),no=Dt(),Jt=It();function _p(t,e){let n=[],i=e.directives===!0;if(e.directives!==!1&&t.directives){let c=t.directives.toString(t);c?(n.push(c),i=!0):t.directives.docStart&&(i=!0)}i&&n.push("---");let r=no.createStringifyContext(t,e),{commentString:o}=r.options;if(t.commentBefore){n.length!==1&&n.unshift("");let c=o(t.commentBefore);n.unshift(Jt.indentComment(c,""))}let s=!1,a=null;if(t.contents){if(Ep.isNode(t.contents)){if(t.contents.spaceBefore&&i&&n.push(""),t.contents.commentBefore){let u=o(t.contents.commentBefore);n.push(Jt.indentComment(u,""))}r.forceBlockIndent=!!t.comment,a=t.contents.comment}let c=a?void 0:()=>s=!0,l=no.stringify(t.contents,r,()=>a=null,c);a&&(l+=Jt.lineComment(l,"",o(a))),(l[0]==="|"||l[0]===">")&&n[n.length-1]==="---"?n[n.length-1]=`--- ${l}`:n.push(l)}else n.push(no.stringify(t.contents,r));if(t.directives?.docEnd)if(t.comment){let c=o(t.comment);c.includes(` +`)?(n.push("..."),n.push(Jt.indentComment(c,""))):n.push(`... ${c}`)}else n.push("...");else{let c=t.comment;c&&s&&(c=c.replace(/^\n+/,"")),c&&((!s||a)&&n[n.length-1]!==""&&n.push(""),n.push(Jt.indentComment(o(c),"")))}return n.join(` `)+` -`}ec.stringifyDocument=Cp});var Jt=v(nc=>{"use strict";var Ep=At(),ut=On(),Q=x(),_p=_e(),xp=be(),Pp=to(),Rp=tc(),io=xn(),Np=ar(),Op=jt(),ro=sr(),oo=class t{constructor(e,n,i){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,Q.NODE_TYPE,{value:Q.DOC});let r=null;typeof n=="function"||Array.isArray(n)?r=n:i===void 0&&n&&(i=n,n=void 0);let o=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},i);this.options=o;let{version:s}=o;i?._directives?(this.directives=i._directives.atDocument(),this.directives.yaml.explicit&&(s=this.directives.yaml.version)):this.directives=new ro.Directives({version:s}),this.setSchema(s,i),this.contents=e===void 0?null:this.createNode(e,r,i)}clone(){let e=Object.create(t.prototype,{[Q.NODE_TYPE]:{value:Q.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=Q.isNode(this.contents)?this.contents.clone(e.schema):this.contents,this.range&&(e.range=this.range.slice()),e}add(e){ft(this.contents)&&this.contents.add(e)}addIn(e,n){ft(this.contents)&&this.contents.addIn(e,n)}createAlias(e,n){if(!e.anchor){let i=io.anchorNames(this);e.anchor=!n||i.has(n)?io.findNewAnchor(n||"a",i):n}return new Ep.Alias(e.anchor)}createNode(e,n,i){let r;if(typeof n=="function")e=n.call({"":e},"",e),r=n;else if(Array.isArray(n)){let m=g=>typeof g=="number"||g instanceof String||g instanceof Number,y=n.filter(m).map(String);y.length>0&&(n=n.concat(y)),r=n}else i===void 0&&n&&(i=n,n=void 0);let{aliasDuplicateObjects:o,anchorPrefix:s,flow:a,keepUndefined:c,onTagObj:l,tag:u}=i??{},{onAnchor:f,setAnchors:d,sourceObjects:h}=io.createNodeAnchors(this,s||"a"),w={aliasDuplicateObjects:o??!0,keepUndefined:c??!1,onAnchor:f,onTagObj:l,replacer:r,schema:this.schema,sourceObjects:h},p=Op.createNode(e,u,w);return a&&Q.isCollection(p)&&(p.flow=!0),d(),p}createPair(e,n,i={}){let r=this.createNode(e,null,i),o=this.createNode(n,null,i);return new _p.Pair(r,o)}delete(e){return ft(this.contents)?this.contents.delete(e):!1}deleteIn(e){return ut.isEmptyPath(e)?this.contents==null?!1:(this.contents=null,!0):ft(this.contents)?this.contents.deleteIn(e):!1}get(e,n){return Q.isCollection(this.contents)?this.contents.get(e,n):void 0}getIn(e,n){return ut.isEmptyPath(e)?!n&&Q.isScalar(this.contents)?this.contents.value:this.contents:Q.isCollection(this.contents)?this.contents.getIn(e,n):void 0}has(e){return Q.isCollection(this.contents)?this.contents.has(e):!1}hasIn(e){return ut.isEmptyPath(e)?this.contents!==void 0:Q.isCollection(this.contents)?this.contents.hasIn(e):!1}set(e,n){this.contents==null?this.contents=ut.collectionFromPath(this.schema,[e],n):ft(this.contents)&&this.contents.set(e,n)}setIn(e,n){ut.isEmptyPath(e)?this.contents=n:this.contents==null?this.contents=ut.collectionFromPath(this.schema,Array.from(e),n):ft(this.contents)&&this.contents.setIn(e,n)}setSchema(e,n={}){typeof e=="number"&&(e=String(e));let i;switch(e){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new ro.Directives({version:"1.1"}),i={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=e:this.directives=new ro.Directives({version:e}),i={resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,i=null;break;default:{let r=JSON.stringify(e);throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${r}`)}}if(n.schema instanceof Object)this.schema=n.schema;else if(i)this.schema=new Pp.Schema(Object.assign(i,n));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:e,jsonArg:n,mapAsMap:i,maxAliasCount:r,onAnchor:o,reviver:s}={}){let a={anchors:new Map,doc:this,keep:!e,mapAsMap:i===!0,mapKeyWarned:!1,maxAliasCount:typeof r=="number"?r:100},c=xp.toJS(this.contents,n??"",a);if(typeof o=="function")for(let{count:l,res:u}of a.anchors.values())o(u,l);return typeof s=="function"?Np.applyReviver(s,{"":c},"",c):c}toJSON(e,n){return this.toJS({json:!0,jsonArg:e,mapAsMap:!1,onAnchor:n})}toString(e={}){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");if("indent"in e&&(!Number.isInteger(e.indent)||Number(e.indent)<=0)){let n=JSON.stringify(e.indent);throw new Error(`"indent" option must be a positive integer, not ${n}`)}return Rp.stringifyDocument(this,e)}};function ft(t){if(Q.isCollection(t))return!0;throw new Error("Expected a YAML collection as document contents")}nc.Document=oo});var zt=v(Gt=>{"use strict";var Vt=class extends Error{constructor(e,n,i,r){super(),this.name=e,this.code=i,this.message=r,this.pos=n}},so=class extends Vt{constructor(e,n,i){super("YAMLParseError",e,n,i)}},ao=class extends Vt{constructor(e,n,i){super("YAMLWarning",e,n,i)}},Ap=(t,e)=>n=>{if(n.pos[0]===-1)return;n.linePos=n.pos.map(a=>e.linePos(a));let{line:i,col:r}=n.linePos[0];n.message+=` at line ${i}, column ${r}`;let o=r-1,s=t.substring(e.lineStarts[i-1],e.lineStarts[i]).replace(/[\n\r]+$/,"");if(o>=60&&s.length>80){let a=Math.min(o-39,s.length-79);s="…"+s.substring(a),o-=a-1}if(s.length>80&&(s=s.substring(0,79)+"…"),i>1&&/^ *$/.test(s.substring(0,o))){let a=t.substring(e.lineStarts[i-2],e.lineStarts[i-1]);a.length>80&&(a=a.substring(0,79)+`… +`}tc.stringifyDocument=_p});var Vt=k(ic=>{"use strict";var xp=jt(),ut=On(),z=_(),Pp=xe(),Rp=Se(),Np=to(),Op=nc(),io=xn(),Ap=ar(),jp=Tt(),ro=sr(),oo=class t{constructor(e,n,i){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,z.NODE_TYPE,{value:z.DOC});let r=null;typeof n=="function"||Array.isArray(n)?r=n:i===void 0&&n&&(i=n,n=void 0);let o=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},i);this.options=o;let{version:s}=o;i?._directives?(this.directives=i._directives.atDocument(),this.directives.yaml.explicit&&(s=this.directives.yaml.version)):this.directives=new ro.Directives({version:s}),this.setSchema(s,i),this.contents=e===void 0?null:this.createNode(e,r,i)}clone(){let e=Object.create(t.prototype,{[z.NODE_TYPE]:{value:z.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=z.isNode(this.contents)?this.contents.clone(e.schema):this.contents,this.range&&(e.range=this.range.slice()),e}add(e){ft(this.contents)&&this.contents.add(e)}addIn(e,n){ft(this.contents)&&this.contents.addIn(e,n)}createAlias(e,n){if(!e.anchor){let i=io.anchorNames(this);e.anchor=!n||i.has(n)?io.findNewAnchor(n||"a",i):n}return new xp.Alias(e.anchor)}createNode(e,n,i){let r;if(typeof n=="function")e=n.call({"":e},"",e),r=n;else if(Array.isArray(n)){let h=y=>typeof y=="number"||y instanceof String||y instanceof Number,w=n.filter(h).map(String);w.length>0&&(n=n.concat(w)),r=n}else i===void 0&&n&&(i=n,n=void 0);let{aliasDuplicateObjects:o,anchorPrefix:s,flow:a,keepUndefined:c,onTagObj:l,tag:u}=i??{},{onAnchor:f,setAnchors:d,sourceObjects:m}=io.createNodeAnchors(this,s||"a"),g={aliasDuplicateObjects:o??!0,keepUndefined:c??!1,onAnchor:f,onTagObj:l,replacer:r,schema:this.schema,sourceObjects:m},p=jp.createNode(e,u,g);return a&&z.isCollection(p)&&(p.flow=!0),d(),p}createPair(e,n,i={}){let r=this.createNode(e,null,i),o=this.createNode(n,null,i);return new Pp.Pair(r,o)}delete(e){return ft(this.contents)?this.contents.delete(e):!1}deleteIn(e){return ut.isEmptyPath(e)?this.contents==null?!1:(this.contents=null,!0):ft(this.contents)?this.contents.deleteIn(e):!1}get(e,n){return z.isCollection(this.contents)?this.contents.get(e,n):void 0}getIn(e,n){return ut.isEmptyPath(e)?!n&&z.isScalar(this.contents)?this.contents.value:this.contents:z.isCollection(this.contents)?this.contents.getIn(e,n):void 0}has(e){return z.isCollection(this.contents)?this.contents.has(e):!1}hasIn(e){return ut.isEmptyPath(e)?this.contents!==void 0:z.isCollection(this.contents)?this.contents.hasIn(e):!1}set(e,n){this.contents==null?this.contents=ut.collectionFromPath(this.schema,[e],n):ft(this.contents)&&this.contents.set(e,n)}setIn(e,n){ut.isEmptyPath(e)?this.contents=n:this.contents==null?this.contents=ut.collectionFromPath(this.schema,Array.from(e),n):ft(this.contents)&&this.contents.setIn(e,n)}setSchema(e,n={}){typeof e=="number"&&(e=String(e));let i;switch(e){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new ro.Directives({version:"1.1"}),i={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=e:this.directives=new ro.Directives({version:e}),i={resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,i=null;break;default:{let r=JSON.stringify(e);throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${r}`)}}if(n.schema instanceof Object)this.schema=n.schema;else if(i)this.schema=new Np.Schema(Object.assign(i,n));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:e,jsonArg:n,mapAsMap:i,maxAliasCount:r,onAnchor:o,reviver:s}={}){let a={anchors:new Map,doc:this,keep:!e,mapAsMap:i===!0,mapKeyWarned:!1,maxAliasCount:typeof r=="number"?r:100},c=Rp.toJS(this.contents,n??"",a);if(typeof o=="function")for(let{count:l,res:u}of a.anchors.values())o(u,l);return typeof s=="function"?Ap.applyReviver(s,{"":c},"",c):c}toJSON(e,n){return this.toJS({json:!0,jsonArg:e,mapAsMap:!1,onAnchor:n})}toString(e={}){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");if("indent"in e&&(!Number.isInteger(e.indent)||Number(e.indent)<=0)){let n=JSON.stringify(e.indent);throw new Error(`"indent" option must be a positive integer, not ${n}`)}return Op.stringifyDocument(this,e)}};function ft(t){if(z.isCollection(t))return!0;throw new Error("Expected a YAML collection as document contents")}ic.Document=oo});var Qt=k(zt=>{"use strict";var Gt=class extends Error{constructor(e,n,i,r){super(),this.name=e,this.code=i,this.message=r,this.pos=n}},so=class extends Gt{constructor(e,n,i){super("YAMLParseError",e,n,i)}},ao=class extends Gt{constructor(e,n,i){super("YAMLWarning",e,n,i)}},Tp=(t,e)=>n=>{if(n.pos[0]===-1)return;n.linePos=n.pos.map(a=>e.linePos(a));let{line:i,col:r}=n.linePos[0];n.message+=` at line ${i}, column ${r}`;let o=r-1,s=t.substring(e.lineStarts[i-1],e.lineStarts[i]).replace(/[\n\r]+$/,"");if(o>=60&&s.length>80){let a=Math.min(o-39,s.length-79);s="…"+s.substring(a),o-=a-1}if(s.length>80&&(s=s.substring(0,79)+"…"),i>1&&/^ *$/.test(s.substring(0,o))){let a=t.substring(e.lineStarts[i-2],e.lineStarts[i-1]);a.length>80&&(a=a.substring(0,79)+`… `),s=a+s}if(/[^ ]/.test(s)){let a=1,c=n.linePos[1];c?.line===i&&c.col>r&&(a=Math.max(1,Math.min(c.col-r,80-o)));let l=" ".repeat(o)+"^".repeat(a);n.message+=`: ${s} ${l} -`}};Gt.YAMLError=Vt;Gt.YAMLParseError=so;Gt.YAMLWarning=ao;Gt.prettifyError=Ap});var Qt=v(ic=>{"use strict";function jp(t,{flow:e,indicator:n,next:i,offset:r,onError:o,parentIndent:s,startOnNewline:a}){let c=!1,l=a,u=a,f="",d="",h=!1,w=!1,p=null,m=null,y=null,g=null,b=null,S=null,C=null;for(let k of t)switch(w&&(k.type!=="space"&&k.type!=="newline"&&k.type!=="comma"&&o(k.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),w=!1),p&&(l&&k.type!=="comment"&&k.type!=="newline"&&o(p,"TAB_AS_INDENT","Tabs are not allowed as indentation"),p=null),k.type){case"space":!e&&(n!=="doc-start"||i?.type!=="flow-collection")&&k.source.includes(" ")&&(p=k),u=!0;break;case"comment":{u||o(k,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let A=k.source.substring(1)||" ";f?f+=d+A:f=A,d="",l=!1;break}case"newline":l?f?f+=k.source:(!S||n!=="seq-item-ind")&&(c=!0):d+=k.source,l=!0,h=!0,(m||y)&&(g=k),u=!0;break;case"anchor":m&&o(k,"MULTIPLE_ANCHORS","A node can have at most one anchor"),k.source.endsWith(":")&&o(k.offset+k.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0),m=k,C??(C=k.offset),l=!1,u=!1,w=!0;break;case"tag":{y&&o(k,"MULTIPLE_TAGS","A node can have at most one tag"),y=k,C??(C=k.offset),l=!1,u=!1,w=!0;break}case n:(m||y)&&o(k,"BAD_PROP_ORDER",`Anchors and tags must be after the ${k.source} indicator`),S&&o(k,"UNEXPECTED_TOKEN",`Unexpected ${k.source} in ${e??"collection"}`),S=k,l=n==="seq-item-ind"||n==="explicit-key-ind",u=!1;break;case"comma":if(e){b&&o(k,"UNEXPECTED_TOKEN",`Unexpected , in ${e}`),b=k,l=!1,u=!1;break}default:o(k,"UNEXPECTED_TOKEN",`Unexpected ${k.type} token`),l=!1,u=!1}let E=t[t.length-1],_=E?E.offset+E.source.length:r;return w&&i&&i.type!=="space"&&i.type!=="newline"&&i.type!=="comma"&&(i.type!=="scalar"||i.source!=="")&&o(i.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),p&&(l&&p.indent<=s||i?.type==="block-map"||i?.type==="block-seq")&&o(p,"TAB_AS_INDENT","Tabs are not allowed as indentation"),{comma:b,found:S,spaceBefore:c,comment:f,hasNewline:h,anchor:m,tag:y,newlineAfterProp:g,end:_,start:C??_}}ic.resolveProps=jp});var fi=v(rc=>{"use strict";function co(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 n of e.start)if(n.type==="newline")return!0;if(e.sep){for(let n of e.sep)if(n.type==="newline")return!0}if(co(e.key)||co(e.value))return!0}return!1;default:return!0}}rc.containsNewline=co});var lo=v(oc=>{"use strict";var Tp=fi();function Ip(t,e,n){if(e?.type==="flow-collection"){let i=e.end[0];i.indent===t&&(i.source==="]"||i.source==="}")&&Tp.containsNewline(e)&&n(i,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}oc.flowIndentCheck=Ip});var uo=v(ac=>{"use strict";var sc=x();function qp(t,e,n){let{uniqueKeys:i}=t.options;if(i===!1)return!1;let r=typeof i=="function"?i:(o,s)=>o===s||sc.isScalar(o)&&sc.isScalar(s)&&o.value===s.value;return e.some(o=>r(o.key,n))}ac.mapIncludes=qp});var pc=v(dc=>{"use strict";var cc=_e(),$p=Pe(),lc=Qt(),Lp=fi(),uc=lo(),Dp=uo(),fc="All mapping items must start at the same column";function Fp({composeNode:t,composeEmptyNode:e},n,i,r,o){let s=o?.nodeClass??$p.YAMLMap,a=new s(n.schema);n.atRoot&&(n.atRoot=!1);let c=i.offset,l=null;for(let u of i.items){let{start:f,key:d,sep:h,value:w}=u,p=lc.resolveProps(f,{indicator:"explicit-key-ind",next:d??h?.[0],offset:c,onError:r,parentIndent:i.indent,startOnNewline:!0}),m=!p.found;if(m){if(d&&(d.type==="block-seq"?r(c,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key"):"indent"in d&&d.indent!==i.indent&&r(c,"BAD_INDENT",fc)),!p.anchor&&!p.tag&&!h){l=p.end,p.comment&&(a.comment?a.comment+=` -`+p.comment:a.comment=p.comment);continue}(p.newlineAfterProp||Lp.containsNewline(d))&&r(d??f[f.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else p.found?.indent!==i.indent&&r(c,"BAD_INDENT",fc);n.atKey=!0;let y=p.end,g=d?t(n,d,p,r):e(n,y,f,null,p,r);n.schema.compat&&uc.flowIndentCheck(i.indent,d,r),n.atKey=!1,Dp.mapIncludes(n,a.items,g)&&r(y,"DUPLICATE_KEY","Map keys must be unique");let b=lc.resolveProps(h??[],{indicator:"map-value-ind",next:w,offset:g.range[2],onError:r,parentIndent:i.indent,startOnNewline:!d||d.type==="block-scalar"});if(c=b.end,b.found){m&&(w?.type==="block-map"&&!b.hasNewline&&r(c,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),n.options.strict&&p.start{"use strict";var Wp=Re(),Mp=Qt(),Bp=lo();function Kp({composeNode:t,composeEmptyNode:e},n,i,r,o){let s=o?.nodeClass??Wp.YAMLSeq,a=new s(n.schema);n.atRoot&&(n.atRoot=!1),n.atKey&&(n.atKey=!1);let c=i.offset,l=null;for(let{start:u,value:f}of i.items){let d=Mp.resolveProps(u,{indicator:"seq-item-ind",next:f,offset:c,onError:r,parentIndent:i.indent,startOnNewline:!0});if(!d.found)if(d.anchor||d.tag||f)f?.type==="block-seq"?r(d.end,"BAD_INDENT","All sequence items must start at the same column"):r(c,"MISSING_CHAR","Sequence item without - indicator");else{l=d.end,d.comment&&(a.comment=d.comment);continue}let h=f?t(n,f,d,r):e(n,d.end,u,null,d,r);n.schema.compat&&Bp.flowIndentCheck(i.indent,f,r),c=h.range[2],a.items.push(h)}return a.range=[i.offset,c,l??c],a}mc.resolveBlockSeq=Kp});var dt=v(gc=>{"use strict";function Up(t,e,n,i){let r="";if(t){let o=!1,s="";for(let a of t){let{source:c,type:l}=a;switch(l){case"space":o=!0;break;case"comment":{n&&!o&&i(a,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let u=c.substring(1)||" ";r?r+=s+u:r=u,s="";break}case"newline":r&&(s+=c),o=!0;break;default:i(a,"UNEXPECTED_TOKEN",`Unexpected ${l} at node end`)}e+=c.length}}return{comment:r,offset:e}}gc.resolveEnd=Up});var kc=v(vc=>{"use strict";var Yp=x(),Hp=_e(),wc=Pe(),Jp=Re(),Vp=dt(),yc=Qt(),Gp=fi(),zp=uo(),fo="Block collections are not allowed within flow collections",po=t=>t&&(t.type==="block-map"||t.type==="block-seq");function Qp({composeNode:t,composeEmptyNode:e},n,i,r,o){let s=i.start.source==="{",a=s?"flow map":"flow sequence",c=o?.nodeClass??(s?wc.YAMLMap:Jp.YAMLSeq),l=new c(n.schema);l.flow=!0;let u=n.atRoot;u&&(n.atRoot=!1),n.atKey&&(n.atKey=!1);let f=i.offset+i.start.source.length;for(let m=0;m0){let m=Vp.resolveEnd(w,p,n.options.strict,r);m.comment&&(l.comment?l.comment+=` -`+m.comment:l.comment=m.comment),l.range=[i.offset,p,m.offset]}else l.range=[i.offset,p,p];return l}vc.resolveFlowCollection=Qp});var Sc=v(bc=>{"use strict";var Xp=x(),Zp=j(),em=Pe(),tm=Re(),nm=pc(),im=hc(),rm=kc();function mo(t,e,n,i,r,o){let s=n.type==="block-map"?nm.resolveBlockMap(t,e,n,i,o):n.type==="block-seq"?im.resolveBlockSeq(t,e,n,i,o):rm.resolveFlowCollection(t,e,n,i,o),a=s.constructor;return r==="!"||r===a.tagName?(s.tag=a.tagName,s):(r&&(s.tag=r),s)}function om(t,e,n,i,r){let o=i.tag,s=o?e.directives.tagName(o.source,d=>r(o,"TAG_RESOLVE_FAILED",d)):null;if(n.type==="block-seq"){let{anchor:d,newlineAfterProp:h}=i,w=d&&o?d.offset>o.offset?d:o:d??o;w&&(!h||h.offsetd.tag===s&&d.collection===a);if(!c){let d=e.schema.knownTags[s];if(d?.collection===a)e.schema.tags.push(Object.assign({},d,{default:!1})),c=d;else return d?r(o,"BAD_COLLECTION_TYPE",`${d.tag} used for ${a} collection, but expects ${d.collection??"scalar"}`,!0):r(o,"TAG_RESOLVE_FAILED",`Unresolved tag: ${s}`,!0),mo(t,e,n,r,s)}let l=mo(t,e,n,r,s,c),u=c.resolve?.(l,d=>r(o,"TAG_RESOLVE_FAILED",d),e.options)??l,f=Xp.isNode(u)?u:new Zp.Scalar(u);return f.range=l.range,f.tag=s,c?.format&&(f.format=c.format),f}bc.composeCollection=om});var go=v(Cc=>{"use strict";var ho=j();function sm(t,e,n){let i=e.offset,r=am(e,t.options.strict,n);if(!r)return{value:"",type:null,comment:"",range:[i,i,i]};let o=r.mode===">"?ho.Scalar.BLOCK_FOLDED:ho.Scalar.BLOCK_LITERAL,s=e.source?cm(e.source):[],a=s.length;for(let p=s.length-1;p>=0;--p){let m=s[p][1];if(m===""||m==="\r")a=p;else break}if(a===0){let p=r.chomp==="+"&&s.length>0?` -`.repeat(Math.max(1,s.length-1)):"",m=i+r.length;return e.source&&(m+=e.source.length),{value:p,type:o,comment:r.comment,range:[i,m,m]}}let c=e.indent+r.indent,l=e.offset+r.length,u=0;for(let p=0;pc&&(c=m.length);else{m.length=a;--p)s[p][0].length>c&&(a=p+1);let f="",d="",h=!1;for(let p=0;pc||y[0]===" "?(d===" "?d=` -`:!h&&d===` +`}};zt.YAMLError=Gt;zt.YAMLParseError=so;zt.YAMLWarning=ao;zt.prettifyError=Tp});var Xt=k(rc=>{"use strict";function Ip(t,{flow:e,indicator:n,next:i,offset:r,onError:o,parentIndent:s,startOnNewline:a}){let c=!1,l=a,u=a,f="",d="",m=!1,g=!1,p=null,h=null,w=null,y=null,b=null,S=null,C=null;for(let v of t)switch(g&&(v.type!=="space"&&v.type!=="newline"&&v.type!=="comma"&&o(v.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),g=!1),p&&(l&&v.type!=="comment"&&v.type!=="newline"&&o(p,"TAB_AS_INDENT","Tabs are not allowed as indentation"),p=null),v.type){case"space":!e&&(n!=="doc-start"||i?.type!=="flow-collection")&&v.source.includes(" ")&&(p=v),u=!0;break;case"comment":{u||o(v,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let N=v.source.substring(1)||" ";f?f+=d+N:f=N,d="",l=!1;break}case"newline":l?f?f+=v.source:(!S||n!=="seq-item-ind")&&(c=!0):d+=v.source,l=!0,m=!0,(h||w)&&(y=v),u=!0;break;case"anchor":h&&o(v,"MULTIPLE_ANCHORS","A node can have at most one anchor"),v.source.endsWith(":")&&o(v.offset+v.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0),h=v,C??(C=v.offset),l=!1,u=!1,g=!0;break;case"tag":{w&&o(v,"MULTIPLE_TAGS","A node can have at most one tag"),w=v,C??(C=v.offset),l=!1,u=!1,g=!0;break}case n:(h||w)&&o(v,"BAD_PROP_ORDER",`Anchors and tags must be after the ${v.source} indicator`),S&&o(v,"UNEXPECTED_TOKEN",`Unexpected ${v.source} in ${e??"collection"}`),S=v,l=n==="seq-item-ind"||n==="explicit-key-ind",u=!1;break;case"comma":if(e){b&&o(v,"UNEXPECTED_TOKEN",`Unexpected , in ${e}`),b=v,l=!1,u=!1;break}default:o(v,"UNEXPECTED_TOKEN",`Unexpected ${v.type} token`),l=!1,u=!1}let E=t[t.length-1],P=E?E.offset+E.source.length:r;return g&&i&&i.type!=="space"&&i.type!=="newline"&&i.type!=="comma"&&(i.type!=="scalar"||i.source!=="")&&o(i.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),p&&(l&&p.indent<=s||i?.type==="block-map"||i?.type==="block-seq")&&o(p,"TAB_AS_INDENT","Tabs are not allowed as indentation"),{comma:b,found:S,spaceBefore:c,comment:f,hasNewline:m,anchor:h,tag:w,newlineAfterProp:y,end:P,start:C??P}}rc.resolveProps=Ip});var fi=k(oc=>{"use strict";function co(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 n of e.start)if(n.type==="newline")return!0;if(e.sep){for(let n of e.sep)if(n.type==="newline")return!0}if(co(e.key)||co(e.value))return!0}return!1;default:return!0}}oc.containsNewline=co});var lo=k(sc=>{"use strict";var qp=fi();function $p(t,e,n){if(e?.type==="flow-collection"){let i=e.end[0];i.indent===t&&(i.source==="]"||i.source==="}")&&qp.containsNewline(e)&&n(i,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}sc.flowIndentCheck=$p});var uo=k(cc=>{"use strict";var ac=_();function Lp(t,e,n){let{uniqueKeys:i}=t.options;if(i===!1)return!1;let r=typeof i=="function"?i:(o,s)=>o===s||ac.isScalar(o)&&ac.isScalar(s)&&o.value===s.value;return e.some(o=>r(o.key,n))}cc.mapIncludes=Lp});var mc=k(pc=>{"use strict";var lc=xe(),Dp=Re(),uc=Xt(),Fp=fi(),fc=lo(),Wp=uo(),dc="All mapping items must start at the same column";function Mp({composeNode:t,composeEmptyNode:e},n,i,r,o){let s=o?.nodeClass??Dp.YAMLMap,a=new s(n.schema);n.atRoot&&(n.atRoot=!1);let c=i.offset,l=null;for(let u of i.items){let{start:f,key:d,sep:m,value:g}=u,p=uc.resolveProps(f,{indicator:"explicit-key-ind",next:d??m?.[0],offset:c,onError:r,parentIndent:i.indent,startOnNewline:!0}),h=!p.found;if(h){if(d&&(d.type==="block-seq"?r(c,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key"):"indent"in d&&d.indent!==i.indent&&r(c,"BAD_INDENT",dc)),!p.anchor&&!p.tag&&!m){l=p.end,p.comment&&(a.comment?a.comment+=` +`+p.comment:a.comment=p.comment);continue}(p.newlineAfterProp||Fp.containsNewline(d))&&r(d??f[f.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else p.found?.indent!==i.indent&&r(c,"BAD_INDENT",dc);n.atKey=!0;let w=p.end,y=d?t(n,d,p,r):e(n,w,f,null,p,r);n.schema.compat&&fc.flowIndentCheck(i.indent,d,r),n.atKey=!1,Wp.mapIncludes(n,a.items,y)&&r(w,"DUPLICATE_KEY","Map keys must be unique");let b=uc.resolveProps(m??[],{indicator:"map-value-ind",next:g,offset:y.range[2],onError:r,parentIndent:i.indent,startOnNewline:!d||d.type==="block-scalar"});if(c=b.end,b.found){h&&(g?.type==="block-map"&&!b.hasNewline&&r(c,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),n.options.strict&&p.start{"use strict";var Bp=Ne(),Kp=Xt(),Up=lo();function Yp({composeNode:t,composeEmptyNode:e},n,i,r,o){let s=o?.nodeClass??Bp.YAMLSeq,a=new s(n.schema);n.atRoot&&(n.atRoot=!1),n.atKey&&(n.atKey=!1);let c=i.offset,l=null;for(let{start:u,value:f}of i.items){let d=Kp.resolveProps(u,{indicator:"seq-item-ind",next:f,offset:c,onError:r,parentIndent:i.indent,startOnNewline:!0});if(!d.found)if(d.anchor||d.tag||f)f?.type==="block-seq"?r(d.end,"BAD_INDENT","All sequence items must start at the same column"):r(c,"MISSING_CHAR","Sequence item without - indicator");else{l=d.end,d.comment&&(a.comment=d.comment);continue}let m=f?t(n,f,d,r):e(n,d.end,u,null,d,r);n.schema.compat&&Up.flowIndentCheck(i.indent,f,r),c=m.range[2],a.items.push(m)}return a.range=[i.offset,c,l??c],a}hc.resolveBlockSeq=Yp});var dt=k(wc=>{"use strict";function Hp(t,e,n,i){let r="";if(t){let o=!1,s="";for(let a of t){let{source:c,type:l}=a;switch(l){case"space":o=!0;break;case"comment":{n&&!o&&i(a,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let u=c.substring(1)||" ";r?r+=s+u:r=u,s="";break}case"newline":r&&(s+=c),o=!0;break;default:i(a,"UNEXPECTED_TOKEN",`Unexpected ${l} at node end`)}e+=c.length}}return{comment:r,offset:e}}wc.resolveEnd=Hp});var bc=k(kc=>{"use strict";var Jp=_(),Vp=xe(),yc=Re(),Gp=Ne(),zp=dt(),vc=Xt(),Qp=fi(),Xp=uo(),fo="Block collections are not allowed within flow collections",po=t=>t&&(t.type==="block-map"||t.type==="block-seq");function Zp({composeNode:t,composeEmptyNode:e},n,i,r,o){let s=i.start.source==="{",a=s?"flow map":"flow sequence",c=o?.nodeClass??(s?yc.YAMLMap:Gp.YAMLSeq),l=new c(n.schema);l.flow=!0;let u=n.atRoot;u&&(n.atRoot=!1),n.atKey&&(n.atKey=!1);let f=i.offset+i.start.source.length;for(let h=0;h0){let h=zp.resolveEnd(g,p,n.options.strict,r);h.comment&&(l.comment?l.comment+=` +`+h.comment:l.comment=h.comment),l.range=[i.offset,p,h.offset]}else l.range=[i.offset,p,p];return l}kc.resolveFlowCollection=Zp});var Cc=k(Sc=>{"use strict";var em=_(),tm=j(),nm=Re(),im=Ne(),rm=mc(),om=gc(),sm=bc();function mo(t,e,n,i,r,o){let s=n.type==="block-map"?rm.resolveBlockMap(t,e,n,i,o):n.type==="block-seq"?om.resolveBlockSeq(t,e,n,i,o):sm.resolveFlowCollection(t,e,n,i,o),a=s.constructor;return r==="!"||r===a.tagName?(s.tag=a.tagName,s):(r&&(s.tag=r),s)}function am(t,e,n,i,r){let o=i.tag,s=o?e.directives.tagName(o.source,d=>r(o,"TAG_RESOLVE_FAILED",d)):null;if(n.type==="block-seq"){let{anchor:d,newlineAfterProp:m}=i,g=d&&o?d.offset>o.offset?d:o:d??o;g&&(!m||m.offsetd.tag===s&&d.collection===a);if(!c){let d=e.schema.knownTags[s];if(d?.collection===a)e.schema.tags.push(Object.assign({},d,{default:!1})),c=d;else return d?r(o,"BAD_COLLECTION_TYPE",`${d.tag} used for ${a} collection, but expects ${d.collection??"scalar"}`,!0):r(o,"TAG_RESOLVE_FAILED",`Unresolved tag: ${s}`,!0),mo(t,e,n,r,s)}let l=mo(t,e,n,r,s,c),u=c.resolve?.(l,d=>r(o,"TAG_RESOLVE_FAILED",d),e.options)??l,f=em.isNode(u)?u:new tm.Scalar(u);return f.range=l.range,f.tag=s,c?.format&&(f.format=c.format),f}Sc.composeCollection=am});var go=k(Ec=>{"use strict";var ho=j();function cm(t,e,n){let i=e.offset,r=lm(e,t.options.strict,n);if(!r)return{value:"",type:null,comment:"",range:[i,i,i]};let o=r.mode===">"?ho.Scalar.BLOCK_FOLDED:ho.Scalar.BLOCK_LITERAL,s=e.source?um(e.source):[],a=s.length;for(let p=s.length-1;p>=0;--p){let h=s[p][1];if(h===""||h==="\r")a=p;else break}if(a===0){let p=r.chomp==="+"&&s.length>0?` +`.repeat(Math.max(1,s.length-1)):"",h=i+r.length;return e.source&&(h+=e.source.length),{value:p,type:o,comment:r.comment,range:[i,h,h]}}let c=e.indent+r.indent,l=e.offset+r.length,u=0;for(let p=0;pc&&(c=h.length);else{h.length=a;--p)s[p][0].length>c&&(a=p+1);let f="",d="",m=!1;for(let p=0;pc||w[0]===" "?(d===" "?d=` +`:!m&&d===` `&&(d=` -`),f+=d+m.slice(c)+y,d=` -`,h=!0):y===""?d===` +`),f+=d+h.slice(c)+w,d=` +`,m=!0):w===""?d===` `?f+=` `:d=` -`:(f+=d+y,d=" ",h=!1)}switch(r.chomp){case"-":break;case"+":for(let p=a;p{"use strict";var wo=j(),lm=dt();function um(t,e,n){let{offset:i,type:r,source:o,end:s}=t,a,c,l=(d,h,w)=>n(i+d,h,w);switch(r){case"scalar":a=wo.Scalar.PLAIN,c=fm(o,l);break;case"single-quoted-scalar":a=wo.Scalar.QUOTE_SINGLE,c=dm(o,l);break;case"double-quoted-scalar":a=wo.Scalar.QUOTE_DOUBLE,c=pm(o,l);break;default:return n(t,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${r}`),{value:"",type:null,comment:"",range:[i,i+o.length,i+o.length]}}let u=i+o.length,f=lm.resolveEnd(s,u,e,n);return{value:c,type:a,comment:f.comment,range:[i,u,f.offset]}}function fm(t,e){let n="";switch(t[0]){case" ":n="a tab character";break;case",":n="flow indicator character ,";break;case"%":n="directive indicator character %";break;case"|":case">":{n=`block scalar indicator ${t[0]}`;break}case"@":case"`":{n=`reserved character ${t[0]}`;break}}return n&&e(0,"BAD_SCALAR_START",`Plain value cannot start with ${n}`),Ec(t)}function dm(t,e){return(t[t.length-1]!=="'"||t.length===1)&&e(t.length,"MISSING_CHAR","Missing closing 'quote"),Ec(t.slice(1,-1)).replace(/''/g,"'")}function Ec(t){let e,n;try{e=new RegExp(`(.*?)(?{"use strict";var wo=j(),fm=dt();function dm(t,e,n){let{offset:i,type:r,source:o,end:s}=t,a,c,l=(d,m,g)=>n(i+d,m,g);switch(r){case"scalar":a=wo.Scalar.PLAIN,c=pm(o,l);break;case"single-quoted-scalar":a=wo.Scalar.QUOTE_SINGLE,c=mm(o,l);break;case"double-quoted-scalar":a=wo.Scalar.QUOTE_DOUBLE,c=hm(o,l);break;default:return n(t,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${r}`),{value:"",type:null,comment:"",range:[i,i+o.length,i+o.length]}}let u=i+o.length,f=fm.resolveEnd(s,u,e,n);return{value:c,type:a,comment:f.comment,range:[i,u,f.offset]}}function pm(t,e){let n="";switch(t[0]){case" ":n="a tab character";break;case",":n="flow indicator character ,";break;case"%":n="directive indicator character %";break;case"|":case">":{n=`block scalar indicator ${t[0]}`;break}case"@":case"`":{n=`reserved character ${t[0]}`;break}}return n&&e(0,"BAD_SCALAR_START",`Plain value cannot start with ${n}`),_c(t)}function mm(t,e){return(t[t.length-1]!=="'"||t.length===1)&&e(t.length,"MISSING_CHAR","Missing closing 'quote"),_c(t.slice(1,-1)).replace(/''/g,"'")}function _c(t){let e,n;try{e=new RegExp(`(.*?)(?o?t.slice(o,i+1):r)}else n+=r}return(t[t.length-1]!=='"'||t.length===1)&&e(t.length,"MISSING_CHAR",'Missing closing "quote'),n}function mm(t,e){let n="",i=t[e+1];for(;(i===" "||i===" "||i===` +`)&&(n+=i>o?t.slice(o,i+1):r)}else n+=r}return(t[t.length-1]!=='"'||t.length===1)&&e(t.length,"MISSING_CHAR",'Missing closing "quote'),n}function gm(t,e){let n="",i=t[e+1];for(;(i===" "||i===" "||i===` `||i==="\r")&&!(i==="\r"&&t[e+2]!==` `);)i===` `&&(n+=` -`),e+=1,i=t[e+1];return n||(n=" "),{fold:n,offset:e}}var hm={0:"\0",a:"\x07",b:"\b",e:"\x1B",f:"\f",n:` -`,r:"\r",t:" ",v:"\v",N:"…",_:" ",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\"," ":" "};function gm(t,e,n,i){let r=t.substr(e,n),s=r.length===n&&/^[0-9a-fA-F]+$/.test(r)?parseInt(r,16):NaN;try{return String.fromCodePoint(s)}catch{let a=t.substr(e-2,n+2);return i(e-2,"BAD_DQ_ESCAPE",`Invalid escape sequence ${a}`),a}}_c.resolveFlowScalar=um});var Rc=v(Pc=>{"use strict";var ze=x(),xc=j(),wm=go(),ym=yo();function vm(t,e,n,i){let{value:r,type:o,comment:s,range:a}=e.type==="block-scalar"?wm.resolveBlockScalar(t,e,i):ym.resolveFlowScalar(e,t.options.strict,i),c=n?t.directives.tagName(n.source,f=>i(n,"TAG_RESOLVE_FAILED",f)):null,l;t.options.stringKeys&&t.atKey?l=t.schema[ze.SCALAR]:c?l=km(t.schema,r,c,n,i):e.type==="scalar"?l=bm(t,r,e,i):l=t.schema[ze.SCALAR];let u;try{let f=l.resolve(r,d=>i(n??e,"TAG_RESOLVE_FAILED",d),t.options);u=ze.isScalar(f)?f:new xc.Scalar(f)}catch(f){let d=f instanceof Error?f.message:String(f);i(n??e,"TAG_RESOLVE_FAILED",d),u=new xc.Scalar(r)}return u.range=a,u.source=r,o&&(u.type=o),c&&(u.tag=c),l.format&&(u.format=l.format),s&&(u.comment=s),u}function km(t,e,n,i,r){if(n==="!")return t[ze.SCALAR];let o=[];for(let a of t.tags)if(!a.collection&&a.tag===n)if(a.default&&a.test)o.push(a);else return a;for(let a of o)if(a.test?.test(e))return a;let s=t.knownTags[n];return s&&!s.collection?(t.tags.push(Object.assign({},s,{default:!1,test:void 0})),s):(r(i,"TAG_RESOLVE_FAILED",`Unresolved tag: ${n}`,n!=="tag:yaml.org,2002:str"),t[ze.SCALAR])}function bm({atKey:t,directives:e,schema:n},i,r,o){let s=n.tags.find(a=>(a.default===!0||t&&a.default==="key")&&a.test?.test(i))||n[ze.SCALAR];if(n.compat){let a=n.compat.find(c=>c.default&&c.test?.test(i))??n[ze.SCALAR];if(s.tag!==a.tag){let c=e.tagString(s.tag),l=e.tagString(a.tag),u=`Value may be parsed as either ${c} or ${l}`;o(r,"TAG_RESOLVE_FAILED",u,!0)}}return s}Pc.composeScalar=vm});var Oc=v(Nc=>{"use strict";function Sm(t,e,n){if(e){n??(n=e.length);for(let i=n-1;i>=0;--i){let r=e[i];switch(r.type){case"space":case"comment":case"newline":t-=r.source.length;continue}for(r=e[++i];r?.type==="space";)t+=r.source.length,r=e[++i];break}}return t}Nc.emptyScalarPosition=Sm});var Tc=v(ko=>{"use strict";var Cm=At(),Em=x(),_m=Sc(),Ac=Rc(),xm=dt(),Pm=Oc(),Rm={composeNode:jc,composeEmptyNode:vo};function jc(t,e,n,i){let r=t.atKey,{spaceBefore:o,comment:s,anchor:a,tag:c}=n,l,u=!0;switch(e.type){case"alias":l=Nm(t,e,i),(a||c)&&i(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=Ac.composeScalar(t,e,c,i),a&&(l.anchor=a.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":try{l=_m.composeCollection(Rm,t,e,n,i),a&&(l.anchor=a.source.substring(1))}catch(f){let d=f instanceof Error?f.message:String(f);i(e,"RESOURCE_EXHAUSTION",d)}break;default:{let f=e.type==="error"?e.message:`Unsupported token (type: ${e.type})`;i(e,"UNEXPECTED_TOKEN",f),u=!1}}return l??(l=vo(t,e.offset,void 0,null,n,i)),a&&l.anchor===""&&i(a,"BAD_ALIAS","Anchor cannot be an empty string"),r&&t.options.stringKeys&&(!Em.isScalar(l)||typeof l.value!="string"||l.tag&&l.tag!=="tag:yaml.org,2002:str")&&i(c??e,"NON_STRING_KEY","With stringKeys, all keys must be strings"),o&&(l.spaceBefore=!0),s&&(e.type==="scalar"&&e.source===""?l.comment=s:l.commentBefore=s),t.options.keepSourceTokens&&u&&(l.srcToken=e),l}function vo(t,e,n,i,{spaceBefore:r,comment:o,anchor:s,tag:a,end:c},l){let u={type:"scalar",offset:Pm.emptyScalarPosition(e,n,i),indent:-1,source:""},f=Ac.composeScalar(t,u,a,l);return s&&(f.anchor=s.source.substring(1),f.anchor===""&&l(s,"BAD_ALIAS","Anchor cannot be an empty string")),r&&(f.spaceBefore=!0),o&&(f.comment=o,f.range[2]=c),f}function Nm({options:t},{offset:e,source:n,end:i},r){let o=new Cm.Alias(n.substring(1));o.source===""&&r(e,"BAD_ALIAS","Alias cannot be an empty string"),o.source.endsWith(":")&&r(e+n.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);let s=e+n.length,a=xm.resolveEnd(i,s,t.strict,r);return o.range=[e,s,a.offset],a.comment&&(o.comment=a.comment),o}ko.composeEmptyNode=vo;ko.composeNode=jc});var $c=v(qc=>{"use strict";var Om=Jt(),Ic=Tc(),Am=dt(),jm=Qt();function Tm(t,e,{offset:n,start:i,value:r,end:o},s){let a=Object.assign({_directives:e},t),c=new Om.Document(void 0,a),l={atKey:!1,atRoot:!0,directives:c.directives,options:c.options,schema:c.schema},u=jm.resolveProps(i,{indicator:"doc-start",next:r??o?.[0],offset:n,onError:s,parentIndent:0,startOnNewline:!0});u.found&&(c.directives.docStart=!0,r&&(r.type==="block-map"||r.type==="block-seq")&&!u.hasNewline&&s(u.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")),c.contents=r?Ic.composeNode(l,r,u,s):Ic.composeEmptyNode(l,u.end,i,null,u,s);let f=c.contents.range[2],d=Am.resolveEnd(o,f,!1,s);return d.comment&&(c.comment=d.comment),c.range=[n,f,d.offset],c}qc.composeDoc=Tm});var So=v(Fc=>{"use strict";var Im=bn("process"),qm=sr(),$m=Jt(),Xt=zt(),Lc=x(),Lm=$c(),Dm=dt();function Zt(t){if(typeof t=="number")return[t,t+1];if(Array.isArray(t))return t.length===2?t:[t[0],t[1]];let{offset:e,source:n}=t;return[e,e+(typeof n=="string"?n.length:1)]}function Dc(t){let e="",n=!1,i=!1;for(let r=0;r{"use strict";var ze=_(),Pc=j(),vm=go(),km=yo();function bm(t,e,n,i){let{value:r,type:o,comment:s,range:a}=e.type==="block-scalar"?vm.resolveBlockScalar(t,e,i):km.resolveFlowScalar(e,t.options.strict,i),c=n?t.directives.tagName(n.source,f=>i(n,"TAG_RESOLVE_FAILED",f)):null,l;t.options.stringKeys&&t.atKey?l=t.schema[ze.SCALAR]:c?l=Sm(t.schema,r,c,n,i):e.type==="scalar"?l=Cm(t,r,e,i):l=t.schema[ze.SCALAR];let u;try{let f=l.resolve(r,d=>i(n??e,"TAG_RESOLVE_FAILED",d),t.options);u=ze.isScalar(f)?f:new Pc.Scalar(f)}catch(f){let d=f instanceof Error?f.message:String(f);i(n??e,"TAG_RESOLVE_FAILED",d),u=new Pc.Scalar(r)}return u.range=a,u.source=r,o&&(u.type=o),c&&(u.tag=c),l.format&&(u.format=l.format),s&&(u.comment=s),u}function Sm(t,e,n,i,r){if(n==="!")return t[ze.SCALAR];let o=[];for(let a of t.tags)if(!a.collection&&a.tag===n)if(a.default&&a.test)o.push(a);else return a;for(let a of o)if(a.test?.test(e))return a;let s=t.knownTags[n];return s&&!s.collection?(t.tags.push(Object.assign({},s,{default:!1,test:void 0})),s):(r(i,"TAG_RESOLVE_FAILED",`Unresolved tag: ${n}`,n!=="tag:yaml.org,2002:str"),t[ze.SCALAR])}function Cm({atKey:t,directives:e,schema:n},i,r,o){let s=n.tags.find(a=>(a.default===!0||t&&a.default==="key")&&a.test?.test(i))||n[ze.SCALAR];if(n.compat){let a=n.compat.find(c=>c.default&&c.test?.test(i))??n[ze.SCALAR];if(s.tag!==a.tag){let c=e.tagString(s.tag),l=e.tagString(a.tag),u=`Value may be parsed as either ${c} or ${l}`;o(r,"TAG_RESOLVE_FAILED",u,!0)}}return s}Rc.composeScalar=bm});var Ac=k(Oc=>{"use strict";function Em(t,e,n){if(e){n??(n=e.length);for(let i=n-1;i>=0;--i){let r=e[i];switch(r.type){case"space":case"comment":case"newline":t-=r.source.length;continue}for(r=e[++i];r?.type==="space";)t+=r.source.length,r=e[++i];break}}return t}Oc.emptyScalarPosition=Em});var Ic=k(ko=>{"use strict";var _m=jt(),xm=_(),Pm=Cc(),jc=Nc(),Rm=dt(),Nm=Ac(),Om={composeNode:Tc,composeEmptyNode:vo};function Tc(t,e,n,i){let r=t.atKey,{spaceBefore:o,comment:s,anchor:a,tag:c}=n,l,u=!0;switch(e.type){case"alias":l=Am(t,e,i),(a||c)&&i(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=jc.composeScalar(t,e,c,i),a&&(l.anchor=a.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":try{l=Pm.composeCollection(Om,t,e,n,i),a&&(l.anchor=a.source.substring(1))}catch(f){let d=f instanceof Error?f.message:String(f);i(e,"RESOURCE_EXHAUSTION",d)}break;default:{let f=e.type==="error"?e.message:`Unsupported token (type: ${e.type})`;i(e,"UNEXPECTED_TOKEN",f),u=!1}}return l??(l=vo(t,e.offset,void 0,null,n,i)),a&&l.anchor===""&&i(a,"BAD_ALIAS","Anchor cannot be an empty string"),r&&t.options.stringKeys&&(!xm.isScalar(l)||typeof l.value!="string"||l.tag&&l.tag!=="tag:yaml.org,2002:str")&&i(c??e,"NON_STRING_KEY","With stringKeys, all keys must be strings"),o&&(l.spaceBefore=!0),s&&(e.type==="scalar"&&e.source===""?l.comment=s:l.commentBefore=s),t.options.keepSourceTokens&&u&&(l.srcToken=e),l}function vo(t,e,n,i,{spaceBefore:r,comment:o,anchor:s,tag:a,end:c},l){let u={type:"scalar",offset:Nm.emptyScalarPosition(e,n,i),indent:-1,source:""},f=jc.composeScalar(t,u,a,l);return s&&(f.anchor=s.source.substring(1),f.anchor===""&&l(s,"BAD_ALIAS","Anchor cannot be an empty string")),r&&(f.spaceBefore=!0),o&&(f.comment=o,f.range[2]=c),f}function Am({options:t},{offset:e,source:n,end:i},r){let o=new _m.Alias(n.substring(1));o.source===""&&r(e,"BAD_ALIAS","Alias cannot be an empty string"),o.source.endsWith(":")&&r(e+n.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);let s=e+n.length,a=Rm.resolveEnd(i,s,t.strict,r);return o.range=[e,s,a.offset],a.comment&&(o.comment=a.comment),o}ko.composeEmptyNode=vo;ko.composeNode=Tc});var Lc=k($c=>{"use strict";var jm=Vt(),qc=Ic(),Tm=dt(),Im=Xt();function qm(t,e,{offset:n,start:i,value:r,end:o},s){let a=Object.assign({_directives:e},t),c=new jm.Document(void 0,a),l={atKey:!1,atRoot:!0,directives:c.directives,options:c.options,schema:c.schema},u=Im.resolveProps(i,{indicator:"doc-start",next:r??o?.[0],offset:n,onError:s,parentIndent:0,startOnNewline:!0});u.found&&(c.directives.docStart=!0,r&&(r.type==="block-map"||r.type==="block-seq")&&!u.hasNewline&&s(u.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")),c.contents=r?qc.composeNode(l,r,u,s):qc.composeEmptyNode(l,u.end,i,null,u,s);let f=c.contents.range[2],d=Tm.resolveEnd(o,f,!1,s);return d.comment&&(c.comment=d.comment),c.range=[n,f,d.offset],c}$c.composeDoc=qm});var So=k(Wc=>{"use strict";var $m=bn("process"),Lm=sr(),Dm=Vt(),Zt=Qt(),Dc=_(),Fm=Lc(),Wm=dt();function en(t){if(typeof t=="number")return[t,t+1];if(Array.isArray(t))return t.length===2?t:[t[0],t[1]];let{offset:e,source:n}=t;return[e,e+(typeof n=="string"?n.length:1)]}function Fc(t){let e="",n=!1,i=!1;for(let r=0;r{let s=Zt(n);o?this.warnings.push(new Xt.YAMLWarning(s,i,r)):this.errors.push(new Xt.YAMLParseError(s,i,r))},this.directives=new qm.Directives({version:e.version||"1.2"}),this.options=e}decorate(e,n){let{comment:i,afterEmptyLine:r}=Dc(this.prelude);if(i){let o=e.contents;if(n)e.comment=e.comment?`${e.comment} -${i}`:i;else if(r||e.directives.docStart||!o)e.commentBefore=i;else if(Lc.isCollection(o)&&!o.flow&&o.items.length>0){let s=o.items[0];Lc.isPair(s)&&(s=s.key);let a=s.commentBefore;s.commentBefore=a?`${i} +`)+(o.substring(1)||" "),n=!0,i=!1;break;case"%":t[r+1]?.[0]!=="#"&&(r+=1),n=!1;break;default:n||(i=!0),n=!1}}return{comment:e,afterEmptyLine:i}}var bo=class{constructor(e={}){this.doc=null,this.atDirectives=!1,this.prelude=[],this.errors=[],this.warnings=[],this.onError=(n,i,r,o)=>{let s=en(n);o?this.warnings.push(new Zt.YAMLWarning(s,i,r)):this.errors.push(new Zt.YAMLParseError(s,i,r))},this.directives=new Lm.Directives({version:e.version||"1.2"}),this.options=e}decorate(e,n){let{comment:i,afterEmptyLine:r}=Fc(this.prelude);if(i){let o=e.contents;if(n)e.comment=e.comment?`${e.comment} +${i}`:i;else if(r||e.directives.docStart||!o)e.commentBefore=i;else if(Dc.isCollection(o)&&!o.flow&&o.items.length>0){let s=o.items[0];Dc.isPair(s)&&(s=s.key);let a=s.commentBefore;s.commentBefore=a?`${i} ${a}`:i}else{let s=o.commentBefore;o.commentBefore=s?`${i} -${s}`:i}}if(n){for(let o=0;o{let o=Zt(e);o[0]+=n,this.onError(o,"BAD_DIRECTIVE",i,r)}),this.prelude.push(e.source),this.atDirectives=!0;break;case"document":{let n=Lm.composeDoc(this.options,this.directives,e,this.onError);this.atDirectives&&!n.directives.docStart&&this.onError(e,"MISSING_CHAR","Missing directives-end/doc-start indicator line"),this.decorate(n,!1),this.doc&&(yield this.doc),this.doc=n,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(e.source);break;case"error":{let n=e.source?`${e.message}: ${JSON.stringify(e.source)}`:e.message,i=new Xt.YAMLParseError(Zt(e),"UNEXPECTED_TOKEN",n);this.atDirectives||!this.doc?this.errors.push(i):this.doc.errors.push(i);break}case"doc-end":{if(!this.doc){let i="Unexpected doc-end without preceding document";this.errors.push(new Xt.YAMLParseError(Zt(e),"UNEXPECTED_TOKEN",i));break}this.doc.directives.docEnd=!0;let n=Dm.resolveEnd(e.end,e.offset+e.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),n.comment){let i=this.doc.comment;this.doc.comment=i?`${i} -${n.comment}`:n.comment}this.doc.range[2]=n.offset;break}default:this.errors.push(new Xt.YAMLParseError(Zt(e),"UNEXPECTED_TOKEN",`Unsupported token ${e.type}`))}}*end(e=!1,n=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(e){let i=Object.assign({_directives:this.directives},this.options),r=new $m.Document(void 0,i);this.atDirectives&&this.onError(n,"MISSING_CHAR","Missing directives-end indicator line"),r.range=[0,n,n],this.decorate(r,!1),yield r}}};Fc.Composer=bo});var Bc=v(di=>{"use strict";var Fm=go(),Wm=yo(),Mm=zt(),Wc=$t();function Bm(t,e=!0,n){if(t){let i=(r,o,s)=>{let a=typeof r=="number"?r:Array.isArray(r)?r[0]:r.offset;if(n)n(a,o,s);else throw new Mm.YAMLParseError([a,a+1],o,s)};switch(t.type){case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return Wm.resolveFlowScalar(t,e,i);case"block-scalar":return Fm.resolveBlockScalar({options:{strict:e}},t,i)}}return null}function Km(t,e){let{implicitKey:n=!1,indent:i,inFlow:r=!1,offset:o=-1,type:s="PLAIN"}=e,a=Wc.stringifyString({type:s,value:t},{implicitKey:n,indent:i>0?" ".repeat(i):"",inFlow:r,options:{blockQuote:!0,lineWidth:-1}}),c=e.end??[{type:"newline",offset:-1,indent:i,source:` +${s}`:i}}if(n){for(let o=0;o{let o=en(e);o[0]+=n,this.onError(o,"BAD_DIRECTIVE",i,r)}),this.prelude.push(e.source),this.atDirectives=!0;break;case"document":{let n=Fm.composeDoc(this.options,this.directives,e,this.onError);this.atDirectives&&!n.directives.docStart&&this.onError(e,"MISSING_CHAR","Missing directives-end/doc-start indicator line"),this.decorate(n,!1),this.doc&&(yield this.doc),this.doc=n,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(e.source);break;case"error":{let n=e.source?`${e.message}: ${JSON.stringify(e.source)}`:e.message,i=new Zt.YAMLParseError(en(e),"UNEXPECTED_TOKEN",n);this.atDirectives||!this.doc?this.errors.push(i):this.doc.errors.push(i);break}case"doc-end":{if(!this.doc){let i="Unexpected doc-end without preceding document";this.errors.push(new Zt.YAMLParseError(en(e),"UNEXPECTED_TOKEN",i));break}this.doc.directives.docEnd=!0;let n=Wm.resolveEnd(e.end,e.offset+e.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),n.comment){let i=this.doc.comment;this.doc.comment=i?`${i} +${n.comment}`:n.comment}this.doc.range[2]=n.offset;break}default:this.errors.push(new Zt.YAMLParseError(en(e),"UNEXPECTED_TOKEN",`Unsupported token ${e.type}`))}}*end(e=!1,n=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(e){let i=Object.assign({_directives:this.directives},this.options),r=new Dm.Document(void 0,i);this.atDirectives&&this.onError(n,"MISSING_CHAR","Missing directives-end indicator line"),r.range=[0,n,n],this.decorate(r,!1),yield r}}};Wc.Composer=bo});var Kc=k(di=>{"use strict";var Mm=go(),Bm=yo(),Km=Qt(),Mc=Lt();function Um(t,e=!0,n){if(t){let i=(r,o,s)=>{let a=typeof r=="number"?r:Array.isArray(r)?r[0]:r.offset;if(n)n(a,o,s);else throw new Km.YAMLParseError([a,a+1],o,s)};switch(t.type){case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return Bm.resolveFlowScalar(t,e,i);case"block-scalar":return Mm.resolveBlockScalar({options:{strict:e}},t,i)}}return null}function Ym(t,e){let{implicitKey:n=!1,indent:i,inFlow:r=!1,offset:o=-1,type:s="PLAIN"}=e,a=Mc.stringifyString({type:s,value:t},{implicitKey:n,indent:i>0?" ".repeat(i):"",inFlow:r,options:{blockQuote:!0,lineWidth:-1}}),c=e.end??[{type:"newline",offset:-1,indent:i,source:` `}];switch(a[0]){case"|":case">":{let l=a.indexOf(` `),u=a.substring(0,l),f=a.substring(l+1)+` -`,d=[{type:"block-scalar-header",offset:o,indent:i,source:u}];return Mc(d,c)||d.push({type:"newline",offset:-1,indent:i,source:` -`}),{type:"block-scalar",offset:o,indent:i,props:d,source:f}}case'"':return{type:"double-quoted-scalar",offset:o,indent:i,source:a,end:c};case"'":return{type:"single-quoted-scalar",offset:o,indent:i,source:a,end:c};default:return{type:"scalar",offset:o,indent:i,source:a,end:c}}}function Um(t,e,n={}){let{afterKey:i=!1,implicitKey:r=!1,inFlow:o=!1,type:s}=n,a="indent"in t?t.indent:null;if(i&&typeof a=="number"&&(a+=2),!s)switch(t.type){case"single-quoted-scalar":s="QUOTE_SINGLE";break;case"double-quoted-scalar":s="QUOTE_DOUBLE";break;case"block-scalar":{let l=t.props[0];if(l.type!=="block-scalar-header")throw new Error("Invalid block scalar header");s=l.source[0]===">"?"BLOCK_FOLDED":"BLOCK_LITERAL";break}default:s="PLAIN"}let c=Wc.stringifyString({type:s,value:e},{implicitKey:r||a===null,indent:a!==null&&a>0?" ".repeat(a):"",inFlow:o,options:{blockQuote:!0,lineWidth:-1}});switch(c[0]){case"|":case">":Ym(t,c);break;case'"':Co(t,c,"double-quoted-scalar");break;case"'":Co(t,c,"single-quoted-scalar");break;default:Co(t,c,"scalar")}}function Ym(t,e){let n=e.indexOf(` +`,d=[{type:"block-scalar-header",offset:o,indent:i,source:u}];return Bc(d,c)||d.push({type:"newline",offset:-1,indent:i,source:` +`}),{type:"block-scalar",offset:o,indent:i,props:d,source:f}}case'"':return{type:"double-quoted-scalar",offset:o,indent:i,source:a,end:c};case"'":return{type:"single-quoted-scalar",offset:o,indent:i,source:a,end:c};default:return{type:"scalar",offset:o,indent:i,source:a,end:c}}}function Hm(t,e,n={}){let{afterKey:i=!1,implicitKey:r=!1,inFlow:o=!1,type:s}=n,a="indent"in t?t.indent:null;if(i&&typeof a=="number"&&(a+=2),!s)switch(t.type){case"single-quoted-scalar":s="QUOTE_SINGLE";break;case"double-quoted-scalar":s="QUOTE_DOUBLE";break;case"block-scalar":{let l=t.props[0];if(l.type!=="block-scalar-header")throw new Error("Invalid block scalar header");s=l.source[0]===">"?"BLOCK_FOLDED":"BLOCK_LITERAL";break}default:s="PLAIN"}let c=Mc.stringifyString({type:s,value:e},{implicitKey:r||a===null,indent:a!==null&&a>0?" ".repeat(a):"",inFlow:o,options:{blockQuote:!0,lineWidth:-1}});switch(c[0]){case"|":case">":Jm(t,c);break;case'"':Co(t,c,"double-quoted-scalar");break;case"'":Co(t,c,"single-quoted-scalar");break;default:Co(t,c,"scalar")}}function Jm(t,e){let n=e.indexOf(` `),i=e.substring(0,n),r=e.substring(n+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=i,t.source=r}else{let{offset:o}=t,s="indent"in t?t.indent:-1,a=[{type:"block-scalar-header",offset:o,indent:s,source:i}];Mc(a,"end"in t?t.end:void 0)||a.push({type:"newline",offset:-1,indent:s,source:` -`});for(let c of Object.keys(t))c!=="type"&&c!=="offset"&&delete t[c];Object.assign(t,{type:"block-scalar",indent:s,props:a,source:r})}}function Mc(t,e){if(e)for(let n of e)switch(n.type){case"space":case"comment":t.push(n);break;case"newline":return t.push(n),!0}return!1}function Co(t,e,n){switch(t.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":t.type=n,t.source=e;break;case"block-scalar":{let i=t.props.slice(1),r=e.length;t.props[0].type==="block-scalar-header"&&(r-=t.props[0].source.length);for(let o of i)o.offset+=r;delete t.props,Object.assign(t,{type:n,source:e,end:i});break}case"block-map":case"block-seq":{let r={type:"newline",offset:t.offset+e.length,indent:t.indent,source:` -`};delete t.items,Object.assign(t,{type:n,source:e,end:[r]});break}default:{let i="indent"in t?t.indent:-1,r="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:n,indent:i,source:e,end:r})}}}di.createScalarToken=Km;di.resolveAsScalar=Bm;di.setScalarValue=Um});var Uc=v(Kc=>{"use strict";var Hm=t=>"type"in t?mi(t):pi(t);function mi(t){switch(t.type){case"block-scalar":{let e="";for(let n of t.props)e+=mi(n);return e+t.source}case"block-map":case"block-seq":{let e="";for(let n of t.items)e+=pi(n);return e}case"flow-collection":{let e=t.start.source;for(let n of t.items)e+=pi(n);for(let n of t.end)e+=n.source;return e}case"document":{let e=pi(t);if(t.end)for(let n of t.end)e+=n.source;return e}default:{let e=t.source;if("end"in t&&t.end)for(let n of t.end)e+=n.source;return e}}}function pi({start:t,key:e,sep:n,value:i}){let r="";for(let o of t)r+=o.source;if(e&&(r+=mi(e)),n)for(let o of n)r+=o.source;return i&&(r+=mi(i)),r}Kc.stringify=Hm});var Vc=v(Jc=>{"use strict";var Eo=Symbol("break visit"),Jm=Symbol("skip children"),Yc=Symbol("remove item");function Qe(t,e){"type"in t&&t.type==="document"&&(t={start:t.start,value:t.value}),Hc(Object.freeze([]),t,e)}Qe.BREAK=Eo;Qe.SKIP=Jm;Qe.REMOVE=Yc;Qe.itemAtPath=(t,e)=>{let n=t;for(let[i,r]of e){let o=n?.[i];if(o&&"items"in o)n=o.items[r];else return}return n};Qe.parentCollection=(t,e)=>{let n=Qe.itemAtPath(t,e.slice(0,-1)),i=e[e.length-1][0],r=n?.[i];if(r&&"items"in r)return r;throw new Error("Parent collection not found")};function Hc(t,e,n){let i=n(e,t);if(typeof i=="symbol")return i;for(let r of["key","value"]){let o=e[r];if(o&&"items"in o){for(let s=0;s{"use strict";var _o=Bc(),Vm=Uc(),Gm=Vc(),xo="\uFEFF",Po="",Ro="",No="",zm=t=>!!t&&"items"in t,Qm=t=>!!t&&(t.type==="scalar"||t.type==="single-quoted-scalar"||t.type==="double-quoted-scalar"||t.type==="block-scalar");function Xm(t){switch(t){case xo:return"";case Po:return"";case Ro:return"";case No:return"";default:return JSON.stringify(t)}}function Zm(t){switch(t){case xo:return"byte-order-mark";case Po:return"doc-mode";case Ro:return"flow-error-end";case No:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case` +`;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=i,t.source=r}else{let{offset:o}=t,s="indent"in t?t.indent:-1,a=[{type:"block-scalar-header",offset:o,indent:s,source:i}];Bc(a,"end"in t?t.end:void 0)||a.push({type:"newline",offset:-1,indent:s,source:` +`});for(let c of Object.keys(t))c!=="type"&&c!=="offset"&&delete t[c];Object.assign(t,{type:"block-scalar",indent:s,props:a,source:r})}}function Bc(t,e){if(e)for(let n of e)switch(n.type){case"space":case"comment":t.push(n);break;case"newline":return t.push(n),!0}return!1}function Co(t,e,n){switch(t.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":t.type=n,t.source=e;break;case"block-scalar":{let i=t.props.slice(1),r=e.length;t.props[0].type==="block-scalar-header"&&(r-=t.props[0].source.length);for(let o of i)o.offset+=r;delete t.props,Object.assign(t,{type:n,source:e,end:i});break}case"block-map":case"block-seq":{let r={type:"newline",offset:t.offset+e.length,indent:t.indent,source:` +`};delete t.items,Object.assign(t,{type:n,source:e,end:[r]});break}default:{let i="indent"in t?t.indent:-1,r="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:n,indent:i,source:e,end:r})}}}di.createScalarToken=Ym;di.resolveAsScalar=Um;di.setScalarValue=Hm});var Yc=k(Uc=>{"use strict";var Vm=t=>"type"in t?mi(t):pi(t);function mi(t){switch(t.type){case"block-scalar":{let e="";for(let n of t.props)e+=mi(n);return e+t.source}case"block-map":case"block-seq":{let e="";for(let n of t.items)e+=pi(n);return e}case"flow-collection":{let e=t.start.source;for(let n of t.items)e+=pi(n);for(let n of t.end)e+=n.source;return e}case"document":{let e=pi(t);if(t.end)for(let n of t.end)e+=n.source;return e}default:{let e=t.source;if("end"in t&&t.end)for(let n of t.end)e+=n.source;return e}}}function pi({start:t,key:e,sep:n,value:i}){let r="";for(let o of t)r+=o.source;if(e&&(r+=mi(e)),n)for(let o of n)r+=o.source;return i&&(r+=mi(i)),r}Uc.stringify=Vm});var Gc=k(Vc=>{"use strict";var Eo=Symbol("break visit"),Gm=Symbol("skip children"),Hc=Symbol("remove item");function Qe(t,e){"type"in t&&t.type==="document"&&(t={start:t.start,value:t.value}),Jc(Object.freeze([]),t,e)}Qe.BREAK=Eo;Qe.SKIP=Gm;Qe.REMOVE=Hc;Qe.itemAtPath=(t,e)=>{let n=t;for(let[i,r]of e){let o=n?.[i];if(o&&"items"in o)n=o.items[r];else return}return n};Qe.parentCollection=(t,e)=>{let n=Qe.itemAtPath(t,e.slice(0,-1)),i=e[e.length-1][0],r=n?.[i];if(r&&"items"in r)return r;throw new Error("Parent collection not found")};function Jc(t,e,n){let i=n(e,t);if(typeof i=="symbol")return i;for(let r of["key","value"]){let o=e[r];if(o&&"items"in o){for(let s=0;s{"use strict";var _o=Kc(),zm=Yc(),Qm=Gc(),xo="\uFEFF",Po="",Ro="",No="",Xm=t=>!!t&&"items"in t,Zm=t=>!!t&&(t.type==="scalar"||t.type==="single-quoted-scalar"||t.type==="double-quoted-scalar"||t.type==="block-scalar");function eh(t){switch(t){case xo:return"";case Po:return"";case Ro:return"";case No:return"";default:return JSON.stringify(t)}}function th(t){switch(t){case xo:return"byte-order-mark";case Po:return"doc-mode";case Ro:return"flow-error-end";case No: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}J.createScalarToken=_o.createScalarToken;J.resolveAsScalar=_o.resolveAsScalar;J.setScalarValue=_o.setScalarValue;J.stringify=Vm.stringify;J.visit=Gm.visit;J.BOM=xo;J.DOCUMENT=Po;J.FLOW_END=Ro;J.SCALAR=No;J.isCollection=zm;J.isScalar=Qm;J.prettyToken=Xm;J.tokenType=Zm});var jo=v(zc=>{"use strict";var en=hi();function ne(t){switch(t){case void 0:case" ":case` -`:case"\r":case" ":return!0;default:return!1}}var Gc=new Set("0123456789ABCDEFabcdef"),eh=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),gi=new Set(",[]{}"),th=new Set(` ,[]{} -\r `),Oo=t=>!t||th.has(t),Ao=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,n=!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=!n;let i=this.next??"stream";for(;i&&(n||this.hasChars(1));)i=yield*this.parseNext(i)}atLineEnd(){let e=this.pos,n=this.buffer[e];for(;n===" "||n===" ";)n=this.buffer[++e];return!n||n==="#"||n===` +`: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}H.createScalarToken=_o.createScalarToken;H.resolveAsScalar=_o.resolveAsScalar;H.setScalarValue=_o.setScalarValue;H.stringify=zm.stringify;H.visit=Qm.visit;H.BOM=xo;H.DOCUMENT=Po;H.FLOW_END=Ro;H.SCALAR=No;H.isCollection=Xm;H.isScalar=Zm;H.prettyToken=eh;H.tokenType=th});var jo=k(Qc=>{"use strict";var tn=hi();function te(t){switch(t){case void 0:case" ":case` +`:case"\r":case" ":return!0;default:return!1}}var zc=new Set("0123456789ABCDEFabcdef"),nh=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),gi=new Set(",[]{}"),ih=new Set(` ,[]{} +\r `),Oo=t=>!t||ih.has(t),Ao=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,n=!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=!n;let i=this.next??"stream";for(;i&&(n||this.hasChars(1));)i=yield*this.parseNext(i)}atLineEnd(){let e=this.pos,n=this.buffer[e];for(;n===" "||n===" ";)n=this.buffer[++e];return!n||n==="#"||n===` `?!0:n==="\r"?this.buffer[e+1]===` `:!1}charAt(e){return this.buffer[this.pos+e]}continueScalar(e){let n=this.buffer[e];if(this.indentNext>0){let i=0;for(;n===" ";)n=this.buffer[++i+e];if(n==="\r"){let r=this.buffer[i+e+1];if(r===` `||!r&&!this.atEnd)return e+i+1}return n===` -`||i>=this.indentNext||!n&&!this.atEnd?e+i:-1}if(n==="-"||n==="."){let i=this.buffer.substr(e,3);if((i==="---"||i==="...")&&ne(this.buffer[e+3]))return-1}return e}getLine(){let e=this.lineEndPos;return(typeof e!="number"||e!==-1&&ethis.indentValue&&!ne(this.charAt(1))&&(this.indentNext=this.indentValue),yield*this.parseBlockStart()}*parseBlockStart(){let[e,n]=this.peek(2);if(!n&&!this.atEnd)return this.setNext("block-start");if((e==="-"||e==="?"||e===":")&&ne(n)){let i=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=i,"block-start"}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);let e=this.getLine();if(e===null)return this.setNext("doc");let n=yield*this.pushIndicators();switch(e[n]){case"#":yield*this.pushCount(e.length-n);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(Oo),"doc";case'"':case"'":return yield*this.parseQuotedScalar();case"|":case">":return n+=yield*this.parseBlockScalarHeader(),n+=yield*this.pushSpaces(!0),yield*this.pushCount(e.length-n),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let e,n,i=-1;do e=yield*this.pushNewline(),e>0?(n=yield*this.pushSpaces(!1),this.indentValue=i=n):n=0,n+=yield*this.pushSpaces(!0);while(e+n>0);let r=this.getLine();if(r===null)return this.setNext("flow");if((i!==-1&&i=this.indentNext||!n&&!this.atEnd?e+i:-1}if(n==="-"||n==="."){let i=this.buffer.substr(e,3);if((i==="---"||i==="...")&&te(this.buffer[e+3]))return-1}return e}getLine(){let e=this.lineEndPos;return(typeof e!="number"||e!==-1&&ethis.indentValue&&!te(this.charAt(1))&&(this.indentNext=this.indentValue),yield*this.parseBlockStart()}*parseBlockStart(){let[e,n]=this.peek(2);if(!n&&!this.atEnd)return this.setNext("block-start");if((e==="-"||e==="?"||e===":")&&te(n)){let i=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=i,"block-start"}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);let e=this.getLine();if(e===null)return this.setNext("doc");let n=yield*this.pushIndicators();switch(e[n]){case"#":yield*this.pushCount(e.length-n);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(Oo),"doc";case'"':case"'":return yield*this.parseQuotedScalar();case"|":case">":return n+=yield*this.parseBlockScalarHeader(),n+=yield*this.pushSpaces(!0),yield*this.pushCount(e.length-n),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let e,n,i=-1;do e=yield*this.pushNewline(),e>0?(n=yield*this.pushSpaces(!1),this.indentValue=i=n):n=0,n+=yield*this.pushSpaces(!0);while(e+n>0);let r=this.getLine();if(r===null)return this.setNext("flow");if((i!==-1&&i"0"&&n<="9")this.blockScalarIndent=Number(n)-1;else if(n!=="-")break}return yield*this.pushUntil(n=>ne(n)||n==="#")}*parseBlockScalar(){let e=this.pos-1,n=0,i;e:for(let o=this.pos;i=this.buffer[o];++o)switch(i){case" ":n+=1;break;case` +`,o)}r!==-1&&(n=r-(i[r-1]==="\r"?2:1))}if(n===-1){if(!this.atEnd)return this.setNext("quoted-scalar");n=this.buffer.length}return yield*this.pushToIndex(n+1,!1),this.flowLevel?"flow":"doc"}*parseBlockScalarHeader(){this.blockScalarIndent=-1,this.blockScalarKeep=!1;let e=this.pos;for(;;){let n=this.buffer[++e];if(n==="+")this.blockScalarKeep=!0;else if(n>"0"&&n<="9")this.blockScalarIndent=Number(n)-1;else if(n!=="-")break}return yield*this.pushUntil(n=>te(n)||n==="#")}*parseBlockScalar(){let e=this.pos-1,n=0,i;e:for(let o=this.pos;i=this.buffer[o];++o)switch(i){case" ":n+=1;break;case` `:e=o,n=0;break;case"\r":{let s=this.buffer[o+1];if(!s&&!this.atEnd)return this.setNext("block-scalar");if(s===` `)break}default:break e}if(!i&&!this.atEnd)return this.setNext("block-scalar");if(n>=this.indentNext){this.blockScalarIndent===-1?this.indentNext=n: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 r=e+1;for(i=this.buffer[r];i===" ";)i=this.buffer[++r];if(i===" "){for(;i===" "||i===" "||i==="\r"||i===` `;)i=this.buffer[++r];e=r-1}else if(!this.blockScalarKeep)do{let o=e-1,s=this.buffer[o];s==="\r"&&(s=this.buffer[--o]);let a=o;for(;s===" ";)s=this.buffer[--o];if(s===` -`&&o>=this.pos&&o+1+n>a)e=o;else break}while(!0);return yield en.SCALAR,yield*this.pushToIndex(e+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let e=this.flowLevel>0,n=this.pos-1,i=this.pos-1,r;for(;r=this.buffer[++i];)if(r===":"){let o=this.buffer[i+1];if(ne(o)||e&&gi.has(o))break;n=i}else if(ne(r)){let o=this.buffer[i+1];if(r==="\r"&&(o===` +`&&o>=this.pos&&o+1+n>a)e=o;else break}while(!0);return yield tn.SCALAR,yield*this.pushToIndex(e+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let e=this.flowLevel>0,n=this.pos-1,i=this.pos-1,r;for(;r=this.buffer[++i];)if(r===":"){let o=this.buffer[i+1];if(te(o)||e&&gi.has(o))break;n=i}else if(te(r)){let o=this.buffer[i+1];if(r==="\r"&&(o===` `?(i+=1,r=` `,o=this.buffer[i+1]):n=i),o==="#"||e&&gi.has(o))break;if(r===` -`){let s=this.continueScalar(i+1);if(s===-1)break;i=Math.max(i,s-2)}}else{if(e&&gi.has(r))break;n=i}return!r&&!this.atEnd?this.setNext("plain-scalar"):(yield en.SCALAR,yield*this.pushToIndex(n+1,!0),e?"flow":"doc")}*pushCount(e){return e>0?(yield this.buffer.substr(this.pos,e),this.pos+=e,e):0}*pushToIndex(e,n){let i=this.buffer.slice(this.pos,e);return i?(yield i,this.pos+=i.length,i.length):(n&&(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(Oo),e+=yield*this.pushSpaces(!0);continue e;case"-":case"?":case":":{let n=this.flowLevel>0,i=this.charAt(1);if(ne(i)||n&&gi.has(i)){n?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,n=this.buffer[e];for(;!ne(n)&&n!==">";)n=this.buffer[++e];return yield*this.pushToIndex(n===">"?e+1:e,!1)}else{let e=this.pos+1,n=this.buffer[e];for(;n;)if(eh.has(n))n=this.buffer[++e];else if(n==="%"&&Gc.has(this.buffer[e+1])&&Gc.has(this.buffer[e+2]))n=this.buffer[e+=3];else break;return yield*this.pushToIndex(e,!1)}}*pushNewline(){let e=this.buffer[this.pos];return e===` +`){let s=this.continueScalar(i+1);if(s===-1)break;i=Math.max(i,s-2)}}else{if(e&&gi.has(r))break;n=i}return!r&&!this.atEnd?this.setNext("plain-scalar"):(yield tn.SCALAR,yield*this.pushToIndex(n+1,!0),e?"flow":"doc")}*pushCount(e){return e>0?(yield this.buffer.substr(this.pos,e),this.pos+=e,e):0}*pushToIndex(e,n){let i=this.buffer.slice(this.pos,e);return i?(yield i,this.pos+=i.length,i.length):(n&&(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(Oo),e+=yield*this.pushSpaces(!0);continue e;case"-":case"?":case":":{let n=this.flowLevel>0,i=this.charAt(1);if(te(i)||n&&gi.has(i)){n?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,n=this.buffer[e];for(;!te(n)&&n!==">";)n=this.buffer[++e];return yield*this.pushToIndex(n===">"?e+1:e,!1)}else{let e=this.pos+1,n=this.buffer[e];for(;n;)if(nh.has(n))n=this.buffer[++e];else if(n==="%"&&zc.has(this.buffer[e+1])&&zc.has(this.buffer[e+2]))n=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 n=this.pos-1,i;do i=this.buffer[++n];while(i===" "||e&&i===" ");let r=n-this.pos;return r>0&&(yield this.buffer.substr(this.pos,r),this.pos=n),r}*pushUntil(e){let n=this.pos,i=this.buffer[n];for(;!e(i);)i=this.buffer[++n];return yield*this.pushToIndex(n,!1)}};zc.Lexer=Ao});var Io=v(Qc=>{"use strict";var To=class{constructor(){this.lineStarts=[],this.addNewLine=e=>this.lineStarts.push(e),this.linePos=e=>{let n=0,i=this.lineStarts.length;for(;n>1;this.lineStarts[o]{"use strict";var nh=bn("process"),Xc=hi(),ih=jo();function Ne(t,e){for(let n=0;n=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 yi(t,e){if(e.length<1e5)Array.prototype.push.apply(t,e);else for(let n=0;n0;)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 n=e??this.stack.pop();if(!n)yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"};else if(this.stack.length===0)yield n;else{let i=this.peek(1);switch(n.type==="block-scalar"?n.indent="indent"in i?i.indent:0:n.type==="flow-collection"&&i.type==="document"&&(n.indent=0),n.type==="flow-collection"&&el(n),i.type){case"document":i.value=n;break;case"block-scalar":i.props.push(n);break;case"block-map":{let r=i.items[i.items.length-1];if(r.value){i.items.push({start:[],key:n,sep:[]}),this.onKeyLine=!0;return}else if(r.sep)r.value=n;else{Object.assign(r,{key:n,sep:[]}),this.onKeyLine=!r.explicitKey;return}break}case"block-seq":{let r=i.items[i.items.length-1];r.value?i.items.push({start:[],value:n}):r.value=n;break}case"flow-collection":{let r=i.items[i.items.length-1];!r||r.value?i.items.push({start:[],key:n,sep:[]}):r.sep?r.value=n:Object.assign(r,{key:n,sep:[]});return}default:yield*this.pop(),yield*this.pop(n)}if((i.type==="document"||i.type==="block-map"||i.type==="block-seq")&&(n.type==="block-map"||n.type==="block-seq")){let r=n.items[n.items.length-1];r&&!r.sep&&!r.value&&r.start.length>0&&Zc(r.start)===-1&&(n.indent===0||r.start.every(o=>o.type!=="comment"||o.indent0&&(yield this.buffer.substr(this.pos,r),this.pos=n),r}*pushUntil(e){let n=this.pos,i=this.buffer[n];for(;!e(i);)i=this.buffer[++n];return yield*this.pushToIndex(n,!1)}};Qc.Lexer=Ao});var Io=k(Xc=>{"use strict";var To=class{constructor(){this.lineStarts=[],this.addNewLine=e=>this.lineStarts.push(e),this.linePos=e=>{let n=0,i=this.lineStarts.length;for(;n>1;this.lineStarts[o]{"use strict";var rh=bn("process"),Zc=hi(),oh=jo();function Oe(t,e){for(let n=0;n=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 yi(t,e){if(e.length<1e5)Array.prototype.push.apply(t,e);else for(let n=0;n0;)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 n=e??this.stack.pop();if(!n)yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"};else if(this.stack.length===0)yield n;else{let i=this.peek(1);switch(n.type==="block-scalar"?n.indent="indent"in i?i.indent:0:n.type==="flow-collection"&&i.type==="document"&&(n.indent=0),n.type==="flow-collection"&&tl(n),i.type){case"document":i.value=n;break;case"block-scalar":i.props.push(n);break;case"block-map":{let r=i.items[i.items.length-1];if(r.value){i.items.push({start:[],key:n,sep:[]}),this.onKeyLine=!0;return}else if(r.sep)r.value=n;else{Object.assign(r,{key:n,sep:[]}),this.onKeyLine=!r.explicitKey;return}break}case"block-seq":{let r=i.items[i.items.length-1];r.value?i.items.push({start:[],value:n}):r.value=n;break}case"flow-collection":{let r=i.items[i.items.length-1];!r||r.value?i.items.push({start:[],key:n,sep:[]}):r.sep?r.value=n:Object.assign(r,{key:n,sep:[]});return}default:yield*this.pop(),yield*this.pop(n)}if((i.type==="document"||i.type==="block-map"||i.type==="block-seq")&&(n.type==="block-map"||n.type==="block-seq")){let r=n.items[n.items.length-1];r&&!r.sep&&!r.value&&r.start.length>0&&el(r.start)===-1&&(n.indent===0||r.start.every(o=>o.type!=="comment"||o.indent=e.indent){let i=!this.onKeyLine&&this.indent===e.indent,r=i&&(n.sep||n.explicitKey)&&this.type!=="seq-item-ind",o=[];if(r&&n.sep&&!n.value){let s=[];for(let a=0;ae.indent&&(s.length=0);break;default:s.length=0}}s.length>=2&&(o=n.sep.splice(s[1]))}switch(this.type){case"anchor":case"tag":r||n.value?(o.push(this.sourceToken),e.items.push({start:o}),this.onKeyLine=!0):n.sep?n.sep.push(this.sourceToken):n.start.push(this.sourceToken);return;case"explicit-key-ind":!n.sep&&!n.explicitKey?(n.start.push(this.sourceToken),n.explicitKey=!0):r||n.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(n.explicitKey)if(n.sep)if(n.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(Ne(n.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(tl(n.key)&&!Ne(n.sep,"newline")){let s=pt(n.start),a=n.key,c=n.sep;c.push(this.sourceToken),delete n.key,delete n.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:s,key:a,sep:c}]})}else o.length>0?n.sep=n.sep.concat(o,this.sourceToken):n.sep.push(this.sourceToken);else if(Ne(n.start,"newline"))Object.assign(n,{key:null,sep:[this.sourceToken]});else{let s=pt(n.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:s,key:null,sep:[this.sourceToken]}]})}else n.sep?n.value||r?e.items.push({start:o,key:null,sep:[this.sourceToken]}):Ne(n.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):n.sep.push(this.sourceToken):Object.assign(n,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let s=this.flowScalar(this.type);r||n.value?(e.items.push({start:o,key:s,sep:[]}),this.onKeyLine=!0):n.sep?this.stack.push(s):(Object.assign(n,{key:s,sep:[]}),this.onKeyLine=!0);return}default:{let s=this.startBlockValue(e);if(s){if(s.type==="block-seq"){if(!n.explicitKey&&n.sep&&!Ne(n.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 i&&e.items.push({start:o});this.stack.push(s);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(e){let n=e.items[e.items.length-1];switch(this.type){case"newline":if(n.value){let i="end"in n.value?n.value.end:void 0;(Array.isArray(i)?i[i.length-1]:void 0)?.type==="comment"?i?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else n.start.push(this.sourceToken);return;case"space":case"comment":if(n.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(n.start,e.indent)){let r=e.items[e.items.length-2]?.value?.end;if(Array.isArray(r)){yi(r,n.start),r.push(this.sourceToken),e.items.pop();return}}n.start.push(this.sourceToken)}return;case"anchor":case"tag":if(n.value||this.indent<=e.indent)break;n.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==e.indent)break;n.value||Ne(n.start,"seq-item-ind")?e.items.push({start:[this.sourceToken]}):n.start.push(this.sourceToken);return}if(this.indent>e.indent){let i=this.startBlockValue(e);if(i){this.stack.push(i);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){let n=e.items[e.items.length-1];if(this.type==="flow-error-end"){let i;do yield*this.pop(),i=this.peek(1);while(i?.type==="flow-collection")}else if(e.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!n||n.sep?e.items.push({start:[this.sourceToken]}):n.start.push(this.sourceToken);return;case"map-value-ind":!n||n.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):n.sep?n.sep.push(this.sourceToken):Object.assign(n,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!n||n.value?e.items.push({start:[this.sourceToken]}):n.sep?n.sep.push(this.sourceToken):n.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let r=this.flowScalar(this.type);!n||n.value?e.items.push({start:[],key:r,sep:[]}):n.sep?this.stack.push(r):Object.assign(n,{key:r,sep:[]});return}case"flow-map-end":case"flow-seq-end":e.end.push(this.sourceToken);return}let i=this.startBlockValue(e);i?this.stack.push(i):(yield*this.pop(),yield*this.step())}else{let i=this.peek(2);if(i.type==="block-map"&&(this.type==="map-value-ind"&&i.indent===e.indent||this.type==="newline"&&!i.items[i.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&i.type!=="flow-collection"){let r=wi(i),o=pt(r);el(e);let s=e.end.splice(1,e.end.length);s.push(this.sourceToken);let a={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:o,key:e,sep:s}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=a}else yield*this.lineEnd(e)}}flowScalar(e){if(this.onNewLine){let n=this.source.indexOf(` +`,n)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap(e){let n=e.items[e.items.length-1];switch(this.type){case"newline":if(this.onKeyLine=!1,n.value){let i="end"in n.value?n.value.end:void 0;(Array.isArray(i)?i[i.length-1]:void 0)?.type==="comment"?i?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else n.sep?n.sep.push(this.sourceToken):n.start.push(this.sourceToken);return;case"space":case"comment":if(n.value)e.items.push({start:[this.sourceToken]});else if(n.sep)n.sep.push(this.sourceToken);else{if(this.atIndentedComment(n.start,e.indent)){let r=e.items[e.items.length-2]?.value?.end;if(Array.isArray(r)){yi(r,n.start),r.push(this.sourceToken),e.items.pop();return}}n.start.push(this.sourceToken)}return}if(this.indent>=e.indent){let i=!this.onKeyLine&&this.indent===e.indent,r=i&&(n.sep||n.explicitKey)&&this.type!=="seq-item-ind",o=[];if(r&&n.sep&&!n.value){let s=[];for(let a=0;ae.indent&&(s.length=0);break;default:s.length=0}}s.length>=2&&(o=n.sep.splice(s[1]))}switch(this.type){case"anchor":case"tag":r||n.value?(o.push(this.sourceToken),e.items.push({start:o}),this.onKeyLine=!0):n.sep?n.sep.push(this.sourceToken):n.start.push(this.sourceToken);return;case"explicit-key-ind":!n.sep&&!n.explicitKey?(n.start.push(this.sourceToken),n.explicitKey=!0):r||n.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(n.explicitKey)if(n.sep)if(n.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(Oe(n.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(nl(n.key)&&!Oe(n.sep,"newline")){let s=pt(n.start),a=n.key,c=n.sep;c.push(this.sourceToken),delete n.key,delete n.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:s,key:a,sep:c}]})}else o.length>0?n.sep=n.sep.concat(o,this.sourceToken):n.sep.push(this.sourceToken);else if(Oe(n.start,"newline"))Object.assign(n,{key:null,sep:[this.sourceToken]});else{let s=pt(n.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:s,key:null,sep:[this.sourceToken]}]})}else n.sep?n.value||r?e.items.push({start:o,key:null,sep:[this.sourceToken]}):Oe(n.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):n.sep.push(this.sourceToken):Object.assign(n,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let s=this.flowScalar(this.type);r||n.value?(e.items.push({start:o,key:s,sep:[]}),this.onKeyLine=!0):n.sep?this.stack.push(s):(Object.assign(n,{key:s,sep:[]}),this.onKeyLine=!0);return}default:{let s=this.startBlockValue(e);if(s){if(s.type==="block-seq"){if(!n.explicitKey&&n.sep&&!Oe(n.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 i&&e.items.push({start:o});this.stack.push(s);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(e){let n=e.items[e.items.length-1];switch(this.type){case"newline":if(n.value){let i="end"in n.value?n.value.end:void 0;(Array.isArray(i)?i[i.length-1]:void 0)?.type==="comment"?i?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else n.start.push(this.sourceToken);return;case"space":case"comment":if(n.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(n.start,e.indent)){let r=e.items[e.items.length-2]?.value?.end;if(Array.isArray(r)){yi(r,n.start),r.push(this.sourceToken),e.items.pop();return}}n.start.push(this.sourceToken)}return;case"anchor":case"tag":if(n.value||this.indent<=e.indent)break;n.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==e.indent)break;n.value||Oe(n.start,"seq-item-ind")?e.items.push({start:[this.sourceToken]}):n.start.push(this.sourceToken);return}if(this.indent>e.indent){let i=this.startBlockValue(e);if(i){this.stack.push(i);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){let n=e.items[e.items.length-1];if(this.type==="flow-error-end"){let i;do yield*this.pop(),i=this.peek(1);while(i?.type==="flow-collection")}else if(e.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!n||n.sep?e.items.push({start:[this.sourceToken]}):n.start.push(this.sourceToken);return;case"map-value-ind":!n||n.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):n.sep?n.sep.push(this.sourceToken):Object.assign(n,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!n||n.value?e.items.push({start:[this.sourceToken]}):n.sep?n.sep.push(this.sourceToken):n.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let r=this.flowScalar(this.type);!n||n.value?e.items.push({start:[],key:r,sep:[]}):n.sep?this.stack.push(r):Object.assign(n,{key:r,sep:[]});return}case"flow-map-end":case"flow-seq-end":e.end.push(this.sourceToken);return}let i=this.startBlockValue(e);i?this.stack.push(i):(yield*this.pop(),yield*this.step())}else{let i=this.peek(2);if(i.type==="block-map"&&(this.type==="map-value-ind"&&i.indent===e.indent||this.type==="newline"&&!i.items[i.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&i.type!=="flow-collection"){let r=wi(i),o=pt(r);tl(e);let s=e.end.splice(1,e.end.length);s.push(this.sourceToken);let a={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:o,key:e,sep:s}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=a}else yield*this.lineEnd(e)}}flowScalar(e){if(this.onNewLine){let n=this.source.indexOf(` `)+1;for(;n!==0;)this.onNewLine(this.offset+n),n=this.source.indexOf(` -`,n)+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 n=wi(e),i=pt(n);return i.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let n=wi(e),i=pt(n);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,n){return this.type!=="comment"||this.indent<=n?!1:e.every(i=>i.type==="newline"||i.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())}}};nl.Parser=qo});var al=v(nn=>{"use strict";var il=So(),rh=Jt(),tn=zt(),oh=vr(),sh=x(),ah=Io(),rl=$o();function ol(t){let e=t.prettyErrors!==!1;return{lineCounter:t.lineCounter||e&&new ah.LineCounter||null,prettyErrors:e}}function ch(t,e={}){let{lineCounter:n,prettyErrors:i}=ol(e),r=new rl.Parser(n?.addNewLine),o=new il.Composer(e),s=Array.from(o.compose(r.parse(t)));if(i&&n)for(let a of s)a.errors.forEach(tn.prettifyError(t,n)),a.warnings.forEach(tn.prettifyError(t,n));return s.length>0?s:Object.assign([],{empty:!0},o.streamInfo())}function sl(t,e={}){let{lineCounter:n,prettyErrors:i}=ol(e),r=new rl.Parser(n?.addNewLine),o=new il.Composer(e),s=null;for(let a of o.compose(r.parse(t),!0,t.length))if(!s)s=a;else if(s.options.logLevel!=="silent"){s.errors.push(new tn.YAMLParseError(a.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return i&&n&&(s.errors.forEach(tn.prettifyError(t,n)),s.warnings.forEach(tn.prettifyError(t,n))),s}function lh(t,e,n){let i;typeof e=="function"?i=e:n===void 0&&e&&typeof e=="object"&&(n=e);let r=sl(t,n);if(!r)return null;if(r.warnings.forEach(o=>oh.warn(r.options.logLevel,o)),r.errors.length>0){if(r.options.logLevel!=="silent")throw r.errors[0];r.errors=[]}return r.toJS(Object.assign({reviver:i},n))}function uh(t,e,n){let i=null;if(typeof e=="function"||Array.isArray(e)?i=e:n===void 0&&e&&(n=e),typeof n=="string"&&(n=n.length),typeof n=="number"){let r=Math.round(n);n=r<1?void 0:r>8?{indent:8}:{indent:r}}if(t===void 0){let{keepUndefined:r}=n??e??{};if(!r)return}return sh.isDocument(t)&&!i?t.toString(n):new rh.Document(t,i,n).toString(n)}nn.parse=lh;nn.parseAllDocuments=ch;nn.parseDocument=sl;nn.stringify=uh});var mt=v(P=>{"use strict";var fh=So(),dh=Jt(),ph=to(),Lo=zt(),mh=At(),Oe=x(),hh=_e(),gh=j(),wh=Pe(),yh=Re(),vh=hi(),kh=jo(),bh=Io(),Sh=$o(),vi=al(),cl=Pt();P.Composer=fh.Composer;P.Document=dh.Document;P.Schema=ph.Schema;P.YAMLError=Lo.YAMLError;P.YAMLParseError=Lo.YAMLParseError;P.YAMLWarning=Lo.YAMLWarning;P.Alias=mh.Alias;P.isAlias=Oe.isAlias;P.isCollection=Oe.isCollection;P.isDocument=Oe.isDocument;P.isMap=Oe.isMap;P.isNode=Oe.isNode;P.isPair=Oe.isPair;P.isScalar=Oe.isScalar;P.isSeq=Oe.isSeq;P.Pair=hh.Pair;P.Scalar=gh.Scalar;P.YAMLMap=wh.YAMLMap;P.YAMLSeq=yh.YAMLSeq;P.CST=vh;P.Lexer=kh.Lexer;P.LineCounter=bh.LineCounter;P.Parser=Sh.Parser;P.parse=vi.parse;P.parseAllDocuments=vi.parseAllDocuments;P.parseDocument=vi.parseDocument;P.stringify=vi.stringify;P.visit=cl.visit;P.visitAsync=cl.visitAsync});import ht from"path";function Oh(t,e){if(typeof t!="string")throw new Error(`${e} must be a string`);let n=t.trim();if(n.length===0||ht.posix.isAbsolute(n)||ht.win32.isAbsolute(n)||/^(?:~|[\\/])/u.test(n))throw new Error(`${e} must be a project-relative path`);if(n===".")return[];let i=n.replaceAll("\\","/").split("/");if(i.some(r=>r===".."))throw new Error(`${e} must stay inside the project root`);if(i.some(r=>r===""||r==="."))throw new Error(`${e} must not contain empty or dot path segments`);return i}function ki(t){let e=Oh(t,"native.artifact_root");return e.length===0?".":e.join("/")}function fl(t,e="docs"){let n=t??e;if(n!=="legacy"&&n!=="docs")throw new Error("classic.artifact_layout must be legacy or docs");return n}function me(t,e,n=!1){if(typeof t!="string")throw new Error(`${e} must be a string`);let i=t.trim().replaceAll("\\","/");if(i.length===0||ht.posix.isAbsolute(i)||ht.win32.isAbsolute(i)||/^(?:~|[\\/])/u.test(i))throw new Error(`${e} must be relative to its declared path base`);let r=i.split("/");if(r.some(o=>o===".."))throw new Error(`${e} must stay inside its declared path base`);if(r.some(o=>o===""||o==="."))throw new Error(`${e} must not contain empty or dot path segments`);if(!n&&/[*?]/u.test(i))throw new Error(`${e} cannot contain wildcards`);return r.join("/")}function Ae(t,e){if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`${e} must be a mapping`);return t}function dl(t,e,n){let i=t??e;if(i!=="en"&&i!=="zh-CN")throw new Error(`${n} must be en or zh-CN`);return i}function pl(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>Fo)throw new Error(`${e} exceeds ${Fo} characters`);let n=0;for(let i=0;iWo)throw new Error(`${e} contains more than ${Wo} wildcard tokens`);return t}function ul(t,e,n){if(t===void 0)return[...n];if(!Array.isArray(t))throw new Error(`${e} contains an unsafe pattern`);return[...new Set(t.map(i=>pl(i,e)))].sort((i,r)=>i.localeCompare(r,"en"))}function Do(t,e,n){let i=t??e;if(!Number.isSafeInteger(i)||i<1)throw new Error(`${n} must be a positive integer`);return i}function Ah(t){if(t===void 0)return{...pe,include:[...pe.include],exclude:[...pe.exclude]};let e=Ae(t,"native.snapshot");return{include:ul(e.include,"native.snapshot.include",pe.include),exclude:ul(e.exclude,"native.snapshot.exclude",pe.exclude),max_files:Do(e.max_files,pe.max_files,"native.snapshot.max_files"),max_total_bytes:Do(e.max_total_bytes,pe.max_total_bytes,"native.snapshot.max_total_bytes"),max_duration_ms:Do(e.max_duration_ms,pe.max_duration_ms,"native.snapshot.max_duration_ms")}}function jh(t){if(t===void 0)return;let e=Ae(t,"native.pending_root_move"),n=e.id,i=e.from_artifact_root,r=e.to_artifact_root,o=e.stage;if(typeof n!="string"||!/^[a-f0-9-]{8,}$/u.test(n))throw new Error("native.pending_root_move.id is invalid");if(typeof i!="string"||typeof r!="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 s;if(e.cleanup!==void 0){let a=Ae(e.cleanup,"native.pending_root_move.cleanup"),c=a.kind,l=a.state,u=a.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 u!="string"||!/^[a-f0-9]{64}$/u.test(u))throw new Error("native.pending_root_move.cleanup.manifest_hash is invalid");s={kind:c,state:l,manifestHash:u}}return{id:n,fromArtifactRoot:ki(i),toArtifactRoot:ki(r),stage:o,...s?{cleanup:s}:{}}}function Th(t){if(t===void 0)return;let e=Ae(t,"native.finish");if(e.pull_request===void 0)return{};let n=Ae(e.pull_request,"native.finish.pull_request");if(n.provider!=="repository-command")throw new Error("native.finish.pull_request.provider must be repository-command");if(!Array.isArray(n.command)||n.command.length===0)throw new Error("native.finish.pull_request.command must be a non-empty array");if(n.command.length>64)throw new Error("native.finish.pull_request.command must contain at most 64 arguments");let i=n.command.map((o,s)=>{if(typeof o!="string"||o.trim().length===0||o.length>4096||/[\0\r\n]/u.test(o))throw new Error(`native.finish.pull_request.command[${s}] must be a non-empty single-line string of at most 4096 characters`);return o});if(ht.posix.isAbsolute(i[0])||ht.win32.isAbsolute(i[0]))throw new Error("native.finish.pull_request.command[0] must be a bare executable name or a project-relative path");let r=n.timeout_ms??xh;if(!Number.isSafeInteger(r)||r<1||r>ll)throw new Error(`native.finish.pull_request.timeout_ms must be an integer between 1 and ${ll}`);return{pull_request:{provider:"repository-command",command:i,timeout_ms:r}}}function Ih(t,e={}){let n=Ae(t,"native"),i=n.artifact_root??(e.allowMissingArtifactRoot?"docs":void 0);if(typeof i!="string")throw new Error("native.artifact_root must be a string");let r=n.clarification_mode??"batch";if(r!=="sequential"&&r!=="batch")throw new Error("native.clarification_mode must be sequential or batch");let o=n.archive_confirmation??"automatic";if(o!=="automatic"&&o!=="required")throw new Error("native.archive_confirmation must be automatic or required");let s=n.max_verify_failures??_h;if(!Number.isSafeInteger(s)||s<1)throw new Error("native.max_verify_failures must be a positive integer");let a=jh(n.pending_root_move),c=Th(n.finish);return{artifact_root:ki(i),language:dl(n.language,"en","native.language"),clarification_mode:r,archive_confirmation:o,max_verify_failures:s,snapshot:Ah(n.snapshot),...c?{finish:c}:{},...a?{pending_root_move:a}:{}}}function qh(t){let e=Ae(t,"classic"),n=e.context_compression??"off";if(n!=="off"&&n!=="beta")throw new Error("classic.context_compression must be off or beta");let i=e.review_mode??"standard";if(i!=="off"&&i!=="standard"&&i!=="thorough")throw new Error("classic.review_mode must be off, standard, or thorough");let r=e.auto_transition??!0;if(typeof r!="boolean")throw new Error("classic.auto_transition must be true or false");return{artifact_layout:fl(e.artifact_layout),language:dl(e.language,"zh-CN","classic.language"),context_compression:n,review_mode:i,auto_transition:r}}function $h(t){let n=Ae(t,"hook").allow_paths??[];if(!Array.isArray(n))throw new Error("hook.allow_paths must be an array");return{allow_paths:[...new Set(n.map((i,r)=>me(i,`hook.allow_paths[${r}]`)))]}}function Lh(t){let e=t??!0;if(typeof e!="boolean")throw new Error("ambient_resume must be true or false");return e}function Dh(t,e,n,i,r,o){let s=t.schema!==void 0;if(!(s||t.default_workflow!==void 0||t.workflows!==void 0||!o.allowPartialProject&&t.native!==void 0)||o.allowPartialProject&&!s)return null;if(t.schema!=="comet.project.v1")throw new Error("Unsupported Comet project schema");if(t.default_workflow!=="native"&&t.default_workflow!=="classic")throw new Error("default_workflow must be native or classic");let c=t.workflows??[t.default_workflow];if(!Array.isArray(c)||c.length===0||c.some(u=>u!=="native"&&u!=="classic"))throw new Error("workflows must contain native and/or classic");let l=[...new Set(c)];if(!l.includes(t.default_workflow))throw new Error("workflows must include default_workflow");if(l.includes("native")&&!n)throw new Error("native must be a mapping");return{schema:"comet.project.v1",default_workflow:t.default_workflow,workflows:l,ambient_resume:r,...e?{hook:e}:{},...n?{native:n}:{},...i?{classic:i}:{}}}function gt(t,e={}){let n=(0,Mo.parseDocument)(t,{uniqueKeys:!0});if(n.errors.length>0)throw new Error(`Invalid .comet/config.yaml: ${n.errors[0].message}`);let i=n.toJS();if(i==null)return{value:{},config:null,ambient_resume:!0};if(typeof i!="object"||Array.isArray(i))throw new Error("Invalid .comet/config.yaml: root must be a mapping");let r=i,o=Lh(r.ambient_resume),s=r.hook===void 0?void 0:$h(r.hook),a=r.native===void 0?void 0:Ih(r.native,{allowMissingArtifactRoot:e.allowMissingNativeFields}),c=r.classic===void 0?void 0:qh(r.classic),l=Dh(r,s,a,c,o,{allowPartialProject:e.allowPartialProject??!1});return{value:r,config:l,ambient_resume:o,...s?{hook:s}:{},...a?{native:a}:{},...c?{classic:c}:{}}}var Mo,on,Fo,Wo,_h,xh,ll,Ph,Rh,Nh,pe,he=q(()=>{"use strict";Mo=xt(mt(),1),on=64*1024,Fo=1024,Wo=64,_h=5,xh=12e4,ll=6e5,Ph=[".agents/skills/**",".amazonq/skills/**",".augment/skills/**",".bob/skills/**",".claude/skills/**",".cline/skills/**",".codebuddy/skills/**",".workbuddy/skills/**",".continue/skills/**",".cospec/skills/**",".crush/skills/**",".cursor/skills/**",".factory/skills/**",".forge/skills/**",".gemini/skills/**",".github/skills/**",".iflow/skills/**",".junie/skills/**",".kilocode/skills/**",".kimi-code/skills/**",".kiro/skills/**",".lingma/skills/**",".mimocode/skills/**",".opencode/skills/**",".pi/skills/**",".qoder/skills/**",".qwen/skills/**",".roo/skills/**",".trae-cn/skills/**",".trae/skills/**",".windsurf/skills/**",".zcode/skills/**"],Rh=["**/.idea/**","**/.vscode/**",".codex/skills/**","**/node_modules/**","**/.next/**","**/.nuxt/**","**/.output/**","**/.svelte-kit/**","**/.vite/**","**/.parcel-cache/**","**/.turbo/**","**/.nx/cache/**","**/dist/**","**/build/**","**/out/**","**/coverage/**","**/.nyc_output/**","**/target/**","**/.gradle/**","**/.cxx/**","**/.externalNativeBuild/**","**/captures/**","**/__pycache__/**","**/.pytest_cache/**","**/.mypy_cache/**","**/.ruff_cache/**","**/.tox/**","**/.nox/**","**/.venv/**","**/venv/**","**/obj/**","**/CMakeFiles/**","**/cmake-build-*/**","**/.cache/**","**/tmp/**","**/temp/**","**/logs/**","**/*.tsbuildinfo","**/*.log","**/.DS_Store","**/Thumbs.db"],Nh=[...Ph,...Rh].sort((t,e)=>t.localeCompare(e,"en")),pe={include:["**/*"],exclude:[...Nh],max_files:1e4,max_total_bytes:256*1024*1024,max_duration_ms:6e4}});function je(t){return t!==0&&t!==0n&&t!=="0"}function bi(t,e){return je(t.dev)&&je(e.dev)&&je(t.ino)&&je(e.ino)}function ge(t,e){let n=je(t.dev)&&je(e.dev);if(n&&t.dev!==e.dev)return!1;let i=je(t.ino)&&je(e.ino);return i&&t.ino!==e.ino?!1:n&&i?!0:t.birthtime===e.birthtime}var Si=q(()=>{"use strict"});import{constants as Ci,promises as Xe}from"fs";function Bo(t){return"birthtimeNs"in t&&typeof t.birthtimeNs=="bigint"?t.birthtimeNs:t.birthtimeMs}function ml(t){return"ctimeNs"in t&&typeof t.ctimeNs=="bigint"?t.ctimeNs:t.ctimeMs}function sn(t){return{dev:t.dev,ino:t.ino,birthtime:Bo(t)}}function Ei(t,e){let n=sn(t),i=sn(e);return bi(n,i)?ge(n,i):ge(n,i)&&Bo(t)===Bo(e)&&ml(t)===ml(e)&&t.size===e.size}async function hl(t,e,n={}){if(!Number.isSafeInteger(e)||e<1)throw new Error("race-safe read byte limit must be a positive integer");let i=n.label??"file",r=n.bigint===!0,o=await Xe.lstat(t,{bigint:r});if(!o.isFile()||o.isSymbolicLink())throw new Te("not-regular-file",`${i} must be a regular file`);if(BigInt(o.size)>BigInt(e))throw new Te("too-large",`${i} exceeds ${e} bytes`);let s=await Xe.realpath(t);await n.verify?.("pre-open",{realPath:s,identity:sn(o)});let a=process.platform==="win32"?Ci.O_RDONLY:Ci.O_RDONLY|Ci.O_NOFOLLOW|Ci.O_NONBLOCK,c;try{c=await Xe.open(t,a)}catch(l){throw l.code==="ELOOP"?new Te("not-regular-file",`${i} must be a regular file`,{cause:l}):l}try{let[l,u,f]=await Promise.all([c.stat({bigint:r}),Xe.lstat(t,{bigint:r}),Xe.realpath(t)]);if(!l.isFile()||!u.isFile()||u.isSymbolicLink()||f!==s||!Ei(o,l)||!Ei(o,u))throw new Te("changed",`${i} changed while opening`);await n.verify?.("post-open",{realPath:f,identity:sn(l)}),await n.hooks?.afterOpen?.();let d=[],h=0,w=Buffer.allocUnsafe(Math.min(64*1024,e+1));for(;;){let g=e+1-h,{bytesRead:b}=await c.read(w,0,Math.min(w.length,g),null);if(b===0)break;if(h+=b,h>e)throw new Te("too-large",`${i} exceeds ${e} bytes`);d.push(Buffer.from(w.subarray(0,b)))}await n.hooks?.beforeFinalCheck?.();let[p,m,y]=await Promise.all([c.stat({bigint:r}),Xe.lstat(t,{bigint:r}),Xe.realpath(t)]);if(!m.isFile()||m.isSymbolicLink()||y!==s||!Ei(o,p)||!Ei(o,m))throw new Te("changed",`${i} changed while reading`);return await n.verify?.("post-read",{realPath:y,identity:sn(p)}),{bytes:Buffer.concat(d,h),stat:p,realPath:y}}finally{await c.close()}}var Te,gl=q(()=>{"use strict";Si();Te=class extends Error{reason;constructor(e,n,i){super(n,i),this.name="RaceSafeReadError",this.reason=e}}});import{promises as Ie}from"fs";import ie from"path";function wl(t){let e=t?.code;return e==="ENOENT"||e==="ENOTDIR"}function _i(t,e){let n=ie.relative(t,e);return n===""||!ie.isAbsolute(n)&&n!==".."&&!n.startsWith(`..${ie.sep}`)}async function Ko(t,e){let n=ie.resolve(t),i=await Ie.lstat(n);if(!i.isDirectory()||i.isSymbolicLink())throw new Error(`${e} project root must be a real directory`);return Ie.realpath(n)}async function Uo(t,e,n,i){let r=t;for(let o=0;o{if(!_i(o,a.realPath))throw new Error(`${i.label} resolves outside the project root`);await Uo(r.projectRoot,o,r.relative.split("/"),{label:i.label,expected:"file"})}})}var X=q(()=>{"use strict";gl();he()});import{createHash as Fh}from"crypto";function Wh(t){let e=t?.code;return e==="ENOENT"||e==="ENOTDIR"}async function cn(t,e={}){return(await Pi(t,e)).document}async function Mh(t){try{return(await F(t,an,on,{label:an})).bytes}catch(e){if(Wh(e))return null;throw e}}function Bh(t){return t?{exists:!0,sha256:Fh("sha256").update(t).digest("hex")}:{exists:!1,sha256:null}}async function Pi(t,e={}){let n=await Mh(t);return{document:n?gt(n.toString("utf8"),e):null,identity:Bh(n)}}async function Ho(t){return(await cn(t))?.config??null}var an,wt=q(()=>{"use strict";he();X();an=".comet/config.yaml"});import{randomUUID as Kh}from"crypto";import{constants as Uh,promises as T}from"fs";import W from"path";async function Jo(t,e){try{return await T.link(t,e),{linked:!0}}catch(n){let i=n.code;if(i!=="ENOTSUP"&&i!=="EOPNOTSUPP")throw n}return await T.copyFile(t,e,Uh.COPYFILE_EXCL),{linked:!1}}function yt(t,e){let n=W.relative(t,e);return n===""||!W.isAbsolute(n)&&n!==".."&&!n.startsWith(`..${W.sep}`)}function Ni(t){return{dev:t.dev,ino:t.ino,birthtime:t.birthtimeMs}}function Yh(t,e){return ge(t,Ni(e))}function Ri(t,e){let n=Ni(t),i=Ni(e);return bi(n,i)?ge(n,i):ge(n,i)&&t.birthtimeMs===e.birthtimeMs&&t.ctimeMs===e.ctimeMs&&t.size===e.size}async function Oi(t){let e=await T.lstat(t);if(!e.isDirectory()||e.isSymbolicLink())throw new Error(`Contained atomic write parent must be a real directory: ${t}`);return{path:t,realPath:await T.realpath(t),...Ni(e)}}async function qe(t){for(let e of t){let n=await T.lstat(e.path);if(!n.isDirectory()||n.isSymbolicLink()||!Yh(e,n)||await T.realpath(e.path)!==e.realPath)throw new Error(`Contained atomic write parent changed before commit: ${e.path}`)}}async function Hh(t,e){let n=W.resolve(t),i=W.resolve(e);if(!yt(n,i))throw new Error(`Contained atomic write parent is outside its managed root: ${e}`);let r=[await Oi(n)],o=W.relative(n,i).split(W.sep).filter(Boolean),s=n;for(let a of o){await qe(r),s=W.join(s,a);try{await T.mkdir(s)}catch(l){if(l.code!=="EEXIST")throw l}let c=await Oi(s);if(!yt(r[0].realPath,c.realPath))throw new Error(`Contained atomic write parent resolves outside its managed root: ${s}`);r.push(c)}return await qe(r),r}async function Jh(t,e){let n=W.resolve(t),i=W.resolve(e);if(!yt(n,i))throw new Error(`Contained file parent is outside its managed root: ${e}`);let r=[await Oi(n)],o=W.relative(n,i).split(W.sep).filter(Boolean),s=n;for(let a of o){s=W.join(s,a);try{let c=await Oi(s);if(!yt(r[0].realPath,c.realPath))throw new Error(`Contained file parent resolves outside its managed root: ${s}`);r.push(c)}catch(c){if(c.code==="ENOENT")return null;throw c}}return await qe(r),r}async function yl(t){let e;try{e=await T.open(t,"r"),await e.sync()}catch(n){let i=n.code;if(!["EACCES","EBADF","EINVAL","EISDIR","ENOTSUP","EPERM"].includes(i??""))throw n}finally{await e?.close()}}async function Vh(t,e,n){let i=W.dirname(t),r=await Hh(n.containedRoot,i),o=W.join(i,`.${W.basename(t)}.${Kh()}.tmp`),s,a;try{await n.beforeTemporaryOpen?.(),s=await T.open(o,"wx"),a=await s.stat();let[c,l]=await Promise.all([T.lstat(o),T.realpath(o)]);if(await qe(r),!c.isFile()||c.isSymbolicLink()||!Ri(a,c)||!yt(r[0].realPath,l))throw new Error("Contained atomic write temporary file opened outside its managed parent");if(typeof e=="string"?await s.writeFile(e,"utf8"):await s.writeFile(e),await s.sync(),!Ri(a,await s.stat()))throw new Error("Contained atomic write temporary file changed while writing");await s.close(),s=void 0,await n.beforeCommit?.(),await qe(r);let u=await T.lstat(o);if(!u.isFile()||u.isSymbolicLink()||!Ri(u,a))throw new Error("Contained atomic write temporary file changed before commit");n.exclusive?(await Jo(o,t),await T.unlink(o)):await T.rename(o,t),await yl(i)}catch(c){await s?.close();try{await qe(r),await T.rm(o,{force:!0})}catch{}throw c}}async function Z(t,e,n){await Vh(t,e,n)}async function Vo(t,e){let n=W.dirname(t),i=await Jh(e.containedRoot,n);if(!i)return!1;let r,o;try{r=await T.lstat(t),o=await T.realpath(t)}catch(c){if(c.code==="ENOENT")return!1;throw c}if(!r.isFile()||r.isSymbolicLink()||!yt(i[0].realPath,o))throw new Error("Contained file removal target must be a regular file inside its managed root");await e.beforeRemove?.(),await qe(i);let[s,a]=await Promise.all([T.lstat(t),T.realpath(t)]);if(!s.isFile()||s.isSymbolicLink()||!Ri(r,s)||a!==o)throw new Error("Contained file removal target changed before removal");return await T.unlink(t),await qe(i),await yl(n),!0}var $e=q(()=>{"use strict";Si()});var Yv,Go=q(()=>{"use strict";$e();wt();X();Yv=16*1024});var Qo=q(()=>{"use strict";$e();he();wt();X();Go()});var Li=q(()=>{"use strict"});var Al=q(()=>{"use strict"});var ns=q(()=>{"use strict";Li()});var jl=q(()=>{"use strict";Li();ns()});var Eg,Tl=q(()=>{"use strict";Eg=xt(mt(),1);$e();he();X()});var Uk,Il=q(()=>{"use strict";$e();X();Uk=4*1024*1024});function xg(t,e){let n=t;for(let i of e)n+="\0"+(typeof i=="string"?i:JSON.stringify(i));return n}function ql(t,e){return(...n)=>{let i=_g;if(i===null)return e(...n);let r=xg(`async:${t}`,n),o=i.entries.get(r);if(o)return o.value;let s=e(...n).catch(a=>{throw i.entries.delete(r),a});return i.entries.set(r,{value:s}),s}}var _g,$l=q(()=>{"use strict";_g=null});var Gk,Ll=q(()=>{"use strict";$l();wt();Gk=ql("hookWritePolicy",async t=>(await Ho(t))?.hook??{allow_paths:[]})});var Dl=q(()=>{"use strict";Li();$e();Al();jl();he();Tl();X();wt();Qo();Il();Ll();Go();ns()});import{TextDecoder as Pg}from"util";function Fl(t){return{dev:t.dev,ino:t.ino,birthtime:t.birthtimeMs}}function Rg(t,e){try{return new Pg("utf-8",{fatal:!0}).decode(t.bytes)}catch(n){throw new Error(`${e} is not valid UTF-8`,{cause:n})}}async function is(t,e,n,i,r={}){try{let o=await F(t,e,n,{label:i,hooks:r.hooks});return{result:o,text:Rg(o,i)}}catch(o){let s=o.code;if(s==="ENOENT"||s==="ENOTDIR")return null;throw o}}async function ye(t,e,n,i,r={}){return(await is(t,e,n,i,r))?.text??null}async function De(t,e,n,i,r,o={}){if(Buffer.byteLength(n,"utf8")>i)throw new Error(`${r} exceeds ${i} bytes`);let s=await is(t,e,i,r),a=await N(t,e,{label:r,expected:"file"});await Z(a.target,n,{containedRoot:a.projectRoot,beforeCommit:async()=>{await o.beforeCommit?.();let c=await is(t,e,i,r);if(!(!s&&!c)){if(!s||!c)throw new Error(`${r} changed before commit`);if(s.result.realPath!==c.result.realPath||!ge(Fl(s.result.stat),Fl(c.result.stat))||s.text!==c.text)throw new Error(`${r} changed before commit`)}}})}async function Wl(t,e,n,i,r,o={}){let s=await ye(t,e,i,r);await De(t,e,`${s??""}${n}`,i,r,o)}async function Di(t,e,n,i={}){let r=await N(t,e,{label:n,expected:"file"});return r.exists?Vo(r.target,{containedRoot:r.projectRoot,beforeRemove:i.beforeRemove}):!1}var rs=q(()=>{"use strict";Dl();Si()});var Kl={};Ju(Kl,{RUN_STATE_FILE:()=>Wi,applyRunStateToDocument:()=>os,readRunState:()=>ss,removeRunState:()=>as,runStateFromDocument:()=>Fi,writeRunState:()=>Mi});import Ng from"path";function gn(t,e){let n=t[e];if(typeof n!="string"||n.length===0)throw new Error(`Invalid Run state: ${e} must be a non-empty string`);return n}function hn(t,e){let n=gn(t,e);if(Ng.isAbsolute(n)||/^(?:[A-Za-z]:|[\\/]|~)/u.test(n)||n.split(/[\\/]/u).includes(".."))throw new Error(`Invalid Run state: ${e} must stay inside the change directory`);return n}function Og(t){let e=t.run_retries??"{}",n;try{n=typeof e=="string"?JSON.parse(e):e}catch(i){throw new Error("Invalid Run state: run_retries must be a JSON object",{cause:i})}if(!n||typeof n!="object"||Array.isArray(n))throw new Error("Invalid Run state: run_retries must be a JSON object");for(let i of Object.values(n))if(!Number.isInteger(i)||Number(i)<0)throw new Error("Invalid Run state: retry counts must be non-negative integers");return n}function Fi(t){if(!t.run_id)return null;let e=gn(t,"run_id"),n=gn(t,"skill"),i=gn(t,"skill_version"),r=gn(t,"skill_hash"),o=hn(t,"pending_ref"),s=hn(t,"trajectory_ref"),a=hn(t,"context_ref"),c=hn(t,"artifacts_ref"),l=hn(t,"checkpoint_ref"),u=Number(t.iteration);if(!Number.isInteger(u)||u<0)throw new Error("Invalid Run state: iteration must be a non-negative integer");if(t.orchestration!=="deterministic"&&t.orchestration!=="adaptive")throw new Error("Invalid Run state: orchestration must be deterministic or adaptive");if(t.run_status!=="running"&&t.run_status!=="waiting"&&t.run_status!=="completed"&&t.run_status!=="failed")throw new Error("Invalid Run state: run_status is invalid");return{runId:e,skill:n,skillVersion:i,skillHash:r,orchestration:t.orchestration,currentStep:Ml(t,"current_step"),iteration:u,pending:Ml(t,"pending"),pendingRef:o,trajectoryRef:s,contextRef:a,artifactsRef:c,checkpointRef:l,status:t.run_status,retries:Og(t)}}function os(t,e){e?t.run_id=e.runId:delete t.run_id}function Ag(t){return{runId:t.runId,skill:t.skill,skillVersion:t.skillVersion,skillHash:t.skillHash,orchestration:t.orchestration,currentStep:t.currentStep,iteration:t.iteration,pending:t.pending,pendingRef:t.pendingRef,trajectoryRef:t.trajectoryRef,contextRef:t.contextRef,artifactsRef:t.artifactsRef,checkpointRef:t.checkpointRef,status:t.status,retries:t.retries}}function jg(t){let e={run_id:t.runId,skill:t.skill,skill_version:t.skillVersion,skill_hash:t.skillHash,orchestration:t.orchestration,current_step:t.currentStep,iteration:t.iteration,pending:t.pending,pending_ref:t.pendingRef,trajectory_ref:t.trajectoryRef,context_ref:t.contextRef,artifacts_ref:t.artifactsRef,checkpoint_ref:t.checkpointRef,run_status:t.status,run_retries:JSON.stringify(t.retries)};return Fi(e)}async function ss(t,e={}){let n=await ye(t,Wi,Bl,"Run state",e);if(n===null)return null;let i=JSON.parse(n);return jg(i)}async function Mi(t,e,n={}){await De(t,Wi,JSON.stringify(Ag(e),null,2),Bl,"Run state",n)}async function as(t,e={}){await Di(t,Wi,"Run state",e)}var Ml,Wi,Bl,Bi=q(()=>{"use strict";rs();Ml=(t,e)=>{let n=t[e];return n==null?null:String(n)};Wi=".comet/run-state.json",Bl=256*1024});var qu=xt(mt(),1);import{createHash as ju}from"crypto";import{promises as Tu}from"fs";import Iu from"path";import Pl from"path";import{promises as Sl}from"fs";import O from"path";import{promises as Ch}from"fs";async function rn(t){try{return await Ch.access(t),!0}catch(e){if(Eh(e))return!1;throw e}}function Eh(t){let e=t?.code;return e==="ENOENT"||e==="ENOTDIR"}he();wt();Qo();X();var ln=class extends Error{code="classic-layout-unavailable";constructor(e="Classic artifact layout is unavailable from .comet/config.yaml"){super(e),this.name="ClassicLayoutUnavailableError"}},bl=".comet/config.yaml";function Cl(t){let e=t?.code;return e==="ENOENT"||e==="ENOTDIR"}async function El(t){await N(t,bl,{label:bl,expected:"file"})}function Ai(t,e){let n=O.resolve(t),i=e==="docs"?O.join(n,"docs"):n,r=O.join(i,"openspec"),o=O.join(n,"docs","superpowers");return{projectRoot:n,artifactLayout:e,openSpecBase:i,openSpecRoot:r,changesDir:O.join(r,"changes"),archiveDir:O.join(r,"changes","archive"),specsDir:O.join(r,"specs"),superpowersRoot:o,superpowersSpecsDir:O.join(o,"specs"),superpowersPlansDir:O.join(o,"plans"),superpowersReportsDir:O.join(o,"reports")}}async function Zh(t){await El(t);let e=await cn(t,{allowPartialProject:!0,allowMissingNativeFields:!0});if(!e?.config)throw new ln;if(!(e.config.workflows??[e.config.default_workflow]).includes("classic"))throw new ln("Classic artifact layout is unavailable because Classic is not enabled");return e.classic?.artifact_layout??"legacy"}async function eg(t,e){return Ai(t,e??await Zh(t))}async function tg(t){try{return await Sl.lstat(t),!0}catch(e){if(Cl(e))return!1;throw e}}async function ng(t,e){let n=await eg(t,e),i=n.artifactLayout==="legacy"?"docs":"legacy",r=Ai(t,i).openSpecRoot,[o,s]=await Promise.all([N(n.projectRoot,M(n.projectRoot,n.openSpecRoot),{label:"Configured Classic OpenSpec root",expected:"directory"}),tg(r)]),a=o.exists;return{paths:n,configuredRootExists:a,alternateRoot:r,alternateRootExists:s,dualRoots:a&&s}}async function ig(t){let e=[t.openSpecRoot,t.changesDir,t.archiveDir,t.specsDir,t.superpowersRoot,t.superpowersSpecsDir,t.superpowersPlansDir,t.superpowersReportsDir];for(let n of e){let i=M(t.projectRoot,n);await N(t.projectRoot,i,{label:`Classic managed physical path ${i}`,expected:"directory"})}}async function Le(t,e){let n=await ng(t,e);if(await ig(n.paths),!n.configuredRootExists){let i=M(n.paths.projectRoot,n.paths.openSpecRoot),r=M(n.paths.projectRoot,n.alternateRoot);throw new ln(`Configured Classic OpenSpec root is missing: ${i} (alternate ${r} is ${n.alternateRootExists?"present":"missing"})`)}return n.paths}async function Xo(t,e){let n=O.join(O.resolve(t),".comet","classic-root-move.json");if(await rn(n))throw new Error("Classic root move transaction is incomplete; inspect it with comet doctor and recover it explicitly before writing");let i=await Le(t,e);if(!await rn(i.openSpecRoot))throw new Error(`Configured Classic OpenSpec root is missing: ${M(i.projectRoot,i.openSpecRoot)}`);return i}async function Ze(t){let e=O.resolve(t),n=null;try{(await Sl.lstat(e)).isDirectory()||(e=O.dirname(e))}catch(i){if(!Cl(i))throw i}for(;;){O.basename(e)==="openspec"&&(n=O.dirname(e));let i=O.join(e,".comet","config.yaml"),r=!1;if(await rn(i))try{await El(e);let s=(await cn(e))?.value;r=!!s&&typeof s=="object"&&!Array.isArray(s)&&(s.schema==="comet.project.v1"||s.default_workflow!==void 0||s.native!==void 0)}catch{}if(r||await rn(O.join(e,".git")))return e;let o=O.dirname(e);if(o===e)return n??O.resolve(t);e=o}}function M(t,e){return O.relative(O.resolve(t),e).replaceAll("\\","/")}$e();he();X();import un from"path";var rg=2*1024*1024;function ji(t,e,n){let i=un.resolve(t),r=un.isAbsolute(e)?un.resolve(e):un.resolve(i,e),o=un.relative(i,r).replaceAll("\\","/");return{root:i,relative:me(o,n),target:r}}async function le(t,e,n){let i=ji(t,e,n.label);return N(i.root,i.relative,n)}async function Ti(t,e,n){return(await le(t,e,{label:n.label,expected:n.expected??"any"})).exists}async function Zo(t,e,n,i){return await Ti(t,e,{label:n,expected:"file"})?(await _l(t,e,{label:n,hooks:i})).byteLength>0:!1}async function vt(t,e,n){return(await _l(t,e,n)).toString("utf8")}async function _l(t,e,n){let i=ji(t,e,n.label);return(await F(i.root,i.relative,n.maxBytes??rg,{label:n.label,hooks:n.hooks})).bytes}async function Ii(t,e,n){let i=ji(t,e,n);return Yo(i.root,i.relative,{label:n})}async function xl(t,e,n,i){let r=ji(t,e,i.label);await N(r.root,r.relative,{label:i.label,expected:"file"}),await Z(r.target,n,{containedRoot:r.root,beforeTemporaryOpen:i.beforeTemporaryOpen,beforeCommit:i.beforeCommit,exclusive:i.exclusive})}function es(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 ts(t){let e=es(t);if(e)throw new Error(e)}function og(t,e){return{label:M(t,e),directory:e}}async function sg(t,e,n){let i=og(t,e);if(!(await le(t,e,{label:n,expected:"directory"})).exists)return{change:i,exists:!1,stateExists:!1};let o=await le(t,Pl.join(e,".comet.yaml"),{label:`${n} state`,expected:"file"});return{change:i,exists:!0,stateExists:o.exists}}async function Rl(t,e=process.cwd()){ts(t);let n=await Le(e),i=await sg(n.projectRoot,Pl.join(n.changesDir,t),`Classic active change ${t}`);return{...i.change,exists:i.exists,stateExists:i.stateExists}}import{promises as Su}from"fs";import z from"path";import{fileURLToPath as Cu}from"url";import{promises as cg}from"fs";import we from"path";X();he();import fn from"path";function ag(t){let e=t?.code;return e==="ENOENT"||e==="ENOTDIR"}async function Nl(t,e,n,i){let r=me(n,"Classic handoff artifact pointer");if((await N(t,r,{label:"Classic handoff artifact",expected:"file"})).exists)return null;let s=await Le(t),a=`${M(t,s.changesDir)}/`,l=(s.artifactLayout==="docs"?[a,"openspec/changes/"]:[a]).find(g=>r.startsWith(g));if(!l)return null;let u=r.slice(l.length).split("/");if(u.length<4||u[1]!==".comet"||u.slice(2).some(g=>g.length===0))return null;let f=u[0];ts(f);let d=u.slice(2),h=fn.resolve(e);if(fn.dirname(h)!==fn.resolve(s.archiveDir))return null;let w=fn.basename(h),p=/^\d{4}-\d{2}-\d{2}-(.+)$/u.exec(w);if(w!==f&&p?.[1]!==f)return null;await N(t,M(t,h),{label:"Classic archived change directory",expected:"directory"});let m=fn.join(h,".comet",...d),y=M(t,m);try{return await F(t,y,i,{label:"Historical Classic archived handoff artifact"}),y}catch(g){if(ag(g))return null;throw g}}X();var Ol=2*1024*1024;function dn(t,e){return we.relative(t,e).split(we.sep).join("/")}async function pn(t,e,n,i,r){if(!n)return{code:e,satisfied:!1};let o=n.replaceAll("\\","/");if(r)return{code:e,satisfied:!1,source:o,detail:`Classic layout is unsafe or unavailable: ${r instanceof Error?r.message:String(r)}`};try{if(i){let a=i.artifactLayout==="legacy"?"docs":"legacy",c=M(t,Ai(t,a).openSpecRoot);if((o===c||o.startsWith(`${c}/`))&&(await N(t,o,{label:`${e} artifact`,expected:"file"})).exists)return{code:e,satisfied:!1,source:o,detail:"standalone OpenSpec root is not a Comet artifact root"}}let s=await xi(t,o,{label:`${e} artifact`});return{code:e,satisfied:s,source:o,...s?{resolvedSource:o}:{}}}catch(s){return{code:e,satisfied:!1,source:o,detail:`unsafe artifact pointer outside the project or through a special path: ${s instanceof Error?s.message:String(s)}`}}}async function lg(t,e,n,i){try{i??=await Le(t)}catch(o){return{code:"design.handoff",satisfied:!1,...n?{source:n.replaceAll("\\","/")}:{},detail:`Classic layout is unsafe or unavailable for handoff evidence: ${o instanceof Error?o.message:String(o)}`}}let r=await pn(t,"design.handoff",n,i);if(!n||r.satisfied||r.detail)return r;try{let o=await Nl(t,e,n,Ol);return o?{...r,satisfied:!0,resolvedSource:o,detail:`resolved historical legacy pointer from archived change: ${o}`}:r}catch(o){return{...r,satisfied:!1,detail:`unsafe archived handoff fallback: ${o instanceof Error?o.message:String(o)}`}}}async function qi(t,e,n){return pn(t,e,dn(t,n))}async function ug(t,e){let n=we.join(e,"specs"),i;try{let s=dn(t,n);if(!(await N(t,s,{label:"OpenSpec delta-spec directory",expected:"directory"})).exists)return{code:"openspec.delta-spec",satisfied:!1};i=await cg.readdir(n)}catch(s){return s.code==="ENOENT"?{code:"openspec.delta-spec",satisfied:!1}:{code:"openspec.delta-spec",satisfied:!1,detail:`unsafe delta-spec path: ${s instanceof Error?s.message:String(s)}`}}let r=i.map(s=>we.join(n,s,"spec.md")),o=(await Promise.all(r.map(async s=>{try{return await xi(t,dn(t,s),{label:"OpenSpec delta spec"})?s:null}catch{return null}}))).filter(s=>s!==null);return{code:"openspec.delta-spec",satisfied:o.length>0,source:o[0]?dn(t,o[0]):void 0,detail:`${o.length} delta spec${o.length===1?"":"s"}`}}async function fg(t,e){let n,i=dn(t,e);try{n=(await F(t,i,Ol,{label:"Classic tasks artifact"})).bytes.toString("utf8")}catch(s){return s.code==="ENOENT"?{code:"build.tasks-complete",satisfied:!1}:{code:"build.tasks-complete",satisfied:!1,source:i,detail:`unsafe tasks artifact: ${s instanceof Error?s.message:String(s)}`}}let r=[...n.matchAll(/^\s*[-*]\s+\[([ xX])\]\s+/gmu)],o=r.filter(s=>s[1].toLowerCase()==="x").length;return{code:"build.tasks-complete",satisfied:r.length>0&&o===r.length,source:i,detail:`${o} of ${r.length} tasks complete`}}function mn(t,e){return t.some(n=>n.code===e&&n.satisfied)}async function kt(t,e){let n=await Ze(t),i=e.classic,r=we.join(t,"proposal.md"),o=we.join(t,"design.md"),s=we.join(t,"tasks.md"),a=e.run?we.resolve(t,e.run.checkpointRef):we.join(t,".comet","checkpoint.json"),c,l;try{c=await Le(n)}catch(d){l=d}let u=await Promise.all([qi(n,"openspec.proposal",r),qi(n,"openspec.design",o),qi(n,"openspec.tasks",s),ug(n,t),pn(n,"design.document",i?.designDoc??null,c,l),pn(n,"build.plan",i?.plan??null,c,l),fg(n,s),pn(n,"verification.report",i?.verificationReport??null,c,l),lg(n,t,i?.handoffContext??null,c),qi(n,"run.checkpoint",a)]),f=u.find(d=>d.code==="design.handoff");return f&&!i?.handoffHash&&(f.satisfied=!1,f.detail="handoff hash is missing"),u.push({code:"archive.confirmed",satisfied:i?.archiveConfirmation==="confirmed"}),u}import{createHash as _w,randomUUID as xw}from"crypto";import{promises as gs}from"fs";import ve from"path";function dg(t){return t.classicProfile??t.workflow}function pg(t){return!t.buildMode||!t.tddMode||!t.isolation||!t.verifyMode?!1:t.buildMode==="subagent-driven-development"?t.subagentDispatch==="confirmed":t.buildMode==="direct"?t.directOverride===!0:!0}function mg(t){return t.buildMode==="direct"&&t.tddMode==="direct"&&t.isolation!==null&&t.verifyMode==="light"}function hg(t,e,n){if(e.verifyResult==="fail")return t==="full"?"full.build.fix":`${t}.build.execute`;if(t==="full"){if(!mn(n,"build.plan"))return"full.build.plan";if(e.buildPause==="plan-ready")return"full.build.plan-ready";if(!pg(e))return"full.build.configure"}else if(!mg(e))throw new Error(`${t} build configuration is incomplete`);return mn(n,"build.tasks-complete")?`${t}.build.complete`:`${t}.build.execute`}function gg(t,e,n){return e.verifyResult!=="pass"||!mn(n,"verification.report")?`${t}.verify.run`:`${t}.verify.branch`}function wg(t,e){if(e.verifyResult!=="pass")throw new Error("archive requires verify_result=pass");return e.archiveConfirmation==="confirmed"?`${t}.archive.execute`:`${t}.archive.confirm`}function $i(t,e){let n=dg(t);if(t.archived&&t.phase!=="archive")throw new Error("archived=true requires phase=archive");if(t.archived)return"completed";if(n!=="full"&&t.phase==="design")throw new Error(`${n} workflow cannot enter design`);switch(t.phase){case"open":return`${n}.open`;case"design":return mn(e,"design.handoff")?"full.design.document":"full.design.handoff";case"build":return hg(n,t,e);case"verify":return gg(n,t,e);case"archive":return wg(n,t)}}var Hi=xt(mt(),1);$e();X();import Yi from"path";Bi();var Ul=["full","hotfix","tweak"],et=1,Tg=["open","design","build","verify","archive"],Ig=["en","zh-CN"],qg=["off","beta"],$g=["subagent-driven-development","executing-plans","direct"],Lg=["plan-ready"],Dg=["confirmed"],Fg=["tdd","direct"],Wg=["off","standard","thorough"],Mg=["current","branch","worktree"],Bg=["light","full"],Kg=["pending","pass","fail"],Ug=["pending","handled"],Yg=["pending","confirmed"],Ui=["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","verification_report","branch_status","created_at","verified_at","archive_confirmation","archived","direct_override","handoff_context","handoff_hash","classic_profile","classic_migration"],Hg=["run_id"],Jg=new Set([...Ui,...Hg]),Vg=["workflow","phase","design_doc","plan","build_mode","isolation","verify_mode","verify_result","verified_at","archived"];function Yl(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function bt(t,e){let n=t[e];if(n==null||n==="")return null;if(typeof n!="string")throw new Error(`Invalid Classic state: ${e} must be a string or null`);return n}function K(t,e,n,i=!0){let r=t[e];if(r==null||r===""){if(i)return null;throw new Error(`Invalid Classic state: ${e} is required`)}if(typeof r!="string"||!n.includes(r))throw new Error(`Invalid Classic state: ${e} must be one of ${n.join(", ")}${i?" or null":""}`);return r}function cs(t,e,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!="boolean")throw new Error(`Invalid Classic state: ${e} must be true or false`);return i}function Gg(t,e,n=0){let i=t[e];if(i==null||i==="")return n;if(typeof i!="number"||!Number.isInteger(i)||i<0)throw new Error(`Invalid Classic state: ${e} must be a non-negative integer`);return i}function Ki(t,e){let n=bt(t,e);if(n===null)return null;if(/^(?:[A-Za-z]:|[\\/]|~)/u.test(n)||n.split(/[\\/]/u).includes(".."))throw new Error(`Invalid Classic state: ${e} must be a relative repository path`);return n}function zg(t,e){let n=bt(t,e);if(n!==null&&!/^[a-f0-9]{64}$/u.test(n))throw new Error(`Invalid Classic state: ${e} must be a sha256 hex digest`);return n}function Qg(t){let e=t.classic_migration;if(e==null||e==="")return null;if(e!==et)throw new Error(`Invalid Classic state: classic_migration must be ${et}`);return e}function Xg(t){if(!Ui.some(n=>Yl(t,n)))return null;for(let n of Vg)if(!Yl(t,n))return null;return{workflow:K(t,"workflow",Ul,!1),language:K(t,"language",Ig),phase:K(t,"phase",Tg,!1),contextCompression:K(t,"context_compression",qg),buildMode:K(t,"build_mode",$g),buildPause:K(t,"build_pause",Lg),subagentDispatch:K(t,"subagent_dispatch",Dg),tddMode:K(t,"tdd_mode",Fg),reviewMode:K(t,"review_mode",Wg),isolation:K(t,"isolation",Mg),boundBranch:bt(t,"bound_branch"),verifyMode:K(t,"verify_mode",Bg),autoTransition:cs(t,"auto_transition"),baseRef:bt(t,"base_ref"),designDoc:Ki(t,"design_doc"),plan:Ki(t,"plan"),verifyResult:K(t,"verify_result",Kg,!1),verifyFailures:Gg(t,"verify_failures"),verificationReport:Ki(t,"verification_report"),branchStatus:K(t,"branch_status",Ug),createdAt:bt(t,"created_at"),verifiedAt:bt(t,"verified_at"),archiveConfirmation:K(t,"archive_confirmation",Yg),archived:cs(t,"archived",!1),directOverride:cs(t,"direct_override"),handoffContext:Ki(t,"handoff_context"),handoffHash:zg(t,"handoff_hash"),classicProfile:K(t,"classic_profile",Ul),classicMigration:Qg(t)}}function ls(t,e){let n=e??null;if(n===null&&e===void 0&&t.run_id&&t.skill)try{n=Fi(t)}catch(i){let r=i instanceof Error?i.message:String(i);throw new Error(r.replace(/^Invalid Run state:/u,"Invalid Classic state:"),{cause:i})}return{classic:Xg(t),run:n,unknownKeys:Object.keys(t).filter(i=>!Jg.has(i))}}function Hl(t){return{workflow:t.workflow,language:t.language,phase:t.phase,context_compression:t.contextCompression,build_mode:t.buildMode,build_pause:t.buildPause,subagent_dispatch:t.subagentDispatch,tdd_mode:t.tddMode,review_mode:t.reviewMode,isolation:t.isolation,bound_branch:t.boundBranch,verify_mode:t.verifyMode,auto_transition:t.autoTransition,base_ref:t.baseRef,design_doc:t.designDoc,plan:t.plan,verify_result:t.verifyResult,verify_failures:t.verifyFailures,verification_report:t.verificationReport,branch_status:t.branchStatus,created_at:t.createdAt,verified_at:t.verifiedAt,archive_confirmation:t.archiveConfirmation,archived:t.archived,direct_override:t.directOverride,handoff_context:t.handoffContext,handoff_hash:t.handoffHash,classic_profile:t.classicProfile,classic_migration:t.classicMigration}}Bi();var Zg=2*1024*1024;function wn(t){let e=t.toJS();if(e===null)return{};if(typeof e!="object"||Array.isArray(e))throw new Error("Invalid Classic state document: root must be a mapping");return e}function Jl(t,e,n){t.get(e)!==n&&t.set(e,n)}function ew(t,e){if(e.classic)for(let[n,i]of Object.entries(Hl(e.classic)))Jl(t,n,i);else for(let n of Ui)t.delete(n);os(t.toJS(),e.run),e.run?Jl(t,"run_id",e.run.runId):t.delete("run_id")}function tw(t){let e=["skill","skill_version","skill_hash","orchestration","current_step","iteration","pending","pending_ref","trajectory_ref","context_ref","artifacts_ref","checkpoint_ref","run_status","run_retries"];for(let n of e)t.delete(n)}function nw(t){let e=!1;for(let n of["build_command","verify_command"])t.has(n)&&(t.delete(n),e=!0);return e}async function Vl(t){let e;try{e=(await F(Yi.dirname(t),Yi.basename(t),Zg,{label:"Classic state document"})).bytes.toString("utf8")}catch(i){if(i.code!=="ENOENT")throw i;return new Hi.Document({})}let n=(0,Hi.parseDocument)(e);if(n.errors.length>0)throw new Error(`Invalid Classic state document: ${n.errors[0].message}`);return wn(n),n}async function Fe(t,e={}){let n=e.migrate!==!1,i=Yi.join(t,".comet.yaml"),r=await Vl(i),o=wn(r),s=nw(r);s&&(o=wn(r));let a=await ss(t);if(!a&&o.run_id&&o.skill){let{runStateFromDocument:c}=await Promise.resolve().then(()=>(Bi(),Kl));a=c(o),a&&n&&(await Mi(t,a),tw(r),s=!0)}return s&&n&&await Z(i,r.toString(),{containedRoot:t}),ls(wn(r),a)}async function tt(t,e,n={}){let i=Yi.join(t,".comet.yaml"),r=await Vl(i);ew(r,{...e,unknownKeys:e.unknownKeys??[]}),ls(wn(r),e.run??null),await Z(i,r.toString(),{containedRoot:t,beforeCommit:n.beforeCommit}),e.run?await Mi(t,e.run):await as(t)}function Gl(t,e,n){return{runId:e,skill:t.definition.metadata.name,skillVersion:t.definition.metadata.version,skillHash:n,orchestration:t.definition.orchestration.mode,currentStep:t.definition.orchestration.entry??null,iteration:0,pending:null,pendingRef:".comet/pending-action.json",trajectoryRef:".comet/trajectory.jsonl",contextRef:".comet/context.md",artifactsRef:".comet/artifacts.json",checkpointRef:".comet/checkpoint.json",status:"running",retries:{}}}rs();import Ji from"path";var ue={trajectory:8*1024*1024,artifacts:1024*1024,context:1024*1024,pendingAction:256*1024,checkpoint:256*1024};function re(t,e){if(Ji.isAbsolute(e))throw new Error("Run path must stay inside the change directory");let n=Ji.resolve(t),i=Ji.resolve(n,e);if(i!==n&&!i.startsWith(n+Ji.sep))throw new Error("Run path must stay inside the change directory")}async function St(t,e,n,i={}){re(t,e),await Wl(t,e,`${JSON.stringify(n)} -`,ue.trajectory,"Run trajectory",i)}async function yn(t,e,n={}){re(t,e);let i=await ye(t,e,ue.trajectory,"Run trajectory",n);return i===null?[]:i.split(/\r?\n/).map((r,o)=>({line:r,number:o+1})).filter(({line:r})=>r.length>0).map(({line:r,number:o})=>{try{return JSON.parse(r)}catch(s){throw new Error(`Invalid Trajectory event at line ${o}`,{cause:s})}})}async function us(t,e,n={}){re(t,e);let i=await ye(t,e,ue.artifacts,"Run artifacts",n);return i===null?{}:JSON.parse(i)}async function Vi(t,e,n,i={}){re(t,e),await De(t,e,JSON.stringify(n,null,2)+` -`,ue.artifacts,"Run artifacts",i)}async function Gi(t,e,n,i={}){re(t,e),await De(t,e,n,ue.context,"Run context",i)}async function zl(t,e,n={}){return re(t,e),ye(t,e,ue.context,"Run context",n)}async function Ql(t,e,n,i={}){re(t,e),await De(t,e,JSON.stringify(n,null,2)+` -`,ue.pendingAction,"Run pending action",i)}async function fs(t,e,n={}){re(t,e);let i=await ye(t,e,ue.pendingAction,"Run pending action",n);return i===null?null:JSON.parse(i)}async function Xl(t,e,n={}){re(t,e),await Di(t,e,"Run pending action",n)}async function zi(t,e,n,i={}){re(t,e),await De(t,e,JSON.stringify(n,null,2)+` -`,ue.checkpoint,"Run checkpoint",i)}async function Zl(t,e,n={}){re(t,e);let i=await ye(t,e,ue.checkpoint,"Run checkpoint",n);return i===null?null:JSON.parse(i)}import{createHash as pu,randomUUID as kw}from"crypto";import{promises as L}from"fs";import I from"path";var nu=xt(mt(),1);import{promises as ds}from"fs";import ee from"path";var iw=["invoke_skill","call_tool","handoff","ask_user","checkpoint"],rw=["deterministic","adaptive"],ow=["function","mcp","script","agent"],sw=["none","read","write","external"],aw=["progress","step","completion"],cw=["artifact_exists","state_equals"];function nt(t,e,n){return new Error(`${t}: ${e} ${n}`)}function V(t,e,n="document"){if(t===null||typeof t!="object"||Array.isArray(t))throw nt(e,n,"must be an object")}function We(t,e,n){if(!Array.isArray(t))throw nt(e,n,"must be an array")}function U(t,e,n){if(typeof t!="string")throw nt(e,n,"must be a string")}function oe(t,e,n,i){e in t&&U(t[e],n,`${i}.${e}`)}function iu(t,e,n,i){if(e in t&&typeof t[e]!="boolean")throw nt(n,`${i}.${e}`,"must be a boolean")}function Me(t,e,n,i){if(typeof t!="string"||!e.includes(t))throw nt(n,i,`must be one of ${e.join(", ")}`)}function Qi(t,e,n){We(t,e,n),t.forEach((i,r)=>{U(i,e,`${n}[${r}]`)})}function eu(t,e,n){V(t,e,n),U(t.name,e,`${n}.name`),U(t.description,e,`${n}.description`),iu(t,"required",e,n)}function lw(t,e,n){V(t,e,n),U(t.id,e,`${n}.id`),oe(t,"source",e,n),oe(t,"version",e,n)}function uw(t,e,n){V(t,e,n),U(t.id,e,`${n}.id`),U(t.role,e,`${n}.role`),oe(t,"instructions",e,n)}function fw(t,e,n){V(t,e,n),U(t.id,e,`${n}.id`),Me(t.kind,ow,e,`${n}.kind`),U(t.source,e,`${n}.source`),Me(t.sideEffect,sw,e,`${n}.sideEffect`),iu(t,"requiresConfirmation",e,n)}function dw(t,e,n){V(t,e,n),Me(t.type,iw,e,`${n}.type`),oe(t,"ref",e,n),oe(t,"prompt",e,n),oe(t,"question",e,n),"options"in t&&Qi(t.options,e,`${n}.options`)}function pw(t,e,n){V(t,e,n),U(t.id,e,`${n}.id`),dw(t.action,e,`${n}.action`),oe(t,"next",e,n),"completionEvals"in t&&Qi(t.completionEvals,e,`${n}.completionEvals`)}function mw(t,e){let n="goal";V(t,e,n),U(t.statement,e,`${n}.statement`),We(t.inputs,e,`${n}.inputs`),t.inputs.forEach((i,r)=>{eu(i,e,`${n}.inputs[${r}]`)}),We(t.outputs,e,`${n}.outputs`),t.outputs.forEach((i,r)=>{eu(i,e,`${n}.outputs[${r}]`)}),Qi(t.success,e,`${n}.success`)}function hw(t,e){let n="orchestration";V(t,e,n),Me(t.mode,rw,e,`${n}.mode`),oe(t,"entry",e,n),"steps"in t&&(We(t.steps,e,`${n}.steps`),t.steps.forEach((i,r)=>{pw(i,e,`${n}.steps[${r}]`)}))}function ru(t,e){return V(t,e),Me(t.apiVersion,["comet/v1alpha1"],e,"apiVersion"),Me(t.kind,["Skill"],e,"kind"),V(t.metadata,e,"metadata"),U(t.metadata.name,e,"metadata.name"),U(t.metadata.version,e,"metadata.version"),U(t.metadata.description,e,"metadata.description"),mw(t.goal,e),hw(t.orchestration,e),We(t.skills,e,"skills"),t.skills.forEach((n,i)=>{lw(n,e,`skills[${i}]`)}),We(t.agents,e,"agents"),t.agents.forEach((n,i)=>{uw(n,e,`agents[${i}]`)}),We(t.tools,e,"tools"),t.tools.forEach((n,i)=>{fw(n,e,`tools[${i}]`)}),t}function ou(t,e){V(t,e);for(let n of["allowedSkills","allowedAgents","allowedTools","confirmationRequiredFor"])n in t&&Qi(t[n],e,n);for(let n of["maxIterations","maxRetriesPerAction"])if(n in t&&(typeof t[n]!="number"||!Number.isFinite(t[n])))throw nt(e,n,"must be a finite number");return t}function gw(t,e){return V(t,e),"runtime"in t&&su(t.runtime,e,"runtime"),t}function su(t,e,n){return We(t,e,n),t.forEach((i,r)=>{let o=`${n}[${r}]`;V(i,e,o),U(i.id,e,`${o}.id`),Me(i.scope,aw,e,`${o}.scope`),Me(i.type,cw,e,`${o}.type`),oe(i,"artifact",e,o),oe(i,"field",e,o),oe(i,"equals",e,o)}),t}async function ps(t){let e=await ds.readFile(t,"utf8");try{return(0,nu.parse)(e)}catch(n){let i=n instanceof Error?n.message:String(n);throw nt(t,"document",i)}}async function ww(t){try{return await ps(t)}catch(e){if(e.code==="ENOENT")return null;throw e}}async function tu(t){try{return await ds.access(t),!0}catch(e){if(e.code==="ENOENT")return!1;throw e}}async function yw(t){let e=ee.join(t,"checks.yaml"),n=ee.join(t,"evals.yaml"),[i,r]=await Promise.all([tu(e),tu(n)]);if(r)throw new Error(`${n}: evals.yaml is no longer supported; use checks.yaml`);return i?{document:gw(await ps(e),e)}:{document:null}}async function au(t){let e=ee.resolve(t.root),n=ee.resolve(t.controlRoot);t.requireSkillMarkdown&&await ds.access(ee.join(e,"SKILL.md"));let i=ee.join(n,"skill.yaml"),r=ee.join(n,"guardrails.yaml"),o=ru(await ps(i),i),s=await ww(r),a=s===null?null:ou(s,r),c=await yw(n),l={allowedSkills:o.skills.map(u=>u.id),allowedAgents:o.agents.map(u=>u.id),allowedTools:o.tools.map(u=>u.id),maxIterations:50,maxRetriesPerAction:3,confirmationRequiredFor:o.tools.filter(u=>u.requiresConfirmation).map(u=>u.id)};return{root:e,packageKind:t.packageKind==="runtime"?"runtime":void 0,definition:o,guardrails:{...l,...a},evals:c.document?.runtime??[]}}async function cu(t){let e=ee.resolve(t);return au({root:e,controlRoot:ee.join(e,"comet"),packageKind:"skill",requireSkillMarkdown:!0})}async function lu(t){let e=ee.resolve(t);return au({root:e,controlRoot:e,packageKind:"runtime",requireSkillMarkdown:!1})}function uu(t,e,n=ee.join(e,"package.json")){V(t,n);let i=t.packageKind==="runtime"?"runtime":void 0,r=ru(t.definition,n),o=ou(t.guardrails,n),s=su(t.evals,n,"evals"),a={allowedSkills:r.skills.map(c=>c.id),allowedAgents:r.agents.map(c=>c.id),allowedTools:r.tools.map(c=>c.id),maxIterations:50,maxRetriesPerAction:3,confirmationRequiredFor:r.tools.filter(c=>c.requiresConfirmation).map(c=>c.id)};return{root:ee.resolve(e),packageKind:i,definition:r,guardrails:{...a,...o},evals:s}}import fu from"path";function vw(t,e,n,i){t.type==="invoke_skill"&&!e.definition.skills.some(r=>r.id===t.ref)&&n.push(`step ${i} references undeclared skill: ${t.ref??"(missing)"}`),t.type==="call_tool"&&!e.definition.tools.some(r=>r.id===t.ref)&&n.push(`step ${i} references undeclared tool: ${t.ref??"(missing)"}`),t.type==="handoff"&&!e.definition.agents.some(r=>r.id===t.ref)&&n.push(`step ${i} references undeclared agent: ${t.ref??"(missing)"}`),t.type==="ask_user"&&!t.question&&n.push(`step ${i} ask_user action requires question`)}function du(t){let e=[],{definition:n,guardrails:i,evals:r}=t;n.apiVersion!=="comet/v1alpha1"&&e.push("unsupported apiVersion"),n.kind!=="Skill"&&e.push("kind must be Skill"),n.metadata.name||e.push("metadata.name is required"),n.goal.statement||e.push("goal.statement is required"),i.maxIterations<1&&e.push("maxIterations must be at least 1"),i.maxRetriesPerAction<0&&e.push("maxRetriesPerAction must not be negative");let o=n.orchestration.steps??[];if(n.orchestration.mode==="adaptive")(n.orchestration.entry||o.length>0)&&e.push("adaptive orchestration must not define entry or steps");else{let s=new Set;for(let a of o)s.has(a.id)&&e.push(`duplicate step id: ${a.id}`),s.add(a.id),vw(a.action,t,e,a.id);(!n.orchestration.entry||!s.has(n.orchestration.entry))&&e.push(`orchestration.entry references unknown step: ${n.orchestration.entry??"(missing)"}`);for(let a of o){a.next&&!s.has(a.next)&&e.push(`step ${a.id} has unknown next step: ${a.next}`);for(let c of a.completionEvals??[])r.some(l=>l.id===c)||e.push(`step ${a.id} references unknown eval: ${c}`)}}for(let s of n.tools){if(s.kind!=="script")continue;let a=fu.posix.normalize(s.source.replaceAll("\\","/"));(fu.isAbsolute(s.source)||a===".."||a.startsWith("../"))&&e.push(`script tool ${s.id} must reference a relative path inside the Skill package`)}for(let s of i.allowedSkills)n.skills.some(a=>a.id===s)||e.push(`guardrails allow undeclared skill: ${s}`);for(let s of i.allowedAgents)n.agents.some(a=>a.id===s)||e.push(`guardrails allow undeclared agent: ${s}`);for(let s of i.allowedTools)n.tools.some(a=>a.id===s)||e.push(`guardrails allow undeclared tool: ${s}`);return e}function Xi(t){return Array.isArray(t)?t.map(Xi):t&&typeof t=="object"?Object.fromEntries(Object.entries(t).sort(([e],[n])=>e.localeCompare(n)).map(([e,n])=>[e,Xi(n)])):t}function bw(t){return Xi({...t.packageKind==="runtime"?{packageKind:"runtime"}:{},definition:t.definition,guardrails:t.guardrails,evals:t.evals})}function Sw(t){return I.posix.normalize(t.replaceAll("\\","/"))}function Ct(t,e,n){let i=I.relative(t,e);if(!(i===""||!I.isAbsolute(i)&&!i.startsWith(`..${I.sep}`)))throw new Error(`${n} resolves outside the Skill package`)}async function mu(t,e,n){let i=Sw(e);if(I.posix.isAbsolute(i)||i===".."||i.startsWith("../"))throw new Error(`${n} resolves outside the Skill package`);let r=I.resolve(t,...i.split("/"));Ct(t,r,n);let o;try{o=await L.realpath(r)}catch(s){throw s.code==="ENOENT"?new Error(`${n} does not exist: ${e}`,{cause:s}):s}if(Ct(t,o,n),!(await L.stat(o)).isFile())throw new Error(`${n} is not a file: ${e}`);return{path:i,content:await L.readFile(o)}}async function Cw(t){let e=await L.realpath(t.root),n=t.packageKind==="runtime"?[]:[await mu(e,"SKILL.md","SKILL.md")];for(let i of t.definition.tools)i.kind==="script"&&n.push(await mu(e,i.source,`Script tool ${i.id}`));return n.sort((i,r)=>i.path.localeCompare(r.path))}function Ew(t,e){let n=e.map(i=>({path:i.path,sha256:pu("sha256").update(i.content).digest("hex")}));return pu("sha256").update(JSON.stringify(Xi({package:t,files:n}))).digest("hex")}function wu(t){return JSON.stringify(t,null,2)+` -`}async function yu(t){let e=bw(t),n=await Cw(t);return{document:e,files:n,hash:Ew(e,n)}}async function Zi(t){return(await yu(t)).hash}async function hu(t){try{return await L.access(t),!0}catch(e){if(e.code==="ENOENT")return!1;throw e}}async function gu(t,e){try{if((await L.readFile(I.join(t,"sha256"),"utf8")).trim()!==e.hash)throw new Error("hash mismatch");if(await L.readFile(I.join(t,"package.json"),"utf8")!==wu(e.document))throw new Error("package mismatch");for(let r of e.files)if(!(await L.readFile(I.join(t,...r.path.split("/")))).equals(r.content))throw new Error(`file mismatch: ${r.path}`)}catch(n){throw new Error(`Existing Skill snapshot is invalid: ${e.hash}`,{cause:n})}}async function ms(t,e){let n=await yu(t),i=I.resolve(e,".comet","skill-snapshots"),r=I.join(i,n.hash);if(await L.mkdir(i,{recursive:!0}),await hu(r))return await gu(r,n),{hash:n.hash,snapshotDir:r};let o=I.join(i,`.tmp-${kw()}`);Ct(i,o,"Temporary snapshot"),Ct(i,r,"Published snapshot");try{await L.mkdir(o);for(let s of n.files){let a=I.join(o,...s.path.split("/"));Ct(o,a,`Snapshot file ${s.path}`),await L.mkdir(I.dirname(a),{recursive:!0}),await L.writeFile(a,s.content)}await L.writeFile(I.join(o,"package.json"),wu(n.document)),await L.writeFile(I.join(o,"sha256"),n.hash+` -`),await L.rename(o,r)}catch(s){if(await hu(r)){try{await gu(r,n)}finally{await L.rm(o,{recursive:!0,force:!0})}return{hash:n.hash,snapshotDir:r}}throw await L.rm(o,{recursive:!0,force:!0}),s}return{hash:n.hash,snapshotDir:r}}async function hs(t,e){if(!/^[a-f0-9]{64}$/u.test(e))throw new Error(`Invalid Skill snapshot hash: ${e}`);let n=I.resolve(t,".comet","skill-snapshots"),i=I.join(n,e);Ct(n,i,"Skill snapshot");try{let r=(await L.readFile(I.join(i,"sha256"),"utf8")).trim();if(r!==e)throw new Error(`stored hash is ${r||"(empty)"}`);let o=I.join(i,"package.json"),s=JSON.parse(await L.readFile(o,"utf8")),a=uu(s,i,o),c=du(a);if(c.length>0)throw new Error(c.map(u=>` - ${u}`).join(` -`));let l=await Zi(a);if(l!==e)throw new Error(`calculated hash is ${l}`);return a}catch(r){throw new Error(`Skill snapshot is invalid or missing: ${e}`,{cause:r})}}async function vu(t){try{return await gs.access(t),!0}catch(e){if(e.code==="ENOENT")return!1;throw e}}function ku(t){return _w("sha256").update(t).digest("hex")}function Pw(t){return ku(JSON.stringify(Object.fromEntries(Object.entries(t).sort(([e],[n])=>e.localeCompare(n)))))}function Rw(t){return t.replaceAll(".","_").replaceAll("-","_")}async function Nw(t,e){let n=await Ze(t),i=Object.fromEntries(e.filter(s=>s.satisfied&&s.source).map(s=>[Rw(s.code),s.source])),r=ve.join(t,"subagent-progress.md");await vu(r)&&(i.subagent_progress=ve.relative(n,r).split(ve.sep).join("/"));let o=e.find(s=>s.code==="design.handoff"&&s.satisfied);return o?.source&&(i.handoff_context=o.source),i}function Ow(t,e,n){return[{sequence:1,timestamp:n,type:"run_started",runId:t.runId,data:{skill:t.skill,skillVersion:t.skillVersion,skillHash:t.skillHash}},{sequence:2,timestamp:n,type:"state_migrated",runId:t.runId,data:{kind:"classic",migrationVersion:et,profile:e,source:"pre-migration"}}]}async function Aw(t){await Promise.all(t.map(e=>gs.rm(e,{recursive:!0,force:!0})))}async function bu(t,e){let n=await Fe(t);if(!n.classic)throw new Error("Classic migration requires a legacy state projection");let i=n.classic,r=i.classicProfile??i.workflow;if(n.run){if(i.classicMigration!==et)throw new Error("Classic Run exists without a supported classic_migration marker");if(n.run.skill!==e.skillPackage.definition.metadata.name)throw new Error(`Classic Run skill mismatch: expected ${e.skillPackage.definition.metadata.name}, got ${n.run.skill}`);if(await Zi(e.skillPackage)!==n.run.skillHash)return await hs(t,n.run.skillHash),{classic:i,run:n.run,evidence:await kt(t,n),migrated:!1,snapshotDir:ve.join(t,".comet","skill-snapshots",n.run.skillHash)};let d=await ms(e.skillPackage,t);return{classic:i,run:n.run,evidence:await kt(t,n),migrated:!1,snapshotDir:d.snapshotDir}}let o=await kt(t,n),s=$i(i,o);if(!e.skillPackage.definition.orchestration.steps?.some(f=>f.id===s))throw new Error(`Classic Skill package does not define resolved step: ${s}`);let a=await Zi(e.skillPackage),c=ve.join(t,".comet","skill-snapshots",a),l=await vu(c),u=[];try{let f=await ms(e.skillPackage,t),d=Gl(e.skillPackage,e.runId?.()??xw(),f.hash);d.currentStep=s,s==="completed"&&(d.status="completed");let h={...i,classicProfile:r,classicMigration:et},w=await Nw(t,o),p=await Ze(t),m=o.find(S=>S.code==="design.handoff"&&S.satisfied),y=null;m?.source&&(y=await vt(p,m.resolvedSource??m.source,{label:"Classic migration handoff context",hooks:e.handoffReadHooks}),await Gi(t,d.contextRef,y),u.push(ve.resolve(t,d.contextRef))),await Vi(t,d.artifactsRef,w),u.push(ve.resolve(t,d.artifactsRef));let g=(e.now?.()??new Date).toISOString(),b={runId:d.runId,stateVersion:1,trajectoryOffset:2,contextHash:y===null?null:ku(y),artifactsHash:Pw(w),createdAt:g};await zi(t,d.checkpointRef,b),u.push(ve.resolve(t,d.checkpointRef)),u.push(ve.resolve(t,d.trajectoryRef));for(let S of Ow(d,r,g))await St(t,d.trajectoryRef,S);return await tt(t,{classic:h,run:d,unknownKeys:n.unknownKeys}),{classic:h,run:d,evidence:o,migrated:!0,snapshotDir:f.snapshotDir}}catch(f){throw await Aw(u),l||await gs.rm(c,{recursive:!0,force:!0}),f}}async function jw(t){try{return(await Su.stat(t)).isDirectory()}catch(e){if(e.code==="ENOENT")return!1;throw e}}async function er(t){try{return(await Su.stat(t)).isFile()}catch(e){if(e.code==="ENOENT")return!1;throw e}}async function Tw(t){return await jw(t)?await er(z.join(t,"skill.yaml"))?!0:await er(z.join(t,"SKILL.md"))&&await er(z.join(t,"comet","skill.yaml")):!1}function Iw(t){return{root:t,packageKind:"runtime",definition:{apiVersion:"comet/v1alpha1",kind:"Skill",metadata:{name:"comet-classic",version:"1",description:"Internal compatibility orchestration for classic Comet full, hotfix, and tweak workflows"},goal:{statement:"Advance or restore a classic Comet Run without changing the user command surface",inputs:[{name:"classic-state",description:"Validated ClassicState consistent with the Run projection",required:!0},{name:"evidence",description:"Structured evidence produced by the Classic Evidence collector",required:!0}],outputs:[{name:"run-state",description:"Atomically synchronized Classic and Run state",required:!0}],success:["Legacy fields and Run fields remain consistent","Every step invokes only a declared public Comet Skill","The completed state passes its completion eval"]},orchestration:{mode:"deterministic",entry:"full.open",steps:[{id:"full.open",action:{type:"invoke_skill",ref:"comet-open"},next:"full.design.handoff"},{id:"full.design.handoff",action:{type:"invoke_skill",ref:"comet-design"},next:"full.design.document"},{id:"full.design.document",action:{type:"invoke_skill",ref:"comet-design"},next:"full.build.plan"},{id:"full.build.plan",action:{type:"invoke_skill",ref:"comet-build"},next:"full.build.plan-ready"},{id:"full.build.plan-ready",action:{type:"invoke_skill",ref:"comet-build"},next:"full.build.configure"},{id:"full.build.configure",action:{type:"invoke_skill",ref:"comet-build"},next:"full.build.execute"},{id:"full.build.execute",action:{type:"invoke_skill",ref:"comet-build"},next:"full.build.complete"},{id:"full.build.complete",action:{type:"invoke_skill",ref:"comet-build"},next:"full.verify.run"},{id:"full.build.fix",action:{type:"invoke_skill",ref:"comet-build"},next:"full.build.execute"},{id:"full.verify.run",action:{type:"invoke_skill",ref:"comet-verify"},next:"full.verify.branch"},{id:"full.verify.branch",action:{type:"invoke_skill",ref:"comet-verify"},next:"full.archive.confirm"},{id:"full.archive.confirm",action:{type:"invoke_skill",ref:"comet-archive"},next:"full.archive.execute"},{id:"full.archive.execute",action:{type:"invoke_skill",ref:"comet-archive"},next:"completed"},{id:"hotfix.open",action:{type:"invoke_skill",ref:"comet-hotfix"},next:"hotfix.build.execute"},{id:"hotfix.build.execute",action:{type:"invoke_skill",ref:"comet-build"},next:"hotfix.build.complete"},{id:"hotfix.build.complete",action:{type:"invoke_skill",ref:"comet-build"},next:"hotfix.verify.run"},{id:"hotfix.verify.run",action:{type:"invoke_skill",ref:"comet-verify"},next:"hotfix.verify.branch"},{id:"hotfix.verify.branch",action:{type:"invoke_skill",ref:"comet-verify"},next:"hotfix.archive.confirm"},{id:"hotfix.archive.confirm",action:{type:"invoke_skill",ref:"comet-archive"},next:"hotfix.archive.execute"},{id:"hotfix.archive.execute",action:{type:"invoke_skill",ref:"comet-archive"},next:"completed"},{id:"tweak.open",action:{type:"invoke_skill",ref:"comet-tweak"},next:"tweak.build.execute"},{id:"tweak.build.execute",action:{type:"invoke_skill",ref:"comet-build"},next:"tweak.build.complete"},{id:"tweak.build.complete",action:{type:"invoke_skill",ref:"comet-build"},next:"tweak.verify.run"},{id:"tweak.verify.run",action:{type:"invoke_skill",ref:"comet-verify"},next:"tweak.verify.branch"},{id:"tweak.verify.branch",action:{type:"invoke_skill",ref:"comet-verify"},next:"tweak.archive.confirm"},{id:"tweak.archive.confirm",action:{type:"invoke_skill",ref:"comet-archive"},next:"tweak.archive.execute"},{id:"tweak.archive.execute",action:{type:"invoke_skill",ref:"comet-archive"},next:"completed"},{id:"completed",action:{type:"checkpoint"},completionEvals:["classic-completed"]}]},skills:[{id:"comet-open"},{id:"comet-design"},{id:"comet-build"},{id:"comet-verify"},{id:"comet-archive"},{id:"comet-hotfix"},{id:"comet-tweak"}],agents:[],tools:[]},guardrails:{allowedSkills:["comet-open","comet-design","comet-build","comet-verify","comet-archive","comet-hotfix","comet-tweak"],allowedAgents:[],allowedTools:[],maxIterations:500,maxRetriesPerAction:3,confirmationRequiredFor:[]},evals:[{id:"classic-completed",scope:"completion",type:"state_equals",field:"status",equals:"completed"}]}}async function qw(){let t=z.dirname(Cu(import.meta.url)),e=[process.env.COMET_RUNTIME_CLASSIC_ROOT,z.resolve(t,"..","runtime","classic"),z.resolve(t,"..","..","comet","runtime","classic"),z.resolve(t,"..","..","assets","skills","comet","runtime","classic"),z.resolve("assets","skills","comet","runtime","classic"),process.env.COMET_CLASSIC_SKILL_ROOT,z.resolve(t,"..","..","comet-classic"),z.resolve(t,"..","..","assets","skills","comet-classic"),z.resolve("assets","skills","comet-classic")].filter(n=>!!n);for(let n of e)if(await Tw(n))return n;return null}async function $w(t){return await er(z.join(t,"skill.yaml"))?lu(t):cu(t)}async function Eu(t){let e=await qw();return bu(t,{skillPackage:e?await $w(e):Iw(z.dirname(Cu(import.meta.url)))})}async function _u(t,e,n,i){let r=await Fe(t);if(!r.classic||!r.run)throw new Error("Classic transition requires synchronized Classic and Run projections");let o=await kt(t,{classic:e,run:n,unknownKeys:r.unknownKeys}),s=$i(e,o),a={...n,currentStep:s,iteration:n.iteration+1,status:s==="completed"?"completed":"running"};await tt(t,{classic:e,run:a,unknownKeys:r.unknownKeys});let c=await yn(t,a.trajectoryRef);return await St(t,a.trajectoryRef,{sequence:c.length+1,timestamp:new Date().toISOString(),type:"state_transitioned",runId:a.runId,data:{kind:"classic",fromStep:n.currentStep,toStep:s,...i}}),a}import{AsyncLocalStorage as Lw}from"async_hooks";import{promises as xu}from"fs";import vn from"path";var ws=new Lw;function Dw(t,e){let n=vn.relative(t,e);return n===""||!vn.isAbsolute(n)&&n!==".."&&!n.startsWith(`..${vn.sep}`)}async function Fw(t){let e=vn.resolve(t.invocationCwd??process.cwd()),n=vn.resolve(t.projectRoot??await Ze(e)),[i,r]=await Promise.all([xu.realpath(e),xu.realpath(n)]);if(!Dw(r,i))throw new Error(`Classic command invocation cwd is outside the discovered project: ${e}`);return{invocationCwd:e,projectRoot:n}}async function Pu(t,e){let n=ws.getStore();if(n)return e(n);let i=await Fw(t);return ws.run(i,()=>e(i))}function Ru(){let t=ws.getStore();if(!t)throw new Error("Classic command project context is unavailable");return t.projectRoot}var Ww="\x1B[32m",Mw="\x1B[31m",Bw="\x1B[33m",vs="\x1B[0m";function Be(t){return`${Ww}${t}${vs}`}function G(t){return`${Mw}${t}${vs}`}function Kw(t){return`${Bw}${t}${vs}`}var B=class extends Error{constructor(n,i=1){super(n);this.exitCode=i}exitCode},ys=class{stdout=[];stderr=[];toResult(e=0){return{exitCode:e,...this.stdout.length>0?{stdout:this.stdout.join(` +`,n)+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 n=wi(e),i=pt(n);return i.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let n=wi(e),i=pt(n);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,n){return this.type!=="comment"||this.indent<=n?!1:e.every(i=>i.type==="newline"||i.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())}}};il.Parser=qo});var cl=k(rn=>{"use strict";var rl=So(),sh=Vt(),nn=Qt(),ah=vr(),ch=_(),lh=Io(),ol=$o();function sl(t){let e=t.prettyErrors!==!1;return{lineCounter:t.lineCounter||e&&new lh.LineCounter||null,prettyErrors:e}}function uh(t,e={}){let{lineCounter:n,prettyErrors:i}=sl(e),r=new ol.Parser(n?.addNewLine),o=new rl.Composer(e),s=Array.from(o.compose(r.parse(t)));if(i&&n)for(let a of s)a.errors.forEach(nn.prettifyError(t,n)),a.warnings.forEach(nn.prettifyError(t,n));return s.length>0?s:Object.assign([],{empty:!0},o.streamInfo())}function al(t,e={}){let{lineCounter:n,prettyErrors:i}=sl(e),r=new ol.Parser(n?.addNewLine),o=new rl.Composer(e),s=null;for(let a of o.compose(r.parse(t),!0,t.length))if(!s)s=a;else if(s.options.logLevel!=="silent"){s.errors.push(new nn.YAMLParseError(a.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return i&&n&&(s.errors.forEach(nn.prettifyError(t,n)),s.warnings.forEach(nn.prettifyError(t,n))),s}function fh(t,e,n){let i;typeof e=="function"?i=e:n===void 0&&e&&typeof e=="object"&&(n=e);let r=al(t,n);if(!r)return null;if(r.warnings.forEach(o=>ah.warn(r.options.logLevel,o)),r.errors.length>0){if(r.options.logLevel!=="silent")throw r.errors[0];r.errors=[]}return r.toJS(Object.assign({reviver:i},n))}function dh(t,e,n){let i=null;if(typeof e=="function"||Array.isArray(e)?i=e:n===void 0&&e&&(n=e),typeof n=="string"&&(n=n.length),typeof n=="number"){let r=Math.round(n);n=r<1?void 0:r>8?{indent:8}:{indent:r}}if(t===void 0){let{keepUndefined:r}=n??e??{};if(!r)return}return ch.isDocument(t)&&!i?t.toString(n):new sh.Document(t,i,n).toString(n)}rn.parse=fh;rn.parseAllDocuments=uh;rn.parseDocument=al;rn.stringify=dh});var mt=k(x=>{"use strict";var ph=So(),mh=Vt(),hh=to(),Lo=Qt(),gh=jt(),Ae=_(),wh=xe(),yh=j(),vh=Re(),kh=Ne(),bh=hi(),Sh=jo(),Ch=Io(),Eh=$o(),vi=cl(),ll=Rt();x.Composer=ph.Composer;x.Document=mh.Document;x.Schema=hh.Schema;x.YAMLError=Lo.YAMLError;x.YAMLParseError=Lo.YAMLParseError;x.YAMLWarning=Lo.YAMLWarning;x.Alias=gh.Alias;x.isAlias=Ae.isAlias;x.isCollection=Ae.isCollection;x.isDocument=Ae.isDocument;x.isMap=Ae.isMap;x.isNode=Ae.isNode;x.isPair=Ae.isPair;x.isScalar=Ae.isScalar;x.isSeq=Ae.isSeq;x.Pair=wh.Pair;x.Scalar=yh.Scalar;x.YAMLMap=vh.YAMLMap;x.YAMLSeq=kh.YAMLSeq;x.CST=bh;x.Lexer=Sh.Lexer;x.LineCounter=Ch.LineCounter;x.Parser=Eh.Parser;x.parse=vi.parse;x.parseAllDocuments=vi.parseAllDocuments;x.parseDocument=vi.parseDocument;x.stringify=vi.stringify;x.visit=ll.visit;x.visitAsync=ll.visitAsync});import ht from"path";function jh(t,e){if(typeof t!="string")throw new Error(`${e} must be a string`);let n=t.trim();if(n.length===0||ht.posix.isAbsolute(n)||ht.win32.isAbsolute(n)||/^(?:~|[\\/])/u.test(n))throw new Error(`${e} must be a project-relative path`);if(n===".")return[];let i=n.replaceAll("\\","/").split("/");if(i.some(r=>r===".."))throw new Error(`${e} must stay inside the project root`);if(i.some(r=>r===""||r==="."))throw new Error(`${e} must not contain empty or dot path segments`);return i}function ki(t){let e=jh(t,"native.artifact_root");return e.length===0?".":e.join("/")}function dl(t,e="docs"){let n=t??e;if(n!=="legacy"&&n!=="docs")throw new Error("classic.artifact_layout must be legacy or docs");return n}function he(t,e,n=!1){if(typeof t!="string")throw new Error(`${e} must be a string`);let i=t.trim().replaceAll("\\","/");if(i.length===0||ht.posix.isAbsolute(i)||ht.win32.isAbsolute(i)||/^(?:~|[\\/])/u.test(i))throw new Error(`${e} must be relative to its declared path base`);let r=i.split("/");if(r.some(o=>o===".."))throw new Error(`${e} must stay inside its declared path base`);if(r.some(o=>o===""||o==="."))throw new Error(`${e} must not contain empty or dot path segments`);if(!n&&/[*?]/u.test(i))throw new Error(`${e} cannot contain wildcards`);return r.join("/")}function je(t,e){if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`${e} must be a mapping`);return t}function pl(t,e,n){let i=t??e;if(i!=="en"&&i!=="zh-CN")throw new Error(`${n} must be en or zh-CN`);return i}function ml(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>Fo)throw new Error(`${e} exceeds ${Fo} characters`);let n=0;for(let i=0;iWo)throw new Error(`${e} contains more than ${Wo} wildcard tokens`);return t}function fl(t,e,n){if(t===void 0)return[...n];if(!Array.isArray(t))throw new Error(`${e} contains an unsafe pattern`);return[...new Set(t.map(i=>ml(i,e)))].sort((i,r)=>i.localeCompare(r,"en"))}function Do(t,e,n){let i=t??e;if(!Number.isSafeInteger(i)||i<1)throw new Error(`${n} must be a positive integer`);return i}function Th(t){if(t===void 0)return{...me,include:[...me.include],exclude:[...me.exclude]};let e=je(t,"native.snapshot");return{include:fl(e.include,"native.snapshot.include",me.include),exclude:fl(e.exclude,"native.snapshot.exclude",me.exclude),max_files:Do(e.max_files,me.max_files,"native.snapshot.max_files"),max_total_bytes:Do(e.max_total_bytes,me.max_total_bytes,"native.snapshot.max_total_bytes"),max_duration_ms:Do(e.max_duration_ms,me.max_duration_ms,"native.snapshot.max_duration_ms")}}function Ih(t){if(t===void 0)return;let e=je(t,"native.pending_root_move"),n=e.id,i=e.from_artifact_root,r=e.to_artifact_root,o=e.stage;if(typeof n!="string"||!/^[a-f0-9-]{8,}$/u.test(n))throw new Error("native.pending_root_move.id is invalid");if(typeof i!="string"||typeof r!="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 s;if(e.cleanup!==void 0){let a=je(e.cleanup,"native.pending_root_move.cleanup"),c=a.kind,l=a.state,u=a.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 u!="string"||!/^[a-f0-9]{64}$/u.test(u))throw new Error("native.pending_root_move.cleanup.manifest_hash is invalid");s={kind:c,state:l,manifestHash:u}}return{id:n,fromArtifactRoot:ki(i),toArtifactRoot:ki(r),stage:o,...s?{cleanup:s}:{}}}function qh(t){if(t===void 0)return;let e=je(t,"native.finish");if(e.pull_request===void 0)return{};let n=je(e.pull_request,"native.finish.pull_request");if(n.provider!=="repository-command")throw new Error("native.finish.pull_request.provider must be repository-command");if(!Array.isArray(n.command)||n.command.length===0)throw new Error("native.finish.pull_request.command must be a non-empty array");if(n.command.length>64)throw new Error("native.finish.pull_request.command must contain at most 64 arguments");let i=n.command.map((o,s)=>{if(typeof o!="string"||o.trim().length===0||o.length>4096||/[\0\r\n]/u.test(o))throw new Error(`native.finish.pull_request.command[${s}] must be a non-empty single-line string of at most 4096 characters`);return o});if(ht.posix.isAbsolute(i[0])||ht.win32.isAbsolute(i[0]))throw new Error("native.finish.pull_request.command[0] must be a bare executable name or a project-relative path");let r=n.timeout_ms??Rh;if(!Number.isSafeInteger(r)||r<1||r>ul)throw new Error(`native.finish.pull_request.timeout_ms must be an integer between 1 and ${ul}`);return{pull_request:{provider:"repository-command",command:i,timeout_ms:r}}}function $h(t,e={}){let n=je(t,"native"),i=n.artifact_root??(e.allowMissingArtifactRoot?"docs":void 0);if(typeof i!="string")throw new Error("native.artifact_root must be a string");let r=n.clarification_mode??"batch";if(r!=="sequential"&&r!=="batch")throw new Error("native.clarification_mode must be sequential or batch");let o=n.archive_confirmation??"automatic";if(o!=="automatic"&&o!=="required")throw new Error("native.archive_confirmation must be automatic or required");let s=n.max_verify_failures??Ph;if(!Number.isSafeInteger(s)||s<1)throw new Error("native.max_verify_failures must be a positive integer");let a=Ih(n.pending_root_move),c=qh(n.finish);return{artifact_root:ki(i),language:pl(n.language,"en","native.language"),clarification_mode:r,archive_confirmation:o,max_verify_failures:s,snapshot:Th(n.snapshot),...c?{finish:c}:{},...a?{pending_root_move:a}:{}}}function Lh(t){let e=je(t,"classic"),n=e.context_compression??"off";if(n!=="off"&&n!=="beta")throw new Error("classic.context_compression must be off or beta");let i=e.review_mode??"standard";if(i!=="off"&&i!=="standard"&&i!=="thorough")throw new Error("classic.review_mode must be off, standard, or thorough");let r=e.auto_transition??!0;if(typeof r!="boolean")throw new Error("classic.auto_transition must be true or false");return{artifact_layout:dl(e.artifact_layout),language:pl(e.language,"zh-CN","classic.language"),context_compression:n,review_mode:i,auto_transition:r}}function Dh(t){let n=je(t,"hook").allow_paths??[];if(!Array.isArray(n))throw new Error("hook.allow_paths must be an array");return{allow_paths:[...new Set(n.map((i,r)=>he(i,`hook.allow_paths[${r}]`)))]}}function Fh(t){let e=t??!0;if(typeof e!="boolean")throw new Error("ambient_resume must be true or false");return e}function Wh(t,e,n,i,r,o){let s=t.schema!==void 0;if(!(s||t.default_workflow!==void 0||t.workflows!==void 0||!o.allowPartialProject&&t.native!==void 0)||o.allowPartialProject&&!s)return null;if(t.schema!=="comet.project.v1")throw new Error("Unsupported Comet project schema");if(t.default_workflow!=="native"&&t.default_workflow!=="classic")throw new Error("default_workflow must be native or classic");let c=t.workflows??[t.default_workflow];if(!Array.isArray(c)||c.length===0||c.some(u=>u!=="native"&&u!=="classic"))throw new Error("workflows must contain native and/or classic");let l=[...new Set(c)];if(!l.includes(t.default_workflow))throw new Error("workflows must include default_workflow");if(l.includes("native")&&!n)throw new Error("native must be a mapping");return{schema:"comet.project.v1",default_workflow:t.default_workflow,workflows:l,ambient_resume:r,...e?{hook:e}:{},...n?{native:n}:{},...i?{classic:i}:{}}}function gt(t,e={}){let n=(0,Mo.parseDocument)(t,{uniqueKeys:!0});if(n.errors.length>0)throw new Error(`Invalid .comet/config.yaml: ${n.errors[0].message}`);let i=n.toJS();if(i==null)return{value:{},config:null,ambient_resume:!0};if(typeof i!="object"||Array.isArray(i))throw new Error("Invalid .comet/config.yaml: root must be a mapping");let r=i,o=Fh(r.ambient_resume),s=r.hook===void 0?void 0:Dh(r.hook),a=r.native===void 0?void 0:$h(r.native,{allowMissingArtifactRoot:e.allowMissingNativeFields}),c=r.classic===void 0?void 0:Lh(r.classic),l=Wh(r,s,a,c,o,{allowPartialProject:e.allowPartialProject??!1});return{value:r,config:l,ambient_resume:o,...s?{hook:s}:{},...a?{native:a}:{},...c?{classic:c}:{}}}var Mo,sn,Fo,Wo,Ph,Rh,ul,Nh,Oh,Ah,me,ge=q(()=>{"use strict";Mo=Pt(mt(),1),sn=64*1024,Fo=1024,Wo=64,Ph=5,Rh=12e4,ul=6e5,Nh=[".agents/skills/**",".amazonq/skills/**",".augment/skills/**",".bob/skills/**",".claude/skills/**",".cline/skills/**",".codebuddy/skills/**",".workbuddy/skills/**",".continue/skills/**",".cospec/skills/**",".crush/skills/**",".cursor/skills/**",".factory/skills/**",".forge/skills/**",".gemini/skills/**",".github/skills/**",".iflow/skills/**",".junie/skills/**",".kilocode/skills/**",".kimi-code/skills/**",".kiro/skills/**",".lingma/skills/**",".mimocode/skills/**",".opencode/skills/**",".pi/skills/**",".qoder/skills/**",".qwen/skills/**",".roo/skills/**",".trae-cn/skills/**",".trae/skills/**",".windsurf/skills/**",".zcode/skills/**"],Oh=["**/.idea/**","**/.vscode/**",".codex/skills/**","**/node_modules/**","**/.next/**","**/.nuxt/**","**/.output/**","**/.svelte-kit/**","**/.vite/**","**/.parcel-cache/**","**/.turbo/**","**/.nx/cache/**","**/dist/**","**/build/**","**/out/**","**/coverage/**","**/.nyc_output/**","**/target/**","**/.gradle/**","**/.cxx/**","**/.externalNativeBuild/**","**/captures/**","**/__pycache__/**","**/.pytest_cache/**","**/.mypy_cache/**","**/.ruff_cache/**","**/.tox/**","**/.nox/**","**/.venv/**","**/venv/**","**/obj/**","**/CMakeFiles/**","**/cmake-build-*/**","**/.cache/**","**/tmp/**","**/temp/**","**/logs/**","**/*.tsbuildinfo","**/*.log","**/.DS_Store","**/Thumbs.db"],Ah=[...Nh,...Oh].sort((t,e)=>t.localeCompare(e,"en")),me={include:["**/*"],exclude:[...Ah],max_files:1e4,max_total_bytes:256*1024*1024,max_duration_ms:6e4}});function Te(t){return t!==0&&t!==0n&&t!=="0"}function bi(t,e){return Te(t.dev)&&Te(e.dev)&&Te(t.ino)&&Te(e.ino)}function we(t,e){let n=Te(t.dev)&&Te(e.dev);if(n&&t.dev!==e.dev)return!1;let i=Te(t.ino)&&Te(e.ino);return i&&t.ino!==e.ino?!1:n&&i?!0:t.birthtime===e.birthtime}var Si=q(()=>{"use strict"});import{constants as Ci,promises as Xe}from"fs";function Bo(t){return"birthtimeNs"in t&&typeof t.birthtimeNs=="bigint"?t.birthtimeNs:t.birthtimeMs}function hl(t){return"ctimeNs"in t&&typeof t.ctimeNs=="bigint"?t.ctimeNs:t.ctimeMs}function an(t){return{dev:t.dev,ino:t.ino,birthtime:Bo(t)}}function Ei(t,e){let n=an(t),i=an(e);return bi(n,i)?we(n,i):we(n,i)&&Bo(t)===Bo(e)&&hl(t)===hl(e)&&t.size===e.size}async function gl(t,e,n={}){if(!Number.isSafeInteger(e)||e<1)throw new Error("race-safe read byte limit must be a positive integer");let i=n.label??"file",r=n.bigint===!0,o=await Xe.lstat(t,{bigint:r});if(!o.isFile()||o.isSymbolicLink())throw new Ie("not-regular-file",`${i} must be a regular file`);if(BigInt(o.size)>BigInt(e))throw new Ie("too-large",`${i} exceeds ${e} bytes`);let s=await Xe.realpath(t);await n.verify?.("pre-open",{realPath:s,identity:an(o)});let a=process.platform==="win32"?Ci.O_RDONLY:Ci.O_RDONLY|Ci.O_NOFOLLOW|Ci.O_NONBLOCK,c;try{c=await Xe.open(t,a)}catch(l){throw l.code==="ELOOP"?new Ie("not-regular-file",`${i} must be a regular file`,{cause:l}):l}try{let[l,u,f]=await Promise.all([c.stat({bigint:r}),Xe.lstat(t,{bigint:r}),Xe.realpath(t)]);if(!l.isFile()||!u.isFile()||u.isSymbolicLink()||f!==s||!Ei(o,l)||!Ei(o,u))throw new Ie("changed",`${i} changed while opening`);await n.verify?.("post-open",{realPath:f,identity:an(l)}),await n.hooks?.afterOpen?.();let d=[],m=0,g=Buffer.allocUnsafe(Math.min(64*1024,e+1));for(;;){let y=e+1-m,{bytesRead:b}=await c.read(g,0,Math.min(g.length,y),null);if(b===0)break;if(m+=b,m>e)throw new Ie("too-large",`${i} exceeds ${e} bytes`);d.push(Buffer.from(g.subarray(0,b)))}await n.hooks?.beforeFinalCheck?.();let[p,h,w]=await Promise.all([c.stat({bigint:r}),Xe.lstat(t,{bigint:r}),Xe.realpath(t)]);if(!h.isFile()||h.isSymbolicLink()||w!==s||!Ei(o,p)||!Ei(o,h))throw new Ie("changed",`${i} changed while reading`);return await n.verify?.("post-read",{realPath:w,identity:an(p)}),{bytes:Buffer.concat(d,m),stat:p,realPath:w}}finally{await c.close()}}var Ie,wl=q(()=>{"use strict";Si();Ie=class extends Error{reason;constructor(e,n,i){super(n,i),this.name="RaceSafeReadError",this.reason=e}}});import{promises as qe}from"fs";import ne from"path";function yl(t){let e=t?.code;return e==="ENOENT"||e==="ENOTDIR"}function _i(t,e){let n=ne.relative(t,e);return n===""||!ne.isAbsolute(n)&&n!==".."&&!n.startsWith(`..${ne.sep}`)}async function Ko(t,e){let n=ne.resolve(t),i=await qe.lstat(n);if(!i.isDirectory()||i.isSymbolicLink())throw new Error(`${e} project root must be a real directory`);return qe.realpath(n)}async function Uo(t,e,n,i){let r=t;for(let o=0;o{if(!_i(o,a.realPath))throw new Error(`${i.label} resolves outside the project root`);await Uo(r.projectRoot,o,r.relative.split("/"),{label:i.label,expected:"file"})}})}var Q=q(()=>{"use strict";wl();ge()});import{createHash as Mh}from"crypto";function Bh(t){let e=t?.code;return e==="ENOENT"||e==="ENOTDIR"}async function ln(t,e={}){return(await Pi(t,e)).document}async function Kh(t){try{return(await F(t,cn,sn,{label:cn})).bytes}catch(e){if(Bh(e))return null;throw e}}function Uh(t){return t?{exists:!0,sha256:Mh("sha256").update(t).digest("hex")}:{exists:!1,sha256:null}}async function Pi(t,e={}){let n=await Kh(t);return{document:n?gt(n.toString("utf8"),e):null,identity:Uh(n)}}async function Ho(t){return(await ln(t))?.config??null}var cn,wt=q(()=>{"use strict";ge();Q();cn=".comet/config.yaml"});import{randomUUID as Yh}from"crypto";import{constants as Hh,promises as T}from"fs";import W from"path";async function Jo(t,e){try{return await T.link(t,e),{linked:!0}}catch(n){let i=n.code;if(i!=="ENOTSUP"&&i!=="EOPNOTSUPP")throw n}return await T.copyFile(t,e,Hh.COPYFILE_EXCL),{linked:!1}}function yt(t,e){let n=W.relative(t,e);return n===""||!W.isAbsolute(n)&&n!==".."&&!n.startsWith(`..${W.sep}`)}function Ni(t){return{dev:t.dev,ino:t.ino,birthtime:t.birthtimeMs}}function Jh(t,e){return we(t,Ni(e))}function Ri(t,e){let n=Ni(t),i=Ni(e);return bi(n,i)?we(n,i):we(n,i)&&t.birthtimeMs===e.birthtimeMs&&t.ctimeMs===e.ctimeMs&&t.size===e.size}async function Oi(t){let e=await T.lstat(t);if(!e.isDirectory()||e.isSymbolicLink())throw new Error(`Contained atomic write parent must be a real directory: ${t}`);return{path:t,realPath:await T.realpath(t),...Ni(e)}}async function $e(t){for(let e of t){let n=await T.lstat(e.path);if(!n.isDirectory()||n.isSymbolicLink()||!Jh(e,n)||await T.realpath(e.path)!==e.realPath)throw new Error(`Contained atomic write parent changed before commit: ${e.path}`)}}async function Vh(t,e){let n=W.resolve(t),i=W.resolve(e);if(!yt(n,i))throw new Error(`Contained atomic write parent is outside its managed root: ${e}`);let r=[await Oi(n)],o=W.relative(n,i).split(W.sep).filter(Boolean),s=n;for(let a of o){await $e(r),s=W.join(s,a);try{await T.mkdir(s)}catch(l){if(l.code!=="EEXIST")throw l}let c=await Oi(s);if(!yt(r[0].realPath,c.realPath))throw new Error(`Contained atomic write parent resolves outside its managed root: ${s}`);r.push(c)}return await $e(r),r}async function Gh(t,e){let n=W.resolve(t),i=W.resolve(e);if(!yt(n,i))throw new Error(`Contained file parent is outside its managed root: ${e}`);let r=[await Oi(n)],o=W.relative(n,i).split(W.sep).filter(Boolean),s=n;for(let a of o){s=W.join(s,a);try{let c=await Oi(s);if(!yt(r[0].realPath,c.realPath))throw new Error(`Contained file parent resolves outside its managed root: ${s}`);r.push(c)}catch(c){if(c.code==="ENOENT")return null;throw c}}return await $e(r),r}async function vl(t){let e;try{e=await T.open(t,"r"),await e.sync()}catch(n){let i=n.code;if(!["EACCES","EBADF","EINVAL","EISDIR","ENOTSUP","EPERM"].includes(i??""))throw n}finally{await e?.close()}}async function zh(t,e,n){let i=W.dirname(t),r=await Vh(n.containedRoot,i),o=W.join(i,`.${W.basename(t)}.${Yh()}.tmp`),s,a;try{await n.beforeTemporaryOpen?.(),s=await T.open(o,"wx"),a=await s.stat();let[c,l]=await Promise.all([T.lstat(o),T.realpath(o)]);if(await $e(r),!c.isFile()||c.isSymbolicLink()||!Ri(a,c)||!yt(r[0].realPath,l))throw new Error("Contained atomic write temporary file opened outside its managed parent");if(typeof e=="string"?await s.writeFile(e,"utf8"):await s.writeFile(e),await s.sync(),!Ri(a,await s.stat()))throw new Error("Contained atomic write temporary file changed while writing");await s.close(),s=void 0,await n.beforeCommit?.(),await $e(r);let u=await T.lstat(o);if(!u.isFile()||u.isSymbolicLink()||!Ri(u,a))throw new Error("Contained atomic write temporary file changed before commit");n.exclusive?(await Jo(o,t),await T.unlink(o)):await T.rename(o,t),await vl(i)}catch(c){await s?.close();try{await $e(r),await T.rm(o,{force:!0})}catch{}throw c}}async function X(t,e,n){await zh(t,e,n)}async function Vo(t,e){let n=W.dirname(t),i=await Gh(e.containedRoot,n);if(!i)return!1;let r,o;try{r=await T.lstat(t),o=await T.realpath(t)}catch(c){if(c.code==="ENOENT")return!1;throw c}if(!r.isFile()||r.isSymbolicLink()||!yt(i[0].realPath,o))throw new Error("Contained file removal target must be a regular file inside its managed root");await e.beforeRemove?.(),await $e(i);let[s,a]=await Promise.all([T.lstat(t),T.realpath(t)]);if(!s.isFile()||s.isSymbolicLink()||!Ri(r,s)||a!==o)throw new Error("Contained file removal target changed before removal");return await T.unlink(t),await $e(i),await vl(n),!0}var Le=q(()=>{"use strict";Si()});var Jv,Go=q(()=>{"use strict";Le();wt();Q();Jv=16*1024});var Qo=q(()=>{"use strict";Le();ge();wt();Q();Go()});var Li=q(()=>{"use strict"});var jl=q(()=>{"use strict"});var ns=q(()=>{"use strict";Li()});var Tl=q(()=>{"use strict";Li();ns()});var xg,Il=q(()=>{"use strict";xg=Pt(mt(),1);Le();ge();Q()});var Hk,ql=q(()=>{"use strict";Le();Q();Hk=4*1024*1024});function Rg(t,e){let n=t;for(let i of e)n+="\0"+(typeof i=="string"?i:JSON.stringify(i));return n}function $l(t,e){return(...n)=>{let i=Pg;if(i===null)return e(...n);let r=Rg(`async:${t}`,n),o=i.entries.get(r);if(o)return o.value;let s=e(...n).catch(a=>{throw i.entries.delete(r),a});return i.entries.set(r,{value:s}),s}}var Pg,Ll=q(()=>{"use strict";Pg=null});var Qk,Dl=q(()=>{"use strict";Ll();wt();Qk=$l("hookWritePolicy",async t=>(await Ho(t))?.hook??{allow_paths:[]})});var Fl=q(()=>{"use strict";Li();Le();jl();Tl();ge();Il();Q();wt();Qo();ql();Dl();Go();ns()});import{TextDecoder as Ng}from"util";function Wl(t){return{dev:t.dev,ino:t.ino,birthtime:t.birthtimeMs}}function Og(t,e){try{return new Ng("utf-8",{fatal:!0}).decode(t.bytes)}catch(n){throw new Error(`${e} is not valid UTF-8`,{cause:n})}}async function is(t,e,n,i,r={}){try{let o=await F(t,e,n,{label:i,hooks:r.hooks});return{result:o,text:Og(o,i)}}catch(o){let s=o.code;if(s==="ENOENT"||s==="ENOTDIR")return null;throw o}}async function ve(t,e,n,i,r={}){return(await is(t,e,n,i,r))?.text??null}async function Fe(t,e,n,i,r,o={}){if(Buffer.byteLength(n,"utf8")>i)throw new Error(`${r} exceeds ${i} bytes`);let s=await is(t,e,i,r),a=await O(t,e,{label:r,expected:"file"});await X(a.target,n,{containedRoot:a.projectRoot,beforeCommit:async()=>{await o.beforeCommit?.();let c=await is(t,e,i,r);if(!(!s&&!c)){if(!s||!c)throw new Error(`${r} changed before commit`);if(s.result.realPath!==c.result.realPath||!we(Wl(s.result.stat),Wl(c.result.stat))||s.text!==c.text)throw new Error(`${r} changed before commit`)}}})}async function Ml(t,e,n,i,r,o={}){let s=await ve(t,e,i,r);await Fe(t,e,`${s??""}${n}`,i,r,o)}async function Di(t,e,n,i={}){let r=await O(t,e,{label:n,expected:"file"});return r.exists?Vo(r.target,{containedRoot:r.projectRoot,beforeRemove:i.beforeRemove}):!1}var rs=q(()=>{"use strict";Fl();Si()});var Ul={};Gu(Ul,{RUN_STATE_FILE:()=>Wi,applyRunStateToDocument:()=>os,readRunState:()=>ss,removeRunState:()=>as,runStateFromDocument:()=>Fi,writeRunState:()=>Mi});import Ag from"path";function wn(t,e){let n=t[e];if(typeof n!="string"||n.length===0)throw new Error(`Invalid Run state: ${e} must be a non-empty string`);return n}function gn(t,e){let n=wn(t,e);if(Ag.isAbsolute(n)||/^(?:[A-Za-z]:|[\\/]|~)/u.test(n)||n.split(/[\\/]/u).includes(".."))throw new Error(`Invalid Run state: ${e} must stay inside the change directory`);return n}function jg(t){let e=t.run_retries??"{}",n;try{n=typeof e=="string"?JSON.parse(e):e}catch(i){throw new Error("Invalid Run state: run_retries must be a JSON object",{cause:i})}if(!n||typeof n!="object"||Array.isArray(n))throw new Error("Invalid Run state: run_retries must be a JSON object");for(let i of Object.values(n))if(!Number.isInteger(i)||Number(i)<0)throw new Error("Invalid Run state: retry counts must be non-negative integers");return n}function Fi(t){if(!t.run_id)return null;let e=wn(t,"run_id"),n=wn(t,"skill"),i=wn(t,"skill_version"),r=wn(t,"skill_hash"),o=gn(t,"pending_ref"),s=gn(t,"trajectory_ref"),a=gn(t,"context_ref"),c=gn(t,"artifacts_ref"),l=gn(t,"checkpoint_ref"),u=Number(t.iteration);if(!Number.isInteger(u)||u<0)throw new Error("Invalid Run state: iteration must be a non-negative integer");if(t.orchestration!=="deterministic"&&t.orchestration!=="adaptive")throw new Error("Invalid Run state: orchestration must be deterministic or adaptive");if(t.run_status!=="running"&&t.run_status!=="waiting"&&t.run_status!=="completed"&&t.run_status!=="failed")throw new Error("Invalid Run state: run_status is invalid");return{runId:e,skill:n,skillVersion:i,skillHash:r,orchestration:t.orchestration,currentStep:Bl(t,"current_step"),iteration:u,pending:Bl(t,"pending"),pendingRef:o,trajectoryRef:s,contextRef:a,artifactsRef:c,checkpointRef:l,status:t.run_status,retries:jg(t)}}function os(t,e){e?t.run_id=e.runId:delete t.run_id}function Tg(t){return{runId:t.runId,skill:t.skill,skillVersion:t.skillVersion,skillHash:t.skillHash,orchestration:t.orchestration,currentStep:t.currentStep,iteration:t.iteration,pending:t.pending,pendingRef:t.pendingRef,trajectoryRef:t.trajectoryRef,contextRef:t.contextRef,artifactsRef:t.artifactsRef,checkpointRef:t.checkpointRef,status:t.status,retries:t.retries}}function Ig(t){let e={run_id:t.runId,skill:t.skill,skill_version:t.skillVersion,skill_hash:t.skillHash,orchestration:t.orchestration,current_step:t.currentStep,iteration:t.iteration,pending:t.pending,pending_ref:t.pendingRef,trajectory_ref:t.trajectoryRef,context_ref:t.contextRef,artifacts_ref:t.artifactsRef,checkpoint_ref:t.checkpointRef,run_status:t.status,run_retries:JSON.stringify(t.retries)};return Fi(e)}async function ss(t,e={}){let n=await ve(t,Wi,Kl,"Run state",e);if(n===null)return null;let i=JSON.parse(n);return Ig(i)}async function Mi(t,e,n={}){await Fe(t,Wi,JSON.stringify(Tg(e),null,2),Kl,"Run state",n)}async function as(t,e={}){await Di(t,Wi,"Run state",e)}var Bl,Wi,Kl,Bi=q(()=>{"use strict";rs();Bl=(t,e)=>{let n=t[e];return n==null?null:String(n)};Wi=".comet/run-state.json",Kl=256*1024});var Lu=Pt(mt(),1);import{createHash as Iu}from"crypto";import{promises as qu}from"fs";import $u from"path";import Rl from"path";import{promises as Cl}from"fs";import A from"path";import{promises as _h}from"fs";async function on(t){try{return await _h.access(t),!0}catch(e){if(xh(e))return!1;throw e}}function xh(t){let e=t?.code;return e==="ENOENT"||e==="ENOTDIR"}ge();wt();Qo();Q();var un=class extends Error{code="classic-layout-unavailable";constructor(e="Classic artifact layout is unavailable from .comet/config.yaml"){super(e),this.name="ClassicLayoutUnavailableError"}},Sl=".comet/config.yaml";function El(t){let e=t?.code;return e==="ENOENT"||e==="ENOTDIR"}async function _l(t){await O(t,Sl,{label:Sl,expected:"file"})}function Ai(t,e){let n=A.resolve(t),i=e==="docs"?A.join(n,"docs"):n,r=A.join(i,"openspec"),o=A.join(n,"docs","superpowers");return{projectRoot:n,artifactLayout:e,openSpecBase:i,openSpecRoot:r,changesDir:A.join(r,"changes"),archiveDir:A.join(r,"changes","archive"),specsDir:A.join(r,"specs"),superpowersRoot:o,superpowersSpecsDir:A.join(o,"specs"),superpowersPlansDir:A.join(o,"plans"),superpowersReportsDir:A.join(o,"reports")}}async function tg(t){await _l(t);let e=await ln(t,{allowPartialProject:!0,allowMissingNativeFields:!0});if(!e?.config)throw new un;if(!(e.config.workflows??[e.config.default_workflow]).includes("classic"))throw new un("Classic artifact layout is unavailable because Classic is not enabled");return e.classic?.artifact_layout??"legacy"}async function ng(t,e){return Ai(t,e??await tg(t))}async function ig(t){try{return await Cl.lstat(t),!0}catch(e){if(El(e))return!1;throw e}}async function rg(t,e){let n=await ng(t,e),i=n.artifactLayout==="legacy"?"docs":"legacy",r=Ai(t,i).openSpecRoot,[o,s]=await Promise.all([O(n.projectRoot,M(n.projectRoot,n.openSpecRoot),{label:"Configured Classic OpenSpec root",expected:"directory"}),ig(r)]),a=o.exists;return{paths:n,configuredRootExists:a,alternateRoot:r,alternateRootExists:s,dualRoots:a&&s}}async function og(t){let e=[t.openSpecRoot,t.changesDir,t.archiveDir,t.specsDir,t.superpowersRoot,t.superpowersSpecsDir,t.superpowersPlansDir,t.superpowersReportsDir];for(let n of e){let i=M(t.projectRoot,n);await O(t.projectRoot,i,{label:`Classic managed physical path ${i}`,expected:"directory"})}}async function De(t,e){let n=await rg(t,e);if(await og(n.paths),!n.configuredRootExists){let i=M(n.paths.projectRoot,n.paths.openSpecRoot),r=M(n.paths.projectRoot,n.alternateRoot);throw new un(`Configured Classic OpenSpec root is missing: ${i} (alternate ${r} is ${n.alternateRootExists?"present":"missing"})`)}return n.paths}async function Xo(t,e){let n=A.join(A.resolve(t),".comet","classic-root-move.json");if(await on(n))throw new Error("Classic root move transaction is incomplete; inspect it with comet doctor and recover it explicitly before writing");let i=await De(t,e);if(!await on(i.openSpecRoot))throw new Error(`Configured Classic OpenSpec root is missing: ${M(i.projectRoot,i.openSpecRoot)}`);return i}async function Ze(t){let e=A.resolve(t),n=null;try{(await Cl.lstat(e)).isDirectory()||(e=A.dirname(e))}catch(i){if(!El(i))throw i}for(;;){A.basename(e)==="openspec"&&(n=A.dirname(e));let i=A.join(e,".comet","config.yaml"),r=!1;if(await on(i))try{await _l(e);let s=(await ln(e))?.value;r=!!s&&typeof s=="object"&&!Array.isArray(s)&&(s.schema==="comet.project.v1"||s.default_workflow!==void 0||s.native!==void 0)}catch{}if(r||await on(A.join(e,".git")))return e;let o=A.dirname(e);if(o===e)return n??A.resolve(t);e=o}}function M(t,e){return A.relative(A.resolve(t),e).replaceAll("\\","/")}Le();ge();Q();import fn from"path";var sg=2*1024*1024;function ji(t,e,n){let i=fn.resolve(t),r=fn.isAbsolute(e)?fn.resolve(e):fn.resolve(i,e),o=fn.relative(i,r).replaceAll("\\","/");return{root:i,relative:he(o,n),target:r}}async function ce(t,e,n){let i=ji(t,e,n.label);return O(i.root,i.relative,n)}async function Ti(t,e,n){return(await ce(t,e,{label:n.label,expected:n.expected??"any"})).exists}async function Zo(t,e,n,i){return await Ti(t,e,{label:n,expected:"file"})?(await xl(t,e,{label:n,hooks:i})).byteLength>0:!1}async function vt(t,e,n){return(await xl(t,e,n)).toString("utf8")}async function xl(t,e,n){let i=ji(t,e,n.label);return(await F(i.root,i.relative,n.maxBytes??sg,{label:n.label,hooks:n.hooks})).bytes}async function Ii(t,e,n){let i=ji(t,e,n);return Yo(i.root,i.relative,{label:n})}async function Pl(t,e,n,i){let r=ji(t,e,i.label);await O(r.root,r.relative,{label:i.label,expected:"file"}),await X(r.target,n,{containedRoot:r.root,beforeTemporaryOpen:i.beforeTemporaryOpen,beforeCommit:i.beforeCommit,exclusive:i.exclusive})}function es(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 ts(t){let e=es(t);if(e)throw new Error(e)}function ag(t,e){return{label:M(t,e),directory:e}}async function cg(t,e,n){let i=ag(t,e);if(!(await ce(t,e,{label:n,expected:"directory"})).exists)return{change:i,exists:!1,stateExists:!1};let o=await ce(t,Rl.join(e,".comet.yaml"),{label:`${n} state`,expected:"file"});return{change:i,exists:!0,stateExists:o.exists}}async function Nl(t,e=process.cwd()){ts(t);let n=await De(e),i=await cg(n.projectRoot,Rl.join(n.changesDir,t),`Classic active change ${t}`);return{...i.change,exists:i.exists,stateExists:i.stateExists}}import{promises as Cu}from"fs";import V from"path";import{fileURLToPath as Eu}from"url";import{promises as ug}from"fs";import ye from"path";Q();ge();import dn from"path";function lg(t){let e=t?.code;return e==="ENOENT"||e==="ENOTDIR"}async function Ol(t,e,n,i){let r=he(n,"Classic handoff artifact pointer");if((await O(t,r,{label:"Classic handoff artifact",expected:"file"})).exists)return null;let s=await De(t),a=`${M(t,s.changesDir)}/`,l=(s.artifactLayout==="docs"?[a,"openspec/changes/"]:[a]).find(y=>r.startsWith(y));if(!l)return null;let u=r.slice(l.length).split("/");if(u.length<4||u[1]!==".comet"||u.slice(2).some(y=>y.length===0))return null;let f=u[0];ts(f);let d=u.slice(2),m=dn.resolve(e);if(dn.dirname(m)!==dn.resolve(s.archiveDir))return null;let g=dn.basename(m),p=/^\d{4}-\d{2}-\d{2}-(.+)$/u.exec(g);if(g!==f&&p?.[1]!==f)return null;await O(t,M(t,m),{label:"Classic archived change directory",expected:"directory"});let h=dn.join(m,".comet",...d),w=M(t,h);try{return await F(t,w,i,{label:"Historical Classic archived handoff artifact"}),w}catch(y){if(lg(y))return null;throw y}}Q();var Al=2*1024*1024;function pn(t,e){return ye.relative(t,e).split(ye.sep).join("/")}async function mn(t,e,n,i,r){if(!n)return{code:e,satisfied:!1};let o=n.replaceAll("\\","/");if(r)return{code:e,satisfied:!1,source:o,detail:`Classic layout is unsafe or unavailable: ${r instanceof Error?r.message:String(r)}`};try{if(i){let a=i.artifactLayout==="legacy"?"docs":"legacy",c=M(t,Ai(t,a).openSpecRoot);if((o===c||o.startsWith(`${c}/`))&&(await O(t,o,{label:`${e} artifact`,expected:"file"})).exists)return{code:e,satisfied:!1,source:o,detail:"standalone OpenSpec root is not a Comet artifact root"}}let s=await xi(t,o,{label:`${e} artifact`});return{code:e,satisfied:s,source:o,...s?{resolvedSource:o}:{}}}catch(s){return{code:e,satisfied:!1,source:o,detail:`unsafe artifact pointer outside the project or through a special path: ${s instanceof Error?s.message:String(s)}`}}}async function fg(t,e,n,i){try{i??=await De(t)}catch(o){return{code:"design.handoff",satisfied:!1,...n?{source:n.replaceAll("\\","/")}:{},detail:`Classic layout is unsafe or unavailable for handoff evidence: ${o instanceof Error?o.message:String(o)}`}}let r=await mn(t,"design.handoff",n,i);if(!n||r.satisfied||r.detail)return r;try{let o=await Ol(t,e,n,Al);return o?{...r,satisfied:!0,resolvedSource:o,detail:`resolved historical legacy pointer from archived change: ${o}`}:r}catch(o){return{...r,satisfied:!1,detail:`unsafe archived handoff fallback: ${o instanceof Error?o.message:String(o)}`}}}async function qi(t,e,n){return mn(t,e,pn(t,n))}async function dg(t,e){let n=ye.join(e,"specs"),i;try{let s=pn(t,n);if(!(await O(t,s,{label:"OpenSpec delta-spec directory",expected:"directory"})).exists)return{code:"openspec.delta-spec",satisfied:!1};i=await ug.readdir(n)}catch(s){return s.code==="ENOENT"?{code:"openspec.delta-spec",satisfied:!1}:{code:"openspec.delta-spec",satisfied:!1,detail:`unsafe delta-spec path: ${s instanceof Error?s.message:String(s)}`}}let r=i.map(s=>ye.join(n,s,"spec.md")),o=(await Promise.all(r.map(async s=>{try{return await xi(t,pn(t,s),{label:"OpenSpec delta spec"})?s:null}catch{return null}}))).filter(s=>s!==null);return{code:"openspec.delta-spec",satisfied:o.length>0,source:o[0]?pn(t,o[0]):void 0,detail:`${o.length} delta spec${o.length===1?"":"s"}`}}async function pg(t,e){let n,i=pn(t,e);try{n=(await F(t,i,Al,{label:"Classic tasks artifact"})).bytes.toString("utf8")}catch(s){return s.code==="ENOENT"?{code:"build.tasks-complete",satisfied:!1}:{code:"build.tasks-complete",satisfied:!1,source:i,detail:`unsafe tasks artifact: ${s instanceof Error?s.message:String(s)}`}}let r=[...n.matchAll(/^\s*[-*]\s+\[([ xX])\]\s+/gmu)],o=r.filter(s=>s[1].toLowerCase()==="x").length;return{code:"build.tasks-complete",satisfied:r.length>0&&o===r.length,source:i,detail:`${o} of ${r.length} tasks complete`}}function hn(t,e){return t.some(n=>n.code===e&&n.satisfied)}async function kt(t,e){let n=await Ze(t),i=e.classic,r=ye.join(t,"proposal.md"),o=ye.join(t,"design.md"),s=ye.join(t,"tasks.md"),a=e.run?ye.resolve(t,e.run.checkpointRef):ye.join(t,".comet","checkpoint.json"),c,l;try{c=await De(n)}catch(d){l=d}let u=await Promise.all([qi(n,"openspec.proposal",r),qi(n,"openspec.design",o),qi(n,"openspec.tasks",s),dg(n,t),mn(n,"design.document",i?.designDoc??null,c,l),mn(n,"build.plan",i?.plan??null,c,l),pg(n,s),mn(n,"verification.report",i?.verificationReport??null,c,l),fg(n,t,i?.handoffContext??null,c),qi(n,"run.checkpoint",a)]),f=u.find(d=>d.code==="design.handoff");return f&&!i?.handoffHash&&(f.satisfied=!1,f.detail="handoff hash is missing"),u.push({code:"archive.confirmed",satisfied:i?.archiveConfirmation==="confirmed"}),u}import{createHash as Pw,randomUUID as Rw}from"crypto";import{promises as gs}from"fs";import ke from"path";function mg(t){return t.classicProfile??t.workflow}function hg(t){return!t.buildMode||!t.tddMode||!t.isolation||!t.verifyMode?!1:t.buildMode==="subagent-driven-development"?t.subagentDispatch==="confirmed":t.buildMode==="direct"?t.directOverride===!0:!0}function gg(t){return t.buildMode==="direct"&&t.tddMode==="direct"&&t.isolation!==null&&t.verifyMode==="light"}function wg(t,e,n){if(e.verifyResult==="fail")return t==="full"?"full.build.fix":`${t}.build.execute`;if(t==="full"){if(!hn(n,"build.plan"))return"full.build.plan";if(e.buildPause==="plan-ready")return"full.build.plan-ready";if(!hg(e))return"full.build.configure"}else if(!gg(e))throw new Error(`${t} build configuration is incomplete`);return hn(n,"build.tasks-complete")?`${t}.build.complete`:`${t}.build.execute`}function yg(t,e,n){return e.verifyResult!=="pass"||!hn(n,"verification.report")?`${t}.verify.run`:`${t}.verify.branch`}function vg(t,e){if(e.verifyResult!=="pass")throw new Error("archive requires verify_result=pass");return e.archiveConfirmation==="confirmed"?`${t}.archive.execute`:`${t}.archive.confirm`}function $i(t,e){let n=mg(t);if(t.archived&&t.phase!=="archive")throw new Error("archived=true requires phase=archive");if(t.archived)return"completed";if(n!=="full"&&t.phase==="design")throw new Error(`${n} workflow cannot enter design`);switch(t.phase){case"open":return`${n}.open`;case"design":return hn(e,"design.handoff")?"full.design.document":"full.design.handoff";case"build":return wg(n,t,e);case"verify":return yg(n,t,e);case"archive":return vg(n,t)}}var Hi=Pt(mt(),1);Le();Q();import Yi from"path";Bi();var Yl=["full","hotfix","tweak"],et=1,qg=["open","design","build","verify","archive"],$g=["en","zh-CN"],Lg=["off","beta"],Dg=["subagent-driven-development","executing-plans","direct"],Fg=["plan-ready"],Wg=["confirmed"],Mg=["tdd","direct"],Bg=["off","standard","thorough"],Kg=["current","branch","worktree"],Ug=["light","full"],Yg=["pending","pass","fail"],Hg=["pending","handled"],Jg=["pending","confirmed"],Ui=["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","verification_report","branch_status","created_at","verified_at","archive_confirmation","archived","direct_override","handoff_context","handoff_hash","classic_profile","classic_migration"],Vg=["run_id"],Gg=new Set([...Ui,...Vg]),zg=["workflow","phase","design_doc","plan","build_mode","isolation","verify_mode","verify_result","verified_at","archived"];function Hl(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function bt(t,e){let n=t[e];if(n==null||n==="")return null;if(typeof n!="string")throw new Error(`Invalid Classic state: ${e} must be a string or null`);return n}function K(t,e,n,i=!0){let r=t[e];if(r==null||r===""){if(i)return null;throw new Error(`Invalid Classic state: ${e} is required`)}if(typeof r!="string"||!n.includes(r))throw new Error(`Invalid Classic state: ${e} must be one of ${n.join(", ")}${i?" or null":""}`);return r}function cs(t,e,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!="boolean")throw new Error(`Invalid Classic state: ${e} must be true or false`);return i}function Qg(t,e,n=0){let i=t[e];if(i==null||i==="")return n;if(typeof i!="number"||!Number.isInteger(i)||i<0)throw new Error(`Invalid Classic state: ${e} must be a non-negative integer`);return i}function Ki(t,e){let n=bt(t,e);if(n===null)return null;if(/^(?:[A-Za-z]:|[\\/]|~)/u.test(n)||n.split(/[\\/]/u).includes(".."))throw new Error(`Invalid Classic state: ${e} must be a relative repository path`);return n}function Xg(t,e){let n=bt(t,e);if(n!==null&&!/^[a-f0-9]{64}$/u.test(n))throw new Error(`Invalid Classic state: ${e} must be a sha256 hex digest`);return n}function Zg(t){let e=t.classic_migration;if(e==null||e==="")return null;if(e!==et)throw new Error(`Invalid Classic state: classic_migration must be ${et}`);return e}function ew(t){if(!Ui.some(n=>Hl(t,n)))return null;for(let n of zg)if(!Hl(t,n))return null;return{workflow:K(t,"workflow",Yl,!1),language:K(t,"language",$g),phase:K(t,"phase",qg,!1),contextCompression:K(t,"context_compression",Lg),buildMode:K(t,"build_mode",Dg),buildPause:K(t,"build_pause",Fg),subagentDispatch:K(t,"subagent_dispatch",Wg),tddMode:K(t,"tdd_mode",Mg),reviewMode:K(t,"review_mode",Bg),isolation:K(t,"isolation",Kg),boundBranch:bt(t,"bound_branch"),verifyMode:K(t,"verify_mode",Ug),autoTransition:cs(t,"auto_transition"),baseRef:bt(t,"base_ref"),designDoc:Ki(t,"design_doc"),plan:Ki(t,"plan"),verifyResult:K(t,"verify_result",Yg,!1),verifyFailures:Qg(t,"verify_failures"),verificationReport:Ki(t,"verification_report"),branchStatus:K(t,"branch_status",Hg),createdAt:bt(t,"created_at"),verifiedAt:bt(t,"verified_at"),archiveConfirmation:K(t,"archive_confirmation",Jg),archived:cs(t,"archived",!1),directOverride:cs(t,"direct_override"),handoffContext:Ki(t,"handoff_context"),handoffHash:Xg(t,"handoff_hash"),classicProfile:K(t,"classic_profile",Yl),classicMigration:Zg(t)}}function ls(t,e){let n=e??null;if(n===null&&e===void 0&&t.run_id&&t.skill)try{n=Fi(t)}catch(i){let r=i instanceof Error?i.message:String(i);throw new Error(r.replace(/^Invalid Run state:/u,"Invalid Classic state:"),{cause:i})}return{classic:ew(t),run:n,unknownKeys:Object.keys(t).filter(i=>!Gg.has(i))}}function Jl(t){return{workflow:t.workflow,language:t.language,phase:t.phase,context_compression:t.contextCompression,build_mode:t.buildMode,build_pause:t.buildPause,subagent_dispatch:t.subagentDispatch,tdd_mode:t.tddMode,review_mode:t.reviewMode,isolation:t.isolation,bound_branch:t.boundBranch,verify_mode:t.verifyMode,auto_transition:t.autoTransition,base_ref:t.baseRef,design_doc:t.designDoc,plan:t.plan,verify_result:t.verifyResult,verify_failures:t.verifyFailures,verification_report:t.verificationReport,branch_status:t.branchStatus,created_at:t.createdAt,verified_at:t.verifiedAt,archive_confirmation:t.archiveConfirmation,archived:t.archived,direct_override:t.directOverride,handoff_context:t.handoffContext,handoff_hash:t.handoffHash,classic_profile:t.classicProfile,classic_migration:t.classicMigration}}Bi();var tw=2*1024*1024;function yn(t){let e=t.toJS();if(e===null)return{};if(typeof e!="object"||Array.isArray(e))throw new Error("Invalid Classic state document: root must be a mapping");return e}function Vl(t,e,n){t.get(e)!==n&&t.set(e,n)}function nw(t,e){if(e.classic)for(let[n,i]of Object.entries(Jl(e.classic)))Vl(t,n,i);else for(let n of Ui)t.delete(n);os(t.toJS(),e.run),e.run?Vl(t,"run_id",e.run.runId):t.delete("run_id")}function iw(t){let e=["skill","skill_version","skill_hash","orchestration","current_step","iteration","pending","pending_ref","trajectory_ref","context_ref","artifacts_ref","checkpoint_ref","run_status","run_retries"];for(let n of e)t.delete(n)}function rw(t){let e=!1;for(let n of["build_command","verify_command"])t.has(n)&&(t.delete(n),e=!0);return e}async function Gl(t){let e;try{e=(await F(Yi.dirname(t),Yi.basename(t),tw,{label:"Classic state document"})).bytes.toString("utf8")}catch(i){if(i.code!=="ENOENT")throw i;return new Hi.Document({})}let n=(0,Hi.parseDocument)(e);if(n.errors.length>0)throw new Error(`Invalid Classic state document: ${n.errors[0].message}`);return yn(n),n}async function We(t,e={}){let n=e.migrate!==!1,i=Yi.join(t,".comet.yaml"),r=await Gl(i),o=yn(r),s=rw(r);s&&(o=yn(r));let a=await ss(t);if(!a&&o.run_id&&o.skill){let{runStateFromDocument:c}=await Promise.resolve().then(()=>(Bi(),Ul));a=c(o),a&&n&&(await Mi(t,a),iw(r),s=!0)}return s&&n&&await X(i,r.toString(),{containedRoot:t}),ls(yn(r),a)}async function tt(t,e,n={}){let i=Yi.join(t,".comet.yaml"),r=await Gl(i);nw(r,{...e,unknownKeys:e.unknownKeys??[]}),ls(yn(r),e.run??null),await X(i,r.toString(),{containedRoot:t,beforeCommit:n.beforeCommit}),e.run?await Mi(t,e.run):await as(t)}function zl(t,e,n){return{runId:e,skill:t.definition.metadata.name,skillVersion:t.definition.metadata.version,skillHash:n,orchestration:t.definition.orchestration.mode,currentStep:t.definition.orchestration.entry??null,iteration:0,pending:null,pendingRef:".comet/pending-action.json",trajectoryRef:".comet/trajectory.jsonl",contextRef:".comet/context.md",artifactsRef:".comet/artifacts.json",checkpointRef:".comet/checkpoint.json",status:"running",retries:{}}}rs();import Ji from"path";var le={trajectory:8*1024*1024,artifacts:1024*1024,context:1024*1024,pendingAction:256*1024,checkpoint:256*1024};function ie(t,e){if(Ji.isAbsolute(e))throw new Error("Run path must stay inside the change directory");let n=Ji.resolve(t),i=Ji.resolve(n,e);if(i!==n&&!i.startsWith(n+Ji.sep))throw new Error("Run path must stay inside the change directory")}async function St(t,e,n,i={}){ie(t,e),await Ml(t,e,`${JSON.stringify(n)} +`,le.trajectory,"Run trajectory",i)}async function vn(t,e,n={}){ie(t,e);let i=await ve(t,e,le.trajectory,"Run trajectory",n);return i===null?[]:i.split(/\r?\n/).map((r,o)=>({line:r,number:o+1})).filter(({line:r})=>r.length>0).map(({line:r,number:o})=>{try{return JSON.parse(r)}catch(s){throw new Error(`Invalid Trajectory event at line ${o}`,{cause:s})}})}async function us(t,e,n={}){ie(t,e);let i=await ve(t,e,le.artifacts,"Run artifacts",n);return i===null?{}:JSON.parse(i)}async function Vi(t,e,n,i={}){ie(t,e),await Fe(t,e,JSON.stringify(n,null,2)+` +`,le.artifacts,"Run artifacts",i)}async function Gi(t,e,n,i={}){ie(t,e),await Fe(t,e,n,le.context,"Run context",i)}async function Ql(t,e,n={}){return ie(t,e),ve(t,e,le.context,"Run context",n)}async function Xl(t,e,n,i={}){ie(t,e),await Fe(t,e,JSON.stringify(n,null,2)+` +`,le.pendingAction,"Run pending action",i)}async function fs(t,e,n={}){ie(t,e);let i=await ve(t,e,le.pendingAction,"Run pending action",n);return i===null?null:JSON.parse(i)}async function Zl(t,e,n={}){ie(t,e),await Di(t,e,"Run pending action",n)}async function zi(t,e,n,i={}){ie(t,e),await Fe(t,e,JSON.stringify(n,null,2)+` +`,le.checkpoint,"Run checkpoint",i)}async function eu(t,e,n={}){ie(t,e);let i=await ve(t,e,le.checkpoint,"Run checkpoint",n);return i===null?null:JSON.parse(i)}import{createHash as mu,randomUUID as Sw}from"crypto";import{promises as L}from"fs";import I from"path";var iu=Pt(mt(),1);import{promises as ds}from"fs";import Z from"path";var ow=["invoke_skill","call_tool","handoff","ask_user","checkpoint"],sw=["deterministic","adaptive"],aw=["function","mcp","script","agent"],cw=["none","read","write","external"],lw=["progress","step","completion"],uw=["artifact_exists","state_equals"];function nt(t,e,n){return new Error(`${t}: ${e} ${n}`)}function J(t,e,n="document"){if(t===null||typeof t!="object"||Array.isArray(t))throw nt(e,n,"must be an object")}function Me(t,e,n){if(!Array.isArray(t))throw nt(e,n,"must be an array")}function U(t,e,n){if(typeof t!="string")throw nt(e,n,"must be a string")}function re(t,e,n,i){e in t&&U(t[e],n,`${i}.${e}`)}function ru(t,e,n,i){if(e in t&&typeof t[e]!="boolean")throw nt(n,`${i}.${e}`,"must be a boolean")}function Be(t,e,n,i){if(typeof t!="string"||!e.includes(t))throw nt(n,i,`must be one of ${e.join(", ")}`)}function Qi(t,e,n){Me(t,e,n),t.forEach((i,r)=>{U(i,e,`${n}[${r}]`)})}function tu(t,e,n){J(t,e,n),U(t.name,e,`${n}.name`),U(t.description,e,`${n}.description`),ru(t,"required",e,n)}function fw(t,e,n){J(t,e,n),U(t.id,e,`${n}.id`),re(t,"source",e,n),re(t,"version",e,n)}function dw(t,e,n){J(t,e,n),U(t.id,e,`${n}.id`),U(t.role,e,`${n}.role`),re(t,"instructions",e,n)}function pw(t,e,n){J(t,e,n),U(t.id,e,`${n}.id`),Be(t.kind,aw,e,`${n}.kind`),U(t.source,e,`${n}.source`),Be(t.sideEffect,cw,e,`${n}.sideEffect`),ru(t,"requiresConfirmation",e,n)}function mw(t,e,n){J(t,e,n),Be(t.type,ow,e,`${n}.type`),re(t,"ref",e,n),re(t,"prompt",e,n),re(t,"question",e,n),"options"in t&&Qi(t.options,e,`${n}.options`)}function hw(t,e,n){J(t,e,n),U(t.id,e,`${n}.id`),mw(t.action,e,`${n}.action`),re(t,"next",e,n),"completionEvals"in t&&Qi(t.completionEvals,e,`${n}.completionEvals`)}function gw(t,e){let n="goal";J(t,e,n),U(t.statement,e,`${n}.statement`),Me(t.inputs,e,`${n}.inputs`),t.inputs.forEach((i,r)=>{tu(i,e,`${n}.inputs[${r}]`)}),Me(t.outputs,e,`${n}.outputs`),t.outputs.forEach((i,r)=>{tu(i,e,`${n}.outputs[${r}]`)}),Qi(t.success,e,`${n}.success`)}function ww(t,e){let n="orchestration";J(t,e,n),Be(t.mode,sw,e,`${n}.mode`),re(t,"entry",e,n),"steps"in t&&(Me(t.steps,e,`${n}.steps`),t.steps.forEach((i,r)=>{hw(i,e,`${n}.steps[${r}]`)}))}function ou(t,e){return J(t,e),Be(t.apiVersion,["comet/v1alpha1"],e,"apiVersion"),Be(t.kind,["Skill"],e,"kind"),J(t.metadata,e,"metadata"),U(t.metadata.name,e,"metadata.name"),U(t.metadata.version,e,"metadata.version"),U(t.metadata.description,e,"metadata.description"),gw(t.goal,e),ww(t.orchestration,e),Me(t.skills,e,"skills"),t.skills.forEach((n,i)=>{fw(n,e,`skills[${i}]`)}),Me(t.agents,e,"agents"),t.agents.forEach((n,i)=>{dw(n,e,`agents[${i}]`)}),Me(t.tools,e,"tools"),t.tools.forEach((n,i)=>{pw(n,e,`tools[${i}]`)}),t}function su(t,e){J(t,e);for(let n of["allowedSkills","allowedAgents","allowedTools","confirmationRequiredFor"])n in t&&Qi(t[n],e,n);for(let n of["maxIterations","maxRetriesPerAction"])if(n in t&&(typeof t[n]!="number"||!Number.isFinite(t[n])))throw nt(e,n,"must be a finite number");return t}function yw(t,e){return J(t,e),"runtime"in t&&au(t.runtime,e,"runtime"),t}function au(t,e,n){return Me(t,e,n),t.forEach((i,r)=>{let o=`${n}[${r}]`;J(i,e,o),U(i.id,e,`${o}.id`),Be(i.scope,lw,e,`${o}.scope`),Be(i.type,uw,e,`${o}.type`),re(i,"artifact",e,o),re(i,"field",e,o),re(i,"equals",e,o)}),t}async function ps(t){let e=await ds.readFile(t,"utf8");try{return(0,iu.parse)(e)}catch(n){let i=n instanceof Error?n.message:String(n);throw nt(t,"document",i)}}async function vw(t){try{return await ps(t)}catch(e){if(e.code==="ENOENT")return null;throw e}}async function nu(t){try{return await ds.access(t),!0}catch(e){if(e.code==="ENOENT")return!1;throw e}}async function kw(t){let e=Z.join(t,"checks.yaml"),n=Z.join(t,"evals.yaml"),[i,r]=await Promise.all([nu(e),nu(n)]);if(r)throw new Error(`${n}: evals.yaml is no longer supported; use checks.yaml`);return i?{document:yw(await ps(e),e)}:{document:null}}async function cu(t){let e=Z.resolve(t.root),n=Z.resolve(t.controlRoot);t.requireSkillMarkdown&&await ds.access(Z.join(e,"SKILL.md"));let i=Z.join(n,"skill.yaml"),r=Z.join(n,"guardrails.yaml"),o=ou(await ps(i),i),s=await vw(r),a=s===null?null:su(s,r),c=await kw(n),l={allowedSkills:o.skills.map(u=>u.id),allowedAgents:o.agents.map(u=>u.id),allowedTools:o.tools.map(u=>u.id),maxIterations:50,maxRetriesPerAction:3,confirmationRequiredFor:o.tools.filter(u=>u.requiresConfirmation).map(u=>u.id)};return{root:e,packageKind:t.packageKind==="runtime"?"runtime":void 0,definition:o,guardrails:{...l,...a},evals:c.document?.runtime??[]}}async function lu(t){let e=Z.resolve(t);return cu({root:e,controlRoot:Z.join(e,"comet"),packageKind:"skill",requireSkillMarkdown:!0})}async function uu(t){let e=Z.resolve(t);return cu({root:e,controlRoot:e,packageKind:"runtime",requireSkillMarkdown:!1})}function fu(t,e,n=Z.join(e,"package.json")){J(t,n);let i=t.packageKind==="runtime"?"runtime":void 0,r=ou(t.definition,n),o=su(t.guardrails,n),s=au(t.evals,n,"evals"),a={allowedSkills:r.skills.map(c=>c.id),allowedAgents:r.agents.map(c=>c.id),allowedTools:r.tools.map(c=>c.id),maxIterations:50,maxRetriesPerAction:3,confirmationRequiredFor:r.tools.filter(c=>c.requiresConfirmation).map(c=>c.id)};return{root:Z.resolve(e),packageKind:i,definition:r,guardrails:{...a,...o},evals:s}}import du from"path";function bw(t,e,n,i){t.type==="invoke_skill"&&!e.definition.skills.some(r=>r.id===t.ref)&&n.push(`step ${i} references undeclared skill: ${t.ref??"(missing)"}`),t.type==="call_tool"&&!e.definition.tools.some(r=>r.id===t.ref)&&n.push(`step ${i} references undeclared tool: ${t.ref??"(missing)"}`),t.type==="handoff"&&!e.definition.agents.some(r=>r.id===t.ref)&&n.push(`step ${i} references undeclared agent: ${t.ref??"(missing)"}`),t.type==="ask_user"&&!t.question&&n.push(`step ${i} ask_user action requires question`)}function pu(t){let e=[],{definition:n,guardrails:i,evals:r}=t;n.apiVersion!=="comet/v1alpha1"&&e.push("unsupported apiVersion"),n.kind!=="Skill"&&e.push("kind must be Skill"),n.metadata.name||e.push("metadata.name is required"),n.goal.statement||e.push("goal.statement is required"),i.maxIterations<1&&e.push("maxIterations must be at least 1"),i.maxRetriesPerAction<0&&e.push("maxRetriesPerAction must not be negative");let o=n.orchestration.steps??[];if(n.orchestration.mode==="adaptive")(n.orchestration.entry||o.length>0)&&e.push("adaptive orchestration must not define entry or steps");else{let s=new Set;for(let a of o)s.has(a.id)&&e.push(`duplicate step id: ${a.id}`),s.add(a.id),bw(a.action,t,e,a.id);(!n.orchestration.entry||!s.has(n.orchestration.entry))&&e.push(`orchestration.entry references unknown step: ${n.orchestration.entry??"(missing)"}`);for(let a of o){a.next&&!s.has(a.next)&&e.push(`step ${a.id} has unknown next step: ${a.next}`);for(let c of a.completionEvals??[])r.some(l=>l.id===c)||e.push(`step ${a.id} references unknown eval: ${c}`)}}for(let s of n.tools){if(s.kind!=="script")continue;let a=du.posix.normalize(s.source.replaceAll("\\","/"));(du.isAbsolute(s.source)||a===".."||a.startsWith("../"))&&e.push(`script tool ${s.id} must reference a relative path inside the Skill package`)}for(let s of i.allowedSkills)n.skills.some(a=>a.id===s)||e.push(`guardrails allow undeclared skill: ${s}`);for(let s of i.allowedAgents)n.agents.some(a=>a.id===s)||e.push(`guardrails allow undeclared agent: ${s}`);for(let s of i.allowedTools)n.tools.some(a=>a.id===s)||e.push(`guardrails allow undeclared tool: ${s}`);return e}function Xi(t){return Array.isArray(t)?t.map(Xi):t&&typeof t=="object"?Object.fromEntries(Object.entries(t).sort(([e],[n])=>e.localeCompare(n)).map(([e,n])=>[e,Xi(n)])):t}function Cw(t){return Xi({...t.packageKind==="runtime"?{packageKind:"runtime"}:{},definition:t.definition,guardrails:t.guardrails,evals:t.evals})}function Ew(t){return I.posix.normalize(t.replaceAll("\\","/"))}function Ct(t,e,n){let i=I.relative(t,e);if(!(i===""||!I.isAbsolute(i)&&!i.startsWith(`..${I.sep}`)))throw new Error(`${n} resolves outside the Skill package`)}async function hu(t,e,n){let i=Ew(e);if(I.posix.isAbsolute(i)||i===".."||i.startsWith("../"))throw new Error(`${n} resolves outside the Skill package`);let r=I.resolve(t,...i.split("/"));Ct(t,r,n);let o;try{o=await L.realpath(r)}catch(s){throw s.code==="ENOENT"?new Error(`${n} does not exist: ${e}`,{cause:s}):s}if(Ct(t,o,n),!(await L.stat(o)).isFile())throw new Error(`${n} is not a file: ${e}`);return{path:i,content:await L.readFile(o)}}async function _w(t){let e=await L.realpath(t.root),n=t.packageKind==="runtime"?[]:[await hu(e,"SKILL.md","SKILL.md")];for(let i of t.definition.tools)i.kind==="script"&&n.push(await hu(e,i.source,`Script tool ${i.id}`));return n.sort((i,r)=>i.path.localeCompare(r.path))}function xw(t,e){let n=e.map(i=>({path:i.path,sha256:mu("sha256").update(i.content).digest("hex")}));return mu("sha256").update(JSON.stringify(Xi({package:t,files:n}))).digest("hex")}function yu(t){return JSON.stringify(t,null,2)+` +`}async function vu(t){let e=Cw(t),n=await _w(t);return{document:e,files:n,hash:xw(e,n)}}async function Zi(t){return(await vu(t)).hash}async function gu(t){try{return await L.access(t),!0}catch(e){if(e.code==="ENOENT")return!1;throw e}}async function wu(t,e){try{if((await L.readFile(I.join(t,"sha256"),"utf8")).trim()!==e.hash)throw new Error("hash mismatch");if(await L.readFile(I.join(t,"package.json"),"utf8")!==yu(e.document))throw new Error("package mismatch");for(let r of e.files)if(!(await L.readFile(I.join(t,...r.path.split("/")))).equals(r.content))throw new Error(`file mismatch: ${r.path}`)}catch(n){throw new Error(`Existing Skill snapshot is invalid: ${e.hash}`,{cause:n})}}async function ms(t,e){let n=await vu(t),i=I.resolve(e,".comet","skill-snapshots"),r=I.join(i,n.hash);if(await L.mkdir(i,{recursive:!0}),await gu(r))return await wu(r,n),{hash:n.hash,snapshotDir:r};let o=I.join(i,`.tmp-${Sw()}`);Ct(i,o,"Temporary snapshot"),Ct(i,r,"Published snapshot");try{await L.mkdir(o);for(let s of n.files){let a=I.join(o,...s.path.split("/"));Ct(o,a,`Snapshot file ${s.path}`),await L.mkdir(I.dirname(a),{recursive:!0}),await L.writeFile(a,s.content)}await L.writeFile(I.join(o,"package.json"),yu(n.document)),await L.writeFile(I.join(o,"sha256"),n.hash+` +`),await L.rename(o,r)}catch(s){if(await gu(r)){try{await wu(r,n)}finally{await L.rm(o,{recursive:!0,force:!0})}return{hash:n.hash,snapshotDir:r}}throw await L.rm(o,{recursive:!0,force:!0}),s}return{hash:n.hash,snapshotDir:r}}async function hs(t,e){if(!/^[a-f0-9]{64}$/u.test(e))throw new Error(`Invalid Skill snapshot hash: ${e}`);let n=I.resolve(t,".comet","skill-snapshots"),i=I.join(n,e);Ct(n,i,"Skill snapshot");try{let r=(await L.readFile(I.join(i,"sha256"),"utf8")).trim();if(r!==e)throw new Error(`stored hash is ${r||"(empty)"}`);let o=I.join(i,"package.json"),s=JSON.parse(await L.readFile(o,"utf8")),a=fu(s,i,o),c=pu(a);if(c.length>0)throw new Error(c.map(u=>` - ${u}`).join(` +`));let l=await Zi(a);if(l!==e)throw new Error(`calculated hash is ${l}`);return a}catch(r){throw new Error(`Skill snapshot is invalid or missing: ${e}`,{cause:r})}}async function ku(t){try{return await gs.access(t),!0}catch(e){if(e.code==="ENOENT")return!1;throw e}}function bu(t){return Pw("sha256").update(t).digest("hex")}function Nw(t){return bu(JSON.stringify(Object.fromEntries(Object.entries(t).sort(([e],[n])=>e.localeCompare(n)))))}function Ow(t){return t.replaceAll(".","_").replaceAll("-","_")}async function Aw(t,e){let n=await Ze(t),i=Object.fromEntries(e.filter(s=>s.satisfied&&s.source).map(s=>[Ow(s.code),s.source])),r=ke.join(t,"subagent-progress.md");await ku(r)&&(i.subagent_progress=ke.relative(n,r).split(ke.sep).join("/"));let o=e.find(s=>s.code==="design.handoff"&&s.satisfied);return o?.source&&(i.handoff_context=o.source),i}function jw(t,e,n){return[{sequence:1,timestamp:n,type:"run_started",runId:t.runId,data:{skill:t.skill,skillVersion:t.skillVersion,skillHash:t.skillHash}},{sequence:2,timestamp:n,type:"state_migrated",runId:t.runId,data:{kind:"classic",migrationVersion:et,profile:e,source:"pre-migration"}}]}async function Tw(t){await Promise.all(t.map(e=>gs.rm(e,{recursive:!0,force:!0})))}async function Su(t,e){let n=await We(t);if(!n.classic)throw new Error("Classic migration requires a legacy state projection");let i=n.classic,r=i.classicProfile??i.workflow;if(n.run){if(i.classicMigration!==et)throw new Error("Classic Run exists without a supported classic_migration marker");if(n.run.skill!==e.skillPackage.definition.metadata.name)throw new Error(`Classic Run skill mismatch: expected ${e.skillPackage.definition.metadata.name}, got ${n.run.skill}`);if(await Zi(e.skillPackage)!==n.run.skillHash)return await hs(t,n.run.skillHash),{classic:i,run:n.run,evidence:await kt(t,n),migrated:!1,snapshotDir:ke.join(t,".comet","skill-snapshots",n.run.skillHash)};let d=await ms(e.skillPackage,t);return{classic:i,run:n.run,evidence:await kt(t,n),migrated:!1,snapshotDir:d.snapshotDir}}let o=await kt(t,n),s=$i(i,o);if(!e.skillPackage.definition.orchestration.steps?.some(f=>f.id===s))throw new Error(`Classic Skill package does not define resolved step: ${s}`);let a=await Zi(e.skillPackage),c=ke.join(t,".comet","skill-snapshots",a),l=await ku(c),u=[];try{let f=await ms(e.skillPackage,t),d=zl(e.skillPackage,e.runId?.()??Rw(),f.hash);d.currentStep=s,s==="completed"&&(d.status="completed");let m={...i,classicProfile:r,classicMigration:et},g=await Aw(t,o),p=await Ze(t),h=o.find(S=>S.code==="design.handoff"&&S.satisfied),w=null;h?.source&&(w=await vt(p,h.resolvedSource??h.source,{label:"Classic migration handoff context",hooks:e.handoffReadHooks}),await Gi(t,d.contextRef,w),u.push(ke.resolve(t,d.contextRef))),await Vi(t,d.artifactsRef,g),u.push(ke.resolve(t,d.artifactsRef));let y=(e.now?.()??new Date).toISOString(),b={runId:d.runId,stateVersion:1,trajectoryOffset:2,contextHash:w===null?null:bu(w),artifactsHash:Nw(g),createdAt:y};await zi(t,d.checkpointRef,b),u.push(ke.resolve(t,d.checkpointRef)),u.push(ke.resolve(t,d.trajectoryRef));for(let S of jw(d,r,y))await St(t,d.trajectoryRef,S);return await tt(t,{classic:m,run:d,unknownKeys:n.unknownKeys}),{classic:m,run:d,evidence:o,migrated:!0,snapshotDir:f.snapshotDir}}catch(f){throw await Tw(u),l||await gs.rm(c,{recursive:!0,force:!0}),f}}async function Iw(t){try{return(await Cu.stat(t)).isDirectory()}catch(e){if(e.code==="ENOENT")return!1;throw e}}async function er(t){try{return(await Cu.stat(t)).isFile()}catch(e){if(e.code==="ENOENT")return!1;throw e}}async function qw(t){return await Iw(t)?await er(V.join(t,"skill.yaml"))?!0:await er(V.join(t,"SKILL.md"))&&await er(V.join(t,"comet","skill.yaml")):!1}function $w(t){return{root:t,packageKind:"runtime",definition:{apiVersion:"comet/v1alpha1",kind:"Skill",metadata:{name:"comet-classic",version:"1",description:"Internal compatibility orchestration for classic Comet full, hotfix, and tweak workflows"},goal:{statement:"Advance or restore a classic Comet Run without changing the user command surface",inputs:[{name:"classic-state",description:"Validated ClassicState consistent with the Run projection",required:!0},{name:"evidence",description:"Structured evidence produced by the Classic Evidence collector",required:!0}],outputs:[{name:"run-state",description:"Atomically synchronized Classic and Run state",required:!0}],success:["Legacy fields and Run fields remain consistent","Every step invokes only a declared public Comet Skill","The completed state passes its completion eval"]},orchestration:{mode:"deterministic",entry:"full.open",steps:[{id:"full.open",action:{type:"invoke_skill",ref:"comet-open"},next:"full.design.handoff"},{id:"full.design.handoff",action:{type:"invoke_skill",ref:"comet-design"},next:"full.design.document"},{id:"full.design.document",action:{type:"invoke_skill",ref:"comet-design"},next:"full.build.plan"},{id:"full.build.plan",action:{type:"invoke_skill",ref:"comet-build"},next:"full.build.plan-ready"},{id:"full.build.plan-ready",action:{type:"invoke_skill",ref:"comet-build"},next:"full.build.configure"},{id:"full.build.configure",action:{type:"invoke_skill",ref:"comet-build"},next:"full.build.execute"},{id:"full.build.execute",action:{type:"invoke_skill",ref:"comet-build"},next:"full.build.complete"},{id:"full.build.complete",action:{type:"invoke_skill",ref:"comet-build"},next:"full.verify.run"},{id:"full.build.fix",action:{type:"invoke_skill",ref:"comet-build"},next:"full.build.execute"},{id:"full.verify.run",action:{type:"invoke_skill",ref:"comet-verify"},next:"full.verify.branch"},{id:"full.verify.branch",action:{type:"invoke_skill",ref:"comet-verify"},next:"full.archive.confirm"},{id:"full.archive.confirm",action:{type:"invoke_skill",ref:"comet-archive"},next:"full.archive.execute"},{id:"full.archive.execute",action:{type:"invoke_skill",ref:"comet-archive"},next:"completed"},{id:"hotfix.open",action:{type:"invoke_skill",ref:"comet-hotfix"},next:"hotfix.build.execute"},{id:"hotfix.build.execute",action:{type:"invoke_skill",ref:"comet-build"},next:"hotfix.build.complete"},{id:"hotfix.build.complete",action:{type:"invoke_skill",ref:"comet-build"},next:"hotfix.verify.run"},{id:"hotfix.verify.run",action:{type:"invoke_skill",ref:"comet-verify"},next:"hotfix.verify.branch"},{id:"hotfix.verify.branch",action:{type:"invoke_skill",ref:"comet-verify"},next:"hotfix.archive.confirm"},{id:"hotfix.archive.confirm",action:{type:"invoke_skill",ref:"comet-archive"},next:"hotfix.archive.execute"},{id:"hotfix.archive.execute",action:{type:"invoke_skill",ref:"comet-archive"},next:"completed"},{id:"tweak.open",action:{type:"invoke_skill",ref:"comet-tweak"},next:"tweak.build.execute"},{id:"tweak.build.execute",action:{type:"invoke_skill",ref:"comet-build"},next:"tweak.build.complete"},{id:"tweak.build.complete",action:{type:"invoke_skill",ref:"comet-build"},next:"tweak.verify.run"},{id:"tweak.verify.run",action:{type:"invoke_skill",ref:"comet-verify"},next:"tweak.verify.branch"},{id:"tweak.verify.branch",action:{type:"invoke_skill",ref:"comet-verify"},next:"tweak.archive.confirm"},{id:"tweak.archive.confirm",action:{type:"invoke_skill",ref:"comet-archive"},next:"tweak.archive.execute"},{id:"tweak.archive.execute",action:{type:"invoke_skill",ref:"comet-archive"},next:"completed"},{id:"completed",action:{type:"checkpoint"},completionEvals:["classic-completed"]}]},skills:[{id:"comet-open"},{id:"comet-design"},{id:"comet-build"},{id:"comet-verify"},{id:"comet-archive"},{id:"comet-hotfix"},{id:"comet-tweak"}],agents:[],tools:[]},guardrails:{allowedSkills:["comet-open","comet-design","comet-build","comet-verify","comet-archive","comet-hotfix","comet-tweak"],allowedAgents:[],allowedTools:[],maxIterations:500,maxRetriesPerAction:3,confirmationRequiredFor:[]},evals:[{id:"classic-completed",scope:"completion",type:"state_equals",field:"status",equals:"completed"}]}}async function Lw(){let t=V.dirname(Eu(import.meta.url)),e=[process.env.COMET_RUNTIME_CLASSIC_ROOT,V.resolve(t,"..","runtime","classic"),V.resolve(t,"..","..","comet","runtime","classic"),V.resolve(t,"..","..","assets","skills","comet","runtime","classic"),V.resolve("assets","skills","comet","runtime","classic"),process.env.COMET_CLASSIC_SKILL_ROOT,V.resolve(t,"..","..","comet-classic"),V.resolve(t,"..","..","assets","skills","comet-classic"),V.resolve("assets","skills","comet-classic")].filter(n=>!!n);for(let n of e)if(await qw(n))return n;return null}async function Dw(t){return await er(V.join(t,"skill.yaml"))?uu(t):lu(t)}async function _u(t){let e=await Lw();return Su(t,{skillPackage:e?await Dw(e):$w(V.dirname(Eu(import.meta.url)))})}async function xu(t,e,n,i){let r=await We(t);if(!r.classic||!r.run)throw new Error("Classic transition requires synchronized Classic and Run projections");let o=await kt(t,{classic:e,run:n,unknownKeys:r.unknownKeys}),s=$i(e,o),a={...n,currentStep:s,iteration:n.iteration+1,status:s==="completed"?"completed":"running"};await tt(t,{classic:e,run:a,unknownKeys:r.unknownKeys});let c=await vn(t,a.trajectoryRef);return await St(t,a.trajectoryRef,{sequence:c.length+1,timestamp:new Date().toISOString(),type:"state_transitioned",runId:a.runId,data:{kind:"classic",fromStep:n.currentStep,toStep:s,...i}}),a}import{AsyncLocalStorage as Fw}from"async_hooks";import{promises as Pu}from"fs";import kn from"path";var ws=new Fw;function Ww(t,e){let n=kn.relative(t,e);return n===""||!kn.isAbsolute(n)&&n!==".."&&!n.startsWith(`..${kn.sep}`)}async function Mw(t){let e=kn.resolve(t.invocationCwd??process.cwd()),n=kn.resolve(t.projectRoot??await Ze(e)),[i,r]=await Promise.all([Pu.realpath(e),Pu.realpath(n)]);if(!Ww(r,i))throw new Error(`Classic command invocation cwd is outside the discovered project: ${e}`);return{invocationCwd:e,projectRoot:n}}async function Ru(t,e){let n=ws.getStore();if(n)return e(n);let i=await Mw(t);return ws.run(i,()=>e(i))}function Nu(){let t=ws.getStore();if(!t)throw new Error("Classic command project context is unavailable");return t.projectRoot}var Bw="\x1B[32m",Kw="\x1B[31m",Uw="\x1B[33m",vs="\x1B[0m";function Ke(t){return`${Bw}${t}${vs}`}function G(t){return`${Kw}${t}${vs}`}function Ou(t){return`${Uw}${t}${vs}`}var B=class extends Error{constructor(n,i=1){super(n);this.exitCode=i}exitCode},ys=class{stdout=[];stderr=[];toResult(e=0){return{exitCode:e,...this.stdout.length>0?{stdout:this.stdout.join(` `)+` `}:{},...this.stderr.length>0?{stderr:this.stderr.join(` `)+` -`}:{}}}};async function Ke(t,e,n){return await Ti(t,e,{label:n,expected:"file"})?vt(t,e,{label:n}):null}async function tr(t,e,n,i){await xl(t,e,n,{label:i})}function Uw(t){let e=es(t);if(e)throw new B(G(`ERROR: ${e}`))}function ke(t){return ju("sha256").update(t).digest("hex")}function $u(t){return ke(JSON.stringify(Object.fromEntries(Object.entries(t).sort(([e],[n])=>e.localeCompare(n)))))}async function kn(t,e){let n=[`${e}/proposal.md`,`${e}/design.md`,`${e}/tasks.md`],i=`${e}/specs`;if((await le(t,i,{label:"Classic handoff specs directory",expected:"directory"})).exists){let o=(await Tu.readdir(i,{withFileTypes:!0})).sort((s,a)=>s.name.localeCompare(a.name));for(let s of o){if(!s.isDirectory()&&!s.isSymbolicLink())continue;let a=`${i}/${s.name}/spec.md`;(await le(t,`${i}/${s.name}`,{label:`Classic handoff spec directory ${s.name}`,expected:"directory"})).exists&&await Ti(t,a,{label:`Classic handoff spec ${s.name}`,expected:"file"})&&n.push(a)}}return n}function Et(t,e,n){let i=Iu.relative(t,n).replaceAll("\\","/");return`${e}/${i}`}async function Nu(t,e,n){let i=[];for(let r of await kn(t,e)){let o=Et(e,n,r),s=await Ke(t,r,`Classic handoff source ${o}`);s!==null&&i.push(`path:${o}`,`sha256:${ke(s)}`)}return ju("sha256").update(i.join(` -`)).digest("hex")}function Ou(t){return t.replace(/\\/gu,"\\\\").replace(/"/gu,'\\"')}function Lu(t){return(t.match(/\n/gu)??[]).length}function Yw(t,e){let n=0;for(let i=0;if.name.localeCompare(d.name));for(let f of u){if(!f.isDirectory()&&!f.isSymbolicLink())continue;let d=`${a}/${f.name}/spec.md`,h=await Ke(t,d,`Classic handoff spec ${f.name}`);h!==null&&(c=!0,s.push(...await Vw(Et(e,n,d),h)))}}c||s.push("No delta spec files found.",""),s.push("Full source files remain canonical. If a required heading or scenario is missing here, regenerate the handoff or read the source spec directly. Supporting files (proposal, design, tasks) are referenced by hash only."),await tr(t,o,s.join(` -`),"Classic handoff spec markdown output")}async function zw(t,e,n,i,r,o){let s=[];for(let a of await kn(t,e)){let c=Et(e,n,a),l=await Ke(t,a,`Classic handoff source ${c}`);if(l===null)continue;let u=/\/specs\/[^/]+\/spec\.md$/u.test(c)?"spec":"supporting";s.push({path:c,sha256:ke(l),role:u})}await tr(t,o,`${JSON.stringify({change:i,phase:"design",mode:"beta",canonical_spec:"openspec",generated_by:"comet-handoff.sh",context_hash:r,files:s},null,2)} -`,"Classic handoff spec JSON output")}async function Au(t,e,n){let i=Iu.join(e,".comet.yaml"),r=(0,qu.parseDocument)(await vt(t,i,{label:"Classic change state"}),{uniqueKeys:!1});if(r.errors.length>0)throw new B(`ERROR: Invalid .comet.yaml: ${r.errors[0].message}`);let s=r.toJS()[n];return s==null?"":typeof s=="object"?JSON.stringify(s):String(s)}async function Qw(t,e,n){let i=await yn(t,e.trajectoryRef);i.some(o=>o.type==="recovery_reconciled"&&o.data.kind==="classic-handoff"&&o.data.actionId===n)||await St(t,e.trajectoryRef,{sequence:i.length+1,timestamp:new Date().toISOString(),type:"recovery_reconciled",runId:e.runId,data:{kind:"classic-handoff",actionId:n}})}async function Xw(t,e,n,i,r,o,s,a){let[c,l,u]=await Promise.all([zl(e,n.contextRef),us(e,n.artifactsRef),Zl(e,n.checkpointRef)]),[f,d]=await Promise.all([Ke(t,r,"Classic handoff JSON output"),Ke(t,o,"Classic handoff markdown output")]);return f===null||d===null||c!==d||l.handoff_context!==s||l.handoff_markdown!==a?!1:u?.runId===n.runId&&u.contextHash===(c===null?null:ke(c))&&u.artifactsHash===$u(l)&&i.length===64}var Du=async(t,e)=>Pu(e,async()=>{let n=new ys,[i,r,o,s]=t;try{Uw(i);let a=await Xo(Ru()),c=await Rl(i,a.projectRoot),l=c.directory,u=M(a.projectRoot,l);if(r==="--hash-only"){if(!c.exists)throw new B(G(`ERROR: change directory not found: ${u}`));for(let Ye of["proposal.md","design.md","tasks.md"])if(!await Zo(a.projectRoot,`${l}/${Ye}`,`Classic handoff source ${Ye}`))throw new B(G(`ERROR: required file missing or empty: ${u}/${Ye}`));return n.stdout.push(await Nu(a.projectRoot,l,u)),n.toResult(0)}if(r!=="design"||o!=="--write")throw new B(G("Usage: comet-handoff.mjs design --write [--full]"));let f;if(s===void 0||s==="")f="compact";else if(s==="--full")f="full";else throw new B(G("Usage: comet-handoff.mjs design --write [--full]"));if(!c.exists)throw new B(G(`ERROR: change directory not found: ${u}`));if(!c.stateExists)throw new B(G(`ERROR: .comet.yaml not found at ${u}/.comet.yaml`));if(await Au(a.projectRoot,l,"phase")!=="design")throw new B(G("ERROR: design handoff requires phase: design"));for(let Ye of["proposal.md","design.md","tasks.md"])if(!await Zo(a.projectRoot,`${l}/${Ye}`,`Classic handoff source ${Ye}`))throw new B(G(`ERROR: required OpenSpec artifact missing or empty: ${u}/${Ye}`));let d=`${l}/.comet/handoff`;await le(a.projectRoot,`${l}/.comet`,{label:"Classic change runtime directory",expected:"directory"}),await le(a.projectRoot,d,{label:"Classic handoff directory",expected:"directory"});let h=await Au(a.projectRoot,l,"context_compression")||"off",w,p;if(h==="off")w=`${d}/design-context.json`,p=`${d}/design-context.md`;else if(h==="beta")f==="full"&&n.stderr.push(Kw("[HANDOFF] --full is ignored in beta mode; spec files are projected verbatim")),f="beta",w=`${d}/spec-context.json`,p=`${d}/spec-context.md`;else throw new B([G(`ERROR: invalid context_compression: ${h}`),G("Valid values: off, beta")].join(` -`));let m=M(a.projectRoot,w),y=M(a.projectRoot,p),g=await Nu(a.projectRoot,l,u),b=`classic-handoff:${g}`,S=await Fe(l);if(!S.classic)throw new B(G("ERROR: design handoff requires Classic state"));let C=S.run?await fs(l,S.run.pendingRef):null,E=C?.id===b&&C.type==="handoff"&&C.ref===g;if(S.classic.handoffHash&&S.classic.handoffHash!==g&&!E)throw new B(G(`ERROR: stale handoff detected: source hash ${g} does not match completed hash ${S.classic.handoffHash}`));await Ii(a.projectRoot,`${l}/.comet`,"Classic change runtime directory"),await Ii(a.projectRoot,d,"Classic handoff directory");let _=await Eu(l),k=await fs(l,_.run.pendingRef),A=k?.id===b&&k.type==="handoff"&&k.ref===g;if(_.run.pending&&_.run.pending!==b)throw new B(G(`ERROR: another action is pending: ${_.run.pending}`));if(_.classic.handoffHash===g&&_.classic.handoffContext===m&&!_.run.pending&&!k&&await Xw(a.projectRoot,l,_.run,g,w,p,m,y))return n.stderr.push(Be(`[HANDOFF] wrote ${m}`)),n.stderr.push(Be(`[HANDOFF] wrote ${y}`)),n.stderr.push(Be(`[HANDOFF] handoff_hash=${g}`)),n.toResult(0);let se={id:b,stepId:_.run.currentStep,type:"handoff",ref:g};await Ql(l,_.run.pendingRef,se);let Y={..._.run,pending:b,status:"waiting"};await tt(l,{classic:_.classic,run:Y,unknownKeys:(await Fe(l)).unknownKeys}),f==="beta"?(await Gw(a.projectRoot,l,u,i,g,p),await zw(a.projectRoot,l,u,i,g,w)):(await Hw(a.projectRoot,l,u,i,f,g,p),await Jw(a.projectRoot,l,u,i,f,g,w));let R=await vt(a.projectRoot,p,{label:"Classic handoff markdown output"});await Gi(l,Y.contextRef,R);let _t={...await us(l,Y.artifactsRef),handoff_context:m,handoff_markdown:y};await Vi(l,Y.artifactsRef,_t);let ks={..._.classic,handoffContext:m,handoffHash:g},Ue={...Y.currentStep==="full.design.handoff"?await _u(l,ks,Y,{actionId:b,kind:"classic-handoff"}):Y,pending:null,status:"running"};(E||A)&&await Qw(l,Ue,b);let Wu=await yn(l,Ue.trajectoryRef),Mu={runId:Ue.runId,stateVersion:Ue.iteration,trajectoryOffset:Wu.length,contextHash:ke(R),artifactsHash:$u(_t),createdAt:new Date().toISOString()};return await zi(l,Ue.checkpointRef,Mu),await tt(l,{classic:ks,run:Ue,unknownKeys:(await Fe(l)).unknownKeys}),await Xl(l,Ue.pendingRef),n.stderr.push(Be(`[SET] handoff_context=${w}`)),n.stderr.push(Be(`[SET] handoff_hash=${g}`)),n.stderr.push(Be(`[HANDOFF] wrote ${m}`)),n.stderr.push(Be(`[HANDOFF] wrote ${y}`)),n.stderr.push(Be(`[HANDOFF] handoff_hash=${g}`)),n.toResult(0)}catch(a){if(a instanceof B){for(let c of a.message.split(` -`))n.stderr.push(c);return n.toResult(a.exitCode)}throw a}});function Zw(t,e){return{exitCode:e.exitCode,stdout:JSON.stringify({command:t,exitCode:e.exitCode,...e.stdout===void 0?{}:{stdout:e.stdout},...e.stderr===void 0?{}:{stderr:e.stderr}})+` -`}}async function Fu(t,e,n=process.argv.slice(2)){let i=n.includes("--json"),r=n.filter(a=>a!=="--json"),o;try{o=await e(r,{json:i})}catch(a){o={exitCode:70,stderr:a instanceof Error?a.message:String(a)}}let s=i?Zw(t,o):o;return s.stdout&&process.stdout.write(s.stdout),s.stderr&&process.stderr.write(s.stderr+(s.stderr.endsWith(` +`}:{}}}};async function ue(t,e,n){return await Ti(t,e,{label:n,expected:"file"})?vt(t,e,{label:n}):null}async function tr(t,e,n,i){await Pl(t,e,n,{label:i})}function Yw(t){let e=es(t);if(e)throw new B(G(`ERROR: ${e}`))}function fe(t){return Iu("sha256").update(t).digest("hex")}function Du(t){return fe(JSON.stringify(Object.fromEntries(Object.entries(t).sort(([e],[n])=>e.localeCompare(n)))))}async function _t(t,e){let n=[`${e}/proposal.md`,`${e}/design.md`,`${e}/tasks.md`],i=`${e}/specs`;if((await ce(t,i,{label:"Classic handoff specs directory",expected:"directory"})).exists){let o=(await qu.readdir(i,{withFileTypes:!0})).sort((s,a)=>s.name.localeCompare(a.name));for(let s of o){if(!s.isDirectory()&&!s.isSymbolicLink())continue;let a=`${i}/${s.name}/spec.md`;(await ce(t,`${i}/${s.name}`,{label:`Classic handoff spec directory ${s.name}`,expected:"directory"})).exists&&await Ti(t,a,{label:`Classic handoff spec ${s.name}`,expected:"file"})&&n.push(a)}}return n}function Et(t,e,n){let i=$u.relative(t,n).replaceAll("\\","/");return`${e}/${i}`}async function Au(t,e,n){let i=[];for(let r of await _t(t,e)){let o=Et(e,n,r),s=await ue(t,r,`Classic handoff source ${o}`);s!==null&&i.push(`path:${o}`,`sha256:${fe(s)}`)}return Iu("sha256").update(i.join(` +`)).digest("hex")}function ju(t){return t.replace(/\\/gu,"\\\\").replace(/"/gu,'\\"')}function Fu(t){return(t.match(/\n/gu)??[]).length}function Hw(t,e){let n=0;for(let i=0;if.name.localeCompare(d.name));for(let f of u){if(!f.isDirectory()&&!f.isSymbolicLink())continue;let d=`${a}/${f.name}/spec.md`,m=await ue(t,d,`Classic handoff spec ${f.name}`);m!==null&&(c=!0,s.push(...await Gw(Et(e,n,d),m)))}}c||s.push("No delta spec files found.",""),s.push("Full source files remain canonical. If a required heading or scenario is missing here, regenerate the handoff or read the source spec directly. Supporting files (proposal, design, tasks) are referenced by hash only."),await tr(t,o,s.join(` +`),"Classic handoff spec markdown output")}async function Qw(t,e,n,i,r,o){let s=[];for(let a of await _t(t,e)){let c=Et(e,n,a),l=await ue(t,a,`Classic handoff source ${c}`);if(l===null)continue;let u=/\/specs\/[^/]+\/spec\.md$/u.test(c)?"spec":"supporting";s.push({path:c,sha256:fe(l),role:u})}await tr(t,o,`${JSON.stringify({change:i,phase:"design",mode:"beta",canonical_spec:"openspec",generated_by:"comet-handoff.sh",context_hash:r,files:s},null,2)} +`,"Classic handoff spec JSON output")}async function Tu(t,e,n){let i=$u.join(e,".comet.yaml"),r=(0,Lu.parseDocument)(await vt(t,i,{label:"Classic change state"}),{uniqueKeys:!1});if(r.errors.length>0)throw new B(`ERROR: Invalid .comet.yaml: ${r.errors[0].message}`);let s=r.toJS()[n];return s==null?"":typeof s=="object"?JSON.stringify(s):String(s)}async function Xw(t,e,n){let i=await vn(t,e.trajectoryRef);i.some(o=>o.type==="recovery_reconciled"&&o.data.kind==="classic-handoff"&&o.data.actionId===n)||await St(t,e.trajectoryRef,{sequence:i.length+1,timestamp:new Date().toISOString(),type:"recovery_reconciled",runId:e.runId,data:{kind:"classic-handoff",actionId:n}})}async function Zw(t,e,n,i){let r=await ue(t,n,"Classic handoff markdown output");if(r===null)return!1;let o=new Set(r.split(/\r?\n/u));if(!o.has(`- Context hash: ${i}`))return!1;for(let s of await _t(t,e)){let a=await ue(t,s,`Classic handoff source ${s}`);if(a!==null&&!o.has(`- SHA256: ${fe(a)}`))return!1}return!0}async function ey(t,e,n,i,r,o,s,a){let[c,l,u]=await Promise.all([Ql(e,n.contextRef),us(e,n.artifactsRef),eu(e,n.checkpointRef)]),[f,d]=await Promise.all([ue(t,r,"Classic handoff JSON output"),ue(t,o,"Classic handoff markdown output")]);return f===null||d===null||c!==d||l.handoff_context!==s||l.handoff_markdown!==a?!1:u?.runId===n.runId&&u.contextHash===(c===null?null:fe(c))&&u.artifactsHash===Du(l)&&i.length===64}var Wu=async(t,e)=>Ru(e,async()=>{let n=new ys,[i,r,o,s]=t;try{Yw(i);let a=await Xo(Nu()),c=await Nl(i,a.projectRoot),l=c.directory,u=M(a.projectRoot,l);if(r==="--hash-only"){if(!c.exists)throw new B(G(`ERROR: change directory not found: ${u}`));for(let Ye of["proposal.md","design.md","tasks.md"])if(!await Zo(a.projectRoot,`${l}/${Ye}`,`Classic handoff source ${Ye}`))throw new B(G(`ERROR: required file missing or empty: ${u}/${Ye}`));return n.stdout.push(await Au(a.projectRoot,l,u)),n.toResult(0)}if(r!=="design"||o!=="--write")throw new B(G("Usage: comet-handoff.mjs design --write [--full]"));let f;if(s===void 0||s==="")f="compact";else if(s==="--full")f="full";else throw new B(G("Usage: comet-handoff.mjs design --write [--full]"));if(!c.exists)throw new B(G(`ERROR: change directory not found: ${u}`));if(!c.stateExists)throw new B(G(`ERROR: .comet.yaml not found at ${u}/.comet.yaml`));let d=await Tu(a.projectRoot,l,"phase");if(d!=="design"&&d!=="build")throw new B(G("ERROR: design handoff requires phase: design or build"));for(let Ye of["proposal.md","design.md","tasks.md"])if(!await Zo(a.projectRoot,`${l}/${Ye}`,`Classic handoff source ${Ye}`))throw new B(G(`ERROR: required OpenSpec artifact missing or empty: ${u}/${Ye}`));let m=`${l}/.comet/handoff`;await ce(a.projectRoot,`${l}/.comet`,{label:"Classic change runtime directory",expected:"directory"}),await ce(a.projectRoot,m,{label:"Classic handoff directory",expected:"directory"});let g=await Tu(a.projectRoot,l,"context_compression")||"off",p,h;if(g==="off")p=`${m}/design-context.json`,h=`${m}/design-context.md`;else if(g==="beta")f==="full"&&n.stderr.push(Ou("[HANDOFF] --full is ignored in beta mode; spec files are projected verbatim")),f="beta",p=`${m}/spec-context.json`,h=`${m}/spec-context.md`;else throw new B([G(`ERROR: invalid context_compression: ${g}`),G("Valid values: off, beta")].join(` +`));let w=M(a.projectRoot,p),y=M(a.projectRoot,h),b=await Au(a.projectRoot,l,u),S=`classic-handoff:${b}`,C=await We(l);if(!C.classic)throw new B(G("ERROR: design handoff requires Classic state"));let E=C.run?await fs(l,C.run.pendingRef):null,P=E?.id===S&&E.type==="handoff"&&E.ref===b;C.classic.handoffHash&&C.classic.handoffHash!==b&&!P&&n.stderr.push(Ou(`[HANDOFF] refreshing stale design handoff: previous hash ${C.classic.handoffHash}`)),await Ii(a.projectRoot,`${l}/.comet`,"Classic change runtime directory"),await Ii(a.projectRoot,m,"Classic handoff directory");let v=await _u(l),N=await fs(l,v.run.pendingRef),oe=N?.id===S&&N.type==="handoff"&&N.ref===b;if(v.run.pending&&v.run.pending!==S)throw new B(G(`ERROR: another action is pending: ${v.run.pending}`));if(v.classic.handoffHash===b&&v.classic.handoffContext===w&&!v.run.pending&&!N&&await ey(a.projectRoot,l,v.run,b,p,h,w,y)&&await Zw(a.projectRoot,l,h,b))return n.stderr.push(Ke(`[HANDOFF] wrote ${w}`)),n.stderr.push(Ke(`[HANDOFF] wrote ${y}`)),n.stderr.push(Ke(`[HANDOFF] handoff_hash=${b}`)),n.toResult(0);let be={id:S,stepId:v.run.currentStep,type:"handoff",ref:b};await Xl(l,v.run.pendingRef,be);let R={...v.run,pending:S,status:"waiting"};await tt(l,{classic:v.classic,run:R,unknownKeys:(await We(l)).unknownKeys}),f==="beta"?(await zw(a.projectRoot,l,u,i,b,h),await Qw(a.projectRoot,l,u,i,b,p)):(await Jw(a.projectRoot,l,u,i,f,b,h),await Vw(a.projectRoot,l,u,i,f,b,p));let xt=await vt(a.projectRoot,h,{label:"Classic handoff markdown output"});await Gi(l,R.contextRef,xt);let ks={...await us(l,R.artifactsRef),handoff_context:w,handoff_markdown:y};await Vi(l,R.artifactsRef,ks);let bs={...v.classic,handoffContext:w,handoffHash:b},Ue={...R.currentStep==="full.design.handoff"?await xu(l,bs,R,{actionId:S,kind:"classic-handoff"}):R,pending:null,status:"running"};(P||oe)&&await Xw(l,Ue,S);let Bu=await vn(l,Ue.trajectoryRef),Ku={runId:Ue.runId,stateVersion:Ue.iteration,trajectoryOffset:Bu.length,contextHash:fe(xt),artifactsHash:Du(ks),createdAt:new Date().toISOString()};return await zi(l,Ue.checkpointRef,Ku),await tt(l,{classic:bs,run:Ue,unknownKeys:(await We(l)).unknownKeys}),await Zl(l,Ue.pendingRef),n.stderr.push(Ke(`[SET] handoff_context=${p}`)),n.stderr.push(Ke(`[SET] handoff_hash=${b}`)),n.stderr.push(Ke(`[HANDOFF] wrote ${w}`)),n.stderr.push(Ke(`[HANDOFF] wrote ${y}`)),n.stderr.push(Ke(`[HANDOFF] handoff_hash=${b}`)),n.toResult(0)}catch(a){if(a instanceof B){for(let c of a.message.split(` +`))n.stderr.push(c);return n.toResult(a.exitCode)}throw a}});function ty(t,e){return{exitCode:e.exitCode,stdout:JSON.stringify({command:t,exitCode:e.exitCode,...e.stdout===void 0?{}:{stdout:e.stdout},...e.stderr===void 0?{}:{stderr:e.stderr}})+` +`}}async function Mu(t,e,n=process.argv.slice(2)){let i=n.includes("--json"),r=n.filter(a=>a!=="--json"),o;try{o=await e(r,{json:i})}catch(a){o={exitCode:70,stderr:a instanceof Error?a.message:String(a)}}let s=i?ty(t,o):o;return s.stdout&&process.stdout.write(s.stdout),s.stderr&&process.stderr.write(s.stderr+(s.stderr.endsWith(` `)?"":` -`)),s.exitCode}process.exitCode=await Fu("handoff",Du); +`)),s.exitCode}process.exitCode=await Mu("handoff",Wu); diff --git a/assets/skills/comet/scripts/comet-runtime.mjs b/assets/skills/comet/scripts/comet-runtime.mjs index ade83b0b9..9757bc10e 100644 --- a/assets/skills/comet/scripts/comet-runtime.mjs +++ b/assets/skills/comet/scripts/comet-runtime.mjs @@ -1,148 +1,148 @@ #!/usr/bin/env node import { createRequire as __cometCreateRequire } from 'module'; const require = __cometCreateRequire(import.meta.url); -var Ew=Object.create;var Oa=Object.defineProperty;var Rw=Object.getOwnPropertyDescriptor;var _w=Object.getOwnPropertyNames;var xw=Object.getPrototypeOf,Pw=Object.prototype.hasOwnProperty;var as=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var ie=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(i){throw n=[i],i}};var v=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(n){throw t=0,n}},Ow=(e,t)=>{for(var n in t)Oa(e,n,{get:t[n],enumerable:!0})},$w=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of _w(t))!Pw.call(e,r)&&r!==n&&Oa(e,r,{get:()=>t[r],enumerable:!(i=Rw(t,r))||i.enumerable});return e};var Ve=(e,t,n)=>(n=e!=null?Ew(xw(e)):{},$w(t||!e||!e.__esModule?Oa(n,"default",{value:e,enumerable:!0}):n,e));var M=v(ae=>{"use strict";var $a=Symbol.for("yaml.alias"),Uu=Symbol.for("yaml.document"),cs=Symbol.for("yaml.map"),Gu=Symbol.for("yaml.pair"),Aa=Symbol.for("yaml.scalar"),ls=Symbol.for("yaml.seq"),St=Symbol.for("yaml.node.type"),Nw=e=>!!e&&typeof e=="object"&&e[St]===$a,Tw=e=>!!e&&typeof e=="object"&&e[St]===Uu,jw=e=>!!e&&typeof e=="object"&&e[St]===cs,Lw=e=>!!e&&typeof e=="object"&&e[St]===Gu,Vu=e=>!!e&&typeof e=="object"&&e[St]===Aa,Mw=e=>!!e&&typeof e=="object"&&e[St]===ls;function Yu(e){if(e&&typeof e=="object")switch(e[St]){case cs:case ls:return!0}return!1}function qw(e){if(e&&typeof e=="object")switch(e[St]){case $a:case cs:case Aa:case ls:return!0}return!1}var Dw=e=>(Vu(e)||Yu(e))&&!!e.anchor;ae.ALIAS=$a;ae.DOC=Uu;ae.MAP=cs;ae.NODE_TYPE=St;ae.PAIR=Gu;ae.SCALAR=Aa;ae.SEQ=ls;ae.hasAnchor=Dw;ae.isAlias=Nw;ae.isCollection=Yu;ae.isDocument=Tw;ae.isMap=jw;ae.isNode=qw;ae.isPair=Lw;ae.isScalar=Vu;ae.isSeq=Mw});var qi=v(Ia=>{"use strict";var re=M(),Ee=Symbol("break visit"),zu=Symbol("skip children"),ut=Symbol("remove node");function us(e,t){let n=Xu(t);re.isDocument(e)?Qn(null,e.contents,n,Object.freeze([e]))===ut&&(e.contents=null):Qn(null,e,n,Object.freeze([]))}us.BREAK=Ee;us.SKIP=zu;us.REMOVE=ut;function Qn(e,t,n,i){let r=Qu(e,t,n,i);if(re.isNode(r)||re.isPair(r))return Zu(e,i,r),Qn(e,r,n,i);if(typeof r!="symbol"){if(re.isCollection(t)){i=Object.freeze(i.concat(t));for(let s=0;s{"use strict";var ef=M(),Ww=qi(),Fw={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},Bw=e=>e.replace(/[!,[\]{}]/g,t=>Fw[t]),Di=class e{constructor(t,n){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},e.defaultYaml,t),this.tags=Object.assign({},e.defaultTags,n)}clone(){let t=new e(this.yaml,this.tags);return t.docStart=this.docStart,t}atDocument(){let t=new e(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:e.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},e.defaultTags);break}return t}add(t,n){this.atNextDocument&&(this.yaml={explicit:e.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},e.defaultTags),this.atNextDocument=!1);let i=t.trim().split(/[ \t]+/),r=i.shift();switch(r){case"%TAG":{if(i.length!==2&&(n(0,"%TAG directive should contain exactly two parts"),i.length<2))return!1;let[s,o]=i;return this.tags[s]=o,!0}case"%YAML":{if(this.yaml.explicit=!0,i.length!==1)return n(0,"%YAML directive should contain exactly one part"),!1;let[s]=i;if(s==="1.1"||s==="1.2")return this.yaml.version=s,!0;{let o=/^\d+\.\d+$/.test(s);return n(6,`Unsupported YAML version ${s}`,o),!1}}default:return n(0,`Unknown directive ${r}`,!0),!1}}tagName(t,n){if(t==="!")return"!";if(t[0]!=="!")return n(`Not a valid tag: ${t}`),null;if(t[1]==="<"){let o=t.slice(2,-1);return o==="!"||o==="!!"?(n(`Verbatim tags aren't resolved, so ${t} is invalid.`),null):(t[t.length-1]!==">"&&n("Verbatim tags must end with a >"),o)}let[,i,r]=t.match(/^(.*!)([^!]*)$/s);r||n(`The ${t} tag has no suffix`);let s=this.tags[i];if(s)try{return s+decodeURIComponent(r)}catch(o){return n(String(o)),null}return i==="!"?t:(n(`Could not resolve tag: ${t}`),null)}tagString(t){for(let[n,i]of Object.entries(this.tags))if(t.startsWith(i))return n+Bw(t.substring(i.length));return t[0]==="!"?t:`!<${t}>`}toString(t){let n=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],i=Object.entries(this.tags),r;if(t&&i.length>0&&ef.isNode(t.contents)){let s={};Ww.visit(t.contents,(o,a)=>{ef.isNode(a)&&a.tag&&(s[a.tag]=!0)}),r=Object.keys(s)}else r=[];for(let[s,o]of i)s==="!!"&&o==="tag:yaml.org,2002:"||(!t||r.some(a=>a.startsWith(o)))&&n.push(`%TAG ${s} ${o}`);return n.join(` -`)}};Di.defaultYaml={explicit:!1,version:"1.2"};Di.defaultTags={"!!":"tag:yaml.org,2002:"};tf.Directives=Di});var ds=v(Wi=>{"use strict";var nf=M(),Hw=qi();function Kw(e){if(/[\x00-\x19\s,[\]{}]/.test(e)){let n=`Anchor must not contain whitespace or control characters: ${JSON.stringify(e)}`;throw new Error(n)}return!0}function rf(e){let t=new Set;return Hw.visit(e,{Value(n,i){i.anchor&&t.add(i.anchor)}}),t}function sf(e,t){for(let n=1;;++n){let i=`${e}${n}`;if(!t.has(i))return i}}function Jw(e,t){let n=[],i=new Map,r=null;return{onAnchor:s=>{n.push(s),r??(r=rf(e));let o=sf(t,r);return r.add(o),o},setAnchors:()=>{for(let s of n){let o=i.get(s);if(typeof o=="object"&&o.anchor&&(nf.isScalar(o.node)||nf.isCollection(o.node)))o.node.anchor=o.anchor;else{let a=new Error("Failed to resolve repeated object (this should not happen)");throw a.source=s,a}}},sourceObjects:i}}Wi.anchorIsValid=Kw;Wi.anchorNames=rf;Wi.createNodeAnchors=Jw;Wi.findNewAnchor=sf});var Ta=v(of=>{"use strict";function Fi(e,t,n,i){if(i&&typeof i=="object")if(Array.isArray(i))for(let r=0,s=i.length;r{"use strict";var Uw=M();function af(e,t,n){if(Array.isArray(e))return e.map((i,r)=>af(i,String(r),n));if(e&&typeof e.toJSON=="function"){if(!n||!Uw.hasAnchor(e))return e.toJSON(t,n);let i={aliasCount:0,count:1,res:void 0};n.anchors.set(e,i),n.onCreate=s=>{i.res=s,delete n.onCreate};let r=e.toJSON(t,n);return n.onCreate&&n.onCreate(r),r}return typeof e=="bigint"&&!n?.keep?Number(e):e}cf.toJS=af});var ms=v(uf=>{"use strict";var Gw=Ta(),lf=M(),Vw=Bt(),ja=class{constructor(t){Object.defineProperty(this,lf.NODE_TYPE,{value:t})}clone(){let t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(t.range=this.range.slice()),t}toJS(t,{mapAsMap:n,maxAliasCount:i,onAnchor:r,reviver:s}={}){if(!lf.isDocument(t))throw new TypeError("A document argument is required");let o={anchors:new Map,doc:t,keep:!0,mapAsMap:n===!0,mapKeyWarned:!1,maxAliasCount:typeof i=="number"?i:100},a=Vw.toJS(this,"",o);if(typeof r=="function")for(let{count:c,res:l}of o.anchors.values())r(l,c);return typeof s=="function"?Gw.applyReviver(s,{"":a},"",a):a}};uf.NodeBase=ja});var Bi=v(ff=>{"use strict";var Yw=ds(),zw=qi(),ei=M(),Xw=ms(),Qw=Bt(),La=class extends Xw.NodeBase{constructor(t){super(ei.ALIAS),this.source=t,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(t,n){if(n?.maxAliasCount===0)throw new ReferenceError("Alias resolution is disabled");let i;n?.aliasResolveCache?i=n.aliasResolveCache:(i=[],zw.visit(t,{Node:(s,o)=>{(ei.isAlias(o)||ei.hasAnchor(o))&&i.push(o)}}),n&&(n.aliasResolveCache=i));let r;for(let s of i){if(s===this)break;s.anchor===this.source&&(r=s)}return r}toJSON(t,n){if(!n)return{source:this.source};let{anchors:i,doc:r,maxAliasCount:s}=n,o=this.resolve(r,n);if(!o){let c=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(c)}let a=i.get(o);if(a||(Qw.toJS(o,null,n),a=i.get(o)),a?.res===void 0){let c="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(c)}if(s>=0&&(a.count+=1,a.aliasCount===0&&(a.aliasCount=ps(r,o,i)),a.count*a.aliasCount>s)){let c="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(c)}return a.res}toString(t,n,i){let r=`*${this.source}`;if(t){if(Yw.anchorIsValid(this.source),t.options.verifyAliasOrder&&!t.anchors.has(this.source)){let s=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(s)}if(t.implicitKey)return`${r} `}return r}};function ps(e,t,n){if(ei.isAlias(t)){let i=t.resolve(e),r=n&&i&&n.get(i);return r?r.count*r.aliasCount:0}else if(ei.isCollection(t)){let i=0;for(let r of t.items){let s=ps(e,r,n);s>i&&(i=s)}return i}else if(ei.isPair(t)){let i=ps(e,t.key,n),r=ps(e,t.value,n);return Math.max(i,r)}return 1}ff.Alias=La});var Z=v(Ma=>{"use strict";var Zw=M(),ey=ms(),ty=Bt(),ny=e=>!e||typeof e!="function"&&typeof e!="object",Ht=class extends ey.NodeBase{constructor(t){super(Zw.SCALAR),this.value=t}toJSON(t,n){return n?.keep?this.value:ty.toJS(this.value,t,n)}toString(){return String(this.value)}};Ht.BLOCK_FOLDED="BLOCK_FOLDED";Ht.BLOCK_LITERAL="BLOCK_LITERAL";Ht.PLAIN="PLAIN";Ht.QUOTE_DOUBLE="QUOTE_DOUBLE";Ht.QUOTE_SINGLE="QUOTE_SINGLE";Ma.Scalar=Ht;Ma.isScalarValue=ny});var Hi=v(mf=>{"use strict";var iy=Bi(),bn=M(),df=Z(),ry="tag:yaml.org,2002:";function sy(e,t,n){if(t){let i=n.filter(s=>s.tag===t),r=i.find(s=>!s.format)??i[0];if(!r)throw new Error(`Tag ${t} not found`);return r}return n.find(i=>i.identify?.(e)&&!i.format)}function oy(e,t,n){if(bn.isDocument(e)&&(e=e.contents),bn.isNode(e))return e;if(bn.isPair(e)){let f=n.schema[bn.MAP].createNode?.(n.schema,null,n);return f.items.push(e),f}(e instanceof String||e instanceof Number||e instanceof Boolean||typeof BigInt<"u"&&e instanceof BigInt)&&(e=e.valueOf());let{aliasDuplicateObjects:i,onAnchor:r,onTagObj:s,schema:o,sourceObjects:a}=n,c;if(i&&e&&typeof e=="object"){if(c=a.get(e),c)return c.anchor??(c.anchor=r(e)),new iy.Alias(c.anchor);c={anchor:null,node:null},a.set(e,c)}t?.startsWith("!!")&&(t=ry+t.slice(2));let l=sy(e,t,o.tags);if(!l){if(e&&typeof e.toJSON=="function"&&(e=e.toJSON()),!e||typeof e!="object"){let f=new df.Scalar(e);return c&&(c.node=f),f}l=e instanceof Map?o[bn.MAP]:Symbol.iterator in Object(e)?o[bn.SEQ]:o[bn.MAP]}s&&(s(l),delete n.onTagObj);let u=l?.createNode?l.createNode(n.schema,e,n):typeof l?.nodeClass?.from=="function"?l.nodeClass.from(n.schema,e,n):new df.Scalar(e);return t?u.tag=t:l.default||(u.tag=l.tag),c&&(c.node=u),u}mf.createNode=oy});var gs=v(hs=>{"use strict";var ay=Hi(),ft=M(),cy=ms();function qa(e,t,n){let i=n;for(let r=t.length-1;r>=0;--r){let s=t[r];if(typeof s=="number"&&Number.isInteger(s)&&s>=0){let o=[];o[s]=i,i=o}else i=new Map([[s,i]])}return ay.createNode(i,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:e,sourceObjects:new Map})}var pf=e=>e==null||typeof e=="object"&&!!e[Symbol.iterator]().next().done,Da=class extends cy.NodeBase{constructor(t,n){super(t),Object.defineProperty(this,"schema",{value:n,configurable:!0,enumerable:!1,writable:!0})}clone(t){let n=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return t&&(n.schema=t),n.items=n.items.map(i=>ft.isNode(i)||ft.isPair(i)?i.clone(t):i),this.range&&(n.range=this.range.slice()),n}addIn(t,n){if(pf(t))this.add(n);else{let[i,...r]=t,s=this.get(i,!0);if(ft.isCollection(s))s.addIn(r,n);else if(s===void 0&&this.schema)this.set(i,qa(this.schema,r,n));else throw new Error(`Expected YAML collection at ${i}. Remaining path: ${r}`)}}deleteIn(t){let[n,...i]=t;if(i.length===0)return this.delete(n);let r=this.get(n,!0);if(ft.isCollection(r))return r.deleteIn(i);throw new Error(`Expected YAML collection at ${n}. Remaining path: ${i}`)}getIn(t,n){let[i,...r]=t,s=this.get(i,!0);return r.length===0?!n&&ft.isScalar(s)?s.value:s:ft.isCollection(s)?s.getIn(r,n):void 0}hasAllNullValues(t){return this.items.every(n=>{if(!ft.isPair(n))return!1;let i=n.value;return i==null||t&&ft.isScalar(i)&&i.value==null&&!i.commentBefore&&!i.comment&&!i.tag})}hasIn(t){let[n,...i]=t;if(i.length===0)return this.has(n);let r=this.get(n,!0);return ft.isCollection(r)?r.hasIn(i):!1}setIn(t,n){let[i,...r]=t;if(r.length===0)this.set(i,n);else{let s=this.get(i,!0);if(ft.isCollection(s))s.setIn(r,n);else if(s===void 0&&this.schema)this.set(i,qa(this.schema,r,n));else throw new Error(`Expected YAML collection at ${i}. Remaining path: ${r}`)}}};hs.Collection=Da;hs.collectionFromPath=qa;hs.isEmptyPath=pf});var Ki=v(ws=>{"use strict";var ly=e=>e.replace(/^(?!$)(?: $)?/gm,"#");function Wa(e,t){return/^\n+$/.test(e)?e.substring(1):t?e.replace(/^(?! *$)/gm,t):e}var uy=(e,t,n)=>e.endsWith(` -`)?Wa(n,t):n.includes(` +var _w=Object.create;var Pa=Object.defineProperty;var xw=Object.getOwnPropertyDescriptor;var Pw=Object.getOwnPropertyNames;var Ow=Object.getPrototypeOf,$w=Object.prototype.hasOwnProperty;var as=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var ne=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(i){throw n=[i],i}};var C=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(n){throw t=0,n}},Aw=(e,t)=>{for(var n in t)Pa(e,n,{get:t[n],enumerable:!0})},Iw=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Pw(t))!$w.call(e,r)&&r!==n&&Pa(e,r,{get:()=>t[r],enumerable:!(i=xw(t,r))||i.enumerable});return e};var Ve=(e,t,n)=>(n=e!=null?_w(Ow(e)):{},Iw(t||!e||!e.__esModule?Pa(n,"default",{value:e,enumerable:!0}):n,e));var M=C(oe=>{"use strict";var Oa=Symbol.for("yaml.alias"),Uu=Symbol.for("yaml.document"),cs=Symbol.for("yaml.map"),Gu=Symbol.for("yaml.pair"),$a=Symbol.for("yaml.scalar"),ls=Symbol.for("yaml.seq"),Rt=Symbol.for("yaml.node.type"),jw=e=>!!e&&typeof e=="object"&&e[Rt]===Oa,Lw=e=>!!e&&typeof e=="object"&&e[Rt]===Uu,Mw=e=>!!e&&typeof e=="object"&&e[Rt]===cs,qw=e=>!!e&&typeof e=="object"&&e[Rt]===Gu,Vu=e=>!!e&&typeof e=="object"&&e[Rt]===$a,Dw=e=>!!e&&typeof e=="object"&&e[Rt]===ls;function Yu(e){if(e&&typeof e=="object")switch(e[Rt]){case cs:case ls:return!0}return!1}function Ww(e){if(e&&typeof e=="object")switch(e[Rt]){case Oa:case cs:case $a:case ls:return!0}return!1}var Fw=e=>(Vu(e)||Yu(e))&&!!e.anchor;oe.ALIAS=Oa;oe.DOC=Uu;oe.MAP=cs;oe.NODE_TYPE=Rt;oe.PAIR=Gu;oe.SCALAR=$a;oe.SEQ=ls;oe.hasAnchor=Fw;oe.isAlias=jw;oe.isCollection=Yu;oe.isDocument=Lw;oe.isMap=Mw;oe.isNode=Ww;oe.isPair=qw;oe.isScalar=Vu;oe.isSeq=Dw});var Wi=C(Aa=>{"use strict";var ie=M(),Ee=Symbol("break visit"),zu=Symbol("skip children"),ft=Symbol("remove node");function us(e,t){let n=Xu(t);ie.isDocument(e)?Qn(null,e.contents,n,Object.freeze([e]))===ft&&(e.contents=null):Qn(null,e,n,Object.freeze([]))}us.BREAK=Ee;us.SKIP=zu;us.REMOVE=ft;function Qn(e,t,n,i){let r=Qu(e,t,n,i);if(ie.isNode(r)||ie.isPair(r))return Zu(e,i,r),Qn(e,r,n,i);if(typeof r!="symbol"){if(ie.isCollection(t)){i=Object.freeze(i.concat(t));for(let s=0;s{"use strict";var ef=M(),Bw=Wi(),Hw={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},Kw=e=>e.replace(/[!,[\]{}]/g,t=>Hw[t]),Fi=class e{constructor(t,n){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},e.defaultYaml,t),this.tags=Object.assign({},e.defaultTags,n)}clone(){let t=new e(this.yaml,this.tags);return t.docStart=this.docStart,t}atDocument(){let t=new e(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:e.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},e.defaultTags);break}return t}add(t,n){this.atNextDocument&&(this.yaml={explicit:e.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},e.defaultTags),this.atNextDocument=!1);let i=t.trim().split(/[ \t]+/),r=i.shift();switch(r){case"%TAG":{if(i.length!==2&&(n(0,"%TAG directive should contain exactly two parts"),i.length<2))return!1;let[s,o]=i;return this.tags[s]=o,!0}case"%YAML":{if(this.yaml.explicit=!0,i.length!==1)return n(0,"%YAML directive should contain exactly one part"),!1;let[s]=i;if(s==="1.1"||s==="1.2")return this.yaml.version=s,!0;{let o=/^\d+\.\d+$/.test(s);return n(6,`Unsupported YAML version ${s}`,o),!1}}default:return n(0,`Unknown directive ${r}`,!0),!1}}tagName(t,n){if(t==="!")return"!";if(t[0]!=="!")return n(`Not a valid tag: ${t}`),null;if(t[1]==="<"){let o=t.slice(2,-1);return o==="!"||o==="!!"?(n(`Verbatim tags aren't resolved, so ${t} is invalid.`),null):(t[t.length-1]!==">"&&n("Verbatim tags must end with a >"),o)}let[,i,r]=t.match(/^(.*!)([^!]*)$/s);r||n(`The ${t} tag has no suffix`);let s=this.tags[i];if(s)try{return s+decodeURIComponent(r)}catch(o){return n(String(o)),null}return i==="!"?t:(n(`Could not resolve tag: ${t}`),null)}tagString(t){for(let[n,i]of Object.entries(this.tags))if(t.startsWith(i))return n+Kw(t.substring(i.length));return t[0]==="!"?t:`!<${t}>`}toString(t){let n=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],i=Object.entries(this.tags),r;if(t&&i.length>0&&ef.isNode(t.contents)){let s={};Bw.visit(t.contents,(o,a)=>{ef.isNode(a)&&a.tag&&(s[a.tag]=!0)}),r=Object.keys(s)}else r=[];for(let[s,o]of i)s==="!!"&&o==="tag:yaml.org,2002:"||(!t||r.some(a=>a.startsWith(o)))&&n.push(`%TAG ${s} ${o}`);return n.join(` +`)}};Fi.defaultYaml={explicit:!1,version:"1.2"};Fi.defaultTags={"!!":"tag:yaml.org,2002:"};tf.Directives=Fi});var ds=C(Bi=>{"use strict";var nf=M(),Jw=Wi();function Uw(e){if(/[\x00-\x19\s,[\]{}]/.test(e)){let n=`Anchor must not contain whitespace or control characters: ${JSON.stringify(e)}`;throw new Error(n)}return!0}function rf(e){let t=new Set;return Jw.visit(e,{Value(n,i){i.anchor&&t.add(i.anchor)}}),t}function sf(e,t){for(let n=1;;++n){let i=`${e}${n}`;if(!t.has(i))return i}}function Gw(e,t){let n=[],i=new Map,r=null;return{onAnchor:s=>{n.push(s),r??(r=rf(e));let o=sf(t,r);return r.add(o),o},setAnchors:()=>{for(let s of n){let o=i.get(s);if(typeof o=="object"&&o.anchor&&(nf.isScalar(o.node)||nf.isCollection(o.node)))o.node.anchor=o.anchor;else{let a=new Error("Failed to resolve repeated object (this should not happen)");throw a.source=s,a}}},sourceObjects:i}}Bi.anchorIsValid=Uw;Bi.anchorNames=rf;Bi.createNodeAnchors=Gw;Bi.findNewAnchor=sf});var Na=C(of=>{"use strict";function Hi(e,t,n,i){if(i&&typeof i=="object")if(Array.isArray(i))for(let r=0,s=i.length;r{"use strict";var Vw=M();function af(e,t,n){if(Array.isArray(e))return e.map((i,r)=>af(i,String(r),n));if(e&&typeof e.toJSON=="function"){if(!n||!Vw.hasAnchor(e))return e.toJSON(t,n);let i={aliasCount:0,count:1,res:void 0};n.anchors.set(e,i),n.onCreate=s=>{i.res=s,delete n.onCreate};let r=e.toJSON(t,n);return n.onCreate&&n.onCreate(r),r}return typeof e=="bigint"&&!n?.keep?Number(e):e}cf.toJS=af});var ms=C(uf=>{"use strict";var Yw=Na(),lf=M(),zw=Ht(),Ta=class{constructor(t){Object.defineProperty(this,lf.NODE_TYPE,{value:t})}clone(){let t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(t.range=this.range.slice()),t}toJS(t,{mapAsMap:n,maxAliasCount:i,onAnchor:r,reviver:s}={}){if(!lf.isDocument(t))throw new TypeError("A document argument is required");let o={anchors:new Map,doc:t,keep:!0,mapAsMap:n===!0,mapKeyWarned:!1,maxAliasCount:typeof i=="number"?i:100},a=zw.toJS(this,"",o);if(typeof r=="function")for(let{count:c,res:l}of o.anchors.values())r(l,c);return typeof s=="function"?Yw.applyReviver(s,{"":a},"",a):a}};uf.NodeBase=Ta});var Ki=C(ff=>{"use strict";var Xw=ds(),Qw=Wi(),ei=M(),Zw=ms(),ey=Ht(),ja=class extends Zw.NodeBase{constructor(t){super(ei.ALIAS),this.source=t,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(t,n){if(n?.maxAliasCount===0)throw new ReferenceError("Alias resolution is disabled");let i;n?.aliasResolveCache?i=n.aliasResolveCache:(i=[],Qw.visit(t,{Node:(s,o)=>{(ei.isAlias(o)||ei.hasAnchor(o))&&i.push(o)}}),n&&(n.aliasResolveCache=i));let r;for(let s of i){if(s===this)break;s.anchor===this.source&&(r=s)}return r}toJSON(t,n){if(!n)return{source:this.source};let{anchors:i,doc:r,maxAliasCount:s}=n,o=this.resolve(r,n);if(!o){let c=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(c)}let a=i.get(o);if(a||(ey.toJS(o,null,n),a=i.get(o)),a?.res===void 0){let c="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(c)}if(s>=0&&(a.count+=1,a.aliasCount===0&&(a.aliasCount=ps(r,o,i)),a.count*a.aliasCount>s)){let c="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(c)}return a.res}toString(t,n,i){let r=`*${this.source}`;if(t){if(Xw.anchorIsValid(this.source),t.options.verifyAliasOrder&&!t.anchors.has(this.source)){let s=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(s)}if(t.implicitKey)return`${r} `}return r}};function ps(e,t,n){if(ei.isAlias(t)){let i=t.resolve(e),r=n&&i&&n.get(i);return r?r.count*r.aliasCount:0}else if(ei.isCollection(t)){let i=0;for(let r of t.items){let s=ps(e,r,n);s>i&&(i=s)}return i}else if(ei.isPair(t)){let i=ps(e,t.key,n),r=ps(e,t.value,n);return Math.max(i,r)}return 1}ff.Alias=ja});var Q=C(La=>{"use strict";var ty=M(),ny=ms(),iy=Ht(),ry=e=>!e||typeof e!="function"&&typeof e!="object",Kt=class extends ny.NodeBase{constructor(t){super(ty.SCALAR),this.value=t}toJSON(t,n){return n?.keep?this.value:iy.toJS(this.value,t,n)}toString(){return String(this.value)}};Kt.BLOCK_FOLDED="BLOCK_FOLDED";Kt.BLOCK_LITERAL="BLOCK_LITERAL";Kt.PLAIN="PLAIN";Kt.QUOTE_DOUBLE="QUOTE_DOUBLE";Kt.QUOTE_SINGLE="QUOTE_SINGLE";La.Scalar=Kt;La.isScalarValue=ry});var Ji=C(mf=>{"use strict";var sy=Ki(),bn=M(),df=Q(),oy="tag:yaml.org,2002:";function ay(e,t,n){if(t){let i=n.filter(s=>s.tag===t),r=i.find(s=>!s.format)??i[0];if(!r)throw new Error(`Tag ${t} not found`);return r}return n.find(i=>i.identify?.(e)&&!i.format)}function cy(e,t,n){if(bn.isDocument(e)&&(e=e.contents),bn.isNode(e))return e;if(bn.isPair(e)){let f=n.schema[bn.MAP].createNode?.(n.schema,null,n);return f.items.push(e),f}(e instanceof String||e instanceof Number||e instanceof Boolean||typeof BigInt<"u"&&e instanceof BigInt)&&(e=e.valueOf());let{aliasDuplicateObjects:i,onAnchor:r,onTagObj:s,schema:o,sourceObjects:a}=n,c;if(i&&e&&typeof e=="object"){if(c=a.get(e),c)return c.anchor??(c.anchor=r(e)),new sy.Alias(c.anchor);c={anchor:null,node:null},a.set(e,c)}t?.startsWith("!!")&&(t=oy+t.slice(2));let l=ay(e,t,o.tags);if(!l){if(e&&typeof e.toJSON=="function"&&(e=e.toJSON()),!e||typeof e!="object"){let f=new df.Scalar(e);return c&&(c.node=f),f}l=e instanceof Map?o[bn.MAP]:Symbol.iterator in Object(e)?o[bn.SEQ]:o[bn.MAP]}s&&(s(l),delete n.onTagObj);let u=l?.createNode?l.createNode(n.schema,e,n):typeof l?.nodeClass?.from=="function"?l.nodeClass.from(n.schema,e,n):new df.Scalar(e);return t?u.tag=t:l.default||(u.tag=l.tag),c&&(c.node=u),u}mf.createNode=cy});var gs=C(hs=>{"use strict";var ly=Ji(),dt=M(),uy=ms();function Ma(e,t,n){let i=n;for(let r=t.length-1;r>=0;--r){let s=t[r];if(typeof s=="number"&&Number.isInteger(s)&&s>=0){let o=[];o[s]=i,i=o}else i=new Map([[s,i]])}return ly.createNode(i,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:e,sourceObjects:new Map})}var pf=e=>e==null||typeof e=="object"&&!!e[Symbol.iterator]().next().done,qa=class extends uy.NodeBase{constructor(t,n){super(t),Object.defineProperty(this,"schema",{value:n,configurable:!0,enumerable:!1,writable:!0})}clone(t){let n=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return t&&(n.schema=t),n.items=n.items.map(i=>dt.isNode(i)||dt.isPair(i)?i.clone(t):i),this.range&&(n.range=this.range.slice()),n}addIn(t,n){if(pf(t))this.add(n);else{let[i,...r]=t,s=this.get(i,!0);if(dt.isCollection(s))s.addIn(r,n);else if(s===void 0&&this.schema)this.set(i,Ma(this.schema,r,n));else throw new Error(`Expected YAML collection at ${i}. Remaining path: ${r}`)}}deleteIn(t){let[n,...i]=t;if(i.length===0)return this.delete(n);let r=this.get(n,!0);if(dt.isCollection(r))return r.deleteIn(i);throw new Error(`Expected YAML collection at ${n}. Remaining path: ${i}`)}getIn(t,n){let[i,...r]=t,s=this.get(i,!0);return r.length===0?!n&&dt.isScalar(s)?s.value:s:dt.isCollection(s)?s.getIn(r,n):void 0}hasAllNullValues(t){return this.items.every(n=>{if(!dt.isPair(n))return!1;let i=n.value;return i==null||t&&dt.isScalar(i)&&i.value==null&&!i.commentBefore&&!i.comment&&!i.tag})}hasIn(t){let[n,...i]=t;if(i.length===0)return this.has(n);let r=this.get(n,!0);return dt.isCollection(r)?r.hasIn(i):!1}setIn(t,n){let[i,...r]=t;if(r.length===0)this.set(i,n);else{let s=this.get(i,!0);if(dt.isCollection(s))s.setIn(r,n);else if(s===void 0&&this.schema)this.set(i,Ma(this.schema,r,n));else throw new Error(`Expected YAML collection at ${i}. Remaining path: ${r}`)}}};hs.Collection=qa;hs.collectionFromPath=Ma;hs.isEmptyPath=pf});var Ui=C(ws=>{"use strict";var fy=e=>e.replace(/^(?!$)(?: $)?/gm,"#");function Da(e,t){return/^\n+$/.test(e)?e.substring(1):t?e.replace(/^(?! *$)/gm,t):e}var dy=(e,t,n)=>e.endsWith(` +`)?Da(n,t):n.includes(` `)?` -`+Wa(n,t):(e.endsWith(" ")?"":" ")+n;ws.indentComment=Wa;ws.lineComment=uy;ws.stringifyComment=ly});var gf=v(Ji=>{"use strict";var fy="flow",Fa="block",ys="quoted";function dy(e,t,n="flow",{indentAtStart:i,lineWidth:r=80,minContentWidth:s=20,onFold:o,onOverflow:a}={}){if(!r||r<0)return e;rr-Math.max(2,s)?l.push(0):f=r-i);let d,p,g=!1,h=-1,m=-1,y=-1;n===Fa&&(h=hf(e,h,t.length),h!==-1&&(f=h+c));for(let C;C=e[h+=1];){if(n===ys&&C==="\\"){switch(m=h,e[h+1]){case"x":h+=3;break;case"u":h+=5;break;case"U":h+=9;break;default:h+=1}y=h}if(C===` -`)n===Fa&&(h=hf(e,h,t.length)),f=h+t.length+c,d=void 0;else{if(C===" "&&p&&p!==" "&&p!==` +`+Da(n,t):(e.endsWith(" ")?"":" ")+n;ws.indentComment=Da;ws.lineComment=dy;ws.stringifyComment=fy});var gf=C(Gi=>{"use strict";var my="flow",Wa="block",ys="quoted";function py(e,t,n="flow",{indentAtStart:i,lineWidth:r=80,minContentWidth:s=20,onFold:o,onOverflow:a}={}){if(!r||r<0)return e;rr-Math.max(2,s)?l.push(0):f=r-i);let d,p,g=!1,h=-1,m=-1,w=-1;n===Wa&&(h=hf(e,h,t.length),h!==-1&&(f=h+c));for(let b;b=e[h+=1];){if(n===ys&&b==="\\"){switch(m=h,e[h+1]){case"x":h+=3;break;case"u":h+=5;break;case"U":h+=9;break;default:h+=1}w=h}if(b===` +`)n===Wa&&(h=hf(e,h,t.length)),f=h+t.length+c,d=void 0;else{if(b===" "&&p&&p!==" "&&p!==` `&&p!==" "){let k=e[h+1];k&&k!==" "&&k!==` -`&&k!==" "&&(d=h)}if(h>=f)if(d)l.push(d),f=d+c,d=void 0;else if(n===ys){for(;p===" "||p===" ";)p=C,C=e[h+=1],g=!0;let k=h>y+1?h-2:m-1;if(u[k])return e;l.push(k),u[k]=!0,f=k+c,d=void 0}else g=!0}p=C}if(g&&a&&a(),l.length===0)return e;o&&o();let w=e.slice(0,l[0]);for(let C=0;C{"use strict";var Ye=Z(),Kt=gf(),bs=(e,t)=>({indentAtStart:t?e.indent.length:e.indentAtStart,lineWidth:e.options.lineWidth,minContentWidth:e.options.minContentWidth}),Cs=e=>/^(%|---|\.\.\.)/m.test(e);function my(e,t,n){if(!t||t<0)return!1;let i=t-n,r=e.length;if(r<=i)return!1;for(let s=0,o=0;si)return!0;if(o=s+1,r-o<=i)return!1}return!0}function Ui(e,t){let n=JSON.stringify(e);if(t.options.doubleQuotedAsJSON)return n;let{implicitKey:i}=t,r=t.options.doubleQuotedMinMultiLineLength,s=t.indent||(Cs(e)?" ":""),o="",a=0;for(let c=0,l=n[c];l;l=n[++c])if(l===" "&&n[c+1]==="\\"&&n[c+2]==="n"&&(o+=n.slice(a,c)+"\\ ",c+=1,a=c,l="\\"),l==="\\")switch(n[c+1]){case"u":{o+=n.slice(a,c);let u=n.substr(c+2,4);switch(u){case"0000":o+="\\0";break;case"0007":o+="\\a";break;case"000b":o+="\\v";break;case"001b":o+="\\e";break;case"0085":o+="\\N";break;case"00a0":o+="\\_";break;case"2028":o+="\\L";break;case"2029":o+="\\P";break;default:u.substr(0,2)==="00"?o+="\\x"+u.substr(2):o+=n.substr(c,6)}c+=5,a=c+1}break;case"n":if(i||n[c+2]==='"'||n.length=f)if(d)l.push(d),f=d+c,d=void 0;else if(n===ys){for(;p===" "||p===" ";)p=b,b=e[h+=1],g=!0;let k=h>w+1?h-2:m-1;if(u[k])return e;l.push(k),u[k]=!0,f=k+c,d=void 0}else g=!0}p=b}if(g&&a&&a(),l.length===0)return e;o&&o();let y=e.slice(0,l[0]);for(let b=0;b{"use strict";var Ye=Q(),Jt=gf(),bs=(e,t)=>({indentAtStart:t?e.indent.length:e.indentAtStart,lineWidth:e.options.lineWidth,minContentWidth:e.options.minContentWidth}),Cs=e=>/^(%|---|\.\.\.)/m.test(e);function hy(e,t,n){if(!t||t<0)return!1;let i=t-n,r=e.length;if(r<=i)return!1;for(let s=0,o=0;si)return!0;if(o=s+1,r-o<=i)return!1}return!0}function Vi(e,t){let n=JSON.stringify(e);if(t.options.doubleQuotedAsJSON)return n;let{implicitKey:i}=t,r=t.options.doubleQuotedMinMultiLineLength,s=t.indent||(Cs(e)?" ":""),o="",a=0;for(let c=0,l=n[c];l;l=n[++c])if(l===" "&&n[c+1]==="\\"&&n[c+2]==="n"&&(o+=n.slice(a,c)+"\\ ",c+=1,a=c,l="\\"),l==="\\")switch(n[c+1]){case"u":{o+=n.slice(a,c);let u=n.substr(c+2,4);switch(u){case"0000":o+="\\0";break;case"0007":o+="\\a";break;case"000b":o+="\\v";break;case"001b":o+="\\e";break;case"0085":o+="\\N";break;case"00a0":o+="\\_";break;case"2028":o+="\\L";break;case"2029":o+="\\P";break;default:u.substr(0,2)==="00"?o+="\\x"+u.substr(2):o+=n.substr(c,6)}c+=5,a=c+1}break;case"n":if(i||n[c+2]==='"'||n.length `;let f,d;for(d=n.length;d>0;--d){let E=n[d-1];if(E!==` `&&E!==" "&&E!==" ")break}let p=n.substring(d),g=p.indexOf(` `);g===-1?f="-":n===p||g!==p.length-1?(f="+",s&&s()):f="",p&&(n=n.slice(0,-p.length),p[p.length-1]===` -`&&(p=p.slice(0,-1)),p=p.replace(Ha,`$&${l}`));let h=!1,m,y=-1;for(m=0;m{R=!0});let b=Kt.foldFlowLines(`${w}${E}${p}`,l,Kt.FOLD_BLOCK,O);if(!R)return`>${k} -${l}${b}`}return n=n.replace(/\n+/g,`$&${l}`),`|${k} -${l}${w}${n}${p}`}function py(e,t,n,i){let{type:r,value:s}=e,{actualString:o,implicitKey:a,indent:c,indentStep:l,inFlow:u}=t;if(a&&s.includes(` +`&&(p=p.slice(0,-1)),p=p.replace(Ba,`$&${l}`));let h=!1,m,w=-1;for(m=0;m{R=!0});let v=Jt.foldFlowLines(`${y}${E}${p}`,l,Jt.FOLD_BLOCK,T);if(!R)return`>${k} +${l}${v}`}return n=n.replace(/\n+/g,`$&${l}`),`|${k} +${l}${y}${n}${p}`}function gy(e,t,n,i){let{type:r,value:s}=e,{actualString:o,implicitKey:a,indent:c,indentStep:l,inFlow:u}=t;if(a&&s.includes(` `)||u&&/[[\]{},]/.test(s))return ti(s,t);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(s))return a||u||!s.includes(` `)?ti(s,t):vs(e,t,n,i);if(!a&&!u&&r!==Ye.Scalar.PLAIN&&s.includes(` `))return vs(e,t,n,i);if(Cs(s)){if(c==="")return t.forceBlockIndent=!0,vs(e,t,n,i);if(a&&c===l)return ti(s,t)}let f=s.replace(/\n+/g,`$& -${c}`);if(o){let d=h=>h.default&&h.tag!=="tag:yaml.org,2002:str"&&h.test?.test(f),{compat:p,tags:g}=t.doc.schema;if(g.some(d)||p?.some(d))return ti(s,t)}return a?f:Kt.foldFlowLines(f,c,Kt.FOLD_FLOW,bs(t,!1))}function hy(e,t,n,i){let{implicitKey:r,inFlow:s}=t,o=typeof e.value=="string"?e:Object.assign({},e,{value:String(e.value)}),{type:a}=e;a!==Ye.Scalar.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(o.value)&&(a=Ye.Scalar.QUOTE_DOUBLE);let c=u=>{switch(u){case Ye.Scalar.BLOCK_FOLDED:case Ye.Scalar.BLOCK_LITERAL:return r||s?ti(o.value,t):vs(o,t,n,i);case Ye.Scalar.QUOTE_DOUBLE:return Ui(o.value,t);case Ye.Scalar.QUOTE_SINGLE:return Ba(o.value,t);case Ye.Scalar.PLAIN:return py(o,t,n,i);default:return null}},l=c(a);if(l===null){let{defaultKeyType:u,defaultStringType:f}=t.options,d=r&&u||f;if(l=c(d),l===null)throw new Error(`Unsupported default string type ${d}`)}return l}wf.stringifyString=hy});var Vi=v(Ka=>{"use strict";var gy=ds(),Jt=M(),wy=Ki(),yy=Gi();function vy(e,t){let n=Object.assign({blockQuote:!0,commentString:wy.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},e.schema.toStringOptions,t),i;switch(n.collectionStyle){case"block":i=!1;break;case"flow":i=!0;break;default:i=null}return{anchors:new Set,doc:e,flowCollectionPadding:n.flowCollectionPadding?" ":"",indent:"",indentStep:typeof n.indent=="number"?" ".repeat(n.indent):" ",inFlow:i,options:n}}function by(e,t){if(t.tag){let r=e.filter(s=>s.tag===t.tag);if(r.length>0)return r.find(s=>s.format===t.format)??r[0]}let n,i;if(Jt.isScalar(t)){i=t.value;let r=e.filter(s=>s.identify?.(i));if(r.length>1){let s=r.filter(o=>o.test);s.length>0&&(r=s)}n=r.find(s=>s.format===t.format)??r.find(s=>!s.format)}else i=t,n=e.find(r=>r.nodeClass&&i instanceof r.nodeClass);if(!n){let r=i?.constructor?.name??(i===null?"null":typeof i);throw new Error(`Tag not resolved for ${r} value`)}return n}function Cy(e,t,{anchors:n,doc:i}){if(!i.directives)return"";let r=[],s=(Jt.isScalar(e)||Jt.isCollection(e))&&e.anchor;s&&gy.anchorIsValid(s)&&(n.add(s),r.push(`&${s}`));let o=e.tag??(t.default?null:t.tag);return o&&r.push(i.directives.tagString(o)),r.join(" ")}function ky(e,t,n,i){if(Jt.isPair(e))return e.toString(t,n,i);if(Jt.isAlias(e)){if(t.doc.directives)return e.toString(t);if(t.resolvedAliases?.has(e))throw new TypeError("Cannot stringify circular structure without alias nodes");t.resolvedAliases?t.resolvedAliases.add(e):t.resolvedAliases=new Set([e]),e=e.resolve(t.doc)}let r,s=Jt.isNode(e)?e:t.doc.createNode(e,{onTagObj:c=>r=c});r??(r=by(t.doc.schema.tags,s));let o=Cy(s,r,t);o.length>0&&(t.indentAtStart=(t.indentAtStart??0)+o.length+1);let a=typeof r.stringify=="function"?r.stringify(s,t,n,i):Jt.isScalar(s)?yy.stringifyString(s,t,n,i):s.toString(t,n,i);return o?Jt.isScalar(s)||a[0]==="{"||a[0]==="["?`${o} ${a}`:`${o} -${t.indent}${a}`:a}Ka.createStringifyContext=vy;Ka.stringify=ky});var Cf=v(bf=>{"use strict";var Et=M(),yf=Z(),vf=Vi(),Yi=Ki();function Sy({key:e,value:t},n,i,r){let{allNullValues:s,doc:o,indent:a,indentStep:c,options:{commentString:l,indentSeq:u,simpleKeys:f}}=n,d=Et.isNode(e)&&e.comment||null;if(f){if(d)throw new Error("With simple keys, key nodes cannot have comments");if(Et.isCollection(e)||!Et.isNode(e)&&typeof e=="object"){let O="With simple keys, collection cannot be used as a key value";throw new Error(O)}}let p=!f&&(!e||d&&t==null&&!n.inFlow||Et.isCollection(e)||(Et.isScalar(e)?e.type===yf.Scalar.BLOCK_FOLDED||e.type===yf.Scalar.BLOCK_LITERAL:typeof e=="object"));n=Object.assign({},n,{allNullValues:!1,implicitKey:!p&&(f||!s),indent:a+c});let g=!1,h=!1,m=vf.stringify(e,n,()=>g=!0,()=>h=!0);if(!p&&!n.inFlow&&m.length>1024){if(f)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");p=!0}if(n.inFlow){if(s||t==null)return g&&i&&i(),m===""?"?":p?`? ${m}`:m}else if(s&&!f||t==null&&p)return m=`? ${m}`,d&&!g?m+=Yi.lineComment(m,n.indent,l(d)):h&&r&&r(),m;g&&(d=null),p?(d&&(m+=Yi.lineComment(m,n.indent,l(d))),m=`? ${m} -${a}:`):(m=`${m}:`,d&&(m+=Yi.lineComment(m,n.indent,l(d))));let y,w,C;Et.isNode(t)?(y=!!t.spaceBefore,w=t.commentBefore,C=t.comment):(y=!1,w=null,C=null,t&&typeof t=="object"&&(t=o.createNode(t))),n.implicitKey=!1,!p&&!d&&Et.isScalar(t)&&(n.indentAtStart=m.length+1),h=!1,!u&&c.length>=2&&!n.inFlow&&!p&&Et.isSeq(t)&&!t.flow&&!t.tag&&!t.anchor&&(n.indent=n.indent.substring(2));let k=!1,E=vf.stringify(t,n,()=>k=!0,()=>h=!0),R=" ";if(d||y||w){if(R=y?` -`:"",w){let O=l(w);R+=` -${Yi.indentComment(O,n.indent)}`}E===""&&!n.inFlow?R===` -`&&C&&(R=` +${c}`);if(o){let d=h=>h.default&&h.tag!=="tag:yaml.org,2002:str"&&h.test?.test(f),{compat:p,tags:g}=t.doc.schema;if(g.some(d)||p?.some(d))return ti(s,t)}return a?f:Jt.foldFlowLines(f,c,Jt.FOLD_FLOW,bs(t,!1))}function wy(e,t,n,i){let{implicitKey:r,inFlow:s}=t,o=typeof e.value=="string"?e:Object.assign({},e,{value:String(e.value)}),{type:a}=e;a!==Ye.Scalar.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(o.value)&&(a=Ye.Scalar.QUOTE_DOUBLE);let c=u=>{switch(u){case Ye.Scalar.BLOCK_FOLDED:case Ye.Scalar.BLOCK_LITERAL:return r||s?ti(o.value,t):vs(o,t,n,i);case Ye.Scalar.QUOTE_DOUBLE:return Vi(o.value,t);case Ye.Scalar.QUOTE_SINGLE:return Fa(o.value,t);case Ye.Scalar.PLAIN:return gy(o,t,n,i);default:return null}},l=c(a);if(l===null){let{defaultKeyType:u,defaultStringType:f}=t.options,d=r&&u||f;if(l=c(d),l===null)throw new Error(`Unsupported default string type ${d}`)}return l}wf.stringifyString=wy});var zi=C(Ha=>{"use strict";var yy=ds(),Ut=M(),vy=Ui(),by=Yi();function Cy(e,t){let n=Object.assign({blockQuote:!0,commentString:vy.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},e.schema.toStringOptions,t),i;switch(n.collectionStyle){case"block":i=!1;break;case"flow":i=!0;break;default:i=null}return{anchors:new Set,doc:e,flowCollectionPadding:n.flowCollectionPadding?" ":"",indent:"",indentStep:typeof n.indent=="number"?" ".repeat(n.indent):" ",inFlow:i,options:n}}function ky(e,t){if(t.tag){let r=e.filter(s=>s.tag===t.tag);if(r.length>0)return r.find(s=>s.format===t.format)??r[0]}let n,i;if(Ut.isScalar(t)){i=t.value;let r=e.filter(s=>s.identify?.(i));if(r.length>1){let s=r.filter(o=>o.test);s.length>0&&(r=s)}n=r.find(s=>s.format===t.format)??r.find(s=>!s.format)}else i=t,n=e.find(r=>r.nodeClass&&i instanceof r.nodeClass);if(!n){let r=i?.constructor?.name??(i===null?"null":typeof i);throw new Error(`Tag not resolved for ${r} value`)}return n}function Sy(e,t,{anchors:n,doc:i}){if(!i.directives)return"";let r=[],s=(Ut.isScalar(e)||Ut.isCollection(e))&&e.anchor;s&&yy.anchorIsValid(s)&&(n.add(s),r.push(`&${s}`));let o=e.tag??(t.default?null:t.tag);return o&&r.push(i.directives.tagString(o)),r.join(" ")}function Ey(e,t,n,i){if(Ut.isPair(e))return e.toString(t,n,i);if(Ut.isAlias(e)){if(t.doc.directives)return e.toString(t);if(t.resolvedAliases?.has(e))throw new TypeError("Cannot stringify circular structure without alias nodes");t.resolvedAliases?t.resolvedAliases.add(e):t.resolvedAliases=new Set([e]),e=e.resolve(t.doc)}let r,s=Ut.isNode(e)?e:t.doc.createNode(e,{onTagObj:c=>r=c});r??(r=ky(t.doc.schema.tags,s));let o=Sy(s,r,t);o.length>0&&(t.indentAtStart=(t.indentAtStart??0)+o.length+1);let a=typeof r.stringify=="function"?r.stringify(s,t,n,i):Ut.isScalar(s)?by.stringifyString(s,t,n,i):s.toString(t,n,i);return o?Ut.isScalar(s)||a[0]==="{"||a[0]==="["?`${o} ${a}`:`${o} +${t.indent}${a}`:a}Ha.createStringifyContext=Cy;Ha.stringify=Ey});var Cf=C(bf=>{"use strict";var _t=M(),yf=Q(),vf=zi(),Xi=Ui();function Ry({key:e,value:t},n,i,r){let{allNullValues:s,doc:o,indent:a,indentStep:c,options:{commentString:l,indentSeq:u,simpleKeys:f}}=n,d=_t.isNode(e)&&e.comment||null;if(f){if(d)throw new Error("With simple keys, key nodes cannot have comments");if(_t.isCollection(e)||!_t.isNode(e)&&typeof e=="object"){let T="With simple keys, collection cannot be used as a key value";throw new Error(T)}}let p=!f&&(!e||d&&t==null&&!n.inFlow||_t.isCollection(e)||(_t.isScalar(e)?e.type===yf.Scalar.BLOCK_FOLDED||e.type===yf.Scalar.BLOCK_LITERAL:typeof e=="object"));n=Object.assign({},n,{allNullValues:!1,implicitKey:!p&&(f||!s),indent:a+c});let g=!1,h=!1,m=vf.stringify(e,n,()=>g=!0,()=>h=!0);if(!p&&!n.inFlow&&m.length>1024){if(f)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");p=!0}if(n.inFlow){if(s||t==null)return g&&i&&i(),m===""?"?":p?`? ${m}`:m}else if(s&&!f||t==null&&p)return m=`? ${m}`,d&&!g?m+=Xi.lineComment(m,n.indent,l(d)):h&&r&&r(),m;g&&(d=null),p?(d&&(m+=Xi.lineComment(m,n.indent,l(d))),m=`? ${m} +${a}:`):(m=`${m}:`,d&&(m+=Xi.lineComment(m,n.indent,l(d))));let w,y,b;_t.isNode(t)?(w=!!t.spaceBefore,y=t.commentBefore,b=t.comment):(w=!1,y=null,b=null,t&&typeof t=="object"&&(t=o.createNode(t))),n.implicitKey=!1,!p&&!d&&_t.isScalar(t)&&(n.indentAtStart=m.length+1),h=!1,!u&&c.length>=2&&!n.inFlow&&!p&&_t.isSeq(t)&&!t.flow&&!t.tag&&!t.anchor&&(n.indent=n.indent.substring(2));let k=!1,E=vf.stringify(t,n,()=>k=!0,()=>h=!0),R=" ";if(d||w||y){if(R=w?` +`:"",y){let T=l(y);R+=` +${Xi.indentComment(T,n.indent)}`}E===""&&!n.inFlow?R===` +`&&b&&(R=` `):R+=` -${n.indent}`}else if(!p&&Et.isCollection(t)){let O=E[0],b=E.indexOf(` -`),L=b!==-1,Me=n.inFlow??t.flow??t.items.length===0;if(L||!Me){let Q=!1;if(L&&(O==="&"||O==="!")){let K=E.indexOf(" ");O==="&"&&K!==-1&&K{"use strict";var kf=as("process");function Ey(e,...t){e==="debug"&&console.log(...t)}function Ry(e,t){(e==="debug"||e==="warn")&&(typeof kf.emitWarning=="function"?kf.emitWarning(t):console.warn(t))}Ja.debug=Ey;Ja.warn=Ry});var _s=v(Rs=>{"use strict";var Es=M(),Sf=Z(),ks="<<",Ss={identify:e=>e===ks||typeof e=="symbol"&&e.description===ks,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new Sf.Scalar(Symbol(ks)),{addToJSMap:Ef}),stringify:()=>ks},_y=(e,t)=>(Ss.identify(t)||Es.isScalar(t)&&(!t.type||t.type===Sf.Scalar.PLAIN)&&Ss.identify(t.value))&&e?.doc.schema.tags.some(n=>n.tag===Ss.tag&&n.default);function Ef(e,t,n){let i=Rf(e,n);if(Es.isSeq(i))for(let r of i.items)Ga(e,t,r);else if(Array.isArray(i))for(let r of i)Ga(e,t,r);else Ga(e,t,i)}function Ga(e,t,n){let i=Rf(e,n);if(!Es.isMap(i))throw new Error("Merge sources must be maps or map aliases");let r=i.toJSON(null,e,Map);for(let[s,o]of r)t instanceof Map?t.has(s)||t.set(s,o):t instanceof Set?t.add(s):Object.prototype.hasOwnProperty.call(t,s)||Object.defineProperty(t,s,{value:o,writable:!0,enumerable:!0,configurable:!0});return t}function Rf(e,t){return e&&Es.isAlias(t)?t.resolve(e.doc,e):t}Rs.addMergeToJSMap=Ef;Rs.isMergeKey=_y;Rs.merge=Ss});var Ya=v(Pf=>{"use strict";var xy=Ua(),_f=_s(),Py=Vi(),xf=M(),Va=Bt();function Oy(e,t,{key:n,value:i}){if(xf.isNode(n)&&n.addToJSMap)n.addToJSMap(e,t,i);else if(_f.isMergeKey(e,n))_f.addMergeToJSMap(e,t,i);else{let r=Va.toJS(n,"",e);if(t instanceof Map)t.set(r,Va.toJS(i,r,e));else if(t instanceof Set)t.add(r);else{let s=$y(n,r,e),o=Va.toJS(i,s,e);s in t?Object.defineProperty(t,s,{value:o,writable:!0,enumerable:!0,configurable:!0}):t[s]=o}}return t}function $y(e,t,n){if(t===null)return"";if(typeof t!="object")return String(t);if(xf.isNode(e)&&n?.doc){let i=Py.createStringifyContext(n.doc,{});i.anchors=new Set;for(let s of n.anchors.keys())i.anchors.add(s.anchor);i.inFlow=!0,i.inStringifyKey=!0;let r=e.toString(i);if(!n.mapKeyWarned){let s=JSON.stringify(r);s.length>40&&(s=s.substring(0,36)+'..."'),xy.warn(n.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${s}. Set mapAsMap: true to use object keys.`),n.mapKeyWarned=!0}return r}return JSON.stringify(t)}Pf.addPairToJSMap=Oy});var Ut=v(za=>{"use strict";var Of=Hi(),Ay=Cf(),Iy=Ya(),xs=M();function Ny(e,t,n){let i=Of.createNode(e,void 0,n),r=Of.createNode(t,void 0,n);return new Ps(i,r)}var Ps=class e{constructor(t,n=null){Object.defineProperty(this,xs.NODE_TYPE,{value:xs.PAIR}),this.key=t,this.value=n}clone(t){let{key:n,value:i}=this;return xs.isNode(n)&&(n=n.clone(t)),xs.isNode(i)&&(i=i.clone(t)),new e(n,i)}toJSON(t,n){let i=n?.mapAsMap?new Map:{};return Iy.addPairToJSMap(n,i,this)}toString(t,n,i){return t?.doc?Ay.stringifyPair(this,t,n,i):JSON.stringify(this)}};za.Pair=Ps;za.createPair=Ny});var Xa=v(Af=>{"use strict";var Cn=M(),$f=Vi(),Os=Ki();function Ty(e,t,n){return(t.inFlow??e.flow?Ly:jy)(e,t,n)}function jy({comment:e,items:t},n,{blockItemPrefix:i,flowChars:r,itemIndent:s,onChompKeep:o,onComment:a}){let{indent:c,options:{commentString:l}}=n,u=Object.assign({},n,{indent:s,type:null}),f=!1,d=[];for(let g=0;gm=null,()=>f=!0);m&&(y+=Os.lineComment(y,s,l(m))),f&&m&&(f=!1),d.push(i+y)}let p;if(d.length===0)p=r.start+r.end;else{p=d[0];for(let g=1;g{"use strict";var kf=as("process");function _y(e,...t){e==="debug"&&console.log(...t)}function xy(e,t){(e==="debug"||e==="warn")&&(typeof kf.emitWarning=="function"?kf.emitWarning(t):console.warn(t))}Ka.debug=_y;Ka.warn=xy});var _s=C(Rs=>{"use strict";var Es=M(),Sf=Q(),ks="<<",Ss={identify:e=>e===ks||typeof e=="symbol"&&e.description===ks,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new Sf.Scalar(Symbol(ks)),{addToJSMap:Ef}),stringify:()=>ks},Py=(e,t)=>(Ss.identify(t)||Es.isScalar(t)&&(!t.type||t.type===Sf.Scalar.PLAIN)&&Ss.identify(t.value))&&e?.doc.schema.tags.some(n=>n.tag===Ss.tag&&n.default);function Ef(e,t,n){let i=Rf(e,n);if(Es.isSeq(i))for(let r of i.items)Ua(e,t,r);else if(Array.isArray(i))for(let r of i)Ua(e,t,r);else Ua(e,t,i)}function Ua(e,t,n){let i=Rf(e,n);if(!Es.isMap(i))throw new Error("Merge sources must be maps or map aliases");let r=i.toJSON(null,e,Map);for(let[s,o]of r)t instanceof Map?t.has(s)||t.set(s,o):t instanceof Set?t.add(s):Object.prototype.hasOwnProperty.call(t,s)||Object.defineProperty(t,s,{value:o,writable:!0,enumerable:!0,configurable:!0});return t}function Rf(e,t){return e&&Es.isAlias(t)?t.resolve(e.doc,e):t}Rs.addMergeToJSMap=Ef;Rs.isMergeKey=Py;Rs.merge=Ss});var Va=C(Pf=>{"use strict";var Oy=Ja(),_f=_s(),$y=zi(),xf=M(),Ga=Ht();function Ay(e,t,{key:n,value:i}){if(xf.isNode(n)&&n.addToJSMap)n.addToJSMap(e,t,i);else if(_f.isMergeKey(e,n))_f.addMergeToJSMap(e,t,i);else{let r=Ga.toJS(n,"",e);if(t instanceof Map)t.set(r,Ga.toJS(i,r,e));else if(t instanceof Set)t.add(r);else{let s=Iy(n,r,e),o=Ga.toJS(i,s,e);s in t?Object.defineProperty(t,s,{value:o,writable:!0,enumerable:!0,configurable:!0}):t[s]=o}}return t}function Iy(e,t,n){if(t===null)return"";if(typeof t!="object")return String(t);if(xf.isNode(e)&&n?.doc){let i=$y.createStringifyContext(n.doc,{});i.anchors=new Set;for(let s of n.anchors.keys())i.anchors.add(s.anchor);i.inFlow=!0,i.inStringifyKey=!0;let r=e.toString(i);if(!n.mapKeyWarned){let s=JSON.stringify(r);s.length>40&&(s=s.substring(0,36)+'..."'),Oy.warn(n.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${s}. Set mapAsMap: true to use object keys.`),n.mapKeyWarned=!0}return r}return JSON.stringify(t)}Pf.addPairToJSMap=Ay});var Gt=C(Ya=>{"use strict";var Of=Ji(),Ny=Cf(),Ty=Va(),xs=M();function jy(e,t,n){let i=Of.createNode(e,void 0,n),r=Of.createNode(t,void 0,n);return new Ps(i,r)}var Ps=class e{constructor(t,n=null){Object.defineProperty(this,xs.NODE_TYPE,{value:xs.PAIR}),this.key=t,this.value=n}clone(t){let{key:n,value:i}=this;return xs.isNode(n)&&(n=n.clone(t)),xs.isNode(i)&&(i=i.clone(t)),new e(n,i)}toJSON(t,n){let i=n?.mapAsMap?new Map:{};return Ty.addPairToJSMap(n,i,this)}toString(t,n,i){return t?.doc?Ny.stringifyPair(this,t,n,i):JSON.stringify(this)}};Ya.Pair=Ps;Ya.createPair=jy});var za=C(Af=>{"use strict";var Cn=M(),$f=zi(),Os=Ui();function Ly(e,t,n){return(t.inFlow??e.flow?qy:My)(e,t,n)}function My({comment:e,items:t},n,{blockItemPrefix:i,flowChars:r,itemIndent:s,onChompKeep:o,onComment:a}){let{indent:c,options:{commentString:l}}=n,u=Object.assign({},n,{indent:s,type:null}),f=!1,d=[];for(let g=0;gm=null,()=>f=!0);m&&(w+=Os.lineComment(w,s,l(m))),f&&m&&(f=!1),d.push(i+w)}let p;if(d.length===0)p=r.start+r.end;else{p=d[0];for(let g=1;gm=null);l||(l=f.length>u||y.includes(` -`)),g0&&(l||(l=f.reduce((w,C)=>w+C.length+2,2)+(y.length+2)>t.options.lineWidth)),l&&(y+=",")),m&&(y+=Os.lineComment(y,i,a(m))),f.push(y),u=f.length}let{start:d,end:p}=n;if(f.length===0)return d+p;if(!l){let g=f.reduce((h,m)=>h+m.length+2,2);l=t.options.lineWidth>0&&g>t.options.lineWidth}if(l){let g=d;for(let h of f)g+=h?` +`+Os.indentComment(l(e),c),a&&a()):f&&o&&o(),p}function qy({items:e},t,{flowChars:n,itemIndent:i}){let{indent:r,indentStep:s,flowCollectionPadding:o,options:{commentString:a}}=t;i+=s;let c=Object.assign({},t,{indent:i,inFlow:!0,type:null}),l=!1,u=0,f=[];for(let g=0;gm=null);l||(l=f.length>u||w.includes(` +`)),g0&&(l||(l=f.reduce((y,b)=>y+b.length+2,2)+(w.length+2)>t.options.lineWidth)),l&&(w+=",")),m&&(w+=Os.lineComment(w,i,a(m))),f.push(w),u=f.length}let{start:d,end:p}=n;if(f.length===0)return d+p;if(!l){let g=f.reduce((h,m)=>h+m.length+2,2);l=t.options.lineWidth>0&&g>t.options.lineWidth}if(l){let g=d;for(let h of f)g+=h?` ${s}${r}${h}`:` `;return`${g} -${r}${p}`}else return`${d}${o}${f.join(" ")}${o}${p}`}function $s({indent:e,options:{commentString:t}},n,i,r){if(i&&r&&(i=i.replace(/^\n+/,"")),i){let s=Os.indentComment(t(i),e);n.push(s.trimStart())}}Af.stringifyCollection=Ty});var Vt=v(Za=>{"use strict";var My=Xa(),qy=Ya(),Dy=gs(),Gt=M(),As=Ut(),Wy=Z();function zi(e,t){let n=Gt.isScalar(t)?t.value:t;for(let i of e)if(Gt.isPair(i)&&(i.key===t||i.key===n||Gt.isScalar(i.key)&&i.key.value===n))return i}var Qa=class extends Dy.Collection{static get tagName(){return"tag:yaml.org,2002:map"}constructor(t){super(Gt.MAP,t),this.items=[]}static from(t,n,i){let{keepUndefined:r,replacer:s}=i,o=new this(t),a=(c,l)=>{if(typeof s=="function")l=s.call(n,c,l);else if(Array.isArray(s)&&!s.includes(c))return;(l!==void 0||r)&&o.items.push(As.createPair(c,l,i))};if(n instanceof Map)for(let[c,l]of n)a(c,l);else if(n&&typeof n=="object")for(let c of Object.keys(n))a(c,n[c]);return typeof t.sortMapEntries=="function"&&o.items.sort(t.sortMapEntries),o}add(t,n){let i;Gt.isPair(t)?i=t:!t||typeof t!="object"||!("key"in t)?i=new As.Pair(t,t?.value):i=new As.Pair(t.key,t.value);let r=zi(this.items,i.key),s=this.schema?.sortMapEntries;if(r){if(!n)throw new Error(`Key ${i.key} already set`);Gt.isScalar(r.value)&&Wy.isScalarValue(i.value)?r.value.value=i.value:r.value=i.value}else if(s){let o=this.items.findIndex(a=>s(i,a)<0);o===-1?this.items.push(i):this.items.splice(o,0,i)}else this.items.push(i)}delete(t){let n=zi(this.items,t);return n?this.items.splice(this.items.indexOf(n),1).length>0:!1}get(t,n){let r=zi(this.items,t)?.value;return(!n&&Gt.isScalar(r)?r.value:r)??void 0}has(t){return!!zi(this.items,t)}set(t,n){this.add(new As.Pair(t,n),!0)}toJSON(t,n,i){let r=i?new i:n?.mapAsMap?new Map:{};n?.onCreate&&n.onCreate(r);for(let s of this.items)qy.addPairToJSMap(n,r,s);return r}toString(t,n,i){if(!t)return JSON.stringify(this);for(let r of this.items)if(!Gt.isPair(r))throw new Error(`Map items must all be pairs; found ${JSON.stringify(r)} instead`);return!t.allNullValues&&this.hasAllNullValues(!1)&&(t=Object.assign({},t,{allNullValues:!0})),My.stringifyCollection(this,t,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:t.indent||"",onChompKeep:i,onComment:n})}};Za.YAMLMap=Qa;Za.findPair=zi});var ni=v(Nf=>{"use strict";var Fy=M(),If=Vt(),By={collection:"map",default:!0,nodeClass:If.YAMLMap,tag:"tag:yaml.org,2002:map",resolve(e,t){return Fy.isMap(e)||t("Expected a mapping for this tag"),e},createNode:(e,t,n)=>If.YAMLMap.from(e,t,n)};Nf.map=By});var Yt=v(Tf=>{"use strict";var Hy=Hi(),Ky=Xa(),Jy=gs(),Ns=M(),Uy=Z(),Gy=Bt(),ec=class extends Jy.Collection{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(t){super(Ns.SEQ,t),this.items=[]}add(t){this.items.push(t)}delete(t){let n=Is(t);return typeof n!="number"?!1:this.items.splice(n,1).length>0}get(t,n){let i=Is(t);if(typeof i!="number")return;let r=this.items[i];return!n&&Ns.isScalar(r)?r.value:r}has(t){let n=Is(t);return typeof n=="number"&&n=0?t:null}Tf.YAMLSeq=ec});var ii=v(Lf=>{"use strict";var Vy=M(),jf=Yt(),Yy={collection:"seq",default:!0,nodeClass:jf.YAMLSeq,tag:"tag:yaml.org,2002:seq",resolve(e,t){return Vy.isSeq(e)||t("Expected a sequence for this tag"),e},createNode:(e,t,n)=>jf.YAMLSeq.from(e,t,n)};Lf.seq=Yy});var Xi=v(Mf=>{"use strict";var zy=Gi(),Xy={identify:e=>typeof e=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:e=>e,stringify(e,t,n,i){return t=Object.assign({actualString:!0},t),zy.stringifyString(e,t,n,i)}};Mf.string=Xy});var Ts=v(Wf=>{"use strict";var qf=Z(),Df={identify:e=>e==null,createNode:()=>new qf.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new qf.Scalar(null),stringify:({source:e},t)=>typeof e=="string"&&Df.test.test(e)?e:t.options.nullStr};Wf.nullTag=Df});var tc=v(Bf=>{"use strict";var Qy=Z(),Ff={identify:e=>typeof e=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:e=>new Qy.Scalar(e[0]==="t"||e[0]==="T"),stringify({source:e,value:t},n){if(e&&Ff.test.test(e)){let i=e[0]==="t"||e[0]==="T";if(t===i)return e}return t?n.options.trueStr:n.options.falseStr}};Bf.boolTag=Ff});var ri=v(Hf=>{"use strict";function Zy({format:e,minFractionDigits:t,tag:n,value:i}){if(typeof i=="bigint")return String(i);let r=typeof i=="number"?i:Number(i);if(!isFinite(r))return isNaN(r)?".nan":r<0?"-.inf":".inf";let s=Object.is(i,-0)?"-0":JSON.stringify(i);if(!e&&t&&(!n||n==="tag:yaml.org,2002:float")&&/^-?\d/.test(s)&&!s.includes("e")){let o=s.indexOf(".");o<0&&(o=s.length,s+=".");let a=t-(s.length-o-1);for(;a-- >0;)s+="0"}return s}Hf.stringifyNumber=Zy});var ic=v(js=>{"use strict";var ev=Z(),nc=ri(),tv={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:e=>e.slice(-3).toLowerCase()==="nan"?NaN:e[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:nc.stringifyNumber},nv={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:e=>parseFloat(e),stringify(e){let t=Number(e.value);return isFinite(t)?t.toExponential():nc.stringifyNumber(e)}},iv={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve(e){let t=new ev.Scalar(parseFloat(e)),n=e.indexOf(".");return n!==-1&&e[e.length-1]==="0"&&(t.minFractionDigits=e.length-n-1),t},stringify:nc.stringifyNumber};js.float=iv;js.floatExp=nv;js.floatNaN=tv});var sc=v(Ms=>{"use strict";var Kf=ri(),Ls=e=>typeof e=="bigint"||Number.isInteger(e),rc=(e,t,n,{intAsBigInt:i})=>i?BigInt(e):parseInt(e.substring(t),n);function Jf(e,t,n){let{value:i}=e;return Ls(i)&&i>=0?n+i.toString(t):Kf.stringifyNumber(e)}var rv={identify:e=>Ls(e)&&e>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(e,t,n)=>rc(e,2,8,n),stringify:e=>Jf(e,8,"0o")},sv={identify:Ls,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(e,t,n)=>rc(e,0,10,n),stringify:Kf.stringifyNumber},ov={identify:e=>Ls(e)&&e>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(e,t,n)=>rc(e,2,16,n),stringify:e=>Jf(e,16,"0x")};Ms.int=sv;Ms.intHex=ov;Ms.intOct=rv});var Gf=v(Uf=>{"use strict";var av=ni(),cv=Ts(),lv=ii(),uv=Xi(),fv=tc(),oc=ic(),ac=sc(),dv=[av.map,lv.seq,uv.string,cv.nullTag,fv.boolTag,ac.intOct,ac.int,ac.intHex,oc.floatNaN,oc.floatExp,oc.float];Uf.schema=dv});var zf=v(Yf=>{"use strict";var mv=Z(),pv=ni(),hv=ii();function Vf(e){return typeof e=="bigint"||Number.isInteger(e)}var qs=({value:e})=>JSON.stringify(e),gv=[{identify:e=>typeof e=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:e=>e,stringify:qs},{identify:e=>e==null,createNode:()=>new mv.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:qs},{identify:e=>typeof e=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true$|^false$/,resolve:e=>e==="true",stringify:qs},{identify:Vf,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(e,t,{intAsBigInt:n})=>n?BigInt(e):parseInt(e,10),stringify:({value:e})=>Vf(e)?e.toString():JSON.stringify(e)},{identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:e=>parseFloat(e),stringify:qs}],wv={default:!0,tag:"",test:/^/,resolve(e,t){return t(`Unresolved plain scalar ${JSON.stringify(e)}`),e}},yv=[pv.map,hv.seq].concat(gv,wv);Yf.schema=yv});var lc=v(Xf=>{"use strict";var Qi=as("buffer"),cc=Z(),vv=Gi(),bv={identify:e=>e instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(e,t){if(typeof Qi.Buffer=="function")return Qi.Buffer.from(e,"base64");if(typeof atob=="function"){let n=atob(e.replace(/[\n\r]/g,"")),i=new Uint8Array(n.length);for(let r=0;r{"use strict";var Ds=M(),uc=Ut(),Cv=Z(),kv=Yt();function Qf(e,t){if(Ds.isSeq(e))for(let n=0;n1&&t("Each pair must have its own sequence indicator");let r=i.items[0]||new uc.Pair(new Cv.Scalar(null));if(i.commentBefore&&(r.key.commentBefore=r.key.commentBefore?`${i.commentBefore} +${r}${p}`}else return`${d}${o}${f.join(" ")}${o}${p}`}function $s({indent:e,options:{commentString:t}},n,i,r){if(i&&r&&(i=i.replace(/^\n+/,"")),i){let s=Os.indentComment(t(i),e);n.push(s.trimStart())}}Af.stringifyCollection=Ly});var Yt=C(Qa=>{"use strict";var Dy=za(),Wy=Va(),Fy=gs(),Vt=M(),As=Gt(),By=Q();function Qi(e,t){let n=Vt.isScalar(t)?t.value:t;for(let i of e)if(Vt.isPair(i)&&(i.key===t||i.key===n||Vt.isScalar(i.key)&&i.key.value===n))return i}var Xa=class extends Fy.Collection{static get tagName(){return"tag:yaml.org,2002:map"}constructor(t){super(Vt.MAP,t),this.items=[]}static from(t,n,i){let{keepUndefined:r,replacer:s}=i,o=new this(t),a=(c,l)=>{if(typeof s=="function")l=s.call(n,c,l);else if(Array.isArray(s)&&!s.includes(c))return;(l!==void 0||r)&&o.items.push(As.createPair(c,l,i))};if(n instanceof Map)for(let[c,l]of n)a(c,l);else if(n&&typeof n=="object")for(let c of Object.keys(n))a(c,n[c]);return typeof t.sortMapEntries=="function"&&o.items.sort(t.sortMapEntries),o}add(t,n){let i;Vt.isPair(t)?i=t:!t||typeof t!="object"||!("key"in t)?i=new As.Pair(t,t?.value):i=new As.Pair(t.key,t.value);let r=Qi(this.items,i.key),s=this.schema?.sortMapEntries;if(r){if(!n)throw new Error(`Key ${i.key} already set`);Vt.isScalar(r.value)&&By.isScalarValue(i.value)?r.value.value=i.value:r.value=i.value}else if(s){let o=this.items.findIndex(a=>s(i,a)<0);o===-1?this.items.push(i):this.items.splice(o,0,i)}else this.items.push(i)}delete(t){let n=Qi(this.items,t);return n?this.items.splice(this.items.indexOf(n),1).length>0:!1}get(t,n){let r=Qi(this.items,t)?.value;return(!n&&Vt.isScalar(r)?r.value:r)??void 0}has(t){return!!Qi(this.items,t)}set(t,n){this.add(new As.Pair(t,n),!0)}toJSON(t,n,i){let r=i?new i:n?.mapAsMap?new Map:{};n?.onCreate&&n.onCreate(r);for(let s of this.items)Wy.addPairToJSMap(n,r,s);return r}toString(t,n,i){if(!t)return JSON.stringify(this);for(let r of this.items)if(!Vt.isPair(r))throw new Error(`Map items must all be pairs; found ${JSON.stringify(r)} instead`);return!t.allNullValues&&this.hasAllNullValues(!1)&&(t=Object.assign({},t,{allNullValues:!0})),Dy.stringifyCollection(this,t,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:t.indent||"",onChompKeep:i,onComment:n})}};Qa.YAMLMap=Xa;Qa.findPair=Qi});var ni=C(Nf=>{"use strict";var Hy=M(),If=Yt(),Ky={collection:"map",default:!0,nodeClass:If.YAMLMap,tag:"tag:yaml.org,2002:map",resolve(e,t){return Hy.isMap(e)||t("Expected a mapping for this tag"),e},createNode:(e,t,n)=>If.YAMLMap.from(e,t,n)};Nf.map=Ky});var zt=C(Tf=>{"use strict";var Jy=Ji(),Uy=za(),Gy=gs(),Ns=M(),Vy=Q(),Yy=Ht(),Za=class extends Gy.Collection{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(t){super(Ns.SEQ,t),this.items=[]}add(t){this.items.push(t)}delete(t){let n=Is(t);return typeof n!="number"?!1:this.items.splice(n,1).length>0}get(t,n){let i=Is(t);if(typeof i!="number")return;let r=this.items[i];return!n&&Ns.isScalar(r)?r.value:r}has(t){let n=Is(t);return typeof n=="number"&&n=0?t:null}Tf.YAMLSeq=Za});var ii=C(Lf=>{"use strict";var zy=M(),jf=zt(),Xy={collection:"seq",default:!0,nodeClass:jf.YAMLSeq,tag:"tag:yaml.org,2002:seq",resolve(e,t){return zy.isSeq(e)||t("Expected a sequence for this tag"),e},createNode:(e,t,n)=>jf.YAMLSeq.from(e,t,n)};Lf.seq=Xy});var Zi=C(Mf=>{"use strict";var Qy=Yi(),Zy={identify:e=>typeof e=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:e=>e,stringify(e,t,n,i){return t=Object.assign({actualString:!0},t),Qy.stringifyString(e,t,n,i)}};Mf.string=Zy});var Ts=C(Wf=>{"use strict";var qf=Q(),Df={identify:e=>e==null,createNode:()=>new qf.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new qf.Scalar(null),stringify:({source:e},t)=>typeof e=="string"&&Df.test.test(e)?e:t.options.nullStr};Wf.nullTag=Df});var ec=C(Bf=>{"use strict";var ev=Q(),Ff={identify:e=>typeof e=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:e=>new ev.Scalar(e[0]==="t"||e[0]==="T"),stringify({source:e,value:t},n){if(e&&Ff.test.test(e)){let i=e[0]==="t"||e[0]==="T";if(t===i)return e}return t?n.options.trueStr:n.options.falseStr}};Bf.boolTag=Ff});var ri=C(Hf=>{"use strict";function tv({format:e,minFractionDigits:t,tag:n,value:i}){if(typeof i=="bigint")return String(i);let r=typeof i=="number"?i:Number(i);if(!isFinite(r))return isNaN(r)?".nan":r<0?"-.inf":".inf";let s=Object.is(i,-0)?"-0":JSON.stringify(i);if(!e&&t&&(!n||n==="tag:yaml.org,2002:float")&&/^-?\d/.test(s)&&!s.includes("e")){let o=s.indexOf(".");o<0&&(o=s.length,s+=".");let a=t-(s.length-o-1);for(;a-- >0;)s+="0"}return s}Hf.stringifyNumber=tv});var nc=C(js=>{"use strict";var nv=Q(),tc=ri(),iv={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:e=>e.slice(-3).toLowerCase()==="nan"?NaN:e[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:tc.stringifyNumber},rv={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:e=>parseFloat(e),stringify(e){let t=Number(e.value);return isFinite(t)?t.toExponential():tc.stringifyNumber(e)}},sv={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve(e){let t=new nv.Scalar(parseFloat(e)),n=e.indexOf(".");return n!==-1&&e[e.length-1]==="0"&&(t.minFractionDigits=e.length-n-1),t},stringify:tc.stringifyNumber};js.float=sv;js.floatExp=rv;js.floatNaN=iv});var rc=C(Ms=>{"use strict";var Kf=ri(),Ls=e=>typeof e=="bigint"||Number.isInteger(e),ic=(e,t,n,{intAsBigInt:i})=>i?BigInt(e):parseInt(e.substring(t),n);function Jf(e,t,n){let{value:i}=e;return Ls(i)&&i>=0?n+i.toString(t):Kf.stringifyNumber(e)}var ov={identify:e=>Ls(e)&&e>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(e,t,n)=>ic(e,2,8,n),stringify:e=>Jf(e,8,"0o")},av={identify:Ls,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(e,t,n)=>ic(e,0,10,n),stringify:Kf.stringifyNumber},cv={identify:e=>Ls(e)&&e>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(e,t,n)=>ic(e,2,16,n),stringify:e=>Jf(e,16,"0x")};Ms.int=av;Ms.intHex=cv;Ms.intOct=ov});var Gf=C(Uf=>{"use strict";var lv=ni(),uv=Ts(),fv=ii(),dv=Zi(),mv=ec(),sc=nc(),oc=rc(),pv=[lv.map,fv.seq,dv.string,uv.nullTag,mv.boolTag,oc.intOct,oc.int,oc.intHex,sc.floatNaN,sc.floatExp,sc.float];Uf.schema=pv});var zf=C(Yf=>{"use strict";var hv=Q(),gv=ni(),wv=ii();function Vf(e){return typeof e=="bigint"||Number.isInteger(e)}var qs=({value:e})=>JSON.stringify(e),yv=[{identify:e=>typeof e=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:e=>e,stringify:qs},{identify:e=>e==null,createNode:()=>new hv.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:qs},{identify:e=>typeof e=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true$|^false$/,resolve:e=>e==="true",stringify:qs},{identify:Vf,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(e,t,{intAsBigInt:n})=>n?BigInt(e):parseInt(e,10),stringify:({value:e})=>Vf(e)?e.toString():JSON.stringify(e)},{identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:e=>parseFloat(e),stringify:qs}],vv={default:!0,tag:"",test:/^/,resolve(e,t){return t(`Unresolved plain scalar ${JSON.stringify(e)}`),e}},bv=[gv.map,wv.seq].concat(yv,vv);Yf.schema=bv});var cc=C(Xf=>{"use strict";var er=as("buffer"),ac=Q(),Cv=Yi(),kv={identify:e=>e instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(e,t){if(typeof er.Buffer=="function")return er.Buffer.from(e,"base64");if(typeof atob=="function"){let n=atob(e.replace(/[\n\r]/g,"")),i=new Uint8Array(n.length);for(let r=0;r{"use strict";var Ds=M(),lc=Gt(),Sv=Q(),Ev=zt();function Qf(e,t){if(Ds.isSeq(e))for(let n=0;n1&&t("Each pair must have its own sequence indicator");let r=i.items[0]||new lc.Pair(new Sv.Scalar(null));if(i.commentBefore&&(r.key.commentBefore=r.key.commentBefore?`${i.commentBefore} ${r.key.commentBefore}`:i.commentBefore),i.comment){let s=r.value??r.key;s.comment=s.comment?`${i.comment} -${s.comment}`:i.comment}i=r}e.items[n]=Ds.isPair(i)?i:new uc.Pair(i)}}else t("Expected a sequence for this tag");return e}function Zf(e,t,n){let{replacer:i}=n,r=new kv.YAMLSeq(e);r.tag="tag:yaml.org,2002:pairs";let s=0;if(t&&Symbol.iterator in Object(t))for(let o of t){typeof i=="function"&&(o=i.call(t,String(s++),o));let a,c;if(Array.isArray(o))if(o.length===2)a=o[0],c=o[1];else throw new TypeError(`Expected [key, value] tuple: ${o}`);else if(o&&o instanceof Object){let l=Object.keys(o);if(l.length===1)a=l[0],c=o[a];else throw new TypeError(`Expected tuple with one key, not ${l.length} keys`)}else a=o;r.items.push(uc.createPair(a,c,n))}return r}var Sv={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:Qf,createNode:Zf};Ws.createPairs=Zf;Ws.pairs=Sv;Ws.resolvePairs=Qf});var mc=v(dc=>{"use strict";var ed=M(),fc=Bt(),Zi=Vt(),Ev=Yt(),td=Fs(),kn=class e extends Ev.YAMLSeq{constructor(){super(),this.add=Zi.YAMLMap.prototype.add.bind(this),this.delete=Zi.YAMLMap.prototype.delete.bind(this),this.get=Zi.YAMLMap.prototype.get.bind(this),this.has=Zi.YAMLMap.prototype.has.bind(this),this.set=Zi.YAMLMap.prototype.set.bind(this),this.tag=e.tag}toJSON(t,n){if(!n)return super.toJSON(t);let i=new Map;n?.onCreate&&n.onCreate(i);for(let r of this.items){let s,o;if(ed.isPair(r)?(s=fc.toJS(r.key,"",n),o=fc.toJS(r.value,s,n)):s=fc.toJS(r,"",n),i.has(s))throw new Error("Ordered maps must not include duplicate keys");i.set(s,o)}return i}static from(t,n,i){let r=td.createPairs(t,n,i),s=new this;return s.items=r.items,s}};kn.tag="tag:yaml.org,2002:omap";var Rv={collection:"seq",identify:e=>e instanceof Map,nodeClass:kn,default:!1,tag:"tag:yaml.org,2002:omap",resolve(e,t){let n=td.resolvePairs(e,t),i=[];for(let{key:r}of n.items)ed.isScalar(r)&&(i.includes(r.value)?t(`Ordered maps must not include duplicate keys: ${r.value}`):i.push(r.value));return Object.assign(new kn,n)},createNode:(e,t,n)=>kn.from(e,t,n)};dc.YAMLOMap=kn;dc.omap=Rv});var od=v(pc=>{"use strict";var nd=Z();function id({value:e,source:t},n){return t&&(e?rd:sd).test.test(t)?t:e?n.options.trueStr:n.options.falseStr}var rd={identify:e=>e===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new nd.Scalar(!0),stringify:id},sd={identify:e=>e===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new nd.Scalar(!1),stringify:id};pc.falseTag=sd;pc.trueTag=rd});var ad=v(Bs=>{"use strict";var _v=Z(),hc=ri(),xv={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:e=>e.slice(-3).toLowerCase()==="nan"?NaN:e[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:hc.stringifyNumber},Pv={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:e=>parseFloat(e.replace(/_/g,"")),stringify(e){let t=Number(e.value);return isFinite(t)?t.toExponential():hc.stringifyNumber(e)}},Ov={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(e){let t=new _v.Scalar(parseFloat(e.replace(/_/g,""))),n=e.indexOf(".");if(n!==-1){let i=e.substring(n+1).replace(/_/g,"");i[i.length-1]==="0"&&(t.minFractionDigits=i.length)}return t},stringify:hc.stringifyNumber};Bs.float=Ov;Bs.floatExp=Pv;Bs.floatNaN=xv});var ld=v(tr=>{"use strict";var cd=ri(),er=e=>typeof e=="bigint"||Number.isInteger(e);function Hs(e,t,n,{intAsBigInt:i}){let r=e[0];if((r==="-"||r==="+")&&(t+=1),e=e.substring(t).replace(/_/g,""),i){switch(n){case 2:e=`0b${e}`;break;case 8:e=`0o${e}`;break;case 16:e=`0x${e}`;break}let o=BigInt(e);return r==="-"?BigInt(-1)*o:o}let s=parseInt(e,n);return r==="-"?-1*s:s}function gc(e,t,n){let{value:i}=e;if(er(i)){let r=i.toString(t);return i<0?"-"+n+r.substr(1):n+r}return cd.stringifyNumber(e)}var $v={identify:er,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(e,t,n)=>Hs(e,2,2,n),stringify:e=>gc(e,2,"0b")},Av={identify:er,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(e,t,n)=>Hs(e,1,8,n),stringify:e=>gc(e,8,"0")},Iv={identify:er,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(e,t,n)=>Hs(e,0,10,n),stringify:cd.stringifyNumber},Nv={identify:er,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(e,t,n)=>Hs(e,2,16,n),stringify:e=>gc(e,16,"0x")};tr.int=Iv;tr.intBin=$v;tr.intHex=Nv;tr.intOct=Av});var yc=v(wc=>{"use strict";var Us=M(),Ks=Ut(),Js=Vt(),Sn=class e extends Js.YAMLMap{constructor(t){super(t),this.tag=e.tag}add(t){let n;Us.isPair(t)?n=t:t&&typeof t=="object"&&"key"in t&&"value"in t&&t.value===null?n=new Ks.Pair(t.key,null):n=new Ks.Pair(t,null),Js.findPair(this.items,n.key)||this.items.push(n)}get(t,n){let i=Js.findPair(this.items,t);return!n&&Us.isPair(i)?Us.isScalar(i.key)?i.key.value:i.key:i}set(t,n){if(typeof n!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof n}`);let i=Js.findPair(this.items,t);i&&!n?this.items.splice(this.items.indexOf(i),1):!i&&n&&this.items.push(new Ks.Pair(t))}toJSON(t,n){return super.toJSON(t,n,Set)}toString(t,n,i){if(!t)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},t,{allNullValues:!0}),n,i);throw new Error("Set items must all have null values")}static from(t,n,i){let{replacer:r}=i,s=new this(t);if(n&&Symbol.iterator in Object(n))for(let o of n)typeof r=="function"&&(o=r.call(n,o,o)),s.items.push(Ks.createPair(o,null,i));return s}};Sn.tag="tag:yaml.org,2002:set";var Tv={collection:"map",identify:e=>e instanceof Set,nodeClass:Sn,default:!1,tag:"tag:yaml.org,2002:set",createNode:(e,t,n)=>Sn.from(e,t,n),resolve(e,t){if(Us.isMap(e)){if(e.hasAllNullValues(!0))return Object.assign(new Sn,e);t("Set items must all have null values")}else t("Expected a mapping for this tag");return e}};wc.YAMLSet=Sn;wc.set=Tv});var bc=v(Gs=>{"use strict";var jv=ri();function vc(e,t){let n=e[0],i=n==="-"||n==="+"?e.substring(1):e,r=o=>t?BigInt(o):Number(o),s=i.replace(/_/g,"").split(":").reduce((o,a)=>o*r(60)+r(a),r(0));return n==="-"?r(-1)*s:s}function ud(e){let{value:t}=e,n=o=>o;if(typeof t=="bigint")n=o=>BigInt(o);else if(isNaN(t)||!isFinite(t))return jv.stringifyNumber(e);let i="";t<0&&(i="-",t*=n(-1));let r=n(60),s=[t%r];return t<60?s.unshift(0):(t=(t-s[0])/r,s.unshift(t%r),t>=60&&(t=(t-s[0])/r,s.unshift(t))),i+s.map(o=>String(o).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}var Lv={identify:e=>typeof e=="bigint"||Number.isInteger(e),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(e,t,{intAsBigInt:n})=>vc(e,n),stringify:ud},Mv={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:e=>vc(e,!1),stringify:ud},fd={identify:e=>e instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(e){let t=e.match(fd.test);if(!t)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,n,i,r,s,o,a]=t.map(Number),c=t[7]?Number((t[7]+"00").substr(1,3)):0,l=Date.UTC(n,i-1,r,s||0,o||0,a||0,c),u=t[8];if(u&&u!=="Z"){let f=vc(u,!1);Math.abs(f)<30&&(f*=60),l-=6e4*f}return new Date(l)},stringify:({value:e})=>e?.toISOString().replace(/(T00:00:00)?\.000Z$/,"")??""};Gs.floatTime=Mv;Gs.intTime=Lv;Gs.timestamp=fd});var pd=v(md=>{"use strict";var qv=ni(),Dv=Ts(),Wv=ii(),Fv=Xi(),Bv=lc(),dd=od(),Cc=ad(),Vs=ld(),Hv=_s(),Kv=mc(),Jv=Fs(),Uv=yc(),kc=bc(),Gv=[qv.map,Wv.seq,Fv.string,Dv.nullTag,dd.trueTag,dd.falseTag,Vs.intBin,Vs.intOct,Vs.int,Vs.intHex,Cc.floatNaN,Cc.floatExp,Cc.float,Bv.binary,Hv.merge,Kv.omap,Jv.pairs,Uv.set,kc.intTime,kc.floatTime,kc.timestamp];md.schema=Gv});var Ed=v(Rc=>{"use strict";var yd=ni(),Vv=Ts(),vd=ii(),Yv=Xi(),zv=tc(),Sc=ic(),Ec=sc(),Xv=Gf(),Qv=zf(),bd=lc(),nr=_s(),Cd=mc(),kd=Fs(),hd=pd(),Sd=yc(),Ys=bc(),gd=new Map([["core",Xv.schema],["failsafe",[yd.map,vd.seq,Yv.string]],["json",Qv.schema],["yaml11",hd.schema],["yaml-1.1",hd.schema]]),wd={binary:bd.binary,bool:zv.boolTag,float:Sc.float,floatExp:Sc.floatExp,floatNaN:Sc.floatNaN,floatTime:Ys.floatTime,int:Ec.int,intHex:Ec.intHex,intOct:Ec.intOct,intTime:Ys.intTime,map:yd.map,merge:nr.merge,null:Vv.nullTag,omap:Cd.omap,pairs:kd.pairs,seq:vd.seq,set:Sd.set,timestamp:Ys.timestamp},Zv={"tag:yaml.org,2002:binary":bd.binary,"tag:yaml.org,2002:merge":nr.merge,"tag:yaml.org,2002:omap":Cd.omap,"tag:yaml.org,2002:pairs":kd.pairs,"tag:yaml.org,2002:set":Sd.set,"tag:yaml.org,2002:timestamp":Ys.timestamp};function eb(e,t,n){let i=gd.get(t);if(i&&!e)return n&&!i.includes(nr.merge)?i.concat(nr.merge):i.slice();let r=i;if(!r)if(Array.isArray(e))r=[];else{let s=Array.from(gd.keys()).filter(o=>o!=="yaml11").map(o=>JSON.stringify(o)).join(", ");throw new Error(`Unknown schema "${t}"; use one of ${s} or define customTags array`)}if(Array.isArray(e))for(let s of e)r=r.concat(s);else typeof e=="function"&&(r=e(r.slice()));return n&&(r=r.concat(nr.merge)),r.reduce((s,o)=>{let a=typeof o=="string"?wd[o]:o;if(!a){let c=JSON.stringify(o),l=Object.keys(wd).map(u=>JSON.stringify(u)).join(", ");throw new Error(`Unknown custom tag ${c}; use one of ${l}`)}return s.includes(a)||s.push(a),s},[])}Rc.coreKnownTags=Zv;Rc.getTags=eb});var Pc=v(Rd=>{"use strict";var _c=M(),tb=ni(),nb=ii(),ib=Xi(),zs=Ed(),rb=(e,t)=>e.keyt.key?1:0,xc=class e{constructor({compat:t,customTags:n,merge:i,resolveKnownTags:r,schema:s,sortMapEntries:o,toStringDefaults:a}){this.compat=Array.isArray(t)?zs.getTags(t,"compat"):t?zs.getTags(null,t):null,this.name=typeof s=="string"&&s||"core",this.knownTags=r?zs.coreKnownTags:{},this.tags=zs.getTags(n,this.name,i),this.toStringOptions=a??null,Object.defineProperty(this,_c.MAP,{value:tb.map}),Object.defineProperty(this,_c.SCALAR,{value:ib.string}),Object.defineProperty(this,_c.SEQ,{value:nb.seq}),this.sortMapEntries=typeof o=="function"?o:o===!0?rb:null}clone(){let t=Object.create(e.prototype,Object.getOwnPropertyDescriptors(this));return t.tags=this.tags.slice(),t}};Rd.Schema=xc});var xd=v(_d=>{"use strict";var sb=M(),Oc=Vi(),ir=Ki();function ob(e,t){let n=[],i=t.directives===!0;if(t.directives!==!1&&e.directives){let c=e.directives.toString(e);c?(n.push(c),i=!0):e.directives.docStart&&(i=!0)}i&&n.push("---");let r=Oc.createStringifyContext(e,t),{commentString:s}=r.options;if(e.commentBefore){n.length!==1&&n.unshift("");let c=s(e.commentBefore);n.unshift(ir.indentComment(c,""))}let o=!1,a=null;if(e.contents){if(sb.isNode(e.contents)){if(e.contents.spaceBefore&&i&&n.push(""),e.contents.commentBefore){let u=s(e.contents.commentBefore);n.push(ir.indentComment(u,""))}r.forceBlockIndent=!!e.comment,a=e.contents.comment}let c=a?void 0:()=>o=!0,l=Oc.stringify(e.contents,r,()=>a=null,c);a&&(l+=ir.lineComment(l,"",s(a))),(l[0]==="|"||l[0]===">")&&n[n.length-1]==="---"?n[n.length-1]=`--- ${l}`:n.push(l)}else n.push(Oc.stringify(e.contents,r));if(e.directives?.docEnd)if(e.comment){let c=s(e.comment);c.includes(` -`)?(n.push("..."),n.push(ir.indentComment(c,""))):n.push(`... ${c}`)}else n.push("...");else{let c=e.comment;c&&o&&(c=c.replace(/^\n+/,"")),c&&((!o||a)&&n[n.length-1]!==""&&n.push(""),n.push(ir.indentComment(s(c),"")))}return n.join(` +${s.comment}`:i.comment}i=r}e.items[n]=Ds.isPair(i)?i:new lc.Pair(i)}}else t("Expected a sequence for this tag");return e}function Zf(e,t,n){let{replacer:i}=n,r=new Ev.YAMLSeq(e);r.tag="tag:yaml.org,2002:pairs";let s=0;if(t&&Symbol.iterator in Object(t))for(let o of t){typeof i=="function"&&(o=i.call(t,String(s++),o));let a,c;if(Array.isArray(o))if(o.length===2)a=o[0],c=o[1];else throw new TypeError(`Expected [key, value] tuple: ${o}`);else if(o&&o instanceof Object){let l=Object.keys(o);if(l.length===1)a=l[0],c=o[a];else throw new TypeError(`Expected tuple with one key, not ${l.length} keys`)}else a=o;r.items.push(lc.createPair(a,c,n))}return r}var Rv={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:Qf,createNode:Zf};Ws.createPairs=Zf;Ws.pairs=Rv;Ws.resolvePairs=Qf});var dc=C(fc=>{"use strict";var ed=M(),uc=Ht(),tr=Yt(),_v=zt(),td=Fs(),kn=class e extends _v.YAMLSeq{constructor(){super(),this.add=tr.YAMLMap.prototype.add.bind(this),this.delete=tr.YAMLMap.prototype.delete.bind(this),this.get=tr.YAMLMap.prototype.get.bind(this),this.has=tr.YAMLMap.prototype.has.bind(this),this.set=tr.YAMLMap.prototype.set.bind(this),this.tag=e.tag}toJSON(t,n){if(!n)return super.toJSON(t);let i=new Map;n?.onCreate&&n.onCreate(i);for(let r of this.items){let s,o;if(ed.isPair(r)?(s=uc.toJS(r.key,"",n),o=uc.toJS(r.value,s,n)):s=uc.toJS(r,"",n),i.has(s))throw new Error("Ordered maps must not include duplicate keys");i.set(s,o)}return i}static from(t,n,i){let r=td.createPairs(t,n,i),s=new this;return s.items=r.items,s}};kn.tag="tag:yaml.org,2002:omap";var xv={collection:"seq",identify:e=>e instanceof Map,nodeClass:kn,default:!1,tag:"tag:yaml.org,2002:omap",resolve(e,t){let n=td.resolvePairs(e,t),i=[];for(let{key:r}of n.items)ed.isScalar(r)&&(i.includes(r.value)?t(`Ordered maps must not include duplicate keys: ${r.value}`):i.push(r.value));return Object.assign(new kn,n)},createNode:(e,t,n)=>kn.from(e,t,n)};fc.YAMLOMap=kn;fc.omap=xv});var od=C(mc=>{"use strict";var nd=Q();function id({value:e,source:t},n){return t&&(e?rd:sd).test.test(t)?t:e?n.options.trueStr:n.options.falseStr}var rd={identify:e=>e===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new nd.Scalar(!0),stringify:id},sd={identify:e=>e===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new nd.Scalar(!1),stringify:id};mc.falseTag=sd;mc.trueTag=rd});var ad=C(Bs=>{"use strict";var Pv=Q(),pc=ri(),Ov={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:e=>e.slice(-3).toLowerCase()==="nan"?NaN:e[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:pc.stringifyNumber},$v={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:e=>parseFloat(e.replace(/_/g,"")),stringify(e){let t=Number(e.value);return isFinite(t)?t.toExponential():pc.stringifyNumber(e)}},Av={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(e){let t=new Pv.Scalar(parseFloat(e.replace(/_/g,""))),n=e.indexOf(".");if(n!==-1){let i=e.substring(n+1).replace(/_/g,"");i[i.length-1]==="0"&&(t.minFractionDigits=i.length)}return t},stringify:pc.stringifyNumber};Bs.float=Av;Bs.floatExp=$v;Bs.floatNaN=Ov});var ld=C(ir=>{"use strict";var cd=ri(),nr=e=>typeof e=="bigint"||Number.isInteger(e);function Hs(e,t,n,{intAsBigInt:i}){let r=e[0];if((r==="-"||r==="+")&&(t+=1),e=e.substring(t).replace(/_/g,""),i){switch(n){case 2:e=`0b${e}`;break;case 8:e=`0o${e}`;break;case 16:e=`0x${e}`;break}let o=BigInt(e);return r==="-"?BigInt(-1)*o:o}let s=parseInt(e,n);return r==="-"?-1*s:s}function hc(e,t,n){let{value:i}=e;if(nr(i)){let r=i.toString(t);return i<0?"-"+n+r.substr(1):n+r}return cd.stringifyNumber(e)}var Iv={identify:nr,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(e,t,n)=>Hs(e,2,2,n),stringify:e=>hc(e,2,"0b")},Nv={identify:nr,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(e,t,n)=>Hs(e,1,8,n),stringify:e=>hc(e,8,"0")},Tv={identify:nr,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(e,t,n)=>Hs(e,0,10,n),stringify:cd.stringifyNumber},jv={identify:nr,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(e,t,n)=>Hs(e,2,16,n),stringify:e=>hc(e,16,"0x")};ir.int=Tv;ir.intBin=Iv;ir.intHex=jv;ir.intOct=Nv});var wc=C(gc=>{"use strict";var Us=M(),Ks=Gt(),Js=Yt(),Sn=class e extends Js.YAMLMap{constructor(t){super(t),this.tag=e.tag}add(t){let n;Us.isPair(t)?n=t:t&&typeof t=="object"&&"key"in t&&"value"in t&&t.value===null?n=new Ks.Pair(t.key,null):n=new Ks.Pair(t,null),Js.findPair(this.items,n.key)||this.items.push(n)}get(t,n){let i=Js.findPair(this.items,t);return!n&&Us.isPair(i)?Us.isScalar(i.key)?i.key.value:i.key:i}set(t,n){if(typeof n!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof n}`);let i=Js.findPair(this.items,t);i&&!n?this.items.splice(this.items.indexOf(i),1):!i&&n&&this.items.push(new Ks.Pair(t))}toJSON(t,n){return super.toJSON(t,n,Set)}toString(t,n,i){if(!t)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},t,{allNullValues:!0}),n,i);throw new Error("Set items must all have null values")}static from(t,n,i){let{replacer:r}=i,s=new this(t);if(n&&Symbol.iterator in Object(n))for(let o of n)typeof r=="function"&&(o=r.call(n,o,o)),s.items.push(Ks.createPair(o,null,i));return s}};Sn.tag="tag:yaml.org,2002:set";var Lv={collection:"map",identify:e=>e instanceof Set,nodeClass:Sn,default:!1,tag:"tag:yaml.org,2002:set",createNode:(e,t,n)=>Sn.from(e,t,n),resolve(e,t){if(Us.isMap(e)){if(e.hasAllNullValues(!0))return Object.assign(new Sn,e);t("Set items must all have null values")}else t("Expected a mapping for this tag");return e}};gc.YAMLSet=Sn;gc.set=Lv});var vc=C(Gs=>{"use strict";var Mv=ri();function yc(e,t){let n=e[0],i=n==="-"||n==="+"?e.substring(1):e,r=o=>t?BigInt(o):Number(o),s=i.replace(/_/g,"").split(":").reduce((o,a)=>o*r(60)+r(a),r(0));return n==="-"?r(-1)*s:s}function ud(e){let{value:t}=e,n=o=>o;if(typeof t=="bigint")n=o=>BigInt(o);else if(isNaN(t)||!isFinite(t))return Mv.stringifyNumber(e);let i="";t<0&&(i="-",t*=n(-1));let r=n(60),s=[t%r];return t<60?s.unshift(0):(t=(t-s[0])/r,s.unshift(t%r),t>=60&&(t=(t-s[0])/r,s.unshift(t))),i+s.map(o=>String(o).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}var qv={identify:e=>typeof e=="bigint"||Number.isInteger(e),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(e,t,{intAsBigInt:n})=>yc(e,n),stringify:ud},Dv={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:e=>yc(e,!1),stringify:ud},fd={identify:e=>e instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(e){let t=e.match(fd.test);if(!t)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,n,i,r,s,o,a]=t.map(Number),c=t[7]?Number((t[7]+"00").substr(1,3)):0,l=Date.UTC(n,i-1,r,s||0,o||0,a||0,c),u=t[8];if(u&&u!=="Z"){let f=yc(u,!1);Math.abs(f)<30&&(f*=60),l-=6e4*f}return new Date(l)},stringify:({value:e})=>e?.toISOString().replace(/(T00:00:00)?\.000Z$/,"")??""};Gs.floatTime=Dv;Gs.intTime=qv;Gs.timestamp=fd});var pd=C(md=>{"use strict";var Wv=ni(),Fv=Ts(),Bv=ii(),Hv=Zi(),Kv=cc(),dd=od(),bc=ad(),Vs=ld(),Jv=_s(),Uv=dc(),Gv=Fs(),Vv=wc(),Cc=vc(),Yv=[Wv.map,Bv.seq,Hv.string,Fv.nullTag,dd.trueTag,dd.falseTag,Vs.intBin,Vs.intOct,Vs.int,Vs.intHex,bc.floatNaN,bc.floatExp,bc.float,Kv.binary,Jv.merge,Uv.omap,Gv.pairs,Vv.set,Cc.intTime,Cc.floatTime,Cc.timestamp];md.schema=Yv});var Ed=C(Ec=>{"use strict";var yd=ni(),zv=Ts(),vd=ii(),Xv=Zi(),Qv=ec(),kc=nc(),Sc=rc(),Zv=Gf(),eb=zf(),bd=cc(),rr=_s(),Cd=dc(),kd=Fs(),hd=pd(),Sd=wc(),Ys=vc(),gd=new Map([["core",Zv.schema],["failsafe",[yd.map,vd.seq,Xv.string]],["json",eb.schema],["yaml11",hd.schema],["yaml-1.1",hd.schema]]),wd={binary:bd.binary,bool:Qv.boolTag,float:kc.float,floatExp:kc.floatExp,floatNaN:kc.floatNaN,floatTime:Ys.floatTime,int:Sc.int,intHex:Sc.intHex,intOct:Sc.intOct,intTime:Ys.intTime,map:yd.map,merge:rr.merge,null:zv.nullTag,omap:Cd.omap,pairs:kd.pairs,seq:vd.seq,set:Sd.set,timestamp:Ys.timestamp},tb={"tag:yaml.org,2002:binary":bd.binary,"tag:yaml.org,2002:merge":rr.merge,"tag:yaml.org,2002:omap":Cd.omap,"tag:yaml.org,2002:pairs":kd.pairs,"tag:yaml.org,2002:set":Sd.set,"tag:yaml.org,2002:timestamp":Ys.timestamp};function nb(e,t,n){let i=gd.get(t);if(i&&!e)return n&&!i.includes(rr.merge)?i.concat(rr.merge):i.slice();let r=i;if(!r)if(Array.isArray(e))r=[];else{let s=Array.from(gd.keys()).filter(o=>o!=="yaml11").map(o=>JSON.stringify(o)).join(", ");throw new Error(`Unknown schema "${t}"; use one of ${s} or define customTags array`)}if(Array.isArray(e))for(let s of e)r=r.concat(s);else typeof e=="function"&&(r=e(r.slice()));return n&&(r=r.concat(rr.merge)),r.reduce((s,o)=>{let a=typeof o=="string"?wd[o]:o;if(!a){let c=JSON.stringify(o),l=Object.keys(wd).map(u=>JSON.stringify(u)).join(", ");throw new Error(`Unknown custom tag ${c}; use one of ${l}`)}return s.includes(a)||s.push(a),s},[])}Ec.coreKnownTags=tb;Ec.getTags=nb});var xc=C(Rd=>{"use strict";var Rc=M(),ib=ni(),rb=ii(),sb=Zi(),zs=Ed(),ob=(e,t)=>e.keyt.key?1:0,_c=class e{constructor({compat:t,customTags:n,merge:i,resolveKnownTags:r,schema:s,sortMapEntries:o,toStringDefaults:a}){this.compat=Array.isArray(t)?zs.getTags(t,"compat"):t?zs.getTags(null,t):null,this.name=typeof s=="string"&&s||"core",this.knownTags=r?zs.coreKnownTags:{},this.tags=zs.getTags(n,this.name,i),this.toStringOptions=a??null,Object.defineProperty(this,Rc.MAP,{value:ib.map}),Object.defineProperty(this,Rc.SCALAR,{value:sb.string}),Object.defineProperty(this,Rc.SEQ,{value:rb.seq}),this.sortMapEntries=typeof o=="function"?o:o===!0?ob:null}clone(){let t=Object.create(e.prototype,Object.getOwnPropertyDescriptors(this));return t.tags=this.tags.slice(),t}};Rd.Schema=_c});var xd=C(_d=>{"use strict";var ab=M(),Pc=zi(),sr=Ui();function cb(e,t){let n=[],i=t.directives===!0;if(t.directives!==!1&&e.directives){let c=e.directives.toString(e);c?(n.push(c),i=!0):e.directives.docStart&&(i=!0)}i&&n.push("---");let r=Pc.createStringifyContext(e,t),{commentString:s}=r.options;if(e.commentBefore){n.length!==1&&n.unshift("");let c=s(e.commentBefore);n.unshift(sr.indentComment(c,""))}let o=!1,a=null;if(e.contents){if(ab.isNode(e.contents)){if(e.contents.spaceBefore&&i&&n.push(""),e.contents.commentBefore){let u=s(e.contents.commentBefore);n.push(sr.indentComment(u,""))}r.forceBlockIndent=!!e.comment,a=e.contents.comment}let c=a?void 0:()=>o=!0,l=Pc.stringify(e.contents,r,()=>a=null,c);a&&(l+=sr.lineComment(l,"",s(a))),(l[0]==="|"||l[0]===">")&&n[n.length-1]==="---"?n[n.length-1]=`--- ${l}`:n.push(l)}else n.push(Pc.stringify(e.contents,r));if(e.directives?.docEnd)if(e.comment){let c=s(e.comment);c.includes(` +`)?(n.push("..."),n.push(sr.indentComment(c,""))):n.push(`... ${c}`)}else n.push("...");else{let c=e.comment;c&&o&&(c=c.replace(/^\n+/,"")),c&&((!o||a)&&n[n.length-1]!==""&&n.push(""),n.push(sr.indentComment(s(c),"")))}return n.join(` `)+` -`}_d.stringifyDocument=ob});var rr=v(Pd=>{"use strict";var ab=Bi(),si=gs(),Be=M(),cb=Ut(),lb=Bt(),ub=Pc(),fb=xd(),$c=ds(),db=Ta(),mb=Hi(),Ac=Na(),Ic=class e{constructor(t,n,i){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,Be.NODE_TYPE,{value:Be.DOC});let r=null;typeof n=="function"||Array.isArray(n)?r=n:i===void 0&&n&&(i=n,n=void 0);let s=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},i);this.options=s;let{version:o}=s;i?._directives?(this.directives=i._directives.atDocument(),this.directives.yaml.explicit&&(o=this.directives.yaml.version)):this.directives=new Ac.Directives({version:o}),this.setSchema(o,i),this.contents=t===void 0?null:this.createNode(t,r,i)}clone(){let t=Object.create(e.prototype,{[Be.NODE_TYPE]:{value:Be.DOC}});return t.commentBefore=this.commentBefore,t.comment=this.comment,t.errors=this.errors.slice(),t.warnings=this.warnings.slice(),t.options=Object.assign({},this.options),this.directives&&(t.directives=this.directives.clone()),t.schema=this.schema.clone(),t.contents=Be.isNode(this.contents)?this.contents.clone(t.schema):this.contents,this.range&&(t.range=this.range.slice()),t}add(t){oi(this.contents)&&this.contents.add(t)}addIn(t,n){oi(this.contents)&&this.contents.addIn(t,n)}createAlias(t,n){if(!t.anchor){let i=$c.anchorNames(this);t.anchor=!n||i.has(n)?$c.findNewAnchor(n||"a",i):n}return new ab.Alias(t.anchor)}createNode(t,n,i){let r;if(typeof n=="function")t=n.call({"":t},"",t),r=n;else if(Array.isArray(n)){let m=w=>typeof w=="number"||w instanceof String||w instanceof Number,y=n.filter(m).map(String);y.length>0&&(n=n.concat(y)),r=n}else i===void 0&&n&&(i=n,n=void 0);let{aliasDuplicateObjects:s,anchorPrefix:o,flow:a,keepUndefined:c,onTagObj:l,tag:u}=i??{},{onAnchor:f,setAnchors:d,sourceObjects:p}=$c.createNodeAnchors(this,o||"a"),g={aliasDuplicateObjects:s??!0,keepUndefined:c??!1,onAnchor:f,onTagObj:l,replacer:r,schema:this.schema,sourceObjects:p},h=mb.createNode(t,u,g);return a&&Be.isCollection(h)&&(h.flow=!0),d(),h}createPair(t,n,i={}){let r=this.createNode(t,null,i),s=this.createNode(n,null,i);return new cb.Pair(r,s)}delete(t){return oi(this.contents)?this.contents.delete(t):!1}deleteIn(t){return si.isEmptyPath(t)?this.contents==null?!1:(this.contents=null,!0):oi(this.contents)?this.contents.deleteIn(t):!1}get(t,n){return Be.isCollection(this.contents)?this.contents.get(t,n):void 0}getIn(t,n){return si.isEmptyPath(t)?!n&&Be.isScalar(this.contents)?this.contents.value:this.contents:Be.isCollection(this.contents)?this.contents.getIn(t,n):void 0}has(t){return Be.isCollection(this.contents)?this.contents.has(t):!1}hasIn(t){return si.isEmptyPath(t)?this.contents!==void 0:Be.isCollection(this.contents)?this.contents.hasIn(t):!1}set(t,n){this.contents==null?this.contents=si.collectionFromPath(this.schema,[t],n):oi(this.contents)&&this.contents.set(t,n)}setIn(t,n){si.isEmptyPath(t)?this.contents=n:this.contents==null?this.contents=si.collectionFromPath(this.schema,Array.from(t),n):oi(this.contents)&&this.contents.setIn(t,n)}setSchema(t,n={}){typeof t=="number"&&(t=String(t));let i;switch(t){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new Ac.Directives({version:"1.1"}),i={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=t:this.directives=new Ac.Directives({version:t}),i={resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,i=null;break;default:{let r=JSON.stringify(t);throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${r}`)}}if(n.schema instanceof Object)this.schema=n.schema;else if(i)this.schema=new ub.Schema(Object.assign(i,n));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:t,jsonArg:n,mapAsMap:i,maxAliasCount:r,onAnchor:s,reviver:o}={}){let a={anchors:new Map,doc:this,keep:!t,mapAsMap:i===!0,mapKeyWarned:!1,maxAliasCount:typeof r=="number"?r:100},c=lb.toJS(this.contents,n??"",a);if(typeof s=="function")for(let{count:l,res:u}of a.anchors.values())s(u,l);return typeof o=="function"?db.applyReviver(o,{"":c},"",c):c}toJSON(t,n){return this.toJS({json:!0,jsonArg:t,mapAsMap:!1,onAnchor:n})}toString(t={}){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");if("indent"in t&&(!Number.isInteger(t.indent)||Number(t.indent)<=0)){let n=JSON.stringify(t.indent);throw new Error(`"indent" option must be a positive integer, not ${n}`)}return fb.stringifyDocument(this,t)}};function oi(e){if(Be.isCollection(e))return!0;throw new Error("Expected a YAML collection as document contents")}Pd.Document=Ic});var ar=v(or=>{"use strict";var sr=class extends Error{constructor(t,n,i,r){super(),this.name=t,this.code=i,this.message=r,this.pos=n}},Nc=class extends sr{constructor(t,n,i){super("YAMLParseError",t,n,i)}},Tc=class extends sr{constructor(t,n,i){super("YAMLWarning",t,n,i)}},pb=(e,t)=>n=>{if(n.pos[0]===-1)return;n.linePos=n.pos.map(a=>t.linePos(a));let{line:i,col:r}=n.linePos[0];n.message+=` at line ${i}, column ${r}`;let s=r-1,o=e.substring(t.lineStarts[i-1],t.lineStarts[i]).replace(/[\n\r]+$/,"");if(s>=60&&o.length>80){let a=Math.min(s-39,o.length-79);o="…"+o.substring(a),s-=a-1}if(o.length>80&&(o=o.substring(0,79)+"…"),i>1&&/^ *$/.test(o.substring(0,s))){let a=e.substring(t.lineStarts[i-2],t.lineStarts[i-1]);a.length>80&&(a=a.substring(0,79)+`… +`}_d.stringifyDocument=cb});var or=C(Pd=>{"use strict";var lb=Ki(),si=gs(),Be=M(),ub=Gt(),fb=Ht(),db=xc(),mb=xd(),Oc=ds(),pb=Na(),hb=Ji(),$c=Ia(),Ac=class e{constructor(t,n,i){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,Be.NODE_TYPE,{value:Be.DOC});let r=null;typeof n=="function"||Array.isArray(n)?r=n:i===void 0&&n&&(i=n,n=void 0);let s=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},i);this.options=s;let{version:o}=s;i?._directives?(this.directives=i._directives.atDocument(),this.directives.yaml.explicit&&(o=this.directives.yaml.version)):this.directives=new $c.Directives({version:o}),this.setSchema(o,i),this.contents=t===void 0?null:this.createNode(t,r,i)}clone(){let t=Object.create(e.prototype,{[Be.NODE_TYPE]:{value:Be.DOC}});return t.commentBefore=this.commentBefore,t.comment=this.comment,t.errors=this.errors.slice(),t.warnings=this.warnings.slice(),t.options=Object.assign({},this.options),this.directives&&(t.directives=this.directives.clone()),t.schema=this.schema.clone(),t.contents=Be.isNode(this.contents)?this.contents.clone(t.schema):this.contents,this.range&&(t.range=this.range.slice()),t}add(t){oi(this.contents)&&this.contents.add(t)}addIn(t,n){oi(this.contents)&&this.contents.addIn(t,n)}createAlias(t,n){if(!t.anchor){let i=Oc.anchorNames(this);t.anchor=!n||i.has(n)?Oc.findNewAnchor(n||"a",i):n}return new lb.Alias(t.anchor)}createNode(t,n,i){let r;if(typeof n=="function")t=n.call({"":t},"",t),r=n;else if(Array.isArray(n)){let m=y=>typeof y=="number"||y instanceof String||y instanceof Number,w=n.filter(m).map(String);w.length>0&&(n=n.concat(w)),r=n}else i===void 0&&n&&(i=n,n=void 0);let{aliasDuplicateObjects:s,anchorPrefix:o,flow:a,keepUndefined:c,onTagObj:l,tag:u}=i??{},{onAnchor:f,setAnchors:d,sourceObjects:p}=Oc.createNodeAnchors(this,o||"a"),g={aliasDuplicateObjects:s??!0,keepUndefined:c??!1,onAnchor:f,onTagObj:l,replacer:r,schema:this.schema,sourceObjects:p},h=hb.createNode(t,u,g);return a&&Be.isCollection(h)&&(h.flow=!0),d(),h}createPair(t,n,i={}){let r=this.createNode(t,null,i),s=this.createNode(n,null,i);return new ub.Pair(r,s)}delete(t){return oi(this.contents)?this.contents.delete(t):!1}deleteIn(t){return si.isEmptyPath(t)?this.contents==null?!1:(this.contents=null,!0):oi(this.contents)?this.contents.deleteIn(t):!1}get(t,n){return Be.isCollection(this.contents)?this.contents.get(t,n):void 0}getIn(t,n){return si.isEmptyPath(t)?!n&&Be.isScalar(this.contents)?this.contents.value:this.contents:Be.isCollection(this.contents)?this.contents.getIn(t,n):void 0}has(t){return Be.isCollection(this.contents)?this.contents.has(t):!1}hasIn(t){return si.isEmptyPath(t)?this.contents!==void 0:Be.isCollection(this.contents)?this.contents.hasIn(t):!1}set(t,n){this.contents==null?this.contents=si.collectionFromPath(this.schema,[t],n):oi(this.contents)&&this.contents.set(t,n)}setIn(t,n){si.isEmptyPath(t)?this.contents=n:this.contents==null?this.contents=si.collectionFromPath(this.schema,Array.from(t),n):oi(this.contents)&&this.contents.setIn(t,n)}setSchema(t,n={}){typeof t=="number"&&(t=String(t));let i;switch(t){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new $c.Directives({version:"1.1"}),i={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=t:this.directives=new $c.Directives({version:t}),i={resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,i=null;break;default:{let r=JSON.stringify(t);throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${r}`)}}if(n.schema instanceof Object)this.schema=n.schema;else if(i)this.schema=new db.Schema(Object.assign(i,n));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:t,jsonArg:n,mapAsMap:i,maxAliasCount:r,onAnchor:s,reviver:o}={}){let a={anchors:new Map,doc:this,keep:!t,mapAsMap:i===!0,mapKeyWarned:!1,maxAliasCount:typeof r=="number"?r:100},c=fb.toJS(this.contents,n??"",a);if(typeof s=="function")for(let{count:l,res:u}of a.anchors.values())s(u,l);return typeof o=="function"?pb.applyReviver(o,{"":c},"",c):c}toJSON(t,n){return this.toJS({json:!0,jsonArg:t,mapAsMap:!1,onAnchor:n})}toString(t={}){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");if("indent"in t&&(!Number.isInteger(t.indent)||Number(t.indent)<=0)){let n=JSON.stringify(t.indent);throw new Error(`"indent" option must be a positive integer, not ${n}`)}return mb.stringifyDocument(this,t)}};function oi(e){if(Be.isCollection(e))return!0;throw new Error("Expected a YAML collection as document contents")}Pd.Document=Ac});var lr=C(cr=>{"use strict";var ar=class extends Error{constructor(t,n,i,r){super(),this.name=t,this.code=i,this.message=r,this.pos=n}},Ic=class extends ar{constructor(t,n,i){super("YAMLParseError",t,n,i)}},Nc=class extends ar{constructor(t,n,i){super("YAMLWarning",t,n,i)}},gb=(e,t)=>n=>{if(n.pos[0]===-1)return;n.linePos=n.pos.map(a=>t.linePos(a));let{line:i,col:r}=n.linePos[0];n.message+=` at line ${i}, column ${r}`;let s=r-1,o=e.substring(t.lineStarts[i-1],t.lineStarts[i]).replace(/[\n\r]+$/,"");if(s>=60&&o.length>80){let a=Math.min(s-39,o.length-79);o="…"+o.substring(a),s-=a-1}if(o.length>80&&(o=o.substring(0,79)+"…"),i>1&&/^ *$/.test(o.substring(0,s))){let a=e.substring(t.lineStarts[i-2],t.lineStarts[i-1]);a.length>80&&(a=a.substring(0,79)+`… `),o=a+o}if(/[^ ]/.test(o)){let a=1,c=n.linePos[1];c?.line===i&&c.col>r&&(a=Math.max(1,Math.min(c.col-r,80-s)));let l=" ".repeat(s)+"^".repeat(a);n.message+=`: ${o} ${l} -`}};or.YAMLError=sr;or.YAMLParseError=Nc;or.YAMLWarning=Tc;or.prettifyError=pb});var cr=v(Od=>{"use strict";function hb(e,{flow:t,indicator:n,next:i,offset:r,onError:s,parentIndent:o,startOnNewline:a}){let c=!1,l=a,u=a,f="",d="",p=!1,g=!1,h=null,m=null,y=null,w=null,C=null,k=null,E=null;for(let b of e)switch(g&&(b.type!=="space"&&b.type!=="newline"&&b.type!=="comma"&&s(b.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),g=!1),h&&(l&&b.type!=="comment"&&b.type!=="newline"&&s(h,"TAB_AS_INDENT","Tabs are not allowed as indentation"),h=null),b.type){case"space":!t&&(n!=="doc-start"||i?.type!=="flow-collection")&&b.source.includes(" ")&&(h=b),u=!0;break;case"comment":{u||s(b,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let L=b.source.substring(1)||" ";f?f+=d+L:f=L,d="",l=!1;break}case"newline":l?f?f+=b.source:(!k||n!=="seq-item-ind")&&(c=!0):d+=b.source,l=!0,p=!0,(m||y)&&(w=b),u=!0;break;case"anchor":m&&s(b,"MULTIPLE_ANCHORS","A node can have at most one anchor"),b.source.endsWith(":")&&s(b.offset+b.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0),m=b,E??(E=b.offset),l=!1,u=!1,g=!0;break;case"tag":{y&&s(b,"MULTIPLE_TAGS","A node can have at most one tag"),y=b,E??(E=b.offset),l=!1,u=!1,g=!0;break}case n:(m||y)&&s(b,"BAD_PROP_ORDER",`Anchors and tags must be after the ${b.source} indicator`),k&&s(b,"UNEXPECTED_TOKEN",`Unexpected ${b.source} in ${t??"collection"}`),k=b,l=n==="seq-item-ind"||n==="explicit-key-ind",u=!1;break;case"comma":if(t){C&&s(b,"UNEXPECTED_TOKEN",`Unexpected , in ${t}`),C=b,l=!1,u=!1;break}default:s(b,"UNEXPECTED_TOKEN",`Unexpected ${b.type} token`),l=!1,u=!1}let R=e[e.length-1],O=R?R.offset+R.source.length:r;return g&&i&&i.type!=="space"&&i.type!=="newline"&&i.type!=="comma"&&(i.type!=="scalar"||i.source!=="")&&s(i.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),h&&(l&&h.indent<=o||i?.type==="block-map"||i?.type==="block-seq")&&s(h,"TAB_AS_INDENT","Tabs are not allowed as indentation"),{comma:C,found:k,spaceBefore:c,comment:f,hasNewline:p,anchor:m,tag:y,newlineAfterProp:w,end:O,start:E??O}}Od.resolveProps=hb});var Xs=v($d=>{"use strict";function jc(e){if(!e)return null;switch(e.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if(e.source.includes(` -`))return!0;if(e.end){for(let t of e.end)if(t.type==="newline")return!0}return!1;case"flow-collection":for(let t of e.items){for(let n of t.start)if(n.type==="newline")return!0;if(t.sep){for(let n of t.sep)if(n.type==="newline")return!0}if(jc(t.key)||jc(t.value))return!0}return!1;default:return!0}}$d.containsNewline=jc});var Lc=v(Ad=>{"use strict";var gb=Xs();function wb(e,t,n){if(t?.type==="flow-collection"){let i=t.end[0];i.indent===e&&(i.source==="]"||i.source==="}")&&gb.containsNewline(t)&&n(i,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}Ad.flowIndentCheck=wb});var Mc=v(Nd=>{"use strict";var Id=M();function yb(e,t,n){let{uniqueKeys:i}=e.options;if(i===!1)return!1;let r=typeof i=="function"?i:(s,o)=>s===o||Id.isScalar(s)&&Id.isScalar(o)&&s.value===o.value;return t.some(s=>r(s.key,n))}Nd.mapIncludes=yb});var Dd=v(qd=>{"use strict";var Td=Ut(),vb=Vt(),jd=cr(),bb=Xs(),Ld=Lc(),Cb=Mc(),Md="All mapping items must start at the same column";function kb({composeNode:e,composeEmptyNode:t},n,i,r,s){let o=s?.nodeClass??vb.YAMLMap,a=new o(n.schema);n.atRoot&&(n.atRoot=!1);let c=i.offset,l=null;for(let u of i.items){let{start:f,key:d,sep:p,value:g}=u,h=jd.resolveProps(f,{indicator:"explicit-key-ind",next:d??p?.[0],offset:c,onError:r,parentIndent:i.indent,startOnNewline:!0}),m=!h.found;if(m){if(d&&(d.type==="block-seq"?r(c,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key"):"indent"in d&&d.indent!==i.indent&&r(c,"BAD_INDENT",Md)),!h.anchor&&!h.tag&&!p){l=h.end,h.comment&&(a.comment?a.comment+=` -`+h.comment:a.comment=h.comment);continue}(h.newlineAfterProp||bb.containsNewline(d))&&r(d??f[f.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else h.found?.indent!==i.indent&&r(c,"BAD_INDENT",Md);n.atKey=!0;let y=h.end,w=d?e(n,d,h,r):t(n,y,f,null,h,r);n.schema.compat&&Ld.flowIndentCheck(i.indent,d,r),n.atKey=!1,Cb.mapIncludes(n,a.items,w)&&r(y,"DUPLICATE_KEY","Map keys must be unique");let C=jd.resolveProps(p??[],{indicator:"map-value-ind",next:g,offset:w.range[2],onError:r,parentIndent:i.indent,startOnNewline:!d||d.type==="block-scalar"});if(c=C.end,C.found){m&&(g?.type==="block-map"&&!C.hasNewline&&r(c,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),n.options.strict&&h.start{"use strict";var Sb=Yt(),Eb=cr(),Rb=Lc();function _b({composeNode:e,composeEmptyNode:t},n,i,r,s){let o=s?.nodeClass??Sb.YAMLSeq,a=new o(n.schema);n.atRoot&&(n.atRoot=!1),n.atKey&&(n.atKey=!1);let c=i.offset,l=null;for(let{start:u,value:f}of i.items){let d=Eb.resolveProps(u,{indicator:"seq-item-ind",next:f,offset:c,onError:r,parentIndent:i.indent,startOnNewline:!0});if(!d.found)if(d.anchor||d.tag||f)f?.type==="block-seq"?r(d.end,"BAD_INDENT","All sequence items must start at the same column"):r(c,"MISSING_CHAR","Sequence item without - indicator");else{l=d.end,d.comment&&(a.comment=d.comment);continue}let p=f?e(n,f,d,r):t(n,d.end,u,null,d,r);n.schema.compat&&Rb.flowIndentCheck(i.indent,f,r),c=p.range[2],a.items.push(p)}return a.range=[i.offset,c,l??c],a}Wd.resolveBlockSeq=_b});var ai=v(Bd=>{"use strict";function xb(e,t,n,i){let r="";if(e){let s=!1,o="";for(let a of e){let{source:c,type:l}=a;switch(l){case"space":s=!0;break;case"comment":{n&&!s&&i(a,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let u=c.substring(1)||" ";r?r+=o+u:r=u,o="";break}case"newline":r&&(o+=c),s=!0;break;default:i(a,"UNEXPECTED_TOKEN",`Unexpected ${l} at node end`)}t+=c.length}}return{comment:r,offset:t}}Bd.resolveEnd=xb});var Ud=v(Jd=>{"use strict";var Pb=M(),Ob=Ut(),Hd=Vt(),$b=Yt(),Ab=ai(),Kd=cr(),Ib=Xs(),Nb=Mc(),qc="Block collections are not allowed within flow collections",Dc=e=>e&&(e.type==="block-map"||e.type==="block-seq");function Tb({composeNode:e,composeEmptyNode:t},n,i,r,s){let o=i.start.source==="{",a=o?"flow map":"flow sequence",c=s?.nodeClass??(o?Hd.YAMLMap:$b.YAMLSeq),l=new c(n.schema);l.flow=!0;let u=n.atRoot;u&&(n.atRoot=!1),n.atKey&&(n.atKey=!1);let f=i.offset+i.start.source.length;for(let m=0;m0){let m=Ab.resolveEnd(g,h,n.options.strict,r);m.comment&&(l.comment?l.comment+=` -`+m.comment:l.comment=m.comment),l.range=[i.offset,h,m.offset]}else l.range=[i.offset,h,h];return l}Jd.resolveFlowCollection=Tb});var Vd=v(Gd=>{"use strict";var jb=M(),Lb=Z(),Mb=Vt(),qb=Yt(),Db=Dd(),Wb=Fd(),Fb=Ud();function Wc(e,t,n,i,r,s){let o=n.type==="block-map"?Db.resolveBlockMap(e,t,n,i,s):n.type==="block-seq"?Wb.resolveBlockSeq(e,t,n,i,s):Fb.resolveFlowCollection(e,t,n,i,s),a=o.constructor;return r==="!"||r===a.tagName?(o.tag=a.tagName,o):(r&&(o.tag=r),o)}function Bb(e,t,n,i,r){let s=i.tag,o=s?t.directives.tagName(s.source,d=>r(s,"TAG_RESOLVE_FAILED",d)):null;if(n.type==="block-seq"){let{anchor:d,newlineAfterProp:p}=i,g=d&&s?d.offset>s.offset?d:s:d??s;g&&(!p||p.offsetd.tag===o&&d.collection===a);if(!c){let d=t.schema.knownTags[o];if(d?.collection===a)t.schema.tags.push(Object.assign({},d,{default:!1})),c=d;else return d?r(s,"BAD_COLLECTION_TYPE",`${d.tag} used for ${a} collection, but expects ${d.collection??"scalar"}`,!0):r(s,"TAG_RESOLVE_FAILED",`Unresolved tag: ${o}`,!0),Wc(e,t,n,r,o)}let l=Wc(e,t,n,r,o,c),u=c.resolve?.(l,d=>r(s,"TAG_RESOLVE_FAILED",d),t.options)??l,f=jb.isNode(u)?u:new Lb.Scalar(u);return f.range=l.range,f.tag=o,c?.format&&(f.format=c.format),f}Gd.composeCollection=Bb});var Bc=v(Yd=>{"use strict";var Fc=Z();function Hb(e,t,n){let i=t.offset,r=Kb(t,e.options.strict,n);if(!r)return{value:"",type:null,comment:"",range:[i,i,i]};let s=r.mode===">"?Fc.Scalar.BLOCK_FOLDED:Fc.Scalar.BLOCK_LITERAL,o=t.source?Jb(t.source):[],a=o.length;for(let h=o.length-1;h>=0;--h){let m=o[h][1];if(m===""||m==="\r")a=h;else break}if(a===0){let h=r.chomp==="+"&&o.length>0?` -`.repeat(Math.max(1,o.length-1)):"",m=i+r.length;return t.source&&(m+=t.source.length),{value:h,type:s,comment:r.comment,range:[i,m,m]}}let c=t.indent+r.indent,l=t.offset+r.length,u=0;for(let h=0;hc&&(c=m.length);else{m.length=a;--h)o[h][0].length>c&&(a=h+1);let f="",d="",p=!1;for(let h=0;hc||y[0]===" "?(d===" "?d=` +`}};cr.YAMLError=ar;cr.YAMLParseError=Ic;cr.YAMLWarning=Nc;cr.prettifyError=gb});var ur=C(Od=>{"use strict";function wb(e,{flow:t,indicator:n,next:i,offset:r,onError:s,parentIndent:o,startOnNewline:a}){let c=!1,l=a,u=a,f="",d="",p=!1,g=!1,h=null,m=null,w=null,y=null,b=null,k=null,E=null;for(let v of e)switch(g&&(v.type!=="space"&&v.type!=="newline"&&v.type!=="comma"&&s(v.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),g=!1),h&&(l&&v.type!=="comment"&&v.type!=="newline"&&s(h,"TAB_AS_INDENT","Tabs are not allowed as indentation"),h=null),v.type){case"space":!t&&(n!=="doc-start"||i?.type!=="flow-collection")&&v.source.includes(" ")&&(h=v),u=!0;break;case"comment":{u||s(v,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let j=v.source.substring(1)||" ";f?f+=d+j:f=j,d="",l=!1;break}case"newline":l?f?f+=v.source:(!k||n!=="seq-item-ind")&&(c=!0):d+=v.source,l=!0,p=!0,(m||w)&&(y=v),u=!0;break;case"anchor":m&&s(v,"MULTIPLE_ANCHORS","A node can have at most one anchor"),v.source.endsWith(":")&&s(v.offset+v.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0),m=v,E??(E=v.offset),l=!1,u=!1,g=!0;break;case"tag":{w&&s(v,"MULTIPLE_TAGS","A node can have at most one tag"),w=v,E??(E=v.offset),l=!1,u=!1,g=!0;break}case n:(m||w)&&s(v,"BAD_PROP_ORDER",`Anchors and tags must be after the ${v.source} indicator`),k&&s(v,"UNEXPECTED_TOKEN",`Unexpected ${v.source} in ${t??"collection"}`),k=v,l=n==="seq-item-ind"||n==="explicit-key-ind",u=!1;break;case"comma":if(t){b&&s(v,"UNEXPECTED_TOKEN",`Unexpected , in ${t}`),b=v,l=!1,u=!1;break}default:s(v,"UNEXPECTED_TOKEN",`Unexpected ${v.type} token`),l=!1,u=!1}let R=e[e.length-1],T=R?R.offset+R.source.length:r;return g&&i&&i.type!=="space"&&i.type!=="newline"&&i.type!=="comma"&&(i.type!=="scalar"||i.source!=="")&&s(i.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),h&&(l&&h.indent<=o||i?.type==="block-map"||i?.type==="block-seq")&&s(h,"TAB_AS_INDENT","Tabs are not allowed as indentation"),{comma:b,found:k,spaceBefore:c,comment:f,hasNewline:p,anchor:m,tag:w,newlineAfterProp:y,end:T,start:E??T}}Od.resolveProps=wb});var Xs=C($d=>{"use strict";function Tc(e){if(!e)return null;switch(e.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if(e.source.includes(` +`))return!0;if(e.end){for(let t of e.end)if(t.type==="newline")return!0}return!1;case"flow-collection":for(let t of e.items){for(let n of t.start)if(n.type==="newline")return!0;if(t.sep){for(let n of t.sep)if(n.type==="newline")return!0}if(Tc(t.key)||Tc(t.value))return!0}return!1;default:return!0}}$d.containsNewline=Tc});var jc=C(Ad=>{"use strict";var yb=Xs();function vb(e,t,n){if(t?.type==="flow-collection"){let i=t.end[0];i.indent===e&&(i.source==="]"||i.source==="}")&&yb.containsNewline(t)&&n(i,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}Ad.flowIndentCheck=vb});var Lc=C(Nd=>{"use strict";var Id=M();function bb(e,t,n){let{uniqueKeys:i}=e.options;if(i===!1)return!1;let r=typeof i=="function"?i:(s,o)=>s===o||Id.isScalar(s)&&Id.isScalar(o)&&s.value===o.value;return t.some(s=>r(s.key,n))}Nd.mapIncludes=bb});var Dd=C(qd=>{"use strict";var Td=Gt(),Cb=Yt(),jd=ur(),kb=Xs(),Ld=jc(),Sb=Lc(),Md="All mapping items must start at the same column";function Eb({composeNode:e,composeEmptyNode:t},n,i,r,s){let o=s?.nodeClass??Cb.YAMLMap,a=new o(n.schema);n.atRoot&&(n.atRoot=!1);let c=i.offset,l=null;for(let u of i.items){let{start:f,key:d,sep:p,value:g}=u,h=jd.resolveProps(f,{indicator:"explicit-key-ind",next:d??p?.[0],offset:c,onError:r,parentIndent:i.indent,startOnNewline:!0}),m=!h.found;if(m){if(d&&(d.type==="block-seq"?r(c,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key"):"indent"in d&&d.indent!==i.indent&&r(c,"BAD_INDENT",Md)),!h.anchor&&!h.tag&&!p){l=h.end,h.comment&&(a.comment?a.comment+=` +`+h.comment:a.comment=h.comment);continue}(h.newlineAfterProp||kb.containsNewline(d))&&r(d??f[f.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else h.found?.indent!==i.indent&&r(c,"BAD_INDENT",Md);n.atKey=!0;let w=h.end,y=d?e(n,d,h,r):t(n,w,f,null,h,r);n.schema.compat&&Ld.flowIndentCheck(i.indent,d,r),n.atKey=!1,Sb.mapIncludes(n,a.items,y)&&r(w,"DUPLICATE_KEY","Map keys must be unique");let b=jd.resolveProps(p??[],{indicator:"map-value-ind",next:g,offset:y.range[2],onError:r,parentIndent:i.indent,startOnNewline:!d||d.type==="block-scalar"});if(c=b.end,b.found){m&&(g?.type==="block-map"&&!b.hasNewline&&r(c,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),n.options.strict&&h.start{"use strict";var Rb=zt(),_b=ur(),xb=jc();function Pb({composeNode:e,composeEmptyNode:t},n,i,r,s){let o=s?.nodeClass??Rb.YAMLSeq,a=new o(n.schema);n.atRoot&&(n.atRoot=!1),n.atKey&&(n.atKey=!1);let c=i.offset,l=null;for(let{start:u,value:f}of i.items){let d=_b.resolveProps(u,{indicator:"seq-item-ind",next:f,offset:c,onError:r,parentIndent:i.indent,startOnNewline:!0});if(!d.found)if(d.anchor||d.tag||f)f?.type==="block-seq"?r(d.end,"BAD_INDENT","All sequence items must start at the same column"):r(c,"MISSING_CHAR","Sequence item without - indicator");else{l=d.end,d.comment&&(a.comment=d.comment);continue}let p=f?e(n,f,d,r):t(n,d.end,u,null,d,r);n.schema.compat&&xb.flowIndentCheck(i.indent,f,r),c=p.range[2],a.items.push(p)}return a.range=[i.offset,c,l??c],a}Wd.resolveBlockSeq=Pb});var ai=C(Bd=>{"use strict";function Ob(e,t,n,i){let r="";if(e){let s=!1,o="";for(let a of e){let{source:c,type:l}=a;switch(l){case"space":s=!0;break;case"comment":{n&&!s&&i(a,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let u=c.substring(1)||" ";r?r+=o+u:r=u,o="";break}case"newline":r&&(o+=c),s=!0;break;default:i(a,"UNEXPECTED_TOKEN",`Unexpected ${l} at node end`)}t+=c.length}}return{comment:r,offset:t}}Bd.resolveEnd=Ob});var Ud=C(Jd=>{"use strict";var $b=M(),Ab=Gt(),Hd=Yt(),Ib=zt(),Nb=ai(),Kd=ur(),Tb=Xs(),jb=Lc(),Mc="Block collections are not allowed within flow collections",qc=e=>e&&(e.type==="block-map"||e.type==="block-seq");function Lb({composeNode:e,composeEmptyNode:t},n,i,r,s){let o=i.start.source==="{",a=o?"flow map":"flow sequence",c=s?.nodeClass??(o?Hd.YAMLMap:Ib.YAMLSeq),l=new c(n.schema);l.flow=!0;let u=n.atRoot;u&&(n.atRoot=!1),n.atKey&&(n.atKey=!1);let f=i.offset+i.start.source.length;for(let m=0;m0){let m=Nb.resolveEnd(g,h,n.options.strict,r);m.comment&&(l.comment?l.comment+=` +`+m.comment:l.comment=m.comment),l.range=[i.offset,h,m.offset]}else l.range=[i.offset,h,h];return l}Jd.resolveFlowCollection=Lb});var Vd=C(Gd=>{"use strict";var Mb=M(),qb=Q(),Db=Yt(),Wb=zt(),Fb=Dd(),Bb=Fd(),Hb=Ud();function Dc(e,t,n,i,r,s){let o=n.type==="block-map"?Fb.resolveBlockMap(e,t,n,i,s):n.type==="block-seq"?Bb.resolveBlockSeq(e,t,n,i,s):Hb.resolveFlowCollection(e,t,n,i,s),a=o.constructor;return r==="!"||r===a.tagName?(o.tag=a.tagName,o):(r&&(o.tag=r),o)}function Kb(e,t,n,i,r){let s=i.tag,o=s?t.directives.tagName(s.source,d=>r(s,"TAG_RESOLVE_FAILED",d)):null;if(n.type==="block-seq"){let{anchor:d,newlineAfterProp:p}=i,g=d&&s?d.offset>s.offset?d:s:d??s;g&&(!p||p.offsetd.tag===o&&d.collection===a);if(!c){let d=t.schema.knownTags[o];if(d?.collection===a)t.schema.tags.push(Object.assign({},d,{default:!1})),c=d;else return d?r(s,"BAD_COLLECTION_TYPE",`${d.tag} used for ${a} collection, but expects ${d.collection??"scalar"}`,!0):r(s,"TAG_RESOLVE_FAILED",`Unresolved tag: ${o}`,!0),Dc(e,t,n,r,o)}let l=Dc(e,t,n,r,o,c),u=c.resolve?.(l,d=>r(s,"TAG_RESOLVE_FAILED",d),t.options)??l,f=Mb.isNode(u)?u:new qb.Scalar(u);return f.range=l.range,f.tag=o,c?.format&&(f.format=c.format),f}Gd.composeCollection=Kb});var Fc=C(Yd=>{"use strict";var Wc=Q();function Jb(e,t,n){let i=t.offset,r=Ub(t,e.options.strict,n);if(!r)return{value:"",type:null,comment:"",range:[i,i,i]};let s=r.mode===">"?Wc.Scalar.BLOCK_FOLDED:Wc.Scalar.BLOCK_LITERAL,o=t.source?Gb(t.source):[],a=o.length;for(let h=o.length-1;h>=0;--h){let m=o[h][1];if(m===""||m==="\r")a=h;else break}if(a===0){let h=r.chomp==="+"&&o.length>0?` +`.repeat(Math.max(1,o.length-1)):"",m=i+r.length;return t.source&&(m+=t.source.length),{value:h,type:s,comment:r.comment,range:[i,m,m]}}let c=t.indent+r.indent,l=t.offset+r.length,u=0;for(let h=0;hc&&(c=m.length);else{m.length=a;--h)o[h][0].length>c&&(a=h+1);let f="",d="",p=!1;for(let h=0;hc||w[0]===" "?(d===" "?d=` `:!p&&d===` `&&(d=` -`),f+=d+m.slice(c)+y,d=` -`,p=!0):y===""?d===` +`),f+=d+m.slice(c)+w,d=` +`,p=!0):w===""?d===` `?f+=` `:d=` -`:(f+=d+y,d=" ",p=!1)}switch(r.chomp){case"-":break;case"+":for(let h=a;h{"use strict";var Hc=Z(),Ub=ai();function Gb(e,t,n){let{offset:i,type:r,source:s,end:o}=e,a,c,l=(d,p,g)=>n(i+d,p,g);switch(r){case"scalar":a=Hc.Scalar.PLAIN,c=Vb(s,l);break;case"single-quoted-scalar":a=Hc.Scalar.QUOTE_SINGLE,c=Yb(s,l);break;case"double-quoted-scalar":a=Hc.Scalar.QUOTE_DOUBLE,c=zb(s,l);break;default:return n(e,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${r}`),{value:"",type:null,comment:"",range:[i,i+s.length,i+s.length]}}let u=i+s.length,f=Ub.resolveEnd(o,u,t,n);return{value:c,type:a,comment:f.comment,range:[i,u,f.offset]}}function Vb(e,t){let n="";switch(e[0]){case" ":n="a tab character";break;case",":n="flow indicator character ,";break;case"%":n="directive indicator character %";break;case"|":case">":{n=`block scalar indicator ${e[0]}`;break}case"@":case"`":{n=`reserved character ${e[0]}`;break}}return n&&t(0,"BAD_SCALAR_START",`Plain value cannot start with ${n}`),zd(e)}function Yb(e,t){return(e[e.length-1]!=="'"||e.length===1)&&t(e.length,"MISSING_CHAR","Missing closing 'quote"),zd(e.slice(1,-1)).replace(/''/g,"'")}function zd(e){let t,n;try{t=new RegExp(`(.*?)(?{"use strict";var Bc=Q(),Vb=ai();function Yb(e,t,n){let{offset:i,type:r,source:s,end:o}=e,a,c,l=(d,p,g)=>n(i+d,p,g);switch(r){case"scalar":a=Bc.Scalar.PLAIN,c=zb(s,l);break;case"single-quoted-scalar":a=Bc.Scalar.QUOTE_SINGLE,c=Xb(s,l);break;case"double-quoted-scalar":a=Bc.Scalar.QUOTE_DOUBLE,c=Qb(s,l);break;default:return n(e,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${r}`),{value:"",type:null,comment:"",range:[i,i+s.length,i+s.length]}}let u=i+s.length,f=Vb.resolveEnd(o,u,t,n);return{value:c,type:a,comment:f.comment,range:[i,u,f.offset]}}function zb(e,t){let n="";switch(e[0]){case" ":n="a tab character";break;case",":n="flow indicator character ,";break;case"%":n="directive indicator character %";break;case"|":case">":{n=`block scalar indicator ${e[0]}`;break}case"@":case"`":{n=`reserved character ${e[0]}`;break}}return n&&t(0,"BAD_SCALAR_START",`Plain value cannot start with ${n}`),zd(e)}function Xb(e,t){return(e[e.length-1]!=="'"||e.length===1)&&t(e.length,"MISSING_CHAR","Missing closing 'quote"),zd(e.slice(1,-1)).replace(/''/g,"'")}function zd(e){let t,n;try{t=new RegExp(`(.*?)(?s?e.slice(s,i+1):r)}else n+=r}return(e[e.length-1]!=='"'||e.length===1)&&t(e.length,"MISSING_CHAR",'Missing closing "quote'),n}function Xb(e,t){let n="",i=e[t+1];for(;(i===" "||i===" "||i===` +`)&&(n+=i>s?e.slice(s,i+1):r)}else n+=r}return(e[e.length-1]!=='"'||e.length===1)&&t(e.length,"MISSING_CHAR",'Missing closing "quote'),n}function Zb(e,t){let n="",i=e[t+1];for(;(i===" "||i===" "||i===` `||i==="\r")&&!(i==="\r"&&e[t+2]!==` `);)i===` `&&(n+=` -`),t+=1,i=e[t+1];return n||(n=" "),{fold:n,offset:t}}var Qb={0:"\0",a:"\x07",b:"\b",e:"\x1B",f:"\f",n:` -`,r:"\r",t:" ",v:"\v",N:"…",_:" ",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\"," ":" "};function Zb(e,t,n,i){let r=e.substr(t,n),o=r.length===n&&/^[0-9a-fA-F]+$/.test(r)?parseInt(r,16):NaN;try{return String.fromCodePoint(o)}catch{let a=e.substr(t-2,n+2);return i(t-2,"BAD_DQ_ESCAPE",`Invalid escape sequence ${a}`),a}}Xd.resolveFlowScalar=Gb});var em=v(Zd=>{"use strict";var En=M(),Qd=Z(),eC=Bc(),tC=Kc();function nC(e,t,n,i){let{value:r,type:s,comment:o,range:a}=t.type==="block-scalar"?eC.resolveBlockScalar(e,t,i):tC.resolveFlowScalar(t,e.options.strict,i),c=n?e.directives.tagName(n.source,f=>i(n,"TAG_RESOLVE_FAILED",f)):null,l;e.options.stringKeys&&e.atKey?l=e.schema[En.SCALAR]:c?l=iC(e.schema,r,c,n,i):t.type==="scalar"?l=rC(e,r,t,i):l=e.schema[En.SCALAR];let u;try{let f=l.resolve(r,d=>i(n??t,"TAG_RESOLVE_FAILED",d),e.options);u=En.isScalar(f)?f:new Qd.Scalar(f)}catch(f){let d=f instanceof Error?f.message:String(f);i(n??t,"TAG_RESOLVE_FAILED",d),u=new Qd.Scalar(r)}return u.range=a,u.source=r,s&&(u.type=s),c&&(u.tag=c),l.format&&(u.format=l.format),o&&(u.comment=o),u}function iC(e,t,n,i,r){if(n==="!")return e[En.SCALAR];let s=[];for(let a of e.tags)if(!a.collection&&a.tag===n)if(a.default&&a.test)s.push(a);else return a;for(let a of s)if(a.test?.test(t))return a;let o=e.knownTags[n];return o&&!o.collection?(e.tags.push(Object.assign({},o,{default:!1,test:void 0})),o):(r(i,"TAG_RESOLVE_FAILED",`Unresolved tag: ${n}`,n!=="tag:yaml.org,2002:str"),e[En.SCALAR])}function rC({atKey:e,directives:t,schema:n},i,r,s){let o=n.tags.find(a=>(a.default===!0||e&&a.default==="key")&&a.test?.test(i))||n[En.SCALAR];if(n.compat){let a=n.compat.find(c=>c.default&&c.test?.test(i))??n[En.SCALAR];if(o.tag!==a.tag){let c=t.tagString(o.tag),l=t.tagString(a.tag),u=`Value may be parsed as either ${c} or ${l}`;s(r,"TAG_RESOLVE_FAILED",u,!0)}}return o}Zd.composeScalar=nC});var nm=v(tm=>{"use strict";function sC(e,t,n){if(t){n??(n=t.length);for(let i=n-1;i>=0;--i){let r=t[i];switch(r.type){case"space":case"comment":case"newline":e-=r.source.length;continue}for(r=t[++i];r?.type==="space";)e+=r.source.length,r=t[++i];break}}return e}tm.emptyScalarPosition=sC});var sm=v(Uc=>{"use strict";var oC=Bi(),aC=M(),cC=Vd(),im=em(),lC=ai(),uC=nm(),fC={composeNode:rm,composeEmptyNode:Jc};function rm(e,t,n,i){let r=e.atKey,{spaceBefore:s,comment:o,anchor:a,tag:c}=n,l,u=!0;switch(t.type){case"alias":l=dC(e,t,i),(a||c)&&i(t,"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=im.composeScalar(e,t,c,i),a&&(l.anchor=a.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":try{l=cC.composeCollection(fC,e,t,n,i),a&&(l.anchor=a.source.substring(1))}catch(f){let d=f instanceof Error?f.message:String(f);i(t,"RESOURCE_EXHAUSTION",d)}break;default:{let f=t.type==="error"?t.message:`Unsupported token (type: ${t.type})`;i(t,"UNEXPECTED_TOKEN",f),u=!1}}return l??(l=Jc(e,t.offset,void 0,null,n,i)),a&&l.anchor===""&&i(a,"BAD_ALIAS","Anchor cannot be an empty string"),r&&e.options.stringKeys&&(!aC.isScalar(l)||typeof l.value!="string"||l.tag&&l.tag!=="tag:yaml.org,2002:str")&&i(c??t,"NON_STRING_KEY","With stringKeys, all keys must be strings"),s&&(l.spaceBefore=!0),o&&(t.type==="scalar"&&t.source===""?l.comment=o:l.commentBefore=o),e.options.keepSourceTokens&&u&&(l.srcToken=t),l}function Jc(e,t,n,i,{spaceBefore:r,comment:s,anchor:o,tag:a,end:c},l){let u={type:"scalar",offset:uC.emptyScalarPosition(t,n,i),indent:-1,source:""},f=im.composeScalar(e,u,a,l);return o&&(f.anchor=o.source.substring(1),f.anchor===""&&l(o,"BAD_ALIAS","Anchor cannot be an empty string")),r&&(f.spaceBefore=!0),s&&(f.comment=s,f.range[2]=c),f}function dC({options:e},{offset:t,source:n,end:i},r){let s=new oC.Alias(n.substring(1));s.source===""&&r(t,"BAD_ALIAS","Alias cannot be an empty string"),s.source.endsWith(":")&&r(t+n.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);let o=t+n.length,a=lC.resolveEnd(i,o,e.strict,r);return s.range=[t,o,a.offset],a.comment&&(s.comment=a.comment),s}Uc.composeEmptyNode=Jc;Uc.composeNode=rm});var cm=v(am=>{"use strict";var mC=rr(),om=sm(),pC=ai(),hC=cr();function gC(e,t,{offset:n,start:i,value:r,end:s},o){let a=Object.assign({_directives:t},e),c=new mC.Document(void 0,a),l={atKey:!1,atRoot:!0,directives:c.directives,options:c.options,schema:c.schema},u=hC.resolveProps(i,{indicator:"doc-start",next:r??s?.[0],offset:n,onError:o,parentIndent:0,startOnNewline:!0});u.found&&(c.directives.docStart=!0,r&&(r.type==="block-map"||r.type==="block-seq")&&!u.hasNewline&&o(u.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")),c.contents=r?om.composeNode(l,r,u,o):om.composeEmptyNode(l,u.end,i,null,u,o);let f=c.contents.range[2],d=pC.resolveEnd(s,f,!1,o);return d.comment&&(c.comment=d.comment),c.range=[n,f,d.offset],c}am.composeDoc=gC});var Vc=v(fm=>{"use strict";var wC=as("process"),yC=Na(),vC=rr(),lr=ar(),lm=M(),bC=cm(),CC=ai();function ur(e){if(typeof e=="number")return[e,e+1];if(Array.isArray(e))return e.length===2?e:[e[0],e[1]];let{offset:t,source:n}=e;return[t,t+(typeof n=="string"?n.length:1)]}function um(e){let t="",n=!1,i=!1;for(let r=0;r{"use strict";var En=M(),Qd=Q(),nC=Fc(),iC=Hc();function rC(e,t,n,i){let{value:r,type:s,comment:o,range:a}=t.type==="block-scalar"?nC.resolveBlockScalar(e,t,i):iC.resolveFlowScalar(t,e.options.strict,i),c=n?e.directives.tagName(n.source,f=>i(n,"TAG_RESOLVE_FAILED",f)):null,l;e.options.stringKeys&&e.atKey?l=e.schema[En.SCALAR]:c?l=sC(e.schema,r,c,n,i):t.type==="scalar"?l=oC(e,r,t,i):l=e.schema[En.SCALAR];let u;try{let f=l.resolve(r,d=>i(n??t,"TAG_RESOLVE_FAILED",d),e.options);u=En.isScalar(f)?f:new Qd.Scalar(f)}catch(f){let d=f instanceof Error?f.message:String(f);i(n??t,"TAG_RESOLVE_FAILED",d),u=new Qd.Scalar(r)}return u.range=a,u.source=r,s&&(u.type=s),c&&(u.tag=c),l.format&&(u.format=l.format),o&&(u.comment=o),u}function sC(e,t,n,i,r){if(n==="!")return e[En.SCALAR];let s=[];for(let a of e.tags)if(!a.collection&&a.tag===n)if(a.default&&a.test)s.push(a);else return a;for(let a of s)if(a.test?.test(t))return a;let o=e.knownTags[n];return o&&!o.collection?(e.tags.push(Object.assign({},o,{default:!1,test:void 0})),o):(r(i,"TAG_RESOLVE_FAILED",`Unresolved tag: ${n}`,n!=="tag:yaml.org,2002:str"),e[En.SCALAR])}function oC({atKey:e,directives:t,schema:n},i,r,s){let o=n.tags.find(a=>(a.default===!0||e&&a.default==="key")&&a.test?.test(i))||n[En.SCALAR];if(n.compat){let a=n.compat.find(c=>c.default&&c.test?.test(i))??n[En.SCALAR];if(o.tag!==a.tag){let c=t.tagString(o.tag),l=t.tagString(a.tag),u=`Value may be parsed as either ${c} or ${l}`;s(r,"TAG_RESOLVE_FAILED",u,!0)}}return o}Zd.composeScalar=rC});var nm=C(tm=>{"use strict";function aC(e,t,n){if(t){n??(n=t.length);for(let i=n-1;i>=0;--i){let r=t[i];switch(r.type){case"space":case"comment":case"newline":e-=r.source.length;continue}for(r=t[++i];r?.type==="space";)e+=r.source.length,r=t[++i];break}}return e}tm.emptyScalarPosition=aC});var sm=C(Jc=>{"use strict";var cC=Ki(),lC=M(),uC=Vd(),im=em(),fC=ai(),dC=nm(),mC={composeNode:rm,composeEmptyNode:Kc};function rm(e,t,n,i){let r=e.atKey,{spaceBefore:s,comment:o,anchor:a,tag:c}=n,l,u=!0;switch(t.type){case"alias":l=pC(e,t,i),(a||c)&&i(t,"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=im.composeScalar(e,t,c,i),a&&(l.anchor=a.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":try{l=uC.composeCollection(mC,e,t,n,i),a&&(l.anchor=a.source.substring(1))}catch(f){let d=f instanceof Error?f.message:String(f);i(t,"RESOURCE_EXHAUSTION",d)}break;default:{let f=t.type==="error"?t.message:`Unsupported token (type: ${t.type})`;i(t,"UNEXPECTED_TOKEN",f),u=!1}}return l??(l=Kc(e,t.offset,void 0,null,n,i)),a&&l.anchor===""&&i(a,"BAD_ALIAS","Anchor cannot be an empty string"),r&&e.options.stringKeys&&(!lC.isScalar(l)||typeof l.value!="string"||l.tag&&l.tag!=="tag:yaml.org,2002:str")&&i(c??t,"NON_STRING_KEY","With stringKeys, all keys must be strings"),s&&(l.spaceBefore=!0),o&&(t.type==="scalar"&&t.source===""?l.comment=o:l.commentBefore=o),e.options.keepSourceTokens&&u&&(l.srcToken=t),l}function Kc(e,t,n,i,{spaceBefore:r,comment:s,anchor:o,tag:a,end:c},l){let u={type:"scalar",offset:dC.emptyScalarPosition(t,n,i),indent:-1,source:""},f=im.composeScalar(e,u,a,l);return o&&(f.anchor=o.source.substring(1),f.anchor===""&&l(o,"BAD_ALIAS","Anchor cannot be an empty string")),r&&(f.spaceBefore=!0),s&&(f.comment=s,f.range[2]=c),f}function pC({options:e},{offset:t,source:n,end:i},r){let s=new cC.Alias(n.substring(1));s.source===""&&r(t,"BAD_ALIAS","Alias cannot be an empty string"),s.source.endsWith(":")&&r(t+n.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);let o=t+n.length,a=fC.resolveEnd(i,o,e.strict,r);return s.range=[t,o,a.offset],a.comment&&(s.comment=a.comment),s}Jc.composeEmptyNode=Kc;Jc.composeNode=rm});var cm=C(am=>{"use strict";var hC=or(),om=sm(),gC=ai(),wC=ur();function yC(e,t,{offset:n,start:i,value:r,end:s},o){let a=Object.assign({_directives:t},e),c=new hC.Document(void 0,a),l={atKey:!1,atRoot:!0,directives:c.directives,options:c.options,schema:c.schema},u=wC.resolveProps(i,{indicator:"doc-start",next:r??s?.[0],offset:n,onError:o,parentIndent:0,startOnNewline:!0});u.found&&(c.directives.docStart=!0,r&&(r.type==="block-map"||r.type==="block-seq")&&!u.hasNewline&&o(u.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")),c.contents=r?om.composeNode(l,r,u,o):om.composeEmptyNode(l,u.end,i,null,u,o);let f=c.contents.range[2],d=gC.resolveEnd(s,f,!1,o);return d.comment&&(c.comment=d.comment),c.range=[n,f,d.offset],c}am.composeDoc=yC});var Gc=C(fm=>{"use strict";var vC=as("process"),bC=Ia(),CC=or(),fr=lr(),lm=M(),kC=cm(),SC=ai();function dr(e){if(typeof e=="number")return[e,e+1];if(Array.isArray(e))return e.length===2?e:[e[0],e[1]];let{offset:t,source:n}=e;return[t,t+(typeof n=="string"?n.length:1)]}function um(e){let t="",n=!1,i=!1;for(let r=0;r{let o=ur(n);s?this.warnings.push(new lr.YAMLWarning(o,i,r)):this.errors.push(new lr.YAMLParseError(o,i,r))},this.directives=new yC.Directives({version:t.version||"1.2"}),this.options=t}decorate(t,n){let{comment:i,afterEmptyLine:r}=um(this.prelude);if(i){let s=t.contents;if(n)t.comment=t.comment?`${t.comment} +`)+(s.substring(1)||" "),n=!0,i=!1;break;case"%":e[r+1]?.[0]!=="#"&&(r+=1),n=!1;break;default:n||(i=!0),n=!1}}return{comment:t,afterEmptyLine:i}}var Uc=class{constructor(t={}){this.doc=null,this.atDirectives=!1,this.prelude=[],this.errors=[],this.warnings=[],this.onError=(n,i,r,s)=>{let o=dr(n);s?this.warnings.push(new fr.YAMLWarning(o,i,r)):this.errors.push(new fr.YAMLParseError(o,i,r))},this.directives=new bC.Directives({version:t.version||"1.2"}),this.options=t}decorate(t,n){let{comment:i,afterEmptyLine:r}=um(this.prelude);if(i){let s=t.contents;if(n)t.comment=t.comment?`${t.comment} ${i}`:i;else if(r||t.directives.docStart||!s)t.commentBefore=i;else if(lm.isCollection(s)&&!s.flow&&s.items.length>0){let o=s.items[0];lm.isPair(o)&&(o=o.key);let a=o.commentBefore;o.commentBefore=a?`${i} ${a}`:i}else{let o=s.commentBefore;s.commentBefore=o?`${i} -${o}`:i}}if(n){for(let s=0;s{let s=ur(t);s[0]+=n,this.onError(s,"BAD_DIRECTIVE",i,r)}),this.prelude.push(t.source),this.atDirectives=!0;break;case"document":{let n=bC.composeDoc(this.options,this.directives,t,this.onError);this.atDirectives&&!n.directives.docStart&&this.onError(t,"MISSING_CHAR","Missing directives-end/doc-start indicator line"),this.decorate(n,!1),this.doc&&(yield this.doc),this.doc=n,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(t.source);break;case"error":{let n=t.source?`${t.message}: ${JSON.stringify(t.source)}`:t.message,i=new lr.YAMLParseError(ur(t),"UNEXPECTED_TOKEN",n);this.atDirectives||!this.doc?this.errors.push(i):this.doc.errors.push(i);break}case"doc-end":{if(!this.doc){let i="Unexpected doc-end without preceding document";this.errors.push(new lr.YAMLParseError(ur(t),"UNEXPECTED_TOKEN",i));break}this.doc.directives.docEnd=!0;let n=CC.resolveEnd(t.end,t.offset+t.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),n.comment){let i=this.doc.comment;this.doc.comment=i?`${i} -${n.comment}`:n.comment}this.doc.range[2]=n.offset;break}default:this.errors.push(new lr.YAMLParseError(ur(t),"UNEXPECTED_TOKEN",`Unsupported token ${t.type}`))}}*end(t=!1,n=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(t){let i=Object.assign({_directives:this.directives},this.options),r=new vC.Document(void 0,i);this.atDirectives&&this.onError(n,"MISSING_CHAR","Missing directives-end indicator line"),r.range=[0,n,n],this.decorate(r,!1),yield r}}};fm.Composer=Gc});var pm=v(Qs=>{"use strict";var kC=Bc(),SC=Kc(),EC=ar(),dm=Gi();function RC(e,t=!0,n){if(e){let i=(r,s,o)=>{let a=typeof r=="number"?r:Array.isArray(r)?r[0]:r.offset;if(n)n(a,s,o);else throw new EC.YAMLParseError([a,a+1],s,o)};switch(e.type){case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return SC.resolveFlowScalar(e,t,i);case"block-scalar":return kC.resolveBlockScalar({options:{strict:t}},e,i)}}return null}function _C(e,t){let{implicitKey:n=!1,indent:i,inFlow:r=!1,offset:s=-1,type:o="PLAIN"}=t,a=dm.stringifyString({type:o,value:e},{implicitKey:n,indent:i>0?" ".repeat(i):"",inFlow:r,options:{blockQuote:!0,lineWidth:-1}}),c=t.end??[{type:"newline",offset:-1,indent:i,source:` +${o}`:i}}if(n){for(let s=0;s{let s=dr(t);s[0]+=n,this.onError(s,"BAD_DIRECTIVE",i,r)}),this.prelude.push(t.source),this.atDirectives=!0;break;case"document":{let n=kC.composeDoc(this.options,this.directives,t,this.onError);this.atDirectives&&!n.directives.docStart&&this.onError(t,"MISSING_CHAR","Missing directives-end/doc-start indicator line"),this.decorate(n,!1),this.doc&&(yield this.doc),this.doc=n,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(t.source);break;case"error":{let n=t.source?`${t.message}: ${JSON.stringify(t.source)}`:t.message,i=new fr.YAMLParseError(dr(t),"UNEXPECTED_TOKEN",n);this.atDirectives||!this.doc?this.errors.push(i):this.doc.errors.push(i);break}case"doc-end":{if(!this.doc){let i="Unexpected doc-end without preceding document";this.errors.push(new fr.YAMLParseError(dr(t),"UNEXPECTED_TOKEN",i));break}this.doc.directives.docEnd=!0;let n=SC.resolveEnd(t.end,t.offset+t.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),n.comment){let i=this.doc.comment;this.doc.comment=i?`${i} +${n.comment}`:n.comment}this.doc.range[2]=n.offset;break}default:this.errors.push(new fr.YAMLParseError(dr(t),"UNEXPECTED_TOKEN",`Unsupported token ${t.type}`))}}*end(t=!1,n=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(t){let i=Object.assign({_directives:this.directives},this.options),r=new CC.Document(void 0,i);this.atDirectives&&this.onError(n,"MISSING_CHAR","Missing directives-end indicator line"),r.range=[0,n,n],this.decorate(r,!1),yield r}}};fm.Composer=Uc});var pm=C(Qs=>{"use strict";var EC=Fc(),RC=Hc(),_C=lr(),dm=Yi();function xC(e,t=!0,n){if(e){let i=(r,s,o)=>{let a=typeof r=="number"?r:Array.isArray(r)?r[0]:r.offset;if(n)n(a,s,o);else throw new _C.YAMLParseError([a,a+1],s,o)};switch(e.type){case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return RC.resolveFlowScalar(e,t,i);case"block-scalar":return EC.resolveBlockScalar({options:{strict:t}},e,i)}}return null}function PC(e,t){let{implicitKey:n=!1,indent:i,inFlow:r=!1,offset:s=-1,type:o="PLAIN"}=t,a=dm.stringifyString({type:o,value:e},{implicitKey:n,indent:i>0?" ".repeat(i):"",inFlow:r,options:{blockQuote:!0,lineWidth:-1}}),c=t.end??[{type:"newline",offset:-1,indent:i,source:` `}];switch(a[0]){case"|":case">":{let l=a.indexOf(` `),u=a.substring(0,l),f=a.substring(l+1)+` `,d=[{type:"block-scalar-header",offset:s,indent:i,source:u}];return mm(d,c)||d.push({type:"newline",offset:-1,indent:i,source:` -`}),{type:"block-scalar",offset:s,indent:i,props:d,source:f}}case'"':return{type:"double-quoted-scalar",offset:s,indent:i,source:a,end:c};case"'":return{type:"single-quoted-scalar",offset:s,indent:i,source:a,end:c};default:return{type:"scalar",offset:s,indent:i,source:a,end:c}}}function xC(e,t,n={}){let{afterKey:i=!1,implicitKey:r=!1,inFlow:s=!1,type:o}=n,a="indent"in e?e.indent:null;if(i&&typeof a=="number"&&(a+=2),!o)switch(e.type){case"single-quoted-scalar":o="QUOTE_SINGLE";break;case"double-quoted-scalar":o="QUOTE_DOUBLE";break;case"block-scalar":{let l=e.props[0];if(l.type!=="block-scalar-header")throw new Error("Invalid block scalar header");o=l.source[0]===">"?"BLOCK_FOLDED":"BLOCK_LITERAL";break}default:o="PLAIN"}let c=dm.stringifyString({type:o,value:t},{implicitKey:r||a===null,indent:a!==null&&a>0?" ".repeat(a):"",inFlow:s,options:{blockQuote:!0,lineWidth:-1}});switch(c[0]){case"|":case">":PC(e,c);break;case'"':Yc(e,c,"double-quoted-scalar");break;case"'":Yc(e,c,"single-quoted-scalar");break;default:Yc(e,c,"scalar")}}function PC(e,t){let n=t.indexOf(` +`}),{type:"block-scalar",offset:s,indent:i,props:d,source:f}}case'"':return{type:"double-quoted-scalar",offset:s,indent:i,source:a,end:c};case"'":return{type:"single-quoted-scalar",offset:s,indent:i,source:a,end:c};default:return{type:"scalar",offset:s,indent:i,source:a,end:c}}}function OC(e,t,n={}){let{afterKey:i=!1,implicitKey:r=!1,inFlow:s=!1,type:o}=n,a="indent"in e?e.indent:null;if(i&&typeof a=="number"&&(a+=2),!o)switch(e.type){case"single-quoted-scalar":o="QUOTE_SINGLE";break;case"double-quoted-scalar":o="QUOTE_DOUBLE";break;case"block-scalar":{let l=e.props[0];if(l.type!=="block-scalar-header")throw new Error("Invalid block scalar header");o=l.source[0]===">"?"BLOCK_FOLDED":"BLOCK_LITERAL";break}default:o="PLAIN"}let c=dm.stringifyString({type:o,value:t},{implicitKey:r||a===null,indent:a!==null&&a>0?" ".repeat(a):"",inFlow:s,options:{blockQuote:!0,lineWidth:-1}});switch(c[0]){case"|":case">":$C(e,c);break;case'"':Vc(e,c,"double-quoted-scalar");break;case"'":Vc(e,c,"single-quoted-scalar");break;default:Vc(e,c,"scalar")}}function $C(e,t){let n=t.indexOf(` `),i=t.substring(0,n),r=t.substring(n+1)+` `;if(e.type==="block-scalar"){let s=e.props[0];if(s.type!=="block-scalar-header")throw new Error("Invalid block scalar header");s.source=i,e.source=r}else{let{offset:s}=e,o="indent"in e?e.indent:-1,a=[{type:"block-scalar-header",offset:s,indent:o,source:i}];mm(a,"end"in e?e.end:void 0)||a.push({type:"newline",offset:-1,indent:o,source:` -`});for(let c of Object.keys(e))c!=="type"&&c!=="offset"&&delete e[c];Object.assign(e,{type:"block-scalar",indent:o,props:a,source:r})}}function mm(e,t){if(t)for(let n of t)switch(n.type){case"space":case"comment":e.push(n);break;case"newline":return e.push(n),!0}return!1}function Yc(e,t,n){switch(e.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":e.type=n,e.source=t;break;case"block-scalar":{let i=e.props.slice(1),r=t.length;e.props[0].type==="block-scalar-header"&&(r-=e.props[0].source.length);for(let s of i)s.offset+=r;delete e.props,Object.assign(e,{type:n,source:t,end:i});break}case"block-map":case"block-seq":{let r={type:"newline",offset:e.offset+t.length,indent:e.indent,source:` -`};delete e.items,Object.assign(e,{type:n,source:t,end:[r]});break}default:{let i="indent"in e?e.indent:-1,r="end"in e&&Array.isArray(e.end)?e.end.filter(s=>s.type==="space"||s.type==="comment"||s.type==="newline"):[];for(let s of Object.keys(e))s!=="type"&&s!=="offset"&&delete e[s];Object.assign(e,{type:n,indent:i,source:t,end:r})}}}Qs.createScalarToken=_C;Qs.resolveAsScalar=RC;Qs.setScalarValue=xC});var gm=v(hm=>{"use strict";var OC=e=>"type"in e?eo(e):Zs(e);function eo(e){switch(e.type){case"block-scalar":{let t="";for(let n of e.props)t+=eo(n);return t+e.source}case"block-map":case"block-seq":{let t="";for(let n of e.items)t+=Zs(n);return t}case"flow-collection":{let t=e.start.source;for(let n of e.items)t+=Zs(n);for(let n of e.end)t+=n.source;return t}case"document":{let t=Zs(e);if(e.end)for(let n of e.end)t+=n.source;return t}default:{let t=e.source;if("end"in e&&e.end)for(let n of e.end)t+=n.source;return t}}}function Zs({start:e,key:t,sep:n,value:i}){let r="";for(let s of e)r+=s.source;if(t&&(r+=eo(t)),n)for(let s of n)r+=s.source;return i&&(r+=eo(i)),r}hm.stringify=OC});var bm=v(vm=>{"use strict";var zc=Symbol("break visit"),$C=Symbol("skip children"),wm=Symbol("remove item");function Rn(e,t){"type"in e&&e.type==="document"&&(e={start:e.start,value:e.value}),ym(Object.freeze([]),e,t)}Rn.BREAK=zc;Rn.SKIP=$C;Rn.REMOVE=wm;Rn.itemAtPath=(e,t)=>{let n=e;for(let[i,r]of t){let s=n?.[i];if(s&&"items"in s)n=s.items[r];else return}return n};Rn.parentCollection=(e,t)=>{let n=Rn.itemAtPath(e,t.slice(0,-1)),i=t[t.length-1][0],r=n?.[i];if(r&&"items"in r)return r;throw new Error("Parent collection not found")};function ym(e,t,n){let i=n(t,e);if(typeof i=="symbol")return i;for(let r of["key","value"]){let s=t[r];if(s&&"items"in s){for(let o=0;o{"use strict";var Xc=pm(),AC=gm(),IC=bm(),Qc="\uFEFF",Zc="",el="",tl="",NC=e=>!!e&&"items"in e,TC=e=>!!e&&(e.type==="scalar"||e.type==="single-quoted-scalar"||e.type==="double-quoted-scalar"||e.type==="block-scalar");function jC(e){switch(e){case Qc:return"";case Zc:return"";case el:return"";case tl:return"";default:return JSON.stringify(e)}}function LC(e){switch(e){case Qc:return"byte-order-mark";case Zc:return"doc-mode";case el:return"flow-error-end";case tl:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case` +`});for(let c of Object.keys(e))c!=="type"&&c!=="offset"&&delete e[c];Object.assign(e,{type:"block-scalar",indent:o,props:a,source:r})}}function mm(e,t){if(t)for(let n of t)switch(n.type){case"space":case"comment":e.push(n);break;case"newline":return e.push(n),!0}return!1}function Vc(e,t,n){switch(e.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":e.type=n,e.source=t;break;case"block-scalar":{let i=e.props.slice(1),r=t.length;e.props[0].type==="block-scalar-header"&&(r-=e.props[0].source.length);for(let s of i)s.offset+=r;delete e.props,Object.assign(e,{type:n,source:t,end:i});break}case"block-map":case"block-seq":{let r={type:"newline",offset:e.offset+t.length,indent:e.indent,source:` +`};delete e.items,Object.assign(e,{type:n,source:t,end:[r]});break}default:{let i="indent"in e?e.indent:-1,r="end"in e&&Array.isArray(e.end)?e.end.filter(s=>s.type==="space"||s.type==="comment"||s.type==="newline"):[];for(let s of Object.keys(e))s!=="type"&&s!=="offset"&&delete e[s];Object.assign(e,{type:n,indent:i,source:t,end:r})}}}Qs.createScalarToken=PC;Qs.resolveAsScalar=xC;Qs.setScalarValue=OC});var gm=C(hm=>{"use strict";var AC=e=>"type"in e?eo(e):Zs(e);function eo(e){switch(e.type){case"block-scalar":{let t="";for(let n of e.props)t+=eo(n);return t+e.source}case"block-map":case"block-seq":{let t="";for(let n of e.items)t+=Zs(n);return t}case"flow-collection":{let t=e.start.source;for(let n of e.items)t+=Zs(n);for(let n of e.end)t+=n.source;return t}case"document":{let t=Zs(e);if(e.end)for(let n of e.end)t+=n.source;return t}default:{let t=e.source;if("end"in e&&e.end)for(let n of e.end)t+=n.source;return t}}}function Zs({start:e,key:t,sep:n,value:i}){let r="";for(let s of e)r+=s.source;if(t&&(r+=eo(t)),n)for(let s of n)r+=s.source;return i&&(r+=eo(i)),r}hm.stringify=AC});var bm=C(vm=>{"use strict";var Yc=Symbol("break visit"),IC=Symbol("skip children"),wm=Symbol("remove item");function Rn(e,t){"type"in e&&e.type==="document"&&(e={start:e.start,value:e.value}),ym(Object.freeze([]),e,t)}Rn.BREAK=Yc;Rn.SKIP=IC;Rn.REMOVE=wm;Rn.itemAtPath=(e,t)=>{let n=e;for(let[i,r]of t){let s=n?.[i];if(s&&"items"in s)n=s.items[r];else return}return n};Rn.parentCollection=(e,t)=>{let n=Rn.itemAtPath(e,t.slice(0,-1)),i=t[t.length-1][0],r=n?.[i];if(r&&"items"in r)return r;throw new Error("Parent collection not found")};function ym(e,t,n){let i=n(t,e);if(typeof i=="symbol")return i;for(let r of["key","value"]){let s=t[r];if(s&&"items"in s){for(let o=0;o{"use strict";var zc=pm(),NC=gm(),TC=bm(),Xc="\uFEFF",Qc="",Zc="",el="",jC=e=>!!e&&"items"in e,LC=e=>!!e&&(e.type==="scalar"||e.type==="single-quoted-scalar"||e.type==="double-quoted-scalar"||e.type==="block-scalar");function MC(e){switch(e){case Xc:return"";case Qc:return"";case Zc:return"";case el:return"";default:return JSON.stringify(e)}}function qC(e){switch(e){case Xc:return"byte-order-mark";case Qc:return"doc-mode";case Zc:return"flow-error-end";case el: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(e[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}Re.createScalarToken=Xc.createScalarToken;Re.resolveAsScalar=Xc.resolveAsScalar;Re.setScalarValue=Xc.setScalarValue;Re.stringify=AC.stringify;Re.visit=IC.visit;Re.BOM=Qc;Re.DOCUMENT=Zc;Re.FLOW_END=el;Re.SCALAR=tl;Re.isCollection=NC;Re.isScalar=TC;Re.prettyToken=jC;Re.tokenType=LC});var rl=v(km=>{"use strict";var fr=to();function ze(e){switch(e){case void 0:case" ":case` -`:case"\r":case" ":return!0;default:return!1}}var Cm=new Set("0123456789ABCDEFabcdef"),MC=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),no=new Set(",[]{}"),qC=new Set(` ,[]{} -\r `),nl=e=>!e||qC.has(e),il=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(t,n=!1){if(t){if(typeof t!="string")throw TypeError("source is not a string");this.buffer=this.buffer?this.buffer+t:t,this.lineEndPos=null}this.atEnd=!n;let i=this.next??"stream";for(;i&&(n||this.hasChars(1));)i=yield*this.parseNext(i)}atLineEnd(){let t=this.pos,n=this.buffer[t];for(;n===" "||n===" ";)n=this.buffer[++t];return!n||n==="#"||n===` +`: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(e[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}Re.createScalarToken=zc.createScalarToken;Re.resolveAsScalar=zc.resolveAsScalar;Re.setScalarValue=zc.setScalarValue;Re.stringify=NC.stringify;Re.visit=TC.visit;Re.BOM=Xc;Re.DOCUMENT=Qc;Re.FLOW_END=Zc;Re.SCALAR=el;Re.isCollection=jC;Re.isScalar=LC;Re.prettyToken=MC;Re.tokenType=qC});var il=C(km=>{"use strict";var mr=to();function ze(e){switch(e){case void 0:case" ":case` +`:case"\r":case" ":return!0;default:return!1}}var Cm=new Set("0123456789ABCDEFabcdef"),DC=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),no=new Set(",[]{}"),WC=new Set(` ,[]{} +\r `),tl=e=>!e||WC.has(e),nl=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(t,n=!1){if(t){if(typeof t!="string")throw TypeError("source is not a string");this.buffer=this.buffer?this.buffer+t:t,this.lineEndPos=null}this.atEnd=!n;let i=this.next??"stream";for(;i&&(n||this.hasChars(1));)i=yield*this.parseNext(i)}atLineEnd(){let t=this.pos,n=this.buffer[t];for(;n===" "||n===" ";)n=this.buffer[++t];return!n||n==="#"||n===` `?!0:n==="\r"?this.buffer[t+1]===` `:!1}charAt(t){return this.buffer[this.pos+t]}continueScalar(t){let n=this.buffer[t];if(this.indentNext>0){let i=0;for(;n===" ";)n=this.buffer[++i+t];if(n==="\r"){let r=this.buffer[i+t+1];if(r===` `||!r&&!this.atEnd)return t+i+1}return n===` `||i>=this.indentNext||!n&&!this.atEnd?t+i:-1}if(n==="-"||n==="."){let i=this.buffer.substr(t,3);if((i==="---"||i==="...")&&ze(this.buffer[t+3]))return-1}return t}getLine(){let t=this.lineEndPos;return(typeof t!="number"||t!==-1&&tthis.indentValue&&!ze(this.charAt(1))&&(this.indentNext=this.indentValue),yield*this.parseBlockStart()}*parseBlockStart(){let[t,n]=this.peek(2);if(!n&&!this.atEnd)return this.setNext("block-start");if((t==="-"||t==="?"||t===":")&&ze(n)){let i=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=i,"block-start"}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);let t=this.getLine();if(t===null)return this.setNext("doc");let n=yield*this.pushIndicators();switch(t[n]){case"#":yield*this.pushCount(t.length-n);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(nl),"doc";case'"':case"'":return yield*this.parseQuotedScalar();case"|":case">":return n+=yield*this.parseBlockScalarHeader(),n+=yield*this.pushSpaces(!0),yield*this.pushCount(t.length-n),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let t,n,i=-1;do t=yield*this.pushNewline(),t>0?(n=yield*this.pushSpaces(!1),this.indentValue=i=n):n=0,n+=yield*this.pushSpaces(!0);while(t+n>0);let r=this.getLine();if(r===null)return this.setNext("flow");if((i!==-1&&ithis.indentValue&&!ze(this.charAt(1))&&(this.indentNext=this.indentValue),yield*this.parseBlockStart()}*parseBlockStart(){let[t,n]=this.peek(2);if(!n&&!this.atEnd)return this.setNext("block-start");if((t==="-"||t==="?"||t===":")&&ze(n)){let i=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=i,"block-start"}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);let t=this.getLine();if(t===null)return this.setNext("doc");let n=yield*this.pushIndicators();switch(t[n]){case"#":yield*this.pushCount(t.length-n);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(tl),"doc";case'"':case"'":return yield*this.parseQuotedScalar();case"|":case">":return n+=yield*this.parseBlockScalarHeader(),n+=yield*this.pushSpaces(!0),yield*this.pushCount(t.length-n),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let t,n,i=-1;do t=yield*this.pushNewline(),t>0?(n=yield*this.pushSpaces(!1),this.indentValue=i=n):n=0,n+=yield*this.pushSpaces(!0);while(t+n>0);let r=this.getLine();if(r===null)return this.setNext("flow");if((i!==-1&&i"0"&&n<="9")this.blockScalarIndent=Number(n)-1;else if(n!=="-")break}return yield*this.pushUntil(n=>ze(n)||n==="#")}*parseBlockScalar(){let t=this.pos-1,n=0,i;e:for(let s=this.pos;i=this.buffer[s];++s)switch(i){case" ":n+=1;break;case` `:t=s,n=0;break;case"\r":{let o=this.buffer[s+1];if(!o&&!this.atEnd)return this.setNext("block-scalar");if(o===` `)break}default:break e}if(!i&&!this.atEnd)return this.setNext("block-scalar");if(n>=this.indentNext){this.blockScalarIndent===-1?this.indentNext=n:this.indentNext=this.blockScalarIndent+(this.indentNext===0?1:this.indentNext);do{let s=this.continueScalar(t+1);if(s===-1)break;t=this.buffer.indexOf(` `,s)}while(t!==-1);if(t===-1){if(!this.atEnd)return this.setNext("block-scalar");t=this.buffer.length}}let r=t+1;for(i=this.buffer[r];i===" ";)i=this.buffer[++r];if(i===" "){for(;i===" "||i===" "||i==="\r"||i===` `;)i=this.buffer[++r];t=r-1}else if(!this.blockScalarKeep)do{let s=t-1,o=this.buffer[s];o==="\r"&&(o=this.buffer[--s]);let a=s;for(;o===" ";)o=this.buffer[--s];if(o===` -`&&s>=this.pos&&s+1+n>a)t=s;else break}while(!0);return yield fr.SCALAR,yield*this.pushToIndex(t+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let t=this.flowLevel>0,n=this.pos-1,i=this.pos-1,r;for(;r=this.buffer[++i];)if(r===":"){let s=this.buffer[i+1];if(ze(s)||t&&no.has(s))break;n=i}else if(ze(r)){let s=this.buffer[i+1];if(r==="\r"&&(s===` +`&&s>=this.pos&&s+1+n>a)t=s;else break}while(!0);return yield mr.SCALAR,yield*this.pushToIndex(t+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let t=this.flowLevel>0,n=this.pos-1,i=this.pos-1,r;for(;r=this.buffer[++i];)if(r===":"){let s=this.buffer[i+1];if(ze(s)||t&&no.has(s))break;n=i}else if(ze(r)){let s=this.buffer[i+1];if(r==="\r"&&(s===` `?(i+=1,r=` `,s=this.buffer[i+1]):n=i),s==="#"||t&&no.has(s))break;if(r===` -`){let o=this.continueScalar(i+1);if(o===-1)break;i=Math.max(i,o-2)}}else{if(t&&no.has(r))break;n=i}return!r&&!this.atEnd?this.setNext("plain-scalar"):(yield fr.SCALAR,yield*this.pushToIndex(n+1,!0),t?"flow":"doc")}*pushCount(t){return t>0?(yield this.buffer.substr(this.pos,t),this.pos+=t,t):0}*pushToIndex(t,n){let i=this.buffer.slice(this.pos,t);return i?(yield i,this.pos+=i.length,i.length):(n&&(yield""),0)}*pushIndicators(){let t=0;e:for(;;){switch(this.charAt(0)){case"!":t+=yield*this.pushTag(),t+=yield*this.pushSpaces(!0);continue e;case"&":t+=yield*this.pushUntil(nl),t+=yield*this.pushSpaces(!0);continue e;case"-":case"?":case":":{let n=this.flowLevel>0,i=this.charAt(1);if(ze(i)||n&&no.has(i)){n?this.flowKey&&(this.flowKey=!1):this.indentNext=this.indentValue+1,t+=yield*this.pushCount(1),t+=yield*this.pushSpaces(!0);continue e}}}break e}return t}*pushTag(){if(this.charAt(1)==="<"){let t=this.pos+2,n=this.buffer[t];for(;!ze(n)&&n!==">";)n=this.buffer[++t];return yield*this.pushToIndex(n===">"?t+1:t,!1)}else{let t=this.pos+1,n=this.buffer[t];for(;n;)if(MC.has(n))n=this.buffer[++t];else if(n==="%"&&Cm.has(this.buffer[t+1])&&Cm.has(this.buffer[t+2]))n=this.buffer[t+=3];else break;return yield*this.pushToIndex(t,!1)}}*pushNewline(){let t=this.buffer[this.pos];return t===` +`){let o=this.continueScalar(i+1);if(o===-1)break;i=Math.max(i,o-2)}}else{if(t&&no.has(r))break;n=i}return!r&&!this.atEnd?this.setNext("plain-scalar"):(yield mr.SCALAR,yield*this.pushToIndex(n+1,!0),t?"flow":"doc")}*pushCount(t){return t>0?(yield this.buffer.substr(this.pos,t),this.pos+=t,t):0}*pushToIndex(t,n){let i=this.buffer.slice(this.pos,t);return i?(yield i,this.pos+=i.length,i.length):(n&&(yield""),0)}*pushIndicators(){let t=0;e:for(;;){switch(this.charAt(0)){case"!":t+=yield*this.pushTag(),t+=yield*this.pushSpaces(!0);continue e;case"&":t+=yield*this.pushUntil(tl),t+=yield*this.pushSpaces(!0);continue e;case"-":case"?":case":":{let n=this.flowLevel>0,i=this.charAt(1);if(ze(i)||n&&no.has(i)){n?this.flowKey&&(this.flowKey=!1):this.indentNext=this.indentValue+1,t+=yield*this.pushCount(1),t+=yield*this.pushSpaces(!0);continue e}}}break e}return t}*pushTag(){if(this.charAt(1)==="<"){let t=this.pos+2,n=this.buffer[t];for(;!ze(n)&&n!==">";)n=this.buffer[++t];return yield*this.pushToIndex(n===">"?t+1:t,!1)}else{let t=this.pos+1,n=this.buffer[t];for(;n;)if(DC.has(n))n=this.buffer[++t];else if(n==="%"&&Cm.has(this.buffer[t+1])&&Cm.has(this.buffer[t+2]))n=this.buffer[t+=3];else break;return yield*this.pushToIndex(t,!1)}}*pushNewline(){let t=this.buffer[this.pos];return t===` `?yield*this.pushCount(1):t==="\r"&&this.charAt(1)===` -`?yield*this.pushCount(2):0}*pushSpaces(t){let n=this.pos-1,i;do i=this.buffer[++n];while(i===" "||t&&i===" ");let r=n-this.pos;return r>0&&(yield this.buffer.substr(this.pos,r),this.pos=n),r}*pushUntil(t){let n=this.pos,i=this.buffer[n];for(;!t(i);)i=this.buffer[++n];return yield*this.pushToIndex(n,!1)}};km.Lexer=il});var ol=v(Sm=>{"use strict";var sl=class{constructor(){this.lineStarts=[],this.addNewLine=t=>this.lineStarts.push(t),this.linePos=t=>{let n=0,i=this.lineStarts.length;for(;n>1;this.lineStarts[s]{"use strict";var DC=as("process"),Em=to(),WC=rl();function zt(e,t){for(let n=0;n=0;)switch(e[t].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break e}for(;e[++t]?.type==="space";);return e.splice(t,e.length)}function ro(e,t){if(t.length<1e5)Array.prototype.push.apply(e,t);else for(let n=0;n0;)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let t=this.peek(1);if(this.type==="doc-end"&&t?.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(!t)return yield*this.stream();switch(t.type){case"document":return yield*this.document(t);case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*this.scalar(t);case"block-scalar":return yield*this.blockScalar(t);case"block-map":return yield*this.blockMap(t);case"block-seq":return yield*this.blockSequence(t);case"flow-collection":return yield*this.flowCollection(t);case"doc-end":return yield*this.documentEnd(t)}yield*this.pop()}peek(t){return this.stack[this.stack.length-t]}*pop(t){let n=t??this.stack.pop();if(!n)yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"};else if(this.stack.length===0)yield n;else{let i=this.peek(1);switch(n.type==="block-scalar"?n.indent="indent"in i?i.indent:0:n.type==="flow-collection"&&i.type==="document"&&(n.indent=0),n.type==="flow-collection"&&_m(n),i.type){case"document":i.value=n;break;case"block-scalar":i.props.push(n);break;case"block-map":{let r=i.items[i.items.length-1];if(r.value){i.items.push({start:[],key:n,sep:[]}),this.onKeyLine=!0;return}else if(r.sep)r.value=n;else{Object.assign(r,{key:n,sep:[]}),this.onKeyLine=!r.explicitKey;return}break}case"block-seq":{let r=i.items[i.items.length-1];r.value?i.items.push({start:[],value:n}):r.value=n;break}case"flow-collection":{let r=i.items[i.items.length-1];!r||r.value?i.items.push({start:[],key:n,sep:[]}):r.sep?r.value=n:Object.assign(r,{key:n,sep:[]});return}default:yield*this.pop(),yield*this.pop(n)}if((i.type==="document"||i.type==="block-map"||i.type==="block-seq")&&(n.type==="block-map"||n.type==="block-seq")){let r=n.items[n.items.length-1];r&&!r.sep&&!r.value&&r.start.length>0&&Rm(r.start)===-1&&(n.indent===0||r.start.every(s=>s.type!=="comment"||s.indent0&&(yield this.buffer.substr(this.pos,r),this.pos=n),r}*pushUntil(t){let n=this.pos,i=this.buffer[n];for(;!t(i);)i=this.buffer[++n];return yield*this.pushToIndex(n,!1)}};km.Lexer=nl});var sl=C(Sm=>{"use strict";var rl=class{constructor(){this.lineStarts=[],this.addNewLine=t=>this.lineStarts.push(t),this.linePos=t=>{let n=0,i=this.lineStarts.length;for(;n>1;this.lineStarts[s]{"use strict";var FC=as("process"),Em=to(),BC=il();function Xt(e,t){for(let n=0;n=0;)switch(e[t].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break e}for(;e[++t]?.type==="space";);return e.splice(t,e.length)}function ro(e,t){if(t.length<1e5)Array.prototype.push.apply(e,t);else for(let n=0;n0;)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let t=this.peek(1);if(this.type==="doc-end"&&t?.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(!t)return yield*this.stream();switch(t.type){case"document":return yield*this.document(t);case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*this.scalar(t);case"block-scalar":return yield*this.blockScalar(t);case"block-map":return yield*this.blockMap(t);case"block-seq":return yield*this.blockSequence(t);case"flow-collection":return yield*this.flowCollection(t);case"doc-end":return yield*this.documentEnd(t)}yield*this.pop()}peek(t){return this.stack[this.stack.length-t]}*pop(t){let n=t??this.stack.pop();if(!n)yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"};else if(this.stack.length===0)yield n;else{let i=this.peek(1);switch(n.type==="block-scalar"?n.indent="indent"in i?i.indent:0:n.type==="flow-collection"&&i.type==="document"&&(n.indent=0),n.type==="flow-collection"&&_m(n),i.type){case"document":i.value=n;break;case"block-scalar":i.props.push(n);break;case"block-map":{let r=i.items[i.items.length-1];if(r.value){i.items.push({start:[],key:n,sep:[]}),this.onKeyLine=!0;return}else if(r.sep)r.value=n;else{Object.assign(r,{key:n,sep:[]}),this.onKeyLine=!r.explicitKey;return}break}case"block-seq":{let r=i.items[i.items.length-1];r.value?i.items.push({start:[],value:n}):r.value=n;break}case"flow-collection":{let r=i.items[i.items.length-1];!r||r.value?i.items.push({start:[],key:n,sep:[]}):r.sep?r.value=n:Object.assign(r,{key:n,sep:[]});return}default:yield*this.pop(),yield*this.pop(n)}if((i.type==="document"||i.type==="block-map"||i.type==="block-seq")&&(n.type==="block-map"||n.type==="block-seq")){let r=n.items[n.items.length-1];r&&!r.sep&&!r.value&&r.start.length>0&&Rm(r.start)===-1&&(n.indent===0||r.start.every(s=>s.type!=="comment"||s.indent=t.indent){let i=!this.onKeyLine&&this.indent===t.indent,r=i&&(n.sep||n.explicitKey)&&this.type!=="seq-item-ind",s=[];if(r&&n.sep&&!n.value){let o=[];for(let a=0;at.indent&&(o.length=0);break;default:o.length=0}}o.length>=2&&(s=n.sep.splice(o[1]))}switch(this.type){case"anchor":case"tag":r||n.value?(s.push(this.sourceToken),t.items.push({start:s}),this.onKeyLine=!0):n.sep?n.sep.push(this.sourceToken):n.start.push(this.sourceToken);return;case"explicit-key-ind":!n.sep&&!n.explicitKey?(n.start.push(this.sourceToken),n.explicitKey=!0):r||n.value?(s.push(this.sourceToken),t.items.push({start:s,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(n.explicitKey)if(n.sep)if(n.value)t.items.push({start:[],key:null,sep:[this.sourceToken]});else if(zt(n.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:s,key:null,sep:[this.sourceToken]}]});else if(xm(n.key)&&!zt(n.sep,"newline")){let o=ci(n.start),a=n.key,c=n.sep;c.push(this.sourceToken),delete n.key,delete n.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:o,key:a,sep:c}]})}else s.length>0?n.sep=n.sep.concat(s,this.sourceToken):n.sep.push(this.sourceToken);else if(zt(n.start,"newline"))Object.assign(n,{key:null,sep:[this.sourceToken]});else{let o=ci(n.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:o,key:null,sep:[this.sourceToken]}]})}else n.sep?n.value||r?t.items.push({start:s,key:null,sep:[this.sourceToken]}):zt(n.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):n.sep.push(this.sourceToken):Object.assign(n,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let o=this.flowScalar(this.type);r||n.value?(t.items.push({start:s,key:o,sep:[]}),this.onKeyLine=!0):n.sep?this.stack.push(o):(Object.assign(n,{key:o,sep:[]}),this.onKeyLine=!0);return}default:{let o=this.startBlockValue(t);if(o){if(o.type==="block-seq"){if(!n.explicitKey&&n.sep&&!zt(n.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 i&&t.items.push({start:s});this.stack.push(o);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(t){let n=t.items[t.items.length-1];switch(this.type){case"newline":if(n.value){let i="end"in n.value?n.value.end:void 0;(Array.isArray(i)?i[i.length-1]:void 0)?.type==="comment"?i?.push(this.sourceToken):t.items.push({start:[this.sourceToken]})}else n.start.push(this.sourceToken);return;case"space":case"comment":if(n.value)t.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(n.start,t.indent)){let r=t.items[t.items.length-2]?.value?.end;if(Array.isArray(r)){ro(r,n.start),r.push(this.sourceToken),t.items.pop();return}}n.start.push(this.sourceToken)}return;case"anchor":case"tag":if(n.value||this.indent<=t.indent)break;n.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==t.indent)break;n.value||zt(n.start,"seq-item-ind")?t.items.push({start:[this.sourceToken]}):n.start.push(this.sourceToken);return}if(this.indent>t.indent){let i=this.startBlockValue(t);if(i){this.stack.push(i);return}}yield*this.pop(),yield*this.step()}*flowCollection(t){let n=t.items[t.items.length-1];if(this.type==="flow-error-end"){let i;do yield*this.pop(),i=this.peek(1);while(i?.type==="flow-collection")}else if(t.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!n||n.sep?t.items.push({start:[this.sourceToken]}):n.start.push(this.sourceToken);return;case"map-value-ind":!n||n.value?t.items.push({start:[],key:null,sep:[this.sourceToken]}):n.sep?n.sep.push(this.sourceToken):Object.assign(n,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!n||n.value?t.items.push({start:[this.sourceToken]}):n.sep?n.sep.push(this.sourceToken):n.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let r=this.flowScalar(this.type);!n||n.value?t.items.push({start:[],key:r,sep:[]}):n.sep?this.stack.push(r):Object.assign(n,{key:r,sep:[]});return}case"flow-map-end":case"flow-seq-end":t.end.push(this.sourceToken);return}let i=this.startBlockValue(t);i?this.stack.push(i):(yield*this.pop(),yield*this.step())}else{let i=this.peek(2);if(i.type==="block-map"&&(this.type==="map-value-ind"&&i.indent===t.indent||this.type==="newline"&&!i.items[i.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&i.type!=="flow-collection"){let r=io(i),s=ci(r);_m(t);let o=t.end.splice(1,t.end.length);o.push(this.sourceToken);let a={type:"block-map",offset:t.offset,indent:t.indent,items:[{start:s,key:t,sep:o}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=a}else yield*this.lineEnd(t)}}flowScalar(t){if(this.onNewLine){let n=this.source.indexOf(` +`,n)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap(t){let n=t.items[t.items.length-1];switch(this.type){case"newline":if(this.onKeyLine=!1,n.value){let i="end"in n.value?n.value.end:void 0;(Array.isArray(i)?i[i.length-1]:void 0)?.type==="comment"?i?.push(this.sourceToken):t.items.push({start:[this.sourceToken]})}else n.sep?n.sep.push(this.sourceToken):n.start.push(this.sourceToken);return;case"space":case"comment":if(n.value)t.items.push({start:[this.sourceToken]});else if(n.sep)n.sep.push(this.sourceToken);else{if(this.atIndentedComment(n.start,t.indent)){let r=t.items[t.items.length-2]?.value?.end;if(Array.isArray(r)){ro(r,n.start),r.push(this.sourceToken),t.items.pop();return}}n.start.push(this.sourceToken)}return}if(this.indent>=t.indent){let i=!this.onKeyLine&&this.indent===t.indent,r=i&&(n.sep||n.explicitKey)&&this.type!=="seq-item-ind",s=[];if(r&&n.sep&&!n.value){let o=[];for(let a=0;at.indent&&(o.length=0);break;default:o.length=0}}o.length>=2&&(s=n.sep.splice(o[1]))}switch(this.type){case"anchor":case"tag":r||n.value?(s.push(this.sourceToken),t.items.push({start:s}),this.onKeyLine=!0):n.sep?n.sep.push(this.sourceToken):n.start.push(this.sourceToken);return;case"explicit-key-ind":!n.sep&&!n.explicitKey?(n.start.push(this.sourceToken),n.explicitKey=!0):r||n.value?(s.push(this.sourceToken),t.items.push({start:s,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(n.explicitKey)if(n.sep)if(n.value)t.items.push({start:[],key:null,sep:[this.sourceToken]});else if(Xt(n.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:s,key:null,sep:[this.sourceToken]}]});else if(xm(n.key)&&!Xt(n.sep,"newline")){let o=ci(n.start),a=n.key,c=n.sep;c.push(this.sourceToken),delete n.key,delete n.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:o,key:a,sep:c}]})}else s.length>0?n.sep=n.sep.concat(s,this.sourceToken):n.sep.push(this.sourceToken);else if(Xt(n.start,"newline"))Object.assign(n,{key:null,sep:[this.sourceToken]});else{let o=ci(n.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:o,key:null,sep:[this.sourceToken]}]})}else n.sep?n.value||r?t.items.push({start:s,key:null,sep:[this.sourceToken]}):Xt(n.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):n.sep.push(this.sourceToken):Object.assign(n,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let o=this.flowScalar(this.type);r||n.value?(t.items.push({start:s,key:o,sep:[]}),this.onKeyLine=!0):n.sep?this.stack.push(o):(Object.assign(n,{key:o,sep:[]}),this.onKeyLine=!0);return}default:{let o=this.startBlockValue(t);if(o){if(o.type==="block-seq"){if(!n.explicitKey&&n.sep&&!Xt(n.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 i&&t.items.push({start:s});this.stack.push(o);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(t){let n=t.items[t.items.length-1];switch(this.type){case"newline":if(n.value){let i="end"in n.value?n.value.end:void 0;(Array.isArray(i)?i[i.length-1]:void 0)?.type==="comment"?i?.push(this.sourceToken):t.items.push({start:[this.sourceToken]})}else n.start.push(this.sourceToken);return;case"space":case"comment":if(n.value)t.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(n.start,t.indent)){let r=t.items[t.items.length-2]?.value?.end;if(Array.isArray(r)){ro(r,n.start),r.push(this.sourceToken),t.items.pop();return}}n.start.push(this.sourceToken)}return;case"anchor":case"tag":if(n.value||this.indent<=t.indent)break;n.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==t.indent)break;n.value||Xt(n.start,"seq-item-ind")?t.items.push({start:[this.sourceToken]}):n.start.push(this.sourceToken);return}if(this.indent>t.indent){let i=this.startBlockValue(t);if(i){this.stack.push(i);return}}yield*this.pop(),yield*this.step()}*flowCollection(t){let n=t.items[t.items.length-1];if(this.type==="flow-error-end"){let i;do yield*this.pop(),i=this.peek(1);while(i?.type==="flow-collection")}else if(t.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!n||n.sep?t.items.push({start:[this.sourceToken]}):n.start.push(this.sourceToken);return;case"map-value-ind":!n||n.value?t.items.push({start:[],key:null,sep:[this.sourceToken]}):n.sep?n.sep.push(this.sourceToken):Object.assign(n,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!n||n.value?t.items.push({start:[this.sourceToken]}):n.sep?n.sep.push(this.sourceToken):n.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let r=this.flowScalar(this.type);!n||n.value?t.items.push({start:[],key:r,sep:[]}):n.sep?this.stack.push(r):Object.assign(n,{key:r,sep:[]});return}case"flow-map-end":case"flow-seq-end":t.end.push(this.sourceToken);return}let i=this.startBlockValue(t);i?this.stack.push(i):(yield*this.pop(),yield*this.step())}else{let i=this.peek(2);if(i.type==="block-map"&&(this.type==="map-value-ind"&&i.indent===t.indent||this.type==="newline"&&!i.items[i.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&i.type!=="flow-collection"){let r=io(i),s=ci(r);_m(t);let o=t.end.splice(1,t.end.length);o.push(this.sourceToken);let a={type:"block-map",offset:t.offset,indent:t.indent,items:[{start:s,key:t,sep:o}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=a}else yield*this.lineEnd(t)}}flowScalar(t){if(this.onNewLine){let n=this.source.indexOf(` `)+1;for(;n!==0;)this.onNewLine(this.offset+n),n=this.source.indexOf(` -`,n)+1}return{type:t,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(t){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 n=io(t),i=ci(n);return i.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let n=io(t),i=ci(n);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(t,n){return this.type!=="comment"||this.indent<=n?!1:t.every(i=>i.type==="newline"||i.type==="space")}*documentEnd(t){this.type!=="doc-mode"&&(t.end?t.end.push(this.sourceToken):t.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop()))}*lineEnd(t){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:t.end?t.end.push(this.sourceToken):t.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop())}}};Pm.Parser=al});var Nm=v(mr=>{"use strict";var Om=Vc(),FC=rr(),dr=ar(),BC=Ua(),HC=M(),KC=ol(),$m=cl();function Am(e){let t=e.prettyErrors!==!1;return{lineCounter:e.lineCounter||t&&new KC.LineCounter||null,prettyErrors:t}}function JC(e,t={}){let{lineCounter:n,prettyErrors:i}=Am(t),r=new $m.Parser(n?.addNewLine),s=new Om.Composer(t),o=Array.from(s.compose(r.parse(e)));if(i&&n)for(let a of o)a.errors.forEach(dr.prettifyError(e,n)),a.warnings.forEach(dr.prettifyError(e,n));return o.length>0?o:Object.assign([],{empty:!0},s.streamInfo())}function Im(e,t={}){let{lineCounter:n,prettyErrors:i}=Am(t),r=new $m.Parser(n?.addNewLine),s=new Om.Composer(t),o=null;for(let a of s.compose(r.parse(e),!0,e.length))if(!o)o=a;else if(o.options.logLevel!=="silent"){o.errors.push(new dr.YAMLParseError(a.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return i&&n&&(o.errors.forEach(dr.prettifyError(e,n)),o.warnings.forEach(dr.prettifyError(e,n))),o}function UC(e,t,n){let i;typeof t=="function"?i=t:n===void 0&&t&&typeof t=="object"&&(n=t);let r=Im(e,n);if(!r)return null;if(r.warnings.forEach(s=>BC.warn(r.options.logLevel,s)),r.errors.length>0){if(r.options.logLevel!=="silent")throw r.errors[0];r.errors=[]}return r.toJS(Object.assign({reviver:i},n))}function GC(e,t,n){let i=null;if(typeof t=="function"||Array.isArray(t)?i=t:n===void 0&&t&&(n=t),typeof n=="string"&&(n=n.length),typeof n=="number"){let r=Math.round(n);n=r<1?void 0:r>8?{indent:8}:{indent:r}}if(e===void 0){let{keepUndefined:r}=n??t??{};if(!r)return}return HC.isDocument(e)&&!i?e.toString(n):new FC.Document(e,i,n).toString(n)}mr.parse=UC;mr.parseAllDocuments=JC;mr.parseDocument=Im;mr.stringify=GC});var He=v(W=>{"use strict";var VC=Vc(),YC=rr(),zC=Pc(),ll=ar(),XC=Bi(),Xt=M(),QC=Ut(),ZC=Z(),ek=Vt(),tk=Yt(),nk=to(),ik=rl(),rk=ol(),sk=cl(),so=Nm(),Tm=qi();W.Composer=VC.Composer;W.Document=YC.Document;W.Schema=zC.Schema;W.YAMLError=ll.YAMLError;W.YAMLParseError=ll.YAMLParseError;W.YAMLWarning=ll.YAMLWarning;W.Alias=XC.Alias;W.isAlias=Xt.isAlias;W.isCollection=Xt.isCollection;W.isDocument=Xt.isDocument;W.isMap=Xt.isMap;W.isNode=Xt.isNode;W.isPair=Xt.isPair;W.isScalar=Xt.isScalar;W.isSeq=Xt.isSeq;W.Pair=QC.Pair;W.Scalar=ZC.Scalar;W.YAMLMap=ek.YAMLMap;W.YAMLSeq=tk.YAMLSeq;W.CST=nk;W.Lexer=ik.Lexer;W.LineCounter=rk.LineCounter;W.Parser=sk.Parser;W.parse=so.parse;W.parseAllDocuments=so.parseAllDocuments;W.parseDocument=so.parseDocument;W.stringify=so.stringify;W.visit=Tm.visit;W.visitAsync=Tm.visitAsync});import li from"path";function qm(e,t){return oo[t][e]}function uk(e,t,n){let i=/^(\s*)([a-z_]+):/u.exec(e);if(!i)return null;let r=i[1].length,s=i[2];if(r===0&&s in oo.en)return s;if(r===2&&t){let o=`${t}.${s}`;if(o in oo.en)return o}if(r===2&&t===null&&s==="hook")return"hook";if(r===2&&t==="hook"&&s==="allow_paths")return"hook.allow_paths";if(r===4&&t==="native"&&n==="snapshot"){let o=`native.snapshot.${s}`;if(o in oo.en)return o}return null}function xn(e,t){let n=[],i=null,r=null;for(let s of(0,ao.stringify)(e).trimEnd().split(` -`)){let o=uk(s,i,r);if(o){let a=s.match(/^\s*/u)?.[0]??"";for(let c of qm(o,t).split(` +`,n)+1}return{type:t,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(t){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 n=io(t),i=ci(n);return i.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let n=io(t),i=ci(n);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(t,n){return this.type!=="comment"||this.indent<=n?!1:t.every(i=>i.type==="newline"||i.type==="space")}*documentEnd(t){this.type!=="doc-mode"&&(t.end?t.end.push(this.sourceToken):t.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop()))}*lineEnd(t){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:t.end?t.end.push(this.sourceToken):t.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop())}}};Pm.Parser=ol});var Nm=C(hr=>{"use strict";var Om=Gc(),HC=or(),pr=lr(),KC=Ja(),JC=M(),UC=sl(),$m=al();function Am(e){let t=e.prettyErrors!==!1;return{lineCounter:e.lineCounter||t&&new UC.LineCounter||null,prettyErrors:t}}function GC(e,t={}){let{lineCounter:n,prettyErrors:i}=Am(t),r=new $m.Parser(n?.addNewLine),s=new Om.Composer(t),o=Array.from(s.compose(r.parse(e)));if(i&&n)for(let a of o)a.errors.forEach(pr.prettifyError(e,n)),a.warnings.forEach(pr.prettifyError(e,n));return o.length>0?o:Object.assign([],{empty:!0},s.streamInfo())}function Im(e,t={}){let{lineCounter:n,prettyErrors:i}=Am(t),r=new $m.Parser(n?.addNewLine),s=new Om.Composer(t),o=null;for(let a of s.compose(r.parse(e),!0,e.length))if(!o)o=a;else if(o.options.logLevel!=="silent"){o.errors.push(new pr.YAMLParseError(a.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return i&&n&&(o.errors.forEach(pr.prettifyError(e,n)),o.warnings.forEach(pr.prettifyError(e,n))),o}function VC(e,t,n){let i;typeof t=="function"?i=t:n===void 0&&t&&typeof t=="object"&&(n=t);let r=Im(e,n);if(!r)return null;if(r.warnings.forEach(s=>KC.warn(r.options.logLevel,s)),r.errors.length>0){if(r.options.logLevel!=="silent")throw r.errors[0];r.errors=[]}return r.toJS(Object.assign({reviver:i},n))}function YC(e,t,n){let i=null;if(typeof t=="function"||Array.isArray(t)?i=t:n===void 0&&t&&(n=t),typeof n=="string"&&(n=n.length),typeof n=="number"){let r=Math.round(n);n=r<1?void 0:r>8?{indent:8}:{indent:r}}if(e===void 0){let{keepUndefined:r}=n??t??{};if(!r)return}return JC.isDocument(e)&&!i?e.toString(n):new HC.Document(e,i,n).toString(n)}hr.parse=VC;hr.parseAllDocuments=GC;hr.parseDocument=Im;hr.stringify=YC});var He=C(F=>{"use strict";var zC=Gc(),XC=or(),QC=xc(),cl=lr(),ZC=Ki(),Qt=M(),ek=Gt(),tk=Q(),nk=Yt(),ik=zt(),rk=to(),sk=il(),ok=sl(),ak=al(),so=Nm(),Tm=Wi();F.Composer=zC.Composer;F.Document=XC.Document;F.Schema=QC.Schema;F.YAMLError=cl.YAMLError;F.YAMLParseError=cl.YAMLParseError;F.YAMLWarning=cl.YAMLWarning;F.Alias=ZC.Alias;F.isAlias=Qt.isAlias;F.isCollection=Qt.isCollection;F.isDocument=Qt.isDocument;F.isMap=Qt.isMap;F.isNode=Qt.isNode;F.isPair=Qt.isPair;F.isScalar=Qt.isScalar;F.isSeq=Qt.isSeq;F.Pair=ek.Pair;F.Scalar=tk.Scalar;F.YAMLMap=nk.YAMLMap;F.YAMLSeq=ik.YAMLSeq;F.CST=rk;F.Lexer=sk.Lexer;F.LineCounter=ok.LineCounter;F.Parser=ak.Parser;F.parse=so.parse;F.parseAllDocuments=so.parseAllDocuments;F.parseDocument=so.parseDocument;F.stringify=so.stringify;F.visit=Tm.visit;F.visitAsync=Tm.visitAsync});import li from"path";function qm(e,t){return oo[t][e]}function dk(e,t,n){let i=/^(\s*)([a-z_]+):/u.exec(e);if(!i)return null;let r=i[1].length,s=i[2];if(r===0&&s in oo.en)return s;if(r===2&&t){let o=`${t}.${s}`;if(o in oo.en)return o}if(r===2&&t===null&&s==="hook")return"hook";if(r===2&&t==="hook"&&s==="allow_paths")return"hook.allow_paths";if(r===4&&t==="native"&&n==="snapshot"){let o=`native.snapshot.${s}`;if(o in oo.en)return o}return null}function xn(e,t){let n=[],i=null,r=null;for(let s of(0,ao.stringify)(e).trimEnd().split(` +`)){let o=dk(s,i,r);if(o){let a=s.match(/^\s*/u)?.[0]??"";for(let c of qm(o,t).split(` `))n.push(`${a}${c}`)}n.push(s),/^[a-z_]+:/u.test(s)?(s.startsWith("native:")?i="native":s.startsWith("classic:")?i="classic":s.startsWith("hook:")?i="hook":i=null,r=null):/^ {2}[a-z_]+:/u.test(s)&&i==="native"&&(r=s.startsWith(" snapshot:")?"snapshot":null)}return n.push(""),n.join(` -`)}function fk(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);let n=e.trim();if(n.length===0||li.posix.isAbsolute(n)||li.win32.isAbsolute(n)||/^(?:~|[\\/])/u.test(n))throw new Error(`${t} must be a project-relative path`);if(n===".")return[];let i=n.replaceAll("\\","/").split("/");if(i.some(r=>r===".."))throw new Error(`${t} must stay inside the project root`);if(i.some(r=>r===""||r==="."))throw new Error(`${t} must not contain empty or dot path segments`);return i}function pr(e){let t=fk(e,"native.artifact_root");return t.length===0?".":t.join("/")}function Dm(e,t="docs"){let n=e??t;if(n!=="legacy"&&n!=="docs")throw new Error("classic.artifact_layout must be legacy or docs");return n}function Rt(e,t,n=!1){if(typeof e!="string")throw new Error(`${t} must be a string`);let i=e.trim().replaceAll("\\","/");if(i.length===0||li.posix.isAbsolute(i)||li.win32.isAbsolute(i)||/^(?:~|[\\/])/u.test(i))throw new Error(`${t} must be relative to its declared path base`);let r=i.split("/");if(r.some(s=>s===".."))throw new Error(`${t} must stay inside its declared path base`);if(r.some(s=>s===""||s==="."))throw new Error(`${t} must not contain empty or dot path segments`);if(!n&&/[*?]/u.test(i))throw new Error(`${t} cannot contain wildcards`);return r.join("/")}function Qt(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t} must be a mapping`);return e}function Wm(e,t,n){let i=e??t;if(i!=="en"&&i!=="zh-CN")throw new Error(`${n} must be en or zh-CN`);return i}function Fm(e,t){if(typeof e!="string"||e.length===0||e.includes("\\")||e.includes("\0")||e.startsWith("/")||e.split("/").includes(".."))throw new Error(`${t} contains an unsafe pattern`);if(e.length>fl)throw new Error(`${t} exceeds ${fl} characters`);let n=0;for(let i=0;idl)throw new Error(`${t} contains more than ${dl} wildcard tokens`);return e}function Lm(e,t,n){if(e===void 0)return[...n];if(!Array.isArray(e))throw new Error(`${t} contains an unsafe pattern`);return[...new Set(e.map(i=>Fm(i,t)))].sort((i,r)=>i.localeCompare(r,"en"))}function ul(e,t,n){let i=e??t;if(!Number.isSafeInteger(i)||i<1)throw new Error(`${n} must be a positive integer`);return i}function dk(e){if(e===void 0)return{...Ke,include:[...Ke.include],exclude:[...Ke.exclude]};let t=Qt(e,"native.snapshot");return{include:Lm(t.include,"native.snapshot.include",Ke.include),exclude:Lm(t.exclude,"native.snapshot.exclude",Ke.exclude),max_files:ul(t.max_files,Ke.max_files,"native.snapshot.max_files"),max_total_bytes:ul(t.max_total_bytes,Ke.max_total_bytes,"native.snapshot.max_total_bytes"),max_duration_ms:ul(t.max_duration_ms,Ke.max_duration_ms,"native.snapshot.max_duration_ms")}}function mk(e){if(e===void 0)return;let t=Qt(e,"native.pending_root_move"),n=t.id,i=t.from_artifact_root,r=t.to_artifact_root,s=t.stage;if(typeof n!="string"||!/^[a-f0-9-]{8,}$/u.test(n))throw new Error("native.pending_root_move.id is invalid");if(typeof i!="string"||typeof r!="string")throw new Error("native.pending_root_move roots must be strings");if(s!=="copying"&&s!=="ready"&&s!=="switched")throw new Error("native.pending_root_move.stage is invalid");let o;if(t.cleanup!==void 0){let a=Qt(t.cleanup,"native.pending_root_move.cleanup"),c=a.kind,l=a.state,u=a.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 u!="string"||!/^[a-f0-9]{64}$/u.test(u))throw new Error("native.pending_root_move.cleanup.manifest_hash is invalid");o={kind:c,state:l,manifestHash:u}}return{id:n,fromArtifactRoot:pr(i),toArtifactRoot:pr(r),stage:s,...o?{cleanup:o}:{}}}function pk(e){if(e===void 0)return;let t=Qt(e,"native.finish");if(t.pull_request===void 0)return{};let n=Qt(t.pull_request,"native.finish.pull_request");if(n.provider!=="repository-command")throw new Error("native.finish.pull_request.provider must be repository-command");if(!Array.isArray(n.command)||n.command.length===0)throw new Error("native.finish.pull_request.command must be a non-empty array");if(n.command.length>64)throw new Error("native.finish.pull_request.command must contain at most 64 arguments");let i=n.command.map((s,o)=>{if(typeof s!="string"||s.trim().length===0||s.length>4096||/[\0\r\n]/u.test(s))throw new Error(`native.finish.pull_request.command[${o}] must be a non-empty single-line string of at most 4096 characters`);return s});if(li.posix.isAbsolute(i[0])||li.win32.isAbsolute(i[0]))throw new Error("native.finish.pull_request.command[0] must be a bare executable name or a project-relative path");let r=n.timeout_ms??ok;if(!Number.isSafeInteger(r)||r<1||r>jm)throw new Error(`native.finish.pull_request.timeout_ms must be an integer between 1 and ${jm}`);return{pull_request:{provider:"repository-command",command:i,timeout_ms:r}}}function hk(e,t={}){let n=Qt(e,"native"),i=n.artifact_root??(t.allowMissingArtifactRoot?"docs":void 0);if(typeof i!="string")throw new Error("native.artifact_root must be a string");let r=n.clarification_mode??"batch";if(r!=="sequential"&&r!=="batch")throw new Error("native.clarification_mode must be sequential or batch");let s=n.archive_confirmation??"automatic";if(s!=="automatic"&&s!=="required")throw new Error("native.archive_confirmation must be automatic or required");let o=n.max_verify_failures??Mm;if(!Number.isSafeInteger(o)||o<1)throw new Error("native.max_verify_failures must be a positive integer");let a=mk(n.pending_root_move),c=pk(n.finish);return{artifact_root:pr(i),language:Wm(n.language,"en","native.language"),clarification_mode:r,archive_confirmation:s,max_verify_failures:o,snapshot:dk(n.snapshot),...c?{finish:c}:{},...a?{pending_root_move:a}:{}}}function gk(e){let t=Qt(e,"classic"),n=t.context_compression??"off";if(n!=="off"&&n!=="beta")throw new Error("classic.context_compression must be off or beta");let i=t.review_mode??"standard";if(i!=="off"&&i!=="standard"&&i!=="thorough")throw new Error("classic.review_mode must be off, standard, or thorough");let r=t.auto_transition??!0;if(typeof r!="boolean")throw new Error("classic.auto_transition must be true or false");return{artifact_layout:Dm(t.artifact_layout),language:Wm(t.language,"zh-CN","classic.language"),context_compression:n,review_mode:i,auto_transition:r}}function wk(e){let n=Qt(e,"hook").allow_paths??[];if(!Array.isArray(n))throw new Error("hook.allow_paths must be an array");return{allow_paths:[...new Set(n.map((i,r)=>Rt(i,`hook.allow_paths[${r}]`)))]}}function yk(e){let t=e??!0;if(typeof t!="boolean")throw new Error("ambient_resume must be true or false");return t}function vk(e,t,n,i,r,s){let o=e.schema!==void 0;if(!(o||e.default_workflow!==void 0||e.workflows!==void 0||!s.allowPartialProject&&e.native!==void 0)||s.allowPartialProject&&!o)return null;if(e.schema!=="comet.project.v1")throw new Error("Unsupported Comet project schema");if(e.default_workflow!=="native"&&e.default_workflow!=="classic")throw new Error("default_workflow must be native or classic");let c=e.workflows??[e.default_workflow];if(!Array.isArray(c)||c.length===0||c.some(u=>u!=="native"&&u!=="classic"))throw new Error("workflows must contain native and/or classic");let l=[...new Set(c)];if(!l.includes(e.default_workflow))throw new Error("workflows must include default_workflow");if(l.includes("native")&&!n)throw new Error("native must be a mapping");return{schema:"comet.project.v1",default_workflow:e.default_workflow,workflows:l,ambient_resume:r,...t?{hook:t}:{},...n?{native:n}:{},...i?{classic:i}:{}}}function dt(e,t={}){let n=(0,ao.parseDocument)(e,{uniqueKeys:!0});if(n.errors.length>0)throw new Error(`Invalid .comet/config.yaml: ${n.errors[0].message}`);let i=n.toJS();if(i==null)return{value:{},config:null,ambient_resume:!0};if(typeof i!="object"||Array.isArray(i))throw new Error("Invalid .comet/config.yaml: root must be a mapping");let r=i,s=yk(r.ambient_resume),o=r.hook===void 0?void 0:wk(r.hook),a=r.native===void 0?void 0:hk(r.native,{allowMissingArtifactRoot:t.allowMissingNativeFields}),c=r.classic===void 0?void 0:gk(r.classic),l=vk(r,o,a,c,s,{allowPartialProject:t.allowPartialProject??!1});return{value:r,config:l,ambient_resume:s,...o?{hook:o}:{},...a?{native:a}:{},...c?{classic:c}:{}}}function ml(e="docs",t="en"){return{schema:"comet.project.v1",default_workflow:"native",ambient_resume:!0,native:{artifact_root:pr(e),language:t,clarification_mode:"batch",archive_confirmation:"automatic",max_verify_failures:Mm,snapshot:{...Ke,include:[...Ke.include],exclude:[...Ke.exclude]}}}}var ao,_n,fl,dl,Mm,ok,jm,ak,ck,lk,Ke,oo,mt=ie(()=>{"use strict";ao=Ve(He(),1),_n=64*1024,fl=1024,dl=64,Mm=5,ok=12e4,jm=6e5,ak=[".agents/skills/**",".amazonq/skills/**",".augment/skills/**",".bob/skills/**",".claude/skills/**",".cline/skills/**",".codebuddy/skills/**",".workbuddy/skills/**",".continue/skills/**",".cospec/skills/**",".crush/skills/**",".cursor/skills/**",".factory/skills/**",".forge/skills/**",".gemini/skills/**",".github/skills/**",".iflow/skills/**",".junie/skills/**",".kilocode/skills/**",".kimi-code/skills/**",".kiro/skills/**",".lingma/skills/**",".mimocode/skills/**",".opencode/skills/**",".pi/skills/**",".qoder/skills/**",".qwen/skills/**",".roo/skills/**",".trae-cn/skills/**",".trae/skills/**",".windsurf/skills/**",".zcode/skills/**"],ck=["**/.idea/**","**/.vscode/**",".codex/skills/**","**/node_modules/**","**/.next/**","**/.nuxt/**","**/.output/**","**/.svelte-kit/**","**/.vite/**","**/.parcel-cache/**","**/.turbo/**","**/.nx/cache/**","**/dist/**","**/build/**","**/out/**","**/coverage/**","**/.nyc_output/**","**/target/**","**/.gradle/**","**/.cxx/**","**/.externalNativeBuild/**","**/captures/**","**/__pycache__/**","**/.pytest_cache/**","**/.mypy_cache/**","**/.ruff_cache/**","**/.tox/**","**/.nox/**","**/.venv/**","**/venv/**","**/obj/**","**/CMakeFiles/**","**/cmake-build-*/**","**/.cache/**","**/tmp/**","**/temp/**","**/logs/**","**/*.tsbuildinfo","**/*.log","**/.DS_Store","**/Thumbs.db"],lk=[...ak,...ck].sort((e,t)=>e.localeCompare(t,"en")),Ke={include:["**/*"],exclude:[...lk],max_files:1e4,max_total_bytes:256*1024*1024,max_duration_ms:6e4},oo={en:{schema:"# Configuration schema used by Comet. Do not edit this value.",default_workflow:"# Default workflow entered by /comet. Must also appear in workflows.",workflows:"# Workflows enabled in this project: native, classic, or both.",ambient_resume:`# Enables automatic recovery through the read-only Ambient Resume probe for both Native and Classic. Set false to disable it. +`)}function mk(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);let n=e.trim();if(n.length===0||li.posix.isAbsolute(n)||li.win32.isAbsolute(n)||/^(?:~|[\\/])/u.test(n))throw new Error(`${t} must be a project-relative path`);if(n===".")return[];let i=n.replaceAll("\\","/").split("/");if(i.some(r=>r===".."))throw new Error(`${t} must stay inside the project root`);if(i.some(r=>r===""||r==="."))throw new Error(`${t} must not contain empty or dot path segments`);return i}function gr(e){let t=mk(e,"native.artifact_root");return t.length===0?".":t.join("/")}function Dm(e,t="docs"){let n=e??t;if(n!=="legacy"&&n!=="docs")throw new Error("classic.artifact_layout must be legacy or docs");return n}function xt(e,t,n=!1){if(typeof e!="string")throw new Error(`${t} must be a string`);let i=e.trim().replaceAll("\\","/");if(i.length===0||li.posix.isAbsolute(i)||li.win32.isAbsolute(i)||/^(?:~|[\\/])/u.test(i))throw new Error(`${t} must be relative to its declared path base`);let r=i.split("/");if(r.some(s=>s===".."))throw new Error(`${t} must stay inside its declared path base`);if(r.some(s=>s===""||s==="."))throw new Error(`${t} must not contain empty or dot path segments`);if(!n&&/[*?]/u.test(i))throw new Error(`${t} cannot contain wildcards`);return r.join("/")}function Zt(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t} must be a mapping`);return e}function Wm(e,t,n){let i=e??t;if(i!=="en"&&i!=="zh-CN")throw new Error(`${n} must be en or zh-CN`);return i}function Fm(e,t){if(typeof e!="string"||e.length===0||e.includes("\\")||e.includes("\0")||e.startsWith("/")||e.split("/").includes(".."))throw new Error(`${t} contains an unsafe pattern`);if(e.length>ul)throw new Error(`${t} exceeds ${ul} characters`);let n=0;for(let i=0;ifl)throw new Error(`${t} contains more than ${fl} wildcard tokens`);return e}function Lm(e,t,n){if(e===void 0)return[...n];if(!Array.isArray(e))throw new Error(`${t} contains an unsafe pattern`);return[...new Set(e.map(i=>Fm(i,t)))].sort((i,r)=>i.localeCompare(r,"en"))}function ll(e,t,n){let i=e??t;if(!Number.isSafeInteger(i)||i<1)throw new Error(`${n} must be a positive integer`);return i}function pk(e){if(e===void 0)return{...Ke,include:[...Ke.include],exclude:[...Ke.exclude]};let t=Zt(e,"native.snapshot");return{include:Lm(t.include,"native.snapshot.include",Ke.include),exclude:Lm(t.exclude,"native.snapshot.exclude",Ke.exclude),max_files:ll(t.max_files,Ke.max_files,"native.snapshot.max_files"),max_total_bytes:ll(t.max_total_bytes,Ke.max_total_bytes,"native.snapshot.max_total_bytes"),max_duration_ms:ll(t.max_duration_ms,Ke.max_duration_ms,"native.snapshot.max_duration_ms")}}function hk(e){if(e===void 0)return;let t=Zt(e,"native.pending_root_move"),n=t.id,i=t.from_artifact_root,r=t.to_artifact_root,s=t.stage;if(typeof n!="string"||!/^[a-f0-9-]{8,}$/u.test(n))throw new Error("native.pending_root_move.id is invalid");if(typeof i!="string"||typeof r!="string")throw new Error("native.pending_root_move roots must be strings");if(s!=="copying"&&s!=="ready"&&s!=="switched")throw new Error("native.pending_root_move.stage is invalid");let o;if(t.cleanup!==void 0){let a=Zt(t.cleanup,"native.pending_root_move.cleanup"),c=a.kind,l=a.state,u=a.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 u!="string"||!/^[a-f0-9]{64}$/u.test(u))throw new Error("native.pending_root_move.cleanup.manifest_hash is invalid");o={kind:c,state:l,manifestHash:u}}return{id:n,fromArtifactRoot:gr(i),toArtifactRoot:gr(r),stage:s,...o?{cleanup:o}:{}}}function gk(e){if(e===void 0)return;let t=Zt(e,"native.finish");if(t.pull_request===void 0)return{};let n=Zt(t.pull_request,"native.finish.pull_request");if(n.provider!=="repository-command")throw new Error("native.finish.pull_request.provider must be repository-command");if(!Array.isArray(n.command)||n.command.length===0)throw new Error("native.finish.pull_request.command must be a non-empty array");if(n.command.length>64)throw new Error("native.finish.pull_request.command must contain at most 64 arguments");let i=n.command.map((s,o)=>{if(typeof s!="string"||s.trim().length===0||s.length>4096||/[\0\r\n]/u.test(s))throw new Error(`native.finish.pull_request.command[${o}] must be a non-empty single-line string of at most 4096 characters`);return s});if(li.posix.isAbsolute(i[0])||li.win32.isAbsolute(i[0]))throw new Error("native.finish.pull_request.command[0] must be a bare executable name or a project-relative path");let r=n.timeout_ms??ck;if(!Number.isSafeInteger(r)||r<1||r>jm)throw new Error(`native.finish.pull_request.timeout_ms must be an integer between 1 and ${jm}`);return{pull_request:{provider:"repository-command",command:i,timeout_ms:r}}}function wk(e,t={}){let n=Zt(e,"native"),i=n.artifact_root??(t.allowMissingArtifactRoot?"docs":void 0);if(typeof i!="string")throw new Error("native.artifact_root must be a string");let r=n.clarification_mode??"batch";if(r!=="sequential"&&r!=="batch")throw new Error("native.clarification_mode must be sequential or batch");let s=n.archive_confirmation??"automatic";if(s!=="automatic"&&s!=="required")throw new Error("native.archive_confirmation must be automatic or required");let o=n.max_verify_failures??Mm;if(!Number.isSafeInteger(o)||o<1)throw new Error("native.max_verify_failures must be a positive integer");let a=hk(n.pending_root_move),c=gk(n.finish);return{artifact_root:gr(i),language:Wm(n.language,"en","native.language"),clarification_mode:r,archive_confirmation:s,max_verify_failures:o,snapshot:pk(n.snapshot),...c?{finish:c}:{},...a?{pending_root_move:a}:{}}}function yk(e){let t=Zt(e,"classic"),n=t.context_compression??"off";if(n!=="off"&&n!=="beta")throw new Error("classic.context_compression must be off or beta");let i=t.review_mode??"standard";if(i!=="off"&&i!=="standard"&&i!=="thorough")throw new Error("classic.review_mode must be off, standard, or thorough");let r=t.auto_transition??!0;if(typeof r!="boolean")throw new Error("classic.auto_transition must be true or false");return{artifact_layout:Dm(t.artifact_layout),language:Wm(t.language,"zh-CN","classic.language"),context_compression:n,review_mode:i,auto_transition:r}}function vk(e){let n=Zt(e,"hook").allow_paths??[];if(!Array.isArray(n))throw new Error("hook.allow_paths must be an array");return{allow_paths:[...new Set(n.map((i,r)=>xt(i,`hook.allow_paths[${r}]`)))]}}function bk(e){let t=e??!0;if(typeof t!="boolean")throw new Error("ambient_resume must be true or false");return t}function Ck(e,t,n,i,r,s){let o=e.schema!==void 0;if(!(o||e.default_workflow!==void 0||e.workflows!==void 0||!s.allowPartialProject&&e.native!==void 0)||s.allowPartialProject&&!o)return null;if(e.schema!=="comet.project.v1")throw new Error("Unsupported Comet project schema");if(e.default_workflow!=="native"&&e.default_workflow!=="classic")throw new Error("default_workflow must be native or classic");let c=e.workflows??[e.default_workflow];if(!Array.isArray(c)||c.length===0||c.some(u=>u!=="native"&&u!=="classic"))throw new Error("workflows must contain native and/or classic");let l=[...new Set(c)];if(!l.includes(e.default_workflow))throw new Error("workflows must include default_workflow");if(l.includes("native")&&!n)throw new Error("native must be a mapping");return{schema:"comet.project.v1",default_workflow:e.default_workflow,workflows:l,ambient_resume:r,...t?{hook:t}:{},...n?{native:n}:{},...i?{classic:i}:{}}}function mt(e,t={}){let n=(0,ao.parseDocument)(e,{uniqueKeys:!0});if(n.errors.length>0)throw new Error(`Invalid .comet/config.yaml: ${n.errors[0].message}`);let i=n.toJS();if(i==null)return{value:{},config:null,ambient_resume:!0};if(typeof i!="object"||Array.isArray(i))throw new Error("Invalid .comet/config.yaml: root must be a mapping");let r=i,s=bk(r.ambient_resume),o=r.hook===void 0?void 0:vk(r.hook),a=r.native===void 0?void 0:wk(r.native,{allowMissingArtifactRoot:t.allowMissingNativeFields}),c=r.classic===void 0?void 0:yk(r.classic),l=Ck(r,o,a,c,s,{allowPartialProject:t.allowPartialProject??!1});return{value:r,config:l,ambient_resume:s,...o?{hook:o}:{},...a?{native:a}:{},...c?{classic:c}:{}}}function dl(e="docs",t="en"){return{schema:"comet.project.v1",default_workflow:"native",ambient_resume:!0,native:{artifact_root:gr(e),language:t,clarification_mode:"batch",archive_confirmation:"automatic",max_verify_failures:Mm,snapshot:{...Ke,include:[...Ke.include],exclude:[...Ke.exclude]}}}}var ao,_n,ul,fl,Mm,ck,jm,lk,uk,fk,Ke,oo,pt=ne(()=>{"use strict";ao=Ve(He(),1),_n=64*1024,ul=1024,fl=64,Mm=5,ck=12e4,jm=6e5,lk=[".agents/skills/**",".amazonq/skills/**",".augment/skills/**",".bob/skills/**",".claude/skills/**",".cline/skills/**",".codebuddy/skills/**",".workbuddy/skills/**",".continue/skills/**",".cospec/skills/**",".crush/skills/**",".cursor/skills/**",".factory/skills/**",".forge/skills/**",".gemini/skills/**",".github/skills/**",".iflow/skills/**",".junie/skills/**",".kilocode/skills/**",".kimi-code/skills/**",".kiro/skills/**",".lingma/skills/**",".mimocode/skills/**",".opencode/skills/**",".pi/skills/**",".qoder/skills/**",".qwen/skills/**",".roo/skills/**",".trae-cn/skills/**",".trae/skills/**",".windsurf/skills/**",".zcode/skills/**"],uk=["**/.idea/**","**/.vscode/**",".codex/skills/**","**/node_modules/**","**/.next/**","**/.nuxt/**","**/.output/**","**/.svelte-kit/**","**/.vite/**","**/.parcel-cache/**","**/.turbo/**","**/.nx/cache/**","**/dist/**","**/build/**","**/out/**","**/coverage/**","**/.nyc_output/**","**/target/**","**/.gradle/**","**/.cxx/**","**/.externalNativeBuild/**","**/captures/**","**/__pycache__/**","**/.pytest_cache/**","**/.mypy_cache/**","**/.ruff_cache/**","**/.tox/**","**/.nox/**","**/.venv/**","**/venv/**","**/obj/**","**/CMakeFiles/**","**/cmake-build-*/**","**/.cache/**","**/tmp/**","**/temp/**","**/logs/**","**/*.tsbuildinfo","**/*.log","**/.DS_Store","**/Thumbs.db"],fk=[...lk,...uk].sort((e,t)=>e.localeCompare(t,"en")),Ke={include:["**/*"],exclude:[...fk],max_files:1e4,max_total_bytes:256*1024*1024,max_duration_ms:6e4},oo={en:{schema:"# Configuration schema used by Comet. Do not edit this value.",default_workflow:"# Default workflow entered by /comet. Must also appear in workflows.",workflows:"# Workflows enabled in this project: native, classic, or both.",ambient_resume:`# Enables automatic recovery through the read-only Ambient Resume probe for both Native and Classic. Set false to disable it. # ambient_resume: true | false`,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. @@ -160,140 +160,140 @@ ${n.comment}`:n.comment}this.doc.range[2]=n.offset;break}default:this.errors.pus # 可选值: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`}}});function Zt(e){return e!==0&&e!==0n&&e!=="0"}function Pn(e,t){return Zt(e.dev)&&Zt(t.dev)&&Zt(e.ino)&&Zt(t.ino)}function qe(e,t){let n=Zt(e.dev)&&Zt(t.dev);if(n&&e.dev!==t.dev)return!1;let i=Zt(e.ino)&&Zt(t.ino);return i&&e.ino!==t.ino?!1:n&&i?!0:e.birthtime===t.birthtime}var hr=ie(()=>{"use strict"});import{constants as co,promises as On}from"fs";function pl(e){return"birthtimeNs"in e&&typeof e.birthtimeNs=="bigint"?e.birthtimeNs:e.birthtimeMs}function Bm(e){return"ctimeNs"in e&&typeof e.ctimeNs=="bigint"?e.ctimeNs:e.ctimeMs}function gr(e){return{dev:e.dev,ino:e.ino,birthtime:pl(e)}}function lo(e,t){let n=gr(e),i=gr(t);return Pn(n,i)?qe(n,i):qe(n,i)&&pl(e)===pl(t)&&Bm(e)===Bm(t)&&e.size===t.size}async function uo(e,t,n={}){if(!Number.isSafeInteger(t)||t<1)throw new Error("race-safe read byte limit must be a positive integer");let i=n.label??"file",r=n.bigint===!0,s=await On.lstat(e,{bigint:r});if(!s.isFile()||s.isSymbolicLink())throw new en("not-regular-file",`${i} must be a regular file`);if(BigInt(s.size)>BigInt(t))throw new en("too-large",`${i} exceeds ${t} bytes`);let o=await On.realpath(e);await n.verify?.("pre-open",{realPath:o,identity:gr(s)});let a=process.platform==="win32"?co.O_RDONLY:co.O_RDONLY|co.O_NOFOLLOW|co.O_NONBLOCK,c;try{c=await On.open(e,a)}catch(l){throw l.code==="ELOOP"?new en("not-regular-file",`${i} must be a regular file`,{cause:l}):l}try{let[l,u,f]=await Promise.all([c.stat({bigint:r}),On.lstat(e,{bigint:r}),On.realpath(e)]);if(!l.isFile()||!u.isFile()||u.isSymbolicLink()||f!==o||!lo(s,l)||!lo(s,u))throw new en("changed",`${i} changed while opening`);await n.verify?.("post-open",{realPath:f,identity:gr(l)}),await n.hooks?.afterOpen?.();let d=[],p=0,g=Buffer.allocUnsafe(Math.min(64*1024,t+1));for(;;){let w=t+1-p,{bytesRead:C}=await c.read(g,0,Math.min(g.length,w),null);if(C===0)break;if(p+=C,p>t)throw new en("too-large",`${i} exceeds ${t} bytes`);d.push(Buffer.from(g.subarray(0,C)))}await n.hooks?.beforeFinalCheck?.();let[h,m,y]=await Promise.all([c.stat({bigint:r}),On.lstat(e,{bigint:r}),On.realpath(e)]);if(!m.isFile()||m.isSymbolicLink()||y!==o||!lo(s,h)||!lo(s,m))throw new en("changed",`${i} changed while reading`);return await n.verify?.("post-read",{realPath:y,identity:gr(h)}),{bytes:Buffer.concat(d,p),stat:h,realPath:y}}finally{await c.close()}}var en,hl=ie(()=>{"use strict";hr();en=class extends Error{reason;constructor(t,n,i){super(n,i),this.name="RaceSafeReadError",this.reason=t}}});import{promises as tn}from"fs";import Xe from"path";function Hm(e){let t=e?.code;return t==="ENOENT"||t==="ENOTDIR"}function fo(e,t){let n=Xe.relative(e,t);return n===""||!Xe.isAbsolute(n)&&n!==".."&&!n.startsWith(`..${Xe.sep}`)}async function gl(e,t){let n=Xe.resolve(e),i=await tn.lstat(n);if(!i.isDirectory()||i.isSymbolicLink())throw new Error(`${t} project root must be a real directory`);return tn.realpath(n)}async function wl(e,t,n,i){let r=e;for(let s=0;s{if(!fo(s,a.realPath))throw new Error(`${i.label} resolves outside the project root`);await wl(r.projectRoot,s,r.relative.split("/"),{label:i.label,expected:"file"})}})}var _e=ie(()=>{"use strict";hl();mt()});import{createHash as bk}from"crypto";function vl(e,t){return e.exists===t.exists&&e.sha256===t.sha256}function Ck(e){let t=e?.code;return t==="ENOENT"||t==="ENOTDIR"}async function pt(e,t={}){return(await $n(e,t)).document}async function Km(e){try{return(await J(e,ce,_n,{label:ce})).bytes}catch(t){if(Ck(t))return null;throw t}}function Jm(e){return e?{exists:!0,sha256:bk("sha256").update(e).digest("hex")}:{exists:!1,sha256:null}}async function _t(e){return Jm(await Km(e))}async function $n(e,t={}){let n=await Km(e);return{document:n?dt(n.toString("utf8"),t):null,identity:Jm(n)}}async function wr(e){return(await pt(e))?.config??null}var ce,ht=ie(()=>{"use strict";mt();_e();ce=".comet/config.yaml"});import{randomUUID as kk}from"crypto";import{constants as Sk,promises as ee}from"fs";import le from"path";async function wo(e,t){try{return await ee.link(e,t),{linked:!0}}catch(n){let i=n.code;if(i!=="ENOTSUP"&&i!=="EOPNOTSUPP")throw n}return await ee.copyFile(e,t,Sk.COPYFILE_EXCL),{linked:!1}}function ui(e,t){let n=le.relative(e,t);return n===""||!le.isAbsolute(n)&&n!==".."&&!n.startsWith(`..${le.sep}`)}function ho(e){return{dev:e.dev,ino:e.ino,birthtime:e.birthtimeMs}}function Ek(e,t){return qe(e,ho(t))}function po(e,t){let n=ho(e),i=ho(t);return Pn(n,i)?qe(n,i):qe(n,i)&&e.birthtimeMs===t.birthtimeMs&&e.ctimeMs===t.ctimeMs&&e.size===t.size}async function go(e){let t=await ee.lstat(e);if(!t.isDirectory()||t.isSymbolicLink())throw new Error(`Contained atomic write parent must be a real directory: ${e}`);return{path:e,realPath:await ee.realpath(e),...ho(t)}}async function nn(e){for(let t of e){let n=await ee.lstat(t.path);if(!n.isDirectory()||n.isSymbolicLink()||!Ek(t,n)||await ee.realpath(t.path)!==t.realPath)throw new Error(`Contained atomic write parent changed before commit: ${t.path}`)}}async function Rk(e,t){let n=le.resolve(e),i=le.resolve(t);if(!ui(n,i))throw new Error(`Contained atomic write parent is outside its managed root: ${t}`);let r=[await go(n)],s=le.relative(n,i).split(le.sep).filter(Boolean),o=n;for(let a of s){await nn(r),o=le.join(o,a);try{await ee.mkdir(o)}catch(l){if(l.code!=="EEXIST")throw l}let c=await go(o);if(!ui(r[0].realPath,c.realPath))throw new Error(`Contained atomic write parent resolves outside its managed root: ${o}`);r.push(c)}return await nn(r),r}async function _k(e,t){let n=le.resolve(e),i=le.resolve(t);if(!ui(n,i))throw new Error(`Contained file parent is outside its managed root: ${t}`);let r=[await go(n)],s=le.relative(n,i).split(le.sep).filter(Boolean),o=n;for(let a of s){o=le.join(o,a);try{let c=await go(o);if(!ui(r[0].realPath,c.realPath))throw new Error(`Contained file parent resolves outside its managed root: ${o}`);r.push(c)}catch(c){if(c.code==="ENOENT")return null;throw c}}return await nn(r),r}async function Um(e){let t;try{t=await ee.open(e,"r"),await t.sync()}catch(n){let i=n.code;if(!["EACCES","EBADF","EINVAL","EISDIR","ENOTSUP","EPERM"].includes(i??""))throw n}finally{await t?.close()}}async function xk(e,t,n){let i=le.dirname(e),r=await Rk(n.containedRoot,i),s=le.join(i,`.${le.basename(e)}.${kk()}.tmp`),o,a;try{await n.beforeTemporaryOpen?.(),o=await ee.open(s,"wx"),a=await o.stat();let[c,l]=await Promise.all([ee.lstat(s),ee.realpath(s)]);if(await nn(r),!c.isFile()||c.isSymbolicLink()||!po(a,c)||!ui(r[0].realPath,l))throw new Error("Contained atomic write temporary file opened outside its managed parent");if(typeof t=="string"?await o.writeFile(t,"utf8"):await o.writeFile(t),await o.sync(),!po(a,await o.stat()))throw new Error("Contained atomic write temporary file changed while writing");await o.close(),o=void 0,await n.beforeCommit?.(),await nn(r);let u=await ee.lstat(s);if(!u.isFile()||u.isSymbolicLink()||!po(u,a))throw new Error("Contained atomic write temporary file changed before commit");n.exclusive?(await wo(s,e),await ee.unlink(s)):await ee.rename(s,e),await Um(i)}catch(c){await o?.close();try{await nn(r),await ee.rm(s,{force:!0})}catch{}throw c}}async function xe(e,t,n){await xk(e,t,n)}async function bl(e,t){let n=le.dirname(e),i=await _k(t.containedRoot,n);if(!i)return!1;let r,s;try{r=await ee.lstat(e),s=await ee.realpath(e)}catch(c){if(c.code==="ENOENT")return!1;throw c}if(!r.isFile()||r.isSymbolicLink()||!ui(i[0].realPath,s))throw new Error("Contained file removal target must be a regular file inside its managed root");await t.beforeRemove?.(),await nn(i);let[o,a]=await Promise.all([ee.lstat(e),ee.realpath(e)]);if(!o.isFile()||o.isSymbolicLink()||!po(r,o)||a!==s)throw new Error("Contained file removal target changed before removal");return await ee.unlink(e),await nn(i),await Um(n),!0}var rn=ie(()=>{"use strict";hr()});import{createHash as Pk,randomUUID as Ok}from"crypto";import{promises as sn}from"fs";function zm(e){return`.comet/config.yaml.${e}.next`}function Xm(e){return`.comet/config.yaml.${e}.quarantine`}function $k(e){return`.comet/config-write-transaction.${e}.cleanup`}function Cl(e){return Pk("sha256").update(e).digest("hex")}function Qm(e){let t=e?.code;return t==="ENOENT"||t==="ENOTDIR"}async function Sl(e){let t;try{t=(await J(e,yo,kl,{label:"project config write transaction"})).bytes}catch(o){if(Qm(o))return null;throw o}let n;try{n=JSON.parse(t.toString("utf8"))}catch{throw new Error("Invalid project config write transaction: expected JSON")}if(!n||typeof n!="object"||Array.isArray(n))throw new Error("Invalid project config write transaction: expected an object");let i=n,r=Object.keys(i).sort(),s=["candidate","expected_sha256","id","output_sha256","owner_pid","quarantine","schema"].sort();if(r.join(` +# 可选值:true | false`}}});function en(e){return e!==0&&e!==0n&&e!=="0"}function Pn(e,t){return en(e.dev)&&en(t.dev)&&en(e.ino)&&en(t.ino)}function Me(e,t){let n=en(e.dev)&&en(t.dev);if(n&&e.dev!==t.dev)return!1;let i=en(e.ino)&&en(t.ino);return i&&e.ino!==t.ino?!1:n&&i?!0:e.birthtime===t.birthtime}var wr=ne(()=>{"use strict"});import{constants as co,promises as On}from"fs";function ml(e){return"birthtimeNs"in e&&typeof e.birthtimeNs=="bigint"?e.birthtimeNs:e.birthtimeMs}function Bm(e){return"ctimeNs"in e&&typeof e.ctimeNs=="bigint"?e.ctimeNs:e.ctimeMs}function yr(e){return{dev:e.dev,ino:e.ino,birthtime:ml(e)}}function lo(e,t){let n=yr(e),i=yr(t);return Pn(n,i)?Me(n,i):Me(n,i)&&ml(e)===ml(t)&&Bm(e)===Bm(t)&&e.size===t.size}async function uo(e,t,n={}){if(!Number.isSafeInteger(t)||t<1)throw new Error("race-safe read byte limit must be a positive integer");let i=n.label??"file",r=n.bigint===!0,s=await On.lstat(e,{bigint:r});if(!s.isFile()||s.isSymbolicLink())throw new tn("not-regular-file",`${i} must be a regular file`);if(BigInt(s.size)>BigInt(t))throw new tn("too-large",`${i} exceeds ${t} bytes`);let o=await On.realpath(e);await n.verify?.("pre-open",{realPath:o,identity:yr(s)});let a=process.platform==="win32"?co.O_RDONLY:co.O_RDONLY|co.O_NOFOLLOW|co.O_NONBLOCK,c;try{c=await On.open(e,a)}catch(l){throw l.code==="ELOOP"?new tn("not-regular-file",`${i} must be a regular file`,{cause:l}):l}try{let[l,u,f]=await Promise.all([c.stat({bigint:r}),On.lstat(e,{bigint:r}),On.realpath(e)]);if(!l.isFile()||!u.isFile()||u.isSymbolicLink()||f!==o||!lo(s,l)||!lo(s,u))throw new tn("changed",`${i} changed while opening`);await n.verify?.("post-open",{realPath:f,identity:yr(l)}),await n.hooks?.afterOpen?.();let d=[],p=0,g=Buffer.allocUnsafe(Math.min(64*1024,t+1));for(;;){let y=t+1-p,{bytesRead:b}=await c.read(g,0,Math.min(g.length,y),null);if(b===0)break;if(p+=b,p>t)throw new tn("too-large",`${i} exceeds ${t} bytes`);d.push(Buffer.from(g.subarray(0,b)))}await n.hooks?.beforeFinalCheck?.();let[h,m,w]=await Promise.all([c.stat({bigint:r}),On.lstat(e,{bigint:r}),On.realpath(e)]);if(!m.isFile()||m.isSymbolicLink()||w!==o||!lo(s,h)||!lo(s,m))throw new tn("changed",`${i} changed while reading`);return await n.verify?.("post-read",{realPath:w,identity:yr(h)}),{bytes:Buffer.concat(d,p),stat:h,realPath:w}}finally{await c.close()}}var tn,pl=ne(()=>{"use strict";wr();tn=class extends Error{reason;constructor(t,n,i){super(n,i),this.name="RaceSafeReadError",this.reason=t}}});import{promises as nn}from"fs";import Xe from"path";function Hm(e){let t=e?.code;return t==="ENOENT"||t==="ENOTDIR"}function fo(e,t){let n=Xe.relative(e,t);return n===""||!Xe.isAbsolute(n)&&n!==".."&&!n.startsWith(`..${Xe.sep}`)}async function hl(e,t){let n=Xe.resolve(e),i=await nn.lstat(n);if(!i.isDirectory()||i.isSymbolicLink())throw new Error(`${t} project root must be a real directory`);return nn.realpath(n)}async function gl(e,t,n,i){let r=e;for(let s=0;s{if(!fo(s,a.realPath))throw new Error(`${i.label} resolves outside the project root`);await gl(r.projectRoot,s,r.relative.split("/"),{label:i.label,expected:"file"})}})}var _e=ne(()=>{"use strict";pl();pt()});import{createHash as kk}from"crypto";function yl(e,t){return e.exists===t.exists&&e.sha256===t.sha256}function Sk(e){let t=e?.code;return t==="ENOENT"||t==="ENOTDIR"}async function ht(e,t={}){return(await $n(e,t)).document}async function Km(e){try{return(await J(e,ae,_n,{label:ae})).bytes}catch(t){if(Sk(t))return null;throw t}}function Jm(e){return e?{exists:!0,sha256:kk("sha256").update(e).digest("hex")}:{exists:!1,sha256:null}}async function Pt(e){return Jm(await Km(e))}async function $n(e,t={}){let n=await Km(e);return{document:n?mt(n.toString("utf8"),t):null,identity:Jm(n)}}async function vr(e){return(await ht(e))?.config??null}var ae,gt=ne(()=>{"use strict";pt();_e();ae=".comet/config.yaml"});import{randomUUID as Ek}from"crypto";import{constants as Rk,promises as Z}from"fs";import ce from"path";async function wo(e,t){try{return await Z.link(e,t),{linked:!0}}catch(n){let i=n.code;if(i!=="ENOTSUP"&&i!=="EOPNOTSUPP")throw n}return await Z.copyFile(e,t,Rk.COPYFILE_EXCL),{linked:!1}}function ui(e,t){let n=ce.relative(e,t);return n===""||!ce.isAbsolute(n)&&n!==".."&&!n.startsWith(`..${ce.sep}`)}function ho(e){return{dev:e.dev,ino:e.ino,birthtime:e.birthtimeMs}}function _k(e,t){return Me(e,ho(t))}function po(e,t){let n=ho(e),i=ho(t);return Pn(n,i)?Me(n,i):Me(n,i)&&e.birthtimeMs===t.birthtimeMs&&e.ctimeMs===t.ctimeMs&&e.size===t.size}async function go(e){let t=await Z.lstat(e);if(!t.isDirectory()||t.isSymbolicLink())throw new Error(`Contained atomic write parent must be a real directory: ${e}`);return{path:e,realPath:await Z.realpath(e),...ho(t)}}async function rn(e){for(let t of e){let n=await Z.lstat(t.path);if(!n.isDirectory()||n.isSymbolicLink()||!_k(t,n)||await Z.realpath(t.path)!==t.realPath)throw new Error(`Contained atomic write parent changed before commit: ${t.path}`)}}async function xk(e,t){let n=ce.resolve(e),i=ce.resolve(t);if(!ui(n,i))throw new Error(`Contained atomic write parent is outside its managed root: ${t}`);let r=[await go(n)],s=ce.relative(n,i).split(ce.sep).filter(Boolean),o=n;for(let a of s){await rn(r),o=ce.join(o,a);try{await Z.mkdir(o)}catch(l){if(l.code!=="EEXIST")throw l}let c=await go(o);if(!ui(r[0].realPath,c.realPath))throw new Error(`Contained atomic write parent resolves outside its managed root: ${o}`);r.push(c)}return await rn(r),r}async function Pk(e,t){let n=ce.resolve(e),i=ce.resolve(t);if(!ui(n,i))throw new Error(`Contained file parent is outside its managed root: ${t}`);let r=[await go(n)],s=ce.relative(n,i).split(ce.sep).filter(Boolean),o=n;for(let a of s){o=ce.join(o,a);try{let c=await go(o);if(!ui(r[0].realPath,c.realPath))throw new Error(`Contained file parent resolves outside its managed root: ${o}`);r.push(c)}catch(c){if(c.code==="ENOENT")return null;throw c}}return await rn(r),r}async function Um(e){let t;try{t=await Z.open(e,"r"),await t.sync()}catch(n){let i=n.code;if(!["EACCES","EBADF","EINVAL","EISDIR","ENOTSUP","EPERM"].includes(i??""))throw n}finally{await t?.close()}}async function Ok(e,t,n){let i=ce.dirname(e),r=await xk(n.containedRoot,i),s=ce.join(i,`.${ce.basename(e)}.${Ek()}.tmp`),o,a;try{await n.beforeTemporaryOpen?.(),o=await Z.open(s,"wx"),a=await o.stat();let[c,l]=await Promise.all([Z.lstat(s),Z.realpath(s)]);if(await rn(r),!c.isFile()||c.isSymbolicLink()||!po(a,c)||!ui(r[0].realPath,l))throw new Error("Contained atomic write temporary file opened outside its managed parent");if(typeof t=="string"?await o.writeFile(t,"utf8"):await o.writeFile(t),await o.sync(),!po(a,await o.stat()))throw new Error("Contained atomic write temporary file changed while writing");await o.close(),o=void 0,await n.beforeCommit?.(),await rn(r);let u=await Z.lstat(s);if(!u.isFile()||u.isSymbolicLink()||!po(u,a))throw new Error("Contained atomic write temporary file changed before commit");n.exclusive?(await wo(s,e),await Z.unlink(s)):await Z.rename(s,e),await Um(i)}catch(c){await o?.close();try{await rn(r),await Z.rm(s,{force:!0})}catch{}throw c}}async function xe(e,t,n){await Ok(e,t,n)}async function vl(e,t){let n=ce.dirname(e),i=await Pk(t.containedRoot,n);if(!i)return!1;let r,s;try{r=await Z.lstat(e),s=await Z.realpath(e)}catch(c){if(c.code==="ENOENT")return!1;throw c}if(!r.isFile()||r.isSymbolicLink()||!ui(i[0].realPath,s))throw new Error("Contained file removal target must be a regular file inside its managed root");await t.beforeRemove?.(),await rn(i);let[o,a]=await Promise.all([Z.lstat(e),Z.realpath(e)]);if(!o.isFile()||o.isSymbolicLink()||!po(r,o)||a!==s)throw new Error("Contained file removal target changed before removal");return await Z.unlink(e),await rn(i),await Um(n),!0}var sn=ne(()=>{"use strict";wr()});import{createHash as $k,randomUUID as Ak}from"crypto";import{promises as on}from"fs";function zm(e){return`.comet/config.yaml.${e}.next`}function Xm(e){return`.comet/config.yaml.${e}.quarantine`}function Ik(e){return`.comet/config-write-transaction.${e}.cleanup`}function bl(e){return $k("sha256").update(e).digest("hex")}function Qm(e){let t=e?.code;return t==="ENOENT"||t==="ENOTDIR"}async function kl(e){let t;try{t=(await J(e,yo,Cl,{label:"project config write transaction"})).bytes}catch(o){if(Qm(o))return null;throw o}let n;try{n=JSON.parse(t.toString("utf8"))}catch{throw new Error("Invalid project config write transaction: expected JSON")}if(!n||typeof n!="object"||Array.isArray(n))throw new Error("Invalid project config write transaction: expected an object");let i=n,r=Object.keys(i).sort(),s=["candidate","expected_sha256","id","output_sha256","owner_pid","quarantine","schema"].sort();if(r.join(` `)!==s.join(` -`))throw new Error("Invalid project config write transaction: unexpected fields");if(i.schema!==Vm)throw new Error("Invalid project config write transaction: unsupported schema");if(typeof i.id!="string"||!Ym.test(i.id))throw new Error("Invalid project config write transaction: invalid id");if(typeof i.owner_pid!="number"||!Number.isSafeInteger(i.owner_pid)||i.owner_pid<=0)throw new Error("Invalid project config write transaction: invalid owner pid");if(typeof i.expected_sha256!="string"||!vo.test(i.expected_sha256)||typeof i.output_sha256!="string"||!vo.test(i.output_sha256))throw new Error("Invalid project config write transaction: invalid config hash");if(i.candidate!==zm(i.id)||i.quarantine!==Xm(i.id))throw new Error("Invalid project config write transaction: paths do not match its id");return{journal:i,source:t.toString("utf8")}}async function bo(e,t){try{let{bytes:n}=await J(e,t,kl,{label:t});return Cl(n)}catch(n){if(Qm(n))return null;throw n}}async function Gm(e,t,n,i){let r=await T(e,t,{label:t,expected:"file"});if(!r.exists)return!1;let s=`${t}.${Ok()}.cleanup`,o=await T(e,s,{label:`${t} cleanup`,expected:"file"});if(o.exists)throw new Error(`Owned cleanup path already exists: ${s}`);if(await sn.rename(r.target,o.target),await i?.(t,s),await bo(e,s)!==n){try{let c=await T(e,t,{label:t,expected:"file"});c.exists||(await sn.link(o.target,c.target),await sn.unlink(o.target))}catch{}throw new Error(`Refusing to remove modified project config transaction file: ${t}`)}return await sn.unlink(o.target),!0}function Ak(e){if(e===process.pid)return!0;try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}async function Ik(e,t){let n=$k(t.journal.id),i=await T(e,n,{label:"project config write transaction cleanup",expected:"file"});if(i.exists)throw new Error("Project config write transaction cleanup path already exists");let r=await T(e,yo,{label:"project config write transaction",expected:"file"});if(!r.exists)throw new Error("Project config write transaction changed before cleanup");await sn.rename(r.target,i.target);let s=await J(e,n,kl,{label:"project config write transaction cleanup"});if(Cl(s.bytes)!==Cl(t.source)){try{let o=await T(e,yo,{label:"project config write transaction",expected:"file"});o.exists||await sn.link(i.target,o.target)}catch{}throw new Error("Project config write transaction changed before cleanup")}await sn.unlink(i.target)}async function Zm(e,t,n,i){if(!Ym.test(t))throw new Error("Invalid project config write transaction id");if(!vo.test(n)||!vo.test(i))throw new Error("Invalid project config write transaction hash");if(await Sl(e))throw new Error("An unfinished project config write transaction exists; run comet doctor --repair");let r={schema:Vm,id:t,owner_pid:process.pid,expected_sha256:n,output_sha256:i,candidate:zm(t),quarantine:Xm(t)};return await xe((await T(e,yo,{label:"project config write transaction",expected:"file"})).target,`${JSON.stringify(r,null,2)} -`,{containedRoot:e,exclusive:!0}),{candidate:r.candidate,quarantine:r.quarantine}}async function Co(e){let t=await Sl(e);if(!t)return null;let{journal:n}=t,[i,r,s]=await Promise.all([_t(e),bo(e,n.candidate),bo(e,n.quarantine)]);if(r!==null&&r!==n.output_sha256)throw new Error("Project config write transaction candidate changed after creation");if(s!==null&&s!==n.expected_sha256)throw new Error("Project config write transaction quarantine changed after creation");let o;return!i.exists&&s===n.expected_sha256?o="config-quarantined":i.sha256===n.output_sha256?o="published-cleanup-pending":i.exists&&i.sha256!==n.expected_sha256&&i.sha256!==n.output_sha256?o="successor-preserved-cleanup-pending":o="prepared",{id:n.id,stage:o,candidate:n.candidate,quarantine:n.quarantine,allowedRepair:"rollback-or-cleanup"}}async function ko(e,t={}){let n=await Sl(e);if(!n)return!1;let{journal:i}=n;if(t.ownerId!==i.id&&Ak(i.owner_pid))throw new Error(`Project config write transaction ${i.id} is still active in process ${i.owner_pid}`);if(!await Co(e))return!1;let s=await _t(e),o=await bo(e,i.quarantine);if(!s.exists){if(o!==i.expected_sha256)throw new Error("Cannot recover project config write transaction: the config and owned quarantine are missing");let a=await T(e,ce,{label:ce,expected:"file"}),c=await T(e,i.quarantine,{label:"project config write transaction quarantine",expected:"file"});try{await sn.link(c.target,a.target)}catch(l){if(l.code!=="EEXIST")throw l}if(s=await _t(e),!s.exists)throw new Error("Cannot recover project config write transaction: config publish failed")}return await Gm(e,i.candidate,i.output_sha256,t.testHooks?.afterOwnedFileQuarantine),s.exists&&await Gm(e,i.quarantine,i.expected_sha256,t.testHooks?.afterOwnedFileQuarantine),await Ik(e,n),!0}var Vm,yo,kl,Ym,vo,El=ie(()=>{"use strict";rn();ht();_e();Vm="comet.project-config-write.v1",yo=".comet/config-write-transaction.json",kl=16*1024,Ym=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/,vo=/^[0-9a-f]{64}$/});import{createHash as ep,randomUUID as Nk}from"crypto";import{promises as np}from"fs";import Rl from"path";async function _l(e,t){if(!t)return;let n=await _t(e);if(!vl(n,t))throw new Error("Project config changed before commit; rerun the operation")}async function xl(e,t,n={}){dt(t,{allowPartialProject:n.allowPartialProject??!1});let i=Rl.resolve(e);if(await Co(i))throw new Error("An unfinished project config write transaction exists; run comet doctor --repair");let r=n.expectedIdentity??await _t(i);await _l(i,r);let s=await T(i,ce,{label:ce,expected:"file"}),o=Nk(),a=ep("sha256").update(t).digest("hex"),c=r.exists&&r.sha256?await Zm(i,o,r.sha256,a):null,l=c!==null,u=c?.candidate??`.comet/config.yaml.${o}.next`,f=Rl.join(i,...u.split("/")),d=c?.quarantine??null;try{if(await xe(f,t,{containedRoot:i,exclusive:!0}),await n.beforeCommit?.(),await _l(i,r),await T(i,u,{label:"project config candidate",expected:"file"}),r.exists){if(!d)throw new Error("Project config write transaction was not created");let g=Rl.join(i,...d.split("/"));if(await T(i,ce,{label:ce,expected:"file"}),(await T(i,d,{label:"project config quarantine",expected:"file"})).exists)throw new Error("Project config quarantine already exists");await np.rename(s.target,g);let{bytes:m}=await J(i,d,_n,{label:"project config quarantine"});if(ep("sha256").update(m).digest("hex")!==r.sha256)throw new Error("Project config changed before final publish; successor was preserved")}else if(s.exists)throw new Error("Project config changed before final publish; successor was preserved");await n.beforePublish?.(),await T(i,u,{label:"project config candidate",expected:"file"});try{await wo(f,s.target)}catch(g){throw new Error("Project config final publish failed; successor was preserved",{cause:g})}let p=await _t(i);if(!p.exists||p.sha256!==a)throw new Error("Project config changed during final publish; successor was preserved");l&&(await ko(i,{ownerId:o}),l=!1)}catch(p){if(l)try{await ko(i,{ownerId:o})&&(l=!1)}catch{}throw p}finally{l||await Tk(i,u).catch(()=>!1)}}async function Tk(e,t){let n=await T(e,t,{label:t,expected:"file"});return n.exists?(await np.unlink(n.target),!0):!1}var Pl=ie(()=>{"use strict";rn();mt();ht();_e();El()});var Po=ie(()=>{"use strict"});var gp=ie(()=>{"use strict"});var Al=ie(()=>{"use strict";Po()});var wp=ie(()=>{"use strict";Po();Al()});function aS(e){let t=e?.code;return t==="ENOENT"||t==="ENOTDIR"}function cS(e){let t=(0,yp.parseDocument)(e,{uniqueKeys:!0});if(t.errors.length>0)throw new Error(`Invalid global Comet config: ${t.errors[0].message}`);let n=t.toJS();if(n==null)return{};if(typeof n!="object"||Array.isArray(n))throw new Error("Invalid global Comet config: root must be a mapping");return n}function bp(e){if(e.native?.pending_root_move)throw new Error("Global Comet config cannot contain native.pending_root_move");let t=e.native?(({pending_root_move:n,...i})=>i)(e.native):void 0;return{...e,schema:"comet.global.v1",...t?{native:t}:{}}}function lS(e){let t=dt(JSON.stringify({...e,schema:"comet.project.v1"})).config;if(!t)throw new Error("Invalid global Comet config: workflow template is incomplete");return bp(t)}function uS(e){let t=dt(e,{allowPartialProject:!0,allowMissingNativeFields:!0});if(!t.native&&!t.classic)return null;let n=t.native?"native":"classic",i=t.native?.language??t.classic?.language??"en",r=ml(t.native?.artifact_root??"docs",i);return{schema:"comet.global.v1",default_workflow:n,workflows:[n],ambient_resume:t.ambient_resume,...t.native?{native:{...r.native,...t.native}}:{},...t.classic?{classic:t.classic}:{}}}function Cp(e){let t=cS(e);if(Object.keys(t).length===0)return null;if(t.schema===void 0)return uS(e);if(t.schema!=="comet.global.v1")throw new Error("Unsupported Comet global schema");return lS(t)}async function Il(e){try{let t=await J(e,vp,_n,{label:"global Comet config"});return Cp(t.bytes.toString("utf8"))}catch(t){if(aS(t))return null;throw t}}var yp,vp,Nl=ie(()=>{"use strict";yp=Ve(He(),1);rn();mt();_e();vp=".comet/config.yaml"});var FA,kp=ie(()=>{"use strict";rn();_e();FA=4*1024*1024});function Ep(e,t){let n=e;for(let i of t)n+="\0"+(typeof i=="string"?i:JSON.stringify(i));return n}function Mn(e,t){return(...n)=>{let i=Sp;if(i===null)return t(...n);let r=Ep(`async:${e}`,n),s=i.entries.get(r);if(s)return s.value;let o=t(...n).catch(a=>{throw i.entries.delete(r),a});return i.entries.set(r,{value:o}),o}}function Tl(e,t){return(...n)=>{let i=Sp;if(i===null)return t(...n);let r=Ep(`sync:${e}`,n),s=i.entries.get(r);if(s)return s.value;let o=t(...n);return i.entries.set(r,{value:o}),o}}var Sp,kr=ie(()=>{"use strict";Sp=null});import we from"path";function Rp(e,t){let n=we.relative(e,t);return n===""||!we.isAbsolute(n)&&n!==".."&&!n.startsWith(`..${we.sep}`)}function dS(e,t){let n=we.isAbsolute(t)?we.resolve(t):we.resolve(e,t),i=we.relative(we.resolve(e),n);return i===""||we.isAbsolute(i)||i===".."||i.startsWith(`..${we.sep}`)?null:i.replaceAll("\\","/")}function _p(e){return process.platform==="win32"?e.toLowerCase():e}async function jl(e,t,n=[]){let i=we.isAbsolute(t)?we.resolve(t):we.resolve(e,t),r=we.resolve(e);if(!Rp(r,i)||n.some(c=>Rp(we.resolve(c),i)))return null;let s=dS(e,t);if(!s)return null;let a=(await fS(e)).allow_paths.find(c=>{let l=_p(s),u=_p(c);return l===u||l.startsWith(`${u}/`)});return a?`${s} (configured Hook allow path: ${a})`:null}var fS,Ll=ie(()=>{"use strict";kr();ht();fS=Mn("hookWritePolicy",async e=>(await wr(e))?.hook??{allow_paths:[]})});var xp=ie(()=>{"use strict";Po();rn();gp();wp();mt();Nl();_e();ht();Pl();kp();Ll();El();Al()});import{TextDecoder as mS}from"util";function Pp(e){return{dev:e.dev,ino:e.ino,birthtime:e.birthtimeMs}}function pS(e,t){try{return new mS("utf-8",{fatal:!0}).decode(e.bytes)}catch(n){throw new Error(`${t} is not valid UTF-8`,{cause:n})}}async function Ml(e,t,n,i,r={}){try{let s=await J(e,t,n,{label:i,hooks:r.hooks});return{result:s,text:pS(s,i)}}catch(s){let o=s.code;if(o==="ENOENT"||o==="ENOTDIR")return null;throw s}}async function Ot(e,t,n,i,r={}){return(await Ml(e,t,n,i,r))?.text??null}async function an(e,t,n,i,r,s={}){if(Buffer.byteLength(n,"utf8")>i)throw new Error(`${r} exceeds ${i} bytes`);let o=await Ml(e,t,i,r),a=await T(e,t,{label:r,expected:"file"});await xe(a.target,n,{containedRoot:a.projectRoot,beforeCommit:async()=>{await s.beforeCommit?.();let c=await Ml(e,t,i,r);if(!(!o&&!c)){if(!o||!c)throw new Error(`${r} changed before commit`);if(o.result.realPath!==c.result.realPath||!qe(Pp(o.result.stat),Pp(c.result.stat))||o.text!==c.text)throw new Error(`${r} changed before commit`)}}})}async function Oo(e,t,n,i,r,s={}){let o=await Ot(e,t,i,r);await an(e,t,`${o??""}${n}`,i,r,s)}async function $o(e,t,n,i={}){let r=await T(e,t,{label:n,expected:"file"});return r.exists?bl(r.target,{containedRoot:r.projectRoot,beforeRemove:i.beforeRemove}):!1}var Ao=ie(()=>{"use strict";xp();hr()});var Ap={};Ow(Ap,{RUN_STATE_FILE:()=>No,applyRunStateToDocument:()=>ql,readRunState:()=>Rr,removeRunState:()=>Dl,runStateFromDocument:()=>Io,writeRunState:()=>To});import hS from"path";function Er(e,t){let n=e[t];if(typeof n!="string"||n.length===0)throw new Error(`Invalid Run state: ${t} must be a non-empty string`);return n}function Sr(e,t){let n=Er(e,t);if(hS.isAbsolute(n)||/^(?:[A-Za-z]:|[\\/]|~)/u.test(n)||n.split(/[\\/]/u).includes(".."))throw new Error(`Invalid Run state: ${t} must stay inside the change directory`);return n}function gS(e){let t=e.run_retries??"{}",n;try{n=typeof t=="string"?JSON.parse(t):t}catch(i){throw new Error("Invalid Run state: run_retries must be a JSON object",{cause:i})}if(!n||typeof n!="object"||Array.isArray(n))throw new Error("Invalid Run state: run_retries must be a JSON object");for(let i of Object.values(n))if(!Number.isInteger(i)||Number(i)<0)throw new Error("Invalid Run state: retry counts must be non-negative integers");return n}function Io(e){if(!e.run_id)return null;let t=Er(e,"run_id"),n=Er(e,"skill"),i=Er(e,"skill_version"),r=Er(e,"skill_hash"),s=Sr(e,"pending_ref"),o=Sr(e,"trajectory_ref"),a=Sr(e,"context_ref"),c=Sr(e,"artifacts_ref"),l=Sr(e,"checkpoint_ref"),u=Number(e.iteration);if(!Number.isInteger(u)||u<0)throw new Error("Invalid Run state: iteration must be a non-negative integer");if(e.orchestration!=="deterministic"&&e.orchestration!=="adaptive")throw new Error("Invalid Run state: orchestration must be deterministic or adaptive");if(e.run_status!=="running"&&e.run_status!=="waiting"&&e.run_status!=="completed"&&e.run_status!=="failed")throw new Error("Invalid Run state: run_status is invalid");return{runId:t,skill:n,skillVersion:i,skillHash:r,orchestration:e.orchestration,currentStep:Op(e,"current_step"),iteration:u,pending:Op(e,"pending"),pendingRef:s,trajectoryRef:o,contextRef:a,artifactsRef:c,checkpointRef:l,status:e.run_status,retries:gS(e)}}function ql(e,t){t?e.run_id=t.runId:delete e.run_id}function wS(e){return{runId:e.runId,skill:e.skill,skillVersion:e.skillVersion,skillHash:e.skillHash,orchestration:e.orchestration,currentStep:e.currentStep,iteration:e.iteration,pending:e.pending,pendingRef:e.pendingRef,trajectoryRef:e.trajectoryRef,contextRef:e.contextRef,artifactsRef:e.artifactsRef,checkpointRef:e.checkpointRef,status:e.status,retries:e.retries}}function yS(e){let t={run_id:e.runId,skill:e.skill,skill_version:e.skillVersion,skill_hash:e.skillHash,orchestration:e.orchestration,current_step:e.currentStep,iteration:e.iteration,pending:e.pending,pending_ref:e.pendingRef,trajectory_ref:e.trajectoryRef,context_ref:e.contextRef,artifacts_ref:e.artifactsRef,checkpoint_ref:e.checkpointRef,run_status:e.status,run_retries:JSON.stringify(e.retries)};return Io(t)}async function Rr(e,t={}){let n=await Ot(e,No,$p,"Run state",t);if(n===null)return null;let i=JSON.parse(n);return yS(i)}async function To(e,t,n={}){await an(e,No,JSON.stringify(wS(t),null,2),$p,"Run state",n)}async function Dl(e,t={}){await $o(e,No,"Run state",t)}var Op,No,$p,_r=ie(()=>{"use strict";Ao();Op=(e,t)=>{let n=e[t];return n==null?null:String(n)};No=".comet/run-state.json",$p=256*1024});import{pathToFileURL as $P}from"url";import{createHash as FE}from"crypto";import{promises as BE}from"fs";import wt from"path";import{spawnSync as Wk}from"child_process";function Aw(e){return e.length>0&&/^[A-Za-z0-9@+=:,./\\_-]+$/.test(e)?e:`"${e.replace(/"/g,'""')}"`}function Hu(e){return e.map(t=>Aw(t))}import{promises as rp}from"fs";import z from"path";import{promises as Ku}from"fs";async function Mi(e){try{return await Ku.access(e),!0}catch(t){if(Iw(t))return!1;throw t}}async function Ju(e){try{return await Ku.readdir(e)}catch(t){let n=t?.code;if(n==="ENOENT"||n==="ENOTDIR")return[];throw t}}function Iw(e){let t=e?.code;return t==="ENOENT"||t==="ENOTDIR"}mt();ht();Pl();_e();var An=class extends Error{code="classic-layout-unavailable";constructor(t="Classic artifact layout is unavailable from .comet/config.yaml"){super(t),this.name="ClassicLayoutUnavailableError"}},ip=".comet/config.yaml";function sp(e){let t=e?.code;return t==="ENOENT"||t==="ENOTDIR"}async function So(e){await T(e,ip,{label:ip,expected:"file"})}function Qe(e,t){let n=z.resolve(e),i=t==="docs"?z.join(n,"docs"):n,r=z.join(i,"openspec"),s=z.join(n,"docs","superpowers");return{projectRoot:n,artifactLayout:t,openSpecBase:i,openSpecRoot:r,changesDir:z.join(r,"changes"),archiveDir:z.join(r,"changes","archive"),specsDir:z.join(r,"specs"),superpowersRoot:s,superpowersSpecsDir:z.join(s,"specs"),superpowersPlansDir:z.join(s,"plans"),superpowersReportsDir:z.join(s,"reports")}}async function on(e){await So(e);let t=await pt(e,{allowPartialProject:!0,allowMissingNativeFields:!0});if(!t?.config)throw new An;if(!(t.config.workflows??[t.config.default_workflow]).includes("classic"))throw new An("Classic artifact layout is unavailable because Classic is not enabled");return t.classic?.artifact_layout??"legacy"}async function op(e){await So(e);let t=(await pt(e))?.config;if(!t)throw new Error(".comet/config.yaml must use comet.project.v1 before migration");if(!(t.workflows??[t.default_workflow]).includes("classic"))throw new Error("Classic root move requires the Classic workflow to be enabled")}async function ap(e,t,n={}){await So(e);let i=await $n(e,{allowPartialProject:!0}),r=i.document;if(!r)throw new Error(".comet/config.yaml does not exist");let s=r.value.classic;if(!s||typeof s!="object"||Array.isArray(s))throw new Error("classic must be a mapping");let o={...r.value,classic:{...s,artifact_layout:t}},a=xn(o,r.classic?.language==="zh-CN"||r.native?.language==="zh-CN"?"zh-CN":"en");dt(a,{allowPartialProject:!0}),await xl(e,a,{expectedIdentity:n.expectedIdentity??i.identity,beforeCommit:n.beforeCommit})}async function jk(e,t){return Qe(e,t??await on(e))}async function Lk(e){try{return await rp.lstat(e),!0}catch(t){if(sp(t))return!1;throw t}}async function Ol(e,t){let n=await jk(e,t),i=n.artifactLayout==="legacy"?"docs":"legacy",r=Qe(e,i).openSpecRoot,[s,o]=await Promise.all([T(n.projectRoot,I(n.projectRoot,n.openSpecRoot),{label:"Configured Classic OpenSpec root",expected:"directory"}),Lk(r)]),a=s.exists;return{paths:n,configuredRootExists:a,alternateRoot:r,alternateRootExists:o,dualRoots:a&&o}}async function Mk(e){let t=[e.openSpecRoot,e.changesDir,e.archiveDir,e.specsDir,e.superpowersRoot,e.superpowersSpecsDir,e.superpowersPlansDir,e.superpowersReportsDir];for(let n of t){let i=I(e.projectRoot,n);await T(e.projectRoot,i,{label:`Classic managed physical path ${i}`,expected:"directory"})}}async function Y(e,t){let n=await Ol(e,t);if(await Mk(n.paths),!n.configuredRootExists){let i=I(n.paths.projectRoot,n.paths.openSpecRoot),r=I(n.paths.projectRoot,n.alternateRoot);throw new An(`Configured Classic OpenSpec root is missing: ${i} (alternate ${r} is ${n.alternateRootExists?"present":"missing"})`)}return n.paths}async function Pe(e,t){let n=z.join(z.resolve(e),".comet","classic-root-move.json");if(await Mi(n))throw new Error("Classic root move transaction is incomplete; inspect it with comet doctor and recover it explicitly before writing");let i=await Y(e,t);if(!await Mi(i.openSpecRoot))throw new Error(`Configured Classic OpenSpec root is missing: ${I(i.projectRoot,i.openSpecRoot)}`);return i}async function ue(e){let t=z.resolve(e),n=null;try{(await rp.lstat(t)).isDirectory()||(t=z.dirname(t))}catch(i){if(!sp(i))throw i}for(;;){z.basename(t)==="openspec"&&(n=z.dirname(t));let i=z.join(t,".comet","config.yaml"),r=!1;if(await Mi(i))try{await So(t);let o=(await pt(t))?.value;r=!!o&&typeof o=="object"&&!Array.isArray(o)&&(o.schema==="comet.project.v1"||o.default_workflow!==void 0||o.native!==void 0)}catch{}if(r||await Mi(z.join(t,".git")))return t;let s=z.dirname(t);if(s===t)return n??z.resolve(e);t=s}}function I(e,t){return z.relative(z.resolve(e),t).replaceAll("\\","/")}var cp=Ve(He(),1);_e();import qk from"path";var Dk=1024*1024;async function lp(e,t){let n=t??await Y(e),i=qk.join(n.openSpecRoot,"config.yaml"),r=I(n.projectRoot,i),s;try{s=(await J(n.projectRoot,r,Dk,{label:"Classic OpenSpec project config",bigint:!0})).bytes.toString("utf8")}catch(l){throw l.code==="ENOENT"?new Error(`Classic OpenSpec root is unhealthy: ${r} is missing; rerun OpenSpec initialization for the configured Classic layout`,{cause:l}):new Error(`Classic OpenSpec root is unhealthy: ${l instanceof Error?l.message:String(l)}`,{cause:l})}let o=(0,cp.parseDocument)(s,{uniqueKeys:!0});if(o.errors.length>0)throw new Error(`Classic OpenSpec root is unhealthy: ${r} is invalid YAML (${o.errors[0].message})`);let a=o.toJS();if(!a||typeof a!="object"||Array.isArray(a))throw new Error(`Classic OpenSpec root is unhealthy: ${r} must contain a mapping`);let c=a.schema;if(typeof c!="string"||c.trim()==="")throw new Error(`Classic OpenSpec root is unhealthy: ${r} must declare a non-empty schema`);return{layout:n,configPath:r,schema:c}}function Fk(e){return e[0]==="--"?e.slice(1):[...e]}async function $l(e,t=process.cwd()){let n=Fk(e);if(n.length===0)return{exitCode:64,stderr:"Usage: comet classic openspec -- "};let i=await ue(t),r=await Pe(i);await lp(i,r);let s=process.env.COMET_OPENSPEC||"openspec",o=process.platform==="win32",a=Wk(s,o?Hu(n):n,{cwd:r.openSpecBase,encoding:"utf8",shell:o,windowsHide:!0});if(a.error){let c=a.error.code;return{exitCode:c==="ENOENT"?127:70,stdout:a.stdout||void 0,stderr:a.stderr||(c==="ENOENT"?`OpenSpec CLI not found: ${s}`:a.error.message)}}return{exitCode:a.status??1,stdout:a.stdout||void 0,stderr:a.stderr||void 0}}var up=async e=>$l(e);import{promises as Hk}from"fs";import Tn from"path";rn();mt();_e();import yr from"path";var Bk=2*1024*1024;function Eo(e,t,n){let i=yr.resolve(e),r=yr.isAbsolute(t)?yr.resolve(t):yr.resolve(i,t),s=yr.relative(i,r).replaceAll("\\","/");return{root:i,relative:Rt(s,n),target:r}}async function V(e,t,n){let i=Eo(e,t,n.label);return T(i.root,i.relative,n)}async function X(e,t,n){return(await V(e,t,{label:n.label,expected:n.expected??"any"})).exists}async function In(e,t,n,i){return await X(e,t,{label:n,expected:"file"})?(await Ro(e,t,{label:n,hooks:i})).byteLength>0:!1}async function F(e,t,n){return(await Ro(e,t,n)).toString("utf8")}async function Ro(e,t,n){let i=Eo(e,t,n.label);return(await J(i.root,i.relative,n.maxBytes??Bk,{label:n.label,hooks:n.hooks})).bytes}async function Nn(e,t,n){let i=Eo(e,t,n);return yl(i.root,i.relative,{label:n})}async function fi(e,t,n,i){let r=Eo(e,t,i.label);await T(r.root,r.relative,{label:i.label,expected:"file"}),await xe(r.target,n,{containedRoot:r.root,beforeTemporaryOpen:i.beforeTemporaryOpen,beforeCommit:i.beforeCommit,exclusive:i.exclusive})}function ge(e){return e?/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u.test(e)?e.includes("..")?"Change name cannot contain '..' (path traversal not allowed)":null:`Invalid change name: '${e}' -Valid format: lowercase kebab-case (a-z, 0-9, single hyphens)`:"Change name cannot be empty"}function Ze(e){let t=ge(e);if(t)throw new Error(t)}function Kk(e,t){return{label:I(e,t),directory:t}}async function di(e,t,n){let i=Kk(e,t);if(!(await V(e,t,{label:n,expected:"directory"})).exists)return{change:i,exists:!1,stateExists:!1};let s=await V(e,Tn.join(t,".comet.yaml"),{label:`${n} state`,expected:"file"});return{change:i,exists:!0,stateExists:s.exists}}function fp(e,t){let n=t.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&");return new RegExp(`^\\d{4}-\\d{2}-\\d{2}-${n}$`,"u").test(e)}async function dp(e,t,n,i={}){if(!i.skipExactCompatibility){let o=await di(e,Tn.join(t,n),`Classic archived change ${n}`);if(o.exists)return o.change}if(!(await V(e,t,{label:"Classic archive directory",expected:"directory"})).exists)return null;let s=[];for(let o of await Hk.readdir(t,{withFileTypes:!0})){if(!fp(o.name,n))continue;let a=await di(e,Tn.join(t,o.name),`Classic archived change ${o.name}`);a.exists&&a.stateExists&&s.push(a.change)}return s.sort((o,a)=>a.directory.localeCompare(o.directory))[0]??null}async function Oe(e,t=process.cwd()){Ze(e);let n=await Y(t),i=await di(n.projectRoot,Tn.join(n.changesDir,e),`Classic active change ${e}`);return{...i.change,exists:i.exists,stateExists:i.stateExists}}async function mp(e,t=process.cwd()){Ze(e);let n=await Pe(t),i=Tn.join(n.changesDir,e),r=await di(n.projectRoot,i,`Classic active change ${e}`);return r.exists||await Nn(n.projectRoot,i,`Classic active change ${e}`),r.change}async function _o(e,t=process.cwd(),n={}){Ze(e);let i=await Y(t);if(n.preferredArchiveName!==void 0){let r=n.preferredArchiveName;if(r!==e&&!fp(r,e))throw new Error(`Classic preferred archive name '${r}' does not belong to change '${e}'`);let s=await di(i.projectRoot,Tn.join(i.archiveDir,r),`Classic preferred archived change ${r}`);return s.exists&&s.stateExists?s.change:null}return dp(i.projectRoot,i.archiveDir,e,n)}async function jn(e,t=process.cwd()){Ze(e);let n=await Y(t),i=await di(n.projectRoot,Tn.join(n.changesDir,e),`Classic active change ${e}`);if(i.exists)return i.change;let r=await dp(n.projectRoot,n.archiveDir,e);return r||i.change}import{promises as lh}from"fs";import be from"path";import{fileURLToPath as Gl}from"url";import{promises as Uk}from"fs";import xt from"path";_e();mt();import vr from"path";function Jk(e){let t=e?.code;return t==="ENOENT"||t==="ENOTDIR"}async function pp(e,t,n,i){let r=Rt(n,"Classic handoff artifact pointer");if((await T(e,r,{label:"Classic handoff artifact",expected:"file"})).exists)return null;let o=await Y(e),a=`${I(e,o.changesDir)}/`,l=(o.artifactLayout==="docs"?[a,"openspec/changes/"]:[a]).find(w=>r.startsWith(w));if(!l)return null;let u=r.slice(l.length).split("/");if(u.length<4||u[1]!==".comet"||u.slice(2).some(w=>w.length===0))return null;let f=u[0];Ze(f);let d=u.slice(2),p=vr.resolve(t);if(vr.dirname(p)!==vr.resolve(o.archiveDir))return null;let g=vr.basename(p),h=/^\d{4}-\d{2}-\d{2}-(.+)$/u.exec(g);if(g!==f&&h?.[1]!==f)return null;await T(e,I(e,p),{label:"Classic archived change directory",expected:"directory"});let m=vr.join(p,".comet",...d),y=I(e,m);try{return await J(e,y,i,{label:"Historical Classic archived handoff artifact"}),y}catch(w){if(Jk(w))return null;throw w}}_e();var hp=2*1024*1024;function br(e,t){return xt.relative(e,t).split(xt.sep).join("/")}async function Cr(e,t,n,i,r){if(!n)return{code:t,satisfied:!1};let s=n.replaceAll("\\","/");if(r)return{code:t,satisfied:!1,source:s,detail:`Classic layout is unsafe or unavailable: ${r instanceof Error?r.message:String(r)}`};try{if(i){let a=i.artifactLayout==="legacy"?"docs":"legacy",c=I(e,Qe(e,a).openSpecRoot);if((s===c||s.startsWith(`${c}/`))&&(await T(e,s,{label:`${t} artifact`,expected:"file"})).exists)return{code:t,satisfied:!1,source:s,detail:"standalone OpenSpec root is not a Comet artifact root"}}let o=await mo(e,s,{label:`${t} artifact`});return{code:t,satisfied:o,source:s,...o?{resolvedSource:s}:{}}}catch(o){return{code:t,satisfied:!1,source:s,detail:`unsafe artifact pointer outside the project or through a special path: ${o instanceof Error?o.message:String(o)}`}}}async function Gk(e,t,n,i){try{i??=await Y(e)}catch(s){return{code:"design.handoff",satisfied:!1,...n?{source:n.replaceAll("\\","/")}:{},detail:`Classic layout is unsafe or unavailable for handoff evidence: ${s instanceof Error?s.message:String(s)}`}}let r=await Cr(e,"design.handoff",n,i);if(!n||r.satisfied||r.detail)return r;try{let s=await pp(e,t,n,hp);return s?{...r,satisfied:!0,resolvedSource:s,detail:`resolved historical legacy pointer from archived change: ${s}`}:r}catch(s){return{...r,satisfied:!1,detail:`unsafe archived handoff fallback: ${s instanceof Error?s.message:String(s)}`}}}async function xo(e,t,n){return Cr(e,t,br(e,n))}async function Vk(e,t){let n=xt.join(t,"specs"),i;try{let o=br(e,n);if(!(await T(e,o,{label:"OpenSpec delta-spec directory",expected:"directory"})).exists)return{code:"openspec.delta-spec",satisfied:!1};i=await Uk.readdir(n)}catch(o){return o.code==="ENOENT"?{code:"openspec.delta-spec",satisfied:!1}:{code:"openspec.delta-spec",satisfied:!1,detail:`unsafe delta-spec path: ${o instanceof Error?o.message:String(o)}`}}let r=i.map(o=>xt.join(n,o,"spec.md")),s=(await Promise.all(r.map(async o=>{try{return await mo(e,br(e,o),{label:"OpenSpec delta spec"})?o:null}catch{return null}}))).filter(o=>o!==null);return{code:"openspec.delta-spec",satisfied:s.length>0,source:s[0]?br(e,s[0]):void 0,detail:`${s.length} delta spec${s.length===1?"":"s"}`}}async function Yk(e,t){let n,i=br(e,t);try{n=(await J(e,i,hp,{label:"Classic tasks artifact"})).bytes.toString("utf8")}catch(o){return o.code==="ENOENT"?{code:"build.tasks-complete",satisfied:!1}:{code:"build.tasks-complete",satisfied:!1,source:i,detail:`unsafe tasks artifact: ${o instanceof Error?o.message:String(o)}`}}let r=[...n.matchAll(/^\s*[-*]\s+\[([ xX])\]\s+/gmu)],s=r.filter(o=>o[1].toLowerCase()==="x").length;return{code:"build.tasks-complete",satisfied:r.length>0&&s===r.length,source:i,detail:`${s} of ${r.length} tasks complete`}}function Ln(e,t){return e.some(n=>n.code===t&&n.satisfied)}async function et(e,t){let n=await ue(e),i=t.classic,r=xt.join(e,"proposal.md"),s=xt.join(e,"design.md"),o=xt.join(e,"tasks.md"),a=t.run?xt.resolve(e,t.run.checkpointRef):xt.join(e,".comet","checkpoint.json"),c,l;try{c=await Y(n)}catch(d){l=d}let u=await Promise.all([xo(n,"openspec.proposal",r),xo(n,"openspec.design",s),xo(n,"openspec.tasks",o),Vk(n,e),Cr(n,"design.document",i?.designDoc??null,c,l),Cr(n,"build.plan",i?.plan??null,c,l),Yk(n,o),Cr(n,"verification.report",i?.verificationReport??null,c,l),Gk(n,e,i?.handoffContext??null,c),xo(n,"run.checkpoint",a)]),f=u.find(d=>d.code==="design.handoff");return f&&!i?.handoffHash&&(f.satisfied=!1,f.detail="handoff hash is missing"),u.push({code:"archive.confirmed",satisfied:i?.archiveConfirmation==="confirmed"}),u}import{createHash as cE,randomUUID as lE}from"crypto";import{promises as Ul}from"fs";import $t from"path";function zk(e){return e.classicProfile??e.workflow}function Xk(e){return!e.buildMode||!e.tddMode||!e.isolation||!e.verifyMode?!1:e.buildMode==="subagent-driven-development"?e.subagentDispatch==="confirmed":e.buildMode==="direct"?e.directOverride===!0:!0}function Qk(e){return e.buildMode==="direct"&&e.tddMode==="direct"&&e.isolation!==null&&e.verifyMode==="light"}function Zk(e,t,n){if(t.verifyResult==="fail")return e==="full"?"full.build.fix":`${e}.build.execute`;if(e==="full"){if(!Ln(n,"build.plan"))return"full.build.plan";if(t.buildPause==="plan-ready")return"full.build.plan-ready";if(!Xk(t))return"full.build.configure"}else if(!Qk(t))throw new Error(`${e} build configuration is incomplete`);return Ln(n,"build.tasks-complete")?`${e}.build.complete`:`${e}.build.execute`}function eS(e,t,n){return t.verifyResult!=="pass"||!Ln(n,"verification.report")?`${e}.verify.run`:`${e}.verify.branch`}function tS(e,t){if(t.verifyResult!=="pass")throw new Error("archive requires verify_result=pass");return t.archiveConfirmation==="confirmed"?`${e}.archive.execute`:`${e}.archive.confirm`}function Pt(e,t){let n=zk(e);if(e.archived&&e.phase!=="archive")throw new Error("archived=true requires phase=archive");if(e.archived)return"completed";if(n!=="full"&&e.phase==="design")throw new Error(`${n} workflow cannot enter design`);switch(e.phase){case"open":return`${n}.open`;case"design":return Ln(t,"design.handoff")?"full.design.document":"full.design.handoff";case"build":return Zk(n,e,t);case"verify":return eS(n,e,t);case"archive":return tS(n,e)}}var Lo=Ve(He(),1);rn();_e();import Or from"path";_r();var Fl=["full","hotfix","tweak"],cn=1,Np=["open","design","build","verify","archive"],vS=["en","zh-CN"],bS=["off","beta"],CS=["subagent-driven-development","executing-plans","direct"],kS=["plan-ready"],SS=["confirmed"],ES=["tdd","direct"],RS=["off","standard","thorough"],_S=["current","branch","worktree"],xS=["light","full"],PS=["pending","pass","fail"],OS=["pending","handled"],$S=["pending","confirmed"],ln=["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","verification_report","branch_status","created_at","verified_at","archive_confirmation","archived","direct_override","handoff_context","handoff_hash","classic_profile","classic_migration"],xr=["run_id"],Tp=new Set([...ln,...xr]),AS=["workflow","phase","design_doc","plan","build_mode","isolation","verify_mode","verify_result","verified_at","archived"];function Ip(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function mi(e,t){let n=e[t];if(n==null||n==="")return null;if(typeof n!="string")throw new Error(`Invalid Classic state: ${t} must be a string or null`);return n}function ye(e,t,n,i=!0){let r=e[t];if(r==null||r===""){if(i)return null;throw new Error(`Invalid Classic state: ${t} is required`)}if(typeof r!="string"||!n.includes(r))throw new Error(`Invalid Classic state: ${t} must be one of ${n.join(", ")}${i?" or null":""}`);return r}function Wl(e,t,n=!0){let i=e[t];if(i==null||i===""){if(n)return null;throw new Error(`Invalid Classic state: ${t} is required`)}if(typeof i!="boolean")throw new Error(`Invalid Classic state: ${t} must be true or false`);return i}function IS(e,t,n=0){let i=e[t];if(i==null||i==="")return n;if(typeof i!="number"||!Number.isInteger(i)||i<0)throw new Error(`Invalid Classic state: ${t} must be a non-negative integer`);return i}function jo(e,t){let n=mi(e,t);if(n===null)return null;if(/^(?:[A-Za-z]:|[\\/]|~)/u.test(n)||n.split(/[\\/]/u).includes(".."))throw new Error(`Invalid Classic state: ${t} must be a relative repository path`);return n}function NS(e,t){let n=mi(e,t);if(n!==null&&!/^[a-f0-9]{64}$/u.test(n))throw new Error(`Invalid Classic state: ${t} must be a sha256 hex digest`);return n}function TS(e){let t=e.classic_migration;if(t==null||t==="")return null;if(t!==cn)throw new Error(`Invalid Classic state: classic_migration must be ${cn}`);return t}function jS(e){if(!ln.some(n=>Ip(e,n)))return null;for(let n of AS)if(!Ip(e,n))return null;return{workflow:ye(e,"workflow",Fl,!1),language:ye(e,"language",vS),phase:ye(e,"phase",Np,!1),contextCompression:ye(e,"context_compression",bS),buildMode:ye(e,"build_mode",CS),buildPause:ye(e,"build_pause",kS),subagentDispatch:ye(e,"subagent_dispatch",SS),tddMode:ye(e,"tdd_mode",ES),reviewMode:ye(e,"review_mode",RS),isolation:ye(e,"isolation",_S),boundBranch:mi(e,"bound_branch"),verifyMode:ye(e,"verify_mode",xS),autoTransition:Wl(e,"auto_transition"),baseRef:mi(e,"base_ref"),designDoc:jo(e,"design_doc"),plan:jo(e,"plan"),verifyResult:ye(e,"verify_result",PS,!1),verifyFailures:IS(e,"verify_failures"),verificationReport:jo(e,"verification_report"),branchStatus:ye(e,"branch_status",OS),createdAt:mi(e,"created_at"),verifiedAt:mi(e,"verified_at"),archiveConfirmation:ye(e,"archive_confirmation",$S),archived:Wl(e,"archived",!1),directOverride:Wl(e,"direct_override"),handoffContext:jo(e,"handoff_context"),handoffHash:NS(e,"handoff_hash"),classicProfile:ye(e,"classic_profile",Fl),classicMigration:TS(e)}}function Pr(e,t){let n=t??null;if(n===null&&t===void 0&&e.run_id&&e.skill)try{n=Io(e)}catch(i){let r=i instanceof Error?i.message:String(i);throw new Error(r.replace(/^Invalid Run state:/u,"Invalid Classic state:"),{cause:i})}return{classic:jS(e),run:n,unknownKeys:Object.keys(e).filter(i=>!Tp.has(i))}}function jp(e){let t=e.workflow,n=e.phase,i=e.archived,r=e.design_doc;return{workflow:typeof t=="string"&&Fl.includes(t)?t:null,phase:typeof n=="string"&&Np.includes(n)?n:null,archived:i===!0,designDoc:typeof r=="string"&&r!==""?r:null,unknownKeys:Object.keys(e).filter(s=>!Tp.has(s))}}function Lp(e){return{workflow:e.workflow,language:e.language,phase:e.phase,context_compression:e.contextCompression,build_mode:e.buildMode,build_pause:e.buildPause,subagent_dispatch:e.subagentDispatch,tdd_mode:e.tddMode,review_mode:e.reviewMode,isolation:e.isolation,bound_branch:e.boundBranch,verify_mode:e.verifyMode,auto_transition:e.autoTransition,base_ref:e.baseRef,design_doc:e.designDoc,plan:e.plan,verify_result:e.verifyResult,verify_failures:e.verifyFailures,verification_report:e.verificationReport,branch_status:e.branchStatus,created_at:e.createdAt,verified_at:e.verifiedAt,archive_confirmation:e.archiveConfirmation,archived:e.archived,direct_override:e.directOverride,handoff_context:e.handoffContext,handoff_hash:e.handoffHash,classic_profile:e.classicProfile,classic_migration:e.classicMigration}}_r();var LS=2*1024*1024;function pi(e){let t=e.toJS();if(t===null)return{};if(typeof t!="object"||Array.isArray(t))throw new Error("Invalid Classic state document: root must be a mapping");return t}function Mp(e,t,n){e.get(t)!==n&&e.set(t,n)}function MS(e,t){if(t.classic)for(let[n,i]of Object.entries(Lp(t.classic)))Mp(e,n,i);else for(let n of ln)e.delete(n);ql(e.toJS(),t.run),t.run?Mp(e,"run_id",t.run.runId):e.delete("run_id")}function qS(e){let t=["skill","skill_version","skill_hash","orchestration","current_step","iteration","pending","pending_ref","trajectory_ref","context_ref","artifacts_ref","checkpoint_ref","run_status","run_retries"];for(let n of t)e.delete(n)}function DS(e){let t=!1;for(let n of["build_command","verify_command"])e.has(n)&&(e.delete(n),t=!0);return t}async function Bl(e){let t;try{t=(await J(Or.dirname(e),Or.basename(e),LS,{label:"Classic state document"})).bytes.toString("utf8")}catch(i){if(i.code!=="ENOENT")throw i;return new Lo.Document({})}let n=(0,Lo.parseDocument)(t);if(n.errors.length>0)throw new Error(`Invalid Classic state document: ${n.errors[0].message}`);return pi(n),n}async function B(e,t={}){let n=t.migrate!==!1,i=Or.join(e,".comet.yaml"),r=await Bl(i),s=pi(r),o=DS(r);o&&(s=pi(r));let a=await Rr(e);if(!a&&s.run_id&&s.skill){let{runStateFromDocument:c}=await Promise.resolve().then(()=>(_r(),Ap));a=c(s),a&&n&&(await To(e,a),qS(r),o=!0)}return o&&n&&await xe(i,r.toString(),{containedRoot:e}),Pr(pi(r),a)}async function qp(e){let t=await Bl(Or.join(e,".comet.yaml"));return jp(pi(t))}async function De(e,t,n={}){let i=Or.join(e,".comet.yaml"),r=await Bl(i);MS(r,{...t,unknownKeys:t.unknownKeys??[]}),Pr(pi(r),t.run??null),await xe(i,r.toString(),{containedRoot:e,beforeCommit:n.beforeCommit}),t.run?await To(e,t.run):await Dl(e)}function Dp(e,t,n){return{runId:t,skill:e.definition.metadata.name,skillVersion:e.definition.metadata.version,skillHash:n,orchestration:e.definition.orchestration.mode,currentStep:e.definition.orchestration.entry??null,iteration:0,pending:null,pendingRef:".comet/pending-action.json",trajectoryRef:".comet/trajectory.jsonl",contextRef:".comet/context.md",artifactsRef:".comet/artifacts.json",checkpointRef:".comet/checkpoint.json",status:"running",retries:{}}}Ao();import Mo from"path";var gt={trajectory:8*1024*1024,artifacts:1024*1024,context:1024*1024,pendingAction:256*1024,checkpoint:256*1024};function tt(e,t){if(Mo.isAbsolute(t))throw new Error("Run path must stay inside the change directory");let n=Mo.resolve(e),i=Mo.resolve(n,t);if(i!==n&&!i.startsWith(n+Mo.sep))throw new Error("Run path must stay inside the change directory")}async function Je(e,t,n,i={}){tt(e,t),await Oo(e,t,`${JSON.stringify(n)} -`,gt.trajectory,"Run trajectory",i)}async function We(e,t,n={}){tt(e,t);let i=await Ot(e,t,gt.trajectory,"Run trajectory",n);return i===null?[]:i.split(/\r?\n/).map((r,s)=>({line:r,number:s+1})).filter(({line:r})=>r.length>0).map(({line:r,number:s})=>{try{return JSON.parse(r)}catch(o){throw new Error(`Invalid Trajectory event at line ${s}`,{cause:o})}})}async function hi(e,t,n={}){tt(e,t);let i=await Ot(e,t,gt.artifacts,"Run artifacts",n);return i===null?{}:JSON.parse(i)}async function gi(e,t,n,i={}){tt(e,t),await an(e,t,JSON.stringify(n,null,2)+` -`,gt.artifacts,"Run artifacts",i)}async function qo(e,t,n,i={}){tt(e,t),await an(e,t,n,gt.context,"Run context",i)}async function Do(e,t,n={}){return tt(e,t),Ot(e,t,gt.context,"Run context",n)}async function Wo(e,t,n,i={}){tt(e,t),await an(e,t,JSON.stringify(n,null,2)+` -`,gt.pendingAction,"Run pending action",i)}async function $r(e,t,n={}){tt(e,t);let i=await Ot(e,t,gt.pendingAction,"Run pending action",n);return i===null?null:JSON.parse(i)}async function Fo(e,t,n={}){tt(e,t),await $o(e,t,"Run pending action",n)}async function wi(e,t,n,i={}){tt(e,t),await an(e,t,JSON.stringify(n,null,2)+` -`,gt.checkpoint,"Run checkpoint",i)}async function Wp(e,t,n={}){tt(e,t);let i=await Ot(e,t,gt.checkpoint,"Run checkpoint",n);return i===null?null:JSON.parse(i)}import{createHash as eh,randomUUID as iE}from"crypto";import{promises as se}from"fs";import te from"path";var Hp=Ve(He(),1);import{promises as Hl}from"fs";import Ue from"path";var WS=["invoke_skill","call_tool","handoff","ask_user","checkpoint"],FS=["deterministic","adaptive"],BS=["function","mcp","script","agent"],HS=["none","read","write","external"],KS=["progress","step","completion"],JS=["artifact_exists","state_equals"];function qn(e,t,n){return new Error(`${e}: ${t} ${n}`)}function $e(e,t,n="document"){if(e===null||typeof e!="object"||Array.isArray(e))throw qn(t,n,"must be an object")}function un(e,t,n){if(!Array.isArray(e))throw qn(t,n,"must be an array")}function ve(e,t,n){if(typeof e!="string")throw qn(t,n,"must be a string")}function nt(e,t,n,i){t in e&&ve(e[t],n,`${i}.${t}`)}function Kp(e,t,n,i){if(t in e&&typeof e[t]!="boolean")throw qn(n,`${i}.${t}`,"must be a boolean")}function fn(e,t,n,i){if(typeof e!="string"||!t.includes(e))throw qn(n,i,`must be one of ${t.join(", ")}`)}function Bo(e,t,n){un(e,t,n),e.forEach((i,r)=>{ve(i,t,`${n}[${r}]`)})}function Fp(e,t,n){$e(e,t,n),ve(e.name,t,`${n}.name`),ve(e.description,t,`${n}.description`),Kp(e,"required",t,n)}function US(e,t,n){$e(e,t,n),ve(e.id,t,`${n}.id`),nt(e,"source",t,n),nt(e,"version",t,n)}function GS(e,t,n){$e(e,t,n),ve(e.id,t,`${n}.id`),ve(e.role,t,`${n}.role`),nt(e,"instructions",t,n)}function VS(e,t,n){$e(e,t,n),ve(e.id,t,`${n}.id`),fn(e.kind,BS,t,`${n}.kind`),ve(e.source,t,`${n}.source`),fn(e.sideEffect,HS,t,`${n}.sideEffect`),Kp(e,"requiresConfirmation",t,n)}function YS(e,t,n){$e(e,t,n),fn(e.type,WS,t,`${n}.type`),nt(e,"ref",t,n),nt(e,"prompt",t,n),nt(e,"question",t,n),"options"in e&&Bo(e.options,t,`${n}.options`)}function zS(e,t,n){$e(e,t,n),ve(e.id,t,`${n}.id`),YS(e.action,t,`${n}.action`),nt(e,"next",t,n),"completionEvals"in e&&Bo(e.completionEvals,t,`${n}.completionEvals`)}function XS(e,t){let n="goal";$e(e,t,n),ve(e.statement,t,`${n}.statement`),un(e.inputs,t,`${n}.inputs`),e.inputs.forEach((i,r)=>{Fp(i,t,`${n}.inputs[${r}]`)}),un(e.outputs,t,`${n}.outputs`),e.outputs.forEach((i,r)=>{Fp(i,t,`${n}.outputs[${r}]`)}),Bo(e.success,t,`${n}.success`)}function QS(e,t){let n="orchestration";$e(e,t,n),fn(e.mode,FS,t,`${n}.mode`),nt(e,"entry",t,n),"steps"in e&&(un(e.steps,t,`${n}.steps`),e.steps.forEach((i,r)=>{zS(i,t,`${n}.steps[${r}]`)}))}function Jp(e,t){return $e(e,t),fn(e.apiVersion,["comet/v1alpha1"],t,"apiVersion"),fn(e.kind,["Skill"],t,"kind"),$e(e.metadata,t,"metadata"),ve(e.metadata.name,t,"metadata.name"),ve(e.metadata.version,t,"metadata.version"),ve(e.metadata.description,t,"metadata.description"),XS(e.goal,t),QS(e.orchestration,t),un(e.skills,t,"skills"),e.skills.forEach((n,i)=>{US(n,t,`skills[${i}]`)}),un(e.agents,t,"agents"),e.agents.forEach((n,i)=>{GS(n,t,`agents[${i}]`)}),un(e.tools,t,"tools"),e.tools.forEach((n,i)=>{VS(n,t,`tools[${i}]`)}),e}function Up(e,t){$e(e,t);for(let n of["allowedSkills","allowedAgents","allowedTools","confirmationRequiredFor"])n in e&&Bo(e[n],t,n);for(let n of["maxIterations","maxRetriesPerAction"])if(n in e&&(typeof e[n]!="number"||!Number.isFinite(e[n])))throw qn(t,n,"must be a finite number");return e}function ZS(e,t){return $e(e,t),"runtime"in e&&Gp(e.runtime,t,"runtime"),e}function Gp(e,t,n){return un(e,t,n),e.forEach((i,r)=>{let s=`${n}[${r}]`;$e(i,t,s),ve(i.id,t,`${s}.id`),fn(i.scope,KS,t,`${s}.scope`),fn(i.type,JS,t,`${s}.type`),nt(i,"artifact",t,s),nt(i,"field",t,s),nt(i,"equals",t,s)}),e}async function Kl(e){let t=await Hl.readFile(e,"utf8");try{return(0,Hp.parse)(t)}catch(n){let i=n instanceof Error?n.message:String(n);throw qn(e,"document",i)}}async function eE(e){try{return await Kl(e)}catch(t){if(t.code==="ENOENT")return null;throw t}}async function Bp(e){try{return await Hl.access(e),!0}catch(t){if(t.code==="ENOENT")return!1;throw t}}async function tE(e){let t=Ue.join(e,"checks.yaml"),n=Ue.join(e,"evals.yaml"),[i,r]=await Promise.all([Bp(t),Bp(n)]);if(r)throw new Error(`${n}: evals.yaml is no longer supported; use checks.yaml`);return i?{document:ZS(await Kl(t),t)}:{document:null}}async function Vp(e){let t=Ue.resolve(e.root),n=Ue.resolve(e.controlRoot);e.requireSkillMarkdown&&await Hl.access(Ue.join(t,"SKILL.md"));let i=Ue.join(n,"skill.yaml"),r=Ue.join(n,"guardrails.yaml"),s=Jp(await Kl(i),i),o=await eE(r),a=o===null?null:Up(o,r),c=await tE(n),l={allowedSkills:s.skills.map(u=>u.id),allowedAgents:s.agents.map(u=>u.id),allowedTools:s.tools.map(u=>u.id),maxIterations:50,maxRetriesPerAction:3,confirmationRequiredFor:s.tools.filter(u=>u.requiresConfirmation).map(u=>u.id)};return{root:t,packageKind:e.packageKind==="runtime"?"runtime":void 0,definition:s,guardrails:{...l,...a},evals:c.document?.runtime??[]}}async function Yp(e){let t=Ue.resolve(e);return Vp({root:t,controlRoot:Ue.join(t,"comet"),packageKind:"skill",requireSkillMarkdown:!0})}async function zp(e){let t=Ue.resolve(e);return Vp({root:t,controlRoot:t,packageKind:"runtime",requireSkillMarkdown:!1})}function Xp(e,t,n=Ue.join(t,"package.json")){$e(e,n);let i=e.packageKind==="runtime"?"runtime":void 0,r=Jp(e.definition,n),s=Up(e.guardrails,n),o=Gp(e.evals,n,"evals"),a={allowedSkills:r.skills.map(c=>c.id),allowedAgents:r.agents.map(c=>c.id),allowedTools:r.tools.map(c=>c.id),maxIterations:50,maxRetriesPerAction:3,confirmationRequiredFor:r.tools.filter(c=>c.requiresConfirmation).map(c=>c.id)};return{root:Ue.resolve(t),packageKind:i,definition:r,guardrails:{...a,...s},evals:o}}import Qp from"path";function nE(e,t,n,i){e.type==="invoke_skill"&&!t.definition.skills.some(r=>r.id===e.ref)&&n.push(`step ${i} references undeclared skill: ${e.ref??"(missing)"}`),e.type==="call_tool"&&!t.definition.tools.some(r=>r.id===e.ref)&&n.push(`step ${i} references undeclared tool: ${e.ref??"(missing)"}`),e.type==="handoff"&&!t.definition.agents.some(r=>r.id===e.ref)&&n.push(`step ${i} references undeclared agent: ${e.ref??"(missing)"}`),e.type==="ask_user"&&!e.question&&n.push(`step ${i} ask_user action requires question`)}function Zp(e){let t=[],{definition:n,guardrails:i,evals:r}=e;n.apiVersion!=="comet/v1alpha1"&&t.push("unsupported apiVersion"),n.kind!=="Skill"&&t.push("kind must be Skill"),n.metadata.name||t.push("metadata.name is required"),n.goal.statement||t.push("goal.statement is required"),i.maxIterations<1&&t.push("maxIterations must be at least 1"),i.maxRetriesPerAction<0&&t.push("maxRetriesPerAction must not be negative");let s=n.orchestration.steps??[];if(n.orchestration.mode==="adaptive")(n.orchestration.entry||s.length>0)&&t.push("adaptive orchestration must not define entry or steps");else{let o=new Set;for(let a of s)o.has(a.id)&&t.push(`duplicate step id: ${a.id}`),o.add(a.id),nE(a.action,e,t,a.id);(!n.orchestration.entry||!o.has(n.orchestration.entry))&&t.push(`orchestration.entry references unknown step: ${n.orchestration.entry??"(missing)"}`);for(let a of s){a.next&&!o.has(a.next)&&t.push(`step ${a.id} has unknown next step: ${a.next}`);for(let c of a.completionEvals??[])r.some(l=>l.id===c)||t.push(`step ${a.id} references unknown eval: ${c}`)}}for(let o of n.tools){if(o.kind!=="script")continue;let a=Qp.posix.normalize(o.source.replaceAll("\\","/"));(Qp.isAbsolute(o.source)||a===".."||a.startsWith("../"))&&t.push(`script tool ${o.id} must reference a relative path inside the Skill package`)}for(let o of i.allowedSkills)n.skills.some(a=>a.id===o)||t.push(`guardrails allow undeclared skill: ${o}`);for(let o of i.allowedAgents)n.agents.some(a=>a.id===o)||t.push(`guardrails allow undeclared agent: ${o}`);for(let o of i.allowedTools)n.tools.some(a=>a.id===o)||t.push(`guardrails allow undeclared tool: ${o}`);return t}function Ho(e){return Array.isArray(e)?e.map(Ho):e&&typeof e=="object"?Object.fromEntries(Object.entries(e).sort(([t],[n])=>t.localeCompare(n)).map(([t,n])=>[t,Ho(n)])):e}function rE(e){return Ho({...e.packageKind==="runtime"?{packageKind:"runtime"}:{},definition:e.definition,guardrails:e.guardrails,evals:e.evals})}function sE(e){return te.posix.normalize(e.replaceAll("\\","/"))}function yi(e,t,n){let i=te.relative(e,t);if(!(i===""||!te.isAbsolute(i)&&!i.startsWith(`..${te.sep}`)))throw new Error(`${n} resolves outside the Skill package`)}async function th(e,t,n){let i=sE(t);if(te.posix.isAbsolute(i)||i===".."||i.startsWith("../"))throw new Error(`${n} resolves outside the Skill package`);let r=te.resolve(e,...i.split("/"));yi(e,r,n);let s;try{s=await se.realpath(r)}catch(o){throw o.code==="ENOENT"?new Error(`${n} does not exist: ${t}`,{cause:o}):o}if(yi(e,s,n),!(await se.stat(s)).isFile())throw new Error(`${n} is not a file: ${t}`);return{path:i,content:await se.readFile(s)}}async function oE(e){let t=await se.realpath(e.root),n=e.packageKind==="runtime"?[]:[await th(t,"SKILL.md","SKILL.md")];for(let i of e.definition.tools)i.kind==="script"&&n.push(await th(t,i.source,`Script tool ${i.id}`));return n.sort((i,r)=>i.path.localeCompare(r.path))}function aE(e,t){let n=t.map(i=>({path:i.path,sha256:eh("sha256").update(i.content).digest("hex")}));return eh("sha256").update(JSON.stringify(Ho({package:e,files:n}))).digest("hex")}function rh(e){return JSON.stringify(e,null,2)+` -`}async function sh(e){let t=rE(e),n=await oE(e);return{document:t,files:n,hash:aE(t,n)}}async function Ko(e){return(await sh(e)).hash}async function nh(e){try{return await se.access(e),!0}catch(t){if(t.code==="ENOENT")return!1;throw t}}async function ih(e,t){try{if((await se.readFile(te.join(e,"sha256"),"utf8")).trim()!==t.hash)throw new Error("hash mismatch");if(await se.readFile(te.join(e,"package.json"),"utf8")!==rh(t.document))throw new Error("package mismatch");for(let r of t.files)if(!(await se.readFile(te.join(e,...r.path.split("/")))).equals(r.content))throw new Error(`file mismatch: ${r.path}`)}catch(n){throw new Error(`Existing Skill snapshot is invalid: ${t.hash}`,{cause:n})}}async function Jl(e,t){let n=await sh(e),i=te.resolve(t,".comet","skill-snapshots"),r=te.join(i,n.hash);if(await se.mkdir(i,{recursive:!0}),await nh(r))return await ih(r,n),{hash:n.hash,snapshotDir:r};let s=te.join(i,`.tmp-${iE()}`);yi(i,s,"Temporary snapshot"),yi(i,r,"Published snapshot");try{await se.mkdir(s);for(let o of n.files){let a=te.join(s,...o.path.split("/"));yi(s,a,`Snapshot file ${o.path}`),await se.mkdir(te.dirname(a),{recursive:!0}),await se.writeFile(a,o.content)}await se.writeFile(te.join(s,"package.json"),rh(n.document)),await se.writeFile(te.join(s,"sha256"),n.hash+` -`),await se.rename(s,r)}catch(o){if(await nh(r)){try{await ih(r,n)}finally{await se.rm(s,{recursive:!0,force:!0})}return{hash:n.hash,snapshotDir:r}}throw await se.rm(s,{recursive:!0,force:!0}),o}return{hash:n.hash,snapshotDir:r}}async function Jo(e,t){if(!/^[a-f0-9]{64}$/u.test(t))throw new Error(`Invalid Skill snapshot hash: ${t}`);let n=te.resolve(e,".comet","skill-snapshots"),i=te.join(n,t);yi(n,i,"Skill snapshot");try{let r=(await se.readFile(te.join(i,"sha256"),"utf8")).trim();if(r!==t)throw new Error(`stored hash is ${r||"(empty)"}`);let s=te.join(i,"package.json"),o=JSON.parse(await se.readFile(s,"utf8")),a=Xp(o,i,s),c=Zp(a);if(c.length>0)throw new Error(c.map(u=>` - ${u}`).join(` -`));let l=await Ko(a);if(l!==t)throw new Error(`calculated hash is ${l}`);return a}catch(r){throw new Error(`Skill snapshot is invalid or missing: ${t}`,{cause:r})}}async function oh(e){try{return await Ul.access(e),!0}catch(t){if(t.code==="ENOENT")return!1;throw t}}function ah(e){return cE("sha256").update(e).digest("hex")}function uE(e){return ah(JSON.stringify(Object.fromEntries(Object.entries(e).sort(([t],[n])=>t.localeCompare(n)))))}function fE(e){return e.replaceAll(".","_").replaceAll("-","_")}async function dE(e,t){let n=await ue(e),i=Object.fromEntries(t.filter(o=>o.satisfied&&o.source).map(o=>[fE(o.code),o.source])),r=$t.join(e,"subagent-progress.md");await oh(r)&&(i.subagent_progress=$t.relative(n,r).split($t.sep).join("/"));let s=t.find(o=>o.code==="design.handoff"&&o.satisfied);return s?.source&&(i.handoff_context=s.source),i}function mE(e,t,n){return[{sequence:1,timestamp:n,type:"run_started",runId:e.runId,data:{skill:e.skill,skillVersion:e.skillVersion,skillHash:e.skillHash}},{sequence:2,timestamp:n,type:"state_migrated",runId:e.runId,data:{kind:"classic",migrationVersion:cn,profile:t,source:"pre-migration"}}]}async function pE(e){await Promise.all(e.map(t=>Ul.rm(t,{recursive:!0,force:!0})))}async function ch(e,t){let n=await B(e);if(!n.classic)throw new Error("Classic migration requires a legacy state projection");let i=n.classic,r=i.classicProfile??i.workflow;if(n.run){if(i.classicMigration!==cn)throw new Error("Classic Run exists without a supported classic_migration marker");if(n.run.skill!==t.skillPackage.definition.metadata.name)throw new Error(`Classic Run skill mismatch: expected ${t.skillPackage.definition.metadata.name}, got ${n.run.skill}`);if(await Ko(t.skillPackage)!==n.run.skillHash)return await Jo(e,n.run.skillHash),{classic:i,run:n.run,evidence:await et(e,n),migrated:!1,snapshotDir:$t.join(e,".comet","skill-snapshots",n.run.skillHash)};let d=await Jl(t.skillPackage,e);return{classic:i,run:n.run,evidence:await et(e,n),migrated:!1,snapshotDir:d.snapshotDir}}let s=await et(e,n),o=Pt(i,s);if(!t.skillPackage.definition.orchestration.steps?.some(f=>f.id===o))throw new Error(`Classic Skill package does not define resolved step: ${o}`);let a=await Ko(t.skillPackage),c=$t.join(e,".comet","skill-snapshots",a),l=await oh(c),u=[];try{let f=await Jl(t.skillPackage,e),d=Dp(t.skillPackage,t.runId?.()??lE(),f.hash);d.currentStep=o,o==="completed"&&(d.status="completed");let p={...i,classicProfile:r,classicMigration:cn},g=await dE(e,s),h=await ue(e),m=s.find(k=>k.code==="design.handoff"&&k.satisfied),y=null;m?.source&&(y=await F(h,m.resolvedSource??m.source,{label:"Classic migration handoff context",hooks:t.handoffReadHooks}),await qo(e,d.contextRef,y),u.push($t.resolve(e,d.contextRef))),await gi(e,d.artifactsRef,g),u.push($t.resolve(e,d.artifactsRef));let w=(t.now?.()??new Date).toISOString(),C={runId:d.runId,stateVersion:1,trajectoryOffset:2,contextHash:y===null?null:ah(y),artifactsHash:uE(g),createdAt:w};await wi(e,d.checkpointRef,C),u.push($t.resolve(e,d.checkpointRef)),u.push($t.resolve(e,d.trajectoryRef));for(let k of mE(d,r,w))await Je(e,d.trajectoryRef,k);return await De(e,{classic:p,run:d,unknownKeys:n.unknownKeys}),{classic:p,run:d,evidence:s,migrated:!0,snapshotDir:f.snapshotDir}}catch(f){throw await pE(u),l||await Ul.rm(c,{recursive:!0,force:!0}),f}}async function hE(e){try{return(await lh.stat(e)).isDirectory()}catch(t){if(t.code==="ENOENT")return!1;throw t}}async function Uo(e){try{return(await lh.stat(e)).isFile()}catch(t){if(t.code==="ENOENT")return!1;throw t}}async function gE(e){return await hE(e)?await Uo(be.join(e,"skill.yaml"))?!0:await Uo(be.join(e,"SKILL.md"))&&await Uo(be.join(e,"comet","skill.yaml")):!1}function uh(e){return{root:e,packageKind:"runtime",definition:{apiVersion:"comet/v1alpha1",kind:"Skill",metadata:{name:"comet-classic",version:"1",description:"Internal compatibility orchestration for classic Comet full, hotfix, and tweak workflows"},goal:{statement:"Advance or restore a classic Comet Run without changing the user command surface",inputs:[{name:"classic-state",description:"Validated ClassicState consistent with the Run projection",required:!0},{name:"evidence",description:"Structured evidence produced by the Classic Evidence collector",required:!0}],outputs:[{name:"run-state",description:"Atomically synchronized Classic and Run state",required:!0}],success:["Legacy fields and Run fields remain consistent","Every step invokes only a declared public Comet Skill","The completed state passes its completion eval"]},orchestration:{mode:"deterministic",entry:"full.open",steps:[{id:"full.open",action:{type:"invoke_skill",ref:"comet-open"},next:"full.design.handoff"},{id:"full.design.handoff",action:{type:"invoke_skill",ref:"comet-design"},next:"full.design.document"},{id:"full.design.document",action:{type:"invoke_skill",ref:"comet-design"},next:"full.build.plan"},{id:"full.build.plan",action:{type:"invoke_skill",ref:"comet-build"},next:"full.build.plan-ready"},{id:"full.build.plan-ready",action:{type:"invoke_skill",ref:"comet-build"},next:"full.build.configure"},{id:"full.build.configure",action:{type:"invoke_skill",ref:"comet-build"},next:"full.build.execute"},{id:"full.build.execute",action:{type:"invoke_skill",ref:"comet-build"},next:"full.build.complete"},{id:"full.build.complete",action:{type:"invoke_skill",ref:"comet-build"},next:"full.verify.run"},{id:"full.build.fix",action:{type:"invoke_skill",ref:"comet-build"},next:"full.build.execute"},{id:"full.verify.run",action:{type:"invoke_skill",ref:"comet-verify"},next:"full.verify.branch"},{id:"full.verify.branch",action:{type:"invoke_skill",ref:"comet-verify"},next:"full.archive.confirm"},{id:"full.archive.confirm",action:{type:"invoke_skill",ref:"comet-archive"},next:"full.archive.execute"},{id:"full.archive.execute",action:{type:"invoke_skill",ref:"comet-archive"},next:"completed"},{id:"hotfix.open",action:{type:"invoke_skill",ref:"comet-hotfix"},next:"hotfix.build.execute"},{id:"hotfix.build.execute",action:{type:"invoke_skill",ref:"comet-build"},next:"hotfix.build.complete"},{id:"hotfix.build.complete",action:{type:"invoke_skill",ref:"comet-build"},next:"hotfix.verify.run"},{id:"hotfix.verify.run",action:{type:"invoke_skill",ref:"comet-verify"},next:"hotfix.verify.branch"},{id:"hotfix.verify.branch",action:{type:"invoke_skill",ref:"comet-verify"},next:"hotfix.archive.confirm"},{id:"hotfix.archive.confirm",action:{type:"invoke_skill",ref:"comet-archive"},next:"hotfix.archive.execute"},{id:"hotfix.archive.execute",action:{type:"invoke_skill",ref:"comet-archive"},next:"completed"},{id:"tweak.open",action:{type:"invoke_skill",ref:"comet-tweak"},next:"tweak.build.execute"},{id:"tweak.build.execute",action:{type:"invoke_skill",ref:"comet-build"},next:"tweak.build.complete"},{id:"tweak.build.complete",action:{type:"invoke_skill",ref:"comet-build"},next:"tweak.verify.run"},{id:"tweak.verify.run",action:{type:"invoke_skill",ref:"comet-verify"},next:"tweak.verify.branch"},{id:"tweak.verify.branch",action:{type:"invoke_skill",ref:"comet-verify"},next:"tweak.archive.confirm"},{id:"tweak.archive.confirm",action:{type:"invoke_skill",ref:"comet-archive"},next:"tweak.archive.execute"},{id:"tweak.archive.execute",action:{type:"invoke_skill",ref:"comet-archive"},next:"completed"},{id:"completed",action:{type:"checkpoint"},completionEvals:["classic-completed"]}]},skills:[{id:"comet-open"},{id:"comet-design"},{id:"comet-build"},{id:"comet-verify"},{id:"comet-archive"},{id:"comet-hotfix"},{id:"comet-tweak"}],agents:[],tools:[]},guardrails:{allowedSkills:["comet-open","comet-design","comet-build","comet-verify","comet-archive","comet-hotfix","comet-tweak"],allowedAgents:[],allowedTools:[],maxIterations:500,maxRetriesPerAction:3,confirmationRequiredFor:[]},evals:[{id:"classic-completed",scope:"completion",type:"state_equals",field:"status",equals:"completed"}]}}async function fh(){let e=be.dirname(Gl(import.meta.url)),t=[process.env.COMET_RUNTIME_CLASSIC_ROOT,be.resolve(e,"..","runtime","classic"),be.resolve(e,"..","..","comet","runtime","classic"),be.resolve(e,"..","..","assets","skills","comet","runtime","classic"),be.resolve("assets","skills","comet","runtime","classic"),process.env.COMET_CLASSIC_SKILL_ROOT,be.resolve(e,"..","..","comet-classic"),be.resolve(e,"..","..","assets","skills","comet-classic"),be.resolve("assets","skills","comet-classic")].filter(n=>!!n);for(let n of t)if(await gE(n))return n;return null}async function dh(e){return await Uo(be.join(e,"skill.yaml"))?zp(e):Yp(e)}async function dn(e){let t=await fh();return ch(e,{skillPackage:t?await dh(t):uh(be.dirname(Gl(import.meta.url)))})}async function mh(e){let t=await B(e),n=Array.from(new Set(t.unknownKeys)).sort();if(n.length>0)throw new Error(`Invalid Classic state: unknown field(s): ${n.join(", ")}`);return dn(e)}async function Vl(e,t){let n=t??await B(e,{migrate:!1}),i=Array.from(new Set(n.unknownKeys)).sort();if(i.length>0)throw new Error(`Invalid Classic state: unknown field(s): ${i.join(", ")}`);if(!n.classic||!n.run)throw new Error("Classic runtime validation requires synchronized Classic and Run projections");if(n.classic.classicMigration!==cn)throw new Error("Classic Run exists without a supported classic_migration marker");let r=await fh(),s=r?await dh(r):uh(be.dirname(Gl(import.meta.url)));if(n.run.skill!==s.definition.metadata.name)throw new Error(`Classic Run skill mismatch: expected ${s.definition.metadata.name}, got ${n.run.skill}`);let o=await Jo(e,n.run.skillHash);if(o.definition.metadata.name!==n.run.skill)throw new Error(`Classic Run snapshot skill mismatch: expected ${n.run.skill}, got ${o.definition.metadata.name}`);let a=await et(e,n),c=Pt(n.classic,a);if(n.run.currentStep!==c)throw new Error(`Classic Run step mismatch: expected ${c}, got ${n.run.currentStep}`);return{classic:n.classic,run:n.run,evidence:a,migrated:!1,snapshotDir:be.join(e,".comet","skill-snapshots",n.run.skillHash)}}async function mn(e,t,n,i){let r=await B(e);if(!r.classic||!r.run)throw new Error("Classic transition requires synchronized Classic and Run projections");let s=await et(e,{classic:t,run:n,unknownKeys:r.unknownKeys}),o=Pt(t,s),a={...n,currentStep:o,iteration:n.iteration+1,status:o==="completed"?"completed":"running"};await De(e,{classic:t,run:a,unknownKeys:r.unknownKeys});let c=await We(e,a.trajectoryRef);return await Je(e,a.trajectoryRef,{sequence:c.length+1,timestamp:new Date().toISOString(),type:"state_transitioned",runId:a.runId,data:{kind:"classic",fromStep:n.currentStep,toStep:o,...i}}),a}Ao();import wE from"path";var yE=wE.join(".comet","state-events.jsonl"),vE=8*1024*1024;async function Dn(e,t){let n={schemaVersion:1,timestamp:new Date().toISOString(),...t};return await Oo(e,yE,`${JSON.stringify(n)} -`,vE,"Classic state event log"),n}var ph=["open-complete","design-complete","build-complete","verify-pass","verify-fail","archive-confirm","archive-reopen","archived","preset-escalate"],bE={"open-complete":{event:"open-complete",from:"open",guardRefs:["open-artifacts-present"]},"design-complete":{event:"design-complete",from:"design",guardRefs:["design-evidence-present"]},"build-complete":{event:"build-complete",from:"build",guardRefs:["build-decisions-selected"]},"verify-pass":{event:"verify-pass",from:"verify",guardRefs:["verification-report-present"]},"verify-fail":{event:"verify-fail",from:"verify",guardRefs:["verification-failed"]},"archive-confirm":{event:"archive-confirm",from:"archive",guardRefs:["archive-final-confirmation"]},"archive-reopen":{event:"archive-reopen",from:"archive",guardRefs:["archive-not-finalized"]},archived:{event:"archived",from:"archive",guardRefs:["verify-result-pass","archive-confirmed"]},"preset-escalate":{event:"preset-escalate",from:"build",guardRefs:["preset-workflow"]}},hh={open:"open-complete",design:"design-complete",build:"build-complete",verify:"verify-pass"};function CE(e){return e.toISOString().slice(0,10)}function j(e,t,n,i){let r=e[n];e[n]=i,r!==i&&t.push({field:n,from:r,to:i})}function vi(e,t,n={}){let i=bE[t];if(e.phase!==i.from)throw new Error(`Cannot apply ${t}: phase is '${e.phase}', expected '${i.from}'`);let r={...e},s=[],o=n.now??new Date;if(t==="open-complete")j(r,s,"phase",r.workflow==="full"?"design":"build");else if(t==="design-complete")j(r,s,"phase","build");else if(t==="build-complete"){let a=r.verifyResult==="fail";j(r,s,"phase","verify"),j(r,s,"verifyResult","pending"),j(r,s,"branchStatus","pending"),a||j(r,s,"verificationReport",null)}else if(t==="verify-pass")j(r,s,"verifyResult","pass"),j(r,s,"verifyFailures",0),j(r,s,"phase","archive"),j(r,s,"verifiedAt",CE(o)),j(r,s,"archiveConfirmation","pending"),j(r,s,"branchStatus","pending");else if(t==="verify-fail")j(r,s,"verifyResult","fail"),j(r,s,"verifyFailures",r.verifyFailures+1),j(r,s,"phase","build"),j(r,s,"branchStatus","pending");else if(t==="preset-escalate"){if(r.workflow!=="hotfix"&&r.workflow!=="tweak")throw new Error(`Cannot apply ${t}: workflow must be hotfix or tweak, got '${r.workflow}'`);j(r,s,"workflow","full"),j(r,s,"classicProfile","full"),j(r,s,"phase","design"),j(r,s,"designDoc",null),j(r,s,"buildPause",null),j(r,s,"buildMode",null),j(r,s,"subagentDispatch",null),j(r,s,"tddMode",null),j(r,s,"reviewMode",null),j(r,s,"isolation",null),j(r,s,"boundBranch",null),j(r,s,"verifyMode",null),j(r,s,"directOverride",null)}else if(t==="archive-confirm"){if(r.verifyResult!=="pass")throw new Error(`Cannot apply ${t}: verifyResult must be pass`);if(r.archived)throw new Error(`Cannot apply ${t}: already archived`);j(r,s,"archiveConfirmation","confirmed")}else if(t==="archive-reopen"){if(r.archived)throw new Error(`Cannot apply ${t}: already archived`);j(r,s,"verifyResult","pending"),j(r,s,"verifyFailures",0),j(r,s,"phase","verify"),j(r,s,"verifiedAt",null),j(r,s,"archiveConfirmation",null),j(r,s,"branchStatus","pending")}else{if(r.verifyResult!=="pass")throw new Error(`Cannot apply ${t}: verifyResult must be pass`);if(r.archiveConfirmation!=="confirmed")throw new Error(`Cannot apply ${t}: archiveConfirmation must be confirmed`);j(r,s,"archived",!0)}return{classic:r,effects:s,definition:i}}hl();import{randomUUID as kE}from"crypto";import{promises as Ar}from"fs";import wh from"path";var Yl="comet.selection.v2",SE=16*1024;function Go(e){return wh.join(e,".comet","current-change.json")}function EE(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function gh(e){return e===null||typeof e=="string"}function yh(e){let t;try{t=JSON.parse(e)}catch(n){throw new Error(`current change selection contains invalid JSON: ${n instanceof Error?n.message:String(n)}`,{cause:n})}if(!EE(t))throw new Error("current change selection must be a JSON object");if(t.version===1){if(typeof t.change!="string")throw new Error("legacy current change selection change must be a string");if(t.branch!==void 0&&!gh(t.branch))throw new Error("legacy current change selection branch must be a string or null");return{selection:{schema:Yl,workflow:"classic",change:t.change,branch:t.branch??null},legacy:!0}}if(t.schema!==Yl)throw new Error(`current change selection schema must be ${Yl}`);if(t.workflow!=="native"&&t.workflow!=="classic")throw new Error("current change selection workflow must be native or classic");if(typeof t.change!="string")throw new Error("current change selection change must be a string");if(!gh(t.branch))throw new Error("current change selection branch must be a string or null");if(t.workflow==="native"&&t.branch!==null)throw new Error("Native current change selection branch must be null");return{selection:t,legacy:!1}}async function Vo(e){let t;try{let i=Go(e),{bytes:r}=await uo(i,SE,{label:"current change selection"});t=r.toString("utf8")}catch(i){if(i.code==="ENOENT")return{status:"missing"};throw new Error(`cannot read current change selection: ${i instanceof Error?i.message:String(i)}`,{cause:i})}return{status:"selected",...yh(t)}}async function vh(e,t){let n=yh(JSON.stringify(t));if(n.legacy)throw new Error("cannot write a legacy current change selection");let i=Go(e),r=`${i}.${kE()}.tmp`;await Ar.mkdir(wh.dirname(i),{recursive:!0});try{await Ar.writeFile(r,`${JSON.stringify(n.selection,null,2)} -`,"utf8"),await Ar.rename(r,i)}catch(s){throw await Ar.rm(r,{force:!0}),s}}async function zl(e){await Ar.rm(Go(e),{force:!0})}async function bh(e,t,n){let i=await Vo(e);return i.status!=="selected"||i.selection.workflow!==t||i.selection.change!==n?!1:(await zl(e),!0)}kr();var Xl=Ve(He(),1);kr();import{execFileSync as Ch}from"child_process";import{randomUUID as RE}from"crypto";import{promises as Ir}from"fs";import kh from"path";function Nr(e){try{let t=Ch("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:e,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim();return t&&t!=="HEAD"?t:null}catch{return null}}var _E=Tl("liveGitBranch",e=>Nr(e));function Ql(e){try{return Ch("git",["rev-parse","--is-inside-work-tree"],{cwd:e,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()==="true"}catch{return!1}}var xE=Tl("isGitWorkTree",e=>Ql(e)),PE=["current","branch","worktree"];function Yo(e){return PE.includes(e)}function Zl(e){return Yo(e.isolation)?e.boundBranch===null&&e.currentBranch===null&&e.gitWorkTree===!1?{status:"not-applicable"}:e.boundBranch===null?e.currentBranch===null?{status:"unbound-detached"}:{status:"needs-heal",branch:e.currentBranch}:e.currentBranch===e.boundBranch?{status:"ok"}:{status:"drift",boundBranch:e.boundBranch,currentBranch:e.currentBranch}:{status:"not-applicable"}}async function At(e,t){let n=kh.join(e,".comet.yaml"),i=(0,Xl.parseDocument)(await Ir.readFile(n,"utf8"),{uniqueKeys:!1});if(i.errors.length>0)throw new Error(`Invalid .comet.yaml: ${i.errors[0].message}`);let r=i.toJS()??{},s=typeof r.isolation=="string"?r.isolation:null,o=typeof r.bound_branch=="string"&&r.bound_branch!==""?r.bound_branch:null,a=Yo(s),c=_E(t.cwd),l=a&&o===null&&c===null?xE(t.cwd):!0,u=Zl({isolation:s,boundBranch:o,currentBranch:c,gitWorkTree:l});return u.status==="needs-heal"&&t.heal?(await eu(e,u.branch),{status:"healed",branch:u.branch,bindingRequired:a,currentBranch:c}):{...u,bindingRequired:a,currentBranch:c}}async function eu(e,t){let n=kh.join(e,".comet.yaml"),i=(0,Xl.parseDocument)(await Ir.readFile(n,"utf8"),{uniqueKeys:!1});i.set("bound_branch",t);let r=`${n}.${RE()}.tmp`;try{await Ir.writeFile(r,i.toString(),"utf8"),await Ir.rename(r,n)}catch(s){throw await Ir.rm(r,{force:!0}),s}}function Sh(e){return e??"detached HEAD"}function zo(e,t,n){return`change '${e}' is bound to branch '${t}', but current branch is '${Sh(n)}'. -Next: ask the user to confirm — switch back to '${t}', or run \`comet state rebind ${e}\` after explicit confirmation.`}function Tr(e,t,n){return`change '${e}' is bound to branch '${t}', but current branch is '${Sh(n)}'`}function It(e){return`change '${e}' uses a branch-bound workspace mode but has no bound branch and HEAD is detached; checkout a branch first before continuing.`}var Ph=Ve(He(),1);import{promises as Xo}from"node:fs";import Ce from"node:path";import{execFileSync as OE}from"node:child_process";var $E=3e4,AE=8*1024*1024,tu=class extends Error{constructor(n,i,r){super(`git ${i.join(" ")} failed${r?`: ${r}`:""}`);this.cwd=n;this.args=i;this.stderr=r;this.name="GitCommandError"}cwd;args;stderr};function IE(e,t){try{return OE("git",["-C",e,...t],{encoding:"utf8",stdio:["ignore","pipe","pipe"],timeout:$E,maxBuffer:AE,windowsHide:!0})}catch(n){let i=typeof n.stderr=="string"?n.stderr.trim():Buffer.isBuffer(n.stderr)?n.stderr.toString("utf8").trim():"";throw new tu(e,t,i)}}function Nt(e,t){return IE(e,t).trim()}function Eh(e){return Nt(e,["status","--porcelain=v1","-z","--untracked-files=all"])===""}function nu(e,t){Nt(e,["check-ref-format","--branch",t])}import{execFileSync as NE}from"child_process";import jr from"path";function Wn(e,t){return NE("git",["-C",e,...t],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:1e4,windowsHide:!0}).trim()}function TE(e,t){let n=jr.normalize(e),i=jr.normalize(t);return process.platform==="win32"?n.toLowerCase()===i.toLowerCase():n===i}function bi(e){try{let t=jr.resolve(Wn(e,["rev-parse","--show-toplevel"])),i=Wn(e,["worktree","list","--porcelain","-z"]).split("\0").find(o=>o.startsWith("worktree ")),r=i?jr.resolve(i.slice(9)):t,s=null;try{s=Wn(e,["symbolic-ref","--quiet","--short","HEAD"])||null}catch{}return{isGitWorktree:!0,isSecondaryWorktree:!TE(t,r),currentWorktreeRoot:t,primaryWorktreeRoot:r,currentBranch:s}}catch{return{isGitWorktree:!1,isSecondaryWorktree:!1,currentWorktreeRoot:null,primaryWorktreeRoot:null,currentBranch:null}}}function Lr(e){try{Wn(e,["rev-parse","--is-inside-work-tree"]);let t=Wn(e,["worktree","list","--porcelain"]).split(/\r?\n/u),n=[],i=null;for(let r of t)r.startsWith("worktree ")?(i&&n.push(i),i={root:jr.resolve(r.slice(9)),branch:null,detached:!1}):i&&r.startsWith("branch refs/heads/")?i.branch=r.slice(18):i&&r==="detached"&&(i.detached=!0);return i&&n.push(i),n}catch{return[]}}function Mr(e,t){try{return Wn(e,["check-ref-format","--branch",t]),Wn(e,["show-ref","--verify",`refs/heads/${t}`]),!0}catch{return!1}}function Fn(e,t){let n=Ce.normalize(e),i=Ce.normalize(t);return process.platform==="win32"?n.toLowerCase()===i.toLowerCase():n===i}function Rh(e,t){let n=Ce.relative(e,t);return n===""||!Ce.isAbsolute(n)&&n!==".."&&!n.startsWith(`..${Ce.sep}`)}async function Oh(e){try{throw await Xo.lstat(e),new Error(`Classic worktree path already exists: ${e}`)}catch(t){if(t.code!=="ENOENT")throw t}}async function jE(e){try{return await Xo.lstat(e),!0}catch(t){if(t.code==="ENOENT")return!1;throw t}}function $h(e,t,n){let i=Ce.resolve(e,n??Ce.join(".worktrees",t));if(!Rh(e,i))throw new Error("Classic worktree path must remain inside the primary worktree");let r=Ce.resolve(e,Nt(e,["rev-parse","--git-common-dir"]));if(Rh(r,i))throw new Error("Classic worktree path cannot be inside the Git common directory");return i}function _h(e,t){return t===void 0?void 0:Ce.resolve(e,t)}function xh(e,t){return e.find(n=>n.branch===t)}function Ci(e){return{schema:"comet.classic.workspace-preparation.v1",...e}}async function Ah(e){Ze(e.name);let t=Ce.resolve(e.projectRoot),n=bi(t);if(e.isolation==="current"){if(e.changeBranch||e.targetBranch||e.worktreePath)throw new Error("Classic current isolation does not accept --change-branch, --target-branch, or --worktree-path");return Ci({isolation:"current",projectRoot:t,changeBranch:n.currentBranch,targetBranch:n.currentBranch,worktreePath:null,createdBranch:!1,createdWorktree:!1,reusedWorktree:!1})}if(!n.isGitWorktree||n.currentBranch===null||n.primaryWorktreeRoot===null||n.currentWorktreeRoot===null)throw new Error("Classic branch and worktree isolation require an attached Git branch");let i=n.primaryWorktreeRoot,r=e.changeBranch??`comet/${e.name}`;nu(t,r);let s=e.targetBranch??n.currentBranch;if(nu(t,s),!Mr(t,s))throw new Error(`Classic target branch is not a verified local branch: ${s}`);if(e.isolation==="branch"){if(e.worktreePath)throw new Error("--worktree-path is only valid with --isolation worktree");if(n.currentBranch===r)return Ci({isolation:"branch",projectRoot:t,changeBranch:r,targetBranch:s,worktreePath:null,createdBranch:!1,createdWorktree:!1,reusedWorktree:!1});if(!Eh(t))throw new Error("Classic branch isolation requires a clean current working directory");if(Mr(t,r))throw new Error(`Classic change branch already exists: ${r}`);return Nt(t,["switch","-c",r,s]),Ci({isolation:"branch",projectRoot:t,changeBranch:r,targetBranch:s,worktreePath:null,createdBranch:!0,createdWorktree:!1,reusedWorktree:!1})}if(n.currentBranch===r){if(!n.isSecondaryWorktree)throw new Error("Classic worktree isolation must use a linked Git worktree");let u=_h(i,e.worktreePath);if(u&&!Fn(u,n.currentWorktreeRoot))throw new Error(`Classic worktree path ${u} does not match the current worktree ${n.currentWorktreeRoot}`);return Ci({isolation:"worktree",projectRoot:t,changeBranch:r,targetBranch:s,worktreePath:t,createdBranch:!1,createdWorktree:!1,reusedWorktree:!0})}let o=Lr(t),a=xh(o,r);if(a&&!await jE(a.root)&&(Nt(i,["worktree","prune"]),o=Lr(t),a=xh(o,r)),a){let u=_h(i,e.worktreePath);if(u&&!Fn(u,a.root))throw new Error(`Classic worktree branch ${r} is already checked out at ${a.root}`);return await Xo.access(a.root),Ci({isolation:"worktree",projectRoot:a.root,changeBranch:r,targetBranch:s,worktreePath:a.root,createdBranch:!1,createdWorktree:!1,reusedWorktree:!0})}let c=$h(i,e.name,e.worktreePath);await Oh(c);let l=Mr(t,r);if(Nt(i,l?["worktree","add",c,r]:["worktree","add","-b",r,c,s]),o=Lr(t),!o.some(u=>Fn(u.root,c)))throw new Error(`Classic worktree was created but is not registered: ${c}`);return Ci({isolation:"worktree",projectRoot:c,changeBranch:r,targetBranch:s,worktreePath:c,createdBranch:!l,createdWorktree:!0,reusedWorktree:!1})}async function LE(e,t,n){let i;try{i=await Oe(n,e)}catch{return null}if(!i.stateExists)return null;let r;try{r=(0,Ph.parseDocument)(await Xo.readFile(Ce.join(i.directory,".comet.yaml"),"utf8"))}catch{return null}let s=r.toJS()??{};return{projectRoot:Ce.resolve(e),worktree:t,changeDirectory:i.directory,isolation:typeof s.isolation=="string"?s.isolation:null,boundBranch:typeof s.bound_branch=="string"?s.bound_branch:null,branch:t?.branch??bi(e).currentBranch}}async function ME(e,t){let n=Lr(e),i=n.length>0?[...n]:[{root:Ce.resolve(e),branch:null,detached:!1}];i.some(s=>Fn(s.root,e))||i.push({root:Ce.resolve(e),branch:bi(e).currentBranch,detached:!1});let r=(await Promise.all(i.map(s=>LE(s.root,s,t)))).filter(s=>s!==null);return{entries:n,candidates:r}}function qE(e){return e.isolation===null||e.boundBranch===null&&e.branch!==null||e.boundBranch===null&&e.branch===null&&e.worktree?.detached===!1?!0:e.boundBranch!==null&&e.boundBranch===e.branch}async function DE(e,t,n){let i=bi(e);if(!i.primaryWorktreeRoot)throw new Error("Classic Git primary worktree is unavailable");let r=i.primaryWorktreeRoot,s=$h(r,t);return await Oh(s),Nt(r,["worktree","prune"]),Nt(r,["worktree","add",s,n]),s}async function ki(e){let t=Ce.resolve(e.projectRoot),{entries:n,candidates:i}=await ME(t,e.name);if(i.length===0)throw new Error(`Classic change '${e.name}' was not found in any registered Git worktree`);let r=i.filter(qE),o=r.find(f=>Fn(f.projectRoot,t))??r[0];if(o)return{schema:"comet.classic.workspace-resolution.v1",change:e.name,projectRoot:o.projectRoot,branch:o.branch,isolation:o.isolation,routed:!Fn(o.projectRoot,t),recreatedWorktree:!1};let a=i.find(f=>Fn(f.projectRoot,t));if(a&&a.isolation!=="worktree")return{schema:"comet.classic.workspace-resolution.v1",change:e.name,projectRoot:a.projectRoot,branch:a.branch,isolation:a.isolation,routed:!1,recreatedWorktree:!1};let c=i.find(f=>f.boundBranch!==null),l=c?.boundBranch,u=bi(t);if(c?.isolation==="worktree"&&l&&u.primaryWorktreeRoot&&Mr(t,l)&&!n.some(f=>f.branch===l)){let f=await DE(t,e.name,l);return{schema:"comet.classic.workspace-resolution.v1",change:e.name,projectRoot:f,branch:l,isolation:c.isolation,routed:!0,recreatedWorktree:!0}}throw l?new Error(`Classic change '${e.name}' is bound to branch '${l}', but no registered worktree is aligned; ask the user to rebind only if that branch was intentionally renamed or taken over.`):new Error(`Classic change '${e.name}' has no bound branch in its isolated workspace; ask the user to confirm a rebind before continuing.`)}async function iu(e,t){return{exitCode:0,stdout:`${JSON.stringify({action:e,...t})} -`}}var WE=Mn("readCometCurrentSelection",e=>Vo(e));async function ru(e,t){Ze(t);let n=await Oe(t,e);if(!n.stateExists)throw new Error(`Cannot select current change '${t}': active change state not found`);let i=await B(n.directory,{migrate:!1});if(!i.classic)throw new Error(`Cannot select current change '${t}': Classic state is incomplete`);if(i.classic.archived)throw new Error(`Cannot select current change '${t}': change is archived`);return n.directory}async function Ih(e,t){Ze(t);let n={label:"",directory:"",exists:!1,stateExists:!1};try{n=await Oe(t,e)}catch(c){if(!(c instanceof An))throw c}let i;try{i=await ki({projectRoot:e,name:t})}catch(c){throw n.stateExists||await ru(e,t),c}let r=i.projectRoot,s=await ru(r,t),o=await At(s,{heal:!0,cwd:r});if(o.status==="drift")throw new Error(Tr(t,o.boundBranch,o.currentBranch));if(o.status==="unbound-detached")throw new Error(It(t));let a={schema:"comet.selection.v2",workflow:"classic",change:t,branch:o.currentBranch};return await vh(r,a),a}async function Qo(e){let t;try{t=await WE(e)}catch(s){return{status:"stale",reason:s instanceof Error?s.message:String(s)}}if(t.status==="missing")return{status:"missing"};if(t.selection.workflow!=="classic")return{status:"stale",reason:`current change '${t.selection.change}' belongs to Native, not Classic`};let n=t.selection,i;try{i=await ru(e,n.change)}catch(s){return{status:"stale",reason:s instanceof Error?s.message:String(s)}}let r=await At(i,{heal:!1,cwd:e});return r.status==="drift"?{status:"stale",reason:Tr(n.change,r.boundBranch,r.currentBranch)}:r.status==="unbound-detached"?{status:"stale",reason:It(n.change)}:r.status==="ok"?{status:"selected",selection:n}:n.branch!==null&&r.currentBranch!==n.branch?{status:"stale",reason:`current change '${n.change}' was selected on branch '${n.branch}', current branch is '${r.currentBranch??"detached HEAD"}'`}:{status:"selected",selection:n}}async function Nh(e){let t;try{t=await Vo(e)}catch{return}t.status==="selected"&&t.selection.workflow==="classic"&&await zl(e)}async function Th(e,t){return bh(e,"classic",t)}var HE="\x1B[32m",KE="\x1B[31m",JE="\x1B[33m",ou="\x1B[0m";function Ge(e){return`${HE}${e}${ou}`}function Ae(e){return`${KE}${e}${ou}`}function qr(e){return`${JE}${e}${ou}`}var fe=class extends Error{constructor(n,i=1){super(n);this.exitCode=i}exitCode},su=class{stderr=[];openSpecStdout=[];openSpecStderr=[];stepsOk=0;stepsTotal=0;captureOpenSpec(t){t.stdout&&this.openSpecStdout.push(t.stdout),t.stderr&&this.openSpecStderr.push(t.stderr)}toResult(t=0){let n=this.stderr.length>0?this.stderr.join(` +`))throw new Error("Invalid project config write transaction: unexpected fields");if(i.schema!==Vm)throw new Error("Invalid project config write transaction: unsupported schema");if(typeof i.id!="string"||!Ym.test(i.id))throw new Error("Invalid project config write transaction: invalid id");if(typeof i.owner_pid!="number"||!Number.isSafeInteger(i.owner_pid)||i.owner_pid<=0)throw new Error("Invalid project config write transaction: invalid owner pid");if(typeof i.expected_sha256!="string"||!vo.test(i.expected_sha256)||typeof i.output_sha256!="string"||!vo.test(i.output_sha256))throw new Error("Invalid project config write transaction: invalid config hash");if(i.candidate!==zm(i.id)||i.quarantine!==Xm(i.id))throw new Error("Invalid project config write transaction: paths do not match its id");return{journal:i,source:t.toString("utf8")}}async function bo(e,t){try{let{bytes:n}=await J(e,t,Cl,{label:t});return bl(n)}catch(n){if(Qm(n))return null;throw n}}async function Gm(e,t,n,i){let r=await N(e,t,{label:t,expected:"file"});if(!r.exists)return!1;let s=`${t}.${Ak()}.cleanup`,o=await N(e,s,{label:`${t} cleanup`,expected:"file"});if(o.exists)throw new Error(`Owned cleanup path already exists: ${s}`);if(await on.rename(r.target,o.target),await i?.(t,s),await bo(e,s)!==n){try{let c=await N(e,t,{label:t,expected:"file"});c.exists||(await on.link(o.target,c.target),await on.unlink(o.target))}catch{}throw new Error(`Refusing to remove modified project config transaction file: ${t}`)}return await on.unlink(o.target),!0}function Nk(e){if(e===process.pid)return!0;try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}async function Tk(e,t){let n=Ik(t.journal.id),i=await N(e,n,{label:"project config write transaction cleanup",expected:"file"});if(i.exists)throw new Error("Project config write transaction cleanup path already exists");let r=await N(e,yo,{label:"project config write transaction",expected:"file"});if(!r.exists)throw new Error("Project config write transaction changed before cleanup");await on.rename(r.target,i.target);let s=await J(e,n,Cl,{label:"project config write transaction cleanup"});if(bl(s.bytes)!==bl(t.source)){try{let o=await N(e,yo,{label:"project config write transaction",expected:"file"});o.exists||await on.link(i.target,o.target)}catch{}throw new Error("Project config write transaction changed before cleanup")}await on.unlink(i.target)}async function Zm(e,t,n,i){if(!Ym.test(t))throw new Error("Invalid project config write transaction id");if(!vo.test(n)||!vo.test(i))throw new Error("Invalid project config write transaction hash");if(await kl(e))throw new Error("An unfinished project config write transaction exists; run comet doctor --repair");let r={schema:Vm,id:t,owner_pid:process.pid,expected_sha256:n,output_sha256:i,candidate:zm(t),quarantine:Xm(t)};return await xe((await N(e,yo,{label:"project config write transaction",expected:"file"})).target,`${JSON.stringify(r,null,2)} +`,{containedRoot:e,exclusive:!0}),{candidate:r.candidate,quarantine:r.quarantine}}async function Co(e){let t=await kl(e);if(!t)return null;let{journal:n}=t,[i,r,s]=await Promise.all([Pt(e),bo(e,n.candidate),bo(e,n.quarantine)]);if(r!==null&&r!==n.output_sha256)throw new Error("Project config write transaction candidate changed after creation");if(s!==null&&s!==n.expected_sha256)throw new Error("Project config write transaction quarantine changed after creation");let o;return!i.exists&&s===n.expected_sha256?o="config-quarantined":i.sha256===n.output_sha256?o="published-cleanup-pending":i.exists&&i.sha256!==n.expected_sha256&&i.sha256!==n.output_sha256?o="successor-preserved-cleanup-pending":o="prepared",{id:n.id,stage:o,candidate:n.candidate,quarantine:n.quarantine,allowedRepair:"rollback-or-cleanup"}}async function ko(e,t={}){let n=await kl(e);if(!n)return!1;let{journal:i}=n;if(t.ownerId!==i.id&&Nk(i.owner_pid))throw new Error(`Project config write transaction ${i.id} is still active in process ${i.owner_pid}`);if(!await Co(e))return!1;let s=await Pt(e),o=await bo(e,i.quarantine);if(!s.exists){if(o!==i.expected_sha256)throw new Error("Cannot recover project config write transaction: the config and owned quarantine are missing");let a=await N(e,ae,{label:ae,expected:"file"}),c=await N(e,i.quarantine,{label:"project config write transaction quarantine",expected:"file"});try{await on.link(c.target,a.target)}catch(l){if(l.code!=="EEXIST")throw l}if(s=await Pt(e),!s.exists)throw new Error("Cannot recover project config write transaction: config publish failed")}return await Gm(e,i.candidate,i.output_sha256,t.testHooks?.afterOwnedFileQuarantine),s.exists&&await Gm(e,i.quarantine,i.expected_sha256,t.testHooks?.afterOwnedFileQuarantine),await Tk(e,n),!0}var Vm,yo,Cl,Ym,vo,Sl=ne(()=>{"use strict";sn();gt();_e();Vm="comet.project-config-write.v1",yo=".comet/config-write-transaction.json",Cl=16*1024,Ym=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/,vo=/^[0-9a-f]{64}$/});import{createHash as ep,randomUUID as jk}from"crypto";import{promises as np}from"fs";import El from"path";async function Rl(e,t){if(!t)return;let n=await Pt(e);if(!yl(n,t))throw new Error("Project config changed before commit; rerun the operation")}async function _l(e,t,n={}){mt(t,{allowPartialProject:n.allowPartialProject??!1});let i=El.resolve(e);if(await Co(i))throw new Error("An unfinished project config write transaction exists; run comet doctor --repair");let r=n.expectedIdentity??await Pt(i);await Rl(i,r);let s=await N(i,ae,{label:ae,expected:"file"}),o=jk(),a=ep("sha256").update(t).digest("hex"),c=r.exists&&r.sha256?await Zm(i,o,r.sha256,a):null,l=c!==null,u=c?.candidate??`.comet/config.yaml.${o}.next`,f=El.join(i,...u.split("/")),d=c?.quarantine??null;try{if(await xe(f,t,{containedRoot:i,exclusive:!0}),await n.beforeCommit?.(),await Rl(i,r),await N(i,u,{label:"project config candidate",expected:"file"}),r.exists){if(!d)throw new Error("Project config write transaction was not created");let g=El.join(i,...d.split("/"));if(await N(i,ae,{label:ae,expected:"file"}),(await N(i,d,{label:"project config quarantine",expected:"file"})).exists)throw new Error("Project config quarantine already exists");await np.rename(s.target,g);let{bytes:m}=await J(i,d,_n,{label:"project config quarantine"});if(ep("sha256").update(m).digest("hex")!==r.sha256)throw new Error("Project config changed before final publish; successor was preserved")}else if(s.exists)throw new Error("Project config changed before final publish; successor was preserved");await n.beforePublish?.(),await N(i,u,{label:"project config candidate",expected:"file"});try{await wo(f,s.target)}catch(g){throw new Error("Project config final publish failed; successor was preserved",{cause:g})}let p=await Pt(i);if(!p.exists||p.sha256!==a)throw new Error("Project config changed during final publish; successor was preserved");l&&(await ko(i,{ownerId:o}),l=!1)}catch(p){if(l)try{await ko(i,{ownerId:o})&&(l=!1)}catch{}throw p}finally{l||await Lk(i,u).catch(()=>!1)}}async function Lk(e,t){let n=await N(e,t,{label:t,expected:"file"});return n.exists?(await np.unlink(n.target),!0):!1}var xl=ne(()=>{"use strict";sn();pt();gt();_e();Sl()});var Po=ne(()=>{"use strict"});var gp=ne(()=>{"use strict"});var $l=ne(()=>{"use strict";Po()});var wp=ne(()=>{"use strict";Po();$l()});function lS(e){let t=e?.code;return t==="ENOENT"||t==="ENOTDIR"}function uS(e){let t=(0,yp.parseDocument)(e,{uniqueKeys:!0});if(t.errors.length>0)throw new Error(`Invalid global Comet config: ${t.errors[0].message}`);let n=t.toJS();if(n==null)return{};if(typeof n!="object"||Array.isArray(n))throw new Error("Invalid global Comet config: root must be a mapping");return n}function bp(e){if(e.native?.pending_root_move)throw new Error("Global Comet config cannot contain native.pending_root_move");let t=e.native?(({pending_root_move:n,...i})=>i)(e.native):void 0;return{...e,schema:"comet.global.v1",...t?{native:t}:{}}}function fS(e){let t=mt(JSON.stringify({...e,schema:"comet.project.v1"})).config;if(!t)throw new Error("Invalid global Comet config: workflow template is incomplete");return bp(t)}function dS(e){let t=mt(e,{allowPartialProject:!0,allowMissingNativeFields:!0});if(!t.native&&!t.classic)return null;let n=t.native?"native":"classic",i=t.native?.language??t.classic?.language??"en",r=dl(t.native?.artifact_root??"docs",i);return{schema:"comet.global.v1",default_workflow:n,workflows:[n],ambient_resume:t.ambient_resume,...t.native?{native:{...r.native,...t.native}}:{},...t.classic?{classic:t.classic}:{}}}function Cp(e){let t=uS(e);if(Object.keys(t).length===0)return null;if(t.schema===void 0)return dS(e);if(t.schema!=="comet.global.v1")throw new Error("Unsupported Comet global schema");return fS(t)}async function Al(e){try{let t=await J(e,vp,_n,{label:"global Comet config"});return Cp(t.bytes.toString("utf8"))}catch(t){if(lS(t))return null;throw t}}var yp,vp,Il=ne(()=>{"use strict";yp=Ve(He(),1);sn();pt();_e();vp=".comet/config.yaml"});var HA,kp=ne(()=>{"use strict";sn();_e();HA=4*1024*1024});function Ep(e,t){let n=e;for(let i of t)n+="\0"+(typeof i=="string"?i:JSON.stringify(i));return n}function Mn(e,t){return(...n)=>{let i=Sp;if(i===null)return t(...n);let r=Ep(`async:${e}`,n),s=i.entries.get(r);if(s)return s.value;let o=t(...n).catch(a=>{throw i.entries.delete(r),a});return i.entries.set(r,{value:o}),o}}function Nl(e,t){return(...n)=>{let i=Sp;if(i===null)return t(...n);let r=Ep(`sync:${e}`,n),s=i.entries.get(r);if(s)return s.value;let o=t(...n);return i.entries.set(r,{value:o}),o}}var Sp,Er=ne(()=>{"use strict";Sp=null});import we from"path";function Rp(e,t){let n=we.relative(e,t);return n===""||!we.isAbsolute(n)&&n!==".."&&!n.startsWith(`..${we.sep}`)}function pS(e,t){let n=we.isAbsolute(t)?we.resolve(t):we.resolve(e,t),i=we.relative(we.resolve(e),n);return i===""||we.isAbsolute(i)||i===".."||i.startsWith(`..${we.sep}`)?null:i.replaceAll("\\","/")}function _p(e){return process.platform==="win32"?e.toLowerCase():e}async function Tl(e,t,n=[]){let i=we.isAbsolute(t)?we.resolve(t):we.resolve(e,t),r=we.resolve(e);if(!Rp(r,i)||n.some(c=>Rp(we.resolve(c),i)))return null;let s=pS(e,t);if(!s)return null;let a=(await mS(e)).allow_paths.find(c=>{let l=_p(s),u=_p(c);return l===u||l.startsWith(`${u}/`)});return a?`${s} (configured Hook allow path: ${a})`:null}var mS,jl=ne(()=>{"use strict";Er();gt();mS=Mn("hookWritePolicy",async e=>(await vr(e))?.hook??{allow_paths:[]})});var xp=ne(()=>{"use strict";Po();sn();gp();wp();pt();Il();_e();gt();xl();kp();jl();Sl();$l()});import{TextDecoder as hS}from"util";function Pp(e){return{dev:e.dev,ino:e.ino,birthtime:e.birthtimeMs}}function gS(e,t){try{return new hS("utf-8",{fatal:!0}).decode(e.bytes)}catch(n){throw new Error(`${t} is not valid UTF-8`,{cause:n})}}async function Ll(e,t,n,i,r={}){try{let s=await J(e,t,n,{label:i,hooks:r.hooks});return{result:s,text:gS(s,i)}}catch(s){let o=s.code;if(o==="ENOENT"||o==="ENOTDIR")return null;throw s}}async function At(e,t,n,i,r={}){return(await Ll(e,t,n,i,r))?.text??null}async function cn(e,t,n,i,r,s={}){if(Buffer.byteLength(n,"utf8")>i)throw new Error(`${r} exceeds ${i} bytes`);let o=await Ll(e,t,i,r),a=await N(e,t,{label:r,expected:"file"});await xe(a.target,n,{containedRoot:a.projectRoot,beforeCommit:async()=>{await s.beforeCommit?.();let c=await Ll(e,t,i,r);if(!(!o&&!c)){if(!o||!c)throw new Error(`${r} changed before commit`);if(o.result.realPath!==c.result.realPath||!Me(Pp(o.result.stat),Pp(c.result.stat))||o.text!==c.text)throw new Error(`${r} changed before commit`)}}})}async function Oo(e,t,n,i,r,s={}){let o=await At(e,t,i,r);await cn(e,t,`${o??""}${n}`,i,r,s)}async function $o(e,t,n,i={}){let r=await N(e,t,{label:n,expected:"file"});return r.exists?vl(r.target,{containedRoot:r.projectRoot,beforeRemove:i.beforeRemove}):!1}var Ao=ne(()=>{"use strict";xp();wr()});var Ap={};Aw(Ap,{RUN_STATE_FILE:()=>No,applyRunStateToDocument:()=>Ml,readRunState:()=>xr,removeRunState:()=>ql,runStateFromDocument:()=>Io,writeRunState:()=>To});import wS from"path";function _r(e,t){let n=e[t];if(typeof n!="string"||n.length===0)throw new Error(`Invalid Run state: ${t} must be a non-empty string`);return n}function Rr(e,t){let n=_r(e,t);if(wS.isAbsolute(n)||/^(?:[A-Za-z]:|[\\/]|~)/u.test(n)||n.split(/[\\/]/u).includes(".."))throw new Error(`Invalid Run state: ${t} must stay inside the change directory`);return n}function yS(e){let t=e.run_retries??"{}",n;try{n=typeof t=="string"?JSON.parse(t):t}catch(i){throw new Error("Invalid Run state: run_retries must be a JSON object",{cause:i})}if(!n||typeof n!="object"||Array.isArray(n))throw new Error("Invalid Run state: run_retries must be a JSON object");for(let i of Object.values(n))if(!Number.isInteger(i)||Number(i)<0)throw new Error("Invalid Run state: retry counts must be non-negative integers");return n}function Io(e){if(!e.run_id)return null;let t=_r(e,"run_id"),n=_r(e,"skill"),i=_r(e,"skill_version"),r=_r(e,"skill_hash"),s=Rr(e,"pending_ref"),o=Rr(e,"trajectory_ref"),a=Rr(e,"context_ref"),c=Rr(e,"artifacts_ref"),l=Rr(e,"checkpoint_ref"),u=Number(e.iteration);if(!Number.isInteger(u)||u<0)throw new Error("Invalid Run state: iteration must be a non-negative integer");if(e.orchestration!=="deterministic"&&e.orchestration!=="adaptive")throw new Error("Invalid Run state: orchestration must be deterministic or adaptive");if(e.run_status!=="running"&&e.run_status!=="waiting"&&e.run_status!=="completed"&&e.run_status!=="failed")throw new Error("Invalid Run state: run_status is invalid");return{runId:t,skill:n,skillVersion:i,skillHash:r,orchestration:e.orchestration,currentStep:Op(e,"current_step"),iteration:u,pending:Op(e,"pending"),pendingRef:s,trajectoryRef:o,contextRef:a,artifactsRef:c,checkpointRef:l,status:e.run_status,retries:yS(e)}}function Ml(e,t){t?e.run_id=t.runId:delete e.run_id}function vS(e){return{runId:e.runId,skill:e.skill,skillVersion:e.skillVersion,skillHash:e.skillHash,orchestration:e.orchestration,currentStep:e.currentStep,iteration:e.iteration,pending:e.pending,pendingRef:e.pendingRef,trajectoryRef:e.trajectoryRef,contextRef:e.contextRef,artifactsRef:e.artifactsRef,checkpointRef:e.checkpointRef,status:e.status,retries:e.retries}}function bS(e){let t={run_id:e.runId,skill:e.skill,skill_version:e.skillVersion,skill_hash:e.skillHash,orchestration:e.orchestration,current_step:e.currentStep,iteration:e.iteration,pending:e.pending,pending_ref:e.pendingRef,trajectory_ref:e.trajectoryRef,context_ref:e.contextRef,artifacts_ref:e.artifactsRef,checkpoint_ref:e.checkpointRef,run_status:e.status,run_retries:JSON.stringify(e.retries)};return Io(t)}async function xr(e,t={}){let n=await At(e,No,$p,"Run state",t);if(n===null)return null;let i=JSON.parse(n);return bS(i)}async function To(e,t,n={}){await cn(e,No,JSON.stringify(vS(t),null,2),$p,"Run state",n)}async function ql(e,t={}){await $o(e,No,"Run state",t)}var Op,No,$p,Pr=ne(()=>{"use strict";Ao();Op=(e,t)=>{let n=e[t];return n==null?null:String(n)};No=".comet/run-state.json",$p=256*1024});import{pathToFileURL as IP}from"url";import{createHash as HE}from"crypto";import{promises as KE}from"fs";import yt from"path";import{spawnSync as Bk}from"child_process";function Nw(e){return e.length>0&&/^[A-Za-z0-9@+=:,./\\_-]+$/.test(e)?e:`"${e.replace(/"/g,'""')}"`}function Hu(e){return e.map(t=>Nw(t))}import{promises as rp}from"fs";import z from"path";import{promises as Ku}from"fs";async function Di(e){try{return await Ku.access(e),!0}catch(t){if(Tw(t))return!1;throw t}}async function Ju(e){try{return await Ku.readdir(e)}catch(t){let n=t?.code;if(n==="ENOENT"||n==="ENOTDIR")return[];throw t}}function Tw(e){let t=e?.code;return t==="ENOENT"||t==="ENOTDIR"}pt();gt();xl();_e();var An=class extends Error{code="classic-layout-unavailable";constructor(t="Classic artifact layout is unavailable from .comet/config.yaml"){super(t),this.name="ClassicLayoutUnavailableError"}},ip=".comet/config.yaml";function sp(e){let t=e?.code;return t==="ENOENT"||t==="ENOTDIR"}async function So(e){await N(e,ip,{label:ip,expected:"file"})}function Qe(e,t){let n=z.resolve(e),i=t==="docs"?z.join(n,"docs"):n,r=z.join(i,"openspec"),s=z.join(n,"docs","superpowers");return{projectRoot:n,artifactLayout:t,openSpecBase:i,openSpecRoot:r,changesDir:z.join(r,"changes"),archiveDir:z.join(r,"changes","archive"),specsDir:z.join(r,"specs"),superpowersRoot:s,superpowersSpecsDir:z.join(s,"specs"),superpowersPlansDir:z.join(s,"plans"),superpowersReportsDir:z.join(s,"reports")}}async function an(e){await So(e);let t=await ht(e,{allowPartialProject:!0,allowMissingNativeFields:!0});if(!t?.config)throw new An;if(!(t.config.workflows??[t.config.default_workflow]).includes("classic"))throw new An("Classic artifact layout is unavailable because Classic is not enabled");return t.classic?.artifact_layout??"legacy"}async function op(e){await So(e);let t=(await ht(e))?.config;if(!t)throw new Error(".comet/config.yaml must use comet.project.v1 before migration");if(!(t.workflows??[t.default_workflow]).includes("classic"))throw new Error("Classic root move requires the Classic workflow to be enabled")}async function ap(e,t,n={}){await So(e);let i=await $n(e,{allowPartialProject:!0}),r=i.document;if(!r)throw new Error(".comet/config.yaml does not exist");let s=r.value.classic;if(!s||typeof s!="object"||Array.isArray(s))throw new Error("classic must be a mapping");let o={...r.value,classic:{...s,artifact_layout:t}},a=xn(o,r.classic?.language==="zh-CN"||r.native?.language==="zh-CN"?"zh-CN":"en");mt(a,{allowPartialProject:!0}),await _l(e,a,{expectedIdentity:n.expectedIdentity??i.identity,beforeCommit:n.beforeCommit})}async function Mk(e,t){return Qe(e,t??await an(e))}async function qk(e){try{return await rp.lstat(e),!0}catch(t){if(sp(t))return!1;throw t}}async function Pl(e,t){let n=await Mk(e,t),i=n.artifactLayout==="legacy"?"docs":"legacy",r=Qe(e,i).openSpecRoot,[s,o]=await Promise.all([N(n.projectRoot,A(n.projectRoot,n.openSpecRoot),{label:"Configured Classic OpenSpec root",expected:"directory"}),qk(r)]),a=s.exists;return{paths:n,configuredRootExists:a,alternateRoot:r,alternateRootExists:o,dualRoots:a&&o}}async function Dk(e){let t=[e.openSpecRoot,e.changesDir,e.archiveDir,e.specsDir,e.superpowersRoot,e.superpowersSpecsDir,e.superpowersPlansDir,e.superpowersReportsDir];for(let n of t){let i=A(e.projectRoot,n);await N(e.projectRoot,i,{label:`Classic managed physical path ${i}`,expected:"directory"})}}async function Y(e,t){let n=await Pl(e,t);if(await Dk(n.paths),!n.configuredRootExists){let i=A(n.paths.projectRoot,n.paths.openSpecRoot),r=A(n.paths.projectRoot,n.alternateRoot);throw new An(`Configured Classic OpenSpec root is missing: ${i} (alternate ${r} is ${n.alternateRootExists?"present":"missing"})`)}return n.paths}async function Pe(e,t){let n=z.join(z.resolve(e),".comet","classic-root-move.json");if(await Di(n))throw new Error("Classic root move transaction is incomplete; inspect it with comet doctor and recover it explicitly before writing");let i=await Y(e,t);if(!await Di(i.openSpecRoot))throw new Error(`Configured Classic OpenSpec root is missing: ${A(i.projectRoot,i.openSpecRoot)}`);return i}async function le(e){let t=z.resolve(e),n=null;try{(await rp.lstat(t)).isDirectory()||(t=z.dirname(t))}catch(i){if(!sp(i))throw i}for(;;){z.basename(t)==="openspec"&&(n=z.dirname(t));let i=z.join(t,".comet","config.yaml"),r=!1;if(await Di(i))try{await So(t);let o=(await ht(t))?.value;r=!!o&&typeof o=="object"&&!Array.isArray(o)&&(o.schema==="comet.project.v1"||o.default_workflow!==void 0||o.native!==void 0)}catch{}if(r||await Di(z.join(t,".git")))return t;let s=z.dirname(t);if(s===t)return n??z.resolve(e);t=s}}function A(e,t){return z.relative(z.resolve(e),t).replaceAll("\\","/")}var cp=Ve(He(),1);_e();import Wk from"path";var Fk=1024*1024;async function lp(e,t){let n=t??await Y(e),i=Wk.join(n.openSpecRoot,"config.yaml"),r=A(n.projectRoot,i),s;try{s=(await J(n.projectRoot,r,Fk,{label:"Classic OpenSpec project config",bigint:!0})).bytes.toString("utf8")}catch(l){throw l.code==="ENOENT"?new Error(`Classic OpenSpec root is unhealthy: ${r} is missing; rerun OpenSpec initialization for the configured Classic layout`,{cause:l}):new Error(`Classic OpenSpec root is unhealthy: ${l instanceof Error?l.message:String(l)}`,{cause:l})}let o=(0,cp.parseDocument)(s,{uniqueKeys:!0});if(o.errors.length>0)throw new Error(`Classic OpenSpec root is unhealthy: ${r} is invalid YAML (${o.errors[0].message})`);let a=o.toJS();if(!a||typeof a!="object"||Array.isArray(a))throw new Error(`Classic OpenSpec root is unhealthy: ${r} must contain a mapping`);let c=a.schema;if(typeof c!="string"||c.trim()==="")throw new Error(`Classic OpenSpec root is unhealthy: ${r} must declare a non-empty schema`);return{layout:n,configPath:r,schema:c}}function Hk(e){return e[0]==="--"?e.slice(1):[...e]}async function Ol(e,t=process.cwd()){let n=Hk(e);if(n.length===0)return{exitCode:64,stderr:"Usage: comet classic openspec -- "};let i=await le(t),r=await Pe(i);await lp(i,r);let s=process.env.COMET_OPENSPEC||"openspec",o=process.platform==="win32",a=Bk(s,o?Hu(n):n,{cwd:r.openSpecBase,encoding:"utf8",shell:o,windowsHide:!0});if(a.error){let c=a.error.code;return{exitCode:c==="ENOENT"?127:70,stdout:a.stdout||void 0,stderr:a.stderr||(c==="ENOENT"?`OpenSpec CLI not found: ${s}`:a.error.message)}}return{exitCode:a.status??1,stdout:a.stdout||void 0,stderr:a.stderr||void 0}}var up=async e=>Ol(e);import{promises as Jk}from"fs";import Tn from"path";sn();pt();_e();import br from"path";var Kk=2*1024*1024;function Eo(e,t,n){let i=br.resolve(e),r=br.isAbsolute(t)?br.resolve(t):br.resolve(i,t),s=br.relative(i,r).replaceAll("\\","/");return{root:i,relative:xt(s,n),target:r}}async function V(e,t,n){let i=Eo(e,t,n.label);return N(i.root,i.relative,n)}async function X(e,t,n){return(await V(e,t,{label:n.label,expected:n.expected??"any"})).exists}async function In(e,t,n,i){return await X(e,t,{label:n,expected:"file"})?(await Ro(e,t,{label:n,hooks:i})).byteLength>0:!1}async function B(e,t,n){return(await Ro(e,t,n)).toString("utf8")}async function Ro(e,t,n){let i=Eo(e,t,n.label);return(await J(i.root,i.relative,n.maxBytes??Kk,{label:n.label,hooks:n.hooks})).bytes}async function Nn(e,t,n){let i=Eo(e,t,n);return wl(i.root,i.relative,{label:n})}async function fi(e,t,n,i){let r=Eo(e,t,i.label);await N(r.root,r.relative,{label:i.label,expected:"file"}),await xe(r.target,n,{containedRoot:r.root,beforeTemporaryOpen:i.beforeTemporaryOpen,beforeCommit:i.beforeCommit,exclusive:i.exclusive})}function ge(e){return e?/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u.test(e)?e.includes("..")?"Change name cannot contain '..' (path traversal not allowed)":null:`Invalid change name: '${e}' +Valid format: lowercase kebab-case (a-z, 0-9, single hyphens)`:"Change name cannot be empty"}function Ze(e){let t=ge(e);if(t)throw new Error(t)}function Uk(e,t){return{label:A(e,t),directory:t}}async function di(e,t,n){let i=Uk(e,t);if(!(await V(e,t,{label:n,expected:"directory"})).exists)return{change:i,exists:!1,stateExists:!1};let s=await V(e,Tn.join(t,".comet.yaml"),{label:`${n} state`,expected:"file"});return{change:i,exists:!0,stateExists:s.exists}}function fp(e,t){let n=t.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&");return new RegExp(`^\\d{4}-\\d{2}-\\d{2}-${n}$`,"u").test(e)}async function dp(e,t,n,i={}){if(!i.skipExactCompatibility){let o=await di(e,Tn.join(t,n),`Classic archived change ${n}`);if(o.exists)return o.change}if(!(await V(e,t,{label:"Classic archive directory",expected:"directory"})).exists)return null;let s=[];for(let o of await Jk.readdir(t,{withFileTypes:!0})){if(!fp(o.name,n))continue;let a=await di(e,Tn.join(t,o.name),`Classic archived change ${o.name}`);a.exists&&a.stateExists&&s.push(a.change)}return s.sort((o,a)=>a.directory.localeCompare(o.directory))[0]??null}async function Oe(e,t=process.cwd()){Ze(e);let n=await Y(t),i=await di(n.projectRoot,Tn.join(n.changesDir,e),`Classic active change ${e}`);return{...i.change,exists:i.exists,stateExists:i.stateExists}}async function mp(e,t=process.cwd()){Ze(e);let n=await Pe(t),i=Tn.join(n.changesDir,e),r=await di(n.projectRoot,i,`Classic active change ${e}`);return r.exists||await Nn(n.projectRoot,i,`Classic active change ${e}`),r.change}async function _o(e,t=process.cwd(),n={}){Ze(e);let i=await Y(t);if(n.preferredArchiveName!==void 0){let r=n.preferredArchiveName;if(r!==e&&!fp(r,e))throw new Error(`Classic preferred archive name '${r}' does not belong to change '${e}'`);let s=await di(i.projectRoot,Tn.join(i.archiveDir,r),`Classic preferred archived change ${r}`);return s.exists&&s.stateExists?s.change:null}return dp(i.projectRoot,i.archiveDir,e,n)}async function jn(e,t=process.cwd()){Ze(e);let n=await Y(t),i=await di(n.projectRoot,Tn.join(n.changesDir,e),`Classic active change ${e}`);if(i.exists)return i.change;let r=await dp(n.projectRoot,n.archiveDir,e);return r||i.change}import{promises as lh}from"fs";import be from"path";import{fileURLToPath as Ul}from"url";import{promises as Vk}from"fs";import Ot from"path";_e();pt();import Cr from"path";function Gk(e){let t=e?.code;return t==="ENOENT"||t==="ENOTDIR"}async function pp(e,t,n,i){let r=xt(n,"Classic handoff artifact pointer");if((await N(e,r,{label:"Classic handoff artifact",expected:"file"})).exists)return null;let o=await Y(e),a=`${A(e,o.changesDir)}/`,l=(o.artifactLayout==="docs"?[a,"openspec/changes/"]:[a]).find(y=>r.startsWith(y));if(!l)return null;let u=r.slice(l.length).split("/");if(u.length<4||u[1]!==".comet"||u.slice(2).some(y=>y.length===0))return null;let f=u[0];Ze(f);let d=u.slice(2),p=Cr.resolve(t);if(Cr.dirname(p)!==Cr.resolve(o.archiveDir))return null;let g=Cr.basename(p),h=/^\d{4}-\d{2}-\d{2}-(.+)$/u.exec(g);if(g!==f&&h?.[1]!==f)return null;await N(e,A(e,p),{label:"Classic archived change directory",expected:"directory"});let m=Cr.join(p,".comet",...d),w=A(e,m);try{return await J(e,w,i,{label:"Historical Classic archived handoff artifact"}),w}catch(y){if(Gk(y))return null;throw y}}_e();var hp=2*1024*1024;function kr(e,t){return Ot.relative(e,t).split(Ot.sep).join("/")}async function Sr(e,t,n,i,r){if(!n)return{code:t,satisfied:!1};let s=n.replaceAll("\\","/");if(r)return{code:t,satisfied:!1,source:s,detail:`Classic layout is unsafe or unavailable: ${r instanceof Error?r.message:String(r)}`};try{if(i){let a=i.artifactLayout==="legacy"?"docs":"legacy",c=A(e,Qe(e,a).openSpecRoot);if((s===c||s.startsWith(`${c}/`))&&(await N(e,s,{label:`${t} artifact`,expected:"file"})).exists)return{code:t,satisfied:!1,source:s,detail:"standalone OpenSpec root is not a Comet artifact root"}}let o=await mo(e,s,{label:`${t} artifact`});return{code:t,satisfied:o,source:s,...o?{resolvedSource:s}:{}}}catch(o){return{code:t,satisfied:!1,source:s,detail:`unsafe artifact pointer outside the project or through a special path: ${o instanceof Error?o.message:String(o)}`}}}async function Yk(e,t,n,i){try{i??=await Y(e)}catch(s){return{code:"design.handoff",satisfied:!1,...n?{source:n.replaceAll("\\","/")}:{},detail:`Classic layout is unsafe or unavailable for handoff evidence: ${s instanceof Error?s.message:String(s)}`}}let r=await Sr(e,"design.handoff",n,i);if(!n||r.satisfied||r.detail)return r;try{let s=await pp(e,t,n,hp);return s?{...r,satisfied:!0,resolvedSource:s,detail:`resolved historical legacy pointer from archived change: ${s}`}:r}catch(s){return{...r,satisfied:!1,detail:`unsafe archived handoff fallback: ${s instanceof Error?s.message:String(s)}`}}}async function xo(e,t,n){return Sr(e,t,kr(e,n))}async function zk(e,t){let n=Ot.join(t,"specs"),i;try{let o=kr(e,n);if(!(await N(e,o,{label:"OpenSpec delta-spec directory",expected:"directory"})).exists)return{code:"openspec.delta-spec",satisfied:!1};i=await Vk.readdir(n)}catch(o){return o.code==="ENOENT"?{code:"openspec.delta-spec",satisfied:!1}:{code:"openspec.delta-spec",satisfied:!1,detail:`unsafe delta-spec path: ${o instanceof Error?o.message:String(o)}`}}let r=i.map(o=>Ot.join(n,o,"spec.md")),s=(await Promise.all(r.map(async o=>{try{return await mo(e,kr(e,o),{label:"OpenSpec delta spec"})?o:null}catch{return null}}))).filter(o=>o!==null);return{code:"openspec.delta-spec",satisfied:s.length>0,source:s[0]?kr(e,s[0]):void 0,detail:`${s.length} delta spec${s.length===1?"":"s"}`}}async function Xk(e,t){let n,i=kr(e,t);try{n=(await J(e,i,hp,{label:"Classic tasks artifact"})).bytes.toString("utf8")}catch(o){return o.code==="ENOENT"?{code:"build.tasks-complete",satisfied:!1}:{code:"build.tasks-complete",satisfied:!1,source:i,detail:`unsafe tasks artifact: ${o instanceof Error?o.message:String(o)}`}}let r=[...n.matchAll(/^\s*[-*]\s+\[([ xX])\]\s+/gmu)],s=r.filter(o=>o[1].toLowerCase()==="x").length;return{code:"build.tasks-complete",satisfied:r.length>0&&s===r.length,source:i,detail:`${s} of ${r.length} tasks complete`}}function Ln(e,t){return e.some(n=>n.code===t&&n.satisfied)}async function et(e,t){let n=await le(e),i=t.classic,r=Ot.join(e,"proposal.md"),s=Ot.join(e,"design.md"),o=Ot.join(e,"tasks.md"),a=t.run?Ot.resolve(e,t.run.checkpointRef):Ot.join(e,".comet","checkpoint.json"),c,l;try{c=await Y(n)}catch(d){l=d}let u=await Promise.all([xo(n,"openspec.proposal",r),xo(n,"openspec.design",s),xo(n,"openspec.tasks",o),zk(n,e),Sr(n,"design.document",i?.designDoc??null,c,l),Sr(n,"build.plan",i?.plan??null,c,l),Xk(n,o),Sr(n,"verification.report",i?.verificationReport??null,c,l),Yk(n,e,i?.handoffContext??null,c),xo(n,"run.checkpoint",a)]),f=u.find(d=>d.code==="design.handoff");return f&&!i?.handoffHash&&(f.satisfied=!1,f.detail="handoff hash is missing"),u.push({code:"archive.confirmed",satisfied:i?.archiveConfirmation==="confirmed"}),u}import{createHash as uE,randomUUID as fE}from"crypto";import{promises as Jl}from"fs";import It from"path";function Qk(e){return e.classicProfile??e.workflow}function Zk(e){return!e.buildMode||!e.tddMode||!e.isolation||!e.verifyMode?!1:e.buildMode==="subagent-driven-development"?e.subagentDispatch==="confirmed":e.buildMode==="direct"?e.directOverride===!0:!0}function eS(e){return e.buildMode==="direct"&&e.tddMode==="direct"&&e.isolation!==null&&e.verifyMode==="light"}function tS(e,t,n){if(t.verifyResult==="fail")return e==="full"?"full.build.fix":`${e}.build.execute`;if(e==="full"){if(!Ln(n,"build.plan"))return"full.build.plan";if(t.buildPause==="plan-ready")return"full.build.plan-ready";if(!Zk(t))return"full.build.configure"}else if(!eS(t))throw new Error(`${e} build configuration is incomplete`);return Ln(n,"build.tasks-complete")?`${e}.build.complete`:`${e}.build.execute`}function nS(e,t,n){return t.verifyResult!=="pass"||!Ln(n,"verification.report")?`${e}.verify.run`:`${e}.verify.branch`}function iS(e,t){if(t.verifyResult!=="pass")throw new Error("archive requires verify_result=pass");return t.archiveConfirmation==="confirmed"?`${e}.archive.execute`:`${e}.archive.confirm`}function $t(e,t){let n=Qk(e);if(e.archived&&e.phase!=="archive")throw new Error("archived=true requires phase=archive");if(e.archived)return"completed";if(n!=="full"&&e.phase==="design")throw new Error(`${n} workflow cannot enter design`);switch(e.phase){case"open":return`${n}.open`;case"design":return Ln(t,"design.handoff")?"full.design.document":"full.design.handoff";case"build":return tS(n,e,t);case"verify":return nS(n,e,t);case"archive":return iS(n,e)}}var Lo=Ve(He(),1);sn();_e();import Ar from"path";Pr();var Wl=["full","hotfix","tweak"],ln=1,Np=["open","design","build","verify","archive"],CS=["en","zh-CN"],kS=["off","beta"],SS=["subagent-driven-development","executing-plans","direct"],ES=["plan-ready"],RS=["confirmed"],_S=["tdd","direct"],xS=["off","standard","thorough"],PS=["current","branch","worktree"],OS=["light","full"],$S=["pending","pass","fail"],AS=["pending","handled"],IS=["pending","confirmed"],un=["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","verification_report","branch_status","created_at","verified_at","archive_confirmation","archived","direct_override","handoff_context","handoff_hash","classic_profile","classic_migration"],Or=["run_id"],Tp=new Set([...un,...Or]),NS=["workflow","phase","design_doc","plan","build_mode","isolation","verify_mode","verify_result","verified_at","archived"];function Ip(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function mi(e,t){let n=e[t];if(n==null||n==="")return null;if(typeof n!="string")throw new Error(`Invalid Classic state: ${t} must be a string or null`);return n}function ye(e,t,n,i=!0){let r=e[t];if(r==null||r===""){if(i)return null;throw new Error(`Invalid Classic state: ${t} is required`)}if(typeof r!="string"||!n.includes(r))throw new Error(`Invalid Classic state: ${t} must be one of ${n.join(", ")}${i?" or null":""}`);return r}function Dl(e,t,n=!0){let i=e[t];if(i==null||i===""){if(n)return null;throw new Error(`Invalid Classic state: ${t} is required`)}if(typeof i!="boolean")throw new Error(`Invalid Classic state: ${t} must be true or false`);return i}function TS(e,t,n=0){let i=e[t];if(i==null||i==="")return n;if(typeof i!="number"||!Number.isInteger(i)||i<0)throw new Error(`Invalid Classic state: ${t} must be a non-negative integer`);return i}function jo(e,t){let n=mi(e,t);if(n===null)return null;if(/^(?:[A-Za-z]:|[\\/]|~)/u.test(n)||n.split(/[\\/]/u).includes(".."))throw new Error(`Invalid Classic state: ${t} must be a relative repository path`);return n}function jS(e,t){let n=mi(e,t);if(n!==null&&!/^[a-f0-9]{64}$/u.test(n))throw new Error(`Invalid Classic state: ${t} must be a sha256 hex digest`);return n}function LS(e){let t=e.classic_migration;if(t==null||t==="")return null;if(t!==ln)throw new Error(`Invalid Classic state: classic_migration must be ${ln}`);return t}function MS(e){if(!un.some(n=>Ip(e,n)))return null;for(let n of NS)if(!Ip(e,n))return null;return{workflow:ye(e,"workflow",Wl,!1),language:ye(e,"language",CS),phase:ye(e,"phase",Np,!1),contextCompression:ye(e,"context_compression",kS),buildMode:ye(e,"build_mode",SS),buildPause:ye(e,"build_pause",ES),subagentDispatch:ye(e,"subagent_dispatch",RS),tddMode:ye(e,"tdd_mode",_S),reviewMode:ye(e,"review_mode",xS),isolation:ye(e,"isolation",PS),boundBranch:mi(e,"bound_branch"),verifyMode:ye(e,"verify_mode",OS),autoTransition:Dl(e,"auto_transition"),baseRef:mi(e,"base_ref"),designDoc:jo(e,"design_doc"),plan:jo(e,"plan"),verifyResult:ye(e,"verify_result",$S,!1),verifyFailures:TS(e,"verify_failures"),verificationReport:jo(e,"verification_report"),branchStatus:ye(e,"branch_status",AS),createdAt:mi(e,"created_at"),verifiedAt:mi(e,"verified_at"),archiveConfirmation:ye(e,"archive_confirmation",IS),archived:Dl(e,"archived",!1),directOverride:Dl(e,"direct_override"),handoffContext:jo(e,"handoff_context"),handoffHash:jS(e,"handoff_hash"),classicProfile:ye(e,"classic_profile",Wl),classicMigration:LS(e)}}function $r(e,t){let n=t??null;if(n===null&&t===void 0&&e.run_id&&e.skill)try{n=Io(e)}catch(i){let r=i instanceof Error?i.message:String(i);throw new Error(r.replace(/^Invalid Run state:/u,"Invalid Classic state:"),{cause:i})}return{classic:MS(e),run:n,unknownKeys:Object.keys(e).filter(i=>!Tp.has(i))}}function jp(e){let t=e.workflow,n=e.phase,i=e.archived,r=e.design_doc;return{workflow:typeof t=="string"&&Wl.includes(t)?t:null,phase:typeof n=="string"&&Np.includes(n)?n:null,archived:i===!0,designDoc:typeof r=="string"&&r!==""?r:null,unknownKeys:Object.keys(e).filter(s=>!Tp.has(s))}}function Lp(e){return{workflow:e.workflow,language:e.language,phase:e.phase,context_compression:e.contextCompression,build_mode:e.buildMode,build_pause:e.buildPause,subagent_dispatch:e.subagentDispatch,tdd_mode:e.tddMode,review_mode:e.reviewMode,isolation:e.isolation,bound_branch:e.boundBranch,verify_mode:e.verifyMode,auto_transition:e.autoTransition,base_ref:e.baseRef,design_doc:e.designDoc,plan:e.plan,verify_result:e.verifyResult,verify_failures:e.verifyFailures,verification_report:e.verificationReport,branch_status:e.branchStatus,created_at:e.createdAt,verified_at:e.verifiedAt,archive_confirmation:e.archiveConfirmation,archived:e.archived,direct_override:e.directOverride,handoff_context:e.handoffContext,handoff_hash:e.handoffHash,classic_profile:e.classicProfile,classic_migration:e.classicMigration}}Pr();var qS=2*1024*1024;function pi(e){let t=e.toJS();if(t===null)return{};if(typeof t!="object"||Array.isArray(t))throw new Error("Invalid Classic state document: root must be a mapping");return t}function Mp(e,t,n){e.get(t)!==n&&e.set(t,n)}function DS(e,t){if(t.classic)for(let[n,i]of Object.entries(Lp(t.classic)))Mp(e,n,i);else for(let n of un)e.delete(n);Ml(e.toJS(),t.run),t.run?Mp(e,"run_id",t.run.runId):e.delete("run_id")}function WS(e){let t=["skill","skill_version","skill_hash","orchestration","current_step","iteration","pending","pending_ref","trajectory_ref","context_ref","artifacts_ref","checkpoint_ref","run_status","run_retries"];for(let n of t)e.delete(n)}function FS(e){let t=!1;for(let n of["build_command","verify_command"])e.has(n)&&(e.delete(n),t=!0);return t}async function Fl(e){let t;try{t=(await J(Ar.dirname(e),Ar.basename(e),qS,{label:"Classic state document"})).bytes.toString("utf8")}catch(i){if(i.code!=="ENOENT")throw i;return new Lo.Document({})}let n=(0,Lo.parseDocument)(t);if(n.errors.length>0)throw new Error(`Invalid Classic state document: ${n.errors[0].message}`);return pi(n),n}async function H(e,t={}){let n=t.migrate!==!1,i=Ar.join(e,".comet.yaml"),r=await Fl(i),s=pi(r),o=FS(r);o&&(s=pi(r));let a=await xr(e);if(!a&&s.run_id&&s.skill){let{runStateFromDocument:c}=await Promise.resolve().then(()=>(Pr(),Ap));a=c(s),a&&n&&(await To(e,a),WS(r),o=!0)}return o&&n&&await xe(i,r.toString(),{containedRoot:e}),$r(pi(r),a)}async function qp(e){let t=await Fl(Ar.join(e,".comet.yaml"));return jp(pi(t))}async function qe(e,t,n={}){let i=Ar.join(e,".comet.yaml"),r=await Fl(i);DS(r,{...t,unknownKeys:t.unknownKeys??[]}),$r(pi(r),t.run??null),await xe(i,r.toString(),{containedRoot:e,beforeCommit:n.beforeCommit}),t.run?await To(e,t.run):await ql(e)}function Dp(e,t,n){return{runId:t,skill:e.definition.metadata.name,skillVersion:e.definition.metadata.version,skillHash:n,orchestration:e.definition.orchestration.mode,currentStep:e.definition.orchestration.entry??null,iteration:0,pending:null,pendingRef:".comet/pending-action.json",trajectoryRef:".comet/trajectory.jsonl",contextRef:".comet/context.md",artifactsRef:".comet/artifacts.json",checkpointRef:".comet/checkpoint.json",status:"running",retries:{}}}Ao();import Mo from"path";var wt={trajectory:8*1024*1024,artifacts:1024*1024,context:1024*1024,pendingAction:256*1024,checkpoint:256*1024};function tt(e,t){if(Mo.isAbsolute(t))throw new Error("Run path must stay inside the change directory");let n=Mo.resolve(e),i=Mo.resolve(n,t);if(i!==n&&!i.startsWith(n+Mo.sep))throw new Error("Run path must stay inside the change directory")}async function Je(e,t,n,i={}){tt(e,t),await Oo(e,t,`${JSON.stringify(n)} +`,wt.trajectory,"Run trajectory",i)}async function De(e,t,n={}){tt(e,t);let i=await At(e,t,wt.trajectory,"Run trajectory",n);return i===null?[]:i.split(/\r?\n/).map((r,s)=>({line:r,number:s+1})).filter(({line:r})=>r.length>0).map(({line:r,number:s})=>{try{return JSON.parse(r)}catch(o){throw new Error(`Invalid Trajectory event at line ${s}`,{cause:o})}})}async function hi(e,t,n={}){tt(e,t);let i=await At(e,t,wt.artifacts,"Run artifacts",n);return i===null?{}:JSON.parse(i)}async function gi(e,t,n,i={}){tt(e,t),await cn(e,t,JSON.stringify(n,null,2)+` +`,wt.artifacts,"Run artifacts",i)}async function qo(e,t,n,i={}){tt(e,t),await cn(e,t,n,wt.context,"Run context",i)}async function Do(e,t,n={}){return tt(e,t),At(e,t,wt.context,"Run context",n)}async function Wo(e,t,n,i={}){tt(e,t),await cn(e,t,JSON.stringify(n,null,2)+` +`,wt.pendingAction,"Run pending action",i)}async function Ir(e,t,n={}){tt(e,t);let i=await At(e,t,wt.pendingAction,"Run pending action",n);return i===null?null:JSON.parse(i)}async function Fo(e,t,n={}){tt(e,t),await $o(e,t,"Run pending action",n)}async function wi(e,t,n,i={}){tt(e,t),await cn(e,t,JSON.stringify(n,null,2)+` +`,wt.checkpoint,"Run checkpoint",i)}async function Wp(e,t,n={}){tt(e,t);let i=await At(e,t,wt.checkpoint,"Run checkpoint",n);return i===null?null:JSON.parse(i)}import{createHash as eh,randomUUID as sE}from"crypto";import{promises as re}from"fs";import ee from"path";var Hp=Ve(He(),1);import{promises as Bl}from"fs";import Ue from"path";var BS=["invoke_skill","call_tool","handoff","ask_user","checkpoint"],HS=["deterministic","adaptive"],KS=["function","mcp","script","agent"],JS=["none","read","write","external"],US=["progress","step","completion"],GS=["artifact_exists","state_equals"];function qn(e,t,n){return new Error(`${e}: ${t} ${n}`)}function $e(e,t,n="document"){if(e===null||typeof e!="object"||Array.isArray(e))throw qn(t,n,"must be an object")}function fn(e,t,n){if(!Array.isArray(e))throw qn(t,n,"must be an array")}function ve(e,t,n){if(typeof e!="string")throw qn(t,n,"must be a string")}function nt(e,t,n,i){t in e&&ve(e[t],n,`${i}.${t}`)}function Kp(e,t,n,i){if(t in e&&typeof e[t]!="boolean")throw qn(n,`${i}.${t}`,"must be a boolean")}function dn(e,t,n,i){if(typeof e!="string"||!t.includes(e))throw qn(n,i,`must be one of ${t.join(", ")}`)}function Bo(e,t,n){fn(e,t,n),e.forEach((i,r)=>{ve(i,t,`${n}[${r}]`)})}function Fp(e,t,n){$e(e,t,n),ve(e.name,t,`${n}.name`),ve(e.description,t,`${n}.description`),Kp(e,"required",t,n)}function VS(e,t,n){$e(e,t,n),ve(e.id,t,`${n}.id`),nt(e,"source",t,n),nt(e,"version",t,n)}function YS(e,t,n){$e(e,t,n),ve(e.id,t,`${n}.id`),ve(e.role,t,`${n}.role`),nt(e,"instructions",t,n)}function zS(e,t,n){$e(e,t,n),ve(e.id,t,`${n}.id`),dn(e.kind,KS,t,`${n}.kind`),ve(e.source,t,`${n}.source`),dn(e.sideEffect,JS,t,`${n}.sideEffect`),Kp(e,"requiresConfirmation",t,n)}function XS(e,t,n){$e(e,t,n),dn(e.type,BS,t,`${n}.type`),nt(e,"ref",t,n),nt(e,"prompt",t,n),nt(e,"question",t,n),"options"in e&&Bo(e.options,t,`${n}.options`)}function QS(e,t,n){$e(e,t,n),ve(e.id,t,`${n}.id`),XS(e.action,t,`${n}.action`),nt(e,"next",t,n),"completionEvals"in e&&Bo(e.completionEvals,t,`${n}.completionEvals`)}function ZS(e,t){let n="goal";$e(e,t,n),ve(e.statement,t,`${n}.statement`),fn(e.inputs,t,`${n}.inputs`),e.inputs.forEach((i,r)=>{Fp(i,t,`${n}.inputs[${r}]`)}),fn(e.outputs,t,`${n}.outputs`),e.outputs.forEach((i,r)=>{Fp(i,t,`${n}.outputs[${r}]`)}),Bo(e.success,t,`${n}.success`)}function eE(e,t){let n="orchestration";$e(e,t,n),dn(e.mode,HS,t,`${n}.mode`),nt(e,"entry",t,n),"steps"in e&&(fn(e.steps,t,`${n}.steps`),e.steps.forEach((i,r)=>{QS(i,t,`${n}.steps[${r}]`)}))}function Jp(e,t){return $e(e,t),dn(e.apiVersion,["comet/v1alpha1"],t,"apiVersion"),dn(e.kind,["Skill"],t,"kind"),$e(e.metadata,t,"metadata"),ve(e.metadata.name,t,"metadata.name"),ve(e.metadata.version,t,"metadata.version"),ve(e.metadata.description,t,"metadata.description"),ZS(e.goal,t),eE(e.orchestration,t),fn(e.skills,t,"skills"),e.skills.forEach((n,i)=>{VS(n,t,`skills[${i}]`)}),fn(e.agents,t,"agents"),e.agents.forEach((n,i)=>{YS(n,t,`agents[${i}]`)}),fn(e.tools,t,"tools"),e.tools.forEach((n,i)=>{zS(n,t,`tools[${i}]`)}),e}function Up(e,t){$e(e,t);for(let n of["allowedSkills","allowedAgents","allowedTools","confirmationRequiredFor"])n in e&&Bo(e[n],t,n);for(let n of["maxIterations","maxRetriesPerAction"])if(n in e&&(typeof e[n]!="number"||!Number.isFinite(e[n])))throw qn(t,n,"must be a finite number");return e}function tE(e,t){return $e(e,t),"runtime"in e&&Gp(e.runtime,t,"runtime"),e}function Gp(e,t,n){return fn(e,t,n),e.forEach((i,r)=>{let s=`${n}[${r}]`;$e(i,t,s),ve(i.id,t,`${s}.id`),dn(i.scope,US,t,`${s}.scope`),dn(i.type,GS,t,`${s}.type`),nt(i,"artifact",t,s),nt(i,"field",t,s),nt(i,"equals",t,s)}),e}async function Hl(e){let t=await Bl.readFile(e,"utf8");try{return(0,Hp.parse)(t)}catch(n){let i=n instanceof Error?n.message:String(n);throw qn(e,"document",i)}}async function nE(e){try{return await Hl(e)}catch(t){if(t.code==="ENOENT")return null;throw t}}async function Bp(e){try{return await Bl.access(e),!0}catch(t){if(t.code==="ENOENT")return!1;throw t}}async function iE(e){let t=Ue.join(e,"checks.yaml"),n=Ue.join(e,"evals.yaml"),[i,r]=await Promise.all([Bp(t),Bp(n)]);if(r)throw new Error(`${n}: evals.yaml is no longer supported; use checks.yaml`);return i?{document:tE(await Hl(t),t)}:{document:null}}async function Vp(e){let t=Ue.resolve(e.root),n=Ue.resolve(e.controlRoot);e.requireSkillMarkdown&&await Bl.access(Ue.join(t,"SKILL.md"));let i=Ue.join(n,"skill.yaml"),r=Ue.join(n,"guardrails.yaml"),s=Jp(await Hl(i),i),o=await nE(r),a=o===null?null:Up(o,r),c=await iE(n),l={allowedSkills:s.skills.map(u=>u.id),allowedAgents:s.agents.map(u=>u.id),allowedTools:s.tools.map(u=>u.id),maxIterations:50,maxRetriesPerAction:3,confirmationRequiredFor:s.tools.filter(u=>u.requiresConfirmation).map(u=>u.id)};return{root:t,packageKind:e.packageKind==="runtime"?"runtime":void 0,definition:s,guardrails:{...l,...a},evals:c.document?.runtime??[]}}async function Yp(e){let t=Ue.resolve(e);return Vp({root:t,controlRoot:Ue.join(t,"comet"),packageKind:"skill",requireSkillMarkdown:!0})}async function zp(e){let t=Ue.resolve(e);return Vp({root:t,controlRoot:t,packageKind:"runtime",requireSkillMarkdown:!1})}function Xp(e,t,n=Ue.join(t,"package.json")){$e(e,n);let i=e.packageKind==="runtime"?"runtime":void 0,r=Jp(e.definition,n),s=Up(e.guardrails,n),o=Gp(e.evals,n,"evals"),a={allowedSkills:r.skills.map(c=>c.id),allowedAgents:r.agents.map(c=>c.id),allowedTools:r.tools.map(c=>c.id),maxIterations:50,maxRetriesPerAction:3,confirmationRequiredFor:r.tools.filter(c=>c.requiresConfirmation).map(c=>c.id)};return{root:Ue.resolve(t),packageKind:i,definition:r,guardrails:{...a,...s},evals:o}}import Qp from"path";function rE(e,t,n,i){e.type==="invoke_skill"&&!t.definition.skills.some(r=>r.id===e.ref)&&n.push(`step ${i} references undeclared skill: ${e.ref??"(missing)"}`),e.type==="call_tool"&&!t.definition.tools.some(r=>r.id===e.ref)&&n.push(`step ${i} references undeclared tool: ${e.ref??"(missing)"}`),e.type==="handoff"&&!t.definition.agents.some(r=>r.id===e.ref)&&n.push(`step ${i} references undeclared agent: ${e.ref??"(missing)"}`),e.type==="ask_user"&&!e.question&&n.push(`step ${i} ask_user action requires question`)}function Zp(e){let t=[],{definition:n,guardrails:i,evals:r}=e;n.apiVersion!=="comet/v1alpha1"&&t.push("unsupported apiVersion"),n.kind!=="Skill"&&t.push("kind must be Skill"),n.metadata.name||t.push("metadata.name is required"),n.goal.statement||t.push("goal.statement is required"),i.maxIterations<1&&t.push("maxIterations must be at least 1"),i.maxRetriesPerAction<0&&t.push("maxRetriesPerAction must not be negative");let s=n.orchestration.steps??[];if(n.orchestration.mode==="adaptive")(n.orchestration.entry||s.length>0)&&t.push("adaptive orchestration must not define entry or steps");else{let o=new Set;for(let a of s)o.has(a.id)&&t.push(`duplicate step id: ${a.id}`),o.add(a.id),rE(a.action,e,t,a.id);(!n.orchestration.entry||!o.has(n.orchestration.entry))&&t.push(`orchestration.entry references unknown step: ${n.orchestration.entry??"(missing)"}`);for(let a of s){a.next&&!o.has(a.next)&&t.push(`step ${a.id} has unknown next step: ${a.next}`);for(let c of a.completionEvals??[])r.some(l=>l.id===c)||t.push(`step ${a.id} references unknown eval: ${c}`)}}for(let o of n.tools){if(o.kind!=="script")continue;let a=Qp.posix.normalize(o.source.replaceAll("\\","/"));(Qp.isAbsolute(o.source)||a===".."||a.startsWith("../"))&&t.push(`script tool ${o.id} must reference a relative path inside the Skill package`)}for(let o of i.allowedSkills)n.skills.some(a=>a.id===o)||t.push(`guardrails allow undeclared skill: ${o}`);for(let o of i.allowedAgents)n.agents.some(a=>a.id===o)||t.push(`guardrails allow undeclared agent: ${o}`);for(let o of i.allowedTools)n.tools.some(a=>a.id===o)||t.push(`guardrails allow undeclared tool: ${o}`);return t}function Ho(e){return Array.isArray(e)?e.map(Ho):e&&typeof e=="object"?Object.fromEntries(Object.entries(e).sort(([t],[n])=>t.localeCompare(n)).map(([t,n])=>[t,Ho(n)])):e}function oE(e){return Ho({...e.packageKind==="runtime"?{packageKind:"runtime"}:{},definition:e.definition,guardrails:e.guardrails,evals:e.evals})}function aE(e){return ee.posix.normalize(e.replaceAll("\\","/"))}function yi(e,t,n){let i=ee.relative(e,t);if(!(i===""||!ee.isAbsolute(i)&&!i.startsWith(`..${ee.sep}`)))throw new Error(`${n} resolves outside the Skill package`)}async function th(e,t,n){let i=aE(t);if(ee.posix.isAbsolute(i)||i===".."||i.startsWith("../"))throw new Error(`${n} resolves outside the Skill package`);let r=ee.resolve(e,...i.split("/"));yi(e,r,n);let s;try{s=await re.realpath(r)}catch(o){throw o.code==="ENOENT"?new Error(`${n} does not exist: ${t}`,{cause:o}):o}if(yi(e,s,n),!(await re.stat(s)).isFile())throw new Error(`${n} is not a file: ${t}`);return{path:i,content:await re.readFile(s)}}async function cE(e){let t=await re.realpath(e.root),n=e.packageKind==="runtime"?[]:[await th(t,"SKILL.md","SKILL.md")];for(let i of e.definition.tools)i.kind==="script"&&n.push(await th(t,i.source,`Script tool ${i.id}`));return n.sort((i,r)=>i.path.localeCompare(r.path))}function lE(e,t){let n=t.map(i=>({path:i.path,sha256:eh("sha256").update(i.content).digest("hex")}));return eh("sha256").update(JSON.stringify(Ho({package:e,files:n}))).digest("hex")}function rh(e){return JSON.stringify(e,null,2)+` +`}async function sh(e){let t=oE(e),n=await cE(e);return{document:t,files:n,hash:lE(t,n)}}async function Ko(e){return(await sh(e)).hash}async function nh(e){try{return await re.access(e),!0}catch(t){if(t.code==="ENOENT")return!1;throw t}}async function ih(e,t){try{if((await re.readFile(ee.join(e,"sha256"),"utf8")).trim()!==t.hash)throw new Error("hash mismatch");if(await re.readFile(ee.join(e,"package.json"),"utf8")!==rh(t.document))throw new Error("package mismatch");for(let r of t.files)if(!(await re.readFile(ee.join(e,...r.path.split("/")))).equals(r.content))throw new Error(`file mismatch: ${r.path}`)}catch(n){throw new Error(`Existing Skill snapshot is invalid: ${t.hash}`,{cause:n})}}async function Kl(e,t){let n=await sh(e),i=ee.resolve(t,".comet","skill-snapshots"),r=ee.join(i,n.hash);if(await re.mkdir(i,{recursive:!0}),await nh(r))return await ih(r,n),{hash:n.hash,snapshotDir:r};let s=ee.join(i,`.tmp-${sE()}`);yi(i,s,"Temporary snapshot"),yi(i,r,"Published snapshot");try{await re.mkdir(s);for(let o of n.files){let a=ee.join(s,...o.path.split("/"));yi(s,a,`Snapshot file ${o.path}`),await re.mkdir(ee.dirname(a),{recursive:!0}),await re.writeFile(a,o.content)}await re.writeFile(ee.join(s,"package.json"),rh(n.document)),await re.writeFile(ee.join(s,"sha256"),n.hash+` +`),await re.rename(s,r)}catch(o){if(await nh(r)){try{await ih(r,n)}finally{await re.rm(s,{recursive:!0,force:!0})}return{hash:n.hash,snapshotDir:r}}throw await re.rm(s,{recursive:!0,force:!0}),o}return{hash:n.hash,snapshotDir:r}}async function Jo(e,t){if(!/^[a-f0-9]{64}$/u.test(t))throw new Error(`Invalid Skill snapshot hash: ${t}`);let n=ee.resolve(e,".comet","skill-snapshots"),i=ee.join(n,t);yi(n,i,"Skill snapshot");try{let r=(await re.readFile(ee.join(i,"sha256"),"utf8")).trim();if(r!==t)throw new Error(`stored hash is ${r||"(empty)"}`);let s=ee.join(i,"package.json"),o=JSON.parse(await re.readFile(s,"utf8")),a=Xp(o,i,s),c=Zp(a);if(c.length>0)throw new Error(c.map(u=>` - ${u}`).join(` +`));let l=await Ko(a);if(l!==t)throw new Error(`calculated hash is ${l}`);return a}catch(r){throw new Error(`Skill snapshot is invalid or missing: ${t}`,{cause:r})}}async function oh(e){try{return await Jl.access(e),!0}catch(t){if(t.code==="ENOENT")return!1;throw t}}function ah(e){return uE("sha256").update(e).digest("hex")}function dE(e){return ah(JSON.stringify(Object.fromEntries(Object.entries(e).sort(([t],[n])=>t.localeCompare(n)))))}function mE(e){return e.replaceAll(".","_").replaceAll("-","_")}async function pE(e,t){let n=await le(e),i=Object.fromEntries(t.filter(o=>o.satisfied&&o.source).map(o=>[mE(o.code),o.source])),r=It.join(e,"subagent-progress.md");await oh(r)&&(i.subagent_progress=It.relative(n,r).split(It.sep).join("/"));let s=t.find(o=>o.code==="design.handoff"&&o.satisfied);return s?.source&&(i.handoff_context=s.source),i}function hE(e,t,n){return[{sequence:1,timestamp:n,type:"run_started",runId:e.runId,data:{skill:e.skill,skillVersion:e.skillVersion,skillHash:e.skillHash}},{sequence:2,timestamp:n,type:"state_migrated",runId:e.runId,data:{kind:"classic",migrationVersion:ln,profile:t,source:"pre-migration"}}]}async function gE(e){await Promise.all(e.map(t=>Jl.rm(t,{recursive:!0,force:!0})))}async function ch(e,t){let n=await H(e);if(!n.classic)throw new Error("Classic migration requires a legacy state projection");let i=n.classic,r=i.classicProfile??i.workflow;if(n.run){if(i.classicMigration!==ln)throw new Error("Classic Run exists without a supported classic_migration marker");if(n.run.skill!==t.skillPackage.definition.metadata.name)throw new Error(`Classic Run skill mismatch: expected ${t.skillPackage.definition.metadata.name}, got ${n.run.skill}`);if(await Ko(t.skillPackage)!==n.run.skillHash)return await Jo(e,n.run.skillHash),{classic:i,run:n.run,evidence:await et(e,n),migrated:!1,snapshotDir:It.join(e,".comet","skill-snapshots",n.run.skillHash)};let d=await Kl(t.skillPackage,e);return{classic:i,run:n.run,evidence:await et(e,n),migrated:!1,snapshotDir:d.snapshotDir}}let s=await et(e,n),o=$t(i,s);if(!t.skillPackage.definition.orchestration.steps?.some(f=>f.id===o))throw new Error(`Classic Skill package does not define resolved step: ${o}`);let a=await Ko(t.skillPackage),c=It.join(e,".comet","skill-snapshots",a),l=await oh(c),u=[];try{let f=await Kl(t.skillPackage,e),d=Dp(t.skillPackage,t.runId?.()??fE(),f.hash);d.currentStep=o,o==="completed"&&(d.status="completed");let p={...i,classicProfile:r,classicMigration:ln},g=await pE(e,s),h=await le(e),m=s.find(k=>k.code==="design.handoff"&&k.satisfied),w=null;m?.source&&(w=await B(h,m.resolvedSource??m.source,{label:"Classic migration handoff context",hooks:t.handoffReadHooks}),await qo(e,d.contextRef,w),u.push(It.resolve(e,d.contextRef))),await gi(e,d.artifactsRef,g),u.push(It.resolve(e,d.artifactsRef));let y=(t.now?.()??new Date).toISOString(),b={runId:d.runId,stateVersion:1,trajectoryOffset:2,contextHash:w===null?null:ah(w),artifactsHash:dE(g),createdAt:y};await wi(e,d.checkpointRef,b),u.push(It.resolve(e,d.checkpointRef)),u.push(It.resolve(e,d.trajectoryRef));for(let k of hE(d,r,y))await Je(e,d.trajectoryRef,k);return await qe(e,{classic:p,run:d,unknownKeys:n.unknownKeys}),{classic:p,run:d,evidence:s,migrated:!0,snapshotDir:f.snapshotDir}}catch(f){throw await gE(u),l||await Jl.rm(c,{recursive:!0,force:!0}),f}}async function wE(e){try{return(await lh.stat(e)).isDirectory()}catch(t){if(t.code==="ENOENT")return!1;throw t}}async function Uo(e){try{return(await lh.stat(e)).isFile()}catch(t){if(t.code==="ENOENT")return!1;throw t}}async function yE(e){return await wE(e)?await Uo(be.join(e,"skill.yaml"))?!0:await Uo(be.join(e,"SKILL.md"))&&await Uo(be.join(e,"comet","skill.yaml")):!1}function uh(e){return{root:e,packageKind:"runtime",definition:{apiVersion:"comet/v1alpha1",kind:"Skill",metadata:{name:"comet-classic",version:"1",description:"Internal compatibility orchestration for classic Comet full, hotfix, and tweak workflows"},goal:{statement:"Advance or restore a classic Comet Run without changing the user command surface",inputs:[{name:"classic-state",description:"Validated ClassicState consistent with the Run projection",required:!0},{name:"evidence",description:"Structured evidence produced by the Classic Evidence collector",required:!0}],outputs:[{name:"run-state",description:"Atomically synchronized Classic and Run state",required:!0}],success:["Legacy fields and Run fields remain consistent","Every step invokes only a declared public Comet Skill","The completed state passes its completion eval"]},orchestration:{mode:"deterministic",entry:"full.open",steps:[{id:"full.open",action:{type:"invoke_skill",ref:"comet-open"},next:"full.design.handoff"},{id:"full.design.handoff",action:{type:"invoke_skill",ref:"comet-design"},next:"full.design.document"},{id:"full.design.document",action:{type:"invoke_skill",ref:"comet-design"},next:"full.build.plan"},{id:"full.build.plan",action:{type:"invoke_skill",ref:"comet-build"},next:"full.build.plan-ready"},{id:"full.build.plan-ready",action:{type:"invoke_skill",ref:"comet-build"},next:"full.build.configure"},{id:"full.build.configure",action:{type:"invoke_skill",ref:"comet-build"},next:"full.build.execute"},{id:"full.build.execute",action:{type:"invoke_skill",ref:"comet-build"},next:"full.build.complete"},{id:"full.build.complete",action:{type:"invoke_skill",ref:"comet-build"},next:"full.verify.run"},{id:"full.build.fix",action:{type:"invoke_skill",ref:"comet-build"},next:"full.build.execute"},{id:"full.verify.run",action:{type:"invoke_skill",ref:"comet-verify"},next:"full.verify.branch"},{id:"full.verify.branch",action:{type:"invoke_skill",ref:"comet-verify"},next:"full.archive.confirm"},{id:"full.archive.confirm",action:{type:"invoke_skill",ref:"comet-archive"},next:"full.archive.execute"},{id:"full.archive.execute",action:{type:"invoke_skill",ref:"comet-archive"},next:"completed"},{id:"hotfix.open",action:{type:"invoke_skill",ref:"comet-hotfix"},next:"hotfix.build.execute"},{id:"hotfix.build.execute",action:{type:"invoke_skill",ref:"comet-build"},next:"hotfix.build.complete"},{id:"hotfix.build.complete",action:{type:"invoke_skill",ref:"comet-build"},next:"hotfix.verify.run"},{id:"hotfix.verify.run",action:{type:"invoke_skill",ref:"comet-verify"},next:"hotfix.verify.branch"},{id:"hotfix.verify.branch",action:{type:"invoke_skill",ref:"comet-verify"},next:"hotfix.archive.confirm"},{id:"hotfix.archive.confirm",action:{type:"invoke_skill",ref:"comet-archive"},next:"hotfix.archive.execute"},{id:"hotfix.archive.execute",action:{type:"invoke_skill",ref:"comet-archive"},next:"completed"},{id:"tweak.open",action:{type:"invoke_skill",ref:"comet-tweak"},next:"tweak.build.execute"},{id:"tweak.build.execute",action:{type:"invoke_skill",ref:"comet-build"},next:"tweak.build.complete"},{id:"tweak.build.complete",action:{type:"invoke_skill",ref:"comet-build"},next:"tweak.verify.run"},{id:"tweak.verify.run",action:{type:"invoke_skill",ref:"comet-verify"},next:"tweak.verify.branch"},{id:"tweak.verify.branch",action:{type:"invoke_skill",ref:"comet-verify"},next:"tweak.archive.confirm"},{id:"tweak.archive.confirm",action:{type:"invoke_skill",ref:"comet-archive"},next:"tweak.archive.execute"},{id:"tweak.archive.execute",action:{type:"invoke_skill",ref:"comet-archive"},next:"completed"},{id:"completed",action:{type:"checkpoint"},completionEvals:["classic-completed"]}]},skills:[{id:"comet-open"},{id:"comet-design"},{id:"comet-build"},{id:"comet-verify"},{id:"comet-archive"},{id:"comet-hotfix"},{id:"comet-tweak"}],agents:[],tools:[]},guardrails:{allowedSkills:["comet-open","comet-design","comet-build","comet-verify","comet-archive","comet-hotfix","comet-tweak"],allowedAgents:[],allowedTools:[],maxIterations:500,maxRetriesPerAction:3,confirmationRequiredFor:[]},evals:[{id:"classic-completed",scope:"completion",type:"state_equals",field:"status",equals:"completed"}]}}async function fh(){let e=be.dirname(Ul(import.meta.url)),t=[process.env.COMET_RUNTIME_CLASSIC_ROOT,be.resolve(e,"..","runtime","classic"),be.resolve(e,"..","..","comet","runtime","classic"),be.resolve(e,"..","..","assets","skills","comet","runtime","classic"),be.resolve("assets","skills","comet","runtime","classic"),process.env.COMET_CLASSIC_SKILL_ROOT,be.resolve(e,"..","..","comet-classic"),be.resolve(e,"..","..","assets","skills","comet-classic"),be.resolve("assets","skills","comet-classic")].filter(n=>!!n);for(let n of t)if(await yE(n))return n;return null}async function dh(e){return await Uo(be.join(e,"skill.yaml"))?zp(e):Yp(e)}async function mn(e){let t=await fh();return ch(e,{skillPackage:t?await dh(t):uh(be.dirname(Ul(import.meta.url)))})}async function mh(e){let t=await H(e),n=Array.from(new Set(t.unknownKeys)).sort();if(n.length>0)throw new Error(`Invalid Classic state: unknown field(s): ${n.join(", ")}`);return mn(e)}async function Gl(e,t){let n=t??await H(e,{migrate:!1}),i=Array.from(new Set(n.unknownKeys)).sort();if(i.length>0)throw new Error(`Invalid Classic state: unknown field(s): ${i.join(", ")}`);if(!n.classic||!n.run)throw new Error("Classic runtime validation requires synchronized Classic and Run projections");if(n.classic.classicMigration!==ln)throw new Error("Classic Run exists without a supported classic_migration marker");let r=await fh(),s=r?await dh(r):uh(be.dirname(Ul(import.meta.url)));if(n.run.skill!==s.definition.metadata.name)throw new Error(`Classic Run skill mismatch: expected ${s.definition.metadata.name}, got ${n.run.skill}`);let o=await Jo(e,n.run.skillHash);if(o.definition.metadata.name!==n.run.skill)throw new Error(`Classic Run snapshot skill mismatch: expected ${n.run.skill}, got ${o.definition.metadata.name}`);let a=await et(e,n),c=$t(n.classic,a);if(n.run.currentStep!==c)throw new Error(`Classic Run step mismatch: expected ${c}, got ${n.run.currentStep}`);return{classic:n.classic,run:n.run,evidence:a,migrated:!1,snapshotDir:be.join(e,".comet","skill-snapshots",n.run.skillHash)}}async function pn(e,t,n,i){let r=await H(e);if(!r.classic||!r.run)throw new Error("Classic transition requires synchronized Classic and Run projections");let s=await et(e,{classic:t,run:n,unknownKeys:r.unknownKeys}),o=$t(t,s),a={...n,currentStep:o,iteration:n.iteration+1,status:o==="completed"?"completed":"running"};await qe(e,{classic:t,run:a,unknownKeys:r.unknownKeys});let c=await De(e,a.trajectoryRef);return await Je(e,a.trajectoryRef,{sequence:c.length+1,timestamp:new Date().toISOString(),type:"state_transitioned",runId:a.runId,data:{kind:"classic",fromStep:n.currentStep,toStep:o,...i}}),a}Ao();import vE from"path";var bE=vE.join(".comet","state-events.jsonl"),CE=8*1024*1024;async function Dn(e,t){let n={schemaVersion:1,timestamp:new Date().toISOString(),...t};return await Oo(e,bE,`${JSON.stringify(n)} +`,CE,"Classic state event log"),n}var ph=["open-complete","design-complete","build-complete","verify-pass","verify-fail","archive-confirm","archive-reopen","archived","preset-escalate"],kE={"open-complete":{event:"open-complete",from:"open",guardRefs:["open-artifacts-present"]},"design-complete":{event:"design-complete",from:"design",guardRefs:["design-evidence-present"]},"build-complete":{event:"build-complete",from:"build",guardRefs:["build-decisions-selected"]},"verify-pass":{event:"verify-pass",from:"verify",guardRefs:["verification-report-present"]},"verify-fail":{event:"verify-fail",from:"verify",guardRefs:["verification-failed"]},"archive-confirm":{event:"archive-confirm",from:"archive",guardRefs:["archive-final-confirmation"]},"archive-reopen":{event:"archive-reopen",from:"archive",guardRefs:["archive-not-finalized"]},archived:{event:"archived",from:"archive",guardRefs:["verify-result-pass","archive-confirmed"]},"preset-escalate":{event:"preset-escalate",from:"build",guardRefs:["preset-workflow"]}},hh={open:"open-complete",design:"design-complete",build:"build-complete",verify:"verify-pass"};function SE(e){return e.toISOString().slice(0,10)}function L(e,t,n,i){let r=e[n];e[n]=i,r!==i&&t.push({field:n,from:r,to:i})}function vi(e,t,n={}){let i=kE[t];if(e.phase!==i.from)throw new Error(`Cannot apply ${t}: phase is '${e.phase}', expected '${i.from}'`);let r={...e},s=[],o=n.now??new Date;if(t==="open-complete")L(r,s,"phase",r.workflow==="full"?"design":"build");else if(t==="design-complete")L(r,s,"phase","build");else if(t==="build-complete"){let a=r.verifyResult==="fail";L(r,s,"phase","verify"),L(r,s,"verifyResult","pending"),L(r,s,"branchStatus","pending"),a||L(r,s,"verificationReport",null)}else if(t==="verify-pass")L(r,s,"verifyResult","pass"),L(r,s,"verifyFailures",0),L(r,s,"phase","archive"),L(r,s,"verifiedAt",SE(o)),L(r,s,"archiveConfirmation","pending"),L(r,s,"branchStatus","pending");else if(t==="verify-fail")L(r,s,"verifyResult","fail"),L(r,s,"verifyFailures",r.verifyFailures+1),L(r,s,"phase","build"),L(r,s,"branchStatus","pending");else if(t==="preset-escalate"){if(r.workflow!=="hotfix"&&r.workflow!=="tweak")throw new Error(`Cannot apply ${t}: workflow must be hotfix or tweak, got '${r.workflow}'`);L(r,s,"workflow","full"),L(r,s,"classicProfile","full"),L(r,s,"phase","design"),L(r,s,"designDoc",null),L(r,s,"buildPause",null),L(r,s,"buildMode",null),L(r,s,"subagentDispatch",null),L(r,s,"tddMode",null),L(r,s,"reviewMode",null),L(r,s,"isolation",null),L(r,s,"boundBranch",null),L(r,s,"verifyMode",null),L(r,s,"directOverride",null)}else if(t==="archive-confirm"){if(r.verifyResult!=="pass")throw new Error(`Cannot apply ${t}: verifyResult must be pass`);if(r.archived)throw new Error(`Cannot apply ${t}: already archived`);L(r,s,"archiveConfirmation","confirmed")}else if(t==="archive-reopen"){if(r.archived)throw new Error(`Cannot apply ${t}: already archived`);L(r,s,"verifyResult","pending"),L(r,s,"verifyFailures",0),L(r,s,"phase","verify"),L(r,s,"verifiedAt",null),L(r,s,"archiveConfirmation",null),L(r,s,"branchStatus","pending")}else{if(r.verifyResult!=="pass")throw new Error(`Cannot apply ${t}: verifyResult must be pass`);if(r.archiveConfirmation!=="confirmed")throw new Error(`Cannot apply ${t}: archiveConfirmation must be confirmed`);L(r,s,"archived",!0)}return{classic:r,effects:s,definition:i}}pl();import{randomUUID as EE}from"crypto";import{promises as Nr}from"fs";import wh from"path";var Vl="comet.selection.v2",RE=16*1024;function Go(e){return wh.join(e,".comet","current-change.json")}function _E(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function gh(e){return e===null||typeof e=="string"}function yh(e){let t;try{t=JSON.parse(e)}catch(n){throw new Error(`current change selection contains invalid JSON: ${n instanceof Error?n.message:String(n)}`,{cause:n})}if(!_E(t))throw new Error("current change selection must be a JSON object");if(t.version===1){if(typeof t.change!="string")throw new Error("legacy current change selection change must be a string");if(t.branch!==void 0&&!gh(t.branch))throw new Error("legacy current change selection branch must be a string or null");return{selection:{schema:Vl,workflow:"classic",change:t.change,branch:t.branch??null},legacy:!0}}if(t.schema!==Vl)throw new Error(`current change selection schema must be ${Vl}`);if(t.workflow!=="native"&&t.workflow!=="classic")throw new Error("current change selection workflow must be native or classic");if(typeof t.change!="string")throw new Error("current change selection change must be a string");if(!gh(t.branch))throw new Error("current change selection branch must be a string or null");if(t.workflow==="native"&&t.branch!==null)throw new Error("Native current change selection branch must be null");return{selection:t,legacy:!1}}async function Vo(e){let t;try{let i=Go(e),{bytes:r}=await uo(i,RE,{label:"current change selection"});t=r.toString("utf8")}catch(i){if(i.code==="ENOENT")return{status:"missing"};throw new Error(`cannot read current change selection: ${i instanceof Error?i.message:String(i)}`,{cause:i})}return{status:"selected",...yh(t)}}async function vh(e,t){let n=yh(JSON.stringify(t));if(n.legacy)throw new Error("cannot write a legacy current change selection");let i=Go(e),r=`${i}.${EE()}.tmp`;await Nr.mkdir(wh.dirname(i),{recursive:!0});try{await Nr.writeFile(r,`${JSON.stringify(n.selection,null,2)} +`,"utf8"),await Nr.rename(r,i)}catch(s){throw await Nr.rm(r,{force:!0}),s}}async function Yl(e){await Nr.rm(Go(e),{force:!0})}async function bh(e,t,n){let i=await Vo(e);return i.status!=="selected"||i.selection.workflow!==t||i.selection.change!==n?!1:(await Yl(e),!0)}Er();var zl=Ve(He(),1);Er();import{execFileSync as Ch}from"child_process";import{randomUUID as xE}from"crypto";import{promises as Tr}from"fs";import kh from"path";function jr(e){try{let t=Ch("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:e,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim();return t&&t!=="HEAD"?t:null}catch{return null}}var PE=Nl("liveGitBranch",e=>jr(e));function Xl(e){try{return Ch("git",["rev-parse","--is-inside-work-tree"],{cwd:e,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()==="true"}catch{return!1}}var OE=Nl("isGitWorkTree",e=>Xl(e)),$E=["current","branch","worktree"];function Yo(e){return $E.includes(e)}function Ql(e){return Yo(e.isolation)?e.boundBranch===null&&e.currentBranch===null&&e.gitWorkTree===!1?{status:"not-applicable"}:e.boundBranch===null?e.currentBranch===null?{status:"unbound-detached"}:{status:"needs-heal",branch:e.currentBranch}:e.currentBranch===e.boundBranch?{status:"ok"}:{status:"drift",boundBranch:e.boundBranch,currentBranch:e.currentBranch}:{status:"not-applicable"}}async function Nt(e,t){let n=kh.join(e,".comet.yaml"),i=(0,zl.parseDocument)(await Tr.readFile(n,"utf8"),{uniqueKeys:!1});if(i.errors.length>0)throw new Error(`Invalid .comet.yaml: ${i.errors[0].message}`);let r=i.toJS()??{},s=typeof r.isolation=="string"?r.isolation:null,o=typeof r.bound_branch=="string"&&r.bound_branch!==""?r.bound_branch:null,a=Yo(s),c=PE(t.cwd),l=a&&o===null&&c===null?OE(t.cwd):!0,u=Ql({isolation:s,boundBranch:o,currentBranch:c,gitWorkTree:l});return u.status==="needs-heal"&&t.heal?(await Zl(e,u.branch),{status:"healed",branch:u.branch,bindingRequired:a,currentBranch:c}):{...u,bindingRequired:a,currentBranch:c}}async function Zl(e,t){let n=kh.join(e,".comet.yaml"),i=(0,zl.parseDocument)(await Tr.readFile(n,"utf8"),{uniqueKeys:!1});i.set("bound_branch",t);let r=`${n}.${xE()}.tmp`;try{await Tr.writeFile(r,i.toString(),"utf8"),await Tr.rename(r,n)}catch(s){throw await Tr.rm(r,{force:!0}),s}}function Sh(e){return e??"detached HEAD"}function zo(e,t,n){return`change '${e}' is bound to branch '${t}', but current branch is '${Sh(n)}'. +Next: ask the user to confirm — switch back to '${t}', or run \`comet state rebind ${e}\` after explicit confirmation.`}function Lr(e,t,n){return`change '${e}' is bound to branch '${t}', but current branch is '${Sh(n)}'`}function Tt(e){return`change '${e}' uses a branch-bound workspace mode but has no bound branch and HEAD is detached; checkout a branch first before continuing.`}var Ph=Ve(He(),1);import{promises as Xo}from"node:fs";import Ce from"node:path";import{execFileSync as AE}from"node:child_process";var IE=3e4,NE=8*1024*1024,eu=class extends Error{constructor(n,i,r){super(`git ${i.join(" ")} failed${r?`: ${r}`:""}`);this.cwd=n;this.args=i;this.stderr=r;this.name="GitCommandError"}cwd;args;stderr};function TE(e,t){try{return AE("git",["-C",e,...t],{encoding:"utf8",stdio:["ignore","pipe","pipe"],timeout:IE,maxBuffer:NE,windowsHide:!0})}catch(n){let i=typeof n.stderr=="string"?n.stderr.trim():Buffer.isBuffer(n.stderr)?n.stderr.toString("utf8").trim():"";throw new eu(e,t,i)}}function jt(e,t){return TE(e,t).trim()}function Eh(e){return jt(e,["status","--porcelain=v1","-z","--untracked-files=all"])===""}function tu(e,t){jt(e,["check-ref-format","--branch",t])}import{execFileSync as jE}from"child_process";import Mr from"path";function Wn(e,t){return jE("git",["-C",e,...t],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:1e4,windowsHide:!0}).trim()}function LE(e,t){let n=Mr.normalize(e),i=Mr.normalize(t);return process.platform==="win32"?n.toLowerCase()===i.toLowerCase():n===i}function bi(e){try{let t=Mr.resolve(Wn(e,["rev-parse","--show-toplevel"])),i=Wn(e,["worktree","list","--porcelain","-z"]).split("\0").find(o=>o.startsWith("worktree ")),r=i?Mr.resolve(i.slice(9)):t,s=null;try{s=Wn(e,["symbolic-ref","--quiet","--short","HEAD"])||null}catch{}return{isGitWorktree:!0,isSecondaryWorktree:!LE(t,r),currentWorktreeRoot:t,primaryWorktreeRoot:r,currentBranch:s}}catch{return{isGitWorktree:!1,isSecondaryWorktree:!1,currentWorktreeRoot:null,primaryWorktreeRoot:null,currentBranch:null}}}function qr(e){try{Wn(e,["rev-parse","--is-inside-work-tree"]);let t=Wn(e,["worktree","list","--porcelain"]).split(/\r?\n/u),n=[],i=null;for(let r of t)r.startsWith("worktree ")?(i&&n.push(i),i={root:Mr.resolve(r.slice(9)),branch:null,detached:!1}):i&&r.startsWith("branch refs/heads/")?i.branch=r.slice(18):i&&r==="detached"&&(i.detached=!0);return i&&n.push(i),n}catch{return[]}}function Dr(e,t){try{return Wn(e,["check-ref-format","--branch",t]),Wn(e,["show-ref","--verify",`refs/heads/${t}`]),!0}catch{return!1}}function Fn(e,t){let n=Ce.normalize(e),i=Ce.normalize(t);return process.platform==="win32"?n.toLowerCase()===i.toLowerCase():n===i}function Rh(e,t){let n=Ce.relative(e,t);return n===""||!Ce.isAbsolute(n)&&n!==".."&&!n.startsWith(`..${Ce.sep}`)}async function Oh(e){try{throw await Xo.lstat(e),new Error(`Classic worktree path already exists: ${e}`)}catch(t){if(t.code!=="ENOENT")throw t}}async function ME(e){try{return await Xo.lstat(e),!0}catch(t){if(t.code==="ENOENT")return!1;throw t}}function $h(e,t,n){let i=Ce.resolve(e,n??Ce.join(".worktrees",t));if(!Rh(e,i))throw new Error("Classic worktree path must remain inside the primary worktree");let r=Ce.resolve(e,jt(e,["rev-parse","--git-common-dir"]));if(Rh(r,i))throw new Error("Classic worktree path cannot be inside the Git common directory");return i}function _h(e,t){return t===void 0?void 0:Ce.resolve(e,t)}function xh(e,t){return e.find(n=>n.branch===t)}function Ci(e){return{schema:"comet.classic.workspace-preparation.v1",...e}}async function Ah(e){Ze(e.name);let t=Ce.resolve(e.projectRoot),n=bi(t);if(e.isolation==="current"){if(e.changeBranch||e.targetBranch||e.worktreePath)throw new Error("Classic current isolation does not accept --change-branch, --target-branch, or --worktree-path");return Ci({isolation:"current",projectRoot:t,changeBranch:n.currentBranch,targetBranch:n.currentBranch,worktreePath:null,createdBranch:!1,createdWorktree:!1,reusedWorktree:!1})}if(!n.isGitWorktree||n.currentBranch===null||n.primaryWorktreeRoot===null||n.currentWorktreeRoot===null)throw new Error("Classic branch and worktree isolation require an attached Git branch");let i=n.primaryWorktreeRoot,r=e.changeBranch??`comet/${e.name}`;tu(t,r);let s=e.targetBranch??n.currentBranch;if(tu(t,s),!Dr(t,s))throw new Error(`Classic target branch is not a verified local branch: ${s}`);if(e.isolation==="branch"){if(e.worktreePath)throw new Error("--worktree-path is only valid with --isolation worktree");if(n.currentBranch===r)return Ci({isolation:"branch",projectRoot:t,changeBranch:r,targetBranch:s,worktreePath:null,createdBranch:!1,createdWorktree:!1,reusedWorktree:!1});if(!Eh(t))throw new Error("Classic branch isolation requires a clean current working directory");if(Dr(t,r))throw new Error(`Classic change branch already exists: ${r}`);return jt(t,["switch","-c",r,s]),Ci({isolation:"branch",projectRoot:t,changeBranch:r,targetBranch:s,worktreePath:null,createdBranch:!0,createdWorktree:!1,reusedWorktree:!1})}if(n.currentBranch===r){if(!n.isSecondaryWorktree)throw new Error("Classic worktree isolation must use a linked Git worktree");let u=_h(i,e.worktreePath);if(u&&!Fn(u,n.currentWorktreeRoot))throw new Error(`Classic worktree path ${u} does not match the current worktree ${n.currentWorktreeRoot}`);return Ci({isolation:"worktree",projectRoot:t,changeBranch:r,targetBranch:s,worktreePath:t,createdBranch:!1,createdWorktree:!1,reusedWorktree:!0})}let o=qr(t),a=xh(o,r);if(a&&!await ME(a.root)&&(jt(i,["worktree","prune"]),o=qr(t),a=xh(o,r)),a){let u=_h(i,e.worktreePath);if(u&&!Fn(u,a.root))throw new Error(`Classic worktree branch ${r} is already checked out at ${a.root}`);return await Xo.access(a.root),Ci({isolation:"worktree",projectRoot:a.root,changeBranch:r,targetBranch:s,worktreePath:a.root,createdBranch:!1,createdWorktree:!1,reusedWorktree:!0})}let c=$h(i,e.name,e.worktreePath);await Oh(c);let l=Dr(t,r);if(jt(i,l?["worktree","add",c,r]:["worktree","add","-b",r,c,s]),o=qr(t),!o.some(u=>Fn(u.root,c)))throw new Error(`Classic worktree was created but is not registered: ${c}`);return Ci({isolation:"worktree",projectRoot:c,changeBranch:r,targetBranch:s,worktreePath:c,createdBranch:!l,createdWorktree:!0,reusedWorktree:!1})}async function qE(e,t,n){let i;try{i=await Oe(n,e)}catch{return null}if(!i.stateExists)return null;let r;try{r=(0,Ph.parseDocument)(await Xo.readFile(Ce.join(i.directory,".comet.yaml"),"utf8"))}catch{return null}let s=r.toJS()??{};return{projectRoot:Ce.resolve(e),worktree:t,changeDirectory:i.directory,isolation:typeof s.isolation=="string"?s.isolation:null,boundBranch:typeof s.bound_branch=="string"?s.bound_branch:null,branch:t?.branch??bi(e).currentBranch}}async function DE(e,t){let n=qr(e),i=n.length>0?[...n]:[{root:Ce.resolve(e),branch:null,detached:!1}];i.some(s=>Fn(s.root,e))||i.push({root:Ce.resolve(e),branch:bi(e).currentBranch,detached:!1});let r=(await Promise.all(i.map(s=>qE(s.root,s,t)))).filter(s=>s!==null);return{entries:n,candidates:r}}function WE(e){return e.isolation===null||e.boundBranch===null&&e.branch!==null||e.boundBranch===null&&e.branch===null&&e.worktree?.detached===!1?!0:e.boundBranch!==null&&e.boundBranch===e.branch}async function FE(e,t,n){let i=bi(e);if(!i.primaryWorktreeRoot)throw new Error("Classic Git primary worktree is unavailable");let r=i.primaryWorktreeRoot,s=$h(r,t);return await Oh(s),jt(r,["worktree","prune"]),jt(r,["worktree","add",s,n]),s}async function ki(e){let t=Ce.resolve(e.projectRoot),{entries:n,candidates:i}=await DE(t,e.name);if(i.length===0)throw new Error(`Classic change '${e.name}' was not found in any registered Git worktree`);let r=i.filter(WE),o=r.find(f=>Fn(f.projectRoot,t))??r[0];if(o)return{schema:"comet.classic.workspace-resolution.v1",change:e.name,projectRoot:o.projectRoot,branch:o.branch,isolation:o.isolation,routed:!Fn(o.projectRoot,t),recreatedWorktree:!1};let a=i.find(f=>Fn(f.projectRoot,t));if(a&&a.isolation!=="worktree")return{schema:"comet.classic.workspace-resolution.v1",change:e.name,projectRoot:a.projectRoot,branch:a.branch,isolation:a.isolation,routed:!1,recreatedWorktree:!1};let c=i.find(f=>f.boundBranch!==null),l=c?.boundBranch,u=bi(t);if(c?.isolation==="worktree"&&l&&u.primaryWorktreeRoot&&Dr(t,l)&&!n.some(f=>f.branch===l)){let f=await FE(t,e.name,l);return{schema:"comet.classic.workspace-resolution.v1",change:e.name,projectRoot:f,branch:l,isolation:c.isolation,routed:!0,recreatedWorktree:!0}}throw l?new Error(`Classic change '${e.name}' is bound to branch '${l}', but no registered worktree is aligned; ask the user to rebind only if that branch was intentionally renamed or taken over.`):new Error(`Classic change '${e.name}' has no bound branch in its isolated workspace; ask the user to confirm a rebind before continuing.`)}async function nu(e,t){return{exitCode:0,stdout:`${JSON.stringify({action:e,...t})} +`}}var BE=Mn("readCometCurrentSelection",e=>Vo(e));async function iu(e,t){Ze(t);let n=await Oe(t,e);if(!n.stateExists)throw new Error(`Cannot select current change '${t}': active change state not found`);let i=await H(n.directory,{migrate:!1});if(!i.classic)throw new Error(`Cannot select current change '${t}': Classic state is incomplete`);if(i.classic.archived)throw new Error(`Cannot select current change '${t}': change is archived`);return n.directory}async function Ih(e,t){Ze(t);let n={label:"",directory:"",exists:!1,stateExists:!1};try{n=await Oe(t,e)}catch(c){if(!(c instanceof An))throw c}let i;try{i=await ki({projectRoot:e,name:t})}catch(c){throw n.stateExists||await iu(e,t),c}let r=i.projectRoot,s=await iu(r,t),o=await Nt(s,{heal:!0,cwd:r});if(o.status==="drift")throw new Error(Lr(t,o.boundBranch,o.currentBranch));if(o.status==="unbound-detached")throw new Error(Tt(t));let a={schema:"comet.selection.v2",workflow:"classic",change:t,branch:o.currentBranch};return await vh(r,a),a}async function Qo(e){let t;try{t=await BE(e)}catch(s){return{status:"stale",reason:s instanceof Error?s.message:String(s)}}if(t.status==="missing")return{status:"missing"};if(t.selection.workflow!=="classic")return{status:"stale",reason:`current change '${t.selection.change}' belongs to Native, not Classic`};let n=t.selection,i;try{i=await iu(e,n.change)}catch(s){return{status:"stale",reason:s instanceof Error?s.message:String(s)}}let r=await Nt(i,{heal:!1,cwd:e});return r.status==="drift"?{status:"stale",reason:Lr(n.change,r.boundBranch,r.currentBranch)}:r.status==="unbound-detached"?{status:"stale",reason:Tt(n.change)}:r.status==="ok"?{status:"selected",selection:n}:n.branch!==null&&r.currentBranch!==n.branch?{status:"stale",reason:`current change '${n.change}' was selected on branch '${n.branch}', current branch is '${r.currentBranch??"detached HEAD"}'`}:{status:"selected",selection:n}}async function Nh(e){let t;try{t=await Vo(e)}catch{return}t.status==="selected"&&t.selection.workflow==="classic"&&await Yl(e)}async function Th(e,t){return bh(e,"classic",t)}var JE="\x1B[32m",UE="\x1B[31m",GE="\x1B[33m",su="\x1B[0m";function Ge(e){return`${JE}${e}${su}`}function Ae(e){return`${UE}${e}${su}`}function Wr(e){return`${GE}${e}${su}`}var ue=class extends Error{constructor(n,i=1){super(n);this.exitCode=i}exitCode},ru=class{stderr=[];openSpecStdout=[];openSpecStderr=[];stepsOk=0;stepsTotal=0;captureOpenSpec(t){t.stdout&&this.openSpecStdout.push(t.stdout),t.stderr&&this.openSpecStderr.push(t.stderr)}toResult(t=0){let n=this.stderr.length>0?this.stderr.join(` `)+` `:"",i=this.openSpecStderr.join(""),r=i&&n&&!i.endsWith(` `)?` -`:"";return{exitCode:t,...this.openSpecStdout.length>0?{stdout:this.openSpecStdout.join("")}:{},...i||n?{stderr:`${i}${r}${n}`}:{}}}};function UE(e){let t=ge(e);if(t)throw new fe(Ae(`FATAL: ${t}`))}function Lh(e){return FE("sha256").update(e).digest("hex")}function GE(e){return Lh(JSON.stringify(Object.fromEntries(Object.entries(e).sort(([t],[n])=>t.localeCompare(n)))))}function VE(e,t){let n=wt.relative(e,t);return n!==""&&!wt.isAbsolute(n)&&n!==".."&&!n.startsWith(`..${wt.sep}`)}function Dr(e,t,n,i){if(!i)return i;let r=wt.resolve(e,i);return VE(t,r)?I(e,wt.join(n,wt.relative(t,r))):i}function YE(e,t,n,i){let r={...i};for(let s of["handoff_context","handoff_markdown"]){let o=r[s];o&&(r[s]=Dr(e,t,n,o)??o)}return r}async function zE(e,t){let n=await B(t);if(!n.classic||!n.run||!n.classic.archived)throw new fe(Ae(" [FAIL] Final archived state is incomplete"));let i=[["design_doc",n.classic.designDoc],["plan",n.classic.plan],["verification_report",n.classic.verificationReport],["handoff_context",n.classic.handoffContext]],r=await hi(t,n.run.artifactsRef),s=[["artifacts.handoff_context",r.handoff_context],["artifacts.handoff_markdown",r.handoff_markdown]];for(let[o,a]of[...i,...s])if(a&&!await X(e,wt.resolve(e,a),{label:`Classic archived ${o}`,expected:"file"}))throw new fe(Ae(` [FAIL] Final archived ${o} does not exist: ${a}`))}function jh(e){return`${e.replace(/\n+$/u,"")} -`}function XE(e,t,n){let i=e.replace(/\r\n/gu,` +`:"";return{exitCode:t,...this.openSpecStdout.length>0?{stdout:this.openSpecStdout.join("")}:{},...i||n?{stderr:`${i}${r}${n}`}:{}}}};function VE(e){let t=ge(e);if(t)throw new ue(Ae(`FATAL: ${t}`))}function Lh(e){return HE("sha256").update(e).digest("hex")}function YE(e){return Lh(JSON.stringify(Object.fromEntries(Object.entries(e).sort(([t],[n])=>t.localeCompare(n)))))}function zE(e,t){let n=yt.relative(e,t);return n!==""&&!yt.isAbsolute(n)&&n!==".."&&!n.startsWith(`..${yt.sep}`)}function Fr(e,t,n,i){if(!i)return i;let r=yt.resolve(e,i);return zE(t,r)?A(e,yt.join(n,yt.relative(t,r))):i}function XE(e,t,n,i){let r={...i};for(let s of["handoff_context","handoff_markdown"]){let o=r[s];o&&(r[s]=Fr(e,t,n,o)??o)}return r}async function QE(e,t){let n=await H(t);if(!n.classic||!n.run||!n.classic.archived)throw new ue(Ae(" [FAIL] Final archived state is incomplete"));let i=[["design_doc",n.classic.designDoc],["plan",n.classic.plan],["verification_report",n.classic.verificationReport],["handoff_context",n.classic.handoffContext]],r=await hi(t,n.run.artifactsRef),s=[["artifacts.handoff_context",r.handoff_context],["artifacts.handoff_markdown",r.handoff_markdown]];for(let[o,a]of[...i,...s])if(a&&!await X(e,yt.resolve(e,a),{label:`Classic archived ${o}`,expected:"file"}))throw new ue(Ae(` [FAIL] Final archived ${o} does not exist: ${a}`))}function jh(e){return`${e.replace(/\n+$/u,"")} +`}function ZE(e,t,n){let i=e.replace(/\r\n/gu,` `),r=i.split(` `),s=r[0]==="---"?r.indexOf("---",1):-1,o=n.match(/^([^:\n]+):/u)?.[1]?.trim();if(s!==-1){let c=r.slice(1,s).filter(l=>{let u=l.match(/^([^:\n]+):/u)?.[1]?.trim();return u===void 0?!0:u!=="archived-with"&&u!==o});return c.push(`archived-with: ${t}`),n&&c.push(n),jh(["---",...c,"---",...r.slice(s+1)].join(` `))}let a=["---",`archived-with: ${t}`];return n&&a.push(n),o!=="status"&&a.push("status: final"),a.push("---"),jh([...a,i].join(` -`))}async function QE(e,t,n){let i=await We(e,t.trajectoryRef);i.some(r=>r.type==="recovery_reconciled"&&r.data.kind==="classic-archive"&&r.data.actionId===n)||await Je(e,t.trajectoryRef,{sequence:i.length+1,timestamp:new Date().toISOString(),type:"recovery_reconciled",runId:t.runId,data:{kind:"classic-archive",actionId:n}})}async function Zo(e,t,n,i,r,s){if(!await X(t,n,{label:"Classic archive annotation target",expected:"file"}))return;if(s){e.stderr.push(qr(` [DRY-RUN] Would annotate: ${n}`)),e.stepsOk+=1,e.stepsTotal+=1;return}let o=await F(t,n,{label:"Classic archive annotation target"}),a=XE(o,i,r);await fi(t,n,a,{label:"Classic archive annotation target"}),e.stderr.push(Ge(` [OK] Annotated: ${n}`)),e.stepsOk+=1,e.stepsTotal+=1}async function ZE(e,t){if(!(await V(e,t,{label:"Classic main specs directory",expected:"directory"})).exists)return;let i=!1,r=await BE.readdir(t,{withFileTypes:!0});for(let s of r){if(!s.isDirectory()&&!s.isSymbolicLink())continue;let o=`${t}/${s.name}/spec.md`,a=await(async()=>await X(e,o,{label:`Classic main spec ${s.name}`,expected:"file"})?F(e,o,{label:`Classic main spec ${s.name}`}):null)();if(a===null)continue;let c=a.split(/\r?\n/u).map((l,u)=>({line:l,number:u+1})).filter(l=>/^## (ADDED|MODIFIED|REMOVED|RENAMED) Requirements$/u.test(l.line));if(c.length>0){i=!0,process.stderr.write(Ae(`FATAL: delta-only section heading leaked into main spec: ${o}`)+` +`))}async function eR(e,t,n){let i=await De(e,t.trajectoryRef);i.some(r=>r.type==="recovery_reconciled"&&r.data.kind==="classic-archive"&&r.data.actionId===n)||await Je(e,t.trajectoryRef,{sequence:i.length+1,timestamp:new Date().toISOString(),type:"recovery_reconciled",runId:t.runId,data:{kind:"classic-archive",actionId:n}})}async function Zo(e,t,n,i,r,s){if(!await X(t,n,{label:"Classic archive annotation target",expected:"file"}))return;if(s){e.stderr.push(Wr(` [DRY-RUN] Would annotate: ${n}`)),e.stepsOk+=1,e.stepsTotal+=1;return}let o=await B(t,n,{label:"Classic archive annotation target"}),a=ZE(o,i,r);await fi(t,n,a,{label:"Classic archive annotation target"}),e.stderr.push(Ge(` [OK] Annotated: ${n}`)),e.stepsOk+=1,e.stepsTotal+=1}async function tR(e,t){if(!(await V(e,t,{label:"Classic main specs directory",expected:"directory"})).exists)return;let i=!1,r=await KE.readdir(t,{withFileTypes:!0});for(let s of r){if(!s.isDirectory()&&!s.isSymbolicLink())continue;let o=`${t}/${s.name}/spec.md`,a=await(async()=>await X(e,o,{label:`Classic main spec ${s.name}`,expected:"file"})?B(e,o,{label:`Classic main spec ${s.name}`}):null)();if(a===null)continue;let c=a.split(/\r?\n/u).map((l,u)=>({line:l,number:u+1})).filter(l=>/^## (ADDED|MODIFIED|REMOVED|RENAMED) Requirements$/u.test(l.line));if(c.length>0){i=!0,process.stderr.write(Ae(`FATAL: delta-only section heading leaked into main spec: ${o}`)+` `);for(let l of c)process.stderr.write(`${l.number}:${l.line} -`)}}if(i)throw new fe("")}var Mh=async e=>{let t=new su,n=e[0],i=e[1]==="--dry-run";try{UE(n);let r=await ue(process.cwd()),s=await Pe(r),o=await Oe(n,s.projectRoot),a=o.directory,c=I(s.projectRoot,a),u=`${new Date().toISOString().slice(0,10)}-${n}`,f=wt.join(s.archiveDir,u);t.stderr.push(`=== Comet Archive: ${n} ===`);let d=o.stateExists,p=d?null:await _o(n,s.projectRoot),g=d?a:p?.directory;if(!g||!await X(s.projectRoot,`${g}/.comet.yaml`,{label:`Classic change ${n} state`,expected:"file"}))throw new fe(Ae(`FATAL: .comet.yaml not found in ${c}/`));p&&(f=p.directory,u=wt.basename(p.directory));let h=await B(g);if(!h.classic)throw new fe(Ae("FATAL: archive requires Classic state"));let m=h.classic,y=m.designDoc,w=m.plan;if(m.phase!=="archive")throw new fe(Ae(`FATAL: phase is '${m.phase}', expected 'archive'`));if(m.verifyResult!=="pass")throw new fe(Ae(`FATAL: verify_result is '${m.verifyResult}', expected 'pass'. Run comet-verify first.`));t.stderr.push(Ge(" [OK] Entry state verified")),t.stepsOk+=1,t.stepsTotal+=1;let C=await V(s.projectRoot,f,{label:`Classic archive target ${u}`,expected:"directory"});if(d&&C.exists)throw new fe(Ae(`FATAL: archive target already exists: ${f}`));if(t.stderr.push(Ge(" [OK] Archive target available")),t.stepsOk+=1,t.stepsTotal+=1,i)t.stderr.push(qr(` [DRY-RUN] Would run OpenSpec archive: ${n}`)),t.stepsOk+=1,t.stepsTotal+=1;else if(!m.archived||h.run?.pending){await Nn(s.projectRoot,`${g}/.comet`,"Classic change runtime directory");let k=await dn(g),E=`classic-archive:${n}`,R=await $r(g,k.run.pendingRef),O=!!p||R?.id===E&&R.type==="checkpoint"&&R.ref===n;if(k.run.pending&&k.run.pending!==E)throw new fe(Ae(`FATAL: another action is pending: ${k.run.pending}`));if(!O&&!m.archived&&m.archiveConfirmation!=="confirmed")throw new fe(Ae(`FATAL: archive_confirmation is '${m.archiveConfirmation??"null"}', expected 'confirmed'. Run final archive confirmation first.`));if(!O){let yn={id:E,stepId:k.run.currentStep,type:"checkpoint",ref:n};await Wo(g,k.run.pendingRef,yn),await De(g,{classic:k.classic,run:{...k.run,pending:E,status:"waiting"},unknownKeys:(await B(g)).unknownKeys})}if(!p){let yn=await $l(["archive",n,"--yes"],s.projectRoot);if(t.captureOpenSpec(yn),yn.exitCode!==0)throw new fe("",yn.exitCode)}let b=await _o(n,s.projectRoot,{preferredArchiveName:u});if(!b&&!p&&(b=await _o(n,s.projectRoot,{skipExactCompatibility:!0})),!b)return t.stderr.push(Ae(" [FAIL] OpenSpec archive output not found")),t.stepsTotal+=1,t.stderr.push(""),t.stderr.push(Ge(`Archive complete. ${t.stepsOk}/${t.stepsTotal} steps succeeded.`)),t.toResult(1);f=b.directory,u=wt.basename(b.directory),t.stderr.push(Ge(` [OK] OpenSpec archive completed: ${f}`)),t.stepsOk+=1,t.stepsTotal+=1,await ZE(s.projectRoot,s.specsDir),t.stderr.push(Ge(" [OK] Main specs verified clean")),t.stepsOk+=1,t.stepsTotal+=1,y&&await Zo(t,s.projectRoot,y,u,"status: final",!1),w&&await Zo(t,s.projectRoot,w,u,"",!1);let L=await B(f);if(!L.classic||!L.run)throw new fe(Ae(" [FAIL] archived state projection is incomplete"));let Me={...YE(s.projectRoot,a,f,await hi(f,L.run.artifactsRef)),archive_directory:I(s.projectRoot,f)};await gi(f,L.run.artifactsRef,Me);let Q=vi(O&&L.classic.archiveConfirmation!=="confirmed"?{...L.classic,archiveConfirmation:"confirmed"}:L.classic,"archived"),K={...Q.classic,designDoc:Dr(s.projectRoot,a,f,Q.classic.designDoc),plan:Dr(s.projectRoot,a,f,Q.classic.plan),verificationReport:Dr(s.projectRoot,a,f,Q.classic.verificationReport),handoffContext:Dr(s.projectRoot,a,f,Q.classic.handoffContext)},Se=L.run;(L.run.currentStep!=="completed"||L.run.status!=="completed")&&(Se=await mn(f,K,L.run,{actionId:E,archiveDirectory:I(s.projectRoot,f),event:"archived",source:"comet-archive"})),O&&await QE(f,Se,E);let ss=await We(f,Se.trajectoryRef),Pa=await Do(f,Se.contextRef),kt={runId:Se.runId,stateVersion:Se.iteration,trajectoryOffset:ss.length,contextHash:Pa===null?null:Lh(Pa),artifactsHash:GE(Me),createdAt:new Date().toISOString()};await wi(f,Se.checkpointRef,kt);let os={...Se,pending:null,status:"completed"};await De(f,{classic:K,run:os,unknownKeys:L.unknownKeys}),await Dn(f,{change:u,event:"archived",source:"comet-archive",from:L.classic,to:K,effects:Q.effects}),await Fo(f,os.pendingRef),t.stderr.push(Ge(" [OK] archived: true")),t.stepsOk+=1,t.stepsTotal+=1}else{if(!h.run)throw new fe(Ae("FATAL: archived Classic state is missing its Run projection"));t.stderr.push(Ge(` [OK] OpenSpec archive completed: ${f}`)),t.stepsOk+=1,t.stepsTotal+=1,t.stderr.push(Ge(" [OK] Main specs verified clean")),t.stepsOk+=1,t.stepsTotal+=1,t.stderr.push(Ge(" [OK] archived: true")),t.stepsOk+=1,t.stepsTotal+=1}return i?(y&&await Zo(t,s.projectRoot,y,u,"status: final",!0),w&&await Zo(t,s.projectRoot,w,u,"",!0),t.stderr.push(qr(` [DRY-RUN] Would set archived: true in ${f}/.comet.yaml`)),t.stepsOk+=1,t.stepsTotal+=1,t.stderr.push(qr(" [DRY-RUN] Would verify final archive integrity")),t.stepsOk+=1,t.stepsTotal+=1):(await zE(s.projectRoot,f),t.stderr.push(Ge(" [OK] Final archive integrity verified")),t.stepsOk+=1,t.stepsTotal+=1),i||await Th(s.projectRoot,n),t.stderr.push(""),t.stderr.push(i?qr(`Dry run complete. ${t.stepsOk}/${t.stepsTotal} steps would succeed.`):Ge(`Archive complete. ${t.stepsOk}/${t.stepsTotal} steps succeeded.`)),t.toResult(t.stepsOkMath.max(o,a.sequence),0)+1,timestamp:new Date().toISOString(),runId:n.runId,scope:i.scope,command:i.command,exitCode:i.exitCode,cwd:Dh(e,i.cwd)};return await Je(t,n.trajectoryRef,{sequence:s.sequence,timestamp:s.timestamp,type:"command_check_recorded",runId:s.runId,data:{scope:s.scope,command:s.command,exitCode:s.exitCode,cwd:s.cwd}}),s}async function Fh(e,t,n,i){qh(i);let r=await We(t,n.trajectoryRef);for(let s=r.length-1;s>=0;s-=1){let o=r[s];if(o.runId!==n.runId)continue;let a=eR(e,o);if(a?.scope===i)return a}return null}var Bh={"full.open":["openspec.proposal","openspec.tasks"],"full.design.handoff":["openspec.proposal","openspec.design","openspec.tasks"],"full.design.document":["design.handoff"],"full.build.plan":["openspec.tasks"],"full.build.plan-ready":["build.plan"],"full.build.configure":["build.plan"],"full.build.execute":["build.plan"],"full.build.complete":["build.tasks-complete"],"full.verify.run":["build.tasks-complete"],"full.verify.branch":["verification.report"],"full.archive.confirm":["verification.report"],"full.archive.execute":["archive.confirmed"]};function tR(e){return Bh[e]?Bh[e]:e.endsWith(".open")?["openspec.proposal","openspec.tasks"]:e.endsWith(".build.execute")?[]:e.endsWith(".build.complete")?["build.tasks-complete"]:e.endsWith(".verify.run")?["build.tasks-complete"]:e.endsWith(".verify.branch")?["verification.report"]:e.endsWith(".archive.confirm")?["verification.report"]:e.endsWith(".archive.execute")?["archive.confirmed"]:[]}function Hh(e,t){let n=tR(e),i=n.filter(r=>!Ln(t,r));return{stepId:e,passed:i.length===0,requiredEvidence:n,missingEvidence:i}}function nR(e){switch(e){case"open":return"/comet-open";case"design":return"/comet-design";case"build":return"/comet-build";case"verify":return"/comet-verify";case"archive":return"/comet-archive";default:return null}}async function Kh(e,t){try{let n=await mh(e),i=await et(e,{classic:n.classic,run:n.run,unknownKeys:[]}),r=Pt(n.classic,i);return{name:t,valid:!0,workflow:n.classic.workflow,phase:n.classic.phase,currentStep:r,nextCommand:nR(n.classic.phase),runtimeMode:"engine-projection",runtimeEval:Hh(r,i),evidence:i}}catch(n){return{name:t,valid:!1,workflow:"unknown",phase:"invalid",currentStep:null,nextCommand:null,runtimeMode:"invalid",runtimeEval:null,evidence:[],error:n instanceof Error?n.message:String(n)}}}var Hr=Ve(He(),1);import Uh from"path";import{AsyncLocalStorage as iR}from"async_hooks";import{promises as Jh}from"fs";import Wr from"path";var ta=new iR;function rR(e,t){let n=Wr.relative(e,t);return n===""||!Wr.isAbsolute(n)&&n!==".."&&!n.startsWith(`..${Wr.sep}`)}async function sR(e){let t=Wr.resolve(e.invocationCwd??process.cwd()),n=Wr.resolve(e.projectRoot??await ue(t)),[i,r]=await Promise.all([Jh.realpath(t),Jh.realpath(n)]);if(!rR(r,i))throw new Error(`Classic command invocation cwd is outside the discovered project: ${t}`);return{invocationCwd:t,projectRoot:n}}async function yt(e,t){let n=ta.getStore();if(n)return t(n);let i=await sR(e);return ta.run(i,()=>t(i))}function _(){let e=ta.getStore();if(!e)throw new Error("Classic command project context is unavailable");return e.projectRoot}function Tt(){let e=ta.getStore();if(!e)throw new Error("Classic command invocation context is unavailable");return e.invocationCwd}var oR="\x1B[32m",Fr="\x1B[31m",aR="\x1B[33m",cR="\x1B[0m",lR=["workflow","phase","design_doc","plan","build_mode","isolation","verify_mode","verify_result","verified_at","archived"],uR={workflow:["full","hotfix","tweak"],language:["en","zh-CN"],phase:["open","design","build","verify","archive"],context_compression:["off","beta"],build_mode:["subagent-driven-development","executing-plans","direct"],build_pause:["plan-ready"],subagent_dispatch:["confirmed"],tdd_mode:["tdd","direct"],review_mode:["off","standard","thorough"],isolation:["current","branch","worktree"],verify_mode:["light","full"],auto_transition:["true","false"],verify_result:["pending","pass","fail"],branch_status:["pending","handled"],archive_confirmation:["pending","confirmed"],archived:["true","false"],direct_override:["true","false"],classic_profile:["full","hotfix","tweak"],classic_migration:["1"]},fR=new Set([...ln,...xr,"classic_profile","classic_migration"]);function Bn(e,t){return`${e}${t}${cR}`}function Br(e){return e==null?"":typeof e=="object"?JSON.stringify(e):String(e)}var na=async(e,t)=>yt(t,async()=>{let n=e[0],i=ge(n);if(i)return{exitCode:1,stderr:Bn(Fr,`ERROR: ${i}`)};let r=_(),{directory:s,label:o}=await jn(n,r),a=Uh.join(s,".comet.yaml"),c=[`[VALIDATE] ${o}/.comet.yaml`],l=0,u=0,f=m=>{l+=1,c.push(Bn(Fr,` FAIL: ${m}`))},d=m=>{u+=1,c.push(Bn(aR,` WARN: ${m}`))},p;try{p=await F(r,a,{label:`Classic state ${o}/.comet.yaml`})}catch(m){if(m.code==="ENOENT")return f(".comet.yaml does not exist"),c.push("",Bn(Fr,`${l} error(s), ${u} warning(s) — validation FAILED`)),{exitCode:1,stderr:c.join(` -`)};throw m}let g=(0,Hr.parseDocument)(p);if(g.errors.length>0||!(0,Hr.isMap)(g.contents)){for(let m of g.errors)f(m.message);return(0,Hr.isMap)(g.contents)||f("document root must be a mapping"),c.push("",Bn(Fr,`${l} error(s), ${u} warning(s) — validation FAILED`)),{exitCode:1,stderr:c.join(` -`)}}let h=g.toJS();for(let m of lR)Object.prototype.hasOwnProperty.call(h,m)||f(`missing required field '${m}'`);for(let[m,y]of Object.entries(uR)){if(!Object.prototype.hasOwnProperty.call(h,m))continue;let w=Br(h[m]);if(!w){m==="auto_transition"&&f(`${m}='' is not valid. Expected: ${y.join(" ")}`);continue}y.includes(w)||f(`${m}='${w}' is not valid. Expected: ${y.join(" ")}`)}if(Object.prototype.hasOwnProperty.call(h,"bound_branch")){let m=h.bound_branch;m!==null&&typeof m!="string"&&f(`bound_branch='${Br(m)}' is not a string or null`)}if(Object.prototype.hasOwnProperty.call(h,"verify_failures")){let m=h.verify_failures;(typeof m!="number"||!Number.isInteger(m)||m<0)&&f(`verify_failures='${Br(m)}' is not a non-negative integer`)}for(let m of["design_doc","plan","handoff_context","verification_report"]){let y=Br(h[m]);if(y){if(/^(?:[A-Za-z]:|[\\/]|~)/u.test(y)||y.split(/[\\/]/u).includes("..")){f(`${m}='${y}' must be a relative repository path`);continue}try{await X(r,Uh.resolve(r,y),{label:`${m} artifact pointer`,expected:"file"})||f(`${m}='${y}' does not exist on disk`)}catch(w){f(`${m}='${y}' is unsafe: ${w instanceof Error?w.message:String(w)}`)}}}for(let m of["handoff_hash"]){let y=Br(h[m]);y&&!/^[a-f0-9]{64}$/u.test(y)&&f(`${m}='${y}' is not a sha256 hex digest`)}for(let m of Object.keys(h))fR.has(m)||d(`unknown field '${m}' found`);return c.push(""),l>0?(c.push(Bn(Fr,`${l} error(s), ${u} warning(s) — validation FAILED`)),{exitCode:1,stderr:c.join(` -`)}):(c.push(Bn(oR,`0 errors, ${u} warning(s) — validation PASSED`)),{exitCode:0,stderr:c.join(` -`)})});Nl();ht();import dR from"os";import ia from"path";function mR(e={}){let t=e.cwd??process.cwd(),n=e.homeDir??dR.homedir(),i=[{file:ia.resolve(t,".comet","config.yaml"),source:".comet/config.yaml",scope:"project"},{file:ia.resolve(n,".comet","config.yaml"),source:"~/.comet/config.yaml",scope:"global"}];return i.filter((r,s)=>i.findIndex(o=>o.file===r.file)===s)}async function Kr(e,t={}){for(let n of mR(t)){let i=ia.dirname(ia.dirname(n.file)),r=n.scope==="global"?(await Il(i))?.classic:(await pt(i,{allowPartialProject:!0}))?.value.classic;if(!r||typeof r!="object"||Array.isArray(r))continue;let s=r[e];if(s!=null)return{value:String(s),source:n.source}}return null}ht();var gR="\x1B[32m",wR="\x1B[31m",yR="\x1B[33m",uu="\x1B[0m",vR=["open","design","build","verify","archive"],bR={open:"=== Guard: open → next ===",design:"=== Guard: design → build ===",build:"=== Guard: build → verify ===",verify:"=== Guard: verify → archive ===",archive:"=== Guard: archive completeness ==="},CR={open:" [APPLY] .comet.yaml updated: phase=PLACEHOLDER",design:" [APPLY] .comet.yaml updated: phase=build",build:" [APPLY] .comet.yaml updated: phase=verify, verify_result=pending",verify:" [APPLY] .comet.yaml updated: phase=archive, verify_result=pass"},kR={branchStatus:"branch_status",phase:"phase",verificationReport:"verification_report",verifiedAt:"verified_at",verifyResult:"verify_result"};function Si(e){return`${gR}${e}${uu}`}function jt(e){return`${wR}${e}${uu}`}function SR(e){return`${yR}${e}${uu}`}function ER(e){return kR[e]??String(e)}function RR(e){return e===null?"null":e===void 0?"":typeof e=="object"?JSON.stringify(e):String(e)}var it=class extends Error{constructor(n,i=1){super(n);this.exitCode=i}exitCode},lu=class{stderr=[];diagnostics;toResult(t=0){return{exitCode:t,...this.diagnostics?{stdout:JSON.stringify({diagnostics:this.diagnostics})+` +`)}}if(i)throw new ue("")}var Mh=async e=>{let t=new ru,n=e[0],i=e[1]==="--dry-run";try{VE(n);let r=await le(process.cwd()),s=await Pe(r),o=await Oe(n,s.projectRoot),a=o.directory,c=A(s.projectRoot,a),u=`${new Date().toISOString().slice(0,10)}-${n}`,f=yt.join(s.archiveDir,u);t.stderr.push(`=== Comet Archive: ${n} ===`);let d=o.stateExists,p=d?null:await _o(n,s.projectRoot),g=d?a:p?.directory;if(!g||!await X(s.projectRoot,`${g}/.comet.yaml`,{label:`Classic change ${n} state`,expected:"file"}))throw new ue(Ae(`FATAL: .comet.yaml not found in ${c}/`));p&&(f=p.directory,u=yt.basename(p.directory));let h=await H(g);if(!h.classic)throw new ue(Ae("FATAL: archive requires Classic state"));let m=h.classic,w=m.designDoc,y=m.plan;if(m.phase!=="archive")throw new ue(Ae(`FATAL: phase is '${m.phase}', expected 'archive'`));if(m.verifyResult!=="pass")throw new ue(Ae(`FATAL: verify_result is '${m.verifyResult}', expected 'pass'. Run comet-verify first.`));t.stderr.push(Ge(" [OK] Entry state verified")),t.stepsOk+=1,t.stepsTotal+=1;let b=await V(s.projectRoot,f,{label:`Classic archive target ${u}`,expected:"directory"});if(d&&b.exists)throw new ue(Ae(`FATAL: archive target already exists: ${f}`));if(t.stderr.push(Ge(" [OK] Archive target available")),t.stepsOk+=1,t.stepsTotal+=1,i)t.stderr.push(Wr(` [DRY-RUN] Would run OpenSpec archive: ${n}`)),t.stepsOk+=1,t.stepsTotal+=1;else if(!m.archived||h.run?.pending){await Nn(s.projectRoot,`${g}/.comet`,"Classic change runtime directory");let k=await mn(g),E=`classic-archive:${n}`,R=await Ir(g,k.run.pendingRef),T=!!p||R?.id===E&&R.type==="checkpoint"&&R.ref===n;if(k.run.pending&&k.run.pending!==E)throw new ue(Ae(`FATAL: another action is pending: ${k.run.pending}`));if(!T&&!m.archived&&m.archiveConfirmation!=="confirmed")throw new ue(Ae(`FATAL: archive_confirmation is '${m.archiveConfirmation??"null"}', expected 'confirmed'. Run final archive confirmation first.`));if(!T){let yn={id:E,stepId:k.run.currentStep,type:"checkpoint",ref:n};await Wo(g,k.run.pendingRef,yn),await qe(g,{classic:k.classic,run:{...k.run,pending:E,status:"waiting"},unknownKeys:(await H(g)).unknownKeys})}if(!p){let yn=await Ol(["archive",n,"--yes"],s.projectRoot);if(t.captureOpenSpec(yn),yn.exitCode!==0)throw new ue("",yn.exitCode)}let v=await _o(n,s.projectRoot,{preferredArchiveName:u});if(!v&&!p&&(v=await _o(n,s.projectRoot,{skipExactCompatibility:!0})),!v)return t.stderr.push(Ae(" [FAIL] OpenSpec archive output not found")),t.stepsTotal+=1,t.stderr.push(""),t.stderr.push(Ge(`Archive complete. ${t.stepsOk}/${t.stepsTotal} steps succeeded.`)),t.toResult(1);f=v.directory,u=yt.basename(v.directory),t.stderr.push(Ge(` [OK] OpenSpec archive completed: ${f}`)),t.stepsOk+=1,t.stepsTotal+=1,await tR(s.projectRoot,s.specsDir),t.stderr.push(Ge(" [OK] Main specs verified clean")),t.stepsOk+=1,t.stepsTotal+=1,w&&await Zo(t,s.projectRoot,w,u,"status: final",!1),y&&await Zo(t,s.projectRoot,y,u,"",!1);let j=await H(f);if(!j.classic||!j.run)throw new ue(Ae(" [FAIL] archived state projection is incomplete"));let Le={...XE(s.projectRoot,a,f,await hi(f,j.run.artifactsRef)),archive_directory:A(s.projectRoot,f)};await gi(f,j.run.artifactsRef,Le);let he=vi(T&&j.classic.archiveConfirmation!=="confirmed"?{...j.classic,archiveConfirmation:"confirmed"}:j.classic,"archived"),W={...he.classic,designDoc:Fr(s.projectRoot,a,f,he.classic.designDoc),plan:Fr(s.projectRoot,a,f,he.classic.plan),verificationReport:Fr(s.projectRoot,a,f,he.classic.verificationReport),handoffContext:Fr(s.projectRoot,a,f,he.classic.handoffContext)},Se=j.run;(j.run.currentStep!=="completed"||j.run.status!=="completed")&&(Se=await pn(f,W,j.run,{actionId:E,archiveDirectory:A(s.projectRoot,f),event:"archived",source:"comet-archive"})),T&&await eR(f,Se,E);let os=await De(f,Se.trajectoryRef),qi=await Do(f,Se.contextRef),Bu={runId:Se.runId,stateVersion:Se.iteration,trajectoryOffset:os.length,contextHash:qi===null?null:Lh(qi),artifactsHash:YE(Le),createdAt:new Date().toISOString()};await wi(f,Se.checkpointRef,Bu);let ut={...Se,pending:null,status:"completed"};await qe(f,{classic:W,run:ut,unknownKeys:j.unknownKeys}),await Dn(f,{change:u,event:"archived",source:"comet-archive",from:j.classic,to:W,effects:he.effects}),await Fo(f,ut.pendingRef),t.stderr.push(Ge(" [OK] archived: true")),t.stepsOk+=1,t.stepsTotal+=1}else{if(!h.run)throw new ue(Ae("FATAL: archived Classic state is missing its Run projection"));t.stderr.push(Ge(` [OK] OpenSpec archive completed: ${f}`)),t.stepsOk+=1,t.stepsTotal+=1,t.stderr.push(Ge(" [OK] Main specs verified clean")),t.stepsOk+=1,t.stepsTotal+=1,t.stderr.push(Ge(" [OK] archived: true")),t.stepsOk+=1,t.stepsTotal+=1}return i?(w&&await Zo(t,s.projectRoot,w,u,"status: final",!0),y&&await Zo(t,s.projectRoot,y,u,"",!0),t.stderr.push(Wr(` [DRY-RUN] Would set archived: true in ${f}/.comet.yaml`)),t.stepsOk+=1,t.stepsTotal+=1,t.stderr.push(Wr(" [DRY-RUN] Would verify final archive integrity")),t.stepsOk+=1,t.stepsTotal+=1):(await QE(s.projectRoot,f),t.stderr.push(Ge(" [OK] Final archive integrity verified")),t.stepsOk+=1,t.stepsTotal+=1),i||await Th(s.projectRoot,n),t.stderr.push(""),t.stderr.push(i?Wr(`Dry run complete. ${t.stepsOk}/${t.stepsTotal} steps would succeed.`):Ge(`Archive complete. ${t.stepsOk}/${t.stepsTotal} steps succeeded.`)),t.toResult(t.stepsOkMath.max(o,a.sequence),0)+1,timestamp:new Date().toISOString(),runId:n.runId,scope:i.scope,command:i.command,exitCode:i.exitCode,cwd:Dh(e,i.cwd)};return await Je(t,n.trajectoryRef,{sequence:s.sequence,timestamp:s.timestamp,type:"command_check_recorded",runId:s.runId,data:{scope:s.scope,command:s.command,exitCode:s.exitCode,cwd:s.cwd}}),s}async function Fh(e,t,n,i){qh(i);let r=await De(t,n.trajectoryRef);for(let s=r.length-1;s>=0;s-=1){let o=r[s];if(o.runId!==n.runId)continue;let a=nR(e,o);if(a?.scope===i)return a}return null}var Bh={"full.open":["openspec.proposal","openspec.tasks"],"full.design.handoff":["openspec.proposal","openspec.design","openspec.tasks"],"full.design.document":["design.handoff"],"full.build.plan":["openspec.tasks"],"full.build.plan-ready":["build.plan"],"full.build.configure":["build.plan"],"full.build.execute":["build.plan"],"full.build.complete":["build.tasks-complete"],"full.verify.run":["build.tasks-complete"],"full.verify.branch":["verification.report"],"full.archive.confirm":["verification.report"],"full.archive.execute":["archive.confirmed"]};function iR(e){return Bh[e]?Bh[e]:e.endsWith(".open")?["openspec.proposal","openspec.tasks"]:e.endsWith(".build.execute")?[]:e.endsWith(".build.complete")?["build.tasks-complete"]:e.endsWith(".verify.run")?["build.tasks-complete"]:e.endsWith(".verify.branch")?["verification.report"]:e.endsWith(".archive.confirm")?["verification.report"]:e.endsWith(".archive.execute")?["archive.confirmed"]:[]}function Hh(e,t){let n=iR(e),i=n.filter(r=>!Ln(t,r));return{stepId:e,passed:i.length===0,requiredEvidence:n,missingEvidence:i}}function rR(e){switch(e){case"open":return"/comet-open";case"design":return"/comet-design";case"build":return"/comet-build";case"verify":return"/comet-verify";case"archive":return"/comet-archive";default:return null}}async function Kh(e,t){try{let n=await mh(e),i=await et(e,{classic:n.classic,run:n.run,unknownKeys:[]}),r=$t(n.classic,i);return{name:t,valid:!0,workflow:n.classic.workflow,phase:n.classic.phase,currentStep:r,nextCommand:rR(n.classic.phase),runtimeMode:"engine-projection",runtimeEval:Hh(r,i),evidence:i}}catch(n){return{name:t,valid:!1,workflow:"unknown",phase:"invalid",currentStep:null,nextCommand:null,runtimeMode:"invalid",runtimeEval:null,evidence:[],error:n instanceof Error?n.message:String(n)}}}var Jr=Ve(He(),1);import Uh from"path";import{AsyncLocalStorage as sR}from"async_hooks";import{promises as Jh}from"fs";import Br from"path";var ta=new sR;function oR(e,t){let n=Br.relative(e,t);return n===""||!Br.isAbsolute(n)&&n!==".."&&!n.startsWith(`..${Br.sep}`)}async function aR(e){let t=Br.resolve(e.invocationCwd??process.cwd()),n=Br.resolve(e.projectRoot??await le(t)),[i,r]=await Promise.all([Jh.realpath(t),Jh.realpath(n)]);if(!oR(r,i))throw new Error(`Classic command invocation cwd is outside the discovered project: ${t}`);return{invocationCwd:t,projectRoot:n}}async function vt(e,t){let n=ta.getStore();if(n)return t(n);let i=await aR(e);return ta.run(i,()=>t(i))}function _(){let e=ta.getStore();if(!e)throw new Error("Classic command project context is unavailable");return e.projectRoot}function Lt(){let e=ta.getStore();if(!e)throw new Error("Classic command invocation context is unavailable");return e.invocationCwd}var cR="\x1B[32m",Hr="\x1B[31m",lR="\x1B[33m",uR="\x1B[0m",fR=["workflow","phase","design_doc","plan","build_mode","isolation","verify_mode","verify_result","verified_at","archived"],dR={workflow:["full","hotfix","tweak"],language:["en","zh-CN"],phase:["open","design","build","verify","archive"],context_compression:["off","beta"],build_mode:["subagent-driven-development","executing-plans","direct"],build_pause:["plan-ready"],subagent_dispatch:["confirmed"],tdd_mode:["tdd","direct"],review_mode:["off","standard","thorough"],isolation:["current","branch","worktree"],verify_mode:["light","full"],auto_transition:["true","false"],verify_result:["pending","pass","fail"],branch_status:["pending","handled"],archive_confirmation:["pending","confirmed"],archived:["true","false"],direct_override:["true","false"],classic_profile:["full","hotfix","tweak"],classic_migration:["1"]},mR=new Set([...un,...Or,"classic_profile","classic_migration"]);function Bn(e,t){return`${e}${t}${uR}`}function Kr(e){return e==null?"":typeof e=="object"?JSON.stringify(e):String(e)}var na=async(e,t)=>vt(t,async()=>{let n=e[0],i=ge(n);if(i)return{exitCode:1,stderr:Bn(Hr,`ERROR: ${i}`)};let r=_(),{directory:s,label:o}=await jn(n,r),a=Uh.join(s,".comet.yaml"),c=[`[VALIDATE] ${o}/.comet.yaml`],l=0,u=0,f=m=>{l+=1,c.push(Bn(Hr,` FAIL: ${m}`))},d=m=>{u+=1,c.push(Bn(lR,` WARN: ${m}`))},p;try{p=await B(r,a,{label:`Classic state ${o}/.comet.yaml`})}catch(m){if(m.code==="ENOENT")return f(".comet.yaml does not exist"),c.push("",Bn(Hr,`${l} error(s), ${u} warning(s) — validation FAILED`)),{exitCode:1,stderr:c.join(` +`)};throw m}let g=(0,Jr.parseDocument)(p);if(g.errors.length>0||!(0,Jr.isMap)(g.contents)){for(let m of g.errors)f(m.message);return(0,Jr.isMap)(g.contents)||f("document root must be a mapping"),c.push("",Bn(Hr,`${l} error(s), ${u} warning(s) — validation FAILED`)),{exitCode:1,stderr:c.join(` +`)}}let h=g.toJS();for(let m of fR)Object.prototype.hasOwnProperty.call(h,m)||f(`missing required field '${m}'`);for(let[m,w]of Object.entries(dR)){if(!Object.prototype.hasOwnProperty.call(h,m))continue;let y=Kr(h[m]);if(!y){m==="auto_transition"&&f(`${m}='' is not valid. Expected: ${w.join(" ")}`);continue}w.includes(y)||f(`${m}='${y}' is not valid. Expected: ${w.join(" ")}`)}if(Object.prototype.hasOwnProperty.call(h,"bound_branch")){let m=h.bound_branch;m!==null&&typeof m!="string"&&f(`bound_branch='${Kr(m)}' is not a string or null`)}if(Object.prototype.hasOwnProperty.call(h,"verify_failures")){let m=h.verify_failures;(typeof m!="number"||!Number.isInteger(m)||m<0)&&f(`verify_failures='${Kr(m)}' is not a non-negative integer`)}for(let m of["design_doc","plan","handoff_context","verification_report"]){let w=Kr(h[m]);if(w){if(/^(?:[A-Za-z]:|[\\/]|~)/u.test(w)||w.split(/[\\/]/u).includes("..")){f(`${m}='${w}' must be a relative repository path`);continue}try{await X(r,Uh.resolve(r,w),{label:`${m} artifact pointer`,expected:"file"})||f(`${m}='${w}' does not exist on disk`)}catch(y){f(`${m}='${w}' is unsafe: ${y instanceof Error?y.message:String(y)}`)}}}for(let m of["handoff_hash"]){let w=Kr(h[m]);w&&!/^[a-f0-9]{64}$/u.test(w)&&f(`${m}='${w}' is not a sha256 hex digest`)}for(let m of Object.keys(h))mR.has(m)||d(`unknown field '${m}' found`);return c.push(""),l>0?(c.push(Bn(Hr,`${l} error(s), ${u} warning(s) — validation FAILED`)),{exitCode:1,stderr:c.join(` +`)}):(c.push(Bn(cR,`0 errors, ${u} warning(s) — validation PASSED`)),{exitCode:0,stderr:c.join(` +`)})});Il();gt();import pR from"os";import ia from"path";function hR(e={}){let t=e.cwd??process.cwd(),n=e.homeDir??pR.homedir(),i=[{file:ia.resolve(t,".comet","config.yaml"),source:".comet/config.yaml",scope:"project"},{file:ia.resolve(n,".comet","config.yaml"),source:"~/.comet/config.yaml",scope:"global"}];return i.filter((r,s)=>i.findIndex(o=>o.file===r.file)===s)}async function Ur(e,t={}){for(let n of hR(t)){let i=ia.dirname(ia.dirname(n.file)),r=n.scope==="global"?(await Al(i))?.classic:(await ht(i,{allowPartialProject:!0}))?.value.classic;if(!r||typeof r!="object"||Array.isArray(r))continue;let s=r[e];if(s!=null)return{value:String(s),source:n.source}}return null}gt();var yR="\x1B[32m",vR="\x1B[31m",bR="\x1B[33m",lu="\x1B[0m",CR=["open","design","build","verify","archive"],kR={open:"=== Guard: open → next ===",design:"=== Guard: design → build ===",build:"=== Guard: build → verify ===",verify:"=== Guard: verify → archive ===",archive:"=== Guard: archive completeness ==="},SR={open:" [APPLY] .comet.yaml updated: phase=PLACEHOLDER",design:" [APPLY] .comet.yaml updated: phase=build",build:" [APPLY] .comet.yaml updated: phase=verify, verify_result=pending",verify:" [APPLY] .comet.yaml updated: phase=archive, verify_result=pass"},ER={branchStatus:"branch_status",phase:"phase",verificationReport:"verification_report",verifiedAt:"verified_at",verifyResult:"verify_result"};function Si(e){return`${yR}${e}${lu}`}function Mt(e){return`${vR}${e}${lu}`}function RR(e){return`${bR}${e}${lu}`}function _R(e){return ER[e]??String(e)}function xR(e){return e===null?"null":e===void 0?"":typeof e=="object"?JSON.stringify(e):String(e)}var it=class extends Error{constructor(n,i=1){super(n);this.exitCode=i}exitCode},cu=class{stderr=[];diagnostics;toResult(t=0){return{exitCode:t,...this.diagnostics?{stdout:JSON.stringify({diagnostics:this.diagnostics})+` `}:{},...this.stderr.length>0?{stderr:this.stderr.join(` `)+` -`}:{}}}};async function oe(e){let t=_();return X(t,e,{label:`Classic guard path ${U.relative(t,U.resolve(t,e)).replaceAll("\\","/")}`})}async function de(e){let t=_();return In(t,e,`Classic guard file ${U.relative(t,U.resolve(t,e)).replaceAll("\\","/")}`)}function _R(e){let t=ge(e);if(t)throw new it(jt(`ERROR: ${t}`))}async function xR(e){return(await jn(e,_())).directory}async function H(e,t){let n=U.join(e,".comet.yaml"),i=(0,Yh.parseDocument)(await F(_(),n,{label:`Classic state ${e}/.comet.yaml`}),{uniqueKeys:!1});if(i.errors.length>0)throw new it(`ERROR: Invalid .comet.yaml: ${i.errors[0].message}`);let s=i.toJS()[t];return s==null?"":typeof s=="object"?JSON.stringify(s):String(s)}async function PR(e,t){let n=await H(t,e);return n&&n!=="null"?n:(await Kr(e,{cwd:_()}))?.value??""}async function OR(e){let t=await PR("language",e);if(!t)return"en";if(t==="en"||t==="zh-CN")return t;throw new Error(`configured language '${t}' is invalid; expected en or zh-CN.`)}function $R(e){let t=[],n=!1;for(let i of e.split(/\r?\n/u)){if(/^\s*```/u.test(i)){n=!n;continue}n||t.push(i)}return t.join(` -`)}function AR(e){return e.match(/[\u4e00-\u9fff]/gu)?.length??0}function IR(e){return e.match(/[A-Za-z][A-Za-z0-9_-]{2,}/gu)?.length??0}async function vt(e,t){let n=await OR(e),i=$R(await F(_(),t,{label:`Classic language-check artifact ${t}`})),r=AR(i),s=IR(i);return n==="zh-CN"&&r<20&&s>=20?x(`configured language is zh-CN, but ${t} appears to be English-dominant (cjk_chars=${r}, english_words=${s}). +`}:{}}}};async function se(e){let t=_();return X(t,e,{label:`Classic guard path ${U.relative(t,U.resolve(t,e)).replaceAll("\\","/")}`})}async function fe(e){let t=_();return In(t,e,`Classic guard file ${U.relative(t,U.resolve(t,e)).replaceAll("\\","/")}`)}function PR(e){let t=ge(e);if(t)throw new it(Mt(`ERROR: ${t}`))}async function OR(e){return(await jn(e,_())).directory}async function K(e,t){let n=U.join(e,".comet.yaml"),i=(0,Yh.parseDocument)(await B(_(),n,{label:`Classic state ${e}/.comet.yaml`}),{uniqueKeys:!1});if(i.errors.length>0)throw new it(`ERROR: Invalid .comet.yaml: ${i.errors[0].message}`);let s=i.toJS()[t];return s==null?"":typeof s=="object"?JSON.stringify(s):String(s)}async function $R(e,t){let n=await K(t,e);return n&&n!=="null"?n:(await Ur(e,{cwd:_()}))?.value??""}async function AR(e){let t=await $R("language",e);if(!t)return"en";if(t==="en"||t==="zh-CN")return t;throw new Error(`configured language '${t}' is invalid; expected en or zh-CN.`)}function IR(e){let t=[],n=!1;for(let i of e.split(/\r?\n/u)){if(/^\s*```/u.test(i)){n=!n;continue}n||t.push(i)}return t.join(` +`)}function NR(e){return e.match(/[\u4e00-\u9fff]/gu)?.length??0}function TR(e){return e.match(/[A-Za-z][A-Za-z0-9_-]{2,}/gu)?.length??0}async function bt(e,t){let n=await AR(e),i=IR(await B(_(),t,{label:`Classic language-check artifact ${t}`})),r=NR(i),s=TR(i);return n==="zh-CN"&&r<20&&s>=20?x(`configured language is zh-CN, but ${t} appears to be English-dominant (cjk_chars=${r}, english_words=${s}). Next: regenerate or rewrite this artifact in Chinese while preserving necessary technical terms.`):n==="en"&&r>20&&r>s?x(`configured language is en, but ${t} appears to be Chinese-dominant (cjk_chars=${r}, english_words=${s}). -Next: regenerate or rewrite this artifact in English while preserving necessary technical terms.`):N()}async function zh(e){return Vh("sha256").update(await Ro(_(),e,{label:`Classic handoff source ${e}`})).digest("hex")}async function fu(e){let t=I(_(),e),n=[`${t}/proposal.md`,`${t}/design.md`,`${t}/tasks.md`],i=`${t}/specs`;if(await oe(i)){let r=await V(_(),i,{label:`Classic delta-spec directory ${i}`,expected:"directory"});for(let s of(await hR.readdir(r.target)).sort()){let o=`${i}/${s}/spec.md`;await oe(o)&&n.push(o)}}return n}async function NR(e){let t=[];for(let n of await fu(e))await oe(n)&&t.push(`path:${n}`,`sha256:${await zh(n)}`);return Vh("sha256").update(t.join(` -`)).digest("hex")}async function TR(e,t){if(!await oe(e))throw new it(jt(`FATAL: change directory not found: ${e}`));if(!await oe(U.join(e,".comet.yaml")))throw new it(jt(`FATAL: .comet.yaml not found in ${e}`));await V(_(),U.join(e,".comet"),{label:`Classic runtime directory for ${t}`,expected:"directory"});let n=await na([t],{json:!1});if(n.exitCode!==0)throw n.stderr&&process.stderr.write(n.stderr.endsWith(` +Next: regenerate or rewrite this artifact in English while preserving necessary technical terms.`):I()}async function zh(e){return Vh("sha256").update(await Ro(_(),e,{label:`Classic handoff source ${e}`})).digest("hex")}async function uu(e){let t=A(_(),e),n=[`${t}/proposal.md`,`${t}/design.md`,`${t}/tasks.md`],i=`${t}/specs`;if(await se(i)){let r=await V(_(),i,{label:`Classic delta-spec directory ${i}`,expected:"directory"});for(let s of(await wR.readdir(r.target)).sort()){let o=`${i}/${s}/spec.md`;await se(o)&&n.push(o)}}return n}async function jR(e){let t=[];for(let n of await uu(e))await se(n)&&t.push(`path:${n}`,`sha256:${await zh(n)}`);return Vh("sha256").update(t.join(` +`)).digest("hex")}async function LR(e,t){if(!await se(e))throw new it(Mt(`FATAL: change directory not found: ${e}`));if(!await se(U.join(e,".comet.yaml")))throw new it(Mt(`FATAL: .comet.yaml not found in ${e}`));await V(_(),U.join(e,".comet"),{label:`Classic runtime directory for ${t}`,expected:"directory"});let n=await na([t],{json:!1});if(n.exitCode!==0)throw n.stderr&&process.stderr.write(n.stderr.endsWith(` `)?n.stderr:`${n.stderr} -`),new it(jt("FATAL: .comet.yaml schema validation failed"));let i=await B(e),r=Array.from(new Set(i.unknownKeys)).sort();if(r.length>0)throw new it(jt(`FATAL: .comet.yaml has unknown field(s): ${r.join(", ")}`))}function jR(e,t){if(t.passed){if(e.stderr.push(Si(` [PASS] ${t.description}`)),t.detail)for(let n of t.detail.split(` -`))e.stderr.push(Si(` ${n}`))}else if(e.stderr.push(jt(` [FAIL] ${t.description}`)),t.detail)for(let n of t.detail.split(` -`))e.stderr.push(jt(` ${n}`))}function A(e,t){return async()=>{try{let n=await t();return{description:e,passed:n.passed,detail:("detail"in n?n.detail:"")??""}}catch(n){return{description:e,passed:!1,detail:n instanceof Error?n.message:String(n)}}}}function N(e){return{passed:!0,...e?{detail:e}:{}}}function x(e){return{passed:!1,detail:e}}async function Ei(e,t){let n=!1;for(let i of t){let r=await i();jR(e,r),r.passed||(n=!0)}return n}var LR=["package.json with a build script","pom.xml","Cargo.toml"];async function MR(e){try{let t=await pt(_(),{allowPartialProject:!0});return t?Object.prototype.hasOwnProperty.call(t.value,e):!1}catch(t){throw new Error(`.comet/config.yaml is invalid YAML (${t instanceof Error?t.message:String(t)}); cannot check for removed "${e}" field. Fix the config and retry.`,{cause:t})}}function qR(e){return{status:1,output:`${e} has been removed from .comet/config.yaml. Delete this field and run any required ${e==="build_command"?"build":"verification"} command manually before retrying.`}}function DR(e){let t=pR(e,{shell:!0,cwd:Tt(),encoding:"utf8",timeout:3e5});return{status:t.status??1,output:`${t.stdout??""}${t.stderr??""}`.replace(/\n+$/u,"")}}function Jr(e){return U.resolve(Tt(),e)}async function WR(){let e=Jr("package.json");return await oe(e)&&typeof JSON.parse(await F(_(),e,{label:"package.json"})).scripts?.build=="string"?"npm run build":await oe(Jr("pom.xml"))?process.platform==="win32"?await oe(Jr("mvnw.cmd"))?"mvnw.cmd compile -q":"mvn.cmd compile -q":await oe(Jr("mvnw"))?"./mvnw compile -q":"mvn compile -q":await oe(Jr("Cargo.toml"))?"cargo build":null}function Gh(e){return`Evidence: recorded command-check at ${e.timestamp}; command: ${e.command}; cwd: ${e.cwd}`}function au(e,t,n){return`comet state record-check ${e} ${t} --command "${n}" --exit-code 0`}async function Xh(e,t,n,i){if(process.env.COMET_SKIP_BUILD==="1")return{status:0,output:"SKIPPED via COMET_SKIP_BUILD=1"};let r=i==="build"?["build_command"]:["verify_command","build_command"];for(let a of r)if(await MR(a))return qR(a);let s=i==="build"?await WR():null;if(s)return DR(s);let o=await Fh(_(),e,n,i);return o?o.exitCode!==0?{status:o.exitCode,output:`Latest recorded ${i} check failed with exit code ${o.exitCode}. +`),new it(Mt("FATAL: .comet.yaml schema validation failed"));let i=await H(e),r=Array.from(new Set(i.unknownKeys)).sort();if(r.length>0)throw new it(Mt(`FATAL: .comet.yaml has unknown field(s): ${r.join(", ")}`))}function MR(e,t){if(t.passed){if(e.stderr.push(Si(` [PASS] ${t.description}`)),t.detail)for(let n of t.detail.split(` +`))e.stderr.push(Si(` ${n}`))}else if(e.stderr.push(Mt(` [FAIL] ${t.description}`)),t.detail)for(let n of t.detail.split(` +`))e.stderr.push(Mt(` ${n}`))}function $(e,t){return async()=>{try{let n=await t();return{description:e,passed:n.passed,detail:("detail"in n?n.detail:"")??""}}catch(n){return{description:e,passed:!1,detail:n instanceof Error?n.message:String(n)}}}}function I(e){return{passed:!0,...e?{detail:e}:{}}}function x(e){return{passed:!1,detail:e}}async function Ei(e,t){let n=!1;for(let i of t){let r=await i();MR(e,r),r.passed||(n=!0)}return n}var qR=["package.json with a build script","pom.xml","Cargo.toml"];async function DR(e){try{let t=await ht(_(),{allowPartialProject:!0});return t?Object.prototype.hasOwnProperty.call(t.value,e):!1}catch(t){throw new Error(`.comet/config.yaml is invalid YAML (${t instanceof Error?t.message:String(t)}); cannot check for removed "${e}" field. Fix the config and retry.`,{cause:t})}}function WR(e){return{status:1,output:`${e} has been removed from .comet/config.yaml. Delete this field and run any required ${e==="build_command"?"build":"verification"} command manually before retrying.`}}function FR(e){let t=gR(e,{shell:!0,cwd:Lt(),encoding:"utf8",timeout:3e5});return{status:t.status??1,output:`${t.stdout??""}${t.stderr??""}`.replace(/\n+$/u,"")}}function Gr(e){return U.resolve(Lt(),e)}async function BR(){let e=Gr("package.json");return await se(e)&&typeof JSON.parse(await B(_(),e,{label:"package.json"})).scripts?.build=="string"?"npm run build":await se(Gr("pom.xml"))?process.platform==="win32"?await se(Gr("mvnw.cmd"))?"mvnw.cmd compile -q":"mvn.cmd compile -q":await se(Gr("mvnw"))?"./mvnw compile -q":"mvn compile -q":await se(Gr("Cargo.toml"))?"cargo build":null}function Gh(e){return`Evidence: recorded command-check at ${e.timestamp}; command: ${e.command}; cwd: ${e.cwd}`}function ou(e,t,n){return`comet state record-check ${e} ${t} --command "${n}" --exit-code 0`}async function Xh(e,t,n,i){if(process.env.COMET_SKIP_BUILD==="1")return{status:0,output:"SKIPPED via COMET_SKIP_BUILD=1"};let r=i==="build"?["build_command"]:["verify_command","build_command"];for(let a of r)if(await DR(a))return WR(a);let s=i==="build"?await BR():null;if(s)return FR(s);let o=await Fh(_(),e,n,i);return o?o.exitCode!==0?{status:o.exitCode,output:`Latest recorded ${i} check failed with exit code ${o.exitCode}. ${Gh(o)} Next: rerun the command successfully, then record it with: -${au(t,i,o.command)}`}:{status:0,output:Gh(o)}:{status:1,output:i==="build"?`No inferred build command or recorded build check. Detection searched: ${LR.join(", ")}. +${ou(t,i,o.command)}`}:{status:0,output:Gh(o)}:{status:1,output:i==="build"?`No inferred build command or recorded build check. Detection searched: ${qR.join(", ")}. Next: run the required command, then record it with: -${au(t,i,"")}`:`No recorded verify check. +${ou(t,i,"")}`:`No recorded verify check. Next: run the required verification command, then record it with: -${au(t,i,"")}`}}async function du(e){let t=U.join(e,"tasks.md");if(!await oe(t))return x(`tasks.md is missing at ${t} -Next: restore or create tasks.md for this change before leaving build.`);let n=await F(_(),t,{label:`Classic tasks ${t}`});if(!/- \[x\]/u.test(n))return x(`tasks.md has no completed tasks. +${ou(t,i,"")}`}}async function fu(e){let t=U.join(e,"tasks.md");if(!await se(t))return x(`tasks.md is missing at ${t} +Next: restore or create tasks.md for this change before leaving build.`);let n=await B(_(),t,{label:`Classic tasks ${t}`});if(!/- \[x\]/u.test(n))return x(`tasks.md has no completed tasks. Next: complete implementation tasks and mark them with '- [x]'.`);let i=n.split(/\r?\n/u).map((r,s)=>({line:r,number:s+1})).filter(r=>/^- \[ \]/u.test(r.line));return i.length>0?x(`Unfinished tasks: ${i.map(r=>`${r.number}:${r.line}`).join(` `)} -Next: complete or explicitly remove unfinished tasks, then mark tasks.md with '- [x]'.`):N()}async function FR(e){let t=U.join(e,"tasks.md");return await oe(t)?/- \[/u.test(await F(_(),t,{label:`Classic tasks ${t}`})):!1}async function BR(e){let t=await H(e,"plan");if(!t||t==="null")return N();if(!await oe(t))return x(`plan file is missing at ${t} -Next: restore the Superpowers plan file or update .comet.yaml plan before leaving build.`);let i=(await F(_(),t,{label:`Classic plan ${t}`})).split(/\r?\n/u).map((r,s)=>({line:r,number:s+1})).filter(r=>/^\s*- \[ \]/u.test(r.line));return i.length>0?x(`Unfinished Superpowers plan tasks: +Next: complete or explicitly remove unfinished tasks, then mark tasks.md with '- [x]'.`):I()}async function HR(e){let t=U.join(e,"tasks.md");return await se(t)?/- \[/u.test(await B(_(),t,{label:`Classic tasks ${t}`})):!1}async function KR(e){let t=await K(e,"plan");if(!t||t==="null")return I();if(!await se(t))return x(`plan file is missing at ${t} +Next: restore the Superpowers plan file or update .comet.yaml plan before leaving build.`);let i=(await B(_(),t,{label:`Classic plan ${t}`})).split(/\r?\n/u).map((r,s)=>({line:r,number:s+1})).filter(r=>/^\s*- \[ \]/u.test(r.line));return i.length>0?x(`Unfinished Superpowers plan tasks: ${i.map(r=>`${r.number}:${r.line}`).join(` `)} -Next: check off corresponding completed plan tasks, then commit the plan update.`):N()}async function mu(e,t){let n;try{n=await At(e,{heal:!0,cwd:Tt()})}catch(i){throw new it(`ERROR: ${i instanceof Error?i.message:String(i)}`)}switch(n.status){case"drift":return x(zo(t,n.boundBranch,n.currentBranch));case"unbound-detached":return x(It(t));case"healed":return N(`bound_branch lazily set to ${n.branch}`);case"needs-heal":case"ok":case"not-applicable":return N();default:{let i=n;throw new Error(`unhandled branch binding status: ${JSON.stringify(i)}`)}}}async function HR(e,t){let n=await H(e,"isolation");return n==="current"||n==="branch"||n==="worktree"?N():x(`isolation must be current, branch, or worktree, got '${n||"null"}' +Next: check off corresponding completed plan tasks, then commit the plan update.`):I()}async function du(e,t){let n;try{n=await Nt(e,{heal:!0,cwd:Lt()})}catch(i){throw new it(`ERROR: ${i instanceof Error?i.message:String(i)}`)}switch(n.status){case"drift":return x(zo(t,n.boundBranch,n.currentBranch));case"unbound-detached":return x(Tt(t));case"healed":return I(`bound_branch lazily set to ${n.branch}`);case"needs-heal":case"ok":case"not-applicable":return I();default:{let i=n;throw new Error(`unhandled branch binding status: ${JSON.stringify(i)}`)}}}async function JR(e,t){let n=await K(e,"isolation");return n==="current"||n==="branch"||n==="worktree"?I():x(`isolation must be current, branch, or worktree, got '${n||"null"}' Next: choose a valid workspace mode, prepare it when needed, then run: - comet state set ${t} isolation `)}async function KR(e,t){let n=await H(e,"build_mode");return["subagent-driven-development","executing-plans","direct"].includes(n)?N():x(`build_mode must be selected before leaving build, got '${n||"null"}' + comet state set ${t} isolation `)}async function UR(e,t){let n=await K(e,"build_mode");return["subagent-driven-development","executing-plans","direct"].includes(n)?I():x(`build_mode must be selected before leaving build, got '${n||"null"}' Next: ask the user to choose an execution mode, then run: - comet state set ${t} build_mode `)}async function JR(e){let t=await H(e,"workflow"),n=await H(e,"build_mode"),i=await H(e,"direct_override");return n!=="direct"||t==="hotfix"||t==="tweak"||i==="true"?N():x(`build_mode=direct is only allowed for hotfix/tweak unless direct_override: true is recorded -Next: choose executing-plans or subagent-driven-development, or stop and ask the user for an explicit direct override.`)}async function UR(e,t){let n=await H(e,"build_mode"),i=await H(e,"subagent_dispatch");return n!=="subagent-driven-development"||i==="confirmed"?N():x(`subagent_dispatch must be confirmed before using build_mode=subagent-driven-development + comet state set ${t} build_mode `)}async function GR(e){let t=await K(e,"workflow"),n=await K(e,"build_mode"),i=await K(e,"direct_override");return n!=="direct"||t==="hotfix"||t==="tweak"||i==="true"?I():x(`build_mode=direct is only allowed for hotfix/tweak unless direct_override: true is recorded +Next: choose executing-plans or subagent-driven-development, or stop and ask the user for an explicit direct override.`)}async function VR(e,t){let n=await K(e,"build_mode"),i=await K(e,"subagent_dispatch");return n!=="subagent-driven-development"||i==="confirmed"?I():x(`subagent_dispatch must be confirmed before using build_mode=subagent-driven-development Next: record the selected subagent-driven execution, then run: - comet state set ${t} subagent_dispatch confirmed`)}async function GR(e,t){let n=await H(e,"workflow");if(n==="hotfix"||n==="tweak")return N();let i=await H(e,"tdd_mode");return i==="tdd"||i==="direct"?N():x(`tdd_mode must be tdd or direct for full workflow, got '${i||"null"}' + comet state set ${t} subagent_dispatch confirmed`)}async function YR(e,t){let n=await K(e,"workflow");if(n==="hotfix"||n==="tweak")return I();let i=await K(e,"tdd_mode");return i==="tdd"||i==="direct"?I():x(`tdd_mode must be tdd or direct for full workflow, got '${i||"null"}' Next: ask the user to choose TDD enforcement level, then run: - comet state set ${t} tdd_mode `)}async function VR(e,t){let n=await H(e,"workflow");if(n==="hotfix"||n==="tweak")return N();let i=await H(e,"review_mode");return i==="off"||i==="standard"||i==="thorough"?N():x(`review_mode must be off, standard, or thorough before leaving build, got '${i||"null"}' + comet state set ${t} tdd_mode `)}async function zR(e,t){let n=await K(e,"workflow");if(n==="hotfix"||n==="tweak")return I();let i=await K(e,"review_mode");return i==="off"||i==="standard"||i==="thorough"?I():x(`review_mode must be off, standard, or thorough before leaving build, got '${i||"null"}' Next: ask the user to choose review strength, then run: - comet state set ${t} review_mode `)}async function YR(e){let t=await H(e,"verification_report");return!!t&&t!=="null"&&await oe(t)}async function zR(e){return await H(e,"branch_status")==="handled"}async function XR(e){return await H(e,"archived")==="true"}async function cu(e,t,n){let i=(await F(_(),e,{label:`Classic Design Doc ${e}`})).replace(/^\uFEFF/u,""),r=!1;for(let s of i.split(/\r?\n/u)){if(!r){s==="---"&&(r=!0);continue}if(s==="---")break;if(new RegExp(`^${t}: ['"]?${n}['"]?\\s*$`,"u").test(s))return!0}return!1}async function QR(e,t){let n=await H(e,"design_doc");return n&&n!=="null"&&await oe(n)?N():x(`design_doc must point to an existing Superpowers Design Doc for full workflow before leaving design. -Next: create the Design Doc and run: comet state set ${t} design_doc `)}async function ZR(e,t){let n=await H(e,"handoff_context"),i=await H(e,"handoff_hash");if(!n||n==="null")return x(`handoff_context is missing from .comet.yaml -Next: run node "$COMET_HANDOFF" ${t} design --write before invoking Superpowers.`);if(!await de(n))return x(`handoff_context does not point to a non-empty file: ${n} + comet state set ${t} review_mode `)}async function XR(e){let t=await K(e,"verification_report");return!!t&&t!=="null"&&await se(t)}async function QR(e){return await K(e,"branch_status")==="handled"}async function ZR(e){return await K(e,"archived")==="true"}async function au(e,t,n){let i=(await B(_(),e,{label:`Classic Design Doc ${e}`})).replace(/^\uFEFF/u,""),r=!1;for(let s of i.split(/\r?\n/u)){if(!r){s==="---"&&(r=!0);continue}if(s==="---")break;if(new RegExp(`^${t}: ['"]?${n}['"]?\\s*$`,"u").test(s))return!0}return!1}async function e_(e,t){let n=await K(e,"design_doc");return n&&n!=="null"&&await se(n)?I():x(`design_doc must point to an existing Superpowers Design Doc for full workflow before leaving design. +Next: create the Design Doc and run: comet state set ${t} design_doc `)}async function t_(e,t){let n=await K(e,"handoff_context"),i=await K(e,"handoff_hash");if(!n||n==="null")return x(`handoff_context is missing from .comet.yaml +Next: run node "$COMET_HANDOFF" ${t} design --write before invoking Superpowers.`);if(!await fe(n))return x(`handoff_context does not point to a non-empty file: ${n} Next: regenerate the design handoff with comet handoff ${t} design --write.`);if(!/^[a-f0-9]{64}$/u.test(i))return x(`handoff_hash is missing or invalid: ${i||"null"} -Next: regenerate the design handoff with comet handoff ${t} design --write.`);let r=await NR(e);if(r!==i)return x(`OpenSpec artifacts changed after handoff was generated. +Next: regenerate the design handoff with comet handoff ${t} design --write.`);let r=await jR(e);if(r!==i)return x(`OpenSpec artifacts changed after handoff was generated. Expected handoff_hash: ${i} Actual handoff_hash: ${r} -Next: run comet handoff ${t} design --write so Superpowers receives the current OpenSpec context.`);let s=`${n.replace(/\.json$/u,"")}.md`;return await de(s)?N():x(`design handoff markdown is missing or empty: ${s} -Next: regenerate the design handoff with comet handoff ${t} design --write.`)}async function e_(e){let t=await H(e,"handoff_context");if(!t||t==="null")return x("handoff_context is missing from .comet.yaml");let n=`${t.replace(/\.json$/u,"")}.md`;if(!await de(n))return x(`design handoff markdown is missing or empty: ${n}`);let i=await F(_(),n,{label:`Classic handoff markdown ${n}`}),r=new Set(i.split(/\r?\n/u)),s=[];/^Generated-by: comet-handoff\.sh$/mu.test(i)||s.push("handoff markdown is missing Generated-by marker"),/^- Mode: (compact|full|beta)$/mu.test(i)||s.push("handoff markdown is missing Mode marker");for(let o of await fu(e))await oe(o)&&(r.has(`- Source: ${o}`)||s.push(`handoff markdown is missing source reference: ${o}`),r.has(`- SHA256: ${await zh(o)}`)||s.push(`handoff markdown is missing current sha256 for: ${o}`));return s.length===0?N():x(s.join(` -`))}async function Qh(e){return await H(e,"context_compression")||"off"}async function t_(e){if(await Qh(e)!=="beta")return N();let t=await H(e,"handoff_context");if(!t||t==="null")return x("handoff_context is missing from .comet.yaml");if(!await de(t))return x(`spec-context.json is missing or empty: ${t}`);let n=await F(_(),t,{label:`Classic handoff context ${t}`}),i=[],r;try{r=JSON.parse(n)}catch(a){return x(`spec-context.json invalid JSON: ${a instanceof Error?a.message:String(a)}`)}if(!r||typeof r!="object"||Array.isArray(r))return x("spec-context.json root must be an object");let s=r;typeof s.change!="string"&&i.push("spec-context.json missing 'change' field"),typeof s.phase!="string"&&i.push("spec-context.json missing 'phase' field"),s.mode!=="beta"&&i.push("spec-context.json mode is not beta"),typeof s.context_hash!="string"&&i.push("spec-context.json missing 'context_hash' field"),Array.isArray(s.files)||i.push("spec-context.json missing 'files' field");let o=Array.isArray(s.files)?s.files.filter(a=>!!a&&typeof a=="object"&&!Array.isArray(a)):[];for(let a of await fu(e))await oe(a)&&(o.some(c=>c.path===a&&typeof c.sha256=="string")||i.push(`spec-context.json missing source file reference: ${a}`));return i.length===0?N():x(i.join(` -`))}async function n_(e,t){let n=await H(t,"workflow"),i=[A("proposal.md exists and non-empty",async()=>await de(U.join(t,"proposal.md"))?N():x("")),A("proposal.md matches configured language",()=>vt(t,U.join(t,"proposal.md"))),A("tasks.md exists and non-empty",async()=>await de(U.join(t,"tasks.md"))?N():x("")),A("tasks.md matches configured language",()=>vt(t,U.join(t,"tasks.md"))),A("tasks.md has at least one task",async()=>await FR(t)?N():x(""))];return n==="full"&&i.splice(1,0,A("design.md exists and non-empty",async()=>await de(U.join(t,"design.md"))?N():x("")),A("design.md matches configured language",()=>vt(t,U.join(t,"design.md")))),Ei(e,i)}async function i_(e,t,n){let i=await H(t,"design_doc"),r=await H(t,"workflow"),s=[A("proposal.md exists",async()=>await de(U.join(t,"proposal.md"))?N():x("")),A("proposal.md matches configured language",()=>vt(t,U.join(t,"proposal.md"))),A("design.md exists",async()=>await de(U.join(t,"design.md"))?N():x("")),A("design.md matches configured language",()=>vt(t,U.join(t,"design.md"))),A("tasks.md exists",async()=>await de(U.join(t,"tasks.md"))?N():x("")),A("tasks.md matches configured language",()=>vt(t,U.join(t,"tasks.md"))),A("design handoff context exists",()=>ZR(t,n)),A("design handoff markdown is traceable",()=>e_(t))];await Qh(t)==="beta"&&s.push(A("beta spec-context.json is structurally valid",()=>t_(t))),r==="full"&&s.push(A("design_doc is recorded for full workflow",()=>QR(t,n)));let o=await Ei(e,s);return i&&i!=="null"?o=await Ei(e,[A(`Design Doc (${i}) exists`,async()=>await de(i)?N():x("")),A("Design Doc matches configured language",()=>vt(t,i)),A("Design Doc frontmatter links current change",async()=>await de(i)&&await cu(i,"comet_change",n)?N():x("")),A("Design Doc declares technical design role",async()=>await de(i)&&await cu(i,"role","technical-design")?N():x("")),A("Design Doc declares OpenSpec as canonical spec",async()=>await de(i)&&await cu(i,"canonical_spec","openspec")?N():x(""))])||o:r!=="full"&&e.stderr.push(SR(" [WARN] No design_doc recorded in .comet.yaml (optional for hotfix/tweak)")),o}async function r_(e,t,n,i){return Ei(e,[A("bound branch matches workspace mode",()=>mu(t,n)),A("isolation selected",()=>HR(t,n)),A("build_mode selected",()=>KR(t,n)),A("build_mode allowed for workflow",()=>JR(t)),A("subagent dispatch confirmed",()=>UR(t,n)),A("tdd_mode selected",()=>GR(t,n)),A("review_mode selected",()=>VR(t,n)),A("tasks.md all tasks checked",()=>du(t)),A("Superpowers plan all tasks checked",()=>BR(t)),A("proposal.md exists",async()=>await de(U.join(t,"proposal.md"))?N():x("")),A("proposal.md matches configured language",()=>vt(t,U.join(t,"proposal.md"))),A("Superpowers plan matches configured language",async()=>{let r=await H(t,"plan");return!r||r==="null"||!await oe(r)?N():vt(t,r)}),A("Build passes",async()=>{let r=await Xh(t,n,i,"build");return r.status===0?N(r.output):x(r.output)})])}async function s_(e,t,n,i){return Ei(e,[A("bound branch matches workspace mode",()=>mu(t,n)),A("tasks.md all tasks checked",()=>du(t)),A("Verification passes",async()=>{let r=await Xh(t,n,i,"verify");return r.status===0?N(r.output):x(r.output)}),A("verification_report exists",async()=>await YR(t)?N():x("")),A("verification_report matches configured language",async()=>{let r=await H(t,"verification_report");return!r||r==="null"||!await oe(r)?N():vt(t,r)})])}async function o_(e,t,n){return Ei(e,[A("bound branch matches workspace mode",()=>mu(t,n)),A("archived is true",async()=>await XR(t)?N():x("")),A("proposal.md exists",async()=>await de(U.join(t,"proposal.md"))?N():x("")),A("design.md exists",async()=>await de(U.join(t,"design.md"))?N():x("")),A("tasks.md all tasks checked",()=>du(t)),A("branch_status=handled",async()=>await zR(t)?N():x(""))])}async function a_(e,t,n,i){let r=hh[i];if(!r)return;let s=await dn(n),o=vi(s.classic,r);await mn(n,o.classic,s.run,{event:r,phase:i,source:"comet-guard"}),await Dn(n,{change:t,event:r,source:"comet-guard",from:s.classic,to:o.classic,effects:o.effects});for(let l of o.effects)e.stderr.push(Si(`[SET] ${ER(l.field)}=${RR(l.to)}`));e.stderr.push(Si(`[TRANSITION] ${r}`));let a=CR[i],c=i==="open"?a.replace("PLACEHOLDER",o.classic.phase):a;e.stderr.push(Si(c))}var Zh=async(e,t)=>yt(t,async()=>{let n=new lu,[i,r,s]=e;try{if(_R(i),!r||!vR.includes(r))throw new it(`${jt(`Unknown phase: ${r??""}`)} -Valid phases: open, design, build, verify, archive`);await Pe(_());let o=await xR(i);await TR(o,i);let a=await dn(o),c=await Kh(o,i);t.json&&(n.diagnostics={change:i,phase:r,currentStep:c.currentStep,runtimeEval:c.runtimeEval}),n.stderr.push(bR[r]);let l;return r==="open"?l=await n_(n,o):r==="design"?l=await i_(n,o,i):r==="build"?l=await r_(n,o,i,a.run):r==="verify"?l=await s_(n,o,i,a.run):l=await o_(n,o,i),l?(n.stderr.push(""),n.stderr.push(jt("BLOCKED — fix failing checks before proceeding to next phase")),n.toResult(1)):(n.stderr.push(""),n.stderr.push(Si("ALL CHECKS PASSED — ready for next phase")),s==="--apply"&&await a_(n,i,o,r),n.toResult(0))}catch(o){if(o instanceof it){for(let a of o.message.split(` -`))n.stderr.push(a);return n.toResult(o.exitCode)}throw o}});var og=Ve(He(),1);import{createHash as ig}from"crypto";import{promises as rg}from"fs";import sg from"path";var c_="\x1B[32m",l_="\x1B[31m",u_="\x1B[33m",hu="\x1B[0m";function pn(e){return`${c_}${e}${hu}`}function Ie(e){return`${l_}${e}${hu}`}function f_(e){return`${u_}${e}${hu}`}var me=class extends Error{constructor(n,i=1){super(n);this.exitCode=i}exitCode},pu=class{stdout=[];stderr=[];toResult(t=0){return{exitCode:t,...this.stdout.length>0?{stdout:this.stdout.join(` +Next: run comet handoff ${t} design --write so Superpowers receives the current OpenSpec context.`);let s=`${n.replace(/\.json$/u,"")}.md`;return await fe(s)?I():x(`design handoff markdown is missing or empty: ${s} +Next: regenerate the design handoff with comet handoff ${t} design --write.`)}async function n_(e){let t=await K(e,"handoff_context");if(!t||t==="null")return x("handoff_context is missing from .comet.yaml");let n=`${t.replace(/\.json$/u,"")}.md`;if(!await fe(n))return x(`design handoff markdown is missing or empty: ${n}`);let i=await B(_(),n,{label:`Classic handoff markdown ${n}`}),r=new Set(i.split(/\r?\n/u)),s=[];/^Generated-by: comet-handoff\.sh$/mu.test(i)||s.push("handoff markdown is missing Generated-by marker"),/^- Mode: (compact|full|beta)$/mu.test(i)||s.push("handoff markdown is missing Mode marker");for(let o of await uu(e))await se(o)&&(r.has(`- Source: ${o}`)||s.push(`handoff markdown is missing source reference: ${o}`),r.has(`- SHA256: ${await zh(o)}`)||s.push(`handoff markdown is missing current sha256 for: ${o}`));return s.length===0?I():x(s.join(` +`))}async function Qh(e){return await K(e,"context_compression")||"off"}async function i_(e){if(await Qh(e)!=="beta")return I();let t=await K(e,"handoff_context");if(!t||t==="null")return x("handoff_context is missing from .comet.yaml");if(!await fe(t))return x(`spec-context.json is missing or empty: ${t}`);let n=await B(_(),t,{label:`Classic handoff context ${t}`}),i=[],r;try{r=JSON.parse(n)}catch(a){return x(`spec-context.json invalid JSON: ${a instanceof Error?a.message:String(a)}`)}if(!r||typeof r!="object"||Array.isArray(r))return x("spec-context.json root must be an object");let s=r;typeof s.change!="string"&&i.push("spec-context.json missing 'change' field"),typeof s.phase!="string"&&i.push("spec-context.json missing 'phase' field"),s.mode!=="beta"&&i.push("spec-context.json mode is not beta"),typeof s.context_hash!="string"&&i.push("spec-context.json missing 'context_hash' field"),Array.isArray(s.files)||i.push("spec-context.json missing 'files' field");let o=Array.isArray(s.files)?s.files.filter(a=>!!a&&typeof a=="object"&&!Array.isArray(a)):[];for(let a of await uu(e))await se(a)&&(o.some(c=>c.path===a&&typeof c.sha256=="string")||i.push(`spec-context.json missing source file reference: ${a}`));return i.length===0?I():x(i.join(` +`))}async function r_(e,t){let n=await K(t,"workflow"),i=[$("proposal.md exists and non-empty",async()=>await fe(U.join(t,"proposal.md"))?I():x("")),$("proposal.md matches configured language",()=>bt(t,U.join(t,"proposal.md"))),$("tasks.md exists and non-empty",async()=>await fe(U.join(t,"tasks.md"))?I():x("")),$("tasks.md matches configured language",()=>bt(t,U.join(t,"tasks.md"))),$("tasks.md has at least one task",async()=>await HR(t)?I():x(""))];return n==="full"&&i.splice(1,0,$("design.md exists and non-empty",async()=>await fe(U.join(t,"design.md"))?I():x("")),$("design.md matches configured language",()=>bt(t,U.join(t,"design.md")))),Ei(e,i)}async function s_(e,t,n){let i=await K(t,"design_doc"),r=await K(t,"workflow"),s=[$("proposal.md exists",async()=>await fe(U.join(t,"proposal.md"))?I():x("")),$("proposal.md matches configured language",()=>bt(t,U.join(t,"proposal.md"))),$("design.md exists",async()=>await fe(U.join(t,"design.md"))?I():x("")),$("design.md matches configured language",()=>bt(t,U.join(t,"design.md"))),$("tasks.md exists",async()=>await fe(U.join(t,"tasks.md"))?I():x("")),$("tasks.md matches configured language",()=>bt(t,U.join(t,"tasks.md"))),$("design handoff context exists",()=>t_(t,n)),$("design handoff markdown is traceable",()=>n_(t))];await Qh(t)==="beta"&&s.push($("beta spec-context.json is structurally valid",()=>i_(t))),r==="full"&&s.push($("design_doc is recorded for full workflow",()=>e_(t,n)));let o=await Ei(e,s);return i&&i!=="null"?o=await Ei(e,[$(`Design Doc (${i}) exists`,async()=>await fe(i)?I():x("")),$("Design Doc matches configured language",()=>bt(t,i)),$("Design Doc frontmatter links current change",async()=>await fe(i)&&await au(i,"comet_change",n)?I():x("")),$("Design Doc declares technical design role",async()=>await fe(i)&&await au(i,"role","technical-design")?I():x("")),$("Design Doc declares OpenSpec as canonical spec",async()=>await fe(i)&&await au(i,"canonical_spec","openspec")?I():x(""))])||o:r!=="full"&&e.stderr.push(RR(" [WARN] No design_doc recorded in .comet.yaml (optional for hotfix/tweak)")),o}async function o_(e,t,n,i){return Ei(e,[$("bound branch matches workspace mode",()=>du(t,n)),$("isolation selected",()=>JR(t,n)),$("build_mode selected",()=>UR(t,n)),$("build_mode allowed for workflow",()=>GR(t)),$("subagent dispatch confirmed",()=>VR(t,n)),$("tdd_mode selected",()=>YR(t,n)),$("review_mode selected",()=>zR(t,n)),$("tasks.md all tasks checked",()=>fu(t)),$("Superpowers plan all tasks checked",()=>KR(t)),$("proposal.md exists",async()=>await fe(U.join(t,"proposal.md"))?I():x("")),$("proposal.md matches configured language",()=>bt(t,U.join(t,"proposal.md"))),$("Superpowers plan matches configured language",async()=>{let r=await K(t,"plan");return!r||r==="null"||!await se(r)?I():bt(t,r)}),$("Build passes",async()=>{let r=await Xh(t,n,i,"build");return r.status===0?I(r.output):x(r.output)})])}async function a_(e,t,n,i){return Ei(e,[$("bound branch matches workspace mode",()=>du(t,n)),$("tasks.md all tasks checked",()=>fu(t)),$("Verification passes",async()=>{let r=await Xh(t,n,i,"verify");return r.status===0?I(r.output):x(r.output)}),$("verification_report exists",async()=>await XR(t)?I():x("")),$("verification_report matches configured language",async()=>{let r=await K(t,"verification_report");return!r||r==="null"||!await se(r)?I():bt(t,r)})])}async function c_(e,t,n){return Ei(e,[$("bound branch matches workspace mode",()=>du(t,n)),$("archived is true",async()=>await ZR(t)?I():x("")),$("proposal.md exists",async()=>await fe(U.join(t,"proposal.md"))?I():x("")),$("design.md exists",async()=>await fe(U.join(t,"design.md"))?I():x("")),$("tasks.md all tasks checked",()=>fu(t)),$("branch_status=handled",async()=>await QR(t)?I():x(""))])}async function l_(e,t,n,i){let r=hh[i];if(!r)return;let s=await mn(n),o=vi(s.classic,r);await pn(n,o.classic,s.run,{event:r,phase:i,source:"comet-guard"}),await Dn(n,{change:t,event:r,source:"comet-guard",from:s.classic,to:o.classic,effects:o.effects});for(let l of o.effects)e.stderr.push(Si(`[SET] ${_R(l.field)}=${xR(l.to)}`));e.stderr.push(Si(`[TRANSITION] ${r}`));let a=SR[i],c=i==="open"?a.replace("PLACEHOLDER",o.classic.phase):a;e.stderr.push(Si(c))}var Zh=async(e,t)=>vt(t,async()=>{let n=new cu,[i,r,s]=e;try{if(PR(i),!r||!CR.includes(r))throw new it(`${Mt(`Unknown phase: ${r??""}`)} +Valid phases: open, design, build, verify, archive`);await Pe(_());let o=await OR(i);await LR(o,i);let a=await mn(o),c=await Kh(o,i);t.json&&(n.diagnostics={change:i,phase:r,currentStep:c.currentStep,runtimeEval:c.runtimeEval}),n.stderr.push(kR[r]);let l;return r==="open"?l=await r_(n,o):r==="design"?l=await s_(n,o,i):r==="build"?l=await o_(n,o,i,a.run):r==="verify"?l=await a_(n,o,i,a.run):l=await c_(n,o,i),l?(n.stderr.push(""),n.stderr.push(Mt("BLOCKED — fix failing checks before proceeding to next phase")),n.toResult(1)):(n.stderr.push(""),n.stderr.push(Si("ALL CHECKS PASSED — ready for next phase")),s==="--apply"&&await l_(n,i,o,r),n.toResult(0))}catch(o){if(o instanceof it){for(let a of o.message.split(` +`))n.stderr.push(a);return n.toResult(o.exitCode)}throw o}});var ag=Ve(He(),1);import{createHash as rg}from"crypto";import{promises as sg}from"fs";import og from"path";var u_="\x1B[32m",f_="\x1B[31m",d_="\x1B[33m",pu="\x1B[0m";function hn(e){return`${u_}${e}${pu}`}function We(e){return`${f_}${e}${pu}`}function eg(e){return`${d_}${e}${pu}`}var me=class extends Error{constructor(n,i=1){super(n);this.exitCode=i}exitCode},mu=class{stdout=[];stderr=[];toResult(t=0){return{exitCode:t,...this.stdout.length>0?{stdout:this.stdout.join(` `)+` `}:{},...this.stderr.length>0?{stderr:this.stderr.join(` `)+` -`}:{}}}};async function hn(e,t,n){return await X(e,t,{label:n,expected:"file"})?F(e,t,{label:n}):null}async function ra(e,t,n,i){await fi(e,t,n,{label:i})}function d_(e){let t=ge(e);if(t)throw new me(Ie(`ERROR: ${t}`))}function Lt(e){return ig("sha256").update(e).digest("hex")}function ag(e){return Lt(JSON.stringify(Object.fromEntries(Object.entries(e).sort(([t],[n])=>t.localeCompare(n)))))}async function Ur(e,t){let n=[`${t}/proposal.md`,`${t}/design.md`,`${t}/tasks.md`],i=`${t}/specs`;if((await V(e,i,{label:"Classic handoff specs directory",expected:"directory"})).exists){let s=(await rg.readdir(i,{withFileTypes:!0})).sort((o,a)=>o.name.localeCompare(a.name));for(let o of s){if(!o.isDirectory()&&!o.isSymbolicLink())continue;let a=`${i}/${o.name}/spec.md`;(await V(e,`${i}/${o.name}`,{label:`Classic handoff spec directory ${o.name}`,expected:"directory"})).exists&&await X(e,a,{label:`Classic handoff spec ${o.name}`,expected:"file"})&&n.push(a)}}return n}function Ri(e,t,n){let i=sg.relative(e,n).replaceAll("\\","/");return`${t}/${i}`}async function eg(e,t,n){let i=[];for(let r of await Ur(e,t)){let s=Ri(t,n,r),o=await hn(e,r,`Classic handoff source ${s}`);o!==null&&i.push(`path:${s}`,`sha256:${Lt(o)}`)}return ig("sha256").update(i.join(` -`)).digest("hex")}function tg(e){return e.replace(/\\/gu,"\\\\").replace(/"/gu,'\\"')}function cg(e){return(e.match(/\n/gu)??[]).length}function m_(e,t){let n=0;for(let i=0;if.name.localeCompare(d.name));for(let f of u){if(!f.isDirectory()&&!f.isSymbolicLink())continue;let d=`${a}/${f.name}/spec.md`,p=await hn(e,d,`Classic handoff spec ${f.name}`);p!==null&&(c=!0,o.push(...await g_(Ri(t,n,d),p)))}}c||o.push("No delta spec files found.",""),o.push("Full source files remain canonical. If a required heading or scenario is missing here, regenerate the handoff or read the source spec directly. Supporting files (proposal, design, tasks) are referenced by hash only."),await ra(e,s,o.join(` -`),"Classic handoff spec markdown output")}async function y_(e,t,n,i,r,s){let o=[];for(let a of await Ur(e,t)){let c=Ri(t,n,a),l=await hn(e,a,`Classic handoff source ${c}`);if(l===null)continue;let u=/\/specs\/[^/]+\/spec\.md$/u.test(c)?"spec":"supporting";o.push({path:c,sha256:Lt(l),role:u})}await ra(e,s,`${JSON.stringify({change:i,phase:"design",mode:"beta",canonical_spec:"openspec",generated_by:"comet-handoff.sh",context_hash:r,files:o},null,2)} -`,"Classic handoff spec JSON output")}async function ng(e,t,n){let i=sg.join(t,".comet.yaml"),r=(0,og.parseDocument)(await F(e,i,{label:"Classic change state"}),{uniqueKeys:!1});if(r.errors.length>0)throw new me(`ERROR: Invalid .comet.yaml: ${r.errors[0].message}`);let o=r.toJS()[n];return o==null?"":typeof o=="object"?JSON.stringify(o):String(o)}async function v_(e,t,n){let i=await We(e,t.trajectoryRef);i.some(s=>s.type==="recovery_reconciled"&&s.data.kind==="classic-handoff"&&s.data.actionId===n)||await Je(e,t.trajectoryRef,{sequence:i.length+1,timestamp:new Date().toISOString(),type:"recovery_reconciled",runId:t.runId,data:{kind:"classic-handoff",actionId:n}})}async function b_(e,t,n,i,r,s,o,a){let[c,l,u]=await Promise.all([Do(t,n.contextRef),hi(t,n.artifactsRef),Wp(t,n.checkpointRef)]),[f,d]=await Promise.all([hn(e,r,"Classic handoff JSON output"),hn(e,s,"Classic handoff markdown output")]);return f===null||d===null||c!==d||l.handoff_context!==o||l.handoff_markdown!==a?!1:u?.runId===n.runId&&u.contextHash===(c===null?null:Lt(c))&&u.artifactsHash===ag(l)&&i.length===64}var lg=async(e,t)=>yt(t,async()=>{let n=new pu,[i,r,s,o]=e;try{d_(i);let a=await Pe(_()),c=await Oe(i,a.projectRoot),l=c.directory,u=I(a.projectRoot,l);if(r==="--hash-only"){if(!c.exists)throw new me(Ie(`ERROR: change directory not found: ${u}`));for(let vn of["proposal.md","design.md","tasks.md"])if(!await In(a.projectRoot,`${l}/${vn}`,`Classic handoff source ${vn}`))throw new me(Ie(`ERROR: required file missing or empty: ${u}/${vn}`));return n.stdout.push(await eg(a.projectRoot,l,u)),n.toResult(0)}if(r!=="design"||s!=="--write")throw new me(Ie("Usage: comet-handoff.mjs design --write [--full]"));let f;if(o===void 0||o==="")f="compact";else if(o==="--full")f="full";else throw new me(Ie("Usage: comet-handoff.mjs design --write [--full]"));if(!c.exists)throw new me(Ie(`ERROR: change directory not found: ${u}`));if(!c.stateExists)throw new me(Ie(`ERROR: .comet.yaml not found at ${u}/.comet.yaml`));if(await ng(a.projectRoot,l,"phase")!=="design")throw new me(Ie("ERROR: design handoff requires phase: design"));for(let vn of["proposal.md","design.md","tasks.md"])if(!await In(a.projectRoot,`${l}/${vn}`,`Classic handoff source ${vn}`))throw new me(Ie(`ERROR: required OpenSpec artifact missing or empty: ${u}/${vn}`));let d=`${l}/.comet/handoff`;await V(a.projectRoot,`${l}/.comet`,{label:"Classic change runtime directory",expected:"directory"}),await V(a.projectRoot,d,{label:"Classic handoff directory",expected:"directory"});let p=await ng(a.projectRoot,l,"context_compression")||"off",g,h;if(p==="off")g=`${d}/design-context.json`,h=`${d}/design-context.md`;else if(p==="beta")f==="full"&&n.stderr.push(f_("[HANDOFF] --full is ignored in beta mode; spec files are projected verbatim")),f="beta",g=`${d}/spec-context.json`,h=`${d}/spec-context.md`;else throw new me([Ie(`ERROR: invalid context_compression: ${p}`),Ie("Valid values: off, beta")].join(` -`));let m=I(a.projectRoot,g),y=I(a.projectRoot,h),w=await eg(a.projectRoot,l,u),C=`classic-handoff:${w}`,k=await B(l);if(!k.classic)throw new me(Ie("ERROR: design handoff requires Classic state"));let E=k.run?await $r(l,k.run.pendingRef):null,R=E?.id===C&&E.type==="handoff"&&E.ref===w;if(k.classic.handoffHash&&k.classic.handoffHash!==w&&!R)throw new me(Ie(`ERROR: stale handoff detected: source hash ${w} does not match completed hash ${k.classic.handoffHash}`));await Nn(a.projectRoot,`${l}/.comet`,"Classic change runtime directory"),await Nn(a.projectRoot,d,"Classic handoff directory");let O=await dn(l),b=await $r(l,O.run.pendingRef),L=b?.id===C&&b.type==="handoff"&&b.ref===w;if(O.run.pending&&O.run.pending!==C)throw new me(Ie(`ERROR: another action is pending: ${O.run.pending}`));if(O.classic.handoffHash===w&&O.classic.handoffContext===m&&!O.run.pending&&!b&&await b_(a.projectRoot,l,O.run,w,g,h,m,y))return n.stderr.push(pn(`[HANDOFF] wrote ${m}`)),n.stderr.push(pn(`[HANDOFF] wrote ${y}`)),n.stderr.push(pn(`[HANDOFF] handoff_hash=${w}`)),n.toResult(0);let Me={id:C,stepId:O.run.currentStep,type:"handoff",ref:w};await Wo(l,O.run.pendingRef,Me);let Q={...O.run,pending:C,status:"waiting"};await De(l,{classic:O.classic,run:Q,unknownKeys:(await B(l)).unknownKeys}),f==="beta"?(await w_(a.projectRoot,l,u,i,w,h),await y_(a.projectRoot,l,u,i,w,g)):(await p_(a.projectRoot,l,u,i,f,w,h),await h_(a.projectRoot,l,u,i,f,w,g));let K=await F(a.projectRoot,h,{label:"Classic handoff markdown output"});await qo(l,Q.contextRef,K);let Se={...await hi(l,Q.artifactsRef),handoff_context:m,handoff_markdown:y};await gi(l,Q.artifactsRef,Se);let ss={...O.classic,handoffContext:m,handoffHash:w},kt={...Q.currentStep==="full.design.handoff"?await mn(l,ss,Q,{actionId:C,kind:"classic-handoff"}):Q,pending:null,status:"running"};(R||L)&&await v_(l,kt,C);let os=await We(l,kt.trajectoryRef),yn={runId:kt.runId,stateVersion:kt.iteration,trajectoryOffset:os.length,contextHash:Lt(K),artifactsHash:ag(Se),createdAt:new Date().toISOString()};return await wi(l,kt.checkpointRef,yn),await De(l,{classic:ss,run:kt,unknownKeys:(await B(l)).unknownKeys}),await Fo(l,kt.pendingRef),n.stderr.push(pn(`[SET] handoff_context=${g}`)),n.stderr.push(pn(`[SET] handoff_hash=${w}`)),n.stderr.push(pn(`[HANDOFF] wrote ${m}`)),n.stderr.push(pn(`[HANDOFF] wrote ${y}`)),n.stderr.push(pn(`[HANDOFF] handoff_hash=${w}`)),n.toResult(0)}catch(a){if(a instanceof me){for(let c of a.message.split(` -`))n.stderr.push(c);return n.toResult(a.exitCode)}throw a}});kr();import{promises as oa,readFileSync as k_}from"fs";import Ne from"path";import{promises as gu}from"fs";import Fe from"path";function ug(e,t){let n=Fe.relative(e,t);return n===""||n!==".."&&!n.startsWith(`..${Fe.sep}`)&&!Fe.isAbsolute(n)}async function C_(e){let t=Fe.resolve(e),n=Fe.parse(t).root,i=[],r=t;for(;r&&r!==n;)try{let s=await gu.realpath(r);return Fe.join(s,...i.reverse())}catch(s){let o=s.code;if(o!=="ENOENT"&&o!=="ENOTDIR")throw s;i.push(Fe.basename(r)),r=Fe.dirname(r)}try{let s=await gu.realpath(n);return Fe.join(s,...i.reverse())}catch{return null}}async function fg(e,t){let n=Fe.resolve(e),i=await gu.realpath(n),r=[],s=[];for(let o of t){let a=Fe.isAbsolute(o)?Fe.resolve(o):Fe.resolve(n,o),c=await C_(a);((c?ug(i,c):ug(n,a))?r:s).push(o)}return{projectTargets:r,externalTargets:s}}Ll();import Hn from"node:path";async function sa(e,t){if(!t||t==="null")return{status:"missing",recordedPath:null};let n=await Y(e),i=Hn.resolve(e,t),r=Hn.relative(n.superpowersPlansDir,i);return Hn.isAbsolute(t)||!r||r.startsWith(`..${Hn.sep}`)||Hn.isAbsolute(r)||r.includes(Hn.sep)||Hn.extname(r).toLowerCase()!==".md"?{status:"broken",recordedPath:t}:await X(e,t,{label:`Classic build plan ${t}`,expected:"file"})?{status:"ready",recordedPath:t}:{status:"broken",recordedPath:t}}function st(e,t){return{exitCode:e,stderr:t+` -`}}function rt(e){return st(0,`[COMET-HOOK] allowed: ${e}`)}function S_(){if(process.env.FILE_PATH)return process.env.FILE_PATH;if(process.stdin.isTTY)return"";let e=k_(0,"utf8");if(!e)return"";try{let t=JSON.parse(e);return typeof t.tool_input?.file_path=="string"?t.tool_input.file_path:""}catch{return""}}function Vr(e){return e.replaceAll("\\","/").replace(/\/+/gu,"/")}function Kn(e){let t=Vr(e);return process.platform==="win32"?t.toLowerCase():t}function E_(e){let t=e.indexOf("--project-root"),n=t>=0?e[t+1]:void 0;return Ne.resolve(n&&!n.startsWith("--")?n:process.cwd())}function dg(e,t){let n=Vr(Ne.relative(t,e));return n===""?"":n.startsWith("../")||n===".."||Ne.isAbsolute(n)?null:n}async function R_(e){let t=Ne.resolve(e),n=Ne.parse(t).root,i=[],r=t;for(;r&&r!==n;)try{let s=await oa.realpath(r);return Ne.join(s,...i.reverse())}catch(s){let o=s.code;if(o!=="ENOENT"&&o!=="ENOTDIR")throw s;i.push(Ne.basename(r)),r=Ne.dirname(r)}try{let s=await oa.realpath(n);return Ne.join(s,...i.reverse())}catch{return null}}async function __(e,t){let n=Ne.isAbsolute(e)?e:Ne.resolve(t,e),i=Vr(n),r=dg(n,t);if(r!==null)return r;try{let s=await R_(n),o=await oa.realpath(t);if(s){let a=dg(s,o);if(a!==null)return a;i=Vr(s)}}catch{if(!Ne.isAbsolute(e))return Vr(e).replace(/^\.\//u,"")}return i.replace(/^\.\//u,"")}async function gg(e){try{let t=await B(e,{migrate:!1}),n=Array.from(new Set(t.unknownKeys)).sort();if(n.length>0)throw new Error(`Invalid Classic state: unknown field(s): ${n.join(", ")}`);if(!t.classic)throw new Error("Classic state projection is unavailable");return{changeDir:e,phase:t.classic.phase,classic:t.classic,archived:t.classic.archived}}catch(t){let n=await qp(e);return n.phase?{changeDir:e,phase:n.phase,classic:null,archived:n.archived,invalidState:t instanceof Error&&t.message.includes("unknown field")}:null}}async function x_(e){let t=(await Y(e)).changesDir,n=[];if(!(await V(e,t,{label:"Classic changes directory",expected:"directory"})).exists)return n;for(let r of(await oa.readdir(t,{withFileTypes:!0})).sort((s,o)=>s.name.localeCompare(o.name))){if(r.name==="archive"||ge(r.name))continue;let s=await Oe(r.name,e);if(!s.exists||!s.stateExists)continue;let o=await gg(s.directory);!o||o.archived||n.push(o)}return n}var wu=Mn("classicActiveChanges",e=>x_(e)),wg=Mn("classicPlanReadiness",sa);function yg(e,t){return`${I(e,t.superpowersRoot)}/`}function vg(e,t){return Kn(e).startsWith(Kn(t))}function P_(e,t){return[{prefix:`${I(e,t.superpowersSpecsDir)}/`,field:"designDoc",wireField:"design_doc",phase:"design"},{prefix:`${I(e,t.superpowersPlansDir)}/`,field:"plan",wireField:"plan",phase:"build"},{prefix:`${I(e,t.superpowersReportsDir)}/`,field:"verificationReport",wireField:"verification_report",phase:"verify"}]}function O_(e,t){let n=Kn(e),i=t.find(s=>n.startsWith(Kn(s.prefix)));if(!i)return null;let r=n.slice(Kn(i.prefix).length);return!r||r.includes("/")||!r.endsWith(".md")?null:i}function bg(e,t){return e.classic?.[t.field]??null}function $_(e,t){return e.classic!==null&&e.phase===t.phase&&!bg(e,t)}async function mg(e,t,n){return $_(t,n)?!0:n.field!=="plan"||t.phase!=="build"?!1:(await wg(e,t.classic?.plan??null)).status==="broken"}function Cg(e){return e.phase==="design"||e.phase==="build"||e.phase==="verify"}function Mt(e){return e.changeDir?Ne.basename(e.changeDir):null}var A_=new Set(["design","plan","verify","verification","verification-report","report"]);function pg(e){return e.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}function I_(e,t){return[t.classic?.designDoc,t.classic?.plan,t.classic?.verificationReport].some(i=>i&&Kn(i)===Kn(e))}function N_(e,t){let i=(e.split("/").at(-1)??e).replace(/\.[^.]+$/u,"");if(i===t)return!0;let r=[...A_].map(pg).join("|");return new RegExp(`(^|[-_.])${pg(t)}[-_.](${r})$`,"u").test(i)}async function T_(e,t){let n=await wu(t),i=n.find(o=>I_(e,o));if(i)return{governing:i,match:"recorded"};let s=n.filter(Cg).filter(o=>{let a=Mt(o);return a!==null&&N_(e,a)}).sort((o,a)=>(Mt(a)?.length??0)-(Mt(o)?.length??0))[0];return s?{governing:s,match:"named"}:null}async function hg(e,t,n){let i=await wu(e);if(i.length===0)return null;if(n)return i.find(o=>Mt(o)===n)??{blockedResult:Gr(t,`selected change '${n}' is no longer active`)};let r=await Qo(e);if(r.status==="stale")return{blockedResult:Gr(t,r.reason)};if(r.status==="selected"){let s=i.find(o=>Mt(o)===r.selection.change);return s||{blockedResult:Gr(t,`selected change '${r.selection.change}' is no longer active`)}}if(i.length===1){let s=i[0];if(s.changeDir!==null){let o=await At(s.changeDir,{heal:!1,cwd:e}),a=Mt(s)??"unknown";if(o.status==="drift")return{blockedResult:Gr(t,Tr(a,o.boundBranch,o.currentBranch))};if(o.status==="unbound-detached")return{blockedResult:Gr(t,It(a))}}return s}return{blockedResult:K_(t,i.map(s=>Mt(s)).filter(Boolean))}}async function j_(e,t,n,i){let r=`${I(t,n.changesDir)}/`;if(e.startsWith(r)){let s=e.slice(r.length),[o]=s.split("/");if(o&&o!=="archive"){let a=await Oe(o,t);if(a.stateExists){let c=await gg(a.directory);return c||{changeDir:a.directory,phase:"open",classic:null,archived:!1}}return{changeDir:a.directory,phase:"open",classic:null,archived:!1}}}if(vg(e,yg(t,n))){let s=await T_(e,t);if(s?.match==="recorded")return{...s.governing,superpowersArtifact:"matched"};let o=O_(e,P_(t,n));if(s)return o?{...s.governing,superpowersArtifact:await mg(t,s.governing,o)?"matched":"unmatched",superpowersSlot:o}:{...s.governing,superpowersArtifact:"matched"};if(o){let l=await hg(t,e,i);return!l||"blockedResult"in l?l:{...l,superpowersArtifact:await mg(t,l,o)?"matched":"unmatched",superpowersSlot:o}}let a=await wu(t),c=i?a.find(l=>Mt(l)===i)??null:a[0]??null;return c?{...c,superpowersArtifact:"unmatched"}:null}return hg(t,e,i)}function L_(e){return!e.includes("/")&&e.endsWith(".md")}function M_(e){return e.startsWith(".comet/")||e.includes("/.comet/")}function q_(e){return e===".superpowers"||e.startsWith(".superpowers/")}function D_(e,t,n){if(!e.startsWith(n))return null;let i=e.endsWith("/.comet.yaml")||e.endsWith("/.openspec.yaml"),r=e.endsWith("/proposal.md")||e.endsWith("/design.md")||e.endsWith("/tasks.md"),s=e.includes("/.comet/"),o=e.includes("/specs/");return t==="open"&&(r||i||s||o)?`${e} (phase: open, openspec artifacts)`:t==="design"&&(r||i||s||o)?`${e} (phase: design, handoff/spec)`:t==="build"&&(e.endsWith("/tasks.md")||i||o)?`${e} (phase: build, spec/tasks)`:t==="verify"&&(e.endsWith("/tasks.md")||i)?`${e} (phase: verify, tasks/state)`:t==="archive"&&i?`${e} (phase: archive, state)`:null}function W_(e,t){let n=t==="open"?[" BLOCKED: source writes are not allowed during open"," This phase does not allow source writes"," ALLOWED: create proposal/design/tasks artifacts and run guard"," NEXT: finish clarification and artifacts, then run guard --apply"]:t==="design"?[" BLOCKED: source writes are not allowed during design"," This phase does not allow source writes"," ALLOWED: run brainstorming, create the Design Doc, and run guard"," NEXT: finish the Design Doc, then run comet guard design --apply to enter build"]:[" BLOCKED: source writes are not allowed during archive"," This phase does not allow source writes"," ALLOWED: confirm archive state and run the archive script"];return st(2,["","╔══════════════════════════════════════════╗","║ COMET PHASE GUARD — WRITE BLOCKED ║","╚══════════════════════════════════════════╝","",` Current phase: ${t}`,` Target file: ${e}`,"",...n,""].join(` -`))}function F_(e){return st(2,["","╔══════════════════════════════════════════╗","║ COMET PHASE GUARD — WRITE BLOCKED ║","╚══════════════════════════════════════════╝",""," Current phase: build (workflow: full), but design_doc is empty",` Target file: ${e}`,""," BLOCKED: full workflow source writes require a recorded Design Doc"," This phase does not allow source writes until design_doc is recorded"," NEXT: return to design, create/link the Design Doc, then run guard again",""].join(` -`))}function B_(e,t,n,i,r){let s=Mt(t)??"",o=n.status==="missing",a=o?"classic-build-plan-missing":"classic-build-plan-broken",c=o?"plan is not recorded":"the recorded plan path does not resolve to a file",l=o?[]:[`RECORDED_PLAN: ${n.recordedPath}`],u=t.changeDir?I(i,t.changeDir):"",f=I(i,r.superpowersPlansDir),d=o?`comet state set ${s} plan `:`comet state set ${s} plan `,p=o?["2. Load the Superpowers writing-plans Skill.",`3. Read the Design Doc path from "comet state get ${s} design_doc" and read ${u}/tasks.md.`,`4. Create the implementation plan under ${f}/.`,"5. Record the plan path:",` ${d}`]:[`2. Restore the plan file at ${n.recordedPath}, or load the Superpowers writing-plans Skill and create a replacement under ${f}/.`,"3. When creating a replacement, record its path:",` ${d}`];return st(2,["","╔══════════════════════════════════════════╗","║ COMET PHASE GUARD — WRITE BLOCKED ║","╚══════════════════════════════════════════╝","",`ERROR_CODE: ${a}`,`CHANGE: ${s}`,"WORKFLOW: full","PHASE: build",`TARGET: ${e}`,`STATE: ${c}`,...l,"","BLOCKED: project source writes require a ready Superpowers implementation plan.","","ALLOWED_RECOVERY_WRITES:",`- ${f}/.md`,"- Comet state updates performed by the comet CLI",`- ${u} artifacts allowed by the build phase`,"","RECOVERY:",`1. Invoke /comet-build for ${s} and resume Step 1.`,...p,`${o?"6":"4"}. Verify recovery:`,` comet state check ${s} build --recover`,"","SUCCESS: plan is reported as DONE and recovery advances beyond plan creation.",`RETRY: retry the original Write/Edit for ${e} only after SUCCESS.`,"PROHIBITED: do not treat tasks.md as the implementation plan or write project source before SUCCESS.","If writing-plans is unavailable, stop and report the missing Skill instead of bypassing this check.",""].join(` -`))}function H_(e,t){let n=t.superpowersSlot,i=n?bg(t,n):null,r=n?t.phase!==n.phase?[` BLOCKED: ${n.wireField} cannot be first-written in phase ${t.phase}`,` Expected phase: ${n.phase}`," NEXT: resume the matching Comet phase or use an already recorded artifact path"]:i?[` BLOCKED: ${n.wireField} is already recorded for this change`,` Recorded path: ${i}`," 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 st(2,["","╔══════════════════════════════════════════╗","║ COMET PHASE GUARD — WRITE BLOCKED ║","╚══════════════════════════════════════════╝","",` Current phase: ${t.phase}`,` Target file: ${e}`,"",...r,""].join(` -`))}function K_(e,t){return st(2,["","╔══════════════════════════════════════════╗","║ COMET PHASE GUARD — WRITE BLOCKED ║","╚══════════════════════════════════════════╝",""," BLOCKED: multiple active changes require a current change",` Target file: ${e}`,` Active changes: ${t.join(", ")}`,""," NEXT: run comet state select , then retry the source write",""].join(` -`))}function Gr(e,t){return st(2,["","╔══════════════════════════════════════════╗","║ COMET PHASE GUARD — WRITE BLOCKED ║","╚══════════════════════════════════════════╝",""," BLOCKED: current change selection is stale or invalid",` Target file: ${e}`,` Reason: ${t}`,""," NEXT: run comet state select , then retry the source write",""].join(` -`))}async function J_(e,t,n,i=fg){try{if((await i(e,[t])).projectTargets.length===0)return rt(`${t} (outside guarded project)`)}catch(u){return st(2,[`[COMET-HOOK] blocked: scope could not be determined safely for ${t}.`,`REASON: ${u instanceof Error?u.message:String(u)}`,"NEXT: verify that the project root is accessible, then retry the write."].join(` -`))}let r=await __(t,e),s;try{s=await Pe(e)}catch(u){return st(2,`[COMET-HOOK] blocked: ${u instanceof Error?u.message:String(u)}`)}if(M_(r))return rt(`${r} (whitelist: comet config)`);if(q_(r))return rt(`${r} (whitelist: superpowers workspace)`);if(r==="CLAUDE.md"||r==="CHANGELOG.md"||r==="README.md"||L_(r))return rt(`${r} (whitelist: root markdown)`);let o=await jl(e,t,[Ne.join(e,".comet"),s.openSpecRoot,s.superpowersRoot]);if(o)return rt(o);let a;try{a=await j_(r,e,s,n)}catch(u){return st(2,`[COMET-HOOK] blocked: ${u instanceof Error?u.message:String(u)}`)}if(!a)return rt("no active comet change");if("blockedResult"in a)return a.blockedResult;if(a.archived)return rt(`${r} (own change archived)`);let c=a.phase,l=D_(r,c,`${I(e,s.openSpecRoot)}/`);if(l)return rt(l);if(vg(r,yg(e,s))){if(a.superpowersArtifact==="matched"&&Cg(a))return rt(`${r} (phase: ${c}, superpowers)`);if(a.superpowersArtifact==="unmatched")return H_(r,a)}if(a.invalidState)return st(2,`[COMET-HOOK] blocked: active Classic state is invalid; repair .comet.yaml before writing ${r}`);if(c==="build"&&a.classic?.workflow==="full"&&!a.classic.designDoc)return F_(r);if(c==="build"&&a.classic?.workflow==="full"){let u=await wg(e,a.classic.plan);if(u.status!=="ready")return B_(r,a,u,e,s)}return c==="build"||c==="verify"?rt(`${r} (phase: ${c})`):W_(r,c)}var kg=async e=>{let t=E_(e),n=S_();return n?J_(t,n):rt("no file path in tool input")};var U_="comet.intent.v1";var G_=["start_change","resume_change","fix_bug","make_tweak","ask_question","unknown"],V_=["change_id","workflow","file_path","command","capability","bug_signal","risk_signal"],Y_=["start","resume","continue","fix","modify","create","verify","archive","question","unknown"],Sg=["full","hotfix","tweak"],z_=["small","medium","large","unknown"],X_=["full","hotfix","tweak","resume","ask_user","out_of_scope"],Q_=["comet-open","comet-hotfix","comet-tweak","comet-design","comet-build","comet-verify","comet-archive"],Z_=["user","repo","state"],Pi=class extends Error{constructor(n){super(`Invalid CometIntentFrame: +`}:{}}}};async function Ct(e,t,n){return await X(e,t,{label:n,expected:"file"})?B(e,t,{label:n}):null}async function ra(e,t,n,i){await fi(e,t,n,{label:i})}function m_(e){let t=ge(e);if(t)throw new me(We(`ERROR: ${t}`))}function kt(e){return rg("sha256").update(e).digest("hex")}function cg(e){return kt(JSON.stringify(Object.fromEntries(Object.entries(e).sort(([t],[n])=>t.localeCompare(n)))))}async function _i(e,t){let n=[`${t}/proposal.md`,`${t}/design.md`,`${t}/tasks.md`],i=`${t}/specs`;if((await V(e,i,{label:"Classic handoff specs directory",expected:"directory"})).exists){let s=(await sg.readdir(i,{withFileTypes:!0})).sort((o,a)=>o.name.localeCompare(a.name));for(let o of s){if(!o.isDirectory()&&!o.isSymbolicLink())continue;let a=`${i}/${o.name}/spec.md`;(await V(e,`${i}/${o.name}`,{label:`Classic handoff spec directory ${o.name}`,expected:"directory"})).exists&&await X(e,a,{label:`Classic handoff spec ${o.name}`,expected:"file"})&&n.push(a)}}return n}function Ri(e,t,n){let i=og.relative(e,n).replaceAll("\\","/");return`${t}/${i}`}async function tg(e,t,n){let i=[];for(let r of await _i(e,t)){let s=Ri(t,n,r),o=await Ct(e,r,`Classic handoff source ${s}`);o!==null&&i.push(`path:${s}`,`sha256:${kt(o)}`)}return rg("sha256").update(i.join(` +`)).digest("hex")}function ng(e){return e.replace(/\\/gu,"\\\\").replace(/"/gu,'\\"')}function lg(e){return(e.match(/\n/gu)??[]).length}function p_(e,t){let n=0;for(let i=0;if.name.localeCompare(d.name));for(let f of u){if(!f.isDirectory()&&!f.isSymbolicLink())continue;let d=`${a}/${f.name}/spec.md`,p=await Ct(e,d,`Classic handoff spec ${f.name}`);p!==null&&(c=!0,o.push(...await w_(Ri(t,n,d),p)))}}c||o.push("No delta spec files found.",""),o.push("Full source files remain canonical. If a required heading or scenario is missing here, regenerate the handoff or read the source spec directly. Supporting files (proposal, design, tasks) are referenced by hash only."),await ra(e,s,o.join(` +`),"Classic handoff spec markdown output")}async function v_(e,t,n,i,r,s){let o=[];for(let a of await _i(e,t)){let c=Ri(t,n,a),l=await Ct(e,a,`Classic handoff source ${c}`);if(l===null)continue;let u=/\/specs\/[^/]+\/spec\.md$/u.test(c)?"spec":"supporting";o.push({path:c,sha256:kt(l),role:u})}await ra(e,s,`${JSON.stringify({change:i,phase:"design",mode:"beta",canonical_spec:"openspec",generated_by:"comet-handoff.sh",context_hash:r,files:o},null,2)} +`,"Classic handoff spec JSON output")}async function ig(e,t,n){let i=og.join(t,".comet.yaml"),r=(0,ag.parseDocument)(await B(e,i,{label:"Classic change state"}),{uniqueKeys:!1});if(r.errors.length>0)throw new me(`ERROR: Invalid .comet.yaml: ${r.errors[0].message}`);let o=r.toJS()[n];return o==null?"":typeof o=="object"?JSON.stringify(o):String(o)}async function b_(e,t,n){let i=await De(e,t.trajectoryRef);i.some(s=>s.type==="recovery_reconciled"&&s.data.kind==="classic-handoff"&&s.data.actionId===n)||await Je(e,t.trajectoryRef,{sequence:i.length+1,timestamp:new Date().toISOString(),type:"recovery_reconciled",runId:t.runId,data:{kind:"classic-handoff",actionId:n}})}async function C_(e,t,n,i){let r=await Ct(e,n,"Classic handoff markdown output");if(r===null)return!1;let s=new Set(r.split(/\r?\n/u));if(!s.has(`- Context hash: ${i}`))return!1;for(let o of await _i(e,t)){let a=await Ct(e,o,`Classic handoff source ${o}`);if(a!==null&&!s.has(`- SHA256: ${kt(a)}`))return!1}return!0}async function k_(e,t,n,i,r,s,o,a){let[c,l,u]=await Promise.all([Do(t,n.contextRef),hi(t,n.artifactsRef),Wp(t,n.checkpointRef)]),[f,d]=await Promise.all([Ct(e,r,"Classic handoff JSON output"),Ct(e,s,"Classic handoff markdown output")]);return f===null||d===null||c!==d||l.handoff_context!==o||l.handoff_markdown!==a?!1:u?.runId===n.runId&&u.contextHash===(c===null?null:kt(c))&&u.artifactsHash===cg(l)&&i.length===64}var ug=async(e,t)=>vt(t,async()=>{let n=new mu,[i,r,s,o]=e;try{m_(i);let a=await Pe(_()),c=await Oe(i,a.projectRoot),l=c.directory,u=A(a.projectRoot,l);if(r==="--hash-only"){if(!c.exists)throw new me(We(`ERROR: change directory not found: ${u}`));for(let vn of["proposal.md","design.md","tasks.md"])if(!await In(a.projectRoot,`${l}/${vn}`,`Classic handoff source ${vn}`))throw new me(We(`ERROR: required file missing or empty: ${u}/${vn}`));return n.stdout.push(await tg(a.projectRoot,l,u)),n.toResult(0)}if(r!=="design"||s!=="--write")throw new me(We("Usage: comet-handoff.mjs design --write [--full]"));let f;if(o===void 0||o==="")f="compact";else if(o==="--full")f="full";else throw new me(We("Usage: comet-handoff.mjs design --write [--full]"));if(!c.exists)throw new me(We(`ERROR: change directory not found: ${u}`));if(!c.stateExists)throw new me(We(`ERROR: .comet.yaml not found at ${u}/.comet.yaml`));let d=await ig(a.projectRoot,l,"phase");if(d!=="design"&&d!=="build")throw new me(We("ERROR: design handoff requires phase: design or build"));for(let vn of["proposal.md","design.md","tasks.md"])if(!await In(a.projectRoot,`${l}/${vn}`,`Classic handoff source ${vn}`))throw new me(We(`ERROR: required OpenSpec artifact missing or empty: ${u}/${vn}`));let p=`${l}/.comet/handoff`;await V(a.projectRoot,`${l}/.comet`,{label:"Classic change runtime directory",expected:"directory"}),await V(a.projectRoot,p,{label:"Classic handoff directory",expected:"directory"});let g=await ig(a.projectRoot,l,"context_compression")||"off",h,m;if(g==="off")h=`${p}/design-context.json`,m=`${p}/design-context.md`;else if(g==="beta")f==="full"&&n.stderr.push(eg("[HANDOFF] --full is ignored in beta mode; spec files are projected verbatim")),f="beta",h=`${p}/spec-context.json`,m=`${p}/spec-context.md`;else throw new me([We(`ERROR: invalid context_compression: ${g}`),We("Valid values: off, beta")].join(` +`));let w=A(a.projectRoot,h),y=A(a.projectRoot,m),b=await tg(a.projectRoot,l,u),k=`classic-handoff:${b}`,E=await H(l);if(!E.classic)throw new me(We("ERROR: design handoff requires Classic state"));let R=E.run?await Ir(l,E.run.pendingRef):null,T=R?.id===k&&R.type==="handoff"&&R.ref===b;E.classic.handoffHash&&E.classic.handoffHash!==b&&!T&&n.stderr.push(eg(`[HANDOFF] refreshing stale design handoff: previous hash ${E.classic.handoffHash}`)),await Nn(a.projectRoot,`${l}/.comet`,"Classic change runtime directory"),await Nn(a.projectRoot,p,"Classic handoff directory");let v=await mn(l),j=await Ir(l,v.run.pendingRef),Le=j?.id===k&&j.type==="handoff"&&j.ref===b;if(v.run.pending&&v.run.pending!==k)throw new me(We(`ERROR: another action is pending: ${v.run.pending}`));if(v.classic.handoffHash===b&&v.classic.handoffContext===w&&!v.run.pending&&!j&&await k_(a.projectRoot,l,v.run,b,h,m,w,y)&&await C_(a.projectRoot,l,m,b))return n.stderr.push(hn(`[HANDOFF] wrote ${w}`)),n.stderr.push(hn(`[HANDOFF] wrote ${y}`)),n.stderr.push(hn(`[HANDOFF] handoff_hash=${b}`)),n.toResult(0);let he={id:k,stepId:v.run.currentStep,type:"handoff",ref:b};await Wo(l,v.run.pendingRef,he);let W={...v.run,pending:k,status:"waiting"};await qe(l,{classic:v.classic,run:W,unknownKeys:(await H(l)).unknownKeys}),f==="beta"?(await y_(a.projectRoot,l,u,i,b,m),await v_(a.projectRoot,l,u,i,b,h)):(await h_(a.projectRoot,l,u,i,f,b,m),await g_(a.projectRoot,l,u,i,f,b,h));let Se=await B(a.projectRoot,m,{label:"Classic handoff markdown output"});await qo(l,W.contextRef,Se);let os={...await hi(l,W.artifactsRef),handoff_context:w,handoff_markdown:y};await gi(l,W.artifactsRef,os);let qi={...v.classic,handoffContext:w,handoffHash:b},ut={...W.currentStep==="full.design.handoff"?await pn(l,qi,W,{actionId:k,kind:"classic-handoff"}):W,pending:null,status:"running"};(T||Le)&&await b_(l,ut,k);let yn=await De(l,ut.trajectoryRef),Rw={runId:ut.runId,stateVersion:ut.iteration,trajectoryOffset:yn.length,contextHash:kt(Se),artifactsHash:cg(os),createdAt:new Date().toISOString()};return await wi(l,ut.checkpointRef,Rw),await qe(l,{classic:qi,run:ut,unknownKeys:(await H(l)).unknownKeys}),await Fo(l,ut.pendingRef),n.stderr.push(hn(`[SET] handoff_context=${h}`)),n.stderr.push(hn(`[SET] handoff_hash=${b}`)),n.stderr.push(hn(`[HANDOFF] wrote ${w}`)),n.stderr.push(hn(`[HANDOFF] wrote ${y}`)),n.stderr.push(hn(`[HANDOFF] handoff_hash=${b}`)),n.toResult(0)}catch(a){if(a instanceof me){for(let c of a.message.split(` +`))n.stderr.push(c);return n.toResult(a.exitCode)}throw a}});Er();import{promises as oa,readFileSync as E_}from"fs";import Ie from"path";import{promises as hu}from"fs";import Fe from"path";function fg(e,t){let n=Fe.relative(e,t);return n===""||n!==".."&&!n.startsWith(`..${Fe.sep}`)&&!Fe.isAbsolute(n)}async function S_(e){let t=Fe.resolve(e),n=Fe.parse(t).root,i=[],r=t;for(;r&&r!==n;)try{let s=await hu.realpath(r);return Fe.join(s,...i.reverse())}catch(s){let o=s.code;if(o!=="ENOENT"&&o!=="ENOTDIR")throw s;i.push(Fe.basename(r)),r=Fe.dirname(r)}try{let s=await hu.realpath(n);return Fe.join(s,...i.reverse())}catch{return null}}async function dg(e,t){let n=Fe.resolve(e),i=await hu.realpath(n),r=[],s=[];for(let o of t){let a=Fe.isAbsolute(o)?Fe.resolve(o):Fe.resolve(n,o),c=await S_(a);((c?fg(i,c):fg(n,a))?r:s).push(o)}return{projectTargets:r,externalTargets:s}}jl();import Hn from"node:path";async function sa(e,t){if(!t||t==="null")return{status:"missing",recordedPath:null};let n=await Y(e),i=Hn.resolve(e,t),r=Hn.relative(n.superpowersPlansDir,i);return Hn.isAbsolute(t)||!r||r.startsWith(`..${Hn.sep}`)||Hn.isAbsolute(r)||r.includes(Hn.sep)||Hn.extname(r).toLowerCase()!==".md"?{status:"broken",recordedPath:t}:await X(e,t,{label:`Classic build plan ${t}`,expected:"file"})?{status:"ready",recordedPath:t}:{status:"broken",recordedPath:t}}function st(e,t){return{exitCode:e,stderr:t+` +`}}function rt(e){return st(0,`[COMET-HOOK] allowed: ${e}`)}function R_(){if(process.env.FILE_PATH)return process.env.FILE_PATH;if(process.stdin.isTTY)return"";let e=E_(0,"utf8");if(!e)return"";try{let t=JSON.parse(e);return typeof t.tool_input?.file_path=="string"?t.tool_input.file_path:""}catch{return""}}function Yr(e){return e.replaceAll("\\","/").replace(/\/+/gu,"/")}function Kn(e){let t=Yr(e);return process.platform==="win32"?t.toLowerCase():t}function __(e){let t=e.indexOf("--project-root"),n=t>=0?e[t+1]:void 0;return Ie.resolve(n&&!n.startsWith("--")?n:process.cwd())}function mg(e,t){let n=Yr(Ie.relative(t,e));return n===""?"":n.startsWith("../")||n===".."||Ie.isAbsolute(n)?null:n}async function x_(e){let t=Ie.resolve(e),n=Ie.parse(t).root,i=[],r=t;for(;r&&r!==n;)try{let s=await oa.realpath(r);return Ie.join(s,...i.reverse())}catch(s){let o=s.code;if(o!=="ENOENT"&&o!=="ENOTDIR")throw s;i.push(Ie.basename(r)),r=Ie.dirname(r)}try{let s=await oa.realpath(n);return Ie.join(s,...i.reverse())}catch{return null}}async function P_(e,t){let n=Ie.isAbsolute(e)?e:Ie.resolve(t,e),i=Yr(n),r=mg(n,t);if(r!==null)return r;try{let s=await x_(n),o=await oa.realpath(t);if(s){let a=mg(s,o);if(a!==null)return a;i=Yr(s)}}catch{if(!Ie.isAbsolute(e))return Yr(e).replace(/^\.\//u,"")}return i.replace(/^\.\//u,"")}async function wg(e){try{let t=await H(e,{migrate:!1}),n=Array.from(new Set(t.unknownKeys)).sort();if(n.length>0)throw new Error(`Invalid Classic state: unknown field(s): ${n.join(", ")}`);if(!t.classic)throw new Error("Classic state projection is unavailable");return{changeDir:e,phase:t.classic.phase,classic:t.classic,archived:t.classic.archived}}catch(t){let n=await qp(e);return n.phase?{changeDir:e,phase:n.phase,classic:null,archived:n.archived,invalidState:t instanceof Error&&t.message.includes("unknown field")}:null}}async function O_(e){let t=(await Y(e)).changesDir,n=[];if(!(await V(e,t,{label:"Classic changes directory",expected:"directory"})).exists)return n;for(let r of(await oa.readdir(t,{withFileTypes:!0})).sort((s,o)=>s.name.localeCompare(o.name))){if(r.name==="archive"||ge(r.name))continue;let s=await Oe(r.name,e);if(!s.exists||!s.stateExists)continue;let o=await wg(s.directory);!o||o.archived||n.push(o)}return n}var gu=Mn("classicActiveChanges",e=>O_(e)),yg=Mn("classicPlanReadiness",sa);function vg(e,t){return`${A(e,t.superpowersRoot)}/`}function bg(e,t){return Kn(e).startsWith(Kn(t))}function $_(e,t){return[{prefix:`${A(e,t.superpowersSpecsDir)}/`,field:"designDoc",wireField:"design_doc",phase:"design"},{prefix:`${A(e,t.superpowersPlansDir)}/`,field:"plan",wireField:"plan",phase:"build"},{prefix:`${A(e,t.superpowersReportsDir)}/`,field:"verificationReport",wireField:"verification_report",phase:"verify"}]}function A_(e,t){let n=Kn(e),i=t.find(s=>n.startsWith(Kn(s.prefix)));if(!i)return null;let r=n.slice(Kn(i.prefix).length);return!r||r.includes("/")||!r.endsWith(".md")?null:i}function Cg(e,t){return e.classic?.[t.field]??null}function I_(e,t){return e.classic!==null&&e.phase===t.phase&&!Cg(e,t)}async function pg(e,t,n){return I_(t,n)?!0:n.field!=="plan"||t.phase!=="build"?!1:(await yg(e,t.classic?.plan??null)).status==="broken"}function kg(e){return e.phase==="design"||e.phase==="build"||e.phase==="verify"}function qt(e){return e.changeDir?Ie.basename(e.changeDir):null}var N_=new Set(["design","plan","verify","verification","verification-report","report"]);function hg(e){return e.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}function T_(e,t){return[t.classic?.designDoc,t.classic?.plan,t.classic?.verificationReport].some(i=>i&&Kn(i)===Kn(e))}function j_(e,t){let i=(e.split("/").at(-1)??e).replace(/\.[^.]+$/u,"");if(i===t)return!0;let r=[...N_].map(hg).join("|");return new RegExp(`(^|[-_.])${hg(t)}[-_.](${r})$`,"u").test(i)}async function L_(e,t){let n=await gu(t),i=n.find(o=>T_(e,o));if(i)return{governing:i,match:"recorded"};let s=n.filter(kg).filter(o=>{let a=qt(o);return a!==null&&j_(e,a)}).sort((o,a)=>(qt(a)?.length??0)-(qt(o)?.length??0))[0];return s?{governing:s,match:"named"}:null}async function gg(e,t,n){let i=await gu(e);if(i.length===0)return null;if(n)return i.find(o=>qt(o)===n)??{blockedResult:Vr(t,`selected change '${n}' is no longer active`)};let r=await Qo(e);if(r.status==="stale")return{blockedResult:Vr(t,r.reason)};if(r.status==="selected"){let s=i.find(o=>qt(o)===r.selection.change);return s||{blockedResult:Vr(t,`selected change '${r.selection.change}' is no longer active`)}}if(i.length===1){let s=i[0];if(s.changeDir!==null){let o=await Nt(s.changeDir,{heal:!1,cwd:e}),a=qt(s)??"unknown";if(o.status==="drift")return{blockedResult:Vr(t,Lr(a,o.boundBranch,o.currentBranch))};if(o.status==="unbound-detached")return{blockedResult:Vr(t,Tt(a))}}return s}return{blockedResult:U_(t,i.map(s=>qt(s)).filter(Boolean))}}async function M_(e,t,n,i){let r=`${A(t,n.changesDir)}/`;if(e.startsWith(r)){let s=e.slice(r.length),[o]=s.split("/");if(o&&o!=="archive"){let a=await Oe(o,t);if(a.stateExists){let c=await wg(a.directory);return c||{changeDir:a.directory,phase:"open",classic:null,archived:!1}}return{changeDir:a.directory,phase:"open",classic:null,archived:!1}}}if(bg(e,vg(t,n))){let s=await L_(e,t);if(s?.match==="recorded")return{...s.governing,superpowersArtifact:"matched"};let o=A_(e,$_(t,n));if(s)return o?{...s.governing,superpowersArtifact:await pg(t,s.governing,o)?"matched":"unmatched",superpowersSlot:o}:{...s.governing,superpowersArtifact:"matched"};if(o){let l=await gg(t,e,i);return!l||"blockedResult"in l?l:{...l,superpowersArtifact:await pg(t,l,o)?"matched":"unmatched",superpowersSlot:o}}let a=await gu(t),c=i?a.find(l=>qt(l)===i)??null:a[0]??null;return c?{...c,superpowersArtifact:"unmatched"}:null}return gg(t,e,i)}function q_(e){return!e.includes("/")&&e.endsWith(".md")}function D_(e){return e.startsWith(".comet/")||e.includes("/.comet/")}function W_(e){return e===".superpowers"||e.startsWith(".superpowers/")}function F_(e,t,n){if(!e.startsWith(n))return null;let i=e.endsWith("/.comet.yaml")||e.endsWith("/.openspec.yaml"),r=e.endsWith("/proposal.md")||e.endsWith("/design.md")||e.endsWith("/tasks.md"),s=e.includes("/.comet/"),o=e.includes("/specs/");return t==="open"&&(r||i||s||o)?`${e} (phase: open, openspec artifacts)`:t==="design"&&(r||i||s||o)?`${e} (phase: design, handoff/spec)`:t==="build"&&(e.endsWith("/tasks.md")||i||o)?`${e} (phase: build, spec/tasks)`:t==="verify"&&(e.endsWith("/tasks.md")||i)?`${e} (phase: verify, tasks/state)`:t==="archive"&&i?`${e} (phase: archive, state)`:null}function B_(e,t){let n=t==="open"?[" BLOCKED: source writes are not allowed during open"," This phase does not allow source writes"," ALLOWED: create proposal/design/tasks artifacts and run guard"," NEXT: finish clarification and artifacts, then run guard --apply"]:t==="design"?[" BLOCKED: source writes are not allowed during design"," This phase does not allow source writes"," ALLOWED: run brainstorming, create the Design Doc, and run guard"," NEXT: finish the Design Doc, then run comet guard design --apply to enter build"]:[" BLOCKED: source writes are not allowed during archive"," This phase does not allow source writes"," ALLOWED: confirm archive state and run the archive script"];return st(2,["","╔══════════════════════════════════════════╗","║ COMET PHASE GUARD — WRITE BLOCKED ║","╚══════════════════════════════════════════╝","",` Current phase: ${t}`,` Target file: ${e}`,"",...n,""].join(` +`))}function H_(e){return st(2,["","╔══════════════════════════════════════════╗","║ COMET PHASE GUARD — WRITE BLOCKED ║","╚══════════════════════════════════════════╝",""," Current phase: build (workflow: full), but design_doc is empty",` Target file: ${e}`,""," BLOCKED: full workflow source writes require a recorded Design Doc"," This phase does not allow source writes until design_doc is recorded"," NEXT: return to design, create/link the Design Doc, then run guard again",""].join(` +`))}function K_(e,t,n,i,r){let s=qt(t)??"",o=n.status==="missing",a=o?"classic-build-plan-missing":"classic-build-plan-broken",c=o?"plan is not recorded":"the recorded plan path does not resolve to a file",l=o?[]:[`RECORDED_PLAN: ${n.recordedPath}`],u=t.changeDir?A(i,t.changeDir):"",f=A(i,r.superpowersPlansDir),d=o?`comet state set ${s} plan `:`comet state set ${s} plan `,p=o?["2. Load the Superpowers writing-plans Skill.",`3. Read the Design Doc path from "comet state get ${s} design_doc" and read ${u}/tasks.md.`,`4. Create the implementation plan under ${f}/.`,"5. Record the plan path:",` ${d}`]:[`2. Restore the plan file at ${n.recordedPath}, or load the Superpowers writing-plans Skill and create a replacement under ${f}/.`,"3. When creating a replacement, record its path:",` ${d}`];return st(2,["","╔══════════════════════════════════════════╗","║ COMET PHASE GUARD — WRITE BLOCKED ║","╚══════════════════════════════════════════╝","",`ERROR_CODE: ${a}`,`CHANGE: ${s}`,"WORKFLOW: full","PHASE: build",`TARGET: ${e}`,`STATE: ${c}`,...l,"","BLOCKED: project source writes require a ready Superpowers implementation plan.","","ALLOWED_RECOVERY_WRITES:",`- ${f}/.md`,"- Comet state updates performed by the comet CLI",`- ${u} artifacts allowed by the build phase`,"","RECOVERY:",`1. Invoke /comet-build for ${s} and resume Step 1.`,...p,`${o?"6":"4"}. Verify recovery:`,` comet state check ${s} build --recover`,"","SUCCESS: plan is reported as DONE and recovery advances beyond plan creation.",`RETRY: retry the original Write/Edit for ${e} only after SUCCESS.`,"PROHIBITED: do not treat tasks.md as the implementation plan or write project source before SUCCESS.","If writing-plans is unavailable, stop and report the missing Skill instead of bypassing this check.",""].join(` +`))}function J_(e,t){let n=t.superpowersSlot,i=n?Cg(t,n):null,r=n?t.phase!==n.phase?[` BLOCKED: ${n.wireField} cannot be first-written in phase ${t.phase}`,` Expected phase: ${n.phase}`," NEXT: resume the matching Comet phase or use an already recorded artifact path"]:i?[` BLOCKED: ${n.wireField} is already recorded for this change`,` Recorded path: ${i}`," 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 st(2,["","╔══════════════════════════════════════════╗","║ COMET PHASE GUARD — WRITE BLOCKED ║","╚══════════════════════════════════════════╝","",` Current phase: ${t.phase}`,` Target file: ${e}`,"",...r,""].join(` +`))}function U_(e,t){return st(2,["","╔══════════════════════════════════════════╗","║ COMET PHASE GUARD — WRITE BLOCKED ║","╚══════════════════════════════════════════╝",""," BLOCKED: multiple active changes require a current change",` Target file: ${e}`,` Active changes: ${t.join(", ")}`,""," NEXT: run comet state select , then retry the source write",""].join(` +`))}function Vr(e,t){return st(2,["","╔══════════════════════════════════════════╗","║ COMET PHASE GUARD — WRITE BLOCKED ║","╚══════════════════════════════════════════╝",""," BLOCKED: current change selection is stale or invalid",` Target file: ${e}`,` Reason: ${t}`,""," NEXT: run comet state select , then retry the source write",""].join(` +`))}async function G_(e,t,n,i=dg){try{if((await i(e,[t])).projectTargets.length===0)return rt(`${t} (outside guarded project)`)}catch(u){return st(2,[`[COMET-HOOK] blocked: scope could not be determined safely for ${t}.`,`REASON: ${u instanceof Error?u.message:String(u)}`,"NEXT: verify that the project root is accessible, then retry the write."].join(` +`))}let r=await P_(t,e),s;try{s=await Pe(e)}catch(u){return st(2,`[COMET-HOOK] blocked: ${u instanceof Error?u.message:String(u)}`)}if(D_(r))return rt(`${r} (whitelist: comet config)`);if(W_(r))return rt(`${r} (whitelist: superpowers workspace)`);if(r==="CLAUDE.md"||r==="CHANGELOG.md"||r==="README.md"||q_(r))return rt(`${r} (whitelist: root markdown)`);let o=await Tl(e,t,[Ie.join(e,".comet"),s.openSpecRoot,s.superpowersRoot]);if(o)return rt(o);let a;try{a=await M_(r,e,s,n)}catch(u){return st(2,`[COMET-HOOK] blocked: ${u instanceof Error?u.message:String(u)}`)}if(!a)return rt("no active comet change");if("blockedResult"in a)return a.blockedResult;if(a.archived)return rt(`${r} (own change archived)`);let c=a.phase,l=F_(r,c,`${A(e,s.openSpecRoot)}/`);if(l)return rt(l);if(bg(r,vg(e,s))){if(a.superpowersArtifact==="matched"&&kg(a))return rt(`${r} (phase: ${c}, superpowers)`);if(a.superpowersArtifact==="unmatched")return J_(r,a)}if(a.invalidState)return st(2,`[COMET-HOOK] blocked: active Classic state is invalid; repair .comet.yaml before writing ${r}`);if(c==="build"&&a.classic?.workflow==="full"&&!a.classic.designDoc)return H_(r);if(c==="build"&&a.classic?.workflow==="full"){let u=await yg(e,a.classic.plan);if(u.status!=="ready")return K_(r,a,u,e,s)}return c==="build"||c==="verify"?rt(`${r} (phase: ${c})`):B_(r,c)}var Sg=async e=>{let t=__(e),n=R_();return n?G_(t,n):rt("no file path in tool input")};var V_="comet.intent.v1";var Y_=["start_change","resume_change","fix_bug","make_tweak","ask_question","unknown"],z_=["change_id","workflow","file_path","command","capability","bug_signal","risk_signal"],X_=["start","resume","continue","fix","modify","create","verify","archive","question","unknown"],Eg=["full","hotfix","tweak"],Q_=["small","medium","large","unknown"],Z_=["full","hotfix","tweak","resume","ask_user","out_of_scope"],ex=["comet-open","comet-hotfix","comet-tweak","comet-design","comet-build","comet-verify","comet-archive"],tx=["user","repo","state"],Oi=class extends Error{constructor(n){super(`Invalid CometIntentFrame: ${n.map(i=>`- ${i}`).join(` -`)}`);this.issues=n}issues};function Te(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function gn(e,t,n,i){return typeof e!="string"||!t.includes(e)?(i.push(`${n} must be one of: ${t.join(", ")}`),null):e}function yu(e,t,n,i){return e==null?null:gn(e,t,n,i)}function _i(e,t,n){return typeof e!="string"||e.trim()===""?(n.push(`${t} must be a non-empty string`),""):e}function vu(e,t,n){return e==null?null:typeof e!="string"||e.trim()===""?(n.push(`${t} must be a non-empty string or null`),null):e}function xi(e,t,n){return e==null?null:typeof e!="boolean"?(n.push(`${t} must be boolean or null`),null):e}function Eg(e,t,n){return typeof e!="number"||Number.isNaN(e)||e<0||e>1?(n.push(`${t} must be a number between 0 and 1`),0):e}function ex(e,t,n){return typeof e!="number"||!Number.isInteger(e)||e<0?(n.push(`${t} must be a non-negative integer`),0):e}function tx(e){let t=[];if(!Te(e))throw new Pi(["frame must be an object"]);let n=Te(e.intent)?e.intent:{};Te(e.intent)||t.push("intent must be an object");let i=Te(e.slots)?e.slots:{};Te(e.slots)||t.push("slots must be an object");let r=Te(e.context)?e.context:{};Te(e.context)||t.push("context must be an object");let s=Te(e.proposed_route)?e.proposed_route:{};Te(e.proposed_route)||t.push("proposed_route must be an object");let o=e.entities===void 0?[]:Array.isArray(e.entities)?e.entities:[];e.entities!==void 0&&!Array.isArray(e.entities)&&t.push("entities must be an array");let a=Array.isArray(e.evidence)?e.evidence:[];Array.isArray(e.evidence)||t.push("evidence must be an array");let c={schema_version:gn(e.schema_version,[U_],"schema_version",t),utterance:_i(e.utterance,"utterance",t),locale:e.locale===void 0?"unknown":_i(e.locale,"locale",t),intent:{name:gn(n.name,G_,"intent.name",t)??"unknown",confidence:Eg(n.confidence,"intent.confidence",t)},entities:o.map((l,u)=>{let f=Te(l)?l:{};return Te(l)||t.push(`entities[${u}] must be an object`),{type:gn(f.type,V_,`entities[${u}].type`,t)??"risk_signal",value:_i(f.value,`entities[${u}].value`,t),text:_i(f.text,`entities[${u}].text`,t)}}),slots:{requested_action:gn(i.requested_action,Y_,"slots.requested_action",t)??"unknown",workflow_candidate:yu(i.workflow_candidate,Sg,"slots.workflow_candidate",t),user_explicit_workflow:yu(i.user_explicit_workflow,Sg,"slots.user_explicit_workflow",t),change_id:vu(i.change_id,"slots.change_id",t),target_area:vu(i.target_area,"slots.target_area",t),scope:i.scope===void 0?"unknown":gn(i.scope,z_,"slots.scope",t)??"unknown",existing_behavior:xi(i.existing_behavior,"slots.existing_behavior",t),new_capability:xi(i.new_capability,"slots.new_capability",t),public_api_change:xi(i.public_api_change,"slots.public_api_change",t),schema_change:xi(i.schema_change,"slots.schema_change",t),cross_module_change:xi(i.cross_module_change,"slots.cross_module_change",t)},context:{active_changes_count:ex(r.active_changes_count,"context.active_changes_count",t),active_change_names:Te(r)?Array.isArray(r.active_change_names)?r.active_change_names.every(l=>typeof l=="string")?r.active_change_names:(t.push("context.active_change_names must only contain strings"),[]):(t.push("context.active_change_names must be an array"),[]):[],dirty_worktree:xi(r.dirty_worktree,"context.dirty_worktree",t)},evidence:a.map((l,u)=>{let f=Te(l)?l:{};return Te(l)||t.push(`evidence[${u}] must be an object`),{field:_i(f.field,`evidence[${u}].field`,t),quote:_i(f.quote,`evidence[${u}].quote`,t),source:gn(f.source,Z_,`evidence[${u}].source`,t)??"user"}}),proposed_route:{name:gn(s.name,X_,"proposed_route.name",t)??"ask_user",next_skill:yu(s.next_skill,Q_,"proposed_route.next_skill",t),confidence:Eg(s.confidence,"proposed_route.confidence",t),requires_confirmation:typeof s.requires_confirmation=="boolean"?s.requires_confirmation:!0,fallback_reason:vu(s.fallback_reason,"proposed_route.fallback_reason",t)}};if(t.length>0)throw new Pi(t);return c}function bu(e,t){return e.evidence.some(n=>n.field===t&&n.quote.trim()!=="")}function Rg(e){return e.slots.new_capability===!0||e.slots.public_api_change===!0||e.slots.schema_change===!0||e.slots.cross_module_change===!0}function Jn(e,t,n=null){return{name:e,next_skill:{full:"comet-open",hotfix:"comet-hotfix",tweak:"comet-tweak",resume:null,ask_user:null,out_of_scope:null}[e],confidence:t,requires_confirmation:e==="ask_user"||e==="out_of_scope",fallback_reason:n}}function Yr(e){return Jn("ask_user",.5,e)}function _g(e,t){return Jn(e,t)}function xg(e){let t=tx(e),n=[],i=t.intent.confidence,r;return t.intent.confidence<.7?r=Yr(`intent confidence ${t.intent.confidence} is below ${.7}`):(t.intent.name==="resume_change"||t.slots.requested_action==="resume"||t.slots.requested_action==="continue")&&!t.slots.change_id&&t.context.active_changes_count>1?r=Yr("multiple active changes require an explicit change_id"):(t.intent.name==="resume_change"||t.slots.requested_action==="resume"||t.slots.requested_action==="continue")&&t.slots.change_id?r=t.context.active_change_names.includes(t.slots.change_id)?Jn("resume",i):Yr(`change_id '${t.slots.change_id}' is not in active_change_names`):t.intent.name==="ask_question"||t.slots.requested_action==="question"?r=Jn("out_of_scope",i,"user asked a question without requesting a Comet workflow"):t.slots.user_explicit_workflow&&t.slots.user_explicit_workflow!=="full"&&Rg(t)?r=Yr(`explicit workflow '${t.slots.user_explicit_workflow}' conflicts with risk signals`):t.slots.user_explicit_workflow?r=_g(t.slots.user_explicit_workflow,i):Rg(t)?r=Jn("full",i):t.intent.name==="fix_bug"&&t.slots.existing_behavior===!0&&bu(t,"slots.workflow_candidate")?r=Jn("hotfix",i):t.intent.name==="make_tweak"&&t.slots.workflow_candidate==="tweak"&&bu(t,"slots.workflow_candidate")?r=Jn("tweak",i):t.slots.workflow_candidate&&bu(t,"slots.workflow_candidate")?r=_g(t.slots.workflow_candidate,i):r=Yr("workflow_candidate evidence is missing or route is ambiguous"),r.name!==t.proposed_route.name&&n.push(`agent proposed_route '${t.proposed_route.name}' normalized to '${r.name}'`),r.next_skill!==t.proposed_route.next_skill&&n.push(`agent proposed_route next_skill '${t.proposed_route.next_skill}' normalized to '${r.next_skill}'`),r.requires_confirmation!==t.proposed_route.requires_confirmation&&n.push(`agent proposed_route requires_confirmation '${t.proposed_route.requires_confirmation}' normalized to '${r.requires_confirmation}'`),r.fallback_reason!==t.proposed_route.fallback_reason&&n.push(`agent proposed_route fallback_reason '${t.proposed_route.fallback_reason}' normalized to '${r.fallback_reason}'`),{route:r,diagnostics:n,normalizedFrame:{...t,route:r}}}function aa(e,t,n){return{exitCode:e,...t===void 0?{}:{stdout:t},...n===void 0?{}:{stderr:n}}}function Pg(){return aa(64,void 0,`Usage: comet-intent.mjs route -Usage: comet-intent.mjs route --stdin`)}async function nx(){let e=[];for await(let t of process.stdin)e.push(Buffer.isBuffer(t)?t:Buffer.from(String(t)));return Buffer.concat(e).toString("utf8")}var Og=async(e,t)=>{let[n,i]=e;if(n!=="route")return Pg();let r=i==="--stdin"?await nx():i;if(!r)return Pg();try{let s=xg(JSON.parse(r));return aa(0,`${JSON.stringify(s,null,2)} -`)}catch(s){if(s instanceof SyntaxError)return aa(1,void 0,`Invalid JSON: ${s.message}`);if(s instanceof Pi)return aa(1,void 0,s.message);throw s}};import{spawn as ix}from"child_process";var Oi="comet.resume_probe.v1";function $g(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function rx(e){if(!$g(e))throw new Error("Invalid CometResumeProbeInput: input must be an object");if(e.schema_version!==Oi)throw new Error(`Invalid CometResumeProbeInput: schema_version must be ${Oi}`);if(typeof e.utterance!="string")throw new Error("Invalid CometResumeProbeInput: utterance must be a string");let t=$g(e.agent_context)?e.agent_context:{};return{schema_version:Oi,utterance:e.utterance,locale:typeof e.locale=="string"?e.locale:"unknown",agent_context:{non_trivial_work:t.non_trivial_work===!0,already_in_comet_flow:t.already_in_comet_flow===!0}}}function je(e,t,n,i,r=[]){return{schema_version:Oi,action:e,changeName:t?.name??null,phase:t?.phase??null,nextCommand:e==="auto_resume"||e==="ask_user"?t?.nextCommand??null:null,confidence:n,reason:i,evidence:r}}async function sx(e,t,n){return await X(e,t,{label:n,expected:"file"})?F(e,t,{label:n}):""}async function Ag(e,t,n){let i=["proposal.md","design.md","tasks.md"],r=[n.name,n.workflow,n.phase];for(let s of i)r.push(await sx(e,`${t}/${s}`,`Classic change ${n.name} ${s}`));return r.join(` -`).toLowerCase()}function ox(e){switch(e){case"open":return"/comet-open";case"design":return"/comet-design";case"build":return"/comet-build";case"verify":return"/comet-verify";case"archive":return"/comet-archive";default:return null}}function ax(e,t,n){let i=n.classic,r=n.unknownKeys.filter(s=>s!=="run_id");return i?r.length>0?{name:t,valid:!1,workflow:i.workflow,phase:i.phase,currentStep:null,nextCommand:null,runtimeMode:"invalid",runtimeEval:null,evidence:[],error:`unknown field(s): ${r.join(", ")}`}:{name:t,valid:!0,workflow:i.workflow,phase:i.phase,currentStep:null,nextCommand:ox(i.phase),runtimeMode:"engine-projection",runtimeEval:null,evidence:[]}:{name:t,valid:!1,workflow:"unknown",phase:"invalid",currentStep:null,nextCommand:null,runtimeMode:"invalid",runtimeEval:null,evidence:[],error:`${e} does not contain valid Comet state`}}async function cx(e,t){return await X(e,`${t}/proposal.md`,{label:"Classic proposal",expected:"file"})||await X(e,`${t}/design.md`,{label:"Classic design",expected:"file"})||await X(e,`${t}/tasks.md`,{label:"Classic tasks",expected:"file"})}async function lx(e){let t=(await Y(e)).changesDir;if(!(await V(e,t,{label:"Classic changes directory",expected:"directory"})).exists)return[];let i=await Ju(t),r=[];for(let s of i){if(s==="archive"||ge(s))continue;let o=await Oe(s,e);if(!o.exists)continue;let a=o.directory;if(!o.stateExists){if(!await cx(e,a))continue;let m={name:s,workflow:"unknown",phase:"invalid",nextCommand:null,diagnostic:{name:s,valid:!1,workflow:"unknown",phase:"invalid",currentStep:null,nextCommand:null,runtimeMode:"invalid",runtimeEval:null,evidence:[],error:"missing Comet state"},buildPause:null,hasClassicProjection:!1,verifyResult:null,text:"",missingCometState:!0};m.text=await Ag(e,a,m),r.push(m);continue}let l=await B(a,{migrate:!1}),u=l.classic,f=ax(a,s,l),d=!!u,p=u?.phase??f.phase,g=u?.workflow??f.workflow;if(p==="archive"||u?.archived)continue;let h={name:s,workflow:g,phase:p,nextCommand:f.nextCommand,diagnostic:f,buildPause:u?.buildPause??null,hasClassicProjection:d,verifyResult:u?.verifyResult??null,text:"",missingCometState:!1};h.text=await Ag(e,a,h),r.push(h)}return r}var ux=["continue","resume","carry on","finish","run it","commit","verify","archive","继续","接着","恢复","跑完","提交","验证","归档","修刚才"],fx=["what","why","how","explain","summarize","reliable","靠谱吗","是什么","为什么","解释","总结","取名","命名"],dx=new Set(["add","build","cache","change","code","design","docs","file","fix","implement","plan","readme","task","test","update","修改","更新","修复","添加","文档","任务","计划","实现"]),mx=["do not resume","don't resume","without comet","skip comet","不要恢复","不走 comet","不要走 comet","直接解释","只回答"];function Cu(e,t){return t.some(n=>e.includes(n))}function Ig(e){return e.missingCometState||!e.hasClassicProjection||!e.diagnostic.valid||e.phase==="archive"||e.verifyResult==="fail"||e.diagnostic.runtimeEval&&!e.diagnostic.runtimeEval.passed?!0:e.phase!=="build"?!1:e.buildPause==="plan-ready"}function px(e,t){let n=e.toLowerCase(),i=[];n.includes(t.name.toLowerCase())&&i.push({source:"user",quote:t.name});let r=t.text.split(/[^a-zA-Z0-9_\-\u4e00-\u9fff/]+/u).map(o=>o.trim().toLowerCase()).filter(o=>o.length>=4&&!dx.has(o)),s=[...new Set(r.filter(o=>n.includes(o)))].slice(0,3);for(let o of s)i.push({source:"repo",quote:o});return i}async function hx(e){return new Promise(t=>{let n=ix("git",["status","--short","--untracked-files=all"],{cwd:e,stdio:["ignore","pipe","ignore"],shell:!1}),i=[];n.stdout.on("data",r=>{i.push(Buffer.isBuffer(r)?r:Buffer.from(String(r)))}),n.on("error",()=>t([])),n.on("exit",r=>{if(r!==0){t([]);return}let s=Buffer.concat(i).toString("utf8").split(/\r?\n/u).map(o=>o.trim()).filter(Boolean);t(s)})})}async function Ng(e,t){let n=rx(t),i=n.utterance.trim(),r=i.toLowerCase();if(n.agent_context.already_in_comet_flow)return je("out_of_scope",null,"low","already in Comet flow");if(Cu(r,mx))return je("out_of_scope",null,"low","user opted out of Comet resume",[{source:"user",quote:i}]);let s=await lx(e);if(s.length===0)return je("none",null,"none","no active Comet changes");let o=await hx(e);if(s.length>1){let f=s.find(d=>r.includes(d.name.toLowerCase()));return f?o.length>0?je("ask_user",f,"low","uncommitted worktree changes require attribution",[{source:"repo",quote:`${o.length} dirty file(s)`}]):Ig(f)?je("ask_user",f,"low","active change is at a decision point"):je("auto_resume",f,"high","request names an active change",[{source:"user",quote:f.name}]):je("ask_user",null,"low","multiple active changes require a change name")}let[a]=s;if(o.length>0)return je("ask_user",a,"low","uncommitted worktree changes require attribution",[{source:"repo",quote:`${o.length} dirty file(s)`}]);if(Ig(a))return a.missingCometState?je("ask_user",a,"low","active OpenSpec change is missing Comet state"):je("ask_user",a,"low","active change is at a decision point",[{source:"state",quote:`phase: ${a.phase}`}]);let c=Cu(r,ux);if(!n.agent_context.non_trivial_work&&Cu(r,fx)&&!c)return je("out_of_scope",a,"low","user asked a question without workflow work");let u=px(i,a);return c||u.length>0?je("auto_resume",a,"high","single active change and request is related",[{source:"state",quote:`phase: ${a.phase}`},...u]):n.agent_context.non_trivial_work?je("ask_user",a,"low","single active change exists but request looks unrelated"):je("out_of_scope",a,"low","request is not workflow work")}function ca(e,t,n){return{exitCode:e,...t===void 0?{}:{stdout:t},...n===void 0?{}:{stderr:n}}}function Tg(){return ca(64,void 0,`Usage: comet-resume-probe.mjs probe -Usage: comet-resume-probe.mjs probe --stdin`)}async function gx(){let e=[];for await(let t of process.stdin)e.push(Buffer.isBuffer(t)?t:Buffer.from(String(t)));return Buffer.concat(e).toString("utf8")}function wx(e){return{schema_version:Oi,utterance:e,locale:"unknown",agent_context:{non_trivial_work:!0,already_in_comet_flow:!1}}}function yx(e){try{return JSON.parse(e)}catch{return wx(e)}}var jg=async(e,t)=>yt(t,async()=>{let[n,i]=e;if(n!=="probe")return Tg();let r=i==="--stdin",s=r?await gx():i;if(!s)return Tg();try{let o=r?yx(s):JSON.parse(s),a=await Ng(_(),o);return ca(0,`${JSON.stringify(a,null,2)} -`)}catch(o){return o instanceof SyntaxError?ca(1,void 0,`Invalid JSON: ${o.message}`):ca(1,void 0,o instanceof Error?o.message:String(o))}});hr();mt();ht();_e();import{createHash as es,randomUUID as wa}from"crypto";import{promises as ne}from"fs";import $ from"path";var _u=".comet/classic-root-move.json",xu=".comet/transactions/classic-root-move//openspec",Bg=["handoff hashes","Run state","checkpoints","trajectory","archived evidence and artifact pointers"],Hg=["approved plan ID still matches layout, source identity and manifest, target identity, and configuration","no pending root-move recovery transaction","target remains absent or the bound empty directory","source, target, staging, transaction, and config paths remain protected"],ma=5e4,da=512*1024*1024,Lg=16*1024*1024,bt=/^[a-f0-9]{64}$/u,Kg=/^[a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$/u,Jg=Symbol("ClassicRootMoveJournalClaim");function at(e,t){return $.relative(e,t).replaceAll("\\","/")}async function ji(e,t,n,i="directory"){await T(e,at(e,t),{label:`Classic root move physical path ${n}`,expected:i})}function Ug(e,t){return qe(e,t)}async function Le(e,t,n){let i=$.resolve(e),r=$.resolve(t),s=$.relative(i,r);if($.isAbsolute(s)||s===".."||s.startsWith(`..${$.sep}`))throw new Error(`${n} must stay inside the project root`);r!==i&&await ji(e,t,n,"directory");let o=[i],a=i;for(let l of s.split($.sep).filter(Boolean))a=$.join(a,l),o.push(a);let c=[];for(let l of o){let u=await ne.lstat(l,{bigint:!0});if(!u.isDirectory()||u.isSymbolicLink())throw new Error(`${n} crosses a symbolic link or junction`);c.push({path:l,identity:Yn(u),stat:u})}return{entries:c}}async function G(e,t){for(let n of e.entries){let i=await ne.lstat(n.path,{bigint:!0});if(!i.isDirectory()||i.isSymbolicLink()||!Ug(n.identity,Yn(i)))throw new Error(`${t} changed after inspection`)}}async function vx(e,t,n,i){let r=await Le(e,t,n);await i?.afterDirectoryInspect?.(n),await G(r,n);let s=await ne.readdir(t,{withFileTypes:!0});return await G(r,n),s}async function Gn(e,t,n){try{return await Le(e,t,n),!0}catch(i){if(i.code==="ENOENT")return!1;throw i}}async function $i(e,t,n,i){let r=$.resolve(e),s=$.resolve(t),o=$.relative(r,s);if($.isAbsolute(o)||o===".."||o.startsWith(`..${$.sep}`))throw new Error(`${n} must stay inside the project root`);let a=r;for(let c of o.split($.sep).filter(Boolean)){let l=$.join(a,c);try{let u=await ne.lstat(l,{bigint:!0});if(!u.isDirectory()||u.isSymbolicLink())throw new Error(`${n} crosses a symbolic link or junction`)}catch(u){if(u.code!=="ENOENT")throw u;let f=await Le(e,a,n),d=`create-directory:${at(e,l)}`;await i?.beforeMutation?.(d),await G(f,n);try{await ne.mkdir(l)}catch(g){if(g.code!=="EEXIST")throw g}await G(f,n);let p=await ne.lstat(l,{bigint:!0});if(!p.isDirectory()||p.isSymbolicLink())throw new Error(`${n} changed while creating a directory`,{cause:u})}a=l}await ji(e,t,n,"directory")}async function Li(e,t,n){let i=await ne.lstat(e,{bigint:!0});if(i.isSymbolicLink()||(t==="file"?!i.isFile():!i.isDirectory()))throw new Error(`${n} must be a real ${t}`);return i}async function ot(e,t,n){let i=await ne.lstat(e,{bigint:!0}),r=t.isDirectory()?Ug(Yn(t),Yn(i)):ba(t,i);if(i.isSymbolicLink()||i.isFile()!==t.isFile()||i.isDirectory()!==t.isDirectory()||!r)throw new Error(`${n} changed after inspection`)}async function Pu(e,t,n,i,r){let s=`Classic root move ${i}`,o=await Le(e,$.dirname(t),s);await r?.beforeMutation?.(i),await G(o,s);let a=await ne.open(t,"wx");try{await G(o,s),await a.writeFile(n),await a.sync()}finally{await a.close()}await G(o,s),await ji(e,t,s,"file")}async function ya(e,t,n,i,r){let s=`Classic root move ${i}`,o=await Le(e,$.dirname(t),s),a=await Le(e,$.dirname(n),s),c=await Li(t,"file",s);await r?.beforeMutation?.(i),await G(o,s),await G(a,s),await ot(t,c,s),await ne.link(t,n),await G(o,s),await G(a,s),await ot(n,c,s)}async function Mg(e,t,n,i,r,s={}){let o=`Classic root move ${i}`,a=await Le(e,$.dirname(t),o),c=await Le(e,$.dirname(n),o),l=await Li(t,(await ne.lstat(t)).isDirectory()?"directory":"file",o);if(s.replaceTarget)s.expectedTargetIdentity&&await ot(n,s.expectedTargetIdentity,o);else if((await T(e,at(e,n),{label:o,expected:"any"})).exists)throw new Error(`${o} target already exists`);await r?.beforeMutation?.(i),await G(a,o),await G(c,o),await ot(t,l,o),s.expectedTargetIdentity&&await ot(n,s.expectedTargetIdentity,o),await s.validateTarget?.(),await ne.rename(t,n),await G(a,o),await G(c,o),await ot(n,l,o)}async function Vn(e,t,n,i,r={}){let s=`Classic root move ${n}`,o;try{o=await Li(t,"file",s)}catch(c){if(c.code==="ENOENT")return!1;throw c}r.expectedIdentity&&await ot(t,r.expectedIdentity,s);let a=await Le(e,$.dirname(t),s);return await i?.beforeMutation?.(n),await G(a,s),await ot(t,o,s),r.expectedIdentity&&await ot(t,r.expectedIdentity,s),await r.validateTarget?.(),await ne.unlink(t),await G(a,s),!0}async function pa(e,t,n,i,r){let s=`Classic root move ${n}`,o;try{o=await Li(t,"directory",s)}catch(l){if(l.code==="ENOENT")return!1;throw l}if(r&&!Ou(ga(o,`Classic root move ${n}`),r))throw new Error(`Classic root move ${n} changed after migration preflight`);let a=await Le(e,$.dirname(t),s);await i?.beforeMutation?.(n),await G(a,s),await ot(t,o,s);let c=await ne.readdir(t);if(await G(a,s),await ot(t,o,s),c.length>0)throw new Error(`${s} directory is not empty`);return await ne.rmdir(t),await G(a,s),!0}async function va(e,t){let n=Qe(e,"legacy"),i=Qe(e,"docs"),r=$.join(e,".comet","transactions","classic-root-move"),s=[[$.join(e,".comet"),".comet","directory"],[$.join(e,".comet","config.yaml"),".comet/config.yaml","file"],[n.openSpecRoot,"openspec","directory"],[$.dirname(i.openSpecRoot),"docs","directory"],[i.openSpecRoot,"docs/openspec","directory"],[$.join(e,".comet","transactions"),".comet/transactions","directory"],[r,".comet/transactions/classic-root-move","directory"]];if(t){let o=$.join(r,t);s.push([o,`transaction ${t}`,"directory"],[$.join(o,"openspec"),`transaction ${t} staging`,"directory"],[$.join(o,"legacy-source"),`transaction ${t} quarantine`,"directory"])}for(let[o,a,c]of s)await ji(e,o,a,c)}async function Gg(e,t,n,i){let r=Xn(e);await $i(e,$.dirname(r),"Classic root move journal parent",i);let s=`${r}.${wa()}.tmp`,o=JSON.stringify(n,null,2)+` -`,a;try{await Pu(e,s,o,"update-journal-temp",i);let c=await Li(s,"file","Classic root move updated journal");a=await tw(e,t,"update-journal-commit",i);try{await ya(e,s,r,"update-journal-publish",i)}catch(f){throw new Error("Classic root move journal publish failed; a successor journal was preserved",{cause:f})}let l=await Ni(e),u=l?Ti(l):null;if(!l||l.id!==n.id||l.stage!==n.stage||l.planId!==n.planId||l.schema!==n.schema||!u||u.contentHash!==Ai(Buffer.from(o))||!ba(c,u.fileIdentity))throw new Error("Classic root move journal ownership changed while updating");return await Vn(e,a.file,"cleanup-update-journal-quarantine",i,{expectedIdentity:Ti(a.journal).fileIdentity}),a=void 0,l}catch(c){throw a&&await ew(e,a,"restore-update-journal",i).catch(()=>!1),c}finally{await Vn(e,s,"cleanup-update-journal-temp").catch(()=>!1)}}async function bx(e,t,n,i){await $i(e,$.dirname(t),"Classic root move journal parent",i);let r=`${t}.${wa()}.tmp`;try{await Pu(e,r,JSON.stringify(n,null,2)+` -`,"create-journal-temp",i),await ya(e,r,t,"create-journal-commit",i)}catch(s){throw s.code==="EEXIST"?new Error("Classic root move is incomplete; use comet doctor --repair --strategy continue|rollback",{cause:s}):s}finally{await Vn(e,r,"cleanup-create-journal-temp").catch(()=>!1)}}function Vg(e){return es("sha256").update(JSON.stringify({directories:e.directories,files:e.files,totalBytes:e.totalBytes})).digest("hex")}function Xr(e,t){return et?1:0}function la(e,t){return e.every((n,i)=>i===0||t(e[i-1],n)<=0)}function Yg(e){return es("sha256").update(JSON.stringify({source:e.source,target:e.target,staging:e.staging,artifactLayout:e.artifactLayout,sourceIdentity:e.sourceIdentity,targetInitialIdentity:e.targetInitialIdentity,targetInitialState:e.targetInitialState,fileCount:e.fileCount,directoryCount:e.directoryCount,totalBytes:e.totalBytes,manifestHash:e.manifestHash,configPath:e.configPath,originalConfigHash:e.originalConfigHash,expectedConfigHash:e.expectedConfigHash})).digest("hex")}function Cx(e){return es("sha256").update(JSON.stringify({source:e.source,target:e.target,staging:xu,targetInitialState:e.targetInitialState,fileCount:e.fileCount,directoryCount:e.directoryCount,totalBytes:e.totalBytes,manifestHash:e.manifestHash,configPath:e.configPath,originalConfigHash:e.originalConfigHash,expectedConfigHash:e.expectedConfigHash})).digest("hex")}function ha(e){return"birthtimeNs"in e&&typeof e.birthtimeNs=="bigint"?e.birthtimeNs:e.birthtimeMs}function Su(e){return"ctimeNs"in e&&typeof e.ctimeNs=="bigint"?e.ctimeNs:e.ctimeMs}function kx(e){return"mtimeNs"in e&&typeof e.mtimeNs=="bigint"?e.mtimeNs:e.mtimeMs}function Yn(e){return{dev:e.dev,ino:e.ino,birthtime:ha(e)}}function zr(e){return String(e)}function ga(e,t){let n=Yn(e);if(!Pn(n,n))throw new Error(`${t} filesystem does not expose a stable device and file identity; refusing an auditable root move`);return{dev:zr(e.dev),ino:zr(e.ino),birthtime:zr(ha(e)),ctime:zr(Su(e)),mtime:zr(kx(e))}}function Sx(e,t,n){return t.entries.map(i=>{let r=ga(i.stat,n);return{path:at(e,i.path)||".",dev:r.dev,ino:r.ino,birthtime:r.birthtime}})}function Ou(e,t){return JSON.stringify(e)===JSON.stringify(t)}function zg(e,t){return e.length===t.length&&e.every((n,i)=>Ou(n,t[i]))}async function Eu(e,t,n){let i=await Le(e,t,n);return await G(i,n),Sx(e,i,n)}function ba(e,t){let n=Yn(e),i=Yn(t);return Pn(n,i)?qe(n,i):qe(n,i)&&ha(e)===ha(t)&&Su(e)===Su(t)&&e.size===t.size}function Ai(e){return es("sha256").update(e).digest("hex")}async function Qr(e,t,n,i,r){let s=await J(e,at(e,t),n,{label:i,bigint:!0});if(r&&!ba(r,s.stat))throw new Error(`${i} changed while reading`);if(BigInt(s.stat.size)!==BigInt(s.bytes.byteLength))throw new Error(`${i} changed while reading`);return s.bytes}async function Xg(e){let t=await $n(e,{allowPartialProject:!0});if(!t.document||!t.identity.exists||!t.identity.sha256)throw new Error(".comet/config.yaml does not exist");return t}async function $u(e){return(await Xg(e)).identity.sha256}function Ex(e){let t=e.value.classic;if(!t||typeof t!="object"||Array.isArray(t))throw new Error("classic must be a mapping");let n=xn({...e.value,classic:{...t,artifact_layout:"docs"}},e.classic?.language==="zh-CN"||e.native?.language==="zh-CN"?"zh-CN":"en");return es("sha256").update(n).digest("hex")}async function Ca(e,t,n){let i=[],r=[],s=0;async function o(c,l){await ji(e,c,l||at(e,t),"directory");let u=await vx(e,c,`tree:${l||at(e,t)}`,n);for(let f of u.sort((d,p)=>Xr(d.name,p.name))){let d=$.join(c,f.name),p=l?`${l}/${f.name}`:f.name,g=await ne.lstat(d,{bigint:!0});if(g.isSymbolicLink())throw new Error(`Classic root move does not support symbolic links or junctions: ${p}`);if(g.isDirectory()){i.push(p),await o(d,p);continue}if(!g.isFile())throw new Error(`Classic root move supports only regular files and directories: ${p}`);if(await n?.afterSourceFileInspect?.(p),r.length+1>ma)throw new Error(`Classic root move exceeds ${ma} files`);let h=da-s,m=await Qr(e,d,Math.max(1,h),`Classic root move source file ${p}`,g);if(s+=m.byteLength,s>da)throw new Error(`Classic root move exceeds ${da} bytes`);r.push({path:p,size:m.byteLength,hash:Ai(m)})}}await o(t,""),i.sort(Xr),r.sort((c,l)=>Xr(c.path,l.path));let a={directories:i,files:r,totalBytes:s};return{...a,hash:Vg(a)}}function Au(e,t){return e.hash===t.hash}async function Rx(e,t,n){try{let i=await Le(e,t,"docs-target"),r=i.entries.at(-1);if(!r)throw new Error("Classic docs target identity is unavailable");let s=ga(r.stat,"Classic docs target");await n?.afterDirectoryInspect?.("docs-target"),await G(i,"docs-target");let o=await ne.readdir(t,{withFileTypes:!0});await G(i,"docs-target");let c=(await Le(e,t,"docs-target")).entries.at(-1),l=c?ga(c.stat,"Classic docs target"):null;if(!l||!Ou(s,l))throw new Error("Classic docs target changed after inspection");return o.length>0?{state:"non-empty",conflicts:["Classic docs target is not empty"],identity:l}:{state:"empty",conflicts:[],identity:l}}catch(i){if(i.code==="ENOENT")return{state:"missing",conflicts:[],identity:null};throw i}}async function _x(e){if(await op(e),await on(e)!=="legacy")throw new Error("Classic root move requires classic.artifact_layout: legacy")}async function Ru(e,t={}){if(await va(e),await _x(e),await on(e)!=="legacy")throw new Error("Classic root move requires the legacy layout");let n=Qe(e,"legacy"),i=Qe(e,"docs");if(!await Gn(e,n.openSpecRoot,"Classic legacy root"))throw new Error("Classic legacy root does not exist: openspec/");let r=await Eu(e,n.openSpecRoot,"Classic legacy root identity"),s=await Ca(e,n.openSpecRoot,t.testHooks),o=await Eu(e,n.openSpecRoot,"Classic legacy root identity");if(!zg(r,o))throw new Error("Classic legacy root identity changed during migration preflight");let a=await Rx(e,i.openSpecRoot,t.testHooks),c=await Xg(e);await t.testHooks?.afterConfigSnapshot?.();let l=c.identity.sha256,u=Ex(c.document),f={source:at(e,n.openSpecRoot),target:at(e,i.openSpecRoot),staging:xu,artifactLayout:"legacy",sourceIdentity:o,targetInitialIdentity:a.identity,targetInitialState:a.state,fileCount:s.files.length,directoryCount:s.directories.length,totalBytes:s.totalBytes,manifestHash:s.hash,configPath:ce,originalConfigHash:l,expectedConfigHash:u};return{manifest:s,plan:{projectRoot:e,...f,configHash:l,planId:Yg(f),fileSummary:s.files.map(d=>({...d})),configChange:{from:"legacy",to:"docs"},conflicts:a.conflicts,blockers:[],pendingRecovery:null,historicalPointersPreserved:[...Bg],applyPreconditions:[...Hg],allowedRecoveryStrategies:[],readyToApply:a.conflicts.length===0}}}async function xx(e,t,n,i,r){await $i(e,n,"Classic root move staging root",r);for(let s of i.directories)await $i(e,$.join(n,...s.split("/")),`Classic root move staging directory ${s}`,r);for(let s of i.files){await r?.beforeSourceFileCopy?.(s.path);let o=$.join(t,...s.path.split("/")),a=await Qr(e,o,Math.max(1,s.size),`Classic root move source file ${s.path}`);if(a.byteLength!==s.size||Ai(a)!==s.hash)throw new Error("Classic legacy root changed after migration preflight");let c=$.join(n,...s.path.split("/"));if(await $i(e,$.dirname(c),`Classic root move staging parent ${s.path}`,r),(await T(e,at(e,c),{label:`Classic root move staging file ${s.path}`,expected:"file"})).exists)throw new Error("Classic root move staging changed after migration preflight");await Pu(e,c,a,`copy-file:${s.path}`,r);let u=await Qr(e,c,Math.max(1,s.size),`Classic root move staging file ${s.path}`);if(u.byteLength!==s.size||Ai(u)!==s.hash)throw new Error("Classic root move staging verification failed")}}function Xn(e){return $.join(e,..._u.split("/"))}function D(e){return new Error(`invalid Classic root move journal: ${e}`)}function Ii(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw D(`${t} must be an object`);return e}function zn(e,t,n){let i=Object.keys(e).sort(),r=[...t].sort();if(JSON.stringify(i)!==JSON.stringify(r))throw D(`${n} fields are invalid`)}function qg(e,t){if(typeof e!="string"||e.length===0||e.includes("\\"))throw D(`${t} is invalid`);let n=e.split("/");if($.posix.isAbsolute(e)||n.some(i=>i===""||i==="."||i==="..")||$.posix.normalize(e)!==e)throw D(`${t} must stay inside the migration tree`);return e}function Qg(e){let t=Ii(e,"manifest");if(zn(t,["directories","files","totalBytes","hash"],"manifest"),!Array.isArray(t.directories)||!Array.isArray(t.files)||!Number.isSafeInteger(t.totalBytes)||t.totalBytes<0||t.totalBytes>da||typeof t.hash!="string"||!bt.test(t.hash))throw D("manifest shape is invalid");let n=t.directories.map((u,f)=>qg(u,`manifest path directories[${f}]`)),i=t.files.map((u,f)=>{let d=Ii(u,`manifest.files[${f}]`);zn(d,["path","size","hash"],`manifest.files[${f}]`);let p=qg(d.path,`manifest path files[${f}]`);if(!Number.isSafeInteger(d.size)||d.size<0||typeof d.hash!="string"||!bt.test(d.hash))throw D(`manifest.files[${f}] is invalid`);return{path:p,size:d.size,hash:d.hash}});if(i.length>ma)throw D(`manifest exceeds ${ma} files`);let r=i.map(u=>u.path),s=new Set(n).size!==n.length||new Set(r).size!==r.length,o=la(n,Xr)&&la(r,Xr)||la(n,(u,f)=>u.localeCompare(f))&&la(r,(u,f)=>u.localeCompare(f));if(s||!o)throw D("manifest paths must be unique and sorted");let a=i.reduce((u,f)=>u+f.size,0);if(a!==t.totalBytes)throw D("manifest totalBytes does not match its files");let c={directories:n,files:i,totalBytes:a},l=Vg(c);if(l!==t.hash)throw D("manifest hash is invalid");return{...c,hash:l}}function Zg(e,t){let n=Ii(e,t);zn(n,["dev","ino","birthtime"],t);let i=/^-?[0-9]+$/u;for(let r of["dev","ino","birthtime"])if(typeof n[r]!="string"||!i.test(n[r]))throw D(`${t}.${r} is invalid`);if(n.dev==="0"||n.ino==="0")throw D(`${t} does not contain a stable filesystem identity`);return{dev:n.dev,ino:n.ino,birthtime:n.birthtime}}function Px(e,t){let n=Ii(e,t);zn(n,["dev","ino","birthtime","ctime","mtime"],t);let i=Zg({dev:n.dev,ino:n.ino,birthtime:n.birthtime},t),r=/^-?[0-9]+$/u;if(typeof n.ctime!="string"||!r.test(n.ctime)||typeof n.mtime!="string"||!r.test(n.mtime))throw D(`${t} timestamps are invalid`);return{...i,ctime:n.ctime,mtime:n.mtime}}function Ox(e){if(!Array.isArray(e)||e.length!==2)throw D("sourceIdentity must bind the project root and openspec root");let t=[".","openspec"];return e.map((n,i)=>{let r=Ii(n,`sourceIdentity[${i}]`);if(zn(r,["path","dev","ino","birthtime"],`sourceIdentity[${i}]`),r.path!==t[i])throw D(`sourceIdentity[${i}].path is invalid`);let s={dev:r.dev,ino:r.ino,birthtime:r.birthtime};return{path:t[i],...Zg(s,`sourceIdentity[${i}]`)}})}function $x(e){if(zn(e,["schema","id","stage","source","target","staging","configPath","originalConfigHash","expectedConfigHash","planId","targetInitialState","manifest"],"root"),typeof e.id!="string"||!Kg.test(e.id))throw D("id is invalid");if(e.stage!=="copying"&&e.stage!=="ready"&&e.stage!=="switched"&&e.stage!=="configured")throw D("stage is invalid");let t=`.comet/transactions/classic-root-move/${e.id}/openspec`;if(e.source!=="openspec"||e.target!=="docs/openspec"||e.staging!==t)throw D("source, target, and staging must use the managed project paths");if(e.configPath!==ce||typeof e.originalConfigHash!="string"||!bt.test(e.originalConfigHash)||typeof e.expectedConfigHash!="string"||!bt.test(e.expectedConfigHash)||typeof e.planId!="string"||!bt.test(e.planId))throw D("config path, config hashes, or planId is invalid");if(e.targetInitialState!=="missing"&&e.targetInitialState!=="empty")throw D("targetInitialState is invalid");let n=e.targetInitialState,i=Qg(e.manifest),r={source:e.source,target:e.target,targetInitialState:n,fileCount:i.files.length,directoryCount:i.directories.length,totalBytes:i.totalBytes,manifestHash:i.hash,configPath:e.configPath,originalConfigHash:e.originalConfigHash,expectedConfigHash:e.expectedConfigHash};if(Cx(r)!==e.planId)throw D("planId does not match the bound config and tree");return{schema:"comet.classic-root-move.v1",id:e.id,stage:e.stage,source:e.source,target:e.target,staging:e.staging,configPath:e.configPath,originalConfigHash:e.originalConfigHash,expectedConfigHash:e.expectedConfigHash,planId:e.planId,targetInitialState:n,manifest:i}}function Ax(e){if(zn(e,["schema","id","stage","source","target","staging","artifactLayout","sourceIdentity","targetInitialIdentity","configPath","originalConfigHash","expectedConfigHash","planId","approvedPlanId","targetInitialState","manifest"],"root"),typeof e.id!="string"||!Kg.test(e.id))throw D("id is invalid");if(e.stage!=="locked"&&e.stage!=="copying"&&e.stage!=="ready"&&e.stage!=="switched"&&e.stage!=="configured")throw D("stage is invalid");let t=`.comet/transactions/classic-root-move/${e.id}/openspec`;if(e.source!=="openspec"||e.target!=="docs/openspec"||e.staging!==t)throw D("source, target, and staging must use the managed project paths");if(e.artifactLayout!=="legacy")throw D("artifactLayout must be legacy");let n=Ox(e.sourceIdentity);if(e.configPath!==ce||typeof e.originalConfigHash!="string"||!bt.test(e.originalConfigHash)||typeof e.expectedConfigHash!="string"||!bt.test(e.expectedConfigHash)||typeof e.planId!="string"||!bt.test(e.planId)||typeof e.approvedPlanId!="string"||!bt.test(e.approvedPlanId))throw D("config path, config hashes, planId, or approvedPlanId is invalid");let i=e.targetInitialState;if(i!=="missing"&&i!=="empty"&&!(e.stage==="locked"&&i==="non-empty"))throw D("targetInitialState is invalid");let r=e.targetInitialIdentity===null?null:Px(e.targetInitialIdentity,"targetInitialIdentity");if(i==="missing"&&r!==null||i!=="missing"&&r===null)throw D("targetInitialIdentity does not match targetInitialState");let s=Qg(e.manifest),o={source:e.source,target:e.target,staging:xu,artifactLayout:"legacy",sourceIdentity:n,targetInitialIdentity:r,targetInitialState:i,fileCount:s.files.length,directoryCount:s.directories.length,totalBytes:s.totalBytes,manifestHash:s.hash,configPath:e.configPath,originalConfigHash:e.originalConfigHash,expectedConfigHash:e.expectedConfigHash};if(Yg(o)!==e.planId)throw D("planId does not match the bound config and tree");if(e.stage!=="locked"&&e.approvedPlanId!==e.planId)throw D("approvedPlanId does not match the executable plan");return{schema:"comet.classic-root-move.v2",id:e.id,stage:e.stage,source:e.source,target:e.target,staging:e.staging,artifactLayout:"legacy",sourceIdentity:n,targetInitialIdentity:r,configPath:e.configPath,originalConfigHash:e.originalConfigHash,expectedConfigHash:e.expectedConfigHash,planId:e.planId,approvedPlanId:e.approvedPlanId,targetInitialState:i,manifest:s}}function Ix(e){let t=Ii(e,"root");if(t.schema==="comet.classic-root-move.v1")return $x(t);if(t.schema==="comet.classic-root-move.v2")return Ax(t);throw D("schema is unsupported")}async function Ni(e,t){return Iu(e,Xn(e),_u,t?.afterJournalInspect)}async function Iu(e,t,n,i){await ji(e,t,n,"file");try{let r=await ne.lstat(t,{bigint:!0});if(!r.isFile()||r.isSymbolicLink()||r.size>BigInt(Lg))throw D("journal must be a bounded regular file");await i?.();let s=await Qr(e,t,Lg,"Classic root move journal",r),o=Ix(JSON.parse(s.toString("utf8")));return Object.defineProperty(o,Jg,{value:{fileIdentity:r,contentHash:Ai(s)},enumerable:!1}),o}catch(r){if(r.code==="ENOENT")return null;throw r}}function Ti(e){let t=e[Jg];if(!t)throw new Error("Classic root move journal has no ownership claim");return t}function Nu(e,t){let n=Ti(e),i=Ti(t);return ba(n.fileIdentity,i.fileIdentity)&&n.contentHash===i.contentHash&&e.schema===t.schema&&e.id===t.id&&e.stage===t.stage&&e.planId===t.planId}async function Dg(e,t){let n=await Iu(e,Xn(e),_u);if(!n||!Nu(t,n))throw new Error("Classic root move journal ownership changed")}async function ew(e,t,n,i){let r=Xn(e);try{await ya(e,t.file,r,`${n}-publish`,i)}catch(o){if(o.code==="EEXIST")return!1;throw o}let s=await Ni(e);if(!s||!Nu(t.journal,s))throw new Error("Classic root move journal ownership changed while restoring quarantine");return await Vn(e,t.file,`${n}-cleanup-quarantine`,i,{expectedIdentity:Ti(t.journal).fileIdentity}),!0}async function tw(e,t,n,i){let r=Xn(e),s=`${r}.${t.id}.${wa()}.quarantine`;await Dg(e,t);let o=await Le(e,$.dirname(r),`Classic root move ${n} quarantine`);await i?.beforeMutation?.(`${n}-quarantine`),await G(o,`Classic root move ${n} quarantine`),await Dg(e,t),await ne.rename(r,s),await G(o,`Classic root move ${n} quarantine`);let a=await Iu(e,s,at(e,s)).catch(async c=>{throw await Wg(e,s,`${n}-restore-unverified`,i).catch(()=>!1),new Error("Classic root move journal ownership changed while quarantining",{cause:c})});if(!a||!Nu(t,a))throw await Wg(e,s,`${n}-restore-successor`,i).catch(()=>!1),new Error("Classic root move journal ownership changed while quarantining");return await i?.afterJournalQuarantine?.(n),{file:s,journal:a}}async function Wg(e,t,n,i){let r=Xn(e),s;try{s=await Li(t,"file",`Classic root move ${n}`)}catch(o){if(o.code==="ENOENT")return!1;throw o}try{await ya(e,t,r,`${n}-publish`,i)}catch(o){if(o.code==="EEXIST")return!1;throw o}return await Vn(e,t,`${n}-cleanup-quarantine`,i,{expectedIdentity:s}),!0}async function nw(e,t,n,i){let r=await tw(e,t,n,i);try{if(!await Vn(e,r.file,`${n}-quarantined`,i,{expectedIdentity:Ti(r.journal).fileIdentity}))throw new Error("Classic root move quarantined journal disappeared before removal");return!0}catch(s){throw await ew(e,r,`${n}-restore`,i).catch(()=>!1),s}}async function ua(e,t,n,i){if(t.schema==="comet.classic-root-move.v1"&&n==="locked")throw new Error("Legacy Classic root move journals do not support the locked stage");let r={...t,stage:n};return Gg(e,t,r,i)}function iw(e,t){let n={legacy:Qe(e,"legacy"),docs:Qe(e,"docs")},i=$.join(e,".comet","transactions","classic-root-move",t.id);return{source:n.legacy.openSpecRoot,target:n.docs.openSpecRoot,staging:$.join(i,"openspec"),quarantine:$.join(i,"legacy-source"),transactionRoot:i}}async function Zr(e,t,n){if(!await Gn(e,t,"Classic root move tree"))return"missing";try{return Au(await Ca(e,t),n)?"match":"mismatch"}catch{return"mismatch"}}async function Tu(e,t,n){if(!await Gn(e,t,"Classic root move target"))return"missing";try{let i=await Ca(e,t);return Au(i,n)?"match":i.directories.length===0&&i.files.length===0?"empty":"mismatch"}catch{return"mismatch"}}async function rw(e,t,n){if(!await Gn(e,t,"Classic root move manifest tree"))return{status:"missing"};try{let i=await Ca(e,t);if(Au(i,n))return{status:"complete",actual:i};let r=new Set(n.directories),s=new Map(n.files.map(o=>[o.path,o]));if(i.directories.some(o=>!r.has(o)))return{status:"mismatch"};for(let o of i.files){let a=s.get(o.path);if(!a||a.size!==o.size||a.hash!==o.hash)return{status:"mismatch"}}return{status:"partial",actual:i}}catch{return{status:"mismatch"}}}async function Nx(e,t,n,i,r="remove-quarantine"){let s=await rw(e,t,n);if(s.status==="missing")return;if(s.status==="mismatch"||!s.actual)throw new Error("Classic quarantine contains unknown or changed content; files were preserved");for(let a of s.actual.files){let c=$.join(t,...a.path.split("/")),l;try{l=await ne.lstat(c,{bigint:!0})}catch(f){if(f.code==="ENOENT")continue;throw f}let u=l.isFile()&&!l.isSymbolicLink()?await Qr(e,c,Math.max(1,a.size),`Classic root move quarantine file ${a.path}`,l):null;if(!u||u.byteLength!==a.size||Ai(u)!==a.hash)throw new Error("Classic quarantine contains unknown or changed content; files were preserved");await Vn(e,c,`${r}-file:${a.path}`,i)}let o=[...s.actual.directories].sort((a,c)=>{let l=c.split("/").length-a.split("/").length;return l===0?c.localeCompare(a):l});for(let a of o){let c=$.join(t,...a.split("/"));await pa(e,c,`${r}-directory:${a}`,i)}await pa(e,t,`${r}-root`,i)}async function Tx(e,t,n,i){let r=await Tu(e,t,n.manifest);if(n.targetInitialState==="missing"){if(r!=="missing")throw new Error("Classic docs target changed after migration preflight");return}if(r==="empty"){if(n.schema==="comet.classic-root-move.v2"&&!n.targetInitialIdentity)throw new Error("Classic docs target identity is missing from the approved plan");await pa(e,t,"remove-empty-target",i,n.schema==="comet.classic-root-move.v2"?n.targetInitialIdentity??void 0:void 0);return}if(r!=="missing")throw new Error("Classic docs target changed after migration preflight")}async function fa(e,t,n){if(n.schema==="comet.classic-root-move.v1")return;let i=await Eu(e,t,"Classic legacy root identity");if(!zg(i,n.sourceIdentity))throw new Error("Classic legacy root identity changed after migration preflight")}async function ku(e,t){if(await $u(e)!==t.originalConfigHash)throw new Error("Classic project config changed after migration preflight");if(await on(e)!=="legacy")throw new Error("Classic project config changed after migration preflight")}async function Fg(e,t){if(await $u(e)!==t.expectedConfigHash)throw new Error("Classic project config does not match the expected post-switch config hash");if(await on(e)!=="docs")throw new Error("Classic project config does not match the expected post-switch config hash")}async function Un(e,t,n,i){if(await Zr(e,t,n)!=="match")throw new Error(i)}async function jx(e,t,n){if(t.stage==="locked")throw new Error("Classic root move locked preflight must be approved before execution");await va(e,t.id);let{source:i,target:r,staging:s,quarantine:o,transactionRoot:a}=iw(e,t),c=t;if(c.stage==="copying"){await ku(e,c),await fa(e,i,c),await Un(e,i,c.manifest,"Classic legacy root changed after migration preflight"),await Tx(e,r,c,n);let l=await Zr(e,s,c.manifest);if(l==="mismatch")throw new Error("Classic root move staging changed after migration preflight");l==="missing"&&await xx(e,i,s,c.manifest,n),await Un(e,s,c.manifest,"Classic root move staging verification failed"),c=await ua(e,c,"ready",n)}if(c.stage==="ready"){await ku(e,c),await fa(e,i,c),await Un(e,i,c.manifest,"Classic legacy root changed after migration preflight");let l=await Zr(e,s,c.manifest),u=await Tu(e,r,c.manifest);if(l==="missing"&&u==="match")c=await ua(e,c,"switched",n);else{if(l!=="match")throw new Error("Classic root move staging changed after migration preflight");if(u==="mismatch"||u==="empty")throw new Error("Classic docs target changed after migration preflight");u==="missing"&&(await $i(e,$.dirname(r),"Classic docs target parent",n),await Mg(e,s,r,"rename-staging-target",n),c=await ua(e,c,"switched",n))}}if(c.stage==="switched"){await fa(e,i,c),await Un(e,i,c.manifest,"Classic legacy root changed before config switch"),await Un(e,r,c.manifest,"Classic docs target verification failed after switch");let l=await on(e);if(l==="legacy")await ku(e,c),await ap(e,"docs",{expectedIdentity:{exists:!0,sha256:c.originalConfigHash}});else if(l!=="docs")throw new Error("Classic project config changed after migration preflight");await Fg(e,c),c=await ua(e,c,"configured",n)}if(c.stage!=="configured")throw new Error(`Unsupported Classic root move stage: ${c.stage}`);if(await Fg(e,c),await Un(e,r,c.manifest,"Classic docs target verification failed after config switch"),await Gn(e,i,"Classic legacy root")){if(await fa(e,i,c),await Un(e,i,c.manifest,"Classic legacy root changed before cleanup; both roots were preserved"),await Gn(e,o,"Classic root move quarantine"))throw new Error("Classic root move quarantine conflicts with the legacy root");await Mg(e,i,o,"rename-source-quarantine",n)}await Gn(e,o,"Classic root move quarantine")&&await Nx(e,o,c.manifest,n),await pa(e,a,"remove-transaction-root",n),await nw(e,c,"remove-journal",n)}async function Lx(e,t){if(await va(e,t.id),t.stage==="locked")return{allowedStrategies:["rollback"],reason:"the locked apply preflight was not approved for execution"};let{source:n,target:i,staging:r,quarantine:s}=iw(e,t),o=await on(e),a=await $u(e),c=o==="legacy"&&a===t.originalConfigHash,l=o==="docs"&&a===t.expectedConfigHash,[u,f,d,p]=await Promise.all([Zr(e,n,t.manifest),Tu(e,i,t.manifest),Zr(e,r,t.manifest),rw(e,s,t.manifest)]),g=p.status;if(u==="mismatch")return{allowedStrategies:[],reason:"Classic legacy root changed after migration preflight"};if(f==="mismatch")return{allowedStrategies:[],reason:"Classic docs target changed after migration preflight"};if(d==="mismatch")return{allowedStrategies:[],reason:"Classic staging changed after migration preflight"};if(g==="mismatch")return{allowedStrategies:[],reason:"Classic quarantine contains unknown or changed content"};if(t.stage==="configured"||o==="docs")return l?f==="match"&&(u==="match"&&g==="missing"||u==="missing"&&(g==="missing"||g==="complete"||g==="partial"))?{allowedStrategies:["continue"]}:{allowedStrategies:[],reason:"the configured migration trees are incomplete"}:{allowedStrategies:[],reason:"project config does not match the expected post-switch config hash"};if(!c)return{allowedStrategies:[],reason:"project config changed after migration preflight"};let h=u==="match",m=d==="match"||d==="missing",y=f==="match"||f==="missing"||t.targetInitialState==="empty"&&f==="empty";return!h||!m||!y||g!=="missing"?{allowedStrategies:[],reason:"the migration trees are not recoverable"}:{allowedStrategies:["continue","rollback"]}}async function sw(e,t={}){let n=await ue(e),i=await Ni(n,t.testHooks);if(i){let r=await Mx(n);if(!r)throw new Error("Classic root move journal disappeared during inspection");return{projectRoot:n,source:i.source,target:i.target,staging:i.staging,artifactLayout:"legacy",sourceIdentity:i.schema==="comet.classic-root-move.v2"?i.sourceIdentity.map(s=>({...s})):[],targetInitialIdentity:i.schema==="comet.classic-root-move.v2"&&i.targetInitialIdentity?{...i.targetInitialIdentity}:null,fileCount:i.manifest.files.length,directoryCount:i.manifest.directories.length,totalBytes:i.manifest.totalBytes,manifestHash:i.manifest.hash,configPath:i.configPath,configHash:i.originalConfigHash,originalConfigHash:i.originalConfigHash,expectedConfigHash:i.expectedConfigHash,planId:i.planId,fileSummary:i.manifest.files.map(s=>({...s})),configChange:{from:"legacy",to:"docs"},conflicts:r.reason?[r.reason]:[],blockers:[`pending Classic root move: ${i.id} at ${i.stage}`],pendingRecovery:r,historicalPointersPreserved:[...Bg],applyPreconditions:[...Hg],allowedRecoveryStrategies:[...r.allowedStrategies],targetInitialState:i.targetInitialState,readyToApply:!1}}return(await Ru(n,t)).plan}async function ow(e,t={}){let n=await ue(e),i=await Ni(n,t.testHooks);if(i)throw new Error(`Classic root move ${i.id} is incomplete; use comet doctor --repair --strategy continue|rollback`);let r=await Ru(n),s=t.planId??r.plan.planId;if(!bt.test(s))throw new Error("Classic root move apply received an invalid internal plan ID");let o=wa();await va(n,o);let a={schema:"comet.classic-root-move.v2",id:o,stage:"locked",source:r.plan.source,target:r.plan.target,staging:`.comet/transactions/classic-root-move/${o}/openspec`,artifactLayout:r.plan.artifactLayout,sourceIdentity:r.plan.sourceIdentity.map(u=>({...u})),targetInitialIdentity:r.plan.targetInitialIdentity?{...r.plan.targetInitialIdentity}:null,configPath:ce,originalConfigHash:r.plan.originalConfigHash,expectedConfigHash:r.plan.expectedConfigHash,planId:r.plan.planId,approvedPlanId:s,targetInitialState:r.plan.targetInitialState,manifest:r.manifest};await bx(n,Xn(n),a,t.testHooks);let c=await Ni(n);if(!c||c.id!==o||c.stage!=="locked")throw new Error("Classic root move lock ownership changed before locked preflight");let l=!1;try{let u=await Ru(n,t),f=u.plan;if(f.planId!==s)throw new Error(`Classic root move plan changed since dry-run: approved ${s}, current ${f.planId}`);if(!f.readyToApply)throw new Error(`Classic root move apply is blocked: ${[...f.conflicts,...f.blockers].join("; ")}`);if(f.targetInitialState==="non-empty")throw new Error("Classic root move apply is blocked: Classic docs target is not empty");let d={schema:"comet.classic-root-move.v2",id:o,stage:"copying",source:f.source,target:f.target,staging:`.comet/transactions/classic-root-move/${o}/openspec`,artifactLayout:f.artifactLayout,sourceIdentity:f.sourceIdentity.map(g=>({...g})),targetInitialIdentity:f.targetInitialIdentity?{...f.targetInitialIdentity}:null,configPath:ce,originalConfigHash:f.originalConfigHash,expectedConfigHash:f.expectedConfigHash,planId:f.planId,approvedPlanId:s,targetInitialState:f.targetInitialState,manifest:u.manifest},p=await Gg(n,c,d,t.testHooks);return l=!0,await jx(n,p,t.testHooks),{...f,staging:d.staging}}catch(u){throw l||await nw(n,c,"remove-rejected-lock",t.testHooks).catch(()=>!1),u}}async function Mx(e,t={}){let n=await Ni(e,t.testHooks);if(!n)return null;let i=await Lx(e,n);return{id:n.id,stage:n.stage,source:n.source,target:n.target,staging:n.staging,planId:n.planId,...i}}ht();function aw(e="en"){return{exitCode:64,stderr:e==="zh-CN"?"用法:comet classic root show | comet classic root move docs --dry-run | comet classic root move docs --apply":"Usage: comet classic root show | comet classic root move docs --dry-run | comet classic root move docs --apply"}}function qx(e){return e?.classic?.language==="en"?"en":"zh-CN"}function Dx(e,t){let n=e instanceof Error?e.message:String(e);return t==="en"?n:n==="invalid Classic root move journal: manifest paths must be unique and sorted"?"Classic 根目录迁移失败:迁移记录中的清单路径必须唯一且按顺序排列":n.startsWith("invalid Classic root move journal:")?"Classic 根目录迁移失败:迁移记录格式或内容无效,请运行 comet doctor 检查恢复状态":"Classic 根目录迁移失败:迁移过程中发生错误,请运行 comet doctor 检查迁移状态"}function cw(e,t,n="en"){let i=n==="zh-CN",r=d=>d.length>0?d.join("; "):i?"无":"none",s=d=>{if(!i)return d;let p=/^pending Classic root move: (.+) at (.+)$/u.exec(d);return p?`存在待恢复的 Classic 根目录迁移:${p[1]},阶段 ${p[2]}`:{"Classic docs target is not empty":"docs 目标目录非空","the locked apply preflight was not approved for execution":"已锁定的迁移预检尚未获准执行","Classic legacy root changed after migration preflight":"迁移预检后 legacy 根目录发生变化","Classic docs target changed after migration preflight":"迁移预检后 docs 目标目录发生变化","Classic staging changed after migration preflight":"迁移预检后暂存目录发生变化","Classic quarantine contains unknown or changed content":"隔离目录包含未知或已变化的内容","project config does not match the expected post-switch config hash":"项目配置与切换后的预期配置哈希不一致","the configured migration trees are incomplete":"已切换配置对应的迁移目录不完整","project config changed after migration preflight":"迁移预检后项目配置发生变化","the migration trees are not recoverable":"迁移目录当前无法安全恢复"}[d]??"迁移状态存在无法识别的冲突,请运行 comet doctor 检查恢复状态"},o=(d,p)=>p.length===0?[`${d}: ${i?"无":"none"}`]:[`${d}:`,...p.map(g=>`- ${s(g)}`)],a=i?{missing:"缺失",empty:"空目录","non-empty":"非空目录"}[e.targetInitialState]:e.targetInitialState,c=i?"handoff 哈希;运行状态;检查点;轨迹;已归档证据与产物指针":e.historicalPointersPreserved.join("; "),l=i?"内部迁移身份仍与布局、源目录、清单、目标目录和配置一致;不存在待恢复的根迁移事务;目标仍然缺失或为已绑定的空目录;所有迁移路径仍受保护":e.applyPreconditions.join("; "),u=i?e.allowedRecoveryStrategies.map(d=>d==="continue"?"继续":"回滚"):e.allowedRecoveryStrategies,f=[t==="dry-run"?i?"Classic 根目录迁移现状":"Classic root move status":i?"Classic 根目录迁移完成":"Classic root move complete",...t==="dry-run"?[i?"说明:仅查看现状,未修改任何文件。":"Note: Inspection only; no files were changed."]:[],`${i?"源目录":"source"}: ${e.source}`,`${i?"目标目录":"target"}: ${e.target}`,`${i?"暂存目录":"staging"}: ${e.staging}`,`${i?"当前布局":"artifact layout"}: ${e.artifactLayout}`,`${i?"源目录身份":"source identity"}: ${JSON.stringify(e.sourceIdentity)}`,`${i?"目标初始身份":"target initial identity"}: ${e.targetInitialIdentity?JSON.stringify(e.targetInitialIdentity):i?"缺失":"missing"}`,`${i?"文件数":"files"}: ${e.fileCount}`,`${i?"目录数":"directories"}: ${e.directoryCount}`,`${i?"总字节数":"bytes"}: ${e.totalBytes}`,`${i?"清单哈希":"manifest"}: ${e.manifestHash}`,...e.fileSummary.map(d=>`${i?"文件":"file"}: ${d.path} ${d.size} ${d.hash}`),`${i?"配置变更":"config change"}: ${e.configChange.from} -> ${e.configChange.to}`,`${i?"配置路径":"config path"}: ${e.configPath}`,`${i?"配置哈希":"config"}: ${e.configHash}`,`${i?"原配置哈希":"original config"}: ${e.originalConfigHash}`,`${i?"预期配置哈希":"expected config"}: ${e.expectedConfigHash}`,`${i?"目标初始状态":"target initial state"}: ${a}`,...o(i?"冲突":"conflicts",e.conflicts),...o(i?"阻塞项":"blockers",e.blockers),`${i?"待恢复事务":"pending recovery"}: ${e.pendingRecovery?`${e.pendingRecovery.id} ${i?"位于阶段":"at"} ${e.pendingRecovery.stage}`:i?"无":"none"}`,`${i?"保留历史指针":"historical pointers preserved"}: ${c}`,`${i?"执行前提":"apply preconditions"}: ${l}`,`${i?"允许的恢复策略":"allowed recovery strategies"}: ${r(u)}`,`${i?"可执行迁移":"ready to apply"}: ${e.readyToApply?i?"是":"yes":i?"否":"no"}`];return t==="dry-run"?f.push(e.readyToApply?i?"下一步:运行 comet classic root move docs --apply 执行迁移。":"Next: run comet classic root move docs --apply to apply the migration.":i?"下一步:请先解决上述冲突或阻塞项。":"Next: resolve the conflicts or blockers above before applying."):f.push(i?"结果:迁移已完成。":"Result: Migration completed."),`${f.join(` +`)}`);this.issues=n}issues};function Ne(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function gn(e,t,n,i){return typeof e!="string"||!t.includes(e)?(i.push(`${n} must be one of: ${t.join(", ")}`),null):e}function wu(e,t,n,i){return e==null?null:gn(e,t,n,i)}function xi(e,t,n){return typeof e!="string"||e.trim()===""?(n.push(`${t} must be a non-empty string`),""):e}function yu(e,t,n){return e==null?null:typeof e!="string"||e.trim()===""?(n.push(`${t} must be a non-empty string or null`),null):e}function Pi(e,t,n){return e==null?null:typeof e!="boolean"?(n.push(`${t} must be boolean or null`),null):e}function Rg(e,t,n){return typeof e!="number"||Number.isNaN(e)||e<0||e>1?(n.push(`${t} must be a number between 0 and 1`),0):e}function nx(e,t,n){return typeof e!="number"||!Number.isInteger(e)||e<0?(n.push(`${t} must be a non-negative integer`),0):e}function ix(e){let t=[];if(!Ne(e))throw new Oi(["frame must be an object"]);let n=Ne(e.intent)?e.intent:{};Ne(e.intent)||t.push("intent must be an object");let i=Ne(e.slots)?e.slots:{};Ne(e.slots)||t.push("slots must be an object");let r=Ne(e.context)?e.context:{};Ne(e.context)||t.push("context must be an object");let s=Ne(e.proposed_route)?e.proposed_route:{};Ne(e.proposed_route)||t.push("proposed_route must be an object");let o=e.entities===void 0?[]:Array.isArray(e.entities)?e.entities:[];e.entities!==void 0&&!Array.isArray(e.entities)&&t.push("entities must be an array");let a=Array.isArray(e.evidence)?e.evidence:[];Array.isArray(e.evidence)||t.push("evidence must be an array");let c={schema_version:gn(e.schema_version,[V_],"schema_version",t),utterance:xi(e.utterance,"utterance",t),locale:e.locale===void 0?"unknown":xi(e.locale,"locale",t),intent:{name:gn(n.name,Y_,"intent.name",t)??"unknown",confidence:Rg(n.confidence,"intent.confidence",t)},entities:o.map((l,u)=>{let f=Ne(l)?l:{};return Ne(l)||t.push(`entities[${u}] must be an object`),{type:gn(f.type,z_,`entities[${u}].type`,t)??"risk_signal",value:xi(f.value,`entities[${u}].value`,t),text:xi(f.text,`entities[${u}].text`,t)}}),slots:{requested_action:gn(i.requested_action,X_,"slots.requested_action",t)??"unknown",workflow_candidate:wu(i.workflow_candidate,Eg,"slots.workflow_candidate",t),user_explicit_workflow:wu(i.user_explicit_workflow,Eg,"slots.user_explicit_workflow",t),change_id:yu(i.change_id,"slots.change_id",t),target_area:yu(i.target_area,"slots.target_area",t),scope:i.scope===void 0?"unknown":gn(i.scope,Q_,"slots.scope",t)??"unknown",existing_behavior:Pi(i.existing_behavior,"slots.existing_behavior",t),new_capability:Pi(i.new_capability,"slots.new_capability",t),public_api_change:Pi(i.public_api_change,"slots.public_api_change",t),schema_change:Pi(i.schema_change,"slots.schema_change",t),cross_module_change:Pi(i.cross_module_change,"slots.cross_module_change",t)},context:{active_changes_count:nx(r.active_changes_count,"context.active_changes_count",t),active_change_names:Ne(r)?Array.isArray(r.active_change_names)?r.active_change_names.every(l=>typeof l=="string")?r.active_change_names:(t.push("context.active_change_names must only contain strings"),[]):(t.push("context.active_change_names must be an array"),[]):[],dirty_worktree:Pi(r.dirty_worktree,"context.dirty_worktree",t)},evidence:a.map((l,u)=>{let f=Ne(l)?l:{};return Ne(l)||t.push(`evidence[${u}] must be an object`),{field:xi(f.field,`evidence[${u}].field`,t),quote:xi(f.quote,`evidence[${u}].quote`,t),source:gn(f.source,tx,`evidence[${u}].source`,t)??"user"}}),proposed_route:{name:gn(s.name,Z_,"proposed_route.name",t)??"ask_user",next_skill:wu(s.next_skill,ex,"proposed_route.next_skill",t),confidence:Rg(s.confidence,"proposed_route.confidence",t),requires_confirmation:typeof s.requires_confirmation=="boolean"?s.requires_confirmation:!0,fallback_reason:yu(s.fallback_reason,"proposed_route.fallback_reason",t)}};if(t.length>0)throw new Oi(t);return c}function vu(e,t){return e.evidence.some(n=>n.field===t&&n.quote.trim()!=="")}function _g(e){return e.slots.new_capability===!0||e.slots.public_api_change===!0||e.slots.schema_change===!0||e.slots.cross_module_change===!0}function Jn(e,t,n=null){return{name:e,next_skill:{full:"comet-open",hotfix:"comet-hotfix",tweak:"comet-tweak",resume:null,ask_user:null,out_of_scope:null}[e],confidence:t,requires_confirmation:e==="ask_user"||e==="out_of_scope",fallback_reason:n}}function zr(e){return Jn("ask_user",.5,e)}function xg(e,t){return Jn(e,t)}function Pg(e){let t=ix(e),n=[],i=t.intent.confidence,r;return t.intent.confidence<.7?r=zr(`intent confidence ${t.intent.confidence} is below ${.7}`):(t.intent.name==="resume_change"||t.slots.requested_action==="resume"||t.slots.requested_action==="continue")&&!t.slots.change_id&&t.context.active_changes_count>1?r=zr("multiple active changes require an explicit change_id"):(t.intent.name==="resume_change"||t.slots.requested_action==="resume"||t.slots.requested_action==="continue")&&t.slots.change_id?r=t.context.active_change_names.includes(t.slots.change_id)?Jn("resume",i):zr(`change_id '${t.slots.change_id}' is not in active_change_names`):t.intent.name==="ask_question"||t.slots.requested_action==="question"?r=Jn("out_of_scope",i,"user asked a question without requesting a Comet workflow"):t.slots.user_explicit_workflow&&t.slots.user_explicit_workflow!=="full"&&_g(t)?r=zr(`explicit workflow '${t.slots.user_explicit_workflow}' conflicts with risk signals`):t.slots.user_explicit_workflow?r=xg(t.slots.user_explicit_workflow,i):_g(t)?r=Jn("full",i):t.intent.name==="fix_bug"&&t.slots.existing_behavior===!0&&vu(t,"slots.workflow_candidate")?r=Jn("hotfix",i):t.intent.name==="make_tweak"&&t.slots.workflow_candidate==="tweak"&&vu(t,"slots.workflow_candidate")?r=Jn("tweak",i):t.slots.workflow_candidate&&vu(t,"slots.workflow_candidate")?r=xg(t.slots.workflow_candidate,i):r=zr("workflow_candidate evidence is missing or route is ambiguous"),r.name!==t.proposed_route.name&&n.push(`agent proposed_route '${t.proposed_route.name}' normalized to '${r.name}'`),r.next_skill!==t.proposed_route.next_skill&&n.push(`agent proposed_route next_skill '${t.proposed_route.next_skill}' normalized to '${r.next_skill}'`),r.requires_confirmation!==t.proposed_route.requires_confirmation&&n.push(`agent proposed_route requires_confirmation '${t.proposed_route.requires_confirmation}' normalized to '${r.requires_confirmation}'`),r.fallback_reason!==t.proposed_route.fallback_reason&&n.push(`agent proposed_route fallback_reason '${t.proposed_route.fallback_reason}' normalized to '${r.fallback_reason}'`),{route:r,diagnostics:n,normalizedFrame:{...t,route:r}}}function aa(e,t,n){return{exitCode:e,...t===void 0?{}:{stdout:t},...n===void 0?{}:{stderr:n}}}function Og(){return aa(64,void 0,`Usage: comet-intent.mjs route +Usage: comet-intent.mjs route --stdin`)}async function rx(){let e=[];for await(let t of process.stdin)e.push(Buffer.isBuffer(t)?t:Buffer.from(String(t)));return Buffer.concat(e).toString("utf8")}var $g=async(e,t)=>{let[n,i]=e;if(n!=="route")return Og();let r=i==="--stdin"?await rx():i;if(!r)return Og();try{let s=Pg(JSON.parse(r));return aa(0,`${JSON.stringify(s,null,2)} +`)}catch(s){if(s instanceof SyntaxError)return aa(1,void 0,`Invalid JSON: ${s.message}`);if(s instanceof Oi)return aa(1,void 0,s.message);throw s}};import{spawn as sx}from"child_process";var $i="comet.resume_probe.v1";function Ag(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ox(e){if(!Ag(e))throw new Error("Invalid CometResumeProbeInput: input must be an object");if(e.schema_version!==$i)throw new Error(`Invalid CometResumeProbeInput: schema_version must be ${$i}`);if(typeof e.utterance!="string")throw new Error("Invalid CometResumeProbeInput: utterance must be a string");let t=Ag(e.agent_context)?e.agent_context:{};return{schema_version:$i,utterance:e.utterance,locale:typeof e.locale=="string"?e.locale:"unknown",agent_context:{non_trivial_work:t.non_trivial_work===!0,already_in_comet_flow:t.already_in_comet_flow===!0}}}function Te(e,t,n,i,r=[]){return{schema_version:$i,action:e,changeName:t?.name??null,phase:t?.phase??null,nextCommand:e==="auto_resume"||e==="ask_user"?t?.nextCommand??null:null,confidence:n,reason:i,evidence:r}}async function ax(e,t,n){return await X(e,t,{label:n,expected:"file"})?B(e,t,{label:n}):""}async function Ig(e,t,n){let i=["proposal.md","design.md","tasks.md"],r=[n.name,n.workflow,n.phase];for(let s of i)r.push(await ax(e,`${t}/${s}`,`Classic change ${n.name} ${s}`));return r.join(` +`).toLowerCase()}function cx(e){switch(e){case"open":return"/comet-open";case"design":return"/comet-design";case"build":return"/comet-build";case"verify":return"/comet-verify";case"archive":return"/comet-archive";default:return null}}function lx(e,t,n){let i=n.classic,r=n.unknownKeys.filter(s=>s!=="run_id");return i?r.length>0?{name:t,valid:!1,workflow:i.workflow,phase:i.phase,currentStep:null,nextCommand:null,runtimeMode:"invalid",runtimeEval:null,evidence:[],error:`unknown field(s): ${r.join(", ")}`}:{name:t,valid:!0,workflow:i.workflow,phase:i.phase,currentStep:null,nextCommand:cx(i.phase),runtimeMode:"engine-projection",runtimeEval:null,evidence:[]}:{name:t,valid:!1,workflow:"unknown",phase:"invalid",currentStep:null,nextCommand:null,runtimeMode:"invalid",runtimeEval:null,evidence:[],error:`${e} does not contain valid Comet state`}}async function ux(e,t){return await X(e,`${t}/proposal.md`,{label:"Classic proposal",expected:"file"})||await X(e,`${t}/design.md`,{label:"Classic design",expected:"file"})||await X(e,`${t}/tasks.md`,{label:"Classic tasks",expected:"file"})}async function fx(e){let t=(await Y(e)).changesDir;if(!(await V(e,t,{label:"Classic changes directory",expected:"directory"})).exists)return[];let i=await Ju(t),r=[];for(let s of i){if(s==="archive"||ge(s))continue;let o=await Oe(s,e);if(!o.exists)continue;let a=o.directory;if(!o.stateExists){if(!await ux(e,a))continue;let m={name:s,workflow:"unknown",phase:"invalid",nextCommand:null,diagnostic:{name:s,valid:!1,workflow:"unknown",phase:"invalid",currentStep:null,nextCommand:null,runtimeMode:"invalid",runtimeEval:null,evidence:[],error:"missing Comet state"},buildPause:null,hasClassicProjection:!1,verifyResult:null,text:"",missingCometState:!0};m.text=await Ig(e,a,m),r.push(m);continue}let l=await H(a,{migrate:!1}),u=l.classic,f=lx(a,s,l),d=!!u,p=u?.phase??f.phase,g=u?.workflow??f.workflow;if(p==="archive"||u?.archived)continue;let h={name:s,workflow:g,phase:p,nextCommand:f.nextCommand,diagnostic:f,buildPause:u?.buildPause??null,hasClassicProjection:d,verifyResult:u?.verifyResult??null,text:"",missingCometState:!1};h.text=await Ig(e,a,h),r.push(h)}return r}var dx=["continue","resume","carry on","finish","run it","commit","verify","archive","继续","接着","恢复","跑完","提交","验证","归档","修刚才"],mx=["what","why","how","explain","summarize","reliable","靠谱吗","是什么","为什么","解释","总结","取名","命名"],px=new Set(["add","build","cache","change","code","design","docs","file","fix","implement","plan","readme","task","test","update","修改","更新","修复","添加","文档","任务","计划","实现"]),hx=["do not resume","don't resume","without comet","skip comet","不要恢复","不走 comet","不要走 comet","直接解释","只回答"];function bu(e,t){return t.some(n=>e.includes(n))}function Ng(e){return e.missingCometState||!e.hasClassicProjection||!e.diagnostic.valid||e.phase==="archive"||e.verifyResult==="fail"||e.diagnostic.runtimeEval&&!e.diagnostic.runtimeEval.passed?!0:e.phase!=="build"?!1:e.buildPause==="plan-ready"}function gx(e,t){let n=e.toLowerCase(),i=[];n.includes(t.name.toLowerCase())&&i.push({source:"user",quote:t.name});let r=t.text.split(/[^a-zA-Z0-9_\-\u4e00-\u9fff/]+/u).map(o=>o.trim().toLowerCase()).filter(o=>o.length>=4&&!px.has(o)),s=[...new Set(r.filter(o=>n.includes(o)))].slice(0,3);for(let o of s)i.push({source:"repo",quote:o});return i}async function wx(e){return new Promise(t=>{let n=sx("git",["status","--short","--untracked-files=all"],{cwd:e,stdio:["ignore","pipe","ignore"],shell:!1}),i=[];n.stdout.on("data",r=>{i.push(Buffer.isBuffer(r)?r:Buffer.from(String(r)))}),n.on("error",()=>t([])),n.on("exit",r=>{if(r!==0){t([]);return}let s=Buffer.concat(i).toString("utf8").split(/\r?\n/u).map(o=>o.trim()).filter(Boolean);t(s)})})}async function Tg(e,t){let n=ox(t),i=n.utterance.trim(),r=i.toLowerCase();if(n.agent_context.already_in_comet_flow)return Te("out_of_scope",null,"low","already in Comet flow");if(bu(r,hx))return Te("out_of_scope",null,"low","user opted out of Comet resume",[{source:"user",quote:i}]);let s=await fx(e);if(s.length===0)return Te("none",null,"none","no active Comet changes");let o=await wx(e);if(s.length>1){let f=s.find(d=>r.includes(d.name.toLowerCase()));return f?o.length>0?Te("ask_user",f,"low","uncommitted worktree changes require attribution",[{source:"repo",quote:`${o.length} dirty file(s)`}]):Ng(f)?Te("ask_user",f,"low","active change is at a decision point"):Te("auto_resume",f,"high","request names an active change",[{source:"user",quote:f.name}]):Te("ask_user",null,"low","multiple active changes require a change name")}let[a]=s;if(o.length>0)return Te("ask_user",a,"low","uncommitted worktree changes require attribution",[{source:"repo",quote:`${o.length} dirty file(s)`}]);if(Ng(a))return a.missingCometState?Te("ask_user",a,"low","active OpenSpec change is missing Comet state"):Te("ask_user",a,"low","active change is at a decision point",[{source:"state",quote:`phase: ${a.phase}`}]);let c=bu(r,dx);if(!n.agent_context.non_trivial_work&&bu(r,mx)&&!c)return Te("out_of_scope",a,"low","user asked a question without workflow work");let u=gx(i,a);return c||u.length>0?Te("auto_resume",a,"high","single active change and request is related",[{source:"state",quote:`phase: ${a.phase}`},...u]):n.agent_context.non_trivial_work?Te("ask_user",a,"low","single active change exists but request looks unrelated"):Te("out_of_scope",a,"low","request is not workflow work")}function ca(e,t,n){return{exitCode:e,...t===void 0?{}:{stdout:t},...n===void 0?{}:{stderr:n}}}function jg(){return ca(64,void 0,`Usage: comet-resume-probe.mjs probe +Usage: comet-resume-probe.mjs probe --stdin`)}async function yx(){let e=[];for await(let t of process.stdin)e.push(Buffer.isBuffer(t)?t:Buffer.from(String(t)));return Buffer.concat(e).toString("utf8")}function vx(e){return{schema_version:$i,utterance:e,locale:"unknown",agent_context:{non_trivial_work:!0,already_in_comet_flow:!1}}}function bx(e){try{return JSON.parse(e)}catch{return vx(e)}}var Lg=async(e,t)=>vt(t,async()=>{let[n,i]=e;if(n!=="probe")return jg();let r=i==="--stdin",s=r?await yx():i;if(!s)return jg();try{let o=r?bx(s):JSON.parse(s),a=await Tg(_(),o);return ca(0,`${JSON.stringify(a,null,2)} +`)}catch(o){return o instanceof SyntaxError?ca(1,void 0,`Invalid JSON: ${o.message}`):ca(1,void 0,o instanceof Error?o.message:String(o))}});wr();pt();gt();_e();import{createHash as ts,randomUUID as wa}from"crypto";import{promises as te}from"fs";import O from"path";var Ru=".comet/classic-root-move.json",_u=".comet/transactions/classic-root-move//openspec",Hg=["handoff hashes","Run state","checkpoints","trajectory","archived evidence and artifact pointers"],Kg=["approved plan ID still matches layout, source identity and manifest, target identity, and configuration","no pending root-move recovery transaction","target remains absent or the bound empty directory","source, target, staging, transaction, and config paths remain protected"],ma=5e4,da=512*1024*1024,Mg=16*1024*1024,St=/^[a-f0-9]{64}$/u,Jg=/^[a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$/u,Ug=Symbol("ClassicRootMoveJournalClaim");function at(e,t){return O.relative(e,t).replaceAll("\\","/")}async function Li(e,t,n,i="directory"){await N(e,at(e,t),{label:`Classic root move physical path ${n}`,expected:i})}function Gg(e,t){return Me(e,t)}async function je(e,t,n){let i=O.resolve(e),r=O.resolve(t),s=O.relative(i,r);if(O.isAbsolute(s)||s===".."||s.startsWith(`..${O.sep}`))throw new Error(`${n} must stay inside the project root`);r!==i&&await Li(e,t,n,"directory");let o=[i],a=i;for(let l of s.split(O.sep).filter(Boolean))a=O.join(a,l),o.push(a);let c=[];for(let l of o){let u=await te.lstat(l,{bigint:!0});if(!u.isDirectory()||u.isSymbolicLink())throw new Error(`${n} crosses a symbolic link or junction`);c.push({path:l,identity:Yn(u),stat:u})}return{entries:c}}async function G(e,t){for(let n of e.entries){let i=await te.lstat(n.path,{bigint:!0});if(!i.isDirectory()||i.isSymbolicLink()||!Gg(n.identity,Yn(i)))throw new Error(`${t} changed after inspection`)}}async function Cx(e,t,n,i){let r=await je(e,t,n);await i?.afterDirectoryInspect?.(n),await G(r,n);let s=await te.readdir(t,{withFileTypes:!0});return await G(r,n),s}async function Gn(e,t,n){try{return await je(e,t,n),!0}catch(i){if(i.code==="ENOENT")return!1;throw i}}async function Ai(e,t,n,i){let r=O.resolve(e),s=O.resolve(t),o=O.relative(r,s);if(O.isAbsolute(o)||o===".."||o.startsWith(`..${O.sep}`))throw new Error(`${n} must stay inside the project root`);let a=r;for(let c of o.split(O.sep).filter(Boolean)){let l=O.join(a,c);try{let u=await te.lstat(l,{bigint:!0});if(!u.isDirectory()||u.isSymbolicLink())throw new Error(`${n} crosses a symbolic link or junction`)}catch(u){if(u.code!=="ENOENT")throw u;let f=await je(e,a,n),d=`create-directory:${at(e,l)}`;await i?.beforeMutation?.(d),await G(f,n);try{await te.mkdir(l)}catch(g){if(g.code!=="EEXIST")throw g}await G(f,n);let p=await te.lstat(l,{bigint:!0});if(!p.isDirectory()||p.isSymbolicLink())throw new Error(`${n} changed while creating a directory`,{cause:u})}a=l}await Li(e,t,n,"directory")}async function Mi(e,t,n){let i=await te.lstat(e,{bigint:!0});if(i.isSymbolicLink()||(t==="file"?!i.isFile():!i.isDirectory()))throw new Error(`${n} must be a real ${t}`);return i}async function ot(e,t,n){let i=await te.lstat(e,{bigint:!0}),r=t.isDirectory()?Gg(Yn(t),Yn(i)):ba(t,i);if(i.isSymbolicLink()||i.isFile()!==t.isFile()||i.isDirectory()!==t.isDirectory()||!r)throw new Error(`${n} changed after inspection`)}async function xu(e,t,n,i,r){let s=`Classic root move ${i}`,o=await je(e,O.dirname(t),s);await r?.beforeMutation?.(i),await G(o,s);let a=await te.open(t,"wx");try{await G(o,s),await a.writeFile(n),await a.sync()}finally{await a.close()}await G(o,s),await Li(e,t,s,"file")}async function ya(e,t,n,i,r){let s=`Classic root move ${i}`,o=await je(e,O.dirname(t),s),a=await je(e,O.dirname(n),s),c=await Mi(t,"file",s);await r?.beforeMutation?.(i),await G(o,s),await G(a,s),await ot(t,c,s),await te.link(t,n),await G(o,s),await G(a,s),await ot(n,c,s)}async function qg(e,t,n,i,r,s={}){let o=`Classic root move ${i}`,a=await je(e,O.dirname(t),o),c=await je(e,O.dirname(n),o),l=await Mi(t,(await te.lstat(t)).isDirectory()?"directory":"file",o);if(s.replaceTarget)s.expectedTargetIdentity&&await ot(n,s.expectedTargetIdentity,o);else if((await N(e,at(e,n),{label:o,expected:"any"})).exists)throw new Error(`${o} target already exists`);await r?.beforeMutation?.(i),await G(a,o),await G(c,o),await ot(t,l,o),s.expectedTargetIdentity&&await ot(n,s.expectedTargetIdentity,o),await s.validateTarget?.(),await te.rename(t,n),await G(a,o),await G(c,o),await ot(n,l,o)}async function Vn(e,t,n,i,r={}){let s=`Classic root move ${n}`,o;try{o=await Mi(t,"file",s)}catch(c){if(c.code==="ENOENT")return!1;throw c}r.expectedIdentity&&await ot(t,r.expectedIdentity,s);let a=await je(e,O.dirname(t),s);return await i?.beforeMutation?.(n),await G(a,s),await ot(t,o,s),r.expectedIdentity&&await ot(t,r.expectedIdentity,s),await r.validateTarget?.(),await te.unlink(t),await G(a,s),!0}async function pa(e,t,n,i,r){let s=`Classic root move ${n}`,o;try{o=await Mi(t,"directory",s)}catch(l){if(l.code==="ENOENT")return!1;throw l}if(r&&!Pu(ga(o,`Classic root move ${n}`),r))throw new Error(`Classic root move ${n} changed after migration preflight`);let a=await je(e,O.dirname(t),s);await i?.beforeMutation?.(n),await G(a,s),await ot(t,o,s);let c=await te.readdir(t);if(await G(a,s),await ot(t,o,s),c.length>0)throw new Error(`${s} directory is not empty`);return await te.rmdir(t),await G(a,s),!0}async function va(e,t){let n=Qe(e,"legacy"),i=Qe(e,"docs"),r=O.join(e,".comet","transactions","classic-root-move"),s=[[O.join(e,".comet"),".comet","directory"],[O.join(e,".comet","config.yaml"),".comet/config.yaml","file"],[n.openSpecRoot,"openspec","directory"],[O.dirname(i.openSpecRoot),"docs","directory"],[i.openSpecRoot,"docs/openspec","directory"],[O.join(e,".comet","transactions"),".comet/transactions","directory"],[r,".comet/transactions/classic-root-move","directory"]];if(t){let o=O.join(r,t);s.push([o,`transaction ${t}`,"directory"],[O.join(o,"openspec"),`transaction ${t} staging`,"directory"],[O.join(o,"legacy-source"),`transaction ${t} quarantine`,"directory"])}for(let[o,a,c]of s)await Li(e,o,a,c)}async function Vg(e,t,n,i){let r=Xn(e);await Ai(e,O.dirname(r),"Classic root move journal parent",i);let s=`${r}.${wa()}.tmp`,o=JSON.stringify(n,null,2)+` +`,a;try{await xu(e,s,o,"update-journal-temp",i);let c=await Mi(s,"file","Classic root move updated journal");a=await nw(e,t,"update-journal-commit",i);try{await ya(e,s,r,"update-journal-publish",i)}catch(f){throw new Error("Classic root move journal publish failed; a successor journal was preserved",{cause:f})}let l=await Ti(e),u=l?ji(l):null;if(!l||l.id!==n.id||l.stage!==n.stage||l.planId!==n.planId||l.schema!==n.schema||!u||u.contentHash!==Ii(Buffer.from(o))||!ba(c,u.fileIdentity))throw new Error("Classic root move journal ownership changed while updating");return await Vn(e,a.file,"cleanup-update-journal-quarantine",i,{expectedIdentity:ji(a.journal).fileIdentity}),a=void 0,l}catch(c){throw a&&await tw(e,a,"restore-update-journal",i).catch(()=>!1),c}finally{await Vn(e,s,"cleanup-update-journal-temp").catch(()=>!1)}}async function kx(e,t,n,i){await Ai(e,O.dirname(t),"Classic root move journal parent",i);let r=`${t}.${wa()}.tmp`;try{await xu(e,r,JSON.stringify(n,null,2)+` +`,"create-journal-temp",i),await ya(e,r,t,"create-journal-commit",i)}catch(s){throw s.code==="EEXIST"?new Error("Classic root move is incomplete; use comet doctor --repair --strategy continue|rollback",{cause:s}):s}finally{await Vn(e,r,"cleanup-create-journal-temp").catch(()=>!1)}}function Yg(e){return ts("sha256").update(JSON.stringify({directories:e.directories,files:e.files,totalBytes:e.totalBytes})).digest("hex")}function Qr(e,t){return et?1:0}function la(e,t){return e.every((n,i)=>i===0||t(e[i-1],n)<=0)}function zg(e){return ts("sha256").update(JSON.stringify({source:e.source,target:e.target,staging:e.staging,artifactLayout:e.artifactLayout,sourceIdentity:e.sourceIdentity,targetInitialIdentity:e.targetInitialIdentity,targetInitialState:e.targetInitialState,fileCount:e.fileCount,directoryCount:e.directoryCount,totalBytes:e.totalBytes,manifestHash:e.manifestHash,configPath:e.configPath,originalConfigHash:e.originalConfigHash,expectedConfigHash:e.expectedConfigHash})).digest("hex")}function Sx(e){return ts("sha256").update(JSON.stringify({source:e.source,target:e.target,staging:_u,targetInitialState:e.targetInitialState,fileCount:e.fileCount,directoryCount:e.directoryCount,totalBytes:e.totalBytes,manifestHash:e.manifestHash,configPath:e.configPath,originalConfigHash:e.originalConfigHash,expectedConfigHash:e.expectedConfigHash})).digest("hex")}function ha(e){return"birthtimeNs"in e&&typeof e.birthtimeNs=="bigint"?e.birthtimeNs:e.birthtimeMs}function ku(e){return"ctimeNs"in e&&typeof e.ctimeNs=="bigint"?e.ctimeNs:e.ctimeMs}function Ex(e){return"mtimeNs"in e&&typeof e.mtimeNs=="bigint"?e.mtimeNs:e.mtimeMs}function Yn(e){return{dev:e.dev,ino:e.ino,birthtime:ha(e)}}function Xr(e){return String(e)}function ga(e,t){let n=Yn(e);if(!Pn(n,n))throw new Error(`${t} filesystem does not expose a stable device and file identity; refusing an auditable root move`);return{dev:Xr(e.dev),ino:Xr(e.ino),birthtime:Xr(ha(e)),ctime:Xr(ku(e)),mtime:Xr(Ex(e))}}function Rx(e,t,n){return t.entries.map(i=>{let r=ga(i.stat,n);return{path:at(e,i.path)||".",dev:r.dev,ino:r.ino,birthtime:r.birthtime}})}function Pu(e,t){return JSON.stringify(e)===JSON.stringify(t)}function Xg(e,t){return e.length===t.length&&e.every((n,i)=>Pu(n,t[i]))}async function Su(e,t,n){let i=await je(e,t,n);return await G(i,n),Rx(e,i,n)}function ba(e,t){let n=Yn(e),i=Yn(t);return Pn(n,i)?Me(n,i):Me(n,i)&&ha(e)===ha(t)&&ku(e)===ku(t)&&e.size===t.size}function Ii(e){return ts("sha256").update(e).digest("hex")}async function Zr(e,t,n,i,r){let s=await J(e,at(e,t),n,{label:i,bigint:!0});if(r&&!ba(r,s.stat))throw new Error(`${i} changed while reading`);if(BigInt(s.stat.size)!==BigInt(s.bytes.byteLength))throw new Error(`${i} changed while reading`);return s.bytes}async function Qg(e){let t=await $n(e,{allowPartialProject:!0});if(!t.document||!t.identity.exists||!t.identity.sha256)throw new Error(".comet/config.yaml does not exist");return t}async function Ou(e){return(await Qg(e)).identity.sha256}function _x(e){let t=e.value.classic;if(!t||typeof t!="object"||Array.isArray(t))throw new Error("classic must be a mapping");let n=xn({...e.value,classic:{...t,artifact_layout:"docs"}},e.classic?.language==="zh-CN"||e.native?.language==="zh-CN"?"zh-CN":"en");return ts("sha256").update(n).digest("hex")}async function Ca(e,t,n){let i=[],r=[],s=0;async function o(c,l){await Li(e,c,l||at(e,t),"directory");let u=await Cx(e,c,`tree:${l||at(e,t)}`,n);for(let f of u.sort((d,p)=>Qr(d.name,p.name))){let d=O.join(c,f.name),p=l?`${l}/${f.name}`:f.name,g=await te.lstat(d,{bigint:!0});if(g.isSymbolicLink())throw new Error(`Classic root move does not support symbolic links or junctions: ${p}`);if(g.isDirectory()){i.push(p),await o(d,p);continue}if(!g.isFile())throw new Error(`Classic root move supports only regular files and directories: ${p}`);if(await n?.afterSourceFileInspect?.(p),r.length+1>ma)throw new Error(`Classic root move exceeds ${ma} files`);let h=da-s,m=await Zr(e,d,Math.max(1,h),`Classic root move source file ${p}`,g);if(s+=m.byteLength,s>da)throw new Error(`Classic root move exceeds ${da} bytes`);r.push({path:p,size:m.byteLength,hash:Ii(m)})}}await o(t,""),i.sort(Qr),r.sort((c,l)=>Qr(c.path,l.path));let a={directories:i,files:r,totalBytes:s};return{...a,hash:Yg(a)}}function $u(e,t){return e.hash===t.hash}async function xx(e,t,n){try{let i=await je(e,t,"docs-target"),r=i.entries.at(-1);if(!r)throw new Error("Classic docs target identity is unavailable");let s=ga(r.stat,"Classic docs target");await n?.afterDirectoryInspect?.("docs-target"),await G(i,"docs-target");let o=await te.readdir(t,{withFileTypes:!0});await G(i,"docs-target");let c=(await je(e,t,"docs-target")).entries.at(-1),l=c?ga(c.stat,"Classic docs target"):null;if(!l||!Pu(s,l))throw new Error("Classic docs target changed after inspection");return o.length>0?{state:"non-empty",conflicts:["Classic docs target is not empty"],identity:l}:{state:"empty",conflicts:[],identity:l}}catch(i){if(i.code==="ENOENT")return{state:"missing",conflicts:[],identity:null};throw i}}async function Px(e){if(await op(e),await an(e)!=="legacy")throw new Error("Classic root move requires classic.artifact_layout: legacy")}async function Eu(e,t={}){if(await va(e),await Px(e),await an(e)!=="legacy")throw new Error("Classic root move requires the legacy layout");let n=Qe(e,"legacy"),i=Qe(e,"docs");if(!await Gn(e,n.openSpecRoot,"Classic legacy root"))throw new Error("Classic legacy root does not exist: openspec/");let r=await Su(e,n.openSpecRoot,"Classic legacy root identity"),s=await Ca(e,n.openSpecRoot,t.testHooks),o=await Su(e,n.openSpecRoot,"Classic legacy root identity");if(!Xg(r,o))throw new Error("Classic legacy root identity changed during migration preflight");let a=await xx(e,i.openSpecRoot,t.testHooks),c=await Qg(e);await t.testHooks?.afterConfigSnapshot?.();let l=c.identity.sha256,u=_x(c.document),f={source:at(e,n.openSpecRoot),target:at(e,i.openSpecRoot),staging:_u,artifactLayout:"legacy",sourceIdentity:o,targetInitialIdentity:a.identity,targetInitialState:a.state,fileCount:s.files.length,directoryCount:s.directories.length,totalBytes:s.totalBytes,manifestHash:s.hash,configPath:ae,originalConfigHash:l,expectedConfigHash:u};return{manifest:s,plan:{projectRoot:e,...f,configHash:l,planId:zg(f),fileSummary:s.files.map(d=>({...d})),configChange:{from:"legacy",to:"docs"},conflicts:a.conflicts,blockers:[],pendingRecovery:null,historicalPointersPreserved:[...Hg],applyPreconditions:[...Kg],allowedRecoveryStrategies:[],readyToApply:a.conflicts.length===0}}}async function Ox(e,t,n,i,r){await Ai(e,n,"Classic root move staging root",r);for(let s of i.directories)await Ai(e,O.join(n,...s.split("/")),`Classic root move staging directory ${s}`,r);for(let s of i.files){await r?.beforeSourceFileCopy?.(s.path);let o=O.join(t,...s.path.split("/")),a=await Zr(e,o,Math.max(1,s.size),`Classic root move source file ${s.path}`);if(a.byteLength!==s.size||Ii(a)!==s.hash)throw new Error("Classic legacy root changed after migration preflight");let c=O.join(n,...s.path.split("/"));if(await Ai(e,O.dirname(c),`Classic root move staging parent ${s.path}`,r),(await N(e,at(e,c),{label:`Classic root move staging file ${s.path}`,expected:"file"})).exists)throw new Error("Classic root move staging changed after migration preflight");await xu(e,c,a,`copy-file:${s.path}`,r);let u=await Zr(e,c,Math.max(1,s.size),`Classic root move staging file ${s.path}`);if(u.byteLength!==s.size||Ii(u)!==s.hash)throw new Error("Classic root move staging verification failed")}}function Xn(e){return O.join(e,...Ru.split("/"))}function D(e){return new Error(`invalid Classic root move journal: ${e}`)}function Ni(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw D(`${t} must be an object`);return e}function zn(e,t,n){let i=Object.keys(e).sort(),r=[...t].sort();if(JSON.stringify(i)!==JSON.stringify(r))throw D(`${n} fields are invalid`)}function Dg(e,t){if(typeof e!="string"||e.length===0||e.includes("\\"))throw D(`${t} is invalid`);let n=e.split("/");if(O.posix.isAbsolute(e)||n.some(i=>i===""||i==="."||i==="..")||O.posix.normalize(e)!==e)throw D(`${t} must stay inside the migration tree`);return e}function Zg(e){let t=Ni(e,"manifest");if(zn(t,["directories","files","totalBytes","hash"],"manifest"),!Array.isArray(t.directories)||!Array.isArray(t.files)||!Number.isSafeInteger(t.totalBytes)||t.totalBytes<0||t.totalBytes>da||typeof t.hash!="string"||!St.test(t.hash))throw D("manifest shape is invalid");let n=t.directories.map((u,f)=>Dg(u,`manifest path directories[${f}]`)),i=t.files.map((u,f)=>{let d=Ni(u,`manifest.files[${f}]`);zn(d,["path","size","hash"],`manifest.files[${f}]`);let p=Dg(d.path,`manifest path files[${f}]`);if(!Number.isSafeInteger(d.size)||d.size<0||typeof d.hash!="string"||!St.test(d.hash))throw D(`manifest.files[${f}] is invalid`);return{path:p,size:d.size,hash:d.hash}});if(i.length>ma)throw D(`manifest exceeds ${ma} files`);let r=i.map(u=>u.path),s=new Set(n).size!==n.length||new Set(r).size!==r.length,o=la(n,Qr)&&la(r,Qr)||la(n,(u,f)=>u.localeCompare(f))&&la(r,(u,f)=>u.localeCompare(f));if(s||!o)throw D("manifest paths must be unique and sorted");let a=i.reduce((u,f)=>u+f.size,0);if(a!==t.totalBytes)throw D("manifest totalBytes does not match its files");let c={directories:n,files:i,totalBytes:a},l=Yg(c);if(l!==t.hash)throw D("manifest hash is invalid");return{...c,hash:l}}function ew(e,t){let n=Ni(e,t);zn(n,["dev","ino","birthtime"],t);let i=/^-?[0-9]+$/u;for(let r of["dev","ino","birthtime"])if(typeof n[r]!="string"||!i.test(n[r]))throw D(`${t}.${r} is invalid`);if(n.dev==="0"||n.ino==="0")throw D(`${t} does not contain a stable filesystem identity`);return{dev:n.dev,ino:n.ino,birthtime:n.birthtime}}function $x(e,t){let n=Ni(e,t);zn(n,["dev","ino","birthtime","ctime","mtime"],t);let i=ew({dev:n.dev,ino:n.ino,birthtime:n.birthtime},t),r=/^-?[0-9]+$/u;if(typeof n.ctime!="string"||!r.test(n.ctime)||typeof n.mtime!="string"||!r.test(n.mtime))throw D(`${t} timestamps are invalid`);return{...i,ctime:n.ctime,mtime:n.mtime}}function Ax(e){if(!Array.isArray(e)||e.length!==2)throw D("sourceIdentity must bind the project root and openspec root");let t=[".","openspec"];return e.map((n,i)=>{let r=Ni(n,`sourceIdentity[${i}]`);if(zn(r,["path","dev","ino","birthtime"],`sourceIdentity[${i}]`),r.path!==t[i])throw D(`sourceIdentity[${i}].path is invalid`);let s={dev:r.dev,ino:r.ino,birthtime:r.birthtime};return{path:t[i],...ew(s,`sourceIdentity[${i}]`)}})}function Ix(e){if(zn(e,["schema","id","stage","source","target","staging","configPath","originalConfigHash","expectedConfigHash","planId","targetInitialState","manifest"],"root"),typeof e.id!="string"||!Jg.test(e.id))throw D("id is invalid");if(e.stage!=="copying"&&e.stage!=="ready"&&e.stage!=="switched"&&e.stage!=="configured")throw D("stage is invalid");let t=`.comet/transactions/classic-root-move/${e.id}/openspec`;if(e.source!=="openspec"||e.target!=="docs/openspec"||e.staging!==t)throw D("source, target, and staging must use the managed project paths");if(e.configPath!==ae||typeof e.originalConfigHash!="string"||!St.test(e.originalConfigHash)||typeof e.expectedConfigHash!="string"||!St.test(e.expectedConfigHash)||typeof e.planId!="string"||!St.test(e.planId))throw D("config path, config hashes, or planId is invalid");if(e.targetInitialState!=="missing"&&e.targetInitialState!=="empty")throw D("targetInitialState is invalid");let n=e.targetInitialState,i=Zg(e.manifest),r={source:e.source,target:e.target,targetInitialState:n,fileCount:i.files.length,directoryCount:i.directories.length,totalBytes:i.totalBytes,manifestHash:i.hash,configPath:e.configPath,originalConfigHash:e.originalConfigHash,expectedConfigHash:e.expectedConfigHash};if(Sx(r)!==e.planId)throw D("planId does not match the bound config and tree");return{schema:"comet.classic-root-move.v1",id:e.id,stage:e.stage,source:e.source,target:e.target,staging:e.staging,configPath:e.configPath,originalConfigHash:e.originalConfigHash,expectedConfigHash:e.expectedConfigHash,planId:e.planId,targetInitialState:n,manifest:i}}function Nx(e){if(zn(e,["schema","id","stage","source","target","staging","artifactLayout","sourceIdentity","targetInitialIdentity","configPath","originalConfigHash","expectedConfigHash","planId","approvedPlanId","targetInitialState","manifest"],"root"),typeof e.id!="string"||!Jg.test(e.id))throw D("id is invalid");if(e.stage!=="locked"&&e.stage!=="copying"&&e.stage!=="ready"&&e.stage!=="switched"&&e.stage!=="configured")throw D("stage is invalid");let t=`.comet/transactions/classic-root-move/${e.id}/openspec`;if(e.source!=="openspec"||e.target!=="docs/openspec"||e.staging!==t)throw D("source, target, and staging must use the managed project paths");if(e.artifactLayout!=="legacy")throw D("artifactLayout must be legacy");let n=Ax(e.sourceIdentity);if(e.configPath!==ae||typeof e.originalConfigHash!="string"||!St.test(e.originalConfigHash)||typeof e.expectedConfigHash!="string"||!St.test(e.expectedConfigHash)||typeof e.planId!="string"||!St.test(e.planId)||typeof e.approvedPlanId!="string"||!St.test(e.approvedPlanId))throw D("config path, config hashes, planId, or approvedPlanId is invalid");let i=e.targetInitialState;if(i!=="missing"&&i!=="empty"&&!(e.stage==="locked"&&i==="non-empty"))throw D("targetInitialState is invalid");let r=e.targetInitialIdentity===null?null:$x(e.targetInitialIdentity,"targetInitialIdentity");if(i==="missing"&&r!==null||i!=="missing"&&r===null)throw D("targetInitialIdentity does not match targetInitialState");let s=Zg(e.manifest),o={source:e.source,target:e.target,staging:_u,artifactLayout:"legacy",sourceIdentity:n,targetInitialIdentity:r,targetInitialState:i,fileCount:s.files.length,directoryCount:s.directories.length,totalBytes:s.totalBytes,manifestHash:s.hash,configPath:e.configPath,originalConfigHash:e.originalConfigHash,expectedConfigHash:e.expectedConfigHash};if(zg(o)!==e.planId)throw D("planId does not match the bound config and tree");if(e.stage!=="locked"&&e.approvedPlanId!==e.planId)throw D("approvedPlanId does not match the executable plan");return{schema:"comet.classic-root-move.v2",id:e.id,stage:e.stage,source:e.source,target:e.target,staging:e.staging,artifactLayout:"legacy",sourceIdentity:n,targetInitialIdentity:r,configPath:e.configPath,originalConfigHash:e.originalConfigHash,expectedConfigHash:e.expectedConfigHash,planId:e.planId,approvedPlanId:e.approvedPlanId,targetInitialState:i,manifest:s}}function Tx(e){let t=Ni(e,"root");if(t.schema==="comet.classic-root-move.v1")return Ix(t);if(t.schema==="comet.classic-root-move.v2")return Nx(t);throw D("schema is unsupported")}async function Ti(e,t){return Au(e,Xn(e),Ru,t?.afterJournalInspect)}async function Au(e,t,n,i){await Li(e,t,n,"file");try{let r=await te.lstat(t,{bigint:!0});if(!r.isFile()||r.isSymbolicLink()||r.size>BigInt(Mg))throw D("journal must be a bounded regular file");await i?.();let s=await Zr(e,t,Mg,"Classic root move journal",r),o=Tx(JSON.parse(s.toString("utf8")));return Object.defineProperty(o,Ug,{value:{fileIdentity:r,contentHash:Ii(s)},enumerable:!1}),o}catch(r){if(r.code==="ENOENT")return null;throw r}}function ji(e){let t=e[Ug];if(!t)throw new Error("Classic root move journal has no ownership claim");return t}function Iu(e,t){let n=ji(e),i=ji(t);return ba(n.fileIdentity,i.fileIdentity)&&n.contentHash===i.contentHash&&e.schema===t.schema&&e.id===t.id&&e.stage===t.stage&&e.planId===t.planId}async function Wg(e,t){let n=await Au(e,Xn(e),Ru);if(!n||!Iu(t,n))throw new Error("Classic root move journal ownership changed")}async function tw(e,t,n,i){let r=Xn(e);try{await ya(e,t.file,r,`${n}-publish`,i)}catch(o){if(o.code==="EEXIST")return!1;throw o}let s=await Ti(e);if(!s||!Iu(t.journal,s))throw new Error("Classic root move journal ownership changed while restoring quarantine");return await Vn(e,t.file,`${n}-cleanup-quarantine`,i,{expectedIdentity:ji(t.journal).fileIdentity}),!0}async function nw(e,t,n,i){let r=Xn(e),s=`${r}.${t.id}.${wa()}.quarantine`;await Wg(e,t);let o=await je(e,O.dirname(r),`Classic root move ${n} quarantine`);await i?.beforeMutation?.(`${n}-quarantine`),await G(o,`Classic root move ${n} quarantine`),await Wg(e,t),await te.rename(r,s),await G(o,`Classic root move ${n} quarantine`);let a=await Au(e,s,at(e,s)).catch(async c=>{throw await Fg(e,s,`${n}-restore-unverified`,i).catch(()=>!1),new Error("Classic root move journal ownership changed while quarantining",{cause:c})});if(!a||!Iu(t,a))throw await Fg(e,s,`${n}-restore-successor`,i).catch(()=>!1),new Error("Classic root move journal ownership changed while quarantining");return await i?.afterJournalQuarantine?.(n),{file:s,journal:a}}async function Fg(e,t,n,i){let r=Xn(e),s;try{s=await Mi(t,"file",`Classic root move ${n}`)}catch(o){if(o.code==="ENOENT")return!1;throw o}try{await ya(e,t,r,`${n}-publish`,i)}catch(o){if(o.code==="EEXIST")return!1;throw o}return await Vn(e,t,`${n}-cleanup-quarantine`,i,{expectedIdentity:s}),!0}async function iw(e,t,n,i){let r=await nw(e,t,n,i);try{if(!await Vn(e,r.file,`${n}-quarantined`,i,{expectedIdentity:ji(r.journal).fileIdentity}))throw new Error("Classic root move quarantined journal disappeared before removal");return!0}catch(s){throw await tw(e,r,`${n}-restore`,i).catch(()=>!1),s}}async function ua(e,t,n,i){if(t.schema==="comet.classic-root-move.v1"&&n==="locked")throw new Error("Legacy Classic root move journals do not support the locked stage");let r={...t,stage:n};return Vg(e,t,r,i)}function rw(e,t){let n={legacy:Qe(e,"legacy"),docs:Qe(e,"docs")},i=O.join(e,".comet","transactions","classic-root-move",t.id);return{source:n.legacy.openSpecRoot,target:n.docs.openSpecRoot,staging:O.join(i,"openspec"),quarantine:O.join(i,"legacy-source"),transactionRoot:i}}async function es(e,t,n){if(!await Gn(e,t,"Classic root move tree"))return"missing";try{return $u(await Ca(e,t),n)?"match":"mismatch"}catch{return"mismatch"}}async function Nu(e,t,n){if(!await Gn(e,t,"Classic root move target"))return"missing";try{let i=await Ca(e,t);return $u(i,n)?"match":i.directories.length===0&&i.files.length===0?"empty":"mismatch"}catch{return"mismatch"}}async function sw(e,t,n){if(!await Gn(e,t,"Classic root move manifest tree"))return{status:"missing"};try{let i=await Ca(e,t);if($u(i,n))return{status:"complete",actual:i};let r=new Set(n.directories),s=new Map(n.files.map(o=>[o.path,o]));if(i.directories.some(o=>!r.has(o)))return{status:"mismatch"};for(let o of i.files){let a=s.get(o.path);if(!a||a.size!==o.size||a.hash!==o.hash)return{status:"mismatch"}}return{status:"partial",actual:i}}catch{return{status:"mismatch"}}}async function jx(e,t,n,i,r="remove-quarantine"){let s=await sw(e,t,n);if(s.status==="missing")return;if(s.status==="mismatch"||!s.actual)throw new Error("Classic quarantine contains unknown or changed content; files were preserved");for(let a of s.actual.files){let c=O.join(t,...a.path.split("/")),l;try{l=await te.lstat(c,{bigint:!0})}catch(f){if(f.code==="ENOENT")continue;throw f}let u=l.isFile()&&!l.isSymbolicLink()?await Zr(e,c,Math.max(1,a.size),`Classic root move quarantine file ${a.path}`,l):null;if(!u||u.byteLength!==a.size||Ii(u)!==a.hash)throw new Error("Classic quarantine contains unknown or changed content; files were preserved");await Vn(e,c,`${r}-file:${a.path}`,i)}let o=[...s.actual.directories].sort((a,c)=>{let l=c.split("/").length-a.split("/").length;return l===0?c.localeCompare(a):l});for(let a of o){let c=O.join(t,...a.split("/"));await pa(e,c,`${r}-directory:${a}`,i)}await pa(e,t,`${r}-root`,i)}async function Lx(e,t,n,i){let r=await Nu(e,t,n.manifest);if(n.targetInitialState==="missing"){if(r!=="missing")throw new Error("Classic docs target changed after migration preflight");return}if(r==="empty"){if(n.schema==="comet.classic-root-move.v2"&&!n.targetInitialIdentity)throw new Error("Classic docs target identity is missing from the approved plan");await pa(e,t,"remove-empty-target",i,n.schema==="comet.classic-root-move.v2"?n.targetInitialIdentity??void 0:void 0);return}if(r!=="missing")throw new Error("Classic docs target changed after migration preflight")}async function fa(e,t,n){if(n.schema==="comet.classic-root-move.v1")return;let i=await Su(e,t,"Classic legacy root identity");if(!Xg(i,n.sourceIdentity))throw new Error("Classic legacy root identity changed after migration preflight")}async function Cu(e,t){if(await Ou(e)!==t.originalConfigHash)throw new Error("Classic project config changed after migration preflight");if(await an(e)!=="legacy")throw new Error("Classic project config changed after migration preflight")}async function Bg(e,t){if(await Ou(e)!==t.expectedConfigHash)throw new Error("Classic project config does not match the expected post-switch config hash");if(await an(e)!=="docs")throw new Error("Classic project config does not match the expected post-switch config hash")}async function Un(e,t,n,i){if(await es(e,t,n)!=="match")throw new Error(i)}async function Mx(e,t,n){if(t.stage==="locked")throw new Error("Classic root move locked preflight must be approved before execution");await va(e,t.id);let{source:i,target:r,staging:s,quarantine:o,transactionRoot:a}=rw(e,t),c=t;if(c.stage==="copying"){await Cu(e,c),await fa(e,i,c),await Un(e,i,c.manifest,"Classic legacy root changed after migration preflight"),await Lx(e,r,c,n);let l=await es(e,s,c.manifest);if(l==="mismatch")throw new Error("Classic root move staging changed after migration preflight");l==="missing"&&await Ox(e,i,s,c.manifest,n),await Un(e,s,c.manifest,"Classic root move staging verification failed"),c=await ua(e,c,"ready",n)}if(c.stage==="ready"){await Cu(e,c),await fa(e,i,c),await Un(e,i,c.manifest,"Classic legacy root changed after migration preflight");let l=await es(e,s,c.manifest),u=await Nu(e,r,c.manifest);if(l==="missing"&&u==="match")c=await ua(e,c,"switched",n);else{if(l!=="match")throw new Error("Classic root move staging changed after migration preflight");if(u==="mismatch"||u==="empty")throw new Error("Classic docs target changed after migration preflight");u==="missing"&&(await Ai(e,O.dirname(r),"Classic docs target parent",n),await qg(e,s,r,"rename-staging-target",n),c=await ua(e,c,"switched",n))}}if(c.stage==="switched"){await fa(e,i,c),await Un(e,i,c.manifest,"Classic legacy root changed before config switch"),await Un(e,r,c.manifest,"Classic docs target verification failed after switch");let l=await an(e);if(l==="legacy")await Cu(e,c),await ap(e,"docs",{expectedIdentity:{exists:!0,sha256:c.originalConfigHash}});else if(l!=="docs")throw new Error("Classic project config changed after migration preflight");await Bg(e,c),c=await ua(e,c,"configured",n)}if(c.stage!=="configured")throw new Error(`Unsupported Classic root move stage: ${c.stage}`);if(await Bg(e,c),await Un(e,r,c.manifest,"Classic docs target verification failed after config switch"),await Gn(e,i,"Classic legacy root")){if(await fa(e,i,c),await Un(e,i,c.manifest,"Classic legacy root changed before cleanup; both roots were preserved"),await Gn(e,o,"Classic root move quarantine"))throw new Error("Classic root move quarantine conflicts with the legacy root");await qg(e,i,o,"rename-source-quarantine",n)}await Gn(e,o,"Classic root move quarantine")&&await jx(e,o,c.manifest,n),await pa(e,a,"remove-transaction-root",n),await iw(e,c,"remove-journal",n)}async function qx(e,t){if(await va(e,t.id),t.stage==="locked")return{allowedStrategies:["rollback"],reason:"the locked apply preflight was not approved for execution"};let{source:n,target:i,staging:r,quarantine:s}=rw(e,t),o=await an(e),a=await Ou(e),c=o==="legacy"&&a===t.originalConfigHash,l=o==="docs"&&a===t.expectedConfigHash,[u,f,d,p]=await Promise.all([es(e,n,t.manifest),Nu(e,i,t.manifest),es(e,r,t.manifest),sw(e,s,t.manifest)]),g=p.status;if(u==="mismatch")return{allowedStrategies:[],reason:"Classic legacy root changed after migration preflight"};if(f==="mismatch")return{allowedStrategies:[],reason:"Classic docs target changed after migration preflight"};if(d==="mismatch")return{allowedStrategies:[],reason:"Classic staging changed after migration preflight"};if(g==="mismatch")return{allowedStrategies:[],reason:"Classic quarantine contains unknown or changed content"};if(t.stage==="configured"||o==="docs")return l?f==="match"&&(u==="match"&&g==="missing"||u==="missing"&&(g==="missing"||g==="complete"||g==="partial"))?{allowedStrategies:["continue"]}:{allowedStrategies:[],reason:"the configured migration trees are incomplete"}:{allowedStrategies:[],reason:"project config does not match the expected post-switch config hash"};if(!c)return{allowedStrategies:[],reason:"project config changed after migration preflight"};let h=u==="match",m=d==="match"||d==="missing",w=f==="match"||f==="missing"||t.targetInitialState==="empty"&&f==="empty";return!h||!m||!w||g!=="missing"?{allowedStrategies:[],reason:"the migration trees are not recoverable"}:{allowedStrategies:["continue","rollback"]}}async function ow(e,t={}){let n=await le(e),i=await Ti(n,t.testHooks);if(i){let r=await Dx(n);if(!r)throw new Error("Classic root move journal disappeared during inspection");return{projectRoot:n,source:i.source,target:i.target,staging:i.staging,artifactLayout:"legacy",sourceIdentity:i.schema==="comet.classic-root-move.v2"?i.sourceIdentity.map(s=>({...s})):[],targetInitialIdentity:i.schema==="comet.classic-root-move.v2"&&i.targetInitialIdentity?{...i.targetInitialIdentity}:null,fileCount:i.manifest.files.length,directoryCount:i.manifest.directories.length,totalBytes:i.manifest.totalBytes,manifestHash:i.manifest.hash,configPath:i.configPath,configHash:i.originalConfigHash,originalConfigHash:i.originalConfigHash,expectedConfigHash:i.expectedConfigHash,planId:i.planId,fileSummary:i.manifest.files.map(s=>({...s})),configChange:{from:"legacy",to:"docs"},conflicts:r.reason?[r.reason]:[],blockers:[`pending Classic root move: ${i.id} at ${i.stage}`],pendingRecovery:r,historicalPointersPreserved:[...Hg],applyPreconditions:[...Kg],allowedRecoveryStrategies:[...r.allowedStrategies],targetInitialState:i.targetInitialState,readyToApply:!1}}return(await Eu(n,t)).plan}async function aw(e,t={}){let n=await le(e),i=await Ti(n,t.testHooks);if(i)throw new Error(`Classic root move ${i.id} is incomplete; use comet doctor --repair --strategy continue|rollback`);let r=await Eu(n),s=t.planId??r.plan.planId;if(!St.test(s))throw new Error("Classic root move apply received an invalid internal plan ID");let o=wa();await va(n,o);let a={schema:"comet.classic-root-move.v2",id:o,stage:"locked",source:r.plan.source,target:r.plan.target,staging:`.comet/transactions/classic-root-move/${o}/openspec`,artifactLayout:r.plan.artifactLayout,sourceIdentity:r.plan.sourceIdentity.map(u=>({...u})),targetInitialIdentity:r.plan.targetInitialIdentity?{...r.plan.targetInitialIdentity}:null,configPath:ae,originalConfigHash:r.plan.originalConfigHash,expectedConfigHash:r.plan.expectedConfigHash,planId:r.plan.planId,approvedPlanId:s,targetInitialState:r.plan.targetInitialState,manifest:r.manifest};await kx(n,Xn(n),a,t.testHooks);let c=await Ti(n);if(!c||c.id!==o||c.stage!=="locked")throw new Error("Classic root move lock ownership changed before locked preflight");let l=!1;try{let u=await Eu(n,t),f=u.plan;if(f.planId!==s)throw new Error(`Classic root move plan changed since dry-run: approved ${s}, current ${f.planId}`);if(!f.readyToApply)throw new Error(`Classic root move apply is blocked: ${[...f.conflicts,...f.blockers].join("; ")}`);if(f.targetInitialState==="non-empty")throw new Error("Classic root move apply is blocked: Classic docs target is not empty");let d={schema:"comet.classic-root-move.v2",id:o,stage:"copying",source:f.source,target:f.target,staging:`.comet/transactions/classic-root-move/${o}/openspec`,artifactLayout:f.artifactLayout,sourceIdentity:f.sourceIdentity.map(g=>({...g})),targetInitialIdentity:f.targetInitialIdentity?{...f.targetInitialIdentity}:null,configPath:ae,originalConfigHash:f.originalConfigHash,expectedConfigHash:f.expectedConfigHash,planId:f.planId,approvedPlanId:s,targetInitialState:f.targetInitialState,manifest:u.manifest},p=await Vg(n,c,d,t.testHooks);return l=!0,await Mx(n,p,t.testHooks),{...f,staging:d.staging}}catch(u){throw l||await iw(n,c,"remove-rejected-lock",t.testHooks).catch(()=>!1),u}}async function Dx(e,t={}){let n=await Ti(e,t.testHooks);if(!n)return null;let i=await qx(e,n);return{id:n.id,stage:n.stage,source:n.source,target:n.target,staging:n.staging,planId:n.planId,...i}}gt();function cw(e="en"){return{exitCode:64,stderr:e==="zh-CN"?"用法:comet classic root show | comet classic root move docs --dry-run | comet classic root move docs --apply":"Usage: comet classic root show | comet classic root move docs --dry-run | comet classic root move docs --apply"}}function Wx(e){return e?.classic?.language==="en"?"en":"zh-CN"}function Fx(e,t){let n=e instanceof Error?e.message:String(e);return t==="en"?n:n==="invalid Classic root move journal: manifest paths must be unique and sorted"?"Classic 根目录迁移失败:迁移记录中的清单路径必须唯一且按顺序排列":n.startsWith("invalid Classic root move journal:")?"Classic 根目录迁移失败:迁移记录格式或内容无效,请运行 comet doctor 检查恢复状态":"Classic 根目录迁移失败:迁移过程中发生错误,请运行 comet doctor 检查迁移状态"}function lw(e,t,n="en"){let i=n==="zh-CN",r=d=>d.length>0?d.join("; "):i?"无":"none",s=d=>{if(!i)return d;let p=/^pending Classic root move: (.+) at (.+)$/u.exec(d);return p?`存在待恢复的 Classic 根目录迁移:${p[1]},阶段 ${p[2]}`:{"Classic docs target is not empty":"docs 目标目录非空","the locked apply preflight was not approved for execution":"已锁定的迁移预检尚未获准执行","Classic legacy root changed after migration preflight":"迁移预检后 legacy 根目录发生变化","Classic docs target changed after migration preflight":"迁移预检后 docs 目标目录发生变化","Classic staging changed after migration preflight":"迁移预检后暂存目录发生变化","Classic quarantine contains unknown or changed content":"隔离目录包含未知或已变化的内容","project config does not match the expected post-switch config hash":"项目配置与切换后的预期配置哈希不一致","the configured migration trees are incomplete":"已切换配置对应的迁移目录不完整","project config changed after migration preflight":"迁移预检后项目配置发生变化","the migration trees are not recoverable":"迁移目录当前无法安全恢复"}[d]??"迁移状态存在无法识别的冲突,请运行 comet doctor 检查恢复状态"},o=(d,p)=>p.length===0?[`${d}: ${i?"无":"none"}`]:[`${d}:`,...p.map(g=>`- ${s(g)}`)],a=i?{missing:"缺失",empty:"空目录","non-empty":"非空目录"}[e.targetInitialState]:e.targetInitialState,c=i?"handoff 哈希;运行状态;检查点;轨迹;已归档证据与产物指针":e.historicalPointersPreserved.join("; "),l=i?"内部迁移身份仍与布局、源目录、清单、目标目录和配置一致;不存在待恢复的根迁移事务;目标仍然缺失或为已绑定的空目录;所有迁移路径仍受保护":e.applyPreconditions.join("; "),u=i?e.allowedRecoveryStrategies.map(d=>d==="continue"?"继续":"回滚"):e.allowedRecoveryStrategies,f=[t==="dry-run"?i?"Classic 根目录迁移现状":"Classic root move status":i?"Classic 根目录迁移完成":"Classic root move complete",...t==="dry-run"?[i?"说明:仅查看现状,未修改任何文件。":"Note: Inspection only; no files were changed."]:[],`${i?"源目录":"source"}: ${e.source}`,`${i?"目标目录":"target"}: ${e.target}`,`${i?"暂存目录":"staging"}: ${e.staging}`,`${i?"当前布局":"artifact layout"}: ${e.artifactLayout}`,`${i?"源目录身份":"source identity"}: ${JSON.stringify(e.sourceIdentity)}`,`${i?"目标初始身份":"target initial identity"}: ${e.targetInitialIdentity?JSON.stringify(e.targetInitialIdentity):i?"缺失":"missing"}`,`${i?"文件数":"files"}: ${e.fileCount}`,`${i?"目录数":"directories"}: ${e.directoryCount}`,`${i?"总字节数":"bytes"}: ${e.totalBytes}`,`${i?"清单哈希":"manifest"}: ${e.manifestHash}`,...e.fileSummary.map(d=>`${i?"文件":"file"}: ${d.path} ${d.size} ${d.hash}`),`${i?"配置变更":"config change"}: ${e.configChange.from} -> ${e.configChange.to}`,`${i?"配置路径":"config path"}: ${e.configPath}`,`${i?"配置哈希":"config"}: ${e.configHash}`,`${i?"原配置哈希":"original config"}: ${e.originalConfigHash}`,`${i?"预期配置哈希":"expected config"}: ${e.expectedConfigHash}`,`${i?"目标初始状态":"target initial state"}: ${a}`,...o(i?"冲突":"conflicts",e.conflicts),...o(i?"阻塞项":"blockers",e.blockers),`${i?"待恢复事务":"pending recovery"}: ${e.pendingRecovery?`${e.pendingRecovery.id} ${i?"位于阶段":"at"} ${e.pendingRecovery.stage}`:i?"无":"none"}`,`${i?"保留历史指针":"historical pointers preserved"}: ${c}`,`${i?"执行前提":"apply preconditions"}: ${l}`,`${i?"允许的恢复策略":"allowed recovery strategies"}: ${r(u)}`,`${i?"可执行迁移":"ready to apply"}: ${e.readyToApply?i?"是":"yes":i?"否":"no"}`];return t==="dry-run"?f.push(e.readyToApply?i?"下一步:运行 comet classic root move docs --apply 执行迁移。":"Next: run comet classic root move docs --apply to apply the migration.":i?"下一步:请先解决上述冲突或阻塞项。":"Next: resolve the conflicts or blockers above before applying."):f.push(i?"结果:迁移已完成。":"Result: Migration completed."),`${f.join(` `)} -`}function Wx(e,t,n){let i=I(e.projectRoot,e.openSpecRoot);return n==="zh-CN"?[t==="dry-run"?"Classic 根目录迁移现状":"Classic 根目录迁移完成",`当前布局: ${e.artifactLayout}`,`Classic 根目录: ${i}`,t==="dry-run"?"说明:项目已经使用 docs/openspec,仅查看现状,未修改任何文件。":"结果:项目已经使用 docs/openspec,无需重复迁移,未修改任何文件。"].join(` +`}function Bx(e,t,n){let i=A(e.projectRoot,e.openSpecRoot);return n==="zh-CN"?[t==="dry-run"?"Classic 根目录迁移现状":"Classic 根目录迁移完成",`当前布局: ${e.artifactLayout}`,`Classic 根目录: ${i}`,t==="dry-run"?"说明:项目已经使用 docs/openspec,仅查看现状,未修改任何文件。":"结果:项目已经使用 docs/openspec,无需重复迁移,未修改任何文件。"].join(` `)+` `:[t==="dry-run"?"Classic root move status":"Classic root move complete",`current layout: ${e.artifactLayout}`,`Classic root: ${i}`,t==="dry-run"?"Note: The project already uses docs/openspec. Inspection only; no files were changed.":"Result: The project already uses docs/openspec. No migration was needed and no files were changed."].join(` `)+` -`}var lw=async e=>{let[t,n,i,...r]=e;if(t==="show"&&n===void 0){let u=await ue(process.cwd()),f=await Y(u),d=await Ol(u,f.artifactLayout);return{exitCode:0,stdout:JSON.stringify({schema:"comet.classic-layout.v1",artifactLayout:f.artifactLayout,openSpecRoot:I(u,f.openSpecRoot),alternateRoot:I(u,d.alternateRoot),configuredRootExists:d.configuredRootExists,alternateRootExists:d.alternateRootExists,dualRoots:d.dualRoots,changesRoot:I(u,f.changesDir),archiveRoot:I(u,f.archiveDir),specsRoot:I(u,f.specsDir),superpowersRoot:I(u,f.superpowersRoot)})+` -`}}if(t!=="move"||n!=="docs")return aw();let s=await ue(process.cwd()),o=await wr(s),a=qx(o);if(i!=="--dry-run"&&i!=="--apply"||r.length>0)return aw(a);let c=await Y(s),l=i==="--dry-run"?"dry-run":"complete";if(c.artifactLayout==="docs")return{exitCode:0,stdout:Wx(c,l,a)};try{if(i==="--dry-run"){let f=await sw(s);return{exitCode:0,stdout:cw(f,"dry-run",a)}}let u=await ow(s);return{exitCode:0,stdout:cw(u,"complete",a)}}catch(u){return{exitCode:70,stderr:Dx(u,a)}}};var rs=Ve(He(),1);import{spawnSync as Fx}from"child_process";import{promises as Bx}from"fs";import q from"path";_r();var Hx="\x1B[32m",Kx="\x1B[31m",Jx="\x1B[33m",Du="\x1B[0m",ts=["full","hotfix","tweak"],Wu=["open","design","build","verify","archive"],fw=["en","zh-CN"],Ux=ph,Lu=new Set([...xr,"archive_confirmation","verify_failures","classic_profile","classic_migration","bound_branch"]),Gx=new Set(ln.filter(e=>!Lu.has(e))),Vx={workflow:ts,phase:Wu,context_compression:["off","beta"],build_mode:["subagent-driven-development","executing-plans","direct"],build_pause:["null","plan-ready"],subagent_dispatch:["null","confirmed"],tdd_mode:["tdd","direct"],review_mode:["off","standard","thorough"],isolation:["current","branch","worktree"],verify_mode:["light","full"],auto_transition:["true","false"],verify_result:["pending","pass","fail"],branch_status:["pending","handled"],archive_confirmation:["pending","confirmed"],archived:["true","false"],direct_override:["true","false"],classic_profile:ts,classic_migration:["1"]},Yx=new Set(["design_doc","plan","verification_report","handoff_context"]),zx={archived:"archived",branchStatus:"branch_status",classicProfile:"classic_profile",designDoc:"design_doc",language:"language",phase:"phase",verificationReport:"verification_report",verifiedAt:"verified_at",archiveConfirmation:"archive_confirmation",verifyResult:"verify_result",verifyFailures:"verify_failures",workflow:"workflow"},ns=class extends Error{constructor(n,i=1){super(n);this.exitCode=i}exitCode},Sa=class{stdout=[];stderr=[];result(t=0){return{exitCode:t,...this.stdout.length>0?{stdout:this.stdout.join(` +`}var uw=async e=>{let[t,n,i,...r]=e;if(t==="show"&&n===void 0){let u=await le(process.cwd()),f=await Y(u),d=await Pl(u,f.artifactLayout);return{exitCode:0,stdout:JSON.stringify({schema:"comet.classic-layout.v1",artifactLayout:f.artifactLayout,openSpecRoot:A(u,f.openSpecRoot),alternateRoot:A(u,d.alternateRoot),configuredRootExists:d.configuredRootExists,alternateRootExists:d.alternateRootExists,dualRoots:d.dualRoots,changesRoot:A(u,f.changesDir),archiveRoot:A(u,f.archiveDir),specsRoot:A(u,f.specsDir),superpowersRoot:A(u,f.superpowersRoot)})+` +`}}if(t!=="move"||n!=="docs")return cw();let s=await le(process.cwd()),o=await vr(s),a=Wx(o);if(i!=="--dry-run"&&i!=="--apply"||r.length>0)return cw(a);let c=await Y(s),l=i==="--dry-run"?"dry-run":"complete";if(c.artifactLayout==="docs")return{exitCode:0,stdout:Bx(c,l,a)};try{if(i==="--dry-run"){let f=await ow(s);return{exitCode:0,stdout:lw(f,"dry-run",a)}}let u=await aw(s);return{exitCode:0,stdout:lw(u,"complete",a)}}catch(u){return{exitCode:70,stderr:Fx(u,a)}}};var ss=Ve(He(),1);import{spawnSync as Hx}from"child_process";import{promises as Kx}from"fs";import q from"path";Pr();var Jx="\x1B[32m",Ux="\x1B[31m",Gx="\x1B[33m",qu="\x1B[0m",ns=["full","hotfix","tweak"],Du=["open","design","build","verify","archive"],dw=["en","zh-CN"],Vx=ph,ju=new Set([...Or,"archive_confirmation","verify_failures","classic_profile","classic_migration","bound_branch"]),Yx=new Set(un.filter(e=>!ju.has(e))),zx={workflow:ns,phase:Du,context_compression:["off","beta"],build_mode:["subagent-driven-development","executing-plans","direct"],build_pause:["null","plan-ready"],subagent_dispatch:["null","confirmed"],tdd_mode:["tdd","direct"],review_mode:["off","standard","thorough"],isolation:["current","branch","worktree"],verify_mode:["light","full"],auto_transition:["true","false"],verify_result:["pending","pass","fail"],branch_status:["pending","handled"],archive_confirmation:["pending","confirmed"],archived:["true","false"],direct_override:["true","false"],classic_profile:ns,classic_migration:["1"]},Xx=new Set(["design_doc","plan","verification_report","handoff_context"]),Qx={archived:"archived",branchStatus:"branch_status",classicProfile:"classic_profile",designDoc:"design_doc",language:"language",phase:"phase",verificationReport:"verification_report",verifiedAt:"verified_at",archiveConfirmation:"archive_confirmation",verifyResult:"verify_result",verifyFailures:"verify_failures",workflow:"workflow"},is=class extends Error{constructor(n,i=1){super(n);this.exitCode=i}exitCode},Sa=class{stdout=[];stderr=[];result(t=0){return{exitCode:t,...this.stdout.length>0?{stdout:this.stdout.join(` `)+` `}:{},...this.stderr.length>0?{stderr:this.stderr.join(` -`)}:{}}}};function ct(e){return`${Hx}${e}${Du}`}function Mu(e){return`${Kx}${e}${Du}`}function uw(e){return`${Jx}${e}${Du}`}function S(e){throw new ns(e)}function lt(e){let t=ge(e);t&&S(`ERROR: ${t}`)}function is(e,t){t.includes(e)||S(`ERROR: Invalid value: '${e}' -Valid values: ${t.join(" ")}`)}function Ea(e,t){if(fw.includes(e))return e;S(`ERROR: Invalid language from ${t}: '${e}' -Valid values: en, zh-CN`)}function dw(e,t){!e||e==="null"||(/^(?:[A-Za-z]:|[\\/]|~)/u.test(e)&&S(`ERROR: ${t} must be a relative path within the repo: '${e}'`),e.split(/[\\/]/u).includes("..")&&S(`ERROR: ${t} cannot contain '..' (path traversal not allowed): '${e}'`))}async function pe(e){let t=_();return X(t,e,{label:`Classic project path ${q.relative(t,q.resolve(t,e)).replaceAll("\\","/")}`})}async function Ft(e){let t=_();return In(t,e,`Classic project file ${q.relative(t,q.resolve(t,e)).replaceAll("\\","/")}`)}async function Xx(e){return jn(e,_())}async function Ra(e){let t,n=_();try{t=await F(n,e,{label:`Classic state ${q.relative(n,e).replaceAll("\\","/")}`})}catch(r){throw r.code==="ENOENT"&&S(`ERROR: .comet.yaml not found at ${q.relative(n,e).replaceAll("\\","/")}`),r}let i=(0,rs.parseDocument)(t,{uniqueKeys:!1});return i.errors.length>0&&S(`ERROR: Invalid .comet.yaml: ${i.errors[0].message}`),i}async function Fu(e,t){await fi(_(),e,t,{label:"Classic state write target"})}function qu(e){return e===null?"null":e===void 0?"":typeof e=="object"?JSON.stringify(e):String(e)}function mw(e){return zx[e]??String(e)}function pw(e){return e===null?"null":qu(e)}function ke(e,t,n,i){let r=e[t];return typeof r=="string"&&n.includes(r)?r:i}function qt(e,t){let n=e[t];return n==null||n===""?null:typeof n=="string"?n:String(n)}function ju(e,t){let n=e[t];return n==null||n===""?null:typeof n=="boolean"?n:n==="true"?!0:n==="false"?!1:null}function Qx(e,t,n=0){let i=e[t];return typeof i=="number"&&Number.isInteger(i)&&i>=0?i:n}function Zx(e){let t=ke(e,"workflow",ts,"full");return{workflow:t,language:ke(e,"language",fw,null),phase:ke(e,"phase",Wu,"open"),contextCompression:ke(e,"context_compression",["off","beta"],null),buildMode:ke(e,"build_mode",["subagent-driven-development","executing-plans","direct"],null),buildPause:ke(e,"build_pause",["plan-ready"],null),subagentDispatch:ke(e,"subagent_dispatch",["confirmed"],null),tddMode:ke(e,"tdd_mode",["tdd","direct"],null),reviewMode:ke(e,"review_mode",["off","standard","thorough"],null),isolation:ke(e,"isolation",["current","branch","worktree"],null),boundBranch:qt(e,"bound_branch"),verifyMode:ke(e,"verify_mode",["light","full"],null),autoTransition:ju(e,"auto_transition"),baseRef:qt(e,"base_ref"),designDoc:qt(e,"design_doc"),plan:qt(e,"plan"),verifyResult:ke(e,"verify_result",["pending","pass","fail"],"pending"),verifyFailures:Qx(e,"verify_failures"),verificationReport:qt(e,"verification_report"),branchStatus:ke(e,"branch_status",["pending","handled"],null),createdAt:qt(e,"created_at"),verifiedAt:qt(e,"verified_at"),archiveConfirmation:ke(e,"archive_confirmation",["pending","confirmed"],null),archived:ju(e,"archived")??!1,directOverride:ju(e,"direct_override"),handoffContext:qt(e,"handoff_context"),handoffHash:qt(e,"handoff_hash"),classicProfile:ke(e,"classic_profile",ts,t),classicMigration:typeof e.classic_migration=="number"?e.classic_migration:null}}async function Bu(e){return(await Kr(e,{cwd:_()}))?.value??null}async function hw(){if(process.env.COMET_LANGUAGE)return Ea(process.env.COMET_LANGUAGE,"COMET_LANGUAGE");let e=await Kr("language",{cwd:_()});return e?Ea(e.value,e.source):"en"}async function eP(){let e=process.env.COMET_CONTEXT_COMPRESSION??await Bu("context_compression")??"off";return["off","beta"].includes(e)||S(`ERROR: Invalid context_compression: '${e}' -Valid values: off, beta`),e}async function gw(){let e=process.env.COMET_AUTO_TRANSITION??await Bu("auto_transition")??"true";return["true","false"].includes(e)||S(`ERROR: Invalid auto_transition: '${e}' -Valid values: true, false`),e}async function tP(){let e=process.env.COMET_REVIEW_MODE??await Bu("review_mode")??"standard";return["null","off","standard","thorough"].includes(e)||S(`ERROR: Invalid review_mode: '${e}' -Valid values: off, standard, thorough`),e==="null"?null:e}function ww(e){let t=Fx("git",e,{cwd:_(),encoding:"utf8"});return t.status===0?t.stdout.trim():null}async function Ct(e){let t=await Xx(e);return await V(_(),q.join(t.directory,".comet"),{label:`Classic runtime directory for ${e}`,expected:"directory"}),{...t,file:q.join(t.directory,".comet.yaml")}}async function P(e,t){let{file:n}=await Ct(e),s=(await Ra(n)).toJS()[t];return t==="language"?s==null||s===""?hw():Ea(qu(s),".comet.yaml"):t==="auto_transition"&&(s==null||s==="")?gw():qu(s)}function yw(e,t){let n=(0,rs.parseDocument)(`${e}: ${t} -`);return n.errors.length>0&&S(`ERROR: Invalid value: '${t}'`),n.get(e)}async function nP(e,t){if(e==="language"){Ea(t,"language");return}let n=Vx[e];n&&is(t,n),Yx.has(e)&&(dw(t,e),t&&t!=="null"&&await V(_(),t,{label:`${e} artifact pointer`,expected:"file"})),(e==="skill_hash"||e==="handoff_hash")&&!/^[a-f0-9]{64}$/u.test(t)&&S(`ERROR: ${e} must be a sha256 hex digest`),e==="iteration"&&!/^[0-9]+$/u.test(t)&&S("ERROR: iteration must be a non-negative integer")}async function vw(e,t,n,i,r={}){Lu.has(n)&&!r.machineOwned&&S(`ERROR: '${n}' is a machine-owned field and cannot be set directly`),!Gx.has(n)&&!Lu.has(n)&&S(`ERROR: Unknown field: '${n}'`),n==="phase"&&!r.internal&&process.env.COMET_FORCE_PHASE!=="1"&&S(`ERROR: Setting 'phase' directly is not allowed; it bypasses state machine evidence checks. +`)}:{}}}};function ct(e){return`${Jx}${e}${qu}`}function Lu(e){return`${Ux}${e}${qu}`}function fw(e){return`${Gx}${e}${qu}`}function S(e){throw new is(e)}function lt(e){let t=ge(e);t&&S(`ERROR: ${t}`)}function rs(e,t){t.includes(e)||S(`ERROR: Invalid value: '${e}' +Valid values: ${t.join(" ")}`)}function Ea(e,t){if(dw.includes(e))return e;S(`ERROR: Invalid language from ${t}: '${e}' +Valid values: en, zh-CN`)}function mw(e,t){!e||e==="null"||(/^(?:[A-Za-z]:|[\\/]|~)/u.test(e)&&S(`ERROR: ${t} must be a relative path within the repo: '${e}'`),e.split(/[\\/]/u).includes("..")&&S(`ERROR: ${t} cannot contain '..' (path traversal not allowed): '${e}'`))}async function de(e){let t=_();return X(t,e,{label:`Classic project path ${q.relative(t,q.resolve(t,e)).replaceAll("\\","/")}`})}async function Bt(e){let t=_();return In(t,e,`Classic project file ${q.relative(t,q.resolve(t,e)).replaceAll("\\","/")}`)}async function Zx(e){return jn(e,_())}async function Ra(e){let t,n=_();try{t=await B(n,e,{label:`Classic state ${q.relative(n,e).replaceAll("\\","/")}`})}catch(r){throw r.code==="ENOENT"&&S(`ERROR: .comet.yaml not found at ${q.relative(n,e).replaceAll("\\","/")}`),r}let i=(0,ss.parseDocument)(t,{uniqueKeys:!1});return i.errors.length>0&&S(`ERROR: Invalid .comet.yaml: ${i.errors[0].message}`),i}async function Wu(e,t){await fi(_(),e,t,{label:"Classic state write target"})}function Mu(e){return e===null?"null":e===void 0?"":typeof e=="object"?JSON.stringify(e):String(e)}function pw(e){return Qx[e]??String(e)}function hw(e){return e===null?"null":Mu(e)}function ke(e,t,n,i){let r=e[t];return typeof r=="string"&&n.includes(r)?r:i}function Dt(e,t){let n=e[t];return n==null||n===""?null:typeof n=="string"?n:String(n)}function Tu(e,t){let n=e[t];return n==null||n===""?null:typeof n=="boolean"?n:n==="true"?!0:n==="false"?!1:null}function eP(e,t,n=0){let i=e[t];return typeof i=="number"&&Number.isInteger(i)&&i>=0?i:n}function tP(e){let t=ke(e,"workflow",ns,"full");return{workflow:t,language:ke(e,"language",dw,null),phase:ke(e,"phase",Du,"open"),contextCompression:ke(e,"context_compression",["off","beta"],null),buildMode:ke(e,"build_mode",["subagent-driven-development","executing-plans","direct"],null),buildPause:ke(e,"build_pause",["plan-ready"],null),subagentDispatch:ke(e,"subagent_dispatch",["confirmed"],null),tddMode:ke(e,"tdd_mode",["tdd","direct"],null),reviewMode:ke(e,"review_mode",["off","standard","thorough"],null),isolation:ke(e,"isolation",["current","branch","worktree"],null),boundBranch:Dt(e,"bound_branch"),verifyMode:ke(e,"verify_mode",["light","full"],null),autoTransition:Tu(e,"auto_transition"),baseRef:Dt(e,"base_ref"),designDoc:Dt(e,"design_doc"),plan:Dt(e,"plan"),verifyResult:ke(e,"verify_result",["pending","pass","fail"],"pending"),verifyFailures:eP(e,"verify_failures"),verificationReport:Dt(e,"verification_report"),branchStatus:ke(e,"branch_status",["pending","handled"],null),createdAt:Dt(e,"created_at"),verifiedAt:Dt(e,"verified_at"),archiveConfirmation:ke(e,"archive_confirmation",["pending","confirmed"],null),archived:Tu(e,"archived")??!1,directOverride:Tu(e,"direct_override"),handoffContext:Dt(e,"handoff_context"),handoffHash:Dt(e,"handoff_hash"),classicProfile:ke(e,"classic_profile",ns,t),classicMigration:typeof e.classic_migration=="number"?e.classic_migration:null}}async function Fu(e){return(await Ur(e,{cwd:_()}))?.value??null}async function gw(){if(process.env.COMET_LANGUAGE)return Ea(process.env.COMET_LANGUAGE,"COMET_LANGUAGE");let e=await Ur("language",{cwd:_()});return e?Ea(e.value,e.source):"en"}async function nP(){let e=process.env.COMET_CONTEXT_COMPRESSION??await Fu("context_compression")??"off";return["off","beta"].includes(e)||S(`ERROR: Invalid context_compression: '${e}' +Valid values: off, beta`),e}async function ww(){let e=process.env.COMET_AUTO_TRANSITION??await Fu("auto_transition")??"true";return["true","false"].includes(e)||S(`ERROR: Invalid auto_transition: '${e}' +Valid values: true, false`),e}async function iP(){let e=process.env.COMET_REVIEW_MODE??await Fu("review_mode")??"standard";return["null","off","standard","thorough"].includes(e)||S(`ERROR: Invalid review_mode: '${e}' +Valid values: off, standard, thorough`),e==="null"?null:e}function yw(e){let t=Hx("git",e,{cwd:_(),encoding:"utf8"});return t.status===0?t.stdout.trim():null}async function Et(e){let t=await Zx(e);return await V(_(),q.join(t.directory,".comet"),{label:`Classic runtime directory for ${e}`,expected:"directory"}),{...t,file:q.join(t.directory,".comet.yaml")}}async function P(e,t){let{file:n}=await Et(e),s=(await Ra(n)).toJS()[t];return t==="language"?s==null||s===""?gw():Ea(Mu(s),".comet.yaml"):t==="auto_transition"&&(s==null||s==="")?ww():Mu(s)}function vw(e,t){let n=(0,ss.parseDocument)(`${e}: ${t} +`);return n.errors.length>0&&S(`ERROR: Invalid value: '${t}'`),n.get(e)}async function rP(e,t){if(e==="language"){Ea(t,"language");return}let n=zx[e];n&&rs(t,n),Xx.has(e)&&(mw(t,e),t&&t!=="null"&&await V(_(),t,{label:`${e} artifact pointer`,expected:"file"})),(e==="skill_hash"||e==="handoff_hash")&&!/^[a-f0-9]{64}$/u.test(t)&&S(`ERROR: ${e} must be a sha256 hex digest`),e==="iteration"&&!/^[0-9]+$/u.test(t)&&S("ERROR: iteration must be a non-negative integer")}async function bw(e,t,n,i,r={}){ju.has(n)&&!r.machineOwned&&S(`ERROR: '${n}' is a machine-owned field and cannot be set directly`),!Yx.has(n)&&!ju.has(n)&&S(`ERROR: Unknown field: '${n}'`),n==="phase"&&!r.internal&&process.env.COMET_FORCE_PHASE!=="1"&&S(`ERROR: Setting 'phase' directly is not allowed; it bypasses state machine evidence checks. Use: comet-state.mjs transition - Repair-only escape hatch: COMET_FORCE_PHASE=1 comet-state.mjs set phase `),await nP(n,i);let{file:s,directory:o}=await Ct(t),a=await Ra(s),c=a.toJS()??{};if(a.set(n,yw(n,i)),n==="isolation")if(Yo(i)){let f=typeof c.isolation=="string"?c.isolation:null,d=c.bound_branch;if(!(typeof d=="string"&&d!=="")||f!==i){let g=Tt(),h=Nr(g),m=Zl({isolation:i,boundBranch:null,currentBranch:h,gitWorkTree:h===null?Ql(g):!0});m.status==="needs-heal"?a.set("bound_branch",m.branch):m.status==="unbound-detached"?S(`ERROR: cannot bind isolation=${i} while HEAD is detached; checkout a branch first`):a.set("bound_branch",null)}}else a.set("bound_branch",null);let l=await Rr(o),u=Pr(a.toJS(),l);if(u.run){u.classic||S("ERROR: migrated Run is missing its Classic projection");let f=await et(o,u),d=Pt(u.classic,f),p=d!==u.run.currentStep,g={...u.run,currentStep:d,iteration:u.run.iteration+(p?1:0),status:d==="completed"?"completed":"running"};if(await De(o,{classic:u.classic,run:g,unknownKeys:u.unknownKeys}),p){let h=await We(o,g.trajectoryRef);await Je(o,g.trajectoryRef,{sequence:h.length+1,timestamp:new Date().toISOString(),type:"state_transitioned",runId:g.runId,data:{kind:"classic-config",field:n,fromStep:u.run.currentStep,toStep:d}})}}else await Fu(s,a.toString());n==="phase"&&!r.internal&&e.stderr.push(uw("WARNING: Setting 'phase' directly bypasses state machine constraints."),uw(" Consider using: comet-state.mjs transition ")),e.stderr.push(ct(`[SET] ${n}=${i}`))}async function iP(e,t,n,i=null){lt(t),is(n,ts),i!==null&&is(i,["current","branch","worktree"]);let r=i!==null?Nr(_()):null;i!==null&&i!=="current"&&r===null&&S(`ERROR: cannot bind isolation=${i} while HEAD is detached; checkout a branch first`);let s=await mp(t,_()),{label:o,directory:a}=s,c=q.join(a,".comet.yaml");await pe(c)&&S(`ERROR: .comet.yaml already exists at ${o}/.comet.yaml`);let l=n!=="full",u=l?"off":await tP(),f=new rs.Document({workflow:n,language:await hw(),phase:"open",context_compression:await eP(),build_mode:l?"direct":null,build_pause:null,subagent_dispatch:null,tdd_mode:l?"direct":null,review_mode:u,isolation:i,verify_mode:l?"light":null,auto_transition:await gw()==="true",base_ref:ww(["rev-parse","--verify","HEAD"]),design_doc:null,plan:null,verify_result:"pending",verify_failures:0,verification_report:null,branch_status:"pending",created_at:new Date().toISOString().slice(0,10),verified_at:null,archive_confirmation:null,archived:!1});i!==null&&f.set("bound_branch",r),await Fu(c,f.toString()),e.stdout.push(ct(`Initialized: ${o}/.comet.yaml (workflow=${n})`))}async function Dt(e,t){let n=await P(e,"phase");n!==t&&S(`ERROR: Cannot transition '${e}': expected phase ${t}, got ${n}`)}async function rP(e){let t=await P(e,"workflow"),n=await P(e,"build_mode"),i=await P(e,"isolation"),r=await P(e,"direct_override"),s=await P(e,"subagent_dispatch"),o=await P(e,"tdd_mode"),a=await P(e,"review_mode");["current","branch","worktree"].includes(i)||S(`ERROR: Cannot transition '${e}': isolation must be current, branch, or worktree, got '${i||"null"}'`),["subagent-driven-development","executing-plans","direct"].includes(n)||S(`ERROR: Cannot transition '${e}': build_mode must be selected before leaving build, got '${n||"null"}'`),n==="direct"&&!["hotfix","tweak"].includes(t)&&r!=="true"&&S(`ERROR: Cannot transition '${e}': build_mode=direct is only allowed for hotfix/tweak unless direct_override=true`),n==="subagent-driven-development"&&s!=="confirmed"&&S(`ERROR: Cannot transition '${e}': subagent_dispatch must be confirmed before using build_mode=subagent-driven-development`),t==="full"&&(!o||o==="null")&&S(`ERROR: Cannot transition '${e}': tdd_mode must be selected before leaving build (full workflow)`),t==="full"&&!["off","standard","thorough"].includes(a)&&S(`ERROR: Cannot transition '${e}': review_mode must be selected before leaving build (full workflow); review_mode must be off, standard, or thorough, got '${a||"null"}'`)}async function sP(e){let{directory:t}=await Ct(e),n=await P(e,"workflow");for(let i of["proposal.md","tasks.md"])await Ft(q.join(t,i))||S(`ERROR: Cannot transition '${e}': ${i} must exist and be non-empty before leaving open`);n==="full"&&!await Ft(q.join(t,"design.md"))&&S(`ERROR: Cannot transition '${e}': design.md must exist and be non-empty before leaving open`)}async function oP(e){let t=await P(e,"design_doc");(!t||t==="null"||!await Ft(q.resolve(t)))&&S(`ERROR: Cannot transition '${e}': design_doc must point to an existing Design Doc before leaving design`)}async function aP(e,t){let n=q.join(e,".comet.yaml"),i=await Ra(n);for(let r of t){let s=mw(r.field);i.set(s,yw(s,pw(r.to)))}await Fu(n,i.toString())}async function cP(e,t,n){let{directory:i}=await Ct(t),r=await B(i),s=r.classic,o=!1;if(!s){r.run&&S("ERROR: Classic state projection is missing");let c=await Ra(q.join(i,".comet.yaml"));s=Zx(c.toJS()),o=!0}let a=vi(s,n);r.run?await mn(i,a.classic,r.run,{event:n,source:"comet-state"}):o?await aP(i,a.effects):await De(i,{classic:a.classic,run:null,unknownKeys:r.unknownKeys}),await Dn(i,{change:t,event:n,source:"comet-state",from:s,to:a.classic,effects:a.effects});for(let c of a.effects)e.stderr.push(ct(`[SET] ${mw(c.field)}=${pw(c.to)}`));e.stderr.push(ct(`[TRANSITION] ${n}`))}async function lP(e,t,n){if(lt(t),is(n,Ux),n==="open-complete")await Dt(t,"open"),await sP(t);else if(n==="design-complete")await Dt(t,"design"),await oP(t);else if(n==="build-complete")await Dt(t,"build"),await rP(t);else if(n==="verify-pass"){await Dt(t,"verify");let i=await P(t,"verification_report");(!i||!await pe(q.resolve(i)))&&S(`ERROR: Cannot transition '${t}': verification_report must point to an existing report file`)}else if(n==="verify-fail")await Dt(t,"verify");else if(n==="archive-confirm")await Dt(t,"archive"),await P(t,"verify_result")!=="pass"&&S(`ERROR: Cannot transition '${t}': verify_result must be pass before archiving`),await P(t,"archived")==="true"&&S(`ERROR: Cannot transition '${t}': already archived`);else if(n==="preset-escalate"){await Dt(t,"build");let i=await P(t,"workflow");["hotfix","tweak"].includes(i)||S(`ERROR: Cannot transition '${t}': preset-escalate only applies to hotfix/tweak, got workflow='${i}'`)}else n==="archive-reopen"?(await Dt(t,"archive"),await P(t,"archived")==="true"&&S(`ERROR: Cannot transition '${t}': already archived`)):(await Dt(t,"archive"),await P(t,"verify_result")!=="pass"&&S(`ERROR: Cannot transition '${t}': verify_result must be pass before archiving`),await P(t,"archive_confirmation")!=="confirmed"&&S(`ERROR: Cannot transition '${t}': archive_confirmation must be confirmed before archiving`));await cP(e,t,n)}async function uP(e,t){lt(t);let{file:n,label:i}=await Ct(t);await pe(n)||S(`ERROR: .comet.yaml not found at ${i}/.comet.yaml`);let r=await P(t,"phase"),s=await P(t,"workflow"),o=await P(t,"auto_transition");if(await P(t,"archived")==="true"){e.stdout.push("NEXT: done");return}let a=r==="open"?"comet-open":r==="design"?"comet-design":r==="verify"?"comet-verify":r==="archive"?"comet-archive":r==="build"?s==="hotfix"?"comet-hotfix":s==="tweak"?"comet-tweak":"comet-build":null;a||S(`ERROR: Cannot resolve next step for '${t}': unknown phase '${r||"null"}'`),e.stdout.push(`NEXT: ${o==="false"?"manual":"auto"}`,`SKILL: ${a}`),o==="false"&&e.stdout.push(`HINT: phase is '${r}'; run /${a} manually to continue`)}async function fP(e,t,n){dw(t,"task file"),n||S("ERROR: Task text cannot be empty");let i=q.resolve(_(),t);await pe(i)||S(`ERROR: Task file not found: ${t}`);let s=(await F(_(),i,{label:"Classic task-checkoff file"})).split(/\r?\n/u).filter(a=>[`- [ ] ${n}`,`- [x] ${n}`,`- [X] ${n}`].includes(a)),o=s.filter(a=>/^- \[[xX]\] /u.test(a));s.length!==1&&S(`ERROR: task text must appear exactly once in ${t} (found ${s.length}): ${n}`),o.length!==1&&S(`ERROR: task is not checked in ${t}: ${n}`),e.stdout.push("TASK_CHECKOFF: PASS",`FILE: ${t}`,`TASK: ${n}`)}async function dP(e,t,n){lt(t),is(n,Wu);let{file:i,directory:r,label:s}=await Ct(t);e.stdout.push(`=== Entry Check: comet-${n} ===`),await pe(i)||S(`ERROR: .comet.yaml not found at ${s}/.comet.yaml`);let o=!1,a=f=>e.stdout.push(` ${ct("[PASS]")} ${f}`),c=f=>{e.stdout.push(` ${Mu("[FAIL]")} ${f}`),o=!0},l=async(f,d)=>{let p=await P(t,f);(p===d?a:c)(`${f}=${p} (expected: ${d})`)};if(a(".comet.yaml exists"),await l("phase",n),n==="design"){await l("workflow","full");let f=await P(t,"design_doc");(!f||f==="null"?a:c)(f?`design_doc=${f} (expected: empty/null)`:"design_doc is empty/null");for(let d of["proposal.md","design.md","tasks.md"])(await Ft(q.join(r,d))?a:c)(`${d} ${await Ft(q.join(r,d))?"non-empty":"missing or empty"}`)}else if(n==="build"){let f=await P(t,"workflow"),d=await P(t,"design_doc");f==="full"?(d&&d!=="null"&&await pe(q.resolve(d))?a:c)(`design_doc=${d} (expected: non-null and file exists)`):a(`workflow=${f} (design_doc not required)`);for(let p of["proposal.md","tasks.md"])(await Ft(q.join(r,p))?a:c)(`${p} ${await Ft(q.join(r,p))?"non-empty":"missing or empty"}`)}else if(n==="verify"){let f=await P(t,"verify_result");(["","null","pending"].includes(f)?a:c)(`verify_result=${f} (expected: pending or null)`)}else if(n==="archive"){await l("verify_result","pass");let f=await P(t,"archived");(f!=="true"?a:c)(`archived=${f} (expected: not true)`)}let u=await At(r,{heal:!0,cwd:Tt()});if(u.bindingRequired)switch(u.status){case"drift":c(zo(t,u.boundBranch,u.currentBranch));break;case"unbound-detached":c(It(t));break;case"healed":a(`bound_branch lazily set to ${u.branch}`);break;case"needs-heal":case"ok":case"not-applicable":a("bound_branch matches current branch");break;default:{let f=u;throw new Error(`unhandled branch binding status: ${JSON.stringify(f)}`)}}if(e.stdout.push(""),o)throw e.stderr.push(Mu("BLOCKED — fix failing checks before proceeding")),new ns("",1);e.stderr.push(ct("ALL CHECKS PASSED — ready to proceed"))}async function he(e,t,n){return!t||t==="null"?` - ${e}: PENDING`:n&&!await pe(q.resolve(n))?` - ${e}: BROKEN (path ${t} does not exist)`:` - ${e}: DONE (${t})`}async function mP(e,t){e.stdout.push(" Artifacts:");let n=0;for(let i of["proposal.md","design.md","tasks.md"]){let r=await Ft(q.join(t,i));r&&(n+=1),e.stdout.push(` - ${i}: ${r?"DONE":"PENDING"}`)}e.stdout.push("",n===3?"Recovery action: All artifacts complete. Run /comet-open user confirmation, then guard to transition.":n===0?"Recovery action: No artifacts created yet. Start from /comet-open Step 1 (explore and clarify).":"Recovery action: Some artifacts incomplete. Resume /comet-open from the first missing artifact.")}async function pP(e,t,n){e.stdout.push(" Artifacts:");for(let o of["proposal.md","design.md","tasks.md"])e.stdout.push(` - ${o}: ${await Ft(q.join(n,o))?"DONE":"MISSING (unexpected in design phase)"}`);let i=await P(t,"handoff_context"),r=await P(t,"handoff_hash"),s=await P(t,"design_doc");e.stdout.push(""," Design progress:",await he("handoff_context",i,i),await he("handoff_hash",r),await he("design_doc",s,s),""),s&&s!=="null"&&await pe(q.resolve(s))?e.stdout.push("Recovery action: Design Doc already created and linked. Run guard to transition to build."):i&&i!=="null"&&await pe(q.resolve(i))?e.stdout.push("Recovery action: Handoff generated but Design Doc not yet created. Resume from brainstorming confirmation (Step 1c)."):e.stdout.push("Recovery action: No handoff generated yet. Start from Step 1a (generate handoff package).")}async function hP(e,t,n,i){let r=await P(t,"isolation"),s=await P(t,"build_mode"),o=await P(t,"build_pause"),a=await P(t,"subagent_dispatch"),c=await P(t,"tdd_mode"),l=await P(t,"review_mode"),u=await P(t,"plan"),f=await sa(_(),u),d=[" Build decisions:",await he("isolation",r),await he("build_mode",s),await he("build_pause",o),await he("tdd_mode",c),await he("review_mode",l)];(s==="subagent-driven-development"||a&&a!=="null")&&d.push(await he("subagent_dispatch",a)),e.stdout.push(...d,""," Plan:",await he("plan",u,u),"");let p=q.join(n,"tasks.md");if(!await pe(p)){e.stdout.push(" Tasks: tasks.md MISSING","","Recovery action: tasks.md missing. Verify change directory integrity.");return}let g=(await F(_(),p,{label:"Classic change tasks"})).split(/\r?\n/u),h=g.filter(R=>/^\s*- \[[ xX]\] /u.test(R)).length,m=g.filter(R=>/^\s*- \[[xX]\] /u.test(R)).length,y=h-m,w=0,C=0;if(f.status==="ready"){let R=(await F(_(),u,{label:"Classic build plan"})).split(/\r?\n/u);w=R.filter(O=>/^\s*- \[[ xX]\] /u.test(O)).length,C=R.filter(O=>/^\s*- \[[xX]\] /u.test(O)).length}let k=w-C;e.stdout.push(` Tasks: ${m}/${h} done, ${y} pending`),w>0&&e.stdout.push(` Plan tasks: ${C}/${w} done, ${k} pending`),e.stdout.push("");let E=gP(t,q.relative(_(),n).replaceAll("\\","/"),i,r,s,o,a,c,l,f,y,k);e.stdout.push(E)}function wn(e){return!e||e==="null"}function gP(e,t,n,i,r,s,o,a,c,l,u,f){let d=l.status==="ready",p=n==="full"&&(wn(a)||wn(c));return s==="plan-ready"&&d&&(wn(i)||wn(r)||p)?n==="full"?"Recovery action: Plan-ready pause detected. Ask the user whether to continue, then choose isolation, build mode, TDD mode, and review mode without regenerating the plan.":"Recovery action: Plan-ready pause detected. Ask the user whether to continue, then choose isolation and build mode without regenerating the plan.":n==="full"&&!d?wP(e,t,l):s==="plan-ready"?r==="subagent-driven-development"&&(u>0||f>0)?o==="confirmed"?"Recovery action: Plan-ready pause is stale because build decisions are already selected. Clear build_pause to null, then inspect the first unchecked task (OpenSpec or plan additions) against recent git history/diff. If implemented, check it off; otherwise dispatch a subagent. Do not execute the pending task directly in the main window.":"Recovery action: Plan-ready pause is stale and selected subagent execution is not recorded. Run comet state set subagent_dispatch confirmed, then continue from the first unchecked task through subagent execution.":u>0||f>0?"Recovery action: Plan-ready pause is stale because build decisions are already selected. Clear build_pause to null, then continue from the first unchecked task.":"Recovery action: Plan-ready pause is stale and all tasks are done. Clear build_pause to null, then run guard to transition to verify.":wn(i)?"Recovery action: Isolation not selected. Use the current platform's user confirmation mechanism to ask user for branch/worktree choice.":wn(r)?"Recovery action: Build mode not selected. Use the current platform's user confirmation mechanism to ask user for execution method.":n==="full"&&wn(a)?"Recovery action: TDD mode not selected. Use the current platform's user confirmation mechanism to ask user for tdd or direct.":n==="full"&&wn(c)?"Recovery action: Review mode not selected. Use the current platform's user confirmation mechanism to ask user for off, standard, or thorough.":u>0?r==="subagent-driven-development"?o==="confirmed"?"Recovery action: Read tasks.md and the Superpowers plan (which may include additions beyond OpenSpec), then inspect the first unchecked task against recent git history/diff. If implemented, check it off; otherwise dispatch a subagent. Do not execute the pending task directly in the main window.":"Recovery action: Selected subagent execution is not recorded. Run comet state set subagent_dispatch confirmed, then continue from the first unchecked task through subagent execution.":"Recovery action: Read tasks.md and continue from first unchecked task.":f>0?r==="subagent-driven-development"?o==="confirmed"?"Recovery action: Read the Superpowers plan, then inspect the first unchecked Superpowers plan task against recent git history/diff. If implemented, check it off; otherwise dispatch a subagent. Do not execute the pending task directly in the main window.":"Recovery action: Selected subagent execution is not recorded. Run comet state set subagent_dispatch confirmed, then continue from the first unchecked task through subagent execution.":"Recovery action: Read the Superpowers plan and continue from the first unchecked plan task.":"Recovery action: All tasks done. Run guard to transition to verify."}function wP(e,t,n){let i=n.status==="missing",r=i?"classic-build-plan-missing":"classic-build-plan-broken",s=i?"plan is not recorded":"the recorded plan path does not resolve to a file",o=i?[]:[`RECORDED_PLAN: ${n.recordedPath}`],a=i?`comet state set ${e} plan `:`comet state set ${e} plan `,c=i?["2. Load the Superpowers writing-plans Skill.",`3. Read the Design Doc path from "comet state get ${e} design_doc" and read ${t}/tasks.md.`,"4. Create the implementation plan under docs/superpowers/plans/.","5. Record the plan path:",` ${a}`]:[`2. Restore the plan file at ${n.recordedPath}, or load the Superpowers writing-plans Skill and create a replacement under docs/superpowers/plans/.`,"3. When creating a replacement, record its path:",` ${a}`];return["COMET_RECOVERY: required",`ERROR_CODE: ${r}`,`CHANGE: ${e}`,"WORKFLOW: full","PHASE: build",`STATE: ${s}`,...o,"","ALLOWED_RECOVERY_WRITES:","- docs/superpowers/plans/.md","- Comet state updates performed by the comet CLI",`- ${t} artifacts allowed by the build phase`,"","RECOVERY:",`1. Resume /comet-build for ${e} and return to Step 1.`,...c,`${i?"6":"4"}. Verify recovery:`,` comet state check ${e} build --recover`,"","SUCCESS: plan is reported as DONE and recovery no longer returns classic-build-plan-missing or classic-build-plan-broken.","RETRY: resume build configuration or retry the blocked Write/Edit only after SUCCESS.","PROHIBITED: do not execute tasks.md or write project source before SUCCESS; tasks.md is not a substitute for the implementation plan.","If writing-plans is unavailable, stop and report the missing Skill instead of bypassing this recovery."].join(` -`)}async function yP(e,t){let n=await P(t,"verify_result"),i=await P(t,"verify_failures"),r=await P(t,"verify_mode"),s=await P(t,"verification_report"),o=await P(t,"branch_status");e.stdout.push(" Verification:",await he("verify_result",n),` - verify_failures: ${i||"0"}`,await he("verify_mode",r),await he("verification_report",s,s),o==="handled"?" - branch_status: LEGACY (handled before archive; archive still owns final closure)":" - branch_status: DEFERRED (handled after the archive commit)","",n==="pass"?"Recovery action: Verification complete. Continue to archive; branch handling happens after archive changes are committed.":n==="fail"?"Recovery action: Verification failed and rolled back to build. Resume from /comet-build.":"Recovery action: Verification not yet started or in progress. Run scale assessment then verify.")}async function vP(e,t){let n=await P(t,"archive_confirmation");e.stdout.push(" Archive:",await he("verify_result",await P(t,"verify_result")),await he("archive_confirmation",n),await he("archived",await P(t,"archived")),"",n==="confirmed"?"Recovery action: Archive is confirmed. Run /comet-archive to complete archiving.":"Recovery action: Ask for final archive confirmation in /comet-archive before running the archive command.")}async function bP(e,t){lt(t);let{file:n,directory:i,label:r}=await Ct(t);await pe(n)||S(`ERROR: .comet.yaml not found at ${r}/.comet.yaml`);let s=await P(t,"phase"),o=await P(t,"workflow");e.stdout.push(`=== Recovery Context: ${t} ===`,`Phase: ${s}`,`Workflow: ${o}`,"","State fields:"),s==="open"?await mP(e,i):s==="design"?await pP(e,t,i):s==="build"?await hP(e,t,i,o):s==="verify"?await yP(e,t):s==="archive"?await vP(e,t):S(`ERROR: Unknown phase: ${s}`),e.stdout.push("","=== End Recovery Context ===")}async function CP(e,t){lt(t);let{file:n,directory:i,label:r}=await Ct(t);await pe(n)||S(`ERROR: .comet.yaml not found at ${r}/.comet.yaml`);let s=q.join(i,"tasks.md"),o=await pe(s)?(await F(_(),s,{label:"Classic scale task file"})).split(/\r?\n/u).filter(g=>/^- \[/u.test(g)).length:0,a=q.join(i,"specs"),c=0;if(await pe(a))for(let g of await Bx.readdir(a))await pe(q.join(a,g,"spec.md"))&&(c+=1);let l=await P(t,"plan"),u="";l&&l!=="null"&&await pe(l)&&(u=(await F(_(),l,{label:"Classic scale plan"})).match(/^base-ref:\s*(.+)$/mu)?.[1].trim()??""),u||(u=await P(t,"base_ref"));let f=ww(["diff","--name-only",...u&&u!=="null"?[`${u}...HEAD`]:["HEAD"]]),d=f?f.split(/\r?\n/u).filter(Boolean).length:0,p=o>3||c>1||d>8?"full":"light";await vw(new Sa,t,"verify_mode",p),e.stderr.push(`=== Scale Assessment: ${t} ===`,` Tasks: ${o} (threshold: 3)`,` Delta specs: ${c} capabilities (threshold: 1)`,` Changed files: ${d} (threshold: 8)`,` → Result: ${p}`,ct(`[SCALE] verify_mode=${p}`))}function kP(e){let t,n,i;for(let r=0;r' to establish the first binding`);let r=Nr(Tt());r===null&&S("ERROR: cannot rebind while HEAD is detached; checkout a branch first");let s=await B(n);s.classic||S("ERROR: Classic state projection is missing"),await eu(n,r);let o={...s.classic,boundBranch:r};await Dn(n,{change:t,event:"rebind",source:"comet-state",from:s.classic,to:o,effects:[{field:"boundBranch",from:i,to:r}]}),e.stderr.push(ct(`[REBIND] bound_branch: ${i} → ${r}`))}async function PP(e){let t=await Qo(_());if(t.status==="selected"){e.stdout.push(t.selection.change);return}t.status==="missing"&&S(`ERROR: no current change selected + Repair-only escape hatch: COMET_FORCE_PHASE=1 comet-state.mjs set phase `),await rP(n,i);let{file:s,directory:o}=await Et(t),a=await Ra(s),c=a.toJS()??{};if(a.set(n,vw(n,i)),n==="isolation")if(Yo(i)){let f=typeof c.isolation=="string"?c.isolation:null,d=c.bound_branch;if(!(typeof d=="string"&&d!=="")||f!==i){let g=Lt(),h=jr(g),m=Ql({isolation:i,boundBranch:null,currentBranch:h,gitWorkTree:h===null?Xl(g):!0});m.status==="needs-heal"?a.set("bound_branch",m.branch):m.status==="unbound-detached"?S(`ERROR: cannot bind isolation=${i} while HEAD is detached; checkout a branch first`):a.set("bound_branch",null)}}else a.set("bound_branch",null);let l=await xr(o),u=$r(a.toJS(),l);if(u.run){u.classic||S("ERROR: migrated Run is missing its Classic projection");let f=await et(o,u),d=$t(u.classic,f),p=d!==u.run.currentStep,g={...u.run,currentStep:d,iteration:u.run.iteration+(p?1:0),status:d==="completed"?"completed":"running"};if(await qe(o,{classic:u.classic,run:g,unknownKeys:u.unknownKeys}),p){let h=await De(o,g.trajectoryRef);await Je(o,g.trajectoryRef,{sequence:h.length+1,timestamp:new Date().toISOString(),type:"state_transitioned",runId:g.runId,data:{kind:"classic-config",field:n,fromStep:u.run.currentStep,toStep:d}})}}else await Wu(s,a.toString());n==="phase"&&!r.internal&&e.stderr.push(fw("WARNING: Setting 'phase' directly bypasses state machine constraints."),fw(" Consider using: comet-state.mjs transition ")),e.stderr.push(ct(`[SET] ${n}=${i}`))}async function sP(e,t,n,i=null){lt(t),rs(n,ns),i!==null&&rs(i,["current","branch","worktree"]);let r=i!==null?jr(_()):null;i!==null&&i!=="current"&&r===null&&S(`ERROR: cannot bind isolation=${i} while HEAD is detached; checkout a branch first`);let s=await mp(t,_()),{label:o,directory:a}=s,c=q.join(a,".comet.yaml");await de(c)&&S(`ERROR: .comet.yaml already exists at ${o}/.comet.yaml`);let l=n!=="full",u=l?"off":await iP(),f=new ss.Document({workflow:n,language:await gw(),phase:"open",context_compression:await nP(),build_mode:l?"direct":null,build_pause:null,subagent_dispatch:null,tdd_mode:l?"direct":null,review_mode:u,isolation:i,verify_mode:l?"light":null,auto_transition:await ww()==="true",base_ref:yw(["rev-parse","--verify","HEAD"]),design_doc:null,plan:null,verify_result:"pending",verify_failures:0,verification_report:null,branch_status:"pending",created_at:new Date().toISOString().slice(0,10),verified_at:null,archive_confirmation:null,archived:!1});i!==null&&f.set("bound_branch",r),await Wu(c,f.toString()),e.stdout.push(ct(`Initialized: ${o}/.comet.yaml (workflow=${n})`))}async function Wt(e,t){let n=await P(e,"phase");n!==t&&S(`ERROR: Cannot transition '${e}': expected phase ${t}, got ${n}`)}async function oP(e){let t=await P(e,"workflow"),n=await P(e,"build_mode"),i=await P(e,"isolation"),r=await P(e,"direct_override"),s=await P(e,"subagent_dispatch"),o=await P(e,"tdd_mode"),a=await P(e,"review_mode");["current","branch","worktree"].includes(i)||S(`ERROR: Cannot transition '${e}': isolation must be current, branch, or worktree, got '${i||"null"}'`),["subagent-driven-development","executing-plans","direct"].includes(n)||S(`ERROR: Cannot transition '${e}': build_mode must be selected before leaving build, got '${n||"null"}'`),n==="direct"&&!["hotfix","tweak"].includes(t)&&r!=="true"&&S(`ERROR: Cannot transition '${e}': build_mode=direct is only allowed for hotfix/tweak unless direct_override=true`),n==="subagent-driven-development"&&s!=="confirmed"&&S(`ERROR: Cannot transition '${e}': subagent_dispatch must be confirmed before using build_mode=subagent-driven-development`),t==="full"&&(!o||o==="null")&&S(`ERROR: Cannot transition '${e}': tdd_mode must be selected before leaving build (full workflow)`),t==="full"&&!["off","standard","thorough"].includes(a)&&S(`ERROR: Cannot transition '${e}': review_mode must be selected before leaving build (full workflow); review_mode must be off, standard, or thorough, got '${a||"null"}'`)}async function aP(e){let{directory:t}=await Et(e),n=await P(e,"workflow");for(let i of["proposal.md","tasks.md"])await Bt(q.join(t,i))||S(`ERROR: Cannot transition '${e}': ${i} must exist and be non-empty before leaving open`);n==="full"&&!await Bt(q.join(t,"design.md"))&&S(`ERROR: Cannot transition '${e}': design.md must exist and be non-empty before leaving open`)}async function cP(e){let t=await P(e,"design_doc");(!t||t==="null"||!await Bt(q.resolve(t)))&&S(`ERROR: Cannot transition '${e}': design_doc must point to an existing Design Doc before leaving design`)}async function lP(e,t){let n=q.join(e,".comet.yaml"),i=await Ra(n);for(let r of t){let s=pw(r.field);i.set(s,vw(s,hw(r.to)))}await Wu(n,i.toString())}async function uP(e,t,n){let{directory:i}=await Et(t),r=await H(i),s=r.classic,o=!1;if(!s){r.run&&S("ERROR: Classic state projection is missing");let c=await Ra(q.join(i,".comet.yaml"));s=tP(c.toJS()),o=!0}let a=vi(s,n);r.run?await pn(i,a.classic,r.run,{event:n,source:"comet-state"}):o?await lP(i,a.effects):await qe(i,{classic:a.classic,run:null,unknownKeys:r.unknownKeys}),await Dn(i,{change:t,event:n,source:"comet-state",from:s,to:a.classic,effects:a.effects});for(let c of a.effects)e.stderr.push(ct(`[SET] ${pw(c.field)}=${hw(c.to)}`));e.stderr.push(ct(`[TRANSITION] ${n}`))}async function fP(e,t,n){if(lt(t),rs(n,Vx),n==="open-complete")await Wt(t,"open"),await aP(t);else if(n==="design-complete")await Wt(t,"design"),await cP(t);else if(n==="build-complete")await Wt(t,"build"),await oP(t);else if(n==="verify-pass"){await Wt(t,"verify");let i=await P(t,"verification_report");(!i||!await de(q.resolve(i)))&&S(`ERROR: Cannot transition '${t}': verification_report must point to an existing report file`)}else if(n==="verify-fail")await Wt(t,"verify");else if(n==="archive-confirm")await Wt(t,"archive"),await P(t,"verify_result")!=="pass"&&S(`ERROR: Cannot transition '${t}': verify_result must be pass before archiving`),await P(t,"archived")==="true"&&S(`ERROR: Cannot transition '${t}': already archived`);else if(n==="preset-escalate"){await Wt(t,"build");let i=await P(t,"workflow");["hotfix","tweak"].includes(i)||S(`ERROR: Cannot transition '${t}': preset-escalate only applies to hotfix/tweak, got workflow='${i}'`)}else n==="archive-reopen"?(await Wt(t,"archive"),await P(t,"archived")==="true"&&S(`ERROR: Cannot transition '${t}': already archived`)):(await Wt(t,"archive"),await P(t,"verify_result")!=="pass"&&S(`ERROR: Cannot transition '${t}': verify_result must be pass before archiving`),await P(t,"archive_confirmation")!=="confirmed"&&S(`ERROR: Cannot transition '${t}': archive_confirmation must be confirmed before archiving`));await uP(e,t,n)}async function dP(e,t){lt(t);let{file:n,label:i}=await Et(t);await de(n)||S(`ERROR: .comet.yaml not found at ${i}/.comet.yaml`);let r=await P(t,"phase"),s=await P(t,"workflow"),o=await P(t,"auto_transition");if(await P(t,"archived")==="true"){e.stdout.push("NEXT: done");return}let a=r==="open"?"comet-open":r==="design"?"comet-design":r==="verify"?"comet-verify":r==="archive"?"comet-archive":r==="build"?s==="hotfix"?"comet-hotfix":s==="tweak"?"comet-tweak":"comet-build":null;a||S(`ERROR: Cannot resolve next step for '${t}': unknown phase '${r||"null"}'`),e.stdout.push(`NEXT: ${o==="false"?"manual":"auto"}`,`SKILL: ${a}`),o==="false"&&e.stdout.push(`HINT: phase is '${r}'; run /${a} manually to continue`)}async function mP(e,t,n){mw(t,"task file"),n||S("ERROR: Task text cannot be empty");let i=q.resolve(_(),t);await de(i)||S(`ERROR: Task file not found: ${t}`);let s=(await B(_(),i,{label:"Classic task-checkoff file"})).split(/\r?\n/u).filter(a=>[`- [ ] ${n}`,`- [x] ${n}`,`- [X] ${n}`].includes(a)),o=s.filter(a=>/^- \[[xX]\] /u.test(a));s.length!==1&&S(`ERROR: task text must appear exactly once in ${t} (found ${s.length}): ${n}`),o.length!==1&&S(`ERROR: task is not checked in ${t}: ${n}`),e.stdout.push("TASK_CHECKOFF: PASS",`FILE: ${t}`,`TASK: ${n}`)}async function pP(e,t,n){lt(t),rs(n,Du);let{file:i,directory:r,label:s}=await Et(t);e.stdout.push(`=== Entry Check: comet-${n} ===`),await de(i)||S(`ERROR: .comet.yaml not found at ${s}/.comet.yaml`);let o=!1,a=f=>e.stdout.push(` ${ct("[PASS]")} ${f}`),c=f=>{e.stdout.push(` ${Lu("[FAIL]")} ${f}`),o=!0},l=async(f,d)=>{let p=await P(t,f);(p===d?a:c)(`${f}=${p} (expected: ${d})`)};if(a(".comet.yaml exists"),await l("phase",n),n==="design"){await l("workflow","full");let f=await P(t,"design_doc");(!f||f==="null"?a:c)(f?`design_doc=${f} (expected: empty/null)`:"design_doc is empty/null");for(let d of["proposal.md","design.md","tasks.md"])(await Bt(q.join(r,d))?a:c)(`${d} ${await Bt(q.join(r,d))?"non-empty":"missing or empty"}`)}else if(n==="build"){let f=await P(t,"workflow"),d=await P(t,"design_doc");f==="full"?(d&&d!=="null"&&await de(q.resolve(d))?a:c)(`design_doc=${d} (expected: non-null and file exists)`):a(`workflow=${f} (design_doc not required)`);for(let p of["proposal.md","tasks.md"])(await Bt(q.join(r,p))?a:c)(`${p} ${await Bt(q.join(r,p))?"non-empty":"missing or empty"}`)}else if(n==="verify"){let f=await P(t,"verify_result");(["","null","pending"].includes(f)?a:c)(`verify_result=${f} (expected: pending or null)`)}else if(n==="archive"){await l("verify_result","pass");let f=await P(t,"archived");(f!=="true"?a:c)(`archived=${f} (expected: not true)`)}let u=await Nt(r,{heal:!0,cwd:Lt()});if(u.bindingRequired)switch(u.status){case"drift":c(zo(t,u.boundBranch,u.currentBranch));break;case"unbound-detached":c(Tt(t));break;case"healed":a(`bound_branch lazily set to ${u.branch}`);break;case"needs-heal":case"ok":case"not-applicable":a("bound_branch matches current branch");break;default:{let f=u;throw new Error(`unhandled branch binding status: ${JSON.stringify(f)}`)}}if(e.stdout.push(""),o)throw e.stderr.push(Lu("BLOCKED — fix failing checks before proceeding")),new is("",1);e.stderr.push(ct("ALL CHECKS PASSED — ready to proceed"))}async function pe(e,t,n){return!t||t==="null"?` - ${e}: PENDING`:n&&!await de(q.resolve(n))?` - ${e}: BROKEN (path ${t} does not exist)`:` - ${e}: DONE (${t})`}async function hP(e,t){e.stdout.push(" Artifacts:");let n=0;for(let i of["proposal.md","design.md","tasks.md"]){let r=await Bt(q.join(t,i));r&&(n+=1),e.stdout.push(` - ${i}: ${r?"DONE":"PENDING"}`)}e.stdout.push("",n===3?"Recovery action: All artifacts complete. Run /comet-open user confirmation, then guard to transition.":n===0?"Recovery action: No artifacts created yet. Start from /comet-open Step 1 (explore and clarify).":"Recovery action: Some artifacts incomplete. Resume /comet-open from the first missing artifact.")}async function gP(e,t,n){e.stdout.push(" Artifacts:");for(let o of["proposal.md","design.md","tasks.md"])e.stdout.push(` - ${o}: ${await Bt(q.join(n,o))?"DONE":"MISSING (unexpected in design phase)"}`);let i=await P(t,"handoff_context"),r=await P(t,"handoff_hash"),s=await P(t,"design_doc");e.stdout.push(""," Design progress:",await pe("handoff_context",i,i),await pe("handoff_hash",r),await pe("design_doc",s,s),""),s&&s!=="null"&&await de(q.resolve(s))?e.stdout.push("Recovery action: Design Doc already created and linked. Run guard to transition to build."):i&&i!=="null"&&await de(q.resolve(i))?e.stdout.push("Recovery action: Handoff generated but Design Doc not yet created. Resume from brainstorming confirmation (Step 1c)."):e.stdout.push("Recovery action: No handoff generated yet. Start from Step 1a (generate handoff package).")}async function wP(e,t,n,i){let r=await P(t,"isolation"),s=await P(t,"build_mode"),o=await P(t,"build_pause"),a=await P(t,"subagent_dispatch"),c=await P(t,"tdd_mode"),l=await P(t,"review_mode"),u=await P(t,"plan"),f=await sa(_(),u),d=[" Build decisions:",await pe("isolation",r),await pe("build_mode",s),await pe("build_pause",o),await pe("tdd_mode",c),await pe("review_mode",l)];(s==="subagent-driven-development"||a&&a!=="null")&&d.push(await pe("subagent_dispatch",a)),e.stdout.push(...d,""," Plan:",await pe("plan",u,u),"");let p=q.join(n,"tasks.md");if(!await de(p)){e.stdout.push(" Tasks: tasks.md MISSING","","Recovery action: tasks.md missing. Verify change directory integrity.");return}let g=(await B(_(),p,{label:"Classic change tasks"})).split(/\r?\n/u),h=g.filter(R=>/^\s*- \[[ xX]\] /u.test(R)).length,m=g.filter(R=>/^\s*- \[[xX]\] /u.test(R)).length,w=h-m,y=0,b=0;if(f.status==="ready"){let R=(await B(_(),u,{label:"Classic build plan"})).split(/\r?\n/u);y=R.filter(T=>/^\s*- \[[ xX]\] /u.test(T)).length,b=R.filter(T=>/^\s*- \[[xX]\] /u.test(T)).length}let k=y-b;e.stdout.push(` Tasks: ${m}/${h} done, ${w} pending`),y>0&&e.stdout.push(` Plan tasks: ${b}/${y} done, ${k} pending`),e.stdout.push("");let E=yP(t,q.relative(_(),n).replaceAll("\\","/"),i,r,s,o,a,c,l,f,w,k);e.stdout.push(E)}function wn(e){return!e||e==="null"}function yP(e,t,n,i,r,s,o,a,c,l,u,f){let d=l.status==="ready",p=n==="full"&&(wn(a)||wn(c));return s==="plan-ready"&&d&&(wn(i)||wn(r)||p)?n==="full"?"Recovery action: Plan-ready pause detected. Ask the user whether to continue, then choose isolation, build mode, TDD mode, and review mode without regenerating the plan.":"Recovery action: Plan-ready pause detected. Ask the user whether to continue, then choose isolation and build mode without regenerating the plan.":n==="full"&&!d?vP(e,t,l):s==="plan-ready"?r==="subagent-driven-development"&&(u>0||f>0)?o==="confirmed"?"Recovery action: Plan-ready pause is stale because build decisions are already selected. Clear build_pause to null, then inspect the first unchecked task (OpenSpec or plan additions) against recent git history/diff. If implemented, check it off; otherwise dispatch a subagent. Do not execute the pending task directly in the main window.":"Recovery action: Plan-ready pause is stale and selected subagent execution is not recorded. Run comet state set subagent_dispatch confirmed, then continue from the first unchecked task through subagent execution.":u>0||f>0?"Recovery action: Plan-ready pause is stale because build decisions are already selected. Clear build_pause to null, then continue from the first unchecked task.":"Recovery action: Plan-ready pause is stale and all tasks are done. Clear build_pause to null, then run guard to transition to verify.":wn(i)?"Recovery action: Isolation not selected. Use the current platform's user confirmation mechanism to ask user for branch/worktree choice.":wn(r)?"Recovery action: Build mode not selected. Use the current platform's user confirmation mechanism to ask user for execution method.":n==="full"&&wn(a)?"Recovery action: TDD mode not selected. Use the current platform's user confirmation mechanism to ask user for tdd or direct.":n==="full"&&wn(c)?"Recovery action: Review mode not selected. Use the current platform's user confirmation mechanism to ask user for off, standard, or thorough.":u>0?r==="subagent-driven-development"?o==="confirmed"?"Recovery action: Read tasks.md and the Superpowers plan (which may include additions beyond OpenSpec), then inspect the first unchecked task against recent git history/diff. If implemented, check it off; otherwise dispatch a subagent. Do not execute the pending task directly in the main window.":"Recovery action: Selected subagent execution is not recorded. Run comet state set subagent_dispatch confirmed, then continue from the first unchecked task through subagent execution.":"Recovery action: Read tasks.md and continue from first unchecked task.":f>0?r==="subagent-driven-development"?o==="confirmed"?"Recovery action: Read the Superpowers plan, then inspect the first unchecked Superpowers plan task against recent git history/diff. If implemented, check it off; otherwise dispatch a subagent. Do not execute the pending task directly in the main window.":"Recovery action: Selected subagent execution is not recorded. Run comet state set subagent_dispatch confirmed, then continue from the first unchecked task through subagent execution.":"Recovery action: Read the Superpowers plan and continue from the first unchecked plan task.":"Recovery action: All tasks done. Run guard to transition to verify."}function vP(e,t,n){let i=n.status==="missing",r=i?"classic-build-plan-missing":"classic-build-plan-broken",s=i?"plan is not recorded":"the recorded plan path does not resolve to a file",o=i?[]:[`RECORDED_PLAN: ${n.recordedPath}`],a=i?`comet state set ${e} plan `:`comet state set ${e} plan `,c=i?["2. Load the Superpowers writing-plans Skill.",`3. Read the Design Doc path from "comet state get ${e} design_doc" and read ${t}/tasks.md.`,"4. Create the implementation plan under docs/superpowers/plans/.","5. Record the plan path:",` ${a}`]:[`2. Restore the plan file at ${n.recordedPath}, or load the Superpowers writing-plans Skill and create a replacement under docs/superpowers/plans/.`,"3. When creating a replacement, record its path:",` ${a}`];return["COMET_RECOVERY: required",`ERROR_CODE: ${r}`,`CHANGE: ${e}`,"WORKFLOW: full","PHASE: build",`STATE: ${s}`,...o,"","ALLOWED_RECOVERY_WRITES:","- docs/superpowers/plans/.md","- Comet state updates performed by the comet CLI",`- ${t} artifacts allowed by the build phase`,"","RECOVERY:",`1. Resume /comet-build for ${e} and return to Step 1.`,...c,`${i?"6":"4"}. Verify recovery:`,` comet state check ${e} build --recover`,"","SUCCESS: plan is reported as DONE and recovery no longer returns classic-build-plan-missing or classic-build-plan-broken.","RETRY: resume build configuration or retry the blocked Write/Edit only after SUCCESS.","PROHIBITED: do not execute tasks.md or write project source before SUCCESS; tasks.md is not a substitute for the implementation plan.","If writing-plans is unavailable, stop and report the missing Skill instead of bypassing this recovery."].join(` +`)}async function bP(e,t){let n=await P(t,"verify_result"),i=await P(t,"verify_failures"),r=await P(t,"verify_mode"),s=await P(t,"verification_report"),o=await P(t,"branch_status");e.stdout.push(" Verification:",await pe("verify_result",n),` - verify_failures: ${i||"0"}`,await pe("verify_mode",r),await pe("verification_report",s,s),o==="handled"?" - branch_status: LEGACY (handled before archive; archive still owns final closure)":" - branch_status: DEFERRED (handled after the archive commit)","",n==="pass"?"Recovery action: Verification complete. Continue to archive; branch handling happens after archive changes are committed.":n==="fail"?"Recovery action: Verification failed and rolled back to build. Resume from /comet-build.":"Recovery action: Verification not yet started or in progress. Run scale assessment then verify.")}async function CP(e,t){let n=await P(t,"archive_confirmation");e.stdout.push(" Archive:",await pe("verify_result",await P(t,"verify_result")),await pe("archive_confirmation",n),await pe("archived",await P(t,"archived")),"",n==="confirmed"?"Recovery action: Archive is confirmed. Run /comet-archive to complete archiving.":"Recovery action: Ask for final archive confirmation in /comet-archive before running the archive command.")}async function kP(e,t){lt(t);let{file:n,directory:i,label:r}=await Et(t);await de(n)||S(`ERROR: .comet.yaml not found at ${r}/.comet.yaml`);let s=await P(t,"phase"),o=await P(t,"workflow");e.stdout.push(`=== Recovery Context: ${t} ===`,`Phase: ${s}`,`Workflow: ${o}`,"","State fields:"),s==="open"?await hP(e,i):s==="design"?await gP(e,t,i):s==="build"?await wP(e,t,i,o):s==="verify"?await bP(e,t):s==="archive"?await CP(e,t):S(`ERROR: Unknown phase: ${s}`),e.stdout.push("","=== End Recovery Context ===")}async function SP(e,t){lt(t);let{file:n,directory:i,label:r}=await Et(t);await de(n)||S(`ERROR: .comet.yaml not found at ${r}/.comet.yaml`);let s=q.join(i,"tasks.md"),o=await de(s)?(await B(_(),s,{label:"Classic scale task file"})).split(/\r?\n/u).filter(g=>/^- \[/u.test(g)).length:0,a=q.join(i,"specs"),c=0;if(await de(a))for(let g of await Kx.readdir(a))await de(q.join(a,g,"spec.md"))&&(c+=1);let l=await P(t,"plan"),u="";l&&l!=="null"&&await de(l)&&(u=(await B(_(),l,{label:"Classic scale plan"})).match(/^base-ref:\s*(.+)$/mu)?.[1].trim()??""),u||(u=await P(t,"base_ref"));let f=yw(["diff","--name-only",...u&&u!=="null"?[`${u}...HEAD`]:["HEAD"]]),d=f?f.split(/\r?\n/u).filter(Boolean).length:0,p=o>3||c>1||d>8?"full":"light";await bw(new Sa,t,"verify_mode",p),e.stderr.push(`=== Scale Assessment: ${t} ===`,` Tasks: ${o} (threshold: 3)`,` Delta specs: ${c} capabilities (threshold: 1)`,` Changed files: ${d} (threshold: 8)`,` → Result: ${p}`,ct(`[SCALE] verify_mode=${p}`))}function EP(e){let t,n,i;for(let r=0;r' to establish the first binding`);let r=jr(Lt());r===null&&S("ERROR: cannot rebind while HEAD is detached; checkout a branch first");let s=await H(n);s.classic||S("ERROR: Classic state projection is missing"),await Zl(n,r);let o={...s.classic,boundBranch:r};await Dn(n,{change:t,event:"rebind",source:"comet-state",from:s.classic,to:o,effects:[{field:"boundBranch",from:i,to:r}]}),e.stderr.push(ct(`[REBIND] bound_branch: ${i} → ${r}`))}async function $P(e){let t=await Qo(_());if(t.status==="selected"){e.stdout.push(t.selection.change);return}t.status==="missing"&&S(`ERROR: no current change selected Use: comet-state.mjs select `),S(`ERROR: current change selection is stale: ${t.reason} -Use: comet-state.mjs select `)}async function OP(e){await Nh(_()),e.stderr.push(ct("[CLEARED] current change selection"))}var bw=async(e,t)=>yt(t,async()=>{let n=new Sa;try{let[i,...r]=e;if(await RP(i),i==="init"){Wt(r,2,"Usage: comet-state.mjs init ");let s=r.slice(2),o=null;s.length>0&&((s.length!==2||s[0]!=="--isolation")&&S("Usage: comet-state.mjs init [--isolation ]"),o=s[1]),await iP(n,r[0],r[1],o)}else i==="get"?(Wt(r,2,"Usage: comet-state.mjs get "),lt(r[0]),n.stdout.push(await P(r[0],r[1]))):i==="set"?(Wt(r,3,"Usage: comet-state.mjs set "),lt(r[0]),await vw(n,r[0],r[1],r[2])):i==="transition"?(Wt(r,2,"Usage: comet-state.mjs transition "),await lP(n,r[0],r[1])):i==="check"?(Wt(r,2,"Usage: comet-state.mjs check [--recover]"),r[2]==="--recover"?await bP(n,r[0]):await dP(n,r[0],r[1])):i==="scale"?(Wt(r,1,"Usage: comet-state.mjs scale "),await CP(n,r[0])):i==="record-check"?(Wt(r,2,"Usage: comet state record-check --command --exit-code [--cwd ]"),await SP(n,r[0],r[1],r.slice(2))):i==="task-checkoff"?(Wt(r,2,"Usage: comet-state.mjs task-checkoff "),await fP(n,r[0],r[1])):i==="rebind"?(ka(r,1,"Usage: comet-state.mjs rebind "),await xP(n,r[0])):i==="select"?(ka(r,1,"Usage: comet-state.mjs select "),await _P(n,r[0])):i==="current"?(ka(r,0,"Usage: comet-state.mjs current"),await PP(n)):i==="clear-selection"?(ka(r,0,"Usage: comet-state.mjs clear-selection"),await OP(n)):i==="next"?(Wt(r,1,"Usage: comet-state.mjs next "),await uP(n,r[0])):S(`Unknown subcommand: ${i??""}`);return n.result()}catch(i){if(!(i instanceof ns))throw i;if(i.message)for(let r of i.message.split(` -`))n.stderr.push(Mu(r));return n.result(i.exitCode)}});function _a(){throw new Error("Usage: comet classic workspace prepare --isolation [--change-branch ] [--target-branch ] [--worktree-path ] | comet classic workspace resolve ")}function xa(e,t){let n=e.indexOf(t);if(n<0)return;let i=e[n+1];if(!i||i.startsWith("--"))throw new Error(`${t} requires a value`);return e.splice(n,2),i}var Cw=async e=>{let[t,n,...i]=e;if((!t||!n)&&_a(),t==="resolve")return i.length>0&&_a(),iu("resolve",await ki({projectRoot:_(),name:n}));t!=="prepare"&&_a();let r=xa(i,"--isolation");if(!r||!["current","branch","worktree"].includes(r))throw new Error("--isolation must be current, branch, or worktree");let s=xa(i,"--change-branch"),o=xa(i,"--target-branch"),a=xa(i,"--worktree-path");return i.length>0&&_a(),iu("prepare",await Ah({projectRoot:_(),name:n,isolation:r,...s?{changeBranch:s}:{},...o?{targetBranch:o}:{},...a?{worktreePath:a}:{}}))};var Sw=["state","validate","guard","handoff","archive","hook-guard","intent","resume-probe","openspec","root","workspace"],AP={state:bw,validate:na,guard:Zh,handoff:lg,archive:Mh,"hook-guard":kg,intent:Og,"resume-probe":jg,openspec:up,root:lw,workspace:Cw};function IP(e){return Sw.includes(e)}function NP(e){return e?{exitCode:64,stderr:`Unknown Classic command: ${e}`}:{exitCode:64,stderr:`Usage: comet-classic <${Sw.join("|")}> [args]`}}async function TP(e,t,n,i){if(!e||!IP(e))return NP(e);let r=i[e];if(!r)return{exitCode:70,stderr:`Classic command is not implemented: ${e}`};try{return await r(t,n)}catch(s){return{exitCode:70,stderr:s instanceof Error?s.message:String(s)}}}function jP(e,t){return{exitCode:t.exitCode,stdout:JSON.stringify({command:e??null,exitCode:t.exitCode,...t.stdout===void 0?{}:{stdout:t.stdout},...t.stderr===void 0?{}:{stderr:t.stderr}})+` -`}}async function LP(e,t=AP){let n=e[0]!=="openspec"&&e.includes("--json"),i=n?e.filter(o=>o!=="--json"):[...e],r=i.shift(),s=await TP(r,i,{json:n,invocationCwd:process.cwd()},t);return n?jP(r,s):s}async function MP(e=process.argv.slice(2)){let t=await LP(e);return t.stdout&&process.stdout.write(t.stdout),t.stderr&&process.stderr.write(t.stderr+(t.stderr.endsWith(` +Use: comet-state.mjs select `)}async function AP(e){await Nh(_()),e.stderr.push(ct("[CLEARED] current change selection"))}var Cw=async(e,t)=>vt(t,async()=>{let n=new Sa;try{let[i,...r]=e;if(await xP(i),i==="init"){Ft(r,2,"Usage: comet-state.mjs init ");let s=r.slice(2),o=null;s.length>0&&((s.length!==2||s[0]!=="--isolation")&&S("Usage: comet-state.mjs init [--isolation ]"),o=s[1]),await sP(n,r[0],r[1],o)}else i==="get"?(Ft(r,2,"Usage: comet-state.mjs get "),lt(r[0]),n.stdout.push(await P(r[0],r[1]))):i==="set"?(Ft(r,3,"Usage: comet-state.mjs set "),lt(r[0]),await bw(n,r[0],r[1],r[2])):i==="transition"?(Ft(r,2,"Usage: comet-state.mjs transition "),await fP(n,r[0],r[1])):i==="check"?(Ft(r,2,"Usage: comet-state.mjs check [--recover]"),r[2]==="--recover"?await kP(n,r[0]):await pP(n,r[0],r[1])):i==="scale"?(Ft(r,1,"Usage: comet-state.mjs scale "),await SP(n,r[0])):i==="record-check"?(Ft(r,2,"Usage: comet state record-check --command --exit-code [--cwd ]"),await RP(n,r[0],r[1],r.slice(2))):i==="task-checkoff"?(Ft(r,2,"Usage: comet-state.mjs task-checkoff "),await mP(n,r[0],r[1])):i==="rebind"?(ka(r,1,"Usage: comet-state.mjs rebind "),await OP(n,r[0])):i==="select"?(ka(r,1,"Usage: comet-state.mjs select "),await PP(n,r[0])):i==="current"?(ka(r,0,"Usage: comet-state.mjs current"),await $P(n)):i==="clear-selection"?(ka(r,0,"Usage: comet-state.mjs clear-selection"),await AP(n)):i==="next"?(Ft(r,1,"Usage: comet-state.mjs next "),await dP(n,r[0])):S(`Unknown subcommand: ${i??""}`);return n.result()}catch(i){if(!(i instanceof is))throw i;if(i.message)for(let r of i.message.split(` +`))n.stderr.push(Lu(r));return n.result(i.exitCode)}});function _a(){throw new Error("Usage: comet classic workspace prepare --isolation [--change-branch ] [--target-branch ] [--worktree-path ] | comet classic workspace resolve ")}function xa(e,t){let n=e.indexOf(t);if(n<0)return;let i=e[n+1];if(!i||i.startsWith("--"))throw new Error(`${t} requires a value`);return e.splice(n,2),i}var kw=async e=>{let[t,n,...i]=e;if((!t||!n)&&_a(),t==="resolve")return i.length>0&&_a(),nu("resolve",await ki({projectRoot:_(),name:n}));t!=="prepare"&&_a();let r=xa(i,"--isolation");if(!r||!["current","branch","worktree"].includes(r))throw new Error("--isolation must be current, branch, or worktree");let s=xa(i,"--change-branch"),o=xa(i,"--target-branch"),a=xa(i,"--worktree-path");return i.length>0&&_a(),nu("prepare",await Ah({projectRoot:_(),name:n,isolation:r,...s?{changeBranch:s}:{},...o?{targetBranch:o}:{},...a?{worktreePath:a}:{}}))};var Ew=["state","validate","guard","handoff","archive","hook-guard","intent","resume-probe","openspec","root","workspace"],NP={state:Cw,validate:na,guard:Zh,handoff:ug,archive:Mh,"hook-guard":Sg,intent:$g,"resume-probe":Lg,openspec:up,root:uw,workspace:kw};function TP(e){return Ew.includes(e)}function jP(e){return e?{exitCode:64,stderr:`Unknown Classic command: ${e}`}:{exitCode:64,stderr:`Usage: comet-classic <${Ew.join("|")}> [args]`}}async function LP(e,t,n,i){if(!e||!TP(e))return jP(e);let r=i[e];if(!r)return{exitCode:70,stderr:`Classic command is not implemented: ${e}`};try{return await r(t,n)}catch(s){return{exitCode:70,stderr:s instanceof Error?s.message:String(s)}}}function MP(e,t){return{exitCode:t.exitCode,stdout:JSON.stringify({command:e??null,exitCode:t.exitCode,...t.stdout===void 0?{}:{stdout:t.stdout},...t.stderr===void 0?{}:{stderr:t.stderr}})+` +`}}async function qP(e,t=NP){let n=e[0]!=="openspec"&&e.includes("--json"),i=n?e.filter(o=>o!=="--json"):[...e],r=i.shift(),s=await LP(r,i,{json:n,invocationCwd:process.cwd()},t);return n?MP(r,s):s}async function DP(e=process.argv.slice(2)){let t=await qP(e);return t.stdout&&process.stdout.write(t.stdout),t.stderr&&process.stderr.write(t.stderr+(t.stderr.endsWith(` `)?"":` -`)),t.exitCode}var kw=process.argv[1];kw&&import.meta.url===$P(kw).href&&MP().then(e=>{process.exitCode=e});export{Sw as CLASSIC_COMMANDS,MP as main,LP as runClassicCli}; +`)),t.exitCode}var Sw=process.argv[1];Sw&&import.meta.url===IP(Sw).href&&DP().then(e=>{process.exitCode=e});export{Ew as CLASSIC_COMMANDS,DP as main,qP as runClassicCli}; diff --git a/domains/comet-classic/classic-handoff.ts b/domains/comet-classic/classic-handoff.ts index ad8d23f03..7a97f7ec4 100644 --- a/domains/comet-classic/classic-handoff.ts +++ b/domains/comet-classic/classic-handoff.ts @@ -469,6 +469,38 @@ async function appendRecoveryEvent( }); } +async function handoffMarkdownIsCurrent( + projectRoot: string, + changeDir: string, + contextMd: string, + contextHash: string, +): Promise { + const markdown = await readProtectedIfExists( + projectRoot, + contextMd, + 'Classic handoff markdown output', + ); + if (markdown === null) return false; + const lines = new Set(markdown.split(/\r?\n/u)); + // Verifying the exact Context hash line catches not only stale sources but + // also sources that have since been removed from OpenSpec: a deleted delta + // spec no longer appears in the SHA256 loop below, so the loop alone would + // trivially pass for `--write` on aligned hashes while leaving the deleted + // spec embedded in the stale markdown. Any add/remove/edit of a source + // changes the computed hash, which must match the marker on disk. + if (!lines.has(`- Context hash: ${contextHash}`)) return false; + for (const file of await handoffSourceFiles(projectRoot, changeDir)) { + const content = await readProtectedIfExists( + projectRoot, + file, + `Classic handoff source ${file}`, + ); + if (content === null) continue; + if (!lines.has(`- SHA256: ${hashText(content)}`)) return false; + } + return true; +} + async function completedHandoffIsCurrent( projectRoot: string, changeDir: string, @@ -552,8 +584,14 @@ export const classicHandoffCommand: ClassicCommandHandler = async (args, options if (!active.stateExists) { throw new HandoffFailure(red(`ERROR: .comet.yaml not found at ${changeRef}/.comet.yaml`)); } - if ((await readField(layout.projectRoot, changeDir, 'phase')) !== 'design') { - throw new HandoffFailure(red('ERROR: design handoff requires phase: design')); + const currentPhase = await readField(layout.projectRoot, changeDir, 'phase'); + if (currentPhase !== 'design' && currentPhase !== 'build') { + // Issue #324: a Spec Patch after the guard advanced the phase to build + // must still be able to refresh the design handoff. The write path + // below only updates handoff context/hash and never transitions the + // run state outside full.design.handoff, so refreshing from build is + // safe and unblocks the workflow. + throw new HandoffFailure(red('ERROR: design handoff requires phase: design or build')); } for (const required of ['proposal.md', 'design.md', 'tasks.md']) { if ( @@ -622,9 +660,14 @@ export const classicHandoffCommand: ClassicCommandHandler = async (args, options initialProjection.classic.handoffHash !== contextHash && !recovering ) { - throw new HandoffFailure( - red( - `ERROR: stale handoff detected: source hash ${contextHash} does not match completed hash ${initialProjection.classic.handoffHash}`, + // Issue #324: the design guard requires regenerating the handoff + // after OpenSpec artifacts change, and `--write` is the only legal + // invocation mode (enforced by the usage guard above), so an explicit + // --write always refreshes the completed handoff instead of being + // rejected as stale. + output.stderr.push( + yellow( + `[HANDOFF] refreshing stale design handoff: previous hash ${initialProjection.classic.handoffHash}`, ), ); } @@ -662,7 +705,12 @@ export const classicHandoffCommand: ClassicCommandHandler = async (args, options contextMd, contextJsonRef, contextMdRef, - )) + )) && + // Issue #324: even when the recorded hash was aligned, only treat the + // handoff as current if the on-disk markdown actually reflects the + // current source files. Otherwise --write would report success while + // leaving stale context files behind. + (await handoffMarkdownIsCurrent(layout.projectRoot, changeDir, contextMd, contextHash)) ) { output.stderr.push(green(`[HANDOFF] wrote ${contextJsonRef}`)); output.stderr.push(green(`[HANDOFF] wrote ${contextMdRef}`)); diff --git a/test/domains/comet-classic/classic-handoff.test.ts b/test/domains/comet-classic/classic-handoff.test.ts index 08e97e64d..8784a0e0f 100644 --- a/test/domains/comet-classic/classic-handoff.test.ts +++ b/test/domains/comet-classic/classic-handoff.test.ts @@ -1,4 +1,5 @@ import { spawnSync } from 'child_process'; +import { createHash } from 'crypto'; import { existsSync, promises as fs } from 'fs'; import os from 'os'; import path from 'path'; @@ -9,6 +10,7 @@ import { runClassicCli } from '../../../domains/comet-classic/classic-cli.js'; const scriptsDir = path.resolve('assets', 'skills', 'comet', 'scripts'); const scriptByCommand: Record = { + guard: path.join(scriptsDir, 'comet-guard.mjs'), handoff: path.join(scriptsDir, 'comet-handoff.mjs'), state: path.join(scriptsDir, 'comet-state.mjs'), }; @@ -24,7 +26,7 @@ afterEach(async () => { function run(cwd: string, ...args: string[]) { const [command, ...rest] = args; - return spawnSync(process.execPath, [scriptByCommand[command], ...rest], { + return spawnSync(process.execPath, [scriptByCommand[command as string], ...rest], { cwd, encoding: 'utf8', }); @@ -160,18 +162,212 @@ describe('Classic handoff command', () => { expect(existsSync(path.join(changeDir, '.comet', 'handoff'))).toBe(false); }); - it('fails closed when source evidence changed after a completed handoff', async () => { + it('refreshes the design handoff when source evidence changed after a completed handoff', async () => { const dir = await makeProject(); const changeDir = await seedDesignChange(dir); expect(run(dir, 'handoff', 'demo', 'design', '--write').status).toBe(0); - const before = await fs.readFile(path.join(changeDir, '.comet.yaml'), 'utf8'); + const beforeHash = run(dir, 'state', 'get', 'demo', 'handoff_hash').stdout.trim(); + expect(beforeHash).toMatch(/^[a-f0-9]{64}$/); await fs.appendFile(path.join(changeDir, 'proposal.md'), 'changed\n'); const result = run(dir, 'handoff', 'demo', 'design', '--write'); - expect(result.status).not.toBe(0); - expect(result.stderr).toContain('stale'); - expect(await fs.readFile(path.join(changeDir, '.comet.yaml'), 'utf8')).toBe(before); + expect(result.status).toBe(0); + expect(result.stderr).toContain('refreshing stale design handoff'); + const afterHash = run(dir, 'state', 'get', 'demo', 'handoff_hash').stdout.trim(); + expect(afterHash).toMatch(/^[a-f0-9]{64}$/); + expect(afterHash).not.toBe(beforeHash); + + // The refreshed handoff must remain traceable by the design guard: + // its markdown must list the current SHA256 of every source file. + const md = await fs.readFile( + path.join(changeDir, '.comet', 'handoff', 'design-context.md'), + 'utf8', + ); + const updatedProposal = await fs.readFile(path.join(changeDir, 'proposal.md'), 'utf8'); + const proposalHash = createHash('sha256').update(updatedProposal).digest('hex'); + expect(md).toContain(`- SHA256: ${proposalHash}`); + }); + + it('rewrites stale context files even when the recorded hash was aligned', async () => { + const dir = await makeProject(); + const changeDir = await seedDesignChange(dir); + expect(run(dir, 'handoff', 'demo', 'design', '--write').status).toBe(0); + + // Simulate the workaround from issue #324: aligning the recorded hash to + // the new source hash without regenerating the context files. + await fs.appendFile(path.join(changeDir, 'proposal.md'), 'changed\n'); + const hashOnly = run(dir, 'handoff', 'demo', '--hash-only').stdout.trim(); + expect(hashOnly).toMatch(/^[a-f0-9]{64}$/); + expect(run(dir, 'state', 'set', 'demo', 'handoff_hash', hashOnly).status).toBe(0); + + const result = run(dir, 'handoff', 'demo', 'design', '--write'); + expect(result.status).toBe(0); + + // The markdown must actually reflect the updated proposal.md now, not + // merely report success on a short-circuit path. + const md = await fs.readFile( + path.join(changeDir, '.comet', 'handoff', 'design-context.md'), + 'utf8', + ); + const updatedProposal = await fs.readFile(path.join(changeDir, 'proposal.md'), 'utf8'); + const proposalHash = createHash('sha256').update(updatedProposal).digest('hex'); + expect(md).toContain(`- SHA256: ${proposalHash}`); + }); + + it('forces context regeneration when a delta spec was deleted after the handoff', async () => { + const dir = await makeProject(); + const changeDir = await seedDesignChange(dir); + + // Handoff over a delta spec, then capture the markdown that embeds it. + await fs.mkdir(path.join(changeDir, 'specs', 'feature'), { recursive: true }); + await fs.writeFile(path.join(changeDir, 'specs', 'feature', 'spec.md'), '# Feature\n'); + expect(run(dir, 'handoff', 'demo', 'design', '--write').status).toBe(0); + const specHash = run(dir, 'state', 'get', 'demo', 'handoff_hash').stdout.trim(); + expect(specHash).toMatch(/^[a-f0-9]{64}$/); + let md = await fs.readFile( + path.join(changeDir, '.comet', 'handoff', 'design-context.md'), + 'utf8', + ); + expect(md).toContain('specs/feature/spec.md'); + + // Delete the delta spec and align the recorded hash to the reduced source + // set — the exact deadlock workaround from issue #324. The on-disk + // markdown still carries the old Context hash, so --write must regenerate + // the context files instead of short-circuiting on the aligned hash. + await fs.rm(path.join(changeDir, 'specs', 'feature'), { recursive: true }); + const hashOnly = run(dir, 'handoff', 'demo', '--hash-only').stdout.trim(); + expect(hashOnly).toMatch(/^[a-f0-9]{64}$/); + expect(hashOnly).not.toBe(specHash); + expect(run(dir, 'state', 'set', 'demo', 'handoff_hash', hashOnly).status).toBe(0); + + const result = run(dir, 'handoff', 'demo', 'design', '--write'); + expect(result.status).toBe(0); + + // The regenerated markdown must match the new hash and drop the deleted + // delta spec; merely printing "wrote" without regenerating is a regression. + md = await fs.readFile(path.join(changeDir, '.comet', 'handoff', 'design-context.md'), 'utf8'); + expect(md).toContain(`- Context hash: ${hashOnly}`); + expect(md).not.toContain('specs/feature/spec.md'); + }); + + it('forces context regeneration when a delta spec was added after the handoff', async () => { + const dir = await makeProject(); + const changeDir = await seedDesignChange(dir); + + // Handoff without any delta spec, then capture the markdown that omits it. + expect(run(dir, 'handoff', 'demo', 'design', '--write').status).toBe(0); + const baseHash = run(dir, 'state', 'get', 'demo', 'handoff_hash').stdout.trim(); + expect(baseHash).toMatch(/^[a-f0-9]{64}$/); + let md = await fs.readFile( + path.join(changeDir, '.comet', 'handoff', 'design-context.md'), + 'utf8', + ); + expect(md).not.toContain('specs/feature/spec.md'); + + // Add a delta spec and align the recorded hash to the enlarged source + // set. The old markdown still carries the previous Context hash, so + // --write must embed the new spec instead of short-circuiting. + await fs.mkdir(path.join(changeDir, 'specs', 'feature'), { recursive: true }); + await fs.writeFile(path.join(changeDir, 'specs', 'feature', 'spec.md'), '# Feature\n'); + const hashOnly = run(dir, 'handoff', 'demo', '--hash-only').stdout.trim(); + expect(hashOnly).toMatch(/^[a-f0-9]{64}$/); + expect(hashOnly).not.toBe(baseHash); + expect(run(dir, 'state', 'set', 'demo', 'handoff_hash', hashOnly).status).toBe(0); + + const result = run(dir, 'handoff', 'demo', 'design', '--write'); + expect(result.status).toBe(0); + + // The regenerated markdown must embed the new delta spec and carry the + // new Context hash. + md = await fs.readFile(path.join(changeDir, '.comet', 'handoff', 'design-context.md'), 'utf8'); + expect(md).toContain('specs/feature/spec.md'); + expect(md).toContain(`- Context hash: ${hashOnly}`); + }); + + it('regenerates the beta spec context when a delta spec was deleted after the handoff', async () => { + const dir = await makeProject(); + const changeDir = await seedDesignChange(dir); + expect(run(dir, 'state', 'set', 'demo', 'context_compression', 'beta').status).toBe(0); + + // Beta mode writes spec-context.md, which must carry the same Context hash + // marker so the stale-context short circuit cannot hide a deleted spec. + await fs.mkdir(path.join(changeDir, 'specs', 'feature'), { recursive: true }); + await fs.writeFile(path.join(changeDir, 'specs', 'feature', 'spec.md'), '# Feature\n'); + expect(run(dir, 'handoff', 'demo', 'design', '--write').status).toBe(0); + const specHash = run(dir, 'state', 'get', 'demo', 'handoff_hash').stdout.trim(); + expect(specHash).toMatch(/^[a-f0-9]{64}$/); + const specContext = path.join(changeDir, '.comet', 'handoff', 'spec-context.md'); + let md = await fs.readFile(specContext, 'utf8'); + expect(md).toContain('- Mode: beta'); + expect(md).toContain('specs/feature/spec.md'); + expect(md).toContain(`- Context hash: ${specHash}`); + + // Delete the delta spec and align the recorded hash to the reduced set. + await fs.rm(path.join(changeDir, 'specs', 'feature'), { recursive: true }); + const hashOnly = run(dir, 'handoff', 'demo', '--hash-only').stdout.trim(); + expect(hashOnly).toMatch(/^[a-f0-9]{64}$/); + expect(hashOnly).not.toBe(specHash); + expect(run(dir, 'state', 'set', 'demo', 'handoff_hash', hashOnly).status).toBe(0); + + const result = run(dir, 'handoff', 'demo', 'design', '--write'); + expect(result.status).toBe(0); + + // The regenerated beta markdown must drop the deleted spec and match the + // new Context hash, just like the default mode. + md = await fs.readFile(specContext, 'utf8'); + expect(md).toContain(`- Context hash: ${hashOnly}`); + expect(md).not.toContain('specs/feature/spec.md'); + }); + + it('refreshes the design handoff from the build phase after a Spec Patch', async () => { + const dir = await makeProject(); + const changeDir = await seedDesignChange(dir); + expect(run(dir, 'handoff', 'demo', 'design', '--write').status).toBe(0); + const beforeHash = run(dir, 'state', 'get', 'demo', 'handoff_hash').stdout.trim(); + + // Enter build through the real guard transition, not a forced phase write. + // The full workflow requires a recorded Design Doc before leaving design. + const designDoc = path.join(dir, 'docs', 'superpowers', 'specs', 'demo-design.md'); + await fs.mkdir(path.dirname(designDoc), { recursive: true }); + await fs.writeFile( + designDoc, + [ + '---', + 'comet_change: demo', + 'role: technical-design', + 'canonical_spec: openspec', + '---', + '', + '# Design', + '', + ].join('\n'), + ); + expect( + run(dir, 'state', 'set', 'demo', 'design_doc', 'docs/superpowers/specs/demo-design.md') + .status, + ).toBe(0); + const guard = run(dir, 'guard', 'demo', 'design', '--apply'); + expect(guard.status, guard.stderr).toBe(0); + expect(run(dir, 'state', 'get', 'demo', 'phase').stdout.trim()).toBe('build'); + const runStateBefore = await readRunState(changeDir); + expect(runStateBefore).not.toBeNull(); + expect(runStateBefore!.currentStep).toBe('full.build.plan'); + + // Spec Patch the source evidence while in build. + await fs.appendFile(path.join(changeDir, 'proposal.md'), 'build-phase change\n'); + + const result = run(dir, 'handoff', 'demo', 'design', '--write'); + expect(result.status).toBe(0); + const afterHash = run(dir, 'state', 'get', 'demo', 'handoff_hash').stdout.trim(); + expect(afterHash).toMatch(/^[a-f0-9]{64}$/); + expect(afterHash).not.toBe(beforeHash); + + // The refresh must not move the workflow phase or the Runtime currentStep. + expect(run(dir, 'state', 'get', 'demo', 'phase').stdout.trim()).toBe('build'); + const runStateAfter = await readRunState(changeDir); + expect(runStateAfter).not.toBeNull(); + expect(runStateAfter!.currentStep).toBe('full.build.plan'); }); it('reconciles a matching pending handoff and records recovery once', async () => {